diff --git a/src/main/fragment/mos6502-common/vbuxx=_hi_vwum1.asm b/src/main/fragment/mos6502-common/vbuxx=_hi_vwum1.asm new file mode 100644 index 000000000..4bed1d33d --- /dev/null +++ b/src/main/fragment/mos6502-common/vbuxx=_hi_vwum1.asm @@ -0,0 +1 @@ +ldx {m1}+1 diff --git a/src/main/fragment/mos6502-common/vbuxx=_lo_vwum1.asm b/src/main/fragment/mos6502-common/vbuxx=_lo_vwum1.asm new file mode 100644 index 000000000..499199726 --- /dev/null +++ b/src/main/fragment/mos6502-common/vbuxx=_lo_vwum1.asm @@ -0,0 +1 @@ +ldx {m1} \ No newline at end of file diff --git a/src/main/fragment/mos6502-common/vbuyy=_hi_vwum1.asm b/src/main/fragment/mos6502-common/vbuyy=_hi_vwum1.asm new file mode 100644 index 000000000..d776e06f7 --- /dev/null +++ b/src/main/fragment/mos6502-common/vbuyy=_hi_vwum1.asm @@ -0,0 +1 @@ +ldy {m1}+1 diff --git a/src/main/fragment/mos6502-common/vbuyy=_lo_vwum1.asm b/src/main/fragment/mos6502-common/vbuyy=_lo_vwum1.asm new file mode 100644 index 000000000..0f004cb1f --- /dev/null +++ b/src/main/fragment/mos6502-common/vbuyy=_lo_vwum1.asm @@ -0,0 +1 @@ +ldy {m1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/CompileLog.java b/src/main/java/dk/camelot64/kickc/CompileLog.java index 51672fa46..6116da597 100644 --- a/src/main/java/dk/camelot64/kickc/CompileLog.java +++ b/src/main/java/dk/camelot64/kickc/CompileLog.java @@ -170,6 +170,11 @@ public class CompileLog { this.verboseNonOptimization = verboseNonOptimization; } + public CompileLog verboseNonOptimization() { + setVerboseNonOptimization(true); + return this; + } + public void setVerboseSequencePlan(boolean verboseSequencePlan) { this.verboseSequencePlan = verboseSequencePlan; } diff --git a/src/main/java/dk/camelot64/kickc/model/CallGraph.java b/src/main/java/dk/camelot64/kickc/model/CallGraph.java index 1696a809e..73d138ec0 100644 --- a/src/main/java/dk/camelot64/kickc/model/CallGraph.java +++ b/src/main/java/dk/camelot64/kickc/model/CallGraph.java @@ -221,6 +221,20 @@ public class CallGraph { } } + public int getCallDepth(ProcedureRef procedureRef) { + final Collection callers = getCallers(procedureRef); + int maxCallDepth = 1; + for(CallBlock.Call caller : callers) { + final ScopeRef callStatementScope = caller.getCallStatementScope(); + if(callStatementScope instanceof ProcedureRef) { + int callerDepth = getCallDepth((ProcedureRef) callStatementScope)+1; + if(callerDepth>maxCallDepth) + maxCallDepth = callerDepth; + } + } + return maxCallDepth; + } + /** * A block in the call graph, matching a scope in the program. diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java index 8d3eeb5e9..8fb6ae1f9 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java @@ -33,6 +33,8 @@ public interface LiveRangeVariablesEffective { Collection getEffectiveAliveAtStmt(); Pass2AliasElimination.Aliases getEffectiveAliasesAtStmt(); + + String toString(Program program); } } diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveCallPaths.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveCallPaths.java index 5f4de18d5..04d975593 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveCallPaths.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveCallPaths.java @@ -417,10 +417,12 @@ public class LiveRangeVariablesEffectiveCallPaths implements LiveRangeVariablesE } @Override - public String toString() { + public String toString(Program program) { StringBuilder out = new StringBuilder(); out.append(getCallPathString(callPath.getPath())); out.append(getAliveString(getEffectiveAliveAtStmt())); + out.append(" "); + out.append(getEffectiveAliasesAtStmt().toString(program)); return out.toString(); } diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveSimple.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveSimple.java index 11de3d7dd..3e99cb397 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveSimple.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffectiveSimple.java @@ -6,6 +6,7 @@ import dk.camelot64.kickc.passes.Pass2AliasElimination; import java.util.ArrayList; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -15,9 +16,12 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe /** All variables potentially effective alive by statement index. */ private Map> statementAliveEffective; + /** Block aliases for each statement. */ + private Map statementLocalAliases; - public LiveRangeVariablesEffectiveSimple(Map> statementAliveEffective) { + public LiveRangeVariablesEffectiveSimple(LinkedHashMap> statementAliveEffective, Map statementLocalAliases) { this.statementAliveEffective = statementAliveEffective; + this.statementLocalAliases = statementLocalAliases; } /** @@ -33,33 +37,49 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe return statementAliveEffective.get(statement.getIndex()); } + /** + * Get local aliases at a statement. + * + * @param statement The statement to examine + * @return All local aliases + */ @Override public AliveCombinations getAliveCombinations(Statement statement) { - return new AliveCombinationsSimple(getAliveEffective(statement)); + return new AliveCombinationsSimple(getAliveEffective(statement), getLocalAliases(statement)); } - public class AliveCombinationsSimple implements AliveCombinations { + private Pass2AliasElimination.Aliases getLocalAliases(Statement statement) { + return statementLocalAliases.get(statement.getIndex()); + } + + public static class AliveCombinationsSimple implements AliveCombinations { private Collection alive; - public AliveCombinationsSimple(Collection alive) { + private Pass2AliasElimination.Aliases localAliases; + + AliveCombinationsSimple(Collection alive, Pass2AliasElimination.Aliases localAliases) { this.alive = alive; + this.localAliases = localAliases; } @Override public Collection getAll() { final ArrayList aliveCombinations = new ArrayList<>(); - aliveCombinations.add(new AliveCombinationSimple(alive)); + aliveCombinations.add(new AliveCombinationSimple(alive, localAliases)); return aliveCombinations; } } - public class AliveCombinationSimple implements AliveCombination { + public static class AliveCombinationSimple implements AliveCombination { private Collection alive; - public AliveCombinationSimple(Collection alive) { + private Pass2AliasElimination.Aliases localAliases; + + AliveCombinationSimple(Collection alive, Pass2AliasElimination.Aliases localAliases) { this.alive = alive; + this.localAliases = localAliases; } @Override @@ -69,12 +89,19 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe @Override public Pass2AliasElimination.Aliases getEffectiveAliasesAtStmt() { - return null; + return localAliases; } - @Override - public String toString() { - return getAliveString(alive); + public String toString(Program program) { + final Pass2AliasElimination.Aliases aliases = getEffectiveAliasesAtStmt(); + return getAliveString(alive) + " " + getAliasString(aliases, program); + } + + private String getAliasString(Pass2AliasElimination.Aliases aliases, Program program) { + if(aliases == null) + return ""; + else + return aliases.toString(program); } private String getAliveString(Collection alive) { diff --git a/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java index 45aaa8e21..6aaf794d5 100644 --- a/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java @@ -89,7 +89,7 @@ public abstract class StatementBase implements Statement { LiveRangeVariablesEffective.AliveCombinations aliveCombinations = liveRangeVariablesEffective.getAliveCombinations(this); alive.append(" ( "); for(LiveRangeVariablesEffective.AliveCombination aliveCombination : aliveCombinations.getAll()) { - alive.append(aliveCombination.toString()); + alive.append(aliveCombination.toString(program)); alive.append(" "); } alive.append(")"); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java index afcbb83a7..42186ac1c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java @@ -38,7 +38,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } - public static Aliases findAliases(Program program) { + private static Aliases findAliases(Program program) { Aliases candidates = findAliasesCandidates(program); cleanupCandidates(candidates, program); cleanupCandidateVolatiles(candidates, program); @@ -342,7 +342,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } } - public List getSymbolsToRemove(ProgramScope scope) { + List getSymbolsToRemove(ProgramScope scope) { ArrayList eliminates = new ArrayList<>(); for(AliasSet alias : aliases) { eliminates.addAll(alias.getEliminateVars(scope)); @@ -350,7 +350,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { return eliminates; } - public Map getReplacements(ProgramScope scope) { + Map getReplacements(ProgramScope scope) { HashMap replacements = new LinkedHashMap<>(); for(AliasSet aliasSet : aliases) { VariableRef keepVar = aliasSet.getKeepVar(scope); @@ -391,7 +391,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } } - public AliasSet findAliasSet(LValue lValue) { + AliasSet findAliasSet(LValue lValue) { if(lValue instanceof VariableRef) { for(AliasSet alias : aliases) { if(alias.contains(lValue)) { @@ -402,7 +402,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { return null; } - public List getAliasSets() { + List getAliasSets() { return aliases; } @@ -419,17 +419,29 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } } } + + public String toString(Program program) { + StringBuilder str = new StringBuilder(); + str.append("{ "); + for(AliasSet aliasSet : getAliasSets()) { + str.append("{ "); + str.append(aliasSet.toString(program)); + str.append("} "); + } + str.append("} "); + return str.toString(); + } } public static class AliasSet { private List vars; - public AliasSet() { + AliasSet() { this.vars = new ArrayList<>(); } - public AliasSet(AliasSet aliasSet) { + AliasSet(AliasSet aliasSet) { this.vars = new ArrayList<>(aliasSet.getVars()); } @@ -447,10 +459,10 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { public String toString(Program program) { StringBuilder str = new StringBuilder(); - str.append(getKeepVar(program.getScope()).toString(program)); + str.append(getKeepVar(program.getScope()).toString(null)); str.append(" = "); for(VariableRef var : getEliminateVars(program.getScope())) { - str.append(var.toString(program)).append(" "); + str.append(var.toString(null)).append(" "); } return str.toString(); } @@ -463,7 +475,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { vars.addAll(aliasSet.getVars()); } - public VariableRef getKeepVar(ProgramScope scope) { + VariableRef getKeepVar(ProgramScope scope) { // Score all base names (without versions for versioned vars, full name for intermediates) int maxScore = 0; String maxName = null; @@ -496,7 +508,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } // Find first var with highest scoring name List vars = new ArrayList<>(this.vars); - Collections.sort(vars, Comparator.comparing(SymbolRef::getFullName)); + vars.sort(Comparator.comparing(SymbolRef::getFullName)); for(VariableRef var : vars) { if(var.isVersion()) { if(maxName.equals(var.getFullNameUnversioned())) { @@ -513,7 +525,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { } - public List getEliminateVars(ProgramScope scope) { + List getEliminateVars(ProgramScope scope) { List eliminate = new ArrayList<>(); VariableRef keepVar = getKeepVar(scope); for(VariableRef var : vars) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastInlining.java b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastInlining.java index 463808a10..09ad310ef 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastInlining.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastInlining.java @@ -50,22 +50,8 @@ public class Pass2NopCastInlining extends Pass2SsaOptimization { if(assignment.getOperator() == null && assignment.getrValue2() instanceof CastValue) { CastValue castValue = (CastValue) assignment.getrValue2(); SymbolType subValType = SymbolTypeInference.inferType(getScope(), castValue.getValue()); - boolean isNopCast = false; - if(SymbolType.BYTE.equals(castValue.getToType()) && SymbolType.SBYTE.equals(subValType)) { - isNopCast = true; - } else if(SymbolType.SBYTE.equals(castValue.getToType()) && SymbolType.BYTE.equals(subValType)) { - isNopCast = true; - } else if(SymbolType.WORD.equals(castValue.getToType()) && SymbolType.SWORD.equals(subValType)) { - isNopCast = true; - } else if(SymbolType.SWORD.equals(castValue.getToType()) && SymbolType.WORD.equals(subValType)) { - isNopCast = true; - } else if(castValue.getToType() instanceof SymbolTypePointer && SymbolType.WORD.equals(subValType)) { - isNopCast = true; - } else if(SymbolType.WORD.equals(castValue.getToType()) && subValType instanceof SymbolTypePointer) { - isNopCast = true; - } else if(castValue.getToType() instanceof SymbolTypePointer && subValType instanceof SymbolTypePointer) { - isNopCast = true; - } + final SymbolType castToType = castValue.getToType(); + boolean isNopCast = isNopCast(castToType, subValType); if(isNopCast && assignment.getlValue() instanceof VariableRef) { final Variable assignmentVar = getScope().getVariable((VariableRef) assignment.getlValue()); @@ -138,5 +124,25 @@ public class Pass2NopCastInlining extends Pass2SsaOptimization { return (replace1.size() > 0); } + public static boolean isNopCast(SymbolType castToType, SymbolType subValType) { + boolean isNopCast = false; + if(SymbolType.BYTE.equals(castToType) && SymbolType.SBYTE.equals(subValType)) { + isNopCast = true; + } else if(SymbolType.SBYTE.equals(castToType) && SymbolType.BYTE.equals(subValType)) { + isNopCast = true; + } else if(SymbolType.WORD.equals(castToType) && SymbolType.SWORD.equals(subValType)) { + isNopCast = true; + } else if(SymbolType.SWORD.equals(castToType) && SymbolType.WORD.equals(subValType)) { + isNopCast = true; + } else if(castToType instanceof SymbolTypePointer && SymbolType.WORD.equals(subValType)) { + isNopCast = true; + } else if(SymbolType.WORD.equals(castToType) && subValType instanceof SymbolTypePointer) { + isNopCast = true; + } else if(castToType instanceof SymbolTypePointer && subValType instanceof SymbolTypePointer) { + isNopCast = true; + } + return isNopCast; + } + } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java index 7a0505dab..de4866636 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java @@ -25,7 +25,7 @@ public class Pass4RegisterUpliftCombinations extends Pass2Base { * * @param combinationIterator The combination iterator used for supplying different register allocations to test * @param maxCombinations The maximal number of combinations to test. It the iterator has more combinations he rest is skipped (and a message logged) - * @param unknownFragments Receives any unknown ASM fragments encountered during the combinsation search + * @param unknownFragments Receives any unknown ASM fragments encountered during the combination search * @param scope The scope where the variables are being tested. (Only used for logging) * @param program The program to test (used for accessing global data structures) */ diff --git a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangeVariables.java b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangeVariables.java index 84d3c6376..b93f2d56a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangeVariables.java +++ b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangeVariables.java @@ -22,11 +22,11 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase> procedureReferencedVars = calculateProcedureReferencedVars(getProgram()); LiveRangeVariables liveRanges = new LiveRangeVariables(getProgram()); boolean propagating; do { - propagating = calculateLiveRanges(liveRanges); + propagating = calculateLiveRanges(liveRanges, procedureReferencedVars); getProgram().setLiveRangeVariables(liveRanges); if(getLog().isVerboseLiveRanges()) { getLog().append("Propagating live ranges..."); @@ -37,22 +37,18 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase> procedureReferencedVars; - /** * Calculate the variables referenced inside each procedure and all it's sub-calls. */ - private void calculateProcedureReferencedVars() { - VariableReferenceInfos referenceInfo = getProgram().getVariableReferenceInfos(); - Collection allProcedures = getScope().getAllProcedures(true); + public static Map> calculateProcedureReferencedVars(Program program) { + VariableReferenceInfos referenceInfo = program.getVariableReferenceInfos(); + Collection allProcedures = program.getScope().getAllProcedures(true); Map> procReferencedVars = new LinkedHashMap<>(); for(Procedure procedure : allProcedures) { Collection referencedVars = referenceInfo.getReferencedVars(procedure.getRef().getLabelRef()); procReferencedVars.put(procedure.getRef(), referencedVars); } - this.procedureReferencedVars = procReferencedVars; + return procReferencedVars; } /** @@ -77,7 +73,7 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase> procedureReferencedVars) { VariableReferenceInfos referenceInfo = getProgram().getVariableReferenceInfos(); boolean modified = false; LiveRangeVariables.LiveRangeVariablesByStatement liveRangeVariablesByStatement = liveRanges.getLiveRangeVariablesByStatement(); @@ -110,25 +106,25 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase procUsed = procedureReferencedVars.get(procedure); + Collection procReferenced = procedureReferencedVars.get(procedure); // The call statement has no used or defined by itself so only work with the alive vars for(VariableRef aliveVar : aliveNextStmt) { // Add all variables to previous that are not used inside the method - if(!procUsed.contains(aliveVar) && !definedNextStmt.contains(aliveVar)) { - boolean addSkipVar = liveRanges.addAlive(aliveVar, previousStmt.getStatementIdx()); - modified |= addSkipVar; - if(addSkipVar && getLog().isVerboseLiveRanges()) { + if(!procReferenced.contains(aliveVar) && !definedNextStmt.contains(aliveVar)) { + boolean added = liveRanges.addAlive(aliveVar, previousStmt.getStatementIdx()); + modified |= added; + if(added && getLog().isVerboseLiveRanges()) { getLog().append("Propagated alive var unused in method by skipping call " + aliveVar + " to " + previousStmt.getStatement()); } } @@ -137,15 +133,15 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase procUsed = procedureReferencedVars.get(procedure.getRef()); + Collection procReferenced = procedureReferencedVars.get(procedure.getRef()); // The call statement has no used or defined by itself so only work with the alive vars for(VariableRef aliveVar : aliveNextStmt) { // Add all variables to previous that are used inside the method - if(procUsed.contains(aliveVar)) { + if(procReferenced.contains(aliveVar)) { if(!definedNextStmt.contains(aliveVar)) { - boolean usedVar = liveRanges.addAlive(aliveVar, previousStmt.getStatementIdx()); - modified |= usedVar; - if(usedVar && getLog().isVerboseLiveRanges()) { + boolean added = liveRanges.addAlive(aliveVar, previousStmt.getStatementIdx()); + modified |= added; + if(added && getLog().isVerboseLiveRanges()) { getLog().append("Propagated alive used in method out of method " + aliveVar + " to " + previousStmt.getStatement()); } } @@ -217,28 +213,28 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase - b1: { - [1] stmt; prev: b3[1]/NORMAL, b2[2]/NORMAL - [2] call b4; prev: b1[1]/SKIP_METHOD, b4[3]/LAST_IN_METHOD - [3] stmt; prev: b1[2]/NORMAL - goto b2; - } - b2: { - [1] stmt; prev: b1[3]/NORMAL - [2] if(x) b1; prev: b2[1]/NORMAL - goto b3; - } - b3: { - [1] stmt; prev: b2[2]/NORMAL - goto b1 - } - b4: { - [1] stmt; prev: b1[1]/BEFORE_METHOD - [2] stmt; prev: b4[1]/NORMAL - [3] return; prev: b4[3]/NORMAL - } - * + *
+    * b1: {
+    * [1] stmt;         prev: b3[1]/NORMAL, b2[2]/NORMAL
+    * [2] call b4;      prev: b1[1]/SKIP_METHOD, b4[3]/LAST_IN_METHOD
+    * [3] stmt;         prev: b1[2]/NORMAL
+    * goto b2;
+    * }
+    * b2: {
+    * [1] stmt;         prev: b1[3]/NORMAL
+    * [2] if(x) b1;     prev: b2[1]/NORMAL
+    * goto b3;
+    * }
+    * b3: {
+    * [1] stmt;         prev: b2[2]/NORMAL
+    * goto b1
+    * }
+    * b4: {
+    * [1] stmt;         prev: b1[1]/BEFORE_METHOD
+    * [2] stmt;         prev: b4[1]/NORMAL
+    * [3] return;       prev: b4[3]/NORMAL
+    * }
+    * 
* * * @param statement The statement to find previous for * @return statement(s) executed just before the passed statement @@ -246,7 +242,7 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase getPreviousStatements(Statement statement) { ArrayList previousStatements = new ArrayList<>(); // Find the statement(s) just before the current statement (disregarding if the current statement is a call - this will be handled later) - Collection precedingStatements = getPrecedingStatement(statement); + Collection precedingStatements = getPrecedingStatement(statement, getGraph(), getProgram().getStatementInfos()); if(statement instanceof StatementCalling) { // Add the statement(s) just before the call for(Statement precedingStatement : precedingStatements) { @@ -257,8 +253,8 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase lastStatements = getLastInBlock(returnBlock); + if(returnBlock != null) { + Collection lastStatements = getLastInBlock(returnBlock, getGraph()); for(Statement lastStatement : lastStatements) { previousStatements.add(new PreviousStatement(lastStatement, PreviousStatement.Type.LAST_IN_METHOD)); } @@ -276,7 +272,7 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase callers = getProgram().getCallGraph().getCallers((ProcedureRef) block.getScope()); for(CallGraph.CallBlock.Call call : callers) { Statement callStmt = getProgram().getStatementInfos().getStatement(call.getCallStatementIdx()); - Collection precedingCallStmt = getPrecedingStatement(callStmt); + Collection precedingCallStmt = getPrecedingStatement(callStmt, getGraph(), getProgram().getStatementInfos()); for(Statement precedingCall : precedingCallStmt) { previousStatements.add(new PreviousStatement(precedingCall, PreviousStatement.Type.BEFORE_METHOD)); } @@ -315,10 +311,10 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase getPrecedingStatement(Statement statement) { + static Collection getPrecedingStatement(Statement statement, ControlFlowGraph graph, StatementInfos statementInfos) { Statement previousStmt = null; Statement prev = null; - ControlFlowBlock block = getProgram().getStatementInfos().getBlock(statement); + ControlFlowBlock block = statementInfos.getBlock(statement); List statements = block.getStatements(); for(Statement stmt : statements) { if(statement.getIndex().equals(stmt.getIndex())) { @@ -332,7 +328,7 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase getLastInBlock(ControlFlowBlock block) { + private static Collection getLastInBlock(ControlFlowBlock block, ControlFlowGraph graph) { List statements = block.getStatements(); if(statements.size() > 0) { return Arrays.asList(statements.get(statements.size() - 1)); } else { // Trace back through direct/conditional predecessors (not calls) - return getLastInPredecessors(block); + return getLastInPredecessors(block, graph); } } @@ -361,12 +357,12 @@ public class PassNCalcLiveRangeVariables extends PassNCalcBase getLastInPredecessors(ControlFlowBlock block) { - List predecessors = getProgram().getGraph().getPredecessors(block); + private static Collection getLastInPredecessors(ControlFlowBlock block, ControlFlowGraph graph) { + List predecessors = graph.getPredecessors(block); ArrayList last = new ArrayList<>(); for(ControlFlowBlock predecessor : predecessors) { if(block.getLabel().equals(predecessor.getDefaultSuccessor()) || block.getLabel().equals(predecessor.getConditionalSuccessor())) { - last.addAll(getLastInBlock(predecessor)); + last.addAll(getLastInBlock(predecessor, graph)); } } return last; diff --git a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java index 21f500f31..5ddca5828 100644 --- a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java +++ b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcLiveRangesEffectiveCallPaths.java @@ -5,6 +5,7 @@ import dk.camelot64.kickc.model.statements.Statement; import dk.camelot64.kickc.model.statements.StatementAssignment; import dk.camelot64.kickc.model.statements.StatementPhiBlock; import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.ProgramScope; import dk.camelot64.kickc.model.symbols.Scope; import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.model.values.*; @@ -102,7 +103,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase> procedureReferencedVars = PassNCalcLiveRangeVariables.calculateProcedureReferencedVars(getProgram()); - // Find all alive vars from the recursive callers of each procedure - Map> callersAlive = new LinkedHashMap<>(); + // All variables alive outside a call. This is variables that are alive across the call that are not touched by the procedure (or any sub-procedure). + Map> aliveOutsideCalls = new LinkedHashMap<>(); + // All variables alive outside all calls to a procedure. This is variables that are alive across a call that are not touched by the procedure (or any sub-procedure). + Map> aliveOutsideProcedures = new LinkedHashMap<>(); Collection procedures = getProgram().getScope().getAllProcedures(true); for(Procedure procedure : procedures) { - Collection procCallersAlive = new LinkedHashSet<>(); + Collection aliveOutsideProcedure = new LinkedHashSet<>(); final Collection callers = callGraph.getRecursiveCallers(procedure.getRef()); for(CallGraph.CallBlock.Call caller : callers) { final Integer callStatementIdx = caller.getCallStatementIdx(); - final List callStatementAlive = liveRangeVariables.getAlive(callStatementIdx); - procCallersAlive.addAll(callStatementAlive); + final Statement callStatement = getGraph().getStatementByIndex(callStatementIdx); + final Collection precedingStatements = PassNCalcLiveRangeVariables.getPrecedingStatement(callStatement, getGraph(), getProgram().getStatementInfos()); + Collection aliveOutsideCall = new LinkedHashSet<>(); + for(Statement precedingStatement : precedingStatements) { + final List precedingStatementAlive = liveRangeVariables.getAlive(precedingStatement.getIndex()); + for(VariableRef precedingStatementAliveVarRef : precedingStatementAlive) { + if(!precedingStatementAliveVarRef.getScopeNames().equals(caller.getProcedure().getFullName())) { + // Skipping variables alive preceeding the caller from the called scope (these are parameters and are handled by local live ranges) + aliveOutsideCall.add(precedingStatementAliveVarRef); + } + } + } + final Collection procedureReferenced = procedureReferencedVars.get(procedure.getRef()); + aliveOutsideCall.removeAll(procedureReferenced); + aliveOutsideCalls.put(caller, aliveOutsideCall); + aliveOutsideProcedure.addAll(aliveOutsideCall); } - callersAlive.put(procedure.getRef(), procCallersAlive); + aliveOutsideProcedures.put(procedure.getRef(), aliveOutsideProcedure); } - // Find all alive variables for all statements by adding the alive from all recursive callers + // Find all alive variables for all statements by adding everything alive outside each call (not including variables from the called scope) final LinkedHashMap> statementAliveEffective = new LinkedHashMap<>(); for(ControlFlowBlock block : getGraph().getAllBlocks()) { final Procedure procedure = block.getProcedure(getProgram()); for(Statement statement : block.getStatements()) { final Collection aliveStmt = new LinkedHashSet<>(); - aliveStmt.addAll(liveRangeVariablesByStatement.getAlive(statement.getIndex())); + final List aliveStatement = liveRangeVariablesByStatement.getAlive(statement.getIndex()); + aliveStmt.addAll(aliveStatement); if(procedure!=null) { - aliveStmt.addAll(callersAlive.get(procedure.getRef())); + final Collection aliveOutsideProcedure = aliveOutsideProcedures.get(procedure.getRef()); + aliveStmt.addAll(aliveOutsideProcedure); } statementAliveEffective.put(statement.getIndex(), aliveStmt); } } - return new LiveRangeVariablesEffectiveSimple(statementAliveEffective); + + // Find aliases inside each block + Map statementAliases = new LinkedHashMap<>(); + for(ControlFlowBlock block : getGraph().getAllBlocks()) { + Pass2AliasElimination.Aliases blockAliases = new Pass2AliasElimination.Aliases(); + for(Statement statement : block.getStatements()) { + if(statement instanceof StatementAssignment) { + StatementAssignment assignment = (StatementAssignment) statement; + if(assignment.getrValue1()==null && assignment.getOperator()==null) { + + RValue rValue = assignment.getrValue2(); + if(rValue instanceof CastValue) { + // A cast - examine if it is a noop-cast + final CastValue castValue = (CastValue) rValue; + if(castValue.getValue() instanceof VariableRef) { + final VariableRef subVarRef = (VariableRef) castValue.getValue(); + final Variable subVar = getScope().getVariable(subVarRef); + if(Pass2NopCastInlining.isNopCast(castValue.getToType(), subVar.getType())) { + // Found a Nop Cast of a variable - use the variable + rValue = subVarRef; + } + } + } + if(assignment.getlValue() instanceof VariableRef && rValue instanceof VariableRef) { + final VariableRef lValueRef = (VariableRef) assignment.getlValue(); + final VariableRef rValueRef = (VariableRef) rValue; + if((lValueRef.isIntermediate() || lValueRef.isVersion()) && (rValueRef.isIntermediate() || rValueRef.isVersion()) ) { + // Identified an alias assignment of versioned/intermediate variables! + blockAliases.add(lValueRef, rValueRef); + } + } + } + } + statementAliases.put(statement.getIndex(), new Pass2AliasElimination.Aliases(blockAliases)); + } + } + + return new LiveRangeVariablesEffectiveSimple(statementAliveEffective, statementAliases); } diff --git a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcVariableRegisterWeight.java b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcVariableRegisterWeight.java index cb2a5c8ef..4102694a1 100644 --- a/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcVariableRegisterWeight.java +++ b/src/main/java/dk/camelot64/kickc/passes/calcs/PassNCalcVariableRegisterWeight.java @@ -7,6 +7,8 @@ import dk.camelot64.kickc.model.statements.StatementConditionalJump; import dk.camelot64.kickc.model.statements.StatementPhiBlock; import dk.camelot64.kickc.model.values.*; +import java.util.Collection; + /** * Finds register weights for all variables. *

@@ -28,8 +30,10 @@ public class PassNCalcVariableRegisterWeight extends PassNCalcBase callers = callGraph.getCallers(procedureRef); + int maxCallDepth = 0; + for(CallGraph.CallBlock.Call caller : callers) { + final Integer callStatementIdx = caller.getCallStatementIdx(); + final ControlFlowBlock callBlock = statementInfos.getBlock(callStatementIdx); + int callDepth = getLoopCallDepth(callBlock.getLabel(), loopSet, callGraph, statementInfos) + 1; + if(callDepth > maxCallDepth) + maxCallDepth = callDepth; + } + int loopDepth = loopSet.getMaxLoopDepth(block); + return maxCallDepth + loopDepth; + } + } diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 1a7a3e711..7919f0c71 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -3385,6 +3385,51 @@ public class TestPrograms { compileAndCompare("constantmin"); } + @Test + public void testLiveRange9() throws IOException, URISyntaxException { + compileAndCompare("liverange-9"); + } + + @Test + public void testLiveRange8() throws IOException, URISyntaxException { + compileAndCompare("liverange-8"); + } + + @Test + public void testLiveRange7() throws IOException, URISyntaxException { + compileAndCompare("liverange-7"); + } + + @Test + public void testLiveRange6() throws IOException, URISyntaxException { + compileAndCompare("liverange-6"); + } + + @Test + public void testLiveRange5() throws IOException, URISyntaxException { + compileAndCompare("liverange-5"); + } + + @Test + public void testLiveRange4() throws IOException, URISyntaxException { + compileAndCompare("liverange-4"); + } + + @Test + public void testLiveRange3() throws IOException, URISyntaxException { + compileAndCompare("liverange-3"); + } + + @Test + public void testLiveRange2() throws IOException, URISyntaxException { + compileAndCompare("liverange-2"); + } + + @Test + public void testLiveRange1() throws IOException, URISyntaxException { + compileAndCompare("liverange-1"); + } + @Test public void testLiveRange() throws IOException, URISyntaxException { compileAndCompare("liverange"); diff --git a/src/test/kc/liverange-1.kc b/src/test/kc/liverange-1.kc new file mode 100644 index 000000000..1bf8e935b --- /dev/null +++ b/src/test/kc/liverange-1.kc @@ -0,0 +1,15 @@ +// Test propagation of live ranges back over PHI-calls +// The idx-variable is alive between the two calls to out() - but not before the first call. + + +void main() { + out('c'); + out('m'); +} + +const char* SCREEN = 0x0400; +char idx = 0; + +void out(char c) { + SCREEN[idx++] = c; +} \ No newline at end of file diff --git a/src/test/kc/liverange-2.kc b/src/test/kc/liverange-2.kc new file mode 100644 index 000000000..66f4f6814 --- /dev/null +++ b/src/test/kc/liverange-2.kc @@ -0,0 +1,18 @@ +// Test effective live range and register allocation + +void main() { + for(char a: 0..100 ) { + for( char b: 0..100 ) { + for( char c: 0..100 ) { + char ca = c+a; + print(b, ca); + } + } + } +} + +const char* SCREEN = 0x0400; + +void print(char b, char ca) { + SCREEN[b] = ca; +} \ No newline at end of file diff --git a/src/test/kc/liverange-3.kc b/src/test/kc/liverange-3.kc new file mode 100644 index 000000000..ddbba9aad --- /dev/null +++ b/src/test/kc/liverange-3.kc @@ -0,0 +1,20 @@ +// Test effective live range and register allocation +// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca + +void main() { + for(char a: 0..100 ) { + for( char b: 0..100 ) { + for( char c: 0..100 ) { + char ca = c+a; + print(b, ca); + } + } + } +} + +const char* SCREEN = 0x0400; + +void print(char b, char ca) { + (*(SCREEN+999))++; + SCREEN[b] = ca; +} \ No newline at end of file diff --git a/src/test/kc/liverange-4.kc b/src/test/kc/liverange-4.kc new file mode 100644 index 000000000..d47f55167 --- /dev/null +++ b/src/test/kc/liverange-4.kc @@ -0,0 +1,23 @@ +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + +void main() { + for(char a: 0..100 ) { + for( char b: 0..100 ) { + for( char c: 0..100 ) { + char ca = c+a; + print(b, ca); + } + } + } +} + +const char* SCREEN = 0x0400; + +void print(char b, char ca) { + out(b, ca); +} + +void out(char b, char ca) { + SCREEN[b] = ca; +} \ No newline at end of file diff --git a/src/test/kc/liverange-5.kc b/src/test/kc/liverange-5.kc new file mode 100644 index 000000000..d364a487e --- /dev/null +++ b/src/test/kc/liverange-5.kc @@ -0,0 +1,24 @@ +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + +void main() { + for(char a: 0..100 ) { + for( char b: 0..100 ) { + for( char c: 0..100 ) { + char ca = c+a; + print(b, ca); + } + } + } +} + +const char* SCREEN = 0x0400; + +void print(char b, char ca) { + out(b, ca); +} + +void out(char b, char ca) { + (*(SCREEN+999))++; + SCREEN[b] = ca; +} \ No newline at end of file diff --git a/src/test/kc/liverange-6.kc b/src/test/kc/liverange-6.kc new file mode 100644 index 000000000..5623e3d33 --- /dev/null +++ b/src/test/kc/liverange-6.kc @@ -0,0 +1,14 @@ +// Test effective live range and register allocation + + +byte[] msg = "hello world!"; +const char* SCREEN = 0x0400; +char idx = 0; + +void main() { + for( byte i: 0..11) out(msg[i]); +} + +void out(char c) { + SCREEN[idx++] = c; +} \ No newline at end of file diff --git a/src/test/kc/liverange-7.kc b/src/test/kc/liverange-7.kc new file mode 100644 index 000000000..a0fd2e3ec --- /dev/null +++ b/src/test/kc/liverange-7.kc @@ -0,0 +1,20 @@ +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + +const char* SCREEN = 0x0400; +char idx = 0; + +void main() { + for(char c: 0..39 ) { + out2(c); + } +} + +void out2(char c) { + out(c); +} + +void out(char c) { + idx++; + SCREEN[idx] = c; +} \ No newline at end of file diff --git a/src/test/kc/liverange-8.kc b/src/test/kc/liverange-8.kc new file mode 100644 index 000000000..433b7144e --- /dev/null +++ b/src/test/kc/liverange-8.kc @@ -0,0 +1,21 @@ +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + +const char* SCREEN = 0x0400; +char idx = 0; + +void main() { + for(char c: 0..39 ) { + out2(c); + } +} + +void out2(char c) { + out(c); + out(c); +} + +void out(char c) { + idx++; + SCREEN[idx] = c; +} \ No newline at end of file diff --git a/src/test/kc/liverange-9.kc b/src/test/kc/liverange-9.kc new file mode 100644 index 000000000..9735cf0f0 --- /dev/null +++ b/src/test/kc/liverange-9.kc @@ -0,0 +1,28 @@ +// Test effective live range and register allocation +// Here main::c, outsw::c and outw::c can all have the same allocation + +const char* SCREEN = 0x0400; +char idx = 0; + +void main() { + for(char c: 0..39 ) { + outsw(c); + } +} + +void outsw(char c) { + out('-'); + outw(c); +} + +char[] HEXTAB = "0123456789abcdef"; + +void outw(char c) { + out(HEXTAB[c<<4]); + out(HEXTAB[c&0x0f]); +} + +void out(char c) { + idx++; + SCREEN[idx] = c; +} \ No newline at end of file diff --git a/src/test/ref/address-0.log b/src/test/ref/address-0.log index d2cabeba0..44dccfd4a 100644 --- a/src/test/ref/address-0.log +++ b/src/test/ref/address-0.log @@ -93,7 +93,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) i loadstore !zp[-1]:2 9.5 +(byte) i loadstore !zp[-1]:2 84.49999999999999 (void()) main() Initial phi equivalence classes @@ -159,13 +159,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] ) always clobbers reg byte a reg byte y +Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ i ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 9.5: zp[1]:2 [ i ] +Uplift Scope [] 84.5: zp[1]:2 [ i ] Uplift Scope [main] Uplifting [] best 338 combination zp[1]:2 [ i ] @@ -251,7 +251,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore !zp[-1]:2 zp[1]:2 9.5 +(byte) i loadstore !zp[-1]:2 zp[1]:2 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/address-0.sym b/src/test/ref/address-0.sym index 58596b8d0..8b8c77ced 100644 --- a/src/test/ref/address-0.sym +++ b/src/test/ref/address-0.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore !zp[-1]:2 zp[1]:2 9.5 +(byte) i loadstore !zp[-1]:2 zp[1]:2 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/address-1.log b/src/test/ref/address-1.log index 265fbfc78..14ca3bb30 100644 --- a/src/test/ref/address-1.log +++ b/src/test/ref/address-1.log @@ -94,7 +94,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore !zp[-1]:2 14.25 +(byte) main::i loadstore !zp[-1]:2 129.0 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -157,13 +157,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y +Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 14.25: zp[1]:2 [ main::i ] +Uplift Scope [main] 129: zp[1]:2 [ main::i ] Uplift Scope [] Uplifting [main] best 311 combination zp[1]:2 [ main::i ] @@ -253,7 +253,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 14.25 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 129.0 zp[1]:2 [ main::i ] diff --git a/src/test/ref/address-1.sym b/src/test/ref/address-1.sym index 218ef3c3a..d0ee6d49a 100644 --- a/src/test/ref/address-1.sym +++ b/src/test/ref/address-1.sym @@ -6,6 +6,6 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 14.25 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 129.0 zp[1]:2 [ main::i ] diff --git a/src/test/ref/address-2.log b/src/test/ref/address-2.log index b3cc4a837..97f23680d 100644 --- a/src/test/ref/address-2.log +++ b/src/test/ref/address-2.log @@ -93,7 +93,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) i loadstore !mem[-1]:8192 9.5 +(byte) i loadstore !mem[-1]:8192 84.49999999999999 (void()) main() Initial phi equivalence classes @@ -159,13 +159,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] ) always clobbers reg byte a reg byte y +Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a reg byte y Potential registers mem[1]:8192 [ i ] : mem[1]:8192 , REGISTER UPLIFT SCOPES -Uplift Scope [] 9.5: mem[1]:8192 [ i ] +Uplift Scope [] 84.5: mem[1]:8192 [ i ] Uplift Scope [main] Uplifting [] best 369 combination mem[1]:8192 [ i ] @@ -251,7 +251,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore !mem[-1]:8192 mem[1]:8192 9.5 +(byte) i loadstore !mem[-1]:8192 mem[1]:8192 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/address-2.sym b/src/test/ref/address-2.sym index c825559b7..531e60ab7 100644 --- a/src/test/ref/address-2.sym +++ b/src/test/ref/address-2.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore !mem[-1]:8192 mem[1]:8192 9.5 +(byte) i loadstore !mem[-1]:8192 mem[1]:8192 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/address-3.log b/src/test/ref/address-3.log index a447c4173..d2a0cfb5d 100644 --- a/src/test/ref/address-3.log +++ b/src/test/ref/address-3.log @@ -94,7 +94,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore !mem[-1]:8192 14.25 +(byte) main::i loadstore !mem[-1]:8192 129.0 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -157,13 +157,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y +Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a reg byte y Potential registers mem[1]:8192 [ main::i ] : mem[1]:8192 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 14.25: mem[1]:8192 [ main::i ] +Uplift Scope [main] 129: mem[1]:8192 [ main::i ] Uplift Scope [] Uplifting [main] best 342 combination mem[1]:8192 [ main::i ] @@ -253,7 +253,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 14.25 +(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 129.0 mem[1]:8192 [ main::i ] diff --git a/src/test/ref/address-3.sym b/src/test/ref/address-3.sym index 1aa4b2b07..7d3488b2f 100644 --- a/src/test/ref/address-3.sym +++ b/src/test/ref/address-3.sym @@ -6,6 +6,6 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 14.25 +(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 129.0 mem[1]:8192 [ main::i ] diff --git a/src/test/ref/address-4.log b/src/test/ref/address-4.log index 586d532af..6aff3fa36 100644 --- a/src/test/ref/address-4.log +++ b/src/test/ref/address-4.log @@ -114,9 +114,9 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte) main::i loadstore !zp[-1]:2 9.875 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte) main::i loadstore !zp[-1]:2 89.75 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -206,18 +206,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] if((byte) main::i<(byte) 8) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte) main::i << (byte) 1 [ main::i main::$1 ] ( main:2 [ main::i main::$1 ] ) always clobbers reg byte a -Statement [8] *((const word*) SCREEN + (byte~) main::$1) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← (byte) main::i << (byte) 1 [ main::i main::$2 ] ( main:2 [ main::i main::$2 ] ) always clobbers reg byte a -Statement [11] *((const word*) SCREEN + (byte~) main::$2) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] if((byte) main::i<(byte) 8) goto main::@2 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte) main::i << (byte) 1 [ main::i main::$1 ] ( main:2 [ main::i main::$1 ] { } ) always clobbers reg byte a +Statement [8] *((const word*) SCREEN + (byte~) main::$1) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$2 ← (byte) main::i << (byte) 1 [ main::i main::$2 ] ( main:2 [ main::i main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const word*) SCREEN + (byte~) main::$2) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i ] : zp[1]:2 , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:3 [ main::$1 ] 22: zp[1]:4 [ main::$2 ] 9.88: zp[1]:2 [ main::i ] +Uplift Scope [main] 202: zp[1]:3 [ main::$1 ] 202: zp[1]:4 [ main::$2 ] 89.75: zp[1]:2 [ main::i ] Uplift Scope [] Uplifting [main] best 681 combination reg byte a [ main::$1 ] reg byte a [ main::$2 ] zp[1]:2 [ main::i ] @@ -321,13 +321,13 @@ FINAL SYMBOL TABLE (label) @end (const word*) SCREEN = (word*) 1024 (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word) main::ch = (word) $102 -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 9.875 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 89.75 zp[1]:2 [ main::i ] reg byte a [ main::$1 ] diff --git a/src/test/ref/address-4.sym b/src/test/ref/address-4.sym index 19c0ee41f..bfb52c789 100644 --- a/src/test/ref/address-4.sym +++ b/src/test/ref/address-4.sym @@ -3,13 +3,13 @@ (label) @end (const word*) SCREEN = (word*) 1024 (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word) main::ch = (word) $102 -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 9.875 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 89.75 zp[1]:2 [ main::i ] reg byte a [ main::$1 ] diff --git a/src/test/ref/address-5.log b/src/test/ref/address-5.log index 20b1652c3..73f46abc2 100644 --- a/src/test/ref/address-5.log +++ b/src/test/ref/address-5.log @@ -119,7 +119,7 @@ VARIABLE REGISTER WEIGHTS (byte) idx loadstore !zp[-1]:3 0.2222222222222222 (void()) main() (void()) print((byte) print::ch) -(byte) print::ch loadstore !zp[-1]:2 2.0 +(byte) print::ch loadstore !zp[-1]:2 11.0 Initial phi equivalence classes Added variable idx to live range equivalence class [ idx ] @@ -207,16 +207,16 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a -Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a -Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a +Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a +Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a +Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a Statement asm { ldxidx ldach staSCREEN,x incidx } always clobbers reg byte a reg byte x Potential registers zp[1]:3 [ idx ] : zp[1]:3 , Potential registers zp[1]:2 [ print::ch ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 2: zp[1]:2 [ print::ch ] +Uplift Scope [print] 11: zp[1]:2 [ print::ch ] Uplift Scope [] 0.22: zp[1]:3 [ idx ] Uplift Scope [main] @@ -341,7 +341,7 @@ FINAL SYMBOL TABLE (label) main::@return (void()) print((byte) print::ch) (label) print::@return -(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 2.0 +(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 11.0 zp[1]:3 [ idx ] zp[1]:2 [ print::ch ] diff --git a/src/test/ref/address-5.sym b/src/test/ref/address-5.sym index d22044338..0f12614f9 100644 --- a/src/test/ref/address-5.sym +++ b/src/test/ref/address-5.sym @@ -10,7 +10,7 @@ (label) main::@return (void()) print((byte) print::ch) (label) print::@return -(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 2.0 +(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 11.0 zp[1]:3 [ idx ] zp[1]:2 [ print::ch ] diff --git a/src/test/ref/address-6.log b/src/test/ref/address-6.log index e7dc30426..a4dbf8b1d 100644 --- a/src/test/ref/address-6.log +++ b/src/test/ref/address-6.log @@ -119,7 +119,7 @@ VARIABLE REGISTER WEIGHTS (byte) idx loadstore !mem[-1]:12288 0.2222222222222222 (void()) main() (void()) print((byte) print::ch) -(byte) print::ch loadstore !mem[-1]:12289 2.0 +(byte) print::ch loadstore !mem[-1]:12289 11.0 Initial phi equivalence classes Added variable idx to live range equivalence class [ idx ] @@ -207,16 +207,16 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a -Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a -Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a +Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a +Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a +Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] { } ) always clobbers reg byte a Statement asm { ldxidx ldach staSCREEN,x incidx } always clobbers reg byte a reg byte x Potential registers mem[1]:12288 [ idx ] : mem[1]:12288 , Potential registers mem[1]:12289 [ print::ch ] : mem[1]:12289 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 2: mem[1]:12289 [ print::ch ] +Uplift Scope [print] 11: mem[1]:12289 [ print::ch ] Uplift Scope [] 0.22: mem[1]:12288 [ idx ] Uplift Scope [main] @@ -341,7 +341,7 @@ FINAL SYMBOL TABLE (label) main::@return (void()) print((byte) print::ch) (label) print::@return -(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 2.0 +(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 11.0 mem[1]:12288 [ idx ] mem[1]:12289 [ print::ch ] diff --git a/src/test/ref/address-6.sym b/src/test/ref/address-6.sym index 97e2daeb9..796db8e60 100644 --- a/src/test/ref/address-6.sym +++ b/src/test/ref/address-6.sym @@ -10,7 +10,7 @@ (label) main::@return (void()) print((byte) print::ch) (label) print::@return -(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 2.0 +(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 11.0 mem[1]:12288 [ idx ] mem[1]:12289 [ print::ch ] diff --git a/src/test/ref/address-of-0.log b/src/test/ref/address-of-0.log index 1068c2202..a00b12939 100644 --- a/src/test/ref/address-of-0.log +++ b/src/test/ref/address-of-0.log @@ -54,7 +54,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← *((const byte*) main::bp) + (byte) 1 -Alias (byte) main::c#0 = (byte~) main::$0 +Alias main::c#0 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [5] if((byte) main::b!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -108,9 +108,9 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::b loadstore 9.200000000000001 +(byte) main::b loadstore 83.0 (byte) main::c -(byte) main::c#0 22.0 +(byte) main::c#0 202.0 Initial phi equivalence classes Added variable main::b to live range equivalence class [ main::b ] @@ -179,14 +179,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::b ← (byte) 0 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::b) ← (byte) main::c#0 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte y -Statement [8] if((byte) main::b!=(byte) $b) goto main::@1 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte a +Statement [4] (byte) main::b ← (byte) 0 [ main::b ] ( main:2 [ main::b ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::b) ← (byte) main::c#0 [ main::b ] ( main:2 [ main::b ] { } ) always clobbers reg byte y +Statement [8] if((byte) main::b!=(byte) $b) goto main::@1 [ main::b ] ( main:2 [ main::b ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::b ] : zp[1]:2 , Potential registers zp[1]:3 [ main::c#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:3 [ main::c#0 ] 9.2: zp[1]:2 [ main::b ] +Uplift Scope [main] 202: zp[1]:3 [ main::c#0 ] 83: zp[1]:2 [ main::b ] Uplift Scope [] Uplifting [main] best 331 combination reg byte a [ main::c#0 ] zp[1]:2 [ main::b ] @@ -275,10 +275,10 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b loadstore zp[1]:2 9.200000000000001 +(byte) main::b loadstore zp[1]:2 83.0 (const byte*) main::bp = &(byte) main::b (byte) main::c -(byte) main::c#0 reg byte a 22.0 +(byte) main::c#0 reg byte a 202.0 zp[1]:2 [ main::b ] reg byte a [ main::c#0 ] diff --git a/src/test/ref/address-of-0.sym b/src/test/ref/address-of-0.sym index e9bad97d1..e1c423e07 100644 --- a/src/test/ref/address-of-0.sym +++ b/src/test/ref/address-of-0.sym @@ -5,10 +5,10 @@ (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b loadstore zp[1]:2 9.200000000000001 +(byte) main::b loadstore zp[1]:2 83.0 (const byte*) main::bp = &(byte) main::b (byte) main::c -(byte) main::c#0 reg byte a 22.0 +(byte) main::c#0 reg byte a 202.0 zp[1]:2 [ main::b ] reg byte a [ main::c#0 ] diff --git a/src/test/ref/address-of-1.log b/src/test/ref/address-of-1.log index 2b170a369..a120bed08 100644 --- a/src/test/ref/address-of-1.log +++ b/src/test/ref/address-of-1.log @@ -185,14 +185,14 @@ setByte::@return: scope:[setByte] from setByte VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::b1 loadstore 0.36363636363636365 -(byte) main::b2 loadstore 0.36363636363636365 -(byte) main::b3 loadstore 0.36363636363636365 +(byte) main::b1 loadstore 2.0 +(byte) main::b2 loadstore 2.0 +(byte) main::b3 loadstore 2.0 (void()) setByte((byte*) setByte::ptr , (byte) setByte::b) (byte) setByte::b -(byte) setByte::b#3 2.0 +(byte) setByte::b#3 101.0 (byte*) setByte::ptr -(byte*) setByte::ptr#3 2.0 +(byte*) setByte::ptr#3 101.0 Initial phi equivalence classes [ setByte::b#3 ] @@ -332,13 +332,13 @@ setByte: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::b1 ← (byte) 0 [ main::b1 ] ( main:2 [ main::b1 ] ) always clobbers reg byte a -Statement [5] (byte) main::b2 ← (byte) 0 [ main::b1 main::b2 ] ( main:2 [ main::b1 main::b2 ] ) always clobbers reg byte a -Statement [6] (byte) main::b3 ← (byte) 0 [ main::b1 main::b2 main::b3 ] ( main:2 [ main::b1 main::b2 main::b3 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN) ← (byte) main::b1 [ main::b2 main::b3 ] ( main:2 [ main::b2 main::b3 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::b2 [ main::b3 ] ( main:2 [ main::b3 ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN+(byte) 2) ← (byte) main::b3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 [ main::b1 main::b2 main::b3 ] ( main:2::setByte:7 [ main::b1 main::b2 main::b3 ] main:2::setByte:9 [ main::b1 main::b2 main::b3 ] main:2::setByte:11 [ main::b1 main::b2 main::b3 ] ) always clobbers reg byte y +Statement [4] (byte) main::b1 ← (byte) 0 [ main::b1 ] ( main:2 [ main::b1 ] { } ) always clobbers reg byte a +Statement [5] (byte) main::b2 ← (byte) 0 [ main::b1 main::b2 ] ( main:2 [ main::b1 main::b2 ] { } ) always clobbers reg byte a +Statement [6] (byte) main::b3 ← (byte) 0 [ main::b1 main::b2 main::b3 ] ( main:2 [ main::b1 main::b2 main::b3 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN) ← (byte) main::b1 [ main::b2 main::b3 ] ( main:2 [ main::b2 main::b3 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::b2 [ main::b3 ] ( main:2 [ main::b3 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN+(byte) 2) ← (byte) main::b3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 [ main::b1 main::b2 main::b3 ] ( main:2::setByte:7 [ main::b1 main::b2 main::b3 ] { } main:2::setByte:9 [ main::b1 main::b2 main::b3 ] { } main:2::setByte:11 [ main::b1 main::b2 main::b3 ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ setByte::b#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ setByte::ptr#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::b1 ] : zp[1]:5 , @@ -346,8 +346,8 @@ Potential registers zp[1]:6 [ main::b2 ] : zp[1]:6 , Potential registers zp[1]:7 [ main::b3 ] : zp[1]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [setByte] 2: zp[1]:2 [ setByte::b#3 ] 2: zp[2]:3 [ setByte::ptr#3 ] -Uplift Scope [main] 0.36: zp[1]:5 [ main::b1 ] 0.36: zp[1]:6 [ main::b2 ] 0.36: zp[1]:7 [ main::b3 ] +Uplift Scope [setByte] 101: zp[1]:2 [ setByte::b#3 ] 101: zp[2]:3 [ setByte::ptr#3 ] +Uplift Scope [main] 2: zp[1]:5 [ main::b1 ] 2: zp[1]:6 [ main::b2 ] 2: zp[1]:7 [ main::b3 ] Uplift Scope [] Uplifting [setByte] best 139 combination reg byte x [ setByte::b#3 ] zp[2]:3 [ setByte::ptr#3 ] @@ -522,15 +522,15 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b1 loadstore zp[1]:4 0.36363636363636365 -(byte) main::b2 loadstore zp[1]:5 0.36363636363636365 -(byte) main::b3 loadstore zp[1]:6 0.36363636363636365 +(byte) main::b1 loadstore zp[1]:4 2.0 +(byte) main::b2 loadstore zp[1]:5 2.0 +(byte) main::b3 loadstore zp[1]:6 2.0 (void()) setByte((byte*) setByte::ptr , (byte) setByte::b) (label) setByte::@return (byte) setByte::b -(byte) setByte::b#3 reg byte x 2.0 +(byte) setByte::b#3 reg byte x 101.0 (byte*) setByte::ptr -(byte*) setByte::ptr#3 ptr zp[2]:2 2.0 +(byte*) setByte::ptr#3 ptr zp[2]:2 101.0 reg byte x [ setByte::b#3 ] zp[2]:2 [ setByte::ptr#3 ] diff --git a/src/test/ref/address-of-1.sym b/src/test/ref/address-of-1.sym index 002251add..3114ff036 100644 --- a/src/test/ref/address-of-1.sym +++ b/src/test/ref/address-of-1.sym @@ -7,15 +7,15 @@ (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b1 loadstore zp[1]:4 0.36363636363636365 -(byte) main::b2 loadstore zp[1]:5 0.36363636363636365 -(byte) main::b3 loadstore zp[1]:6 0.36363636363636365 +(byte) main::b1 loadstore zp[1]:4 2.0 +(byte) main::b2 loadstore zp[1]:5 2.0 +(byte) main::b3 loadstore zp[1]:6 2.0 (void()) setByte((byte*) setByte::ptr , (byte) setByte::b) (label) setByte::@return (byte) setByte::b -(byte) setByte::b#3 reg byte x 2.0 +(byte) setByte::b#3 reg byte x 101.0 (byte*) setByte::ptr -(byte*) setByte::ptr#3 ptr zp[2]:2 2.0 +(byte*) setByte::ptr#3 ptr zp[2]:2 101.0 reg byte x [ setByte::b#3 ] zp[2]:2 [ setByte::ptr#3 ] diff --git a/src/test/ref/address-of-2.log b/src/test/ref/address-of-2.log index 07e4e01b0..96006ff5d 100644 --- a/src/test/ref/address-of-2.log +++ b/src/test/ref/address-of-2.log @@ -138,8 +138,8 @@ Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::idx#4 = (byte) main::idx#7 -Alias (byte) main::idx#5 = (byte) main::idx#8 +Alias main::idx#4 = main::idx#7 +Alias main::idx#5 = main::idx#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) setv::v#1 (byte) setv::v#0 Identical Phi Values (byte) setp::v#1 (byte) setp::v#0 @@ -294,7 +294,7 @@ VARIABLE REGISTER WEIGHTS (byte) setp::v (void()) setv((byte) setv::v) (byte) setv::v -(byte) val loadstore 1.5384615384615383 +(byte) val loadstore 14.692307692307692 Initial phi equivalence classes Added variable val to live range equivalence class [ val ] @@ -428,28 +428,28 @@ setv: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] ) always clobbers reg byte a -Statement [4] *((const byte*) main::SCREEN1) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN2) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte) val ← (byte) 1 [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN1+(byte) 1) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN2+(byte) 1) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] (byte) val ← (byte) 2 [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN1+(byte) 2) ← (byte) val [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN2+(byte) 2) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::ptr) ← (byte) 3 [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN1+(byte) 3) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN2+(byte) 3) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN1+(byte) 4) ← (byte) val [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN2+(byte) 4) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::SCREEN1+(byte) 5) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) main::SCREEN2+(byte) 5) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) main::ptr) ← (const byte) setp::v#0 [ ] ( main:2::setp:18 [ val ] ) always clobbers reg byte a -Statement [24] (byte) val ← (const byte) setv::v#0 [ val ] ( main:2::setv:15 [ val ] ) always clobbers reg byte a +Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN1) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN2) ← (byte) '.' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte) val ← (byte) 1 [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN1+(byte) 1) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN2+(byte) 1) ← (byte) '.' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] (byte) val ← (byte) 2 [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN1+(byte) 2) ← (byte) val [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN2+(byte) 2) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::ptr) ← (byte) 3 [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN1+(byte) 3) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN2+(byte) 3) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN1+(byte) 4) ← (byte) val [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN2+(byte) 4) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN1+(byte) 5) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) main::SCREEN2+(byte) 5) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) main::ptr) ← (const byte) setp::v#0 [ ] ( main:2::setp:18 [ val ] { } ) always clobbers reg byte a +Statement [24] (byte) val ← (const byte) setv::v#0 [ val ] ( main:2::setv:15 [ val ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ val ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 1.54: zp[1]:2 [ val ] +Uplift Scope [] 14.69: zp[1]:2 [ val ] Uplift Scope [main] Uplift Scope [setv] Uplift Scope [setp] @@ -632,7 +632,7 @@ FINAL SYMBOL TABLE (label) setv::@return (byte) setv::v (const byte) setv::v#0 v = (byte) 4 -(byte) val loadstore zp[1]:2 1.5384615384615383 +(byte) val loadstore zp[1]:2 14.692307692307692 zp[1]:2 [ val ] diff --git a/src/test/ref/address-of-2.sym b/src/test/ref/address-of-2.sym index 90bcf3284..610b32665 100644 --- a/src/test/ref/address-of-2.sym +++ b/src/test/ref/address-of-2.sym @@ -18,6 +18,6 @@ (label) setv::@return (byte) setv::v (const byte) setv::v#0 v = (byte) 4 -(byte) val loadstore zp[1]:2 1.5384615384615383 +(byte) val loadstore zp[1]:2 14.692307692307692 zp[1]:2 [ val ] diff --git a/src/test/ref/address-of-3.log b/src/test/ref/address-of-3.log index ea1609089..e5fc191f7 100644 --- a/src/test/ref/address-of-3.log +++ b/src/test/ref/address-of-3.log @@ -132,14 +132,14 @@ Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) idx#0 = (byte) idx#8 -Alias (byte) idx#1 = (byte) idx#9 -Alias (signed word*) print::p#2 = (signed word*~) main::$2 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) idx#10 = (byte) idx#2 (byte) idx#11 (byte) idx#3 -Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#17 = (byte) idx#4 -Alias (byte) idx#14 = (byte) idx#7 +Alias idx#0 = idx#8 +Alias idx#1 = idx#9 +Alias print::p#2 = main::$2 +Alias main::i#2 = main::i#3 +Alias idx#10 = idx#2 idx#11 idx#3 +Alias idx#13 = idx#5 idx#6 +Alias idx#17 = idx#4 +Alias idx#14 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#15 (byte) idx#17 Identical Phi Values (byte) idx#0 (byte) idx#13 @@ -258,18 +258,18 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#12 5.666666666666667 -(byte) idx#13 1.3636363636363638 +(byte) idx#12 704.6666666666667 +(byte) idx#13 101.18181818181819 (void()) main() -(byte~) main::$5 22.0 +(byte~) main::$5 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 (void()) print((signed word*) print::p) -(byte~) print::$0 4.0 +(byte~) print::$0 2002.0 (signed word*) print::p -(signed word*) print::p#2 22.0 -(signed word*) print::p#3 6.5 +(signed word*) print::p#2 202.0 +(signed word*) print::p#3 551.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -422,18 +422,18 @@ print: { VALS: .word 1, 2, 3, 4 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#12 idx#13 ] -Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] ) always clobbers reg byte a -Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] main:2::print:7 [ idx#12 print::p#3 print::$0 ] main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] ) always clobbers reg byte a -Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:11 [ main::i#2 idx#12 ] ) always clobbers reg byte a reg byte y +Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a +Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] { } main:2::print:7 [ idx#12 print::p#3 print::$0 ] { { idx#12 = idx#13 } } main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a +Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] { } main:2::print:7 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ main::i#2 idx#12 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ idx#12 idx#13 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] ) always clobbers reg byte a -Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] ) always clobbers reg byte a -Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] main:2::print:7 [ idx#12 print::p#3 print::$0 ] main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] ) always clobbers reg byte a -Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:11 [ main::i#2 idx#12 ] ) always clobbers reg byte a reg byte y +Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a +Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a +Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] { } main:2::print:7 [ idx#12 print::p#3 print::$0 ] { { idx#12 = idx#13 } } main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a +Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] { } main:2::print:7 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ main::i#2 idx#12 ] { { idx#12 = idx#13 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ idx#12 idx#13 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ print::p#3 print::p#2 ] : zp[2]:4 , @@ -441,17 +441,17 @@ Potential registers zp[1]:6 [ main::$5 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ print::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$5 ] -Uplift Scope [print] 28.5: zp[2]:4 [ print::p#3 print::p#2 ] 4: zp[1]:7 [ print::$0 ] -Uplift Scope [] 7.03: zp[1]:3 [ idx#12 idx#13 ] +Uplift Scope [print] 2,002: zp[1]:7 [ print::$0 ] 753: zp[2]:4 [ print::p#3 print::p#2 ] +Uplift Scope [] 805.85: zp[1]:3 [ idx#12 idx#13 ] +Uplift Scope [main] 227.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$5 ] -Uplifting [main] best 572 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ] -Uplifting [print] best 568 combination zp[2]:4 [ print::p#3 print::p#2 ] reg byte a [ print::$0 ] +Uplifting [print] best 628 combination reg byte a [ print::$0 ] zp[2]:4 [ print::p#3 print::p#2 ] +Uplifting [] best 628 combination zp[1]:3 [ idx#12 idx#13 ] +Uplifting [main] best 568 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ] +Attempting to uplift remaining variables inzp[1]:3 [ idx#12 idx#13 ] Uplifting [] best 568 combination zp[1]:3 [ idx#12 idx#13 ] Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] Uplifting [main] best 568 combination zp[1]:2 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ idx#12 idx#13 ] -Uplifting [] best 568 combination zp[1]:3 [ idx#12 idx#13 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -622,23 +622,23 @@ FINAL SYMBOL TABLE (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 } (byte) idx -(byte) idx#12 idx zp[1]:3 5.666666666666667 -(byte) idx#13 idx zp[1]:3 1.3636363636363638 +(byte) idx#12 idx zp[1]:3 704.6666666666667 +(byte) idx#13 idx zp[1]:3 101.18181818181819 (void()) main() -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 8.25 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 75.75 (void()) print((signed word*) print::p) -(byte~) print::$0 reg byte a 4.0 +(byte~) print::$0 reg byte a 2002.0 (label) print::@return (signed word*) print::p -(signed word*) print::p#2 p zp[2]:4 22.0 -(signed word*) print::p#3 p zp[2]:4 6.5 +(signed word*) print::p#2 p zp[2]:4 202.0 +(signed word*) print::p#3 p zp[2]:4 551.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx#12 idx#13 ] diff --git a/src/test/ref/address-of-3.sym b/src/test/ref/address-of-3.sym index 8a87e8bf2..45cb0e22f 100644 --- a/src/test/ref/address-of-3.sym +++ b/src/test/ref/address-of-3.sym @@ -5,23 +5,23 @@ (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 } (byte) idx -(byte) idx#12 idx zp[1]:3 5.666666666666667 -(byte) idx#13 idx zp[1]:3 1.3636363636363638 +(byte) idx#12 idx zp[1]:3 704.6666666666667 +(byte) idx#13 idx zp[1]:3 101.18181818181819 (void()) main() -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 8.25 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 75.75 (void()) print((signed word*) print::p) -(byte~) print::$0 reg byte a 4.0 +(byte~) print::$0 reg byte a 2002.0 (label) print::@return (signed word*) print::p -(signed word*) print::p#2 p zp[2]:4 22.0 -(signed word*) print::p#3 p zp[2]:4 6.5 +(signed word*) print::p#2 p zp[2]:4 202.0 +(signed word*) print::p#3 p zp[2]:4 551.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx#12 idx#13 ] diff --git a/src/test/ref/array-16bit-lookup.log b/src/test/ref/array-16bit-lookup.log index fb56d59f8..0e464b79c 100644 --- a/src/test/ref/array-16bit-lookup.log +++ b/src/test/ref/array-16bit-lookup.log @@ -115,9 +115,9 @@ Inferred type updated to byte in (unumber~) getValue::$0 ← (word) getValue::in Inferred type updated to byte in (unumber~) getValue::$4 ← (byte~) getValue::$0 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff Inferred type updated to byte in (unumber~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 -Alias (word) getValue::return#0 = (word) getValue::return#3 -Alias (byte) main::idx#2 = (byte) main::idx#3 -Alias (word) getValue::return#1 = (word~) getValue::$3 (word) getValue::return#4 (word) getValue::return#2 +Alias getValue::return#0 = getValue::return#3 +Alias main::idx#2 = main::idx#3 +Alias getValue::return#1 = getValue::$3 getValue::return#4 getValue::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) getValue::index#1 (word) getValue::index#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -210,21 +210,21 @@ getValue::@return: scope:[getValue] from getValue VARIABLE REGISTER WEIGHTS (word()) getValue((word) getValue::index) -(byte~) getValue::$0 4.0 -(byte~) getValue::$1 4.0 -(byte~) getValue::$2 2.0 -(byte~) getValue::$4 4.0 +(byte~) getValue::$0 2002.0 +(byte~) getValue::$1 2002.0 +(byte~) getValue::$2 1001.0 +(byte~) getValue::$4 2002.0 (word) getValue::index -(word) getValue::index#0 13.0 +(word) getValue::index#0 1102.0 (word) getValue::return -(word) getValue::return#0 22.0 -(word) getValue::return#1 4.333333333333333 +(word) getValue::return#0 202.0 +(word) getValue::return#1 367.33333333333337 (void()) main() -(word~) main::$0 11.0 -(byte~) main::$2 22.0 +(word~) main::$0 101.0 +(byte~) main::$2 202.0 (byte) main::idx -(byte) main::idx#1 16.5 -(byte) main::idx#2 6.285714285714286 +(byte) main::idx#1 151.5 +(byte) main::idx#2 57.714285714285715 Initial phi equivalence classes [ main::idx#2 main::idx#1 ] @@ -387,27 +387,27 @@ getValue: { arr16: .fill 2*$80, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] ) always clobbers reg byte a +Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::idx#2 main::idx#1 ] -Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] ) always clobbers reg byte a -Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] ) always clobbers reg byte a -Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] ) always clobbers reg byte a -Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] ) always clobbers reg byte a -Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] ) always clobbers reg byte a -Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] ) always clobbers reg byte a -Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] ) always clobbers reg byte a -Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] ) always clobbers reg byte a -Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] ) always clobbers reg byte a -Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] ) always clobbers reg byte a -Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] ) always clobbers reg byte a -Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] ) always clobbers reg byte a -Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] ) always clobbers reg byte a -Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] ) always clobbers reg byte a -Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] ) always clobbers reg byte a +Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a +Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::idx#2 main::idx#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ getValue::index#0 ] : zp[2]:3 , Potential registers zp[2]:5 [ getValue::return#0 ] : zp[2]:5 , @@ -420,13 +420,13 @@ Potential registers zp[1]:13 [ getValue::$2 ] : zp[1]:13 , reg byte a , reg byte Potential registers zp[2]:14 [ getValue::return#1 ] : zp[2]:14 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22.79: zp[1]:2 [ main::idx#2 main::idx#1 ] 22: zp[1]:9 [ main::$2 ] 11: zp[2]:7 [ main::$0 ] -Uplift Scope [getValue] 22: zp[2]:5 [ getValue::return#0 ] 13: zp[2]:3 [ getValue::index#0 ] 4.33: zp[2]:14 [ getValue::return#1 ] 4: zp[1]:10 [ getValue::$0 ] 4: zp[1]:11 [ getValue::$4 ] 4: zp[1]:12 [ getValue::$1 ] 2: zp[1]:13 [ getValue::$2 ] +Uplift Scope [getValue] 2,002: zp[1]:10 [ getValue::$0 ] 2,002: zp[1]:11 [ getValue::$4 ] 2,002: zp[1]:12 [ getValue::$1 ] 1,102: zp[2]:3 [ getValue::index#0 ] 1,001: zp[1]:13 [ getValue::$2 ] 367.33: zp[2]:14 [ getValue::return#1 ] 202: zp[2]:5 [ getValue::return#0 ] +Uplift Scope [main] 209.21: zp[1]:2 [ main::idx#2 main::idx#1 ] 202: zp[1]:9 [ main::$2 ] 101: zp[2]:7 [ main::$0 ] Uplift Scope [] -Uplifting [main] best 899 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:7 [ main::$0 ] -Uplifting [getValue] best 877 combination zp[2]:5 [ getValue::return#0 ] zp[2]:3 [ getValue::index#0 ] zp[2]:14 [ getValue::return#1 ] reg byte a [ getValue::$0 ] reg byte a [ getValue::$4 ] reg byte a [ getValue::$1 ] reg byte a [ getValue::$2 ] +Uplifting [getValue] best 1027 combination reg byte a [ getValue::$0 ] reg byte a [ getValue::$4 ] reg byte a [ getValue::$1 ] zp[2]:3 [ getValue::index#0 ] reg byte a [ getValue::$2 ] zp[2]:14 [ getValue::return#1 ] zp[2]:5 [ getValue::return#0 ] Limited combination testing to 100 combinations of 256 possible. +Uplifting [main] best 877 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:7 [ main::$0 ] Uplifting [] best 877 combination Coalescing zero page register [ zp[2]:5 [ getValue::return#0 ] ] with [ zp[2]:7 [ main::$0 ] ] - score: 1 Coalescing zero page register [ zp[2]:5 [ getValue::return#0 main::$0 ] ] with [ zp[2]:14 [ getValue::return#1 ] ] - score: 1 @@ -569,26 +569,26 @@ FINAL SYMBOL TABLE (label) @end (const word*) arr16[(number) $80] = { fill( $80, 0) } (word()) getValue((word) getValue::index) -(byte~) getValue::$0 reg byte a 4.0 -(byte~) getValue::$1 reg byte a 4.0 -(byte~) getValue::$2 reg byte a 2.0 -(byte~) getValue::$4 reg byte a 4.0 +(byte~) getValue::$0 reg byte a 2002.0 +(byte~) getValue::$1 reg byte a 2002.0 +(byte~) getValue::$2 reg byte a 1001.0 +(byte~) getValue::$4 reg byte a 2002.0 (label) getValue::@return (word) getValue::index -(word) getValue::index#0 index zp[2]:2 13.0 +(word) getValue::index#0 index zp[2]:2 1102.0 (word) getValue::return -(word) getValue::return#0 return zp[2]:4 22.0 -(word) getValue::return#1 return zp[2]:4 4.333333333333333 +(word) getValue::return#0 return zp[2]:4 202.0 +(word) getValue::return#1 return zp[2]:4 367.33333333333337 (void()) main() -(word~) main::$0 zp[2]:4 11.0 -(byte~) main::$2 reg byte a 22.0 +(word~) main::$0 zp[2]:4 101.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word*) main::SCREEN = (word*) 1024 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 6.285714285714286 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 57.714285714285715 reg byte x [ main::idx#2 main::idx#1 ] zp[2]:2 [ getValue::index#0 ] diff --git a/src/test/ref/array-16bit-lookup.sym b/src/test/ref/array-16bit-lookup.sym index d184d45e9..afc1ff815 100644 --- a/src/test/ref/array-16bit-lookup.sym +++ b/src/test/ref/array-16bit-lookup.sym @@ -3,26 +3,26 @@ (label) @end (const word*) arr16[(number) $80] = { fill( $80, 0) } (word()) getValue((word) getValue::index) -(byte~) getValue::$0 reg byte a 4.0 -(byte~) getValue::$1 reg byte a 4.0 -(byte~) getValue::$2 reg byte a 2.0 -(byte~) getValue::$4 reg byte a 4.0 +(byte~) getValue::$0 reg byte a 2002.0 +(byte~) getValue::$1 reg byte a 2002.0 +(byte~) getValue::$2 reg byte a 1001.0 +(byte~) getValue::$4 reg byte a 2002.0 (label) getValue::@return (word) getValue::index -(word) getValue::index#0 index zp[2]:2 13.0 +(word) getValue::index#0 index zp[2]:2 1102.0 (word) getValue::return -(word) getValue::return#0 return zp[2]:4 22.0 -(word) getValue::return#1 return zp[2]:4 4.333333333333333 +(word) getValue::return#0 return zp[2]:4 202.0 +(word) getValue::return#1 return zp[2]:4 367.33333333333337 (void()) main() -(word~) main::$0 zp[2]:4 11.0 -(byte~) main::$2 reg byte a 22.0 +(word~) main::$0 zp[2]:4 101.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word*) main::SCREEN = (word*) 1024 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 6.285714285714286 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 57.714285714285715 reg byte x [ main::idx#2 main::idx#1 ] zp[2]:2 [ getValue::index#0 ] diff --git a/src/test/ref/array-length-symbolic-min.log b/src/test/ref/array-length-symbolic-min.log index ea2756ae0..2681cf936 100644 --- a/src/test/ref/array-length-symbolic-min.log +++ b/src/test/ref/array-length-symbolic-min.log @@ -109,8 +109,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::sub -(byte) main::sub#1 16.5 -(byte) main::sub#2 22.0 +(byte) main::sub#1 151.5 +(byte) main::sub#2 202.0 Initial phi equivalence classes [ main::sub#2 main::sub#1 ] @@ -183,7 +183,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::sub#2 main::sub#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::sub#2 main::sub#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::sub#2 main::sub#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::sub#2 main::sub#1 ] @@ -280,8 +280,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::sub -(byte) main::sub#1 reg byte x 16.5 -(byte) main::sub#2 reg byte x 22.0 +(byte) main::sub#1 reg byte x 151.5 +(byte) main::sub#2 reg byte x 202.0 reg byte x [ main::sub#2 main::sub#1 ] diff --git a/src/test/ref/array-length-symbolic-min.sym b/src/test/ref/array-length-symbolic-min.sym index 12da5e405..7275eea8f 100644 --- a/src/test/ref/array-length-symbolic-min.sym +++ b/src/test/ref/array-length-symbolic-min.sym @@ -7,7 +7,7 @@ (label) main::@1 (label) main::@return (byte) main::sub -(byte) main::sub#1 reg byte x 16.5 -(byte) main::sub#2 reg byte x 22.0 +(byte) main::sub#1 reg byte x 151.5 +(byte) main::sub#2 reg byte x 202.0 reg byte x [ main::sub#2 main::sub#1 ] diff --git a/src/test/ref/array-length-symbolic.log b/src/test/ref/array-length-symbolic.log index 8c7cc436e..a95bba4b9 100644 --- a/src/test/ref/array-length-symbolic.log +++ b/src/test/ref/array-length-symbolic.log @@ -93,8 +93,8 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::item#2 * (byte) $10 Inferred type updated to byte in (unumber~) main::$1 ← (byte~) main::$0 | (byte) main::sub#2 -Alias (byte*) main::cur_item#2 = (byte*) main::cur_item#3 -Alias (byte) main::item#2 = (byte) main::item#3 +Alias main::cur_item#2 = main::cur_item#3 +Alias main::item#2 = main::item#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::item#2 (byte) main::item#4 Identical Phi Values (byte*) main::cur_item#2 (byte*) main::cur_item#4 @@ -194,17 +194,17 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 202.0 -(byte~) main::$1 202.0 +(byte~) main::$0 2002.0 +(byte~) main::$1 2002.0 (byte*) main::cur_item -(byte*) main::cur_item#1 7.333333333333333 -(byte*) main::cur_item#4 17.571428571428573 +(byte*) main::cur_item#1 67.33333333333333 +(byte*) main::cur_item#4 171.85714285714283 (byte) main::item -(byte) main::item#1 16.5 -(byte) main::item#4 15.375 +(byte) main::item#1 151.5 +(byte) main::item#4 150.375 (byte) main::sub -(byte) main::sub#1 151.5 -(byte) main::sub#2 101.0 +(byte) main::sub#1 1501.5 +(byte) main::sub#2 1001.0 Initial phi equivalence classes [ main::item#4 main::item#1 ] @@ -337,12 +337,12 @@ main: { items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::item#4 main::item#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::sub#2 main::sub#1 ] -Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ) always clobbers reg byte a -Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a +Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a +Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::item#4 main::item#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::sub#2 main::sub#1 ] : zp[1]:5 , reg byte x , reg byte y , @@ -350,7 +350,7 @@ Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ main::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 252.5: zp[1]:5 [ main::sub#2 main::sub#1 ] 202: zp[1]:6 [ main::$0 ] 202: zp[1]:7 [ main::$1 ] 31.88: zp[1]:2 [ main::item#4 main::item#1 ] 24.9: zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] +Uplift Scope [main] 2,502.5: zp[1]:5 [ main::sub#2 main::sub#1 ] 2,002: zp[1]:6 [ main::$0 ] 2,002: zp[1]:7 [ main::$1 ] 301.88: zp[1]:2 [ main::item#4 main::item#1 ] 239.19: zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] Uplift Scope [] Uplifting [main] best 4418 combination reg byte y [ main::sub#2 main::sub#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte x [ main::item#4 main::item#1 ] zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] @@ -497,21 +497,21 @@ FINAL SYMBOL TABLE (const byte) ITEM_SIZE = (byte) 5 (const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (void()) main() -(byte~) main::$0 reg byte a 202.0 -(byte~) main::$1 reg byte a 202.0 +(byte~) main::$0 reg byte a 2002.0 +(byte~) main::$1 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte*) main::cur_item -(byte*) main::cur_item#1 cur_item zp[2]:2 7.333333333333333 -(byte*) main::cur_item#4 cur_item zp[2]:2 17.571428571428573 +(byte*) main::cur_item#1 cur_item zp[2]:2 67.33333333333333 +(byte*) main::cur_item#4 cur_item zp[2]:2 171.85714285714283 (byte) main::item -(byte) main::item#1 reg byte x 16.5 -(byte) main::item#4 reg byte x 15.375 +(byte) main::item#1 reg byte x 151.5 +(byte) main::item#4 reg byte x 150.375 (byte) main::sub -(byte) main::sub#1 reg byte y 151.5 -(byte) main::sub#2 reg byte y 101.0 +(byte) main::sub#1 reg byte y 1501.5 +(byte) main::sub#2 reg byte y 1001.0 reg byte x [ main::item#4 main::item#1 ] zp[2]:2 [ main::cur_item#4 main::cur_item#1 ] diff --git a/src/test/ref/array-length-symbolic.sym b/src/test/ref/array-length-symbolic.sym index 084b738e1..2ed4ba81f 100644 --- a/src/test/ref/array-length-symbolic.sym +++ b/src/test/ref/array-length-symbolic.sym @@ -5,21 +5,21 @@ (const byte) ITEM_SIZE = (byte) 5 (const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (void()) main() -(byte~) main::$0 reg byte a 202.0 -(byte~) main::$1 reg byte a 202.0 +(byte~) main::$0 reg byte a 2002.0 +(byte~) main::$1 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte*) main::cur_item -(byte*) main::cur_item#1 cur_item zp[2]:2 7.333333333333333 -(byte*) main::cur_item#4 cur_item zp[2]:2 17.571428571428573 +(byte*) main::cur_item#1 cur_item zp[2]:2 67.33333333333333 +(byte*) main::cur_item#4 cur_item zp[2]:2 171.85714285714283 (byte) main::item -(byte) main::item#1 reg byte x 16.5 -(byte) main::item#4 reg byte x 15.375 +(byte) main::item#1 reg byte x 151.5 +(byte) main::item#4 reg byte x 150.375 (byte) main::sub -(byte) main::sub#1 reg byte y 151.5 -(byte) main::sub#2 reg byte y 101.0 +(byte) main::sub#1 reg byte y 1501.5 +(byte) main::sub#2 reg byte y 1001.0 reg byte x [ main::item#4 main::item#1 ] zp[2]:2 [ main::cur_item#4 main::cur_item#1 ] diff --git a/src/test/ref/arrays-init-kasm-0.log b/src/test/ref/arrays-init-kasm-0.log index 50388adca..ca72c7769 100644 --- a/src/test/ref/arrays-init-kasm-0.log +++ b/src/test/ref/arrays-init-kasm-0.log @@ -124,7 +124,7 @@ SINTAB: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← *((const byte*) SINTAB) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← *((const byte*) SINTAB) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/arrays-init-short.log b/src/test/ref/arrays-init-short.log index df0d3df0d..c177d3fb3 100644 --- a/src/test/ref/arrays-init-short.log +++ b/src/test/ref/arrays-init-short.log @@ -90,8 +90,8 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::i1#2 = (byte) main::i1#3 +Alias main::i#2 = main::i#3 +Alias main::i1#2 = main::i1#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 Simple Condition (bool~) main::$1 [9] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@8 @@ -165,11 +165,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 22.0 -(byte) main::i1#2 18.333333333333332 +(byte) main::i1#1 202.0 +(byte) main::i1#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -274,21 +274,21 @@ main: { .fill $d, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a +Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] 40.33: zp[1]:3 [ main::i1#2 main::i1#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] 370.33: zp[1]:3 [ main::i1#2 main::i1#1 ] Uplift Scope [] Uplifting [main] best 618 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] @@ -415,11 +415,11 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 reg byte x 22.0 -(byte) main::i1#2 reg byte x 18.333333333333332 +(byte) main::i1#1 reg byte x 202.0 +(byte) main::i1#2 reg byte x 168.33333333333331 (const byte*) msg1[(number) $10] = (byte*) "camelot" (const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' } diff --git a/src/test/ref/arrays-init-short.sym b/src/test/ref/arrays-init-short.sym index de2d5bde9..9c476e64a 100644 --- a/src/test/ref/arrays-init-short.sym +++ b/src/test/ref/arrays-init-short.sym @@ -9,11 +9,11 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 reg byte x 22.0 -(byte) main::i1#2 reg byte x 18.333333333333332 +(byte) main::i1#1 reg byte x 202.0 +(byte) main::i1#2 reg byte x 168.33333333333331 (const byte*) msg1[(number) $10] = (byte*) "camelot" (const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' } diff --git a/src/test/ref/arrays-init.log b/src/test/ref/arrays-init.log index d4c38b02f..a5c1e9bca 100644 --- a/src/test/ref/arrays-init.log +++ b/src/test/ref/arrays-init.log @@ -166,10 +166,10 @@ main: { d: .text "cml" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) b) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN) ← *((const byte*) b) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) c+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) d+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) b) ← (byte) 'c' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← *((const byte*) b) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) c+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) d+(byte) 2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/asm-culling-jmp.log b/src/test/ref/asm-culling-jmp.log index cdaa2bdfe..a8f4bd63c 100644 --- a/src/test/ref/asm-culling-jmp.log +++ b/src/test/ref/asm-culling-jmp.log @@ -113,7 +113,7 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement asm { jmpqwe .byte0,25,51,76,102,128,153,179,204,230 qwe: lda#50 } always clobbers reg byte a -Statement [5] *((byte*) 1024) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((byte*) 1024) ← (byte) 'c' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/asm-mnemonic-names.log b/src/test/ref/asm-mnemonic-names.log index 2e48e5fa7..bdb7e6211 100644 --- a/src/test/ref/asm-mnemonic-names.log +++ b/src/test/ref/asm-mnemonic-names.log @@ -182,9 +182,9 @@ bne: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) lda) ← (const byte) main::jmp [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) lda) ← (const byte) main::jmp [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldaa jmpa bnea a: } always clobbers reg byte a -Statement [8] *((const byte*) lda+(byte) 1) ← (const byte) main::jmp [ ] ( main:2::bne:5 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) lda+(byte) 1) ← (const byte) main::jmp [ ] ( main:2::bne:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/asm-uses-0.log b/src/test/ref/asm-uses-0.log index 51a41ac26..9796f1f77 100644 --- a/src/test/ref/asm-uses-0.log +++ b/src/test/ref/asm-uses-0.log @@ -147,7 +147,7 @@ init: { REGISTER UPLIFT POTENTIAL REGISTERS Statement asm { jsrinit } always clobbers reg byte a reg byte x reg byte y -Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/assignment-chained.log b/src/test/ref/assignment-chained.log index 7bcd39560..f763ad0ea 100644 --- a/src/test/ref/assignment-chained.log +++ b/src/test/ref/assignment-chained.log @@ -138,7 +138,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#2 4.0 +(byte) main::a#2 22.0 Initial phi equivalence classes Added variable main::a#2 to live range equivalence class [ main::a#2 ] @@ -204,15 +204,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::screen+(byte) $28) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::screen+(byte) 1) ← (byte) 'm' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::screen+(byte) 2) ← (byte) 1+(byte) 'l' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::screen+(byte) $2a) ← (byte) 'l' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (byte) 'c' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::screen+(byte) $28) ← (byte) 'c' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen+(byte) 1) ← (byte) 'm' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::screen+(byte) 2) ← (byte) 1+(byte) 'l' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::screen+(byte) $2a) ← (byte) 'l' [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::a#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:2 [ main::a#2 ] +Uplift Scope [main] 22: zp[1]:2 [ main::a#2 ] Uplift Scope [] Uplifting [main] best 59 combination reg byte a [ main::a#2 ] @@ -299,7 +299,7 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (byte) main::a -(byte) main::a#2 reg byte a 4.0 +(byte) main::a#2 reg byte a 22.0 (const byte*) main::screen = (byte*) 1024 reg byte a [ main::a#2 ] diff --git a/src/test/ref/assignment-chained.sym b/src/test/ref/assignment-chained.sym index f9acbce93..ea89f2bd3 100644 --- a/src/test/ref/assignment-chained.sym +++ b/src/test/ref/assignment-chained.sym @@ -4,7 +4,7 @@ (void()) main() (label) main::@return (byte) main::a -(byte) main::a#2 reg byte a 4.0 +(byte) main::a#2 reg byte a 22.0 (const byte*) main::screen = (byte*) 1024 reg byte a [ main::a#2 ] diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log index efa085fae..21a9c615c 100644 --- a/src/test/ref/assignment-compound.log +++ b/src/test/ref/assignment-compound.log @@ -315,30 +315,30 @@ Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) screen2#0 = (byte*~) $0 (byte*) screen2#13 -Alias (byte) main::i#0 = (byte) main::i#12 -Alias (byte) main::a#0 = (byte) main::a#11 -Alias (byte*) screen2#10 = (byte*) screen2#3 (byte*) screen2#2 (byte*) screen2#5 (byte*) screen2#6 (byte*) screen2#7 (byte*) screen2#8 (byte*) screen2#9 (byte*) screen2#11 (byte*) screen2#12 (byte*) screen2#4 -Alias (byte) main::i#1 = (byte) main::i#13 -Alias (byte) main::a#1 = (byte) main::a#12 -Alias (byte) main::i#14 = (byte) main::i#2 -Alias (byte) main::a#13 = (byte) main::a#2 -Alias (byte) main::i#15 = (byte) main::i#3 -Alias (byte) main::a#14 = (byte) main::a#3 -Alias (byte) main::i#16 = (byte) main::i#4 -Alias (byte) main::a#15 = (byte) main::a#4 -Alias (byte) main::i#17 = (byte) main::i#5 -Alias (byte) main::a#16 = (byte) main::a#5 -Alias (byte) main::i#18 = (byte) main::i#6 -Alias (byte) main::a#17 = (byte) main::a#6 -Alias (byte) main::i#19 = (byte) main::i#7 -Alias (byte) main::a#18 = (byte) main::a#7 -Alias (byte) main::i#20 = (byte) main::i#8 -Alias (byte) main::a#19 = (byte) main::a#8 -Alias (byte) main::i#21 = (byte) main::i#9 -Alias (byte) main::a#20 = (byte) main::a#9 -Alias (byte) main::i#10 = (byte) main::i#22 -Alias (byte) test::i#11 = (byte) test::i#12 (byte) test::i#13 +Alias screen2#0 = $0 screen2#13 +Alias main::i#0 = main::i#12 +Alias main::a#0 = main::a#11 +Alias screen2#10 = screen2#3 screen2#2 screen2#5 screen2#6 screen2#7 screen2#8 screen2#9 screen2#11 screen2#12 screen2#4 +Alias main::i#1 = main::i#13 +Alias main::a#1 = main::a#12 +Alias main::i#14 = main::i#2 +Alias main::a#13 = main::a#2 +Alias main::i#15 = main::i#3 +Alias main::a#14 = main::a#3 +Alias main::i#16 = main::i#4 +Alias main::a#15 = main::a#4 +Alias main::i#17 = main::i#5 +Alias main::a#16 = main::a#5 +Alias main::i#18 = main::i#6 +Alias main::a#17 = main::a#6 +Alias main::i#19 = main::i#7 +Alias main::a#18 = main::a#7 +Alias main::i#20 = main::i#8 +Alias main::a#19 = main::a#8 +Alias main::i#21 = main::i#9 +Alias main::a#20 = main::a#9 +Alias main::i#10 = main::i#22 +Alias test::i#11 = test::i#12 test::i#13 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen2#10 (byte*) screen2#0 Identical Phi Values (byte*) screen2#1 (byte*) screen2#10 @@ -686,9 +686,9 @@ VARIABLE REGISTER WEIGHTS (byte*) screen2 (void()) test((byte) test::i , (byte) test::a) (byte) test::a -(byte) test::a#11 1.3333333333333333 +(byte) test::a#11 67.33333333333333 (byte) test::i -(byte) test::i#11 3.0 +(byte) test::i#11 151.5 Initial phi equivalence classes [ test::a#11 ] @@ -950,22 +950,22 @@ test: { ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a +Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] { } main:2::test:7 [ test::a#11 test::i#11 ] { } main:2::test:9 [ test::a#11 test::i#11 ] { } main:2::test:11 [ test::a#11 test::i#11 ] { } main:2::test:13 [ test::a#11 test::i#11 ] { } main:2::test:15 [ test::a#11 test::i#11 ] { } main:2::test:17 [ test::a#11 test::i#11 ] { } main:2::test:19 [ test::a#11 test::i#11 ] { } main:2::test:21 [ test::a#11 test::i#11 ] { } main:2::test:23 [ test::a#11 test::i#11 ] { } main:2::test:25 [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ test::a#11 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ test::i#11 ] -Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a -Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) screen1 + (byte) test::i#11) ← (byte) test::a#11 [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a -Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a -Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a -Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a +Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] { } main:2::test:7 [ test::i#11 ] { } main:2::test:9 [ test::i#11 ] { } main:2::test:11 [ test::i#11 ] { } main:2::test:13 [ test::i#11 ] { } main:2::test:15 [ test::i#11 ] { } main:2::test:17 [ test::i#11 ] { } main:2::test:19 [ test::i#11 ] { } main:2::test:21 [ test::i#11 ] { } main:2::test:23 [ test::i#11 ] { } main:2::test:25 [ test::i#11 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] { } main:2::test:7 [ ] { } main:2::test:9 [ ] { } main:2::test:11 [ ] { } main:2::test:13 [ ] { } main:2::test:15 [ ] { } main:2::test:17 [ ] { } main:2::test:19 [ ] { } main:2::test:21 [ ] { } main:2::test:23 [ ] { } main:2::test:25 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] { } main:2::test:7 [ ] { } main:2::test:9 [ ] { } main:2::test:11 [ ] { } main:2::test:13 [ ] { } main:2::test:15 [ ] { } main:2::test:17 [ ] { } main:2::test:19 [ ] { } main:2::test:21 [ ] { } main:2::test:23 [ ] { } main:2::test:25 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) screen1 + (byte) test::i#11) ← (byte) test::a#11 [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] { } main:2::test:7 [ test::a#11 test::i#11 ] { } main:2::test:9 [ test::a#11 test::i#11 ] { } main:2::test:11 [ test::a#11 test::i#11 ] { } main:2::test:13 [ test::a#11 test::i#11 ] { } main:2::test:15 [ test::a#11 test::i#11 ] { } main:2::test:17 [ test::a#11 test::i#11 ] { } main:2::test:19 [ test::a#11 test::i#11 ] { } main:2::test:21 [ test::a#11 test::i#11 ] { } main:2::test:23 [ test::a#11 test::i#11 ] { } main:2::test:25 [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] { } main:2::test:7 [ test::a#11 test::i#11 ] { } main:2::test:9 [ test::a#11 test::i#11 ] { } main:2::test:11 [ test::a#11 test::i#11 ] { } main:2::test:13 [ test::a#11 test::i#11 ] { } main:2::test:15 [ test::a#11 test::i#11 ] { } main:2::test:17 [ test::a#11 test::i#11 ] { } main:2::test:19 [ test::a#11 test::i#11 ] { } main:2::test:21 [ test::a#11 test::i#11 ] { } main:2::test:23 [ test::a#11 test::i#11 ] { } main:2::test:25 [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a +Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] { } main:2::test:7 [ test::i#11 ] { } main:2::test:9 [ test::i#11 ] { } main:2::test:11 [ test::i#11 ] { } main:2::test:13 [ test::i#11 ] { } main:2::test:15 [ test::i#11 ] { } main:2::test:17 [ test::i#11 ] { } main:2::test:19 [ test::i#11 ] { } main:2::test:21 [ test::i#11 ] { } main:2::test:23 [ test::i#11 ] { } main:2::test:25 [ test::i#11 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] { } main:2::test:7 [ ] { } main:2::test:9 [ ] { } main:2::test:11 [ ] { } main:2::test:13 [ ] { } main:2::test:15 [ ] { } main:2::test:17 [ ] { } main:2::test:19 [ ] { } main:2::test:21 [ ] { } main:2::test:23 [ ] { } main:2::test:25 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] { } main:2::test:7 [ ] { } main:2::test:9 [ ] { } main:2::test:11 [ ] { } main:2::test:13 [ ] { } main:2::test:15 [ ] { } main:2::test:17 [ ] { } main:2::test:19 [ ] { } main:2::test:21 [ ] { } main:2::test:23 [ ] { } main:2::test:25 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ test::a#11 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ test::i#11 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [test] 3: zp[1]:3 [ test::i#11 ] 1.33: zp[1]:2 [ test::a#11 ] +Uplift Scope [test] 151.5: zp[1]:3 [ test::i#11 ] 67.33: zp[1]:2 [ test::a#11 ] Uplift Scope [main] Uplift Scope [] @@ -1303,9 +1303,9 @@ FINAL SYMBOL TABLE (label) test::@2 (label) test::@return (byte) test::a -(byte) test::a#11 a zp[1]:2 1.3333333333333333 +(byte) test::a#11 a zp[1]:2 67.33333333333333 (byte) test::i -(byte) test::i#11 reg byte x 3.0 +(byte) test::i#11 reg byte x 151.5 zp[1]:2 [ test::a#11 ] reg byte x [ test::i#11 ] diff --git a/src/test/ref/assignment-compound.sym b/src/test/ref/assignment-compound.sym index b3ca43c2f..944dcafd3 100644 --- a/src/test/ref/assignment-compound.sym +++ b/src/test/ref/assignment-compound.sym @@ -27,9 +27,9 @@ (label) test::@2 (label) test::@return (byte) test::a -(byte) test::a#11 a zp[1]:2 1.3333333333333333 +(byte) test::a#11 a zp[1]:2 67.33333333333333 (byte) test::i -(byte) test::i#11 reg byte x 3.0 +(byte) test::i#11 reg byte x 151.5 zp[1]:2 [ test::a#11 ] reg byte x [ test::i#11 ] diff --git a/src/test/ref/bgblack.log b/src/test/ref/bgblack.log index 4a4922f5e..4663ca134 100644 --- a/src/test/ref/bgblack.log +++ b/src/test/ref/bgblack.log @@ -107,7 +107,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/bitmap-circle-2.log b/src/test/ref/bitmap-circle-2.log index 0bba802e0..2805a7948 100644 --- a/src/test/ref/bitmap-circle-2.log +++ b/src/test/ref/bitmap-circle-2.log @@ -652,49 +652,49 @@ Inferred type updated to signed word in (snumber~) plot::$8 ← (signed word) pl Inferred type updated to byte in (unumber~) plot::$10 ← (byte~) plot::$9 & (byte) 7 Inferred type updated to signed word in (snumber~) plot::$12 ← (signed word~) plot::$11 * (signed word) $140 Inferred type updated to signed byte in (snumber~) plot::$13 ← (signed word) plot::x#9 & (signed byte) 7 -Alias (signed word) main::i#2 = (signed word) main::i#3 (signed word) main::i#4 -Alias (signed word) circle::y#0 = (signed word) circle::r#1 -Alias (signed word) circle::p#0 = (signed word~) circle::$1 -Alias (signed word) circle::p#3 = (signed word) circle::p#6 (signed word) circle::p#4 (signed word) circle::p#5 -Alias (signed word) circle::x1#14 = (signed word) circle::x1#2 (signed word) circle::x1#3 (signed word) circle::x1#4 -Alias (signed word) circle::y#13 = (signed word) circle::y#2 (signed word) circle::y#14 (signed word) circle::y#3 -Alias (signed word) circle::xc#10 = (signed word) circle::xc#11 (signed word) circle::xc#12 (signed word) circle::xc#9 -Alias (signed word) circle::yc#10 = (signed word) circle::yc#11 (signed word) circle::yc#12 (signed word) circle::yc#9 -Alias (signed word) circle::p#1 = (signed word~) circle::$11 -Alias (signed word) circle::y#1 = (signed word~) circle::$4 -Alias (signed word) circle::p#2 = (signed word~) circle::$8 -Alias (signed word) plot::x#0 = (signed word~) circle::$12 -Alias (signed word) plot::y#0 = (signed word~) circle::$13 -Alias (signed word) circle::xc#1 = (signed word) circle::xc#2 (signed word) circle::xc#3 (signed word) circle::xc#4 (signed word) circle::xc#5 (signed word) circle::xc#6 (signed word) circle::xc#7 (signed word) circle::xc#8 (signed word) circle::xc#14 -Alias (signed word) circle::x1#10 = (signed word) circle::x1#6 (signed word) circle::x1#5 (signed word) circle::x1#7 (signed word) circle::x1#8 (signed word) circle::x1#9 (signed word) circle::x1#11 (signed word) circle::x1#12 (signed word) circle::x1#13 -Alias (signed word) circle::yc#1 = (signed word) circle::yc#2 (signed word) circle::yc#3 (signed word) circle::yc#4 (signed word) circle::yc#5 (signed word) circle::yc#6 (signed word) circle::yc#7 (signed word) circle::yc#8 (signed word) circle::yc#14 -Alias (signed word) circle::y#10 = (signed word) circle::y#5 (signed word) circle::y#4 (signed word) circle::y#6 (signed word) circle::y#7 (signed word) circle::y#8 (signed word) circle::y#9 (signed word) circle::y#11 (signed word) circle::y#12 -Alias (signed word) circle::p#10 = (signed word) circle::p#14 (signed word) circle::p#15 (signed word) circle::p#13 (signed word) circle::p#12 (signed word) circle::p#11 (signed word) circle::p#9 (signed word) circle::p#8 (signed word) circle::p#7 -Alias (signed word) plot::x#1 = (signed word~) circle::$15 -Alias (signed word) plot::y#1 = (signed word~) circle::$16 -Alias (signed word) plot::x#2 = (signed word~) circle::$18 -Alias (signed word) plot::y#2 = (signed word~) circle::$19 -Alias (signed word) plot::x#3 = (signed word~) circle::$21 -Alias (signed word) plot::y#3 = (signed word~) circle::$22 -Alias (signed word) plot::x#4 = (signed word~) circle::$24 -Alias (signed word) plot::y#4 = (signed word~) circle::$25 -Alias (signed word) plot::x#5 = (signed word~) circle::$27 -Alias (signed word) plot::y#5 = (signed word~) circle::$28 -Alias (signed word) plot::x#6 = (signed word~) circle::$30 -Alias (signed word) plot::y#6 = (signed word~) circle::$31 -Alias (signed word) plot::x#7 = (signed word~) circle::$33 -Alias (signed word) plot::y#7 = (signed word~) circle::$34 -Alias (signed word) plot::x#8 = (signed word) plot::x#9 -Alias (signed word) plot::y#8 = (signed word) plot::y#9 -Alias (byte*) fill::end#0 = (byte*~) fill::$0 -Alias (byte*) fill::addr#0 = (byte*) fill::start#2 -Alias (byte) fill::val#2 = (byte) fill::val#3 -Alias (byte*) fill::addr#2 = (byte*) fill::addr#3 -Alias (byte*) fill::end#1 = (byte*) fill::end#2 +Alias main::i#2 = main::i#3 main::i#4 +Alias circle::y#0 = circle::r#1 +Alias circle::p#0 = circle::$1 +Alias circle::p#3 = circle::p#6 circle::p#4 circle::p#5 +Alias circle::x1#14 = circle::x1#2 circle::x1#3 circle::x1#4 +Alias circle::y#13 = circle::y#2 circle::y#14 circle::y#3 +Alias circle::xc#10 = circle::xc#11 circle::xc#12 circle::xc#9 +Alias circle::yc#10 = circle::yc#11 circle::yc#12 circle::yc#9 +Alias circle::p#1 = circle::$11 +Alias circle::y#1 = circle::$4 +Alias circle::p#2 = circle::$8 +Alias plot::x#0 = circle::$12 +Alias plot::y#0 = circle::$13 +Alias circle::xc#1 = circle::xc#2 circle::xc#3 circle::xc#4 circle::xc#5 circle::xc#6 circle::xc#7 circle::xc#8 circle::xc#14 +Alias circle::x1#10 = circle::x1#6 circle::x1#5 circle::x1#7 circle::x1#8 circle::x1#9 circle::x1#11 circle::x1#12 circle::x1#13 +Alias circle::yc#1 = circle::yc#2 circle::yc#3 circle::yc#4 circle::yc#5 circle::yc#6 circle::yc#7 circle::yc#8 circle::yc#14 +Alias circle::y#10 = circle::y#5 circle::y#4 circle::y#6 circle::y#7 circle::y#8 circle::y#9 circle::y#11 circle::y#12 +Alias circle::p#10 = circle::p#14 circle::p#15 circle::p#13 circle::p#12 circle::p#11 circle::p#9 circle::p#8 circle::p#7 +Alias plot::x#1 = circle::$15 +Alias plot::y#1 = circle::$16 +Alias plot::x#2 = circle::$18 +Alias plot::y#2 = circle::$19 +Alias plot::x#3 = circle::$21 +Alias plot::y#3 = circle::$22 +Alias plot::x#4 = circle::$24 +Alias plot::y#4 = circle::$25 +Alias plot::x#5 = circle::$27 +Alias plot::y#5 = circle::$28 +Alias plot::x#6 = circle::$30 +Alias plot::y#6 = circle::$31 +Alias plot::x#7 = circle::$33 +Alias plot::y#7 = circle::$34 +Alias plot::x#8 = plot::x#9 +Alias plot::y#8 = plot::y#9 +Alias fill::end#0 = fill::$0 +Alias fill::addr#0 = fill::start#2 +Alias fill::val#2 = fill::val#3 +Alias fill::addr#2 = fill::addr#3 +Alias fill::end#1 = fill::end#2 Successful SSA optimization Pass2AliasElimination -Alias (signed word) circle::xc#1 = (signed word) circle::xc#10 -Alias (signed word) circle::x1#10 = (signed word) circle::x1#14 -Alias (signed word) circle::yc#1 = (signed word) circle::yc#10 +Alias circle::xc#1 = circle::xc#10 +Alias circle::x1#10 = circle::x1#14 +Alias circle::yc#1 = circle::yc#10 Successful SSA optimization Pass2AliasElimination Identical Phi Values (signed word) circle::y#0 (signed word) circle::r#0 Identical Phi Values (signed word) circle::xc#13 (signed word) circle::xc#0 @@ -765,7 +765,7 @@ Constant inlined main::i#0 = (signed word) 1 Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19 Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8 Successful SSA optimization Pass2ConstantInlining -Alias (signed word~) plot::$12 = (signed word~) plot::$17 +Alias plot::$12 = plot::$17 Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of @begin Adding NOP phi() at start of @8 @@ -1007,79 +1007,79 @@ fill::@2: scope:[fill] from fill::@1 VARIABLE REGISTER WEIGHTS (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$0 4.0 -(signed word~) circle::$10 202.0 -(signed word~) circle::$5 202.0 -(signed word~) circle::$6 202.0 -(signed word~) circle::$7 202.0 -(signed word~) circle::$9 202.0 +(signed word~) circle::$0 2002.0 +(signed word~) circle::$10 200002.0 +(signed word~) circle::$5 200002.0 +(signed word~) circle::$6 200002.0 +(signed word~) circle::$7 200002.0 +(signed word~) circle::$9 200002.0 (signed word) circle::p -(signed word) circle::p#0 4.0 -(signed word) circle::p#1 202.0 -(signed word) circle::p#10 11.653846153846153 -(signed word) circle::p#2 202.0 -(signed word) circle::p#3 58.00000000000001 +(signed word) circle::p#0 2002.0 +(signed word) circle::p#1 200002.0 +(signed word) circle::p#10 11538.576923076922 +(signed word) circle::p#2 200002.0 +(signed word) circle::p#3 57286.42857142857 (signed word) circle::r -(signed word) circle::r#0 5.0 +(signed word) circle::r#0 701.0 (signed word) circle::x1 -(signed word) circle::x1#1 202.0 -(signed word) circle::x1#10 36.47222222222223 +(signed word) circle::x1#1 200002.0 +(signed word) circle::x1#10 36111.47222222222 (signed word) circle::xc (signed word) circle::y -(signed word) circle::y#1 60.599999999999994 -(signed word) circle::y#10 42.73076923076923 -(signed word) circle::y#13 67.66666666666666 +(signed word) circle::y#1 60000.600000000006 +(signed word) circle::y#10 42308.11538461538 +(signed word) circle::y#13 66834.16666666666 (signed word) circle::yc (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) (byte*) fill::addr -(byte*) fill::addr#0 2.0 -(byte*) fill::addr#1 22.0 -(byte*) fill::addr#2 15.333333333333332 +(byte*) fill::addr#0 101.0 +(byte*) fill::addr#1 2002.0 +(byte*) fill::addr#2 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 2.6 +(byte*) fill::end#0 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 2.0 +(signed word) fill::size#2 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 1.8333333333333333 +(byte) fill::val#4 166.83333333333334 (void()) main() (signed word) main::i -(signed word) main::i#1 22.0 -(signed word) main::i#2 11.0 +(signed word) main::i#1 202.0 +(signed word) main::i#2 101.0 (void()) plot((signed word) plot::x , (signed word) plot::y) -(byte~) plot::$10 4.0 -(signed word~) plot::$11 3.0 -(signed word~) plot::$12 4.0 -(signed byte~) plot::$13 4.0 -(byte~) plot::$14 4.0 -(signed word~) plot::$15 4.0 -(signed word~) plot::$16 4.0 -(signed word~) plot::$8 4.0 -(byte~) plot::$9 4.0 +(byte~) plot::$10 2000002.0 +(signed word~) plot::$11 1500001.5 +(signed word~) plot::$12 2000002.0 +(signed byte~) plot::$13 2000002.0 +(byte~) plot::$14 2000002.0 +(signed word~) plot::$15 2000002.0 +(signed word~) plot::$16 2000002.0 +(signed word~) plot::$8 2000002.0 +(byte~) plot::$9 2000002.0 (byte*) plot::location -(byte*) plot::location#1 1.3333333333333333 -(byte*) plot::location#2 0.8 -(byte*) plot::location#3 2.0 +(byte*) plot::location#1 666667.3333333334 +(byte*) plot::location#2 400000.4 +(byte*) plot::location#3 1000001.0 (signed word) plot::x -(signed word) plot::x#0 101.0 -(signed word) plot::x#1 101.0 -(signed word) plot::x#2 101.0 -(signed word) plot::x#3 101.0 -(signed word) plot::x#4 101.0 -(signed word) plot::x#5 101.0 -(signed word) plot::x#6 101.0 -(signed word) plot::x#7 101.0 -(signed word) plot::x#8 54.4 +(signed word) plot::x#0 100001.0 +(signed word) plot::x#1 100001.0 +(signed word) plot::x#2 100001.0 +(signed word) plot::x#3 100001.0 +(signed word) plot::x#4 100001.0 +(signed word) plot::x#5 100001.0 +(signed word) plot::x#6 100001.0 +(signed word) plot::x#7 100001.0 +(signed word) plot::x#8 320000.80000000005 (signed word) plot::y -(signed word) plot::y#0 202.0 -(signed word) plot::y#1 202.0 -(signed word) plot::y#2 202.0 -(signed word) plot::y#3 202.0 -(signed word) plot::y#4 202.0 -(signed word) plot::y#5 202.0 -(signed word) plot::y#6 202.0 -(signed word) plot::y#7 202.0 -(signed word) plot::y#8 81.60000000000001 +(signed word) plot::y#0 200002.0 +(signed word) plot::y#1 200002.0 +(signed word) plot::y#2 200002.0 +(signed word) plot::y#3 200002.0 +(signed word) plot::y#4 200002.0 +(signed word) plot::y#5 200002.0 +(signed word) plot::y#6 200002.0 +(signed word) plot::y#7 200002.0 +(signed word) plot::y#8 480001.19999999995 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -1872,114 +1872,112 @@ fill: { bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a -Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a -Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a -Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a -Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a -Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a -Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a -Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a -Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a -Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a -Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a -Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a -Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a -Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a -Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a -Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a -Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a -Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a -Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a -Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a -Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a -Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a -Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a -Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a -Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a -Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a -Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a -Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a -Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a -Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a -Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a -Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a -Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a -Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a -Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a -Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a -Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a -Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y -Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a +Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y +Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] { } main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ fill::val#4 ] -Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a -Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a +Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 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[1]:16 [ fill::val#4 ] -Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a -Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a -Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a -Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a -Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a -Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a -Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a -Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a -Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a -Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a -Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a -Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a -Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a -Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a -Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a -Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a -Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a -Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a -Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a -Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a -Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a -Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a -Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a -Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a -Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a -Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a -Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a -Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a -Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a -Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a -Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a -Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a -Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a -Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a -Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a -Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a -Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a -Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a -Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y -Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a -Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a -Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a +Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y +Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] { } main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a +Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a +Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ circle::x1#10 circle::x1#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:6 , @@ -2010,16 +2008,16 @@ Potential registers zp[1]:50 [ plot::$14 ] : zp[1]:50 , reg byte a , reg byte x Potential registers zp[2]:51 [ fill::end#0 ] : zp[2]:51 , REGISTER UPLIFT SCOPES -Uplift Scope [plot] 1,697.6: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 862.4: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 4: zp[2]:31 [ plot::$8 ] 4: zp[1]:35 [ plot::$9 ] 4: zp[1]:36 [ plot::$10 ] 4: zp[2]:41 [ plot::$15 ] 4: zp[2]:43 [ plot::$16 ] 4: zp[2]:45 [ plot::$12 ] 4: zp[1]:49 [ plot::$13 ] 4: zp[1]:50 [ plot::$14 ] 3: zp[2]:39 [ plot::$11 ] 2: zp[2]:47 [ plot::location#3 ] 1.33: zp[2]:33 [ plot::location#1 ] 0.8: zp[2]:37 [ plot::location#2 ] -Uplift Scope [circle] 477.65: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:21 [ circle::$5 ] 202: zp[2]:23 [ circle::$6 ] 202: zp[2]:25 [ circle::$7 ] 202: zp[2]:27 [ circle::$9 ] 202: zp[2]:29 [ circle::$10 ] 176: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 4: zp[2]:19 [ circle::$0 ] -Uplift Scope [fill] 39.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp[2]:51 [ fill::end#0 ] 2: zp[2]:14 [ fill::size#2 ] 1.83: zp[1]:16 [ fill::val#4 ] -Uplift Scope [main] 33: zp[2]:2 [ main::i#2 main::i#1 ] +Uplift Scope [plot] 2,080,017.2: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 2,000,002: zp[2]:31 [ plot::$8 ] 2,000,002: zp[1]:35 [ plot::$9 ] 2,000,002: zp[1]:36 [ plot::$10 ] 2,000,002: zp[2]:41 [ plot::$15 ] 2,000,002: zp[2]:43 [ plot::$16 ] 2,000,002: zp[2]:45 [ plot::$12 ] 2,000,002: zp[1]:49 [ plot::$13 ] 2,000,002: zp[1]:50 [ plot::$14 ] 1,500,001.5: zp[2]:39 [ plot::$11 ] 1,120,008.8: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 1,000,001: zp[2]:47 [ plot::location#3 ] 666,667.33: zp[2]:33 [ plot::location#1 ] 400,000.4: zp[2]:37 [ plot::location#2 ] +Uplift Scope [circle] 470,831.01: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 236,113.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 200,002: zp[2]:21 [ circle::$5 ] 200,002: zp[2]:23 [ circle::$6 ] 200,002: zp[2]:25 [ circle::$7 ] 200,002: zp[2]:27 [ circle::$9 ] 200,002: zp[2]:29 [ circle::$10 ] 169,843.88: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 2,002: zp[2]:19 [ circle::$0 ] +Uplift Scope [fill] 3,471.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:51 [ fill::end#0 ] 166.83: zp[1]:16 [ fill::val#4 ] 101: zp[2]:14 [ fill::size#2 ] +Uplift Scope [main] 303: zp[2]:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ] +Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ] Limited combination testing to 100 combinations of 256 possible. Uplifting [circle] best 53688 combination zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:4 [ circle::x1#10 circle::x1#1 ] zp[2]:21 [ circle::$5 ] zp[2]:23 [ circle::$6 ] zp[2]:25 [ circle::$7 ] zp[2]:27 [ circle::$9 ] zp[2]:29 [ circle::$10 ] zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:19 [ circle::$0 ] -Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] zp[2]:14 [ fill::size#2 ] reg byte x [ fill::val#4 ] +Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:14 [ fill::size#2 ] Uplifting [main] best 53672 combination zp[2]:2 [ main::i#2 main::i#1 ] Uplifting [] best 53672 combination Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:25 [ circle::$7 ] ] - score: 2 @@ -2826,12 +2824,12 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$0 zp[2]:4 4.0 -(signed word~) circle::$10 zp[2]:4 202.0 -(signed word~) circle::$5 zp[2]:10 202.0 -(signed word~) circle::$6 zp[2]:10 202.0 -(signed word~) circle::$7 zp[2]:4 202.0 -(signed word~) circle::$9 zp[2]:12 202.0 +(signed word~) circle::$0 zp[2]:4 2002.0 +(signed word~) circle::$10 zp[2]:4 200002.0 +(signed word~) circle::$5 zp[2]:10 200002.0 +(signed word~) circle::$6 zp[2]:10 200002.0 +(signed word~) circle::$7 zp[2]:4 200002.0 +(signed word~) circle::$9 zp[2]:12 200002.0 (label) circle::@1 (label) circle::@10 (label) circle::@11 @@ -2847,22 +2845,22 @@ FINAL SYMBOL TABLE (label) circle::@9 (label) circle::@return (signed word) circle::p -(signed word) circle::p#0 p zp[2]:4 4.0 -(signed word) circle::p#1 p zp[2]:4 202.0 -(signed word) circle::p#10 p zp[2]:4 11.653846153846153 -(signed word) circle::p#2 p zp[2]:4 202.0 -(signed word) circle::p#3 p zp[2]:4 58.00000000000001 +(signed word) circle::p#0 p zp[2]:4 2002.0 +(signed word) circle::p#1 p zp[2]:4 200002.0 +(signed word) circle::p#10 p zp[2]:4 11538.576923076922 +(signed word) circle::p#2 p zp[2]:4 200002.0 +(signed word) circle::p#3 p zp[2]:4 57286.42857142857 (signed word) circle::r -(signed word) circle::r#0 r zp[2]:8 5.0 +(signed word) circle::r#0 r zp[2]:8 701.0 (signed word) circle::x1 -(signed word) circle::x1#1 x1 zp[2]:6 202.0 -(signed word) circle::x1#10 x1 zp[2]:6 36.47222222222223 +(signed word) circle::x1#1 x1 zp[2]:6 200002.0 +(signed word) circle::x1#10 x1 zp[2]:6 36111.47222222222 (signed word) circle::xc (const signed word) circle::xc#0 xc = (signed word) $a0 (signed word) circle::y -(signed word) circle::y#1 y zp[2]:8 60.599999999999994 -(signed word) circle::y#10 y zp[2]:8 42.73076923076923 -(signed word) circle::y#13 y zp[2]:8 67.66666666666666 +(signed word) circle::y#1 y zp[2]:8 60000.600000000006 +(signed word) circle::y#10 y zp[2]:8 42308.11538461538 +(signed word) circle::y#13 y zp[2]:8 66834.16666666666 (signed word) circle::yc (const signed word) circle::yc#0 yc = (signed byte) $64 (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) @@ -2870,16 +2868,16 @@ FINAL SYMBOL TABLE (label) fill::@2 (label) fill::@return (byte*) fill::addr -(byte*) fill::addr#0 addr zp[2]:8 2.0 -(byte*) fill::addr#1 addr zp[2]:8 22.0 -(byte*) fill::addr#2 addr zp[2]:8 15.333333333333332 +(byte*) fill::addr#0 addr zp[2]:8 101.0 +(byte*) fill::addr#1 addr zp[2]:8 2002.0 +(byte*) fill::addr#2 addr zp[2]:8 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 end zp[2]:6 2.6 +(byte*) fill::end#0 end zp[2]:6 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 size zp[2]:6 2.0 +(signed word) fill::size#2 size zp[2]:6 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 reg byte x 1.8333333333333333 +(byte) fill::val#4 reg byte x 166.83333333333334 (void()) main() (label) main::@1 (label) main::@2 @@ -2888,47 +2886,47 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (signed word) main::i -(signed word) main::i#1 i zp[2]:2 22.0 -(signed word) main::i#2 i zp[2]:2 11.0 +(signed word) main::i#1 i zp[2]:2 202.0 +(signed word) main::i#2 i zp[2]:2 101.0 (void()) plot((signed word) plot::x , (signed word) plot::y) -(byte~) plot::$10 reg byte a 4.0 -(signed word~) plot::$11 zp[2]:12 3.0 -(signed word~) plot::$12 zp[2]:16 4.0 -(signed byte~) plot::$13 reg byte a 4.0 -(byte~) plot::$14 reg byte a 4.0 -(signed word~) plot::$15 zp[2]:16 4.0 -(signed word~) plot::$16 zp[2]:16 4.0 -(signed word~) plot::$8 zp[2]:14 4.0 -(byte~) plot::$9 reg byte a 4.0 +(byte~) plot::$10 reg byte a 2000002.0 +(signed word~) plot::$11 zp[2]:12 1500001.5 +(signed word~) plot::$12 zp[2]:16 2000002.0 +(signed byte~) plot::$13 reg byte a 2000002.0 +(byte~) plot::$14 reg byte a 2000002.0 +(signed word~) plot::$15 zp[2]:16 2000002.0 +(signed word~) plot::$16 zp[2]:16 2000002.0 +(signed word~) plot::$8 zp[2]:14 2000002.0 +(byte~) plot::$9 reg byte a 2000002.0 (label) plot::@1 (label) plot::@2 (label) plot::@3 (label) plot::@4 (label) plot::@return (byte*) plot::location -(byte*) plot::location#1 location zp[2]:14 1.3333333333333333 -(byte*) plot::location#2 location zp[2]:14 0.8 -(byte*) plot::location#3 location zp[2]:14 2.0 +(byte*) plot::location#1 location zp[2]:14 666667.3333333334 +(byte*) plot::location#2 location zp[2]:14 400000.4 +(byte*) plot::location#3 location zp[2]:14 1000001.0 (signed word) plot::x -(signed word) plot::x#0 x zp[2]:10 101.0 -(signed word) plot::x#1 x zp[2]:10 101.0 -(signed word) plot::x#2 x zp[2]:10 101.0 -(signed word) plot::x#3 x zp[2]:10 101.0 -(signed word) plot::x#4 x zp[2]:10 101.0 -(signed word) plot::x#5 x zp[2]:10 101.0 -(signed word) plot::x#6 x zp[2]:10 101.0 -(signed word) plot::x#7 x zp[2]:10 101.0 -(signed word) plot::x#8 x zp[2]:10 54.4 +(signed word) plot::x#0 x zp[2]:10 100001.0 +(signed word) plot::x#1 x zp[2]:10 100001.0 +(signed word) plot::x#2 x zp[2]:10 100001.0 +(signed word) plot::x#3 x zp[2]:10 100001.0 +(signed word) plot::x#4 x zp[2]:10 100001.0 +(signed word) plot::x#5 x zp[2]:10 100001.0 +(signed word) plot::x#6 x zp[2]:10 100001.0 +(signed word) plot::x#7 x zp[2]:10 100001.0 +(signed word) plot::x#8 x zp[2]:10 320000.80000000005 (signed word) plot::y -(signed word) plot::y#0 y zp[2]:12 202.0 -(signed word) plot::y#1 y zp[2]:12 202.0 -(signed word) plot::y#2 y zp[2]:12 202.0 -(signed word) plot::y#3 y zp[2]:12 202.0 -(signed word) plot::y#4 y zp[2]:12 202.0 -(signed word) plot::y#5 y zp[2]:12 202.0 -(signed word) plot::y#6 y zp[2]:12 202.0 -(signed word) plot::y#7 y zp[2]:12 202.0 -(signed word) plot::y#8 y zp[2]:12 81.60000000000001 +(signed word) plot::y#0 y zp[2]:12 200002.0 +(signed word) plot::y#1 y zp[2]:12 200002.0 +(signed word) plot::y#2 y zp[2]:12 200002.0 +(signed word) plot::y#3 y zp[2]:12 200002.0 +(signed word) plot::y#4 y zp[2]:12 200002.0 +(signed word) plot::y#5 y zp[2]:12 200002.0 +(signed word) plot::y#6 y zp[2]:12 200002.0 +(signed word) plot::y#7 y zp[2]:12 200002.0 +(signed word) plot::y#8 y zp[2]:12 480001.19999999995 zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ] diff --git a/src/test/ref/bitmap-circle-2.sym b/src/test/ref/bitmap-circle-2.sym index b8f20f347..08559b9bf 100644 --- a/src/test/ref/bitmap-circle-2.sym +++ b/src/test/ref/bitmap-circle-2.sym @@ -12,12 +12,12 @@ (const byte) VIC_RSEL = (byte) 8 (const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$0 zp[2]:4 4.0 -(signed word~) circle::$10 zp[2]:4 202.0 -(signed word~) circle::$5 zp[2]:10 202.0 -(signed word~) circle::$6 zp[2]:10 202.0 -(signed word~) circle::$7 zp[2]:4 202.0 -(signed word~) circle::$9 zp[2]:12 202.0 +(signed word~) circle::$0 zp[2]:4 2002.0 +(signed word~) circle::$10 zp[2]:4 200002.0 +(signed word~) circle::$5 zp[2]:10 200002.0 +(signed word~) circle::$6 zp[2]:10 200002.0 +(signed word~) circle::$7 zp[2]:4 200002.0 +(signed word~) circle::$9 zp[2]:12 200002.0 (label) circle::@1 (label) circle::@10 (label) circle::@11 @@ -33,22 +33,22 @@ (label) circle::@9 (label) circle::@return (signed word) circle::p -(signed word) circle::p#0 p zp[2]:4 4.0 -(signed word) circle::p#1 p zp[2]:4 202.0 -(signed word) circle::p#10 p zp[2]:4 11.653846153846153 -(signed word) circle::p#2 p zp[2]:4 202.0 -(signed word) circle::p#3 p zp[2]:4 58.00000000000001 +(signed word) circle::p#0 p zp[2]:4 2002.0 +(signed word) circle::p#1 p zp[2]:4 200002.0 +(signed word) circle::p#10 p zp[2]:4 11538.576923076922 +(signed word) circle::p#2 p zp[2]:4 200002.0 +(signed word) circle::p#3 p zp[2]:4 57286.42857142857 (signed word) circle::r -(signed word) circle::r#0 r zp[2]:8 5.0 +(signed word) circle::r#0 r zp[2]:8 701.0 (signed word) circle::x1 -(signed word) circle::x1#1 x1 zp[2]:6 202.0 -(signed word) circle::x1#10 x1 zp[2]:6 36.47222222222223 +(signed word) circle::x1#1 x1 zp[2]:6 200002.0 +(signed word) circle::x1#10 x1 zp[2]:6 36111.47222222222 (signed word) circle::xc (const signed word) circle::xc#0 xc = (signed word) $a0 (signed word) circle::y -(signed word) circle::y#1 y zp[2]:8 60.599999999999994 -(signed word) circle::y#10 y zp[2]:8 42.73076923076923 -(signed word) circle::y#13 y zp[2]:8 67.66666666666666 +(signed word) circle::y#1 y zp[2]:8 60000.600000000006 +(signed word) circle::y#10 y zp[2]:8 42308.11538461538 +(signed word) circle::y#13 y zp[2]:8 66834.16666666666 (signed word) circle::yc (const signed word) circle::yc#0 yc = (signed byte) $64 (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) @@ -56,16 +56,16 @@ (label) fill::@2 (label) fill::@return (byte*) fill::addr -(byte*) fill::addr#0 addr zp[2]:8 2.0 -(byte*) fill::addr#1 addr zp[2]:8 22.0 -(byte*) fill::addr#2 addr zp[2]:8 15.333333333333332 +(byte*) fill::addr#0 addr zp[2]:8 101.0 +(byte*) fill::addr#1 addr zp[2]:8 2002.0 +(byte*) fill::addr#2 addr zp[2]:8 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 end zp[2]:6 2.6 +(byte*) fill::end#0 end zp[2]:6 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 size zp[2]:6 2.0 +(signed word) fill::size#2 size zp[2]:6 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 reg byte x 1.8333333333333333 +(byte) fill::val#4 reg byte x 166.83333333333334 (void()) main() (label) main::@1 (label) main::@2 @@ -74,47 +74,47 @@ (label) main::@5 (label) main::@6 (signed word) main::i -(signed word) main::i#1 i zp[2]:2 22.0 -(signed word) main::i#2 i zp[2]:2 11.0 +(signed word) main::i#1 i zp[2]:2 202.0 +(signed word) main::i#2 i zp[2]:2 101.0 (void()) plot((signed word) plot::x , (signed word) plot::y) -(byte~) plot::$10 reg byte a 4.0 -(signed word~) plot::$11 zp[2]:12 3.0 -(signed word~) plot::$12 zp[2]:16 4.0 -(signed byte~) plot::$13 reg byte a 4.0 -(byte~) plot::$14 reg byte a 4.0 -(signed word~) plot::$15 zp[2]:16 4.0 -(signed word~) plot::$16 zp[2]:16 4.0 -(signed word~) plot::$8 zp[2]:14 4.0 -(byte~) plot::$9 reg byte a 4.0 +(byte~) plot::$10 reg byte a 2000002.0 +(signed word~) plot::$11 zp[2]:12 1500001.5 +(signed word~) plot::$12 zp[2]:16 2000002.0 +(signed byte~) plot::$13 reg byte a 2000002.0 +(byte~) plot::$14 reg byte a 2000002.0 +(signed word~) plot::$15 zp[2]:16 2000002.0 +(signed word~) plot::$16 zp[2]:16 2000002.0 +(signed word~) plot::$8 zp[2]:14 2000002.0 +(byte~) plot::$9 reg byte a 2000002.0 (label) plot::@1 (label) plot::@2 (label) plot::@3 (label) plot::@4 (label) plot::@return (byte*) plot::location -(byte*) plot::location#1 location zp[2]:14 1.3333333333333333 -(byte*) plot::location#2 location zp[2]:14 0.8 -(byte*) plot::location#3 location zp[2]:14 2.0 +(byte*) plot::location#1 location zp[2]:14 666667.3333333334 +(byte*) plot::location#2 location zp[2]:14 400000.4 +(byte*) plot::location#3 location zp[2]:14 1000001.0 (signed word) plot::x -(signed word) plot::x#0 x zp[2]:10 101.0 -(signed word) plot::x#1 x zp[2]:10 101.0 -(signed word) plot::x#2 x zp[2]:10 101.0 -(signed word) plot::x#3 x zp[2]:10 101.0 -(signed word) plot::x#4 x zp[2]:10 101.0 -(signed word) plot::x#5 x zp[2]:10 101.0 -(signed word) plot::x#6 x zp[2]:10 101.0 -(signed word) plot::x#7 x zp[2]:10 101.0 -(signed word) plot::x#8 x zp[2]:10 54.4 +(signed word) plot::x#0 x zp[2]:10 100001.0 +(signed word) plot::x#1 x zp[2]:10 100001.0 +(signed word) plot::x#2 x zp[2]:10 100001.0 +(signed word) plot::x#3 x zp[2]:10 100001.0 +(signed word) plot::x#4 x zp[2]:10 100001.0 +(signed word) plot::x#5 x zp[2]:10 100001.0 +(signed word) plot::x#6 x zp[2]:10 100001.0 +(signed word) plot::x#7 x zp[2]:10 100001.0 +(signed word) plot::x#8 x zp[2]:10 320000.80000000005 (signed word) plot::y -(signed word) plot::y#0 y zp[2]:12 202.0 -(signed word) plot::y#1 y zp[2]:12 202.0 -(signed word) plot::y#2 y zp[2]:12 202.0 -(signed word) plot::y#3 y zp[2]:12 202.0 -(signed word) plot::y#4 y zp[2]:12 202.0 -(signed word) plot::y#5 y zp[2]:12 202.0 -(signed word) plot::y#6 y zp[2]:12 202.0 -(signed word) plot::y#7 y zp[2]:12 202.0 -(signed word) plot::y#8 y zp[2]:12 81.60000000000001 +(signed word) plot::y#0 y zp[2]:12 200002.0 +(signed word) plot::y#1 y zp[2]:12 200002.0 +(signed word) plot::y#2 y zp[2]:12 200002.0 +(signed word) plot::y#3 y zp[2]:12 200002.0 +(signed word) plot::y#4 y zp[2]:12 200002.0 +(signed word) plot::y#5 y zp[2]:12 200002.0 +(signed word) plot::y#6 y zp[2]:12 200002.0 +(signed word) plot::y#7 y zp[2]:12 200002.0 +(signed word) plot::y#8 y zp[2]:12 480001.19999999995 zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ] diff --git a/src/test/ref/bitmap-circle.log b/src/test/ref/bitmap-circle.log index 52e3506a9..0e42d83fb 100644 --- a/src/test/ref/bitmap-circle.log +++ b/src/test/ref/bitmap-circle.log @@ -588,46 +588,46 @@ Inferred type updated to signed word in (snumber~) plot::$0 ← (signed word) pl Inferred type updated to byte in (unumber~) plot::$2 ← (byte~) plot::$1 & (byte) 7 Inferred type updated to signed word in (snumber~) plot::$4 ← (signed word~) plot::$3 * (signed word) $140 Inferred type updated to signed byte in (snumber~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 -Alias (signed word) circle::y#0 = (signed word) circle::r#1 -Alias (signed word) circle::p#0 = (signed word~) circle::$1 -Alias (signed word) circle::p#3 = (signed word) circle::p#6 (signed word) circle::p#4 (signed word) circle::p#5 -Alias (signed word) circle::x1#14 = (signed word) circle::x1#2 (signed word) circle::x1#3 (signed word) circle::x1#4 -Alias (signed word) circle::y#13 = (signed word) circle::y#2 (signed word) circle::y#14 (signed word) circle::y#3 -Alias (signed word) circle::xc#10 = (signed word) circle::xc#11 (signed word) circle::xc#12 (signed word) circle::xc#9 -Alias (signed word) circle::yc#10 = (signed word) circle::yc#11 (signed word) circle::yc#12 (signed word) circle::yc#9 -Alias (signed word) circle::p#1 = (signed word~) circle::$11 -Alias (signed word) circle::y#1 = (signed word~) circle::$4 -Alias (signed word) circle::p#2 = (signed word~) circle::$8 -Alias (signed word) plot::x#0 = (signed word~) circle::$12 -Alias (signed word) plot::y#0 = (signed word~) circle::$13 -Alias (signed word) circle::xc#1 = (signed word) circle::xc#2 (signed word) circle::xc#3 (signed word) circle::xc#4 (signed word) circle::xc#5 (signed word) circle::xc#6 (signed word) circle::xc#7 (signed word) circle::xc#8 (signed word) circle::xc#14 -Alias (signed word) circle::x1#10 = (signed word) circle::x1#6 (signed word) circle::x1#5 (signed word) circle::x1#7 (signed word) circle::x1#8 (signed word) circle::x1#9 (signed word) circle::x1#11 (signed word) circle::x1#12 (signed word) circle::x1#13 -Alias (signed word) circle::yc#1 = (signed word) circle::yc#2 (signed word) circle::yc#3 (signed word) circle::yc#4 (signed word) circle::yc#5 (signed word) circle::yc#6 (signed word) circle::yc#7 (signed word) circle::yc#8 (signed word) circle::yc#14 -Alias (signed word) circle::y#10 = (signed word) circle::y#5 (signed word) circle::y#4 (signed word) circle::y#6 (signed word) circle::y#7 (signed word) circle::y#8 (signed word) circle::y#9 (signed word) circle::y#11 (signed word) circle::y#12 -Alias (signed word) circle::p#10 = (signed word) circle::p#14 (signed word) circle::p#15 (signed word) circle::p#13 (signed word) circle::p#12 (signed word) circle::p#11 (signed word) circle::p#9 (signed word) circle::p#8 (signed word) circle::p#7 -Alias (signed word) plot::x#1 = (signed word~) circle::$15 -Alias (signed word) plot::y#1 = (signed word~) circle::$16 -Alias (signed word) plot::x#2 = (signed word~) circle::$18 -Alias (signed word) plot::y#2 = (signed word~) circle::$19 -Alias (signed word) plot::x#3 = (signed word~) circle::$21 -Alias (signed word) plot::y#3 = (signed word~) circle::$22 -Alias (signed word) plot::x#4 = (signed word~) circle::$24 -Alias (signed word) plot::y#4 = (signed word~) circle::$25 -Alias (signed word) plot::x#5 = (signed word~) circle::$27 -Alias (signed word) plot::y#5 = (signed word~) circle::$28 -Alias (signed word) plot::x#6 = (signed word~) circle::$30 -Alias (signed word) plot::y#6 = (signed word~) circle::$31 -Alias (signed word) plot::x#7 = (signed word~) circle::$33 -Alias (signed word) plot::y#7 = (signed word~) circle::$34 -Alias (byte*) fill::end#0 = (byte*~) fill::$0 -Alias (byte*) fill::addr#0 = (byte*) fill::start#2 -Alias (byte) fill::val#2 = (byte) fill::val#3 -Alias (byte*) fill::addr#2 = (byte*) fill::addr#3 -Alias (byte*) fill::end#1 = (byte*) fill::end#2 +Alias circle::y#0 = circle::r#1 +Alias circle::p#0 = circle::$1 +Alias circle::p#3 = circle::p#6 circle::p#4 circle::p#5 +Alias circle::x1#14 = circle::x1#2 circle::x1#3 circle::x1#4 +Alias circle::y#13 = circle::y#2 circle::y#14 circle::y#3 +Alias circle::xc#10 = circle::xc#11 circle::xc#12 circle::xc#9 +Alias circle::yc#10 = circle::yc#11 circle::yc#12 circle::yc#9 +Alias circle::p#1 = circle::$11 +Alias circle::y#1 = circle::$4 +Alias circle::p#2 = circle::$8 +Alias plot::x#0 = circle::$12 +Alias plot::y#0 = circle::$13 +Alias circle::xc#1 = circle::xc#2 circle::xc#3 circle::xc#4 circle::xc#5 circle::xc#6 circle::xc#7 circle::xc#8 circle::xc#14 +Alias circle::x1#10 = circle::x1#6 circle::x1#5 circle::x1#7 circle::x1#8 circle::x1#9 circle::x1#11 circle::x1#12 circle::x1#13 +Alias circle::yc#1 = circle::yc#2 circle::yc#3 circle::yc#4 circle::yc#5 circle::yc#6 circle::yc#7 circle::yc#8 circle::yc#14 +Alias circle::y#10 = circle::y#5 circle::y#4 circle::y#6 circle::y#7 circle::y#8 circle::y#9 circle::y#11 circle::y#12 +Alias circle::p#10 = circle::p#14 circle::p#15 circle::p#13 circle::p#12 circle::p#11 circle::p#9 circle::p#8 circle::p#7 +Alias plot::x#1 = circle::$15 +Alias plot::y#1 = circle::$16 +Alias plot::x#2 = circle::$18 +Alias plot::y#2 = circle::$19 +Alias plot::x#3 = circle::$21 +Alias plot::y#3 = circle::$22 +Alias plot::x#4 = circle::$24 +Alias plot::y#4 = circle::$25 +Alias plot::x#5 = circle::$27 +Alias plot::y#5 = circle::$28 +Alias plot::x#6 = circle::$30 +Alias plot::y#6 = circle::$31 +Alias plot::x#7 = circle::$33 +Alias plot::y#7 = circle::$34 +Alias fill::end#0 = fill::$0 +Alias fill::addr#0 = fill::start#2 +Alias fill::val#2 = fill::val#3 +Alias fill::addr#2 = fill::addr#3 +Alias fill::end#1 = fill::end#2 Successful SSA optimization Pass2AliasElimination -Alias (signed word) circle::xc#1 = (signed word) circle::xc#10 -Alias (signed word) circle::x1#10 = (signed word) circle::x1#14 -Alias (signed word) circle::yc#1 = (signed word) circle::yc#10 +Alias circle::xc#1 = circle::xc#10 +Alias circle::x1#10 = circle::x1#14 +Alias circle::yc#1 = circle::yc#10 Successful SSA optimization Pass2AliasElimination Identical Phi Values (signed word) circle::y#0 (signed word) circle::r#0 Identical Phi Values (signed word) circle::xc#13 (signed word) circle::xc#0 @@ -687,7 +687,7 @@ Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19 Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8 Constant inlined circle::p#0 = (signed byte) 3-(const signed word) circle::r#0<<(signed byte) 1 Successful SSA optimization Pass2ConstantInlining -Alias (signed word~) plot::$4 = (signed word~) plot::$9 +Alias plot::$4 = plot::$9 Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of @begin Adding NOP phi() at start of @8 @@ -902,73 +902,73 @@ fill::@2: scope:[fill] from fill::@1 VARIABLE REGISTER WEIGHTS (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$10 22.0 -(signed word~) circle::$5 22.0 -(signed word~) circle::$6 22.0 -(signed word~) circle::$7 22.0 -(signed word~) circle::$9 22.0 +(signed word~) circle::$10 2002.0 +(signed word~) circle::$5 2002.0 +(signed word~) circle::$6 2002.0 +(signed word~) circle::$7 2002.0 +(signed word~) circle::$9 2002.0 (signed word) circle::p -(signed word) circle::p#1 22.0 -(signed word) circle::p#10 1.2692307692307692 -(signed word) circle::p#2 22.0 -(signed word) circle::p#3 6.285714285714286 +(signed word) circle::p#1 2002.0 +(signed word) circle::p#10 115.5 +(signed word) circle::p#2 2002.0 +(signed word) circle::p#3 572.0 (signed word) circle::r (signed word) circle::x1 -(signed word) circle::x1#1 22.0 -(signed word) circle::x1#10 3.9722222222222214 +(signed word) circle::x1#1 2002.0 +(signed word) circle::x1#10 361.4722222222221 (signed word) circle::xc (signed word) circle::y -(signed word) circle::y#1 6.6000000000000005 -(signed word) circle::y#10 4.653846153846153 -(signed word) circle::y#13 7.333333333333333 +(signed word) circle::y#1 600.5999999999999 +(signed word) circle::y#10 423.5 +(signed word) circle::y#13 667.3333333333334 (signed word) circle::yc (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) (byte*) fill::addr -(byte*) fill::addr#0 2.0 -(byte*) fill::addr#1 22.0 -(byte*) fill::addr#2 15.333333333333332 +(byte*) fill::addr#0 101.0 +(byte*) fill::addr#1 2002.0 +(byte*) fill::addr#2 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 2.6 +(byte*) fill::end#0 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 2.0 +(signed word) fill::size#2 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 1.8333333333333333 +(byte) fill::val#4 166.83333333333334 (void()) main() (void()) plot((signed word) plot::x , (signed word) plot::y) -(signed word~) plot::$0 4.0 -(byte~) plot::$1 4.0 -(byte~) plot::$2 4.0 -(signed word~) plot::$3 3.0 -(signed word~) plot::$4 4.0 -(signed byte~) plot::$5 4.0 -(byte~) plot::$6 4.0 -(signed word~) plot::$7 4.0 -(signed word~) plot::$8 4.0 +(signed word~) plot::$0 20002.0 +(byte~) plot::$1 20002.0 +(byte~) plot::$2 20002.0 +(signed word~) plot::$3 15001.5 +(signed word~) plot::$4 20002.0 +(signed byte~) plot::$5 20002.0 +(byte~) plot::$6 20002.0 +(signed word~) plot::$7 20002.0 +(signed word~) plot::$8 20002.0 (byte*) plot::location -(byte*) plot::location#1 1.3333333333333333 -(byte*) plot::location#2 0.8 -(byte*) plot::location#3 2.0 +(byte*) plot::location#1 6667.333333333333 +(byte*) plot::location#2 4000.4 +(byte*) plot::location#3 10001.0 (signed word) plot::x -(signed word) plot::x#0 11.0 -(signed word) plot::x#1 11.0 -(signed word) plot::x#2 11.0 -(signed word) plot::x#3 11.0 -(signed word) plot::x#4 11.0 -(signed word) plot::x#5 11.0 -(signed word) plot::x#6 11.0 -(signed word) plot::x#7 11.0 -(signed word) plot::x#8 8.363636363636363 +(signed word) plot::x#0 1001.0 +(signed word) plot::x#1 1001.0 +(signed word) plot::x#2 1001.0 +(signed word) plot::x#3 1001.0 +(signed word) plot::x#4 1001.0 +(signed word) plot::x#5 1001.0 +(signed word) plot::x#6 1001.0 +(signed word) plot::x#7 1001.0 +(signed word) plot::x#8 2546.363636363636 (signed word) plot::y -(signed word) plot::y#0 22.0 -(signed word) plot::y#1 22.0 -(signed word) plot::y#2 22.0 -(signed word) plot::y#3 22.0 -(signed word) plot::y#4 22.0 -(signed word) plot::y#5 22.0 -(signed word) plot::y#6 22.0 -(signed word) plot::y#7 22.0 -(signed word) plot::y#8 15.333333333333336 +(signed word) plot::y#0 2002.0 +(signed word) plot::y#1 2002.0 +(signed word) plot::y#2 2002.0 +(signed word) plot::y#3 2002.0 +(signed word) plot::y#4 2002.0 +(signed word) plot::y#5 2002.0 +(signed word) plot::y#6 2002.0 +(signed word) plot::y#7 2002.0 +(signed word) plot::y#8 4668.333333333333 Initial phi equivalence classes [ circle::x1#10 circle::x1#1 ] @@ -1673,96 +1673,94 @@ fill: { bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a -Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a -Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a -Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a -Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a -Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a -Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a -Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a -Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a -Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a -Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a -Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a -Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a -Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a -Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a -Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a -Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a -Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a -Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a -Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a -Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a -Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a -Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a -Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a -Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] ) always clobbers reg byte a -Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a -Statement [55] (byte~) plot::$1 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ) always clobbers reg byte a -Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a -Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] ) always clobbers reg byte a -Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] ) always clobbers reg byte a -Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] ) always clobbers reg byte a -Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] ) always clobbers reg byte a -Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a -Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] ) always clobbers reg byte a -Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] ) always clobbers reg byte a reg byte y -Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y -Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a +Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a +Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a +Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] { } ) always clobbers reg byte a +Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { } ) always clobbers reg byte a +Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { } ) always clobbers reg byte a +Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] { } ) always clobbers reg byte a +Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] { } ) always clobbers reg byte a +Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { } ) always clobbers reg byte a +Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] { } ) always clobbers reg byte a +Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a +Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y +Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y +Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] { } main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ fill::val#4 ] -Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a +Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 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[1]:14 [ fill::val#4 ] -Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a -Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a -Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a -Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a -Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a -Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a -Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a -Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a -Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a -Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a -Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a -Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a -Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a -Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a -Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a -Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a -Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a -Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a -Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a -Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a -Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a -Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a -Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a -Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a -Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a -Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] ) always clobbers reg byte a -Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a -Statement [55] (byte~) plot::$1 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ) always clobbers reg byte a -Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a -Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] ) always clobbers reg byte a -Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] ) always clobbers reg byte a -Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] ) always clobbers reg byte a -Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] ) always clobbers reg byte a -Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a -Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] ) always clobbers reg byte a -Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] ) always clobbers reg byte a reg byte y -Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y -Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a -Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a +Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a +Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] { } ) always clobbers reg byte a +Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { } ) always clobbers reg byte a +Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { } ) always clobbers reg byte a +Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] { } ) always clobbers reg byte a +Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] { } ) always clobbers reg byte a +Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } ) always clobbers reg byte a +Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } ) always clobbers reg byte a +Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } ) always clobbers reg byte a +Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } ) always clobbers reg byte a +Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } ) always clobbers reg byte a +Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } ) always clobbers reg byte a +Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } ) always clobbers reg byte a +Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { } ) always clobbers reg byte a +Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] { } ) always clobbers reg byte a +Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a +Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a +Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y +Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y +Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] { } main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a +Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a +Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] { } main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ circle::x1#10 circle::x1#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:6 , @@ -1791,16 +1789,16 @@ Potential registers zp[1]:46 [ plot::$6 ] : zp[1]:46 , reg byte a , reg byte x , Potential registers zp[2]:47 [ fill::end#0 ] : zp[2]:47 , REGISTER UPLIFT SCOPES -Uplift Scope [plot] 191.33: zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 96.36: zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 4: zp[2]:27 [ plot::$0 ] 4: zp[1]:31 [ plot::$1 ] 4: zp[1]:32 [ plot::$2 ] 4: zp[2]:37 [ plot::$7 ] 4: zp[2]:39 [ plot::$8 ] 4: zp[2]:41 [ plot::$4 ] 4: zp[1]:45 [ plot::$5 ] 4: zp[1]:46 [ plot::$6 ] 3: zp[2]:35 [ plot::$3 ] 2: zp[2]:43 [ plot::location#3 ] 1.33: zp[2]:29 [ plot::location#1 ] 0.8: zp[2]:33 [ plot::location#2 ] -Uplift Scope [circle] 51.55: zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 25.97: zp[2]:2 [ circle::x1#10 circle::x1#1 ] 22: zp[2]:17 [ circle::$5 ] 22: zp[2]:19 [ circle::$6 ] 22: zp[2]:21 [ circle::$7 ] 22: zp[2]:23 [ circle::$9 ] 22: zp[2]:25 [ circle::$10 ] 18.59: zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] -Uplift Scope [fill] 39.33: zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp[2]:47 [ fill::end#0 ] 2: zp[2]:12 [ fill::size#2 ] 1.83: zp[1]:14 [ fill::val#4 ] +Uplift Scope [plot] 20,684.33: zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 20,002: zp[2]:27 [ plot::$0 ] 20,002: zp[1]:31 [ plot::$1 ] 20,002: zp[1]:32 [ plot::$2 ] 20,002: zp[2]:37 [ plot::$7 ] 20,002: zp[2]:39 [ plot::$8 ] 20,002: zp[2]:41 [ plot::$4 ] 20,002: zp[1]:45 [ plot::$5 ] 20,002: zp[1]:46 [ plot::$6 ] 15,001.5: zp[2]:35 [ plot::$3 ] 10,554.36: zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 10,001: zp[2]:43 [ plot::location#3 ] 6,667.33: zp[2]:29 [ plot::location#1 ] 4,000.4: zp[2]:33 [ plot::location#2 ] +Uplift Scope [circle] 4,691.5: zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 2,363.47: zp[2]:2 [ circle::x1#10 circle::x1#1 ] 2,002: zp[2]:17 [ circle::$5 ] 2,002: zp[2]:19 [ circle::$6 ] 2,002: zp[2]:21 [ circle::$7 ] 2,002: zp[2]:23 [ circle::$9 ] 2,002: zp[2]:25 [ circle::$10 ] 1,691.43: zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] +Uplift Scope [fill] 3,471.33: zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:47 [ fill::end#0 ] 166.83: zp[1]:14 [ fill::val#4 ] 101: zp[2]:12 [ fill::size#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ] +Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ] Limited combination testing to 100 combinations of 256 possible. Uplifting [circle] best 6419 combination zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:2 [ circle::x1#10 circle::x1#1 ] zp[2]:17 [ circle::$5 ] zp[2]:19 [ circle::$6 ] zp[2]:21 [ circle::$7 ] zp[2]:23 [ circle::$9 ] zp[2]:25 [ circle::$10 ] zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] -Uplifting [fill] best 6403 combination zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:47 [ fill::end#0 ] zp[2]:12 [ fill::size#2 ] reg byte x [ fill::val#4 ] +Uplifting [fill] best 6403 combination zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:47 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:12 [ fill::size#2 ] Uplifting [main] best 6403 combination Uplifting [] best 6403 combination Coalescing zero page register [ zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:21 [ circle::$7 ] ] - score: 2 @@ -2509,11 +2507,11 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$10 zp[2]:2 22.0 -(signed word~) circle::$5 zp[2]:8 22.0 -(signed word~) circle::$6 zp[2]:8 22.0 -(signed word~) circle::$7 zp[2]:2 22.0 -(signed word~) circle::$9 zp[2]:10 22.0 +(signed word~) circle::$10 zp[2]:2 2002.0 +(signed word~) circle::$5 zp[2]:8 2002.0 +(signed word~) circle::$6 zp[2]:8 2002.0 +(signed word~) circle::$7 zp[2]:2 2002.0 +(signed word~) circle::$9 zp[2]:10 2002.0 (label) circle::@1 (label) circle::@10 (label) circle::@11 @@ -2529,21 +2527,21 @@ FINAL SYMBOL TABLE (label) circle::@9 (label) circle::@return (signed word) circle::p -(signed word) circle::p#1 p zp[2]:2 22.0 -(signed word) circle::p#10 p zp[2]:2 1.2692307692307692 -(signed word) circle::p#2 p zp[2]:2 22.0 -(signed word) circle::p#3 p zp[2]:2 6.285714285714286 +(signed word) circle::p#1 p zp[2]:2 2002.0 +(signed word) circle::p#10 p zp[2]:2 115.5 +(signed word) circle::p#2 p zp[2]:2 2002.0 +(signed word) circle::p#3 p zp[2]:2 572.0 (signed word) circle::r (const signed word) circle::r#0 r = (signed byte) $32 (signed word) circle::x1 -(signed word) circle::x1#1 x1 zp[2]:4 22.0 -(signed word) circle::x1#10 x1 zp[2]:4 3.9722222222222214 +(signed word) circle::x1#1 x1 zp[2]:4 2002.0 +(signed word) circle::x1#10 x1 zp[2]:4 361.4722222222221 (signed word) circle::xc (const signed word) circle::xc#0 xc = (signed byte) $64 (signed word) circle::y -(signed word) circle::y#1 y zp[2]:6 6.6000000000000005 -(signed word) circle::y#10 y zp[2]:6 4.653846153846153 -(signed word) circle::y#13 y zp[2]:6 7.333333333333333 +(signed word) circle::y#1 y zp[2]:6 600.5999999999999 +(signed word) circle::y#10 y zp[2]:6 423.5 +(signed word) circle::y#13 y zp[2]:6 667.3333333333334 (signed word) circle::yc (const signed word) circle::yc#0 yc = (signed byte) $64 (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) @@ -2551,55 +2549,55 @@ FINAL SYMBOL TABLE (label) fill::@2 (label) fill::@return (byte*) fill::addr -(byte*) fill::addr#0 addr zp[2]:6 2.0 -(byte*) fill::addr#1 addr zp[2]:6 22.0 -(byte*) fill::addr#2 addr zp[2]:6 15.333333333333332 +(byte*) fill::addr#0 addr zp[2]:6 101.0 +(byte*) fill::addr#1 addr zp[2]:6 2002.0 +(byte*) fill::addr#2 addr zp[2]:6 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 end zp[2]:4 2.6 +(byte*) fill::end#0 end zp[2]:4 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 size zp[2]:4 2.0 +(signed word) fill::size#2 size zp[2]:4 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 reg byte x 1.8333333333333333 +(byte) fill::val#4 reg byte x 166.83333333333334 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (void()) plot((signed word) plot::x , (signed word) plot::y) -(signed word~) plot::$0 zp[2]:12 4.0 -(byte~) plot::$1 reg byte a 4.0 -(byte~) plot::$2 reg byte a 4.0 -(signed word~) plot::$3 zp[2]:10 3.0 -(signed word~) plot::$4 zp[2]:14 4.0 -(signed byte~) plot::$5 reg byte a 4.0 -(byte~) plot::$6 reg byte a 4.0 -(signed word~) plot::$7 zp[2]:14 4.0 -(signed word~) plot::$8 zp[2]:14 4.0 +(signed word~) plot::$0 zp[2]:12 20002.0 +(byte~) plot::$1 reg byte a 20002.0 +(byte~) plot::$2 reg byte a 20002.0 +(signed word~) plot::$3 zp[2]:10 15001.5 +(signed word~) plot::$4 zp[2]:14 20002.0 +(signed byte~) plot::$5 reg byte a 20002.0 +(byte~) plot::$6 reg byte a 20002.0 +(signed word~) plot::$7 zp[2]:14 20002.0 +(signed word~) plot::$8 zp[2]:14 20002.0 (label) plot::@return (byte*) plot::location -(byte*) plot::location#1 location zp[2]:12 1.3333333333333333 -(byte*) plot::location#2 location zp[2]:12 0.8 -(byte*) plot::location#3 location zp[2]:12 2.0 +(byte*) plot::location#1 location zp[2]:12 6667.333333333333 +(byte*) plot::location#2 location zp[2]:12 4000.4 +(byte*) plot::location#3 location zp[2]:12 10001.0 (signed word) plot::x -(signed word) plot::x#0 x zp[2]:8 11.0 -(signed word) plot::x#1 x zp[2]:8 11.0 -(signed word) plot::x#2 x zp[2]:8 11.0 -(signed word) plot::x#3 x zp[2]:8 11.0 -(signed word) plot::x#4 x zp[2]:8 11.0 -(signed word) plot::x#5 x zp[2]:8 11.0 -(signed word) plot::x#6 x zp[2]:8 11.0 -(signed word) plot::x#7 x zp[2]:8 11.0 -(signed word) plot::x#8 x zp[2]:8 8.363636363636363 +(signed word) plot::x#0 x zp[2]:8 1001.0 +(signed word) plot::x#1 x zp[2]:8 1001.0 +(signed word) plot::x#2 x zp[2]:8 1001.0 +(signed word) plot::x#3 x zp[2]:8 1001.0 +(signed word) plot::x#4 x zp[2]:8 1001.0 +(signed word) plot::x#5 x zp[2]:8 1001.0 +(signed word) plot::x#6 x zp[2]:8 1001.0 +(signed word) plot::x#7 x zp[2]:8 1001.0 +(signed word) plot::x#8 x zp[2]:8 2546.363636363636 (signed word) plot::y -(signed word) plot::y#0 y zp[2]:10 22.0 -(signed word) plot::y#1 y zp[2]:10 22.0 -(signed word) plot::y#2 y zp[2]:10 22.0 -(signed word) plot::y#3 y zp[2]:10 22.0 -(signed word) plot::y#4 y zp[2]:10 22.0 -(signed word) plot::y#5 y zp[2]:10 22.0 -(signed word) plot::y#6 y zp[2]:10 22.0 -(signed word) plot::y#7 y zp[2]:10 22.0 -(signed word) plot::y#8 y zp[2]:10 15.333333333333336 +(signed word) plot::y#0 y zp[2]:10 2002.0 +(signed word) plot::y#1 y zp[2]:10 2002.0 +(signed word) plot::y#2 y zp[2]:10 2002.0 +(signed word) plot::y#3 y zp[2]:10 2002.0 +(signed word) plot::y#4 y zp[2]:10 2002.0 +(signed word) plot::y#5 y zp[2]:10 2002.0 +(signed word) plot::y#6 y zp[2]:10 2002.0 +(signed word) plot::y#7 y zp[2]:10 2002.0 +(signed word) plot::y#8 y zp[2]:10 4668.333333333333 zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ] diff --git a/src/test/ref/bitmap-circle.sym b/src/test/ref/bitmap-circle.sym index 0bb9631f1..810ead9e0 100644 --- a/src/test/ref/bitmap-circle.sym +++ b/src/test/ref/bitmap-circle.sym @@ -12,11 +12,11 @@ (const byte) VIC_RSEL = (byte) 8 (const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) -(signed word~) circle::$10 zp[2]:2 22.0 -(signed word~) circle::$5 zp[2]:8 22.0 -(signed word~) circle::$6 zp[2]:8 22.0 -(signed word~) circle::$7 zp[2]:2 22.0 -(signed word~) circle::$9 zp[2]:10 22.0 +(signed word~) circle::$10 zp[2]:2 2002.0 +(signed word~) circle::$5 zp[2]:8 2002.0 +(signed word~) circle::$6 zp[2]:8 2002.0 +(signed word~) circle::$7 zp[2]:2 2002.0 +(signed word~) circle::$9 zp[2]:10 2002.0 (label) circle::@1 (label) circle::@10 (label) circle::@11 @@ -32,21 +32,21 @@ (label) circle::@9 (label) circle::@return (signed word) circle::p -(signed word) circle::p#1 p zp[2]:2 22.0 -(signed word) circle::p#10 p zp[2]:2 1.2692307692307692 -(signed word) circle::p#2 p zp[2]:2 22.0 -(signed word) circle::p#3 p zp[2]:2 6.285714285714286 +(signed word) circle::p#1 p zp[2]:2 2002.0 +(signed word) circle::p#10 p zp[2]:2 115.5 +(signed word) circle::p#2 p zp[2]:2 2002.0 +(signed word) circle::p#3 p zp[2]:2 572.0 (signed word) circle::r (const signed word) circle::r#0 r = (signed byte) $32 (signed word) circle::x1 -(signed word) circle::x1#1 x1 zp[2]:4 22.0 -(signed word) circle::x1#10 x1 zp[2]:4 3.9722222222222214 +(signed word) circle::x1#1 x1 zp[2]:4 2002.0 +(signed word) circle::x1#10 x1 zp[2]:4 361.4722222222221 (signed word) circle::xc (const signed word) circle::xc#0 xc = (signed byte) $64 (signed word) circle::y -(signed word) circle::y#1 y zp[2]:6 6.6000000000000005 -(signed word) circle::y#10 y zp[2]:6 4.653846153846153 -(signed word) circle::y#13 y zp[2]:6 7.333333333333333 +(signed word) circle::y#1 y zp[2]:6 600.5999999999999 +(signed word) circle::y#10 y zp[2]:6 423.5 +(signed word) circle::y#13 y zp[2]:6 667.3333333333334 (signed word) circle::yc (const signed word) circle::yc#0 yc = (signed byte) $64 (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) @@ -54,55 +54,55 @@ (label) fill::@2 (label) fill::@return (byte*) fill::addr -(byte*) fill::addr#0 addr zp[2]:6 2.0 -(byte*) fill::addr#1 addr zp[2]:6 22.0 -(byte*) fill::addr#2 addr zp[2]:6 15.333333333333332 +(byte*) fill::addr#0 addr zp[2]:6 101.0 +(byte*) fill::addr#1 addr zp[2]:6 2002.0 +(byte*) fill::addr#2 addr zp[2]:6 1368.3333333333335 (byte*) fill::end -(byte*) fill::end#0 end zp[2]:4 2.6 +(byte*) fill::end#0 end zp[2]:4 220.39999999999998 (signed word) fill::size -(signed word) fill::size#2 size zp[2]:4 2.0 +(signed word) fill::size#2 size zp[2]:4 101.0 (byte*) fill::start (byte) fill::val -(byte) fill::val#4 reg byte x 1.8333333333333333 +(byte) fill::val#4 reg byte x 166.83333333333334 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (void()) plot((signed word) plot::x , (signed word) plot::y) -(signed word~) plot::$0 zp[2]:12 4.0 -(byte~) plot::$1 reg byte a 4.0 -(byte~) plot::$2 reg byte a 4.0 -(signed word~) plot::$3 zp[2]:10 3.0 -(signed word~) plot::$4 zp[2]:14 4.0 -(signed byte~) plot::$5 reg byte a 4.0 -(byte~) plot::$6 reg byte a 4.0 -(signed word~) plot::$7 zp[2]:14 4.0 -(signed word~) plot::$8 zp[2]:14 4.0 +(signed word~) plot::$0 zp[2]:12 20002.0 +(byte~) plot::$1 reg byte a 20002.0 +(byte~) plot::$2 reg byte a 20002.0 +(signed word~) plot::$3 zp[2]:10 15001.5 +(signed word~) plot::$4 zp[2]:14 20002.0 +(signed byte~) plot::$5 reg byte a 20002.0 +(byte~) plot::$6 reg byte a 20002.0 +(signed word~) plot::$7 zp[2]:14 20002.0 +(signed word~) plot::$8 zp[2]:14 20002.0 (label) plot::@return (byte*) plot::location -(byte*) plot::location#1 location zp[2]:12 1.3333333333333333 -(byte*) plot::location#2 location zp[2]:12 0.8 -(byte*) plot::location#3 location zp[2]:12 2.0 +(byte*) plot::location#1 location zp[2]:12 6667.333333333333 +(byte*) plot::location#2 location zp[2]:12 4000.4 +(byte*) plot::location#3 location zp[2]:12 10001.0 (signed word) plot::x -(signed word) plot::x#0 x zp[2]:8 11.0 -(signed word) plot::x#1 x zp[2]:8 11.0 -(signed word) plot::x#2 x zp[2]:8 11.0 -(signed word) plot::x#3 x zp[2]:8 11.0 -(signed word) plot::x#4 x zp[2]:8 11.0 -(signed word) plot::x#5 x zp[2]:8 11.0 -(signed word) plot::x#6 x zp[2]:8 11.0 -(signed word) plot::x#7 x zp[2]:8 11.0 -(signed word) plot::x#8 x zp[2]:8 8.363636363636363 +(signed word) plot::x#0 x zp[2]:8 1001.0 +(signed word) plot::x#1 x zp[2]:8 1001.0 +(signed word) plot::x#2 x zp[2]:8 1001.0 +(signed word) plot::x#3 x zp[2]:8 1001.0 +(signed word) plot::x#4 x zp[2]:8 1001.0 +(signed word) plot::x#5 x zp[2]:8 1001.0 +(signed word) plot::x#6 x zp[2]:8 1001.0 +(signed word) plot::x#7 x zp[2]:8 1001.0 +(signed word) plot::x#8 x zp[2]:8 2546.363636363636 (signed word) plot::y -(signed word) plot::y#0 y zp[2]:10 22.0 -(signed word) plot::y#1 y zp[2]:10 22.0 -(signed word) plot::y#2 y zp[2]:10 22.0 -(signed word) plot::y#3 y zp[2]:10 22.0 -(signed word) plot::y#4 y zp[2]:10 22.0 -(signed word) plot::y#5 y zp[2]:10 22.0 -(signed word) plot::y#6 y zp[2]:10 22.0 -(signed word) plot::y#7 y zp[2]:10 22.0 -(signed word) plot::y#8 y zp[2]:10 15.333333333333336 +(signed word) plot::y#0 y zp[2]:10 2002.0 +(signed word) plot::y#1 y zp[2]:10 2002.0 +(signed word) plot::y#2 y zp[2]:10 2002.0 +(signed word) plot::y#3 y zp[2]:10 2002.0 +(signed word) plot::y#4 y zp[2]:10 2002.0 +(signed word) plot::y#5 y zp[2]:10 2002.0 +(signed word) plot::y#6 y zp[2]:10 2002.0 +(signed word) plot::y#7 y zp[2]:10 2002.0 +(signed word) plot::y#8 y zp[2]:10 4668.333333333333 zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ] diff --git a/src/test/ref/bitmap-line-anim-1.asm b/src/test/ref/bitmap-line-anim-1.asm index df4fde895..939f53eda 100644 --- a/src/test/ref/bitmap-line-anim-1.asm +++ b/src/test/ref/bitmap-line-anim-1.asm @@ -35,57 +35,57 @@ main: { sta.z next __b1: // bitmap_line(0,next,0,100) - ldx.z next + lda.z next jsr bitmap_line // next++; inc.z next jmp __b1 } // Draw a line on the bitmap -// bitmap_line(byte register(X) x1) +// bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // if(x0= (byte) bitmap_line_ydxi::e#1 from [217] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 Inversing boolean not [242] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [241] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$13 -Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 -Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 -Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 -Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 -Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 -Alias (byte) bitmap_line::x1#1 = (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 -Alias (byte) bitmap_line::x0#1 = (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 -Alias (byte) bitmap_line::y0#1 = (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 -Alias (byte) bitmap_line::y1#1 = (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 -Alias (byte) bitmap_line::xd#1 = (byte~) bitmap_line::$11 (byte) bitmap_line::xd#9 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 -Alias (byte) bitmap_line::xd#2 = (byte~) bitmap_line::$1 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 -Alias (byte) bitmap_line::yd#1 = (byte~) bitmap_line::$7 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 -Alias (byte) bitmap_line::yd#2 = (byte~) bitmap_line::$3 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 -Alias (byte) bitmap_line::yd#11 = (byte) bitmap_line::yd#3 (byte~) bitmap_line::$17 (byte) bitmap_line::yd#12 -Alias (byte) bitmap_line::yd#10 = (byte) bitmap_line::yd#4 (byte~) bitmap_line::$13 (byte) bitmap_line::yd#9 -Alias (byte) bitmap_line_xdyi::e#0 = (byte~) bitmap_line_xdyi::$0 -Alias (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#4 -Alias (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#6 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#3 -Alias (byte) bitmap_line_xdyi::x1#3 = (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 -Alias (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::y#4 -Alias (byte) bitmap_line_xdyi::e#1 = (byte~) bitmap_line_xdyi::$2 (byte) bitmap_line_xdyi::e#4 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#7 -Alias (byte) bitmap_line_xdyi::e#2 = (byte~) bitmap_line_xdyi::$5 -Alias (byte) bitmap_line_xdyd::e#0 = (byte~) bitmap_line_xdyd::$0 -Alias (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#4 -Alias (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#6 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#3 -Alias (byte) bitmap_line_xdyd::x1#3 = (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 -Alias (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::y#4 -Alias (byte) bitmap_line_xdyd::e#1 = (byte~) bitmap_line_xdyd::$2 (byte) bitmap_line_xdyd::e#4 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#7 -Alias (byte) bitmap_line_xdyd::e#2 = (byte~) bitmap_line_xdyd::$5 -Alias (byte) bitmap_line_ydxi::e#0 = (byte~) bitmap_line_ydxi::$0 -Alias (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#4 -Alias (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#6 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#3 -Alias (byte) bitmap_line_ydxi::y1#3 = (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 -Alias (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::x#4 -Alias (byte) bitmap_line_ydxi::e#1 = (byte~) bitmap_line_ydxi::$2 (byte) bitmap_line_ydxi::e#4 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#7 -Alias (byte) bitmap_line_ydxi::e#2 = (byte~) bitmap_line_ydxi::$5 -Alias (byte) bitmap_line_ydxd::e#0 = (byte~) bitmap_line_ydxd::$0 -Alias (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#4 -Alias (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#5 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#6 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#3 -Alias (byte) bitmap_line_ydxd::y1#3 = (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 -Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::x#4 -Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8 -Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5 -Alias (byte) next#10 = (byte) next#11 (byte) next#12 (byte) next#8 -Alias (byte) next#4 = (byte) next#5 -Alias (byte) next#1 = (byte) next#6 (byte) next#2 -Alias (byte*) init_screen::c#2 = (byte*) init_screen::c#3 -Alias (byte) next#0 = (byte) next#9 -Alias (byte) next#3 = (byte) next#7 +Alias bitmap_init::bits#1 = bitmap_init::$2 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_init::yoffs#1 = bitmap_init::$13 +Alias bitmap_clear::bitmap#0 = bitmap_clear::$0 +Alias bitmap_clear::y#2 = bitmap_clear::y#3 +Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 +Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 +Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 +Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 +Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 +Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 +Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 +Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 +Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 +Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 +Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 +Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 +Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 +Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 +Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 +Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 +Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 +Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 +Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 +Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 +Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 +Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 +Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 +Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 +Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 +Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 +Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 +Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 +Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 +Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 +Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 +Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 +Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 +Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 +Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 +Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 +Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 +Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 +Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 +Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 +Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 +Alias next#10 = next#11 next#12 next#8 +Alias next#4 = next#5 +Alias next#1 = next#6 next#2 +Alias init_screen::c#2 = init_screen::c#3 +Alias next#0 = next#9 +Alias next#3 = next#7 Successful SSA optimization Pass2AliasElimination -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte) bitmap_line_xdyi::x1#2 = (byte) bitmap_line_xdyi::x1#3 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#5 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#6 -Alias (byte) bitmap_line_xdyd::x1#2 = (byte) bitmap_line_xdyd::x1#3 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#5 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#6 -Alias (byte) bitmap_line_ydxi::y1#2 = (byte) bitmap_line_ydxi::y1#3 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#5 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#6 -Alias (byte) bitmap_line_ydxd::y1#2 = (byte) bitmap_line_ydxd::y1#3 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#6 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#5 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#6 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 +Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 +Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 +Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0 Identical Phi Values (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2 @@ -1610,7 +1610,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $c8 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$10 = (byte~) bitmap_init::$6 +Alias bitmap_init::$10 = bitmap_init::$6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bitmap_line_xdyi::yd#2 (byte) bitmap_line_xdyi::yd#1 Identical Phi Values (byte) bitmap_line_xdyi::x#6 (const byte) bitmap_line_xdyi::x#1 @@ -2167,149 +2167,149 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 VARIABLE REGISTER WEIGHTS (void()) bitmap_clear() (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 2.0 -(byte*) bitmap_clear::bitmap#1 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 157.0 -(byte*) bitmap_clear::bitmap#3 24.0 -(byte*) bitmap_clear::bitmap#5 4.0 +(word) bitmap_clear::bitmap#0 101.0 +(byte*) bitmap_clear::bitmap#1 4200.6 +(byte*) bitmap_clear::bitmap#2 15502.0 +(byte*) bitmap_clear::bitmap#3 2103.0 +(byte*) bitmap_clear::bitmap#5 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 151.5 -(byte) bitmap_clear::x#2 67.33333333333333 +(byte) bitmap_clear::x#1 15001.5 +(byte) bitmap_clear::x#2 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 16.5 -(byte) bitmap_clear::y#4 3.6666666666666665 +(byte) bitmap_clear::y#1 1501.5 +(byte) bitmap_clear::y#4 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 22.0 -(byte~) bitmap_init::$10 5.5 -(byte~) bitmap_init::$7 22.0 -(byte~) bitmap_init::$8 22.0 -(byte~) bitmap_init::$9 22.0 +(byte~) bitmap_init::$0 2002.0 +(byte~) bitmap_init::$10 500.5 +(byte~) bitmap_init::$7 2002.0 +(byte~) bitmap_init::$8 2002.0 +(byte~) bitmap_init::$9 2002.0 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 6.6000000000000005 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 600.5999999999999 +(byte) bitmap_init::bits#4 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 7.333333333333334 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 3.5000000000000004 +(byte) bitmap_line::x1#0 851.0000000000001 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 2.6666666666666665 -(byte) bitmap_line::xd#2 2.6666666666666665 +(byte) bitmap_line::xd#1 1334.6666666666667 +(byte) bitmap_line::xd#2 1334.6666666666667 (byte) bitmap_line::y0 (byte) bitmap_line::y1 (byte) bitmap_line::yd (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#1 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 202.0 -(byte) bitmap_line_xdyd::e#3 40.4 -(byte) bitmap_line_xdyd::e#6 151.5 +(byte) bitmap_line_xdyd::e#1 1333334.6666666667 +(byte) bitmap_line_xdyd::e#2 2000002.0 +(byte) bitmap_line_xdyd::e#3 400000.4 +(byte) bitmap_line_xdyd::e#6 1500001.5 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 1.3333333333333333 -(byte) bitmap_line_xdyd::x#2 43.285714285714285 -(byte) bitmap_line_xdyd::x#3 76.25 +(byte) bitmap_line_xdyd::x#0 3667.333333333333 +(byte) bitmap_line_xdyd::x#2 428571.85714285716 +(byte) bitmap_line_xdyd::x#3 752501.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 15.692307692307693 +(byte) bitmap_line_xdyd::xd#0 153923.3076923077 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#2 101.0 -(byte) bitmap_line_xdyd::y#3 57.714285714285715 -(byte) bitmap_line_xdyd::y#6 151.5 +(byte) bitmap_line_xdyd::y#2 1000001.0 +(byte) bitmap_line_xdyd::y#3 571429.1428571428 +(byte) bitmap_line_xdyd::y#6 1500001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 202.0 +(byte~) bitmap_line_xdyi::$6 2000002.0 (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#1 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 202.0 -(byte) bitmap_line_xdyi::e#3 40.4 -(byte) bitmap_line_xdyi::e#6 101.0 +(byte) bitmap_line_xdyi::e#1 1333334.6666666667 +(byte) bitmap_line_xdyi::e#2 2000002.0 +(byte) bitmap_line_xdyi::e#3 400000.4 +(byte) bitmap_line_xdyi::e#6 1000001.0 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#2 37.875 -(byte) bitmap_line_xdyi::x#3 75.75 +(byte) bitmap_line_xdyi::x#2 375000.375 +(byte) bitmap_line_xdyi::x#3 750000.75 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#1 6.866666666666667 +(byte) bitmap_line_xdyi::x1#1 66733.46666666667 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#1 14.571428571428573 +(byte) bitmap_line_xdyi::xd#1 142928.7857142857 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#2 101.0 -(byte) bitmap_line_xdyi::y#3 57.714285714285715 -(byte) bitmap_line_xdyi::y#6 101.0 +(byte) bitmap_line_xdyi::y#2 1000001.0 +(byte) bitmap_line_xdyi::y#3 571429.1428571428 +(byte) bitmap_line_xdyi::y#6 1000001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 4.0 -(byte) bitmap_line_ydxd::e#1 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 202.0 -(byte) bitmap_line_ydxd::e#3 40.8 -(byte) bitmap_line_ydxd::e#6 151.5 +(byte) bitmap_line_ydxd::e#0 20002.0 +(byte) bitmap_line_ydxd::e#1 1333334.6666666667 +(byte) bitmap_line_ydxd::e#2 2000002.0 +(byte) bitmap_line_ydxd::e#3 402000.60000000003 +(byte) bitmap_line_ydxd::e#6 1500001.5 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#2 101.0 -(byte) bitmap_line_ydxd::x#3 57.714285714285715 -(byte) bitmap_line_ydxd::x#6 151.5 +(byte) bitmap_line_ydxd::x#2 1000001.0 +(byte) bitmap_line_ydxd::x#3 571429.1428571428 +(byte) bitmap_line_ydxd::x#6 1500001.5 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 8.076923076923077 +(byte) bitmap_line_ydxd::xd#0 77769.46153846153 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#2 75.75 -(byte) bitmap_line_ydxd::y#3 43.285714285714285 +(byte) bitmap_line_ydxd::y#2 750000.75 +(byte) bitmap_line_ydxd::y#3 428571.85714285716 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 4.0 -(byte) bitmap_line_ydxi::e#1 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 202.0 -(byte) bitmap_line_ydxi::e#3 40.8 -(byte) bitmap_line_ydxi::e#6 151.5 +(byte) bitmap_line_ydxi::e#0 20002.0 +(byte) bitmap_line_ydxi::e#1 1333334.6666666667 +(byte) bitmap_line_ydxi::e#2 2000002.0 +(byte) bitmap_line_ydxi::e#3 402000.60000000003 +(byte) bitmap_line_ydxi::e#6 1500001.5 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#2 101.0 -(byte) bitmap_line_ydxi::x#3 57.714285714285715 -(byte) bitmap_line_ydxi::x#6 151.5 +(byte) bitmap_line_ydxi::x#2 1000001.0 +(byte) bitmap_line_ydxi::x#3 571429.1428571428 +(byte) bitmap_line_ydxi::x#6 1500001.5 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#1 8.076923076923077 +(byte) bitmap_line_ydxi::xd#1 77769.46153846153 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#2 43.285714285714285 -(byte) bitmap_line_ydxi::y#3 75.75 +(byte) bitmap_line_ydxi::y#2 428571.85714285716 +(byte) bitmap_line_ydxi::y#3 750000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$1 2.0000002E7 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 +(word) bitmap_plot::plotter#0 5000000.5 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 2.0 +(word) bitmap_plot::plotter_x#0 1.0000001E7 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 4.0 +(word) bitmap_plot::plotter_y#0 2.0000002E7 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 101.0 -(byte) bitmap_plot::x#1 101.0 -(byte) bitmap_plot::x#2 101.0 -(byte) bitmap_plot::x#3 101.0 -(byte) bitmap_plot::x#4 102.5 +(byte) bitmap_plot::x#0 1000001.0 +(byte) bitmap_plot::x#1 1000001.0 +(byte) bitmap_plot::x#2 1000001.0 +(byte) bitmap_plot::x#3 1000001.0 +(byte) bitmap_plot::x#4 8500001.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 202.0 -(byte) bitmap_plot::y#1 202.0 -(byte) bitmap_plot::y#2 202.0 -(byte) bitmap_plot::y#3 202.0 -(byte) bitmap_plot::y#4 204.0 +(byte) bitmap_plot::y#0 2000002.0 +(byte) bitmap_plot::y#1 2000002.0 +(byte) bitmap_plot::y#2 2000002.0 +(byte) bitmap_plot::y#3 2000002.0 +(byte) bitmap_plot::y#4 1.2000003E7 (void()) init_screen() (byte*) init_screen::c -(byte*) init_screen::c#1 22.0 -(byte*) init_screen::c#2 14.666666666666666 +(byte*) init_screen::c#1 2002.0 +(byte*) init_screen::c#2 1334.6666666666667 (void()) main() (byte) next -(byte) next#1 22.0 -(byte) next#4 11.0 +(byte) next#1 202.0 +(byte) next#4 101.0 Initial phi equivalence classes [ next#4 next#1 ] @@ -3265,18 +3265,18 @@ bitmap_init: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:48 [ bitmap_init::$7 ] has ALU potential. -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] -Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] @@ -3292,9 +3292,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:30 [ bitmap Removing always clobbered register reg byte a as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] @@ -3313,116 +3313,116 @@ Removing always clobbered register reg byte y as potential for zp[1]:30 [ bitmap Removing always clobbered register reg byte y as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a reg byte x +Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte x as potential for zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] -Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ) always clobbers reg byte a -Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a reg byte x +Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] -Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ) always clobbers reg byte a -Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a reg byte x +Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte x as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] -Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ) always clobbers reg byte a -Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ 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[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a reg byte x +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte x as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] -Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a reg byte x -Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ) always clobbers reg byte a -Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a reg byte x -Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ) always clobbers reg byte a -Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a reg byte x -Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ) always clobbers reg byte a -Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a reg byte x -Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a reg byte x -Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ) always clobbers reg byte a -Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a reg byte x -Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ) always clobbers reg byte a -Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a reg byte x -Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ) always clobbers reg byte a -Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y +Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x +Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x +Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x +Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a +Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a +Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x +Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y +Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x +Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a +Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x +Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x +Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a +Statement [95] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [99] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a +Statement [114] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [115] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a +Statement [130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ next#4 next#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] : zp[1]:3 , Potential registers zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] : zp[1]:4 , @@ -3467,19 +3467,19 @@ Potential registers zp[1]:49 [ bitmap_init::$8 ] : zp[1]:49 , reg byte a , reg b Potential registers zp[1]:50 [ bitmap_init::$9 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_plot] 1,012: zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 506.5: zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp[2]:39 [ bitmap_plot::plotter_y#0 ] 4: zp[1]:43 [ bitmap_plot::$1 ] 2: zp[2]:37 [ bitmap_plot::plotter_x#0 ] 1: zp[2]:41 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_line_xdyi] 478.07: zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 259.71: zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 202: zp[1]:36 [ bitmap_line_xdyi::$6 ] 113.62: zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] 14.57: zp[1]:35 [ bitmap_line_xdyi::xd#1 ] 6.87: zp[1]:34 [ bitmap_line_xdyi::x1#1 ] -Uplift Scope [bitmap_line_xdyd] 528.57: zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 310.21: zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 120.87: zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 15.69: zp[1]:31 [ bitmap_line_xdyd::xd#0 ] -Uplift Scope [bitmap_line_ydxi] 532.97: zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 310.21: zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 119.04: zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] 8.08: zp[1]:33 [ bitmap_line_ydxi::xd#1 ] -Uplift Scope [bitmap_line_ydxd] 532.97: zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 310.21: zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 119.04: zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] 8.08: zp[1]:30 [ bitmap_line_ydxd::xd#0 ] -Uplift Scope [bitmap_clear] 227.6: zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:44 [ bitmap_clear::bitmap#0 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 24.93: zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 23.83: zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:46 [ bitmap_init::$0 ] 22: zp[1]:48 [ bitmap_init::$7 ] 22: zp[1]:49 [ bitmap_init::$8 ] 22: zp[1]:50 [ bitmap_init::$9 ] 5.5: zp[1]:47 [ bitmap_init::$10 ] -Uplift Scope [init_screen] 36.67: zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [] 33: zp[1]:2 [ next#4 next#1 ] -Uplift Scope [bitmap_line] 3.5: zp[1]:28 [ bitmap_line::x1#0 ] 2.67: zp[1]:29 [ bitmap_line::xd#2 ] 2.67: zp[1]:32 [ bitmap_line::xd#1 ] +Uplift Scope [bitmap_plot] 20,000,011: zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 20,000,002: zp[2]:39 [ bitmap_plot::plotter_y#0 ] 20,000,002: zp[1]:43 [ bitmap_plot::$1 ] 12,500,005.75: zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 10,000,001: zp[2]:37 [ bitmap_plot::plotter_x#0 ] 5,000,000.5: zp[2]:41 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line_xdyi] 4,733,338.07: zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 2,571,431.14: zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 2,000,002: zp[1]:36 [ bitmap_line_xdyi::$6 ] 1,125,001.12: zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] 142,928.79: zp[1]:35 [ bitmap_line_xdyi::xd#1 ] 66,733.47: zp[1]:34 [ bitmap_line_xdyi::x1#1 ] +Uplift Scope [bitmap_line_xdyd] 5,233,338.57: zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 3,071,431.64: zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 1,184,740.19: zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 153,923.31: zp[1]:31 [ bitmap_line_xdyd::xd#0 ] +Uplift Scope [bitmap_line_ydxi] 5,255,340.77: zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 3,071,431.64: zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 1,178,572.61: zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] 77,769.46: zp[1]:33 [ bitmap_line_ydxi::xd#1 ] +Uplift Scope [bitmap_line_ydxd] 5,255,340.77: zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 3,071,431.64: zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 1,178,572.61: zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] 77,769.46: zp[1]:30 [ bitmap_line_ydxd::xd#0 ] +Uplift Scope [bitmap_clear] 22,007.6: zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 21,668.83: zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 1,835.17: zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 101: zp[2]:44 [ bitmap_clear::bitmap#0 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 2,268.93: zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,168.83: zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:46 [ bitmap_init::$0 ] 2,002: zp[1]:48 [ bitmap_init::$7 ] 2,002: zp[1]:49 [ bitmap_init::$8 ] 2,002: zp[1]:50 [ bitmap_init::$9 ] 500.5: zp[1]:47 [ bitmap_init::$10 ] +Uplift Scope [bitmap_line] 1,334.67: zp[1]:29 [ bitmap_line::xd#2 ] 1,334.67: zp[1]:32 [ bitmap_line::xd#1 ] 851: zp[1]:28 [ bitmap_line::x1#0 ] +Uplift Scope [init_screen] 3,336.67: zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] +Uplift Scope [] 303: zp[1]:2 [ next#4 next#1 ] Uplift Scope [main] -Uplifting [bitmap_plot] best 40165 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:39 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] zp[2]:37 [ bitmap_plot::plotter_x#0 ] zp[2]:41 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_plot] best 40165 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:39 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:37 [ bitmap_plot::plotter_x#0 ] zp[2]:41 [ bitmap_plot::plotter#0 ] Uplifting [bitmap_line_xdyi] best 39565 combination zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] zp[1]:35 [ bitmap_line_xdyi::xd#1 ] zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Uplifting [bitmap_line_xdyd] best 39565 combination zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Uplifting [bitmap_line_ydxi] best 39565 combination zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] zp[1]:33 [ bitmap_line_ydxi::xd#1 ] @@ -3487,9 +3487,9 @@ Uplifting [bitmap_line_ydxd] best 39565 combination zp[1]:16 [ bitmap_line_ydxd: Uplifting [bitmap_clear] best 38665 combination zp[2]:20 [ 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[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:44 [ bitmap_clear::bitmap#0 ] Uplifting [bitmap_init] best 38145 combination zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:48 [ bitmap_init::$7 ] zp[1]:49 [ bitmap_init::$8 ] zp[1]:50 [ bitmap_init::$9 ] zp[1]:47 [ bitmap_init::$10 ] Limited combination testing to 100 combinations of 34560 possible. -Uplifting [init_screen] best 38145 combination zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] -Uplifting [] best 38145 combination zp[1]:2 [ next#4 next#1 ] -Uplifting [bitmap_line] best 38089 combination reg byte x [ bitmap_line::x1#0 ] reg byte a [ bitmap_line::xd#2 ] reg byte a [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 38089 combination reg byte x [ bitmap_line::xd#2 ] reg byte x [ bitmap_line::xd#1 ] reg byte a [ bitmap_line::x1#0 ] +Uplifting [init_screen] best 38089 combination zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [] best 38089 combination zp[1]:2 [ next#4 next#1 ] Uplifting [main] best 38089 combination Attempting to uplift remaining variables inzp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] @@ -3515,8 +3515,16 @@ Attempting to uplift remaining variables inzp[1]:15 [ bitmap_line_ydxd::y#2 bitm Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Attempting to uplift remaining variables inzp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] -Attempting to uplift remaining variables inzp[1]:2 [ next#4 next#1 ] -Uplifting [] best 38089 combination zp[1]:2 [ next#4 next#1 ] +Attempting to uplift remaining variables inzp[1]:31 [ bitmap_line_xdyd::xd#0 ] +Uplifting [bitmap_line_xdyd] best 38089 combination zp[1]:31 [ bitmap_line_xdyd::xd#0 ] +Attempting to uplift remaining variables inzp[1]:35 [ bitmap_line_xdyi::xd#1 ] +Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:35 [ bitmap_line_xdyi::xd#1 ] +Attempting to uplift remaining variables inzp[1]:30 [ bitmap_line_ydxd::xd#0 ] +Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:30 [ bitmap_line_ydxd::xd#0 ] +Attempting to uplift remaining variables inzp[1]:33 [ bitmap_line_ydxi::xd#1 ] +Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:33 [ bitmap_line_ydxi::xd#1 ] +Attempting to uplift remaining variables inzp[1]:34 [ bitmap_line_xdyi::x1#1 ] +Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp[1]:48 [ bitmap_init::$7 ] Uplifting [bitmap_init] best 38029 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:49 [ bitmap_init::$8 ] @@ -3525,18 +3533,10 @@ Attempting to uplift remaining variables inzp[1]:50 [ bitmap_init::$9 ] Uplifting [bitmap_init] best 37909 combination reg byte a [ bitmap_init::$9 ] Attempting to uplift remaining variables inzp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Uplifting [bitmap_clear] best 37909 combination zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp[1]:31 [ bitmap_line_xdyd::xd#0 ] -Uplifting [bitmap_line_xdyd] best 37909 combination zp[1]:31 [ bitmap_line_xdyd::xd#0 ] -Attempting to uplift remaining variables inzp[1]:35 [ bitmap_line_xdyi::xd#1 ] -Uplifting [bitmap_line_xdyi] best 37909 combination zp[1]:35 [ bitmap_line_xdyi::xd#1 ] -Attempting to uplift remaining variables inzp[1]:30 [ bitmap_line_ydxd::xd#0 ] -Uplifting [bitmap_line_ydxd] best 37909 combination zp[1]:30 [ bitmap_line_ydxd::xd#0 ] -Attempting to uplift remaining variables inzp[1]:33 [ bitmap_line_ydxi::xd#1 ] -Uplifting [bitmap_line_ydxi] best 37909 combination zp[1]:33 [ bitmap_line_ydxi::xd#1 ] -Attempting to uplift remaining variables inzp[1]:34 [ bitmap_line_xdyi::x1#1 ] -Uplifting [bitmap_line_xdyi] best 37909 combination zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp[1]:47 [ bitmap_init::$10 ] Uplifting [bitmap_init] best 37909 combination zp[1]:47 [ bitmap_init::$10 ] +Attempting to uplift remaining variables inzp[1]:2 [ next#4 next#1 ] +Uplifting [] best 37909 combination zp[1]:2 [ next#4 next#1 ] Coalescing zero page register [ zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:44 [ bitmap_clear::bitmap#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:37 [ bitmap_plot::plotter_x#0 ] ] with [ zp[2]:41 [ bitmap_plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] with [ zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] ] @@ -3639,8 +3639,8 @@ main: { jmp __b1 // main::@1 __b1: - // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuxx=vbuz1 - ldx.z next + // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuaa=vbuz1 + lda.z next // [15] call bitmap_line jsr bitmap_line jmp __b4 @@ -3655,34 +3655,34 @@ main: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte register(X) x1) +// bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 - // [17] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuxx_then_la1 - cpx #x0 + // [17] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuaa_then_la1 + cmp #x0 beq !+ bcs __b1 !: jmp __b2 // bitmap_line::@2 __b2: - // [18] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuaa=vbuxx - txa + // [18] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa + tax jmp __b3 // bitmap_line::@3 __b3: - // [19] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuaa_then_la1 - cmp #y1 + // [19] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuxx_then_la1 + cpx #y1 beq !+ bcs __b4 !: jmp __b5 // bitmap_line::@5 __b5: - // [20] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuaa - sta.z bitmap_line_ydxd.xd + // [20] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx + stx.z bitmap_line_ydxd.xd // [21] call bitmap_line_ydxd jsr bitmap_line_ydxd jmp __breturn @@ -3692,10 +3692,10 @@ bitmap_line: { rts // bitmap_line::@4 __b4: - // [23] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyd.x - // [24] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuaa - sta.z bitmap_line_xdyd.xd + // [23] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa + sta.z bitmap_line_xdyd.x + // [24] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx + stx.z bitmap_line_xdyd.xd // [25] call bitmap_line_xdyd // [67] phi from bitmap_line::@4 to bitmap_line_xdyd [phi:bitmap_line::@4->bitmap_line_xdyd] bitmap_line_xdyd_from___b4: @@ -3703,30 +3703,30 @@ bitmap_line: { jmp __breturn // bitmap_line::@1 __b1: - // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuaa=vbuxx - txa + // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa + tax jmp __b6 // bitmap_line::@6 __b6: - // [27] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuaa_then_la1 - cmp #y1 + // [27] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuxx_then_la1 + cpx #y1 beq !+ bcs __b7 !: jmp __b8 // bitmap_line::@8 __b8: - // [28] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuaa - sta.z bitmap_line_ydxi.xd + // [28] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx + stx.z bitmap_line_ydxi.xd // [29] call bitmap_line_ydxi jsr bitmap_line_ydxi jmp __breturn // bitmap_line::@7 __b7: - // [30] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyi.x1 - // [31] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuaa - sta.z bitmap_line_xdyi.xd + // [30] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa + sta.z bitmap_line_xdyi.x1 + // [31] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx + stx.z bitmap_line_xdyi.xd // [32] call bitmap_line_xdyi // [33] phi from bitmap_line::@7 to bitmap_line_xdyi [phi:bitmap_line::@7->bitmap_line_xdyi] bitmap_line_xdyi_from___b7: @@ -4510,23 +4510,23 @@ FINAL SYMBOL TABLE (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:7 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:7 101.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 4200.6 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 15502.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 2103.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 15001.5 +(byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:6 16.5 -(byte) bitmap_clear::y#4 y zp[1]:6 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:6 1501.5 +(byte) bitmap_clear::y#4 y zp[1]:6 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:11 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 2002.0 +(byte~) bitmap_init::$10 zp[1]:11 500.5 +(byte~) bitmap_init::$7 reg byte a 2002.0 +(byte~) bitmap_init::$8 reg byte a 2002.0 +(byte~) bitmap_init::$9 reg byte a 2002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -4536,19 +4536,19 @@ FINAL SYMBOL TABLE (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 1001.0 +(byte) bitmap_init::bits#3 reg byte y 600.5999999999999 +(byte) bitmap_init::bits#4 reg byte y 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@2 @@ -4562,10 +4562,10 @@ FINAL SYMBOL TABLE (byte) bitmap_line::x0 (const byte) bitmap_line::x0#0 x0 = (byte) 0 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 reg byte x 3.5000000000000004 +(byte) bitmap_line::x1#0 reg byte a 851.0000000000001 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 reg byte a 2.6666666666666665 -(byte) bitmap_line::xd#2 reg byte a 2.6666666666666665 +(byte) bitmap_line::xd#1 reg byte x 1334.6666666666667 +(byte) bitmap_line::xd#2 reg byte x 1334.6666666666667 (byte) bitmap_line::y0 (const byte) bitmap_line::y0#0 y0 = (byte) 0 (byte) bitmap_line::y1 @@ -4578,45 +4578,45 @@ FINAL SYMBOL TABLE (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:5 40.4 -(byte) bitmap_line_xdyd::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_xdyd::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_xdyd::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::e#3 e zp[1]:5 400000.4 +(byte) bitmap_line_xdyd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 x zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyd::x#2 x zp[1]:3 43.285714285714285 -(byte) bitmap_line_xdyd::x#3 x zp[1]:3 76.25 +(byte) bitmap_line_xdyd::x#0 x zp[1]:3 3667.333333333333 +(byte) bitmap_line_xdyd::x#2 x zp[1]:3 428571.85714285716 +(byte) bitmap_line_xdyd::x#3 x zp[1]:3 752501.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 15.692307692307693 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 153923.3076923077 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#2 y zp[1]:4 101.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:4 57.714285714285715 -(byte) bitmap_line_xdyd::y#6 y zp[1]:4 151.5 +(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1000001.0 +(byte) bitmap_line_xdyd::y#3 y zp[1]:4 571429.1428571428 +(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1500001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyi::$6 reg byte x 2000002.0 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:5 40.4 -(byte) bitmap_line_xdyi::e#6 e zp[1]:5 101.0 +(byte) bitmap_line_xdyi::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_xdyi::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_xdyi::e#3 e zp[1]:5 400000.4 +(byte) bitmap_line_xdyi::e#6 e zp[1]:5 1000001.0 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#2 x zp[1]:3 37.875 -(byte) bitmap_line_xdyi::x#3 x zp[1]:3 75.75 +(byte) bitmap_line_xdyi::x#2 x zp[1]:3 375000.375 +(byte) bitmap_line_xdyi::x#3 x zp[1]:3 750000.75 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 6.866666666666667 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 66733.46666666667 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 14.571428571428573 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 142928.7857142857 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#2 y zp[1]:4 101.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:4 57.714285714285715 -(byte) bitmap_line_xdyi::y#6 y zp[1]:4 101.0 +(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1000001.0 +(byte) bitmap_line_xdyi::y#3 y zp[1]:4 571429.1428571428 +(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1000001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (label) bitmap_line_ydxd::@1 @@ -4625,20 +4625,20 @@ FINAL SYMBOL TABLE (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:5 40.8 -(byte) bitmap_line_ydxd::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_ydxd::e#0 e zp[1]:5 20002.0 +(byte) bitmap_line_ydxd::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_ydxd::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_ydxd::e#3 e zp[1]:5 402000.60000000003 +(byte) bitmap_line_ydxd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#2 x zp[1]:3 101.0 -(byte) bitmap_line_ydxd::x#3 x zp[1]:3 57.714285714285715 -(byte) bitmap_line_ydxd::x#6 x zp[1]:3 151.5 +(byte) bitmap_line_ydxd::x#2 x zp[1]:3 1000001.0 +(byte) bitmap_line_ydxd::x#3 x zp[1]:3 571429.1428571428 +(byte) bitmap_line_ydxd::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 8.076923076923077 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#2 y zp[1]:4 75.75 -(byte) bitmap_line_ydxd::y#3 y zp[1]:4 43.285714285714285 +(byte) bitmap_line_ydxd::y#2 y zp[1]:4 750000.75 +(byte) bitmap_line_ydxd::y#3 y zp[1]:4 428571.85714285716 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) @@ -4648,43 +4648,43 @@ FINAL SYMBOL TABLE (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:5 40.8 -(byte) bitmap_line_ydxi::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_ydxi::e#0 e zp[1]:5 20002.0 +(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_ydxi::e#3 e zp[1]:5 402000.60000000003 +(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#2 x zp[1]:3 101.0 -(byte) bitmap_line_ydxi::x#3 x zp[1]:3 57.714285714285715 -(byte) bitmap_line_ydxi::x#6 x zp[1]:3 151.5 +(byte) bitmap_line_ydxi::x#2 x zp[1]:3 1000001.0 +(byte) bitmap_line_ydxi::x#3 x zp[1]:3 571429.1428571428 +(byte) bitmap_line_ydxi::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 8.076923076923077 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#2 y zp[1]:4 43.285714285714285 -(byte) bitmap_line_ydxi::y#3 y zp[1]:4 75.75 +(byte) bitmap_line_ydxi::y#2 y zp[1]:4 428571.85714285716 +(byte) bitmap_line_ydxi::y#3 y zp[1]:4 750000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.0000002E7 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:7 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:7 5000000.5 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 1.0000001E7 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 2.0000002E7 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 101.0 -(byte) bitmap_plot::x#1 reg byte x 101.0 -(byte) bitmap_plot::x#2 reg byte x 101.0 -(byte) bitmap_plot::x#3 reg byte x 101.0 -(byte) bitmap_plot::x#4 reg byte x 102.5 +(byte) bitmap_plot::x#0 reg byte x 1000001.0 +(byte) bitmap_plot::x#1 reg byte x 1000001.0 +(byte) bitmap_plot::x#2 reg byte x 1000001.0 +(byte) bitmap_plot::x#3 reg byte x 1000001.0 +(byte) bitmap_plot::x#4 reg byte x 8500001.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 202.0 -(byte) bitmap_plot::y#1 reg byte y 202.0 -(byte) bitmap_plot::y#2 reg byte y 202.0 -(byte) bitmap_plot::y#3 reg byte y 202.0 -(byte) bitmap_plot::y#4 reg byte y 204.0 +(byte) bitmap_plot::y#0 reg byte y 2000002.0 +(byte) bitmap_plot::y#1 reg byte y 2000002.0 +(byte) bitmap_plot::y#2 reg byte y 2000002.0 +(byte) bitmap_plot::y#3 reg byte y 2000002.0 +(byte) bitmap_plot::y#4 reg byte y 1.2000003E7 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -4695,16 +4695,16 @@ FINAL SYMBOL TABLE (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:7 22.0 -(byte*) init_screen::c#2 c zp[2]:7 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:7 2002.0 +(byte*) init_screen::c#2 c zp[2]:7 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) next -(byte) next#1 next zp[1]:2 22.0 -(byte) next#4 next zp[1]:2 11.0 +(byte) next#1 next zp[1]:2 202.0 +(byte) next#4 next zp[1]:2 101.0 zp[1]:2 [ next#4 next#1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] @@ -4716,9 +4716,9 @@ reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ 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_line::x1#0 ] -reg byte a [ bitmap_line::xd#2 ] -reg byte a [ bitmap_line::xd#1 ] +reg byte a [ bitmap_line::x1#0 ] +reg byte x [ bitmap_line::xd#2 ] +reg byte x [ bitmap_line::xd#1 ] zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ] @@ -4797,8 +4797,8 @@ main: { // main::@1 __b1: // bitmap_line(0,next,0,100) - // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuxx=vbuz1 - ldx.z next + // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuaa=vbuz1 + lda.z next // [15] call bitmap_line jsr bitmap_line // main::@4 @@ -4811,32 +4811,32 @@ main: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte register(X) x1) +// bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // if(x0bitmap_line_xdyd] jsr bitmap_line_xdyd @@ -4857,29 +4857,29 @@ bitmap_line: { // bitmap_line::@1 __b1: // xd = x1-x0 - // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuaa=vbuxx - txa + // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa + tax // bitmap_line::@6 // if(ydbitmap_line_xdyi] jsr bitmap_line_xdyi diff --git a/src/test/ref/bitmap-line-anim-1.sym b/src/test/ref/bitmap-line-anim-1.sym index b18a22c82..5f0acb3c3 100644 --- a/src/test/ref/bitmap-line-anim-1.sym +++ b/src/test/ref/bitmap-line-anim-1.sym @@ -16,23 +16,23 @@ (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:7 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:7 101.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 4200.6 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 15502.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 2103.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 15001.5 +(byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:6 16.5 -(byte) bitmap_clear::y#4 y zp[1]:6 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:6 1501.5 +(byte) bitmap_clear::y#4 y zp[1]:6 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:11 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 2002.0 +(byte~) bitmap_init::$10 zp[1]:11 500.5 +(byte~) bitmap_init::$7 reg byte a 2002.0 +(byte~) bitmap_init::$8 reg byte a 2002.0 +(byte~) bitmap_init::$9 reg byte a 2002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -42,19 +42,19 @@ (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 1001.0 +(byte) bitmap_init::bits#3 reg byte y 600.5999999999999 +(byte) bitmap_init::bits#4 reg byte y 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@2 @@ -68,10 +68,10 @@ (byte) bitmap_line::x0 (const byte) bitmap_line::x0#0 x0 = (byte) 0 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 reg byte x 3.5000000000000004 +(byte) bitmap_line::x1#0 reg byte a 851.0000000000001 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 reg byte a 2.6666666666666665 -(byte) bitmap_line::xd#2 reg byte a 2.6666666666666665 +(byte) bitmap_line::xd#1 reg byte x 1334.6666666666667 +(byte) bitmap_line::xd#2 reg byte x 1334.6666666666667 (byte) bitmap_line::y0 (const byte) bitmap_line::y0#0 y0 = (byte) 0 (byte) bitmap_line::y1 @@ -84,45 +84,45 @@ (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:5 40.4 -(byte) bitmap_line_xdyd::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_xdyd::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_xdyd::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::e#3 e zp[1]:5 400000.4 +(byte) bitmap_line_xdyd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 x zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyd::x#2 x zp[1]:3 43.285714285714285 -(byte) bitmap_line_xdyd::x#3 x zp[1]:3 76.25 +(byte) bitmap_line_xdyd::x#0 x zp[1]:3 3667.333333333333 +(byte) bitmap_line_xdyd::x#2 x zp[1]:3 428571.85714285716 +(byte) bitmap_line_xdyd::x#3 x zp[1]:3 752501.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 15.692307692307693 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 153923.3076923077 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#2 y zp[1]:4 101.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:4 57.714285714285715 -(byte) bitmap_line_xdyd::y#6 y zp[1]:4 151.5 +(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1000001.0 +(byte) bitmap_line_xdyd::y#3 y zp[1]:4 571429.1428571428 +(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1500001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyi::$6 reg byte x 2000002.0 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:5 40.4 -(byte) bitmap_line_xdyi::e#6 e zp[1]:5 101.0 +(byte) bitmap_line_xdyi::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_xdyi::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_xdyi::e#3 e zp[1]:5 400000.4 +(byte) bitmap_line_xdyi::e#6 e zp[1]:5 1000001.0 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#2 x zp[1]:3 37.875 -(byte) bitmap_line_xdyi::x#3 x zp[1]:3 75.75 +(byte) bitmap_line_xdyi::x#2 x zp[1]:3 375000.375 +(byte) bitmap_line_xdyi::x#3 x zp[1]:3 750000.75 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 6.866666666666667 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 66733.46666666667 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 14.571428571428573 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 142928.7857142857 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#2 y zp[1]:4 101.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:4 57.714285714285715 -(byte) bitmap_line_xdyi::y#6 y zp[1]:4 101.0 +(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1000001.0 +(byte) bitmap_line_xdyi::y#3 y zp[1]:4 571429.1428571428 +(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1000001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (label) bitmap_line_ydxd::@1 @@ -131,20 +131,20 @@ (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:5 40.8 -(byte) bitmap_line_ydxd::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_ydxd::e#0 e zp[1]:5 20002.0 +(byte) bitmap_line_ydxd::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_ydxd::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_ydxd::e#3 e zp[1]:5 402000.60000000003 +(byte) bitmap_line_ydxd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#2 x zp[1]:3 101.0 -(byte) bitmap_line_ydxd::x#3 x zp[1]:3 57.714285714285715 -(byte) bitmap_line_ydxd::x#6 x zp[1]:3 151.5 +(byte) bitmap_line_ydxd::x#2 x zp[1]:3 1000001.0 +(byte) bitmap_line_ydxd::x#3 x zp[1]:3 571429.1428571428 +(byte) bitmap_line_ydxd::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 8.076923076923077 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#2 y zp[1]:4 75.75 -(byte) bitmap_line_ydxd::y#3 y zp[1]:4 43.285714285714285 +(byte) bitmap_line_ydxd::y#2 y zp[1]:4 750000.75 +(byte) bitmap_line_ydxd::y#3 y zp[1]:4 428571.85714285716 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) @@ -154,43 +154,43 @@ (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:5 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp[1]:5 202.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:5 40.8 -(byte) bitmap_line_ydxi::e#6 e zp[1]:5 151.5 +(byte) bitmap_line_ydxi::e#0 e zp[1]:5 20002.0 +(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1333334.6666666667 +(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2000002.0 +(byte) bitmap_line_ydxi::e#3 e zp[1]:5 402000.60000000003 +(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#2 x zp[1]:3 101.0 -(byte) bitmap_line_ydxi::x#3 x zp[1]:3 57.714285714285715 -(byte) bitmap_line_ydxi::x#6 x zp[1]:3 151.5 +(byte) bitmap_line_ydxi::x#2 x zp[1]:3 1000001.0 +(byte) bitmap_line_ydxi::x#3 x zp[1]:3 571429.1428571428 +(byte) bitmap_line_ydxi::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 8.076923076923077 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#2 y zp[1]:4 43.285714285714285 -(byte) bitmap_line_ydxi::y#3 y zp[1]:4 75.75 +(byte) bitmap_line_ydxi::y#2 y zp[1]:4 428571.85714285716 +(byte) bitmap_line_ydxi::y#3 y zp[1]:4 750000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.0000002E7 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:7 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:7 5000000.5 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 1.0000001E7 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 2.0000002E7 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 101.0 -(byte) bitmap_plot::x#1 reg byte x 101.0 -(byte) bitmap_plot::x#2 reg byte x 101.0 -(byte) bitmap_plot::x#3 reg byte x 101.0 -(byte) bitmap_plot::x#4 reg byte x 102.5 +(byte) bitmap_plot::x#0 reg byte x 1000001.0 +(byte) bitmap_plot::x#1 reg byte x 1000001.0 +(byte) bitmap_plot::x#2 reg byte x 1000001.0 +(byte) bitmap_plot::x#3 reg byte x 1000001.0 +(byte) bitmap_plot::x#4 reg byte x 8500001.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 202.0 -(byte) bitmap_plot::y#1 reg byte y 202.0 -(byte) bitmap_plot::y#2 reg byte y 202.0 -(byte) bitmap_plot::y#3 reg byte y 202.0 -(byte) bitmap_plot::y#4 reg byte y 204.0 +(byte) bitmap_plot::y#0 reg byte y 2000002.0 +(byte) bitmap_plot::y#1 reg byte y 2000002.0 +(byte) bitmap_plot::y#2 reg byte y 2000002.0 +(byte) bitmap_plot::y#3 reg byte y 2000002.0 +(byte) bitmap_plot::y#4 reg byte y 1.2000003E7 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -201,16 +201,16 @@ (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:7 22.0 -(byte*) init_screen::c#2 c zp[2]:7 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:7 2002.0 +(byte*) init_screen::c#2 c zp[2]:7 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) next -(byte) next#1 next zp[1]:2 22.0 -(byte) next#4 next zp[1]:2 11.0 +(byte) next#1 next zp[1]:2 202.0 +(byte) next#4 next zp[1]:2 101.0 zp[1]:2 [ next#4 next#1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] @@ -222,9 +222,9 @@ reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ 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_line::x1#0 ] -reg byte a [ bitmap_line::xd#2 ] -reg byte a [ bitmap_line::xd#1 ] +reg byte a [ bitmap_line::x1#0 ] +reg byte x [ bitmap_line::xd#2 ] +reg byte x [ bitmap_line::xd#1 ] zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ] diff --git a/src/test/ref/bitmap-line-anim-2.asm b/src/test/ref/bitmap-line-anim-2.asm index cb5efcf13..d31db2491 100644 --- a/src/test/ref/bitmap-line-anim-2.asm +++ b/src/test/ref/bitmap-line-anim-2.asm @@ -313,10 +313,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // = (word) bitmap_line::e1#1 from [170] (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 Inversing boolean not [228] (bool~) main::$4 ← (word) next#1 != (word) $140 from [227] (bool~) main::$3 ← (word) next#1 == (word) $140 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 -Alias (byte*) bitmap_gfx#25 = (byte*) bitmap_gfx#26 -Alias (byte*) bitmap_screen#24 = (byte*) bitmap_screen#25 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 -Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#23 -Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#22 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 -Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 -Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 -Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 -Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 (word) bitmap_line::x1#4 (word) bitmap_line::x#16 (word) bitmap_line::x1#3 (word) bitmap_line::x#10 (word) bitmap_line::x1#2 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 -Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 (word) bitmap_line::y1#2 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#5 (word) bitmap_line::y1#4 (word) bitmap_line::y#19 (word) bitmap_line::y1#3 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 -Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 -Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 -Alias (word) bitmap_line::y2#1 = (word) bitmap_line::y2#4 (word) bitmap_line::y2#8 (word) bitmap_line::y2#5 (word) bitmap_line::y2#2 (word) bitmap_line::y2#11 (word) bitmap_line::y2#10 -Alias (word) bitmap_line::x2#1 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#4 (word) bitmap_line::x2#2 (word) bitmap_line::x2#11 (word) bitmap_line::x2#10 (word) bitmap_line::x2#9 -Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 -Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 -Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 -Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 -Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 -Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 -Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 -Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 -Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 -Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 -Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 -Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 -Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 -Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 -Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 -Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 -Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 -Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 -Alias (word) bitmap_line::y2#6 = (word) bitmap_line::y2#9 (word) bitmap_line::y2#7 -Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 -Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 -Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 -Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 -Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 -Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 -Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 -Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 -Alias (word) bitmap_line::x2#5 = (word) bitmap_line::x2#6 (word) bitmap_line::x2#8 -Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 -Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 -Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 -Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 -Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 -Alias (word) sgn_u16::return#4 = (word) sgn_u16::return#7 -Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#15 -Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#19 (byte*) bitmap_screen#14 -Alias (word) next#10 = (word) next#12 (word) next#13 -Alias (byte*) bitmap_gfx#24 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 -Alias (byte*) bitmap_screen#23 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 -Alias (word) next#5 = (word) next#6 -Alias (byte*) bitmap_gfx#18 = (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#22 -Alias (byte*) bitmap_screen#17 = (byte*) bitmap_screen#18 (byte*) bitmap_screen#21 -Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 -Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 -Alias (word) next#3 = (word) next#7 (word) next#9 -Alias (word) next#0 = (word) next#11 -Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 -Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 -Alias (word) next#4 = (word) next#8 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::gfx#4 = bitmap_init::gfx#5 +Alias bitmap_gfx#25 = bitmap_gfx#26 +Alias bitmap_screen#24 = bitmap_screen#25 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0 +Alias bitmap_gfx#21 = bitmap_gfx#23 +Alias bitmap_screen#20 = bitmap_screen#22 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_gfx#16 = bitmap_gfx#17 +Alias bitmap_screen#15 = bitmap_screen#16 +Alias bitmap_init::yoffs#1 = bitmap_init::$10 +Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2 +Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2 +Alias bitmap_clear::col#0 = bitmap_clear::$1 +Alias bitmap_gfx#12 = bitmap_gfx#7 +Alias bitmap_plot::plotter#0 = bitmap_plot::$0 +Alias bitmap_line::x#0 = bitmap_line::x1#1 bitmap_line::x1#4 bitmap_line::x#16 bitmap_line::x1#3 bitmap_line::x#10 bitmap_line::x1#2 bitmap_line::x#19 bitmap_line::x#18 bitmap_line::x#17 bitmap_line::x#3 bitmap_line::x#14 bitmap_line::x#11 +Alias bitmap_line::y#0 = bitmap_line::y1#1 bitmap_line::y1#2 bitmap_line::y#16 bitmap_line::y#10 bitmap_line::y1#5 bitmap_line::y1#4 bitmap_line::y#19 bitmap_line::y1#3 bitmap_line::y#18 bitmap_line::y#17 bitmap_line::y#3 bitmap_line::y#14 bitmap_line::y#11 +Alias abs_u16::w#0 = bitmap_line::$0 +Alias abs_u16::return#0 = abs_u16::return#5 +Alias bitmap_line::y2#1 = bitmap_line::y2#4 bitmap_line::y2#8 bitmap_line::y2#5 bitmap_line::y2#2 bitmap_line::y2#11 bitmap_line::y2#10 +Alias bitmap_line::x2#1 = bitmap_line::x2#7 bitmap_line::x2#4 bitmap_line::x2#2 bitmap_line::x2#11 bitmap_line::x2#10 bitmap_line::x2#9 +Alias bitmap_line::dx#0 = bitmap_line::$1 bitmap_line::dx#1 bitmap_line::dx#10 bitmap_line::dx#7 bitmap_line::dx#2 bitmap_line::dx#13 bitmap_line::dx#3 +Alias abs_u16::w#1 = bitmap_line::$2 +Alias abs_u16::return#1 = abs_u16::return#6 +Alias bitmap_line::dy#0 = bitmap_line::$3 bitmap_line::dy#9 bitmap_line::dy#6 bitmap_line::dy#1 bitmap_line::dy#2 bitmap_line::dy#10 +Alias sgn_u16::w#0 = bitmap_line::$8 +Alias sgn_u16::return#0 = sgn_u16::return#5 +Alias bitmap_line::sx#0 = bitmap_line::$9 bitmap_line::sx#8 bitmap_line::sx#7 bitmap_line::sx#9 +Alias sgn_u16::w#1 = bitmap_line::$10 +Alias sgn_u16::return#1 = sgn_u16::return#6 +Alias bitmap_line::sy#0 = bitmap_line::$11 bitmap_line::sy#10 bitmap_line::sy#5 +Alias bitmap_plot::y#0 = bitmap_line::$15 +Alias bitmap_line::e1#0 = bitmap_line::$23 +Alias bitmap_line::e#0 = bitmap_line::$17 +Alias bitmap_plot::y#1 = bitmap_line::$18 +Alias bitmap_line::y#4 = bitmap_line::y#5 +Alias bitmap_line::sy#1 = bitmap_line::sy#3 bitmap_line::sy#8 +Alias bitmap_line::e#3 = bitmap_line::e#5 +Alias bitmap_line::dx#14 = bitmap_line::dx#4 bitmap_line::dx#8 +Alias bitmap_line::dy#3 = bitmap_line::dy#7 bitmap_line::dy#4 +Alias bitmap_line::y2#6 = bitmap_line::y2#9 bitmap_line::y2#7 +Alias bitmap_line::x#13 = bitmap_line::x#4 bitmap_line::x#5 +Alias bitmap_line::sx#1 = bitmap_line::sx#3 bitmap_line::sx#5 +Alias bitmap_line::e#1 = bitmap_line::e#4 +Alias bitmap_line::y#1 = bitmap_line::y#12 +Alias bitmap_plot::y#2 = bitmap_line::$13 +Alias bitmap_plot::y#3 = bitmap_line::$24 +Alias bitmap_line::x#7 = bitmap_line::x#8 +Alias bitmap_line::sx#11 = bitmap_line::sx#2 bitmap_line::sx#4 +Alias bitmap_line::e1#3 = bitmap_line::e1#5 +Alias bitmap_line::dy#13 = bitmap_line::dy#5 bitmap_line::dy#8 +Alias bitmap_line::dx#5 = bitmap_line::dx#9 bitmap_line::dx#6 +Alias bitmap_line::x2#5 = bitmap_line::x2#6 bitmap_line::x2#8 +Alias bitmap_line::y#15 = bitmap_line::y#8 bitmap_line::y#9 +Alias bitmap_line::sy#2 = bitmap_line::sy#4 bitmap_line::sy#7 +Alias bitmap_line::e1#1 = bitmap_line::e1#4 +Alias bitmap_line::x#15 = bitmap_line::x#2 +Alias abs_u16::w#2 = abs_u16::w#3 abs_u16::w#4 abs_u16::return#3 +Alias abs_u16::return#2 = abs_u16::$2 +Alias abs_u16::return#4 = abs_u16::return#7 +Alias sgn_u16::return#4 = sgn_u16::return#7 +Alias bitmap_gfx#0 = bitmap_gfx#20 bitmap_gfx#15 +Alias bitmap_screen#0 = bitmap_screen#19 bitmap_screen#14 +Alias next#10 = next#12 next#13 +Alias bitmap_gfx#24 = bitmap_gfx#3 bitmap_gfx#8 +Alias bitmap_screen#23 = bitmap_screen#3 bitmap_screen#8 +Alias next#5 = next#6 +Alias bitmap_gfx#18 = bitmap_gfx#19 bitmap_gfx#22 +Alias bitmap_screen#17 = bitmap_screen#18 bitmap_screen#21 +Alias bitmap_gfx#14 = bitmap_gfx#9 bitmap_gfx#4 +Alias bitmap_screen#13 = bitmap_screen#9 bitmap_screen#4 +Alias next#3 = next#7 next#9 +Alias next#0 = next#11 +Alias bitmap_gfx#10 = bitmap_gfx#5 +Alias bitmap_screen#10 = bitmap_screen#5 +Alias next#4 = next#8 Successful SSA optimization Pass2AliasElimination -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 -Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#25 -Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#24 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 -Alias (word) bitmap_line::y2#3 = (word) bitmap_line::y2#6 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 -Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 -Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 -Alias (word) bitmap_line::x2#3 = (word) bitmap_line::x2#5 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 -Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 -Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 -Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#18 -Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#17 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#4 +Alias bitmap_gfx#21 = bitmap_gfx#25 +Alias bitmap_screen#20 = bitmap_screen#24 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_gfx#11 = bitmap_gfx#16 +Alias bitmap_screen#11 = bitmap_screen#15 +Alias bitmap_line::y#1 = bitmap_line::y#6 +Alias bitmap_line::y2#3 = bitmap_line::y2#6 +Alias bitmap_line::sy#1 = bitmap_line::sy#6 +Alias bitmap_line::dx#11 = bitmap_line::dx#14 +Alias bitmap_line::dy#11 = bitmap_line::dy#3 +Alias bitmap_line::sx#1 = bitmap_line::sx#10 +Alias bitmap_line::x#15 = bitmap_line::x#9 +Alias bitmap_line::x2#3 = bitmap_line::x2#5 +Alias bitmap_line::sx#11 = bitmap_line::sx#6 +Alias bitmap_line::dy#12 = bitmap_line::dy#13 +Alias bitmap_line::dx#12 = bitmap_line::dx#5 +Alias bitmap_line::sy#2 = bitmap_line::sy#9 +Alias bitmap_gfx#14 = bitmap_gfx#18 +Alias bitmap_screen#13 = bitmap_screen#17 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -1460,7 +1460,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 +Alias bitmap_init::$7 = bitmap_init::$3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) bitmap_line::$4 [54] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24 Simple Condition (bool~) bitmap_line::$5 [120] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 @@ -1931,128 +1931,128 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 VARIABLE REGISTER WEIGHTS (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 4.0 -(byte~) abs_u16::$1 4.0 +(byte~) abs_u16::$0 20002.0 +(byte~) abs_u16::$1 20002.0 (word) abs_u16::return -(word) abs_u16::return#0 4.0 -(word) abs_u16::return#1 4.0 -(word) abs_u16::return#2 4.0 -(word) abs_u16::return#4 2.0 +(word) abs_u16::return#0 2002.0 +(word) abs_u16::return#1 2002.0 +(word) abs_u16::return#2 20002.0 +(word) abs_u16::return#4 5501.0 (word) abs_u16::w -(word) abs_u16::w#0 4.0 -(word) abs_u16::w#2 2.0 +(word) abs_u16::w#0 2002.0 +(word) abs_u16::w#2 7751.0 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (byte) bitmap_clear::bgcol (byte) bitmap_clear::col (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (word) bitmap_line::dx -(word) bitmap_line::dx#0 8.18421052631579 +(word) bitmap_line::dx#0 8000.184210526315 (word) bitmap_line::dy -(word) bitmap_line::dy#0 8.885714285714286 +(word) bitmap_line::dy#0 8685.914285714285 (word) bitmap_line::e -(word) bitmap_line::e#0 4.0 -(word) bitmap_line::e#1 134.66666666666666 -(word) bitmap_line::e#2 202.0 -(word) bitmap_line::e#3 40.8 -(word) bitmap_line::e#6 151.5 +(word) bitmap_line::e#0 2002.0 +(word) bitmap_line::e#1 133334.66666666666 +(word) bitmap_line::e#2 200002.0 +(word) bitmap_line::e#3 40200.600000000006 +(word) bitmap_line::e#6 150001.5 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 4.0 -(word) bitmap_line::e1#1 134.66666666666666 -(word) bitmap_line::e1#2 202.0 -(word) bitmap_line::e1#3 40.8 -(word) bitmap_line::e1#6 151.5 +(word) bitmap_line::e1#0 2002.0 +(word) bitmap_line::e1#1 133334.66666666666 +(word) bitmap_line::e1#2 200002.0 +(word) bitmap_line::e1#3 40200.600000000006 +(word) bitmap_line::e1#6 150001.5 (word) bitmap_line::sx -(word) bitmap_line::sx#0 7.03448275862069 +(word) bitmap_line::sx#0 6931.137931034482 (word) bitmap_line::sy -(word) bitmap_line::sy#0 7.846153846153847 +(word) bitmap_line::sy#0 7730.884615384615 (word) bitmap_line::x -(word) bitmap_line::x#1 101.0 -(word) bitmap_line::x#12 202.0 -(word) bitmap_line::x#13 57.714285714285715 -(word) bitmap_line::x#15 57.714285714285715 -(word) bitmap_line::x#6 102.0 -(word) bitmap_line::x#7 75.75 +(word) bitmap_line::x#1 100001.0 +(word) bitmap_line::x#12 200002.0 +(word) bitmap_line::x#13 57143.42857142857 +(word) bitmap_line::x#15 57143.42857142857 +(word) bitmap_line::x#6 100501.5 +(word) bitmap_line::x#7 75000.75 (word) bitmap_line::x1 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 3.8666666666666667 +(word) bitmap_line::x2#0 3403.4666666666667 (word) bitmap_line::y -(word) bitmap_line::y#1 57.714285714285715 -(word) bitmap_line::y#13 202.0 -(word) bitmap_line::y#15 43.285714285714285 -(word) bitmap_line::y#2 101.0 -(word) bitmap_line::y#4 50.5 -(word) bitmap_line::y#7 202.0 +(word) bitmap_line::y#1 57143.42857142857 +(word) bitmap_line::y#13 200002.0 +(word) bitmap_line::y#15 42857.57142857143 +(word) bitmap_line::y#2 100001.0 +(word) bitmap_line::y#4 50000.5 +(word) bitmap_line::y#7 200002.0 (word) bitmap_line::y1 (word) bitmap_line::y2 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 2000002.0 +(byte~) bitmap_plot::$2 2000002.0 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 500000.5 +(byte*) bitmap_plot::plotter#1 1500001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#1 202.0 -(word) bitmap_plot::x#2 4.0 -(word) bitmap_plot::x#3 202.0 -(word) bitmap_plot::x#4 52.0 +(word) bitmap_plot::x#1 200002.0 +(word) bitmap_plot::x#2 2002.0 +(word) bitmap_plot::x#3 200002.0 +(word) bitmap_plot::x#4 550251.25 (byte) bitmap_plot::y -(byte) bitmap_plot::y#1 101.0 -(byte) bitmap_plot::y#2 2.0 -(byte) bitmap_plot::y#3 101.0 -(byte) bitmap_plot::y#4 208.0 +(byte) bitmap_plot::y#1 100001.0 +(byte) bitmap_plot::y#2 1001.0 +(byte) bitmap_plot::y#3 100001.0 +(byte) bitmap_plot::y#4 2201005.0 (byte*) bitmap_screen (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (word) next -(word) next#1 11.0 -(word) next#3 22.0 -(word) next#5 11.0 +(word) next#1 101.0 +(word) next#3 202.0 +(word) next#5 101.0 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 4.0 -(byte~) sgn_u16::$1 4.0 +(byte~) sgn_u16::$0 20002.0 +(byte~) sgn_u16::$1 20002.0 (word) sgn_u16::return -(word) sgn_u16::return#0 4.0 -(word) sgn_u16::return#1 4.0 -(word) sgn_u16::return#4 1.0 +(word) sgn_u16::return#0 2002.0 +(word) sgn_u16::return#1 2002.0 +(word) sgn_u16::return#4 500.5 (word) sgn_u16::w -(word) sgn_u16::w#0 4.0 -(word) sgn_u16::w#2 4.0 +(word) sgn_u16::w#0 2002.0 +(word) sgn_u16::w#2 11002.0 Initial phi equivalence classes [ next#5 next#3 next#1 ] @@ -3083,117 +3083,111 @@ bitmap_init: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:65 [ bitmap_init::$4 ] has ALU potential. -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (word) bitmap_line::x2#0 ← (word) next#5 [ next#5 bitmap_line::x2#0 ] ( main:2 [ next#5 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [15] if((word) next#1!=(word) $140) goto main::@5 [ next#1 ] ( main:2 [ next#1 ] ) always clobbers reg byte a -Statement [18] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [20] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 abs_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [21] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [23] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [24] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [25] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [26] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [27] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [29] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [30] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [32] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [33] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [34] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [35] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [37] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [38] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (word) bitmap_line::x2#0 ← (word) next#5 [ next#5 bitmap_line::x2#0 ] ( main:2 [ next#5 bitmap_line::x2#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [15] if((word) next#1!=(word) $140) goto main::@5 [ next#1 ] ( main:2 [ next#1 ] { } ) always clobbers reg byte a +Statement [18] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [20] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 abs_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [21] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [23] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [24] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [25] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [26] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [27] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 bitmap_line::x2#0 next#5 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [29] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 bitmap_line::x2#0 next#5 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [30] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { next#5 = bitmap_line::x2#0 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [32] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { next#5 = bitmap_line::x2#0 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [33] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [34] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [35] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [37] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [38] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ] -Statement [40] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [41] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [42] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [44] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [46] if((word) bitmap_line::y#1!=(const word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [48] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [52] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [54] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [55] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [58] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [59] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [60] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [61] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [63] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [68] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [69] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [70] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:13::sgn_u16:28 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:13::sgn_u16:31 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [81] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [84] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::return#2 ] main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:10::memset:90 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [40] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [41] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [42] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [43] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [44] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [46] if((word) bitmap_line::y#1!=(const word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [48] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x#6 bitmap_plot::y#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [49] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_plot::y#2 bitmap_plot::x#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [52] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [54] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [55] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [57] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [58] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [59] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [60] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [61] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [63] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [67] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [68] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [69] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y +Statement [84] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:10::memset:90 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ memset::c#4 ] -Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:10::memset:88 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:10::memset:90 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:10::memset:88 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:10::memset:90 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ memset::c#4 ] -Statement [118] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [118] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (word) bitmap_line::x2#0 ← (word) next#5 [ next#5 bitmap_line::x2#0 ] ( main:2 [ next#5 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [15] if((word) next#1!=(word) $140) goto main::@5 [ next#1 ] ( main:2 [ next#1 ] ) always clobbers reg byte a -Statement [18] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [20] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 abs_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [21] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [23] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [24] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [25] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [26] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [27] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [29] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [30] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [32] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [33] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [34] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [35] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [37] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [38] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [41] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [42] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [44] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [46] if((word) bitmap_line::y#1!=(const word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [48] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [52] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [54] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [55] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [58] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [59] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [60] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [61] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [63] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [68] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [69] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [70] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:13::bitmap_plot:50 [ next#5 ] main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:13::bitmap_plot:65 [ next#5 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:13::sgn_u16:28 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:13::sgn_u16:31 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [81] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [84] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::return#2 ] main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:10::memset:90 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:10::memset:88 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:10::memset:90 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [118] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (word) bitmap_line::x2#0 ← (word) next#5 [ next#5 bitmap_line::x2#0 ] ( main:2 [ next#5 bitmap_line::x2#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [15] if((word) next#1!=(word) $140) goto main::@5 [ next#1 ] ( main:2 [ next#1 ] { } ) always clobbers reg byte a +Statement [18] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [20] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 abs_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [21] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [23] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [24] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [25] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [26] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [27] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 bitmap_line::x2#0 next#5 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [29] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 bitmap_line::x2#0 next#5 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [30] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { next#5 = bitmap_line::x2#0 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [32] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { next#5 = bitmap_line::x2#0 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [33] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [34] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [35] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [37] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [38] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [40] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [41] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [42] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [43] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [44] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [46] if((word) bitmap_line::y#1!=(const word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [48] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x#6 bitmap_plot::y#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [49] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_plot::y#2 bitmap_plot::x#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [52] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [54] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [55] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [57] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [58] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [59] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [60] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [61] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [63] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:13 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [67] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [68] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [69] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a +Statement [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:13::bitmap_plot:39 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:13::bitmap_plot:50 [ next#5 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:13::bitmap_plot:56 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:13::bitmap_plot:65 [ next#5 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y +Statement [84] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:13::abs_u16:19 [ next#5 bitmap_line::x2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::bitmap_line:13::abs_u16:22 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:10::memset:90 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:10::memset:88 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:10::memset:90 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:10::memset:88 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:10::memset:90 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [111] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [118] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ next#5 next#3 next#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:4 , Potential registers zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:6 , @@ -3236,32 +3230,32 @@ Potential registers zp[1]:66 [ bitmap_init::$5 ] : zp[1]:66 , reg byte a , reg b Potential registers zp[1]:67 [ bitmap_init::$6 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_line] 656.5: zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 596.18: zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 532.97: zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8.89: zp[2]:41 [ bitmap_line::dy#0 ] 8.18: zp[2]:37 [ bitmap_line::dx#0 ] 7.85: zp[2]:49 [ bitmap_line::sy#0 ] 7.03: zp[2]:45 [ bitmap_line::sx#0 ] 3.87: zp[2]:33 [ bitmap_line::x2#0 ] -Uplift Scope [bitmap_plot] 460: zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ] 412: zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ] 4: zp[2]:53 [ bitmap_plot::$1 ] 4: zp[1]:57 [ bitmap_plot::$2 ] 3: zp[2]:55 [ bitmap_plot::plotter#1 ] 1: zp[2]:51 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:65 [ bitmap_init::$4 ] 22: zp[1]:66 [ bitmap_init::$5 ] 22: zp[1]:67 [ bitmap_init::$6 ] 5.5: zp[1]:64 [ bitmap_init::$7 ] -Uplift Scope [memset] 41.33: zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:62 [ memset::end#0 ] 2: zp[2]:21 [ memset::num#2 ] 1.38: zp[1]:25 [ memset::c#4 ] 0: zp[2]:23 [ memset::str#3 ] -Uplift Scope [] 44: zp[2]:2 [ next#5 next#3 next#1 ] -Uplift Scope [abs_u16] 12: zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 4: zp[2]:35 [ abs_u16::return#0 ] 4: zp[2]:39 [ abs_u16::return#1 ] 4: zp[1]:60 [ abs_u16::$0 ] 4: zp[1]:61 [ abs_u16::$1 ] -Uplift Scope [sgn_u16] 8: zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 ] 4: zp[2]:43 [ sgn_u16::return#0 ] 4: zp[2]:47 [ sgn_u16::return#1 ] 4: zp[1]:58 [ sgn_u16::$0 ] 4: zp[1]:59 [ sgn_u16::$1 ] 1: zp[2]:17 [ sgn_u16::return#4 ] +Uplift Scope [bitmap_plot] 2,402,008: zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ] 2,000,002: zp[2]:53 [ bitmap_plot::$1 ] 2,000,002: zp[1]:57 [ bitmap_plot::$2 ] 1,500,001.5: zp[2]:55 [ bitmap_plot::plotter#1 ] 952,257.25: zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ] 500,000.5: zp[2]:51 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line] 650,006.5: zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 589,792.11: zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 525,540.77: zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 525,540.77: zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8,685.91: zp[2]:41 [ bitmap_line::dy#0 ] 8,000.18: zp[2]:37 [ bitmap_line::dx#0 ] 7,730.88: zp[2]:49 [ bitmap_line::sy#0 ] 6,931.14: zp[2]:45 [ bitmap_line::sx#0 ] 3,403.47: zp[2]:33 [ bitmap_line::x2#0 ] +Uplift Scope [abs_u16] 35,256: zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 20,002: zp[1]:60 [ abs_u16::$0 ] 20,002: zp[1]:61 [ abs_u16::$1 ] 2,002: zp[2]:35 [ abs_u16::return#0 ] 2,002: zp[2]:39 [ abs_u16::return#1 ] +Uplift Scope [sgn_u16] 20,002: zp[1]:58 [ sgn_u16::$0 ] 20,002: zp[1]:59 [ sgn_u16::$1 ] 13,004: zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 ] 2,002: zp[2]:43 [ sgn_u16::return#0 ] 2,002: zp[2]:47 [ sgn_u16::return#1 ] 500.5: zp[2]:17 [ sgn_u16::return#4 ] +Uplift Scope [memset] 35,672.33: zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:62 [ memset::end#0 ] 1,250.12: zp[1]:25 [ memset::c#4 ] 1,001: zp[2]:21 [ memset::num#2 ] 0: zp[2]:23 [ memset::str#3 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:65 [ bitmap_init::$4 ] 2,002: zp[1]:66 [ bitmap_init::$5 ] 2,002: zp[1]:67 [ bitmap_init::$6 ] 500.5: zp[1]:64 [ bitmap_init::$7 ] +Uplift Scope [] 404: zp[2]:2 [ next#5 next#3 next#1 ] Uplift Scope [bitmap_clear] Uplift Scope [main] -Uplifting [bitmap_line] best 37301 combination zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:41 [ bitmap_line::dy#0 ] zp[2]:37 [ bitmap_line::dx#0 ] zp[2]:49 [ bitmap_line::sy#0 ] zp[2]:45 [ bitmap_line::sx#0 ] zp[2]:33 [ bitmap_line::x2#0 ] -Uplifting [bitmap_plot] best 37090 combination zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ] zp[2]:53 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:55 [ bitmap_plot::plotter#1 ] zp[2]:51 [ bitmap_plot::plotter#0 ] -Uplifting [bitmap_init] best 36580 combination zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:66 [ bitmap_init::$5 ] zp[1]:67 [ bitmap_init::$6 ] zp[1]:64 [ bitmap_init::$7 ] +Uplifting [bitmap_plot] best 37088 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ] zp[2]:53 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:55 [ bitmap_plot::plotter#1 ] zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ] zp[2]:51 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_line] best 37088 combination zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:41 [ bitmap_line::dy#0 ] zp[2]:37 [ bitmap_line::dx#0 ] zp[2]:49 [ bitmap_line::sy#0 ] zp[2]:45 [ bitmap_line::sx#0 ] zp[2]:33 [ bitmap_line::x2#0 ] +Uplifting [abs_u16] best 37076 combination zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:35 [ abs_u16::return#0 ] zp[2]:39 [ abs_u16::return#1 ] +Uplifting [sgn_u16] best 37064 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:43 [ sgn_u16::return#0 ] zp[2]:47 [ sgn_u16::return#1 ] zp[2]:17 [ sgn_u16::return#4 ] +Uplifting [memset] best 37048 combination zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:62 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:21 [ memset::num#2 ] zp[2]:23 [ memset::str#3 ] +Uplifting [bitmap_init] best 36538 combination zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:66 [ bitmap_init::$5 ] zp[1]:67 [ bitmap_init::$6 ] zp[1]:64 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [memset] best 36564 combination zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:62 [ memset::end#0 ] zp[2]:21 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:23 [ memset::str#3 ] -Uplifting [] best 36564 combination zp[2]:2 [ next#5 next#3 next#1 ] -Uplifting [abs_u16] best 36552 combination zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] zp[2]:35 [ abs_u16::return#0 ] zp[2]:39 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] -Uplifting [sgn_u16] best 36540 combination zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:43 [ sgn_u16::return#0 ] zp[2]:47 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:17 [ sgn_u16::return#4 ] -Uplifting [bitmap_clear] best 36540 combination -Uplifting [main] best 36540 combination +Uplifting [] best 36538 combination zp[2]:2 [ next#5 next#3 next#1 ] +Uplifting [bitmap_clear] best 36538 combination +Uplifting [main] best 36538 combination Attempting to uplift remaining variables inzp[1]:66 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 36480 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 36478 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:67 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 36420 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 36418 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:64 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 36420 combination zp[1]:64 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 36418 combination zp[1]:64 [ bitmap_init::$7 ] Coalescing zero page register [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ] ] - score: 3 Coalescing zero page register [ zp[2]:2 [ next#5 next#3 next#1 ] ] with [ zp[2]:33 [ bitmap_line::x2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:17 [ sgn_u16::return#4 ] ] with [ zp[2]:43 [ sgn_u16::return#0 ] ] - score: 1 @@ -3787,11 +3781,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [70] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 - lda.z x - // [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [70] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuxx=_lo_vwuz1 + ldx.z x + // [71] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -4285,18 +4278,18 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte) WHITE = (byte) 1 (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 reg byte a 4.0 -(byte~) abs_u16::$1 reg byte a 4.0 +(byte~) abs_u16::$0 reg byte a 20002.0 +(byte~) abs_u16::$1 reg byte a 20002.0 (label) abs_u16::@1 (label) abs_u16::@return (word) abs_u16::return -(word) abs_u16::return#0 return zp[2]:8 4.0 -(word) abs_u16::return#1 return zp[2]:8 4.0 -(word) abs_u16::return#2 return zp[2]:8 4.0 -(word) abs_u16::return#4 return zp[2]:8 2.0 +(word) abs_u16::return#0 return zp[2]:8 2002.0 +(word) abs_u16::return#1 return zp[2]:8 2002.0 +(word) abs_u16::return#2 return zp[2]:8 20002.0 +(word) abs_u16::return#4 return zp[2]:8 5501.0 (word) abs_u16::w -(word) abs_u16::w#0 w zp[2]:8 4.0 -(word) abs_u16::w#2 w zp[2]:8 2.0 +(word) abs_u16::w#0 w zp[2]:8 2002.0 +(word) abs_u16::w#2 w zp[2]:8 7751.0 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (label) bitmap_clear::@1 (label) bitmap_clear::@return @@ -4306,10 +4299,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:24 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:24 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -4318,21 +4311,21 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -4354,64 +4347,64 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx -(word) bitmap_line::dx#0 dx zp[2]:16 8.18421052631579 +(word) bitmap_line::dx#0 dx zp[2]:16 8000.184210526315 (word) bitmap_line::dy -(word) bitmap_line::dy#0 dy zp[2]:8 8.885714285714286 +(word) bitmap_line::dy#0 dy zp[2]:8 8685.914285714285 (word) bitmap_line::e -(word) bitmap_line::e#0 e zp[2]:10 4.0 -(word) bitmap_line::e#1 e zp[2]:10 134.66666666666666 -(word) bitmap_line::e#2 e zp[2]:10 202.0 -(word) bitmap_line::e#3 e zp[2]:10 40.8 -(word) bitmap_line::e#6 e zp[2]:10 151.5 +(word) bitmap_line::e#0 e zp[2]:10 2002.0 +(word) bitmap_line::e#1 e zp[2]:10 133334.66666666666 +(word) bitmap_line::e#2 e zp[2]:10 200002.0 +(word) bitmap_line::e#3 e zp[2]:10 40200.600000000006 +(word) bitmap_line::e#6 e zp[2]:10 150001.5 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 e1 zp[2]:4 4.0 -(word) bitmap_line::e1#1 e1 zp[2]:4 134.66666666666666 -(word) bitmap_line::e1#2 e1 zp[2]:4 202.0 -(word) bitmap_line::e1#3 e1 zp[2]:4 40.8 -(word) bitmap_line::e1#6 e1 zp[2]:4 151.5 +(word) bitmap_line::e1#0 e1 zp[2]:4 2002.0 +(word) bitmap_line::e1#1 e1 zp[2]:4 133334.66666666666 +(word) bitmap_line::e1#2 e1 zp[2]:4 200002.0 +(word) bitmap_line::e1#3 e1 zp[2]:4 40200.600000000006 +(word) bitmap_line::e1#6 e1 zp[2]:4 150001.5 (word) bitmap_line::sx -(word) bitmap_line::sx#0 sx zp[2]:18 7.03448275862069 +(word) bitmap_line::sx#0 sx zp[2]:18 6931.137931034482 (word) bitmap_line::sy -(word) bitmap_line::sy#0 sy zp[2]:6 7.846153846153847 +(word) bitmap_line::sy#0 sy zp[2]:6 7730.884615384615 (word) bitmap_line::x -(word) bitmap_line::x#1 x zp[2]:14 101.0 -(word) bitmap_line::x#12 x zp[2]:14 202.0 -(word) bitmap_line::x#13 x zp[2]:14 57.714285714285715 -(word) bitmap_line::x#15 x zp[2]:14 57.714285714285715 -(word) bitmap_line::x#6 x zp[2]:14 102.0 -(word) bitmap_line::x#7 x zp[2]:14 75.75 +(word) bitmap_line::x#1 x zp[2]:14 100001.0 +(word) bitmap_line::x#12 x zp[2]:14 200002.0 +(word) bitmap_line::x#13 x zp[2]:14 57143.42857142857 +(word) bitmap_line::x#15 x zp[2]:14 57143.42857142857 +(word) bitmap_line::x#6 x zp[2]:14 100501.5 +(word) bitmap_line::x#7 x zp[2]:14 75000.75 (word) bitmap_line::x1 (const word) bitmap_line::x1#0 x1 = (byte) 0 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp[2]:2 3.8666666666666667 +(word) bitmap_line::x2#0 x2 zp[2]:2 3403.4666666666667 (word) bitmap_line::y -(word) bitmap_line::y#1 y zp[2]:12 57.714285714285715 -(word) bitmap_line::y#13 y zp[2]:12 202.0 -(word) bitmap_line::y#15 y zp[2]:12 43.285714285714285 -(word) bitmap_line::y#2 y zp[2]:12 101.0 -(word) bitmap_line::y#4 y zp[2]:12 50.5 -(word) bitmap_line::y#7 y zp[2]:12 202.0 +(word) bitmap_line::y#1 y zp[2]:12 57143.42857142857 +(word) bitmap_line::y#13 y zp[2]:12 200002.0 +(word) bitmap_line::y#15 y zp[2]:12 42857.57142857143 +(word) bitmap_line::y#2 y zp[2]:12 100001.0 +(word) bitmap_line::y#4 y zp[2]:12 50000.5 +(word) bitmap_line::y#7 y zp[2]:12 200002.0 (word) bitmap_line::y1 (const word) bitmap_line::y1#0 y1 = (byte) 0 (word) bitmap_line::y2 (const word) bitmap_line::y2#0 y2 = (byte) $64 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:22 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:22 2000002.0 +(byte~) bitmap_plot::$2 reg byte x 2000002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:20 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:20 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:20 500000.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:20 1500001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#1 x zp[2]:14 202.0 -(word) bitmap_plot::x#2 x zp[2]:14 4.0 -(word) bitmap_plot::x#3 x zp[2]:14 202.0 -(word) bitmap_plot::x#4 x zp[2]:14 52.0 +(word) bitmap_plot::x#1 x zp[2]:14 200002.0 +(word) bitmap_plot::x#2 x zp[2]:14 2002.0 +(word) bitmap_plot::x#3 x zp[2]:14 200002.0 +(word) bitmap_plot::x#4 x zp[2]:14 550251.25 (byte) bitmap_plot::y -(byte) bitmap_plot::y#1 reg byte x 101.0 -(byte) bitmap_plot::y#2 reg byte x 2.0 -(byte) bitmap_plot::y#3 reg byte x 101.0 -(byte) bitmap_plot::y#4 reg byte x 208.0 +(byte) bitmap_plot::y#1 reg byte x 100001.0 +(byte) bitmap_plot::y#2 reg byte x 1001.0 +(byte) bitmap_plot::y#3 reg byte x 100001.0 +(byte) bitmap_plot::y#4 reg byte x 2201005.0 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } @@ -4428,34 +4421,34 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:12 4.0 +(byte*) memset::dst#1 dst zp[2]:12 20002.0 +(byte*) memset::dst#2 dst zp[2]:12 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:12 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:10 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:10 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:10 2.0 +(word) memset::num#2 num zp[2]:10 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:12 (word) next -(word) next#1 next zp[2]:2 11.0 -(word) next#3 next zp[2]:2 22.0 -(word) next#5 next zp[2]:2 11.0 +(word) next#1 next zp[2]:2 101.0 +(word) next#3 next zp[2]:2 202.0 +(word) next#5 next zp[2]:2 101.0 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 reg byte a 4.0 -(byte~) sgn_u16::$1 reg byte a 4.0 +(byte~) sgn_u16::$0 reg byte a 20002.0 +(byte~) sgn_u16::$1 reg byte a 20002.0 (label) sgn_u16::@1 (label) sgn_u16::@return (word) sgn_u16::return -(word) sgn_u16::return#0 return zp[2]:6 4.0 -(word) sgn_u16::return#1 return zp[2]:6 4.0 -(word) sgn_u16::return#4 return zp[2]:6 1.0 +(word) sgn_u16::return#0 return zp[2]:6 2002.0 +(word) sgn_u16::return#1 return zp[2]:6 2002.0 +(word) sgn_u16::return#4 return zp[2]:6 500.5 (word) sgn_u16::w -(word) sgn_u16::w#0 w zp[2]:20 4.0 -(word) sgn_u16::w#2 w zp[2]:20 4.0 +(word) sgn_u16::w#0 w zp[2]:20 2002.0 +(word) sgn_u16::w#2 w zp[2]:20 11002.0 zp[2]:2 [ next#5 next#3 next#1 bitmap_line::x2#0 ] zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] @@ -4473,7 +4466,7 @@ zp[2]:16 [ bitmap_line::dx#0 ] zp[2]:18 [ bitmap_line::sx#0 ] zp[2]:20 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:22 [ bitmap_plot::$1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] reg byte a [ abs_u16::$0 ] @@ -4485,7 +4478,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 30188 +Score: 30186 // File Comments // Shows that bitmap2.kc line() does not have the same problem as bitmap-draw.kc @@ -4951,12 +4944,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::vx -(word) main::vx#1 vx zp[2]:5 22.0 -(word) main::vx#2 vx zp[2]:5 5.5 -(word) main::vx#6 vx zp[2]:5 5.5 +(word) main::vx#1 vx zp[2]:5 202.0 +(word) main::vx#2 vx zp[2]:5 50.5 +(word) main::vx#6 vx zp[2]:5 50.5 (byte) main::vy -(byte) main::vy#1 vy zp[1]:7 22.0 -(byte) main::vy#2 vy zp[1]:7 3.6666666666666665 -(byte) main::vy#8 vy zp[1]:7 16.5 +(byte) main::vy#1 vy zp[1]:7 202.0 +(byte) main::vy#2 vy zp[1]:7 33.666666666666664 +(byte) main::vy#8 vy zp[1]:7 151.5 (word) main::x -(word) main::x#1 x zp[2]:2 4.0 -(word) main::x#2 x zp[2]:2 8.25 +(word) main::x#1 x zp[2]:2 36.72727272727273 +(word) main::x#2 x zp[2]:2 75.75 (byte) main::y -(byte) main::y#1 y zp[1]:4 4.4 -(byte) main::y#2 y zp[1]:4 6.6000000000000005 +(byte) main::y#1 y zp[1]:4 40.4 +(byte) main::y#2 y zp[1]:4 60.599999999999994 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:9 22.0 -(byte*) memset::dst#2 dst zp[2]:9 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:9 4.0 +(byte*) memset::dst#1 dst zp[2]:9 20002.0 +(byte*) memset::dst#2 dst zp[2]:9 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:9 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:11 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:11 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:11 2.0 +(word) memset::num#2 num zp[2]:11 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:9 @@ -3145,7 +3142,7 @@ zp[1]:8 [ frame_cnt ] reg byte x [ bitmap_plot::y#0 ] zp[2]:9 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:11 [ bitmap_plot::$1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] zp[1]:13 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] @@ -3153,7 +3150,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 3177 +Score: 3175 // File Comments // Tests the simple bitmap plotter - and counts plots per frame in an IRQ @@ -3378,12 +3375,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::vx -(word) main::vx#1 vx zp[2]:5 22.0 -(word) main::vx#2 vx zp[2]:5 5.5 -(word) main::vx#6 vx zp[2]:5 5.5 +(word) main::vx#1 vx zp[2]:5 202.0 +(word) main::vx#2 vx zp[2]:5 50.5 +(word) main::vx#6 vx zp[2]:5 50.5 (byte) main::vy -(byte) main::vy#1 vy zp[1]:7 22.0 -(byte) main::vy#2 vy zp[1]:7 3.6666666666666665 -(byte) main::vy#8 vy zp[1]:7 16.5 +(byte) main::vy#1 vy zp[1]:7 202.0 +(byte) main::vy#2 vy zp[1]:7 33.666666666666664 +(byte) main::vy#8 vy zp[1]:7 151.5 (word) main::x -(word) main::x#1 x zp[2]:2 4.0 -(word) main::x#2 x zp[2]:2 8.25 +(word) main::x#1 x zp[2]:2 36.72727272727273 +(word) main::x#2 x zp[2]:2 75.75 (byte) main::y -(byte) main::y#1 y zp[1]:4 4.4 -(byte) main::y#2 y zp[1]:4 6.6000000000000005 +(byte) main::y#1 y zp[1]:4 40.4 +(byte) main::y#2 y zp[1]:4 60.599999999999994 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:9 22.0 -(byte*) memset::dst#2 dst zp[2]:9 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:9 4.0 +(byte*) memset::dst#1 dst zp[2]:9 20002.0 +(byte*) memset::dst#2 dst zp[2]:9 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:9 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:11 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:11 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:11 2.0 +(word) memset::num#2 num zp[2]:11 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:9 @@ -146,7 +146,7 @@ zp[1]:8 [ frame_cnt ] reg byte x [ bitmap_plot::y#0 ] zp[2]:9 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:11 [ bitmap_plot::$1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] zp[1]:13 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] diff --git a/src/test/ref/bitmap-plot-1.asm b/src/test/ref/bitmap-plot-1.asm index 7c82128a2..c520afa9a 100644 --- a/src/test/ref/bitmap-plot-1.asm +++ b/src/test/ref/bitmap-plot-1.asm @@ -269,10 +269,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (const dword) div32u16u::dividend#0 Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0 @@ -2454,7 +2454,7 @@ Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const signed word) sin16s_gen2::$1 Eliminating unused constant (const signed word) sin16s_gen2::offs#0 Successful SSA optimization PassNEliminateUnusedVars -Alias (signed word~) sin16s_gen2::$9 = (signed word~) sin16s_gen2::$8 +Alias sin16s_gen2::$9 = sin16s_gen2::$8 Successful SSA optimization Pass2AliasElimination Constant right-side identified [171] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -3222,250 +3222,250 @@ VARIABLE REGISTER WEIGHTS (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 2002.0 +(byte~) bitmap_plot::$2 2002.0 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 500.5 +(byte*) bitmap_plot::plotter#1 1501.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 3.75 +(word) bitmap_plot::x#0 525.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 7.5 +(byte) bitmap_plot::y#0 1051.5 (byte*) bitmap_screen (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 -(byte) frame_cnt loadstore 0.6382978723404255 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 +(byte) frame_cnt loadstore 4.46808510638298 (void()) init_irq() interrupt(HARDWARE_CLOBBER)(void()) irq() (void()) main() -(signed dword~) main::$11 22.0 -(word~) main::$12 22.0 -(word~) main::$22 22.0 -(word~) main::$23 22.0 -(signed word*~) main::$24 22.0 -(signed word*~) main::$25 22.0 -(signed dword~) main::$6 22.0 -(word~) main::$7 22.0 +(signed dword~) main::$11 202.0 +(word~) main::$12 202.0 +(word~) main::$22 202.0 +(word~) main::$23 202.0 +(signed word*~) main::$24 202.0 +(signed word*~) main::$25 202.0 +(signed dword~) main::$6 202.0 +(word~) main::$7 202.0 (signed word) main::cos_x -(signed word) main::cos_x#0 22.0 +(signed word) main::cos_x#0 202.0 (word) main::idx_x -(word) main::idx_x#1 11.0 -(word) main::idx_x#10 3.6666666666666665 -(word) main::idx_x#3 1.375 +(word) main::idx_x#1 101.0 +(word) main::idx_x#10 33.666666666666664 +(word) main::idx_x#3 12.625 (word) main::idx_y -(word) main::idx_y#1 11.0 -(word) main::idx_y#10 11.0 -(word) main::idx_y#3 1.1785714285714286 +(word) main::idx_y#1 101.0 +(word) main::idx_y#10 101.0 +(word) main::idx_y#3 10.821428571428571 (signed word) main::sin_y -(signed word) main::sin_y#0 22.0 +(signed word) main::sin_y#0 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (word) main::x -(word) main::x#0 1.8333333333333333 +(word) main::x#0 16.833333333333332 (signed dword) main::xpos -(signed dword) main::xpos#0 22.0 +(signed dword) main::xpos#0 202.0 (word) main::y -(word) main::y#0 11.0 +(word) main::y#0 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 22.0 +(signed dword) main::ypos#0 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 4.0 -(word~) mul16s::$16 4.0 -(word~) mul16s::$17 4.0 -(word~) mul16s::$9 4.0 +(word~) mul16s::$13 20002.0 +(word~) mul16s::$16 20002.0 +(word~) mul16s::$17 20002.0 +(word~) mul16s::$9 20002.0 (signed word) mul16s::a -(signed word) mul16s::a#0 22.0 -(signed word) mul16s::a#3 1.0 +(signed word) mul16s::a#0 2002.0 +(signed word) mul16s::a#3 846.3076923076923 (signed word) mul16s::b -(signed word) mul16s::b#1 22.0 -(signed word) mul16s::b#2 22.0 -(signed word) mul16s::b#3 2.1818181818181817 +(signed word) mul16s::b#1 202.0 +(signed word) mul16s::b#2 202.0 +(signed word) mul16s::b#3 927.5454545454545 (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 4.0 -(dword) mul16s::m#5 2.5 +(dword) mul16s::m#0 10001.0 +(dword) mul16s::m#1 20002.0 +(dword) mul16s::m#2 20002.0 +(dword) mul16s::m#4 20002.0 +(dword) mul16s::m#5 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 7.000000000000001 -(signed dword) mul16s::return#2 22.0 -(signed dword) mul16s::return#3 22.0 -(signed dword) mul16s::return#4 22.0 +(signed dword) mul16s::return#0 2240.8 +(signed dword) mul16s::return#2 2002.0 +(signed dword) mul16s::return#3 202.0 +(signed dword) mul16s::return#4 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 2.0 -(word) mul16u::a#2 2.0 -(word) mul16u::a#3 67.66666666666666 -(word) mul16u::a#6 3.0 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 10001.0 +(word) mul16u::a#2 100001.0 +(word) mul16u::a#3 6.683333416666667E7 +(word) mul16u::a#6 555001.5 (word) mul16u::b -(word) mul16u::b#0 4.0 -(word) mul16u::b#1 4.0 -(word) mul16u::b#2 4.0 +(word) mul16u::b#0 20002.0 +(word) mul16u::b#1 200002.0 +(word) mul16u::b#2 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 43.85714285714286 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 4.287285785714286E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 -(dword) mul16u::return#3 4.0 +(dword) mul16u::return#2 20002.0 +(dword) mul16u::return#3 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 22.0 -(word~) sin16s_gen2::$9 11.0 +(signed dword~) sin16s_gen2::$6 2002.0 +(word~) sin16s_gen2::$9 1001.0 (signed word) sin16s_gen2::ampl (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 22.0 -(word) sin16s_gen2::i#2 2.5384615384615383 +(word) sin16s_gen2::i#1 2002.0 +(word) sin16s_gen2::i#2 231.0 (signed word) sin16s_gen2::max (signed word) sin16s_gen2::min (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 3.0 +(signed word*) sin16s_gen2::sintab#0 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 0.8666666666666666 +(dword) sin16s_gen2::step#0 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 11.0 -(dword) sin16s_gen2::x#2 2.75 +(dword) sin16s_gen2::x#1 1001.0 +(dword) sin16s_gen2::x#2 250.25 Initial phi equivalence classes [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] @@ -5643,260 +5643,256 @@ REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[2]:84 [ main::$7 ] has ALU potential. Equivalence Class zp[2]:106 [ main::$12 ] has ALU potential. Equivalence Class zp[1]:140 [ bitmap_init::$4 ] has ALU potential. -Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [16] (word~) main::$22 ← (word) main::idx_x#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ) always clobbers reg byte a -Statement [17] (signed word*~) main::$24 ← (const signed word*) SINUS + (word~) main::$22 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ) always clobbers reg byte a -Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$24) [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ) always clobbers reg byte a reg byte y -Statement [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ) always clobbers reg byte a -Statement [21] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ) always clobbers reg byte a -Statement [22] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ) always clobbers reg byte a -Statement [23] (signed dword~) main::$6 ← (signed dword) main::xpos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ) always clobbers reg byte a -Statement [25] (word) main::x#0 ← (byte) $a0 + (word~) main::$7 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ) always clobbers reg byte a -Statement [26] (word~) main::$23 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ) always clobbers reg byte a -Statement [27] (signed word*~) main::$25 ← (const signed word*) SINUS + (word~) main::$23 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ) always clobbers reg byte a -Statement [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$25) [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ) always clobbers reg byte a reg byte y -Statement [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ) always clobbers reg byte a -Statement [31] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ) always clobbers reg byte a -Statement [32] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ) always clobbers reg byte a -Statement [33] (signed dword~) main::$11 ← (signed dword) main::ypos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ) always clobbers reg byte a -Statement [35] (word) main::y#0 ← (byte) $64 + (word~) main::$12 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] (byte) bitmap_plot::y#0 ← (byte)(word) main::y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [37] (word) bitmap_plot::x#0 ← (word) main::x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [16] (word~) main::$22 ← (word) main::idx_x#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [17] (signed word*~) main::$24 ← (const signed word*) SINUS + (word~) main::$22 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$24) [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y +Statement [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [21] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [22] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [23] (signed dword~) main::$6 ← (signed dword) main::xpos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [25] (word) main::x#0 ← (byte) $a0 + (word~) main::$7 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [26] (word~) main::$23 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [27] (signed word*~) main::$25 ← (const signed word*) SINUS + (word~) main::$23 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$25) [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y +Statement [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [31] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [32] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [33] (signed dword~) main::$11 ← (signed dword) main::ypos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [35] (word) main::y#0 ← (byte) $64 + (word~) main::$12 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [36] (byte) bitmap_plot::y#0 ← (byte)(word) main::y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [37] (word) bitmap_plot::x#0 ← (word) main::x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:110 [ bitmap_plot::y#0 ] -Statement [40] if((word) main::idx_x#1!=(word) $200) goto main::@12 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ( main:3 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ) always clobbers reg byte a -Statement [44] if((word) main::idx_y#1!=(word) $200) goto main::@13 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [47] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#10 main::idx_y#10 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#10 ] ) always clobbers reg byte x -Statement [48] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [49] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [50] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [51] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 ] ) always clobbers reg byte a reg byte y -Statement [55] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ) always clobbers reg byte a -Statement [56] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [58] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ) always clobbers reg byte a -Statement [59] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [60] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [61] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [62] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [63] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ) always clobbers reg byte a -Statement [65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] ) always clobbers reg byte a -Statement [66] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [67] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#5 mul16s::$17 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#5 mul16s::$17 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [68] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#2 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#2 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] ) always clobbers reg byte a -Statement [70] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [73] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [40] if((word) main::idx_x#1!=(word) $200) goto main::@12 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ( main:3 [ frame_cnt main::idx_y#3 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [44] if((word) main::idx_y#1!=(word) $200) goto main::@13 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#10 main::idx_y#10 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#10 ] { } ) always clobbers reg byte x +Statement [48] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [49] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [50] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a reg byte y +Statement [55] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [56] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [58] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [59] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [60] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [61] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [62] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [63] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [66] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [67] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#5 mul16s::$17 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#5 mul16s::$17 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [68] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [70] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [73] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp[1]:57 [ mulu16_sel::select#5 ] -Statement [75] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [77] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [79] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [84] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [85] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [86] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [87] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [88] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [89] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [90] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [99] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [75] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [77] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [79] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [84] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [85] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [86] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [87] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [88] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [89] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [90] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [99] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ memset::c#4 ] -Statement [100] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [101] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [103] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [100] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [103] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:30 [ memset::c#4 ] -Statement [124] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [124] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [131] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] ) always clobbers reg byte a -Statement [132] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [134] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [142] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [143] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [148] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [149] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [151] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [152] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [154] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [157] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [159] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [162] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [166] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [168] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [169] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [170] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [171] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [172] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [174] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [175] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [176] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [177] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [179] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [180] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [181] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [182] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [184] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [187] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [192] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [193] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [194] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [199] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [200] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [201] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [203] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [204] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [205] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::return#0 ] ) always clobbers reg byte a -Statement [210] (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:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [131] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [132] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [134] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [142] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [143] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [148] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [149] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [151] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [152] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [154] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [156] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [157] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [160] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [162] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [166] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [168] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [169] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [171] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [172] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [174] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [175] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [176] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [177] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [179] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [180] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [181] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [182] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [184] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [187] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [192] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [193] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [194] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [199] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [200] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [203] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [204] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [205] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [213] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:64 [ divr16u::i#2 divr16u::i#1 ] -Statement [213] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [217] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [219] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [223] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [225] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [226] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [228] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [229] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [230] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [16] (word~) main::$22 ← (word) main::idx_x#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ) always clobbers reg byte a -Statement [17] (signed word*~) main::$24 ← (const signed word*) SINUS + (word~) main::$22 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ) always clobbers reg byte a -Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$24) [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ) always clobbers reg byte a reg byte y -Statement [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ) always clobbers reg byte a -Statement [21] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ) always clobbers reg byte a -Statement [22] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ) always clobbers reg byte a -Statement [23] (signed dword~) main::$6 ← (signed dword) main::xpos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ) always clobbers reg byte a -Statement [25] (word) main::x#0 ← (byte) $a0 + (word~) main::$7 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ) always clobbers reg byte a -Statement [26] (word~) main::$23 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ) always clobbers reg byte a -Statement [27] (signed word*~) main::$25 ← (const signed word*) SINUS + (word~) main::$23 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ) always clobbers reg byte a -Statement [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$25) [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ) always clobbers reg byte a reg byte y -Statement [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ) always clobbers reg byte a -Statement [31] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ) always clobbers reg byte a -Statement [32] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ) always clobbers reg byte a -Statement [33] (signed dword~) main::$11 ← (signed dword) main::ypos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ) always clobbers reg byte a -Statement [35] (word) main::y#0 ← (byte) $64 + (word~) main::$12 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] (byte) bitmap_plot::y#0 ← (byte)(word) main::y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [37] (word) bitmap_plot::x#0 ← (word) main::x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [40] if((word) main::idx_x#1!=(word) $200) goto main::@12 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ( main:3 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ) always clobbers reg byte a -Statement [44] if((word) main::idx_y#1!=(word) $200) goto main::@13 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [47] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#10 main::idx_y#10 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#10 ] ) always clobbers reg byte x -Statement [48] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [49] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [50] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [51] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 ] ) always clobbers reg byte a reg byte y -Statement [55] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ) always clobbers reg byte a -Statement [56] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [58] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ) always clobbers reg byte a -Statement [59] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [60] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [61] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [62] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [63] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ) always clobbers reg byte a -Statement [65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] ) always clobbers reg byte a -Statement [66] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [67] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#5 mul16s::$17 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#5 mul16s::$17 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [68] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#2 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#2 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] ) always clobbers reg byte a -Statement [70] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#0 ] main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#0 ] main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [73] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [75] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [77] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [79] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [84] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [85] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [86] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [87] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [88] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [89] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [90] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [99] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [100] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [101] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [103] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [117] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [124] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [131] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] ) always clobbers reg byte a -Statement [132] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [134] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [142] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [143] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [148] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [149] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [151] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [152] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [154] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [157] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [159] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [162] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [166] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [168] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [169] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [170] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [171] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [172] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [174] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [175] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [176] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [177] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [179] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [180] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [181] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [182] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [184] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [187] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [192] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [193] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [194] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [199] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [200] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [201] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [203] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [204] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [205] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::return#0 ] ) always clobbers reg byte a -Statement [210] (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:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [213] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [217] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [219] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [223] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [225] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [226] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [228] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [229] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [230] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [217] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [219] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [223] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [225] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [226] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [228] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [229] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [230] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [16] (word~) main::$22 ← (word) main::idx_x#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$22 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [17] (signed word*~) main::$24 ← (const signed word*) SINUS + (word~) main::$22 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$24 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$24) [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::cos_x#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y +Statement [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::b#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [21] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#3 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [22] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::xpos#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [23] (signed dword~) main::$6 ← (signed dword) main::xpos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$6 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [25] (word) main::x#0 ← (byte) $a0 + (word~) main::$7 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [26] (word~) main::$23 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$23 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [27] (signed word*~) main::$25 ← (const signed word*) SINUS + (word~) main::$23 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$25 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$25) [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::sin_y#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y +Statement [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::b#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [31] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#4 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [32] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::ypos#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [33] (signed dword~) main::$11 ← (signed dword) main::ypos#0 << (signed byte) 4 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::$11 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [35] (word) main::y#0 ← (byte) $64 + (word~) main::$12 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 main::y#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [36] (byte) bitmap_plot::y#0 ← (byte)(word) main::y#0 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 bitmap_plot::y#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [37] (word) bitmap_plot::x#0 ← (word) main::x#0 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::y#0 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [40] if((word) main::idx_x#1!=(word) $200) goto main::@12 [ frame_cnt main::idx_y#3 main::idx_x#1 ] ( main:3 [ frame_cnt main::idx_y#3 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [44] if((word) main::idx_y#1!=(word) $200) goto main::@13 [ frame_cnt main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#10 main::idx_y#10 ] ( main:3 [ frame_cnt main::idx_x#10 main::idx_y#10 ] { } ) always clobbers reg byte x +Statement [48] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [49] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [50] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a +Statement [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:38 [ frame_cnt main::idx_x#3 main::idx_y#3 ] { { bitmap_plot::x#0 = main::x#0 } } ) always clobbers reg byte a reg byte y +Statement [55] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [56] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [58] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [59] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [60] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [61] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [62] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [63] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [66] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [67] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#5 mul16s::$17 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#5 mul16s::$17 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [68] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::m#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::m#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [70] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:20 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::return#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:30 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::return#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:140 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [73] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [75] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [77] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [79] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:20::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:30::mul16u:57 [ frame_cnt main::idx_x#3 main::idx_y#3 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:140::mul16u:57 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178::mul16u:191 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [84] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [85] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [86] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [87] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [88] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [89] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [90] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [99] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [100] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [103] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:94 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:96 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [117] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [124] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [131] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [132] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [134] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [142] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [143] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [148] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [149] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [151] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [152] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [154] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [156] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [157] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [160] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [162] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [166] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [168] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [169] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [171] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [172] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [174] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [175] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [176] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [177] (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:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [179] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [180] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [181] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [182] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [184] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [187] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:137 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [192] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [193] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [194] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:158 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:163 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:173 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:137::mulu16_sel:178 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [199] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [200] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [203] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [204] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [205] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:130 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [213] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [217] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [219] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [223] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:130::divr16u:198 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:130::divr16u:202 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [225] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [226] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [228] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [229] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [230] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ mul16s::a#3 mul16s::a#0 ] : zp[2]:6 , @@ -5997,46 +5993,46 @@ Potential registers zp[1]:222 [ divr16u::$2 ] : zp[1]:222 , reg byte a , reg byt Potential registers zp[2]:223 [ rem16u#1 ] : zp[2]:223 , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 346.86: zp[4]:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:136 [ mul16u::$1 ] 175.67: zp[2]:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 12: zp[2]:14 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 4: zp[4]:120 [ mul16u::return#2 ] 4: zp[4]:195 [ mul16u::return#3 ] -Uplift Scope [main] 23.18: zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] 22: zp[2]:66 [ main::$22 ] 22: zp[2]:68 [ main::$24 ] 22: zp[2]:70 [ main::cos_x#0 ] 22: zp[4]:76 [ main::xpos#0 ] 22: zp[4]:80 [ main::$6 ] 22: zp[2]:84 [ main::$7 ] 22: zp[2]:88 [ main::$23 ] 22: zp[2]:90 [ main::$25 ] 22: zp[2]:92 [ main::sin_y#0 ] 22: zp[4]:98 [ main::ypos#0 ] 22: zp[4]:102 [ main::$11 ] 22: zp[2]:106 [ main::$12 ] 16.04: zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] 11: zp[2]:108 [ main::y#0 ] 1.83: zp[2]:86 [ main::x#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:58 [ 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[2]:62 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:221 [ divr16u::$1 ] 22: zp[1]:222 [ divr16u::$2 ] 18.19: zp[1]:64 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:60 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:209 [ divr16u::return#2 ] 4: zp[2]:213 [ divr16u::return#3 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:34 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:35 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:140 [ bitmap_init::$4 ] 22: zp[1]:141 [ bitmap_init::$5 ] 22: zp[1]:142 [ bitmap_init::$6 ] 5.5: zp[1]:139 [ bitmap_init::$7 ] -Uplift Scope [mul16s] 46.18: zp[2]:8 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] 23: zp[2]:6 [ mul16s::a#3 mul16s::a#0 ] 22: zp[4]:72 [ mul16s::return#3 ] 22: zp[4]:94 [ mul16s::return#4 ] 22: zp[4]:153 [ mul16s::return#2 ] 16.5: zp[4]:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 7: zp[4]:132 [ mul16s::return#0 ] 4: zp[2]:124 [ mul16s::$9 ] 4: zp[2]:126 [ mul16s::$16 ] 4: zp[2]:128 [ mul16s::$13 ] 4: zp[2]:130 [ mul16s::$17 ] -Uplift Scope [sin16s] 27.5: zp[4]:47 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:151 [ sin16s::return#0 ] 13: zp[2]:51 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:163 [ sin16s::$4 ] 4: zp[2]:171 [ sin16s::x2#0 ] 4: zp[2]:179 [ sin16s::x3_6#0 ] 4: zp[2]:185 [ sin16s::x4#0 ] 4: zp[2]:189 [ sin16s::x5#0 ] 4: zp[2]:191 [ sin16s::x5_128#0 ] 1: zp[2]:175 [ sin16s::x3#0 ] 1: zp[2]:193 [ sin16s::usinx#1 ] 0.64: zp[2]:167 [ sin16s::x1#0 ] 0.33: zp[2]:181 [ sin16s::usinx#0 ] 0.06: zp[1]:46 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen2] 24.54: zp[2]:38 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 22: zp[4]:157 [ sin16s_gen2::$6 ] 13.75: zp[4]:40 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 11: zp[2]:161 [ sin16s_gen2::$9 ] 10.33: zp[2]:44 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.87: zp[4]:147 [ sin16s_gen2::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]:53 [ 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[2]:55 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:169 [ mulu16_sel::return#0 ] 4: zp[2]:173 [ mulu16_sel::return#1 ] 4: zp[2]:177 [ mulu16_sel::return#2 ] 4: zp[2]:183 [ mulu16_sel::return#10 ] 4: zp[2]:187 [ mulu16_sel::return#11 ] 4: zp[4]:199 [ mulu16_sel::$0 ] 4: zp[4]:203 [ mulu16_sel::$1 ] 1.71: zp[2]:207 [ mulu16_sel::return#12 ] 0.33: zp[1]:57 [ mulu16_sel::select#5 ] -Uplift Scope [memset] 41.33: zp[2]:31 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:137 [ memset::end#0 ] 2: zp[2]:26 [ memset::num#2 ] 1.38: zp[1]:30 [ memset::c#4 ] 0: zp[2]:28 [ memset::str#3 ] -Uplift Scope [bitmap_plot] 7.5: zp[1]:110 [ bitmap_plot::y#0 ] 4: zp[2]:115 [ bitmap_plot::$1 ] 4: zp[1]:119 [ bitmap_plot::$2 ] 3.75: zp[2]:111 [ bitmap_plot::x#0 ] 3: zp[2]:117 [ bitmap_plot::plotter#1 ] 1: zp[2]:113 [ bitmap_plot::plotter#0 ] -Uplift Scope [div32u16u] 4: zp[4]:143 [ div32u16u::return#2 ] 4: zp[2]:215 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:217 [ div32u16u::return#0 ] 0.8: zp[2]:211 [ div32u16u::quotient_hi#0 ] -Uplift Scope [] 0.8: zp[2]:223 [ rem16u#1 ] 0.64: zp[1]:65 [ frame_cnt ] +Uplift Scope [mul16u] 342,872,860.86: zp[4]:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:136 [ mul16u::$1 ] 167,498,338.67: zp[2]:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 330,006: zp[2]:14 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 200,002: zp[4]:195 [ mul16u::return#3 ] 20,002: zp[4]:120 [ mul16u::return#2 ] +Uplift Scope [divr16u] 901,347.42: zp[2]:58 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 318,146.32: zp[2]:62 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:221 [ divr16u::$1 ] 200,002: zp[1]:222 [ divr16u::$2 ] 165,386.27: zp[1]:64 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:60 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:209 [ divr16u::return#2 ] 2,002: zp[2]:213 [ divr16u::return#3 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]:53 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 200,002: zp[4]:199 [ mulu16_sel::$0 ] 200,002: zp[4]:203 [ mulu16_sel::$1 ] 150,010.5: zp[2]:55 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:207 [ mulu16_sel::return#12 ] 20,002: zp[2]:169 [ mulu16_sel::return#0 ] 20,002: zp[2]:173 [ mulu16_sel::return#1 ] 20,002: zp[2]:177 [ mulu16_sel::return#2 ] 20,002: zp[2]:183 [ mulu16_sel::return#10 ] 20,002: zp[2]:187 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:57 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:47 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:51 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:163 [ sin16s::$4 ] 20,002: zp[2]:171 [ sin16s::x2#0 ] 20,002: zp[2]:179 [ sin16s::x3_6#0 ] 20,002: zp[2]:185 [ sin16s::x4#0 ] 20,002: zp[2]:189 [ sin16s::x5#0 ] 20,002: zp[2]:191 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:175 [ sin16s::x3#0 ] 5,000.5: zp[2]:193 [ sin16s::usinx#1 ] 3,182.14: zp[2]:167 [ sin16s::x1#0 ] 2,002: zp[2]:151 [ sin16s::return#0 ] 1,666.83: zp[2]:181 [ sin16s::usinx#0 ] 303.06: zp[1]:46 [ sin16s::isUpper#2 ] +Uplift Scope [mul16s] 82,508.25: zp[4]:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 20,002: zp[2]:124 [ mul16s::$9 ] 20,002: zp[2]:126 [ mul16s::$16 ] 20,002: zp[2]:128 [ mul16s::$13 ] 20,002: zp[2]:130 [ mul16s::$17 ] 2,848.31: zp[2]:6 [ mul16s::a#3 mul16s::a#0 ] 2,240.8: zp[4]:132 [ mul16s::return#0 ] 2,002: zp[4]:153 [ mul16s::return#2 ] 1,331.55: zp[2]:8 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] 202: zp[4]:72 [ mul16s::return#3 ] 202: zp[4]:94 [ mul16s::return#4 ] +Uplift Scope [memset] 35,672.33: zp[2]:31 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:137 [ memset::end#0 ] 1,250.12: zp[1]:30 [ memset::c#4 ] 1,001: zp[2]:26 [ memset::num#2 ] 0: zp[2]:28 [ memset::str#3 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:34 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:35 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:140 [ bitmap_init::$4 ] 2,002: zp[1]:141 [ bitmap_init::$5 ] 2,002: zp[1]:142 [ bitmap_init::$6 ] 500.5: zp[1]:139 [ bitmap_init::$7 ] +Uplift Scope [bitmap_plot] 2,002: zp[2]:115 [ bitmap_plot::$1 ] 2,002: zp[1]:119 [ bitmap_plot::$2 ] 1,501.5: zp[2]:117 [ bitmap_plot::plotter#1 ] 1,051.5: zp[1]:110 [ bitmap_plot::y#0 ] 525.75: zp[2]:111 [ bitmap_plot::x#0 ] 500.5: zp[2]:113 [ bitmap_plot::plotter#0 ] +Uplift Scope [sin16s_gen2] 2,233: zp[2]:38 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 2,002: zp[4]:157 [ sin16s_gen2::$6 ] 1,251.25: zp[4]:40 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 1,001: zp[2]:161 [ sin16s_gen2::$9 ] 940.33: zp[2]:44 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 73.47: zp[4]:147 [ sin16s_gen2::step#0 ] +Uplift Scope [div32u16u] 2,002: zp[2]:215 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:211 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:217 [ div32u16u::return#0 ] 202: zp[4]:143 [ div32u16u::return#2 ] +Uplift Scope [main] 212.82: zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] 202: zp[2]:66 [ main::$22 ] 202: zp[2]:68 [ main::$24 ] 202: zp[2]:70 [ main::cos_x#0 ] 202: zp[4]:76 [ main::xpos#0 ] 202: zp[4]:80 [ main::$6 ] 202: zp[2]:84 [ main::$7 ] 202: zp[2]:88 [ main::$23 ] 202: zp[2]:90 [ main::$25 ] 202: zp[2]:92 [ main::sin_y#0 ] 202: zp[4]:98 [ main::ypos#0 ] 202: zp[4]:102 [ main::$11 ] 202: zp[2]:106 [ main::$12 ] 147.29: zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] 101: zp[2]:108 [ main::y#0 ] 16.83: zp[2]:86 [ main::x#0 ] +Uplift Scope [] 2,200.4: zp[2]:223 [ rem16u#1 ] 4.47: zp[1]:65 [ frame_cnt ] Uplift Scope [bitmap_clear] Uplift Scope [init_irq] Uplift Scope [irq] -Uplifting [mul16u] best 27641 combination zp[4]:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:14 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:120 [ mul16u::return#2 ] zp[4]:195 [ mul16u::return#3 ] -Uplifting [main] best 27401 combination zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:66 [ main::$22 ] zp[2]:68 [ main::$24 ] zp[2]:70 [ main::cos_x#0 ] zp[4]:76 [ main::xpos#0 ] zp[4]:80 [ main::$6 ] reg byte alu [ main::$7 ] zp[2]:88 [ main::$23 ] zp[2]:90 [ main::$25 ] zp[2]:92 [ main::sin_y#0 ] zp[4]:98 [ main::ypos#0 ] zp[4]:102 [ main::$11 ] reg byte alu [ main::$12 ] zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] zp[2]:108 [ main::y#0 ] zp[2]:86 [ main::x#0 ] -Uplifting [divr16u] best 27191 combination zp[2]:58 [ 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[2]:62 [ 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[2]:60 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:209 [ divr16u::return#2 ] zp[2]:213 [ divr16u::return#3 ] -Uplifting [bitmap_init] best 26681 combination zp[2]:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:141 [ bitmap_init::$5 ] zp[1]:142 [ bitmap_init::$6 ] zp[1]:139 [ bitmap_init::$7 ] +Uplifting [mul16u] best 27641 combination zp[4]:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:14 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:195 [ mul16u::return#3 ] zp[4]:120 [ mul16u::return#2 ] +Uplifting [divr16u] best 27431 combination zp[2]:58 [ 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[2]:62 [ 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[2]:60 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:209 [ divr16u::return#2 ] zp[2]:213 [ divr16u::return#3 ] +Uplifting [mulu16_sel] best 27415 combination zp[2]:53 [ 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[4]:199 [ mulu16_sel::$0 ] zp[4]:203 [ mulu16_sel::$1 ] zp[2]:55 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:207 [ mulu16_sel::return#12 ] zp[2]:169 [ mulu16_sel::return#0 ] zp[2]:173 [ mulu16_sel::return#1 ] zp[2]:177 [ mulu16_sel::return#2 ] zp[2]:183 [ mulu16_sel::return#10 ] zp[2]:187 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s] best 27406 combination zp[4]:47 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:51 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:163 [ sin16s::$4 ] zp[2]:171 [ sin16s::x2#0 ] zp[2]:179 [ sin16s::x3_6#0 ] zp[2]:185 [ sin16s::x4#0 ] zp[2]:189 [ sin16s::x5#0 ] zp[2]:191 [ sin16s::x5_128#0 ] zp[2]:175 [ sin16s::x3#0 ] zp[2]:193 [ sin16s::usinx#1 ] zp[2]:167 [ sin16s::x1#0 ] zp[2]:151 [ sin16s::return#0 ] zp[2]:181 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [mul16s] best 27406 combination zp[4]:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:124 [ mul16s::$9 ] zp[2]:126 [ mul16s::$16 ] zp[2]:128 [ mul16s::$13 ] zp[2]:130 [ mul16s::$17 ] zp[2]:6 [ mul16s::a#3 mul16s::a#0 ] zp[4]:132 [ mul16s::return#0 ] zp[4]:153 [ mul16s::return#2 ] zp[2]:8 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] zp[4]:72 [ mul16s::return#3 ] zp[4]:94 [ mul16s::return#4 ] +Uplifting [memset] best 27390 combination zp[2]:31 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:137 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:26 [ memset::num#2 ] zp[2]:28 [ memset::str#3 ] +Uplifting [bitmap_init] best 26880 combination zp[2]:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:141 [ bitmap_init::$5 ] zp[1]:142 [ bitmap_init::$6 ] zp[1]:139 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [mul16s] best 26681 combination zp[2]:8 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] zp[2]:6 [ mul16s::a#3 mul16s::a#0 ] zp[4]:72 [ mul16s::return#3 ] zp[4]:94 [ mul16s::return#4 ] zp[4]:153 [ mul16s::return#2 ] zp[4]:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[4]:132 [ mul16s::return#0 ] zp[2]:124 [ mul16s::$9 ] zp[2]:126 [ mul16s::$16 ] zp[2]:128 [ mul16s::$13 ] zp[2]:130 [ mul16s::$17 ] -Uplifting [sin16s] best 26672 combination zp[4]:47 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:151 [ sin16s::return#0 ] zp[2]:51 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:163 [ sin16s::$4 ] zp[2]:171 [ sin16s::x2#0 ] zp[2]:179 [ sin16s::x3_6#0 ] zp[2]:185 [ sin16s::x4#0 ] zp[2]:189 [ sin16s::x5#0 ] zp[2]:191 [ sin16s::x5_128#0 ] zp[2]:175 [ sin16s::x3#0 ] zp[2]:193 [ sin16s::usinx#1 ] zp[2]:167 [ sin16s::x1#0 ] zp[2]:181 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen2] best 26672 combination zp[2]:38 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:157 [ sin16s_gen2::$6 ] zp[4]:40 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:161 [ sin16s_gen2::$9 ] zp[2]:44 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:147 [ sin16s_gen2::step#0 ] -Uplifting [mulu16_sel] best 26656 combination zp[2]:53 [ 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[2]:55 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:169 [ mulu16_sel::return#0 ] zp[2]:173 [ mulu16_sel::return#1 ] zp[2]:177 [ mulu16_sel::return#2 ] zp[2]:183 [ mulu16_sel::return#10 ] zp[2]:187 [ mulu16_sel::return#11 ] zp[4]:199 [ mulu16_sel::$0 ] zp[4]:203 [ mulu16_sel::$1 ] zp[2]:207 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [memset] best 26640 combination zp[2]:31 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:137 [ memset::end#0 ] zp[2]:26 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:28 [ memset::str#3 ] -Uplifting [bitmap_plot] best 26623 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:115 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:111 [ bitmap_plot::x#0 ] zp[2]:117 [ bitmap_plot::plotter#1 ] zp[2]:113 [ bitmap_plot::plotter#0 ] -Uplifting [div32u16u] best 26623 combination zp[4]:143 [ div32u16u::return#2 ] zp[2]:215 [ div32u16u::quotient_lo#0 ] zp[4]:217 [ div32u16u::return#0 ] zp[2]:211 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 26623 combination zp[2]:223 [ rem16u#1 ] zp[1]:65 [ frame_cnt ] -Uplifting [bitmap_clear] best 26623 combination -Uplifting [init_irq] best 26623 combination -Uplifting [irq] best 26623 combination +Uplifting [bitmap_plot] best 26861 combination zp[2]:115 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:117 [ bitmap_plot::plotter#1 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:111 [ bitmap_plot::x#0 ] zp[2]:113 [ bitmap_plot::plotter#0 ] +Uplifting [sin16s_gen2] best 26861 combination zp[2]:38 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:157 [ sin16s_gen2::$6 ] zp[4]:40 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:161 [ sin16s_gen2::$9 ] zp[2]:44 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:147 [ sin16s_gen2::step#0 ] +Uplifting [div32u16u] best 26861 combination zp[2]:215 [ div32u16u::quotient_lo#0 ] zp[2]:211 [ div32u16u::quotient_hi#0 ] zp[4]:217 [ div32u16u::return#0 ] zp[4]:143 [ div32u16u::return#2 ] +Uplifting [main] best 26621 combination zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:66 [ main::$22 ] zp[2]:68 [ main::$24 ] zp[2]:70 [ main::cos_x#0 ] zp[4]:76 [ main::xpos#0 ] zp[4]:80 [ main::$6 ] reg byte alu [ main::$7 ] zp[2]:88 [ main::$23 ] zp[2]:90 [ main::$25 ] zp[2]:92 [ main::sin_y#0 ] zp[4]:98 [ main::ypos#0 ] zp[4]:102 [ main::$11 ] reg byte alu [ main::$12 ] zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] zp[2]:108 [ main::y#0 ] zp[2]:86 [ main::x#0 ] +Uplifting [] best 26621 combination zp[2]:223 [ rem16u#1 ] zp[1]:65 [ frame_cnt ] +Uplifting [bitmap_clear] best 26621 combination +Uplifting [init_irq] best 26621 combination +Uplifting [irq] best 26621 combination Attempting to uplift remaining variables inzp[1]:141 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 26563 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 26561 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:142 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 26503 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 26501 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:139 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 26503 combination zp[1]:139 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 26501 combination zp[1]:139 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:65 [ frame_cnt ] -Uplifting [] best 26503 combination zp[1]:65 [ frame_cnt ] +Uplifting [] best 26501 combination zp[1]:65 [ frame_cnt ] Coalescing zero page register [ zp[2]:51 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:193 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:53 [ 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[2]:175 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:58 [ 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[2]:223 [ rem16u#1 ] ] - score: 2 @@ -6514,11 +6510,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [51] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 - lda.z x - // [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [51] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1 + ldx.z x + // [52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -7979,10 +7974,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:31 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:31 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -7991,32 +7986,32 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:29 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:29 2002.0 +(byte~) bitmap_plot::$2 reg byte x 2002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:27 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:27 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:27 500.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:27 1501.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:23 3.75 +(word) bitmap_plot::x#0 x zp[2]:23 525.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 7.5 +(byte) bitmap_plot::y#0 reg byte x 1051.5 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } @@ -8029,15 +8024,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:44 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:44 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:29 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:29 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:32 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:32 4.0 +(dword) div32u16u::return#0 return zp[4]:32 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:32 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -8046,31 +8041,31 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:27 2.75 -(word) divr16u::dividend#3 dividend zp[2]:27 5.0 -(word) divr16u::dividend#5 dividend zp[2]:27 2.0 +(word) divr16u::dividend#0 dividend zp[2]:27 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:27 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:27 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:29 16.5 -(word) divr16u::quotient#2 quotient zp[2]:29 11.0 -(word) divr16u::quotient#3 quotient zp[2]:29 2.75 +(word) divr16u::quotient#1 quotient zp[2]:29 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:29 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:29 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:20 8.25 -(word) divr16u::rem#1 rem zp[2]:20 22.0 -(word) divr16u::rem#10 rem zp[2]:20 4.0 -(word) divr16u::rem#11 rem zp[2]:20 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:20 22.0 -(word) divr16u::rem#4 rem zp[2]:20 4.0 -(word) divr16u::rem#5 rem zp[2]:20 24.0 -(word) divr16u::rem#6 rem zp[2]:20 11.0 +(word) divr16u::rem#0 rem zp[2]:20 75000.75 +(word) divr16u::rem#1 rem zp[2]:20 200002.0 +(word) divr16u::rem#10 rem zp[2]:20 11002.0 +(word) divr16u::rem#11 rem zp[2]:20 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:20 200002.0 +(word) divr16u::rem#4 rem zp[2]:20 2002.0 +(word) divr16u::rem#5 rem zp[2]:20 210003.0 +(word) divr16u::rem#6 rem zp[2]:20 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:29 5.285714285714286 -(word) divr16u::return#2 return zp[2]:29 4.0 -(word) divr16u::return#3 return zp[2]:29 4.0 -(byte) frame_cnt loadstore zp[1]:22 0.6382978723404255 +(word) divr16u::return#0 return zp[2]:29 43143.57142857143 +(word) divr16u::return#2 return zp[2]:29 2002.0 +(word) divr16u::return#3 return zp[2]:29 2002.0 +(byte) frame_cnt loadstore zp[1]:22 4.46808510638298 (void()) init_irq() (label) init_irq::@return interrupt(HARDWARE_CLOBBER)(void()) irq() @@ -8078,14 +8073,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) irq::@2 (label) irq::@return (void()) main() -(signed dword~) main::$11 zp[4]:8 22.0 -(word~) main::$12 reg byte alu 22.0 -(word~) main::$22 zp[2]:6 22.0 -(word~) main::$23 zp[2]:6 22.0 -(signed word*~) main::$24 zp[2]:6 22.0 -(signed word*~) main::$25 zp[2]:6 22.0 -(signed dword~) main::$6 zp[4]:8 22.0 -(word~) main::$7 reg byte alu 22.0 +(signed dword~) main::$11 zp[4]:8 202.0 +(word~) main::$12 reg byte alu 202.0 +(word~) main::$22 zp[2]:6 202.0 +(word~) main::$23 zp[2]:6 202.0 +(signed word*~) main::$24 zp[2]:6 202.0 +(signed word*~) main::$25 zp[2]:6 202.0 +(signed dword~) main::$6 zp[4]:8 202.0 +(word~) main::$7 reg byte alu 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -8100,53 +8095,53 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@8 (label) main::@9 (signed word) main::cos_x -(signed word) main::cos_x#0 cos_x zp[2]:6 22.0 +(signed word) main::cos_x#0 cos_x zp[2]:6 202.0 (word) main::idx_x -(word) main::idx_x#1 idx_x zp[2]:2 11.0 -(word) main::idx_x#10 idx_x zp[2]:2 3.6666666666666665 -(word) main::idx_x#3 idx_x zp[2]:2 1.375 +(word) main::idx_x#1 idx_x zp[2]:2 101.0 +(word) main::idx_x#10 idx_x zp[2]:2 33.666666666666664 +(word) main::idx_x#3 idx_x zp[2]:2 12.625 (word) main::idx_y -(word) main::idx_y#1 idx_y zp[2]:4 11.0 -(word) main::idx_y#10 idx_y zp[2]:4 11.0 -(word) main::idx_y#3 idx_y zp[2]:4 1.1785714285714286 +(word) main::idx_y#1 idx_y zp[2]:4 101.0 +(word) main::idx_y#10 idx_y zp[2]:4 101.0 +(word) main::idx_y#3 idx_y zp[2]:4 10.821428571428571 (signed word) main::sin_y -(signed word) main::sin_y#0 sin_y zp[2]:6 22.0 +(signed word) main::sin_y#0 sin_y zp[2]:6 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::x -(word) main::x#0 x zp[2]:23 1.8333333333333333 +(word) main::x#0 x zp[2]:23 16.833333333333332 (signed dword) main::xpos -(signed dword) main::xpos#0 xpos zp[4]:8 22.0 +(signed dword) main::xpos#0 xpos zp[4]:8 202.0 (word) main::y -(word) main::y#0 y zp[2]:25 11.0 +(word) main::y#0 y zp[2]:25 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 ypos zp[4]:8 22.0 +(signed dword) main::ypos#0 ypos zp[4]:8 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:29 22.0 -(byte*) memset::dst#2 dst zp[2]:29 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:29 4.0 +(byte*) memset::dst#1 dst zp[2]:29 20002.0 +(byte*) memset::dst#2 dst zp[2]:29 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:29 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:27 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:27 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:27 2.0 +(word) memset::num#2 num zp[2]:27 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:29 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:42 4.0 -(word~) mul16s::$16 zp[2]:36 4.0 -(word~) mul16s::$17 zp[2]:27 4.0 -(word~) mul16s::$9 zp[2]:36 4.0 +(word~) mul16s::$13 zp[2]:42 20002.0 +(word~) mul16s::$16 zp[2]:36 20002.0 +(word~) mul16s::$17 zp[2]:27 20002.0 +(word~) mul16s::$9 zp[2]:36 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -8154,83 +8149,83 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:27 22.0 -(signed word) mul16s::a#3 a zp[2]:27 1.0 +(signed word) mul16s::a#0 a zp[2]:27 2002.0 +(signed word) mul16s::a#3 a zp[2]:27 846.3076923076923 (signed word) mul16s::b -(signed word) mul16s::b#1 b zp[2]:6 22.0 -(signed word) mul16s::b#2 b zp[2]:6 22.0 -(signed word) mul16s::b#3 b zp[2]:6 2.1818181818181817 +(signed word) mul16s::b#1 b zp[2]:6 202.0 +(signed word) mul16s::b#2 b zp[2]:6 202.0 +(signed word) mul16s::b#3 b zp[2]:6 927.5454545454545 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:8 2.0 -(dword) mul16s::m#1 m zp[4]:8 4.0 -(dword) mul16s::m#2 m zp[4]:8 4.0 -(dword) mul16s::m#4 m zp[4]:8 4.0 -(dword) mul16s::m#5 m zp[4]:8 2.5 +(dword) mul16s::m#0 m zp[4]:8 10001.0 +(dword) mul16s::m#1 m zp[4]:8 20002.0 +(dword) mul16s::m#2 m zp[4]:8 20002.0 +(dword) mul16s::m#4 m zp[4]:8 20002.0 +(dword) mul16s::m#5 m zp[4]:8 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:8 7.000000000000001 -(signed dword) mul16s::return#2 return zp[4]:8 22.0 -(signed dword) mul16s::return#3 return zp[4]:8 22.0 -(signed dword) mul16s::return#4 return zp[4]:8 22.0 +(signed dword) mul16s::return#0 return zp[4]:8 2240.8 +(signed dword) mul16s::return#2 return zp[4]:8 2002.0 +(signed dword) mul16s::return#3 return zp[4]:8 202.0 +(signed dword) mul16s::return#4 return zp[4]:8 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:36 101.0 -(word) mul16u::a#1 a zp[2]:36 2.0 -(word) mul16u::a#2 a zp[2]:36 2.0 -(word) mul16u::a#3 a zp[2]:36 67.66666666666666 -(word) mul16u::a#6 a zp[2]:36 3.0 +(word) mul16u::a#0 a zp[2]:36 1.00000001E8 +(word) mul16u::a#1 a zp[2]:36 10001.0 +(word) mul16u::a#2 a zp[2]:36 100001.0 +(word) mul16u::a#3 a zp[2]:36 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:36 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:29 4.0 -(word) mul16u::b#1 b zp[2]:29 4.0 -(word) mul16u::b#2 b zp[2]:29 4.0 +(word) mul16u::b#0 b zp[2]:29 20002.0 +(word) mul16u::b#1 b zp[2]:29 200002.0 +(word) mul16u::b#2 b zp[2]:29 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:16 4.0 -(dword) mul16u::mb#1 mb zp[4]:16 202.0 -(dword) mul16u::mb#2 mb zp[4]:16 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:16 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:16 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:16 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:8 202.0 -(dword) mul16u::res#2 res zp[4]:8 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:8 101.0 +(dword) mul16u::res#1 res zp[4]:8 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:8 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:8 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:8 4.0 -(dword) mul16u::return#3 return zp[4]:8 4.0 +(dword) mul16u::return#2 return zp[4]:8 20002.0 +(dword) mul16u::return#3 return zp[4]:8 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:8 4.0 -(dword~) mulu16_sel::$1 zp[4]:8 4.0 +(dword~) mulu16_sel::$0 zp[4]:8 200002.0 +(dword~) mulu16_sel::$1 zp[4]:8 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:44 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:20 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:20 4.0 -(word) mulu16_sel::return#11 return zp[2]:44 4.0 -(word) mulu16_sel::return#12 return zp[2]:44 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:44 4.0 +(word) mulu16_sel::return#0 return zp[2]:44 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:20 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:20 20002.0 +(word) mulu16_sel::return#11 return zp[2]:44 20002.0 +(word) mulu16_sel::return#12 return zp[2]:44 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:44 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:20 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:20 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:20 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:20 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:29 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:29 70002.5 (const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) } (word) rem16u -(word) rem16u#1 rem16u zp[2]:20 0.8 +(word) rem16u#1 rem16u zp[2]:20 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:38 4.0 +(dword~) sin16s::$4 zp[4]:38 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -8245,39 +8240,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:27 22.0 -(signed word) sin16s::return#1 return zp[2]:27 5.0 -(signed word) sin16s::return#5 return zp[2]:27 4.0 +(signed word) sin16s::return#0 return zp[2]:27 2002.0 +(signed word) sin16s::return#1 return zp[2]:27 7001.0 +(signed word) sin16s::return#5 return zp[2]:27 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:27 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:27 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:27 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:27 1.0 +(word) sin16s::usinx#0 usinx zp[2]:27 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:27 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:16 8.5 -(dword) sin16s::x#1 x zp[4]:16 4.0 -(dword) sin16s::x#2 x zp[4]:16 4.0 -(dword) sin16s::x#4 x zp[4]:16 5.0 -(dword) sin16s::x#6 x zp[4]:16 6.0 +(dword) sin16s::x#0 x zp[4]:16 15502.0 +(dword) sin16s::x#1 x zp[4]:16 20002.0 +(dword) sin16s::x#2 x zp[4]:16 20002.0 +(dword) sin16s::x#4 x zp[4]:16 25002.5 +(dword) sin16s::x#6 x zp[4]:16 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:42 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:42 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:20 4.0 +(word) sin16s::x2#0 x2 zp[2]:20 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:20 1.0 +(word) sin16s::x3#0 x3 zp[2]:20 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:44 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:44 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:20 4.0 +(word) sin16s::x4#0 x4 zp[2]:20 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:44 4.0 +(word) sin16s::x5#0 x5 zp[2]:44 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:44 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:44 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0 -(word~) sin16s_gen2::$9 zp[2]:36 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:8 2002.0 +(word~) sin16s_gen2::$9 zp[2]:36 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -8287,23 +8282,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:23 22.0 -(word) sin16s_gen2::i#2 i zp[2]:23 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:23 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:23 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $1001 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$1001 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:25 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:25 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:25 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:25 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:32 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:32 73.46666666666667 (word) sin16s_gen2::wavelength (const word) sin16s_gen2::wavelength#0 wavelength = (word) $200 (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:12 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:12 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:12 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:12 250.25 zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] @@ -8327,7 +8322,7 @@ zp[2]:25 [ main::y#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:27 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ] zp[2]:29 [ bitmap_plot::$1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ mul16u::$1 ] zp[1]:31 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] @@ -8343,7 +8338,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 20668 +Score: 20666 // File Comments // Tests the simple bitmap plotter - and counts plots per frame in an IRQ @@ -8709,12 +8704,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::x -(word) main::x#0 x zp[2]:23 1.8333333333333333 +(word) main::x#0 x zp[2]:23 16.833333333333332 (signed dword) main::xpos -(signed dword) main::xpos#0 xpos zp[4]:8 22.0 +(signed dword) main::xpos#0 xpos zp[4]:8 202.0 (word) main::y -(word) main::y#0 y zp[2]:25 11.0 +(word) main::y#0 y zp[2]:25 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 ypos zp[4]:8 22.0 +(signed dword) main::ypos#0 ypos zp[4]:8 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:29 22.0 -(byte*) memset::dst#2 dst zp[2]:29 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:29 4.0 +(byte*) memset::dst#1 dst zp[2]:29 20002.0 +(byte*) memset::dst#2 dst zp[2]:29 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:29 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:27 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:27 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:27 2.0 +(word) memset::num#2 num zp[2]:27 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:29 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:42 4.0 -(word~) mul16s::$16 zp[2]:36 4.0 -(word~) mul16s::$17 zp[2]:27 4.0 -(word~) mul16s::$9 zp[2]:36 4.0 +(word~) mul16s::$13 zp[2]:42 20002.0 +(word~) mul16s::$16 zp[2]:36 20002.0 +(word~) mul16s::$17 zp[2]:27 20002.0 +(word~) mul16s::$9 zp[2]:36 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -213,83 +213,83 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:27 22.0 -(signed word) mul16s::a#3 a zp[2]:27 1.0 +(signed word) mul16s::a#0 a zp[2]:27 2002.0 +(signed word) mul16s::a#3 a zp[2]:27 846.3076923076923 (signed word) mul16s::b -(signed word) mul16s::b#1 b zp[2]:6 22.0 -(signed word) mul16s::b#2 b zp[2]:6 22.0 -(signed word) mul16s::b#3 b zp[2]:6 2.1818181818181817 +(signed word) mul16s::b#1 b zp[2]:6 202.0 +(signed word) mul16s::b#2 b zp[2]:6 202.0 +(signed word) mul16s::b#3 b zp[2]:6 927.5454545454545 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:8 2.0 -(dword) mul16s::m#1 m zp[4]:8 4.0 -(dword) mul16s::m#2 m zp[4]:8 4.0 -(dword) mul16s::m#4 m zp[4]:8 4.0 -(dword) mul16s::m#5 m zp[4]:8 2.5 +(dword) mul16s::m#0 m zp[4]:8 10001.0 +(dword) mul16s::m#1 m zp[4]:8 20002.0 +(dword) mul16s::m#2 m zp[4]:8 20002.0 +(dword) mul16s::m#4 m zp[4]:8 20002.0 +(dword) mul16s::m#5 m zp[4]:8 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:8 7.000000000000001 -(signed dword) mul16s::return#2 return zp[4]:8 22.0 -(signed dword) mul16s::return#3 return zp[4]:8 22.0 -(signed dword) mul16s::return#4 return zp[4]:8 22.0 +(signed dword) mul16s::return#0 return zp[4]:8 2240.8 +(signed dword) mul16s::return#2 return zp[4]:8 2002.0 +(signed dword) mul16s::return#3 return zp[4]:8 202.0 +(signed dword) mul16s::return#4 return zp[4]:8 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:36 101.0 -(word) mul16u::a#1 a zp[2]:36 2.0 -(word) mul16u::a#2 a zp[2]:36 2.0 -(word) mul16u::a#3 a zp[2]:36 67.66666666666666 -(word) mul16u::a#6 a zp[2]:36 3.0 +(word) mul16u::a#0 a zp[2]:36 1.00000001E8 +(word) mul16u::a#1 a zp[2]:36 10001.0 +(word) mul16u::a#2 a zp[2]:36 100001.0 +(word) mul16u::a#3 a zp[2]:36 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:36 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:29 4.0 -(word) mul16u::b#1 b zp[2]:29 4.0 -(word) mul16u::b#2 b zp[2]:29 4.0 +(word) mul16u::b#0 b zp[2]:29 20002.0 +(word) mul16u::b#1 b zp[2]:29 200002.0 +(word) mul16u::b#2 b zp[2]:29 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:16 4.0 -(dword) mul16u::mb#1 mb zp[4]:16 202.0 -(dword) mul16u::mb#2 mb zp[4]:16 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:16 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:16 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:16 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:8 202.0 -(dword) mul16u::res#2 res zp[4]:8 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:8 101.0 +(dword) mul16u::res#1 res zp[4]:8 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:8 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:8 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:8 4.0 -(dword) mul16u::return#3 return zp[4]:8 4.0 +(dword) mul16u::return#2 return zp[4]:8 20002.0 +(dword) mul16u::return#3 return zp[4]:8 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:8 4.0 -(dword~) mulu16_sel::$1 zp[4]:8 4.0 +(dword~) mulu16_sel::$0 zp[4]:8 200002.0 +(dword~) mulu16_sel::$1 zp[4]:8 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:44 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:20 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:20 4.0 -(word) mulu16_sel::return#11 return zp[2]:44 4.0 -(word) mulu16_sel::return#12 return zp[2]:44 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:44 4.0 +(word) mulu16_sel::return#0 return zp[2]:44 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:20 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:20 20002.0 +(word) mulu16_sel::return#11 return zp[2]:44 20002.0 +(word) mulu16_sel::return#12 return zp[2]:44 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:44 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:20 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:20 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:20 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:20 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:20 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:20 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:29 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:29 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:29 70002.5 (const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) } (word) rem16u -(word) rem16u#1 rem16u zp[2]:20 0.8 +(word) rem16u#1 rem16u zp[2]:20 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:38 4.0 +(dword~) sin16s::$4 zp[4]:38 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -304,39 +304,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:27 22.0 -(signed word) sin16s::return#1 return zp[2]:27 5.0 -(signed word) sin16s::return#5 return zp[2]:27 4.0 +(signed word) sin16s::return#0 return zp[2]:27 2002.0 +(signed word) sin16s::return#1 return zp[2]:27 7001.0 +(signed word) sin16s::return#5 return zp[2]:27 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:27 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:27 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:27 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:27 1.0 +(word) sin16s::usinx#0 usinx zp[2]:27 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:27 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:16 8.5 -(dword) sin16s::x#1 x zp[4]:16 4.0 -(dword) sin16s::x#2 x zp[4]:16 4.0 -(dword) sin16s::x#4 x zp[4]:16 5.0 -(dword) sin16s::x#6 x zp[4]:16 6.0 +(dword) sin16s::x#0 x zp[4]:16 15502.0 +(dword) sin16s::x#1 x zp[4]:16 20002.0 +(dword) sin16s::x#2 x zp[4]:16 20002.0 +(dword) sin16s::x#4 x zp[4]:16 25002.5 +(dword) sin16s::x#6 x zp[4]:16 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:42 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:42 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:20 4.0 +(word) sin16s::x2#0 x2 zp[2]:20 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:20 1.0 +(word) sin16s::x3#0 x3 zp[2]:20 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:44 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:44 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:20 4.0 +(word) sin16s::x4#0 x4 zp[2]:20 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:44 4.0 +(word) sin16s::x5#0 x5 zp[2]:44 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:44 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:44 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0 -(word~) sin16s_gen2::$9 zp[2]:36 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:8 2002.0 +(word~) sin16s_gen2::$9 zp[2]:36 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -346,23 +346,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:23 22.0 -(word) sin16s_gen2::i#2 i zp[2]:23 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:23 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:23 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $1001 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$1001 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:25 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:25 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:25 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:25 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:32 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:32 73.46666666666667 (word) sin16s_gen2::wavelength (const word) sin16s_gen2::wavelength#0 wavelength = (word) $200 (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:12 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:12 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:12 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:12 250.25 zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ] zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] @@ -386,7 +386,7 @@ zp[2]:25 [ main::y#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:27 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ] zp[2]:29 [ bitmap_plot::$1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ mul16u::$1 ] zp[1]:31 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] diff --git a/src/test/ref/bitmap-plot-2.asm b/src/test/ref/bitmap-plot-2.asm index 89227fe8c..54e64dc5d 100644 --- a/src/test/ref/bitmap-plot-2.asm +++ b/src/test/ref/bitmap-plot-2.asm @@ -306,10 +306,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // = (signed word)(number) $200*(number) $c+(number) $100 Inversing boolean not [481] (bool~) irq::$0 ← (byte) 0 == (byte) frame_cnt from [480] (bool~) irq::$1 ← (byte) 0 != (byte) frame_cnt 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 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#11 (word) rem16u#2 -Alias (word) divr16u::dividend#1 = (word~) div32u16u::$0 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (dword) div32u16u::dividend#1 = (dword) div32u16u::dividend#2 -Alias (word) div32u16u::divisor#1 = (word) div32u16u::divisor#2 -Alias (word) rem16u#12 = (word) rem16u#3 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$2 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#4 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) mul16u::a#1 = (word~) mul16s::$0 -Alias (word) mul16u::b#0 = (word~) mul16s::$1 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#5 -Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#4 (signed word) mul16s::a#7 -Alias (signed word) mul16s::b#3 = (signed word) mul16s::b#6 (signed word) mul16s::b#5 -Alias (dword) mul16s::m#0 = (dword~) mul16s::$2 (dword) mul16s::m#3 -Alias (word~) mul16s::$16 = (word~) mul16s::$11 -Alias (signed dword) mul16s::return#0 = (signed dword~) mul16s::$7 (signed dword) mul16s::return#5 (signed dword) mul16s::return#1 -Alias (dword) mul16s::m#5 = (dword) mul16s::m#6 -Alias (signed word) mul16s::a#5 = (signed word) mul16s::a#6 -Alias (word~) mul16s::$17 = (word~) mul16s::$15 -Alias (signed word) sin16s_gen2::ampl#0 = (signed word~) sin16s_gen2::$0 (signed word) sin16s_gen2::ampl#4 -Alias (signed word) sin16s_gen2::offs#0 = (signed word~) sin16s_gen2::$2 (signed word) sin16s_gen2::offs#5 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) sin16s_gen2::wavelength#1 = (word) sin16s_gen2::wavelength#3 -Alias (signed word*) sin16s_gen2::sintab#6 = (signed word*) sin16s_gen2::sintab#7 -Alias (word) rem16u#15 = (word) rem16u#6 -Alias (dword) sin16s_gen2::step#0 = (dword~) sin16s_gen2::$3 -Alias (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#4 (dword) sin16s_gen2::x#5 (dword) sin16s_gen2::x#3 -Alias (signed word) sin16s_gen2::ampl#1 = (signed word) sin16s_gen2::ampl#2 (signed word) sin16s_gen2::ampl#3 (signed word) sin16s_gen2::ampl#5 -Alias (signed word) sin16s_gen2::offs#1 = (signed word) sin16s_gen2::offs#3 (signed word) sin16s_gen2::offs#4 (signed word) sin16s_gen2::offs#2 -Alias (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#4 (signed word*) sin16s_gen2::sintab#5 (signed word*) sin16s_gen2::sintab#3 -Alias (dword) sin16s_gen2::step#1 = (dword) sin16s_gen2::step#3 (dword) sin16s_gen2::step#4 (dword) sin16s_gen2::step#2 -Alias (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#5 (word) sin16s_gen2::i#4 (word) sin16s_gen2::i#3 -Alias (word) sin16s_gen2::wavelength#2 = (word) sin16s_gen2::wavelength#6 (word) sin16s_gen2::wavelength#5 (word) sin16s_gen2::wavelength#4 -Alias (word) rem16u#16 = (word) rem16u#36 (word) rem16u#22 (word) rem16u#31 (word) rem16u#26 (word) rem16u#7 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (signed word) mul16s::a#0 = (signed word~) sin16s_gen2::$5 -Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#6 -Alias (dword) sin16s_gen2::x#1 = (dword~) sin16s_gen2::$10 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$17 -Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#7 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$6 -Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#8 -Alias (word) sin16s::x3#0 = (word~) sin16s::$7 (word) sin16s::x3#1 -Alias (word) mulu16_sel::return#2 = (word) mulu16_sel::return#9 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$8 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$9 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$10 -Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$11 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$12 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$13 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$14 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$18 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 -Alias (dword) mul16u::return#3 = (dword) mul16u::return#6 -Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 -Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (word) rem16u#0 = (word) rem16u#35 (word) rem16u#30 (word) rem16u#25 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 -Alias (byte*) bitmap_gfx#31 = (byte*) bitmap_gfx#32 -Alias (byte*) bitmap_screen#30 = (byte*) bitmap_screen#31 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 -Alias (byte*) bitmap_gfx#23 = (byte*) bitmap_gfx#27 -Alias (byte*) bitmap_screen#22 = (byte*) bitmap_screen#26 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 -Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 -Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 -Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 -Alias (byte*) bitmap_gfx#13 = (byte*) bitmap_gfx#18 -Alias (byte*) bitmap_screen#12 = (byte*) bitmap_screen#17 -Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#47 (word) rem16u#45 (word) rem16u#43 (word) rem16u#40 (word) rem16u#37 (word) rem16u#32 -Alias (byte*) bitmap_gfx#24 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#38 (byte*) bitmap_gfx#36 (byte*) bitmap_gfx#33 (byte*) bitmap_gfx#28 -Alias (byte*) bitmap_screen#23 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#37 (byte*) bitmap_screen#35 (byte*) bitmap_screen#32 (byte*) bitmap_screen#27 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$3 -Alias (word) main::idx_x#11 = (word) main::idx_x#3 (word) main::idx_x#6 (word) main::idx_x#7 (word) main::idx_x#4 -Alias (signed word) main::r#10 = (signed word) main::r#2 (signed word) main::r#6 (signed word) main::r#3 (signed word) main::r#12 (signed word) main::r#11 -Alias (word) main::idx_y#3 = (word) main::idx_y#5 (word) main::idx_y#8 (word) main::idx_y#9 (word) main::idx_y#7 (word) main::idx_y#6 -Alias (byte) main::r_add#10 = (byte) main::r_add#11 (byte) main::r_add#9 (byte) main::r_add#6 (byte) main::r_add#2 (byte) main::r_add#7 -Alias (word) rem16u#27 = (word) rem16u#48 (word) rem16u#46 (word) rem16u#44 (word) rem16u#42 (word) rem16u#41 -Alias (byte*) bitmap_gfx#19 = (byte*) bitmap_gfx#40 (byte*) bitmap_gfx#39 (byte*) bitmap_gfx#37 (byte*) bitmap_gfx#35 (byte*) bitmap_gfx#34 -Alias (byte*) bitmap_screen#18 = (byte*) bitmap_screen#39 (byte*) bitmap_screen#38 (byte*) bitmap_screen#36 (byte*) bitmap_screen#34 (byte*) bitmap_screen#33 -Alias (signed dword) mul16s::return#3 = (signed dword) mul16s::return#7 -Alias (signed dword) main::xpos#0 = (signed dword~) main::$5 -Alias (word) main::x#0 = (word~) main::$10 (word) main::x#1 -Alias (signed dword) mul16s::return#4 = (signed dword) mul16s::return#8 -Alias (signed dword) main::ypos#0 = (signed dword~) main::$11 -Alias (word) main::y#0 = (word~) main::$16 -Alias (byte) bitmap_plot::y#0 = (byte~) main::$17 -Alias (signed word) main::r#7 = (signed word) main::r#8 -Alias (byte) main::r_add#3 = (byte) main::r_add#8 -Alias (word) main::idx_x#8 = (word) main::idx_x#9 -Alias (word) rem16u#38 = (word) rem16u#39 -Alias (byte*) bitmap_gfx#29 = (byte*) bitmap_gfx#30 -Alias (byte*) bitmap_screen#28 = (byte*) bitmap_screen#29 -Alias (byte) main::r_add#4 = (byte) main::r_add#5 -Alias (signed word) main::r#1 = (signed word) main::r#9 -Alias (word) main::idx_x#12 = (word) main::idx_x#5 -Alias (word) rem16u#33 = (word) rem16u#34 -Alias (byte*) bitmap_gfx#25 = (byte*) bitmap_gfx#26 -Alias (byte*) bitmap_screen#24 = (byte*) bitmap_screen#25 -Alias (word) main::idx_y#11 = (word) main::idx_y#12 -Alias (word) rem16u#18 = (word) rem16u#28 (word) rem16u#24 (word) rem16u#9 -Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 -Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#19 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 -Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#22 (byte*) bitmap_gfx#15 -Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#21 (byte*) bitmap_screen#14 -Alias (word) rem16u#10 = (word) rem16u#19 -Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 -Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#11 rem16u#2 +Alias divr16u::dividend#1 = div32u16u::$0 +Alias divr16u::return#2 = divr16u::return#5 +Alias div32u16u::dividend#1 = div32u16u::dividend#2 +Alias div32u16u::divisor#1 = div32u16u::divisor#2 +Alias rem16u#12 = rem16u#3 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#2 = div32u16u::$2 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#13 = rem16u#4 rem16u#14 rem16u#5 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1 +Alias mul16u::a#3 = mul16u::a#4 mul16u::a#7 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#4 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias mul16u::a#1 = mul16s::$0 +Alias mul16u::b#0 = mul16s::$1 +Alias mul16u::return#2 = mul16u::return#5 +Alias mul16s::a#3 = mul16s::a#4 mul16s::a#7 +Alias mul16s::b#3 = mul16s::b#6 mul16s::b#5 +Alias mul16s::m#0 = mul16s::$2 mul16s::m#3 +Alias mul16s::$16 = mul16s::$11 +Alias mul16s::return#0 = mul16s::$7 mul16s::return#5 mul16s::return#1 +Alias mul16s::m#5 = mul16s::m#6 +Alias mul16s::a#5 = mul16s::a#6 +Alias mul16s::$17 = mul16s::$15 +Alias sin16s_gen2::ampl#0 = sin16s_gen2::$0 sin16s_gen2::ampl#4 +Alias sin16s_gen2::offs#0 = sin16s_gen2::$2 sin16s_gen2::offs#5 +Alias div32u16u::return#2 = div32u16u::return#4 +Alias sin16s_gen2::wavelength#1 = sin16s_gen2::wavelength#3 +Alias sin16s_gen2::sintab#6 = sin16s_gen2::sintab#7 +Alias rem16u#15 = rem16u#6 +Alias sin16s_gen2::step#0 = sin16s_gen2::$3 +Alias sin16s_gen2::x#2 = sin16s_gen2::x#4 sin16s_gen2::x#5 sin16s_gen2::x#3 +Alias sin16s_gen2::ampl#1 = sin16s_gen2::ampl#2 sin16s_gen2::ampl#3 sin16s_gen2::ampl#5 +Alias sin16s_gen2::offs#1 = sin16s_gen2::offs#3 sin16s_gen2::offs#4 sin16s_gen2::offs#2 +Alias sin16s_gen2::sintab#2 = sin16s_gen2::sintab#4 sin16s_gen2::sintab#5 sin16s_gen2::sintab#3 +Alias sin16s_gen2::step#1 = sin16s_gen2::step#3 sin16s_gen2::step#4 sin16s_gen2::step#2 +Alias sin16s_gen2::i#2 = sin16s_gen2::i#5 sin16s_gen2::i#4 sin16s_gen2::i#3 +Alias sin16s_gen2::wavelength#2 = sin16s_gen2::wavelength#6 sin16s_gen2::wavelength#5 sin16s_gen2::wavelength#4 +Alias rem16u#16 = rem16u#36 rem16u#22 rem16u#31 rem16u#26 rem16u#7 +Alias sin16s::return#0 = sin16s::return#3 +Alias mul16s::a#0 = sin16s_gen2::$5 +Alias mul16s::return#2 = mul16s::return#6 +Alias sin16s_gen2::x#1 = sin16s_gen2::$10 +Alias sin16s::x#3 = sin16s::x#5 +Alias sin16s::x#1 = sin16s::$17 +Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3 +Alias mulu16_sel::return#0 = mulu16_sel::return#7 +Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3 +Alias sin16s::x2#0 = sin16s::$6 +Alias mulu16_sel::return#1 = mulu16_sel::return#8 +Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1 +Alias mulu16_sel::return#2 = mulu16_sel::return#9 +Alias sin16s::x3_6#0 = sin16s::$8 +Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2 +Alias mulu16_sel::return#10 = mulu16_sel::return#3 +Alias sin16s::x4#0 = sin16s::$10 +Alias mulu16_sel::return#11 = mulu16_sel::return#4 +Alias sin16s::x5#0 = sin16s::$11 +Alias sin16s::x5_128#0 = sin16s::$12 +Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3 +Alias sin16s::sinx#0 = sin16s::$14 +Alias sin16s::x#4 = sin16s::x#7 +Alias sin16s::isUpper#8 = sin16s::isUpper#9 +Alias sin16s::x#2 = sin16s::$18 +Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2 +Alias sin16s::sinx#1 = sin16s::$20 +Alias mul16u::return#3 = mul16u::return#6 +Alias mulu16_sel::select#5 = mulu16_sel::select#6 +Alias mulu16_sel::return#12 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias rem16u#0 = rem16u#35 rem16u#30 rem16u#25 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::gfx#4 = bitmap_init::gfx#5 +Alias bitmap_gfx#31 = bitmap_gfx#32 +Alias bitmap_screen#30 = bitmap_screen#31 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0 +Alias bitmap_gfx#23 = bitmap_gfx#27 +Alias bitmap_screen#22 = bitmap_screen#26 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_gfx#16 = bitmap_gfx#17 +Alias bitmap_screen#15 = bitmap_screen#16 +Alias bitmap_init::yoffs#1 = bitmap_init::$10 +Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2 +Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2 +Alias bitmap_clear::col#0 = bitmap_clear::$1 +Alias bitmap_gfx#12 = bitmap_gfx#7 +Alias bitmap_plot::plotter#0 = bitmap_plot::$0 +Alias bitmap_gfx#13 = bitmap_gfx#18 +Alias bitmap_screen#12 = bitmap_screen#17 +Alias rem16u#17 = rem16u#8 rem16u#47 rem16u#45 rem16u#43 rem16u#40 rem16u#37 rem16u#32 +Alias bitmap_gfx#24 = bitmap_gfx#3 bitmap_gfx#8 bitmap_gfx#38 bitmap_gfx#36 bitmap_gfx#33 bitmap_gfx#28 +Alias bitmap_screen#23 = bitmap_screen#3 bitmap_screen#8 bitmap_screen#37 bitmap_screen#35 bitmap_screen#32 bitmap_screen#27 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$3 +Alias main::idx_x#11 = main::idx_x#3 main::idx_x#6 main::idx_x#7 main::idx_x#4 +Alias main::r#10 = main::r#2 main::r#6 main::r#3 main::r#12 main::r#11 +Alias main::idx_y#3 = main::idx_y#5 main::idx_y#8 main::idx_y#9 main::idx_y#7 main::idx_y#6 +Alias main::r_add#10 = main::r_add#11 main::r_add#9 main::r_add#6 main::r_add#2 main::r_add#7 +Alias rem16u#27 = rem16u#48 rem16u#46 rem16u#44 rem16u#42 rem16u#41 +Alias bitmap_gfx#19 = bitmap_gfx#40 bitmap_gfx#39 bitmap_gfx#37 bitmap_gfx#35 bitmap_gfx#34 +Alias bitmap_screen#18 = bitmap_screen#39 bitmap_screen#38 bitmap_screen#36 bitmap_screen#34 bitmap_screen#33 +Alias mul16s::return#3 = mul16s::return#7 +Alias main::xpos#0 = main::$5 +Alias main::x#0 = main::$10 main::x#1 +Alias mul16s::return#4 = mul16s::return#8 +Alias main::ypos#0 = main::$11 +Alias main::y#0 = main::$16 +Alias bitmap_plot::y#0 = main::$17 +Alias main::r#7 = main::r#8 +Alias main::r_add#3 = main::r_add#8 +Alias main::idx_x#8 = main::idx_x#9 +Alias rem16u#38 = rem16u#39 +Alias bitmap_gfx#29 = bitmap_gfx#30 +Alias bitmap_screen#28 = bitmap_screen#29 +Alias main::r_add#4 = main::r_add#5 +Alias main::r#1 = main::r#9 +Alias main::idx_x#12 = main::idx_x#5 +Alias rem16u#33 = rem16u#34 +Alias bitmap_gfx#25 = bitmap_gfx#26 +Alias bitmap_screen#24 = bitmap_screen#25 +Alias main::idx_y#11 = main::idx_y#12 +Alias rem16u#18 = rem16u#28 rem16u#24 rem16u#9 +Alias bitmap_gfx#14 = bitmap_gfx#20 bitmap_gfx#9 bitmap_gfx#4 +Alias bitmap_screen#13 = bitmap_screen#19 bitmap_screen#9 bitmap_screen#4 +Alias bitmap_gfx#0 = bitmap_gfx#22 bitmap_gfx#15 +Alias bitmap_screen#0 = bitmap_screen#21 bitmap_screen#14 +Alias rem16u#10 = rem16u#19 +Alias bitmap_gfx#10 = bitmap_gfx#5 +Alias bitmap_screen#10 = bitmap_screen#5 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (word) mul16u::a#3 = (word) mul16u::a#5 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (signed word) mul16s::b#3 = (signed word) mul16s::b#4 -Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#5 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 -Alias (byte*) bitmap_gfx#23 = (byte*) bitmap_gfx#31 -Alias (byte*) bitmap_screen#22 = (byte*) bitmap_screen#30 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 -Alias (word) main::idx_y#3 = (word) main::idx_y#4 -Alias (byte) main::r_add#10 = (byte) main::r_add#3 (byte) main::r_add#4 -Alias (signed word) main::r#10 = (signed word) main::r#7 (signed word) main::r#4 -Alias (word) rem16u#27 = (word) rem16u#38 (word) rem16u#33 (word) rem16u#29 -Alias (byte*) bitmap_gfx#19 = (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#25 (byte*) bitmap_gfx#21 -Alias (byte*) bitmap_screen#18 = (byte*) bitmap_screen#28 (byte*) bitmap_screen#24 (byte*) bitmap_screen#20 -Alias (word) main::idx_x#10 = (word) main::idx_x#12 (word) main::idx_x#8 -Alias (signed word) main::r#1 = (signed word) main::r#5 -Alias (word) main::idx_y#10 = (word) main::idx_y#11 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias mul16u::a#3 = mul16u::a#5 +Alias mul16u::mb#2 = mul16u::mb#3 +Alias mul16s::b#3 = mul16s::b#4 +Alias mul16s::a#3 = mul16s::a#5 +Alias sin16s::isUpper#2 = sin16s::isUpper#8 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#4 +Alias bitmap_gfx#23 = bitmap_gfx#31 +Alias bitmap_screen#22 = bitmap_screen#30 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_gfx#11 = bitmap_gfx#16 +Alias bitmap_screen#11 = bitmap_screen#15 +Alias main::idx_y#3 = main::idx_y#4 +Alias main::r_add#10 = main::r_add#3 main::r_add#4 +Alias main::r#10 = main::r#7 main::r#4 +Alias rem16u#27 = rem16u#38 rem16u#33 rem16u#29 +Alias bitmap_gfx#19 = bitmap_gfx#29 bitmap_gfx#25 bitmap_gfx#21 +Alias bitmap_screen#18 = bitmap_screen#28 bitmap_screen#24 bitmap_screen#20 +Alias main::idx_x#10 = main::idx_x#12 main::idx_x#8 +Alias main::r#1 = main::r#5 +Alias main::idx_y#10 = main::idx_y#11 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6 Identical Phi Values (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0 @@ -2567,8 +2567,8 @@ Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 +Alias bitmap_init::$7 = bitmap_init::$3 +Alias bitmap_clear::col#0 = bitmap_clear::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$24 [229] if((word) main::idx_x#10==(byte) 0) goto main::@31 Simple Condition (bool~) main::$25 [252] if((byte) main::r_add#10!=(byte) 1) goto main::@13 @@ -2616,7 +2616,7 @@ Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const signed word) sin16s_gen2::$1 Eliminating unused constant (const signed word) sin16s_gen2::offs#0 Successful SSA optimization PassNEliminateUnusedVars -Alias (signed word~) sin16s_gen2::$9 = (signed word~) sin16s_gen2::$8 +Alias sin16s_gen2::$9 = sin16s_gen2::$8 Successful SSA optimization Pass2AliasElimination Constant right-side identified [171] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -3424,259 +3424,259 @@ VARIABLE REGISTER WEIGHTS (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 2002.0 +(byte~) bitmap_plot::$2 2002.0 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 500.5 +(byte*) bitmap_plot::plotter#1 1501.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 3.75 +(word) bitmap_plot::x#0 525.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 7.5 +(byte) bitmap_plot::y#0 1051.5 (byte*) bitmap_screen (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 -(byte) frame_cnt loadstore 0.5454545454545455 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 +(byte) frame_cnt loadstore 3.8181818181818175 (void()) init_irq() interrupt(HARDWARE_CLOBBER)(void()) irq() (void()) main() -(word~) main::$13 11.0 -(signed word~) main::$14 22.0 -(word~) main::$31 22.0 -(word~) main::$32 22.0 -(signed word*~) main::$33 22.0 -(signed word*~) main::$34 22.0 -(word~) main::$7 11.0 -(signed word~) main::$8 22.0 +(word~) main::$13 101.0 +(signed word~) main::$14 202.0 +(word~) main::$31 202.0 +(word~) main::$32 202.0 +(signed word*~) main::$33 202.0 +(signed word*~) main::$34 202.0 +(word~) main::$7 101.0 +(signed word~) main::$8 202.0 (signed word) main::cos_x -(signed word) main::cos_x#0 11.0 +(signed word) main::cos_x#0 101.0 (word) main::idx_x -(word) main::idx_x#1 11.0 -(word) main::idx_x#10 3.0 -(word) main::idx_x#11 1.222222222222222 +(word) main::idx_x#1 101.0 +(word) main::idx_x#10 27.545454545454547 +(word) main::idx_x#11 11.222222222222223 (word) main::idx_y -(word) main::idx_y#1 11.0 -(word) main::idx_y#10 3.142857142857143 -(word) main::idx_y#3 1.064516129032258 +(word) main::idx_y#1 101.0 +(word) main::idx_y#10 28.857142857142858 +(word) main::idx_y#3 9.774193548387098 (signed word) main::r -(signed word) main::r#1 5.5 -(signed word) main::r#10 1.2571428571428571 +(signed word) main::r#1 50.5 +(signed word) main::r#10 11.542857142857143 (byte) main::r_add -(byte) main::r_add#1 22.0 -(byte) main::r_add#10 2.026315789473684 -(byte) main::r_add#12 16.5 +(byte) main::r_add#1 202.0 +(byte) main::r_add#10 18.60526315789474 +(byte) main::r_add#12 151.5 (signed word) main::sin_y -(signed word) main::sin_y#0 11.0 +(signed word) main::sin_y#0 101.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (word) main::x -(signed word) main::x#0 0.8461538461538461 +(signed word) main::x#0 7.769230769230769 (signed dword) main::xpos -(signed dword) main::xpos#0 22.0 +(signed dword) main::xpos#0 202.0 (word) main::y -(signed word) main::y#0 11.0 +(signed word) main::y#0 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 22.0 +(signed dword) main::ypos#0 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 4.0 -(word~) mul16s::$16 4.0 -(word~) mul16s::$17 4.0 -(word~) mul16s::$9 4.0 +(word~) mul16s::$13 20002.0 +(word~) mul16s::$16 20002.0 +(word~) mul16s::$17 20002.0 +(word~) mul16s::$9 20002.0 (signed word) mul16s::a -(signed word) mul16s::a#0 22.0 -(signed word) mul16s::a#1 11.0 -(signed word) mul16s::a#2 11.0 -(signed word) mul16s::a#3 2.692307692307692 +(signed word) mul16s::a#0 2002.0 +(signed word) mul16s::a#1 101.0 +(signed word) mul16s::a#2 101.0 +(signed word) mul16s::a#3 861.8461538461538 (signed word) mul16s::b -(signed word) mul16s::b#1 22.0 -(signed word) mul16s::b#2 22.0 -(signed word) mul16s::b#3 2.1818181818181817 +(signed word) mul16s::b#1 202.0 +(signed word) mul16s::b#2 202.0 +(signed word) mul16s::b#3 927.5454545454545 (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 4.0 -(dword) mul16s::m#5 2.5 +(dword) mul16s::m#0 10001.0 +(dword) mul16s::m#1 20002.0 +(dword) mul16s::m#2 20002.0 +(dword) mul16s::m#4 20002.0 +(dword) mul16s::m#5 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 7.000000000000001 -(signed dword) mul16s::return#2 22.0 -(signed dword) mul16s::return#3 22.0 -(signed dword) mul16s::return#4 22.0 +(signed dword) mul16s::return#0 2240.8 +(signed dword) mul16s::return#2 2002.0 +(signed dword) mul16s::return#3 202.0 +(signed dword) mul16s::return#4 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 2.0 -(word) mul16u::a#2 2.0 -(word) mul16u::a#3 67.66666666666666 -(word) mul16u::a#6 3.0 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 10001.0 +(word) mul16u::a#2 100001.0 +(word) mul16u::a#3 6.683333416666667E7 +(word) mul16u::a#6 555001.5 (word) mul16u::b -(word) mul16u::b#0 4.0 -(word) mul16u::b#1 4.0 -(word) mul16u::b#2 4.0 +(word) mul16u::b#0 20002.0 +(word) mul16u::b#1 200002.0 +(word) mul16u::b#2 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 43.85714285714286 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 4.287285785714286E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 -(dword) mul16u::return#3 4.0 +(dword) mul16u::return#2 20002.0 +(dword) mul16u::return#3 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 22.0 -(word~) sin16s_gen2::$9 11.0 +(signed dword~) sin16s_gen2::$6 2002.0 +(word~) sin16s_gen2::$9 1001.0 (signed word) sin16s_gen2::ampl (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 22.0 -(word) sin16s_gen2::i#2 2.5384615384615383 +(word) sin16s_gen2::i#1 2002.0 +(word) sin16s_gen2::i#2 231.0 (signed word) sin16s_gen2::max (signed word) sin16s_gen2::min (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 3.0 +(signed word*) sin16s_gen2::sintab#0 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 0.8666666666666666 +(dword) sin16s_gen2::step#0 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 11.0 -(dword) sin16s_gen2::x#2 2.75 +(dword) sin16s_gen2::x#1 1001.0 +(dword) sin16s_gen2::x#2 250.25 Initial phi equivalence classes [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] @@ -5906,283 +5906,279 @@ irq: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:139 [ bitmap_init::$4 ] has ALU potential. -Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [16] (word~) main::$31 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ) always clobbers reg byte a +Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [16] (word~) main::$31 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] -Statement [17] (signed word*~) main::$33 ← (const signed word*) SINUS + (word~) main::$31 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ) always clobbers reg byte a -Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$33) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ) always clobbers reg byte a reg byte y +Statement [17] (signed word*~) main::$33 ← (const signed word*) SINUS + (word~) main::$31 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$33) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] -Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ) always clobbers reg byte a -Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ) always clobbers reg byte a -Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ) always clobbers reg byte a -Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ) always clobbers reg byte a -Statement [24] (word~) main::$7 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ) always clobbers reg byte a -Statement [25] (signed word~) main::$8 ← (signed word)(word~) main::$7 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ) always clobbers reg byte a -Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$8 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ) always clobbers reg byte a -Statement [27] (word~) main::$32 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ) always clobbers reg byte a -Statement [28] (signed word*~) main::$34 ← (const signed word*) SINUS + (word~) main::$32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ) always clobbers reg byte a -Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$34) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ) always clobbers reg byte a reg byte y -Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ) always clobbers reg byte a -Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ) always clobbers reg byte a -Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ) always clobbers reg byte a -Statement [35] (word~) main::$13 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [36] (signed word~) main::$14 ← (signed word)(word~) main::$13 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ) always clobbers reg byte a -Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$14 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [39] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [24] (word~) main::$7 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [25] (signed word~) main::$8 ← (signed word)(word~) main::$7 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$8 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [27] (word~) main::$32 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [28] (signed word*~) main::$34 ← (const signed word*) SINUS + (word~) main::$32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$34) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y +Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] { } ) always clobbers reg byte a +Statement [35] (word~) main::$13 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] { } ) always clobbers reg byte a +Statement [36] (signed word~) main::$14 ← (signed word)(word~) main::$13 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] { } ) always clobbers reg byte a +Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$14 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] { } ) always clobbers reg byte a +Statement [39] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:109 [ bitmap_plot::y#0 ] -Statement [41] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ) always clobbers reg byte x +Statement [41] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte x Removing always clobbered register reg byte x as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] -Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ) always clobbers reg byte a -Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ) always clobbers reg byte a -Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [58] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [60] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ) always clobbers reg byte a reg byte y -Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ) always clobbers reg byte a -Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ) always clobbers reg byte a -Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [70] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [71] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ) always clobbers reg byte a -Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] ) always clobbers reg byte a -Statement [75] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [76] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$17 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$17 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] ) always clobbers reg byte a -Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] { } ) always clobbers reg byte a +Statement [57] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a +Statement [58] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { } ) always clobbers reg byte a +Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a +Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte a reg byte y +Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [70] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [71] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [75] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [76] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$17 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$17 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:49 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp[1]:60 [ mulu16_sel::select#5 ] -Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [93] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [94] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [95] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [96] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [97] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [98] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [99] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [93] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [95] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [97] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [98] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [99] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ memset::c#4 ] -Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:33 [ memset::c#4 ] -Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] ) always clobbers reg byte a -Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [152] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [157] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [160] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [161] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [166] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [171] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [175] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [177] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [178] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [179] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [180] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [181] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [183] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [184] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [185] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [186] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] ) always clobbers reg byte a -Statement [219] (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:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [152] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [157] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [160] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [161] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [166] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [171] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [175] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [177] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [178] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [179] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [180] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [181] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [183] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [184] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [185] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [186] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:67 [ divr16u::i#2 divr16u::i#1 ] -Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [234] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [235] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [237] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [238] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [239] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a -Statement [16] (word~) main::$31 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ) always clobbers reg byte a -Statement [17] (signed word*~) main::$33 ← (const signed word*) SINUS + (word~) main::$31 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ) always clobbers reg byte a -Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$33) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ) always clobbers reg byte a reg byte y -Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ) always clobbers reg byte a -Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ) always clobbers reg byte a -Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ) always clobbers reg byte a -Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ) always clobbers reg byte a -Statement [24] (word~) main::$7 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ) always clobbers reg byte a -Statement [25] (signed word~) main::$8 ← (signed word)(word~) main::$7 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ) always clobbers reg byte a -Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$8 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ) always clobbers reg byte a -Statement [27] (word~) main::$32 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ) always clobbers reg byte a -Statement [28] (signed word*~) main::$34 ← (const signed word*) SINUS + (word~) main::$32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ) always clobbers reg byte a -Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$34) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ) always clobbers reg byte a reg byte y -Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ) always clobbers reg byte a -Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ) always clobbers reg byte a -Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ) always clobbers reg byte a -Statement [35] (word~) main::$13 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [36] (signed word~) main::$14 ← (signed word)(word~) main::$13 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ) always clobbers reg byte a -Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$14 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [39] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [41] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ) always clobbers reg byte x -Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ) always clobbers reg byte a -Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ) always clobbers reg byte a -Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ) always clobbers reg byte a -Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ) always clobbers reg byte a -Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [58] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [60] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ) always clobbers reg byte a reg byte y -Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ) always clobbers reg byte a -Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ) always clobbers reg byte a -Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ) always clobbers reg byte a -Statement [70] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [71] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ) always clobbers reg byte a -Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] ) always clobbers reg byte a -Statement [75] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [76] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$17 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$17 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] ) always clobbers reg byte a -Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [93] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [94] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [95] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [96] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [97] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [98] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [99] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] ) always clobbers reg byte a -Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] ) always clobbers reg byte a -Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [152] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [157] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [160] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [161] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [166] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [171] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [175] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [177] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [178] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [179] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [180] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [181] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [183] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [184] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [185] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [186] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] ) always clobbers reg byte a -Statement [219] (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:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [234] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [235] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a -Statement [237] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [238] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [239] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [234] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [235] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [239] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [16] (word~) main::$31 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$31 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [17] (signed word*~) main::$33 ← (const signed word*) SINUS + (word~) main::$31 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$33 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$33) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y +Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a +Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [24] (word~) main::$7 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [25] (signed word~) main::$8 ← (signed word)(word~) main::$7 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$8 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$8 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [27] (word~) main::$32 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$32 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [28] (signed word*~) main::$34 ← (const signed word*) SINUS + (word~) main::$32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$34 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$34) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y +Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a +Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] { } ) always clobbers reg byte a +Statement [35] (word~) main::$13 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$13 ] { } ) always clobbers reg byte a +Statement [36] (signed word~) main::$14 ← (signed word)(word~) main::$13 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$14 ] { } ) always clobbers reg byte a +Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$14 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 bitmap_plot::y#0 ] { } ) always clobbers reg byte a +Statement [39] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::y#0 bitmap_plot::x#0 ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte x +Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a +Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a +Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a +Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] { } ) always clobbers reg byte a +Statement [57] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a +Statement [58] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { } ) always clobbers reg byte a +Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a +Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte a reg byte y +Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [70] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [71] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [75] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$13 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [76] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$17 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$17 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$17 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [93] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [95] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [97] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [98] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [99] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a +Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [152] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [157] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [160] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [161] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [166] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [171] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [175] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [177] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [178] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [179] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [180] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [181] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [183] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [184] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [185] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [186] (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:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [234] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [235] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [239] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::r#10 main::r#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] : zp[2]:6 , @@ -6285,48 +6281,48 @@ Potential registers zp[1]:221 [ divr16u::$2 ] : zp[1]:221 , reg byte a , reg byt Potential registers zp[2]:222 [ rem16u#1 ] : zp[2]:222 , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 346.86: zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:135 [ mul16u::$1 ] 175.67: zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 12: zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 4: zp[4]:119 [ mul16u::return#2 ] 4: zp[4]:194 [ mul16u::return#3 ] -Uplift Scope [main] 40.53: zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] 22: zp[2]:69 [ main::$31 ] 22: zp[2]:71 [ main::$33 ] 22: zp[4]:79 [ main::xpos#0 ] 22: zp[2]:85 [ main::$8 ] 22: zp[2]:89 [ main::$32 ] 22: zp[2]:91 [ main::$34 ] 22: zp[4]:99 [ main::ypos#0 ] 22: zp[2]:105 [ main::$14 ] 15.22: zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] 15.21: zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] 11: zp[2]:73 [ main::cos_x#0 ] 11: zp[2]:83 [ main::$7 ] 11: zp[2]:93 [ main::sin_y#0 ] 11: zp[2]:103 [ main::$13 ] 11: zp[2]:107 [ main::y#0 ] 6.76: zp[2]:4 [ main::r#10 main::r#1 ] 0.85: zp[2]:87 [ main::x#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:61 [ 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[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:220 [ divr16u::$1 ] 22: zp[1]:221 [ divr16u::$2 ] 18.19: zp[1]:67 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:208 [ divr16u::return#2 ] 4: zp[2]:212 [ divr16u::return#3 ] -Uplift Scope [mul16s] 46.69: zp[2]:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] 46.18: zp[2]:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] 22: zp[4]:75 [ mul16s::return#3 ] 22: zp[4]:95 [ mul16s::return#4 ] 22: zp[4]:152 [ mul16s::return#2 ] 16.5: zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 7: zp[4]:131 [ mul16s::return#0 ] 4: zp[2]:123 [ mul16s::$9 ] 4: zp[2]:125 [ mul16s::$16 ] 4: zp[2]:127 [ mul16s::$13 ] 4: zp[2]:129 [ mul16s::$17 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:37 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:139 [ bitmap_init::$4 ] 22: zp[1]:140 [ bitmap_init::$5 ] 22: zp[1]:141 [ bitmap_init::$6 ] 5.5: zp[1]:138 [ bitmap_init::$7 ] -Uplift Scope [sin16s] 27.5: zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:150 [ sin16s::return#0 ] 13: zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:162 [ sin16s::$4 ] 4: zp[2]:170 [ sin16s::x2#0 ] 4: zp[2]:178 [ sin16s::x3_6#0 ] 4: zp[2]:184 [ sin16s::x4#0 ] 4: zp[2]:188 [ sin16s::x5#0 ] 4: zp[2]:190 [ sin16s::x5_128#0 ] 1: zp[2]:174 [ sin16s::x3#0 ] 1: zp[2]:192 [ sin16s::usinx#1 ] 0.64: zp[2]:166 [ sin16s::x1#0 ] 0.33: zp[2]:180 [ sin16s::usinx#0 ] 0.06: zp[1]:49 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen2] 24.54: zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 22: zp[4]:156 [ sin16s_gen2::$6 ] 13.75: zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 11: zp[2]:160 [ sin16s_gen2::$9 ] 10.33: zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.87: zp[4]:146 [ sin16s_gen2::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]:56 [ 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[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:168 [ mulu16_sel::return#0 ] 4: zp[2]:172 [ mulu16_sel::return#1 ] 4: zp[2]:176 [ mulu16_sel::return#2 ] 4: zp[2]:182 [ mulu16_sel::return#10 ] 4: zp[2]:186 [ mulu16_sel::return#11 ] 4: zp[4]:198 [ mulu16_sel::$0 ] 4: zp[4]:202 [ mulu16_sel::$1 ] 1.71: zp[2]:206 [ mulu16_sel::return#12 ] 0.33: zp[1]:60 [ mulu16_sel::select#5 ] -Uplift Scope [memset] 41.33: zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:136 [ memset::end#0 ] 2: zp[2]:29 [ memset::num#2 ] 1.38: zp[1]:33 [ memset::c#4 ] 0: zp[2]:31 [ memset::str#3 ] -Uplift Scope [bitmap_plot] 7.5: zp[1]:109 [ bitmap_plot::y#0 ] 4: zp[2]:114 [ bitmap_plot::$1 ] 4: zp[1]:118 [ bitmap_plot::$2 ] 3.75: zp[2]:110 [ bitmap_plot::x#0 ] 3: zp[2]:116 [ bitmap_plot::plotter#1 ] 1: zp[2]:112 [ bitmap_plot::plotter#0 ] -Uplift Scope [div32u16u] 4: zp[4]:142 [ div32u16u::return#2 ] 4: zp[2]:214 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:216 [ div32u16u::return#0 ] 0.8: zp[2]:210 [ div32u16u::quotient_hi#0 ] -Uplift Scope [] 0.8: zp[2]:222 [ rem16u#1 ] 0.55: zp[1]:68 [ frame_cnt ] +Uplift Scope [mul16u] 342,872,860.86: zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:135 [ mul16u::$1 ] 167,498,338.67: zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 330,006: zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 200,002: zp[4]:194 [ mul16u::return#3 ] 20,002: zp[4]:119 [ mul16u::return#2 ] +Uplift Scope [divr16u] 901,347.42: zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 318,146.32: zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:220 [ divr16u::$1 ] 200,002: zp[1]:221 [ divr16u::$2 ] 165,386.27: zp[1]:67 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:208 [ divr16u::return#2 ] 2,002: zp[2]:212 [ divr16u::return#3 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 200,002: zp[4]:198 [ mulu16_sel::$0 ] 200,002: zp[4]:202 [ mulu16_sel::$1 ] 150,010.5: zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:206 [ mulu16_sel::return#12 ] 20,002: zp[2]:168 [ mulu16_sel::return#0 ] 20,002: zp[2]:172 [ mulu16_sel::return#1 ] 20,002: zp[2]:176 [ mulu16_sel::return#2 ] 20,002: zp[2]:182 [ mulu16_sel::return#10 ] 20,002: zp[2]:186 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:60 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:162 [ sin16s::$4 ] 20,002: zp[2]:170 [ sin16s::x2#0 ] 20,002: zp[2]:178 [ sin16s::x3_6#0 ] 20,002: zp[2]:184 [ sin16s::x4#0 ] 20,002: zp[2]:188 [ sin16s::x5#0 ] 20,002: zp[2]:190 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:174 [ sin16s::x3#0 ] 5,000.5: zp[2]:192 [ sin16s::usinx#1 ] 3,182.14: zp[2]:166 [ sin16s::x1#0 ] 2,002: zp[2]:150 [ sin16s::return#0 ] 1,666.83: zp[2]:180 [ sin16s::usinx#0 ] 303.06: zp[1]:49 [ sin16s::isUpper#2 ] +Uplift Scope [mul16s] 82,508.25: zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 20,002: zp[2]:123 [ mul16s::$9 ] 20,002: zp[2]:125 [ mul16s::$16 ] 20,002: zp[2]:127 [ mul16s::$13 ] 20,002: zp[2]:129 [ mul16s::$17 ] 3,065.85: zp[2]:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] 2,240.8: zp[4]:131 [ mul16s::return#0 ] 2,002: zp[4]:152 [ mul16s::return#2 ] 1,331.55: zp[2]:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] 202: zp[4]:75 [ mul16s::return#3 ] 202: zp[4]:95 [ mul16s::return#4 ] +Uplift Scope [memset] 35,672.33: zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:136 [ memset::end#0 ] 1,250.12: zp[1]:33 [ memset::c#4 ] 1,001: zp[2]:29 [ memset::num#2 ] 0: zp[2]:31 [ memset::str#3 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:37 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:139 [ bitmap_init::$4 ] 2,002: zp[1]:140 [ bitmap_init::$5 ] 2,002: zp[1]:141 [ bitmap_init::$6 ] 500.5: zp[1]:138 [ bitmap_init::$7 ] +Uplift Scope [bitmap_plot] 2,002: zp[2]:114 [ bitmap_plot::$1 ] 2,002: zp[1]:118 [ bitmap_plot::$2 ] 1,501.5: zp[2]:116 [ bitmap_plot::plotter#1 ] 1,051.5: zp[1]:109 [ bitmap_plot::y#0 ] 525.75: zp[2]:110 [ bitmap_plot::x#0 ] 500.5: zp[2]:112 [ bitmap_plot::plotter#0 ] +Uplift Scope [sin16s_gen2] 2,233: zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 2,002: zp[4]:156 [ sin16s_gen2::$6 ] 1,251.25: zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 1,001: zp[2]:160 [ sin16s_gen2::$9 ] 940.33: zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 73.47: zp[4]:146 [ sin16s_gen2::step#0 ] +Uplift Scope [div32u16u] 2,002: zp[2]:214 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:210 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:216 [ div32u16u::return#0 ] 202: zp[4]:142 [ div32u16u::return#2 ] +Uplift Scope [main] 372.11: zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] 202: zp[2]:69 [ main::$31 ] 202: zp[2]:71 [ main::$33 ] 202: zp[4]:79 [ main::xpos#0 ] 202: zp[2]:85 [ main::$8 ] 202: zp[2]:89 [ main::$32 ] 202: zp[2]:91 [ main::$34 ] 202: zp[4]:99 [ main::ypos#0 ] 202: zp[2]:105 [ main::$14 ] 139.77: zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] 139.63: zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] 101: zp[2]:73 [ main::cos_x#0 ] 101: zp[2]:83 [ main::$7 ] 101: zp[2]:93 [ main::sin_y#0 ] 101: zp[2]:103 [ main::$13 ] 101: zp[2]:107 [ main::y#0 ] 62.04: zp[2]:4 [ main::r#10 main::r#1 ] 7.77: zp[2]:87 [ main::x#0 ] +Uplift Scope [] 2,200.4: zp[2]:222 [ rem16u#1 ] 3.82: zp[1]:68 [ frame_cnt ] Uplift Scope [bitmap_clear] Uplift Scope [init_irq] Uplift Scope [irq] -Uplifting [mul16u] best 27566 combination zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:119 [ mul16u::return#2 ] zp[4]:194 [ mul16u::return#3 ] -Uplifting [main] best 27566 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp[2]:69 [ main::$31 ] zp[2]:71 [ main::$33 ] zp[4]:79 [ main::xpos#0 ] zp[2]:85 [ main::$8 ] zp[2]:89 [ main::$32 ] zp[2]:91 [ main::$34 ] zp[4]:99 [ main::ypos#0 ] zp[2]:105 [ main::$14 ] zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:73 [ main::cos_x#0 ] zp[2]:83 [ main::$7 ] zp[2]:93 [ main::sin_y#0 ] zp[2]:103 [ main::$13 ] zp[2]:107 [ main::y#0 ] zp[2]:4 [ main::r#10 main::r#1 ] zp[2]:87 [ main::x#0 ] +Uplifting [mul16u] best 27566 combination zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:194 [ mul16u::return#3 ] zp[4]:119 [ mul16u::return#2 ] Uplifting [divr16u] best 27356 combination zp[2]:61 [ 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[2]:65 [ 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[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:208 [ divr16u::return#2 ] zp[2]:212 [ divr16u::return#3 ] -Uplifting [mul16s] best 27356 combination zp[2]:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] zp[2]:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] zp[4]:75 [ mul16s::return#3 ] zp[4]:95 [ mul16s::return#4 ] zp[4]:152 [ mul16s::return#2 ] zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[4]:131 [ mul16s::return#0 ] zp[2]:123 [ mul16s::$9 ] zp[2]:125 [ mul16s::$16 ] zp[2]:127 [ mul16s::$13 ] zp[2]:129 [ mul16s::$17 ] -Uplifting [bitmap_init] best 26846 combination zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:140 [ bitmap_init::$5 ] zp[1]:141 [ bitmap_init::$6 ] zp[1]:138 [ bitmap_init::$7 ] +Uplifting [mulu16_sel] best 27340 combination zp[2]:56 [ 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[4]:198 [ mulu16_sel::$0 ] zp[4]:202 [ mulu16_sel::$1 ] zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:206 [ mulu16_sel::return#12 ] zp[2]:168 [ mulu16_sel::return#0 ] zp[2]:172 [ mulu16_sel::return#1 ] zp[2]:176 [ mulu16_sel::return#2 ] zp[2]:182 [ mulu16_sel::return#10 ] zp[2]:186 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s] best 27331 combination zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:162 [ sin16s::$4 ] zp[2]:170 [ sin16s::x2#0 ] zp[2]:178 [ sin16s::x3_6#0 ] zp[2]:184 [ sin16s::x4#0 ] zp[2]:188 [ sin16s::x5#0 ] zp[2]:190 [ sin16s::x5_128#0 ] zp[2]:174 [ sin16s::x3#0 ] zp[2]:192 [ sin16s::usinx#1 ] zp[2]:166 [ sin16s::x1#0 ] zp[2]:150 [ sin16s::return#0 ] zp[2]:180 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [mul16s] best 27331 combination zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:123 [ mul16s::$9 ] zp[2]:125 [ mul16s::$16 ] zp[2]:127 [ mul16s::$13 ] zp[2]:129 [ mul16s::$17 ] zp[2]:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] zp[4]:131 [ mul16s::return#0 ] zp[4]:152 [ mul16s::return#2 ] zp[2]:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] zp[4]:75 [ mul16s::return#3 ] zp[4]:95 [ mul16s::return#4 ] +Uplifting [memset] best 27315 combination zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:136 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:29 [ memset::num#2 ] zp[2]:31 [ memset::str#3 ] +Uplifting [bitmap_init] best 26805 combination zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:140 [ bitmap_init::$5 ] zp[1]:141 [ bitmap_init::$6 ] zp[1]:138 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [sin16s] best 26837 combination zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:150 [ sin16s::return#0 ] zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:162 [ sin16s::$4 ] zp[2]:170 [ sin16s::x2#0 ] zp[2]:178 [ sin16s::x3_6#0 ] zp[2]:184 [ sin16s::x4#0 ] zp[2]:188 [ sin16s::x5#0 ] zp[2]:190 [ sin16s::x5_128#0 ] zp[2]:174 [ sin16s::x3#0 ] zp[2]:192 [ sin16s::usinx#1 ] zp[2]:166 [ sin16s::x1#0 ] zp[2]:180 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen2] best 26837 combination zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:156 [ sin16s_gen2::$6 ] zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:160 [ sin16s_gen2::$9 ] zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:146 [ sin16s_gen2::step#0 ] -Uplifting [mulu16_sel] best 26821 combination zp[2]:56 [ 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[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:168 [ mulu16_sel::return#0 ] zp[2]:172 [ mulu16_sel::return#1 ] zp[2]:176 [ mulu16_sel::return#2 ] zp[2]:182 [ mulu16_sel::return#10 ] zp[2]:186 [ mulu16_sel::return#11 ] zp[4]:198 [ mulu16_sel::$0 ] zp[4]:202 [ mulu16_sel::$1 ] zp[2]:206 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [memset] best 26805 combination zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:136 [ memset::end#0 ] zp[2]:29 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:31 [ memset::str#3 ] -Uplifting [bitmap_plot] best 26788 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:114 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:110 [ bitmap_plot::x#0 ] zp[2]:116 [ bitmap_plot::plotter#1 ] zp[2]:112 [ bitmap_plot::plotter#0 ] -Uplifting [div32u16u] best 26788 combination zp[4]:142 [ div32u16u::return#2 ] zp[2]:214 [ div32u16u::quotient_lo#0 ] zp[4]:216 [ div32u16u::return#0 ] zp[2]:210 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 26788 combination zp[2]:222 [ rem16u#1 ] zp[1]:68 [ frame_cnt ] -Uplifting [bitmap_clear] best 26788 combination -Uplifting [init_irq] best 26788 combination -Uplifting [irq] best 26788 combination -Attempting to uplift remaining variables inzp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] -Uplifting [main] best 26788 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] +Uplifting [bitmap_plot] best 26786 combination zp[2]:114 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:116 [ bitmap_plot::plotter#1 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:110 [ bitmap_plot::x#0 ] zp[2]:112 [ bitmap_plot::plotter#0 ] +Uplifting [sin16s_gen2] best 26786 combination zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:156 [ sin16s_gen2::$6 ] zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:160 [ sin16s_gen2::$9 ] zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:146 [ sin16s_gen2::step#0 ] +Uplifting [div32u16u] best 26786 combination zp[2]:214 [ div32u16u::quotient_lo#0 ] zp[2]:210 [ div32u16u::quotient_hi#0 ] zp[4]:216 [ div32u16u::return#0 ] zp[4]:142 [ div32u16u::return#2 ] +Uplifting [main] best 26786 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp[2]:69 [ main::$31 ] zp[2]:71 [ main::$33 ] zp[4]:79 [ main::xpos#0 ] zp[2]:85 [ main::$8 ] zp[2]:89 [ main::$32 ] zp[2]:91 [ main::$34 ] zp[4]:99 [ main::ypos#0 ] zp[2]:105 [ main::$14 ] zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:73 [ main::cos_x#0 ] zp[2]:83 [ main::$7 ] zp[2]:93 [ main::sin_y#0 ] zp[2]:103 [ main::$13 ] zp[2]:107 [ main::y#0 ] zp[2]:4 [ main::r#10 main::r#1 ] zp[2]:87 [ main::x#0 ] +Uplifting [] best 26786 combination zp[2]:222 [ rem16u#1 ] zp[1]:68 [ frame_cnt ] +Uplifting [bitmap_clear] best 26786 combination +Uplifting [init_irq] best 26786 combination +Uplifting [irq] best 26786 combination Attempting to uplift remaining variables inzp[1]:140 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 26728 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 26726 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:141 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 26668 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 26666 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:138 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 26668 combination zp[1]:138 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 26666 combination zp[1]:138 [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] +Uplifting [main] best 26666 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] Attempting to uplift remaining variables inzp[1]:68 [ frame_cnt ] -Uplifting [] best 26668 combination zp[1]:68 [ frame_cnt ] +Uplifting [] best 26666 combination zp[1]:68 [ frame_cnt ] Coalescing zero page register [ zp[2]:4 [ main::r#10 main::r#1 ] ] with [ zp[2]:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:192 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:56 [ 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[2]:174 [ sin16s::x3#0 ] ] - score: 2 @@ -6866,11 +6862,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [60] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 - lda.z x - // [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [60] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1 + ldx.z x + // [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -8353,10 +8348,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:32 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:32 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -8365,32 +8360,32 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:15 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:15 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:15 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:15 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:15 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:15 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:43 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:43 2002.0 +(byte~) bitmap_plot::$2 reg byte x 2002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:37 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:37 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:37 500.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:37 1501.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:28 3.75 +(word) bitmap_plot::x#0 x zp[2]:28 525.75 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 7.5 +(byte) bitmap_plot::y#0 reg byte x 1051.5 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } @@ -8403,15 +8398,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:45 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:45 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:33 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:33 4.0 +(dword) div32u16u::return#0 return zp[4]:33 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:33 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -8420,31 +8415,31 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:30 2.75 -(word) divr16u::dividend#3 dividend zp[2]:30 5.0 -(word) divr16u::dividend#5 dividend zp[2]:30 2.0 +(word) divr16u::dividend#0 dividend zp[2]:30 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:30 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:30 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:37 16.5 -(word) divr16u::quotient#2 quotient zp[2]:37 11.0 -(word) divr16u::quotient#3 quotient zp[2]:37 2.75 +(word) divr16u::quotient#1 quotient zp[2]:37 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:37 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:37 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:25 8.25 -(word) divr16u::rem#1 rem zp[2]:25 22.0 -(word) divr16u::rem#10 rem zp[2]:25 4.0 -(word) divr16u::rem#11 rem zp[2]:25 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:25 22.0 -(word) divr16u::rem#4 rem zp[2]:25 4.0 -(word) divr16u::rem#5 rem zp[2]:25 24.0 -(word) divr16u::rem#6 rem zp[2]:25 11.0 +(word) divr16u::rem#0 rem zp[2]:25 75000.75 +(word) divr16u::rem#1 rem zp[2]:25 200002.0 +(word) divr16u::rem#10 rem zp[2]:25 11002.0 +(word) divr16u::rem#11 rem zp[2]:25 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:25 200002.0 +(word) divr16u::rem#4 rem zp[2]:25 2002.0 +(word) divr16u::rem#5 rem zp[2]:25 210003.0 +(word) divr16u::rem#6 rem zp[2]:25 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:37 5.285714285714286 -(word) divr16u::return#2 return zp[2]:37 4.0 -(word) divr16u::return#3 return zp[2]:37 4.0 -(byte) frame_cnt loadstore zp[1]:27 0.5454545454545455 +(word) divr16u::return#0 return zp[2]:37 43143.57142857143 +(word) divr16u::return#2 return zp[2]:37 2002.0 +(word) divr16u::return#3 return zp[2]:37 2002.0 +(byte) frame_cnt loadstore zp[1]:27 3.8181818181818175 (void()) init_irq() (label) init_irq::@return interrupt(HARDWARE_CLOBBER)(void()) irq() @@ -8452,14 +8447,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) irq::@2 (label) irq::@return (void()) main() -(word~) main::$13 zp[2]:30 11.0 -(signed word~) main::$14 zp[2]:30 22.0 -(word~) main::$31 zp[2]:9 22.0 -(word~) main::$32 zp[2]:9 22.0 -(signed word*~) main::$33 zp[2]:9 22.0 -(signed word*~) main::$34 zp[2]:9 22.0 -(word~) main::$7 zp[2]:28 11.0 -(signed word~) main::$8 zp[2]:28 22.0 +(word~) main::$13 zp[2]:30 101.0 +(signed word~) main::$14 zp[2]:30 202.0 +(word~) main::$31 zp[2]:9 202.0 +(word~) main::$32 zp[2]:9 202.0 +(signed word*~) main::$33 zp[2]:9 202.0 +(signed word*~) main::$34 zp[2]:9 202.0 +(word~) main::$7 zp[2]:28 101.0 +(signed word~) main::$8 zp[2]:28 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -8478,60 +8473,60 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@8 (label) main::@9 (signed word) main::cos_x -(signed word) main::cos_x#0 cos_x zp[2]:9 11.0 +(signed word) main::cos_x#0 cos_x zp[2]:9 101.0 (word) main::idx_x -(word) main::idx_x#1 idx_x zp[2]:2 11.0 -(word) main::idx_x#10 idx_x zp[2]:2 3.0 -(word) main::idx_x#11 idx_x zp[2]:2 1.222222222222222 +(word) main::idx_x#1 idx_x zp[2]:2 101.0 +(word) main::idx_x#10 idx_x zp[2]:2 27.545454545454547 +(word) main::idx_x#11 idx_x zp[2]:2 11.222222222222223 (word) main::idx_y -(word) main::idx_y#1 idx_y zp[2]:6 11.0 -(word) main::idx_y#10 idx_y zp[2]:6 3.142857142857143 -(word) main::idx_y#3 idx_y zp[2]:6 1.064516129032258 +(word) main::idx_y#1 idx_y zp[2]:6 101.0 +(word) main::idx_y#10 idx_y zp[2]:6 28.857142857142858 +(word) main::idx_y#3 idx_y zp[2]:6 9.774193548387098 (signed word) main::r -(signed word) main::r#1 r zp[2]:4 5.5 -(signed word) main::r#10 r zp[2]:4 1.2571428571428571 +(signed word) main::r#1 r zp[2]:4 50.5 +(signed word) main::r#10 r zp[2]:4 11.542857142857143 (byte) main::r_add -(byte) main::r_add#1 r_add zp[1]:8 22.0 -(byte) main::r_add#10 r_add zp[1]:8 2.026315789473684 -(byte) main::r_add#12 r_add zp[1]:8 16.5 +(byte) main::r_add#1 r_add zp[1]:8 202.0 +(byte) main::r_add#10 r_add zp[1]:8 18.60526315789474 +(byte) main::r_add#12 r_add zp[1]:8 151.5 (signed word) main::sin_y -(signed word) main::sin_y#0 sin_y zp[2]:9 11.0 +(signed word) main::sin_y#0 sin_y zp[2]:9 101.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::x -(signed word) main::x#0 x zp[2]:28 0.8461538461538461 +(signed word) main::x#0 x zp[2]:28 7.769230769230769 (signed dword) main::xpos -(signed dword) main::xpos#0 xpos zp[4]:11 22.0 +(signed dword) main::xpos#0 xpos zp[4]:11 202.0 (word) main::y -(signed word) main::y#0 y zp[2]:30 11.0 +(signed word) main::y#0 y zp[2]:30 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 ypos zp[4]:11 22.0 +(signed dword) main::ypos#0 ypos zp[4]:11 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:37 22.0 -(byte*) memset::dst#2 dst zp[2]:37 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:37 4.0 +(byte*) memset::dst#1 dst zp[2]:37 20002.0 +(byte*) memset::dst#2 dst zp[2]:37 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:37 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:30 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:30 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:30 2.0 +(word) memset::num#2 num zp[2]:30 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:37 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:37 4.0 -(word~) mul16s::$16 zp[2]:43 4.0 -(word~) mul16s::$17 zp[2]:37 4.0 -(word~) mul16s::$9 zp[2]:43 4.0 +(word~) mul16s::$13 zp[2]:37 20002.0 +(word~) mul16s::$16 zp[2]:43 20002.0 +(word~) mul16s::$17 zp[2]:37 20002.0 +(word~) mul16s::$9 zp[2]:43 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -8539,85 +8534,85 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:4 22.0 -(signed word) mul16s::a#1 a zp[2]:4 11.0 -(signed word) mul16s::a#2 a zp[2]:4 11.0 -(signed word) mul16s::a#3 a zp[2]:4 2.692307692307692 +(signed word) mul16s::a#0 a zp[2]:4 2002.0 +(signed word) mul16s::a#1 a zp[2]:4 101.0 +(signed word) mul16s::a#2 a zp[2]:4 101.0 +(signed word) mul16s::a#3 a zp[2]:4 861.8461538461538 (signed word) mul16s::b -(signed word) mul16s::b#1 b zp[2]:9 22.0 -(signed word) mul16s::b#2 b zp[2]:9 22.0 -(signed word) mul16s::b#3 b zp[2]:9 2.1818181818181817 +(signed word) mul16s::b#1 b zp[2]:9 202.0 +(signed word) mul16s::b#2 b zp[2]:9 202.0 +(signed word) mul16s::b#3 b zp[2]:9 927.5454545454545 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:11 2.0 -(dword) mul16s::m#1 m zp[4]:11 4.0 -(dword) mul16s::m#2 m zp[4]:11 4.0 -(dword) mul16s::m#4 m zp[4]:11 4.0 -(dword) mul16s::m#5 m zp[4]:11 2.5 +(dword) mul16s::m#0 m zp[4]:11 10001.0 +(dword) mul16s::m#1 m zp[4]:11 20002.0 +(dword) mul16s::m#2 m zp[4]:11 20002.0 +(dword) mul16s::m#4 m zp[4]:11 20002.0 +(dword) mul16s::m#5 m zp[4]:11 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:11 7.000000000000001 -(signed dword) mul16s::return#2 return zp[4]:11 22.0 -(signed dword) mul16s::return#3 return zp[4]:11 22.0 -(signed dword) mul16s::return#4 return zp[4]:11 22.0 +(signed dword) mul16s::return#0 return zp[4]:11 2240.8 +(signed dword) mul16s::return#2 return zp[4]:11 2002.0 +(signed dword) mul16s::return#3 return zp[4]:11 202.0 +(signed dword) mul16s::return#4 return zp[4]:11 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:37 101.0 -(word) mul16u::a#1 a zp[2]:37 2.0 -(word) mul16u::a#2 a zp[2]:37 2.0 -(word) mul16u::a#3 a zp[2]:37 67.66666666666666 -(word) mul16u::a#6 a zp[2]:37 3.0 +(word) mul16u::a#0 a zp[2]:37 1.00000001E8 +(word) mul16u::a#1 a zp[2]:37 10001.0 +(word) mul16u::a#2 a zp[2]:37 100001.0 +(word) mul16u::a#3 a zp[2]:37 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:37 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:30 4.0 -(word) mul16u::b#1 b zp[2]:30 4.0 -(word) mul16u::b#2 b zp[2]:30 4.0 +(word) mul16u::b#0 b zp[2]:30 20002.0 +(word) mul16u::b#1 b zp[2]:30 200002.0 +(word) mul16u::b#2 b zp[2]:30 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:21 4.0 -(dword) mul16u::mb#1 mb zp[4]:21 202.0 -(dword) mul16u::mb#2 mb zp[4]:21 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:21 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:21 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:21 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:11 202.0 -(dword) mul16u::res#2 res zp[4]:11 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:11 101.0 +(dword) mul16u::res#1 res zp[4]:11 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:11 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:11 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:11 4.0 -(dword) mul16u::return#3 return zp[4]:11 4.0 +(dword) mul16u::return#2 return zp[4]:11 20002.0 +(dword) mul16u::return#3 return zp[4]:11 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:11 4.0 -(dword~) mulu16_sel::$1 zp[4]:11 4.0 +(dword~) mulu16_sel::$0 zp[4]:11 200002.0 +(dword~) mulu16_sel::$1 zp[4]:11 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:43 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:25 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:25 4.0 -(word) mulu16_sel::return#11 return zp[2]:43 4.0 -(word) mulu16_sel::return#12 return zp[2]:43 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:43 4.0 +(word) mulu16_sel::return#0 return zp[2]:43 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:25 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:25 20002.0 +(word) mulu16_sel::return#11 return zp[2]:43 20002.0 +(word) mulu16_sel::return#12 return zp[2]:43 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:43 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:25 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:25 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:25 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:25 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:30 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:30 70002.5 (const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) } (word) rem16u -(word) rem16u#1 rem16u zp[2]:25 0.8 +(word) rem16u#1 rem16u zp[2]:25 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:39 4.0 +(dword~) sin16s::$4 zp[4]:39 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -8632,39 +8627,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:4 22.0 -(signed word) sin16s::return#1 return zp[2]:4 5.0 -(signed word) sin16s::return#5 return zp[2]:4 4.0 +(signed word) sin16s::return#0 return zp[2]:4 2002.0 +(signed word) sin16s::return#1 return zp[2]:4 7001.0 +(signed word) sin16s::return#5 return zp[2]:4 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:4 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:4 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:4 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:4 1.0 +(word) sin16s::usinx#0 usinx zp[2]:4 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:4 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:21 8.5 -(dword) sin16s::x#1 x zp[4]:21 4.0 -(dword) sin16s::x#2 x zp[4]:21 4.0 -(dword) sin16s::x#4 x zp[4]:21 5.0 -(dword) sin16s::x#6 x zp[4]:21 6.0 +(dword) sin16s::x#0 x zp[4]:21 15502.0 +(dword) sin16s::x#1 x zp[4]:21 20002.0 +(dword) sin16s::x#2 x zp[4]:21 20002.0 +(dword) sin16s::x#4 x zp[4]:21 25002.5 +(dword) sin16s::x#6 x zp[4]:21 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:45 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:45 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:25 4.0 +(word) sin16s::x2#0 x2 zp[2]:25 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:25 1.0 +(word) sin16s::x3#0 x3 zp[2]:25 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:43 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:43 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:25 4.0 +(word) sin16s::x4#0 x4 zp[2]:25 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:43 4.0 +(word) sin16s::x5#0 x5 zp[2]:43 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:43 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:43 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:11 22.0 -(word~) sin16s_gen2::$9 zp[2]:37 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:11 2002.0 +(word~) sin16s_gen2::$9 zp[2]:37 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -8674,23 +8669,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:15 22.0 -(word) sin16s_gen2::i#2 i zp[2]:15 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:15 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:15 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $1001 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$1001 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:28 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:28 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:33 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:33 73.46666666666667 (word) sin16s_gen2::wavelength (const word) sin16s_gen2::wavelength#0 wavelength = (word) $200 (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:17 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:17 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:17 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:17 250.25 zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ] @@ -8713,7 +8708,7 @@ zp[1]:27 [ frame_cnt ] zp[2]:28 [ main::$7 main::$8 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[2]:30 [ main::$13 main::$14 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] reg byte x [ bitmap_plot::y#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ mul16u::$1 ] zp[1]:32 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] @@ -8729,7 +8724,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 20853 +Score: 20851 // File Comments // Tests the simple bitmap plotter - and counts plots per frame in an IRQ @@ -9151,12 +9146,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f (byte*) main::toD0181_screen (word) main::x -(signed word) main::x#0 x zp[2]:28 0.8461538461538461 +(signed word) main::x#0 x zp[2]:28 7.769230769230769 (signed dword) main::xpos -(signed dword) main::xpos#0 xpos zp[4]:11 22.0 +(signed dword) main::xpos#0 xpos zp[4]:11 202.0 (word) main::y -(signed word) main::y#0 y zp[2]:30 11.0 +(signed word) main::y#0 y zp[2]:30 101.0 (signed dword) main::ypos -(signed dword) main::ypos#0 ypos zp[4]:11 22.0 +(signed dword) main::ypos#0 ypos zp[4]:11 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:37 22.0 -(byte*) memset::dst#2 dst zp[2]:37 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:37 4.0 +(byte*) memset::dst#1 dst zp[2]:37 20002.0 +(byte*) memset::dst#2 dst zp[2]:37 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:37 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:30 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:30 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:30 2.0 +(word) memset::num#2 num zp[2]:30 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:37 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:37 4.0 -(word~) mul16s::$16 zp[2]:43 4.0 -(word~) mul16s::$17 zp[2]:37 4.0 -(word~) mul16s::$9 zp[2]:43 4.0 +(word~) mul16s::$13 zp[2]:37 20002.0 +(word~) mul16s::$16 zp[2]:43 20002.0 +(word~) mul16s::$17 zp[2]:37 20002.0 +(word~) mul16s::$9 zp[2]:43 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -225,85 +225,85 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:4 22.0 -(signed word) mul16s::a#1 a zp[2]:4 11.0 -(signed word) mul16s::a#2 a zp[2]:4 11.0 -(signed word) mul16s::a#3 a zp[2]:4 2.692307692307692 +(signed word) mul16s::a#0 a zp[2]:4 2002.0 +(signed word) mul16s::a#1 a zp[2]:4 101.0 +(signed word) mul16s::a#2 a zp[2]:4 101.0 +(signed word) mul16s::a#3 a zp[2]:4 861.8461538461538 (signed word) mul16s::b -(signed word) mul16s::b#1 b zp[2]:9 22.0 -(signed word) mul16s::b#2 b zp[2]:9 22.0 -(signed word) mul16s::b#3 b zp[2]:9 2.1818181818181817 +(signed word) mul16s::b#1 b zp[2]:9 202.0 +(signed word) mul16s::b#2 b zp[2]:9 202.0 +(signed word) mul16s::b#3 b zp[2]:9 927.5454545454545 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:11 2.0 -(dword) mul16s::m#1 m zp[4]:11 4.0 -(dword) mul16s::m#2 m zp[4]:11 4.0 -(dword) mul16s::m#4 m zp[4]:11 4.0 -(dword) mul16s::m#5 m zp[4]:11 2.5 +(dword) mul16s::m#0 m zp[4]:11 10001.0 +(dword) mul16s::m#1 m zp[4]:11 20002.0 +(dword) mul16s::m#2 m zp[4]:11 20002.0 +(dword) mul16s::m#4 m zp[4]:11 20002.0 +(dword) mul16s::m#5 m zp[4]:11 12501.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:11 7.000000000000001 -(signed dword) mul16s::return#2 return zp[4]:11 22.0 -(signed dword) mul16s::return#3 return zp[4]:11 22.0 -(signed dword) mul16s::return#4 return zp[4]:11 22.0 +(signed dword) mul16s::return#0 return zp[4]:11 2240.8 +(signed dword) mul16s::return#2 return zp[4]:11 2002.0 +(signed dword) mul16s::return#3 return zp[4]:11 202.0 +(signed dword) mul16s::return#4 return zp[4]:11 202.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:37 101.0 -(word) mul16u::a#1 a zp[2]:37 2.0 -(word) mul16u::a#2 a zp[2]:37 2.0 -(word) mul16u::a#3 a zp[2]:37 67.66666666666666 -(word) mul16u::a#6 a zp[2]:37 3.0 +(word) mul16u::a#0 a zp[2]:37 1.00000001E8 +(word) mul16u::a#1 a zp[2]:37 10001.0 +(word) mul16u::a#2 a zp[2]:37 100001.0 +(word) mul16u::a#3 a zp[2]:37 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:37 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:30 4.0 -(word) mul16u::b#1 b zp[2]:30 4.0 -(word) mul16u::b#2 b zp[2]:30 4.0 +(word) mul16u::b#0 b zp[2]:30 20002.0 +(word) mul16u::b#1 b zp[2]:30 200002.0 +(word) mul16u::b#2 b zp[2]:30 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:21 4.0 -(dword) mul16u::mb#1 mb zp[4]:21 202.0 -(dword) mul16u::mb#2 mb zp[4]:21 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:21 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:21 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:21 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:11 202.0 -(dword) mul16u::res#2 res zp[4]:11 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:11 101.0 +(dword) mul16u::res#1 res zp[4]:11 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:11 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:11 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:11 4.0 -(dword) mul16u::return#3 return zp[4]:11 4.0 +(dword) mul16u::return#2 return zp[4]:11 20002.0 +(dword) mul16u::return#3 return zp[4]:11 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:11 4.0 -(dword~) mulu16_sel::$1 zp[4]:11 4.0 +(dword~) mulu16_sel::$0 zp[4]:11 200002.0 +(dword~) mulu16_sel::$1 zp[4]:11 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:43 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:25 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:25 4.0 -(word) mulu16_sel::return#11 return zp[2]:43 4.0 -(word) mulu16_sel::return#12 return zp[2]:43 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:43 4.0 +(word) mulu16_sel::return#0 return zp[2]:43 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:25 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:25 20002.0 +(word) mulu16_sel::return#11 return zp[2]:43 20002.0 +(word) mulu16_sel::return#12 return zp[2]:43 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:43 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:25 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:25 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:25 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:25 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:25 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:25 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:30 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:30 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:30 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:30 70002.5 (const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) } (word) rem16u -(word) rem16u#1 rem16u zp[2]:25 0.8 +(word) rem16u#1 rem16u zp[2]:25 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:39 4.0 +(dword~) sin16s::$4 zp[4]:39 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -318,39 +318,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:4 22.0 -(signed word) sin16s::return#1 return zp[2]:4 5.0 -(signed word) sin16s::return#5 return zp[2]:4 4.0 +(signed word) sin16s::return#0 return zp[2]:4 2002.0 +(signed word) sin16s::return#1 return zp[2]:4 7001.0 +(signed word) sin16s::return#5 return zp[2]:4 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:4 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:4 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:4 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:4 1.0 +(word) sin16s::usinx#0 usinx zp[2]:4 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:4 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:21 8.5 -(dword) sin16s::x#1 x zp[4]:21 4.0 -(dword) sin16s::x#2 x zp[4]:21 4.0 -(dword) sin16s::x#4 x zp[4]:21 5.0 -(dword) sin16s::x#6 x zp[4]:21 6.0 +(dword) sin16s::x#0 x zp[4]:21 15502.0 +(dword) sin16s::x#1 x zp[4]:21 20002.0 +(dword) sin16s::x#2 x zp[4]:21 20002.0 +(dword) sin16s::x#4 x zp[4]:21 25002.5 +(dword) sin16s::x#6 x zp[4]:21 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:45 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:45 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:25 4.0 +(word) sin16s::x2#0 x2 zp[2]:25 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:25 1.0 +(word) sin16s::x3#0 x3 zp[2]:25 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:43 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:43 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:25 4.0 +(word) sin16s::x4#0 x4 zp[2]:25 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:43 4.0 +(word) sin16s::x5#0 x5 zp[2]:43 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:43 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:43 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:11 22.0 -(word~) sin16s_gen2::$9 zp[2]:37 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:11 2002.0 +(word~) sin16s_gen2::$9 zp[2]:37 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -360,23 +360,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:15 22.0 -(word) sin16s_gen2::i#2 i zp[2]:15 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:15 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:15 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $1001 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$1001 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:28 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:28 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:33 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:33 73.46666666666667 (word) sin16s_gen2::wavelength (const word) sin16s_gen2::wavelength#0 wavelength = (word) $200 (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:17 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:17 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:17 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:17 250.25 zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ] @@ -399,7 +399,7 @@ zp[1]:27 [ frame_cnt ] zp[2]:28 [ main::$7 main::$8 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[2]:30 [ main::$13 main::$14 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] reg byte x [ bitmap_plot::y#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ mul16u::$1 ] zp[1]:32 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] diff --git a/src/test/ref/bitmap-plot-3.asm b/src/test/ref/bitmap-plot-3.asm index 6dda57da5..1ff07e7c6 100644 --- a/src/test/ref/bitmap-plot-3.asm +++ b/src/test/ref/bitmap-plot-3.asm @@ -339,10 +339,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // = (word) bitmap_line::e#1 from [148] (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 Inversing boolean not [171] (bool~) bitmap_line::$27 ← (word) bitmap_line::dx#5 >= (word) bitmap_line::e1#1 from [170] (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 -Alias (byte*) bitmap_gfx#26 = (byte*) bitmap_gfx#27 -Alias (byte*) bitmap_screen#25 = (byte*) bitmap_screen#26 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 -Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#23 -Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#22 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 -Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 -Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 -Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 -Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 (word) bitmap_line::x1#4 (word) bitmap_line::x#16 (word) bitmap_line::x1#3 (word) bitmap_line::x#10 (word) bitmap_line::x1#2 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 -Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 (word) bitmap_line::y1#2 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#5 (word) bitmap_line::y1#4 (word) bitmap_line::y#19 (word) bitmap_line::y1#3 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 -Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 -Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 -Alias (word) bitmap_line::y2#1 = (word) bitmap_line::y2#4 (word) bitmap_line::y2#8 (word) bitmap_line::y2#5 (word) bitmap_line::y2#2 (word) bitmap_line::y2#11 (word) bitmap_line::y2#10 -Alias (word) bitmap_line::x2#1 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#4 (word) bitmap_line::x2#2 (word) bitmap_line::x2#11 (word) bitmap_line::x2#10 (word) bitmap_line::x2#9 -Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 -Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 -Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 -Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 -Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 -Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 -Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 -Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 -Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 -Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 -Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 -Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 -Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 -Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 -Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 -Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 -Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 -Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 -Alias (word) bitmap_line::y2#6 = (word) bitmap_line::y2#9 (word) bitmap_line::y2#7 -Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 -Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 -Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 -Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 -Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 -Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 -Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 -Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 -Alias (word) bitmap_line::x2#5 = (word) bitmap_line::x2#6 (word) bitmap_line::x2#8 -Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 -Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 -Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 -Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 -Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 -Alias (word) sgn_u16::return#4 = (word) sgn_u16::return#7 -Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#28 (byte*) bitmap_gfx#24 -Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#28 (byte*) bitmap_screen#27 (byte*) bitmap_screen#23 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$2 -Alias (byte) main::a#2 = (byte) main::a#4 (byte) main::a#3 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3 -Alias (byte*) bitmap_gfx#18 = (byte*) bitmap_gfx#25 (byte*) bitmap_gfx#22 -Alias (byte*) bitmap_screen#17 = (byte*) bitmap_screen#24 (byte*) bitmap_screen#21 -Alias (word) bitmap_line::x1#0 = (word~) main::$5 -Alias (word) bitmap_line::y1#0 = (word~) main::$6 -Alias (word) bitmap_line::x2#0 = (word~) main::$9 -Alias (word) bitmap_line::y2#0 = (word~) main::$11 -Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 -Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#18 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 -Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#15 -Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#14 -Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 -Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::gfx#4 = bitmap_init::gfx#5 +Alias bitmap_gfx#26 = bitmap_gfx#27 +Alias bitmap_screen#25 = bitmap_screen#26 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0 +Alias bitmap_gfx#20 = bitmap_gfx#23 +Alias bitmap_screen#19 = bitmap_screen#22 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_gfx#16 = bitmap_gfx#17 +Alias bitmap_screen#15 = bitmap_screen#16 +Alias bitmap_init::yoffs#1 = bitmap_init::$10 +Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2 +Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2 +Alias bitmap_clear::col#0 = bitmap_clear::$1 +Alias bitmap_gfx#12 = bitmap_gfx#7 +Alias bitmap_plot::plotter#0 = bitmap_plot::$0 +Alias bitmap_line::x#0 = bitmap_line::x1#1 bitmap_line::x1#4 bitmap_line::x#16 bitmap_line::x1#3 bitmap_line::x#10 bitmap_line::x1#2 bitmap_line::x#19 bitmap_line::x#18 bitmap_line::x#17 bitmap_line::x#3 bitmap_line::x#14 bitmap_line::x#11 +Alias bitmap_line::y#0 = bitmap_line::y1#1 bitmap_line::y1#2 bitmap_line::y#16 bitmap_line::y#10 bitmap_line::y1#5 bitmap_line::y1#4 bitmap_line::y#19 bitmap_line::y1#3 bitmap_line::y#18 bitmap_line::y#17 bitmap_line::y#3 bitmap_line::y#14 bitmap_line::y#11 +Alias abs_u16::w#0 = bitmap_line::$0 +Alias abs_u16::return#0 = abs_u16::return#5 +Alias bitmap_line::y2#1 = bitmap_line::y2#4 bitmap_line::y2#8 bitmap_line::y2#5 bitmap_line::y2#2 bitmap_line::y2#11 bitmap_line::y2#10 +Alias bitmap_line::x2#1 = bitmap_line::x2#7 bitmap_line::x2#4 bitmap_line::x2#2 bitmap_line::x2#11 bitmap_line::x2#10 bitmap_line::x2#9 +Alias bitmap_line::dx#0 = bitmap_line::$1 bitmap_line::dx#1 bitmap_line::dx#10 bitmap_line::dx#7 bitmap_line::dx#2 bitmap_line::dx#13 bitmap_line::dx#3 +Alias abs_u16::w#1 = bitmap_line::$2 +Alias abs_u16::return#1 = abs_u16::return#6 +Alias bitmap_line::dy#0 = bitmap_line::$3 bitmap_line::dy#9 bitmap_line::dy#6 bitmap_line::dy#1 bitmap_line::dy#2 bitmap_line::dy#10 +Alias sgn_u16::w#0 = bitmap_line::$8 +Alias sgn_u16::return#0 = sgn_u16::return#5 +Alias bitmap_line::sx#0 = bitmap_line::$9 bitmap_line::sx#8 bitmap_line::sx#7 bitmap_line::sx#9 +Alias sgn_u16::w#1 = bitmap_line::$10 +Alias sgn_u16::return#1 = sgn_u16::return#6 +Alias bitmap_line::sy#0 = bitmap_line::$11 bitmap_line::sy#10 bitmap_line::sy#5 +Alias bitmap_plot::y#0 = bitmap_line::$15 +Alias bitmap_line::e1#0 = bitmap_line::$23 +Alias bitmap_line::e#0 = bitmap_line::$17 +Alias bitmap_plot::y#1 = bitmap_line::$18 +Alias bitmap_line::y#4 = bitmap_line::y#5 +Alias bitmap_line::sy#1 = bitmap_line::sy#3 bitmap_line::sy#8 +Alias bitmap_line::e#3 = bitmap_line::e#5 +Alias bitmap_line::dx#14 = bitmap_line::dx#4 bitmap_line::dx#8 +Alias bitmap_line::dy#3 = bitmap_line::dy#7 bitmap_line::dy#4 +Alias bitmap_line::y2#6 = bitmap_line::y2#9 bitmap_line::y2#7 +Alias bitmap_line::x#13 = bitmap_line::x#4 bitmap_line::x#5 +Alias bitmap_line::sx#1 = bitmap_line::sx#3 bitmap_line::sx#5 +Alias bitmap_line::e#1 = bitmap_line::e#4 +Alias bitmap_line::y#1 = bitmap_line::y#12 +Alias bitmap_plot::y#2 = bitmap_line::$13 +Alias bitmap_plot::y#3 = bitmap_line::$24 +Alias bitmap_line::x#7 = bitmap_line::x#8 +Alias bitmap_line::sx#11 = bitmap_line::sx#2 bitmap_line::sx#4 +Alias bitmap_line::e1#3 = bitmap_line::e1#5 +Alias bitmap_line::dy#13 = bitmap_line::dy#5 bitmap_line::dy#8 +Alias bitmap_line::dx#5 = bitmap_line::dx#9 bitmap_line::dx#6 +Alias bitmap_line::x2#5 = bitmap_line::x2#6 bitmap_line::x2#8 +Alias bitmap_line::y#15 = bitmap_line::y#8 bitmap_line::y#9 +Alias bitmap_line::sy#2 = bitmap_line::sy#4 bitmap_line::sy#7 +Alias bitmap_line::e1#1 = bitmap_line::e1#4 +Alias bitmap_line::x#15 = bitmap_line::x#2 +Alias abs_u16::w#2 = abs_u16::w#3 abs_u16::w#4 abs_u16::return#3 +Alias abs_u16::return#2 = abs_u16::$2 +Alias abs_u16::return#4 = abs_u16::return#7 +Alias sgn_u16::return#4 = sgn_u16::return#7 +Alias bitmap_gfx#21 = bitmap_gfx#3 bitmap_gfx#8 bitmap_gfx#29 bitmap_gfx#28 bitmap_gfx#24 +Alias bitmap_screen#20 = bitmap_screen#3 bitmap_screen#8 bitmap_screen#28 bitmap_screen#27 bitmap_screen#23 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$2 +Alias main::a#2 = main::a#4 main::a#3 +Alias main::i#2 = main::i#4 main::i#3 +Alias bitmap_gfx#18 = bitmap_gfx#25 bitmap_gfx#22 +Alias bitmap_screen#17 = bitmap_screen#24 bitmap_screen#21 +Alias bitmap_line::x1#0 = main::$5 +Alias bitmap_line::y1#0 = main::$6 +Alias bitmap_line::x2#0 = main::$9 +Alias bitmap_line::y2#0 = main::$11 +Alias bitmap_gfx#14 = bitmap_gfx#19 bitmap_gfx#9 bitmap_gfx#4 +Alias bitmap_screen#13 = bitmap_screen#18 bitmap_screen#9 bitmap_screen#4 +Alias bitmap_gfx#0 = bitmap_gfx#15 +Alias bitmap_screen#0 = bitmap_screen#14 +Alias bitmap_gfx#10 = bitmap_gfx#5 +Alias bitmap_screen#10 = bitmap_screen#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 -Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#26 -Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#25 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 -Alias (word) bitmap_line::y2#3 = (word) bitmap_line::y2#6 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 -Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 -Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 -Alias (word) bitmap_line::x2#3 = (word) bitmap_line::x2#5 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 -Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 -Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#4 +Alias bitmap_gfx#20 = bitmap_gfx#26 +Alias bitmap_screen#19 = bitmap_screen#25 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_gfx#11 = bitmap_gfx#16 +Alias bitmap_screen#11 = bitmap_screen#15 +Alias bitmap_line::y#1 = bitmap_line::y#6 +Alias bitmap_line::y2#3 = bitmap_line::y2#6 +Alias bitmap_line::sy#1 = bitmap_line::sy#6 +Alias bitmap_line::dx#11 = bitmap_line::dx#14 +Alias bitmap_line::dy#11 = bitmap_line::dy#3 +Alias bitmap_line::sx#1 = bitmap_line::sx#10 +Alias bitmap_line::x#15 = bitmap_line::x#9 +Alias bitmap_line::x2#3 = bitmap_line::x2#5 +Alias bitmap_line::sx#11 = bitmap_line::sx#6 +Alias bitmap_line::dy#12 = bitmap_line::dy#13 +Alias bitmap_line::dx#12 = bitmap_line::dx#5 +Alias bitmap_line::sy#2 = bitmap_line::sy#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -1609,8 +1609,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 +Alias bitmap_init::$7 = bitmap_init::$3 +Alias bitmap_clear::col#0 = bitmap_clear::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) bitmap_line::$4 [53] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24 Simple Condition (bool~) bitmap_line::$5 [134] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 @@ -1699,7 +1699,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(COSTAB+$20 + main::$7) Consolidated array index constant in assignment *(SINTAB+$20 + main::$10) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::a#2 = (byte~) main::$7 (byte~) main::$10 +Alias main::a#2 = main::$7 main::$10 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1) Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) @@ -2124,142 +2124,142 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 VARIABLE REGISTER WEIGHTS (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 4.0 -(byte~) abs_u16::$1 4.0 +(byte~) abs_u16::$0 20002.0 +(byte~) abs_u16::$1 20002.0 (word) abs_u16::return -(word) abs_u16::return#0 4.0 -(word) abs_u16::return#1 4.0 -(word) abs_u16::return#2 4.0 -(word) abs_u16::return#4 2.0 +(word) abs_u16::return#0 2002.0 +(word) abs_u16::return#1 2002.0 +(word) abs_u16::return#2 20002.0 +(word) abs_u16::return#4 5501.0 (word) abs_u16::w -(word) abs_u16::w#0 4.0 -(word) abs_u16::w#1 4.0 -(word) abs_u16::w#2 2.5 +(word) abs_u16::w#0 2002.0 +(word) abs_u16::w#1 2002.0 +(word) abs_u16::w#2 8001.25 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (byte) bitmap_clear::bgcol (byte) bitmap_clear::col (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (word) bitmap_line::dx -(word) bitmap_line::dx#0 7.775 +(word) bitmap_line::dx#0 7600.174999999999 (word) bitmap_line::dy -(word) bitmap_line::dy#0 8.638888888888888 +(word) bitmap_line::dy#0 8444.638888888889 (word) bitmap_line::e -(word) bitmap_line::e#0 4.0 -(word) bitmap_line::e#1 134.66666666666666 -(word) bitmap_line::e#2 202.0 -(word) bitmap_line::e#3 40.8 -(word) bitmap_line::e#6 151.5 +(word) bitmap_line::e#0 2002.0 +(word) bitmap_line::e#1 133334.66666666666 +(word) bitmap_line::e#2 200002.0 +(word) bitmap_line::e#3 40200.600000000006 +(word) bitmap_line::e#6 150001.5 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 4.0 -(word) bitmap_line::e1#1 134.66666666666666 -(word) bitmap_line::e1#2 202.0 -(word) bitmap_line::e1#3 40.8 -(word) bitmap_line::e1#6 151.5 +(word) bitmap_line::e1#0 2002.0 +(word) bitmap_line::e1#1 133334.66666666666 +(word) bitmap_line::e1#2 200002.0 +(word) bitmap_line::e1#3 40200.600000000006 +(word) bitmap_line::e1#6 150001.5 (word) bitmap_line::sx -(word) bitmap_line::sx#0 6.800000000000001 +(word) bitmap_line::sx#0 6700.1 (word) bitmap_line::sy -(word) bitmap_line::sy#0 7.846153846153847 +(word) bitmap_line::sy#0 7730.884615384615 (word) bitmap_line::x -(word) bitmap_line::x#1 101.0 -(word) bitmap_line::x#12 202.0 -(word) bitmap_line::x#13 58.00000000000001 -(word) bitmap_line::x#15 57.714285714285715 -(word) bitmap_line::x#6 102.0 -(word) bitmap_line::x#7 76.25 +(word) bitmap_line::x#1 100001.0 +(word) bitmap_line::x#12 200002.0 +(word) bitmap_line::x#13 57286.42857142857 +(word) bitmap_line::x#15 57143.42857142857 +(word) bitmap_line::x#6 100501.5 +(word) bitmap_line::x#7 75251.0 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 0.7777777777777778 +(word) bitmap_line::x1#0 189.11111111111111 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 3.515151515151515 +(word) bitmap_line::x2#0 3094.060606060606 (word) bitmap_line::y -(word) bitmap_line::y#1 57.714285714285715 -(word) bitmap_line::y#13 202.0 -(word) bitmap_line::y#15 43.57142857142858 -(word) bitmap_line::y#2 101.0 -(word) bitmap_line::y#4 51.0 -(word) bitmap_line::y#7 202.0 +(word) bitmap_line::y#1 57143.42857142857 +(word) bitmap_line::y#13 200002.0 +(word) bitmap_line::y#15 43000.57142857143 +(word) bitmap_line::y#2 100001.0 +(word) bitmap_line::y#4 50250.75 +(word) bitmap_line::y#7 200002.0 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 0.7599999999999999 +(word) bitmap_line::y1#0 164.2 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 3.625 +(word) bitmap_line::y2#0 3190.75 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 2000002.0 +(byte~) bitmap_plot::$2 2000002.0 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 500000.5 +(byte*) bitmap_plot::plotter#1 1500001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 4.0 -(word) bitmap_plot::x#1 202.0 -(word) bitmap_plot::x#2 4.0 -(word) bitmap_plot::x#3 202.0 -(word) bitmap_plot::x#4 52.5 +(word) bitmap_plot::x#0 2002.0 +(word) bitmap_plot::x#1 200002.0 +(word) bitmap_plot::x#2 2002.0 +(word) bitmap_plot::x#3 200002.0 +(word) bitmap_plot::x#4 550501.5 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 2.0 -(byte) bitmap_plot::y#1 101.0 -(byte) bitmap_plot::y#2 2.0 -(byte) bitmap_plot::y#3 101.0 -(byte) bitmap_plot::y#4 210.0 +(byte) bitmap_plot::y#0 1001.0 +(byte) bitmap_plot::y#1 100001.0 +(byte) bitmap_plot::y#2 1001.0 +(byte) bitmap_plot::y#3 100001.0 +(byte) bitmap_plot::y#4 2202006.0 (byte*) bitmap_screen (void()) main() -(word~) main::$4 22.0 -(word~) main::$8 22.0 +(word~) main::$4 202.0 +(word~) main::$8 202.0 (byte) main::a -(byte) main::a#1 11.0 -(byte) main::a#2 2.4444444444444446 +(byte) main::a#1 101.0 +(byte) main::a#2 22.444444444444443 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 3.3000000000000003 +(byte) main::i#1 202.0 +(byte) main::i#2 30.299999999999997 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 4.0 -(byte~) sgn_u16::$1 4.0 +(byte~) sgn_u16::$0 20002.0 +(byte~) sgn_u16::$1 20002.0 (word) sgn_u16::return -(word) sgn_u16::return#0 4.0 -(word) sgn_u16::return#1 4.0 -(word) sgn_u16::return#4 1.0 +(word) sgn_u16::return#0 2002.0 +(word) sgn_u16::return#1 2002.0 +(word) sgn_u16::return#4 500.5 (word) sgn_u16::w -(word) sgn_u16::w#0 4.0 -(word) sgn_u16::w#1 4.0 -(word) sgn_u16::w#2 6.0 +(word) sgn_u16::w#0 2002.0 +(word) sgn_u16::w#1 2002.0 +(word) sgn_u16::w#2 12003.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -3325,198 +3325,189 @@ SINTAB: REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:71 [ bitmap_init::$4 ] has ALU potential. -Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a +Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::a#2 main::a#1 ] -Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a -Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a -Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a -Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a -Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a -Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a +Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a +Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a +Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a +Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] -Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { } ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { } ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::a#2 main::a#1 ] -Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ memset::c#4 ] -Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ memset::c#4 ] -Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a -Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a -Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a -Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a -Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a reg byte x +Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] { } ) always clobbers reg byte a +Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a +Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a +Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a +Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a -Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] if((byte) main::i#2!=(byte) 8) goto main::@2 [ main::i#2 main::a#2 ] ( main:2 [ main::i#2 main::a#2 ] ) always clobbers reg byte a -Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a -Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a -Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a -Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a -Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a reg byte x -Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a -Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { } ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { } ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] if((byte) main::i#2!=(byte) 8) goto main::@2 [ main::i#2 main::a#2 ] ( main:2 [ main::i#2 main::a#2 ] { } ) always clobbers reg byte a +Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] { } ) always clobbers reg byte a +Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a +Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a +Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a +Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a reg byte x +Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { } ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { } ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::a#2 main::a#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:4 , @@ -3563,38 +3554,38 @@ Potential registers zp[1]:72 [ bitmap_init::$5 ] : zp[1]:72 , reg byte a , reg b Potential registers zp[1]:73 [ bitmap_init::$6 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_line] 658.05: zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 597.74: zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 532.97: zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8.64: zp[2]:47 [ bitmap_line::dy#0 ] 7.85: zp[2]:55 [ bitmap_line::sy#0 ] 7.78: zp[2]:43 [ bitmap_line::dx#0 ] 6.8: zp[2]:51 [ bitmap_line::sx#0 ] 3.62: zp[2]:39 [ bitmap_line::y2#0 ] 3.52: zp[2]:37 [ bitmap_line::x2#0 ] -Uplift Scope [bitmap_plot] 464.5: zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 416: zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 4: zp[2]:59 [ bitmap_plot::$1 ] 4: zp[1]:63 [ bitmap_plot::$2 ] 3: zp[2]:61 [ bitmap_plot::plotter#1 ] 1: zp[2]:57 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:71 [ bitmap_init::$4 ] 22: zp[1]:72 [ bitmap_init::$5 ] 22: zp[1]:73 [ bitmap_init::$6 ] 5.5: zp[1]:70 [ bitmap_init::$7 ] -Uplift Scope [main] 25.3: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[2]:33 [ main::$4 ] 22: zp[2]:35 [ main::$8 ] 13.44: zp[1]:3 [ main::a#2 main::a#1 ] -Uplift Scope [memset] 41.33: zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:68 [ memset::end#0 ] 2: zp[2]:21 [ memset::num#2 ] 1.38: zp[1]:25 [ memset::c#4 ] 0: zp[2]:23 [ memset::str#3 ] -Uplift Scope [abs_u16] 16.5: zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 4: zp[2]:41 [ abs_u16::return#0 ] 4: zp[2]:45 [ abs_u16::return#1 ] 4: zp[1]:66 [ abs_u16::$0 ] 4: zp[1]:67 [ abs_u16::$1 ] -Uplift Scope [sgn_u16] 14: zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 4: zp[2]:49 [ sgn_u16::return#0 ] 4: zp[2]:53 [ sgn_u16::return#1 ] 4: zp[1]:64 [ sgn_u16::$0 ] 4: zp[1]:65 [ sgn_u16::$1 ] 1: zp[2]:17 [ sgn_u16::return#4 ] +Uplift Scope [bitmap_plot] 2,404,010: zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 2,000,002: zp[2]:59 [ bitmap_plot::$1 ] 2,000,002: zp[1]:63 [ bitmap_plot::$2 ] 1,500,001.5: zp[2]:61 [ bitmap_plot::plotter#1 ] 954,509.5: zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 500,000.5: zp[2]:57 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line] 650,563.95: zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 590,374.47: zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 525,540.77: zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 525,540.77: zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8,444.64: zp[2]:47 [ bitmap_line::dy#0 ] 7,730.88: zp[2]:55 [ bitmap_line::sy#0 ] 7,600.17: zp[2]:43 [ bitmap_line::dx#0 ] 6,700.1: zp[2]:51 [ bitmap_line::sx#0 ] 3,190.75: zp[2]:39 [ bitmap_line::y2#0 ] 3,094.06: zp[2]:37 [ bitmap_line::x2#0 ] +Uplift Scope [abs_u16] 37,508.25: zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 20,002: zp[1]:66 [ abs_u16::$0 ] 20,002: zp[1]:67 [ abs_u16::$1 ] 2,002: zp[2]:41 [ abs_u16::return#0 ] 2,002: zp[2]:45 [ abs_u16::return#1 ] +Uplift Scope [sgn_u16] 20,002: zp[1]:64 [ sgn_u16::$0 ] 20,002: zp[1]:65 [ sgn_u16::$1 ] 16,007: zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 2,002: zp[2]:49 [ sgn_u16::return#0 ] 2,002: zp[2]:53 [ sgn_u16::return#1 ] 500.5: zp[2]:17 [ sgn_u16::return#4 ] +Uplift Scope [memset] 35,672.33: zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:68 [ memset::end#0 ] 1,250.12: zp[1]:25 [ memset::c#4 ] 1,001: zp[2]:21 [ memset::num#2 ] 0: zp[2]:23 [ memset::str#3 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:71 [ bitmap_init::$4 ] 2,002: zp[1]:72 [ bitmap_init::$5 ] 2,002: zp[1]:73 [ bitmap_init::$6 ] 500.5: zp[1]:70 [ bitmap_init::$7 ] +Uplift Scope [main] 232.3: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[2]:33 [ main::$4 ] 202: zp[2]:35 [ main::$8 ] 123.44: zp[1]:3 [ main::a#2 main::a#1 ] Uplift Scope [bitmap_clear] Uplift Scope [RADIX] Uplift Scope [] -Uplifting [bitmap_line] best 33681 combination zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:47 [ bitmap_line::dy#0 ] zp[2]:55 [ bitmap_line::sy#0 ] zp[2]:43 [ bitmap_line::dx#0 ] zp[2]:51 [ bitmap_line::sx#0 ] zp[2]:39 [ bitmap_line::y2#0 ] zp[2]:37 [ bitmap_line::x2#0 ] -Uplifting [bitmap_plot] best 33472 combination zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:59 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:61 [ bitmap_plot::plotter#1 ] zp[2]:57 [ bitmap_plot::plotter#0 ] -Uplifting [bitmap_init] best 32962 combination zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:72 [ bitmap_init::$5 ] zp[1]:73 [ bitmap_init::$6 ] zp[1]:70 [ bitmap_init::$7 ] +Uplifting [bitmap_plot] best 33470 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:59 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:61 [ bitmap_plot::plotter#1 ] zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:57 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_line] best 33470 combination zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:47 [ bitmap_line::dy#0 ] zp[2]:55 [ bitmap_line::sy#0 ] zp[2]:43 [ bitmap_line::dx#0 ] zp[2]:51 [ bitmap_line::sx#0 ] zp[2]:39 [ bitmap_line::y2#0 ] zp[2]:37 [ bitmap_line::x2#0 ] +Uplifting [abs_u16] best 33458 combination zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:41 [ abs_u16::return#0 ] zp[2]:45 [ abs_u16::return#1 ] +Uplifting [sgn_u16] best 33446 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:49 [ sgn_u16::return#0 ] zp[2]:53 [ sgn_u16::return#1 ] zp[2]:17 [ sgn_u16::return#4 ] +Uplifting [memset] best 33430 combination zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:68 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:21 [ memset::num#2 ] zp[2]:23 [ memset::str#3 ] +Uplifting [bitmap_init] best 32920 combination zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:72 [ bitmap_init::$5 ] zp[1]:73 [ bitmap_init::$6 ] zp[1]:70 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [main] best 32962 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:33 [ main::$4 ] zp[2]:35 [ main::$8 ] zp[1]:3 [ main::a#2 main::a#1 ] -Uplifting [memset] best 32946 combination zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:68 [ memset::end#0 ] zp[2]:21 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:23 [ memset::str#3 ] -Uplifting [abs_u16] best 32934 combination zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp[2]:41 [ abs_u16::return#0 ] zp[2]:45 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] -Uplifting [sgn_u16] best 32922 combination zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:49 [ sgn_u16::return#0 ] zp[2]:53 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:17 [ sgn_u16::return#4 ] -Uplifting [bitmap_clear] best 32922 combination -Uplifting [RADIX] best 32922 combination -Uplifting [] best 32922 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 32922 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 32920 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:33 [ main::$4 ] zp[2]:35 [ main::$8 ] zp[1]:3 [ main::a#2 main::a#1 ] +Uplifting [bitmap_clear] best 32920 combination +Uplifting [RADIX] best 32920 combination +Uplifting [] best 32920 combination Attempting to uplift remaining variables inzp[1]:72 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 32862 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 32860 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:73 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 32802 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::a#2 main::a#1 ] -Uplifting [main] best 32802 combination zp[1]:3 [ main::a#2 main::a#1 ] +Uplifting [bitmap_init] best 32800 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:70 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 32802 combination zp[1]:70 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 32800 combination zp[1]:70 [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 32800 combination zp[1]:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::a#2 main::a#1 ] +Uplifting [main] best 32800 combination zp[1]:3 [ main::a#2 main::a#1 ] Coalescing zero page register [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 4 Coalescing zero page register [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp[2]:33 [ main::$4 ] ] - score: 1 Coalescing zero page register [ zp[2]:17 [ sgn_u16::return#4 ] ] with [ zp[2]:49 [ sgn_u16::return#0 ] ] - score: 1 @@ -4144,11 +4135,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 - lda.z x - // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuxx=_lo_vwuz1 + ldx.z x + // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -4637,19 +4627,19 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte) WHITE = (byte) 1 (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 reg byte a 4.0 -(byte~) abs_u16::$1 reg byte a 4.0 +(byte~) abs_u16::$0 reg byte a 20002.0 +(byte~) abs_u16::$1 reg byte a 20002.0 (label) abs_u16::@1 (label) abs_u16::@return (word) abs_u16::return -(word) abs_u16::return#0 return zp[2]:8 4.0 -(word) abs_u16::return#1 return zp[2]:8 4.0 -(word) abs_u16::return#2 return zp[2]:8 4.0 -(word) abs_u16::return#4 return zp[2]:8 2.0 +(word) abs_u16::return#0 return zp[2]:8 2002.0 +(word) abs_u16::return#1 return zp[2]:8 2002.0 +(word) abs_u16::return#2 return zp[2]:8 20002.0 +(word) abs_u16::return#4 return zp[2]:8 5501.0 (word) abs_u16::w -(word) abs_u16::w#0 w zp[2]:8 4.0 -(word) abs_u16::w#1 w zp[2]:8 4.0 -(word) abs_u16::w#2 w zp[2]:8 2.5 +(word) abs_u16::w#0 w zp[2]:8 2002.0 +(word) abs_u16::w#1 w zp[2]:8 2002.0 +(word) abs_u16::w#2 w zp[2]:8 8001.25 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (label) bitmap_clear::@1 (label) bitmap_clear::@return @@ -4659,10 +4649,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:28 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:28 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -4671,21 +4661,21 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -4707,73 +4697,73 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx -(word) bitmap_line::dx#0 dx zp[2]:20 7.775 +(word) bitmap_line::dx#0 dx zp[2]:20 7600.174999999999 (word) bitmap_line::dy -(word) bitmap_line::dy#0 dy zp[2]:8 8.638888888888888 +(word) bitmap_line::dy#0 dy zp[2]:8 8444.638888888889 (word) bitmap_line::e -(word) bitmap_line::e#0 e zp[2]:10 4.0 -(word) bitmap_line::e#1 e zp[2]:10 134.66666666666666 -(word) bitmap_line::e#2 e zp[2]:10 202.0 -(word) bitmap_line::e#3 e zp[2]:10 40.8 -(word) bitmap_line::e#6 e zp[2]:10 151.5 +(word) bitmap_line::e#0 e zp[2]:10 2002.0 +(word) bitmap_line::e#1 e zp[2]:10 133334.66666666666 +(word) bitmap_line::e#2 e zp[2]:10 200002.0 +(word) bitmap_line::e#3 e zp[2]:10 40200.600000000006 +(word) bitmap_line::e#6 e zp[2]:10 150001.5 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 e1 zp[2]:14 4.0 -(word) bitmap_line::e1#1 e1 zp[2]:14 134.66666666666666 -(word) bitmap_line::e1#2 e1 zp[2]:14 202.0 -(word) bitmap_line::e1#3 e1 zp[2]:14 40.8 -(word) bitmap_line::e1#6 e1 zp[2]:14 151.5 +(word) bitmap_line::e1#0 e1 zp[2]:14 2002.0 +(word) bitmap_line::e1#1 e1 zp[2]:14 133334.66666666666 +(word) bitmap_line::e1#2 e1 zp[2]:14 200002.0 +(word) bitmap_line::e1#3 e1 zp[2]:14 40200.600000000006 +(word) bitmap_line::e1#6 e1 zp[2]:14 150001.5 (word) bitmap_line::sx -(word) bitmap_line::sx#0 sx zp[2]:22 6.800000000000001 +(word) bitmap_line::sx#0 sx zp[2]:22 6700.1 (word) bitmap_line::sy -(word) bitmap_line::sy#0 sy zp[2]:6 7.846153846153847 +(word) bitmap_line::sy#0 sy zp[2]:6 7730.884615384615 (word) bitmap_line::x -(word) bitmap_line::x#1 x zp[2]:4 101.0 -(word) bitmap_line::x#12 x zp[2]:4 202.0 -(word) bitmap_line::x#13 x zp[2]:4 58.00000000000001 -(word) bitmap_line::x#15 x zp[2]:4 57.714285714285715 -(word) bitmap_line::x#6 x zp[2]:4 102.0 -(word) bitmap_line::x#7 x zp[2]:4 76.25 +(word) bitmap_line::x#1 x zp[2]:4 100001.0 +(word) bitmap_line::x#12 x zp[2]:4 200002.0 +(word) bitmap_line::x#13 x zp[2]:4 57286.42857142857 +(word) bitmap_line::x#15 x zp[2]:4 57143.42857142857 +(word) bitmap_line::x#6 x zp[2]:4 100501.5 +(word) bitmap_line::x#7 x zp[2]:4 75251.0 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 x1 zp[2]:4 0.7777777777777778 +(word) bitmap_line::x1#0 x1 zp[2]:4 189.11111111111111 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp[2]:16 3.515151515151515 +(word) bitmap_line::x2#0 x2 zp[2]:16 3094.060606060606 (word) bitmap_line::y -(word) bitmap_line::y#1 y zp[2]:12 57.714285714285715 -(word) bitmap_line::y#13 y zp[2]:12 202.0 -(word) bitmap_line::y#15 y zp[2]:12 43.57142857142858 -(word) bitmap_line::y#2 y zp[2]:12 101.0 -(word) bitmap_line::y#4 y zp[2]:12 51.0 -(word) bitmap_line::y#7 y zp[2]:12 202.0 +(word) bitmap_line::y#1 y zp[2]:12 57143.42857142857 +(word) bitmap_line::y#13 y zp[2]:12 200002.0 +(word) bitmap_line::y#15 y zp[2]:12 43000.57142857143 +(word) bitmap_line::y#2 y zp[2]:12 100001.0 +(word) bitmap_line::y#4 y zp[2]:12 50250.75 +(word) bitmap_line::y#7 y zp[2]:12 200002.0 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 y1 zp[2]:12 0.7599999999999999 +(word) bitmap_line::y1#0 y1 zp[2]:12 164.2 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 y2 zp[2]:18 3.625 +(word) bitmap_line::y2#0 y2 zp[2]:18 3190.75 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:26 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:26 2000002.0 +(byte~) bitmap_plot::$2 reg byte x 2000002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:24 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:24 500000.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 1500001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:4 4.0 -(word) bitmap_plot::x#1 x zp[2]:4 202.0 -(word) bitmap_plot::x#2 x zp[2]:4 4.0 -(word) bitmap_plot::x#3 x zp[2]:4 202.0 -(word) bitmap_plot::x#4 x zp[2]:4 52.5 +(word) bitmap_plot::x#0 x zp[2]:4 2002.0 +(word) bitmap_plot::x#1 x zp[2]:4 200002.0 +(word) bitmap_plot::x#2 x zp[2]:4 2002.0 +(word) bitmap_plot::x#3 x zp[2]:4 200002.0 +(word) bitmap_plot::x#4 x zp[2]:4 550501.5 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 2.0 -(byte) bitmap_plot::y#1 reg byte x 101.0 -(byte) bitmap_plot::y#2 reg byte x 2.0 -(byte) bitmap_plot::y#3 reg byte x 101.0 -(byte) bitmap_plot::y#4 reg byte x 210.0 +(byte) bitmap_plot::y#0 reg byte x 1001.0 +(byte) bitmap_plot::y#1 reg byte x 100001.0 +(byte) bitmap_plot::y#2 reg byte x 1001.0 +(byte) bitmap_plot::y#3 reg byte x 100001.0 +(byte) bitmap_plot::y#4 reg byte x 2202006.0 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (byte*) bitmap_screen (void()) main() -(word~) main::$4 zp[2]:4 22.0 -(word~) main::$8 zp[2]:16 22.0 +(word~) main::$4 zp[2]:4 202.0 +(word~) main::$8 zp[2]:16 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -4782,11 +4772,11 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@7 (byte) main::a -(byte) main::a#1 a zp[1]:3 11.0 -(byte) main::a#2 a zp[1]:3 2.4444444444444446 +(byte) main::a#1 a zp[1]:3 101.0 +(byte) main::a#2 a zp[1]:3 22.444444444444443 (byte) main::i -(byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#2 i zp[1]:2 3.3000000000000003 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#2 i zp[1]:2 30.299999999999997 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -4798,31 +4788,31 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:12 4.0 +(byte*) memset::dst#1 dst zp[2]:12 20002.0 +(byte*) memset::dst#2 dst zp[2]:12 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:12 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:10 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:10 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:10 2.0 +(word) memset::num#2 num zp[2]:10 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:12 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 reg byte a 4.0 -(byte~) sgn_u16::$1 reg byte a 4.0 +(byte~) sgn_u16::$0 reg byte a 20002.0 +(byte~) sgn_u16::$1 reg byte a 20002.0 (label) sgn_u16::@1 (label) sgn_u16::@return (word) sgn_u16::return -(word) sgn_u16::return#0 return zp[2]:6 4.0 -(word) sgn_u16::return#1 return zp[2]:6 4.0 -(word) sgn_u16::return#4 return zp[2]:6 1.0 +(word) sgn_u16::return#0 return zp[2]:6 2002.0 +(word) sgn_u16::return#1 return zp[2]:6 2002.0 +(word) sgn_u16::return#4 return zp[2]:6 500.5 (word) sgn_u16::w -(word) sgn_u16::w#0 w zp[2]:24 4.0 -(word) sgn_u16::w#1 w zp[2]:24 4.0 -(word) sgn_u16::w#2 w zp[2]:24 6.0 +(word) sgn_u16::w#0 w zp[2]:24 2002.0 +(word) sgn_u16::w#1 w zp[2]:24 2002.0 +(word) sgn_u16::w#2 w zp[2]:24 12003.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::a#2 main::a#1 ] @@ -4843,7 +4833,7 @@ zp[2]:20 [ bitmap_line::dx#0 ] zp[2]:22 [ bitmap_line::sx#0 ] zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:26 [ bitmap_plot::$1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] reg byte a [ abs_u16::$0 ] @@ -4855,7 +4845,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 27287 +Score: 27285 // File Comments // Tests the simple bitmap plotter @@ -5349,12 +5339,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (const byte*) BITMAP [ 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 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] { } ) always clobbers reg byte y +Statement [39] *((const byte*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ 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 Removing always clobbered register reg byte a as potential for zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] -Statement [40] *((const byte*) plot_bit + (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 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 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 [40] *((const byte*) plot_bit + (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 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 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 Removing always clobbered register reg byte a as potential for zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] -Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a -Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] ) 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:21 [ 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:21 [ 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:21 [ 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*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ 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:21 [ plots::i#2 ] ) always clobbers reg byte y -Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) $f8 [ 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*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ 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*) plot_bit + (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 [48] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 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 [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a -Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] { } ) always clobbers reg byte a +Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] { } ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] { } ) 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:21 [ 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:21 [ 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:21 [ 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*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ 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:21 [ plots::i#2 ] { } ) always clobbers reg byte y +Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) $f8 [ 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*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ 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*) plot_bit + (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 [48] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] { } ) always clobbers reg byte a +Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 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 [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] { } ) always clobbers reg byte a +Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ plots::i#2 plots::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -1396,39 +1396,35 @@ Potential registers zp[1]:32 [ init_plot_tables::$7 ] : zp[1]:32 , reg byte a , Potential registers zp[1]:33 [ init_plot_tables::$8 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plots] 303: zp[1]:2 [ plots::i#2 plots::i#1 ] -Uplift Scope [init_plot_tables] 39.88: zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22: zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp[1]:29 [ init_plot_tables::$0 ] 22: zp[1]:31 [ init_plot_tables::$6 ] 22: zp[1]:32 [ init_plot_tables::$7 ] 22: zp[1]:33 [ init_plot_tables::$8 ] 5.5: zp[1]:30 [ init_plot_tables::$9 ] -Uplift Scope [init_screen] 36.67: zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] 36.67: zp[2]:10 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [plot] 15: zp[1]:13 [ plot::y#0 ] 9.73: zp[1]:12 [ plot::x#0 ] 4: zp[1]:14 [ plot::$6 ] 4: zp[1]:17 [ plot::$7 ] 4: zp[1]:20 [ plot::$8 ] 4: zp[1]:23 [ plot::$9 ] 4: zp[2]:24 [ plot::plotter_y#2 ] 4: zp[1]:28 [ plot::$5 ] 3: zp[2]:26 [ plot::plotter#0 ] 2: zp[2]:15 [ plot::plotter_x#1 ] 2: zp[2]:21 [ plot::plotter_y#1 ] 0.8: zp[2]:18 [ plot::plotter_x#2 ] +Uplift Scope [plot] 2,000,002: zp[1]:14 [ plot::$6 ] 2,000,002: zp[1]:17 [ plot::$7 ] 2,000,002: zp[1]:20 [ plot::$8 ] 2,000,002: zp[1]:23 [ plot::$9 ] 2,000,002: zp[2]:24 [ plot::plotter_y#2 ] 2,000,002: zp[1]:28 [ plot::$5 ] 1,500,001.5: zp[2]:26 [ plot::plotter#0 ] 1,000,001: zp[2]:15 [ plot::plotter_x#1 ] 1,000,001: zp[2]:21 [ plot::plotter_y#1 ] 400,000.4: zp[2]:18 [ plot::plotter_x#2 ] 300,000.43: zp[1]:13 [ plot::y#0 ] 281,818.55: zp[1]:12 [ plot::x#0 ] +Uplift Scope [plots] 300,003: zp[1]:2 [ plots::i#2 plots::i#1 ] +Uplift Scope [init_plot_tables] 3,628.62: zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 2,268.93: zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 2,168.83: zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 2,002: zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 2,002: zp[1]:29 [ init_plot_tables::$0 ] 2,002: zp[1]:31 [ init_plot_tables::$6 ] 2,002: zp[1]:32 [ init_plot_tables::$7 ] 2,002: zp[1]:33 [ init_plot_tables::$8 ] 500.5: zp[1]:30 [ init_plot_tables::$9 ] +Uplift Scope [init_screen] 3,336.67: zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] 3,336.67: zp[2]:10 [ init_screen::c#2 init_screen::c#1 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plots] best 8915 combination reg byte x [ plots::i#2 plots::i#1 ] -Uplifting [init_plot_tables] best 8395 combination zp[2]: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[1]:31 [ init_plot_tables::$6 ] zp[1]:32 [ init_plot_tables::$7 ] zp[1]:33 [ init_plot_tables::$8 ] zp[1]:30 [ init_plot_tables::$9 ] -Limited combination testing to 100 combinations of 34560 possible. -Uplifting [init_screen] best 8395 combination zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] zp[2]:10 [ init_screen::c#2 init_screen::c#1 ] -Uplifting [plot] best 8383 combination zp[1]:13 [ plot::y#0 ] zp[1]:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp[1]:20 [ plot::$8 ] zp[1]:23 [ plot::$9 ] zp[2]:24 [ plot::plotter_y#2 ] zp[1]:28 [ plot::$5 ] zp[2]:26 [ plot::plotter#0 ] zp[2]:15 [ plot::plotter_x#1 ] zp[2]:21 [ plot::plotter_y#1 ] zp[2]:18 [ plot::plotter_x#2 ] +Uplifting [plot] best 10391 combination reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp[2]:24 [ plot::plotter_y#2 ] zp[1]:28 [ plot::$5 ] zp[2]:26 [ plot::plotter#0 ] zp[2]:15 [ plot::plotter_x#1 ] zp[2]:21 [ plot::plotter_y#1 ] zp[2]:18 [ plot::plotter_x#2 ] zp[1]:13 [ plot::y#0 ] zp[1]:12 [ plot::x#0 ] Limited combination testing to 100 combinations of 9216 possible. -Uplifting [main] best 8383 combination -Uplifting [] best 8383 combination -Attempting to uplift remaining variables inzp[1]:31 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 8323 combination reg byte a [ init_plot_tables::$6 ] -Attempting to uplift remaining variables inzp[1]:32 [ init_plot_tables::$7 ] -Uplifting [init_plot_tables] best 8263 combination reg byte a [ init_plot_tables::$7 ] -Attempting to uplift remaining variables inzp[1]:33 [ init_plot_tables::$8 ] -Uplifting [init_plot_tables] best 8203 combination reg byte a [ init_plot_tables::$8 ] -Attempting to uplift remaining variables inzp[1]:13 [ plot::y#0 ] -Uplifting [plot] best 8203 combination zp[1]:13 [ plot::y#0 ] -Attempting to uplift remaining variables inzp[1]:12 [ plot::x#0 ] -Uplifting [plot] best 8203 combination zp[1]:12 [ plot::x#0 ] -Attempting to uplift remaining variables inzp[1]:30 [ init_plot_tables::$9 ] -Uplifting [init_plot_tables] best 8203 combination zp[1]:30 [ init_plot_tables::$9 ] -Attempting to uplift remaining variables inzp[1]:20 [ plot::$8 ] -Uplifting [plot] best 8197 combination reg byte a [ plot::$8 ] -Attempting to uplift remaining variables inzp[1]:23 [ plot::$9 ] -Uplifting [plot] best 8191 combination reg byte a [ plot::$9 ] +Uplifting [plots] best 8891 combination reg byte x [ plots::i#2 plots::i#1 ] +Uplifting [init_plot_tables] best 8371 combination zp[2]: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[1]:31 [ init_plot_tables::$6 ] zp[1]:32 [ init_plot_tables::$7 ] zp[1]:33 [ init_plot_tables::$8 ] zp[1]:30 [ init_plot_tables::$9 ] +Limited combination testing to 100 combinations of 34560 possible. +Uplifting [init_screen] best 8371 combination zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] zp[2]:10 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [main] best 8371 combination +Uplifting [] best 8371 combination Attempting to uplift remaining variables inzp[1]:28 [ plot::$5 ] -Uplifting [plot] best 8185 combination reg byte a [ plot::$5 ] +Uplifting [plot] best 8365 combination reg byte a [ plot::$5 ] +Attempting to uplift remaining variables inzp[1]:13 [ plot::y#0 ] +Uplifting [plot] best 8365 combination zp[1]:13 [ plot::y#0 ] +Attempting to uplift remaining variables inzp[1]:12 [ plot::x#0 ] +Uplifting [plot] best 8365 combination zp[1]:12 [ plot::x#0 ] +Attempting to uplift remaining variables inzp[1]:31 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 8305 combination reg byte a [ init_plot_tables::$6 ] +Attempting to uplift remaining variables inzp[1]:32 [ init_plot_tables::$7 ] +Uplifting [init_plot_tables] best 8245 combination reg byte a [ init_plot_tables::$7 ] +Attempting to uplift remaining variables inzp[1]:33 [ init_plot_tables::$8 ] +Uplifting [init_plot_tables] best 8185 combination reg byte a [ init_plot_tables::$8 ] +Attempting to uplift remaining variables inzp[1]:30 [ init_plot_tables::$9 ] +Uplifting [init_plot_tables] best 8185 combination zp[1]:30 [ init_plot_tables::$9 ] Coalescing zero page register [ zp[2]:15 [ plot::plotter_x#1 ] ] with [ zp[2]:18 [ plot::plotter_x#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ plot::plotter_y#1 ] ] with [ zp[2]:24 [ plot::plotter_y#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp[2]:26 [ plot::plotter#0 ] ] - score: 1 @@ -1910,11 +1906,11 @@ FINAL SYMBOL TABLE (const byte) RSEL = (byte) 8 (const byte*) SCREEN = (byte*) 1024 (void()) init_plot_tables() -(byte~) init_plot_tables::$0 reg byte a 22.0 -(byte~) init_plot_tables::$6 reg byte a 22.0 -(byte~) init_plot_tables::$7 reg byte a 22.0 -(byte~) init_plot_tables::$8 reg byte a 22.0 -(byte~) init_plot_tables::$9 zp[1]:7 5.5 +(byte~) init_plot_tables::$0 reg byte a 2002.0 +(byte~) init_plot_tables::$6 reg byte a 2002.0 +(byte~) init_plot_tables::$7 reg byte a 2002.0 +(byte~) init_plot_tables::$8 reg byte a 2002.0 +(byte~) init_plot_tables::$9 zp[1]:7 500.5 (label) init_plot_tables::@1 (label) init_plot_tables::@2 (label) init_plot_tables::@3 @@ -1923,19 +1919,19 @@ FINAL SYMBOL TABLE (label) init_plot_tables::@6 (label) init_plot_tables::@return (byte) init_plot_tables::bits -(byte) init_plot_tables::bits#1 reg byte y 11.0 -(byte) init_plot_tables::bits#3 reg byte y 6.6000000000000005 -(byte) init_plot_tables::bits#4 reg byte y 7.333333333333333 +(byte) init_plot_tables::bits#1 reg byte y 1001.0 +(byte) init_plot_tables::bits#3 reg byte y 600.5999999999999 +(byte) init_plot_tables::bits#4 reg byte y 667.3333333333334 (byte) init_plot_tables::x -(byte) init_plot_tables::x#1 reg byte x 16.5 -(byte) init_plot_tables::x#2 reg byte x 7.333333333333334 +(byte) init_plot_tables::x#1 reg byte x 1501.5 +(byte) init_plot_tables::x#2 reg byte x 667.3333333333333 (byte) init_plot_tables::y -(byte) init_plot_tables::y#1 reg byte x 16.5 -(byte) init_plot_tables::y#2 reg byte x 5.5 +(byte) init_plot_tables::y#1 reg byte x 1501.5 +(byte) init_plot_tables::y#2 reg byte x 500.5 (byte*) init_plot_tables::yoffs -(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 22.0 -(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 6.875 -(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 11.0 +(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 2002.0 +(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 625.625 +(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 1001.0 (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 @@ -1943,35 +1939,35 @@ FINAL SYMBOL TABLE (label) init_screen::@4 (label) init_screen::@return (byte*) init_screen::b -(byte*) init_screen::b#1 b zp[2]:5 22.0 -(byte*) init_screen::b#2 b zp[2]:5 14.666666666666666 +(byte*) init_screen::b#1 b zp[2]:5 2002.0 +(byte*) init_screen::b#2 b zp[2]:5 1334.6666666666667 (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:3 22.0 -(byte*) init_screen::c#2 c zp[2]:3 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:3 2002.0 +(byte*) init_screen::c#2 c zp[2]:3 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$5 reg byte a 4.0 -(byte~) plot::$6 reg byte a 4.0 -(byte~) plot::$7 reg byte a 4.0 -(byte~) plot::$8 reg byte a 4.0 -(byte~) plot::$9 reg byte a 4.0 +(byte~) plot::$5 reg byte a 2000002.0 +(byte~) plot::$6 reg byte a 2000002.0 +(byte~) plot::$7 reg byte a 2000002.0 +(byte~) plot::$8 reg byte a 2000002.0 +(byte~) plot::$9 reg byte a 2000002.0 (label) plot::@return (byte*) plot::plotter -(byte*) plot::plotter#0 plotter zp[2]:3 3.0 +(byte*) plot::plotter#0 plotter zp[2]:3 1500001.5 (byte*) plot::plotter_x -(byte*) plot::plotter_x#1 plotter_x zp[2]:3 2.0 -(byte*) plot::plotter_x#2 plotter_x zp[2]:3 0.8 +(byte*) plot::plotter_x#1 plotter_x zp[2]:3 1000001.0 +(byte*) plot::plotter_x#2 plotter_x zp[2]:3 400000.4 (word) plot::plotter_y -(word) plot::plotter_y#1 plotter_y zp[2]:5 2.0 -(word) plot::plotter_y#2 plotter_y zp[2]:5 4.0 +(word) plot::plotter_y#1 plotter_y zp[2]:5 1000001.0 +(word) plot::plotter_y#2 plotter_y zp[2]:5 2000002.0 (byte) plot::x -(byte) plot::x#0 x zp[1]:7 9.727272727272727 +(byte) plot::x#0 x zp[1]:7 281818.54545454547 (byte) plot::y -(byte) plot::y#0 y zp[1]:2 15.000000000000002 +(byte) plot::y#0 y zp[1]:2 300000.4285714285 (const byte*) plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) plot_xlo[(number) $100] = { fill( $100, 0) } @@ -1983,8 +1979,8 @@ FINAL SYMBOL TABLE (label) plots::@3 (label) plots::@return (byte) plots::i -(byte) plots::i#1 reg byte x 202.0 -(byte) plots::i#2 reg byte x 101.0 +(byte) plots::i#1 reg byte x 200002.0 +(byte) plots::i#2 reg byte x 100001.0 (const byte) plots_cnt = (byte) 8 (const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 } (const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 } diff --git a/src/test/ref/bitmap-plotter.sym b/src/test/ref/bitmap-plotter.sym index 48f8672d7..9ab0acf41 100644 --- a/src/test/ref/bitmap-plotter.sym +++ b/src/test/ref/bitmap-plotter.sym @@ -12,11 +12,11 @@ (const byte) RSEL = (byte) 8 (const byte*) SCREEN = (byte*) 1024 (void()) init_plot_tables() -(byte~) init_plot_tables::$0 reg byte a 22.0 -(byte~) init_plot_tables::$6 reg byte a 22.0 -(byte~) init_plot_tables::$7 reg byte a 22.0 -(byte~) init_plot_tables::$8 reg byte a 22.0 -(byte~) init_plot_tables::$9 zp[1]:7 5.5 +(byte~) init_plot_tables::$0 reg byte a 2002.0 +(byte~) init_plot_tables::$6 reg byte a 2002.0 +(byte~) init_plot_tables::$7 reg byte a 2002.0 +(byte~) init_plot_tables::$8 reg byte a 2002.0 +(byte~) init_plot_tables::$9 zp[1]:7 500.5 (label) init_plot_tables::@1 (label) init_plot_tables::@2 (label) init_plot_tables::@3 @@ -25,19 +25,19 @@ (label) init_plot_tables::@6 (label) init_plot_tables::@return (byte) init_plot_tables::bits -(byte) init_plot_tables::bits#1 reg byte y 11.0 -(byte) init_plot_tables::bits#3 reg byte y 6.6000000000000005 -(byte) init_plot_tables::bits#4 reg byte y 7.333333333333333 +(byte) init_plot_tables::bits#1 reg byte y 1001.0 +(byte) init_plot_tables::bits#3 reg byte y 600.5999999999999 +(byte) init_plot_tables::bits#4 reg byte y 667.3333333333334 (byte) init_plot_tables::x -(byte) init_plot_tables::x#1 reg byte x 16.5 -(byte) init_plot_tables::x#2 reg byte x 7.333333333333334 +(byte) init_plot_tables::x#1 reg byte x 1501.5 +(byte) init_plot_tables::x#2 reg byte x 667.3333333333333 (byte) init_plot_tables::y -(byte) init_plot_tables::y#1 reg byte x 16.5 -(byte) init_plot_tables::y#2 reg byte x 5.5 +(byte) init_plot_tables::y#1 reg byte x 1501.5 +(byte) init_plot_tables::y#2 reg byte x 500.5 (byte*) init_plot_tables::yoffs -(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 22.0 -(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 6.875 -(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 11.0 +(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 2002.0 +(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 625.625 +(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 1001.0 (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 @@ -45,35 +45,35 @@ (label) init_screen::@4 (label) init_screen::@return (byte*) init_screen::b -(byte*) init_screen::b#1 b zp[2]:5 22.0 -(byte*) init_screen::b#2 b zp[2]:5 14.666666666666666 +(byte*) init_screen::b#1 b zp[2]:5 2002.0 +(byte*) init_screen::b#2 b zp[2]:5 1334.6666666666667 (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:3 22.0 -(byte*) init_screen::c#2 c zp[2]:3 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:3 2002.0 +(byte*) init_screen::c#2 c zp[2]:3 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$5 reg byte a 4.0 -(byte~) plot::$6 reg byte a 4.0 -(byte~) plot::$7 reg byte a 4.0 -(byte~) plot::$8 reg byte a 4.0 -(byte~) plot::$9 reg byte a 4.0 +(byte~) plot::$5 reg byte a 2000002.0 +(byte~) plot::$6 reg byte a 2000002.0 +(byte~) plot::$7 reg byte a 2000002.0 +(byte~) plot::$8 reg byte a 2000002.0 +(byte~) plot::$9 reg byte a 2000002.0 (label) plot::@return (byte*) plot::plotter -(byte*) plot::plotter#0 plotter zp[2]:3 3.0 +(byte*) plot::plotter#0 plotter zp[2]:3 1500001.5 (byte*) plot::plotter_x -(byte*) plot::plotter_x#1 plotter_x zp[2]:3 2.0 -(byte*) plot::plotter_x#2 plotter_x zp[2]:3 0.8 +(byte*) plot::plotter_x#1 plotter_x zp[2]:3 1000001.0 +(byte*) plot::plotter_x#2 plotter_x zp[2]:3 400000.4 (word) plot::plotter_y -(word) plot::plotter_y#1 plotter_y zp[2]:5 2.0 -(word) plot::plotter_y#2 plotter_y zp[2]:5 4.0 +(word) plot::plotter_y#1 plotter_y zp[2]:5 1000001.0 +(word) plot::plotter_y#2 plotter_y zp[2]:5 2000002.0 (byte) plot::x -(byte) plot::x#0 x zp[1]:7 9.727272727272727 +(byte) plot::x#0 x zp[1]:7 281818.54545454547 (byte) plot::y -(byte) plot::y#0 y zp[1]:2 15.000000000000002 +(byte) plot::y#0 y zp[1]:2 300000.4285714285 (const byte*) plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) plot_xlo[(number) $100] = { fill( $100, 0) } @@ -85,8 +85,8 @@ (label) plots::@3 (label) plots::@return (byte) plots::i -(byte) plots::i#1 reg byte x 202.0 -(byte) plots::i#2 reg byte x 101.0 +(byte) plots::i#1 reg byte x 200002.0 +(byte) plots::i#2 reg byte x 100001.0 (const byte) plots_cnt = (byte) 8 (const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 } (const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 } diff --git a/src/test/ref/bitwise-not.log b/src/test/ref/bitwise-not.log index 1d2083d85..9138d6168 100644 --- a/src/test/ref/bitwise-not.log +++ b/src/test/ref/bitwise-not.log @@ -107,10 +107,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::c -(byte) main::c#1 16.5 -(byte) main::c#2 14.666666666666666 +(byte) main::c#1 151.5 +(byte) main::c#2 134.66666666666666 Initial phi equivalence classes [ main::c#2 main::c#1 ] @@ -186,16 +186,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#2 main::c#1 ] -Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::c#2 main::c#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::c#2 main::c#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 289 combination reg byte x [ main::c#2 main::c#1 ] reg byte a [ main::$0 ] @@ -286,13 +286,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::c -(byte) main::c#1 reg byte x 16.5 -(byte) main::c#2 reg byte x 14.666666666666666 +(byte) main::c#1 reg byte x 151.5 +(byte) main::c#2 reg byte x 134.66666666666666 reg byte x [ main::c#2 main::c#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/bitwise-not.sym b/src/test/ref/bitwise-not.sym index 0f627d9c9..c1a7e1fab 100644 --- a/src/test/ref/bitwise-not.sym +++ b/src/test/ref/bitwise-not.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::c -(byte) main::c#1 reg byte x 16.5 -(byte) main::c#2 reg byte x 14.666666666666666 +(byte) main::c#1 reg byte x 151.5 +(byte) main::c#2 reg byte x 134.66666666666666 reg byte x [ main::c#2 main::c#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/bool-const.log b/src/test/ref/bool-const.log index 2bb42d8f7..11bc7db3d 100644 --- a/src/test/ref/bool-const.log +++ b/src/test/ref/bool-const.log @@ -200,9 +200,9 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [10] (bool~) bool_const_vars::$2 ← (byte) $15 >= (const byte) bool_const_vars::a from [9] (bool~) bool_const_vars::$1 ← (byte) $15 < (const byte) bool_const_vars::a Inversing boolean not [31] (bool~) bool_const_inline::$6 ← (byte) $15 >= (const byte) bool_const_inline::a from [30] (bool~) bool_const_inline::$5 ← (byte) $15 < (const byte) bool_const_inline::a Successful SSA optimization Pass2UnaryNotSimplification -Alias (bool) bool_const_vars::b1#0 = (bool~) bool_const_vars::$3 -Alias (bool) bool_const_vars::b2#0 = (bool~) bool_const_vars::$6 -Alias (bool) bool_const_vars::b#0 = (bool~) bool_const_vars::$9 +Alias bool_const_vars::b1#0 = bool_const_vars::$3 +Alias bool_const_vars::b2#0 = bool_const_vars::$6 +Alias bool_const_vars::b#0 = bool_const_vars::$9 Successful SSA optimization Pass2AliasElimination Rewriting || if()-condition to two if()s [16] (bool) bool_const_vars::b#0 ← (bool~) bool_const_vars::$8 || false Rewriting && if()-condition to two if()s [15] (bool~) bool_const_vars::$8 ← (bool) bool_const_vars::b1#0 && (bool~) bool_const_vars::$7 @@ -484,9 +484,9 @@ bool_const_if: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const byte*) SCREEN+(byte) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) SCREEN+(byte) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(byte) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN+(byte) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/bool-function.asm b/src/test/ref/bool-function.asm index 70a59cdda..f418950b5 100644 --- a/src/test/ref/bool-function.asm +++ b/src/test/ref/bool-function.asm @@ -16,6 +16,7 @@ main: { !: eor #1 tay + txa jsr isSet // if( isSet(i, (i&1)==0)) cmp #0 @@ -38,10 +39,9 @@ main: { } // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true -// isSet(byte register(X) i, bool register(Y) b) +// isSet(byte register(A) i, bool register(Y) b) isSet: { // i&8 - txa and #8 // (i&8)!=0 eor #0 diff --git a/src/test/ref/bool-function.log b/src/test/ref/bool-function.log index 2c471009b..fc3bf6b48 100644 --- a/src/test/ref/bool-function.log +++ b/src/test/ref/bool-function.log @@ -129,12 +129,12 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#2 & (byte) 1 Inferred type updated to byte in (unumber~) isSet::$0 ← (byte) isSet::i#1 & (byte) 8 -Alias (bool) isSet::b#0 = (bool~) main::$1 -Alias (bool) isSet::return#0 = (bool) isSet::return#3 -Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#4 -Alias (bool) isSet::return#1 = (bool~) isSet::$2 (bool) isSet::return#4 (bool) isSet::return#2 +Alias isSet::b#0 = main::$1 +Alias isSet::return#0 = isSet::return#3 +Alias main::i#2 = main::i#6 main::i#3 main::i#4 +Alias isSet::return#1 = isSet::$2 isSet::return#4 isSet::return#2 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) isSet::i#1 (byte) isSet::i#0 Identical Phi Values (bool) isSet::b#1 (bool) isSet::b#0 @@ -230,21 +230,21 @@ isSet::@return: scope:[isSet] from isSet VARIABLE REGISTER WEIGHTS (bool()) isSet((byte) isSet::i , (bool) isSet::b) -(byte~) isSet::$0 4.0 -(bool~) isSet::$1 4.0 +(byte~) isSet::$0 2002.0 +(bool~) isSet::$1 2002.0 (bool) isSet::b -(bool) isSet::b#0 3.25 +(bool) isSet::b#0 275.5 (byte) isSet::i -(byte) isSet::i#0 13.0 +(byte) isSet::i#0 1102.0 (bool) isSet::return -(bool) isSet::return#0 22.0 -(bool) isSet::return#1 4.333333333333333 +(bool) isSet::return#0 202.0 +(bool) isSet::return#1 367.33333333333337 (void()) main() -(byte~) main::$0 22.0 -(bool~) main::$2 22.0 +(byte~) main::$0 202.0 +(bool~) main::$2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.6 +(byte) main::i#1 151.5 +(byte) main::i#2 60.6 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -413,19 +413,19 @@ isSet: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a +Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a +Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ isSet::b#0 ] -Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a -Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a +Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a +Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a +Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a +Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ isSet::b#0 ] : zp[1]:4 , reg byte x , reg byte y , @@ -437,18 +437,18 @@ Potential registers zp[1]:9 [ isSet::$1 ] : zp[1]:9 , reg byte a , reg byte x , Potential registers zp[1]:10 [ isSet::return#1 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] 22: zp[1]:7 [ main::$2 ] -Uplift Scope [isSet] 22: zp[1]:6 [ isSet::return#0 ] 13: zp[1]:5 [ isSet::i#0 ] 4.33: zp[1]:10 [ isSet::return#1 ] 4: zp[1]:8 [ isSet::$0 ] 4: zp[1]:9 [ isSet::$1 ] 3.25: zp[1]:4 [ isSet::b#0 ] +Uplift Scope [isSet] 2,002: zp[1]:8 [ isSet::$0 ] 2,002: zp[1]:9 [ isSet::$1 ] 1,102: zp[1]:5 [ isSet::i#0 ] 367.33: zp[1]:10 [ isSet::return#1 ] 275.5: zp[1]:4 [ isSet::b#0 ] 202: zp[1]:6 [ isSet::return#0 ] +Uplift Scope [main] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] 202: zp[1]:7 [ main::$2 ] Uplift Scope [] -Uplifting [main] best 871 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ] -Uplifting [isSet] best 741 combination reg byte a [ isSet::return#0 ] reg byte x [ isSet::i#0 ] reg byte a [ isSet::return#1 ] reg byte a [ isSet::$0 ] zp[1]:9 [ isSet::$1 ] zp[1]:4 [ isSet::b#0 ] +Uplifting [isSet] best 1103 combination reg byte a [ isSet::$0 ] reg byte a [ isSet::$1 ] reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#1 ] zp[1]:4 [ isSet::b#0 ] zp[1]:6 [ isSet::return#0 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [] best 741 combination -Attempting to uplift remaining variables inzp[1]:9 [ isSet::$1 ] -Uplifting [isSet] best 735 combination reg byte a [ isSet::$1 ] +Uplifting [main] best 813 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ] +Uplifting [] best 813 combination Attempting to uplift remaining variables inzp[1]:4 [ isSet::b#0 ] -Uplifting [isSet] best 728 combination reg byte y [ isSet::b#0 ] +Uplifting [isSet] best 806 combination reg byte y [ isSet::b#0 ] +Attempting to uplift remaining variables inzp[1]:6 [ isSet::return#0 ] +Uplifting [isSet] best 746 combination reg byte a [ isSet::return#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -498,7 +498,8 @@ main: { !: eor #1 tay - // [8] (byte) isSet::i#0 ← (byte) main::i#2 + // [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [9] call isSet jsr isSet // [10] (bool) isSet::return#0 ← (bool) isSet::return#1 @@ -538,10 +539,9 @@ main: { // isSet // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true -// isSet(byte register(X) i, bool register(Y) b) +// isSet(byte register(A) i, bool register(Y) b) isSet: { - // [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuxx_band_vbuc1 - txa + // [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuaa_band_vbuc1 and #8 // [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 -- vboaa=vbuaa_neq_vbuc1 eor #0 @@ -596,19 +596,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (bool()) isSet((byte) isSet::i , (bool) isSet::b) -(byte~) isSet::$0 reg byte a 4.0 -(bool~) isSet::$1 reg byte a 4.0 +(byte~) isSet::$0 reg byte a 2002.0 +(bool~) isSet::$1 reg byte a 2002.0 (label) isSet::@return (bool) isSet::b -(bool) isSet::b#0 reg byte y 3.25 +(bool) isSet::b#0 reg byte y 275.5 (byte) isSet::i -(byte) isSet::i#0 reg byte x 13.0 +(byte) isSet::i#0 reg byte a 1102.0 (bool) isSet::return -(bool) isSet::return#0 reg byte a 22.0 -(bool) isSet::return#1 reg byte a 4.333333333333333 +(bool) isSet::return#0 reg byte a 202.0 +(bool) isSet::return#1 reg byte a 367.33333333333337 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(bool~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(bool~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -616,14 +616,14 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.6 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte y [ isSet::b#0 ] -reg byte x [ isSet::i#0 ] +reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#0 ] reg byte a [ main::$2 ] reg byte a [ isSet::$0 ] @@ -632,7 +632,7 @@ reg byte a [ isSet::return#1 ] FINAL ASSEMBLER -Score: 533 +Score: 551 // File Comments // Test a function taking boolean parameter and returning boolean result @@ -670,7 +670,8 @@ main: { !: eor #1 tay - // [8] (byte) isSet::i#0 ← (byte) main::i#2 + // [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [9] call isSet jsr isSet // [10] (bool) isSet::return#0 ← (bool) isSet::return#1 @@ -708,11 +709,10 @@ main: { // isSet // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true -// isSet(byte register(X) i, bool register(Y) b) +// isSet(byte register(A) i, bool register(Y) b) isSet: { // i&8 - // [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuxx_band_vbuc1 - txa + // [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuaa_band_vbuc1 and #8 // (i&8)!=0 // [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 -- vboaa=vbuaa_neq_vbuc1 diff --git a/src/test/ref/bool-function.sym b/src/test/ref/bool-function.sym index 4e01486fa..bf666a013 100644 --- a/src/test/ref/bool-function.sym +++ b/src/test/ref/bool-function.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (bool()) isSet((byte) isSet::i , (bool) isSet::b) -(byte~) isSet::$0 reg byte a 4.0 -(bool~) isSet::$1 reg byte a 4.0 +(byte~) isSet::$0 reg byte a 2002.0 +(bool~) isSet::$1 reg byte a 2002.0 (label) isSet::@return (bool) isSet::b -(bool) isSet::b#0 reg byte y 3.25 +(bool) isSet::b#0 reg byte y 275.5 (byte) isSet::i -(byte) isSet::i#0 reg byte x 13.0 +(byte) isSet::i#0 reg byte a 1102.0 (bool) isSet::return -(bool) isSet::return#0 reg byte a 22.0 -(bool) isSet::return#1 reg byte a 4.333333333333333 +(bool) isSet::return#0 reg byte a 202.0 +(bool) isSet::return#1 reg byte a 367.33333333333337 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(bool~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(bool~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -22,14 +22,14 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.6 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte y [ isSet::b#0 ] -reg byte x [ isSet::i#0 ] +reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#0 ] reg byte a [ main::$2 ] reg byte a [ isSet::$0 ] diff --git a/src/test/ref/bool-ifs-min.log b/src/test/ref/bool-ifs-min.log index ea74035dd..442e7b947 100644 --- a/src/test/ref/bool-ifs-min.log +++ b/src/test/ref/bool-ifs-min.log @@ -76,9 +76,9 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#2 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$5 [10] if((byte) main::i#1!=rangelast(0,$14)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -161,10 +161,10 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 11.0 +(byte~) main::$1 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -257,15 +257,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] (byte~) main::$1 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[1]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 483 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -378,15 +378,15 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 11.0 +(byte~) main::$1 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/bool-ifs-min.sym b/src/test/ref/bool-ifs-min.sym index 8282f5c2b..4abaaa0a1 100644 --- a/src/test/ref/bool-ifs-min.sym +++ b/src/test/ref/bool-ifs-min.sym @@ -2,15 +2,15 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 11.0 +(byte~) main::$1 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/bool-nullpointer-exception.log b/src/test/ref/bool-nullpointer-exception.log index 33b116025..79a9a3c42 100644 --- a/src/test/ref/bool-nullpointer-exception.log +++ b/src/test/ref/bool-nullpointer-exception.log @@ -67,9 +67,9 @@ SYMBOL TABLE SSA (label) main::@6 (label) main::@return -Alias (bool) framedone#2 = (bool) framedone#5 (bool) framedone#7 -Alias (bool) framedone#0 = (bool) framedone#8 -Alias (bool) framedone#3 = (bool) framedone#6 +Alias framedone#2 = framedone#5 framedone#7 +Alias framedone#0 = framedone#8 +Alias framedone#3 = framedone#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (bool) framedone#9 (bool) framedone#0 Identical Phi Values (bool) framedone#4 (bool) framedone#2 @@ -133,7 +133,7 @@ main::@2: scope:[main] from main::@1 main::@2 VARIABLE REGISTER WEIGHTS (bool) framedone -(bool) framedone#2 50.5 +(bool) framedone#2 500.5 (void()) main() Initial phi equivalence classes @@ -199,7 +199,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ framedone#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 50.5: zp[1]:2 [ framedone#2 ] +Uplift Scope [] 500.5: zp[1]:2 [ framedone#2 ] Uplift Scope [main] Uplifting [] best 892 combination reg byte a [ framedone#2 ] @@ -282,7 +282,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (bool) framedone -(bool) framedone#2 reg byte a 50.5 +(bool) framedone#2 reg byte a 500.5 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/bool-nullpointer-exception.sym b/src/test/ref/bool-nullpointer-exception.sym index 1bbdd53d6..44ecaf00d 100644 --- a/src/test/ref/bool-nullpointer-exception.sym +++ b/src/test/ref/bool-nullpointer-exception.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (bool) framedone -(bool) framedone#2 reg byte a 50.5 +(bool) framedone#2 reg byte a 500.5 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/bool-pointer.log b/src/test/ref/bool-pointer.log index cfbf56c86..d589c992e 100644 --- a/src/test/ref/bool-pointer.log +++ b/src/test/ref/bool-pointer.log @@ -59,7 +59,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (bool*) main::bscreen#1 = (bool*~) main::$0 (bool*) main::bscreen#3 +Alias main::bscreen#1 = main::$0 main::bscreen#3 Successful SSA optimization Pass2AliasElimination Rewriting ! if()-condition to reversed if() [5] (bool~) main::$1 ← ! *((bool*) main::bscreen#1) Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -187,11 +187,11 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((bool*) 1024) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((bool*) 1024+(byte) 1) ← false [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((bool*) 1024+(byte) 2) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] if(*((bool*) 1024+(byte) 2)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((bool*) 1024+(byte) 3) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((bool*) 1024) ← true [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((bool*) 1024+(byte) 1) ← false [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((bool*) 1024+(byte) 2) ← true [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] if(*((bool*) 1024+(byte) 2)) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((bool*) 1024+(byte) 3) ← true [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/bool-vars.log b/src/test/ref/bool-vars.log index fef6d0e87..caa553c6d 100644 --- a/src/test/ref/bool-vars.log +++ b/src/test/ref/bool-vars.log @@ -349,29 +349,29 @@ Inferred type updated to byte in (unumber~) bool_and::$1 ← (byte) bool_and::i# Inferred type updated to byte in (unumber~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1 Inferred type updated to byte in (unumber~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1 Inferred type updated to byte in (unumber~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 -Alias (bool) bool_and::o1#0 = (bool~) bool_and::$0 -Alias (bool) bool_and::o2#0 = (bool~) bool_and::$2 -Alias (bool) bool_and::o3#0 = (bool~) bool_and::$3 -Alias (byte) bool_and::i#2 = (byte) bool_and::i#3 (byte) bool_and::i#4 -Alias (bool) bool_or::o1#0 = (bool~) bool_or::$0 -Alias (bool) bool_or::o2#0 = (bool~) bool_or::$2 -Alias (bool) bool_or::o3#0 = (bool~) bool_or::$3 -Alias (byte) bool_or::i#2 = (byte) bool_or::i#3 (byte) bool_or::i#4 -Alias (bool) bool_not::o1#0 = (bool~) bool_not::$0 -Alias (bool) bool_not::o2#0 = (bool~) bool_not::$2 -Alias (bool) bool_not::o3#0 = (bool~) bool_not::$4 -Alias (byte) bool_not::i#2 = (byte) bool_not::i#3 (byte) bool_not::i#4 -Alias (bool) bool_complex::o1#0 = (bool~) bool_complex::$0 -Alias (bool) bool_complex::o2#0 = (bool~) bool_complex::$2 -Alias (bool) bool_complex::o3#0 = (bool~) bool_complex::$3 -Alias (bool) bool_complex::o4#0 = (bool~) bool_complex::$5 -Alias (bool) bool_complex::o5#0 = (bool~) bool_complex::$6 -Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#3 (byte) bool_complex::i#4 +Alias bool_and::o1#0 = bool_and::$0 +Alias bool_and::o2#0 = bool_and::$2 +Alias bool_and::o3#0 = bool_and::$3 +Alias bool_and::i#2 = bool_and::i#3 bool_and::i#4 +Alias bool_or::o1#0 = bool_or::$0 +Alias bool_or::o2#0 = bool_or::$2 +Alias bool_or::o3#0 = bool_or::$3 +Alias bool_or::i#2 = bool_or::i#3 bool_or::i#4 +Alias bool_not::o1#0 = bool_not::$0 +Alias bool_not::o2#0 = bool_not::$2 +Alias bool_not::o3#0 = bool_not::$4 +Alias bool_not::i#2 = bool_not::i#3 bool_not::i#4 +Alias bool_complex::o1#0 = bool_complex::$0 +Alias bool_complex::o2#0 = bool_complex::$2 +Alias bool_complex::o3#0 = bool_complex::$3 +Alias bool_complex::o4#0 = bool_complex::$5 +Alias bool_complex::o5#0 = bool_complex::$6 +Alias bool_complex::i#2 = bool_complex::i#3 bool_complex::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) bool_and::i#2 = (byte) bool_and::i#5 -Alias (byte) bool_or::i#2 = (byte) bool_or::i#5 -Alias (byte) bool_not::i#2 = (byte) bool_not::i#5 -Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#5 +Alias bool_and::i#2 = bool_and::i#5 +Alias bool_or::i#2 = bool_or::i#5 +Alias bool_not::i#2 = bool_not::i#5 +Alias bool_complex::i#2 = bool_complex::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) bool_and::$4 [16] if((byte) bool_and::i#1!=rangelast(0,$14)) goto bool_and::@1 Simple Condition (bool~) bool_or::$4 [29] if((byte) bool_or::i#1!=rangelast(0,$14)) goto bool_or::@1 @@ -631,38 +631,38 @@ bool_and::@2: scope:[bool_and] from bool_and::@5 VARIABLE REGISTER WEIGHTS (void()) bool_and() -(byte~) bool_and::$1 11.0 +(byte~) bool_and::$1 1001.0 (byte) bool_and::i -(byte) bool_and::i#1 16.5 -(byte) bool_and::i#2 11.0 +(byte) bool_and::i#1 1501.5 +(byte) bool_and::i#2 1001.0000000000001 (bool) bool_and::o1 (bool) bool_and::o2 (bool) bool_and::o3 (void()) bool_complex() -(byte~) bool_complex::$1 22.0 +(byte~) bool_complex::$1 2002.0 (byte) bool_complex::i -(byte) bool_complex::i#1 16.5 -(byte) bool_complex::i#2 6.6 +(byte) bool_complex::i#1 1501.5 +(byte) bool_complex::i#2 600.6 (bool) bool_complex::o1 -(bool) bool_complex::o1#0 6.6000000000000005 +(bool) bool_complex::o1#0 600.5999999999999 (bool) bool_complex::o2 -(bool) bool_complex::o2#0 8.25 +(bool) bool_complex::o2#0 750.75 (bool) bool_complex::o3 (bool) bool_complex::o4 (bool) bool_complex::o5 (void()) bool_not() -(byte~) bool_not::$1 11.0 +(byte~) bool_not::$1 1001.0 (byte) bool_not::i -(byte) bool_not::i#1 16.5 -(byte) bool_not::i#2 11.0 +(byte) bool_not::i#1 1501.5 +(byte) bool_not::i#2 1001.0000000000001 (bool) bool_not::o1 (bool) bool_not::o2 (bool) bool_not::o3 (void()) bool_or() -(byte~) bool_or::$1 11.0 +(byte~) bool_or::$1 1001.0 (byte) bool_or::i -(byte) bool_or::i#1 16.5 -(byte) bool_or::i#2 11.0 +(byte) bool_or::i#1 1501.5 +(byte) bool_or::i#2 1001.0000000000001 (bool) bool_or::o1 (bool) bool_or::o2 (bool) bool_or::o3 @@ -1043,36 +1043,36 @@ bool_and: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a +Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] -Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ) always clobbers reg byte a +Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ bool_complex::o1#0 ] -Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ) always clobbers reg byte a -Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a -Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a -Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a +Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] -Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a -Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a +Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] -Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a +Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ bool_and::i#2 bool_and::i#1 ] -Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a -Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a -Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ) always clobbers reg byte a -Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ) always clobbers reg byte a -Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a -Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a -Statement [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1 [ bool_not::i#2 bool_not::$1 ] ( main:2::bool_not:9 [ bool_not::i#2 bool_not::$1 ] ) always clobbers reg byte a -Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a -Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a -Statement [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1 [ bool_or::i#2 bool_or::$1 ] ( main:2::bool_or:7 [ bool_or::i#2 bool_or::$1 ] ) always clobbers reg byte a -Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a -Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a -Statement [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte) 1 [ bool_and::i#2 bool_and::$1 ] ( main:2::bool_and:5 [ bool_and::i#2 bool_and::$1 ] ) always clobbers reg byte a -Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a -Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a +Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] { } ) always clobbers reg byte a +Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] { } ) always clobbers reg byte a +Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] { } ) always clobbers reg byte a +Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] { } ) always clobbers reg byte a +Statement [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1 [ bool_not::i#2 bool_not::$1 ] ( main:2::bool_not:9 [ bool_not::i#2 bool_not::$1 ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] { } ) always clobbers reg byte a +Statement [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1 [ bool_or::i#2 bool_or::$1 ] ( main:2::bool_or:7 [ bool_or::i#2 bool_or::$1 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] { } ) always clobbers reg byte a +Statement [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte) 1 [ bool_and::i#2 bool_and::$1 ] ( main:2::bool_and:5 [ bool_and::i#2 bool_and::$1 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -1085,10 +1085,10 @@ Potential registers zp[1]:10 [ bool_or::$1 ] : zp[1]:10 , reg byte a , reg byte Potential registers zp[1]:11 [ bool_and::$1 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bool_complex] 23.1: zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] 22: zp[1]:7 [ bool_complex::$1 ] 8.25: zp[1]:8 [ bool_complex::o2#0 ] 6.6: zp[1]:6 [ bool_complex::o1#0 ] -Uplift Scope [bool_and] 27.5: zp[1]:5 [ bool_and::i#2 bool_and::i#1 ] 11: zp[1]:11 [ bool_and::$1 ] -Uplift Scope [bool_or] 27.5: zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] 11: zp[1]:10 [ bool_or::$1 ] -Uplift Scope [bool_not] 27.5: zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] 11: zp[1]:9 [ bool_not::$1 ] +Uplift Scope [bool_complex] 2,102.1: zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] 2,002: zp[1]:7 [ bool_complex::$1 ] 750.75: zp[1]:8 [ bool_complex::o2#0 ] 600.6: zp[1]:6 [ bool_complex::o1#0 ] +Uplift Scope [bool_and] 2,502.5: zp[1]:5 [ bool_and::i#2 bool_and::i#1 ] 1,001: zp[1]:11 [ bool_and::$1 ] +Uplift Scope [bool_or] 2,502.5: zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] 1,001: zp[1]:10 [ bool_or::$1 ] +Uplift Scope [bool_not] 2,502.5: zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] 1,001: zp[1]:9 [ bool_not::$1 ] Uplift Scope [main] Uplift Scope [] @@ -1482,7 +1482,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) bool_and() -(byte~) bool_and::$1 reg byte a 11.0 +(byte~) bool_and::$1 reg byte a 1001.0 (label) bool_and::@1 (label) bool_and::@2 (label) bool_and::@3 @@ -1490,14 +1490,14 @@ FINAL SYMBOL TABLE (label) bool_and::@5 (label) bool_and::@return (byte) bool_and::i -(byte) bool_and::i#1 reg byte x 16.5 -(byte) bool_and::i#2 reg byte x 11.0 +(byte) bool_and::i#1 reg byte x 1501.5 +(byte) bool_and::i#2 reg byte x 1001.0000000000001 (bool) bool_and::o1 (bool) bool_and::o2 (bool) bool_and::o3 (const byte*) bool_and::screen = (byte*) 1024 (void()) bool_complex() -(byte~) bool_complex::$1 reg byte a 22.0 +(byte~) bool_complex::$1 reg byte a 2002.0 (label) bool_complex::@1 (label) bool_complex::@2 (label) bool_complex::@3 @@ -1507,18 +1507,18 @@ FINAL SYMBOL TABLE (label) bool_complex::@7 (label) bool_complex::@return (byte) bool_complex::i -(byte) bool_complex::i#1 reg byte y 16.5 -(byte) bool_complex::i#2 reg byte y 6.6 +(byte) bool_complex::i#1 reg byte y 1501.5 +(byte) bool_complex::i#2 reg byte y 600.6 (bool) bool_complex::o1 -(bool) bool_complex::o1#0 reg byte x 6.6000000000000005 +(bool) bool_complex::o1#0 reg byte x 600.5999999999999 (bool) bool_complex::o2 -(bool) bool_complex::o2#0 reg byte a 8.25 +(bool) bool_complex::o2#0 reg byte a 750.75 (bool) bool_complex::o3 (bool) bool_complex::o4 (bool) bool_complex::o5 (const byte*) bool_complex::screen = (byte*) 1144 (void()) bool_not() -(byte~) bool_not::$1 reg byte a 11.0 +(byte~) bool_not::$1 reg byte a 1001.0 (label) bool_not::@1 (label) bool_not::@2 (label) bool_not::@3 @@ -1526,14 +1526,14 @@ FINAL SYMBOL TABLE (label) bool_not::@5 (label) bool_not::@return (byte) bool_not::i -(byte) bool_not::i#1 reg byte x 16.5 -(byte) bool_not::i#2 reg byte x 11.0 +(byte) bool_not::i#1 reg byte x 1501.5 +(byte) bool_not::i#2 reg byte x 1001.0000000000001 (bool) bool_not::o1 (bool) bool_not::o2 (bool) bool_not::o3 (const byte*) bool_not::screen = (byte*) 1104 (void()) bool_or() -(byte~) bool_or::$1 reg byte a 11.0 +(byte~) bool_or::$1 reg byte a 1001.0 (label) bool_or::@1 (label) bool_or::@2 (label) bool_or::@3 @@ -1541,8 +1541,8 @@ FINAL SYMBOL TABLE (label) bool_or::@5 (label) bool_or::@return (byte) bool_or::i -(byte) bool_or::i#1 reg byte x 16.5 -(byte) bool_or::i#2 reg byte x 11.0 +(byte) bool_or::i#1 reg byte x 1501.5 +(byte) bool_or::i#2 reg byte x 1001.0000000000001 (bool) bool_or::o1 (bool) bool_or::o2 (bool) bool_or::o3 diff --git a/src/test/ref/bool-vars.sym b/src/test/ref/bool-vars.sym index 7e9fbf288..678abfb1f 100644 --- a/src/test/ref/bool-vars.sym +++ b/src/test/ref/bool-vars.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (void()) bool_and() -(byte~) bool_and::$1 reg byte a 11.0 +(byte~) bool_and::$1 reg byte a 1001.0 (label) bool_and::@1 (label) bool_and::@2 (label) bool_and::@3 @@ -10,14 +10,14 @@ (label) bool_and::@5 (label) bool_and::@return (byte) bool_and::i -(byte) bool_and::i#1 reg byte x 16.5 -(byte) bool_and::i#2 reg byte x 11.0 +(byte) bool_and::i#1 reg byte x 1501.5 +(byte) bool_and::i#2 reg byte x 1001.0000000000001 (bool) bool_and::o1 (bool) bool_and::o2 (bool) bool_and::o3 (const byte*) bool_and::screen = (byte*) 1024 (void()) bool_complex() -(byte~) bool_complex::$1 reg byte a 22.0 +(byte~) bool_complex::$1 reg byte a 2002.0 (label) bool_complex::@1 (label) bool_complex::@2 (label) bool_complex::@3 @@ -27,18 +27,18 @@ (label) bool_complex::@7 (label) bool_complex::@return (byte) bool_complex::i -(byte) bool_complex::i#1 reg byte y 16.5 -(byte) bool_complex::i#2 reg byte y 6.6 +(byte) bool_complex::i#1 reg byte y 1501.5 +(byte) bool_complex::i#2 reg byte y 600.6 (bool) bool_complex::o1 -(bool) bool_complex::o1#0 reg byte x 6.6000000000000005 +(bool) bool_complex::o1#0 reg byte x 600.5999999999999 (bool) bool_complex::o2 -(bool) bool_complex::o2#0 reg byte a 8.25 +(bool) bool_complex::o2#0 reg byte a 750.75 (bool) bool_complex::o3 (bool) bool_complex::o4 (bool) bool_complex::o5 (const byte*) bool_complex::screen = (byte*) 1144 (void()) bool_not() -(byte~) bool_not::$1 reg byte a 11.0 +(byte~) bool_not::$1 reg byte a 1001.0 (label) bool_not::@1 (label) bool_not::@2 (label) bool_not::@3 @@ -46,14 +46,14 @@ (label) bool_not::@5 (label) bool_not::@return (byte) bool_not::i -(byte) bool_not::i#1 reg byte x 16.5 -(byte) bool_not::i#2 reg byte x 11.0 +(byte) bool_not::i#1 reg byte x 1501.5 +(byte) bool_not::i#2 reg byte x 1001.0000000000001 (bool) bool_not::o1 (bool) bool_not::o2 (bool) bool_not::o3 (const byte*) bool_not::screen = (byte*) 1104 (void()) bool_or() -(byte~) bool_or::$1 reg byte a 11.0 +(byte~) bool_or::$1 reg byte a 1001.0 (label) bool_or::@1 (label) bool_or::@2 (label) bool_or::@3 @@ -61,8 +61,8 @@ (label) bool_or::@5 (label) bool_or::@return (byte) bool_or::i -(byte) bool_or::i#1 reg byte x 16.5 -(byte) bool_or::i#2 reg byte x 11.0 +(byte) bool_or::i#1 reg byte x 1501.5 +(byte) bool_or::i#2 reg byte x 1001.0000000000001 (bool) bool_or::o1 (bool) bool_or::o2 (bool) bool_or::o3 diff --git a/src/test/ref/bresenham.log b/src/test/ref/bresenham.log index 51fa03454..184170efe 100644 --- a/src/test/ref/bresenham.log +++ b/src/test/ref/bresenham.log @@ -183,23 +183,23 @@ Inferred type updated to byte in (unumber~) main::$14 ← (const byte) main::x1 Inferred type updated to byte in (unumber~) main::$11 ← (byte) main::y#2 + (byte) 1 Inversing boolean not [21] (bool~) main::$10 ← (byte) main::xd#1 > (byte) main::e#1 from [20] (bool~) main::$9 ← (byte) main::xd#1 <= (byte) main::e#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::xd#0 = (byte~) main::$0 -Alias (byte) main::yd#0 = (byte~) main::$1 -Alias (byte) main::e#0 = (byte~) main::$2 -Alias (byte*) main::cursor#0 = (byte*~) main::$5 -Alias (byte) main::x#1 = (byte~) main::$6 (byte) main::x#4 -Alias (byte*) main::cursor#1 = (byte*~) main::$7 (byte*) main::cursor#4 -Alias (byte) main::e#1 = (byte~) main::$8 (byte) main::e#4 -Alias (byte) main::y#2 = (byte) main::y#3 -Alias (byte) main::xd#1 = (byte) main::xd#2 -Alias (byte) main::yd#1 = (byte) main::yd#3 -Alias (byte) main::y#1 = (byte~) main::$11 -Alias (byte*) main::cursor#2 = (byte*~) main::$12 -Alias (byte) main::e#2 = (byte~) main::$13 +Alias main::xd#0 = main::$0 +Alias main::yd#0 = main::$1 +Alias main::e#0 = main::$2 +Alias main::cursor#0 = main::$5 +Alias main::x#1 = main::$6 main::x#4 +Alias main::cursor#1 = main::$7 main::cursor#4 +Alias main::e#1 = main::$8 main::e#4 +Alias main::y#2 = main::y#3 +Alias main::xd#1 = main::xd#2 +Alias main::yd#1 = main::yd#3 +Alias main::y#1 = main::$11 +Alias main::cursor#2 = main::$12 +Alias main::e#2 = main::$13 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::x#1 = (byte) main::x#3 -Alias (byte) main::yd#1 = (byte) main::yd#2 -Alias (byte) main::xd#1 = (byte) main::xd#3 +Alias main::x#1 = main::x#3 +Alias main::yd#1 = main::yd#2 +Alias main::xd#1 = main::xd#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::yd#1 (byte) main::yd#0 Identical Phi Values (byte) main::xd#1 (byte) main::xd#0 @@ -318,23 +318,23 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::cursor -(byte*) main::cursor#1 8.25 -(byte*) main::cursor#2 11.0 -(byte*) main::cursor#3 11.0 -(byte*) main::cursor#5 16.5 +(byte*) main::cursor#1 75.75 +(byte*) main::cursor#2 101.0 +(byte*) main::cursor#3 101.0 +(byte*) main::cursor#5 151.5 (byte) main::e -(byte) main::e#1 11.0 -(byte) main::e#2 22.0 -(byte) main::e#3 5.5 -(byte) main::e#5 16.5 +(byte) main::e#1 101.0 +(byte) main::e#2 202.0 +(byte) main::e#3 50.5 +(byte) main::e#5 151.5 (byte) main::x -(byte) main::x#1 3.666666666666667 -(byte) main::x#2 11.0 +(byte) main::x#1 33.666666666666664 +(byte) main::x#2 101.0 (byte) main::xd (byte) main::y -(byte) main::y#1 7.333333333333333 -(byte) main::y#2 5.5 -(byte) main::y#4 16.5 +(byte) main::y#1 67.33333333333333 +(byte) main::y#2 50.5 +(byte) main::y#4 151.5 (byte) main::yd Initial phi equivalence classes @@ -474,31 +474,31 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] -Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a reg byte x +Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::x#2 main::x#1 ] -Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a -Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a reg byte x -Statement [15] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a -Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y -Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a -Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a reg byte x -Statement [15] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a +Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] { } ) always clobbers reg byte a +Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x +Statement [15] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] { } ) always clobbers reg byte a +Statement [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x +Statement [15] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::x#2 main::x#1 ] : zp[1]:4 , Potential registers zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:5 , reg byte x , Potential registers zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 55: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp[1]:4 [ main::x#2 main::x#1 ] +Uplift Scope [main] 505: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 429.25: zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 269.33: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 134.67: zp[1]:4 [ main::x#2 main::x#1 ] Uplift Scope [] Uplifting [main] best 1088 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] zp[1]:4 [ main::x#2 main::x#1 ] @@ -667,26 +667,26 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte*) main::cursor -(byte*) main::cursor#1 cursor zp[2]:2 8.25 -(byte*) main::cursor#2 cursor zp[2]:2 11.0 -(byte*) main::cursor#3 cursor zp[2]:2 11.0 -(byte*) main::cursor#5 cursor zp[2]:2 16.5 +(byte*) main::cursor#1 cursor zp[2]:2 75.75 +(byte*) main::cursor#2 cursor zp[2]:2 101.0 +(byte*) main::cursor#3 cursor zp[2]:2 101.0 +(byte*) main::cursor#5 cursor zp[2]:2 151.5 (byte) main::e -(byte) main::e#1 reg byte x 11.0 -(byte) main::e#2 reg byte x 22.0 -(byte) main::e#3 reg byte x 5.5 -(byte) main::e#5 reg byte x 16.5 +(byte) main::e#1 reg byte x 101.0 +(byte) main::e#2 reg byte x 202.0 +(byte) main::e#3 reg byte x 50.5 +(byte) main::e#5 reg byte x 151.5 (byte) main::x -(byte) main::x#1 x zp[1]:4 3.666666666666667 -(byte) main::x#2 x zp[1]:4 11.0 +(byte) main::x#1 x zp[1]:4 33.666666666666664 +(byte) main::x#2 x zp[1]:4 101.0 (const byte) main::x0 = (byte) 4 (const byte) main::x1 = (byte) $27 (byte) main::xd (const byte) main::xd#0 xd = (const byte) main::x1-(const byte) main::x0 (byte) main::y -(byte) main::y#1 y zp[1]:5 7.333333333333333 -(byte) main::y#2 y zp[1]:5 5.5 -(byte) main::y#4 y zp[1]:5 16.5 +(byte) main::y#1 y zp[1]:5 67.33333333333333 +(byte) main::y#2 y zp[1]:5 50.5 +(byte) main::y#4 y zp[1]:5 151.5 (const byte) main::y0 = (byte) 4 (const byte) main::y1 = (byte) $18 (byte) main::yd diff --git a/src/test/ref/bresenham.sym b/src/test/ref/bresenham.sym index ca944f9be..eeb82f050 100644 --- a/src/test/ref/bresenham.sym +++ b/src/test/ref/bresenham.sym @@ -9,26 +9,26 @@ (label) main::@3 (label) main::@return (byte*) main::cursor -(byte*) main::cursor#1 cursor zp[2]:2 8.25 -(byte*) main::cursor#2 cursor zp[2]:2 11.0 -(byte*) main::cursor#3 cursor zp[2]:2 11.0 -(byte*) main::cursor#5 cursor zp[2]:2 16.5 +(byte*) main::cursor#1 cursor zp[2]:2 75.75 +(byte*) main::cursor#2 cursor zp[2]:2 101.0 +(byte*) main::cursor#3 cursor zp[2]:2 101.0 +(byte*) main::cursor#5 cursor zp[2]:2 151.5 (byte) main::e -(byte) main::e#1 reg byte x 11.0 -(byte) main::e#2 reg byte x 22.0 -(byte) main::e#3 reg byte x 5.5 -(byte) main::e#5 reg byte x 16.5 +(byte) main::e#1 reg byte x 101.0 +(byte) main::e#2 reg byte x 202.0 +(byte) main::e#3 reg byte x 50.5 +(byte) main::e#5 reg byte x 151.5 (byte) main::x -(byte) main::x#1 x zp[1]:4 3.666666666666667 -(byte) main::x#2 x zp[1]:4 11.0 +(byte) main::x#1 x zp[1]:4 33.666666666666664 +(byte) main::x#2 x zp[1]:4 101.0 (const byte) main::x0 = (byte) 4 (const byte) main::x1 = (byte) $27 (byte) main::xd (const byte) main::xd#0 xd = (const byte) main::x1-(const byte) main::x0 (byte) main::y -(byte) main::y#1 y zp[1]:5 7.333333333333333 -(byte) main::y#2 y zp[1]:5 5.5 -(byte) main::y#4 y zp[1]:5 16.5 +(byte) main::y#1 y zp[1]:5 67.33333333333333 +(byte) main::y#2 y zp[1]:5 50.5 +(byte) main::y#4 y zp[1]:5 151.5 (const byte) main::y0 = (byte) 4 (const byte) main::y1 = (byte) $18 (byte) main::yd diff --git a/src/test/ref/bresenhamarr.log b/src/test/ref/bresenhamarr.log index 7edb470fe..cea49e918 100644 --- a/src/test/ref/bresenhamarr.log +++ b/src/test/ref/bresenhamarr.log @@ -187,23 +187,23 @@ Inferred type updated to byte in (unumber~) main::$10 ← (byte) main::y#2 + (by Inferred type updated to word in (unumber~) main::$11 ← (word) main::idx#4 + (byte) $28 Inversing boolean not [20] (bool~) main::$9 ← (byte) main::xd#1 >= (byte) main::e#1 from [19] (bool~) main::$8 ← (byte) main::xd#1 < (byte) main::e#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::xd#0 = (byte~) main::$0 -Alias (byte) main::yd#0 = (byte~) main::$1 -Alias (byte) main::e#0 = (byte~) main::$2 -Alias (word) main::idx#0 = (byte~) main::$4 -Alias (byte) main::x#1 = (byte~) main::$5 (byte) main::x#4 -Alias (word) main::idx#1 = (word~) main::$6 (word) main::idx#4 -Alias (byte) main::e#1 = (byte~) main::$7 (byte) main::e#4 -Alias (byte) main::y#2 = (byte) main::y#3 -Alias (byte) main::xd#1 = (byte) main::xd#2 -Alias (byte) main::yd#1 = (byte) main::yd#3 -Alias (byte) main::y#1 = (byte~) main::$10 -Alias (word) main::idx#2 = (word~) main::$11 -Alias (byte) main::e#2 = (byte~) main::$12 +Alias main::xd#0 = main::$0 +Alias main::yd#0 = main::$1 +Alias main::e#0 = main::$2 +Alias main::idx#0 = main::$4 +Alias main::x#1 = main::$5 main::x#4 +Alias main::idx#1 = main::$6 main::idx#4 +Alias main::e#1 = main::$7 main::e#4 +Alias main::y#2 = main::y#3 +Alias main::xd#1 = main::xd#2 +Alias main::yd#1 = main::yd#3 +Alias main::y#1 = main::$10 +Alias main::idx#2 = main::$11 +Alias main::e#2 = main::$12 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::x#1 = (byte) main::x#3 -Alias (byte) main::yd#1 = (byte) main::yd#2 -Alias (byte) main::xd#1 = (byte) main::xd#3 +Alias main::x#1 = main::x#3 +Alias main::yd#1 = main::yd#2 +Alias main::xd#1 = main::xd#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::yd#1 (byte) main::yd#0 Identical Phi Values (byte) main::xd#1 (byte) main::xd#0 @@ -227,7 +227,7 @@ Simplifying expression containing zero main::x1 in Simplifying expression containing zero main::y1 in Simplifying expression containing zero main::$3 in [6] (word) main::idx#0 ← (const byte) main::x#0 + (byte~) main::$3 Successful SSA optimization PassNSimplifyExpressionWithZero -Alias (word) main::idx#0 = (byte~) main::$3 +Alias main::idx#0 = main::$3 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte) main::e#0 ← (const byte) main::yd#0 / (byte) 2 Constant right-side identified [1] (word) main::idx#0 ← (const byte) main::y#0 * (byte) $28 @@ -324,25 +324,25 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte*~) main::$15 22.0 +(byte*~) main::$15 202.0 (byte) main::e -(byte) main::e#1 11.0 -(byte) main::e#2 22.0 -(byte) main::e#3 4.4 -(byte) main::e#5 16.5 +(byte) main::e#1 101.0 +(byte) main::e#2 202.0 +(byte) main::e#3 40.4 +(byte) main::e#5 151.5 (word) main::idx -(word) main::idx#1 8.25 -(word) main::idx#2 11.0 -(word) main::idx#3 8.25 -(word) main::idx#5 16.5 +(word) main::idx#1 75.75 +(word) main::idx#2 101.0 +(word) main::idx#3 75.75 +(word) main::idx#5 151.5 (byte) main::x -(byte) main::x#1 3.666666666666667 -(byte) main::x#2 7.333333333333333 +(byte) main::x#1 33.666666666666664 +(byte) main::x#2 67.33333333333333 (byte) main::xd (byte) main::y -(byte) main::y#1 7.333333333333333 -(byte) main::y#2 4.714285714285714 -(byte) main::y#4 16.5 +(byte) main::y#1 67.33333333333333 +(byte) main::y#2 43.285714285714285 +(byte) main::y#4 151.5 (byte) main::yd Initial phi equivalence classes @@ -492,26 +492,26 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte*~) main::$15 ← (const byte*) main::screen + (word) main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ) always clobbers reg byte a +Statement [6] (byte*~) main::$15 ← (const byte*) main::screen + (word) main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] -Statement [7] *((byte*~) main::$15) ← (const byte) main::STAR [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y +Statement [7] *((byte*~) main::$15) ← (const byte) main::STAR [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] -Statement [10] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::y1 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) always clobbers reg byte a reg byte x +Statement [10] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::y1 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::x#2 main::x#1 ] -Statement [13] (word) main::idx#2 ← (word) main::idx#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a -Statement [14] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) always clobbers reg byte a reg byte x -Statement [16] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a -Statement [6] (byte*~) main::$15 ← (const byte*) main::screen + (word) main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ) always clobbers reg byte a -Statement [7] *((byte*~) main::$15) ← (const byte) main::STAR [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::y1 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) always clobbers reg byte a reg byte x -Statement [13] (word) main::idx#2 ← (word) main::idx#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a -Statement [14] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) always clobbers reg byte a reg byte x -Statement [16] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) always clobbers reg byte a +Statement [13] (word) main::idx#2 ← (word) main::idx#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] { } ) always clobbers reg byte a +Statement [14] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x +Statement [16] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a +Statement [6] (byte*~) main::$15 ← (const byte*) main::screen + (word) main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] { } ) always clobbers reg byte a +Statement [7] *((byte*~) main::$15) ← (const byte) main::STAR [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::y1 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x +Statement [13] (word) main::idx#2 ← (word) main::idx#1 + (byte) $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] { } ) always clobbers reg byte a +Statement [14] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x +Statement [16] if((byte) main::x#1<(const byte) main::x1+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:2 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::x#2 main::x#1 ] : zp[1]:4 , Potential registers zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:5 , reg byte x , @@ -519,7 +519,7 @@ Potential registers zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:6 , Potential registers zp[2]:7 [ main::$15 ] : zp[2]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 53.9: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 44: zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 28.55: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 22: zp[2]:7 [ main::$15 ] 11: zp[1]:4 [ main::x#2 main::x#1 ] +Uplift Scope [main] 494.9: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 404: zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 262.12: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 202: zp[2]:7 [ main::$15 ] 101: zp[1]:4 [ main::x#2 main::x#1 ] Uplift Scope [] Uplifting [main] best 1293 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] zp[2]:7 [ main::$15 ] zp[1]:4 [ main::x#2 main::x#1 ] @@ -693,33 +693,33 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte*~) main::$15 zp[2]:6 22.0 +(byte*~) main::$15 zp[2]:6 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte) main::STAR = (byte) $51 (byte) main::e -(byte) main::e#1 reg byte x 11.0 -(byte) main::e#2 reg byte x 22.0 -(byte) main::e#3 reg byte x 4.4 -(byte) main::e#5 reg byte x 16.5 +(byte) main::e#1 reg byte x 101.0 +(byte) main::e#2 reg byte x 202.0 +(byte) main::e#3 reg byte x 40.4 +(byte) main::e#5 reg byte x 151.5 (word) main::idx -(word) main::idx#1 idx zp[2]:2 8.25 -(word) main::idx#2 idx zp[2]:2 11.0 -(word) main::idx#3 idx zp[2]:2 8.25 -(word) main::idx#5 idx zp[2]:2 16.5 +(word) main::idx#1 idx zp[2]:2 75.75 +(word) main::idx#2 idx zp[2]:2 101.0 +(word) main::idx#3 idx zp[2]:2 75.75 +(word) main::idx#5 idx zp[2]:2 151.5 (const byte*) main::screen[(number) $28*(number) $19] = (byte*) 1024 (byte) main::x -(byte) main::x#1 x zp[1]:4 3.666666666666667 -(byte) main::x#2 x zp[1]:4 7.333333333333333 +(byte) main::x#1 x zp[1]:4 33.666666666666664 +(byte) main::x#2 x zp[1]:4 67.33333333333333 (const byte) main::x0 = (byte) 0 (const byte) main::x1 = (byte) $27 (byte) main::xd (byte) main::y -(byte) main::y#1 y zp[1]:5 7.333333333333333 -(byte) main::y#2 y zp[1]:5 4.714285714285714 -(byte) main::y#4 y zp[1]:5 16.5 +(byte) main::y#1 y zp[1]:5 67.33333333333333 +(byte) main::y#2 y zp[1]:5 43.285714285714285 +(byte) main::y#4 y zp[1]:5 151.5 (const byte) main::y0 = (byte) 0 (const byte) main::y1 = (byte) $18 (byte) main::yd diff --git a/src/test/ref/bresenhamarr.sym b/src/test/ref/bresenhamarr.sym index 3f636670e..67829b33e 100644 --- a/src/test/ref/bresenhamarr.sym +++ b/src/test/ref/bresenhamarr.sym @@ -2,33 +2,33 @@ (label) @begin (label) @end (void()) main() -(byte*~) main::$15 zp[2]:6 22.0 +(byte*~) main::$15 zp[2]:6 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte) main::STAR = (byte) $51 (byte) main::e -(byte) main::e#1 reg byte x 11.0 -(byte) main::e#2 reg byte x 22.0 -(byte) main::e#3 reg byte x 4.4 -(byte) main::e#5 reg byte x 16.5 +(byte) main::e#1 reg byte x 101.0 +(byte) main::e#2 reg byte x 202.0 +(byte) main::e#3 reg byte x 40.4 +(byte) main::e#5 reg byte x 151.5 (word) main::idx -(word) main::idx#1 idx zp[2]:2 8.25 -(word) main::idx#2 idx zp[2]:2 11.0 -(word) main::idx#3 idx zp[2]:2 8.25 -(word) main::idx#5 idx zp[2]:2 16.5 +(word) main::idx#1 idx zp[2]:2 75.75 +(word) main::idx#2 idx zp[2]:2 101.0 +(word) main::idx#3 idx zp[2]:2 75.75 +(word) main::idx#5 idx zp[2]:2 151.5 (const byte*) main::screen[(number) $28*(number) $19] = (byte*) 1024 (byte) main::x -(byte) main::x#1 x zp[1]:4 3.666666666666667 -(byte) main::x#2 x zp[1]:4 7.333333333333333 +(byte) main::x#1 x zp[1]:4 33.666666666666664 +(byte) main::x#2 x zp[1]:4 67.33333333333333 (const byte) main::x0 = (byte) 0 (const byte) main::x1 = (byte) $27 (byte) main::xd (byte) main::y -(byte) main::y#1 y zp[1]:5 7.333333333333333 -(byte) main::y#2 y zp[1]:5 4.714285714285714 -(byte) main::y#4 y zp[1]:5 16.5 +(byte) main::y#1 y zp[1]:5 67.33333333333333 +(byte) main::y#2 y zp[1]:5 43.285714285714285 +(byte) main::y#4 y zp[1]:5 151.5 (const byte) main::y0 = (byte) 0 (const byte) main::y1 = (byte) $18 (byte) main::yd diff --git a/src/test/ref/c-types.asm b/src/test/ref/c-types.asm index 521fac0ad..3a69ecac3 100644 --- a/src/test/ref/c-types.asm +++ b/src/test/ref/c-types.asm @@ -175,12 +175,10 @@ print_dword: { print_word: { .label w = $a // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#45 (byte*) print_char_cursor#155 (byte*) print_screen#4 -Alias (byte*) print_str::str#5 = (byte*) print_str::str#6 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#70 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#72 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#139 -Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#73 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#74 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#158 (byte*) print_char_cursor#142 -Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#77 = (byte*) print_char_cursor#9 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#78 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#12 -Alias (byte) print_byte::b#1 = (byte~) print_word::$0 -Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#81 -Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#15 -Alias (word) print_word::w#1 = (word~) print_dword::$0 -Alias (dword) print_dword::dw#2 = (dword) print_dword::dw#3 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#84 -Alias (word) print_word::w#2 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#18 -Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#159 (byte*) print_char_cursor#147 -Alias (signed dword) print_sdword::dw#3 = (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#4 (signed dword) print_sdword::dw#8 (signed dword) print_sdword::dw#7 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#87 -Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#88 -Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$1 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#22 -Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#91 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#25 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#95 (byte*) print_char_cursor#27 -Alias (byte*) print_line_cursor#23 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#28 (byte*) print_char_cursor#96 (byte*) print_line_cursor#4 (byte*) print_char_cursor#29 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#97 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#98 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#99 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#33 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#102 (byte*) print_char_cursor#35 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 -Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#62 (byte*) print_line_cursor#66 (byte*) print_line_cursor#58 (byte*) print_line_cursor#54 (byte*) print_line_cursor#50 (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#110 (byte*) print_char_cursor#43 -Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#67 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55 (byte*) print_line_cursor#51 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#49 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#50 (byte*) print_char_cursor#118 (byte*) print_char_cursor#51 -Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#68 (byte*) print_line_cursor#60 (byte*) print_line_cursor#56 (byte*) print_line_cursor#52 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#57 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#126 (byte*) print_char_cursor#59 -Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#69 (byte*) print_line_cursor#61 (byte*) print_line_cursor#57 (byte*) print_line_cursor#53 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#64 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#65 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#134 (byte*) print_char_cursor#67 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#68 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#45 print_char_cursor#155 print_screen#4 +Alias print_str::str#5 = print_str::str#6 +Alias print_char_cursor#136 = print_char_cursor#69 print_char_cursor#70 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#21 print_char_cursor#3 print_line_cursor#22 print_char_cursor#72 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#138 = print_char_cursor#157 print_char_cursor#139 +Alias print_sword::w#10 = print_sword::w#8 print_sword::w#5 print_sword::w#6 print_sword::w#9 +Alias print_char_cursor#5 = print_char_cursor#73 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#6 = print_char_cursor#74 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#7 = print_char_cursor#75 print_char_cursor#76 print_char_cursor#8 +Alias print_char_cursor#141 = print_char_cursor#158 print_char_cursor#142 +Alias print_sbyte::b#2 = print_sbyte::b#5 print_sbyte::b#3 print_sbyte::b#7 print_sbyte::b#6 +Alias print_char_cursor#77 = print_char_cursor#9 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#10 = print_char_cursor#78 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#11 = print_char_cursor#79 print_char_cursor#80 print_char_cursor#12 +Alias print_byte::b#1 = print_word::$0 +Alias print_word::w#5 = print_word::w#6 +Alias print_char_cursor#13 = print_char_cursor#81 +Alias print_byte::b#2 = print_word::$2 +Alias print_char_cursor#14 = print_char_cursor#82 print_char_cursor#83 print_char_cursor#15 +Alias print_word::w#1 = print_dword::$0 +Alias print_dword::dw#2 = print_dword::dw#3 +Alias print_char_cursor#16 = print_char_cursor#84 +Alias print_word::w#2 = print_dword::$2 +Alias print_char_cursor#17 = print_char_cursor#85 print_char_cursor#86 print_char_cursor#18 +Alias print_char_cursor#146 = print_char_cursor#159 print_char_cursor#147 +Alias print_sdword::dw#3 = print_sdword::dw#6 print_sdword::dw#4 print_sdword::dw#8 print_sdword::dw#7 +Alias print_char_cursor#19 = print_char_cursor#87 +Alias print_sdword::dw#0 = print_sdword::$5 +Alias print_char_cursor#20 = print_char_cursor#88 +Alias print_dword::dw#0 = print_sdword::$1 +Alias print_char_cursor#21 = print_char_cursor#89 print_char_cursor#90 print_char_cursor#22 +Alias print_byte::b#5 = print_byte::b#6 +Alias print_char_cursor#23 = print_char_cursor#91 +Alias print_char_cursor#24 = print_char_cursor#92 print_char_cursor#93 print_char_cursor#25 +Alias print_char_cursor#26 = print_char_cursor#95 print_char_cursor#27 +Alias print_line_cursor#23 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#28 print_char_cursor#96 print_line_cursor#4 print_char_cursor#29 +Alias print_line_cursor#24 = print_line_cursor#5 +Alias print_char_cursor#30 = print_char_cursor#97 +Alias print_char_cursor#31 = print_char_cursor#98 +Alias print_line_cursor#25 = print_line_cursor#6 +Alias print_char_cursor#32 = print_char_cursor#99 +Alias print_line_cursor#26 = print_line_cursor#7 +Alias print_char_cursor#100 = print_char_cursor#33 +Alias print_line_cursor#27 = print_line_cursor#8 +Alias print_char_cursor#101 = print_char_cursor#34 print_char_cursor#102 print_char_cursor#35 +Alias print_line_cursor#10 = print_line_cursor#9 print_line_cursor#28 print_line_cursor#29 +Alias print_line_cursor#41 = print_line_cursor#62 print_line_cursor#66 print_line_cursor#58 print_line_cursor#54 print_line_cursor#50 print_line_cursor#46 +Alias print_char_cursor#103 = print_char_cursor#36 +Alias print_char_cursor#104 = print_char_cursor#37 +Alias print_char_cursor#105 = print_char_cursor#38 +Alias print_char_cursor#106 = print_char_cursor#39 +Alias print_char_cursor#107 = print_char_cursor#40 +Alias print_char_cursor#108 = print_char_cursor#41 +Alias print_line_cursor#11 = print_line_cursor#30 print_line_cursor#31 print_line_cursor#12 +Alias print_char_cursor#109 = print_char_cursor#42 print_char_cursor#110 print_char_cursor#43 +Alias print_line_cursor#42 = print_line_cursor#63 print_line_cursor#67 print_line_cursor#59 print_line_cursor#55 print_line_cursor#51 print_line_cursor#47 +Alias print_char_cursor#111 = print_char_cursor#44 +Alias print_char_cursor#112 = print_char_cursor#45 +Alias print_char_cursor#113 = print_char_cursor#46 +Alias print_char_cursor#114 = print_char_cursor#47 +Alias print_char_cursor#115 = print_char_cursor#48 +Alias print_char_cursor#116 = print_char_cursor#49 +Alias print_line_cursor#13 = print_line_cursor#32 print_line_cursor#33 print_line_cursor#14 +Alias print_char_cursor#117 = print_char_cursor#50 print_char_cursor#118 print_char_cursor#51 +Alias print_line_cursor#43 = print_line_cursor#64 print_line_cursor#68 print_line_cursor#60 print_line_cursor#56 print_line_cursor#52 print_line_cursor#48 +Alias print_char_cursor#119 = print_char_cursor#52 +Alias print_char_cursor#120 = print_char_cursor#53 +Alias print_char_cursor#121 = print_char_cursor#54 +Alias print_char_cursor#122 = print_char_cursor#55 +Alias print_char_cursor#123 = print_char_cursor#56 +Alias print_char_cursor#124 = print_char_cursor#57 +Alias print_line_cursor#15 = print_line_cursor#34 print_line_cursor#35 print_line_cursor#16 +Alias print_char_cursor#125 = print_char_cursor#58 print_char_cursor#126 print_char_cursor#59 +Alias print_line_cursor#44 = print_line_cursor#65 print_line_cursor#69 print_line_cursor#61 print_line_cursor#57 print_line_cursor#53 print_line_cursor#49 +Alias print_char_cursor#127 = print_char_cursor#60 +Alias print_char_cursor#128 = print_char_cursor#61 +Alias print_char_cursor#129 = print_char_cursor#62 +Alias print_char_cursor#130 = print_char_cursor#63 +Alias print_char_cursor#131 = print_char_cursor#64 +Alias print_char_cursor#132 = print_char_cursor#65 +Alias print_line_cursor#17 = print_line_cursor#36 print_line_cursor#37 print_line_cursor#18 +Alias print_char_cursor#133 = print_char_cursor#66 print_char_cursor#134 print_char_cursor#67 +Alias print_line_cursor#19 = print_line_cursor#38 +Alias print_char_cursor#135 = print_char_cursor#68 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1530,7 +1530,7 @@ Removing unused block print_sbyte::@3 Removing PHI-reference to removed block (print_sbyte::@6) in block print_sbyte::@2 Removing unused block print_sbyte::@6 Successful SSA optimization Pass2EliminateUnusedBlocks -Alias (signed byte) print_sbyte::b#0 = (signed byte) print_sbyte::b#4 +Alias print_sbyte::b#0 = print_sbyte::b#4 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0 Constant right-side identified [28] (signed byte) print_sbyte::b#0 ← - (const signed byte) print_sbyte::b#1 @@ -2140,70 +2140,70 @@ VARIABLE REGISTER WEIGHTS (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2000002.0 +(byte~) print_byte::$2 2000002.0 (byte) print_byte::b -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#5 2.0 +(byte) print_byte::b#1 200002.0 +(byte) print_byte::b#2 200002.0 +(byte) print_byte::b#5 550001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#16 6.0 -(byte) print_char::ch#6 4.0 -(byte) print_char::ch#7 4.0 +(byte) print_char::ch#16 1.2000003E7 +(byte) print_char::ch#6 2000002.0 +(byte) print_char::ch#7 2000002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#136 3.583333333333333 -(byte*) print_char_cursor#144 6.0 -(byte*) print_char_cursor#145 3.0 -(byte*) print_char_cursor#149 3.9999999999999996 -(byte*) print_char_cursor#156 8.0 -(byte*) print_char_cursor#160 4.0 -(byte*) print_char_cursor#161 4.0 -(byte*) print_char_cursor#162 4.0 -(byte*) print_char_cursor#26 0.6091954022988502 -(byte*) print_char_cursor#94 17.0 +(byte*) print_char_cursor#1 10001.0 +(byte*) print_char_cursor#136 2617.333333333333 +(byte*) print_char_cursor#144 60603.0 +(byte*) print_char_cursor#145 5551.5 +(byte*) print_char_cursor#149 400402.0000000001 +(byte*) print_char_cursor#156 1304.0 +(byte*) print_char_cursor#160 202.0 +(byte*) print_char_cursor#161 202.0 +(byte*) print_char_cursor#162 202.0 +(byte*) print_char_cursor#26 127918.6436781609 +(byte*) print_char_cursor#94 1.10029085E7 (void()) print_cls() (void()) print_dword((dword) print_dword::dw) (dword) print_dword::dw -(dword) print_dword::dw#0 4.0 -(dword) print_dword::dw#2 2.0 +(dword) print_dword::dw#0 2002.0 +(dword) print_dword::dw#2 7001.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 0.8333333333333333 -(byte*) print_line_cursor#20 24.0 -(byte*) print_line_cursor#39 8.0 +(byte*) print_line_cursor#1 566.8333333333333 +(byte*) print_line_cursor#20 21003.0 +(byte*) print_line_cursor#39 1304.0 (void()) print_ln() (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b (byte*) print_screen (void()) print_sdword((signed dword) print_sdword::dw) (signed dword) print_sdword::dw -(signed dword) print_sdword::dw#0 4.0 -(signed dword) print_sdword::dw#3 1.0 -(signed dword) print_sdword::dw#5 4.0 +(signed dword) print_sdword::dw#0 2002.0 +(signed dword) print_sdword::dw#3 500.5 +(signed dword) print_sdword::dw#5 2002.0 (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#5 11.5 -(byte*) print_str::str#7 2.0 +(byte*) print_str::str#0 20002.0 +(byte*) print_str::str#5 10251.25 +(byte*) print_str::str#7 1001.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#10 1.0 -(signed word) print_sword::w#7 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#10 500.5 +(signed word) print_sword::w#7 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 4.0 -(word) print_word::w#2 4.0 -(word) print_word::w#5 3.333333333333333 +(word) print_word::w#0 2002.0 +(word) print_word::w#1 20002.0 +(word) print_word::w#2 20002.0 +(word) print_word::w#5 73668.33333333333 (void()) testChar() (void()) testInt() (void()) testLong() @@ -3216,52 +3216,48 @@ memset: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y +Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] { { print_char_cursor#156 = print_char_cursor#161 } } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] { } ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] { } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] { } ) always clobbers reg byte a +Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#145 = print_char_cursor#26 } } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#145 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] { } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] { } ) always clobbers reg byte a +Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#149 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#149 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a -Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a -Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a -Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a -Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } } main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#1 = print_word::w#5 } } main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#1 = print_word::w#5 } } ) always clobbers reg byte a +Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#2 = print_word::w#5 } } main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#2 = print_word::w#5 } } ) always clobbers reg byte a +Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#149 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a -Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a -Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a -Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a -Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] ) always clobbers reg byte a -Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y -Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a -Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a -Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a -Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a -Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a -Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a -Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a -Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a -Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a -Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] ) always clobbers reg byte a -Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#149 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } ) always clobbers reg byte a +Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#161 } } main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#160 } } main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#162 } } main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] { } ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#161 } } main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#160 } } main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#162 } } main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] { } ) always clobbers reg byte a reg byte y +Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] { { print_char_cursor#156 = print_char_cursor#160 } } ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] { { print_char_cursor#156 = print_char_cursor#162 } } ) always clobbers reg byte a +Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] { { print_char_cursor#156 = print_char_cursor#161 } } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] { } ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] { } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] { } ) always clobbers reg byte a +Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#145 = print_char_cursor#26 } } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#145 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] { } main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] { } ) always clobbers reg byte a +Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#149 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#136 = print_char_cursor#149 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] { { print_char_cursor#26 = print_char_cursor#94 } } ) always clobbers reg byte y +Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } } main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#1 = print_word::w#5 } } main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#1 = print_word::w#5 } } ) always clobbers reg byte a +Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#2 = print_word::w#5 } } main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 } { print_word::w#2 = print_word::w#5 } } ) always clobbers reg byte a +Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#6 } } main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#136 = print_char_cursor#149 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 print_char_cursor#149 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 print_char_cursor#149 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 print_char_cursor#144 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#1 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#145 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_dword::dw#0 = print_dword::dw#2 } { print_char_cursor#144 = print_char_cursor#145 print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_word::w#2 = print_word::w#5 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 print_char_cursor#149 print_char_cursor#94 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#16 = print_char::ch#7 } } main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#144 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#136 = print_char_cursor#149 } { print_char::ch#16 = print_char::ch#7 } { print_char_cursor#26 = print_char_cursor#94 } } main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] { { print_char_cursor#149 = print_char_cursor#26 print_char_cursor#94 } { print_char::ch#16 = print_char::ch#7 } } ) always clobbers reg byte a +Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#161 } } main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#160 } } main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#162 } } main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] { } ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#161 } } main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#160 } } main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] { { print_char_cursor#156 = print_char_cursor#162 } } main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] { } ) always clobbers reg byte a reg byte y +Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] { { print_char_cursor#156 = print_char_cursor#160 } } ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] { } ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] { { print_word::w#0 = print_word::w#5 } { print_char_cursor#144 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] { { print_char_cursor#156 = print_char_cursor#162 } } ) always clobbers reg byte a +Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] : zp[4]:4 , Potential registers zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , @@ -3276,15 +3272,15 @@ Potential registers zp[1]:24 [ print_byte::$0 ] : zp[1]:24 , reg byte a , reg by Potential registers zp[1]:25 [ print_byte::$2 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 65.19: zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] 32.83: zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -Uplift Scope [memset] 36.67: zp[2]:22 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] -Uplift Scope [print_byte] 10: zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:24 [ print_byte::$0 ] 4: zp[1]:25 [ print_byte::$2 ] -Uplift Scope [print_word] 15.33: zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] -Uplift Scope [print_sword] 9: zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] -Uplift Scope [print_sdword] 9: zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] -Uplift Scope [print_dword] 6: zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] +Uplift Scope [print_char] 16,000,007: zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] +Uplift Scope [] 11,611,911.98: zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] 22,873.83: zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplift Scope [print_byte] 2,000,002: zp[1]:24 [ print_byte::$0 ] 2,000,002: zp[1]:25 [ print_byte::$2 ] 950,005: zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] +Uplift Scope [print_word] 115,674.33: zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:22 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_str] 31,254.25: zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] +Uplift Scope [print_dword] 9,003: zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] +Uplift Scope [print_sword] 4,504.5: zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Uplift Scope [print_sdword] 4,504.5: zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_sbyte] @@ -3295,24 +3291,24 @@ Uplift Scope [testShort] Uplift Scope [testInt] Uplift Scope [testLong] -Uplifting [] best 2677 combination zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -Uplifting [memset] best 2677 combination zp[2]:22 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 2677 combination zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] -Uplifting [print_byte] best 2654 combination reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_word] best 2654 combination zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_char] best 2606 combination reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] -Uplifting [print_sword] best 2606 combination zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] -Uplifting [print_sdword] best 2606 combination zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] -Uplifting [print_dword] best 2606 combination zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] -Uplifting [RADIX] best 2606 combination -Uplifting [print_ln] best 2606 combination -Uplifting [print_sbyte] best 2606 combination -Uplifting [print_cls] best 2606 combination -Uplifting [main] best 2606 combination -Uplifting [testChar] best 2606 combination -Uplifting [testShort] best 2606 combination -Uplifting [testInt] best 2606 combination -Uplifting [testLong] best 2606 combination +Uplifting [print_char] best 2629 combination reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] +Uplifting [] best 2629 combination zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplifting [print_byte] best 2602 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] +Uplifting [print_word] best 2602 combination zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [memset] best 2602 combination zp[2]:22 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_str] best 2602 combination zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] +Uplifting [print_dword] best 2602 combination zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] +Uplifting [print_sword] best 2602 combination zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Uplifting [print_sdword] best 2602 combination zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +Uplifting [RADIX] best 2602 combination +Uplifting [print_ln] best 2602 combination +Uplifting [print_sbyte] best 2602 combination +Uplifting [print_cls] best 2602 combination +Uplifting [main] best 2602 combination +Uplifting [testChar] best 2602 combination +Uplifting [testShort] best 2602 combination +Uplifting [testInt] best 2602 combination +Uplifting [testLong] best 2602 combination Coalescing zero page register [ zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] ] with [ zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] ] with [ zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] @@ -3672,8 +3668,7 @@ print_dword: { print_word: { .label w = $a // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [58] call print_byte // [62] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3684,8 +3679,7 @@ print_word: { // print_word::@1 __b1: // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [60] call print_byte // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -4497,8 +4491,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:10 22.0 -(byte*) memset::dst#2 dst zp[2]:10 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:10 20002.0 +(byte*) memset::dst#2 dst zp[2]:10 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4507,45 +4501,45 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte x 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 2.0 +(byte) print_byte::b#1 reg byte x 200002.0 +(byte) print_byte::b#2 reg byte x 200002.0 +(byte) print_byte::b#5 reg byte x 550001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#16 reg byte a 6.0 -(byte) print_char::ch#6 reg byte a 4.0 -(byte) print_char::ch#7 reg byte a 4.0 +(byte) print_char::ch#16 reg byte a 1.2000003E7 +(byte) print_char::ch#6 reg byte a 2000002.0 +(byte) print_char::ch#7 reg byte a 2000002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 11.0 -(byte*) print_char_cursor#136 print_char_cursor zp[2]:8 3.583333333333333 -(byte*) print_char_cursor#144 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 3.0 -(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 3.9999999999999996 -(byte*) print_char_cursor#156 print_char_cursor zp[2]:8 8.0 -(byte*) print_char_cursor#160 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#161 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#162 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 0.6091954022988502 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 17.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 +(byte*) print_char_cursor#136 print_char_cursor zp[2]:8 2617.333333333333 +(byte*) print_char_cursor#144 print_char_cursor zp[2]:8 60603.0 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 5551.5 +(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 400402.0000000001 +(byte*) print_char_cursor#156 print_char_cursor zp[2]:8 1304.0 +(byte*) print_char_cursor#160 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#161 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#162 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 127918.6436781609 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 1.10029085E7 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:4 4.0 -(dword) print_dword::dw#2 dw zp[4]:4 2.0 +(dword) print_dword::dw#0 dw zp[4]:4 2002.0 +(dword) print_dword::dw#2 dw zp[4]:4 7001.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.8333333333333333 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 8.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 566.8333333333333 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 21003.0 +(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 1304.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4563,17 +4557,17 @@ FINAL SYMBOL TABLE (label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw -(signed dword) print_sdword::dw#0 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#3 dw zp[4]:4 1.0 -(signed dword) print_sdword::dw#5 dw zp[4]:4 4.0 +(signed dword) print_sdword::dw#0 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#3 dw zp[4]:4 500.5 +(signed dword) print_sdword::dw#5 dw zp[4]:4 2002.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:10 22.0 -(byte*) print_str::str#5 str zp[2]:10 11.5 -(byte*) print_str::str#7 str zp[2]:10 2.0 +(byte*) print_str::str#0 str zp[2]:10 20002.0 +(byte*) print_str::str#5 str zp[2]:10 10251.25 +(byte*) print_str::str#7 str zp[2]:10 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -4581,17 +4575,17 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:10 4.0 -(signed word) print_sword::w#10 w zp[2]:10 1.0 -(signed word) print_sword::w#7 w zp[2]:10 4.0 +(signed word) print_sword::w#0 w zp[2]:10 2002.0 +(signed word) print_sword::w#10 w zp[2]:10 500.5 +(signed word) print_sword::w#7 w zp[2]:10 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 4.0 -(word) print_word::w#1 w zp[2]:10 4.0 -(word) print_word::w#2 w zp[2]:10 4.0 -(word) print_word::w#5 w zp[2]:10 3.333333333333333 +(word) print_word::w#0 w zp[2]:10 2002.0 +(word) print_word::w#1 w zp[2]:10 20002.0 +(word) print_word::w#2 w zp[2]:10 20002.0 +(word) print_word::w#5 w zp[2]:10 73668.33333333333 (void()) testChar() (label) testChar::@1 (label) testChar::@2 @@ -4652,7 +4646,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 2196 +Score: 2192 // File Comments // Tests the different standard C types @@ -4955,8 +4949,7 @@ print_word: { .label w = $a // print_byte(>w) // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [58] call print_byte // [62] phi from print_word to print_byte [phi:print_word->print_byte] // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy @@ -4965,8 +4958,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/c-types.sym b/src/test/ref/c-types.sym index a595e510e..aa5a5912d 100644 --- a/src/test/ref/c-types.sym +++ b/src/test/ref/c-types.sym @@ -18,8 +18,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:10 22.0 -(byte*) memset::dst#2 dst zp[2]:10 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:10 20002.0 +(byte*) memset::dst#2 dst zp[2]:10 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -28,45 +28,45 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte x 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 2.0 +(byte) print_byte::b#1 reg byte x 200002.0 +(byte) print_byte::b#2 reg byte x 200002.0 +(byte) print_byte::b#5 reg byte x 550001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#16 reg byte a 6.0 -(byte) print_char::ch#6 reg byte a 4.0 -(byte) print_char::ch#7 reg byte a 4.0 +(byte) print_char::ch#16 reg byte a 1.2000003E7 +(byte) print_char::ch#6 reg byte a 2000002.0 +(byte) print_char::ch#7 reg byte a 2000002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 11.0 -(byte*) print_char_cursor#136 print_char_cursor zp[2]:8 3.583333333333333 -(byte*) print_char_cursor#144 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 3.0 -(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 3.9999999999999996 -(byte*) print_char_cursor#156 print_char_cursor zp[2]:8 8.0 -(byte*) print_char_cursor#160 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#161 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#162 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 0.6091954022988502 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 17.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 +(byte*) print_char_cursor#136 print_char_cursor zp[2]:8 2617.333333333333 +(byte*) print_char_cursor#144 print_char_cursor zp[2]:8 60603.0 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 5551.5 +(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 400402.0000000001 +(byte*) print_char_cursor#156 print_char_cursor zp[2]:8 1304.0 +(byte*) print_char_cursor#160 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#161 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#162 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 127918.6436781609 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 1.10029085E7 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:4 4.0 -(dword) print_dword::dw#2 dw zp[4]:4 2.0 +(dword) print_dword::dw#0 dw zp[4]:4 2002.0 +(dword) print_dword::dw#2 dw zp[4]:4 7001.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.8333333333333333 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 8.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 566.8333333333333 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 21003.0 +(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 1304.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -84,17 +84,17 @@ (label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw -(signed dword) print_sdword::dw#0 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#3 dw zp[4]:4 1.0 -(signed dword) print_sdword::dw#5 dw zp[4]:4 4.0 +(signed dword) print_sdword::dw#0 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#3 dw zp[4]:4 500.5 +(signed dword) print_sdword::dw#5 dw zp[4]:4 2002.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:10 22.0 -(byte*) print_str::str#5 str zp[2]:10 11.5 -(byte*) print_str::str#7 str zp[2]:10 2.0 +(byte*) print_str::str#0 str zp[2]:10 20002.0 +(byte*) print_str::str#5 str zp[2]:10 10251.25 +(byte*) print_str::str#7 str zp[2]:10 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -102,17 +102,17 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:10 4.0 -(signed word) print_sword::w#10 w zp[2]:10 1.0 -(signed word) print_sword::w#7 w zp[2]:10 4.0 +(signed word) print_sword::w#0 w zp[2]:10 2002.0 +(signed word) print_sword::w#10 w zp[2]:10 500.5 +(signed word) print_sword::w#7 w zp[2]:10 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 4.0 -(word) print_word::w#1 w zp[2]:10 4.0 -(word) print_word::w#2 w zp[2]:10 4.0 -(word) print_word::w#5 w zp[2]:10 3.333333333333333 +(word) print_word::w#0 w zp[2]:10 2002.0 +(word) print_word::w#1 w zp[2]:10 20002.0 +(word) print_word::w#2 w zp[2]:10 20002.0 +(word) print_word::w#5 w zp[2]:10 73668.33333333333 (void()) testChar() (label) testChar::@1 (label) testChar::@2 diff --git a/src/test/ref/c64dtv-8bppcharstretch.log b/src/test/ref/c64dtv-8bppcharstretch.log index 6e72e55a3..4e8dadeb5 100644 --- a/src/test/ref/c64dtv-8bppcharstretch.log +++ b/src/test/ref/c64dtv-8bppcharstretch.log @@ -625,30 +625,30 @@ Inferred type updated to byte in (unumber~) gfx_init_plane_charset8::$2 ← (byt Inferred type updated to byte in (unumber~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#3 * (byte) 2 Inversing boolean not [94] (bool~) gfx_init_plane_charset8::$4 ← (byte~) gfx_init_plane_charset8::$2 == (byte) 0 from [93] (bool~) gfx_init_plane_charset8::$3 ← (byte~) gfx_init_plane_charset8::$2 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) gfx_init_screen0::cy#2 = (byte) gfx_init_screen0::cy#3 -Alias (byte*) gfx_init_screen0::ch#1 = (byte*) gfx_init_screen0::ch#4 -Alias (byte) gfx_init_plane_charset8::gfxbCpuBank#0 = (byte) gfx_init_plane_charset8::gfxbCpuBank#2 -Alias (byte) gfx_init_plane_charset8::bits#1 = (byte~) gfx_init_plane_charset8::$5 -Alias (byte) gfx_init_plane_charset8::col#3 = (byte) gfx_init_plane_charset8::col#4 (byte) gfx_init_plane_charset8::c#1 -Alias (byte*) gfx_init_plane_charset8::gfxa#3 = (byte*) gfx_init_plane_charset8::gfxa#4 -Alias (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#4 -Alias (byte) gfx_init_plane_charset8::cp#3 = (byte) gfx_init_plane_charset8::cp#4 -Alias (byte) gfx_init_plane_charset8::cr#4 = (byte) gfx_init_plane_charset8::cr#5 -Alias (byte*) gfx_init_plane_charset8::chargen#7 = (byte*) gfx_init_plane_charset8::chargen#8 -Alias (byte) gfx_init_plane_charset8::ch#5 = (byte) gfx_init_plane_charset8::ch#6 -Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr#3 -Alias (byte*) gfx_init_plane_charset8::chargen#4 = (byte*) gfx_init_plane_charset8::chargen#6 (byte*) gfx_init_plane_charset8::chargen#5 -Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#3 (byte) gfx_init_plane_charset8::ch#4 -Alias (byte*) gfx_init_plane_charset8::gfxa#1 = (byte*) gfx_init_plane_charset8::gfxa#7 (byte*) gfx_init_plane_charset8::gfxa#8 -Alias (byte) gfx_init_plane_charset8::col#1 = (byte) gfx_init_plane_charset8::col#7 (byte) gfx_init_plane_charset8::col#8 +Alias gfx_init_screen0::cy#2 = gfx_init_screen0::cy#3 +Alias gfx_init_screen0::ch#1 = gfx_init_screen0::ch#4 +Alias gfx_init_plane_charset8::gfxbCpuBank#0 = gfx_init_plane_charset8::gfxbCpuBank#2 +Alias gfx_init_plane_charset8::bits#1 = gfx_init_plane_charset8::$5 +Alias gfx_init_plane_charset8::col#3 = gfx_init_plane_charset8::col#4 gfx_init_plane_charset8::c#1 +Alias gfx_init_plane_charset8::gfxa#3 = gfx_init_plane_charset8::gfxa#4 +Alias gfx_init_plane_charset8::bits#2 = gfx_init_plane_charset8::bits#4 +Alias gfx_init_plane_charset8::cp#3 = gfx_init_plane_charset8::cp#4 +Alias gfx_init_plane_charset8::cr#4 = gfx_init_plane_charset8::cr#5 +Alias gfx_init_plane_charset8::chargen#7 = gfx_init_plane_charset8::chargen#8 +Alias gfx_init_plane_charset8::ch#5 = gfx_init_plane_charset8::ch#6 +Alias gfx_init_plane_charset8::cr#2 = gfx_init_plane_charset8::cr#3 +Alias gfx_init_plane_charset8::chargen#4 = gfx_init_plane_charset8::chargen#6 gfx_init_plane_charset8::chargen#5 +Alias gfx_init_plane_charset8::ch#2 = gfx_init_plane_charset8::ch#3 gfx_init_plane_charset8::ch#4 +Alias gfx_init_plane_charset8::gfxa#1 = gfx_init_plane_charset8::gfxa#7 gfx_init_plane_charset8::gfxa#8 +Alias gfx_init_plane_charset8::col#1 = gfx_init_plane_charset8::col#7 gfx_init_plane_charset8::col#8 Successful SSA optimization Pass2AliasElimination -Alias (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#3 -Alias (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#3 -Alias (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#3 -Alias (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#3 -Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr#4 -Alias (byte*) gfx_init_plane_charset8::chargen#4 = (byte*) gfx_init_plane_charset8::chargen#7 -Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#5 +Alias gfx_init_plane_charset8::gfxa#2 = gfx_init_plane_charset8::gfxa#3 +Alias gfx_init_plane_charset8::bits#2 = gfx_init_plane_charset8::bits#3 +Alias gfx_init_plane_charset8::col#2 = gfx_init_plane_charset8::col#3 +Alias gfx_init_plane_charset8::cp#2 = gfx_init_plane_charset8::cp#3 +Alias gfx_init_plane_charset8::cr#2 = gfx_init_plane_charset8::cr#4 +Alias gfx_init_plane_charset8::chargen#4 = gfx_init_plane_charset8::chargen#7 +Alias gfx_init_plane_charset8::ch#2 = gfx_init_plane_charset8::ch#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::rst#2 (byte) main::rst#0 Identical Phi Values (byte) gfx_init_screen0::cy#2 (byte) gfx_init_screen0::cy#4 @@ -1017,65 +1017,65 @@ gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@3 VARIABLE REGISTER WEIGHTS (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 2.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 10001.0 (void()) gfx_init() (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 2002.0 +(byte~) gfx_init_plane_charset8::$2 2000002.0 (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 101.0 -(byte) gfx_init_plane_charset8::bits#1 500.5 -(byte) gfx_init_plane_charset8::bits#2 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 100001.0 +(byte) gfx_init_plane_charset8::bits#1 500000.5 +(byte) gfx_init_plane_charset8::bits#2 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 2002.0 -(byte) gfx_init_plane_charset8::c#3 2002.0 +(byte) gfx_init_plane_charset8::c#2 2000002.0 +(byte) gfx_init_plane_charset8::c#3 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 16.5 -(byte) gfx_init_plane_charset8::ch#8 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 15001.5 +(byte) gfx_init_plane_charset8::ch#8 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 302.0 -(byte) gfx_init_plane_charset8::col#2 388.0 -(byte) gfx_init_plane_charset8::col#5 71.0 -(byte) gfx_init_plane_charset8::col#6 22.0 +(byte) gfx_init_plane_charset8::col#1 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 387500.5 +(byte) gfx_init_plane_charset8::col#5 70001.0 +(byte) gfx_init_plane_charset8::col#6 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 1501.5 -(byte) gfx_init_plane_charset8::cp#2 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 151.5 -(byte) gfx_init_plane_charset8::cr#6 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 150001.5 +(byte) gfx_init_plane_charset8::cr#6 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 202.0 -(byte~) gfx_init_screen0::$1 101.0 -(byte~) gfx_init_screen0::$2 202.0 -(byte~) gfx_init_screen0::$3 202.0 +(byte~) gfx_init_screen0::$0 200002.0 +(byte~) gfx_init_screen0::$1 100001.0 +(byte~) gfx_init_screen0::$2 200002.0 +(byte~) gfx_init_screen0::$3 200002.0 (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 22.0 +(byte*) gfx_init_screen0::ch#1 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 151.5 -(byte) gfx_init_screen0::cx#2 43.285714285714285 +(byte) gfx_init_screen0::cx#1 150001.5 +(byte) gfx_init_screen0::cx#2 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 16.5 -(byte) gfx_init_screen0::cy#4 12.299999999999999 +(byte) gfx_init_screen0::cy#1 15001.5 +(byte) gfx_init_screen0::cy#4 12000.300000000001 (void()) main() -(byte~) main::$3 202.0 -(byte~) main::$4 202.0 -(byte~) main::$5 202.0 +(byte~) main::$3 2002.0 +(byte~) main::$4 2002.0 +(byte~) main::$5 2002.0 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 22.0 +(byte) main::j#1 151.5 +(byte) main::j#2 202.0 (byte) main::rst -(byte) main::rst#1 57.714285714285715 +(byte) main::rst#1 572.0 Initial phi equivalence classes [ main::j#2 main::j#1 ] @@ -1782,92 +1782,92 @@ gfx_init_screen0: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHARSET8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) SCREEN/(word) $4000 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|>(word)(const byte*) SCREEN&(word) $3fff/(byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHARSET8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) SCREEN/(word) $4000 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|>(word)(const byte*) SCREEN&(word) $3fff/(byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x -Statement [32] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [38] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] ) always clobbers reg byte a +Statement [32] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [38] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ main::rst#1 ] -Statement [40] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] ) always clobbers reg byte a -Statement [51] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a -Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] { } ) always clobbers reg byte a +Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y +Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a +Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] { } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a +Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a +Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ gfx_init_screen0::$1 ] -Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y +Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHARSET8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) SCREEN/(word) $4000 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|>(word)(const byte*) SCREEN&(word) $3fff/(byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHARSET8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) SCREEN/(word) $4000 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|>(word)(const byte*) SCREEN&(word) $3fff/(byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x -Statement [32] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] (byte~) main::$3 ← (byte) main::rst#1 & (byte) 7 [ main::rst#1 main::$3 ] ( main:2 [ main::rst#1 main::$3 ] ) always clobbers reg byte a -Statement [38] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] ) always clobbers reg byte a -Statement [40] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] ) always clobbers reg byte a -Statement [51] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a -Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y -Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a +Statement [32] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [37] (byte~) main::$3 ← (byte) main::rst#1 & (byte) 7 [ main::rst#1 main::$3 ] ( main:2 [ main::rst#1 main::$3 ] { } ) always clobbers reg byte a +Statement [38] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a +Statement [40] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] { } ) always clobbers reg byte a +Statement [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] { } ) always clobbers reg byte a reg byte y +Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y +Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] { } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [81] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a -Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a -Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y +Statement [81] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] { } ) always clobbers reg byte a +Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a +Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] { } ) always clobbers reg byte a +Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] : zp[2]:4 , @@ -1892,10 +1892,10 @@ Potential registers zp[1]:25 [ gfx_init_screen0::$2 ] : zp[1]:25 , reg byte a , Potential registers zp[1]:26 [ gfx_init_screen0::$3 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [gfx_init_plane_charset8] 4,004: zp[1]:12 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,002: zp[1]:22 [ gfx_init_plane_charset8::$2 ] 1,723.94: zp[1]:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,044.93: zp[1]:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 845.22: zp[2]:8 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 783: zp[1]:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 192.31: zp[2]:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 165.93: zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 17.79: zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplift Scope [gfx_init_screen0] 202: zp[1]:23 [ gfx_init_screen0::$0 ] 202: zp[1]:25 [ gfx_init_screen0::$2 ] 202: zp[1]:26 [ gfx_init_screen0::$3 ] 194.79: zp[1]:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 116.93: zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 101: zp[1]:24 [ gfx_init_screen0::$1 ] 28.8: zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplift Scope [main] 202: zp[1]:19 [ main::$3 ] 202: zp[1]:20 [ main::$4 ] 202: zp[1]:21 [ main::$5 ] 57.71: zp[1]:18 [ main::rst#1 ] 38.5: zp[1]:2 [ main::j#2 main::j#1 ] -Uplift Scope [dtvSetCpuBankSegment1] 2: zp[1]:13 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] +Uplift Scope [gfx_init_plane_charset8] 4,000,004: zp[1]:12 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,000,002: zp[1]:22 [ gfx_init_plane_charset8::$2 ] 1,722,223.94: zp[1]:11 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,042,859.21: zp[1]:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 841,115.22: zp[2]:8 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 778,932.64: zp[1]:10 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 188,129.19: zp[2]:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 164,287.36: zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 16,178.09: zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplift Scope [gfx_init_screen0] 200,002: zp[1]:23 [ gfx_init_screen0::$0 ] 200,002: zp[1]:25 [ gfx_init_screen0::$2 ] 200,002: zp[1]:26 [ gfx_init_screen0::$3 ] 192,859.07: zp[1]:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 113,669.93: zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 100,001: zp[1]:24 [ gfx_init_screen0::$1 ] 27,001.8: zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplift Scope [dtvSetCpuBankSegment1] 10,001: zp[1]:13 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] +Uplift Scope [main] 2,002: zp[1]:19 [ main::$3 ] 2,002: zp[1]:20 [ main::$4 ] 2,002: zp[1]:21 [ main::$5 ] 572: zp[1]:18 [ main::rst#1 ] 353.5: zp[1]:2 [ main::j#2 main::j#1 ] Uplift Scope [gfx_init] Uplift Scope [] @@ -1903,9 +1903,9 @@ Uplifting [gfx_init_plane_charset8] best 98394 combination reg byte a [ gfx_init Limited combination testing to 100 combinations of 1152 possible. Uplifting [gfx_init_screen0] best 95594 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] reg byte a [ gfx_init_screen0::$3 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp[1]:24 [ gfx_init_screen0::$1 ] zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Limited combination testing to 100 combinations of 768 possible. -Uplifting [main] best 92994 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ] +Uplifting [dtvSetCpuBankSegment1] best 95585 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] +Uplifting [main] best 92985 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ] Limited combination testing to 100 combinations of 768 possible. -Uplifting [dtvSetCpuBankSegment1] best 92985 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] Uplifting [gfx_init] best 92985 combination Uplifting [] best 92985 combination Attempting to uplift remaining variables inzp[1]:7 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] @@ -1916,12 +1916,12 @@ Attempting to uplift remaining variables inzp[1]:6 [ gfx_init_plane_charset8::cr Uplifting [gfx_init_plane_charset8] best 92985 combination zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] Attempting to uplift remaining variables inzp[1]:24 [ gfx_init_screen0::$1 ] Uplifting [gfx_init_screen0] best 92985 combination zp[1]:24 [ gfx_init_screen0::$1 ] +Attempting to uplift remaining variables inzp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 92985 combination zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplifting [gfx_init_plane_charset8] best 92985 combination zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Attempting to uplift remaining variables inzp[1]:2 [ main::j#2 main::j#1 ] Uplifting [main] best 92865 combination reg byte x [ main::j#2 main::j#1 ] -Attempting to uplift remaining variables inzp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplifting [gfx_init_screen0] best 92865 combination zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplifting [gfx_init_plane_charset8] best 92865 combination zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Coalescing zero page register [ zp[1]:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp[1]:3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] Coalescing zero page register [ zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] ] with [ zp[2]:4 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] ] Coalescing zero page register [ zp[1]:24 [ gfx_init_screen0::$1 ] ] with [ zp[1]:6 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] @@ -2665,12 +2665,12 @@ FINAL SYMBOL TABLE (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 reg byte a 2.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 reg byte a 10001.0 (void()) gfx_init() (label) gfx_init::@1 (label) gfx_init::@return (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 reg byte a 2002.0 +(byte~) gfx_init_plane_charset8::$2 reg byte a 2000002.0 (label) gfx_init_plane_charset8::@1 (label) gfx_init_plane_charset8::@2 (label) gfx_init_plane_charset8::@3 @@ -2682,60 +2682,60 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_charset8::@9 (label) gfx_init_plane_charset8::@return (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:2 101.0 -(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:2 500.5 -(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:2 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:2 100001.0 +(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:2 500000.5 +(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:2 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 reg byte a 2002.0 -(byte) gfx_init_plane_charset8::c#3 reg byte a 2002.0 +(byte) gfx_init_plane_charset8::c#2 reg byte a 2000002.0 +(byte) gfx_init_plane_charset8::c#3 reg byte a 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:6 16.5 -(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:6 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:6 15001.5 +(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:6 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:7 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:7 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:7 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:7 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:7 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:7 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp[1]:5 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp[1]:5 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp[1]:5 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp[1]:5 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp[1]:5 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 col zp[1]:5 387500.5 +(byte) gfx_init_plane_charset8::col#5 col zp[1]:5 70001.0 +(byte) gfx_init_plane_charset8::col#6 col zp[1]:5 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 -(byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 reg byte x 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 reg byte x 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:9 151.5 -(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:9 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:9 150001.5 +(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:9 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:3 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:3 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:3 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:3 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:3 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:3 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:3 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:3 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const byte*) CHARSET8/(word) $4000 (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 reg byte a 202.0 -(byte~) gfx_init_screen0::$1 zp[1]:9 101.0 -(byte~) gfx_init_screen0::$2 reg byte a 202.0 -(byte~) gfx_init_screen0::$3 reg byte a 202.0 +(byte~) gfx_init_screen0::$0 reg byte a 200002.0 +(byte~) gfx_init_screen0::$1 zp[1]:9 100001.0 +(byte~) gfx_init_screen0::$2 reg byte a 200002.0 +(byte~) gfx_init_screen0::$3 reg byte a 200002.0 (label) gfx_init_screen0::@1 (label) gfx_init_screen0::@2 (label) gfx_init_screen0::@3 (label) gfx_init_screen0::@return (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 ch zp[2]:7 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 ch zp[2]:7 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 ch zp[2]:7 22.0 +(byte*) gfx_init_screen0::ch#1 ch zp[2]:7 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 ch zp[2]:7 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 ch zp[2]:7 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 reg byte x 151.5 -(byte) gfx_init_screen0::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen0::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen0::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 cy zp[1]:6 16.5 -(byte) gfx_init_screen0::cy#4 cy zp[1]:6 12.299999999999999 +(byte) gfx_init_screen0::cy#1 cy zp[1]:6 15001.5 +(byte) gfx_init_screen0::cy#4 cy zp[1]:6 12000.300000000001 (void()) main() -(byte~) main::$3 reg byte a 202.0 -(byte~) main::$4 reg byte a 202.0 -(byte~) main::$5 reg byte a 202.0 +(byte~) main::$3 reg byte a 2002.0 +(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$5 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -2743,10 +2743,10 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte) main::rst -(byte) main::rst#1 reg byte x 57.714285714285715 +(byte) main::rst#1 reg byte x 572.0 reg byte x [ main::j#2 main::j#1 ] zp[1]:2 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] diff --git a/src/test/ref/c64dtv-8bppcharstretch.sym b/src/test/ref/c64dtv-8bppcharstretch.sym index be0cb851a..e6eee0845 100644 --- a/src/test/ref/c64dtv-8bppcharstretch.sym +++ b/src/test/ref/c64dtv-8bppcharstretch.sym @@ -45,12 +45,12 @@ (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 reg byte a 2.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 reg byte a 10001.0 (void()) gfx_init() (label) gfx_init::@1 (label) gfx_init::@return (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 reg byte a 2002.0 +(byte~) gfx_init_plane_charset8::$2 reg byte a 2000002.0 (label) gfx_init_plane_charset8::@1 (label) gfx_init_plane_charset8::@2 (label) gfx_init_plane_charset8::@3 @@ -62,60 +62,60 @@ (label) gfx_init_plane_charset8::@9 (label) gfx_init_plane_charset8::@return (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:2 101.0 -(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:2 500.5 -(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:2 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:2 100001.0 +(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:2 500000.5 +(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:2 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 reg byte a 2002.0 -(byte) gfx_init_plane_charset8::c#3 reg byte a 2002.0 +(byte) gfx_init_plane_charset8::c#2 reg byte a 2000002.0 +(byte) gfx_init_plane_charset8::c#3 reg byte a 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:6 16.5 -(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:6 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:6 15001.5 +(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:6 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:7 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:7 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:7 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:7 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:7 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:7 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp[1]:5 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp[1]:5 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp[1]:5 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp[1]:5 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp[1]:5 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 col zp[1]:5 387500.5 +(byte) gfx_init_plane_charset8::col#5 col zp[1]:5 70001.0 +(byte) gfx_init_plane_charset8::col#6 col zp[1]:5 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 -(byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 reg byte x 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 reg byte x 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:9 151.5 -(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:9 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:9 150001.5 +(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:9 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:3 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:3 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:3 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:3 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:3 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:3 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:3 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:3 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const byte*) CHARSET8/(word) $4000 (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 reg byte a 202.0 -(byte~) gfx_init_screen0::$1 zp[1]:9 101.0 -(byte~) gfx_init_screen0::$2 reg byte a 202.0 -(byte~) gfx_init_screen0::$3 reg byte a 202.0 +(byte~) gfx_init_screen0::$0 reg byte a 200002.0 +(byte~) gfx_init_screen0::$1 zp[1]:9 100001.0 +(byte~) gfx_init_screen0::$2 reg byte a 200002.0 +(byte~) gfx_init_screen0::$3 reg byte a 200002.0 (label) gfx_init_screen0::@1 (label) gfx_init_screen0::@2 (label) gfx_init_screen0::@3 (label) gfx_init_screen0::@return (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 ch zp[2]:7 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 ch zp[2]:7 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 ch zp[2]:7 22.0 +(byte*) gfx_init_screen0::ch#1 ch zp[2]:7 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 ch zp[2]:7 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 ch zp[2]:7 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 reg byte x 151.5 -(byte) gfx_init_screen0::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen0::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen0::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 cy zp[1]:6 16.5 -(byte) gfx_init_screen0::cy#4 cy zp[1]:6 12.299999999999999 +(byte) gfx_init_screen0::cy#1 cy zp[1]:6 15001.5 +(byte) gfx_init_screen0::cy#4 cy zp[1]:6 12000.300000000001 (void()) main() -(byte~) main::$3 reg byte a 202.0 -(byte~) main::$4 reg byte a 202.0 -(byte~) main::$5 reg byte a 202.0 +(byte~) main::$3 reg byte a 2002.0 +(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$5 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -123,10 +123,10 @@ (label) main::@5 (label) main::@6 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte) main::rst -(byte) main::rst#1 reg byte x 57.714285714285715 +(byte) main::rst#1 reg byte x 572.0 reg byte x [ main::j#2 main::j#1 ] zp[1]:2 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] diff --git a/src/test/ref/c64dtv-8bppchunkystretch.log b/src/test/ref/c64dtv-8bppchunkystretch.log index 2b51a99ac..875dff7be 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.log +++ b/src/test/ref/c64dtv-8bppchunkystretch.log @@ -410,17 +410,17 @@ Inferred type updated to byte in (unumber~) main::$4 ← (const byte) VIC_DEN|(c Inferred type updated to byte in (unumber~) main::$5 ← (byte) main::rst#1 * (byte) $10 Inversing boolean not [57] (bool~) gfx_init_chunky::$3 ← (byte*) gfx_init_chunky::gfxb#3 != (word) $8000 from [56] (bool~) gfx_init_chunky::$2 ← (byte*) gfx_init_chunky::gfxb#3 == (word) $8000 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) gfx_init_chunky::gfxbCpuBank#0 = (byte) gfx_init_chunky::gfxbCpuBank#3 -Alias (byte) gfx_init_chunky::c#0 = (byte~) gfx_init_chunky::$6 -Alias (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#6 (byte) gfx_init_chunky::gfxbCpuBank#5 -Alias (word) gfx_init_chunky::x#3 = (word) gfx_init_chunky::x#5 (word) gfx_init_chunky::x#4 -Alias (byte) gfx_init_chunky::y#4 = (byte) gfx_init_chunky::y#7 (byte) gfx_init_chunky::y#5 -Alias (byte) gfx_init_chunky::y#2 = (byte) gfx_init_chunky::y#3 -Alias (byte*) gfx_init_chunky::gfxb#1 = (byte*) gfx_init_chunky::gfxb#6 -Alias (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#9 +Alias gfx_init_chunky::gfxbCpuBank#0 = gfx_init_chunky::gfxbCpuBank#3 +Alias gfx_init_chunky::c#0 = gfx_init_chunky::$6 +Alias gfx_init_chunky::gfxbCpuBank#4 = gfx_init_chunky::gfxbCpuBank#6 gfx_init_chunky::gfxbCpuBank#5 +Alias gfx_init_chunky::x#3 = gfx_init_chunky::x#5 gfx_init_chunky::x#4 +Alias gfx_init_chunky::y#4 = gfx_init_chunky::y#7 gfx_init_chunky::y#5 +Alias gfx_init_chunky::y#2 = gfx_init_chunky::y#3 +Alias gfx_init_chunky::gfxb#1 = gfx_init_chunky::gfxb#6 +Alias gfx_init_chunky::gfxbCpuBank#8 = gfx_init_chunky::gfxbCpuBank#9 Successful SSA optimization Pass2AliasElimination -Alias (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#3 -Alias (byte) gfx_init_chunky::y#2 = (byte) gfx_init_chunky::y#4 +Alias gfx_init_chunky::x#2 = gfx_init_chunky::x#3 +Alias gfx_init_chunky::y#2 = gfx_init_chunky::y#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::rst#2 (byte) main::rst#0 Identical Phi Values (byte) gfx_init_chunky::y#2 (byte) gfx_init_chunky::y#6 @@ -669,37 +669,37 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan VARIABLE REGISTER WEIGHTS (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 103.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 110002.0 (void()) gfx_init_chunky() -(word~) gfx_init_chunky::$5 101.0 +(word~) gfx_init_chunky::$5 10001.0 (byte) gfx_init_chunky::c -(byte) gfx_init_chunky::c#0 202.0 +(byte) gfx_init_chunky::c#0 20002.0 (byte*) gfx_init_chunky::gfxb -(byte*) gfx_init_chunky::gfxb#1 42.599999999999994 -(byte*) gfx_init_chunky::gfxb#3 157.0 -(byte*) gfx_init_chunky::gfxb#4 75.75 -(byte*) gfx_init_chunky::gfxb#5 22.0 +(byte*) gfx_init_chunky::gfxb#1 4200.6 +(byte*) gfx_init_chunky::gfxb#3 15502.0 +(byte*) gfx_init_chunky::gfxb#4 7500.75 +(byte*) gfx_init_chunky::gfxb#5 2002.0 (byte) gfx_init_chunky::gfxbCpuBank -(byte) gfx_init_chunky::gfxbCpuBank#2 202.0 -(byte) gfx_init_chunky::gfxbCpuBank#4 103.75 -(byte) gfx_init_chunky::gfxbCpuBank#7 22.0 -(byte) gfx_init_chunky::gfxbCpuBank#8 34.888888888888886 +(byte) gfx_init_chunky::gfxbCpuBank#2 20002.0 +(byte) gfx_init_chunky::gfxbCpuBank#4 10251.25 +(byte) gfx_init_chunky::gfxbCpuBank#7 2002.0 +(byte) gfx_init_chunky::gfxbCpuBank#8 3444.8888888888887 (word) gfx_init_chunky::x -(word) gfx_init_chunky::x#1 151.5 -(word) gfx_init_chunky::x#2 30.299999999999997 +(word) gfx_init_chunky::x#1 15001.5 +(word) gfx_init_chunky::x#2 3000.3 (byte) gfx_init_chunky::y -(byte) gfx_init_chunky::y#1 16.5 -(byte) gfx_init_chunky::y#6 9.461538461538462 +(byte) gfx_init_chunky::y#1 1501.5 +(byte) gfx_init_chunky::y#6 923.3076923076923 (void()) main() -(byte~) main::$3 202.0 -(byte~) main::$4 202.0 -(byte~) main::$5 202.0 +(byte~) main::$3 2002.0 +(byte~) main::$4 2002.0 +(byte~) main::$5 2002.0 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 22.0 +(byte) main::j#1 151.5 +(byte) main::j#2 202.0 (byte) main::rst -(byte) main::rst#1 57.714285714285715 +(byte) main::rst#1 572.0 Initial phi equivalence classes [ main::j#2 main::j#1 ] @@ -1205,65 +1205,65 @@ dtvSetCpuBankSegment1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_COLORRAM_OFF|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHUNKY [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) CHUNKY/(word) $4000 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) VIC_MEMORY) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_COLORRAM_OFF|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHUNKY [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) CHUNKY/(word) $4000 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) VIC_MEMORY) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x -Statement [26] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::rst#1 ] -Statement [34] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] ) always clobbers reg byte a -Statement [42] if((byte*) gfx_init_chunky::gfxb#3!=(word) $8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ) always clobbers reg byte a +Statement [34] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) gfx_init_chunky::gfxb#3!=(word) $8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] -Statement [47] (word~) gfx_init_chunky::$5 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ) always clobbers reg byte a -Statement [48] (byte) gfx_init_chunky::c#0 ← (byte)(word~) gfx_init_chunky::$5 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ) always clobbers reg byte a -Statement [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ) always clobbers reg byte y +Statement [47] (word~) gfx_init_chunky::$5 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] { } ) always clobbers reg byte a +Statement [48] (byte) gfx_init_chunky::c#0 ← (byte)(word~) gfx_init_chunky::$5 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] { } ) always clobbers reg byte a +Statement [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] -Statement [52] if((word) gfx_init_chunky::x#1!=(word) $140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ) always clobbers reg byte a +Statement [52] if((word) gfx_init_chunky::x#1!=(word) $140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] { } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_COLORRAM_OFF|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHUNKY [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) CHUNKY/(word) $4000 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) VIC_MEMORY) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_COLORRAM_OFF|(const byte) DTV_CHUNKY|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) CHUNKY [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) CHUNKY/(word) $4000 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) VIC_MEMORY) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x -Statement [26] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] (byte~) main::$3 ← (byte) main::rst#1 & (byte) 7 [ main::rst#1 main::$3 ] ( main:2 [ main::rst#1 main::$3 ] ) always clobbers reg byte a -Statement [32] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] ) always clobbers reg byte a -Statement [34] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] ) always clobbers reg byte a -Statement [42] if((byte*) gfx_init_chunky::gfxb#3!=(word) $8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [47] (word~) gfx_init_chunky::$5 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ) always clobbers reg byte a -Statement [48] (byte) gfx_init_chunky::c#0 ← (byte)(word~) gfx_init_chunky::$5 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ) always clobbers reg byte a -Statement [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ) always clobbers reg byte y -Statement [52] if((word) gfx_init_chunky::x#1!=(word) $140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) RASTER)!=(byte) $42) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] (byte~) main::$3 ← (byte) main::rst#1 & (byte) 7 [ main::rst#1 main::$3 ] ( main:2 [ main::rst#1 main::$3 ] { } ) always clobbers reg byte a +Statement [32] (byte~) main::$4 ← (const byte) VIC_DEN|(const byte) VIC_ECM|(const byte) VIC_RSEL | (byte~) main::$3 [ main::rst#1 main::$4 ] ( main:2 [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a +Statement [34] (byte~) main::$5 ← (byte) main::rst#1 << (byte) 4 [ main::rst#1 main::$5 ] ( main:2 [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) gfx_init_chunky::gfxb#3!=(word) $8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a +Statement [47] (word~) gfx_init_chunky::$5 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] { } ) always clobbers reg byte a +Statement [48] (byte) gfx_init_chunky::c#0 ← (byte)(word~) gfx_init_chunky::$5 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::c#0 ] { } ) always clobbers reg byte a +Statement [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] { } ) always clobbers reg byte y +Statement [52] if((word) gfx_init_chunky::x#1!=(word) $140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( main:2::gfx_init_chunky:7 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] { } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] : zp[1]:3 , reg byte x , @@ -1279,20 +1279,20 @@ Potential registers zp[2]:14 [ gfx_init_chunky::$5 ] : zp[2]:14 , Potential registers zp[1]:16 [ gfx_init_chunky::c#0 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [gfx_init_chunky] 362.64: zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] 297.35: zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] 202: zp[1]:16 [ gfx_init_chunky::c#0 ] 181.8: zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] 101: zp[2]:14 [ gfx_init_chunky::$5 ] 25.96: zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] -Uplift Scope [main] 202: zp[1]:11 [ main::$3 ] 202: zp[1]:12 [ main::$4 ] 202: zp[1]:13 [ main::$5 ] 57.71: zp[1]:10 [ main::rst#1 ] 38.5: zp[1]:2 [ main::j#2 main::j#1 ] -Uplift Scope [dtvSetCpuBankSegment1] 305: zp[1]:9 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] +Uplift Scope [dtvSetCpuBankSegment1] 130,004: zp[1]:9 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] +Uplift Scope [gfx_init_chunky] 35,700.14: zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] 29,205.35: zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] 20,002: zp[1]:16 [ gfx_init_chunky::c#0 ] 18,001.8: zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] 10,001: zp[2]:14 [ gfx_init_chunky::$5 ] 2,424.81: zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] +Uplift Scope [main] 2,002: zp[1]:11 [ main::$3 ] 2,002: zp[1]:12 [ main::$4 ] 2,002: zp[1]:13 [ main::$5 ] 572: zp[1]:10 [ main::rst#1 ] 353.5: zp[1]:2 [ main::j#2 main::j#1 ] Uplift Scope [] -Uplifting [gfx_init_chunky] best 25250 combination reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] reg byte a [ gfx_init_chunky::c#0 ] zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] zp[2]:14 [ gfx_init_chunky::$5 ] zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] -Uplifting [main] best 22650 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ] +Uplifting [dtvSetCpuBankSegment1] best 26171 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] +Uplifting [gfx_init_chunky] best 25141 combination reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] reg byte a [ gfx_init_chunky::c#0 ] zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] zp[2]:14 [ gfx_init_chunky::$5 ] zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] +Uplifting [main] best 22541 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ] Limited combination testing to 100 combinations of 768 possible. -Uplifting [dtvSetCpuBankSegment1] best 22541 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] Uplifting [] best 22541 combination +Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] +Uplifting [gfx_init_chunky] best 22541 combination zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] Attempting to uplift remaining variables inzp[1]:2 [ main::j#2 main::j#1 ] Uplifting [main] best 22421 combination reg byte x [ main::j#2 main::j#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] -Uplifting [gfx_init_chunky] best 22421 combination zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] Allocated (was zp[1]:3) zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] Allocated (was zp[2]:4) zp[2]:3 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] Allocated (was zp[2]:7) zp[2]:5 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] @@ -1841,10 +1841,10 @@ FINAL SYMBOL TABLE (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 103.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 110002.0 (void()) gfx_init_chunky() -(word~) gfx_init_chunky::$5 zp[2]:7 101.0 +(word~) gfx_init_chunky::$5 zp[2]:7 10001.0 (label) gfx_init_chunky::@1 (label) gfx_init_chunky::@2 (label) gfx_init_chunky::@3 @@ -1854,27 +1854,27 @@ FINAL SYMBOL TABLE (label) gfx_init_chunky::@7 (label) gfx_init_chunky::@return (byte) gfx_init_chunky::c -(byte) gfx_init_chunky::c#0 reg byte a 202.0 +(byte) gfx_init_chunky::c#0 reg byte a 20002.0 (byte*) gfx_init_chunky::gfxb -(byte*) gfx_init_chunky::gfxb#1 gfxb zp[2]:5 42.599999999999994 -(byte*) gfx_init_chunky::gfxb#3 gfxb zp[2]:5 157.0 -(byte*) gfx_init_chunky::gfxb#4 gfxb zp[2]:5 75.75 -(byte*) gfx_init_chunky::gfxb#5 gfxb zp[2]:5 22.0 +(byte*) gfx_init_chunky::gfxb#1 gfxb zp[2]:5 4200.6 +(byte*) gfx_init_chunky::gfxb#3 gfxb zp[2]:5 15502.0 +(byte*) gfx_init_chunky::gfxb#4 gfxb zp[2]:5 7500.75 +(byte*) gfx_init_chunky::gfxb#5 gfxb zp[2]:5 2002.0 (byte) gfx_init_chunky::gfxbCpuBank -(byte) gfx_init_chunky::gfxbCpuBank#2 reg byte x 202.0 -(byte) gfx_init_chunky::gfxbCpuBank#4 reg byte x 103.75 -(byte) gfx_init_chunky::gfxbCpuBank#7 reg byte x 22.0 -(byte) gfx_init_chunky::gfxbCpuBank#8 reg byte x 34.888888888888886 +(byte) gfx_init_chunky::gfxbCpuBank#2 reg byte x 20002.0 +(byte) gfx_init_chunky::gfxbCpuBank#4 reg byte x 10251.25 +(byte) gfx_init_chunky::gfxbCpuBank#7 reg byte x 2002.0 +(byte) gfx_init_chunky::gfxbCpuBank#8 reg byte x 3444.8888888888887 (word) gfx_init_chunky::x -(word) gfx_init_chunky::x#1 x zp[2]:3 151.5 -(word) gfx_init_chunky::x#2 x zp[2]:3 30.299999999999997 +(word) gfx_init_chunky::x#1 x zp[2]:3 15001.5 +(word) gfx_init_chunky::x#2 x zp[2]:3 3000.3 (byte) gfx_init_chunky::y -(byte) gfx_init_chunky::y#1 y zp[1]:2 16.5 -(byte) gfx_init_chunky::y#6 y zp[1]:2 9.461538461538462 +(byte) gfx_init_chunky::y#1 y zp[1]:2 1501.5 +(byte) gfx_init_chunky::y#6 y zp[1]:2 923.3076923076923 (void()) main() -(byte~) main::$3 reg byte a 202.0 -(byte~) main::$4 reg byte a 202.0 -(byte~) main::$5 reg byte a 202.0 +(byte~) main::$3 reg byte a 2002.0 +(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$5 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -1882,10 +1882,10 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte) main::rst -(byte) main::rst#1 reg byte x 57.714285714285715 +(byte) main::rst#1 reg byte x 572.0 reg byte x [ main::j#2 main::j#1 ] zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] diff --git a/src/test/ref/c64dtv-8bppchunkystretch.sym b/src/test/ref/c64dtv-8bppchunkystretch.sym index 1e3fca927..b8f551bcf 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.sym +++ b/src/test/ref/c64dtv-8bppchunkystretch.sym @@ -37,10 +37,10 @@ (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 103.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 110002.0 (void()) gfx_init_chunky() -(word~) gfx_init_chunky::$5 zp[2]:7 101.0 +(word~) gfx_init_chunky::$5 zp[2]:7 10001.0 (label) gfx_init_chunky::@1 (label) gfx_init_chunky::@2 (label) gfx_init_chunky::@3 @@ -50,27 +50,27 @@ (label) gfx_init_chunky::@7 (label) gfx_init_chunky::@return (byte) gfx_init_chunky::c -(byte) gfx_init_chunky::c#0 reg byte a 202.0 +(byte) gfx_init_chunky::c#0 reg byte a 20002.0 (byte*) gfx_init_chunky::gfxb -(byte*) gfx_init_chunky::gfxb#1 gfxb zp[2]:5 42.599999999999994 -(byte*) gfx_init_chunky::gfxb#3 gfxb zp[2]:5 157.0 -(byte*) gfx_init_chunky::gfxb#4 gfxb zp[2]:5 75.75 -(byte*) gfx_init_chunky::gfxb#5 gfxb zp[2]:5 22.0 +(byte*) gfx_init_chunky::gfxb#1 gfxb zp[2]:5 4200.6 +(byte*) gfx_init_chunky::gfxb#3 gfxb zp[2]:5 15502.0 +(byte*) gfx_init_chunky::gfxb#4 gfxb zp[2]:5 7500.75 +(byte*) gfx_init_chunky::gfxb#5 gfxb zp[2]:5 2002.0 (byte) gfx_init_chunky::gfxbCpuBank -(byte) gfx_init_chunky::gfxbCpuBank#2 reg byte x 202.0 -(byte) gfx_init_chunky::gfxbCpuBank#4 reg byte x 103.75 -(byte) gfx_init_chunky::gfxbCpuBank#7 reg byte x 22.0 -(byte) gfx_init_chunky::gfxbCpuBank#8 reg byte x 34.888888888888886 +(byte) gfx_init_chunky::gfxbCpuBank#2 reg byte x 20002.0 +(byte) gfx_init_chunky::gfxbCpuBank#4 reg byte x 10251.25 +(byte) gfx_init_chunky::gfxbCpuBank#7 reg byte x 2002.0 +(byte) gfx_init_chunky::gfxbCpuBank#8 reg byte x 3444.8888888888887 (word) gfx_init_chunky::x -(word) gfx_init_chunky::x#1 x zp[2]:3 151.5 -(word) gfx_init_chunky::x#2 x zp[2]:3 30.299999999999997 +(word) gfx_init_chunky::x#1 x zp[2]:3 15001.5 +(word) gfx_init_chunky::x#2 x zp[2]:3 3000.3 (byte) gfx_init_chunky::y -(byte) gfx_init_chunky::y#1 y zp[1]:2 16.5 -(byte) gfx_init_chunky::y#6 y zp[1]:2 9.461538461538462 +(byte) gfx_init_chunky::y#1 y zp[1]:2 1501.5 +(byte) gfx_init_chunky::y#6 y zp[1]:2 923.3076923076923 (void()) main() -(byte~) main::$3 reg byte a 202.0 -(byte~) main::$4 reg byte a 202.0 -(byte~) main::$5 reg byte a 202.0 +(byte~) main::$3 reg byte a 2002.0 +(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$5 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -78,10 +78,10 @@ (label) main::@5 (label) main::@6 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte) main::rst -(byte) main::rst#1 reg byte x 57.714285714285715 +(byte) main::rst#1 reg byte x 572.0 reg byte x [ main::j#2 main::j#1 ] zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] diff --git a/src/test/ref/c64dtv-blitter-box.log b/src/test/ref/c64dtv-blitter-box.log index c529dd933..3523e5abd 100644 --- a/src/test/ref/c64dtv-blitter-box.log +++ b/src/test/ref/c64dtv-blitter-box.log @@ -300,7 +300,7 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 Initial phi equivalence classes Added variable main::$0 to live range equivalence class [ main::$0 ] @@ -529,43 +529,43 @@ main: { SRCB: .byte $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← <(const byte*) SCREEN+(byte) $28+(byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN+(byte) $28+(byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← <(word) $15 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← <(word) $13 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← <(byte) $14*(word) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a +Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← <(const byte*) SCREEN+(byte) $28+(byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN+(byte) $28+(byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← <(word) $15 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← <(word) $13 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← <(byte) $14*(word) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::$0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::$0 ] Uplift Scope [] Uplifting [main] best 348 combination reg byte a [ main::$0 ] @@ -862,7 +862,7 @@ FINAL SYMBOL TABLE (const byte*) SRCA[] = (byte*) "camelot rules!" (const byte*) SRCB[] = { (byte) $80 } (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return diff --git a/src/test/ref/c64dtv-blitter-box.sym b/src/test/ref/c64dtv-blitter-box.sym index ebb761681..e105f2487 100644 --- a/src/test/ref/c64dtv-blitter-box.sym +++ b/src/test/ref/c64dtv-blitter-box.sym @@ -46,7 +46,7 @@ (const byte*) SRCA[] = (byte*) "camelot rules!" (const byte*) SRCB[] = { (byte) $80 } (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log index bb16df375..a0706e125 100644 --- a/src/test/ref/c64dtv-blittermin.log +++ b/src/test/ref/c64dtv-blittermin.log @@ -226,7 +226,7 @@ Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::r#2 = (byte) main::r#3 +Alias main::r#2 = main::r#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [36] if((byte~) main::$0!=(byte) 0) goto main::@2 Simple Condition (bool~) main::$2 [40] if((byte) main::r#1!=rangelast(0,7)) goto main::@2 @@ -335,10 +335,10 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 202.0 +(byte~) main::$0 2002.0 (byte) main::r -(byte) main::r#1 16.5 -(byte) main::r#2 56.0 +(byte) main::r#1 151.5 +(byte) main::r#2 551.0 Initial phi equivalence classes [ main::r#2 main::r#1 ] @@ -593,80 +593,80 @@ main: { SRCB: .byte $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) $10 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← (const byte) SRCA_LEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( main:2 [ main::r#2 main::$0 ] ) always clobbers reg byte a +Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) $10 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← (const byte) SRCA_LEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [37] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( main:2 [ main::r#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::r#2 main::r#1 ] -Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a -Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) $10 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← (const byte) SRCA_LEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( main:2 [ main::r#2 main::$0 ] ) always clobbers reg byte a -Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a +Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_CLEAR_IRQ [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) DTV_BLITTER_SRCA_LO) ← <(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_BLITTER_SRCA_MI) ← >(const byte*) SRCA [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) DTV_BLITTER_SRCA_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_BLITTER_SRCA_STEP) ← (byte) $10 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte*) SRCB [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) DTV_BLITTER_SRCB_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) DTV_BLITTER_SRCB_STEP) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) DTV_BLITTER_DEST_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) DTV_BLITTER_DEST_MI) ← >(const byte*) SCREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) DTV_BLITTER_DEST_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $100 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) DTV_BLITTER_DEST_STEP) ← (byte) $10 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) DTV_BLITTER_LEN_LO) ← (const byte) SRCA_LEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) DTV_BLITTER_LEN_HI) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [37] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( main:2 [ main::r#2 main::$0 ] { } ) always clobbers reg byte a +Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::r#2 main::r#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 202: zp[1]:3 [ main::$0 ] 72.5: zp[1]:2 [ main::r#2 main::r#1 ] +Uplift Scope [main] 2,002: zp[1]:3 [ main::$0 ] 702.5: zp[1]:2 [ main::r#2 main::r#1 ] Uplift Scope [] Uplifting [main] best 2515 combination reg byte a [ main::$0 ] reg byte x [ main::r#2 main::r#1 ] @@ -997,13 +997,13 @@ FINAL SYMBOL TABLE (const byte) SRCA_LEN = (byte) 9 (const byte*) SRCB[] = { (byte) $80 } (void()) main() -(byte~) main::$0 reg byte a 202.0 +(byte~) main::$0 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::r -(byte) main::r#1 reg byte x 16.5 -(byte) main::r#2 reg byte x 56.0 +(byte) main::r#1 reg byte x 151.5 +(byte) main::r#2 reg byte x 551.0 reg byte x [ main::r#2 main::r#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/c64dtv-blittermin.sym b/src/test/ref/c64dtv-blittermin.sym index 781dda585..950c29b8d 100644 --- a/src/test/ref/c64dtv-blittermin.sym +++ b/src/test/ref/c64dtv-blittermin.sym @@ -47,13 +47,13 @@ (const byte) SRCA_LEN = (byte) 9 (const byte*) SRCB[] = { (byte) $80 } (void()) main() -(byte~) main::$0 reg byte a 202.0 +(byte~) main::$0 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::r -(byte) main::r#1 reg byte x 16.5 -(byte) main::r#2 reg byte x 56.0 +(byte) main::r#1 reg byte x 151.5 +(byte) main::r#2 reg byte x 551.0 reg byte x [ main::r#2 main::r#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log index 28c5c185e..48bac9b8c 100644 --- a/src/test/ref/c64dtv-color.log +++ b/src/test/ref/c64dtv-color.log @@ -218,11 +218,11 @@ main::@4: scope:[main] from main::@3 main::@4 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::c -(byte) main::c#1 151.5 -(byte) main::c#2 201.99999999999997 +(byte) main::c#1 1501.5 +(byte) main::c#2 2002.0000000000002 (byte) main::r -(byte) main::r#1 151.5 -(byte) main::r#2 67.33333333333333 +(byte) main::r#1 1501.5 +(byte) main::r#2 667.3333333333334 Initial phi equivalence classes [ main::r#2 main::r#1 ] @@ -372,22 +372,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_BORDER_OFF|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER)!=(byte) $40) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte*) main::palette + (byte) main::c#2) [ main::c#2 ] ( main:2 [ main::c#2 ] ) always clobbers reg byte a +Statement [5] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_BORDER_OFF|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $40) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte*) main::palette + (byte) main::c#2) [ main::c#2 ] ( main:2 [ main::c#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::c#2 main::c#1 ] -Statement [5] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_BORDER_OFF|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER)!=(byte) $40) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte*) main::palette + (byte) main::c#2) [ main::c#2 ] ( main:2 [ main::c#2 ] ) always clobbers reg byte a +Statement [5] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_BORDER_OFF|(const byte) DTV_BADLINE_OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $40) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte*) main::palette + (byte) main::c#2) [ main::c#2 ] ( main:2 [ main::c#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::r#2 main::r#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::c#2 main::c#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 353.5: zp[1]:3 [ main::c#2 main::c#1 ] 218.83: zp[1]:2 [ main::r#2 main::r#1 ] +Uplift Scope [main] 3,503.5: zp[1]:3 [ main::c#2 main::c#1 ] 2,168.83: zp[1]:2 [ main::r#2 main::r#1 ] Uplift Scope [] Uplifting [main] best 11689 combination reg byte x [ main::c#2 main::c#1 ] reg byte x [ main::r#2 main::r#1 ] @@ -571,12 +571,12 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@4 (byte) main::c -(byte) main::c#1 reg byte x 151.5 -(byte) main::c#2 reg byte x 201.99999999999997 +(byte) main::c#1 reg byte x 1501.5 +(byte) main::c#2 reg byte x 2002.0000000000002 (const byte*) main::palette[(number) $10] = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f } (byte) main::r -(byte) main::r#1 reg byte x 151.5 -(byte) main::r#2 reg byte x 67.33333333333333 +(byte) main::r#1 reg byte x 1501.5 +(byte) main::r#2 reg byte x 667.3333333333334 reg byte x [ main::r#2 main::r#1 ] reg byte x [ main::c#2 main::c#1 ] diff --git a/src/test/ref/c64dtv-color.sym b/src/test/ref/c64dtv-color.sym index 06a1e58b1..ae21c6e3e 100644 --- a/src/test/ref/c64dtv-color.sym +++ b/src/test/ref/c64dtv-color.sym @@ -16,12 +16,12 @@ (label) main::@3 (label) main::@4 (byte) main::c -(byte) main::c#1 reg byte x 151.5 -(byte) main::c#2 reg byte x 201.99999999999997 +(byte) main::c#1 reg byte x 1501.5 +(byte) main::c#2 reg byte x 2002.0000000000002 (const byte*) main::palette[(number) $10] = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f } (byte) main::r -(byte) main::r#1 reg byte x 151.5 -(byte) main::r#2 reg byte x 67.33333333333333 +(byte) main::r#1 reg byte x 1501.5 +(byte) main::r#2 reg byte x 667.3333333333334 reg byte x [ main::r#2 main::r#1 ] reg byte x [ main::c#2 main::c#1 ] diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index f6624a890..a77265e9c 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -2412,9 +2412,9 @@ gfx_init_vic_bitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - ldx lines_x+1,y - lda lines_y,y - sta.z bitmap_line.y0 + lda lines_x+1,y + sta.z bitmap_line.x1 + ldx lines_y,y lda lines_y+1,y sta.z bitmap_line.y1 jsr bitmap_line @@ -2425,29 +2425,25 @@ gfx_init_vic_bitmap: { lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } // Draw a line on the bitmap -// bitmap_line(byte zp($16) x0, byte register(X) x1, byte zp($21) y0, byte zp($13) y1) +// bitmap_line(byte zp($16) x0, byte zp($21) x1, byte register(X) y0, byte zp($13) y1) bitmap_line: { .label xd = $12 .label x0 = $16 - .label y0 = $21 + .label x1 = $21 .label y1 = $13 // if(x0 *((const byte*) form_fields_max + (byte) form_field_idx#19) Inversing boolean not [1517] (bool~) form_control::$25 ← *((const byte*) form_fields_val + (byte) form_field_idx#20) != (byte) $ff from [1516] (bool~) form_control::$24 ← *((const byte*) form_fields_val + (byte) form_field_idx#20) == (byte) $ff Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#37 (byte*) print_line_cursor#60 (byte*) print_char_cursor#60 (byte*) print_screen#32 (byte*) print_line_cursor#53 (byte*) print_char_cursor#55 (byte*) print_screen#24 (byte*) print_line_cursor#44 (byte*) print_char_cursor#46 -Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#2 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#37 -Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#8 -Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#55 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#48 -Alias (byte*) print_str_lines::str#6 = (byte*) print_str_lines::str#9 (byte*) print_str_lines::str#7 -Alias (byte*) print_line_cursor#1 = (byte*) print_line_cursor#19 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#21 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#39 (byte*) print_char_cursor#3 -Alias (byte*) print_line_cursor#2 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#37 -Alias (byte*) print_str_at::str#2 = (byte*) print_str_at::str#3 -Alias (byte*) print_str_at::at#2 = (byte*) print_str_at::at#3 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#3 (byte*~) print_ln::$0 (byte*) print_char_cursor#4 (byte*) print_line_cursor#23 (byte*) print_char_cursor#24 (byte*) print_line_cursor#4 (byte*) print_char_cursor#5 -Alias (byte*) print_line_cursor#24 = (byte*) print_screen#10 (byte*) print_screen#9 (byte*) print_line_cursor#5 (byte*) print_char_cursor#6 (byte*) print_char_cursor#25 (byte*) print_line_cursor#6 (byte*) print_char_cursor#7 -Alias (byte*) print_screen#1 = (byte*) print_line_cursor#7 (byte*) print_char_cursor#8 (byte*) print_screen#11 (byte*) print_line_cursor#25 (byte*) print_char_cursor#26 (byte*) print_screen#2 (byte*) print_line_cursor#8 (byte*) print_char_cursor#9 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#9 (byte) keyboard_event_scan::row#7 -Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#106 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#89 (byte) keyboard_events_size#55 -Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$12 (byte) keyboard_event_scan::row_scan#5 -Alias (byte) keyboard_event_scan::keycode#1 = (byte~) keyboard_event_scan::$14 -Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#37 (byte) keyboard_events_size#38 (byte) keyboard_events_size#19 (byte) keyboard_events_size#20 -Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#9 (byte) keyboard_event_scan::keycode#8 (byte) keyboard_event_scan::keycode#5 (byte) keyboard_event_scan::keycode#6 -Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#6 (byte) keyboard_event_scan::col#4 (byte) keyboard_event_scan::col#5 (byte) keyboard_event_scan::col#7 -Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#6 (byte) keyboard_event_scan::row_scan#2 (byte) keyboard_event_scan::row_scan#7 (byte) keyboard_event_scan::row_scan#8 -Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#11 (byte) keyboard_event_scan::row#5 (byte) keyboard_event_scan::row#13 (byte) keyboard_event_scan::row#12 -Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$21 -Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#4 -Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#8 -Alias (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#105 = (byte) keyboard_events_size#54 -Alias (byte) keyboard_events_size#110 = (byte) keyboard_events_size#114 (byte) keyboard_events_size#98 (byte) keyboard_events_size#111 -Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#6 -Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#17 -Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#7 -Alias (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#53 -Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#99 (byte) keyboard_events_size#107 -Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$26 -Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#8 -Alias (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#54 -Alias (byte) keyboard_events_size#78 = (byte) keyboard_events_size#90 (byte) keyboard_events_size#79 -Alias (byte) keyboard_modifiers#3 = (byte~) keyboard_event_scan::$27 -Alias (byte) keyboard_event_pressed::return#3 = (byte) keyboard_event_pressed::return#9 -Alias (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#55 -Alias (byte) keyboard_events_size#39 = (byte) keyboard_events_size#56 (byte) keyboard_events_size#40 -Alias (byte) keyboard_modifiers#4 = (byte~) keyboard_event_scan::$28 -Alias (byte) keyboard_modifiers#5 = (byte~) keyboard_event_scan::$29 -Alias (byte) keyboard_events_size#21 = (byte) keyboard_events_size#3 -Alias (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#6 -Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#4 (byte~) keyboard_event_pressed::$2 (byte) keyboard_event_pressed::return#5 -Alias (byte) keyboard_events_size#22 = (byte) keyboard_events_size#41 (byte) keyboard_events_size#23 -Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#5 -Alias (byte) keyboard_events_size#24 = (byte) keyboard_events_size#5 -Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$13 -Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 -Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 -Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 -Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 -Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 -Alias (byte) bitmap_line::x1#1 = (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 -Alias (byte) bitmap_line::x0#1 = (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 -Alias (byte) bitmap_line::y0#1 = (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 -Alias (byte) bitmap_line::y1#1 = (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 -Alias (byte) bitmap_line::xd#1 = (byte~) bitmap_line::$11 (byte) bitmap_line::xd#9 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 -Alias (byte) bitmap_line::xd#2 = (byte~) bitmap_line::$1 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 -Alias (byte) bitmap_line::yd#1 = (byte~) bitmap_line::$7 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 -Alias (byte) bitmap_line::yd#2 = (byte~) bitmap_line::$3 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 -Alias (byte) bitmap_line::yd#11 = (byte) bitmap_line::yd#3 (byte~) bitmap_line::$17 (byte) bitmap_line::yd#12 -Alias (byte) bitmap_line::yd#10 = (byte) bitmap_line::yd#4 (byte~) bitmap_line::$13 (byte) bitmap_line::yd#9 -Alias (byte) bitmap_line_xdyi::e#0 = (byte~) bitmap_line_xdyi::$0 -Alias (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#4 -Alias (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#6 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#3 -Alias (byte) bitmap_line_xdyi::x1#3 = (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 -Alias (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::y#4 -Alias (byte) bitmap_line_xdyi::e#1 = (byte~) bitmap_line_xdyi::$2 (byte) bitmap_line_xdyi::e#4 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#7 -Alias (byte) bitmap_line_xdyi::e#2 = (byte~) bitmap_line_xdyi::$5 -Alias (byte) bitmap_line_xdyd::e#0 = (byte~) bitmap_line_xdyd::$0 -Alias (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#4 -Alias (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#6 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#3 -Alias (byte) bitmap_line_xdyd::x1#3 = (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 -Alias (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::y#4 -Alias (byte) bitmap_line_xdyd::e#1 = (byte~) bitmap_line_xdyd::$2 (byte) bitmap_line_xdyd::e#4 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#7 -Alias (byte) bitmap_line_xdyd::e#2 = (byte~) bitmap_line_xdyd::$5 -Alias (byte) bitmap_line_ydxi::e#0 = (byte~) bitmap_line_ydxi::$0 -Alias (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#4 -Alias (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#6 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#3 -Alias (byte) bitmap_line_ydxi::y1#3 = (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 -Alias (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::x#4 -Alias (byte) bitmap_line_ydxi::e#1 = (byte~) bitmap_line_ydxi::$2 (byte) bitmap_line_ydxi::e#4 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#7 -Alias (byte) bitmap_line_ydxi::e#2 = (byte~) bitmap_line_ydxi::$5 -Alias (byte) bitmap_line_ydxd::e#0 = (byte~) bitmap_line_ydxd::$0 -Alias (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#4 -Alias (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#5 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#6 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#3 -Alias (byte) bitmap_line_ydxd::y1#3 = (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 -Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::x#4 -Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8 -Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5 -Alias (byte*) print_screen#26 = (byte*) print_screen#33 (byte*) print_screen#38 -Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#56 (byte*) print_line_cursor#61 -Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#61 -Alias (signed byte) form_cursor_count#28 = (signed byte) form_cursor_count#38 (signed byte) form_cursor_count#43 -Alias (byte) keyboard_events_size#57 = (byte) keyboard_events_size#80 (byte) keyboard_events_size#91 -Alias (byte) keyboard_modifiers#56 = (byte) keyboard_modifiers#76 (byte) keyboard_modifiers#82 -Alias (byte) form_field_idx#36 = (byte) form_field_idx#44 (byte) form_field_idx#48 -Alias (byte*) print_screen#13 = (byte*) print_screen#18 (byte*) print_screen#19 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#39 (byte*) print_line_cursor#40 (byte*) print_line_cursor#27 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 (byte*) print_char_cursor#28 -Alias (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#18 (signed byte) form_cursor_count#19 (signed byte) form_cursor_count#11 -Alias (byte) keyboard_events_size#27 = (byte) keyboard_events_size#42 (byte) keyboard_events_size#43 (byte) keyboard_events_size#8 -Alias (byte) keyboard_modifiers#24 = (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#9 -Alias (byte) form_field_idx#1 = (byte) form_field_idx#25 (byte) form_field_idx#26 (byte) form_field_idx#12 -Alias (byte*) print_screen#12 = (byte*) print_screen#3 (byte*) print_screen#25 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#27 (byte*) print_char_cursor#49 -Alias (signed byte) form_cursor_count#0 = (signed byte) form_cursor_count#10 (signed byte) form_cursor_count#27 -Alias (byte) keyboard_events_size#25 = (byte) keyboard_events_size#6 -Alias (byte) keyboard_modifiers#22 = (byte) keyboard_modifiers#7 -Alias (byte) form_field_idx#0 = (byte) form_field_idx#11 (byte) form_field_idx#35 -Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#7 -Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#8 -Alias (byte) get_plane::idx#10 = (byte) get_plane::idx#3 (byte) get_plane::idx#2 (byte) get_plane::idx#4 (byte) get_plane::idx#5 (byte) get_plane::idx#6 (byte) get_plane::idx#7 (byte) get_plane::idx#8 (byte) get_plane::idx#9 (byte) get_plane::idx#11 (byte) get_plane::idx#12 (byte) get_plane::idx#13 (byte) get_plane::idx#14 (byte) get_plane::idx#15 -Alias (dword) get_plane::return#14 = (dword) get_plane::return#18 -Alias (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#3 (byte) get_vic_screen::idx#4 (byte) get_vic_screen::idx#5 (byte) get_vic_screen::idx#6 -Alias (byte*) get_vic_screen::return#5 = (byte*) get_vic_screen::return#9 -Alias (byte) get_vic_charset::idx#1 = (byte) get_vic_charset::idx#2 -Alias (byte*) get_vic_charset::return#2 = (byte*) get_vic_charset::return#5 -Alias (byte) apply_preset::idx#1 = (byte) apply_preset::idx#2 (byte) apply_preset::idx#3 (byte) apply_preset::idx#4 (byte) apply_preset::idx#5 (byte) apply_preset::idx#6 (byte) apply_preset::idx#7 (byte) apply_preset::idx#8 (byte) apply_preset::idx#9 (byte) apply_preset::idx#10 (byte) apply_preset::idx#11 -Alias (byte*) apply_preset::preset#13 = (byte*) apply_preset::preset#14 -Alias (byte) apply_preset::i#2 = (byte) apply_preset::i#3 -Alias (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#3 (byte) render_preset_name::idx#2 (byte) render_preset_name::idx#4 (byte) render_preset_name::idx#5 (byte) render_preset_name::idx#6 (byte) render_preset_name::idx#7 (byte) render_preset_name::idx#8 (byte) render_preset_name::idx#9 (byte) render_preset_name::idx#11 (byte) render_preset_name::idx#12 -Alias (byte) gfx_mode::dtv_control#0 = (byte) gfx_mode::dtv_control#7 -Alias (byte) keyboard_events_size#143 = (byte) keyboard_events_size#144 -Alias (byte) keyboard_modifiers#124 = (byte) keyboard_modifiers#125 -Alias (byte) gfx_mode::dtv_control#1 = (byte~) gfx_mode::$67 -Alias (byte) gfx_mode::dtv_control#14 = (byte) gfx_mode::dtv_control#8 -Alias (byte) keyboard_events_size#141 = (byte) keyboard_events_size#142 -Alias (byte) keyboard_modifiers#122 = (byte) keyboard_modifiers#123 -Alias (byte) gfx_mode::dtv_control#2 = (byte~) gfx_mode::$68 -Alias (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#9 -Alias (byte) keyboard_events_size#139 = (byte) keyboard_events_size#140 -Alias (byte) keyboard_modifiers#120 = (byte) keyboard_modifiers#121 -Alias (byte) gfx_mode::dtv_control#3 = (byte~) gfx_mode::$69 -Alias (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#16 -Alias (byte) keyboard_events_size#137 = (byte) keyboard_events_size#138 -Alias (byte) keyboard_modifiers#118 = (byte) keyboard_modifiers#119 -Alias (byte) gfx_mode::dtv_control#4 = (byte~) gfx_mode::$70 -Alias (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#17 -Alias (byte) keyboard_events_size#135 = (byte) keyboard_events_size#136 -Alias (byte) keyboard_modifiers#116 = (byte) keyboard_modifiers#117 -Alias (byte) gfx_mode::dtv_control#5 = (byte~) gfx_mode::$71 -Alias (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#18 -Alias (byte) keyboard_events_size#133 = (byte) keyboard_events_size#134 -Alias (byte) keyboard_modifiers#114 = (byte) keyboard_modifiers#115 -Alias (byte) gfx_mode::dtv_control#6 = (byte~) gfx_mode::$72 -Alias (byte) gfx_mode::vic_control#0 = (byte) gfx_mode::vic_control#3 -Alias (byte) keyboard_events_size#131 = (byte) keyboard_events_size#132 -Alias (byte) keyboard_modifiers#112 = (byte) keyboard_modifiers#113 -Alias (byte) gfx_mode::vic_control#1 = (byte~) gfx_mode::$73 -Alias (byte) gfx_mode::vic_control#5 = (byte) gfx_mode::vic_control#6 -Alias (byte) keyboard_events_size#129 = (byte) keyboard_events_size#130 -Alias (byte) keyboard_modifiers#110 = (byte) keyboard_modifiers#111 -Alias (byte) gfx_mode::vic_control#2 = (byte~) gfx_mode::$74 -Alias (byte) gfx_mode::plane_a_offs#0 = (byte~) gfx_mode::$19 (byte) gfx_mode::plane_a_offs#1 -Alias (dword) get_plane::return#16 = (dword) get_plane::return#19 -Alias (byte) keyboard_events_size#115 = (byte) keyboard_events_size#123 (byte) keyboard_events_size#125 (byte) keyboard_events_size#121 (byte) keyboard_events_size#119 (byte) keyboard_events_size#117 -Alias (byte) keyboard_modifiers#100 = (byte) keyboard_modifiers#104 (byte) keyboard_modifiers#106 (byte) keyboard_modifiers#102 (byte) keyboard_modifiers#98 (byte) keyboard_modifiers#96 -Alias (dword) gfx_mode::plane_a#0 = (dword~) gfx_mode::$21 -Alias (byte) gfx_mode::plane_b_offs#0 = (byte~) gfx_mode::$33 (byte) gfx_mode::plane_b_offs#1 -Alias (dword) get_plane::return#17 = (dword) get_plane::return#20 -Alias (dword) gfx_mode::plane_b#0 = (dword~) gfx_mode::$35 -Alias (byte*) get_vic_screen::return#10 = (byte*) get_vic_screen::return#7 -Alias (byte*) get_vic_charset::return#4 = (byte*) get_vic_charset::return#6 -Alias (byte*) get_vic_screen::return#11 = (byte*) get_vic_screen::return#8 -Alias (byte*) gfx_mode::vic_colors#0 = (byte*~) gfx_mode::$57 -Alias (byte) gfx_mode::vic_control2#0 = (byte) gfx_mode::vic_control2#3 -Alias (byte) keyboard_events_size#127 = (byte) keyboard_events_size#128 -Alias (byte) keyboard_modifiers#108 = (byte) keyboard_modifiers#109 -Alias (byte) gfx_mode::vic_control2#1 = (byte~) gfx_mode::$75 -Alias (byte) gfx_mode::cy#2 = (byte) gfx_mode::cy#3 -Alias (byte*) gfx_mode::vic_colors#1 = (byte*) gfx_mode::vic_colors#4 -Alias (byte*) gfx_mode::col#1 = (byte*) gfx_mode::col#4 -Alias (byte) keyboard_events_size#101 = (byte) keyboard_events_size#108 (byte) keyboard_events_size#92 (byte) keyboard_events_size#82 (byte) keyboard_events_size#81 -Alias (byte) keyboard_modifiers#77 = (byte) keyboard_modifiers#88 (byte) keyboard_modifiers#92 (byte) keyboard_modifiers#83 (byte) keyboard_modifiers#78 -Alias (byte) keyboard_events_size#44 = (byte) keyboard_events_size#60 -Alias (byte) keyboard_modifiers#40 = (byte) keyboard_modifiers#59 -Alias (byte) keyboard_events_size#28 = (byte) keyboard_events_size#9 -Alias (byte) keyboard_modifiers#10 = (byte) keyboard_modifiers#25 (byte) keyboard_modifiers#42 -Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#6 -Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 -Alias (byte) gfx_mode::keyboard_event#0 = (byte~) gfx_mode::$82 -Alias (byte) keyboard_events_size#11 = (byte) keyboard_events_size#30 -Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#26 -Alias (byte) gfx_init_charset::c#2 = (byte) gfx_init_charset::c#3 -Alias (byte*) gfx_init_charset::chargen#1 = (byte*) gfx_init_charset::chargen#4 -Alias (byte*) gfx_init_charset::charset#1 = (byte*) gfx_init_charset::charset#4 -Alias (byte) gfx_init_screen0::cy#2 = (byte) gfx_init_screen0::cy#3 -Alias (byte*) gfx_init_screen0::ch#1 = (byte*) gfx_init_screen0::ch#4 -Alias (byte) gfx_init_screen1::cy#2 = (byte) gfx_init_screen1::cy#3 -Alias (byte*) gfx_init_screen1::ch#1 = (byte*) gfx_init_screen1::ch#4 -Alias (byte) gfx_init_screen2::col#0 = (byte~) gfx_init_screen2::$1 -Alias (byte) gfx_init_screen2::col2#0 = (byte~) gfx_init_screen2::$2 -Alias (byte) gfx_init_screen2::cy#2 = (byte) gfx_init_screen2::cy#3 -Alias (byte*) gfx_init_screen2::ch#1 = (byte*) gfx_init_screen2::ch#4 -Alias (byte) gfx_init_screen3::cy#2 = (byte) gfx_init_screen3::cy#3 -Alias (byte*) gfx_init_screen3::ch#1 = (byte*) gfx_init_screen3::ch#4 -Alias (byte) gfx_init_screen4::cy#2 = (byte) gfx_init_screen4::cy#3 -Alias (byte*) gfx_init_screen4::ch#1 = (byte*) gfx_init_screen4::ch#4 -Alias (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#3 (byte) gfx_init_vic_bitmap::l#4 -Alias (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#3 -Alias (byte) gfx_init_plane_8bppchunky::c#0 = (byte~) gfx_init_plane_8bppchunky::$6 -Alias (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#6 (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#5 -Alias (word) gfx_init_plane_8bppchunky::x#3 = (word) gfx_init_plane_8bppchunky::x#5 (word) gfx_init_plane_8bppchunky::x#4 -Alias (byte) gfx_init_plane_8bppchunky::y#4 = (byte) gfx_init_plane_8bppchunky::y#7 (byte) gfx_init_plane_8bppchunky::y#5 -Alias (byte) gfx_init_plane_8bppchunky::y#2 = (byte) gfx_init_plane_8bppchunky::y#3 -Alias (byte*) gfx_init_plane_8bppchunky::gfxb#1 = (byte*) gfx_init_plane_8bppchunky::gfxb#6 -Alias (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#9 -Alias (byte) gfx_init_plane_horisontal::gfxbCpuBank#0 = (byte) gfx_init_plane_horisontal::gfxbCpuBank#2 -Alias (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#5 (byte*) gfx_init_plane_horisontal::gfxa#4 -Alias (byte) gfx_init_plane_horisontal::ax#3 = (byte) gfx_init_plane_horisontal::ax#5 (byte) gfx_init_plane_horisontal::ax#4 -Alias (byte) gfx_init_plane_horisontal::ay#2 = (byte) gfx_init_plane_horisontal::ay#6 (byte) gfx_init_plane_horisontal::ay#7 -Alias (byte) gfx_init_plane_horisontal::ay#3 = (byte) gfx_init_plane_horisontal::ay#5 -Alias (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#8 -Alias (byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 = (byte) gfx_init_plane_horisontal2::gfxbCpuBank#2 -Alias (byte) gfx_init_plane_horisontal2::row#0 = (byte~) gfx_init_plane_horisontal2::$3 -Alias (byte) gfx_init_plane_horisontal2::ay#2 = (byte) gfx_init_plane_horisontal2::ay#3 -Alias (byte*) gfx_init_plane_horisontal2::gfxa#1 = (byte*) gfx_init_plane_horisontal2::gfxa#4 -Alias (byte) gfx_init_plane_vertical::gfxbCpuBank#0 = (byte) gfx_init_plane_vertical::gfxbCpuBank#2 -Alias (byte) gfx_init_plane_vertical::by#2 = (byte) gfx_init_plane_vertical::by#3 -Alias (byte*) gfx_init_plane_vertical::gfxb#1 = (byte*) gfx_init_plane_vertical::gfxb#4 -Alias (byte) gfx_init_plane_charset8::gfxbCpuBank#0 = (byte) gfx_init_plane_charset8::gfxbCpuBank#2 -Alias (byte) gfx_init_plane_charset8::bits#1 = (byte~) gfx_init_plane_charset8::$5 -Alias (byte) gfx_init_plane_charset8::col#3 = (byte) gfx_init_plane_charset8::col#4 (byte) gfx_init_plane_charset8::c#1 -Alias (byte*) gfx_init_plane_charset8::gfxa#3 = (byte*) gfx_init_plane_charset8::gfxa#4 -Alias (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#4 -Alias (byte) gfx_init_plane_charset8::cp#3 = (byte) gfx_init_plane_charset8::cp#4 -Alias (byte) gfx_init_plane_charset8::cr#4 = (byte) gfx_init_plane_charset8::cr#5 -Alias (byte*) gfx_init_plane_charset8::chargen#7 = (byte*) gfx_init_plane_charset8::chargen#8 -Alias (byte) gfx_init_plane_charset8::ch#5 = (byte) gfx_init_plane_charset8::ch#6 -Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr#3 -Alias (byte*) gfx_init_plane_charset8::chargen#4 = (byte*) gfx_init_plane_charset8::chargen#6 (byte*) gfx_init_plane_charset8::chargen#5 -Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#3 (byte) gfx_init_plane_charset8::ch#4 -Alias (byte*) gfx_init_plane_charset8::gfxa#1 = (byte*) gfx_init_plane_charset8::gfxa#7 (byte*) gfx_init_plane_charset8::gfxa#8 -Alias (byte) gfx_init_plane_charset8::col#1 = (byte) gfx_init_plane_charset8::col#7 (byte) gfx_init_plane_charset8::col#8 -Alias (byte) gfx_init_plane_fill::gfxbCpuBank#0 = (byte~) gfx_init_plane_fill::$2 (byte) gfx_init_plane_fill::gfxbCpuBank#2 -Alias (dword) gfx_init_plane_fill::plane_addr#3 = (dword) gfx_init_plane_fill::plane_addr#4 -Alias (byte) gfx_init_plane_fill::fill#6 = (byte) gfx_init_plane_fill::fill#7 -Alias (byte) gfx_init_plane_fill::by#2 = (byte) gfx_init_plane_fill::by#3 -Alias (byte) gfx_init_plane_fill::fill#3 = (byte) gfx_init_plane_fill::fill#5 -Alias (byte*) gfx_init_plane_fill::gfxb#1 = (byte*) gfx_init_plane_fill::gfxb#4 -Alias (signed byte) form_cursor_count#44 = (signed byte) form_cursor_count#59 (signed byte) form_cursor_count#60 (signed byte) form_cursor_count#58 (signed byte) form_cursor_count#57 (signed byte) form_cursor_count#56 (signed byte) form_cursor_count#55 (signed byte) form_cursor_count#52 (signed byte) form_cursor_count#50 (signed byte) form_cursor_count#47 -Alias (byte) keyboard_events_size#102 = (byte) keyboard_events_size#124 (byte) keyboard_events_size#126 (byte) keyboard_events_size#122 (byte) keyboard_events_size#120 (byte) keyboard_events_size#118 (byte) keyboard_events_size#116 (byte) keyboard_events_size#113 (byte) keyboard_events_size#109 (byte) keyboard_events_size#93 -Alias (byte) keyboard_modifiers#101 = (byte) keyboard_modifiers#105 (byte) keyboard_modifiers#107 (byte) keyboard_modifiers#103 (byte) keyboard_modifiers#99 (byte) keyboard_modifiers#97 (byte) keyboard_modifiers#95 (byte) keyboard_modifiers#93 (byte) keyboard_modifiers#89 (byte) keyboard_modifiers#84 -Alias (byte) form_field_idx#49 = (byte) form_field_idx#65 (byte) form_field_idx#66 (byte) form_field_idx#64 (byte) form_field_idx#63 (byte) form_field_idx#62 (byte) form_field_idx#61 (byte) form_field_idx#58 (byte) form_field_idx#56 (byte) form_field_idx#52 -Alias (byte*) print_screen#14 = (byte*) print_screen#5 (byte*) print_screen#27 (byte*) print_screen#21 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#28 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#29 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#29 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#30 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#30 -Alias (byte*) print_screen#15 = (byte*) print_screen#6 (byte*) print_screen#45 (byte*) print_screen#44 (byte*) print_screen#43 (byte*) print_screen#41 (byte*) print_screen#39 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#31 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#32 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#66 (byte*) print_char_cursor#64 (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#66 (byte*) print_line_cursor#64 (byte*) print_line_cursor#62 -Alias (byte*) print_screen#29 = (byte*) print_screen#34 -Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#57 -Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#57 -Alias (signed byte) form_cursor_count#30 = (signed byte) form_cursor_count#39 -Alias (byte) keyboard_events_size#62 = (byte) keyboard_events_size#83 -Alias (byte) keyboard_modifiers#61 = (byte) keyboard_modifiers#79 -Alias (byte) form_field_idx#38 = (byte) form_field_idx#45 -Alias (signed byte) form_cursor_count#20 = (signed byte) form_cursor_count#32 -Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#64 -Alias (byte) keyboard_modifiers#43 = (byte) keyboard_modifiers#63 -Alias (byte) form_field_idx#27 = (byte) form_field_idx#40 -Alias (byte) form_mode::preset_current#2 = (byte) form_mode::preset_current#4 (byte) form_mode::preset_current#5 (byte) form_mode::preset_current#3 -Alias (byte*) print_screen#23 = (byte*) print_screen#31 (byte*) print_screen#35 (byte*) print_screen#28 (byte*) print_screen#42 (byte*) print_screen#40 (byte*) print_screen#36 (byte*) print_screen#30 -Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#52 (byte*) print_line_cursor#58 (byte*) print_line_cursor#49 (byte*) print_line_cursor#65 (byte*) print_line_cursor#63 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#58 (byte*) print_char_cursor#51 (byte*) print_char_cursor#65 (byte*) print_char_cursor#63 (byte*) print_char_cursor#59 (byte*) print_char_cursor#53 -Alias (byte) form_control::return#0 = (byte) form_control::return#6 -Alias (signed byte) form_cursor_count#12 = (signed byte) form_cursor_count#2 (signed byte) form_cursor_count#29 (signed byte) form_cursor_count#48 (signed byte) form_cursor_count#45 (signed byte) form_cursor_count#40 (signed byte) form_cursor_count#31 -Alias (byte) keyboard_events_size#103 = (byte) keyboard_events_size#12 (byte) keyboard_events_size#31 (byte) keyboard_events_size#61 (byte) keyboard_events_size#94 (byte) keyboard_events_size#84 (byte) keyboard_events_size#63 -Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#27 (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#90 (byte) keyboard_modifiers#85 (byte) keyboard_modifiers#80 (byte) keyboard_modifiers#62 -Alias (byte) form_field_idx#13 = (byte) form_field_idx#2 (byte) form_field_idx#37 (byte) form_field_idx#53 (byte) form_field_idx#50 (byte) form_field_idx#46 (byte) form_field_idx#39 -Alias (byte*) print_screen#16 = (byte*) print_screen#7 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#34 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#35 -Alias (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#3 -Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#32 -Alias (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#28 -Alias (byte) form_field_idx#14 = (byte) form_field_idx#3 -Alias (byte) form_mode::preset_current#1 = (byte) form_mode::preset_current#8 (byte) form_mode::preset_current#7 -Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#76 (byte) keyboard_events_size#53 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#75 (byte) keyboard_modifiers#52 -Alias (byte*) form_set_screen::line#0 = (byte*) form_set_screen::screen#1 -Alias (byte*) form_set_screen::line#1 = (byte*~) form_set_screen::$2 -Alias (byte*) form_field_ptr::line#0 = (byte*~) form_field_ptr::$0 -Alias (byte*) form_field_ptr::return#0 = (byte*) form_field_ptr::field#0 (byte*~) form_field_ptr::$1 (byte*) form_field_ptr::return#4 (byte*) form_field_ptr::return#1 -Alias (byte) form_render_values::idx#2 = (byte) form_render_values::idx#3 (byte) form_render_values::idx#4 -Alias (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#5 -Alias (byte*) form_render_values::field#0 = (byte*~) form_render_values::$1 -Alias (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#6 -Alias (signed byte) form_cursor_count#14 = (signed byte) form_cursor_count#22 -Alias (byte) keyboard_events_size#104 = (byte) keyboard_events_size#95 (byte) keyboard_events_size#96 -Alias (byte) keyboard_modifiers#86 = (byte) keyboard_modifiers#91 (byte) keyboard_modifiers#87 -Alias (byte) form_field_idx#15 = (byte) form_field_idx#59 (byte) form_field_idx#60 -Alias (byte*) form_control::field#0 = (byte*~) form_control::$0 (byte*) form_control::field#11 -Alias (byte*) form_control::field#1 = (byte*) form_control::field#5 (byte*) form_control::field#2 -Alias (byte) keyboard_events_size#65 = (byte) keyboard_events_size#85 (byte) keyboard_events_size#66 -Alias (byte) keyboard_modifiers#64 = (byte) keyboard_modifiers#81 (byte) keyboard_modifiers#65 -Alias (byte) form_field_idx#54 = (byte) form_field_idx#57 (byte) form_field_idx#55 -Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#53 (signed byte) form_cursor_count#54 -Alias (byte*) form_control::field#10 = (byte*) form_control::field#12 (byte*) form_control::field#14 (byte*) form_control::field#6 (byte*) form_control::field#15 (byte*) form_control::field#3 (byte*) form_control::field#13 (byte*) form_control::field#9 (byte*) form_control::field#7 (byte*) form_control::field#8 -Alias (byte) form_field_idx#16 = (byte) form_field_idx#47 (byte) form_field_idx#51 (byte) form_field_idx#41 (byte) form_field_idx#42 (byte) form_field_idx#29 (byte) form_field_idx#17 (byte) form_field_idx#43 (byte) form_field_idx#33 (byte) form_field_idx#19 (byte) form_field_idx#20 (byte) form_field_idx#21 (byte) form_field_idx#23 (byte) form_field_idx#32 (byte) form_field_idx#30 -Alias (signed byte) form_cursor_count#23 = (signed byte) form_cursor_count#49 (signed byte) form_cursor_count#51 (signed byte) form_cursor_count#46 (signed byte) form_cursor_count#41 (signed byte) form_cursor_count#37 (signed byte) form_cursor_count#42 (signed byte) form_cursor_count#35 (signed byte) form_cursor_count#33 (signed byte) form_cursor_count#34 (signed byte) form_cursor_count#36 (signed byte) form_cursor_count#25 -Alias (byte) keyboard_events_size#14 = (byte) keyboard_events_size#33 -Alias (byte) keyboard_modifiers#14 = (byte) keyboard_modifiers#29 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#30 (byte) keyboard_modifiers#68 (byte) keyboard_modifiers#66 (byte) keyboard_modifiers#67 (byte) keyboard_modifiers#69 (byte) keyboard_modifiers#74 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#72 (byte) keyboard_modifiers#70 (byte) keyboard_modifiers#71 (byte) keyboard_modifiers#73 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#47 -Alias (byte) keyboard_event_get::return#4 = (byte) keyboard_event_get::return#7 -Alias (byte) keyboard_events_size#15 = (byte) keyboard_events_size#34 (byte) keyboard_events_size#87 (byte) keyboard_events_size#86 (byte) keyboard_events_size#69 (byte) keyboard_events_size#67 (byte) keyboard_events_size#68 (byte) keyboard_events_size#70 (byte) keyboard_events_size#75 (byte) keyboard_events_size#88 (byte) keyboard_events_size#73 (byte) keyboard_events_size#71 (byte) keyboard_events_size#72 (byte) keyboard_events_size#74 (byte) keyboard_events_size#52 (byte) keyboard_events_size#49 -Alias (byte) form_control::key_event#0 = (byte~) form_control::$5 (byte) form_control::key_event#1 (byte) form_control::key_event#2 -Alias (byte) form_field_idx#7 = (byte~) form_control::$19 -Alias (byte) form_control::return#2 = (byte) form_control::return#7 -Alias (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#8 -Alias (byte) keyboard_events_size#16 = (byte) keyboard_events_size#35 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#31 -Alias (byte) form_field_idx#18 = (byte) form_field_idx#9 -Alias (signed byte) form_cursor_count#26 = (signed byte) form_cursor_count#4 -Alias (byte) form_field_idx#34 = (byte) form_field_idx#4 -Alias (byte*) print_screen#17 = (byte*) print_screen#8 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#35 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#36 -Alias (signed byte) form_cursor_count#17 = (signed byte) form_cursor_count#9 -Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#36 -Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#33 -Alias (byte) form_field_idx#10 = (byte) form_field_idx#24 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_screen#0 = print_line_cursor#0 print_char_cursor#0 print_screen#37 print_line_cursor#60 print_char_cursor#60 print_screen#32 print_line_cursor#53 print_char_cursor#55 print_screen#24 print_line_cursor#44 print_char_cursor#46 +Alias print_str_lines::ch#0 = print_str_lines::ch#2 +Alias print_char_cursor#20 = print_char_cursor#37 +Alias print_str_lines::str#0 = print_str_lines::str#8 +Alias print_line_cursor#54 = print_line_cursor#55 +Alias print_line_cursor#36 = print_line_cursor#46 +Alias print_char_cursor#38 = print_char_cursor#48 +Alias print_str_lines::str#6 = print_str_lines::str#9 print_str_lines::str#7 +Alias print_line_cursor#1 = print_line_cursor#19 +Alias print_char_cursor#2 = print_char_cursor#21 +Alias print_char_cursor#22 = print_char_cursor#39 print_char_cursor#3 +Alias print_line_cursor#2 = print_line_cursor#20 print_line_cursor#37 +Alias print_str_at::str#2 = print_str_at::str#3 +Alias print_str_at::at#2 = print_str_at::at#3 +Alias print_line_cursor#22 = print_line_cursor#3 print_ln::$0 print_char_cursor#4 print_line_cursor#23 print_char_cursor#24 print_line_cursor#4 print_char_cursor#5 +Alias print_line_cursor#24 = print_screen#10 print_screen#9 print_line_cursor#5 print_char_cursor#6 print_char_cursor#25 print_line_cursor#6 print_char_cursor#7 +Alias print_screen#1 = print_line_cursor#7 print_char_cursor#8 print_screen#11 print_line_cursor#25 print_char_cursor#26 print_screen#2 print_line_cursor#8 print_char_cursor#9 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_event_scan::row#2 = keyboard_event_scan::row#3 keyboard_event_scan::row#9 keyboard_event_scan::row#7 +Alias keyboard_event_scan::keycode#11 = keyboard_event_scan::keycode#7 keyboard_event_scan::keycode#12 keyboard_event_scan::keycode#3 +Alias keyboard_events_size#106 = keyboard_events_size#77 keyboard_events_size#89 keyboard_events_size#55 +Alias keyboard_event_scan::row_scan#0 = keyboard_event_scan::$12 keyboard_event_scan::row_scan#5 +Alias keyboard_event_scan::keycode#1 = keyboard_event_scan::$14 +Alias keyboard_events_size#18 = keyboard_events_size#37 keyboard_events_size#38 keyboard_events_size#19 keyboard_events_size#20 +Alias keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#9 keyboard_event_scan::keycode#8 keyboard_event_scan::keycode#5 keyboard_event_scan::keycode#6 +Alias keyboard_event_scan::col#2 = keyboard_event_scan::col#6 keyboard_event_scan::col#4 keyboard_event_scan::col#5 keyboard_event_scan::col#7 +Alias keyboard_event_scan::row_scan#1 = keyboard_event_scan::row_scan#6 keyboard_event_scan::row_scan#2 keyboard_event_scan::row_scan#7 keyboard_event_scan::row_scan#8 +Alias keyboard_event_scan::row#10 = keyboard_event_scan::row#11 keyboard_event_scan::row#5 keyboard_event_scan::row#13 keyboard_event_scan::row#12 +Alias keyboard_event_scan::event_type#0 = keyboard_event_scan::$21 +Alias keyboard_event_scan::row_scan#3 = keyboard_event_scan::row_scan#4 +Alias keyboard_event_scan::row#6 = keyboard_event_scan::row#8 +Alias keyboard_event_scan::keycode#14 = keyboard_event_scan::keycode#2 +Alias keyboard_events_size#105 = keyboard_events_size#54 +Alias keyboard_events_size#110 = keyboard_events_size#114 keyboard_events_size#98 keyboard_events_size#111 +Alias keyboard_event_pressed::return#0 = keyboard_event_pressed::return#6 +Alias keyboard_modifiers#1 = keyboard_modifiers#34 keyboard_modifiers#17 +Alias keyboard_event_pressed::return#1 = keyboard_event_pressed::return#7 +Alias keyboard_modifiers#18 = keyboard_modifiers#35 keyboard_modifiers#53 +Alias keyboard_events_size#100 = keyboard_events_size#99 keyboard_events_size#107 +Alias keyboard_modifiers#2 = keyboard_event_scan::$26 +Alias keyboard_event_pressed::return#2 = keyboard_event_pressed::return#8 +Alias keyboard_modifiers#19 = keyboard_modifiers#36 keyboard_modifiers#54 +Alias keyboard_events_size#78 = keyboard_events_size#90 keyboard_events_size#79 +Alias keyboard_modifiers#3 = keyboard_event_scan::$27 +Alias keyboard_event_pressed::return#3 = keyboard_event_pressed::return#9 +Alias keyboard_modifiers#20 = keyboard_modifiers#37 keyboard_modifiers#55 +Alias keyboard_events_size#39 = keyboard_events_size#56 keyboard_events_size#40 +Alias keyboard_modifiers#4 = keyboard_event_scan::$28 +Alias keyboard_modifiers#5 = keyboard_event_scan::$29 +Alias keyboard_events_size#21 = keyboard_events_size#3 +Alias keyboard_modifiers#21 = keyboard_modifiers#6 +Alias keyboard_event_pressed::return#10 = keyboard_event_pressed::return#4 keyboard_event_pressed::$2 keyboard_event_pressed::return#5 +Alias keyboard_events_size#22 = keyboard_events_size#41 keyboard_events_size#23 +Alias keyboard_event_get::return#2 = keyboard_event_get::return#5 +Alias keyboard_events_size#24 = keyboard_events_size#5 +Alias bitmap_init::bits#1 = bitmap_init::$2 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_init::yoffs#1 = bitmap_init::$13 +Alias bitmap_clear::bitmap#0 = bitmap_clear::$0 +Alias bitmap_clear::y#2 = bitmap_clear::y#3 +Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 +Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 +Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 +Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 +Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 +Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 +Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 +Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 +Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 +Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 +Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 +Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 +Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 +Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 +Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 +Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 +Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 +Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 +Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 +Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 +Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 +Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 +Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 +Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 +Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 +Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 +Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 +Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 +Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 +Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 +Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 +Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 +Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 +Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 +Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 +Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 +Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 +Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 +Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 +Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 +Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 +Alias print_screen#26 = print_screen#33 print_screen#38 +Alias print_line_cursor#48 = print_line_cursor#56 print_line_cursor#61 +Alias print_char_cursor#50 = print_char_cursor#56 print_char_cursor#61 +Alias form_cursor_count#28 = form_cursor_count#38 form_cursor_count#43 +Alias keyboard_events_size#57 = keyboard_events_size#80 keyboard_events_size#91 +Alias keyboard_modifiers#56 = keyboard_modifiers#76 keyboard_modifiers#82 +Alias form_field_idx#36 = form_field_idx#44 form_field_idx#48 +Alias print_screen#13 = print_screen#18 print_screen#19 print_screen#4 +Alias print_line_cursor#10 = print_line_cursor#39 print_line_cursor#40 print_line_cursor#27 +Alias print_char_cursor#11 = print_char_cursor#41 print_char_cursor#42 print_char_cursor#28 +Alias form_cursor_count#1 = form_cursor_count#18 form_cursor_count#19 form_cursor_count#11 +Alias keyboard_events_size#27 = keyboard_events_size#42 keyboard_events_size#43 keyboard_events_size#8 +Alias keyboard_modifiers#24 = keyboard_modifiers#38 keyboard_modifiers#39 keyboard_modifiers#9 +Alias form_field_idx#1 = form_field_idx#25 form_field_idx#26 form_field_idx#12 +Alias print_screen#12 = print_screen#3 print_screen#25 +Alias print_line_cursor#26 = print_line_cursor#9 print_line_cursor#47 +Alias print_char_cursor#10 = print_char_cursor#27 print_char_cursor#49 +Alias form_cursor_count#0 = form_cursor_count#10 form_cursor_count#27 +Alias keyboard_events_size#25 = keyboard_events_size#6 +Alias keyboard_modifiers#22 = keyboard_modifiers#7 +Alias form_field_idx#0 = form_field_idx#11 form_field_idx#35 +Alias keyboard_events_size#26 = keyboard_events_size#7 +Alias keyboard_modifiers#23 = keyboard_modifiers#8 +Alias get_plane::idx#10 = get_plane::idx#3 get_plane::idx#2 get_plane::idx#4 get_plane::idx#5 get_plane::idx#6 get_plane::idx#7 get_plane::idx#8 get_plane::idx#9 get_plane::idx#11 get_plane::idx#12 get_plane::idx#13 get_plane::idx#14 get_plane::idx#15 +Alias get_plane::return#14 = get_plane::return#18 +Alias get_vic_screen::idx#2 = get_vic_screen::idx#3 get_vic_screen::idx#4 get_vic_screen::idx#5 get_vic_screen::idx#6 +Alias get_vic_screen::return#5 = get_vic_screen::return#9 +Alias get_vic_charset::idx#1 = get_vic_charset::idx#2 +Alias get_vic_charset::return#2 = get_vic_charset::return#5 +Alias apply_preset::idx#1 = apply_preset::idx#2 apply_preset::idx#3 apply_preset::idx#4 apply_preset::idx#5 apply_preset::idx#6 apply_preset::idx#7 apply_preset::idx#8 apply_preset::idx#9 apply_preset::idx#10 apply_preset::idx#11 +Alias apply_preset::preset#13 = apply_preset::preset#14 +Alias apply_preset::i#2 = apply_preset::i#3 +Alias render_preset_name::idx#10 = render_preset_name::idx#3 render_preset_name::idx#2 render_preset_name::idx#4 render_preset_name::idx#5 render_preset_name::idx#6 render_preset_name::idx#7 render_preset_name::idx#8 render_preset_name::idx#9 render_preset_name::idx#11 render_preset_name::idx#12 +Alias gfx_mode::dtv_control#0 = gfx_mode::dtv_control#7 +Alias keyboard_events_size#143 = keyboard_events_size#144 +Alias keyboard_modifiers#124 = keyboard_modifiers#125 +Alias gfx_mode::dtv_control#1 = gfx_mode::$67 +Alias gfx_mode::dtv_control#14 = gfx_mode::dtv_control#8 +Alias keyboard_events_size#141 = keyboard_events_size#142 +Alias keyboard_modifiers#122 = keyboard_modifiers#123 +Alias gfx_mode::dtv_control#2 = gfx_mode::$68 +Alias gfx_mode::dtv_control#15 = gfx_mode::dtv_control#9 +Alias keyboard_events_size#139 = keyboard_events_size#140 +Alias keyboard_modifiers#120 = keyboard_modifiers#121 +Alias gfx_mode::dtv_control#3 = gfx_mode::$69 +Alias gfx_mode::dtv_control#10 = gfx_mode::dtv_control#16 +Alias keyboard_events_size#137 = keyboard_events_size#138 +Alias keyboard_modifiers#118 = keyboard_modifiers#119 +Alias gfx_mode::dtv_control#4 = gfx_mode::$70 +Alias gfx_mode::dtv_control#11 = gfx_mode::dtv_control#17 +Alias keyboard_events_size#135 = keyboard_events_size#136 +Alias keyboard_modifiers#116 = keyboard_modifiers#117 +Alias gfx_mode::dtv_control#5 = gfx_mode::$71 +Alias gfx_mode::dtv_control#13 = gfx_mode::dtv_control#18 +Alias keyboard_events_size#133 = keyboard_events_size#134 +Alias keyboard_modifiers#114 = keyboard_modifiers#115 +Alias gfx_mode::dtv_control#6 = gfx_mode::$72 +Alias gfx_mode::vic_control#0 = gfx_mode::vic_control#3 +Alias keyboard_events_size#131 = keyboard_events_size#132 +Alias keyboard_modifiers#112 = keyboard_modifiers#113 +Alias gfx_mode::vic_control#1 = gfx_mode::$73 +Alias gfx_mode::vic_control#5 = gfx_mode::vic_control#6 +Alias keyboard_events_size#129 = keyboard_events_size#130 +Alias keyboard_modifiers#110 = keyboard_modifiers#111 +Alias gfx_mode::vic_control#2 = gfx_mode::$74 +Alias gfx_mode::plane_a_offs#0 = gfx_mode::$19 gfx_mode::plane_a_offs#1 +Alias get_plane::return#16 = get_plane::return#19 +Alias keyboard_events_size#115 = keyboard_events_size#123 keyboard_events_size#125 keyboard_events_size#121 keyboard_events_size#119 keyboard_events_size#117 +Alias keyboard_modifiers#100 = keyboard_modifiers#104 keyboard_modifiers#106 keyboard_modifiers#102 keyboard_modifiers#98 keyboard_modifiers#96 +Alias gfx_mode::plane_a#0 = gfx_mode::$21 +Alias gfx_mode::plane_b_offs#0 = gfx_mode::$33 gfx_mode::plane_b_offs#1 +Alias get_plane::return#17 = get_plane::return#20 +Alias gfx_mode::plane_b#0 = gfx_mode::$35 +Alias get_vic_screen::return#10 = get_vic_screen::return#7 +Alias get_vic_charset::return#4 = get_vic_charset::return#6 +Alias get_vic_screen::return#11 = get_vic_screen::return#8 +Alias gfx_mode::vic_colors#0 = gfx_mode::$57 +Alias gfx_mode::vic_control2#0 = gfx_mode::vic_control2#3 +Alias keyboard_events_size#127 = keyboard_events_size#128 +Alias keyboard_modifiers#108 = keyboard_modifiers#109 +Alias gfx_mode::vic_control2#1 = gfx_mode::$75 +Alias gfx_mode::cy#2 = gfx_mode::cy#3 +Alias gfx_mode::vic_colors#1 = gfx_mode::vic_colors#4 +Alias gfx_mode::col#1 = gfx_mode::col#4 +Alias keyboard_events_size#101 = keyboard_events_size#108 keyboard_events_size#92 keyboard_events_size#82 keyboard_events_size#81 +Alias keyboard_modifiers#77 = keyboard_modifiers#88 keyboard_modifiers#92 keyboard_modifiers#83 keyboard_modifiers#78 +Alias keyboard_events_size#44 = keyboard_events_size#60 +Alias keyboard_modifiers#40 = keyboard_modifiers#59 +Alias keyboard_events_size#28 = keyboard_events_size#9 +Alias keyboard_modifiers#10 = keyboard_modifiers#25 keyboard_modifiers#42 +Alias keyboard_event_get::return#3 = keyboard_event_get::return#6 +Alias keyboard_events_size#10 = keyboard_events_size#29 +Alias gfx_mode::keyboard_event#0 = gfx_mode::$82 +Alias keyboard_events_size#11 = keyboard_events_size#30 +Alias keyboard_modifiers#11 = keyboard_modifiers#26 +Alias gfx_init_charset::c#2 = gfx_init_charset::c#3 +Alias gfx_init_charset::chargen#1 = gfx_init_charset::chargen#4 +Alias gfx_init_charset::charset#1 = gfx_init_charset::charset#4 +Alias gfx_init_screen0::cy#2 = gfx_init_screen0::cy#3 +Alias gfx_init_screen0::ch#1 = gfx_init_screen0::ch#4 +Alias gfx_init_screen1::cy#2 = gfx_init_screen1::cy#3 +Alias gfx_init_screen1::ch#1 = gfx_init_screen1::ch#4 +Alias gfx_init_screen2::col#0 = gfx_init_screen2::$1 +Alias gfx_init_screen2::col2#0 = gfx_init_screen2::$2 +Alias gfx_init_screen2::cy#2 = gfx_init_screen2::cy#3 +Alias gfx_init_screen2::ch#1 = gfx_init_screen2::ch#4 +Alias gfx_init_screen3::cy#2 = gfx_init_screen3::cy#3 +Alias gfx_init_screen3::ch#1 = gfx_init_screen3::ch#4 +Alias gfx_init_screen4::cy#2 = gfx_init_screen4::cy#3 +Alias gfx_init_screen4::ch#1 = gfx_init_screen4::ch#4 +Alias gfx_init_vic_bitmap::l#2 = gfx_init_vic_bitmap::l#3 gfx_init_vic_bitmap::l#4 +Alias gfx_init_plane_8bppchunky::gfxbCpuBank#0 = gfx_init_plane_8bppchunky::gfxbCpuBank#3 +Alias gfx_init_plane_8bppchunky::c#0 = gfx_init_plane_8bppchunky::$6 +Alias gfx_init_plane_8bppchunky::gfxbCpuBank#4 = gfx_init_plane_8bppchunky::gfxbCpuBank#6 gfx_init_plane_8bppchunky::gfxbCpuBank#5 +Alias gfx_init_plane_8bppchunky::x#3 = gfx_init_plane_8bppchunky::x#5 gfx_init_plane_8bppchunky::x#4 +Alias gfx_init_plane_8bppchunky::y#4 = gfx_init_plane_8bppchunky::y#7 gfx_init_plane_8bppchunky::y#5 +Alias gfx_init_plane_8bppchunky::y#2 = gfx_init_plane_8bppchunky::y#3 +Alias gfx_init_plane_8bppchunky::gfxb#1 = gfx_init_plane_8bppchunky::gfxb#6 +Alias gfx_init_plane_8bppchunky::gfxbCpuBank#8 = gfx_init_plane_8bppchunky::gfxbCpuBank#9 +Alias gfx_init_plane_horisontal::gfxbCpuBank#0 = gfx_init_plane_horisontal::gfxbCpuBank#2 +Alias gfx_init_plane_horisontal::gfxa#3 = gfx_init_plane_horisontal::gfxa#5 gfx_init_plane_horisontal::gfxa#4 +Alias gfx_init_plane_horisontal::ax#3 = gfx_init_plane_horisontal::ax#5 gfx_init_plane_horisontal::ax#4 +Alias gfx_init_plane_horisontal::ay#2 = gfx_init_plane_horisontal::ay#6 gfx_init_plane_horisontal::ay#7 +Alias gfx_init_plane_horisontal::ay#3 = gfx_init_plane_horisontal::ay#5 +Alias gfx_init_plane_horisontal::gfxa#7 = gfx_init_plane_horisontal::gfxa#8 +Alias gfx_init_plane_horisontal2::gfxbCpuBank#0 = gfx_init_plane_horisontal2::gfxbCpuBank#2 +Alias gfx_init_plane_horisontal2::row#0 = gfx_init_plane_horisontal2::$3 +Alias gfx_init_plane_horisontal2::ay#2 = gfx_init_plane_horisontal2::ay#3 +Alias gfx_init_plane_horisontal2::gfxa#1 = gfx_init_plane_horisontal2::gfxa#4 +Alias gfx_init_plane_vertical::gfxbCpuBank#0 = gfx_init_plane_vertical::gfxbCpuBank#2 +Alias gfx_init_plane_vertical::by#2 = gfx_init_plane_vertical::by#3 +Alias gfx_init_plane_vertical::gfxb#1 = gfx_init_plane_vertical::gfxb#4 +Alias gfx_init_plane_charset8::gfxbCpuBank#0 = gfx_init_plane_charset8::gfxbCpuBank#2 +Alias gfx_init_plane_charset8::bits#1 = gfx_init_plane_charset8::$5 +Alias gfx_init_plane_charset8::col#3 = gfx_init_plane_charset8::col#4 gfx_init_plane_charset8::c#1 +Alias gfx_init_plane_charset8::gfxa#3 = gfx_init_plane_charset8::gfxa#4 +Alias gfx_init_plane_charset8::bits#2 = gfx_init_plane_charset8::bits#4 +Alias gfx_init_plane_charset8::cp#3 = gfx_init_plane_charset8::cp#4 +Alias gfx_init_plane_charset8::cr#4 = gfx_init_plane_charset8::cr#5 +Alias gfx_init_plane_charset8::chargen#7 = gfx_init_plane_charset8::chargen#8 +Alias gfx_init_plane_charset8::ch#5 = gfx_init_plane_charset8::ch#6 +Alias gfx_init_plane_charset8::cr#2 = gfx_init_plane_charset8::cr#3 +Alias gfx_init_plane_charset8::chargen#4 = gfx_init_plane_charset8::chargen#6 gfx_init_plane_charset8::chargen#5 +Alias gfx_init_plane_charset8::ch#2 = gfx_init_plane_charset8::ch#3 gfx_init_plane_charset8::ch#4 +Alias gfx_init_plane_charset8::gfxa#1 = gfx_init_plane_charset8::gfxa#7 gfx_init_plane_charset8::gfxa#8 +Alias gfx_init_plane_charset8::col#1 = gfx_init_plane_charset8::col#7 gfx_init_plane_charset8::col#8 +Alias gfx_init_plane_fill::gfxbCpuBank#0 = gfx_init_plane_fill::$2 gfx_init_plane_fill::gfxbCpuBank#2 +Alias gfx_init_plane_fill::plane_addr#3 = gfx_init_plane_fill::plane_addr#4 +Alias gfx_init_plane_fill::fill#6 = gfx_init_plane_fill::fill#7 +Alias gfx_init_plane_fill::by#2 = gfx_init_plane_fill::by#3 +Alias gfx_init_plane_fill::fill#3 = gfx_init_plane_fill::fill#5 +Alias gfx_init_plane_fill::gfxb#1 = gfx_init_plane_fill::gfxb#4 +Alias form_cursor_count#44 = form_cursor_count#59 form_cursor_count#60 form_cursor_count#58 form_cursor_count#57 form_cursor_count#56 form_cursor_count#55 form_cursor_count#52 form_cursor_count#50 form_cursor_count#47 +Alias keyboard_events_size#102 = keyboard_events_size#124 keyboard_events_size#126 keyboard_events_size#122 keyboard_events_size#120 keyboard_events_size#118 keyboard_events_size#116 keyboard_events_size#113 keyboard_events_size#109 keyboard_events_size#93 +Alias keyboard_modifiers#101 = keyboard_modifiers#105 keyboard_modifiers#107 keyboard_modifiers#103 keyboard_modifiers#99 keyboard_modifiers#97 keyboard_modifiers#95 keyboard_modifiers#93 keyboard_modifiers#89 keyboard_modifiers#84 +Alias form_field_idx#49 = form_field_idx#65 form_field_idx#66 form_field_idx#64 form_field_idx#63 form_field_idx#62 form_field_idx#61 form_field_idx#58 form_field_idx#56 form_field_idx#52 +Alias print_screen#14 = print_screen#5 print_screen#27 print_screen#21 +Alias print_line_cursor#11 = print_line_cursor#28 +Alias print_char_cursor#12 = print_char_cursor#29 +Alias print_line_cursor#12 = print_line_cursor#29 +Alias print_char_cursor#13 = print_char_cursor#30 +Alias print_char_cursor#14 = print_char_cursor#31 +Alias print_line_cursor#13 = print_line_cursor#30 +Alias print_screen#15 = print_screen#6 print_screen#45 print_screen#44 print_screen#43 print_screen#41 print_screen#39 +Alias print_line_cursor#14 = print_line_cursor#31 +Alias print_char_cursor#15 = print_char_cursor#32 +Alias print_line_cursor#15 = print_line_cursor#32 +Alias print_char_cursor#16 = print_char_cursor#33 +Alias print_char_cursor#17 = print_char_cursor#34 print_char_cursor#66 print_char_cursor#64 print_char_cursor#62 +Alias print_line_cursor#16 = print_line_cursor#33 print_line_cursor#66 print_line_cursor#64 print_line_cursor#62 +Alias print_screen#29 = print_screen#34 +Alias print_line_cursor#50 = print_line_cursor#57 +Alias print_char_cursor#52 = print_char_cursor#57 +Alias form_cursor_count#30 = form_cursor_count#39 +Alias keyboard_events_size#62 = keyboard_events_size#83 +Alias keyboard_modifiers#61 = keyboard_modifiers#79 +Alias form_field_idx#38 = form_field_idx#45 +Alias form_cursor_count#20 = form_cursor_count#32 +Alias keyboard_events_size#46 = keyboard_events_size#64 +Alias keyboard_modifiers#43 = keyboard_modifiers#63 +Alias form_field_idx#27 = form_field_idx#40 +Alias form_mode::preset_current#2 = form_mode::preset_current#4 form_mode::preset_current#5 form_mode::preset_current#3 +Alias print_screen#23 = print_screen#31 print_screen#35 print_screen#28 print_screen#42 print_screen#40 print_screen#36 print_screen#30 +Alias print_line_cursor#43 = print_line_cursor#52 print_line_cursor#58 print_line_cursor#49 print_line_cursor#65 print_line_cursor#63 print_line_cursor#59 print_line_cursor#51 +Alias print_char_cursor#45 = print_char_cursor#54 print_char_cursor#58 print_char_cursor#51 print_char_cursor#65 print_char_cursor#63 print_char_cursor#59 print_char_cursor#53 +Alias form_control::return#0 = form_control::return#6 +Alias form_cursor_count#12 = form_cursor_count#2 form_cursor_count#29 form_cursor_count#48 form_cursor_count#45 form_cursor_count#40 form_cursor_count#31 +Alias keyboard_events_size#103 = keyboard_events_size#12 keyboard_events_size#31 keyboard_events_size#61 keyboard_events_size#94 keyboard_events_size#84 keyboard_events_size#63 +Alias keyboard_modifiers#12 = keyboard_modifiers#27 keyboard_modifiers#60 keyboard_modifiers#90 keyboard_modifiers#85 keyboard_modifiers#80 keyboard_modifiers#62 +Alias form_field_idx#13 = form_field_idx#2 form_field_idx#37 form_field_idx#53 form_field_idx#50 form_field_idx#46 form_field_idx#39 +Alias print_screen#16 = print_screen#7 +Alias print_line_cursor#17 = print_line_cursor#34 +Alias print_char_cursor#18 = print_char_cursor#35 +Alias form_cursor_count#13 = form_cursor_count#3 +Alias keyboard_events_size#13 = keyboard_events_size#32 +Alias keyboard_modifiers#13 = keyboard_modifiers#28 +Alias form_field_idx#14 = form_field_idx#3 +Alias form_mode::preset_current#1 = form_mode::preset_current#8 form_mode::preset_current#7 +Alias keyboard_events_size#0 = keyboard_events_size#76 keyboard_events_size#53 +Alias keyboard_modifiers#0 = keyboard_modifiers#75 keyboard_modifiers#52 +Alias form_set_screen::line#0 = form_set_screen::screen#1 +Alias form_set_screen::line#1 = form_set_screen::$2 +Alias form_field_ptr::line#0 = form_field_ptr::$0 +Alias form_field_ptr::return#0 = form_field_ptr::field#0 form_field_ptr::$1 form_field_ptr::return#4 form_field_ptr::return#1 +Alias form_render_values::idx#2 = form_render_values::idx#3 form_render_values::idx#4 +Alias form_field_ptr::return#2 = form_field_ptr::return#5 +Alias form_render_values::field#0 = form_render_values::$1 +Alias form_field_ptr::return#3 = form_field_ptr::return#6 +Alias form_cursor_count#14 = form_cursor_count#22 +Alias keyboard_events_size#104 = keyboard_events_size#95 keyboard_events_size#96 +Alias keyboard_modifiers#86 = keyboard_modifiers#91 keyboard_modifiers#87 +Alias form_field_idx#15 = form_field_idx#59 form_field_idx#60 +Alias form_control::field#0 = form_control::$0 form_control::field#11 +Alias form_control::field#1 = form_control::field#5 form_control::field#2 +Alias keyboard_events_size#65 = keyboard_events_size#85 keyboard_events_size#66 +Alias keyboard_modifiers#64 = keyboard_modifiers#81 keyboard_modifiers#65 +Alias form_field_idx#54 = form_field_idx#57 form_field_idx#55 +Alias form_cursor_count#15 = form_cursor_count#53 form_cursor_count#54 +Alias form_control::field#10 = form_control::field#12 form_control::field#14 form_control::field#6 form_control::field#15 form_control::field#3 form_control::field#13 form_control::field#9 form_control::field#7 form_control::field#8 +Alias form_field_idx#16 = form_field_idx#47 form_field_idx#51 form_field_idx#41 form_field_idx#42 form_field_idx#29 form_field_idx#17 form_field_idx#43 form_field_idx#33 form_field_idx#19 form_field_idx#20 form_field_idx#21 form_field_idx#23 form_field_idx#32 form_field_idx#30 +Alias form_cursor_count#23 = form_cursor_count#49 form_cursor_count#51 form_cursor_count#46 form_cursor_count#41 form_cursor_count#37 form_cursor_count#42 form_cursor_count#35 form_cursor_count#33 form_cursor_count#34 form_cursor_count#36 form_cursor_count#25 +Alias keyboard_events_size#14 = keyboard_events_size#33 +Alias keyboard_modifiers#14 = keyboard_modifiers#29 keyboard_modifiers#46 keyboard_modifiers#51 keyboard_modifiers#30 keyboard_modifiers#68 keyboard_modifiers#66 keyboard_modifiers#67 keyboard_modifiers#69 keyboard_modifiers#74 keyboard_modifiers#32 keyboard_modifiers#72 keyboard_modifiers#70 keyboard_modifiers#71 keyboard_modifiers#73 keyboard_modifiers#50 keyboard_modifiers#47 +Alias keyboard_event_get::return#4 = keyboard_event_get::return#7 +Alias keyboard_events_size#15 = keyboard_events_size#34 keyboard_events_size#87 keyboard_events_size#86 keyboard_events_size#69 keyboard_events_size#67 keyboard_events_size#68 keyboard_events_size#70 keyboard_events_size#75 keyboard_events_size#88 keyboard_events_size#73 keyboard_events_size#71 keyboard_events_size#72 keyboard_events_size#74 keyboard_events_size#52 keyboard_events_size#49 +Alias form_control::key_event#0 = form_control::$5 form_control::key_event#1 form_control::key_event#2 +Alias form_field_idx#7 = form_control::$19 +Alias form_control::return#2 = form_control::return#7 +Alias form_cursor_count#16 = form_cursor_count#8 +Alias keyboard_events_size#16 = keyboard_events_size#35 +Alias keyboard_modifiers#15 = keyboard_modifiers#31 +Alias form_field_idx#18 = form_field_idx#9 +Alias form_cursor_count#26 = form_cursor_count#4 +Alias form_field_idx#34 = form_field_idx#4 +Alias print_screen#17 = print_screen#8 +Alias print_line_cursor#18 = print_line_cursor#35 +Alias print_char_cursor#19 = print_char_cursor#36 +Alias form_cursor_count#17 = form_cursor_count#9 +Alias keyboard_events_size#17 = keyboard_events_size#36 +Alias keyboard_modifiers#16 = keyboard_modifiers#33 +Alias form_field_idx#10 = form_field_idx#24 Successful SSA optimization Pass2AliasElimination -Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#1 -Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#6 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#54 -Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#4 -Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 -Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 -Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#110 (byte) keyboard_events_size#78 (byte) keyboard_events_size#39 (byte) keyboard_events_size#21 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte) bitmap_line_xdyi::x1#2 = (byte) bitmap_line_xdyi::x1#3 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#5 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#6 -Alias (byte) bitmap_line_xdyd::x1#2 = (byte) bitmap_line_xdyd::x1#3 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#5 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#6 -Alias (byte) bitmap_line_ydxi::y1#2 = (byte) bitmap_line_ydxi::y1#3 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#5 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#6 -Alias (byte) bitmap_line_ydxd::y1#2 = (byte) bitmap_line_ydxd::y1#3 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#6 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#5 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#6 -Alias (byte) keyboard_events_size#115 = (byte) keyboard_events_size#141 (byte) keyboard_events_size#143 (byte) keyboard_events_size#139 (byte) keyboard_events_size#137 (byte) keyboard_events_size#135 (byte) keyboard_events_size#133 (byte) keyboard_events_size#131 (byte) keyboard_events_size#129 (byte) keyboard_events_size#127 -Alias (byte) keyboard_modifiers#100 = (byte) keyboard_modifiers#122 (byte) keyboard_modifiers#124 (byte) keyboard_modifiers#120 (byte) keyboard_modifiers#118 (byte) keyboard_modifiers#116 (byte) keyboard_modifiers#114 (byte) keyboard_modifiers#112 (byte) keyboard_modifiers#110 (byte) keyboard_modifiers#108 -Alias (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#3 -Alias (byte) gfx_init_plane_8bppchunky::y#2 = (byte) gfx_init_plane_8bppchunky::y#4 -Alias (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#3 -Alias (byte) gfx_init_plane_horisontal::ay#2 = (byte) gfx_init_plane_horisontal::ay#3 -Alias (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#3 -Alias (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#3 -Alias (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#3 -Alias (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#3 -Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr#4 -Alias (byte*) gfx_init_plane_charset8::chargen#4 = (byte*) gfx_init_plane_charset8::chargen#7 -Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#5 -Alias (byte*) form_control::field#0 = (byte*) form_control::field#1 (byte*) form_control::field#10 (byte*) form_control::field#4 -Alias (byte) keyboard_events_size#104 = (byte) keyboard_events_size#65 (byte) keyboard_events_size#48 -Alias (byte) keyboard_modifiers#45 = (byte) keyboard_modifiers#64 (byte) keyboard_modifiers#86 -Alias (byte) form_field_idx#15 = (byte) form_field_idx#54 (byte) form_field_idx#16 (byte) form_field_idx#22 -Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#23 (signed byte) form_cursor_count#24 -Alias (byte) keyboard_events_size#15 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#51 -Alias (byte) keyboard_modifiers#14 = (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#49 +Alias print_str_lines::ch#0 = print_str_lines::ch#1 +Alias print_str_lines::str#0 = print_str_lines::str#6 +Alias print_line_cursor#36 = print_line_cursor#54 +Alias keyboard_event_scan::keycode#10 = keyboard_event_scan::keycode#4 +Alias keyboard_event_scan::col#2 = keyboard_event_scan::col#3 +Alias keyboard_event_scan::row_scan#1 = keyboard_event_scan::row_scan#3 +Alias keyboard_event_scan::row#10 = keyboard_event_scan::row#6 +Alias keyboard_events_size#100 = keyboard_events_size#110 keyboard_events_size#78 keyboard_events_size#39 keyboard_events_size#21 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 +Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 +Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 +Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 +Alias keyboard_events_size#115 = keyboard_events_size#141 keyboard_events_size#143 keyboard_events_size#139 keyboard_events_size#137 keyboard_events_size#135 keyboard_events_size#133 keyboard_events_size#131 keyboard_events_size#129 keyboard_events_size#127 +Alias keyboard_modifiers#100 = keyboard_modifiers#122 keyboard_modifiers#124 keyboard_modifiers#120 keyboard_modifiers#118 keyboard_modifiers#116 keyboard_modifiers#114 keyboard_modifiers#112 keyboard_modifiers#110 keyboard_modifiers#108 +Alias gfx_init_plane_8bppchunky::x#2 = gfx_init_plane_8bppchunky::x#3 +Alias gfx_init_plane_8bppchunky::y#2 = gfx_init_plane_8bppchunky::y#4 +Alias gfx_init_plane_horisontal::ax#2 = gfx_init_plane_horisontal::ax#3 +Alias gfx_init_plane_horisontal::ay#2 = gfx_init_plane_horisontal::ay#3 +Alias gfx_init_plane_charset8::gfxa#2 = gfx_init_plane_charset8::gfxa#3 +Alias gfx_init_plane_charset8::bits#2 = gfx_init_plane_charset8::bits#3 +Alias gfx_init_plane_charset8::col#2 = gfx_init_plane_charset8::col#3 +Alias gfx_init_plane_charset8::cp#2 = gfx_init_plane_charset8::cp#3 +Alias gfx_init_plane_charset8::cr#2 = gfx_init_plane_charset8::cr#4 +Alias gfx_init_plane_charset8::chargen#4 = gfx_init_plane_charset8::chargen#7 +Alias gfx_init_plane_charset8::ch#2 = gfx_init_plane_charset8::ch#5 +Alias form_control::field#0 = form_control::field#1 form_control::field#10 form_control::field#4 +Alias keyboard_events_size#104 = keyboard_events_size#65 keyboard_events_size#48 +Alias keyboard_modifiers#45 = keyboard_modifiers#64 keyboard_modifiers#86 +Alias form_field_idx#15 = form_field_idx#54 form_field_idx#16 form_field_idx#22 +Alias form_cursor_count#15 = form_cursor_count#23 form_cursor_count#24 +Alias keyboard_events_size#15 = keyboard_events_size#50 keyboard_events_size#51 +Alias keyboard_modifiers#14 = keyboard_modifiers#48 keyboard_modifiers#49 Successful SSA optimization Pass2AliasElimination -Alias (byte) keyboard_events_size#15 = (byte) keyboard_events_size#16 -Alias (byte) keyboard_modifiers#14 = (byte) keyboard_modifiers#15 +Alias keyboard_events_size#15 = keyboard_events_size#16 +Alias keyboard_modifiers#14 = keyboard_modifiers#15 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -8477,9 +8477,9 @@ Finalized unsigned number type (byte) $c8 Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) $19 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$10 = (byte~) bitmap_init::$6 -Alias (word~) gfx_mode::$24 = (word~) gfx_mode::$22 -Alias (word~) gfx_mode::$38 = (word~) gfx_mode::$36 +Alias bitmap_init::$10 = bitmap_init::$6 +Alias gfx_mode::$24 = gfx_mode::$22 +Alias gfx_mode::$38 = gfx_mode::$36 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_events_size#11 (byte) keyboard_events_size#24 Identical Phi Values (signed byte) form_cursor_count#13 (signed byte) form_cursor_count#16 @@ -8863,7 +8863,7 @@ Inlining constant with var siblings (const byte*) render_preset_name::name#12 Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_x+1 + gfx_init_vic_bitmap::$3) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_y+1 + gfx_init_vic_bitmap::$4) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) gfx_init_vic_bitmap::l#2 = (byte~) gfx_init_vic_bitmap::$3 (byte~) gfx_init_vic_bitmap::$4 +Alias gfx_init_vic_bitmap::l#2 = gfx_init_vic_bitmap::$3 gfx_init_vic_bitmap::$4 Successful SSA optimization Pass2AliasElimination Consolidated constant strings into (const byte*) render_preset_name::name#1 Successful SSA optimization Pass2ConstantStringConsolidation @@ -11651,735 +11651,735 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS (void()) apply_preset((byte) apply_preset::idx) (byte) apply_preset::i -(byte) apply_preset::i#1 2002.0 -(byte) apply_preset::i#2 1668.3333333333335 +(byte) apply_preset::i#1 2.000000002E9 +(byte) apply_preset::i#2 1.6666666683333335E9 (byte) apply_preset::idx -(byte) apply_preset::idx#0 11.18181818181818 +(byte) apply_preset::idx#0 1009092.0000000002 (byte*) apply_preset::preset -(byte*) apply_preset::preset#15 200.2 +(byte*) apply_preset::preset#15 2.000000002E8 (void()) bitmap_clear() (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 2.0 -(byte*) bitmap_clear::bitmap#1 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 157.0 -(byte*) bitmap_clear::bitmap#3 24.0 -(byte*) bitmap_clear::bitmap#5 4.0 +(word) bitmap_clear::bitmap#0 10001.0 +(byte*) bitmap_clear::bitmap#1 420000.60000000003 +(byte*) bitmap_clear::bitmap#2 1550002.0 +(byte*) bitmap_clear::bitmap#3 210003.0 +(byte*) bitmap_clear::bitmap#5 20002.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 151.5 -(byte) bitmap_clear::x#2 67.33333333333333 +(byte) bitmap_clear::x#1 1500001.5 +(byte) bitmap_clear::x#2 666667.3333333334 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 16.5 -(byte) bitmap_clear::y#4 3.6666666666666665 +(byte) bitmap_clear::y#1 150001.5 +(byte) bitmap_clear::y#4 33333.666666666664 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 22.0 -(byte~) bitmap_init::$10 5.5 -(byte~) bitmap_init::$7 22.0 -(byte~) bitmap_init::$8 22.0 -(byte~) bitmap_init::$9 22.0 +(byte~) bitmap_init::$0 200002.0 +(byte~) bitmap_init::$10 50000.5 +(byte~) bitmap_init::$7 200002.0 +(byte~) bitmap_init::$8 200002.0 +(byte~) bitmap_init::$9 200002.0 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 6.6000000000000005 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 100001.0 +(byte) bitmap_init::bits#3 60000.600000000006 +(byte) bitmap_init::bits#4 66667.33333333333 (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 7.333333333333334 +(byte) bitmap_init::x#1 150001.5 +(byte) bitmap_init::x#2 66667.33333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 150001.5 +(byte) bitmap_init::y#2 50000.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 200002.0 +(byte*) bitmap_init::yoffs#2 62500.625 +(byte*) bitmap_init::yoffs#4 100001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 1.260869565217391 +(byte) bitmap_line::x0#0 39565.65217391305 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 1.3181818181818181 +(byte) bitmap_line::x1#0 41364.09090909091 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 0.7 -(byte) bitmap_line::xd#2 0.7 +(byte) bitmap_line::xd#1 35000.35 +(byte) bitmap_line::xd#2 35000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 1.6666666666666674 +(byte) bitmap_line::y0#0 57619.66666666667 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 1.7500000000000007 +(byte) bitmap_line::y1#0 60500.650000000016 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 0.8888888888888888 -(byte) bitmap_line::yd#10 0.8888888888888888 -(byte) bitmap_line::yd#11 0.8888888888888888 -(byte) bitmap_line::yd#2 0.8888888888888888 +(byte) bitmap_line::yd#1 44444.88888888889 +(byte) bitmap_line::yd#10 44444.88888888889 +(byte) bitmap_line::yd#11 44444.88888888889 +(byte) bitmap_line::yd#2 44444.88888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 202.0 +(byte~) bitmap_line_xdyd::$6 2.00000002E8 (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 4.0 -(byte) bitmap_line_xdyd::e#1 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 202.0 -(byte) bitmap_line_xdyd::e#3 40.8 -(byte) bitmap_line_xdyd::e#6 101.0 +(byte) bitmap_line_xdyd::e#0 2000002.0 +(byte) bitmap_line_xdyd::e#1 1.3333333466666667E8 +(byte) bitmap_line_xdyd::e#2 2.00000002E8 +(byte) bitmap_line_xdyd::e#3 4.0200000599999994E7 +(byte) bitmap_line_xdyd::e#6 1.00000001E8 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 0.8 -(byte) bitmap_line_xdyd::x#1 0.8 -(byte) bitmap_line_xdyd::x#2 37.875 -(byte) bitmap_line_xdyd::x#3 76.25 -(byte) bitmap_line_xdyd::x#6 3.0 +(byte) bitmap_line_xdyd::x#0 40000.4 +(byte) bitmap_line_xdyd::x#1 40000.4 +(byte) bitmap_line_xdyd::x#2 3.7500000375E7 +(byte) bitmap_line_xdyd::x#3 7.5250001E7 +(byte) bitmap_line_xdyd::x#6 600001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 7.5 +(byte) bitmap_line_xdyd::x1#0 66667.33333333333 +(byte) bitmap_line_xdyd::x1#1 66667.33333333333 +(byte) bitmap_line_xdyd::x1#6 7157143.071428572 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 2.0 -(byte) bitmap_line_xdyd::xd#1 2.0 -(byte) bitmap_line_xdyd::xd#5 14.714285714285715 +(byte) bitmap_line_xdyd::xd#0 100001.0 +(byte) bitmap_line_xdyd::xd#1 100001.0 +(byte) bitmap_line_xdyd::xd#5 1.4300000285714287E7 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 1.0 -(byte) bitmap_line_xdyd::y#1 1.0 -(byte) bitmap_line_xdyd::y#2 101.0 -(byte) bitmap_line_xdyd::y#3 58.00000000000001 -(byte) bitmap_line_xdyd::y#5 3.0 -(byte) bitmap_line_xdyd::y#6 101.0 +(byte) bitmap_line_xdyd::y#0 50000.5 +(byte) bitmap_line_xdyd::y#1 50000.5 +(byte) bitmap_line_xdyd::y#2 1.00000001E8 +(byte) bitmap_line_xdyd::y#3 5.7285715E7 +(byte) bitmap_line_xdyd::y#5 600001.5 +(byte) bitmap_line_xdyd::y#6 1.00000001E8 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 4.0 -(byte) bitmap_line_xdyd::yd#1 4.0 -(byte) bitmap_line_xdyd::yd#2 7.642857142857143 +(byte) bitmap_line_xdyd::yd#0 200002.0 +(byte) bitmap_line_xdyd::yd#1 200002.0 +(byte) bitmap_line_xdyd::yd#2 7228571.714285715 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 202.0 +(byte~) bitmap_line_xdyi::$6 2.00000002E8 (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 4.0 -(byte) bitmap_line_xdyi::e#1 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 202.0 -(byte) bitmap_line_xdyi::e#3 40.8 -(byte) bitmap_line_xdyi::e#6 101.0 +(byte) bitmap_line_xdyi::e#0 2000002.0 +(byte) bitmap_line_xdyi::e#1 1.3333333466666667E8 +(byte) bitmap_line_xdyi::e#2 2.00000002E8 +(byte) bitmap_line_xdyi::e#3 4.0200000599999994E7 +(byte) bitmap_line_xdyi::e#6 1.00000001E8 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 0.8 -(byte) bitmap_line_xdyi::x#1 0.8 -(byte) bitmap_line_xdyi::x#2 37.875 -(byte) bitmap_line_xdyi::x#3 76.25 -(byte) bitmap_line_xdyi::x#6 3.0 +(byte) bitmap_line_xdyi::x#0 40000.4 +(byte) bitmap_line_xdyi::x#1 40000.4 +(byte) bitmap_line_xdyi::x#2 3.7500000375E7 +(byte) bitmap_line_xdyi::x#3 7.5250001E7 +(byte) bitmap_line_xdyi::x#6 600001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 7.5 +(byte) bitmap_line_xdyi::x1#0 66667.33333333333 +(byte) bitmap_line_xdyi::x1#1 66667.33333333333 +(byte) bitmap_line_xdyi::x1#6 7157143.071428572 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 2.0 -(byte) bitmap_line_xdyi::xd#1 2.0 -(byte) bitmap_line_xdyi::xd#5 14.714285714285715 +(byte) bitmap_line_xdyi::xd#0 100001.0 +(byte) bitmap_line_xdyi::xd#1 100001.0 +(byte) bitmap_line_xdyi::xd#5 1.4300000285714287E7 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 1.0 -(byte) bitmap_line_xdyi::y#1 1.0 -(byte) bitmap_line_xdyi::y#2 101.0 -(byte) bitmap_line_xdyi::y#3 58.00000000000001 -(byte) bitmap_line_xdyi::y#5 3.0 -(byte) bitmap_line_xdyi::y#6 101.0 +(byte) bitmap_line_xdyi::y#0 50000.5 +(byte) bitmap_line_xdyi::y#1 50000.5 +(byte) bitmap_line_xdyi::y#2 1.00000001E8 +(byte) bitmap_line_xdyi::y#3 5.7285715E7 +(byte) bitmap_line_xdyi::y#5 600001.5 +(byte) bitmap_line_xdyi::y#6 1.00000001E8 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 4.0 -(byte) bitmap_line_xdyi::yd#1 4.0 -(byte) bitmap_line_xdyi::yd#2 7.642857142857143 +(byte) bitmap_line_xdyi::yd#0 200002.0 +(byte) bitmap_line_xdyi::yd#1 200002.0 +(byte) bitmap_line_xdyi::yd#2 7228571.714285715 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 202.0 +(byte~) bitmap_line_ydxd::$6 2.00000002E8 (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 4.0 -(byte) bitmap_line_ydxd::e#1 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 202.0 -(byte) bitmap_line_ydxd::e#3 40.8 -(byte) bitmap_line_ydxd::e#6 101.0 +(byte) bitmap_line_ydxd::e#0 2000002.0 +(byte) bitmap_line_ydxd::e#1 1.3333333466666667E8 +(byte) bitmap_line_ydxd::e#2 2.00000002E8 +(byte) bitmap_line_ydxd::e#3 4.0200000599999994E7 +(byte) bitmap_line_ydxd::e#6 1.00000001E8 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 1.0 -(byte) bitmap_line_ydxd::x#1 1.0 -(byte) bitmap_line_ydxd::x#2 101.0 -(byte) bitmap_line_ydxd::x#3 58.00000000000001 -(byte) bitmap_line_ydxd::x#5 3.0 -(byte) bitmap_line_ydxd::x#6 101.0 +(byte) bitmap_line_ydxd::x#0 50000.5 +(byte) bitmap_line_ydxd::x#1 50000.5 +(byte) bitmap_line_ydxd::x#2 1.00000001E8 +(byte) bitmap_line_ydxd::x#3 5.7285715E7 +(byte) bitmap_line_ydxd::x#5 600001.5 +(byte) bitmap_line_ydxd::x#6 1.00000001E8 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 4.0 -(byte) bitmap_line_ydxd::xd#1 4.0 -(byte) bitmap_line_ydxd::xd#2 7.642857142857143 +(byte) bitmap_line_ydxd::xd#0 200002.0 +(byte) bitmap_line_ydxd::xd#1 200002.0 +(byte) bitmap_line_ydxd::xd#2 7228571.714285715 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 0.8 -(byte) bitmap_line_ydxd::y#1 0.8 -(byte) bitmap_line_ydxd::y#2 76.25 -(byte) bitmap_line_ydxd::y#3 37.875 -(byte) bitmap_line_ydxd::y#7 3.0 +(byte) bitmap_line_ydxd::y#0 40000.4 +(byte) bitmap_line_ydxd::y#1 40000.4 +(byte) bitmap_line_ydxd::y#2 7.5250001E7 +(byte) bitmap_line_ydxd::y#3 3.7500000375E7 +(byte) bitmap_line_ydxd::y#7 600001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 7.5 +(byte) bitmap_line_ydxd::y1#0 66667.33333333333 +(byte) bitmap_line_ydxd::y1#1 66667.33333333333 +(byte) bitmap_line_ydxd::y1#6 7157143.071428572 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 2.0 -(byte) bitmap_line_ydxd::yd#1 2.0 -(byte) bitmap_line_ydxd::yd#5 14.714285714285715 +(byte) bitmap_line_ydxd::yd#0 100001.0 +(byte) bitmap_line_ydxd::yd#1 100001.0 +(byte) bitmap_line_ydxd::yd#5 1.4300000285714287E7 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 202.0 +(byte~) bitmap_line_ydxi::$6 2.00000002E8 (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 4.0 -(byte) bitmap_line_ydxi::e#1 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 202.0 -(byte) bitmap_line_ydxi::e#3 40.8 -(byte) bitmap_line_ydxi::e#6 101.0 +(byte) bitmap_line_ydxi::e#0 2000002.0 +(byte) bitmap_line_ydxi::e#1 1.3333333466666667E8 +(byte) bitmap_line_ydxi::e#2 2.00000002E8 +(byte) bitmap_line_ydxi::e#3 4.0200000599999994E7 +(byte) bitmap_line_ydxi::e#6 1.00000001E8 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 1.0 -(byte) bitmap_line_ydxi::x#1 1.0 -(byte) bitmap_line_ydxi::x#2 101.0 -(byte) bitmap_line_ydxi::x#3 58.00000000000001 -(byte) bitmap_line_ydxi::x#5 3.0 -(byte) bitmap_line_ydxi::x#6 101.0 +(byte) bitmap_line_ydxi::x#0 50000.5 +(byte) bitmap_line_ydxi::x#1 50000.5 +(byte) bitmap_line_ydxi::x#2 1.00000001E8 +(byte) bitmap_line_ydxi::x#3 5.7285715E7 +(byte) bitmap_line_ydxi::x#5 600001.5 +(byte) bitmap_line_ydxi::x#6 1.00000001E8 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 4.0 -(byte) bitmap_line_ydxi::xd#1 4.0 -(byte) bitmap_line_ydxi::xd#2 7.642857142857143 +(byte) bitmap_line_ydxi::xd#0 200002.0 +(byte) bitmap_line_ydxi::xd#1 200002.0 +(byte) bitmap_line_ydxi::xd#2 7228571.714285715 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 0.8 -(byte) bitmap_line_ydxi::y#1 0.8 -(byte) bitmap_line_ydxi::y#2 37.875 -(byte) bitmap_line_ydxi::y#3 76.25 -(byte) bitmap_line_ydxi::y#6 3.0 +(byte) bitmap_line_ydxi::y#0 40000.4 +(byte) bitmap_line_ydxi::y#1 40000.4 +(byte) bitmap_line_ydxi::y#2 3.7500000375E7 +(byte) bitmap_line_ydxi::y#3 7.5250001E7 +(byte) bitmap_line_ydxi::y#6 600001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 7.5 +(byte) bitmap_line_ydxi::y1#0 66667.33333333333 +(byte) bitmap_line_ydxi::y1#1 66667.33333333333 +(byte) bitmap_line_ydxi::y1#6 7157143.071428572 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 2.0 -(byte) bitmap_line_ydxi::yd#1 2.0 -(byte) bitmap_line_ydxi::yd#5 14.714285714285715 +(byte) bitmap_line_ydxi::yd#0 100001.0 +(byte) bitmap_line_ydxi::yd#1 100001.0 +(byte) bitmap_line_ydxi::yd#5 1.4300000285714287E7 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$1 2.000000002E9 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 +(word) bitmap_plot::plotter#0 5.000000005E8 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 2.0 +(word) bitmap_plot::plotter_x#0 1.000000001E9 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 4.0 +(word) bitmap_plot::plotter_y#0 2.000000002E9 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 101.0 -(byte) bitmap_plot::x#1 101.0 -(byte) bitmap_plot::x#2 101.0 -(byte) bitmap_plot::x#3 101.0 -(byte) bitmap_plot::x#4 102.5 +(byte) bitmap_plot::x#0 1.00000001E8 +(byte) bitmap_plot::x#1 1.00000001E8 +(byte) bitmap_plot::x#2 1.00000001E8 +(byte) bitmap_plot::x#3 1.00000001E8 +(byte) bitmap_plot::x#4 8.5000000175E8 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 202.0 -(byte) bitmap_plot::y#1 202.0 -(byte) bitmap_plot::y#2 202.0 -(byte) bitmap_plot::y#3 202.0 -(byte) bitmap_plot::y#4 204.0 +(byte) bitmap_plot::y#0 2.00000002E8 +(byte) bitmap_plot::y#1 2.00000002E8 +(byte) bitmap_plot::y#2 2.00000002E8 +(byte) bitmap_plot::y#3 2.00000002E8 +(byte) bitmap_plot::y#4 1.200000003E9 (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 4.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 105.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 200002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 1110003.0 (byte()) form_control() -(byte~) form_control::$12 4.0 -(byte~) form_control::$13 4.0 -(byte~) form_control::$14 4.0 -(byte~) form_control::$15 4.0 -(byte~) form_control::$22 4.0 +(byte~) form_control::$12 2.0000002E7 +(byte~) form_control::$13 2.0000002E7 +(byte~) form_control::$14 2.0000002E7 +(byte~) form_control::$15 2.0000002E7 +(byte~) form_control::$22 2.0000002E7 (byte*) form_control::field -(byte*) form_control::field#0 0.5925925925925926 +(byte*) form_control::field#0 2962963.2592592593 (byte) form_control::key_event -(byte) form_control::key_event#0 2.6666666666666665 +(byte) form_control::key_event#0 1.3333334666666666E7 (byte) form_control::return -(byte) form_control::return#0 2002.0 -(byte) form_control::return#2 333.6666666666667 +(byte) form_control::return#0 2000002.0 +(byte) form_control::return#2 333333.6666666667 (signed byte) form_cursor_count -(signed byte) form_cursor_count#1 0.3333333333333333 -(signed byte) form_cursor_count#15 0.4 -(signed byte) form_cursor_count#16 65.82352941176472 -(signed byte) form_cursor_count#21 157.99999999999997 -(signed byte) form_cursor_count#5 2.0 +(signed byte) form_cursor_count#1 28.25641025641026 +(signed byte) form_cursor_count#15 2000000.2 +(signed byte) form_cursor_count#16 1829418.0 +(signed byte) form_cursor_count#21 1585857.714285714 +(signed byte) form_cursor_count#5 1.0000001E7 (byte) form_field_idx -(byte) form_field_idx#1 0.3333333333333333 -(byte) form_field_idx#18 65.94117647058826 -(byte) form_field_idx#28 29.17948717948718 -(byte) form_field_idx#31 6.0 -(byte) form_field_idx#5 2.0 -(byte) form_field_idx#6 2.0 +(byte) form_field_idx#1 28.25641025641026 +(byte) form_field_idx#18 2417653.3529411764 +(byte) form_field_idx#28 4387205.641025641 +(byte) form_field_idx#31 3.0000003E7 +(byte) form_field_idx#5 1.0000001E7 +(byte) form_field_idx#6 1.0000001E7 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) (byte*) form_field_ptr::field (byte) form_field_ptr::field_idx -(byte) form_field_ptr::field_idx#0 2002.0 -(byte) form_field_ptr::field_idx#1 4.0 -(byte) form_field_ptr::field_idx#2 335.66666666666674 +(byte) form_field_ptr::field_idx#0 2.000000002E9 +(byte) form_field_ptr::field_idx#1 2.0000002E7 +(byte) form_field_ptr::field_idx#2 7.003333334666666E9 (byte*) form_field_ptr::line -(word) form_field_ptr::line#0 0.4 +(word) form_field_ptr::line#0 2.0000000002E9 (byte*) form_field_ptr::return -(byte*) form_field_ptr::return#0 1.3333333333333333 -(byte*) form_field_ptr::return#3 4.0 +(byte*) form_field_ptr::return#0 3.336666667333333E9 +(byte*) form_field_ptr::return#3 2.0000002E7 (byte) form_field_ptr::x -(byte) form_field_ptr::x#0 251.25 +(byte) form_field_ptr::x#0 5.25000000075E9 (byte) form_field_ptr::y -(byte) form_field_ptr::y#0 6.0 +(byte) form_field_ptr::y#0 3.0000000003E10 (void()) form_mode() -(byte~) form_mode::$11 2002.0 +(byte~) form_mode::$11 2000002.0 (byte) form_mode::i -(byte) form_mode::i#1 151.5 -(byte) form_mode::i#2 202.0 +(byte) form_mode::i#1 150001.5 +(byte) form_mode::i#2 200002.0 (byte) form_mode::preset_current -(byte) form_mode::preset_current#0 4.0 -(byte) form_mode::preset_current#1 50.5 -(byte) form_mode::preset_current#6 388.25 +(byte) form_mode::preset_current#0 2002.0 +(byte) form_mode::preset_current#1 50000.5 +(byte) form_mode::preset_current#6 387625.625 (void()) form_render_values() (byte*) form_render_values::field (byte) form_render_values::idx -(byte) form_render_values::idx#1 2002.0 -(byte) form_render_values::idx#2 1001.0 +(byte) form_render_values::idx#1 2.000000002E9 +(byte) form_render_values::idx#2 1.000000001E9 (void()) form_set_screen((byte*) form_set_screen::screen) -(byte~) form_set_screen::$0 202.0 -(byte~) form_set_screen::$1 202.0 +(byte~) form_set_screen::$0 2000002.0 +(byte~) form_set_screen::$1 2000002.0 (byte*) form_set_screen::line -(byte*) form_set_screen::line#1 67.33333333333333 -(byte*) form_set_screen::line#2 80.8 +(byte*) form_set_screen::line#1 666667.3333333334 +(byte*) form_set_screen::line#2 800000.8 (byte*) form_set_screen::screen (byte) form_set_screen::y -(byte) form_set_screen::y#1 151.5 -(byte) form_set_screen::y#2 67.33333333333333 +(byte) form_set_screen::y#1 1500001.5 +(byte) form_set_screen::y#2 666667.3333333334 (dword()) get_plane((byte) get_plane::idx) (byte) get_plane::idx -(byte) get_plane::idx#0 4.0 -(byte) get_plane::idx#1 4.0 -(byte) get_plane::idx#10 2.285714285714285 +(byte) get_plane::idx#0 2002.0 +(byte) get_plane::idx#1 2002.0 +(byte) get_plane::idx#10 10144.000000000002 (dword) get_plane::return -(dword) get_plane::return#14 1.0 -(dword) get_plane::return#16 4.0 -(dword) get_plane::return#17 4.0 +(dword) get_plane::return#14 500.5 +(dword) get_plane::return#16 2002.0 +(dword) get_plane::return#17 2002.0 (byte*()) get_vic_charset((byte) get_vic_charset::idx) (byte) get_vic_charset::idx -(byte) get_vic_charset::idx#0 3.0 +(byte) get_vic_charset::idx#0 10501.5 (byte*) get_vic_charset::return -(byte*) get_vic_charset::return#2 0.6666666666666666 -(byte*) get_vic_charset::return#4 4.0 +(byte*) get_vic_charset::return#2 333.6666666666667 +(byte*) get_vic_charset::return#4 2002.0 (byte*()) get_vic_screen((byte) get_vic_screen::idx) (byte) get_vic_screen::idx -(byte) get_vic_screen::idx#0 4.0 -(byte) get_vic_screen::idx#1 4.0 -(byte) get_vic_screen::idx#2 2.8 +(byte) get_vic_screen::idx#0 2002.0 +(byte) get_vic_screen::idx#1 2002.0 +(byte) get_vic_screen::idx#2 10401.400000000001 (byte*) get_vic_screen::return -(byte*) get_vic_screen::return#10 4.0 -(byte*) get_vic_screen::return#11 4.0 -(byte*) get_vic_screen::return#5 1.0 +(byte*) get_vic_screen::return#10 2002.0 +(byte*) get_vic_screen::return#11 2002.0 +(byte*) get_vic_screen::return#5 500.5 (void()) gfx_init() (void()) gfx_init_charset() (byte) gfx_init_charset::c -(byte) gfx_init_charset::c#1 16.5 -(byte) gfx_init_charset::c#4 3.142857142857143 +(byte) gfx_init_charset::c#1 15001.5 +(byte) gfx_init_charset::c#4 2857.4285714285716 (byte*) gfx_init_charset::chargen -(byte*) gfx_init_charset::chargen#1 42.599999999999994 -(byte*) gfx_init_charset::chargen#2 104.66666666666666 -(byte*) gfx_init_charset::chargen#3 22.0 +(byte*) gfx_init_charset::chargen#1 42000.600000000006 +(byte*) gfx_init_charset::chargen#2 103334.66666666666 +(byte*) gfx_init_charset::chargen#3 20002.0 (byte*) gfx_init_charset::charset -(byte*) gfx_init_charset::charset#1 35.5 -(byte*) gfx_init_charset::charset#2 157.0 -(byte*) gfx_init_charset::charset#3 22.0 +(byte*) gfx_init_charset::charset#1 35000.5 +(byte*) gfx_init_charset::charset#2 155002.0 +(byte*) gfx_init_charset::charset#3 20002.0 (byte) gfx_init_charset::l -(byte) gfx_init_charset::l#1 151.5 -(byte) gfx_init_charset::l#2 50.5 +(byte) gfx_init_charset::l#1 150001.5 +(byte) gfx_init_charset::l#2 50000.5 (void()) gfx_init_plane_8bppchunky() -(word~) gfx_init_plane_8bppchunky::$5 101.0 +(word~) gfx_init_plane_8bppchunky::$5 100001.0 (byte) gfx_init_plane_8bppchunky::c -(byte) gfx_init_plane_8bppchunky::c#0 202.0 +(byte) gfx_init_plane_8bppchunky::c#0 200002.0 (byte*) gfx_init_plane_8bppchunky::gfxb -(byte*) gfx_init_plane_8bppchunky::gfxb#1 42.599999999999994 -(byte*) gfx_init_plane_8bppchunky::gfxb#3 157.0 -(byte*) gfx_init_plane_8bppchunky::gfxb#4 75.75 -(byte*) gfx_init_plane_8bppchunky::gfxb#5 22.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#1 42000.600000000006 +(byte*) gfx_init_plane_8bppchunky::gfxb#3 155002.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#4 75000.75 +(byte*) gfx_init_plane_8bppchunky::gfxb#5 20002.0 (byte) gfx_init_plane_8bppchunky::gfxbCpuBank -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 202.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 103.75 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 22.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 34.888888888888886 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 200002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 102501.25 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 20002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 34444.88888888889 (word) gfx_init_plane_8bppchunky::x -(word) gfx_init_plane_8bppchunky::x#1 151.5 -(word) gfx_init_plane_8bppchunky::x#2 30.299999999999997 +(word) gfx_init_plane_8bppchunky::x#1 150001.5 +(word) gfx_init_plane_8bppchunky::x#2 30000.300000000003 (byte) gfx_init_plane_8bppchunky::y -(byte) gfx_init_plane_8bppchunky::y#1 16.5 -(byte) gfx_init_plane_8bppchunky::y#6 9.461538461538462 +(byte) gfx_init_plane_8bppchunky::y#1 15001.5 +(byte) gfx_init_plane_8bppchunky::y#6 9230.999999999998 (void()) gfx_init_plane_blank() (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 2002.0 +(byte~) gfx_init_plane_charset8::$2 2000002.0 (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 101.0 -(byte) gfx_init_plane_charset8::bits#1 500.5 -(byte) gfx_init_plane_charset8::bits#2 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 100001.0 +(byte) gfx_init_plane_charset8::bits#1 500000.5 +(byte) gfx_init_plane_charset8::bits#2 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 2002.0 -(byte) gfx_init_plane_charset8::c#3 2002.0 +(byte) gfx_init_plane_charset8::c#2 2000002.0 +(byte) gfx_init_plane_charset8::c#3 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 16.5 -(byte) gfx_init_plane_charset8::ch#8 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 15001.5 +(byte) gfx_init_plane_charset8::ch#8 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 302.0 -(byte) gfx_init_plane_charset8::col#2 388.0 -(byte) gfx_init_plane_charset8::col#5 71.0 -(byte) gfx_init_plane_charset8::col#6 22.0 +(byte) gfx_init_plane_charset8::col#1 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 387500.5 +(byte) gfx_init_plane_charset8::col#5 70001.0 +(byte) gfx_init_plane_charset8::col#6 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 1501.5 -(byte) gfx_init_plane_charset8::cp#2 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 151.5 -(byte) gfx_init_plane_charset8::cr#6 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 150001.5 +(byte) gfx_init_plane_charset8::cr#6 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (void()) gfx_init_plane_fill((dword) gfx_init_plane_fill::plane_addr , (byte) gfx_init_plane_fill::fill) -(dword~) gfx_init_plane_fill::$0 4.0 -(word~) gfx_init_plane_fill::$1 4.0 -(word~) gfx_init_plane_fill::$4 4.0 -(word~) gfx_init_plane_fill::$5 4.0 +(dword~) gfx_init_plane_fill::$0 20002.0 +(word~) gfx_init_plane_fill::$1 20002.0 +(word~) gfx_init_plane_fill::$4 20002.0 +(word~) gfx_init_plane_fill::$5 20002.0 (byte) gfx_init_plane_fill::bx -(byte) gfx_init_plane_fill::bx#1 151.5 -(byte) gfx_init_plane_fill::bx#2 67.33333333333333 +(byte) gfx_init_plane_fill::bx#1 1500001.5 +(byte) gfx_init_plane_fill::bx#2 666667.3333333334 (byte) gfx_init_plane_fill::by -(byte) gfx_init_plane_fill::by#1 16.5 -(byte) gfx_init_plane_fill::by#4 3.6666666666666665 +(byte) gfx_init_plane_fill::by#1 150001.5 +(byte) gfx_init_plane_fill::by#4 33333.666666666664 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 55555.61111111111 (byte*) gfx_init_plane_fill::gfxb -(word) gfx_init_plane_fill::gfxb#0 2.0 -(byte*) gfx_init_plane_fill::gfxb#1 42.599999999999994 -(byte*) gfx_init_plane_fill::gfxb#2 157.0 -(byte*) gfx_init_plane_fill::gfxb#3 24.0 -(byte*) gfx_init_plane_fill::gfxb#6 4.0 +(word) gfx_init_plane_fill::gfxb#0 10001.0 +(byte*) gfx_init_plane_fill::gfxb#1 420000.60000000003 +(byte*) gfx_init_plane_fill::gfxb#2 1550002.0 +(byte*) gfx_init_plane_fill::gfxb#3 210003.0 +(byte*) gfx_init_plane_fill::gfxb#6 20002.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 20002.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 3333.6666666666665 (void()) gfx_init_plane_full() (void()) gfx_init_plane_horisontal() -(byte~) gfx_init_plane_horisontal::$2 202.0 +(byte~) gfx_init_plane_horisontal::$2 200002.0 (byte) gfx_init_plane_horisontal::ax -(byte) gfx_init_plane_horisontal::ax#1 151.5 -(byte) gfx_init_plane_horisontal::ax#2 25.25 +(byte) gfx_init_plane_horisontal::ax#1 150001.5 +(byte) gfx_init_plane_horisontal::ax#2 25000.25 (byte) gfx_init_plane_horisontal::ay -(byte) gfx_init_plane_horisontal::ay#1 16.5 -(byte) gfx_init_plane_horisontal::ay#4 11.181818181818182 +(byte) gfx_init_plane_horisontal::ay#1 15001.5 +(byte) gfx_init_plane_horisontal::ay#4 10909.363636363636 (byte*) gfx_init_plane_horisontal::gfxa -(byte*) gfx_init_plane_horisontal::gfxa#1 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#2 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#3 103.2 -(byte*) gfx_init_plane_horisontal::gfxa#6 22.0 -(byte*) gfx_init_plane_horisontal::gfxa#7 62.8 +(byte*) gfx_init_plane_horisontal::gfxa#1 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#2 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#3 102001.2 +(byte*) gfx_init_plane_horisontal::gfxa#6 20002.0 +(byte*) gfx_init_plane_horisontal::gfxa#7 62000.8 (byte) gfx_init_plane_horisontal::gfxbCpuBank (void()) gfx_init_plane_horisontal2() -(byte~) gfx_init_plane_horisontal2::$2 202.0 +(byte~) gfx_init_plane_horisontal2::$2 200002.0 (byte) gfx_init_plane_horisontal2::ax -(byte) gfx_init_plane_horisontal2::ax#1 151.5 -(byte) gfx_init_plane_horisontal2::ax#2 40.4 +(byte) gfx_init_plane_horisontal2::ax#1 150001.5 +(byte) gfx_init_plane_horisontal2::ax#2 40000.4 (byte) gfx_init_plane_horisontal2::ay -(byte) gfx_init_plane_horisontal2::ay#1 16.5 -(byte) gfx_init_plane_horisontal2::ay#4 15.375 +(byte) gfx_init_plane_horisontal2::ay#1 15001.5 +(byte) gfx_init_plane_horisontal2::ay#4 15000.375 (byte*) gfx_init_plane_horisontal2::gfxa -(byte*) gfx_init_plane_horisontal2::gfxa#1 42.599999999999994 -(byte*) gfx_init_plane_horisontal2::gfxa#2 78.5 -(byte*) gfx_init_plane_horisontal2::gfxa#3 22.0 +(byte*) gfx_init_plane_horisontal2::gfxa#1 42000.600000000006 +(byte*) gfx_init_plane_horisontal2::gfxa#2 77501.0 +(byte*) gfx_init_plane_horisontal2::gfxa#3 20002.0 (byte) gfx_init_plane_horisontal2::gfxbCpuBank (byte) gfx_init_plane_horisontal2::row -(byte) gfx_init_plane_horisontal2::row#0 202.0 +(byte) gfx_init_plane_horisontal2::row#0 200002.0 (void()) gfx_init_plane_vertical() (byte) gfx_init_plane_vertical::bx -(byte) gfx_init_plane_vertical::bx#1 151.5 -(byte) gfx_init_plane_vertical::bx#2 67.33333333333333 +(byte) gfx_init_plane_vertical::bx#1 150001.5 +(byte) gfx_init_plane_vertical::bx#2 66667.33333333333 (byte) gfx_init_plane_vertical::by -(byte) gfx_init_plane_vertical::by#1 16.5 -(byte) gfx_init_plane_vertical::by#4 3.6666666666666665 +(byte) gfx_init_plane_vertical::by#1 15001.5 +(byte) gfx_init_plane_vertical::by#4 3333.6666666666665 (byte*) gfx_init_plane_vertical::gfxb -(byte*) gfx_init_plane_vertical::gfxb#1 42.599999999999994 -(byte*) gfx_init_plane_vertical::gfxb#2 157.0 -(byte*) gfx_init_plane_vertical::gfxb#3 22.0 +(byte*) gfx_init_plane_vertical::gfxb#1 42000.600000000006 +(byte*) gfx_init_plane_vertical::gfxb#2 155002.0 +(byte*) gfx_init_plane_vertical::gfxb#3 20002.0 (byte) gfx_init_plane_vertical::gfxbCpuBank (void()) gfx_init_plane_vertical2() (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 202.0 -(byte~) gfx_init_screen0::$1 101.0 -(byte~) gfx_init_screen0::$2 202.0 -(byte~) gfx_init_screen0::$3 202.0 +(byte~) gfx_init_screen0::$0 200002.0 +(byte~) gfx_init_screen0::$1 100001.0 +(byte~) gfx_init_screen0::$2 200002.0 +(byte~) gfx_init_screen0::$3 200002.0 (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 22.0 +(byte*) gfx_init_screen0::ch#1 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 151.5 -(byte) gfx_init_screen0::cx#2 43.285714285714285 +(byte) gfx_init_screen0::cx#1 150001.5 +(byte) gfx_init_screen0::cx#2 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 16.5 -(byte) gfx_init_screen0::cy#4 12.299999999999999 +(byte) gfx_init_screen0::cy#1 15001.5 +(byte) gfx_init_screen0::cy#4 12000.300000000001 (void()) gfx_init_screen1() -(byte~) gfx_init_screen1::$0 202.0 -(byte~) gfx_init_screen1::$1 202.0 +(byte~) gfx_init_screen1::$0 200002.0 +(byte~) gfx_init_screen1::$1 200002.0 (byte*) gfx_init_screen1::ch -(byte*) gfx_init_screen1::ch#1 42.599999999999994 -(byte*) gfx_init_screen1::ch#2 78.5 -(byte*) gfx_init_screen1::ch#3 22.0 +(byte*) gfx_init_screen1::ch#1 42000.600000000006 +(byte*) gfx_init_screen1::ch#2 77501.0 +(byte*) gfx_init_screen1::ch#3 20002.0 (byte) gfx_init_screen1::cx -(byte) gfx_init_screen1::cx#1 151.5 -(byte) gfx_init_screen1::cx#2 60.599999999999994 +(byte) gfx_init_screen1::cx#1 150001.5 +(byte) gfx_init_screen1::cx#2 60000.600000000006 (byte) gfx_init_screen1::cy -(byte) gfx_init_screen1::cy#1 16.5 -(byte) gfx_init_screen1::cy#4 15.375 +(byte) gfx_init_screen1::cy#1 15001.5 +(byte) gfx_init_screen1::cy#4 15000.375 (void()) gfx_init_screen2() -(byte~) gfx_init_screen2::$0 202.0 -(byte~) gfx_init_screen2::$3 202.0 -(byte~) gfx_init_screen2::$4 202.0 +(byte~) gfx_init_screen2::$0 200002.0 +(byte~) gfx_init_screen2::$3 200002.0 +(byte~) gfx_init_screen2::$4 200002.0 (byte*) gfx_init_screen2::ch -(byte*) gfx_init_screen2::ch#1 42.599999999999994 -(byte*) gfx_init_screen2::ch#2 44.85714285714286 -(byte*) gfx_init_screen2::ch#3 22.0 +(byte*) gfx_init_screen2::ch#1 42000.600000000006 +(byte*) gfx_init_screen2::ch#2 44286.28571428572 +(byte*) gfx_init_screen2::ch#3 20002.0 (byte) gfx_init_screen2::col -(byte) gfx_init_screen2::col#0 151.5 +(byte) gfx_init_screen2::col#0 150001.5 (byte) gfx_init_screen2::col2 -(byte) gfx_init_screen2::col2#0 101.0 +(byte) gfx_init_screen2::col2#0 100001.0 (byte) gfx_init_screen2::cx -(byte) gfx_init_screen2::cx#1 151.5 -(byte) gfx_init_screen2::cx#2 37.875 +(byte) gfx_init_screen2::cx#1 150001.5 +(byte) gfx_init_screen2::cx#2 37500.375 (byte) gfx_init_screen2::cy -(byte) gfx_init_screen2::cy#1 16.5 -(byte) gfx_init_screen2::cy#4 11.181818181818182 +(byte) gfx_init_screen2::cy#1 15001.5 +(byte) gfx_init_screen2::cy#4 10909.363636363636 (void()) gfx_init_screen3() -(byte~) gfx_init_screen3::$0 202.0 -(byte~) gfx_init_screen3::$1 101.0 -(byte~) gfx_init_screen3::$2 202.0 -(byte~) gfx_init_screen3::$3 202.0 +(byte~) gfx_init_screen3::$0 200002.0 +(byte~) gfx_init_screen3::$1 100001.0 +(byte~) gfx_init_screen3::$2 200002.0 +(byte~) gfx_init_screen3::$3 200002.0 (byte*) gfx_init_screen3::ch -(byte*) gfx_init_screen3::ch#1 42.599999999999994 -(byte*) gfx_init_screen3::ch#2 52.33333333333333 -(byte*) gfx_init_screen3::ch#3 22.0 +(byte*) gfx_init_screen3::ch#1 42000.600000000006 +(byte*) gfx_init_screen3::ch#2 51667.33333333333 +(byte*) gfx_init_screen3::ch#3 20002.0 (byte) gfx_init_screen3::cx -(byte) gfx_init_screen3::cx#1 151.5 -(byte) gfx_init_screen3::cx#2 43.285714285714285 +(byte) gfx_init_screen3::cx#1 150001.5 +(byte) gfx_init_screen3::cx#2 42857.57142857143 (byte) gfx_init_screen3::cy -(byte) gfx_init_screen3::cy#1 16.5 -(byte) gfx_init_screen3::cy#4 12.299999999999999 +(byte) gfx_init_screen3::cy#1 15001.5 +(byte) gfx_init_screen3::cy#4 12000.300000000001 (void()) gfx_init_screen4() (byte*) gfx_init_screen4::ch -(byte*) gfx_init_screen4::ch#1 42.599999999999994 -(byte*) gfx_init_screen4::ch#2 157.0 -(byte*) gfx_init_screen4::ch#3 22.0 +(byte*) gfx_init_screen4::ch#1 42000.600000000006 +(byte*) gfx_init_screen4::ch#2 155002.0 +(byte*) gfx_init_screen4::ch#3 20002.0 (byte) gfx_init_screen4::cx -(byte) gfx_init_screen4::cx#1 151.5 -(byte) gfx_init_screen4::cx#2 67.33333333333333 +(byte) gfx_init_screen4::cx#1 150001.5 +(byte) gfx_init_screen4::cx#2 66667.33333333333 (byte) gfx_init_screen4::cy -(byte) gfx_init_screen4::cy#1 16.5 -(byte) gfx_init_screen4::cy#4 3.6666666666666665 +(byte) gfx_init_screen4::cy#1 15001.5 +(byte) gfx_init_screen4::cy#4 3333.6666666666665 (void()) gfx_init_vic_bitmap() (byte) gfx_init_vic_bitmap::l -(byte) gfx_init_vic_bitmap::l#1 22.0 -(byte) gfx_init_vic_bitmap::l#2 11.0 +(byte) gfx_init_vic_bitmap::l#1 20002.0 +(byte) gfx_init_vic_bitmap::l#2 10001.000000000002 (void()) gfx_mode() -(byte~) gfx_mode::$18 4.0 -(dword~) gfx_mode::$20 4.0 -(byte~) gfx_mode::$23 4.0 -(word~) gfx_mode::$24 2.0 -(byte~) gfx_mode::$25 4.0 -(word~) gfx_mode::$26 4.0 -(byte~) gfx_mode::$27 4.0 -(byte~) gfx_mode::$28 4.0 -(byte~) gfx_mode::$29 4.0 -(byte~) gfx_mode::$30 4.0 -(byte~) gfx_mode::$31 4.0 -(byte~) gfx_mode::$32 4.0 -(dword~) gfx_mode::$34 4.0 -(byte~) gfx_mode::$37 4.0 -(word~) gfx_mode::$38 2.0 -(byte~) gfx_mode::$39 4.0 -(word~) gfx_mode::$40 4.0 -(byte~) gfx_mode::$41 4.0 -(byte~) gfx_mode::$42 4.0 -(byte~) gfx_mode::$43 4.0 -(byte~) gfx_mode::$44 4.0 -(byte~) gfx_mode::$45 4.0 -(byte*~) gfx_mode::$47 2.0 -(word~) gfx_mode::$48 4.0 -(word~) gfx_mode::$49 2.0 -(byte~) gfx_mode::$50 0.5 -(byte*~) gfx_mode::$52 2.0 -(word~) gfx_mode::$53 4.0 -(byte~) gfx_mode::$54 4.0 -(byte~) gfx_mode::$55 4.0 -(byte~) gfx_mode::$56 4.0 -(byte~) gfx_mode::$58 4.0 -(byte~) gfx_mode::$59 4.0 -(byte~) gfx_mode::$60 4.0 -(byte~) gfx_mode::$61 4.0 -(byte~) gfx_mode::$62 4.0 -(byte~) gfx_mode::$63 4.0 -(byte~) gfx_mode::$64 4.0 -(byte~) gfx_mode::$65 4.0 +(byte~) gfx_mode::$18 2002.0 +(dword~) gfx_mode::$20 2002.0 +(byte~) gfx_mode::$23 2002.0 +(word~) gfx_mode::$24 1001.0 +(byte~) gfx_mode::$25 2002.0 +(word~) gfx_mode::$26 2002.0 +(byte~) gfx_mode::$27 2002.0 +(byte~) gfx_mode::$28 2002.0 +(byte~) gfx_mode::$29 2002.0 +(byte~) gfx_mode::$30 2002.0 +(byte~) gfx_mode::$31 2002.0 +(byte~) gfx_mode::$32 2002.0 +(dword~) gfx_mode::$34 2002.0 +(byte~) gfx_mode::$37 2002.0 +(word~) gfx_mode::$38 1001.0 +(byte~) gfx_mode::$39 2002.0 +(word~) gfx_mode::$40 2002.0 +(byte~) gfx_mode::$41 2002.0 +(byte~) gfx_mode::$42 2002.0 +(byte~) gfx_mode::$43 2002.0 +(byte~) gfx_mode::$44 2002.0 +(byte~) gfx_mode::$45 2002.0 +(byte*~) gfx_mode::$47 1001.0 +(word~) gfx_mode::$48 2002.0 +(word~) gfx_mode::$49 1001.0 +(byte~) gfx_mode::$50 250.25 +(byte*~) gfx_mode::$52 1001.0 +(word~) gfx_mode::$53 2002.0 +(byte~) gfx_mode::$54 2002.0 +(byte~) gfx_mode::$55 2002.0 +(byte~) gfx_mode::$56 2002.0 +(byte~) gfx_mode::$58 2002.0 +(byte~) gfx_mode::$59 2002.0 +(byte~) gfx_mode::$60 2002.0 +(byte~) gfx_mode::$61 2002.0 +(byte~) gfx_mode::$62 2002.0 +(byte~) gfx_mode::$63 2002.0 +(byte~) gfx_mode::$64 2002.0 +(byte~) gfx_mode::$65 2002.0 (byte*) gfx_mode::col -(byte*) gfx_mode::col#1 350.5 -(byte*) gfx_mode::col#2 1552.0 -(byte*) gfx_mode::col#3 202.0 +(byte*) gfx_mode::col#1 350000.5 +(byte*) gfx_mode::col#2 1550002.0 +(byte*) gfx_mode::col#3 200002.0 (byte) gfx_mode::cx -(byte) gfx_mode::cx#1 1501.5 -(byte) gfx_mode::cx#2 500.5 +(byte) gfx_mode::cx#1 1500001.5 +(byte) gfx_mode::cx#2 500000.5 (byte) gfx_mode::cy -(byte) gfx_mode::cy#1 151.5 -(byte) gfx_mode::cy#4 28.857142857142858 +(byte) gfx_mode::cy#1 150001.5 +(byte) gfx_mode::cy#4 28571.714285714286 (byte) gfx_mode::dtv_control -(byte) gfx_mode::dtv_control#10 4.0 -(byte) gfx_mode::dtv_control#11 4.0 -(byte) gfx_mode::dtv_control#12 6.0 -(byte) gfx_mode::dtv_control#13 4.0 -(byte) gfx_mode::dtv_control#14 2.0 -(byte) gfx_mode::dtv_control#15 4.0 -(byte) gfx_mode::dtv_control#2 4.0 -(byte) gfx_mode::dtv_control#3 4.0 -(byte) gfx_mode::dtv_control#4 4.0 -(byte) gfx_mode::dtv_control#5 4.0 -(byte) gfx_mode::dtv_control#6 4.0 +(byte) gfx_mode::dtv_control#10 2002.0 +(byte) gfx_mode::dtv_control#11 2002.0 +(byte) gfx_mode::dtv_control#12 3003.0 +(byte) gfx_mode::dtv_control#13 2002.0 +(byte) gfx_mode::dtv_control#14 1001.0 +(byte) gfx_mode::dtv_control#15 2002.0 +(byte) gfx_mode::dtv_control#2 2002.0 +(byte) gfx_mode::dtv_control#3 2002.0 +(byte) gfx_mode::dtv_control#4 2002.0 +(byte) gfx_mode::dtv_control#5 2002.0 +(byte) gfx_mode::dtv_control#6 2002.0 (byte) gfx_mode::i -(byte) gfx_mode::i#1 151.5 -(byte) gfx_mode::i#2 202.0 +(byte) gfx_mode::i#1 150001.5 +(byte) gfx_mode::i#2 200002.0 (byte) gfx_mode::j -(byte) gfx_mode::j#1 151.5 -(byte) gfx_mode::j#2 202.0 +(byte) gfx_mode::j#1 150001.5 +(byte) gfx_mode::j#2 200002.0 (byte) gfx_mode::keyboard_event -(byte) gfx_mode::keyboard_event#0 202.0 +(byte) gfx_mode::keyboard_event#0 200002.0 (dword) gfx_mode::plane_a -(dword) gfx_mode::plane_a#0 1.0 +(dword) gfx_mode::plane_a#0 500.5 (byte) gfx_mode::plane_a_offs -(byte) gfx_mode::plane_a_offs#0 0.8 +(byte) gfx_mode::plane_a_offs#0 400.4 (dword) gfx_mode::plane_b -(dword) gfx_mode::plane_b#0 1.0 +(dword) gfx_mode::plane_b#0 500.5 (byte) gfx_mode::plane_b_offs -(byte) gfx_mode::plane_b_offs#0 0.8 +(byte) gfx_mode::plane_b_offs#0 400.4 (byte*) gfx_mode::vic_colors -(byte*) gfx_mode::vic_colors#0 4.0 -(byte*) gfx_mode::vic_colors#1 420.59999999999997 -(byte*) gfx_mode::vic_colors#2 1034.6666666666667 -(byte*) gfx_mode::vic_colors#3 204.0 +(byte*) gfx_mode::vic_colors#0 2002.0 +(byte*) gfx_mode::vic_colors#1 420000.60000000003 +(byte*) gfx_mode::vic_colors#2 1033334.6666666667 +(byte*) gfx_mode::vic_colors#3 201003.0 (byte) gfx_mode::vic_control -(byte) gfx_mode::vic_control#2 4.0 -(byte) gfx_mode::vic_control#4 6.0 -(byte) gfx_mode::vic_control#5 2.0 +(byte) gfx_mode::vic_control#2 2002.0 +(byte) gfx_mode::vic_control#4 3003.0 +(byte) gfx_mode::vic_control#5 1001.0 (byte) gfx_mode::vic_control2 -(byte) gfx_mode::vic_control2#2 2.0 +(byte) gfx_mode::vic_control2#2 1001.0 (byte()) keyboard_event_get() (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 4.0 -(byte) keyboard_event_get::return#2 26.25 -(byte) keyboard_event_get::return#3 202.0 -(byte) keyboard_event_get::return#4 4.0 +(byte) keyboard_event_get::return#1 2.00000002E8 +(byte) keyboard_event_get::return#2 2.752500075E7 +(byte) keyboard_event_get::return#3 200002.0 +(byte) keyboard_event_get::return#4 2.0000002E7 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 4.0 -(byte~) keyboard_event_pressed::$1 4.0 +(byte~) keyboard_event_pressed::$0 2.000000002E9 +(byte~) keyboard_event_pressed::$1 2.000000002E9 (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#4 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#4 6.666666673333334E8 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 4.0 -(byte) keyboard_event_pressed::return#1 4.0 -(byte) keyboard_event_pressed::return#10 1.6666666666666665 -(byte) keyboard_event_pressed::return#2 4.0 -(byte) keyboard_event_pressed::return#3 4.0 +(byte) keyboard_event_pressed::return#0 2.00000002E8 +(byte) keyboard_event_pressed::return#1 2.00000002E8 +(byte) keyboard_event_pressed::return#10 2.333333341666667E8 +(byte) keyboard_event_pressed::return#2 2.00000002E8 +(byte) keyboard_event_pressed::return#3 2.00000002E8 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 2.0 +(byte) keyboard_event_pressed::row_bits#0 1.000000001E9 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 4.0 -(byte~) keyboard_event_scan::$15 200002.0 -(byte~) keyboard_event_scan::$16 200002.0 -(byte~) keyboard_event_scan::$23 200002.0 -(byte~) keyboard_event_scan::$3 4.0 -(byte~) keyboard_event_scan::$6 4.0 -(byte~) keyboard_event_scan::$9 4.0 +(byte~) keyboard_event_scan::$0 2.00000002E8 +(byte~) keyboard_event_scan::$15 2.0000000000002E13 +(byte~) keyboard_event_scan::$16 2.0000000000002E13 +(byte~) keyboard_event_scan::$23 2.0000000000002E13 +(byte~) keyboard_event_scan::$3 2.00000002E8 +(byte~) keyboard_event_scan::$6 2.00000002E8 +(byte~) keyboard_event_scan::$9 2.00000002E8 (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 150001.5 -(byte) keyboard_event_scan::col#2 28571.714285714286 +(byte) keyboard_event_scan::col#1 1.50000000000015E13 +(byte) keyboard_event_scan::col#2 2.857142857143143E12 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 200002.0 +(byte) keyboard_event_scan::event_type#0 2.0000000000002E13 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 20002.0 -(byte) keyboard_event_scan::keycode#10 31538.846153846156 -(byte) keyboard_event_scan::keycode#11 5000.5 -(byte) keyboard_event_scan::keycode#13 10001.0 -(byte) keyboard_event_scan::keycode#14 52500.75 +(byte) keyboard_event_scan::keycode#1 2.000000000002E12 +(byte) keyboard_event_scan::keycode#10 3.1538461538465386E12 +(byte) keyboard_event_scan::keycode#11 5.000000000005E11 +(byte) keyboard_event_scan::keycode#13 1.000000000001E12 +(byte) keyboard_event_scan::keycode#14 5.25000000000075E12 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 15001.5 -(byte) keyboard_event_scan::row#2 6000.24 +(byte) keyboard_event_scan::row#1 1.5000000000015E12 +(byte) keyboard_event_scan::row#2 6.0000000000024E11 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 12778.055555555557 +(byte) keyboard_event_scan::row_scan#0 1.2777777777780554E12 (byte) keyboard_events_size -(byte) keyboard_events_size#1 200002.0 -(byte) keyboard_events_size#100 882.6176470588235 -(byte) keyboard_events_size#105 102001.2 -(byte) keyboard_events_size#106 4286.428571428572 -(byte) keyboard_events_size#18 81000.90000000001 -(byte) keyboard_events_size#2 200002.0 -(byte) keyboard_events_size#24 6.766666666666667 -(byte) keyboard_events_size#27 0.3333333333333333 -(byte) keyboard_events_size#4 3.0 -(byte) keyboard_events_size#47 65.05882352941177 -(byte) keyboard_events_size#97 105.0 +(byte) keyboard_events_size#1 2.0000000000002E13 +(byte) keyboard_events_size#100 8.824411764723529E10 +(byte) keyboard_events_size#105 1.02000000000012E13 +(byte) keyboard_events_size#106 4.285857142862857E11 +(byte) keyboard_events_size#18 8.100000000000898E12 +(byte) keyboard_events_size#2 2.0000000000002E13 +(byte) keyboard_events_size#24 1117778.3666666667 +(byte) keyboard_events_size#27 28.25641025641026 +(byte) keyboard_events_size#4 1.500000015E8 +(byte) keyboard_events_size#47 653000.2352941177 +(byte) keyboard_events_size#97 1.10100003E8 (void()) keyboard_init() (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 3334.333333333333 -(byte) keyboard_matrix_read::return#2 20002.0 +(byte) keyboard_matrix_read::return#0 3.666666666667333E12 +(byte) keyboard_matrix_read::return#2 2.000000000002E12 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 10003.0 +(byte) keyboard_matrix_read::rowid#0 1.1000000000002E13 (byte) keyboard_modifiers -(byte) keyboard_modifiers#18 0.8 -(byte) keyboard_modifiers#19 1.6 -(byte) keyboard_modifiers#20 1.6 -(byte) keyboard_modifiers#21 0.7272727272727273 -(byte) keyboard_modifiers#3 4.0 -(byte) keyboard_modifiers#4 4.0 -(byte) keyboard_modifiers#5 4.0 +(byte) keyboard_modifiers#18 4.00000004E7 +(byte) keyboard_modifiers#19 8.00000008E7 +(byte) keyboard_modifiers#20 8.00000008E7 +(byte) keyboard_modifiers#21 2.0000000363636363E7 +(byte) keyboard_modifiers#3 2.00000002E8 +(byte) keyboard_modifiers#4 2.00000002E8 +(byte) keyboard_modifiers#5 2.00000002E8 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 202.0 -(byte*) memset::dst#2 135.33333333333331 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 2.0000002E7 +(byte*) memset::dst#2 1.3366668333333332E7 +(byte*) memset::dst#4 200002.0 (byte*) memset::end -(byte*) memset::end#0 17.166666666666664 +(byte*) memset::end#0 1683333.6666666665 (word) memset::num (void*) memset::return (void*) memset::str -(void*) memset::str#0 0.6666666666666666 +(void*) memset::str#0 3333.6666666666665 (byte*) print_char_cursor -(byte*) print_char_cursor#1 2002.0 -(byte*) print_char_cursor#20 821.0 -(byte*) print_char_cursor#22 102.0 -(byte*) print_char_cursor#38 572.0 -(byte*) print_char_cursor#67 4.0 -(byte*) print_char_cursor#68 202.0 +(byte*) print_char_cursor#1 2.0000002E7 +(byte*) print_char_cursor#20 8200001.0 +(byte*) print_char_cursor#22 1005001.5 +(byte*) print_char_cursor#38 1.4328571434285712E9 +(byte*) print_char_cursor#67 20002.0 +(byte*) print_char_cursor#68 2000002.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#2 8.749999999999998 -(byte*) print_line_cursor#21 2004.0 -(byte*) print_line_cursor#22 641.0 +(byte*) print_line_cursor#2 917500.25 +(byte*) print_line_cursor#21 2.0010000003E10 +(byte*) print_line_cursor#22 6.000400001E9 (void()) print_ln() (byte*) print_screen (void()) print_set_screen((byte*) print_set_screen::screen) (byte*) print_set_screen::screen -(byte*) print_set_screen::screen#2 0.26666666666666666 +(byte*) print_set_screen::screen#2 1333.4666666666667 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (byte*) print_str_at::at -(byte*) print_str_at::at#0 1001.0 -(byte*) print_str_at::at#2 1001.0 +(byte*) print_str_at::at#0 1.0000000001E10 +(byte*) print_str_at::at#2 1.0000000001E10 (byte*) print_str_at::str -(byte*) print_str_at::str#0 2002.0 -(byte*) print_str_at::str#1 2.0 -(byte*) print_str_at::str#2 1001.5 +(byte*) print_str_at::str#0 2.0000000002E10 +(byte*) print_str_at::str#1 5500001.0 +(byte*) print_str_at::str#2 1.000250000125E10 (void()) print_str_lines((byte*) print_str_lines::str) (byte) print_str_lines::ch -(byte) print_str_lines::ch#0 667.3333333333334 +(byte) print_str_lines::ch#0 6666667.333333333 (byte*) print_str_lines::str -(byte*) print_str_lines::str#0 233.66666666666669 -(byte*) print_str_lines::str#3 152.5 -(byte*) print_str_lines::str#4 1552.0 -(byte*) print_str_lines::str#5 1.0 +(byte*) print_str_lines::str#0 2333333.666666667 +(byte*) print_str_lines::str#3 1505002.0 +(byte*) print_str_lines::str#4 1.5500002E7 +(byte*) print_str_lines::str#5 5000.5 (void()) render_preset_name((byte) render_preset_name::idx) (byte) render_preset_name::idx -(byte) render_preset_name::idx#0 4.0 -(byte) render_preset_name::idx#1 202.0 -(byte) render_preset_name::idx#10 11.363636363636362 +(byte) render_preset_name::idx#0 2002.0 +(byte) render_preset_name::idx#1 200002.0 +(byte) render_preset_name::idx#10 1009183.0000000002 (byte*) render_preset_name::name -(byte*) render_preset_name::name#13 2.0 +(byte*) render_preset_name::name#13 1000001.0 Initial phi equivalence classes [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] @@ -19099,77 +19099,70 @@ keyboard_init: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:331 [ bitmap_init::$7 ] has ALU potential. -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Removing always clobbered register reg byte a as potential for zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] -Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a +Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] -Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] ) always clobbers reg byte a -Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a -Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] ) always clobbers reg byte a -Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a -Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a -Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] ) always clobbers reg byte a -Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a -Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] ) always clobbers reg byte a -Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a +Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] { } ) always clobbers reg byte a +Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] { } ) always clobbers reg byte a +Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] { } ) always clobbers reg byte a +Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] { } ) always clobbers reg byte a +Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] { } ) always clobbers reg byte a +Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] { } ) always clobbers reg byte a +Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] { } ) always clobbers reg byte a +Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] { } ) always clobbers reg byte a +Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] ) always clobbers reg byte a -Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a -Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a -Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ) always clobbers reg byte a +Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] { } ) always clobbers reg byte a +Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a +Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a +Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:159 [ gfx_mode::plane_a_offs#0 ] -Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ) always clobbers reg byte a -Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] ) always clobbers reg byte a -Statement [53] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ) always clobbers reg byte a -Statement [54] (byte~) gfx_mode::$23 ← < (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 gfx_mode::$23 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 gfx_mode::$23 ] ) always clobbers reg byte a -Statement [56] (byte~) gfx_mode::$25 ← > (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ) always clobbers reg byte a -Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] ) always clobbers reg byte a -Statement [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [ keyboard_events_size#24 gfx_mode::$27 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$27 ] ) always clobbers reg byte a -Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a -Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a -Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a -Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a -Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a -Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a -Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ) always clobbers reg byte a +Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [53] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:184 [ gfx_mode::plane_b_offs#0 ] -Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ) always clobbers reg byte a -Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] ) always clobbers reg byte a -Statement [75] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ) always clobbers reg byte a -Statement [76] (byte~) gfx_mode::$37 ← < (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 gfx_mode::$37 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 gfx_mode::$37 ] ) always clobbers reg byte a -Statement [78] (byte~) gfx_mode::$39 ← > (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ) always clobbers reg byte a -Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] ) always clobbers reg byte a -Statement [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [ keyboard_events_size#24 gfx_mode::$41 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$41 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a -Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a -Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a -Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a -Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#10 ] ) always clobbers reg byte a -Statement [95] (byte*~) gfx_mode::$47 ← (byte*) get_vic_screen::return#10 [ keyboard_events_size#24 gfx_mode::$47 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$47 ] ) always clobbers reg byte a -Statement [96] (word~) gfx_mode::$48 ← (word)(byte*~) gfx_mode::$47 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$48 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$48 ] ) always clobbers reg byte a -Statement [97] (word~) gfx_mode::$49 ← (word~) gfx_mode::$48 >> (byte) 6 [ keyboard_events_size#24 gfx_mode::$49 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$49 ] ) always clobbers reg byte a -Statement [98] (byte~) gfx_mode::$50 ← (byte)(word~) gfx_mode::$49 [ keyboard_events_size#24 gfx_mode::$50 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 ] ) always clobbers reg byte a -Statement [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 [ keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ) always clobbers reg byte a +Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [75] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#10 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [95] (byte*~) gfx_mode::$47 ← (byte*) get_vic_screen::return#10 [ keyboard_events_size#24 gfx_mode::$47 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$47 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [96] (word~) gfx_mode::$48 ← (word)(byte*~) gfx_mode::$47 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$48 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$48 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [97] (word~) gfx_mode::$49 ← (word~) gfx_mode::$48 >> (byte) 6 [ keyboard_events_size#24 gfx_mode::$49 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$49 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [98] (byte~) gfx_mode::$50 ← (byte)(word~) gfx_mode::$49 [ keyboard_events_size#24 gfx_mode::$50 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 [ keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:216 [ gfx_mode::$50 ] -Statement [102] (byte*~) gfx_mode::$52 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ) always clobbers reg byte a -Statement [103] (word~) gfx_mode::$53 ← (word)(byte*~) gfx_mode::$52 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ) always clobbers reg byte a -Statement [104] (byte~) gfx_mode::$54 ← > (word~) gfx_mode::$53 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$54 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$54 ] ) always clobbers reg byte a -Statement [105] (byte~) gfx_mode::$55 ← (byte~) gfx_mode::$54 >> (byte) 2 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ) always clobbers reg byte a -Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] ) always clobbers reg byte a -Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a -Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y +Statement [102] (byte*~) gfx_mode::$52 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [103] (word~) gfx_mode::$53 ← (word)(byte*~) gfx_mode::$52 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [105] (byte~) gfx_mode::$55 ← (byte~) gfx_mode::$54 >> (byte) 2 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] { } ) always clobbers reg byte a +Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Removing always clobbered register reg byte y as potential for zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] @@ -19177,111 +19170,110 @@ Removing always clobbered register reg byte a as potential for zp[1]:5 [ gfx_mod Removing always clobbered register reg byte y as potential for zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [122] (byte~) gfx_mode::$58 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$58 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$58 ] ) always clobbers reg byte a -Statement [123] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$59 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$59 ] ) always clobbers reg byte a -Statement [125] (byte~) gfx_mode::$60 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$60 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$60 ] ) always clobbers reg byte a -Statement [126] (byte~) gfx_mode::$61 ← (byte~) gfx_mode::$60 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] ) always clobbers reg byte a -Statement [128] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a -Statement [129] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a -Statement [131] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a -Statement [132] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a -Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] ) always clobbers reg byte a +Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [122] (byte~) gfx_mode::$58 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$58 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$58 ] { } ) always clobbers reg byte a +Statement [123] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$59 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$59 ] { } ) always clobbers reg byte a +Statement [125] (byte~) gfx_mode::$60 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$60 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$60 ] { } ) always clobbers reg byte a +Statement [126] (byte~) gfx_mode::$61 ← (byte~) gfx_mode::$60 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] { } ) always clobbers reg byte a +Statement [128] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] { } ) always clobbers reg byte a +Statement [129] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] { } ) always clobbers reg byte a +Statement [131] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] { } ) always clobbers reg byte a +Statement [132] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] { } ) always clobbers reg byte a +Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] -Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] ) always clobbers reg byte a -Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ) always clobbers reg byte a +Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:241 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [201] *((const byte*) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a -Statement [207] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ) always clobbers reg byte a -Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [201] *((const byte*) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [207] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ keyboard_event_pressed::keycode#4 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] -Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] -Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a -Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] ) always clobbers reg byte a -Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [273] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [274] *((const byte*) CIA2_PORT_A) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [275] *((const byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [276] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [277] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [278] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [279] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [280] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [281] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [283] *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ) always clobbers reg byte a +Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a +Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [273] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [274] *((const byte*) CIA2_PORT_A) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [275] *((const byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [276] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [277] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [278] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [279] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [280] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [281] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [283] *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ form_mode::i#2 form_mode::i#1 ] -Statement [286] *((const byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [287] *((const byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [290] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ) always clobbers reg byte a -Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] ) always clobbers reg byte a -Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] ) always clobbers reg byte a reg byte y +Statement [286] *((const byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [287] *((const byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [290] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a +Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a +Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Statement [325] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] ) always clobbers reg byte a reg byte y -Statement [334] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:301 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a +Statement [325] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y +Statement [334] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] { } main:2::form_mode:13::form_render_values:301 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ form_render_values::idx#2 form_render_values::idx#1 ] -Statement [338] (word) form_field_ptr::line#0 ← *((const byte*) form_line_hi + (byte) form_field_ptr::y#0) w= *((const byte*) form_line_lo + (byte) form_field_ptr::y#0) [ form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ) always clobbers reg byte a +Statement [338] (word) form_field_ptr::line#0 ← *((const byte*) form_line_hi + (byte) form_field_ptr::y#0) w= *((const byte*) form_line_lo + (byte) form_field_ptr::y#0) [ form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] -Statement [340] (byte*) form_field_ptr::return#0 ← (byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 [ form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ) always clobbers reg byte a +Statement [340] (byte*) form_field_ptr::return#0 ← (byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 [ form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:265 [ form_field_ptr::x#0 ] -Statement [358] *((const byte*) form_fields_val + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#15 + (byte) apply_preset::i#2) [ apply_preset::preset#15 apply_preset::i#2 ] ( main:2::form_mode:13::apply_preset:299 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 apply_preset::preset#15 apply_preset::i#2 ] ) always clobbers reg byte a +Statement [358] *((const byte*) form_fields_val + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#15 + (byte) apply_preset::i#2) [ apply_preset::preset#15 apply_preset::i#2 ] ( main:2::form_mode:13::apply_preset:299 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 apply_preset::preset#15 apply_preset::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:45 [ apply_preset::i#2 apply_preset::i#1 ] -Statement [362] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ) always clobbers reg byte a -Statement [363] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ) always clobbers reg byte a -Statement [368] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [369] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ) always clobbers reg byte a reg byte y -Statement [370] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y -Statement [378] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ) always clobbers reg byte a reg byte y +Statement [362] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a +Statement [363] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [368] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [369] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [370] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [378] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] -Statement [379] *((byte*) form_control::field#0) ← (byte~) form_control::$14 [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ) always clobbers reg byte y -Statement [380] (byte~) form_control::$15 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ) always clobbers reg byte a -Statement [392] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ) always clobbers reg byte a -Statement [395] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [396] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← *((const byte*) form_fields_max + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [397] *((byte*) form_control::field#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y -Statement [399] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)<=*((const byte*) form_fields_max + (byte) form_field_idx#28)) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y -Statement [400] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← (byte) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [403] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ) always clobbers reg byte a reg byte y -Statement [404] *((byte*) form_control::field#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y -Statement [411] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a +Statement [379] *((byte*) form_control::field#0) ← (byte~) form_control::$14 [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [380] (byte~) form_control::$15 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::$15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [392] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [395] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [396] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← *((const byte*) form_fields_max + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [397] *((byte*) form_control::field#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [399] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)<=*((const byte*) form_fields_max + (byte) form_field_idx#28)) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [400] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← (byte) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [403] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [404] *((byte*) form_control::field#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [411] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] -Statement [416] (byte*) print_char_cursor#67 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ) always clobbers reg byte a -Statement [418] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [421] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [424] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y +Statement [416] (byte*) print_char_cursor#67 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] { } ) always clobbers reg byte a +Statement [418] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [421] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [424] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:281 [ print_str_lines::ch#0 ] -Statement [430] (byte*) print_char_cursor#68 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ) always clobbers reg byte a -Statement [433] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a -Statement [434] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a -Statement [436] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] ) always clobbers reg byte a -Statement [440] (byte*) memset::end#0 ← (byte*)(void*) memset::str#0 + (const word) memset::num#0 [ memset::str#0 memset::end#0 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] ) always clobbers reg byte a -Statement [441] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#0 [ memset::end#0 memset::dst#4 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [443] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [445] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a +Statement [430] (byte*) print_char_cursor#68 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] { } ) always clobbers reg byte a +Statement [433] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } ) always clobbers reg byte a +Statement [434] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } ) always clobbers reg byte a +Statement [436] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] { } main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] { } ) always clobbers reg byte a +Statement [440] (byte*) memset::end#0 ← (byte*)(void*) memset::str#0 + (const word) memset::num#0 [ memset::str#0 memset::end#0 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] { } ) always clobbers reg byte a +Statement [441] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#0 [ memset::end#0 memset::dst#4 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [443] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [445] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:62 [ gfx_init_plane_fill::fill#6 ] -Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a -Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a -Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a -Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word) $3fff [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a -Statement [491] (word) gfx_init_plane_fill::gfxb#0 ← (word) $4000 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ) always clobbers reg byte a -Statement [492] (byte*) gfx_init_plane_fill::gfxb#6 ← (byte*)(word) gfx_init_plane_fill::gfxb#0 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a -Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } ) always clobbers reg byte a +Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } ) always clobbers reg byte a +Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word) $3fff [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } ) always clobbers reg byte a +Statement [491] (word) gfx_init_plane_fill::gfxb#0 ← (word) $4000 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } ) always clobbers reg byte a +Statement [492] (byte*) gfx_init_plane_fill::gfxb#6 ← (byte*)(word) gfx_init_plane_fill::gfxb#0 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } ) always clobbers reg byte a +Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:62 [ gfx_init_plane_fill::fill#6 ] Removing always clobbered register reg byte a as potential for zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] Removing always clobbered register reg byte y as potential for zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] @@ -19290,64 +19282,64 @@ Removing always clobbered register reg byte y as potential for zp[1]:66 [ gfx_in Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -Statement [518] (byte~) gfx_init_plane_horisontal2::$2 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ) always clobbers reg byte a +Statement [518] (byte~) gfx_init_plane_horisontal2::$2 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte*) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte*) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte) $f [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte) $f [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Removing always clobbered register reg byte y as potential for zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Removing always clobbered register reg byte a as potential for zp[1]:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] -Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) $ff [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) $ff [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] Removing always clobbered register reg byte y as potential for zp[1]:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] -Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [562] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [562] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] { } ) always clobbers reg byte a +Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte y as potential for zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte a as potential for zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte y as potential for zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] Removing always clobbered register reg byte y as potential for zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y +Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Removing always clobbered register reg byte y as potential for zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Statement [582] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [594] (word~) gfx_init_plane_8bppchunky::$5 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ) always clobbers reg byte a -Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← (byte)(word~) gfx_init_plane_8bppchunky::$5 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a -Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y +Statement [582] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] { } ) always clobbers reg byte a +Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a +Statement [594] (word~) gfx_init_plane_8bppchunky::$5 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] { } ) always clobbers reg byte a +Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← (byte)(word~) gfx_init_plane_8bppchunky::$5 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] { } ) always clobbers reg byte a +Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word) $140) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a -Statement [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a +Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word) $140) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] { } ) always clobbers reg byte a +Statement [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:306 [ bitmap_line::x0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:307 [ bitmap_line::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:308 [ bitmap_line::y0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:309 [ bitmap_line::y1#0 ] -Statement [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a +Statement [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:310 [ bitmap_line::xd#2 ] -Statement [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a +Statement [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:313 [ bitmap_line::xd#1 ] -Statement [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] @@ -19369,9 +19361,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:119 [ bitma Removing always clobbered register reg byte a as potential for zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] @@ -19397,292 +19389,284 @@ Removing always clobbered register reg byte y as potential for zp[1]:119 [ bitma Removing always clobbered register reg byte y as potential for zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [700] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [747] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [748] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [700] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [747] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [748] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [762] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [762] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Statement [763] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [763] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [783] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [786] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y +Statement [783] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] { } ) always clobbers reg byte a +Statement [786] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] -Statement [793] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [798] *((byte*) gfx_init_screen4::ch#2) ← (byte) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y +Statement [793] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] { } ) always clobbers reg byte a +Statement [798] *((byte*) gfx_init_screen4::ch#2) ← (byte) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] -Statement [809] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a +Statement [809] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Statement [810] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a +Statement [810] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:335 [ gfx_init_screen3::$1 ] -Statement [812] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y +Statement [812] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Statement [822] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a +Statement [822] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Statement [824] (byte) gfx_init_screen2::col2#0 ← (byte) $f - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a +Statement [824] (byte) gfx_init_screen2::col2#0 ← (byte) $f - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:339 [ gfx_init_screen2::col#0 ] -Statement [825] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a +Statement [825] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:340 [ gfx_init_screen2::col2#0 ] -Statement [827] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y +Statement [827] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Statement [837] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a +Statement [837] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] -Statement [839] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y +Statement [839] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] -Statement [850] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a +Statement [850] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [851] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a +Statement [851] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:346 [ gfx_init_screen0::$1 ] -Statement [853] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y +Statement [853] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [860] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [861] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a -Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] ) always clobbers reg byte a -Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a -Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] ) always clobbers reg byte a -Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a -Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a -Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] ) always clobbers reg byte a -Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a -Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] ) always clobbers reg byte a -Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a -Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] ) always clobbers reg byte a -Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a -Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a -Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ) always clobbers reg byte a -Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ) always clobbers reg byte a -Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] ) always clobbers reg byte a -Statement [53] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ) always clobbers reg byte a -Statement [54] (byte~) gfx_mode::$23 ← < (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 gfx_mode::$23 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 gfx_mode::$23 ] ) always clobbers reg byte a -Statement [56] (byte~) gfx_mode::$25 ← > (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ) always clobbers reg byte a -Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] ) always clobbers reg byte a -Statement [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [ keyboard_events_size#24 gfx_mode::$27 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$27 ] ) always clobbers reg byte a -Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a -Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a -Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a -Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a -Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a -Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a -Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ) always clobbers reg byte a -Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ) always clobbers reg byte a -Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] ) always clobbers reg byte a -Statement [75] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ) always clobbers reg byte a -Statement [76] (byte~) gfx_mode::$37 ← < (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 gfx_mode::$37 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 gfx_mode::$37 ] ) always clobbers reg byte a -Statement [78] (byte~) gfx_mode::$39 ← > (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ) always clobbers reg byte a -Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] ) always clobbers reg byte a -Statement [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [ keyboard_events_size#24 gfx_mode::$41 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$41 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a -Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a -Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a -Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a -Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#10 ] ) always clobbers reg byte a -Statement [95] (byte*~) gfx_mode::$47 ← (byte*) get_vic_screen::return#10 [ keyboard_events_size#24 gfx_mode::$47 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$47 ] ) always clobbers reg byte a -Statement [96] (word~) gfx_mode::$48 ← (word)(byte*~) gfx_mode::$47 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$48 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$48 ] ) always clobbers reg byte a -Statement [97] (word~) gfx_mode::$49 ← (word~) gfx_mode::$48 >> (byte) 6 [ keyboard_events_size#24 gfx_mode::$49 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$49 ] ) always clobbers reg byte a -Statement [98] (byte~) gfx_mode::$50 ← (byte)(word~) gfx_mode::$49 [ keyboard_events_size#24 gfx_mode::$50 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 ] ) always clobbers reg byte a -Statement [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 [ keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ) always clobbers reg byte a -Statement [102] (byte*~) gfx_mode::$52 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ) always clobbers reg byte a -Statement [103] (word~) gfx_mode::$53 ← (word)(byte*~) gfx_mode::$52 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ) always clobbers reg byte a -Statement [104] (byte~) gfx_mode::$54 ← > (word~) gfx_mode::$53 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$54 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$54 ] ) always clobbers reg byte a -Statement [105] (byte~) gfx_mode::$55 ← (byte~) gfx_mode::$54 >> (byte) 2 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ) always clobbers reg byte a -Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] ) always clobbers reg byte a -Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a -Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y -Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [122] (byte~) gfx_mode::$58 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$58 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$58 ] ) always clobbers reg byte a -Statement [123] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$59 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$59 ] ) always clobbers reg byte a -Statement [125] (byte~) gfx_mode::$60 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$60 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$60 ] ) always clobbers reg byte a -Statement [126] (byte~) gfx_mode::$61 ← (byte~) gfx_mode::$60 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] ) always clobbers reg byte a -Statement [128] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a -Statement [129] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a -Statement [131] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a -Statement [132] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a -Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] ) always clobbers reg byte a -Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] ) always clobbers reg byte a -Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] ) always clobbers reg byte a -Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] ) always clobbers reg byte a -Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ) always clobbers reg byte a -Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [201] *((const byte*) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a -Statement [207] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ) always clobbers reg byte a -Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a -Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] ) always clobbers reg byte a -Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [273] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [274] *((const byte*) CIA2_PORT_A) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [275] *((const byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [276] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [277] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [278] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [279] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [280] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [281] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [283] *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ) always clobbers reg byte a -Statement [286] *((const byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [287] *((const byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a -Statement [290] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ) always clobbers reg byte a -Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] ) always clobbers reg byte a -Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] ) always clobbers reg byte a reg byte y -Statement [325] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] ) always clobbers reg byte a reg byte y -Statement [334] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:301 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a -Statement [338] (word) form_field_ptr::line#0 ← *((const byte*) form_line_hi + (byte) form_field_ptr::y#0) w= *((const byte*) form_line_lo + (byte) form_field_ptr::y#0) [ form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ) always clobbers reg byte a -Statement [340] (byte*) form_field_ptr::return#0 ← (byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 [ form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ) always clobbers reg byte a -Statement [358] *((const byte*) form_fields_val + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#15 + (byte) apply_preset::i#2) [ apply_preset::preset#15 apply_preset::i#2 ] ( main:2::form_mode:13::apply_preset:299 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 apply_preset::preset#15 apply_preset::i#2 ] ) always clobbers reg byte a -Statement [362] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ) always clobbers reg byte a -Statement [363] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ) always clobbers reg byte a -Statement [368] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [369] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ) always clobbers reg byte a reg byte y -Statement [370] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y -Statement [378] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ) always clobbers reg byte a reg byte y -Statement [379] *((byte*) form_control::field#0) ← (byte~) form_control::$14 [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ) always clobbers reg byte y -Statement [380] (byte~) form_control::$15 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ) always clobbers reg byte a -Statement [392] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ) always clobbers reg byte a -Statement [395] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [396] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← *((const byte*) form_fields_max + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [397] *((byte*) form_control::field#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y -Statement [399] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)<=*((const byte*) form_fields_max + (byte) form_field_idx#28)) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y -Statement [400] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← (byte) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [403] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ) always clobbers reg byte a reg byte y -Statement [404] *((byte*) form_control::field#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y -Statement [411] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a -Statement [416] (byte*) print_char_cursor#67 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ) always clobbers reg byte a -Statement [418] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [421] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [424] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [430] (byte*) print_char_cursor#68 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ) always clobbers reg byte a -Statement [433] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a -Statement [434] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a -Statement [436] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] ) always clobbers reg byte a -Statement [440] (byte*) memset::end#0 ← (byte*)(void*) memset::str#0 + (const word) memset::num#0 [ memset::str#0 memset::end#0 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] ) always clobbers reg byte a -Statement [441] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#0 [ memset::end#0 memset::dst#4 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [443] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [445] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a -Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a -Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a -Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a -Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word) $3fff [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a -Statement [491] (word) gfx_init_plane_fill::gfxb#0 ← (word) $4000 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ) always clobbers reg byte a -Statement [492] (byte*) gfx_init_plane_fill::gfxb#6 ← (byte*)(word) gfx_init_plane_fill::gfxb#0 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a -Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [860] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [861] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] { } ) always clobbers reg byte a +Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] { } ) always clobbers reg byte a +Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] { } ) always clobbers reg byte a +Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] { } ) always clobbers reg byte a +Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] { } ) always clobbers reg byte a +Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] { } ) always clobbers reg byte a +Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] { } ) always clobbers reg byte a +Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] { } ) always clobbers reg byte a +Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] { } ) always clobbers reg byte a +Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] { } ) always clobbers reg byte a +Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] { } ) always clobbers reg byte a +Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a +Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a +Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] { { get_plane::idx#0 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#16 } } ) always clobbers reg byte a +Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [53] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$24 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] { { get_plane::idx#1 = get_plane::idx#10 } { get_plane::return#14 = get_plane::return#17 } } ) always clobbers reg byte a +Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [75] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$38 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#10 ] { { get_vic_screen::idx#0 = get_vic_screen::idx#2 } { get_vic_screen::return#10 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [95] (byte*~) gfx_mode::$47 ← (byte*) get_vic_screen::return#10 [ keyboard_events_size#24 gfx_mode::$47 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$47 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [96] (word~) gfx_mode::$48 ← (word)(byte*~) gfx_mode::$47 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$48 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$48 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [97] (word~) gfx_mode::$49 ← (word~) gfx_mode::$48 >> (byte) 6 [ keyboard_events_size#24 gfx_mode::$49 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$49 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [98] (byte~) gfx_mode::$50 ← (byte)(word~) gfx_mode::$49 [ keyboard_events_size#24 gfx_mode::$50 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 [ keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 get_vic_charset::return#4 ] { { get_vic_charset::return#2 = get_vic_charset::return#4 } } ) always clobbers reg byte a +Statement [102] (byte*~) gfx_mode::$52 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$52 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [103] (word~) gfx_mode::$53 ← (word)(byte*~) gfx_mode::$52 & (word) $3fff [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$53 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [105] (byte~) gfx_mode::$55 ← (byte~) gfx_mode::$54 >> (byte) 2 [ keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$50 gfx_mode::$55 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a +Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] { } ) always clobbers reg byte a +Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [122] (byte~) gfx_mode::$58 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$58 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$58 ] { } ) always clobbers reg byte a +Statement [123] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$59 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$59 ] { } ) always clobbers reg byte a +Statement [125] (byte~) gfx_mode::$60 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$60 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$60 ] { } ) always clobbers reg byte a +Statement [126] (byte~) gfx_mode::$61 ← (byte~) gfx_mode::$60 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] { } ) always clobbers reg byte a +Statement [128] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] { } ) always clobbers reg byte a +Statement [129] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] { } ) always clobbers reg byte a +Statement [131] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] { } ) always clobbers reg byte a +Statement [132] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] { } ) always clobbers reg byte a +Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] { } ) always clobbers reg byte a +Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [201] *((const byte*) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [207] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#105 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a +Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a +Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a +Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#10 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#2 } } main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#3 } } ) always clobbers reg byte a +Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_matrix_read::return#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [273] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [274] *((const byte*) CIA2_PORT_A) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [275] *((const byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [276] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [277] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [278] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [279] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [280] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [281] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [283] *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] { } ) always clobbers reg byte a +Statement [286] *((const byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [287] *((const byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [290] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a +Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a +Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y +Statement [325] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y +Statement [334] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] { } main:2::form_mode:13::form_render_values:301 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] { } ) always clobbers reg byte a +Statement [338] (word) form_field_ptr::line#0 ← *((const byte*) form_line_hi + (byte) form_field_ptr::y#0) w= *((const byte*) form_line_lo + (byte) form_field_ptr::y#0) [ form_field_ptr::line#0 form_field_ptr::field_idx#2 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::field_idx#2 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a +Statement [340] (byte*) form_field_ptr::return#0 ← (byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 [ form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] ( main:2::form_mode:13::form_render_values:267::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_render_values:301::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_field_ptr::field_idx#0 = form_field_ptr::field_idx#2 form_render_values::idx#2 } } main:2::form_mode:13::form_control:292::form_field_ptr:361 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_field_ptr::return#0 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a +Statement [358] *((const byte*) form_fields_val + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#15 + (byte) apply_preset::i#2) [ apply_preset::preset#15 apply_preset::i#2 ] ( main:2::form_mode:13::apply_preset:299 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 apply_preset::preset#15 apply_preset::i#2 ] { } ) always clobbers reg byte a +Statement [362] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#3 ] { { form_control::return#0 = form_control::return#2 } { form_field_ptr::field_idx#1 = form_field_ptr::field_idx#2 form_field_idx#28 } { form_field_ptr::return#0 = form_field_ptr::return#3 } } ) always clobbers reg byte a +Statement [363] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_control::field#0 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [368] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [369] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$12 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [370] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [378] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 form_control::field#0 form_control::$14 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [379] *((byte*) form_control::field#0) ← (byte~) form_control::$14 [ keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 keyboard_modifiers#21 form_field_idx#28 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [380] (byte~) form_control::$15 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::$15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::$15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [392] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [395] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [396] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← *((const byte*) form_fields_max + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [397] *((byte*) form_control::field#0) ← *((const byte*) print_hextab + *((const byte*) form_fields_val + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [399] if(*((const byte*) form_fields_val + (byte) form_field_idx#28)<=*((const byte*) form_fields_max + (byte) form_field_idx#28)) goto form_control::@16 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [400] *((const byte*) form_fields_val + (byte) form_field_idx#28) ← (byte) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a +Statement [403] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$13 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte a reg byte y +Statement [404] *((byte*) form_control::field#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] { { form_control::return#0 = form_control::return#2 } } ) always clobbers reg byte y +Statement [411] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] { } ) always clobbers reg byte a +Statement [416] (byte*) print_char_cursor#67 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#67 print_set_screen::screen#2 ] { } ) always clobbers reg byte a +Statement [418] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [421] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [424] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] { } ) always clobbers reg byte y +Statement [430] (byte*) print_char_cursor#68 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] { } main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#68 print_line_cursor#22 ] { } ) always clobbers reg byte a +Statement [433] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } ) always clobbers reg byte a +Statement [434] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } main:2::form_mode:13::print_str_lines:263::print_ln:429 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] { } ) always clobbers reg byte a +Statement [436] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] { } main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] { } ) always clobbers reg byte a +Statement [440] (byte*) memset::end#0 ← (byte*)(void*) memset::str#0 + (const word) memset::num#0 [ memset::str#0 memset::end#0 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 memset::end#0 ] { } ) always clobbers reg byte a +Statement [441] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#0 [ memset::end#0 memset::dst#4 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [443] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [445] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::end#0 memset::dst#2 ] ( main:2::form_mode:13::print_cls:255::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } main:2::form_mode:13::print_cls:261::memset:437 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } ) always clobbers reg byte a +Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] { { dtvSetCpuBankSegment1::cpuBankIdx#11 = dtvSetCpuBankSegment1::cpuBankIdx#13 gfx_init_plane_fill::gfxbCpuBank#0 } } ) always clobbers reg byte a +Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] { } ) always clobbers reg byte a +Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word) $3fff [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] { } ) always clobbers reg byte a +Statement [491] (word) gfx_init_plane_fill::gfxb#0 ← (word) $4000 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#0 ] { } ) always clobbers reg byte a +Statement [492] (byte*) gfx_init_plane_fill::gfxb#6 ← (byte*)(word) gfx_init_plane_fill::gfxb#0 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] { } ) always clobbers reg byte a +Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] { } ) always clobbers reg byte a reg byte y Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [518] (byte~) gfx_init_plane_horisontal2::$2 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ) always clobbers reg byte a -Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte*) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte) $f [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y -Statement [546] (byte~) gfx_init_plane_horisontal::$2 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$2 ] ) always clobbers reg byte a -Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) $ff [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [562] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y -Statement [582] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [594] (word~) gfx_init_plane_8bppchunky::$5 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ) always clobbers reg byte a -Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← (byte)(word~) gfx_init_plane_8bppchunky::$5 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a -Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y -Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word) $140) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a -Statement [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a -Statement [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a -Statement [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a -Statement [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [700] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [747] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [748] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [762] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [763] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [771] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [783] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [786] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y -Statement [793] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [798] *((byte*) gfx_init_screen4::ch#2) ← (byte) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y -Statement [808] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a -Statement [809] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a -Statement [810] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a -Statement [812] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y -Statement [822] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a -Statement [824] (byte) gfx_init_screen2::col2#0 ← (byte) $f - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a -Statement [825] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a -Statement [827] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y -Statement [837] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a -Statement [839] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y -Statement [849] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a -Statement [850] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a -Statement [851] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a -Statement [853] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y -Statement [860] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [861] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [518] (byte~) gfx_init_plane_horisontal2::$2 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$2 ] { } ) always clobbers reg byte a +Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte*) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte) $f [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [546] (byte~) gfx_init_plane_horisontal::$2 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$2 ] { } ) always clobbers reg byte a +Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) $ff [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [562] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] { } ) always clobbers reg byte a +Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] { } ) always clobbers reg byte a reg byte y +Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y +Statement [582] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] { } ) always clobbers reg byte a +Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a +Statement [594] (word~) gfx_init_plane_8bppchunky::$5 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$5 ] { } ) always clobbers reg byte a +Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← (byte)(word~) gfx_init_plane_8bppchunky::$5 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] { } ) always clobbers reg byte a +Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] { } ) always clobbers reg byte y +Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word) $140) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] { } ) always clobbers reg byte a +Statement [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a +Statement [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a +Statement [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a +Statement [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y +Statement [700] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:616::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [747] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [748] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a +Statement [762] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [763] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [771] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a +Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [783] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] { } ) always clobbers reg byte a +Statement [786] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] { } ) always clobbers reg byte a reg byte y +Statement [793] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] { } ) always clobbers reg byte a +Statement [798] *((byte*) gfx_init_screen4::ch#2) ← (byte) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [808] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] { } ) always clobbers reg byte a +Statement [809] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] { } ) always clobbers reg byte a +Statement [810] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] { } ) always clobbers reg byte a +Statement [812] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] { } ) always clobbers reg byte y +Statement [822] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] { } ) always clobbers reg byte a +Statement [824] (byte) gfx_init_screen2::col2#0 ← (byte) $f - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] { } ) always clobbers reg byte a +Statement [825] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] { } ) always clobbers reg byte a +Statement [827] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] { } ) always clobbers reg byte y +Statement [837] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] { } ) always clobbers reg byte a +Statement [839] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] { } ) always clobbers reg byte y +Statement [849] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] { } ) always clobbers reg byte a +Statement [850] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a +Statement [851] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] { } ) always clobbers reg byte a +Statement [853] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] { } ) always clobbers reg byte y +Statement [860] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [861] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ gfx_mode::vic_control2#2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -19948,47 +19932,47 @@ Potential registers zp[1]:347 [ gfx_init_screen0::$2 ] : zp[1]:347 , reg byte a Potential registers zp[1]:348 [ gfx_init_screen0::$3 ] : zp[1]:348 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 200,002: zp[1]:250 [ keyboard_event_scan::$15 ] 200,002: zp[1]:251 [ keyboard_event_scan::$16 ] 200,002: zp[1]:252 [ keyboard_event_scan::event_type#0 ] 200,002: zp[1]:253 [ keyboard_event_scan::$23 ] 178,573.21: zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 119,043.1: zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 21,001.74: zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 12,778.06: zp[1]:241 [ keyboard_event_scan::row_scan#0 ] 4: zp[1]:243 [ keyboard_event_scan::$0 ] 4: zp[1]:245 [ keyboard_event_scan::$3 ] 4: zp[1]:247 [ keyboard_event_scan::$6 ] 4: zp[1]:249 [ keyboard_event_scan::$9 ] -Uplift Scope [] 588,355.31: zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] 3,703: zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#67 print_char_cursor#68 print_char_cursor#38 print_char_cursor#1 ] 2,654.02: zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 226.56: zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 105.45: zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] 16.73: zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] -Uplift Scope [keyboard_matrix_read] 20,002: zp[1]:240 [ keyboard_matrix_read::return#2 ] 10,003: zp[1]:239 [ keyboard_matrix_read::rowid#0 ] 3,334.33: zp[1]:258 [ keyboard_matrix_read::return#0 ] -Uplift Scope [gfx_init_plane_charset8] 4,004: zp[1]:89 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,002: zp[1]:302 [ gfx_init_plane_charset8::$2 ] 1,723.94: zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,044.93: zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 845.22: zp[2]:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 783: zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 192.31: zp[2]:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 165.93: zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 17.79: zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplift Scope [gfx_mode] 2,104.5: zp[2]:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] 2,002: zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] 1,663.27: zp[2]:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] 353.5: zp[1]:11 [ gfx_mode::j#2 gfx_mode::j#1 ] 353.5: zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] 202: zp[1]:238 [ gfx_mode::keyboard_event#0 ] 180.36: zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] 44: zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] 12: zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] 4: zp[1]:158 [ gfx_mode::$18 ] 4: zp[4]:164 [ gfx_mode::$20 ] 4: zp[1]:174 [ gfx_mode::$23 ] 4: zp[1]:175 [ gfx_mode::$25 ] 4: zp[2]:176 [ gfx_mode::$26 ] 4: zp[1]:178 [ gfx_mode::$27 ] 4: zp[1]:179 [ gfx_mode::$28 ] 4: zp[1]:180 [ gfx_mode::$29 ] 4: zp[1]:181 [ gfx_mode::$30 ] 4: zp[1]:182 [ gfx_mode::$31 ] 4: zp[1]:183 [ gfx_mode::$32 ] 4: zp[4]:189 [ gfx_mode::$34 ] 4: zp[1]:199 [ gfx_mode::$37 ] 4: zp[1]:200 [ gfx_mode::$39 ] 4: zp[2]:201 [ gfx_mode::$40 ] 4: zp[1]:203 [ gfx_mode::$41 ] 4: zp[1]:204 [ gfx_mode::$42 ] 4: zp[1]:205 [ gfx_mode::$43 ] 4: zp[1]:206 [ gfx_mode::$44 ] 4: zp[1]:207 [ gfx_mode::$45 ] 4: zp[2]:212 [ gfx_mode::$48 ] 4: zp[2]:222 [ gfx_mode::$53 ] 4: zp[1]:224 [ gfx_mode::$54 ] 4: zp[1]:225 [ gfx_mode::$55 ] 4: zp[1]:226 [ gfx_mode::$56 ] 4: zp[1]:229 [ gfx_mode::$58 ] 4: zp[1]:230 [ gfx_mode::$59 ] 4: zp[1]:231 [ gfx_mode::$60 ] 4: zp[1]:232 [ gfx_mode::$61 ] 4: zp[1]:233 [ gfx_mode::$62 ] 4: zp[1]:234 [ gfx_mode::$63 ] 4: zp[1]:235 [ gfx_mode::$64 ] 4: zp[1]:236 [ gfx_mode::$65 ] 2: zp[1]:4 [ gfx_mode::vic_control2#2 ] 2: zp[2]:172 [ gfx_mode::$24 ] 2: zp[2]:197 [ gfx_mode::$38 ] 2: zp[2]:210 [ gfx_mode::$47 ] 2: zp[2]:214 [ gfx_mode::$49 ] 2: zp[2]:220 [ gfx_mode::$52 ] 1: zp[4]:168 [ gfx_mode::plane_a#0 ] 1: zp[4]:193 [ gfx_mode::plane_b#0 ] 0.8: zp[1]:159 [ gfx_mode::plane_a_offs#0 ] 0.8: zp[1]:184 [ gfx_mode::plane_b_offs#0 ] 0.5: zp[1]:216 [ gfx_mode::$50 ] -Uplift Scope [print_str_at] 3,005.5: zp[2]:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] 2,002: zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 ] -Uplift Scope [apply_preset] 3,670.33: zp[1]:45 [ apply_preset::i#2 apply_preset::i#1 ] 200.2: zp[2]:43 [ apply_preset::preset#15 ] 11.18: zp[1]:261 [ apply_preset::idx#0 ] -Uplift Scope [form_render_values] 3,003: zp[1]:41 [ form_render_values::idx#2 form_render_values::idx#1 ] -Uplift Scope [form_mode] 2,002: zp[1]:260 [ form_mode::$11 ] 442.75: zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] 353.5: zp[1]:30 [ form_mode::i#2 form_mode::i#1 ] -Uplift Scope [print_str_lines] 1,939.17: zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] 667.33: zp[1]:281 [ print_str_lines::ch#0 ] -Uplift Scope [form_field_ptr] 2,341.67: zp[1]:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] 251.25: zp[1]:265 [ form_field_ptr::x#0 ] 6: zp[1]:262 [ form_field_ptr::y#0 ] 4: zp[2]:268 [ form_field_ptr::return#3 ] 1.33: zp[2]:266 [ form_field_ptr::return#0 ] 0.4: zp[2]:263 [ form_field_ptr::line#0 ] -Uplift Scope [form_control] 2,002: zp[1]:259 [ form_control::return#0 ] 333.67: zp[1]:46 [ form_control::return#2 ] 4: zp[1]:272 [ form_control::$12 ] 4: zp[1]:275 [ form_control::$14 ] 4: zp[1]:276 [ form_control::$15 ] 4: zp[1]:277 [ form_control::$22 ] 4: zp[1]:278 [ form_control::$13 ] 2.67: zp[1]:274 [ form_control::key_event#0 ] 0.59: zp[2]:270 [ form_control::field#0 ] -Uplift Scope [bitmap_plot] 1,012: zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 506.5: zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp[2]:319 [ bitmap_plot::plotter_y#0 ] 4: zp[1]:323 [ bitmap_plot::$1 ] 2: zp[2]:317 [ bitmap_plot::plotter_x#0 ] 1: zp[2]:321 [ bitmap_plot::plotter#0 ] -Uplift Scope [gfx_init_screen2] 202: zp[1]:338 [ gfx_init_screen2::$0 ] 202: zp[1]:341 [ gfx_init_screen2::$3 ] 202: zp[1]:342 [ gfx_init_screen2::$4 ] 189.38: zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] 151.5: zp[1]:339 [ gfx_init_screen2::col#0 ] 109.46: zp[2]:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] 101: zp[1]:340 [ gfx_init_screen2::col2#0 ] 27.68: zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Uplift Scope [gfx_init_plane_8bppchunky] 362.64: zp[1]:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] 297.35: zp[2]:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] 202: zp[1]:305 [ gfx_init_plane_8bppchunky::c#0 ] 181.8: zp[2]:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] 101: zp[2]:303 [ gfx_init_plane_8bppchunky::$5 ] 25.96: zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Uplift Scope [bitmap_line_xdyi] 482.47: zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 265: zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 202: zp[1]:316 [ bitmap_line_xdyi::$6 ] 118.72: zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 18.71: zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 15.64: zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 10.17: zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Uplift Scope [bitmap_line_xdyd] 482.47: zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 265: zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 202: zp[1]:325 [ bitmap_line_xdyd::$6 ] 118.72: zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 18.71: zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 15.64: zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 10.17: zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Uplift Scope [bitmap_line_ydxi] 482.47: zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 265: zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 202: zp[1]:324 [ bitmap_line_ydxi::$6 ] 118.72: zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 18.71: zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 15.64: zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 10.17: zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Uplift Scope [bitmap_line_ydxd] 482.47: zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 265: zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 202: zp[1]:326 [ bitmap_line_ydxd::$6 ] 118.72: zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 18.71: zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 15.64: zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 10.17: zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplift Scope [gfx_init_screen0] 202: zp[1]:345 [ gfx_init_screen0::$0 ] 202: zp[1]:347 [ gfx_init_screen0::$2 ] 202: zp[1]:348 [ gfx_init_screen0::$3 ] 194.79: zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 116.93: zp[2]:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 101: zp[1]:346 [ gfx_init_screen0::$1 ] 28.8: zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplift Scope [gfx_init_screen3] 202: zp[1]:334 [ gfx_init_screen3::$0 ] 202: zp[1]:336 [ gfx_init_screen3::$2 ] 202: zp[1]:337 [ gfx_init_screen3::$3 ] 194.79: zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] 116.93: zp[2]:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] 101: zp[1]:335 [ gfx_init_screen3::$1 ] 28.8: zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Uplift Scope [gfx_init_plane_horisontal] 592: zp[2]:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] 202: zp[1]:301 [ gfx_init_plane_horisontal::$2 ] 176.75: zp[1]:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] 27.68: zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Uplift Scope [gfx_init_screen1] 212.1: zp[1]:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] 202: zp[1]:343 [ gfx_init_screen1::$0 ] 202: zp[1]:344 [ gfx_init_screen1::$1 ] 143.1: zp[2]:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] 31.88: zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Uplift Scope [form_set_screen] 218.83: zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] 202: zp[1]:279 [ form_set_screen::$0 ] 202: zp[1]:280 [ form_set_screen::$1 ] 148.13: zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] -Uplift Scope [gfx_init_plane_horisontal2] 202: zp[1]:299 [ gfx_init_plane_horisontal2::$2 ] 202: zp[1]:300 [ gfx_init_plane_horisontal2::row#0 ] 191.9: zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] 143.1: zp[2]:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] 31.88: zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Uplift Scope [gfx_init_charset] 214.5: zp[2]:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] 202: zp[1]:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] 169.27: zp[2]:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] 19.64: zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplift Scope [gfx_init_plane_fill] 227.6: zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] 218.83: zp[1]:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] 20.17: zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] 5.61: zp[1]:62 [ gfx_init_plane_fill::fill#6 ] 4: zp[4]:286 [ gfx_init_plane_fill::$0 ] 4: zp[2]:290 [ gfx_init_plane_fill::$1 ] 4: zp[1]:292 [ gfx_init_plane_fill::gfxbCpuBank#0 ] 4: zp[2]:293 [ gfx_init_plane_fill::$4 ] 4: zp[2]:295 [ gfx_init_plane_fill::$5 ] 2: zp[2]:297 [ gfx_init_plane_fill::gfxb#0 ] 0.67: zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] -Uplift Scope [bitmap_clear] 227.6: zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:327 [ bitmap_clear::bitmap#0 ] -Uplift Scope [gfx_init_screen4] 221.6: zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] 218.83: zp[1]:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] 20.17: zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplift Scope [gfx_init_plane_vertical] 221.6: zp[2]:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] 218.83: zp[1]:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] 20.17: zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplift Scope [memset] 341.33: zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 17.17: zp[2]:284 [ memset::end#0 ] 0.67: zp[2]:282 [ memset::str#0 ] -Uplift Scope [dtvSetCpuBankSegment1] 311: zp[1]:67 [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] -Uplift Scope [keyboard_event_get] 202: zp[1]:237 [ keyboard_event_get::return#3 ] 30.25: zp[1]:13 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 4: zp[1]:273 [ keyboard_event_get::return#4 ] -Uplift Scope [render_preset_name] 217.36: zp[1]:34 [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] 2: zp[2]:35 [ render_preset_name::name#13 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 24.93: zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 23.83: zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:329 [ bitmap_init::$0 ] 22: zp[1]:331 [ bitmap_init::$7 ] 22: zp[1]:332 [ bitmap_init::$8 ] 22: zp[1]:333 [ bitmap_init::$9 ] 5.5: zp[1]:330 [ bitmap_init::$10 ] -Uplift Scope [gfx_init_vic_bitmap] 33: zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplift Scope [keyboard_event_pressed] 4: zp[1]:242 [ keyboard_event_pressed::return#0 ] 4: zp[1]:244 [ keyboard_event_pressed::return#1 ] 4: zp[1]:246 [ keyboard_event_pressed::return#2 ] 4: zp[1]:248 [ keyboard_event_pressed::return#3 ] 4: zp[1]:254 [ keyboard_event_pressed::$0 ] 4: zp[1]:256 [ keyboard_event_pressed::$1 ] 2: zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] 1.67: zp[1]:257 [ keyboard_event_pressed::return#10 ] 1.33: zp[1]:19 [ keyboard_event_pressed::keycode#4 ] -Uplift Scope [get_vic_screen] 10.8: zp[1]:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] 4: zp[2]:208 [ get_vic_screen::return#10 ] 4: zp[2]:227 [ get_vic_screen::return#11 ] 1: zp[2]:21 [ get_vic_screen::return#5 ] -Uplift Scope [get_plane] 10.29: zp[1]:25 [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] 4: zp[4]:160 [ get_plane::return#16 ] 4: zp[4]:185 [ get_plane::return#17 ] 1: zp[4]:26 [ get_plane::return#14 ] -Uplift Scope [bitmap_line] 1.75: zp[1]:309 [ bitmap_line::y1#0 ] 1.67: zp[1]:308 [ bitmap_line::y0#0 ] 1.32: zp[1]:307 [ bitmap_line::x1#0 ] 1.26: zp[1]:306 [ bitmap_line::x0#0 ] 0.89: zp[1]:311 [ bitmap_line::yd#2 ] 0.89: zp[1]:312 [ bitmap_line::yd#1 ] 0.89: zp[1]:314 [ bitmap_line::yd#10 ] 0.89: zp[1]:315 [ bitmap_line::yd#11 ] 0.7: zp[1]:310 [ bitmap_line::xd#2 ] 0.7: zp[1]:313 [ bitmap_line::xd#1 ] -Uplift Scope [get_vic_charset] 4: zp[2]:218 [ get_vic_charset::return#4 ] 3: zp[1]:217 [ get_vic_charset::idx#0 ] 0.67: zp[2]:23 [ get_vic_charset::return#2 ] +Uplift Scope [keyboard_event_scan] 20,000,000,000,002: zp[1]:250 [ keyboard_event_scan::$15 ] 20,000,000,000,002: zp[1]:251 [ keyboard_event_scan::$16 ] 20,000,000,000,002: zp[1]:252 [ keyboard_event_scan::event_type#0 ] 20,000,000,000,002: zp[1]:253 [ keyboard_event_scan::$23 ] 17,857,142,857,144.64: zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,903,846,153,850.79: zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 2,100,000,000,001.74: zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,277,777,777,778.06: zp[1]:241 [ keyboard_event_scan::row_scan#0 ] 200,000,002: zp[1]:243 [ keyboard_event_scan::$0 ] 200,000,002: zp[1]:245 [ keyboard_event_scan::$3 ] 200,000,002: zp[1]:247 [ keyboard_event_scan::$6 ] 200,000,002: zp[1]:249 [ keyboard_event_scan::$9 ] +Uplift Scope [] 58,817,091,702,750.98: zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] 26,011,318,837.72: zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 1,464,082,151.93: zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#67 print_char_cursor#68 print_char_cursor#38 print_char_cursor#1 ] 820,000,008.36: zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] 56,804,892.25: zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] 15,415,305.17: zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] +Uplift Scope [keyboard_matrix_read] 11,000,000,000,002: zp[1]:239 [ keyboard_matrix_read::rowid#0 ] 3,666,666,666,667.33: zp[1]:258 [ keyboard_matrix_read::return#0 ] 2,000,000,000,002: zp[1]:240 [ keyboard_matrix_read::return#2 ] +Uplift Scope [print_str_at] 30,008,000,004.25: zp[2]:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] 20,000,000,002: zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 ] +Uplift Scope [form_field_ptr] 30,000,000,003: zp[1]:262 [ form_field_ptr::y#0 ] 9,023,333,338.67: zp[1]:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] 5,250,000,000.75: zp[1]:265 [ form_field_ptr::x#0 ] 3,336,666,667.33: zp[2]:266 [ form_field_ptr::return#0 ] 2,000,000,000.2: zp[2]:263 [ form_field_ptr::line#0 ] 20,000,002: zp[2]:268 [ form_field_ptr::return#3 ] +Uplift Scope [bitmap_plot] 2,000,000,011: zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 2,000,000,002: zp[2]:319 [ bitmap_plot::plotter_y#0 ] 2,000,000,002: zp[1]:323 [ bitmap_plot::$1 ] 1,250,000,005.75: zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 1,000,000,001: zp[2]:317 [ bitmap_plot::plotter_x#0 ] 500,000,000.5: zp[2]:321 [ bitmap_plot::plotter#0 ] +Uplift Scope [keyboard_event_pressed] 2,000,000,002: zp[1]:254 [ keyboard_event_pressed::$0 ] 2,000,000,002: zp[1]:256 [ keyboard_event_pressed::$1 ] 1,000,000,001: zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] 666,666,667.33: zp[1]:19 [ keyboard_event_pressed::keycode#4 ] 233,333,334.17: zp[1]:257 [ keyboard_event_pressed::return#10 ] 200,000,002: zp[1]:242 [ keyboard_event_pressed::return#0 ] 200,000,002: zp[1]:244 [ keyboard_event_pressed::return#1 ] 200,000,002: zp[1]:246 [ keyboard_event_pressed::return#2 ] 200,000,002: zp[1]:248 [ keyboard_event_pressed::return#3 ] +Uplift Scope [apply_preset] 3,666,666,670.33: zp[1]:45 [ apply_preset::i#2 apply_preset::i#1 ] 200,000,000.2: zp[2]:43 [ apply_preset::preset#15 ] 1,009,092: zp[1]:261 [ apply_preset::idx#0 ] +Uplift Scope [form_render_values] 3,000,000,003: zp[1]:41 [ form_render_values::idx#2 form_render_values::idx#1 ] +Uplift Scope [bitmap_line_xdyi] 475,533,340.27: zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 257,985,719.5: zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 200,000,002: zp[1]:316 [ bitmap_line_xdyi::$6 ] 113,430,003.68: zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 14,500,002.29: zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 7,628,575.71: zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 7,290,477.74: zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Uplift Scope [bitmap_line_xdyd] 475,533,340.27: zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 257,985,719.5: zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 200,000,002: zp[1]:325 [ bitmap_line_xdyd::$6 ] 113,430,003.68: zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 14,500,002.29: zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 7,628,575.71: zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 7,290,477.74: zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Uplift Scope [bitmap_line_ydxi] 475,533,340.27: zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 257,985,719.5: zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 200,000,002: zp[1]:324 [ bitmap_line_ydxi::$6 ] 113,430,003.68: zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 14,500,002.29: zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 7,628,575.71: zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 7,290,477.74: zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Uplift Scope [bitmap_line_ydxd] 475,533,340.27: zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 257,985,719.5: zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 200,000,002: zp[1]:326 [ bitmap_line_ydxd::$6 ] 113,430,003.68: zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 14,500,002.29: zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 7,628,575.71: zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 7,290,477.74: zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplift Scope [keyboard_event_get] 227,525,002.75: zp[1]:13 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 20,000,002: zp[1]:273 [ keyboard_event_get::return#4 ] 200,002: zp[1]:237 [ keyboard_event_get::return#3 ] +Uplift Scope [form_control] 20,000,002: zp[1]:272 [ form_control::$12 ] 20,000,002: zp[1]:275 [ form_control::$14 ] 20,000,002: zp[1]:276 [ form_control::$15 ] 20,000,002: zp[1]:277 [ form_control::$22 ] 20,000,002: zp[1]:278 [ form_control::$13 ] 13,333,334.67: zp[1]:274 [ form_control::key_event#0 ] 2,962,963.26: zp[2]:270 [ form_control::field#0 ] 2,000,002: zp[1]:259 [ form_control::return#0 ] 333,333.67: zp[1]:46 [ form_control::return#2 ] +Uplift Scope [memset] 33,566,672.33: zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,683,333.67: zp[2]:284 [ memset::end#0 ] 3,333.67: zp[2]:282 [ memset::str#0 ] +Uplift Scope [print_str_lines] 19,343,338.17: zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] 6,666,667.33: zp[1]:281 [ print_str_lines::ch#0 ] +Uplift Scope [gfx_init_plane_charset8] 4,000,004: zp[1]:89 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,000,002: zp[1]:302 [ gfx_init_plane_charset8::$2 ] 1,722,223.94: zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,042,859.21: zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 841,115.22: zp[2]:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 778,932.64: zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 188,129.19: zp[2]:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 164,287.36: zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 16,178.09: zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplift Scope [form_set_screen] 2,166,668.83: zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] 2,000,002: zp[1]:279 [ form_set_screen::$0 ] 2,000,002: zp[1]:280 [ form_set_screen::$1 ] 1,466,668.13: zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] +Uplift Scope [gfx_mode] 2,100,004.5: zp[2]:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] 2,000,002: zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] 1,656,340.27: zp[2]:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] 350,003.5: zp[1]:11 [ gfx_mode::j#2 gfx_mode::j#1 ] 350,003.5: zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] 200,002: zp[1]:238 [ gfx_mode::keyboard_event#0 ] 178,573.21: zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] 22,022: zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] 6,006: zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] 2,002: zp[1]:158 [ gfx_mode::$18 ] 2,002: zp[4]:164 [ gfx_mode::$20 ] 2,002: zp[1]:174 [ gfx_mode::$23 ] 2,002: zp[1]:175 [ gfx_mode::$25 ] 2,002: zp[2]:176 [ gfx_mode::$26 ] 2,002: zp[1]:178 [ gfx_mode::$27 ] 2,002: zp[1]:179 [ gfx_mode::$28 ] 2,002: zp[1]:180 [ gfx_mode::$29 ] 2,002: zp[1]:181 [ gfx_mode::$30 ] 2,002: zp[1]:182 [ gfx_mode::$31 ] 2,002: zp[1]:183 [ gfx_mode::$32 ] 2,002: zp[4]:189 [ gfx_mode::$34 ] 2,002: zp[1]:199 [ gfx_mode::$37 ] 2,002: zp[1]:200 [ gfx_mode::$39 ] 2,002: zp[2]:201 [ gfx_mode::$40 ] 2,002: zp[1]:203 [ gfx_mode::$41 ] 2,002: zp[1]:204 [ gfx_mode::$42 ] 2,002: zp[1]:205 [ gfx_mode::$43 ] 2,002: zp[1]:206 [ gfx_mode::$44 ] 2,002: zp[1]:207 [ gfx_mode::$45 ] 2,002: zp[2]:212 [ gfx_mode::$48 ] 2,002: zp[2]:222 [ gfx_mode::$53 ] 2,002: zp[1]:224 [ gfx_mode::$54 ] 2,002: zp[1]:225 [ gfx_mode::$55 ] 2,002: zp[1]:226 [ gfx_mode::$56 ] 2,002: zp[1]:229 [ gfx_mode::$58 ] 2,002: zp[1]:230 [ gfx_mode::$59 ] 2,002: zp[1]:231 [ gfx_mode::$60 ] 2,002: zp[1]:232 [ gfx_mode::$61 ] 2,002: zp[1]:233 [ gfx_mode::$62 ] 2,002: zp[1]:234 [ gfx_mode::$63 ] 2,002: zp[1]:235 [ gfx_mode::$64 ] 2,002: zp[1]:236 [ gfx_mode::$65 ] 1,001: zp[1]:4 [ gfx_mode::vic_control2#2 ] 1,001: zp[2]:172 [ gfx_mode::$24 ] 1,001: zp[2]:197 [ gfx_mode::$38 ] 1,001: zp[2]:210 [ gfx_mode::$47 ] 1,001: zp[2]:214 [ gfx_mode::$49 ] 1,001: zp[2]:220 [ gfx_mode::$52 ] 500.5: zp[4]:168 [ gfx_mode::plane_a#0 ] 500.5: zp[4]:193 [ gfx_mode::plane_b#0 ] 400.4: zp[1]:159 [ gfx_mode::plane_a_offs#0 ] 400.4: zp[1]:184 [ gfx_mode::plane_b_offs#0 ] 250.25: zp[1]:216 [ gfx_mode::$50 ] +Uplift Scope [gfx_init_plane_fill] 2,200,007.6: zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] 2,166,668.83: zp[1]:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] 183,335.17: zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] 55,555.61: zp[1]:62 [ gfx_init_plane_fill::fill#6 ] 20,002: zp[4]:286 [ gfx_init_plane_fill::$0 ] 20,002: zp[2]:290 [ gfx_init_plane_fill::$1 ] 20,002: zp[1]:292 [ gfx_init_plane_fill::gfxbCpuBank#0 ] 20,002: zp[2]:293 [ gfx_init_plane_fill::$4 ] 20,002: zp[2]:295 [ gfx_init_plane_fill::$5 ] 10,001: zp[2]:297 [ gfx_init_plane_fill::gfxb#0 ] 3,333.67: zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] +Uplift Scope [bitmap_clear] 2,200,007.6: zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,166,668.83: zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 183,335.17: zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 10,001: zp[2]:327 [ bitmap_clear::bitmap#0 ] +Uplift Scope [form_mode] 2,000,002: zp[1]:260 [ form_mode::$11 ] 439,628.12: zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] 350,003.5: zp[1]:30 [ form_mode::i#2 form_mode::i#1 ] +Uplift Scope [render_preset_name] 1,211,187: zp[1]:34 [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] 1,000,001: zp[2]:35 [ render_preset_name::name#13 ] +Uplift Scope [bitmap_init] 362,503.62: zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 226,668.93: zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 216,668.83: zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 200,002: zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 200,002: zp[1]:329 [ bitmap_init::$0 ] 200,002: zp[1]:331 [ bitmap_init::$7 ] 200,002: zp[1]:332 [ bitmap_init::$8 ] 200,002: zp[1]:333 [ bitmap_init::$9 ] 50,000.5: zp[1]:330 [ bitmap_init::$10 ] +Uplift Scope [dtvSetCpuBankSegment1] 1,330,007: zp[1]:67 [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] +Uplift Scope [gfx_init_screen2] 200,002: zp[1]:338 [ gfx_init_screen2::$0 ] 200,002: zp[1]:341 [ gfx_init_screen2::$3 ] 200,002: zp[1]:342 [ gfx_init_screen2::$4 ] 187,501.88: zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] 150,001.5: zp[1]:339 [ gfx_init_screen2::col#0 ] 106,288.89: zp[2]:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] 100,001: zp[1]:340 [ gfx_init_screen2::col2#0 ] 25,910.86: zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplift Scope [gfx_init_plane_8bppchunky] 356,950.14: zp[1]:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] 292,005.35: zp[2]:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] 200,002: zp[1]:305 [ gfx_init_plane_8bppchunky::c#0 ] 180,001.8: zp[2]:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] 100,001: zp[2]:303 [ gfx_init_plane_8bppchunky::$5 ] 24,232.5: zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplift Scope [gfx_init_screen0] 200,002: zp[1]:345 [ gfx_init_screen0::$0 ] 200,002: zp[1]:347 [ gfx_init_screen0::$2 ] 200,002: zp[1]:348 [ gfx_init_screen0::$3 ] 192,859.07: zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 113,669.93: zp[2]:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 100,001: zp[1]:346 [ gfx_init_screen0::$1 ] 27,001.8: zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplift Scope [gfx_init_screen3] 200,002: zp[1]:334 [ gfx_init_screen3::$0 ] 200,002: zp[1]:336 [ gfx_init_screen3::$2 ] 200,002: zp[1]:337 [ gfx_init_screen3::$3 ] 192,859.07: zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] 113,669.93: zp[2]:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] 100,001: zp[1]:335 [ gfx_init_screen3::$1 ] 27,001.8: zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplift Scope [gfx_init_plane_horisontal] 584,008: zp[2]:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] 200,002: zp[1]:301 [ gfx_init_plane_horisontal::$2 ] 175,001.75: zp[1]:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] 25,910.86: zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplift Scope [gfx_init_screen1] 210,002.1: zp[1]:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] 200,002: zp[1]:343 [ gfx_init_screen1::$0 ] 200,002: zp[1]:344 [ gfx_init_screen1::$1 ] 139,503.6: zp[2]:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] 30,001.88: zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplift Scope [gfx_init_plane_horisontal2] 200,002: zp[1]:299 [ gfx_init_plane_horisontal2::$2 ] 200,002: zp[1]:300 [ gfx_init_plane_horisontal2::row#0 ] 190,001.9: zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] 139,503.6: zp[2]:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] 30,001.88: zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplift Scope [gfx_init_charset] 210,004.5: zp[2]:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] 200,002: zp[1]:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] 165,337.27: zp[2]:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] 17,858.93: zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplift Scope [gfx_init_screen4] 217,004.6: zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] 216,668.83: zp[1]:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] 18,335.17: zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplift Scope [gfx_init_plane_vertical] 217,004.6: zp[2]:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] 216,668.83: zp[1]:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] 18,335.17: zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplift Scope [bitmap_line] 60,500.65: zp[1]:309 [ bitmap_line::y1#0 ] 57,619.67: zp[1]:308 [ bitmap_line::y0#0 ] 44,444.89: zp[1]:311 [ bitmap_line::yd#2 ] 44,444.89: zp[1]:312 [ bitmap_line::yd#1 ] 44,444.89: zp[1]:314 [ bitmap_line::yd#10 ] 44,444.89: zp[1]:315 [ bitmap_line::yd#11 ] 41,364.09: zp[1]:307 [ bitmap_line::x1#0 ] 39,565.65: zp[1]:306 [ bitmap_line::x0#0 ] 35,000.35: zp[1]:310 [ bitmap_line::xd#2 ] 35,000.35: zp[1]:313 [ bitmap_line::xd#1 ] +Uplift Scope [gfx_init_vic_bitmap] 30,003: zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplift Scope [get_vic_screen] 14,405.4: zp[1]:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] 2,002: zp[2]:208 [ get_vic_screen::return#10 ] 2,002: zp[2]:227 [ get_vic_screen::return#11 ] 500.5: zp[2]:21 [ get_vic_screen::return#5 ] +Uplift Scope [get_plane] 14,148: zp[1]:25 [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] 2,002: zp[4]:160 [ get_plane::return#16 ] 2,002: zp[4]:185 [ get_plane::return#17 ] 500.5: zp[4]:26 [ get_plane::return#14 ] +Uplift Scope [get_vic_charset] 10,501.5: zp[1]:217 [ get_vic_charset::idx#0 ] 2,002: zp[2]:218 [ get_vic_charset::return#4 ] 333.67: zp[2]:23 [ get_vic_charset::return#2 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -20002,358 +19986,356 @@ Uplift Scope [gfx_init_plane_full] Uplifting [keyboard_event_scan] best 15481031 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] zp[1]:252 [ keyboard_event_scan::event_type#0 ] zp[1]:253 [ keyboard_event_scan::$23 ] zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp[1]:241 [ keyboard_event_scan::row_scan#0 ] zp[1]:243 [ keyboard_event_scan::$0 ] zp[1]:245 [ keyboard_event_scan::$3 ] zp[1]:247 [ keyboard_event_scan::$6 ] zp[1]:249 [ keyboard_event_scan::$9 ] Limited combination testing to 10 combinations of 5308416 possible. -Uplifting [] best 15481013 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#67 print_char_cursor#68 print_char_cursor#38 print_char_cursor#1 ] zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] +Uplifting [] best 15481013 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#67 print_char_cursor#68 print_char_cursor#38 print_char_cursor#1 ] reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [keyboard_matrix_read] best 15391010 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] zp[1]:258 [ keyboard_matrix_read::return#0 ] +Uplifting [keyboard_matrix_read] best 15421007 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] zp[1]:240 [ keyboard_matrix_read::return#2 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_plane_charset8] best 15376010 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$2 ] zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp[2]:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp[2]:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Limited combination testing to 10 combinations of 1152 possible. -Uplifting [print_str_at] best 15376010 combination zp[2]:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 ] -Uplifting [apply_preset] best 15363677 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp[2]:43 [ apply_preset::preset#15 ] reg byte a [ apply_preset::idx#0 ] -Limited combination testing to 10 combinations of 12 possible. -Uplifting [form_render_values] best 15348677 combination reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ] -Uplifting [form_mode] best 15341477 combination reg byte a [ form_mode::$11 ] zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] reg byte x [ form_mode::i#2 form_mode::i#1 ] -Limited combination testing to 10 combinations of 24 possible. -Uplifting [print_str_lines] best 15329477 combination zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] -Uplifting [form_field_ptr] best 15326468 combination reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp[1]:265 [ form_field_ptr::x#0 ] zp[1]:262 [ form_field_ptr::y#0 ] zp[2]:268 [ form_field_ptr::return#3 ] zp[2]:266 [ form_field_ptr::return#0 ] zp[2]:263 [ form_field_ptr::line#0 ] +Uplifting [print_str_at] best 15421007 combination zp[2]:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 ] +Uplifting [form_field_ptr] best 15417992 combination reg byte y [ form_field_ptr::y#0 ] reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp[1]:265 [ form_field_ptr::x#0 ] zp[2]:266 [ form_field_ptr::return#0 ] zp[2]:263 [ form_field_ptr::line#0 ] zp[2]:268 [ form_field_ptr::return#3 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [form_control] best 15319459 combination reg byte a [ form_control::return#0 ] reg byte x [ form_control::return#2 ] zp[1]:272 [ form_control::$12 ] zp[1]:275 [ form_control::$14 ] zp[1]:276 [ form_control::$15 ] zp[1]:277 [ form_control::$22 ] zp[1]:278 [ form_control::$13 ] zp[1]:274 [ form_control::key_event#0 ] zp[2]:270 [ form_control::field#0 ] -Limited combination testing to 10 combinations of 65536 possible. -Uplifting [bitmap_plot] best 15317050 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:319 [ bitmap_plot::plotter_y#0 ] zp[1]:323 [ bitmap_plot::$1 ] zp[2]:317 [ bitmap_plot::plotter_x#0 ] zp[2]:321 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_plot] best 15416783 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:319 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:317 [ bitmap_plot::plotter_x#0 ] zp[2]:321 [ bitmap_plot::plotter#0 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [gfx_init_screen2] best 15315850 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp[1]:342 [ gfx_init_screen2::$4 ] zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp[1]:339 [ gfx_init_screen2::col#0 ] zp[2]:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp[1]:340 [ gfx_init_screen2::col2#0 ] zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Limited combination testing to 10 combinations of 2304 possible. -Uplifting [gfx_init_plane_8bppchunky] best 15314620 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp[2]:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp[2]:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp[2]:303 [ gfx_init_plane_8bppchunky::$5 ] zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Limited combination testing to 10 combinations of 16 possible. -Uplifting [bitmap_line_xdyi] best 15314020 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_xdyd] best 15313420 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxi] best 15312414 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxd] best 15311408 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [gfx_init_screen0] best 15310208 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp[1]:348 [ gfx_init_screen0::$3 ] zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp[2]:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp[1]:346 [ gfx_init_screen0::$1 ] zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_screen3] best 15309008 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp[1]:337 [ gfx_init_screen3::$3 ] zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp[2]:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp[1]:335 [ gfx_init_screen3::$1 ] zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_plane_horisontal] best 15307508 combination zp[2]:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$2 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Limited combination testing to 10 combinations of 16 possible. -Uplifting [gfx_init_screen1] best 15305908 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp[1]:344 [ gfx_init_screen1::$1 ] zp[2]:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Limited combination testing to 10 combinations of 64 possible. -Uplifting [form_set_screen] best 15303808 combination reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp[1]:280 [ form_set_screen::$1 ] zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] -Limited combination testing to 10 combinations of 48 possible. -Uplifting [gfx_init_plane_horisontal2] best 15302808 combination reg byte a [ gfx_init_plane_horisontal2::$2 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp[2]:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_charset] best 15301908 combination zp[2]:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp[2]:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_plane_fill] best 15301002 combination zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] zp[1]:62 [ gfx_init_plane_fill::fill#6 ] zp[4]:286 [ gfx_init_plane_fill::$0 ] zp[2]:290 [ gfx_init_plane_fill::$1 ] reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp[2]:293 [ gfx_init_plane_fill::$4 ] zp[2]:295 [ gfx_init_plane_fill::$5 ] zp[2]:297 [ gfx_init_plane_fill::gfxb#0 ] zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] -Limited combination testing to 10 combinations of 32 possible. -Uplifting [bitmap_clear] best 15300102 combination zp[2]:124 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:327 [ bitmap_clear::bitmap#0 ] -Uplifting [gfx_init_screen4] best 15299202 combination zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_plane_vertical] best 15298302 combination zp[2]:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [memset] best 15298302 combination zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:284 [ memset::end#0 ] zp[2]:282 [ memset::str#0 ] -Uplifting [dtvSetCpuBankSegment1] best 15298163 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] -Uplifting [keyboard_event_get] best 15297254 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp[1]:273 [ keyboard_event_get::return#4 ] -Limited combination testing to 10 combinations of 64 possible. -Uplifting [render_preset_name] best 15296918 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp[2]:35 [ render_preset_name::name#13 ] -Uplifting [bitmap_init] best 15296618 combination zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp[1]:329 [ bitmap_init::$0 ] zp[1]:331 [ bitmap_init::$7 ] zp[1]:332 [ bitmap_init::$8 ] zp[1]:333 [ bitmap_init::$9 ] zp[1]:330 [ bitmap_init::$10 ] -Limited combination testing to 10 combinations of 34560 possible. -Uplifting [gfx_init_vic_bitmap] best 15296618 combination zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [keyboard_event_pressed] best 15296606 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] zp[1]:246 [ keyboard_event_pressed::return#2 ] zp[1]:248 [ keyboard_event_pressed::return#3 ] zp[1]:254 [ keyboard_event_pressed::$0 ] zp[1]:256 [ keyboard_event_pressed::$1 ] zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] zp[1]:257 [ keyboard_event_pressed::return#10 ] zp[1]:19 [ keyboard_event_pressed::keycode#4 ] +Uplifting [keyboard_event_pressed] best 15416775 combination reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] zp[1]:19 [ keyboard_event_pressed::keycode#4 ] zp[1]:257 [ keyboard_event_pressed::return#10 ] zp[1]:242 [ keyboard_event_pressed::return#0 ] zp[1]:244 [ keyboard_event_pressed::return#1 ] zp[1]:246 [ keyboard_event_pressed::return#2 ] zp[1]:248 [ keyboard_event_pressed::return#3 ] Limited combination testing to 10 combinations of 147456 possible. -Uplifting [get_vic_screen] best 15296585 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp[2]:208 [ get_vic_screen::return#10 ] zp[2]:227 [ get_vic_screen::return#11 ] zp[2]:21 [ get_vic_screen::return#5 ] -Uplifting [get_plane] best 15296537 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp[4]:160 [ get_plane::return#16 ] zp[4]:185 [ get_plane::return#17 ] zp[4]:26 [ get_plane::return#14 ] -Uplifting [bitmap_line] best 15296491 combination zp[1]:309 [ bitmap_line::y1#0 ] zp[1]:308 [ bitmap_line::y0#0 ] reg byte x [ bitmap_line::x1#0 ] zp[1]:306 [ bitmap_line::x0#0 ] zp[1]:311 [ bitmap_line::yd#2 ] zp[1]:312 [ bitmap_line::yd#1 ] zp[1]:314 [ bitmap_line::yd#10 ] zp[1]:315 [ bitmap_line::yd#11 ] zp[1]:310 [ bitmap_line::xd#2 ] zp[1]:313 [ bitmap_line::xd#1 ] +Uplifting [apply_preset] best 15404442 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp[2]:43 [ apply_preset::preset#15 ] reg byte a [ apply_preset::idx#0 ] +Limited combination testing to 10 combinations of 12 possible. +Uplifting [form_render_values] best 15389442 combination reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ] +Uplifting [bitmap_line_xdyi] best 15388436 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte a [ bitmap_line_xdyi::$6 ] zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_xdyd] best 15387430 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte a [ bitmap_line_xdyd::$6 ] zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_ydxi] best 15386830 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte x [ bitmap_line_ydxi::$6 ] zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_ydxd] best 15386230 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte x [ bitmap_line_ydxd::$6 ] zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [keyboard_event_get] best 15385915 combination reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte a [ keyboard_event_get::return#4 ] zp[1]:237 [ keyboard_event_get::return#3 ] +Limited combination testing to 10 combinations of 64 possible. +Uplifting [form_control] best 15385903 combination reg byte a [ form_control::$12 ] reg byte a [ form_control::$14 ] zp[1]:276 [ form_control::$15 ] zp[1]:277 [ form_control::$22 ] zp[1]:278 [ form_control::$13 ] zp[1]:274 [ form_control::key_event#0 ] zp[2]:270 [ form_control::field#0 ] zp[1]:259 [ form_control::return#0 ] zp[1]:46 [ form_control::return#2 ] +Limited combination testing to 10 combinations of 65536 possible. +Uplifting [memset] best 15385903 combination zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:284 [ memset::end#0 ] zp[2]:282 [ memset::str#0 ] +Uplifting [print_str_lines] best 15373903 combination zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] +Uplifting [gfx_init_plane_charset8] best 15358903 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$2 ] zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp[2]:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp[2]:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Limited combination testing to 10 combinations of 1152 possible. +Uplifting [form_set_screen] best 15356803 combination reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp[1]:280 [ form_set_screen::$1 ] zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] +Limited combination testing to 10 combinations of 48 possible. +Uplifting [gfx_init_plane_fill] best 15355897 combination zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] zp[1]:62 [ gfx_init_plane_fill::fill#6 ] zp[4]:286 [ gfx_init_plane_fill::$0 ] zp[2]:290 [ gfx_init_plane_fill::$1 ] reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp[2]:293 [ gfx_init_plane_fill::$4 ] zp[2]:295 [ gfx_init_plane_fill::$5 ] zp[2]:297 [ gfx_init_plane_fill::gfxb#0 ] zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] +Limited combination testing to 10 combinations of 32 possible. +Uplifting [bitmap_clear] best 15354997 combination zp[2]:124 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:327 [ bitmap_clear::bitmap#0 ] +Uplifting [form_mode] best 15347797 combination reg byte a [ form_mode::$11 ] zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] reg byte x [ form_mode::i#2 form_mode::i#1 ] +Limited combination testing to 10 combinations of 24 possible. +Uplifting [render_preset_name] best 15347461 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp[2]:35 [ render_preset_name::name#13 ] +Uplifting [bitmap_init] best 15347161 combination zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp[1]:329 [ bitmap_init::$0 ] zp[1]:331 [ bitmap_init::$7 ] zp[1]:332 [ bitmap_init::$8 ] zp[1]:333 [ bitmap_init::$9 ] zp[1]:330 [ bitmap_init::$10 ] +Limited combination testing to 10 combinations of 34560 possible. +Uplifting [dtvSetCpuBankSegment1] best 15346822 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] +Uplifting [gfx_init_screen2] best 15345622 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp[1]:342 [ gfx_init_screen2::$4 ] zp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp[1]:339 [ gfx_init_screen2::col#0 ] zp[2]:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp[1]:340 [ gfx_init_screen2::col2#0 ] zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Limited combination testing to 10 combinations of 2304 possible. +Uplifting [gfx_init_plane_8bppchunky] best 15344592 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp[2]:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp[2]:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp[2]:303 [ gfx_init_plane_8bppchunky::$5 ] zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Limited combination testing to 10 combinations of 16 possible. +Uplifting [gfx_init_screen0] best 15343392 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp[1]:348 [ gfx_init_screen0::$3 ] zp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp[2]:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp[1]:346 [ gfx_init_screen0::$1 ] zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Limited combination testing to 10 combinations of 768 possible. +Uplifting [gfx_init_screen3] best 15342192 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp[1]:337 [ gfx_init_screen3::$3 ] zp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp[2]:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp[1]:335 [ gfx_init_screen3::$1 ] zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Limited combination testing to 10 combinations of 768 possible. +Uplifting [gfx_init_plane_horisontal] best 15340692 combination zp[2]:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$2 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Limited combination testing to 10 combinations of 16 possible. +Uplifting [gfx_init_screen1] best 15339092 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp[1]:344 [ gfx_init_screen1::$1 ] zp[2]:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Limited combination testing to 10 combinations of 64 possible. +Uplifting [gfx_init_plane_horisontal2] best 15338092 combination reg byte a [ gfx_init_plane_horisontal2::$2 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp[2]:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Limited combination testing to 10 combinations of 64 possible. +Uplifting [gfx_init_charset] best 15337192 combination zp[2]:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp[2]:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_screen4] best 15336292 combination zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_plane_vertical] best 15335392 combination zp[2]:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [bitmap_line] best 15335338 combination zp[1]:309 [ bitmap_line::y1#0 ] reg byte x [ bitmap_line::y0#0 ] zp[1]:311 [ bitmap_line::yd#2 ] zp[1]:312 [ bitmap_line::yd#1 ] zp[1]:314 [ bitmap_line::yd#10 ] zp[1]:315 [ bitmap_line::yd#11 ] zp[1]:307 [ bitmap_line::x1#0 ] zp[1]:306 [ bitmap_line::x0#0 ] zp[1]:310 [ bitmap_line::xd#2 ] zp[1]:313 [ bitmap_line::xd#1 ] Limited combination testing to 10 combinations of 186624 possible. -Uplifting [get_vic_charset] best 15296482 combination zp[2]:218 [ get_vic_charset::return#4 ] reg byte a [ get_vic_charset::idx#0 ] zp[2]:23 [ get_vic_charset::return#2 ] -Uplifting [RADIX] best 15296482 combination -Uplifting [print_ln] best 15296482 combination -Uplifting [print_cls] best 15296482 combination -Uplifting [print_set_screen] best 15296482 combination -Uplifting [keyboard_init] best 15296482 combination -Uplifting [main] best 15296482 combination -Uplifting [gfx_init] best 15296482 combination -Uplifting [gfx_init_plane_vertical2] best 15296482 combination -Uplifting [gfx_init_plane_blank] best 15296482 combination -Uplifting [gfx_init_plane_full] best 15296482 combination +Uplifting [gfx_init_vic_bitmap] best 15335338 combination zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [get_vic_screen] best 15335317 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp[2]:208 [ get_vic_screen::return#10 ] zp[2]:227 [ get_vic_screen::return#11 ] zp[2]:21 [ get_vic_screen::return#5 ] +Uplifting [get_plane] best 15335269 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp[4]:160 [ get_plane::return#16 ] zp[4]:185 [ get_plane::return#17 ] zp[4]:26 [ get_plane::return#14 ] +Uplifting [get_vic_charset] best 15335260 combination reg byte a [ get_vic_charset::idx#0 ] zp[2]:218 [ get_vic_charset::return#4 ] zp[2]:23 [ get_vic_charset::return#2 ] +Uplifting [RADIX] best 15335260 combination +Uplifting [print_ln] best 15335260 combination +Uplifting [print_cls] best 15335260 combination +Uplifting [print_set_screen] best 15335260 combination +Uplifting [keyboard_init] best 15335260 combination +Uplifting [main] best 15335260 combination +Uplifting [gfx_init] best 15335260 combination +Uplifting [gfx_init_plane_vertical2] best 15335260 combination +Uplifting [gfx_init_plane_blank] best 15335260 combination +Uplifting [gfx_init_plane_full] best 15335260 combination Attempting to uplift remaining variables inzp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] -Uplifting [] best 15296482 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [] best 15335260 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#106 keyboard_events_size#97 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#1 keyboard_events_size#2 ] Attempting to uplift remaining variables inzp[1]:252 [ keyboard_event_scan::event_type#0 ] -Uplifting [keyboard_event_scan] best 14696482 combination reg byte a [ keyboard_event_scan::event_type#0 ] +Uplifting [keyboard_event_scan] best 14735260 combination reg byte a [ keyboard_event_scan::event_type#0 ] Attempting to uplift remaining variables inzp[1]:253 [ keyboard_event_scan::$23 ] -Uplifting [keyboard_event_scan] best 14096482 combination reg byte a [ keyboard_event_scan::$23 ] +Uplifting [keyboard_event_scan] best 14135260 combination reg byte a [ keyboard_event_scan::$23 ] Attempting to uplift remaining variables inzp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 12596482 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 12635260 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Uplifting [keyboard_event_scan] best 12596482 combination zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] +Uplifting [keyboard_event_scan] best 12635260 combination zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] Attempting to uplift remaining variables inzp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 12596482 combination zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 12635260 combination zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Attempting to uplift remaining variables inzp[1]:240 [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_matrix_read] best 12575260 combination reg byte a [ keyboard_matrix_read::return#2 ] Attempting to uplift remaining variables inzp[1]:241 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 12596482 combination zp[1]:241 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp[1]:258 [ keyboard_matrix_read::return#0 ] -Uplifting [keyboard_matrix_read] best 12566479 combination reg byte a [ keyboard_matrix_read::return#0 ] -Attempting to uplift remaining variables inzp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Uplifting [gfx_mode] best 12557479 combination reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Attempting to uplift remaining variables inzp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Uplifting [gfx_init_plane_charset8] best 12548479 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Attempting to uplift remaining variables inzp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] -Uplifting [gfx_init_plane_charset8] best 12548479 combination zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] -Attempting to uplift remaining variables inzp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] -Uplifting [gfx_init_plane_charset8] best 12548479 combination zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] -Attempting to uplift remaining variables inzp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Uplifting [bitmap_line_xdyi] best 12548479 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Attempting to uplift remaining variables inzp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Uplifting [bitmap_line_ydxi] best 12548479 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Attempting to uplift remaining variables inzp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] -Uplifting [bitmap_line_xdyd] best 12548479 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] -Attempting to uplift remaining variables inzp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Uplifting [bitmap_line_ydxd] best 12548479 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Attempting to uplift remaining variables inzp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Uplifting [form_mode] best 12548479 combination zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Attempting to uplift remaining variables inzp[1]:11 [ gfx_mode::j#2 gfx_mode::j#1 ] -Uplifting [gfx_mode] best 12547279 combination reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ] -Attempting to uplift remaining variables inzp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] -Uplifting [gfx_mode] best 12546079 combination reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ] -Attempting to uplift remaining variables inzp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Uplifting [bitmap_line_xdyi] best 12546079 combination zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Attempting to uplift remaining variables inzp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] -Uplifting [bitmap_line_xdyd] best 12546079 combination zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] +Uplifting [keyboard_event_scan] best 12575260 combination zp[1]:241 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp[1]:265 [ form_field_ptr::x#0 ] -Uplifting [form_field_ptr] best 12546079 combination zp[1]:265 [ form_field_ptr::x#0 ] -Attempting to uplift remaining variables inzp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] -Uplifting [] best 12546079 combination zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] -Attempting to uplift remaining variables inzp[1]:238 [ gfx_mode::keyboard_event#0 ] -Uplifting [gfx_mode] best 12545479 combination reg byte a [ gfx_mode::keyboard_event#0 ] -Attempting to uplift remaining variables inzp[1]:280 [ form_set_screen::$1 ] -Uplifting [form_set_screen] best 12544879 combination reg byte a [ form_set_screen::$1 ] -Attempting to uplift remaining variables inzp[1]:337 [ gfx_init_screen3::$3 ] -Uplifting [gfx_init_screen3] best 12544279 combination reg byte a [ gfx_init_screen3::$3 ] -Attempting to uplift remaining variables inzp[1]:342 [ gfx_init_screen2::$4 ] -Uplifting [gfx_init_screen2] best 12543679 combination reg byte a [ gfx_init_screen2::$4 ] -Attempting to uplift remaining variables inzp[1]:344 [ gfx_init_screen1::$1 ] -Uplifting [gfx_init_screen1] best 12543079 combination reg byte a [ gfx_init_screen1::$1 ] -Attempting to uplift remaining variables inzp[1]:348 [ gfx_init_screen0::$3 ] -Uplifting [gfx_init_screen0] best 12542479 combination reg byte a [ gfx_init_screen0::$3 ] -Attempting to uplift remaining variables inzp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Uplifting [gfx_init_screen3] best 12541479 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Attempting to uplift remaining variables inzp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Uplifting [gfx_init_screen0] best 12540479 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Attempting to uplift remaining variables inzp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Uplifting [gfx_init_plane_horisontal2] best 12539579 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Attempting to uplift remaining variables inzp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Uplifting [gfx_init_screen2] best 12538579 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Attempting to uplift remaining variables inzp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] -Uplifting [gfx_mode] best 12538579 combination zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] -Attempting to uplift remaining variables inzp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Uplifting [gfx_init_plane_charset8] best 12538579 combination zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Attempting to uplift remaining variables inzp[1]:339 [ gfx_init_screen2::col#0 ] -Uplifting [gfx_init_screen2] best 12538479 combination reg byte y [ gfx_init_screen2::col#0 ] -Attempting to uplift remaining variables inzp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] -Uplifting [bitmap_line_xdyi] best 12538479 combination zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] -Attempting to uplift remaining variables inzp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] -Uplifting [bitmap_line_ydxi] best 12538479 combination zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] -Attempting to uplift remaining variables inzp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] -Uplifting [bitmap_line_xdyd] best 12538479 combination zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] -Attempting to uplift remaining variables inzp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Uplifting [bitmap_line_ydxd] best 12538479 combination zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Attempting to uplift remaining variables inzp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] -Uplifting [] best 12538479 combination zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] -Attempting to uplift remaining variables inzp[1]:335 [ gfx_init_screen3::$1 ] -Uplifting [gfx_init_screen3] best 12538479 combination zp[1]:335 [ gfx_init_screen3::$1 ] -Attempting to uplift remaining variables inzp[1]:340 [ gfx_init_screen2::col2#0 ] -Uplifting [gfx_init_screen2] best 12538479 combination zp[1]:340 [ gfx_init_screen2::col2#0 ] -Attempting to uplift remaining variables inzp[1]:346 [ gfx_init_screen0::$1 ] -Uplifting [gfx_init_screen0] best 12538479 combination zp[1]:346 [ gfx_init_screen0::$1 ] -Attempting to uplift remaining variables inzp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] -Uplifting [gfx_mode] best 12538460 combination reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] -Attempting to uplift remaining variables inzp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [gfx_init_vic_bitmap] best 12538460 combination zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Attempting to uplift remaining variables inzp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Uplifting [gfx_init_plane_horisontal2] best 12538460 combination zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Attempting to uplift remaining variables inzp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Uplifting [gfx_init_screen1] best 12538460 combination zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Attempting to uplift remaining variables inzp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Uplifting [gfx_init_screen3] best 12538460 combination zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Attempting to uplift remaining variables inzp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplifting [gfx_init_screen0] best 12538460 combination zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Attempting to uplift remaining variables inzp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Uplifting [gfx_init_plane_horisontal] best 12538460 combination zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Attempting to uplift remaining variables inzp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Uplifting [gfx_init_screen2] best 12538460 combination zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Attempting to uplift remaining variables inzp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Uplifting [gfx_init_plane_8bppchunky] best 12538460 combination zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Attempting to uplift remaining variables inzp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Uplifting [bitmap_init] best 12538280 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -Attempting to uplift remaining variables inzp[1]:329 [ bitmap_init::$0 ] -Uplifting [bitmap_init] best 12538240 combination reg byte a [ bitmap_init::$0 ] -Attempting to uplift remaining variables inzp[1]:331 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 12538180 combination reg byte a [ bitmap_init::$7 ] -Attempting to uplift remaining variables inzp[1]:332 [ bitmap_init::$8 ] -Uplifting [bitmap_init] best 12538120 combination reg byte a [ bitmap_init::$8 ] -Attempting to uplift remaining variables inzp[1]:333 [ bitmap_init::$9 ] -Uplifting [bitmap_init] best 12538060 combination reg byte a [ bitmap_init::$9 ] -Attempting to uplift remaining variables inzp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] -Uplifting [gfx_init_plane_fill] best 12538060 combination zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] -Attempting to uplift remaining variables inzp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [gfx_init_plane_vertical] best 12538060 combination zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Attempting to uplift remaining variables inzp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 12538060 combination zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_screen4] best 12538060 combination zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Attempting to uplift remaining variables inzp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_charset] best 12538060 combination zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Attempting to uplift remaining variables inzp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] -Uplifting [bitmap_line_xdyi] best 12538060 combination zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] -Attempting to uplift remaining variables inzp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] -Uplifting [bitmap_line_ydxi] best 12538060 combination zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] -Attempting to uplift remaining variables inzp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] -Uplifting [bitmap_line_xdyd] best 12538060 combination zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] -Attempting to uplift remaining variables inzp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] -Uplifting [bitmap_line_ydxd] best 12538060 combination zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] -Attempting to uplift remaining variables inzp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplifting [gfx_init_plane_charset8] best 12538060 combination zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Attempting to uplift remaining variables inzp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] -Uplifting [bitmap_line_xdyi] best 12538060 combination zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] -Attempting to uplift remaining variables inzp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] -Uplifting [bitmap_line_ydxi] best 12538060 combination zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] -Attempting to uplift remaining variables inzp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] -Uplifting [bitmap_line_xdyd] best 12538060 combination zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] -Attempting to uplift remaining variables inzp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] -Uplifting [bitmap_line_ydxd] best 12538060 combination zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Uplifting [gfx_mode] best 12538049 combination reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Attempting to uplift remaining variables inzp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Uplifting [bitmap_line_xdyi] best 12538049 combination zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Attempting to uplift remaining variables inzp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Uplifting [bitmap_line_ydxi] best 12538049 combination zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Attempting to uplift remaining variables inzp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Uplifting [bitmap_line_xdyd] best 12538049 combination zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Attempting to uplift remaining variables inzp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplifting [bitmap_line_ydxd] best 12538049 combination zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Attempting to uplift remaining variables inzp[1]:262 [ form_field_ptr::y#0 ] -Uplifting [form_field_ptr] best 12538043 combination reg byte y [ form_field_ptr::y#0 ] -Attempting to uplift remaining variables inzp[1]:62 [ gfx_init_plane_fill::fill#6 ] -Uplifting [gfx_init_plane_fill] best 12538043 combination zp[1]:62 [ gfx_init_plane_fill::fill#6 ] -Attempting to uplift remaining variables inzp[1]:330 [ bitmap_init::$10 ] -Uplifting [bitmap_init] best 12538043 combination zp[1]:330 [ bitmap_init::$10 ] -Attempting to uplift remaining variables inzp[1]:158 [ gfx_mode::$18 ] -Uplifting [gfx_mode] best 12538037 combination reg byte a [ gfx_mode::$18 ] -Attempting to uplift remaining variables inzp[1]:174 [ gfx_mode::$23 ] -Uplifting [gfx_mode] best 12538031 combination reg byte a [ gfx_mode::$23 ] -Attempting to uplift remaining variables inzp[1]:175 [ gfx_mode::$25 ] -Uplifting [gfx_mode] best 12538025 combination reg byte a [ gfx_mode::$25 ] -Attempting to uplift remaining variables inzp[1]:178 [ gfx_mode::$27 ] -Uplifting [gfx_mode] best 12538019 combination reg byte a [ gfx_mode::$27 ] -Attempting to uplift remaining variables inzp[1]:179 [ gfx_mode::$28 ] -Uplifting [gfx_mode] best 12538013 combination reg byte a [ gfx_mode::$28 ] -Attempting to uplift remaining variables inzp[1]:180 [ gfx_mode::$29 ] -Uplifting [gfx_mode] best 12538007 combination reg byte a [ gfx_mode::$29 ] -Attempting to uplift remaining variables inzp[1]:181 [ gfx_mode::$30 ] -Uplifting [gfx_mode] best 12538001 combination reg byte a [ gfx_mode::$30 ] -Attempting to uplift remaining variables inzp[1]:182 [ gfx_mode::$31 ] -Uplifting [gfx_mode] best 12537995 combination reg byte a [ gfx_mode::$31 ] -Attempting to uplift remaining variables inzp[1]:183 [ gfx_mode::$32 ] -Uplifting [gfx_mode] best 12537989 combination reg byte a [ gfx_mode::$32 ] -Attempting to uplift remaining variables inzp[1]:199 [ gfx_mode::$37 ] -Uplifting [gfx_mode] best 12537983 combination reg byte a [ gfx_mode::$37 ] -Attempting to uplift remaining variables inzp[1]:200 [ gfx_mode::$39 ] -Uplifting [gfx_mode] best 12537977 combination reg byte a [ gfx_mode::$39 ] -Attempting to uplift remaining variables inzp[1]:203 [ gfx_mode::$41 ] -Uplifting [gfx_mode] best 12537971 combination reg byte a [ gfx_mode::$41 ] -Attempting to uplift remaining variables inzp[1]:204 [ gfx_mode::$42 ] -Uplifting [gfx_mode] best 12537965 combination reg byte a [ gfx_mode::$42 ] -Attempting to uplift remaining variables inzp[1]:205 [ gfx_mode::$43 ] -Uplifting [gfx_mode] best 12537959 combination reg byte a [ gfx_mode::$43 ] -Attempting to uplift remaining variables inzp[1]:206 [ gfx_mode::$44 ] -Uplifting [gfx_mode] best 12537953 combination reg byte a [ gfx_mode::$44 ] -Attempting to uplift remaining variables inzp[1]:207 [ gfx_mode::$45 ] -Uplifting [gfx_mode] best 12537947 combination reg byte a [ gfx_mode::$45 ] -Attempting to uplift remaining variables inzp[1]:224 [ gfx_mode::$54 ] -Uplifting [gfx_mode] best 12537941 combination reg byte a [ gfx_mode::$54 ] -Attempting to uplift remaining variables inzp[1]:225 [ gfx_mode::$55 ] -Uplifting [gfx_mode] best 12537935 combination reg byte a [ gfx_mode::$55 ] -Attempting to uplift remaining variables inzp[1]:226 [ gfx_mode::$56 ] -Uplifting [gfx_mode] best 12537929 combination reg byte a [ gfx_mode::$56 ] -Attempting to uplift remaining variables inzp[1]:229 [ gfx_mode::$58 ] -Uplifting [gfx_mode] best 12537923 combination reg byte a [ gfx_mode::$58 ] -Attempting to uplift remaining variables inzp[1]:230 [ gfx_mode::$59 ] -Uplifting [gfx_mode] best 12537917 combination reg byte a [ gfx_mode::$59 ] -Attempting to uplift remaining variables inzp[1]:231 [ gfx_mode::$60 ] -Uplifting [gfx_mode] best 12537911 combination reg byte a [ gfx_mode::$60 ] -Attempting to uplift remaining variables inzp[1]:232 [ gfx_mode::$61 ] -Uplifting [gfx_mode] best 12537905 combination reg byte a [ gfx_mode::$61 ] -Attempting to uplift remaining variables inzp[1]:233 [ gfx_mode::$62 ] -Uplifting [gfx_mode] best 12537899 combination reg byte a [ gfx_mode::$62 ] -Attempting to uplift remaining variables inzp[1]:234 [ gfx_mode::$63 ] -Uplifting [gfx_mode] best 12537893 combination reg byte a [ gfx_mode::$63 ] -Attempting to uplift remaining variables inzp[1]:235 [ gfx_mode::$64 ] -Uplifting [gfx_mode] best 12537887 combination reg byte a [ gfx_mode::$64 ] -Attempting to uplift remaining variables inzp[1]:236 [ gfx_mode::$65 ] -Uplifting [gfx_mode] best 12537881 combination reg byte a [ gfx_mode::$65 ] -Attempting to uplift remaining variables inzp[1]:243 [ keyboard_event_scan::$0 ] -Uplifting [keyboard_event_scan] best 12537875 combination reg byte a [ keyboard_event_scan::$0 ] -Attempting to uplift remaining variables inzp[1]:245 [ keyboard_event_scan::$3 ] -Uplifting [keyboard_event_scan] best 12537869 combination reg byte a [ keyboard_event_scan::$3 ] -Attempting to uplift remaining variables inzp[1]:246 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 12537863 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp[1]:247 [ keyboard_event_scan::$6 ] -Uplifting [keyboard_event_scan] best 12537857 combination reg byte a [ keyboard_event_scan::$6 ] -Attempting to uplift remaining variables inzp[1]:248 [ keyboard_event_pressed::return#3 ] -Uplifting [keyboard_event_pressed] best 12537851 combination reg byte a [ keyboard_event_pressed::return#3 ] -Attempting to uplift remaining variables inzp[1]:249 [ keyboard_event_scan::$9 ] -Uplifting [keyboard_event_scan] best 12537845 combination reg byte a [ keyboard_event_scan::$9 ] -Attempting to uplift remaining variables inzp[1]:254 [ keyboard_event_pressed::$0 ] -Uplifting [keyboard_event_pressed] best 12537841 combination reg byte a [ keyboard_event_pressed::$0 ] -Attempting to uplift remaining variables inzp[1]:256 [ keyboard_event_pressed::$1 ] -Uplifting [keyboard_event_pressed] best 12537837 combination reg byte a [ keyboard_event_pressed::$1 ] -Attempting to uplift remaining variables inzp[1]:272 [ form_control::$12 ] -Uplifting [form_control] best 12537831 combination reg byte a [ form_control::$12 ] -Attempting to uplift remaining variables inzp[1]:273 [ keyboard_event_get::return#4 ] -Uplifting [keyboard_event_get] best 12537825 combination reg byte a [ keyboard_event_get::return#4 ] -Attempting to uplift remaining variables inzp[1]:275 [ form_control::$14 ] -Uplifting [form_control] best 12537819 combination reg byte a [ form_control::$14 ] -Attempting to uplift remaining variables inzp[1]:276 [ form_control::$15 ] -Uplifting [form_control] best 12537815 combination reg byte a [ form_control::$15 ] -Attempting to uplift remaining variables inzp[1]:277 [ form_control::$22 ] -Uplifting [form_control] best 12537811 combination reg byte a [ form_control::$22 ] -Attempting to uplift remaining variables inzp[1]:278 [ form_control::$13 ] -Uplifting [form_control] best 12537805 combination reg byte a [ form_control::$13 ] -Attempting to uplift remaining variables inzp[1]:323 [ bitmap_plot::$1 ] -Uplifting [bitmap_plot] best 12537799 combination reg byte a [ bitmap_plot::$1 ] -Attempting to uplift remaining variables inzp[1]:274 [ form_control::key_event#0 ] -Uplifting [form_control] best 12537787 combination reg byte a [ form_control::key_event#0 ] -Attempting to uplift remaining variables inzp[1]:4 [ gfx_mode::vic_control2#2 ] -Uplifting [gfx_mode] best 12537778 combination reg byte a [ gfx_mode::vic_control2#2 ] +Uplifting [form_field_ptr] best 12575260 combination zp[1]:265 [ form_field_ptr::x#0 ] +Attempting to uplift remaining variables inzp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] +Uplifting [bitmap_plot] best 12574054 combination reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Attempting to uplift remaining variables inzp[1]:255 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 12537778 combination zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp[1]:309 [ bitmap_line::y1#0 ] -Uplifting [bitmap_line] best 12537778 combination zp[1]:309 [ bitmap_line::y1#0 ] -Attempting to uplift remaining variables inzp[1]:308 [ bitmap_line::y0#0 ] -Uplifting [bitmap_line] best 12537778 combination zp[1]:308 [ bitmap_line::y0#0 ] -Attempting to uplift remaining variables inzp[1]:257 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 12537763 combination reg byte a [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 12574054 combination zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] Attempting to uplift remaining variables inzp[1]:19 [ keyboard_event_pressed::keycode#4 ] -Uplifting [keyboard_event_pressed] best 12537763 combination zp[1]:19 [ keyboard_event_pressed::keycode#4 ] -Attempting to uplift remaining variables inzp[1]:306 [ bitmap_line::x0#0 ] -Uplifting [bitmap_line] best 12537763 combination zp[1]:306 [ bitmap_line::x0#0 ] +Uplifting [keyboard_event_pressed] best 12574054 combination zp[1]:19 [ keyboard_event_pressed::keycode#4 ] +Attempting to uplift remaining variables inzp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Uplifting [bitmap_line_xdyi] best 12574054 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Attempting to uplift remaining variables inzp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] +Uplifting [bitmap_line_ydxi] best 12574054 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] +Attempting to uplift remaining variables inzp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] +Uplifting [bitmap_line_xdyd] best 12574054 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] +Attempting to uplift remaining variables inzp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Uplifting [bitmap_line_ydxd] best 12574054 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Attempting to uplift remaining variables inzp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +Uplifting [bitmap_line_ydxi] best 12574054 combination zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +Attempting to uplift remaining variables inzp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] +Uplifting [bitmap_line_ydxd] best 12574054 combination zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] +Attempting to uplift remaining variables inzp[1]:257 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 12574039 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp[1]:242 [ keyboard_event_pressed::return#0 ] +Uplifting [keyboard_event_pressed] best 12574033 combination reg byte a [ keyboard_event_pressed::return#0 ] +Attempting to uplift remaining variables inzp[1]:243 [ keyboard_event_scan::$0 ] +Uplifting [keyboard_event_scan] best 12574027 combination reg byte a [ keyboard_event_scan::$0 ] +Attempting to uplift remaining variables inzp[1]:244 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 12574021 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp[1]:245 [ keyboard_event_scan::$3 ] +Uplifting [keyboard_event_scan] best 12574015 combination reg byte a [ keyboard_event_scan::$3 ] +Attempting to uplift remaining variables inzp[1]:246 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 12574009 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:247 [ keyboard_event_scan::$6 ] +Uplifting [keyboard_event_scan] best 12574003 combination reg byte a [ keyboard_event_scan::$6 ] +Attempting to uplift remaining variables inzp[1]:248 [ keyboard_event_pressed::return#3 ] +Uplifting [keyboard_event_pressed] best 12573997 combination reg byte a [ keyboard_event_pressed::return#3 ] +Attempting to uplift remaining variables inzp[1]:249 [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 12573991 combination reg byte a [ keyboard_event_scan::$9 ] +Attempting to uplift remaining variables inzp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] +Uplifting [bitmap_line_xdyi] best 12573991 combination zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] +Attempting to uplift remaining variables inzp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] +Uplifting [bitmap_line_ydxi] best 12573991 combination zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] +Attempting to uplift remaining variables inzp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] +Uplifting [bitmap_line_xdyd] best 12573991 combination zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] +Attempting to uplift remaining variables inzp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Uplifting [bitmap_line_ydxd] best 12573991 combination zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Attempting to uplift remaining variables inzp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] +Uplifting [] best 12573991 combination zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] +Attempting to uplift remaining variables inzp[1]:276 [ form_control::$15 ] +Uplifting [form_control] best 12573987 combination reg byte a [ form_control::$15 ] +Attempting to uplift remaining variables inzp[1]:277 [ form_control::$22 ] +Uplifting [form_control] best 12573983 combination reg byte a [ form_control::$22 ] +Attempting to uplift remaining variables inzp[1]:278 [ form_control::$13 ] +Uplifting [form_control] best 12573977 combination reg byte a [ form_control::$13 ] +Attempting to uplift remaining variables inzp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] +Uplifting [] best 12573977 combination zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] +Attempting to uplift remaining variables inzp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] +Uplifting [bitmap_line_xdyi] best 12573977 combination zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] +Attempting to uplift remaining variables inzp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] +Uplifting [bitmap_line_ydxi] best 12573977 combination zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] +Attempting to uplift remaining variables inzp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] +Uplifting [bitmap_line_xdyd] best 12573977 combination zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] +Attempting to uplift remaining variables inzp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] +Uplifting [bitmap_line_ydxd] best 12573977 combination zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] +Attempting to uplift remaining variables inzp[1]:274 [ form_control::key_event#0 ] +Uplifting [form_control] best 12573965 combination reg byte a [ form_control::key_event#0 ] +Attempting to uplift remaining variables inzp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] +Uplifting [bitmap_line_xdyi] best 12573965 combination zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] +Attempting to uplift remaining variables inzp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] +Uplifting [bitmap_line_ydxi] best 12573965 combination zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] +Attempting to uplift remaining variables inzp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] +Uplifting [bitmap_line_xdyd] best 12573965 combination zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] +Attempting to uplift remaining variables inzp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Uplifting [bitmap_line_ydxd] best 12573965 combination zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Attempting to uplift remaining variables inzp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Uplifting [bitmap_line_xdyi] best 12573965 combination zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Attempting to uplift remaining variables inzp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Uplifting [bitmap_line_ydxi] best 12573965 combination zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Attempting to uplift remaining variables inzp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Uplifting [bitmap_line_xdyd] best 12573965 combination zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Attempting to uplift remaining variables inzp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplifting [bitmap_line_ydxd] best 12573965 combination zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Attempting to uplift remaining variables inzp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] +Uplifting [gfx_mode] best 12564965 combination reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ] +Attempting to uplift remaining variables inzp[1]:259 [ form_control::return#0 ] +Uplifting [form_control] best 12558965 combination reg byte a [ form_control::return#0 ] +Attempting to uplift remaining variables inzp[1]:280 [ form_set_screen::$1 ] +Uplifting [form_set_screen] best 12558365 combination reg byte a [ form_set_screen::$1 ] +Attempting to uplift remaining variables inzp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] +Uplifting [gfx_init_plane_charset8] best 12549365 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] +Attempting to uplift remaining variables inzp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] +Uplifting [gfx_init_plane_charset8] best 12549365 combination zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] +Attempting to uplift remaining variables inzp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] +Uplifting [gfx_init_plane_charset8] best 12549365 combination zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] +Attempting to uplift remaining variables inzp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Uplifting [form_mode] best 12549365 combination zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Attempting to uplift remaining variables inzp[1]:11 [ gfx_mode::j#2 gfx_mode::j#1 ] +Uplifting [gfx_mode] best 12548165 combination reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ] +Attempting to uplift remaining variables inzp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] +Uplifting [gfx_mode] best 12546965 combination reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ] +Attempting to uplift remaining variables inzp[1]:46 [ form_control::return#2 ] +Uplifting [form_control] best 12545956 combination reg byte x [ form_control::return#2 ] +Attempting to uplift remaining variables inzp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] +Uplifting [bitmap_init] best 12545776 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +Attempting to uplift remaining variables inzp[1]:237 [ keyboard_event_get::return#3 ] +Uplifting [keyboard_event_get] best 12545176 combination reg byte a [ keyboard_event_get::return#3 ] +Attempting to uplift remaining variables inzp[1]:238 [ gfx_mode::keyboard_event#0 ] +Uplifting [gfx_mode] best 12544576 combination reg byte a [ gfx_mode::keyboard_event#0 ] +Attempting to uplift remaining variables inzp[1]:329 [ bitmap_init::$0 ] +Uplifting [bitmap_init] best 12544536 combination reg byte a [ bitmap_init::$0 ] +Attempting to uplift remaining variables inzp[1]:331 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 12544476 combination reg byte a [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:332 [ bitmap_init::$8 ] +Uplifting [bitmap_init] best 12544416 combination reg byte a [ bitmap_init::$8 ] +Attempting to uplift remaining variables inzp[1]:333 [ bitmap_init::$9 ] +Uplifting [bitmap_init] best 12544356 combination reg byte a [ bitmap_init::$9 ] +Attempting to uplift remaining variables inzp[1]:337 [ gfx_init_screen3::$3 ] +Uplifting [gfx_init_screen3] best 12543756 combination reg byte a [ gfx_init_screen3::$3 ] +Attempting to uplift remaining variables inzp[1]:342 [ gfx_init_screen2::$4 ] +Uplifting [gfx_init_screen2] best 12543156 combination reg byte a [ gfx_init_screen2::$4 ] +Attempting to uplift remaining variables inzp[1]:344 [ gfx_init_screen1::$1 ] +Uplifting [gfx_init_screen1] best 12542556 combination reg byte a [ gfx_init_screen1::$1 ] +Attempting to uplift remaining variables inzp[1]:348 [ gfx_init_screen0::$3 ] +Uplifting [gfx_init_screen0] best 12541956 combination reg byte a [ gfx_init_screen0::$3 ] +Attempting to uplift remaining variables inzp[1]:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] +Uplifting [gfx_init_screen3] best 12540956 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] +Attempting to uplift remaining variables inzp[1]:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] +Uplifting [gfx_init_screen0] best 12539956 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] +Attempting to uplift remaining variables inzp[1]:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] +Uplifting [gfx_init_plane_horisontal2] best 12539056 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] +Attempting to uplift remaining variables inzp[1]:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] +Uplifting [gfx_init_screen2] best 12538056 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] +Attempting to uplift remaining variables inzp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] +Uplifting [gfx_init_plane_fill] best 12538056 combination zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] +Attempting to uplift remaining variables inzp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 12538056 combination zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] +Uplifting [gfx_mode] best 12538056 combination zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] +Attempting to uplift remaining variables inzp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] +Uplifting [gfx_init_plane_charset8] best 12538056 combination zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] +Attempting to uplift remaining variables inzp[1]:339 [ gfx_init_screen2::col#0 ] +Uplifting [gfx_init_screen2] best 12537956 combination reg byte y [ gfx_init_screen2::col#0 ] +Attempting to uplift remaining variables inzp[1]:335 [ gfx_init_screen3::$1 ] +Uplifting [gfx_init_screen3] best 12537956 combination zp[1]:335 [ gfx_init_screen3::$1 ] +Attempting to uplift remaining variables inzp[1]:340 [ gfx_init_screen2::col2#0 ] +Uplifting [gfx_init_screen2] best 12537956 combination zp[1]:340 [ gfx_init_screen2::col2#0 ] +Attempting to uplift remaining variables inzp[1]:346 [ gfx_init_screen0::$1 ] +Uplifting [gfx_init_screen0] best 12537956 combination zp[1]:346 [ gfx_init_screen0::$1 ] +Attempting to uplift remaining variables inzp[1]:309 [ bitmap_line::y1#0 ] +Uplifting [bitmap_line] best 12537956 combination zp[1]:309 [ bitmap_line::y1#0 ] +Attempting to uplift remaining variables inzp[1]:62 [ gfx_init_plane_fill::fill#6 ] +Uplifting [gfx_init_plane_fill] best 12537956 combination zp[1]:62 [ gfx_init_plane_fill::fill#6 ] +Attempting to uplift remaining variables inzp[1]:330 [ bitmap_init::$10 ] +Uplifting [bitmap_init] best 12537956 combination zp[1]:330 [ bitmap_init::$10 ] Attempting to uplift remaining variables inzp[1]:311 [ bitmap_line::yd#2 ] -Uplifting [bitmap_line] best 12537753 combination reg byte y [ bitmap_line::yd#2 ] +Uplifting [bitmap_line] best 12537946 combination reg byte y [ bitmap_line::yd#2 ] Attempting to uplift remaining variables inzp[1]:312 [ bitmap_line::yd#1 ] -Uplifting [bitmap_line] best 12537743 combination reg byte y [ bitmap_line::yd#1 ] +Uplifting [bitmap_line] best 12537936 combination reg byte y [ bitmap_line::yd#1 ] Attempting to uplift remaining variables inzp[1]:314 [ bitmap_line::yd#10 ] -Uplifting [bitmap_line] best 12537733 combination reg byte y [ bitmap_line::yd#10 ] +Uplifting [bitmap_line] best 12537926 combination reg byte y [ bitmap_line::yd#10 ] Attempting to uplift remaining variables inzp[1]:315 [ bitmap_line::yd#11 ] -Uplifting [bitmap_line] best 12537723 combination reg byte y [ bitmap_line::yd#11 ] -Attempting to uplift remaining variables inzp[1]:159 [ gfx_mode::plane_a_offs#0 ] -Uplifting [gfx_mode] best 12537721 combination reg byte x [ gfx_mode::plane_a_offs#0 ] -Attempting to uplift remaining variables inzp[1]:184 [ gfx_mode::plane_b_offs#0 ] -Uplifting [gfx_mode] best 12537719 combination reg byte x [ gfx_mode::plane_b_offs#0 ] +Uplifting [bitmap_line] best 12537916 combination reg byte y [ bitmap_line::yd#11 ] +Attempting to uplift remaining variables inzp[1]:307 [ bitmap_line::x1#0 ] +Uplifting [bitmap_line] best 12537916 combination zp[1]:307 [ bitmap_line::x1#0 ] +Attempting to uplift remaining variables inzp[1]:306 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line] best 12537916 combination zp[1]:306 [ bitmap_line::x0#0 ] Attempting to uplift remaining variables inzp[1]:310 [ bitmap_line::xd#2 ] -Uplifting [bitmap_line] best 12537719 combination zp[1]:310 [ bitmap_line::xd#2 ] +Uplifting [bitmap_line] best 12537916 combination zp[1]:310 [ bitmap_line::xd#2 ] Attempting to uplift remaining variables inzp[1]:313 [ bitmap_line::xd#1 ] -Uplifting [bitmap_line] best 12537719 combination zp[1]:313 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 12537916 combination zp[1]:313 [ bitmap_line::xd#1 ] +Attempting to uplift remaining variables inzp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [gfx_init_vic_bitmap] best 12537916 combination zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Attempting to uplift remaining variables inzp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplifting [gfx_init_plane_horisontal2] best 12537916 combination zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Attempting to uplift remaining variables inzp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplifting [gfx_init_screen1] best 12537916 combination zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Attempting to uplift remaining variables inzp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplifting [gfx_init_screen3] best 12537916 combination zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Attempting to uplift remaining variables inzp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 12537916 combination zp[1]:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Attempting to uplift remaining variables inzp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplifting [gfx_init_plane_horisontal] best 12537916 combination zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Attempting to uplift remaining variables inzp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplifting [gfx_init_screen2] best 12537916 combination zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Attempting to uplift remaining variables inzp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplifting [gfx_init_plane_8bppchunky] best 12537916 combination zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] +Uplifting [gfx_mode] best 12537897 combination reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] +Attempting to uplift remaining variables inzp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [gfx_init_plane_vertical] best 12537897 combination zp[1]:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Attempting to uplift remaining variables inzp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_screen4] best 12537897 combination zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Attempting to uplift remaining variables inzp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_charset] best 12537897 combination zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Attempting to uplift remaining variables inzp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplifting [gfx_init_plane_charset8] best 12537897 combination zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +Uplifting [gfx_mode] best 12537886 combination reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +Attempting to uplift remaining variables inzp[1]:158 [ gfx_mode::$18 ] +Uplifting [gfx_mode] best 12537880 combination reg byte a [ gfx_mode::$18 ] +Attempting to uplift remaining variables inzp[1]:174 [ gfx_mode::$23 ] +Uplifting [gfx_mode] best 12537874 combination reg byte a [ gfx_mode::$23 ] +Attempting to uplift remaining variables inzp[1]:175 [ gfx_mode::$25 ] +Uplifting [gfx_mode] best 12537868 combination reg byte a [ gfx_mode::$25 ] +Attempting to uplift remaining variables inzp[1]:178 [ gfx_mode::$27 ] +Uplifting [gfx_mode] best 12537862 combination reg byte a [ gfx_mode::$27 ] +Attempting to uplift remaining variables inzp[1]:179 [ gfx_mode::$28 ] +Uplifting [gfx_mode] best 12537856 combination reg byte a [ gfx_mode::$28 ] +Attempting to uplift remaining variables inzp[1]:180 [ gfx_mode::$29 ] +Uplifting [gfx_mode] best 12537850 combination reg byte a [ gfx_mode::$29 ] +Attempting to uplift remaining variables inzp[1]:181 [ gfx_mode::$30 ] +Uplifting [gfx_mode] best 12537844 combination reg byte a [ gfx_mode::$30 ] +Attempting to uplift remaining variables inzp[1]:182 [ gfx_mode::$31 ] +Uplifting [gfx_mode] best 12537838 combination reg byte a [ gfx_mode::$31 ] +Attempting to uplift remaining variables inzp[1]:183 [ gfx_mode::$32 ] +Uplifting [gfx_mode] best 12537832 combination reg byte a [ gfx_mode::$32 ] +Attempting to uplift remaining variables inzp[1]:199 [ gfx_mode::$37 ] +Uplifting [gfx_mode] best 12537826 combination reg byte a [ gfx_mode::$37 ] +Attempting to uplift remaining variables inzp[1]:200 [ gfx_mode::$39 ] +Uplifting [gfx_mode] best 12537820 combination reg byte a [ gfx_mode::$39 ] +Attempting to uplift remaining variables inzp[1]:203 [ gfx_mode::$41 ] +Uplifting [gfx_mode] best 12537814 combination reg byte a [ gfx_mode::$41 ] +Attempting to uplift remaining variables inzp[1]:204 [ gfx_mode::$42 ] +Uplifting [gfx_mode] best 12537808 combination reg byte a [ gfx_mode::$42 ] +Attempting to uplift remaining variables inzp[1]:205 [ gfx_mode::$43 ] +Uplifting [gfx_mode] best 12537802 combination reg byte a [ gfx_mode::$43 ] +Attempting to uplift remaining variables inzp[1]:206 [ gfx_mode::$44 ] +Uplifting [gfx_mode] best 12537796 combination reg byte a [ gfx_mode::$44 ] +Attempting to uplift remaining variables inzp[1]:207 [ gfx_mode::$45 ] +Uplifting [gfx_mode] best 12537790 combination reg byte a [ gfx_mode::$45 ] +Attempting to uplift remaining variables inzp[1]:224 [ gfx_mode::$54 ] +Uplifting [gfx_mode] best 12537784 combination reg byte a [ gfx_mode::$54 ] +Attempting to uplift remaining variables inzp[1]:225 [ gfx_mode::$55 ] +Uplifting [gfx_mode] best 12537778 combination reg byte a [ gfx_mode::$55 ] +Attempting to uplift remaining variables inzp[1]:226 [ gfx_mode::$56 ] +Uplifting [gfx_mode] best 12537772 combination reg byte a [ gfx_mode::$56 ] +Attempting to uplift remaining variables inzp[1]:229 [ gfx_mode::$58 ] +Uplifting [gfx_mode] best 12537766 combination reg byte a [ gfx_mode::$58 ] +Attempting to uplift remaining variables inzp[1]:230 [ gfx_mode::$59 ] +Uplifting [gfx_mode] best 12537760 combination reg byte a [ gfx_mode::$59 ] +Attempting to uplift remaining variables inzp[1]:231 [ gfx_mode::$60 ] +Uplifting [gfx_mode] best 12537754 combination reg byte a [ gfx_mode::$60 ] +Attempting to uplift remaining variables inzp[1]:232 [ gfx_mode::$61 ] +Uplifting [gfx_mode] best 12537748 combination reg byte a [ gfx_mode::$61 ] +Attempting to uplift remaining variables inzp[1]:233 [ gfx_mode::$62 ] +Uplifting [gfx_mode] best 12537742 combination reg byte a [ gfx_mode::$62 ] +Attempting to uplift remaining variables inzp[1]:234 [ gfx_mode::$63 ] +Uplifting [gfx_mode] best 12537736 combination reg byte a [ gfx_mode::$63 ] +Attempting to uplift remaining variables inzp[1]:235 [ gfx_mode::$64 ] +Uplifting [gfx_mode] best 12537730 combination reg byte a [ gfx_mode::$64 ] +Attempting to uplift remaining variables inzp[1]:236 [ gfx_mode::$65 ] +Uplifting [gfx_mode] best 12537724 combination reg byte a [ gfx_mode::$65 ] +Attempting to uplift remaining variables inzp[1]:4 [ gfx_mode::vic_control2#2 ] +Uplifting [gfx_mode] best 12537715 combination reg byte a [ gfx_mode::vic_control2#2 ] +Attempting to uplift remaining variables inzp[1]:159 [ gfx_mode::plane_a_offs#0 ] +Uplifting [gfx_mode] best 12537713 combination reg byte x [ gfx_mode::plane_a_offs#0 ] +Attempting to uplift remaining variables inzp[1]:184 [ gfx_mode::plane_b_offs#0 ] +Uplifting [gfx_mode] best 12537711 combination reg byte x [ gfx_mode::plane_b_offs#0 ] Attempting to uplift remaining variables inzp[1]:216 [ gfx_mode::$50 ] -Uplifting [gfx_mode] best 12537719 combination zp[1]:216 [ gfx_mode::$50 ] +Uplifting [gfx_mode] best 12537711 combination zp[1]:216 [ gfx_mode::$50 ] Coalescing zero page register [ zp[2]:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] ] with [ zp[2]:227 [ get_vic_screen::return#11 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ get_vic_screen::return#5 ] ] with [ zp[2]:208 [ get_vic_screen::return#10 ] ] - score: 1 Coalescing zero page register [ zp[2]:23 [ get_vic_charset::return#2 ] ] with [ zp[2]:218 [ get_vic_charset::return#4 ] ] - score: 1 @@ -20365,8 +20347,8 @@ Coalescing zero page register [ zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_ Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] ] with [ zp[1]:310 [ bitmap_line::xd#2 ] ] - score: 1 Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 ] ] with [ zp[1]:313 [ bitmap_line::xd#1 ] ] - score: 1 Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] ] with [ zp[1]:306 [ bitmap_line::x0#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] with [ zp[1]:308 [ bitmap_line::y0#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] ] with [ zp[1]:309 [ bitmap_line::y1#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] with [ zp[1]:307 [ bitmap_line::x1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:327 [ bitmap_clear::bitmap#0 ] ] - score: 1 Coalescing zero page register [ zp[4]:164 [ gfx_mode::$20 ] ] with [ zp[4]:168 [ gfx_mode::plane_a#0 ] ] - score: 1 Coalescing zero page register [ zp[4]:189 [ gfx_mode::$34 ] ] with [ zp[4]:193 [ gfx_mode::plane_b#0 ] ] - score: 1 @@ -20384,8 +20366,8 @@ Coalescing zero page register [ zp[4]:26 [ get_plane::return#14 get_plane::retur Coalescing zero page register [ zp[4]:26 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$20 gfx_mode::plane_a#0 ] ] with [ zp[4]:189 [ gfx_mode::$34 gfx_mode::plane_b#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 ] ] with [ zp[2]:293 [ gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 ] ] - score: 1 Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 ] ] with [ zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 ] ] with [ zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] with [ zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] with [ zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] - score: 1 +Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 ] ] with [ zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:210 [ gfx_mode::$47 gfx_mode::$48 ] ] with [ zp[2]:214 [ gfx_mode::$49 ] ] - score: 1 Coalescing zero page register [ zp[2]:266 [ form_field_ptr::return#0 form_field_ptr::return#3 ] ] with [ zp[2]:270 [ form_control::field#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 ] ] with [ zp[2]:210 [ gfx_mode::$47 gfx_mode::$48 gfx_mode::$49 ] ] - score: 1 @@ -20408,13 +20390,13 @@ Coalescing zero page register [ zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic Coalescing zero page register [ zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] with [ zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] with [ zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] Coalescing zero page register [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] ] with [ zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] -Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 ] ] with [ zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] +Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] with [ zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] ] with [ zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] ] Coalescing zero page register [ zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] -Coalescing zero page register [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] +Coalescing zero page register [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] Coalescing zero page register [ zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] with [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] +Coalescing zero page register [ zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] with [ zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] ] Coalescing zero page register [ zp[2]:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] ] with [ zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] ] with [ zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] ] Coalescing zero page register [ zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] ] with [ zp[2]:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] @@ -20446,12 +20428,12 @@ Coalescing zero page register [ zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_scre Coalescing zero page register [ zp[1]:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] with [ zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] Coalescing zero page register [ zp[2]:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] ] with [ zp[2]:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] Coalescing zero page register [ zp[1]:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] with [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] -Coalescing zero page register [ zp[1]:216 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] +Coalescing zero page register [ zp[1]:216 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[2]:263 [ form_field_ptr::line#0 gfx_mode::$24 ] ] with [ zp[2]:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] ] -Coalescing zero page register [ zp[1]:265 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 ] ] with [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] +Coalescing zero page register [ zp[1]:265 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 ] ] with [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] Coalescing zero page register [ zp[2]:317 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 gfx_init_plane_8bppchunky::$5 ] ] with [ zp[2]:266 [ form_field_ptr::return#0 form_field_ptr::return#3 form_control::field#0 gfx_mode::$26 ] ] Coalescing zero page register [ zp[2]:319 [ bitmap_plot::plotter_y#0 ] ] with [ zp[2]:284 [ memset::end#0 gfx_mode::$38 ] ] -Coalescing zero page register [ zp[1]:330 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 ] ] with [ zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] +Coalescing zero page register [ zp[1]:330 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 ] ] with [ zp[1]:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] ] Coalescing zero page register [ zp[1]:346 [ gfx_init_screen0::$1 ] ] with [ zp[1]:340 [ gfx_init_screen2::col2#0 gfx_init_screen3::$1 ] ] Coalescing zero page register [ zp[2]:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 ] ] with [ zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 form_set_screen::line#2 form_set_screen::line#1 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$47 gfx_mode::$48 gfx_mode::$49 ] ] Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] with [ zp[1]:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 gfx_mode::cy#4 gfx_mode::cy#1 ] ] @@ -20472,14 +20454,14 @@ Allocated (was zp[1]:138) zp[1]:14 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy Allocated (was zp[1]:142) zp[1]:15 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 keyboard_event_pressed::keycode#4 ] Allocated (was zp[2]:148) zp[2]:16 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 form_set_screen::line#2 form_set_screen::line#1 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$47 gfx_mode::$48 gfx_mode::$49 ] Allocated (was zp[1]:150) zp[1]:18 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] -Allocated (was zp[1]:216) zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Allocated (was zp[1]:216) zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Allocated (was zp[2]:263) zp[2]:20 [ form_field_ptr::line#0 gfx_mode::$24 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] -Allocated (was zp[1]:265) zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Allocated (was zp[1]:265) zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Allocated (was zp[4]:286) zp[4]:23 [ gfx_init_plane_fill::$0 ] Allocated (was zp[2]:290) zp[2]:27 [ gfx_init_plane_fill::$1 gfx_mode::$40 ] Allocated (was zp[2]:317) zp[2]:29 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 gfx_init_plane_8bppchunky::$5 form_field_ptr::return#0 form_field_ptr::return#3 form_control::field#0 gfx_mode::$26 ] Allocated (was zp[2]:319) zp[2]:31 [ bitmap_plot::plotter_y#0 memset::end#0 gfx_mode::$38 ] -Allocated (was zp[1]:330) zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Allocated (was zp[1]:330) zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] Allocated (was zp[1]:346) zp[1]:34 [ gfx_init_screen0::$1 gfx_init_screen2::col2#0 gfx_init_screen3::$1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ASSEMBLER BEFORE OPTIMIZATION @@ -24425,13 +24407,13 @@ gfx_init_vic_bitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - // [613] (byte) bitmap_line::x1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_x+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 + // [613] (byte) bitmap_line::x1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_x+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z l - ldx lines_x+1,y - // [614] (byte) bitmap_line::y0#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + lda lines_x+1,y + sta.z bitmap_line.x1 + // [614] (byte) bitmap_line::y0#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 ldy.z l - lda lines_y,y - sta.z bitmap_line.y0 + ldx lines_y,y // [615] (byte) bitmap_line::y1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z l lda lines_y+1,y @@ -24452,36 +24434,32 @@ gfx_init_vic_bitmap: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zp($16) x0, byte register(X) x1, byte zp($21) y0, byte zp($13) y1) +// bitmap_line(byte zp($16) x0, byte zp($21) x1, byte register(X) y0, byte zp($13) y1) bitmap_line: { .label xd = $12 .label x0 = $16 - .label y0 = $21 + .label x1 = $21 .label y1 = $13 - // [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuxx_then_la1 - txa - cmp.z x0 - beq !+ - bcs __b1 - !: + // [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + lda.z x0 + cmp.z x1 + bcc __b1 jmp __b2 // bitmap_line::@2 __b2: - // [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuxx - txa - eor #$ff + // [619] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + lda.z x0 sec - adc.z x0 + sbc.z x1 sta.z xd - // [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuz1_lt_vbuz2_then_la1 - lda.z y0 - cmp.z y1 + // [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuxx_lt_vbuz1_then_la1 + cpx.z y1 bcc __b7 jmp __b3 // bitmap_line::@3 __b3: - // [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y0 + // [621] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuxx_minus_vbuz1 + txa sec sbc.z y1 tay @@ -24495,9 +24473,8 @@ bitmap_line: { lda.z y1 sta.z bitmap_line_ydxi.y // [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 - // [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxi.y1 + // [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxi.y1 // [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#2 -- vbuz1=vbuyy sty.z bitmap_line_ydxi.yd // [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#2 @@ -24517,11 +24494,11 @@ bitmap_line: { rts // bitmap_line::@8 __b8: - // [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyi.x - // [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_xdyi.y + // [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyi.x + // [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuxx=vbuz1 + ldx.z y1 // [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 // [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#2 // [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#2 -- vbuz1=vbuyy @@ -24538,10 +24515,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@7 __b7: - // [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y1 + // [636] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuxx + txa + eor #$ff sec - sbc.z y0 + adc.z y1 tay // [637] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@9 -- vbuyy_lt_vbuz1_then_la1 cpy.z xd @@ -24549,14 +24527,10 @@ bitmap_line: { jmp __b10 // bitmap_line::@10 __b10: - // [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxd.y - // [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 - ldx.z x0 - // [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_ydxd.y1 + // [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxd.y + // [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 + // [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 // [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuyy sty.z bitmap_line_ydxd.yd // [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 @@ -24572,11 +24546,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@9 __b9: - // [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyd.x - // [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_xdyd.y + // [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyd.x + // [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuxx=vbuz1 + ldx.z y1 // [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 // [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 // [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuyy @@ -24593,20 +24567,19 @@ bitmap_line: { jmp __breturn // bitmap_line::@1 __b1: - // [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuxx_minus_vbuz2 - txa + // [650] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + lda.z x1 sec sbc.z x0 sta.z xd - // [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuz1_lt_vbuz2_then_la1 - lda.z y0 - cmp.z y1 + // [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuxx_lt_vbuz1_then_la1 + cpx.z y1 bcc __b11 jmp __b5 // bitmap_line::@5 __b5: - // [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y0 + // [652] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuxx_minus_vbuz1 + txa sec sbc.z y1 tay @@ -24619,8 +24592,11 @@ bitmap_line: { // [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda.z y1 sta.z bitmap_line_ydxd.y - // [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 - // [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + // [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_ydxd.x + // [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxd.y1 // [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuyy sty.z bitmap_line_ydxd.yd // [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#1 @@ -24640,8 +24616,9 @@ bitmap_line: { lda.z x0 sta.z bitmap_line_xdyd.x // [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - // [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyd.x1 + // [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyd.x1 // [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#1 // [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuyy sty.z bitmap_line_xdyd.yd @@ -24657,10 +24634,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@11 __b11: - // [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y1 + // [666] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuxx + txa + eor #$ff sec - sbc.z y0 + adc.z y1 tay // [667] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@13 -- vbuyy_lt_vbuz1_then_la1 cpy.z xd @@ -24668,11 +24646,11 @@ bitmap_line: { jmp __b14 // bitmap_line::@14 __b14: - // [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxi.y - // [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 - ldx.z x0 + // [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxi.y + // [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + lda.z x0 + sta.z bitmap_line_ydxi.x // [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 // [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#11 -- vbuz1=vbuyy sty.z bitmap_line_ydxi.yd @@ -24693,8 +24671,9 @@ bitmap_line: { lda.z x0 sta.z bitmap_line_xdyi.x // [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - // [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyi.x1 + // [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyi.x1 // [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 // [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#11 -- vbuz1=vbuyy sty.z bitmap_line_xdyi.yd @@ -24710,10 +24689,9 @@ bitmap_line: { jmp __breturn } // bitmap_line_xdyi -// bitmap_line_xdyi(byte zp($d) x, byte zp($21) y, byte zp($16) x1, byte zp($12) xd, byte zp($f) yd) +// bitmap_line_xdyi(byte zp($d) x, byte register(X) y, byte zp($16) x1, byte zp($12) xd, byte zp($f) yd) bitmap_line_xdyi: { .label x = $d - .label y = $21 .label x1 = $16 .label xd = $12 .label yd = $f @@ -24731,10 +24709,9 @@ bitmap_line_xdyi: { jmp __b1 // bitmap_line_xdyi::@1 __b1: - // [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 - ldx.z x - // [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 // [685] call bitmap_plot // [695] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: @@ -24758,8 +24735,8 @@ bitmap_line_xdyi: { jmp __b3 // bitmap_line_xdyi::@3 __b3: - // [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 - inc.z y + // [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuxx=_inc_vbuxx + inx // [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -24773,11 +24750,12 @@ bitmap_line_xdyi: { jmp __b2 // bitmap_line_xdyi::@2 __b2: - // [692] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx - // [693] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [692] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 + // [693] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return @@ -24786,20 +24764,20 @@ bitmap_line_xdyi: { rts } // bitmap_plot -// bitmap_plot(byte register(X) x, byte register(Y) y) +// bitmap_plot(byte register(Y) x, byte register(X) y) bitmap_plot: { .label plotter_x = $1d .label plotter_y = $1f .label plotter = $1d - // [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx - lda bitmap_plot_xhi,x + // [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + lda bitmap_plot_xhi,y sta.z plotter_x+1 - lda bitmap_plot_xlo,x + lda bitmap_plot_xlo,y sta.z plotter_x - // [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + // [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta.z plotter_y+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta.z plotter_y // [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter @@ -24809,8 +24787,8 @@ bitmap_plot: { lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 - // [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx - lda bitmap_plot_bit,x + // [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy + lda bitmap_plot_bit,y ldy #0 ora (plotter),y // [700] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa @@ -24823,9 +24801,10 @@ bitmap_plot: { rts } // bitmap_line_ydxi -// bitmap_line_ydxi(byte zp($e) y, byte register(X) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) +// bitmap_line_ydxi(byte zp($e) y, byte zp($21) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) bitmap_line_ydxi: { .label y = $e + .label x = $21 .label y1 = $13 .label yd = $d .label xd = $12 @@ -24843,9 +24822,10 @@ bitmap_line_ydxi: { jmp __b1 // bitmap_line_ydxi::@1 __b1: - // [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - // [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuxx=vbuz1 + ldx.z y // [707] call bitmap_plot // [695] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: @@ -24869,8 +24849,8 @@ bitmap_line_ydxi: { jmp __b3 // bitmap_line_ydxi::@3 __b3: - // [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx - inx + // [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + inc.z x // [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -24884,12 +24864,11 @@ bitmap_line_ydxi: { jmp __b2 // bitmap_line_ydxi::@2 __b2: - // [714] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 - // [715] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [714] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx + // [715] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return @@ -24898,10 +24877,9 @@ bitmap_line_ydxi: { rts } // bitmap_line_xdyd -// bitmap_line_xdyd(byte zp($f) x, byte zp($21) y, byte zp($16) x1, byte zp($12) xd, byte zp($e) yd) +// bitmap_line_xdyd(byte zp($f) x, byte register(X) y, byte zp($16) x1, byte zp($12) xd, byte zp($e) yd) bitmap_line_xdyd: { .label x = $f - .label y = $21 .label x1 = $16 .label xd = $12 .label yd = $e @@ -24919,10 +24897,9 @@ bitmap_line_xdyd: { jmp __b1 // bitmap_line_xdyd::@1 __b1: - // [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 - ldx.z x - // [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 - ldy.z y + // [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 // [722] call bitmap_plot // [695] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: @@ -24946,8 +24923,8 @@ bitmap_line_xdyd: { jmp __b3 // bitmap_line_xdyd::@3 __b3: - // [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 - dec.z y + // [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuxx=_dec_vbuxx + dex // [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -24961,11 +24938,12 @@ bitmap_line_xdyd: { jmp __b2 // bitmap_line_xdyd::@2 __b2: - // [729] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx - // [730] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [729] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 + // [730] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return @@ -24974,10 +24952,11 @@ bitmap_line_xdyd: { rts } // bitmap_line_ydxd -// bitmap_line_ydxd(byte zp($e) y, byte register(X) x, byte zp($21) y1, byte zp($d) yd, byte zp($12) xd) +// bitmap_line_ydxd(byte zp($e) y, byte zp($16) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) bitmap_line_ydxd: { .label y = $e - .label y1 = $21 + .label x = $16 + .label y1 = $13 .label yd = $d .label xd = $12 .label e = $f @@ -24994,9 +24973,10 @@ bitmap_line_ydxd: { jmp __b1 // bitmap_line_ydxd::@1 __b1: - // [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - // [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 - ldy.z y + // [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuxx=vbuz1 + ldx.z y // [737] call bitmap_plot // [695] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: @@ -25020,8 +25000,8 @@ bitmap_line_ydxd: { jmp __b3 // bitmap_line_ydxd::@3 __b3: - // [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx - dex + // [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + dec.z x // [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -25035,12 +25015,11 @@ bitmap_line_ydxd: { jmp __b2 // bitmap_line_ydxd::@2 __b2: - // [744] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 - // [745] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [744] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx + // [745] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return @@ -26830,8 +26809,7 @@ Replacing instruction ldx #0 with TAX Removing instruction lda form_fields_val Removing instruction ldy.z form_field_idx Removing instruction ldy.z form_field_idx -Removing instruction lda.z y0 -Removing instruction lda.z y0 +Removing instruction lda.z x0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __bbegin: Removing instruction __breturn: @@ -26971,35 +26949,35 @@ FINAL SYMBOL TABLE (label) apply_preset::@9 (label) apply_preset::@return (byte) apply_preset::i -(byte) apply_preset::i#1 reg byte y 2002.0 -(byte) apply_preset::i#2 reg byte y 1668.3333333333335 +(byte) apply_preset::i#1 reg byte y 2.000000002E9 +(byte) apply_preset::i#2 reg byte y 1.6666666683333335E9 (byte) apply_preset::idx -(byte) apply_preset::idx#0 reg byte a 11.18181818181818 +(byte) apply_preset::idx#0 reg byte a 1009092.0000000002 (byte*) apply_preset::preset -(byte*) apply_preset::preset#15 preset zp[2]:7 200.2 +(byte*) apply_preset::preset#15 preset zp[2]:7 2.000000002E8 (void()) bitmap_clear() (label) bitmap_clear::@1 (label) bitmap_clear::@2 (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:16 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:16 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:16 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:16 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:16 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:16 10001.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:16 420000.60000000003 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:16 1550002.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:16 210003.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:16 20002.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 1500001.5 +(byte) bitmap_clear::x#2 reg byte x 666667.3333333334 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:22 16.5 -(byte) bitmap_clear::y#4 y zp[1]:22 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:22 150001.5 +(byte) bitmap_clear::y#4 y zp[1]:22 33333.666666666664 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:33 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 200002.0 +(byte~) bitmap_init::$10 zp[1]:33 50000.5 +(byte~) bitmap_init::$7 reg byte a 200002.0 +(byte~) bitmap_init::$8 reg byte a 200002.0 +(byte~) bitmap_init::$9 reg byte a 200002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -27009,19 +26987,19 @@ FINAL SYMBOL TABLE (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 100001.0 +(byte) bitmap_init::bits#3 reg byte y 60000.600000000006 +(byte) bitmap_init::bits#4 reg byte y 66667.33333333333 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 150001.5 +(byte) bitmap_init::x#2 reg byte x 66667.33333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 150001.5 +(byte) bitmap_init::y#2 reg byte x 50000.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 200002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 62500.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 100001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -27039,194 +27017,194 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp[1]:22 1.260869565217391 +(byte) bitmap_line::x0#0 x0 zp[1]:22 39565.65217391305 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 reg byte x 1.3181818181818181 +(byte) bitmap_line::x1#0 x1 zp[1]:33 41364.09090909091 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 xd zp[1]:18 0.7 -(byte) bitmap_line::xd#2 xd zp[1]:18 0.7 +(byte) bitmap_line::xd#1 xd zp[1]:18 35000.35 +(byte) bitmap_line::xd#2 xd zp[1]:18 35000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 y0 zp[1]:33 1.6666666666666674 +(byte) bitmap_line::y0#0 reg byte x 57619.66666666667 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 y1 zp[1]:19 1.7500000000000007 +(byte) bitmap_line::y1#0 y1 zp[1]:19 60500.650000000016 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#10 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#11 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#2 reg byte y 0.8888888888888888 +(byte) bitmap_line::yd#1 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#10 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#11 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#2 reg byte y 44444.88888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyd::$6 reg byte a 2.00000002E8 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 e zp[1]:13 4.0 -(byte) bitmap_line_xdyd::e#1 e zp[1]:13 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 e zp[1]:13 202.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:13 40.8 -(byte) bitmap_line_xdyd::e#6 e zp[1]:13 101.0 +(byte) bitmap_line_xdyd::e#0 e zp[1]:13 2000002.0 +(byte) bitmap_line_xdyd::e#1 e zp[1]:13 1.3333333466666667E8 +(byte) bitmap_line_xdyd::e#2 e zp[1]:13 2.00000002E8 +(byte) bitmap_line_xdyd::e#3 e zp[1]:13 4.0200000599999994E7 +(byte) bitmap_line_xdyd::e#6 e zp[1]:13 1.00000001E8 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 x zp[1]:15 0.8 -(byte) bitmap_line_xdyd::x#1 x zp[1]:15 0.8 -(byte) bitmap_line_xdyd::x#2 x zp[1]:15 37.875 -(byte) bitmap_line_xdyd::x#3 x zp[1]:15 76.25 -(byte) bitmap_line_xdyd::x#6 x zp[1]:15 3.0 +(byte) bitmap_line_xdyd::x#0 x zp[1]:15 40000.4 +(byte) bitmap_line_xdyd::x#1 x zp[1]:15 40000.4 +(byte) bitmap_line_xdyd::x#2 x zp[1]:15 3.7500000375E7 +(byte) bitmap_line_xdyd::x#3 x zp[1]:15 7.5250001E7 +(byte) bitmap_line_xdyd::x#6 x zp[1]:15 600001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:22 7.5 +(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:22 7157143.071428572 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyd::xd#1 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyd::xd#5 xd zp[1]:18 14.714285714285715 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyd::xd#1 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyd::xd#5 xd zp[1]:18 1.4300000285714287E7 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 y zp[1]:33 1.0 -(byte) bitmap_line_xdyd::y#1 y zp[1]:33 1.0 -(byte) bitmap_line_xdyd::y#2 y zp[1]:33 101.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:33 58.00000000000001 -(byte) bitmap_line_xdyd::y#5 y zp[1]:33 3.0 -(byte) bitmap_line_xdyd::y#6 y zp[1]:33 101.0 +(byte) bitmap_line_xdyd::y#0 reg byte x 50000.5 +(byte) bitmap_line_xdyd::y#1 reg byte x 50000.5 +(byte) bitmap_line_xdyd::y#2 reg byte x 1.00000001E8 +(byte) bitmap_line_xdyd::y#3 reg byte x 5.7285715E7 +(byte) bitmap_line_xdyd::y#5 reg byte x 600001.5 +(byte) bitmap_line_xdyd::y#6 reg byte x 1.00000001E8 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyd::yd#1 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyd::yd#2 yd zp[1]:14 7.642857142857143 +(byte) bitmap_line_xdyd::yd#0 yd zp[1]:14 200002.0 +(byte) bitmap_line_xdyd::yd#1 yd zp[1]:14 200002.0 +(byte) bitmap_line_xdyd::yd#2 yd zp[1]:14 7228571.714285715 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyi::$6 reg byte a 2.00000002E8 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 e zp[1]:19 4.0 -(byte) bitmap_line_xdyi::e#1 e zp[1]:19 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 e zp[1]:19 202.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:19 40.8 -(byte) bitmap_line_xdyi::e#6 e zp[1]:19 101.0 +(byte) bitmap_line_xdyi::e#0 e zp[1]:19 2000002.0 +(byte) bitmap_line_xdyi::e#1 e zp[1]:19 1.3333333466666667E8 +(byte) bitmap_line_xdyi::e#2 e zp[1]:19 2.00000002E8 +(byte) bitmap_line_xdyi::e#3 e zp[1]:19 4.0200000599999994E7 +(byte) bitmap_line_xdyi::e#6 e zp[1]:19 1.00000001E8 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 x zp[1]:13 0.8 -(byte) bitmap_line_xdyi::x#1 x zp[1]:13 0.8 -(byte) bitmap_line_xdyi::x#2 x zp[1]:13 37.875 -(byte) bitmap_line_xdyi::x#3 x zp[1]:13 76.25 -(byte) bitmap_line_xdyi::x#6 x zp[1]:13 3.0 +(byte) bitmap_line_xdyi::x#0 x zp[1]:13 40000.4 +(byte) bitmap_line_xdyi::x#1 x zp[1]:13 40000.4 +(byte) bitmap_line_xdyi::x#2 x zp[1]:13 3.7500000375E7 +(byte) bitmap_line_xdyi::x#3 x zp[1]:13 7.5250001E7 +(byte) bitmap_line_xdyi::x#6 x zp[1]:13 600001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:22 7.5 +(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:22 7157143.071428572 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyi::xd#5 xd zp[1]:18 14.714285714285715 +(byte) bitmap_line_xdyi::xd#0 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyi::xd#5 xd zp[1]:18 1.4300000285714287E7 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 y zp[1]:33 1.0 -(byte) bitmap_line_xdyi::y#1 y zp[1]:33 1.0 -(byte) bitmap_line_xdyi::y#2 y zp[1]:33 101.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:33 58.00000000000001 -(byte) bitmap_line_xdyi::y#5 y zp[1]:33 3.0 -(byte) bitmap_line_xdyi::y#6 y zp[1]:33 101.0 +(byte) bitmap_line_xdyi::y#0 reg byte x 50000.5 +(byte) bitmap_line_xdyi::y#1 reg byte x 50000.5 +(byte) bitmap_line_xdyi::y#2 reg byte x 1.00000001E8 +(byte) bitmap_line_xdyi::y#3 reg byte x 5.7285715E7 +(byte) bitmap_line_xdyi::y#5 reg byte x 600001.5 +(byte) bitmap_line_xdyi::y#6 reg byte x 1.00000001E8 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 yd zp[1]:15 4.0 -(byte) bitmap_line_xdyi::yd#1 yd zp[1]:15 4.0 -(byte) bitmap_line_xdyi::yd#2 yd zp[1]:15 7.642857142857143 +(byte) bitmap_line_xdyi::yd#0 yd zp[1]:15 200002.0 +(byte) bitmap_line_xdyi::yd#1 yd zp[1]:15 200002.0 +(byte) bitmap_line_xdyi::yd#2 yd zp[1]:15 7228571.714285715 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 reg byte a 202.0 +(byte~) bitmap_line_ydxd::$6 reg byte x 2.00000002E8 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:15 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:15 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp[1]:15 202.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:15 40.8 -(byte) bitmap_line_ydxd::e#6 e zp[1]:15 101.0 +(byte) bitmap_line_ydxd::e#0 e zp[1]:15 2000002.0 +(byte) bitmap_line_ydxd::e#1 e zp[1]:15 1.3333333466666667E8 +(byte) bitmap_line_ydxd::e#2 e zp[1]:15 2.00000002E8 +(byte) bitmap_line_ydxd::e#3 e zp[1]:15 4.0200000599999994E7 +(byte) bitmap_line_ydxd::e#6 e zp[1]:15 1.00000001E8 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#2 reg byte x 101.0 -(byte) bitmap_line_ydxd::x#3 reg byte x 58.00000000000001 -(byte) bitmap_line_ydxd::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxd::x#6 reg byte x 101.0 +(byte) bitmap_line_ydxd::x#0 x zp[1]:22 50000.5 +(byte) bitmap_line_ydxd::x#1 x zp[1]:22 50000.5 +(byte) bitmap_line_ydxd::x#2 x zp[1]:22 1.00000001E8 +(byte) bitmap_line_ydxd::x#3 x zp[1]:22 5.7285715E7 +(byte) bitmap_line_ydxd::x#5 x zp[1]:22 600001.5 +(byte) bitmap_line_ydxd::x#6 x zp[1]:22 1.00000001E8 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxd::xd#1 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxd::xd#2 xd zp[1]:18 7.642857142857143 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxd::xd#1 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxd::xd#2 xd zp[1]:18 7228571.714285715 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 y zp[1]:14 0.8 -(byte) bitmap_line_ydxd::y#1 y zp[1]:14 0.8 -(byte) bitmap_line_ydxd::y#2 y zp[1]:14 76.25 -(byte) bitmap_line_ydxd::y#3 y zp[1]:14 37.875 -(byte) bitmap_line_ydxd::y#7 y zp[1]:14 3.0 +(byte) bitmap_line_ydxd::y#0 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxd::y#1 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxd::y#2 y zp[1]:14 7.5250001E7 +(byte) bitmap_line_ydxd::y#3 y zp[1]:14 3.7500000375E7 +(byte) bitmap_line_ydxd::y#7 y zp[1]:14 600001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:33 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:33 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:33 7.5 +(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:19 7157143.071428572 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxd::yd#1 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxd::yd#5 yd zp[1]:13 14.714285714285715 +(byte) bitmap_line_ydxd::yd#0 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxd::yd#1 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxd::yd#5 yd zp[1]:13 1.4300000285714287E7 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 reg byte a 202.0 +(byte~) bitmap_line_ydxi::$6 reg byte x 2.00000002E8 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:15 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:15 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp[1]:15 202.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:15 40.8 -(byte) bitmap_line_ydxi::e#6 e zp[1]:15 101.0 +(byte) bitmap_line_ydxi::e#0 e zp[1]:15 2000002.0 +(byte) bitmap_line_ydxi::e#1 e zp[1]:15 1.3333333466666667E8 +(byte) bitmap_line_ydxi::e#2 e zp[1]:15 2.00000002E8 +(byte) bitmap_line_ydxi::e#3 e zp[1]:15 4.0200000599999994E7 +(byte) bitmap_line_ydxi::e#6 e zp[1]:15 1.00000001E8 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#2 reg byte x 101.0 -(byte) bitmap_line_ydxi::x#3 reg byte x 58.00000000000001 -(byte) bitmap_line_ydxi::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxi::x#6 reg byte x 101.0 +(byte) bitmap_line_ydxi::x#0 x zp[1]:33 50000.5 +(byte) bitmap_line_ydxi::x#1 x zp[1]:33 50000.5 +(byte) bitmap_line_ydxi::x#2 x zp[1]:33 1.00000001E8 +(byte) bitmap_line_ydxi::x#3 x zp[1]:33 5.7285715E7 +(byte) bitmap_line_ydxi::x#5 x zp[1]:33 600001.5 +(byte) bitmap_line_ydxi::x#6 x zp[1]:33 1.00000001E8 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxi::xd#2 xd zp[1]:18 7.642857142857143 +(byte) bitmap_line_ydxi::xd#0 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxi::xd#2 xd zp[1]:18 7228571.714285715 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 y zp[1]:14 0.8 -(byte) bitmap_line_ydxi::y#1 y zp[1]:14 0.8 -(byte) bitmap_line_ydxi::y#2 y zp[1]:14 37.875 -(byte) bitmap_line_ydxi::y#3 y zp[1]:14 76.25 -(byte) bitmap_line_ydxi::y#6 y zp[1]:14 3.0 +(byte) bitmap_line_ydxi::y#0 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxi::y#1 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxi::y#2 y zp[1]:14 3.7500000375E7 +(byte) bitmap_line_ydxi::y#3 y zp[1]:14 7.5250001E7 +(byte) bitmap_line_ydxi::y#6 y zp[1]:14 600001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:19 7.5 +(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:19 7157143.071428572 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#1 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#5 yd zp[1]:13 14.714285714285715 +(byte) bitmap_line_ydxi::yd#0 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxi::yd#1 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxi::yd#5 yd zp[1]:13 1.4300000285714287E7 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.000000002E9 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:29 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:29 5.000000005E8 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:29 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:29 1.000000001E9 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:31 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:31 2.000000002E9 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 101.0 -(byte) bitmap_plot::x#1 reg byte x 101.0 -(byte) bitmap_plot::x#2 reg byte x 101.0 -(byte) bitmap_plot::x#3 reg byte x 101.0 -(byte) bitmap_plot::x#4 reg byte x 102.5 +(byte) bitmap_plot::x#0 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#1 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#2 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#3 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#4 reg byte y 8.5000000175E8 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 202.0 -(byte) bitmap_plot::y#1 reg byte y 202.0 -(byte) bitmap_plot::y#2 reg byte y 202.0 -(byte) bitmap_plot::y#3 reg byte y 202.0 -(byte) bitmap_plot::y#4 reg byte y 204.0 +(byte) bitmap_plot::y#0 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#1 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#2 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#3 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#4 reg byte x 1.200000003E9 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -27236,9 +27214,9 @@ FINAL SYMBOL TABLE (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 4.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 105.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 200002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 1110003.0 (const byte*) form_a_mod_hi = (const byte*) form_fields_val+(byte) $f (const byte*) form_a_mod_lo = (const byte*) form_fields_val+(byte) $10 (const byte*) form_a_pattern = (const byte*) form_fields_val+(byte) $a @@ -27254,11 +27232,11 @@ FINAL SYMBOL TABLE (const byte*) form_b_step_hi = (const byte*) form_fields_val+(byte) $14 (const byte*) form_b_step_lo = (const byte*) form_fields_val+(byte) $15 (byte()) form_control() -(byte~) form_control::$12 reg byte a 4.0 -(byte~) form_control::$13 reg byte a 4.0 -(byte~) form_control::$14 reg byte a 4.0 -(byte~) form_control::$15 reg byte a 4.0 -(byte~) form_control::$22 reg byte a 4.0 +(byte~) form_control::$12 reg byte a 2.0000002E7 +(byte~) form_control::$13 reg byte a 2.0000002E7 +(byte~) form_control::$14 reg byte a 2.0000002E7 +(byte~) form_control::$15 reg byte a 2.0000002E7 +(byte~) form_control::$22 reg byte a 2.0000002E7 (label) form_control::@1 (label) form_control::@10 (label) form_control::@11 @@ -27284,12 +27262,12 @@ FINAL SYMBOL TABLE (label) form_control::@9 (label) form_control::@return (byte*) form_control::field -(byte*) form_control::field#0 field zp[2]:29 0.5925925925925926 +(byte*) form_control::field#0 field zp[2]:29 2962963.2592592593 (byte) form_control::key_event -(byte) form_control::key_event#0 reg byte a 2.6666666666666665 +(byte) form_control::key_event#0 reg byte a 1.3333334666666666E7 (byte) form_control::return -(byte) form_control::return#0 reg byte a 2002.0 -(byte) form_control::return#2 reg byte x 333.6666666666667 +(byte) form_control::return#0 reg byte a 2000002.0 +(byte) form_control::return#2 reg byte x 333333.6666666667 (const byte*) form_ctrl_bmm = (const byte*) form_fields_val+(byte) 1 (const byte*) form_ctrl_borof = (const byte*) form_fields_val+(byte) 8 (const byte*) form_ctrl_chunk = (const byte*) form_fields_val+(byte) 7 @@ -27300,35 +27278,35 @@ FINAL SYMBOL TABLE (const byte*) form_ctrl_mcm = (const byte*) form_fields_val+(byte) 2 (const byte*) form_ctrl_overs = (const byte*) form_fields_val+(byte) 9 (signed byte) form_cursor_count -(signed byte) form_cursor_count#1 form_cursor_count zp[1]:3 0.3333333333333333 -(signed byte) form_cursor_count#15 form_cursor_count zp[1]:3 0.4 -(signed byte) form_cursor_count#16 form_cursor_count zp[1]:3 65.82352941176472 -(signed byte) form_cursor_count#21 form_cursor_count zp[1]:3 157.99999999999997 -(signed byte) form_cursor_count#5 form_cursor_count zp[1]:3 2.0 +(signed byte) form_cursor_count#1 form_cursor_count zp[1]:3 28.25641025641026 +(signed byte) form_cursor_count#15 form_cursor_count zp[1]:3 2000000.2 +(signed byte) form_cursor_count#16 form_cursor_count zp[1]:3 1829418.0 +(signed byte) form_cursor_count#21 form_cursor_count zp[1]:3 1585857.714285714 +(signed byte) form_cursor_count#5 form_cursor_count zp[1]:3 1.0000001E7 (const byte*) form_dtv_palet = (const byte*) form_fields_val+(byte) $1b (byte) form_field_idx -(byte) form_field_idx#1 form_field_idx zp[1]:4 0.3333333333333333 -(byte) form_field_idx#18 form_field_idx zp[1]:4 65.94117647058826 -(byte) form_field_idx#28 form_field_idx zp[1]:4 29.17948717948718 -(byte) form_field_idx#31 form_field_idx zp[1]:4 6.0 -(byte) form_field_idx#5 form_field_idx zp[1]:4 2.0 -(byte) form_field_idx#6 form_field_idx zp[1]:4 2.0 +(byte) form_field_idx#1 form_field_idx zp[1]:4 28.25641025641026 +(byte) form_field_idx#18 form_field_idx zp[1]:4 2417653.3529411764 +(byte) form_field_idx#28 form_field_idx zp[1]:4 4387205.641025641 +(byte) form_field_idx#31 form_field_idx zp[1]:4 3.0000003E7 +(byte) form_field_idx#5 form_field_idx zp[1]:4 1.0000001E7 +(byte) form_field_idx#6 form_field_idx zp[1]:4 1.0000001E7 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) (label) form_field_ptr::@return (byte*) form_field_ptr::field (byte) form_field_ptr::field_idx -(byte) form_field_ptr::field_idx#0 reg byte x 2002.0 -(byte) form_field_ptr::field_idx#1 reg byte x 4.0 -(byte) form_field_ptr::field_idx#2 reg byte x 335.66666666666674 +(byte) form_field_ptr::field_idx#0 reg byte x 2.000000002E9 +(byte) form_field_ptr::field_idx#1 reg byte x 2.0000002E7 +(byte) form_field_ptr::field_idx#2 reg byte x 7.003333334666666E9 (byte*) form_field_ptr::line -(word) form_field_ptr::line#0 line zp[2]:20 0.4 +(word) form_field_ptr::line#0 line zp[2]:20 2.0000000002E9 (byte*) form_field_ptr::return -(byte*) form_field_ptr::return#0 return zp[2]:29 1.3333333333333333 -(byte*) form_field_ptr::return#3 return zp[2]:29 4.0 +(byte*) form_field_ptr::return#0 return zp[2]:29 3.336666667333333E9 +(byte*) form_field_ptr::return#3 return zp[2]:29 2.0000002E7 (byte) form_field_ptr::x -(byte) form_field_ptr::x#0 x zp[1]:22 251.25 +(byte) form_field_ptr::x#0 x zp[1]:22 5.25000000075E9 (byte) form_field_ptr::y -(byte) form_field_ptr::y#0 reg byte y 6.0 +(byte) form_field_ptr::y#0 reg byte y 3.0000000003E10 (const byte) form_fields_cnt = (byte) $24 (const byte*) form_fields_max[] = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f } (const byte*) form_fields_val[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } @@ -27337,7 +27315,7 @@ FINAL SYMBOL TABLE (const byte*) form_line_hi[(number) $19] = { fill( $19, 0) } (const byte*) form_line_lo[(number) $19] = { fill( $19, 0) } (void()) form_mode() -(byte~) form_mode::$11 reg byte a 2002.0 +(byte~) form_mode::$11 reg byte a 2000002.0 (label) form_mode::@1 (label) form_mode::@10 (label) form_mode::@11 @@ -27359,12 +27337,12 @@ FINAL SYMBOL TABLE (label) form_mode::@9 (label) form_mode::@return (byte) form_mode::i -(byte) form_mode::i#1 reg byte x 151.5 -(byte) form_mode::i#2 reg byte x 202.0 +(byte) form_mode::i#1 reg byte x 150001.5 +(byte) form_mode::i#2 reg byte x 200002.0 (byte) form_mode::preset_current -(byte) form_mode::preset_current#0 preset_current zp[1]:13 4.0 -(byte) form_mode::preset_current#1 preset_current zp[1]:13 50.5 -(byte) form_mode::preset_current#6 preset_current zp[1]:13 388.25 +(byte) form_mode::preset_current#0 preset_current zp[1]:13 2002.0 +(byte) form_mode::preset_current#1 preset_current zp[1]:13 50000.5 +(byte) form_mode::preset_current#6 preset_current zp[1]:13 387625.625 (void()) form_render_values() (label) form_render_values::@1 (label) form_render_values::@2 @@ -27372,20 +27350,20 @@ FINAL SYMBOL TABLE (label) form_render_values::@return (byte*) form_render_values::field (byte) form_render_values::idx -(byte) form_render_values::idx#1 reg byte x 2002.0 -(byte) form_render_values::idx#2 reg byte x 1001.0 +(byte) form_render_values::idx#1 reg byte x 2.000000002E9 +(byte) form_render_values::idx#2 reg byte x 1.000000001E9 (void()) form_set_screen((byte*) form_set_screen::screen) -(byte~) form_set_screen::$0 reg byte a 202.0 -(byte~) form_set_screen::$1 reg byte a 202.0 +(byte~) form_set_screen::$0 reg byte a 2000002.0 +(byte~) form_set_screen::$1 reg byte a 2000002.0 (label) form_set_screen::@1 (label) form_set_screen::@return (byte*) form_set_screen::line -(byte*) form_set_screen::line#1 line zp[2]:16 67.33333333333333 -(byte*) form_set_screen::line#2 line zp[2]:16 80.8 +(byte*) form_set_screen::line#1 line zp[2]:16 666667.3333333334 +(byte*) form_set_screen::line#2 line zp[2]:16 800000.8 (byte*) form_set_screen::screen (byte) form_set_screen::y -(byte) form_set_screen::y#1 reg byte x 151.5 -(byte) form_set_screen::y#2 reg byte x 67.33333333333333 +(byte) form_set_screen::y#1 reg byte x 1500001.5 +(byte) form_set_screen::y#2 reg byte x 666667.3333333334 (const byte*) form_vic_bg0_hi = (const byte*) form_fields_val+(byte) $1c (const byte*) form_vic_bg0_lo = (const byte*) form_fields_val+(byte) $1d (const byte*) form_vic_bg1_hi = (const byte*) form_fields_val+(byte) $1e @@ -27414,22 +27392,22 @@ FINAL SYMBOL TABLE (label) get_plane::@9 (label) get_plane::@return (byte) get_plane::idx -(byte) get_plane::idx#0 reg byte a 4.0 -(byte) get_plane::idx#1 reg byte a 4.0 -(byte) get_plane::idx#10 reg byte a 2.285714285714285 +(byte) get_plane::idx#0 reg byte a 2002.0 +(byte) get_plane::idx#1 reg byte a 2002.0 +(byte) get_plane::idx#10 reg byte a 10144.000000000002 (dword) get_plane::return -(dword) get_plane::return#14 return zp[4]:9 1.0 -(dword) get_plane::return#16 return zp[4]:9 4.0 -(dword) get_plane::return#17 return zp[4]:9 4.0 +(dword) get_plane::return#14 return zp[4]:9 500.5 +(dword) get_plane::return#16 return zp[4]:9 2002.0 +(dword) get_plane::return#17 return zp[4]:9 2002.0 (byte*()) get_vic_charset((byte) get_vic_charset::idx) (label) get_vic_charset::@1 (label) get_vic_charset::@2 (label) get_vic_charset::@return (byte) get_vic_charset::idx -(byte) get_vic_charset::idx#0 reg byte a 3.0 +(byte) get_vic_charset::idx#0 reg byte a 10501.5 (byte*) get_vic_charset::return -(byte*) get_vic_charset::return#2 return zp[2]:7 0.6666666666666666 -(byte*) get_vic_charset::return#4 return zp[2]:7 4.0 +(byte*) get_vic_charset::return#2 return zp[2]:7 333.6666666666667 +(byte*) get_vic_charset::return#4 return zp[2]:7 2002.0 (byte*()) get_vic_screen((byte) get_vic_screen::idx) (label) get_vic_screen::@1 (label) get_vic_screen::@2 @@ -27438,13 +27416,13 @@ FINAL SYMBOL TABLE (label) get_vic_screen::@5 (label) get_vic_screen::@return (byte) get_vic_screen::idx -(byte) get_vic_screen::idx#0 reg byte a 4.0 -(byte) get_vic_screen::idx#1 reg byte a 4.0 -(byte) get_vic_screen::idx#2 reg byte a 2.8 +(byte) get_vic_screen::idx#0 reg byte a 2002.0 +(byte) get_vic_screen::idx#1 reg byte a 2002.0 +(byte) get_vic_screen::idx#2 reg byte a 10401.400000000001 (byte*) get_vic_screen::return -(byte*) get_vic_screen::return#10 return zp[2]:16 4.0 -(byte*) get_vic_screen::return#11 return zp[2]:16 4.0 -(byte*) get_vic_screen::return#5 return zp[2]:16 1.0 +(byte*) get_vic_screen::return#10 return zp[2]:16 2002.0 +(byte*) get_vic_screen::return#11 return zp[2]:16 2002.0 +(byte*) get_vic_screen::return#5 return zp[2]:16 500.5 (void()) gfx_init() (label) gfx_init::@1 (label) gfx_init::@10 @@ -27468,21 +27446,21 @@ FINAL SYMBOL TABLE (label) gfx_init_charset::@4 (label) gfx_init_charset::@return (byte) gfx_init_charset::c -(byte) gfx_init_charset::c#1 c zp[1]:33 16.5 -(byte) gfx_init_charset::c#4 c zp[1]:33 3.142857142857143 +(byte) gfx_init_charset::c#1 c zp[1]:33 15001.5 +(byte) gfx_init_charset::c#4 c zp[1]:33 2857.4285714285716 (byte*) gfx_init_charset::chargen -(byte*) gfx_init_charset::chargen#1 chargen zp[2]:20 42.599999999999994 -(byte*) gfx_init_charset::chargen#2 chargen zp[2]:20 104.66666666666666 -(byte*) gfx_init_charset::chargen#3 chargen zp[2]:20 22.0 +(byte*) gfx_init_charset::chargen#1 chargen zp[2]:20 42000.600000000006 +(byte*) gfx_init_charset::chargen#2 chargen zp[2]:20 103334.66666666666 +(byte*) gfx_init_charset::chargen#3 chargen zp[2]:20 20002.0 (byte*) gfx_init_charset::charset -(byte*) gfx_init_charset::charset#1 charset zp[2]:16 35.5 -(byte*) gfx_init_charset::charset#2 charset zp[2]:16 157.0 -(byte*) gfx_init_charset::charset#3 charset zp[2]:16 22.0 +(byte*) gfx_init_charset::charset#1 charset zp[2]:16 35000.5 +(byte*) gfx_init_charset::charset#2 charset zp[2]:16 155002.0 +(byte*) gfx_init_charset::charset#3 charset zp[2]:16 20002.0 (byte) gfx_init_charset::l -(byte) gfx_init_charset::l#1 reg byte x 151.5 -(byte) gfx_init_charset::l#2 reg byte x 50.5 +(byte) gfx_init_charset::l#1 reg byte x 150001.5 +(byte) gfx_init_charset::l#2 reg byte x 50000.5 (void()) gfx_init_plane_8bppchunky() -(word~) gfx_init_plane_8bppchunky::$5 zp[2]:29 101.0 +(word~) gfx_init_plane_8bppchunky::$5 zp[2]:29 100001.0 (label) gfx_init_plane_8bppchunky::@1 (label) gfx_init_plane_8bppchunky::@2 (label) gfx_init_plane_8bppchunky::@3 @@ -27492,27 +27470,27 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_8bppchunky::@7 (label) gfx_init_plane_8bppchunky::@return (byte) gfx_init_plane_8bppchunky::c -(byte) gfx_init_plane_8bppchunky::c#0 reg byte a 202.0 +(byte) gfx_init_plane_8bppchunky::c#0 reg byte a 200002.0 (byte*) gfx_init_plane_8bppchunky::gfxb -(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_8bppchunky::gfxb#4 gfxb zp[2]:16 75.75 -(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfxb zp[2]:16 22.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfxb zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfxb zp[2]:16 155002.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#4 gfxb zp[2]:16 75000.75 +(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_8bppchunky::gfxbCpuBank -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 reg byte x 202.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 reg byte x 103.75 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 reg byte x 22.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 reg byte x 34.888888888888886 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 reg byte x 200002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 reg byte x 102501.25 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 reg byte x 20002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 reg byte x 34444.88888888889 (word) gfx_init_plane_8bppchunky::x -(word) gfx_init_plane_8bppchunky::x#1 x zp[2]:20 151.5 -(word) gfx_init_plane_8bppchunky::x#2 x zp[2]:20 30.299999999999997 +(word) gfx_init_plane_8bppchunky::x#1 x zp[2]:20 150001.5 +(word) gfx_init_plane_8bppchunky::x#2 x zp[2]:20 30000.300000000003 (byte) gfx_init_plane_8bppchunky::y -(byte) gfx_init_plane_8bppchunky::y#1 y zp[1]:14 16.5 -(byte) gfx_init_plane_8bppchunky::y#6 y zp[1]:14 9.461538461538462 +(byte) gfx_init_plane_8bppchunky::y#1 y zp[1]:14 15001.5 +(byte) gfx_init_plane_8bppchunky::y#6 y zp[1]:14 9230.999999999998 (void()) gfx_init_plane_blank() (label) gfx_init_plane_blank::@return (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 reg byte a 2002.0 +(byte~) gfx_init_plane_charset8::$2 reg byte a 2000002.0 (label) gfx_init_plane_charset8::@1 (label) gfx_init_plane_charset8::@2 (label) gfx_init_plane_charset8::@3 @@ -27524,42 +27502,42 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_charset8::@9 (label) gfx_init_plane_charset8::@return (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:15 101.0 -(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:15 500.5 -(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:15 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:15 100001.0 +(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:15 500000.5 +(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:15 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 reg byte a 2002.0 -(byte) gfx_init_plane_charset8::c#3 reg byte a 2002.0 +(byte) gfx_init_plane_charset8::c#2 reg byte a 2000002.0 +(byte) gfx_init_plane_charset8::c#3 reg byte a 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:14 16.5 -(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:14 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:14 15001.5 +(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:14 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:16 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:16 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:16 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:16 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:16 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:16 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp[1]:18 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp[1]:18 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp[1]:18 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp[1]:18 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp[1]:18 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 col zp[1]:18 387500.5 +(byte) gfx_init_plane_charset8::col#5 col zp[1]:18 70001.0 +(byte) gfx_init_plane_charset8::col#6 col zp[1]:18 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 -(byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 reg byte x 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 reg byte x 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:34 151.5 -(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:34 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:34 150001.5 +(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:34 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:20 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:20 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:20 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:20 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:20 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:20 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:20 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:20 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_CHARSET8/(word) $4000 (void()) gfx_init_plane_fill((dword) gfx_init_plane_fill::plane_addr , (byte) gfx_init_plane_fill::fill) -(dword~) gfx_init_plane_fill::$0 zp[4]:23 4.0 -(word~) gfx_init_plane_fill::$1 zp[2]:27 4.0 -(word~) gfx_init_plane_fill::$4 zp[2]:16 4.0 -(word~) gfx_init_plane_fill::$5 zp[2]:16 4.0 +(dword~) gfx_init_plane_fill::$0 zp[4]:23 20002.0 +(word~) gfx_init_plane_fill::$1 zp[2]:27 20002.0 +(word~) gfx_init_plane_fill::$4 zp[2]:16 20002.0 +(word~) gfx_init_plane_fill::$5 zp[2]:16 20002.0 (label) gfx_init_plane_fill::@1 (label) gfx_init_plane_fill::@2 (label) gfx_init_plane_fill::@3 @@ -27567,27 +27545,27 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_fill::@5 (label) gfx_init_plane_fill::@return (byte) gfx_init_plane_fill::bx -(byte) gfx_init_plane_fill::bx#1 reg byte x 151.5 -(byte) gfx_init_plane_fill::bx#2 reg byte x 67.33333333333333 +(byte) gfx_init_plane_fill::bx#1 reg byte x 1500001.5 +(byte) gfx_init_plane_fill::bx#2 reg byte x 666667.3333333334 (byte) gfx_init_plane_fill::by -(byte) gfx_init_plane_fill::by#1 by zp[1]:34 16.5 -(byte) gfx_init_plane_fill::by#4 by zp[1]:34 3.6666666666666665 +(byte) gfx_init_plane_fill::by#1 by zp[1]:34 150001.5 +(byte) gfx_init_plane_fill::by#4 by zp[1]:34 33333.666666666664 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 fill zp[1]:14 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 fill zp[1]:14 55555.61111111111 (byte*) gfx_init_plane_fill::gfxb -(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:16 2.0 -(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:16 24.0 -(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:16 4.0 +(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:16 10001.0 +(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:16 420000.60000000003 +(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:16 1550002.0 +(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:16 210003.0 +(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 20002.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp[4]:9 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp[4]:9 3333.6666666666665 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() -(byte~) gfx_init_plane_horisontal::$2 reg byte a 202.0 +(byte~) gfx_init_plane_horisontal::$2 reg byte a 200002.0 (label) gfx_init_plane_horisontal::@1 (label) gfx_init_plane_horisontal::@2 (label) gfx_init_plane_horisontal::@3 @@ -27597,40 +27575,40 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_horisontal::@7 (label) gfx_init_plane_horisontal::@return (byte) gfx_init_plane_horisontal::ax -(byte) gfx_init_plane_horisontal::ax#1 reg byte x 151.5 -(byte) gfx_init_plane_horisontal::ax#2 reg byte x 25.25 +(byte) gfx_init_plane_horisontal::ax#1 reg byte x 150001.5 +(byte) gfx_init_plane_horisontal::ax#2 reg byte x 25000.25 (byte) gfx_init_plane_horisontal::ay -(byte) gfx_init_plane_horisontal::ay#1 ay zp[1]:13 16.5 -(byte) gfx_init_plane_horisontal::ay#4 ay zp[1]:13 11.181818181818182 +(byte) gfx_init_plane_horisontal::ay#1 ay zp[1]:13 15001.5 +(byte) gfx_init_plane_horisontal::ay#4 ay zp[1]:13 10909.363636363636 (byte*) gfx_init_plane_horisontal::gfxa -(byte*) gfx_init_plane_horisontal::gfxa#1 gfxa zp[2]:16 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#2 gfxa zp[2]:16 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#3 gfxa zp[2]:16 103.2 -(byte*) gfx_init_plane_horisontal::gfxa#6 gfxa zp[2]:16 22.0 -(byte*) gfx_init_plane_horisontal::gfxa#7 gfxa zp[2]:16 62.8 +(byte*) gfx_init_plane_horisontal::gfxa#1 gfxa zp[2]:16 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#2 gfxa zp[2]:16 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#3 gfxa zp[2]:16 102001.2 +(byte*) gfx_init_plane_horisontal::gfxa#6 gfxa zp[2]:16 20002.0 +(byte*) gfx_init_plane_horisontal::gfxa#7 gfxa zp[2]:16 62000.8 (byte) gfx_init_plane_horisontal::gfxbCpuBank (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL/(word) $4000 (void()) gfx_init_plane_horisontal2() -(byte~) gfx_init_plane_horisontal2::$2 reg byte a 202.0 +(byte~) gfx_init_plane_horisontal2::$2 reg byte a 200002.0 (label) gfx_init_plane_horisontal2::@1 (label) gfx_init_plane_horisontal2::@2 (label) gfx_init_plane_horisontal2::@3 (label) gfx_init_plane_horisontal2::@4 (label) gfx_init_plane_horisontal2::@return (byte) gfx_init_plane_horisontal2::ax -(byte) gfx_init_plane_horisontal2::ax#1 reg byte x 151.5 -(byte) gfx_init_plane_horisontal2::ax#2 reg byte x 40.4 +(byte) gfx_init_plane_horisontal2::ax#1 reg byte x 150001.5 +(byte) gfx_init_plane_horisontal2::ax#2 reg byte x 40000.4 (byte) gfx_init_plane_horisontal2::ay -(byte) gfx_init_plane_horisontal2::ay#1 ay zp[1]:15 16.5 -(byte) gfx_init_plane_horisontal2::ay#4 ay zp[1]:15 15.375 +(byte) gfx_init_plane_horisontal2::ay#1 ay zp[1]:15 15001.5 +(byte) gfx_init_plane_horisontal2::ay#4 ay zp[1]:15 15000.375 (byte*) gfx_init_plane_horisontal2::gfxa -(byte*) gfx_init_plane_horisontal2::gfxa#1 gfxa zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_horisontal2::gfxa#2 gfxa zp[2]:16 78.5 -(byte*) gfx_init_plane_horisontal2::gfxa#3 gfxa zp[2]:16 22.0 +(byte*) gfx_init_plane_horisontal2::gfxa#1 gfxa zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_horisontal2::gfxa#2 gfxa zp[2]:16 77501.0 +(byte*) gfx_init_plane_horisontal2::gfxa#3 gfxa zp[2]:16 20002.0 (byte) gfx_init_plane_horisontal2::gfxbCpuBank (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL2/(word) $4000 (byte) gfx_init_plane_horisontal2::row -(byte) gfx_init_plane_horisontal2::row#0 reg byte a 202.0 +(byte) gfx_init_plane_horisontal2::row#0 reg byte a 200002.0 (const byte*) gfx_init_plane_horisontal2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } (void()) gfx_init_plane_vertical() (label) gfx_init_plane_vertical::@1 @@ -27639,111 +27617,111 @@ FINAL SYMBOL TABLE (label) gfx_init_plane_vertical::@4 (label) gfx_init_plane_vertical::@return (byte) gfx_init_plane_vertical::bx -(byte) gfx_init_plane_vertical::bx#1 reg byte x 151.5 -(byte) gfx_init_plane_vertical::bx#2 reg byte x 67.33333333333333 +(byte) gfx_init_plane_vertical::bx#1 reg byte x 150001.5 +(byte) gfx_init_plane_vertical::bx#2 reg byte x 66667.33333333333 (byte) gfx_init_plane_vertical::by -(byte) gfx_init_plane_vertical::by#1 by zp[1]:13 16.5 -(byte) gfx_init_plane_vertical::by#4 by zp[1]:13 3.6666666666666665 +(byte) gfx_init_plane_vertical::by#1 by zp[1]:13 15001.5 +(byte) gfx_init_plane_vertical::by#4 by zp[1]:13 3333.6666666666665 (byte*) gfx_init_plane_vertical::gfxb -(byte*) gfx_init_plane_vertical::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_vertical::gfxb#2 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_vertical::gfxb#3 gfxb zp[2]:16 22.0 +(byte*) gfx_init_plane_vertical::gfxb#1 gfxb zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_vertical::gfxb#2 gfxb zp[2]:16 155002.0 +(byte*) gfx_init_plane_vertical::gfxb#3 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_vertical::gfxbCpuBank (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_VERTICAL/(word) $4000 (void()) gfx_init_plane_vertical2() (label) gfx_init_plane_vertical2::@return (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 reg byte a 202.0 -(byte~) gfx_init_screen0::$1 zp[1]:34 101.0 -(byte~) gfx_init_screen0::$2 reg byte a 202.0 -(byte~) gfx_init_screen0::$3 reg byte a 202.0 +(byte~) gfx_init_screen0::$0 reg byte a 200002.0 +(byte~) gfx_init_screen0::$1 zp[1]:34 100001.0 +(byte~) gfx_init_screen0::$2 reg byte a 200002.0 +(byte~) gfx_init_screen0::$3 reg byte a 200002.0 (label) gfx_init_screen0::@1 (label) gfx_init_screen0::@2 (label) gfx_init_screen0::@3 (label) gfx_init_screen0::@return (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 ch zp[2]:20 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 ch zp[2]:20 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 ch zp[2]:20 22.0 +(byte*) gfx_init_screen0::ch#1 ch zp[2]:20 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 ch zp[2]:20 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 ch zp[2]:20 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 reg byte x 151.5 -(byte) gfx_init_screen0::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen0::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen0::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 cy zp[1]:19 16.5 -(byte) gfx_init_screen0::cy#4 cy zp[1]:19 12.299999999999999 +(byte) gfx_init_screen0::cy#1 cy zp[1]:19 15001.5 +(byte) gfx_init_screen0::cy#4 cy zp[1]:19 12000.300000000001 (void()) gfx_init_screen1() -(byte~) gfx_init_screen1::$0 reg byte a 202.0 -(byte~) gfx_init_screen1::$1 reg byte a 202.0 +(byte~) gfx_init_screen1::$0 reg byte a 200002.0 +(byte~) gfx_init_screen1::$1 reg byte a 200002.0 (label) gfx_init_screen1::@1 (label) gfx_init_screen1::@2 (label) gfx_init_screen1::@3 (label) gfx_init_screen1::@return (byte*) gfx_init_screen1::ch -(byte*) gfx_init_screen1::ch#1 ch zp[2]:20 42.599999999999994 -(byte*) gfx_init_screen1::ch#2 ch zp[2]:20 78.5 -(byte*) gfx_init_screen1::ch#3 ch zp[2]:20 22.0 +(byte*) gfx_init_screen1::ch#1 ch zp[2]:20 42000.600000000006 +(byte*) gfx_init_screen1::ch#2 ch zp[2]:20 77501.0 +(byte*) gfx_init_screen1::ch#3 ch zp[2]:20 20002.0 (byte) gfx_init_screen1::cx -(byte) gfx_init_screen1::cx#1 reg byte x 151.5 -(byte) gfx_init_screen1::cx#2 reg byte x 60.599999999999994 +(byte) gfx_init_screen1::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen1::cx#2 reg byte x 60000.600000000006 (byte) gfx_init_screen1::cy -(byte) gfx_init_screen1::cy#1 cy zp[1]:18 16.5 -(byte) gfx_init_screen1::cy#4 cy zp[1]:18 15.375 +(byte) gfx_init_screen1::cy#1 cy zp[1]:18 15001.5 +(byte) gfx_init_screen1::cy#4 cy zp[1]:18 15000.375 (void()) gfx_init_screen2() -(byte~) gfx_init_screen2::$0 reg byte a 202.0 -(byte~) gfx_init_screen2::$3 reg byte a 202.0 -(byte~) gfx_init_screen2::$4 reg byte a 202.0 +(byte~) gfx_init_screen2::$0 reg byte a 200002.0 +(byte~) gfx_init_screen2::$3 reg byte a 200002.0 +(byte~) gfx_init_screen2::$4 reg byte a 200002.0 (label) gfx_init_screen2::@1 (label) gfx_init_screen2::@2 (label) gfx_init_screen2::@3 (label) gfx_init_screen2::@return (byte*) gfx_init_screen2::ch -(byte*) gfx_init_screen2::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen2::ch#2 ch zp[2]:16 44.85714285714286 -(byte*) gfx_init_screen2::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen2::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen2::ch#2 ch zp[2]:16 44286.28571428572 +(byte*) gfx_init_screen2::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen2::col -(byte) gfx_init_screen2::col#0 reg byte y 151.5 +(byte) gfx_init_screen2::col#0 reg byte y 150001.5 (byte) gfx_init_screen2::col2 -(byte) gfx_init_screen2::col2#0 col2 zp[1]:34 101.0 +(byte) gfx_init_screen2::col2#0 col2 zp[1]:34 100001.0 (byte) gfx_init_screen2::cx -(byte) gfx_init_screen2::cx#1 reg byte x 151.5 -(byte) gfx_init_screen2::cx#2 reg byte x 37.875 +(byte) gfx_init_screen2::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen2::cx#2 reg byte x 37500.375 (byte) gfx_init_screen2::cy -(byte) gfx_init_screen2::cy#1 cy zp[1]:18 16.5 -(byte) gfx_init_screen2::cy#4 cy zp[1]:18 11.181818181818182 +(byte) gfx_init_screen2::cy#1 cy zp[1]:18 15001.5 +(byte) gfx_init_screen2::cy#4 cy zp[1]:18 10909.363636363636 (void()) gfx_init_screen3() -(byte~) gfx_init_screen3::$0 reg byte a 202.0 -(byte~) gfx_init_screen3::$1 zp[1]:34 101.0 -(byte~) gfx_init_screen3::$2 reg byte a 202.0 -(byte~) gfx_init_screen3::$3 reg byte a 202.0 +(byte~) gfx_init_screen3::$0 reg byte a 200002.0 +(byte~) gfx_init_screen3::$1 zp[1]:34 100001.0 +(byte~) gfx_init_screen3::$2 reg byte a 200002.0 +(byte~) gfx_init_screen3::$3 reg byte a 200002.0 (label) gfx_init_screen3::@1 (label) gfx_init_screen3::@2 (label) gfx_init_screen3::@3 (label) gfx_init_screen3::@return (byte*) gfx_init_screen3::ch -(byte*) gfx_init_screen3::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen3::ch#2 ch zp[2]:16 52.33333333333333 -(byte*) gfx_init_screen3::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen3::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen3::ch#2 ch zp[2]:16 51667.33333333333 +(byte*) gfx_init_screen3::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen3::cx -(byte) gfx_init_screen3::cx#1 reg byte x 151.5 -(byte) gfx_init_screen3::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen3::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen3::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen3::cy -(byte) gfx_init_screen3::cy#1 cy zp[1]:15 16.5 -(byte) gfx_init_screen3::cy#4 cy zp[1]:15 12.299999999999999 +(byte) gfx_init_screen3::cy#1 cy zp[1]:15 15001.5 +(byte) gfx_init_screen3::cy#4 cy zp[1]:15 12000.300000000001 (void()) gfx_init_screen4() (label) gfx_init_screen4::@1 (label) gfx_init_screen4::@2 (label) gfx_init_screen4::@3 (label) gfx_init_screen4::@return (byte*) gfx_init_screen4::ch -(byte*) gfx_init_screen4::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen4::ch#2 ch zp[2]:16 157.0 -(byte*) gfx_init_screen4::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen4::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen4::ch#2 ch zp[2]:16 155002.0 +(byte*) gfx_init_screen4::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen4::cx -(byte) gfx_init_screen4::cx#1 reg byte x 151.5 -(byte) gfx_init_screen4::cx#2 reg byte x 67.33333333333333 +(byte) gfx_init_screen4::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen4::cx#2 reg byte x 66667.33333333333 (byte) gfx_init_screen4::cy -(byte) gfx_init_screen4::cy#1 cy zp[1]:14 16.5 -(byte) gfx_init_screen4::cy#4 cy zp[1]:14 3.6666666666666665 +(byte) gfx_init_screen4::cy#1 cy zp[1]:14 15001.5 +(byte) gfx_init_screen4::cy#4 cy zp[1]:14 3333.6666666666665 (void()) gfx_init_vic_bitmap() (label) gfx_init_vic_bitmap::@1 (label) gfx_init_vic_bitmap::@2 @@ -27751,51 +27729,51 @@ FINAL SYMBOL TABLE (label) gfx_init_vic_bitmap::@4 (label) gfx_init_vic_bitmap::@return (byte) gfx_init_vic_bitmap::l -(byte) gfx_init_vic_bitmap::l#1 l zp[1]:34 22.0 -(byte) gfx_init_vic_bitmap::l#2 l zp[1]:34 11.0 +(byte) gfx_init_vic_bitmap::l#1 l zp[1]:34 20002.0 +(byte) gfx_init_vic_bitmap::l#2 l zp[1]:34 10001.000000000002 (const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9 (const byte*) gfx_init_vic_bitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 } (const byte*) gfx_init_vic_bitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 } (void()) gfx_mode() -(byte~) gfx_mode::$18 reg byte a 4.0 -(dword~) gfx_mode::$20 zp[4]:9 4.0 -(byte~) gfx_mode::$23 reg byte a 4.0 -(word~) gfx_mode::$24 zp[2]:20 2.0 -(byte~) gfx_mode::$25 reg byte a 4.0 -(word~) gfx_mode::$26 zp[2]:29 4.0 -(byte~) gfx_mode::$27 reg byte a 4.0 -(byte~) gfx_mode::$28 reg byte a 4.0 -(byte~) gfx_mode::$29 reg byte a 4.0 -(byte~) gfx_mode::$30 reg byte a 4.0 -(byte~) gfx_mode::$31 reg byte a 4.0 -(byte~) gfx_mode::$32 reg byte a 4.0 -(dword~) gfx_mode::$34 zp[4]:9 4.0 -(byte~) gfx_mode::$37 reg byte a 4.0 -(word~) gfx_mode::$38 zp[2]:31 2.0 -(byte~) gfx_mode::$39 reg byte a 4.0 -(word~) gfx_mode::$40 zp[2]:27 4.0 -(byte~) gfx_mode::$41 reg byte a 4.0 -(byte~) gfx_mode::$42 reg byte a 4.0 -(byte~) gfx_mode::$43 reg byte a 4.0 -(byte~) gfx_mode::$44 reg byte a 4.0 -(byte~) gfx_mode::$45 reg byte a 4.0 -(byte*~) gfx_mode::$47 zp[2]:16 2.0 -(word~) gfx_mode::$48 zp[2]:16 4.0 -(word~) gfx_mode::$49 zp[2]:16 2.0 -(byte~) gfx_mode::$50 zp[1]:19 0.5 -(byte*~) gfx_mode::$52 zp[2]:7 2.0 -(word~) gfx_mode::$53 zp[2]:7 4.0 -(byte~) gfx_mode::$54 reg byte a 4.0 -(byte~) gfx_mode::$55 reg byte a 4.0 -(byte~) gfx_mode::$56 reg byte a 4.0 -(byte~) gfx_mode::$58 reg byte a 4.0 -(byte~) gfx_mode::$59 reg byte a 4.0 -(byte~) gfx_mode::$60 reg byte a 4.0 -(byte~) gfx_mode::$61 reg byte a 4.0 -(byte~) gfx_mode::$62 reg byte a 4.0 -(byte~) gfx_mode::$63 reg byte a 4.0 -(byte~) gfx_mode::$64 reg byte a 4.0 -(byte~) gfx_mode::$65 reg byte a 4.0 +(byte~) gfx_mode::$18 reg byte a 2002.0 +(dword~) gfx_mode::$20 zp[4]:9 2002.0 +(byte~) gfx_mode::$23 reg byte a 2002.0 +(word~) gfx_mode::$24 zp[2]:20 1001.0 +(byte~) gfx_mode::$25 reg byte a 2002.0 +(word~) gfx_mode::$26 zp[2]:29 2002.0 +(byte~) gfx_mode::$27 reg byte a 2002.0 +(byte~) gfx_mode::$28 reg byte a 2002.0 +(byte~) gfx_mode::$29 reg byte a 2002.0 +(byte~) gfx_mode::$30 reg byte a 2002.0 +(byte~) gfx_mode::$31 reg byte a 2002.0 +(byte~) gfx_mode::$32 reg byte a 2002.0 +(dword~) gfx_mode::$34 zp[4]:9 2002.0 +(byte~) gfx_mode::$37 reg byte a 2002.0 +(word~) gfx_mode::$38 zp[2]:31 1001.0 +(byte~) gfx_mode::$39 reg byte a 2002.0 +(word~) gfx_mode::$40 zp[2]:27 2002.0 +(byte~) gfx_mode::$41 reg byte a 2002.0 +(byte~) gfx_mode::$42 reg byte a 2002.0 +(byte~) gfx_mode::$43 reg byte a 2002.0 +(byte~) gfx_mode::$44 reg byte a 2002.0 +(byte~) gfx_mode::$45 reg byte a 2002.0 +(byte*~) gfx_mode::$47 zp[2]:16 1001.0 +(word~) gfx_mode::$48 zp[2]:16 2002.0 +(word~) gfx_mode::$49 zp[2]:16 1001.0 +(byte~) gfx_mode::$50 zp[1]:19 250.25 +(byte*~) gfx_mode::$52 zp[2]:7 1001.0 +(word~) gfx_mode::$53 zp[2]:7 2002.0 +(byte~) gfx_mode::$54 reg byte a 2002.0 +(byte~) gfx_mode::$55 reg byte a 2002.0 +(byte~) gfx_mode::$56 reg byte a 2002.0 +(byte~) gfx_mode::$58 reg byte a 2002.0 +(byte~) gfx_mode::$59 reg byte a 2002.0 +(byte~) gfx_mode::$60 reg byte a 2002.0 +(byte~) gfx_mode::$61 reg byte a 2002.0 +(byte~) gfx_mode::$62 reg byte a 2002.0 +(byte~) gfx_mode::$63 reg byte a 2002.0 +(byte~) gfx_mode::$64 reg byte a 2002.0 +(byte~) gfx_mode::$65 reg byte a 2002.0 (label) gfx_mode::@1 (label) gfx_mode::@10 (label) gfx_mode::@11 @@ -27831,84 +27809,84 @@ FINAL SYMBOL TABLE (label) gfx_mode::@9 (label) gfx_mode::@return (byte*) gfx_mode::col -(byte*) gfx_mode::col#1 col zp[2]:5 350.5 -(byte*) gfx_mode::col#2 col zp[2]:5 1552.0 -(byte*) gfx_mode::col#3 col zp[2]:5 202.0 +(byte*) gfx_mode::col#1 col zp[2]:5 350000.5 +(byte*) gfx_mode::col#2 col zp[2]:5 1550002.0 +(byte*) gfx_mode::col#3 col zp[2]:5 200002.0 (byte) gfx_mode::cx -(byte) gfx_mode::cx#1 reg byte x 1501.5 -(byte) gfx_mode::cx#2 reg byte x 500.5 +(byte) gfx_mode::cx#1 reg byte x 1500001.5 +(byte) gfx_mode::cx#2 reg byte x 500000.5 (byte) gfx_mode::cy -(byte) gfx_mode::cy#1 cy zp[1]:13 151.5 -(byte) gfx_mode::cy#4 cy zp[1]:13 28.857142857142858 +(byte) gfx_mode::cy#1 cy zp[1]:13 150001.5 +(byte) gfx_mode::cy#4 cy zp[1]:13 28571.714285714286 (byte) gfx_mode::dtv_control -(byte) gfx_mode::dtv_control#10 reg byte x 4.0 -(byte) gfx_mode::dtv_control#11 reg byte x 4.0 -(byte) gfx_mode::dtv_control#12 reg byte x 6.0 -(byte) gfx_mode::dtv_control#13 reg byte x 4.0 -(byte) gfx_mode::dtv_control#14 reg byte x 2.0 -(byte) gfx_mode::dtv_control#15 reg byte x 4.0 -(byte) gfx_mode::dtv_control#2 reg byte x 4.0 -(byte) gfx_mode::dtv_control#3 reg byte x 4.0 -(byte) gfx_mode::dtv_control#4 reg byte x 4.0 -(byte) gfx_mode::dtv_control#5 reg byte x 4.0 -(byte) gfx_mode::dtv_control#6 reg byte x 4.0 +(byte) gfx_mode::dtv_control#10 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#11 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#12 reg byte x 3003.0 +(byte) gfx_mode::dtv_control#13 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#14 reg byte x 1001.0 +(byte) gfx_mode::dtv_control#15 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#2 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#3 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#4 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#5 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#6 reg byte x 2002.0 (byte) gfx_mode::i -(byte) gfx_mode::i#1 reg byte x 151.5 -(byte) gfx_mode::i#2 reg byte x 202.0 +(byte) gfx_mode::i#1 reg byte x 150001.5 +(byte) gfx_mode::i#2 reg byte x 200002.0 (byte) gfx_mode::j -(byte) gfx_mode::j#1 reg byte x 151.5 -(byte) gfx_mode::j#2 reg byte x 202.0 +(byte) gfx_mode::j#1 reg byte x 150001.5 +(byte) gfx_mode::j#2 reg byte x 200002.0 (byte) gfx_mode::keyboard_event -(byte) gfx_mode::keyboard_event#0 reg byte a 202.0 +(byte) gfx_mode::keyboard_event#0 reg byte a 200002.0 (dword) gfx_mode::plane_a -(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 1.0 +(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 500.5 (byte) gfx_mode::plane_a_offs -(byte) gfx_mode::plane_a_offs#0 reg byte x 0.8 +(byte) gfx_mode::plane_a_offs#0 reg byte x 400.4 (dword) gfx_mode::plane_b -(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 1.0 +(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 500.5 (byte) gfx_mode::plane_b_offs -(byte) gfx_mode::plane_b_offs#0 reg byte x 0.8 +(byte) gfx_mode::plane_b_offs#0 reg byte x 400.4 (byte*) gfx_mode::vic_colors -(byte*) gfx_mode::vic_colors#0 vic_colors zp[2]:16 4.0 -(byte*) gfx_mode::vic_colors#1 vic_colors zp[2]:16 420.59999999999997 -(byte*) gfx_mode::vic_colors#2 vic_colors zp[2]:16 1034.6666666666667 -(byte*) gfx_mode::vic_colors#3 vic_colors zp[2]:16 204.0 +(byte*) gfx_mode::vic_colors#0 vic_colors zp[2]:16 2002.0 +(byte*) gfx_mode::vic_colors#1 vic_colors zp[2]:16 420000.60000000003 +(byte*) gfx_mode::vic_colors#2 vic_colors zp[2]:16 1033334.6666666667 +(byte*) gfx_mode::vic_colors#3 vic_colors zp[2]:16 201003.0 (byte) gfx_mode::vic_control -(byte) gfx_mode::vic_control#2 reg byte x 4.0 -(byte) gfx_mode::vic_control#4 reg byte x 6.0 -(byte) gfx_mode::vic_control#5 reg byte x 2.0 +(byte) gfx_mode::vic_control#2 reg byte x 2002.0 +(byte) gfx_mode::vic_control#4 reg byte x 3003.0 +(byte) gfx_mode::vic_control#5 reg byte x 1001.0 (byte) gfx_mode::vic_control2 -(byte) gfx_mode::vic_control2#2 reg byte a 2.0 +(byte) gfx_mode::vic_control2#2 reg byte a 1001.0 (byte()) keyboard_event_get() (label) keyboard_event_get::@1 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 26.25 -(byte) keyboard_event_get::return#3 reg byte a 202.0 -(byte) keyboard_event_get::return#4 reg byte a 4.0 +(byte) keyboard_event_get::return#1 reg byte a 2.00000002E8 +(byte) keyboard_event_get::return#2 reg byte a 2.752500075E7 +(byte) keyboard_event_get::return#3 reg byte a 200002.0 +(byte) keyboard_event_get::return#4 reg byte a 2.0000002E7 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 reg byte a 4.0 -(byte~) keyboard_event_pressed::$1 reg byte a 4.0 +(byte~) keyboard_event_pressed::$0 reg byte a 2.000000002E9 +(byte~) keyboard_event_pressed::$1 reg byte a 2.000000002E9 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#4 keycode zp[1]:15 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#4 keycode zp[1]:15 6.666666673333334E8 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 reg byte a 4.0 -(byte) keyboard_event_pressed::return#1 reg byte a 4.0 -(byte) keyboard_event_pressed::return#10 reg byte a 1.6666666666666665 -(byte) keyboard_event_pressed::return#2 reg byte a 4.0 -(byte) keyboard_event_pressed::return#3 reg byte a 4.0 +(byte) keyboard_event_pressed::return#0 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#1 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#10 reg byte a 2.333333341666667E8 +(byte) keyboard_event_pressed::return#2 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#3 reg byte a 2.00000002E8 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:33 2.0 +(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:33 1.000000001E9 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 reg byte a 4.0 -(byte~) keyboard_event_scan::$15 reg byte a 200002.0 -(byte~) keyboard_event_scan::$16 reg byte a 200002.0 -(byte~) keyboard_event_scan::$23 reg byte a 200002.0 -(byte~) keyboard_event_scan::$3 reg byte a 4.0 -(byte~) keyboard_event_scan::$6 reg byte a 4.0 -(byte~) keyboard_event_scan::$9 reg byte a 4.0 +(byte~) keyboard_event_scan::$0 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$15 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$16 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$23 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$3 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$6 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$9 reg byte a 2.00000002E8 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -27934,54 +27912,54 @@ FINAL SYMBOL TABLE (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 150001.5 -(byte) keyboard_event_scan::col#2 reg byte x 28571.714285714286 +(byte) keyboard_event_scan::col#1 reg byte x 1.50000000000015E13 +(byte) keyboard_event_scan::col#2 reg byte x 2.857142857143143E12 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 200002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2.0000000000002E13 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp[1]:34 20002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp[1]:34 31538.846153846156 -(byte) keyboard_event_scan::keycode#11 keycode zp[1]:34 5000.5 -(byte) keyboard_event_scan::keycode#13 keycode zp[1]:34 10001.0 -(byte) keyboard_event_scan::keycode#14 keycode zp[1]:34 52500.75 +(byte) keyboard_event_scan::keycode#1 keycode zp[1]:34 2.000000000002E12 +(byte) keyboard_event_scan::keycode#10 keycode zp[1]:34 3.1538461538465386E12 +(byte) keyboard_event_scan::keycode#11 keycode zp[1]:34 5.000000000005E11 +(byte) keyboard_event_scan::keycode#13 keycode zp[1]:34 1.000000000001E12 +(byte) keyboard_event_scan::keycode#14 keycode zp[1]:34 5.25000000000075E12 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp[1]:14 15001.5 -(byte) keyboard_event_scan::row#2 row zp[1]:14 6000.24 +(byte) keyboard_event_scan::row#1 row zp[1]:14 1.5000000000015E12 +(byte) keyboard_event_scan::row#2 row zp[1]:14 6.0000000000024E11 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:22 12778.055555555557 +(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:22 1.2777777777780554E12 (const byte*) keyboard_events[(number) 8] = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp[1]:2 200002.0 -(byte) keyboard_events_size#100 keyboard_events_size zp[1]:2 882.6176470588235 -(byte) keyboard_events_size#105 keyboard_events_size zp[1]:2 102001.2 -(byte) keyboard_events_size#106 keyboard_events_size zp[1]:2 4286.428571428572 -(byte) keyboard_events_size#18 keyboard_events_size zp[1]:2 81000.90000000001 -(byte) keyboard_events_size#2 keyboard_events_size zp[1]:2 200002.0 -(byte) keyboard_events_size#24 keyboard_events_size zp[1]:2 6.766666666666667 -(byte) keyboard_events_size#27 keyboard_events_size zp[1]:2 0.3333333333333333 -(byte) keyboard_events_size#4 keyboard_events_size zp[1]:2 3.0 -(byte) keyboard_events_size#47 keyboard_events_size zp[1]:2 65.05882352941177 -(byte) keyboard_events_size#97 keyboard_events_size zp[1]:2 105.0 +(byte) keyboard_events_size#1 keyboard_events_size zp[1]:2 2.0000000000002E13 +(byte) keyboard_events_size#100 keyboard_events_size zp[1]:2 8.824411764723529E10 +(byte) keyboard_events_size#105 keyboard_events_size zp[1]:2 1.02000000000012E13 +(byte) keyboard_events_size#106 keyboard_events_size zp[1]:2 4.285857142862857E11 +(byte) keyboard_events_size#18 keyboard_events_size zp[1]:2 8.100000000000898E12 +(byte) keyboard_events_size#2 keyboard_events_size zp[1]:2 2.0000000000002E13 +(byte) keyboard_events_size#24 keyboard_events_size zp[1]:2 1117778.3666666667 +(byte) keyboard_events_size#27 keyboard_events_size zp[1]:2 28.25641025641026 +(byte) keyboard_events_size#4 keyboard_events_size zp[1]:2 1.500000015E8 +(byte) keyboard_events_size#47 keyboard_events_size zp[1]:2 653000.2352941177 +(byte) keyboard_events_size#97 keyboard_events_size zp[1]:2 1.10100003E8 (void()) keyboard_init() (label) keyboard_init::@return (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 3334.333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.666666666667333E12 +(byte) keyboard_matrix_read::return#2 reg byte a 2.000000000002E12 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.1000000000002E13 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (byte) keyboard_modifiers -(byte) keyboard_modifiers#18 reg byte x 0.8 -(byte) keyboard_modifiers#19 reg byte x 1.6 -(byte) keyboard_modifiers#20 reg byte x 1.6 -(byte) keyboard_modifiers#21 reg byte x 0.7272727272727273 -(byte) keyboard_modifiers#3 reg byte x 4.0 -(byte) keyboard_modifiers#4 reg byte x 4.0 -(byte) keyboard_modifiers#5 reg byte x 4.0 +(byte) keyboard_modifiers#18 reg byte x 4.00000004E7 +(byte) keyboard_modifiers#19 reg byte x 8.00000008E7 +(byte) keyboard_modifiers#20 reg byte x 8.00000008E7 +(byte) keyboard_modifiers#21 reg byte x 2.0000000363636363E7 +(byte) keyboard_modifiers#3 reg byte x 2.00000002E8 +(byte) keyboard_modifiers#4 reg byte x 2.00000002E8 +(byte) keyboard_modifiers#5 reg byte x 2.00000002E8 (const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) } (void()) main() (label) main::@1 @@ -27996,16 +27974,16 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 202.0 -(byte*) memset::dst#2 dst zp[2]:16 135.33333333333331 -(byte*) memset::dst#4 dst zp[2]:16 4.0 +(byte*) memset::dst#1 dst zp[2]:16 2.0000002E7 +(byte*) memset::dst#2 dst zp[2]:16 1.3366668333333332E7 +(byte*) memset::dst#4 dst zp[2]:16 200002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:31 17.166666666666664 +(byte*) memset::end#0 end zp[2]:31 1683333.6666666665 (word) memset::num (const word) memset::num#0 num = (word) $3e8 (void*) memset::return (void*) memset::str -(void*) memset::str#0 str zp[2]:16 0.6666666666666666 +(void*) memset::str#0 str zp[2]:16 3333.6666666666665 (const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 } @@ -28018,19 +27996,19 @@ FINAL SYMBOL TABLE (const byte*) preset_stdchar[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_twoplane[] = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 2002.0 -(byte*) print_char_cursor#20 print_char_cursor zp[2]:5 821.0 -(byte*) print_char_cursor#22 print_char_cursor zp[2]:5 102.0 -(byte*) print_char_cursor#38 print_char_cursor zp[2]:5 572.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#68 print_char_cursor zp[2]:5 202.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 2.0000002E7 +(byte*) print_char_cursor#20 print_char_cursor zp[2]:5 8200001.0 +(byte*) print_char_cursor#22 print_char_cursor zp[2]:5 1005001.5 +(byte*) print_char_cursor#38 print_char_cursor zp[2]:5 1.4328571434285712E9 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:5 20002.0 +(byte*) print_char_cursor#68 print_char_cursor zp[2]:5 2000002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#2 print_line_cursor zp[2]:7 8.749999999999998 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:7 2004.0 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:7 641.0 +(byte*) print_line_cursor#2 print_line_cursor zp[2]:7 917500.25 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:7 2.0010000003E10 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:7 6.000400001E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -28038,18 +28016,18 @@ FINAL SYMBOL TABLE (void()) print_set_screen((byte*) print_set_screen::screen) (label) print_set_screen::@return (byte*) print_set_screen::screen -(byte*) print_set_screen::screen#2 screen zp[2]:7 0.26666666666666666 +(byte*) print_set_screen::screen#2 screen zp[2]:7 1333.4666666666667 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (label) print_str_at::@1 (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#0 at zp[2]:5 1001.0 -(byte*) print_str_at::at#2 at zp[2]:5 1001.0 +(byte*) print_str_at::at#0 at zp[2]:5 1.0000000001E10 +(byte*) print_str_at::at#2 at zp[2]:5 1.0000000001E10 (byte*) print_str_at::str -(byte*) print_str_at::str#0 str zp[2]:16 2002.0 -(byte*) print_str_at::str#1 str zp[2]:16 2.0 -(byte*) print_str_at::str#2 str zp[2]:16 1001.5 +(byte*) print_str_at::str#0 str zp[2]:16 2.0000000002E10 +(byte*) print_str_at::str#1 str zp[2]:16 5500001.0 +(byte*) print_str_at::str#2 str zp[2]:16 1.000250000125E10 (void()) print_str_lines((byte*) print_str_lines::str) (label) print_str_lines::@1 (label) print_str_lines::@2 @@ -28059,12 +28037,12 @@ FINAL SYMBOL TABLE (label) print_str_lines::@6 (label) print_str_lines::@return (byte) print_str_lines::ch -(byte) print_str_lines::ch#0 reg byte a 667.3333333333334 +(byte) print_str_lines::ch#0 reg byte a 6666667.333333333 (byte*) print_str_lines::str -(byte*) print_str_lines::str#0 str zp[2]:16 233.66666666666669 -(byte*) print_str_lines::str#3 str zp[2]:16 152.5 -(byte*) print_str_lines::str#4 str zp[2]:16 1552.0 -(byte*) print_str_lines::str#5 str zp[2]:16 1.0 +(byte*) print_str_lines::str#0 str zp[2]:16 2333333.666666667 +(byte*) print_str_lines::str#3 str zp[2]:16 1505002.0 +(byte*) print_str_lines::str#4 str zp[2]:16 1.5500002E7 +(byte*) print_str_lines::str#5 str zp[2]:16 5000.5 (void()) render_preset_name((byte) render_preset_name::idx) (label) render_preset_name::@1 (label) render_preset_name::@10 @@ -28080,14 +28058,14 @@ FINAL SYMBOL TABLE (label) render_preset_name::@9 (label) render_preset_name::@return (byte) render_preset_name::idx -(byte) render_preset_name::idx#0 reg byte a 4.0 -(byte) render_preset_name::idx#1 reg byte a 202.0 -(byte) render_preset_name::idx#10 reg byte a 11.363636363636362 +(byte) render_preset_name::idx#0 reg byte a 2002.0 +(byte) render_preset_name::idx#1 reg byte a 200002.0 +(byte) render_preset_name::idx#10 reg byte a 1009183.0000000002 (byte*) render_preset_name::name (const byte*) render_preset_name::name#1 name_1 = (byte*) "Standard Charset " (const byte*) render_preset_name::name#10 name_10 = (byte*) "Sixs Fred 2 " (const byte*) render_preset_name::name#11 name_11 = (byte*) "8bpp Pixel Cell " -(byte*) render_preset_name::name#13 name zp[2]:16 2.0 +(byte*) render_preset_name::name#13 name zp[2]:16 1000001.0 (const byte*) render_preset_name::name#2 name_2 = (byte*) "Extended Color Charset " (const byte*) render_preset_name::name#3 name_3 = (byte*) "Standard Bitmap " (const byte*) render_preset_name::name#4 name_4 = (byte*) "Multicolor Bitmap " @@ -28129,11 +28107,11 @@ reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] -reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] -reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] +reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] +reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:13 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 gfx_mode::cy#4 gfx_mode::cy#1 ] -reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] @@ -28166,7 +28144,7 @@ reg byte a [ gfx_mode::$42 ] reg byte a [ gfx_mode::$43 ] reg byte a [ gfx_mode::$44 ] reg byte a [ gfx_mode::$45 ] -zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte a [ get_vic_charset::idx#0 ] reg byte a [ gfx_mode::$54 ] reg byte a [ gfx_mode::$55 ] @@ -28204,7 +28182,7 @@ reg byte a [ form_mode::$11 ] reg byte a [ apply_preset::idx#0 ] reg byte y [ form_field_ptr::y#0 ] zp[2]:20 [ form_field_ptr::line#0 gfx_mode::$24 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] -zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ form_control::$12 ] reg byte a [ keyboard_event_get::return#4 ] reg byte a [ form_control::key_event#0 ] @@ -28223,20 +28201,20 @@ reg byte a [ gfx_init_plane_horisontal2::row#0 ] reg byte a [ gfx_init_plane_horisontal::$2 ] reg byte a [ gfx_init_plane_charset8::$2 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] -reg byte x [ bitmap_line::x1#0 ] +reg byte x [ bitmap_line::y0#0 ] reg byte y [ bitmap_line::yd#2 ] reg byte y [ bitmap_line::yd#1 ] reg byte y [ bitmap_line::yd#10 ] reg byte y [ bitmap_line::yd#11 ] -reg byte x [ bitmap_line_xdyi::$6 ] +reg byte a [ bitmap_line_xdyi::$6 ] zp[2]:29 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 gfx_init_plane_8bppchunky::$5 form_field_ptr::return#0 form_field_ptr::return#3 form_control::field#0 gfx_mode::$26 ] zp[2]:31 [ bitmap_plot::plotter_y#0 memset::end#0 gfx_mode::$38 ] reg byte a [ bitmap_plot::$1 ] -reg byte a [ bitmap_line_ydxi::$6 ] -reg byte x [ bitmap_line_xdyd::$6 ] -reg byte a [ bitmap_line_ydxd::$6 ] +reg byte x [ bitmap_line_ydxi::$6 ] +reg byte a [ bitmap_line_xdyd::$6 ] +reg byte x [ bitmap_line_ydxd::$6 ] reg byte a [ bitmap_init::$0 ] -zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] reg byte a [ bitmap_init::$7 ] reg byte a [ bitmap_init::$8 ] reg byte a [ bitmap_init::$9 ] @@ -28256,7 +28234,7 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER -Score: 10133395 +Score: 10133390 // File Comments // Interactive Explorer for C64DTV Screen Modes @@ -31938,11 +31916,11 @@ gfx_init_vic_bitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - // [613] (byte) bitmap_line::x1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_x+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 - ldx lines_x+1,y - // [614] (byte) bitmap_line::y0#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 - lda lines_y,y - sta.z bitmap_line.y0 + // [613] (byte) bitmap_line::x1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_x+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + lda lines_x+1,y + sta.z bitmap_line.x1 + // [614] (byte) bitmap_line::y0#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 + ldx lines_y,y // [615] (byte) bitmap_line::y1#0 ← *((const byte*) gfx_init_vic_bitmap::lines_y+(byte) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y+1,y sta.z bitmap_line.y1 @@ -31960,35 +31938,31 @@ gfx_init_vic_bitmap: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zp($16) x0, byte register(X) x1, byte zp($21) y0, byte zp($13) y1) +// bitmap_line(byte zp($16) x0, byte zp($21) x1, byte register(X) y0, byte zp($13) y1) bitmap_line: { .label xd = $12 .label x0 = $16 - .label y0 = $21 + .label x1 = $21 .label y1 = $13 // if(x0bitmap_plot] // [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy @@ -32260,8 +32234,8 @@ bitmap_line_xdyi: { bcs __b2 // bitmap_line_xdyi::@3 // y++; - // [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 - inc.z y + // [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuxx=_inc_vbuxx + inx // e = e - xd // [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -32274,12 +32248,13 @@ bitmap_line_xdyi: { // bitmap_line_xdyi::@2 __b2: // x1+1 - // [692] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx + // [692] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - // [693] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [693] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1 // bitmap_line_xdyi::@return // } @@ -32287,22 +32262,22 @@ bitmap_line_xdyi: { rts } // bitmap_plot -// bitmap_plot(byte register(X) x, byte register(Y) y) +// bitmap_plot(byte register(Y) x, byte register(X) y) bitmap_plot: { .label plotter_x = $1d .label plotter_y = $1f .label plotter = $1d // plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] } - // [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx - lda bitmap_plot_xhi,x + // [696] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + lda bitmap_plot_xhi,y sta.z plotter_x+1 - lda bitmap_plot_xlo,x + lda bitmap_plot_xlo,y sta.z plotter_x // plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + // [697] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta.z plotter_y+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta.z plotter_y // plotter_x+plotter_y // [698] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 @@ -32314,8 +32289,8 @@ bitmap_plot: { adc.z plotter_y+1 sta.z plotter+1 // *plotter | bitmap_plot_bit[x] - // [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx - lda bitmap_plot_bit,x + // [699] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy + lda bitmap_plot_bit,y ldy #0 ora (plotter),y // *plotter = *plotter | bitmap_plot_bit[x] @@ -32327,9 +32302,10 @@ bitmap_plot: { rts } // bitmap_line_ydxi -// bitmap_line_ydxi(byte zp($e) y, byte register(X) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) +// bitmap_line_ydxi(byte zp($e) y, byte zp($21) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) bitmap_line_ydxi: { .label y = $e + .label x = $21 .label y1 = $13 .label yd = $d .label xd = $12 @@ -32346,9 +32322,10 @@ bitmap_line_ydxi: { // bitmap_line_ydxi::@1 __b1: // bitmap_plot(x,y) - // [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - // [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuxx=vbuz1 + ldx.z y // [707] call bitmap_plot // [695] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] // [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy @@ -32371,8 +32348,8 @@ bitmap_line_ydxi: { bcs __b2 // bitmap_line_ydxi::@3 // x++; - // [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx - inx + // [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + inc.z x // e = e - yd // [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -32385,13 +32362,12 @@ bitmap_line_ydxi: { // bitmap_line_ydxi::@2 __b2: // y1+1 - // [714] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 + // [714] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx // while (y!=(y1+1)) - // [715] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [715] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1 // bitmap_line_ydxi::@return // } @@ -32399,10 +32375,9 @@ bitmap_line_ydxi: { rts } // bitmap_line_xdyd -// bitmap_line_xdyd(byte zp($f) x, byte zp($21) y, byte zp($16) x1, byte zp($12) xd, byte zp($e) yd) +// bitmap_line_xdyd(byte zp($f) x, byte register(X) y, byte zp($16) x1, byte zp($12) xd, byte zp($e) yd) bitmap_line_xdyd: { .label x = $f - .label y = $21 .label x1 = $16 .label xd = $12 .label yd = $e @@ -32419,10 +32394,9 @@ bitmap_line_xdyd: { // bitmap_line_xdyd::@1 __b1: // bitmap_plot(x,y) - // [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 - ldx.z x - // [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 - ldy.z y + // [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 // [722] call bitmap_plot // [695] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] // [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy @@ -32445,8 +32419,8 @@ bitmap_line_xdyd: { bcs __b2 // bitmap_line_xdyd::@3 // y--; - // [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 - dec.z y + // [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuxx=_dec_vbuxx + dex // e = e - xd // [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -32459,12 +32433,13 @@ bitmap_line_xdyd: { // bitmap_line_xdyd::@2 __b2: // x1+1 - // [729] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx + // [729] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - // [730] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [730] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1 // bitmap_line_xdyd::@return // } @@ -32472,10 +32447,11 @@ bitmap_line_xdyd: { rts } // bitmap_line_ydxd -// bitmap_line_ydxd(byte zp($e) y, byte register(X) x, byte zp($21) y1, byte zp($d) yd, byte zp($12) xd) +// bitmap_line_ydxd(byte zp($e) y, byte zp($16) x, byte zp($13) y1, byte zp($d) yd, byte zp($12) xd) bitmap_line_ydxd: { .label y = $e - .label y1 = $21 + .label x = $16 + .label y1 = $13 .label yd = $d .label xd = $12 .label e = $f @@ -32491,9 +32467,10 @@ bitmap_line_ydxd: { // bitmap_line_ydxd::@1 __b1: // bitmap_plot(x,y) - // [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - // [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 - ldy.z y + // [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuxx=vbuz1 + ldx.z y // [737] call bitmap_plot // [695] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] // [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy @@ -32516,8 +32493,8 @@ bitmap_line_ydxd: { bcs __b2 // bitmap_line_ydxd::@3 // x--; - // [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx - dex + // [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + dec.z x // e = e - yd // [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -32530,13 +32507,12 @@ bitmap_line_ydxd: { // bitmap_line_ydxd::@2 __b2: // y1+1 - // [744] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 + // [744] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx // while (y!=(y1+1)) - // [745] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [745] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1 // bitmap_line_ydxd::@return // } diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym index 2818b361a..fe500bb5a 100644 --- a/src/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/ref/c64dtv-gfxexplorer.sym @@ -110,35 +110,35 @@ (label) apply_preset::@9 (label) apply_preset::@return (byte) apply_preset::i -(byte) apply_preset::i#1 reg byte y 2002.0 -(byte) apply_preset::i#2 reg byte y 1668.3333333333335 +(byte) apply_preset::i#1 reg byte y 2.000000002E9 +(byte) apply_preset::i#2 reg byte y 1.6666666683333335E9 (byte) apply_preset::idx -(byte) apply_preset::idx#0 reg byte a 11.18181818181818 +(byte) apply_preset::idx#0 reg byte a 1009092.0000000002 (byte*) apply_preset::preset -(byte*) apply_preset::preset#15 preset zp[2]:7 200.2 +(byte*) apply_preset::preset#15 preset zp[2]:7 2.000000002E8 (void()) bitmap_clear() (label) bitmap_clear::@1 (label) bitmap_clear::@2 (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:16 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:16 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:16 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:16 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:16 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:16 10001.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:16 420000.60000000003 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:16 1550002.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:16 210003.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:16 20002.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 1500001.5 +(byte) bitmap_clear::x#2 reg byte x 666667.3333333334 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:22 16.5 -(byte) bitmap_clear::y#4 y zp[1]:22 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:22 150001.5 +(byte) bitmap_clear::y#4 y zp[1]:22 33333.666666666664 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:33 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 200002.0 +(byte~) bitmap_init::$10 zp[1]:33 50000.5 +(byte~) bitmap_init::$7 reg byte a 200002.0 +(byte~) bitmap_init::$8 reg byte a 200002.0 +(byte~) bitmap_init::$9 reg byte a 200002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -148,19 +148,19 @@ (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 100001.0 +(byte) bitmap_init::bits#3 reg byte y 60000.600000000006 +(byte) bitmap_init::bits#4 reg byte y 66667.33333333333 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 150001.5 +(byte) bitmap_init::x#2 reg byte x 66667.33333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 150001.5 +(byte) bitmap_init::y#2 reg byte x 50000.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 200002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 62500.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 100001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -178,194 +178,194 @@ (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp[1]:22 1.260869565217391 +(byte) bitmap_line::x0#0 x0 zp[1]:22 39565.65217391305 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 reg byte x 1.3181818181818181 +(byte) bitmap_line::x1#0 x1 zp[1]:33 41364.09090909091 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 xd zp[1]:18 0.7 -(byte) bitmap_line::xd#2 xd zp[1]:18 0.7 +(byte) bitmap_line::xd#1 xd zp[1]:18 35000.35 +(byte) bitmap_line::xd#2 xd zp[1]:18 35000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 y0 zp[1]:33 1.6666666666666674 +(byte) bitmap_line::y0#0 reg byte x 57619.66666666667 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 y1 zp[1]:19 1.7500000000000007 +(byte) bitmap_line::y1#0 y1 zp[1]:19 60500.650000000016 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#10 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#11 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#2 reg byte y 0.8888888888888888 +(byte) bitmap_line::yd#1 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#10 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#11 reg byte y 44444.88888888889 +(byte) bitmap_line::yd#2 reg byte y 44444.88888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyd::$6 reg byte a 2.00000002E8 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 e zp[1]:13 4.0 -(byte) bitmap_line_xdyd::e#1 e zp[1]:13 134.66666666666666 -(byte) bitmap_line_xdyd::e#2 e zp[1]:13 202.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:13 40.8 -(byte) bitmap_line_xdyd::e#6 e zp[1]:13 101.0 +(byte) bitmap_line_xdyd::e#0 e zp[1]:13 2000002.0 +(byte) bitmap_line_xdyd::e#1 e zp[1]:13 1.3333333466666667E8 +(byte) bitmap_line_xdyd::e#2 e zp[1]:13 2.00000002E8 +(byte) bitmap_line_xdyd::e#3 e zp[1]:13 4.0200000599999994E7 +(byte) bitmap_line_xdyd::e#6 e zp[1]:13 1.00000001E8 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 x zp[1]:15 0.8 -(byte) bitmap_line_xdyd::x#1 x zp[1]:15 0.8 -(byte) bitmap_line_xdyd::x#2 x zp[1]:15 37.875 -(byte) bitmap_line_xdyd::x#3 x zp[1]:15 76.25 -(byte) bitmap_line_xdyd::x#6 x zp[1]:15 3.0 +(byte) bitmap_line_xdyd::x#0 x zp[1]:15 40000.4 +(byte) bitmap_line_xdyd::x#1 x zp[1]:15 40000.4 +(byte) bitmap_line_xdyd::x#2 x zp[1]:15 3.7500000375E7 +(byte) bitmap_line_xdyd::x#3 x zp[1]:15 7.5250001E7 +(byte) bitmap_line_xdyd::x#6 x zp[1]:15 600001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:22 7.5 +(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:22 7157143.071428572 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyd::xd#1 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyd::xd#5 xd zp[1]:18 14.714285714285715 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyd::xd#1 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyd::xd#5 xd zp[1]:18 1.4300000285714287E7 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 y zp[1]:33 1.0 -(byte) bitmap_line_xdyd::y#1 y zp[1]:33 1.0 -(byte) bitmap_line_xdyd::y#2 y zp[1]:33 101.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:33 58.00000000000001 -(byte) bitmap_line_xdyd::y#5 y zp[1]:33 3.0 -(byte) bitmap_line_xdyd::y#6 y zp[1]:33 101.0 +(byte) bitmap_line_xdyd::y#0 reg byte x 50000.5 +(byte) bitmap_line_xdyd::y#1 reg byte x 50000.5 +(byte) bitmap_line_xdyd::y#2 reg byte x 1.00000001E8 +(byte) bitmap_line_xdyd::y#3 reg byte x 5.7285715E7 +(byte) bitmap_line_xdyd::y#5 reg byte x 600001.5 +(byte) bitmap_line_xdyd::y#6 reg byte x 1.00000001E8 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyd::yd#1 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyd::yd#2 yd zp[1]:14 7.642857142857143 +(byte) bitmap_line_xdyd::yd#0 yd zp[1]:14 200002.0 +(byte) bitmap_line_xdyd::yd#1 yd zp[1]:14 200002.0 +(byte) bitmap_line_xdyd::yd#2 yd zp[1]:14 7228571.714285715 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 reg byte x 202.0 +(byte~) bitmap_line_xdyi::$6 reg byte a 2.00000002E8 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 e zp[1]:19 4.0 -(byte) bitmap_line_xdyi::e#1 e zp[1]:19 134.66666666666666 -(byte) bitmap_line_xdyi::e#2 e zp[1]:19 202.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:19 40.8 -(byte) bitmap_line_xdyi::e#6 e zp[1]:19 101.0 +(byte) bitmap_line_xdyi::e#0 e zp[1]:19 2000002.0 +(byte) bitmap_line_xdyi::e#1 e zp[1]:19 1.3333333466666667E8 +(byte) bitmap_line_xdyi::e#2 e zp[1]:19 2.00000002E8 +(byte) bitmap_line_xdyi::e#3 e zp[1]:19 4.0200000599999994E7 +(byte) bitmap_line_xdyi::e#6 e zp[1]:19 1.00000001E8 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 x zp[1]:13 0.8 -(byte) bitmap_line_xdyi::x#1 x zp[1]:13 0.8 -(byte) bitmap_line_xdyi::x#2 x zp[1]:13 37.875 -(byte) bitmap_line_xdyi::x#3 x zp[1]:13 76.25 -(byte) bitmap_line_xdyi::x#6 x zp[1]:13 3.0 +(byte) bitmap_line_xdyi::x#0 x zp[1]:13 40000.4 +(byte) bitmap_line_xdyi::x#1 x zp[1]:13 40000.4 +(byte) bitmap_line_xdyi::x#2 x zp[1]:13 3.7500000375E7 +(byte) bitmap_line_xdyi::x#3 x zp[1]:13 7.5250001E7 +(byte) bitmap_line_xdyi::x#6 x zp[1]:13 600001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:22 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:22 7.5 +(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:22 66667.33333333333 +(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:22 7157143.071428572 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:18 2.0 -(byte) bitmap_line_xdyi::xd#5 xd zp[1]:18 14.714285714285715 +(byte) bitmap_line_xdyi::xd#0 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:18 100001.0 +(byte) bitmap_line_xdyi::xd#5 xd zp[1]:18 1.4300000285714287E7 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 y zp[1]:33 1.0 -(byte) bitmap_line_xdyi::y#1 y zp[1]:33 1.0 -(byte) bitmap_line_xdyi::y#2 y zp[1]:33 101.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:33 58.00000000000001 -(byte) bitmap_line_xdyi::y#5 y zp[1]:33 3.0 -(byte) bitmap_line_xdyi::y#6 y zp[1]:33 101.0 +(byte) bitmap_line_xdyi::y#0 reg byte x 50000.5 +(byte) bitmap_line_xdyi::y#1 reg byte x 50000.5 +(byte) bitmap_line_xdyi::y#2 reg byte x 1.00000001E8 +(byte) bitmap_line_xdyi::y#3 reg byte x 5.7285715E7 +(byte) bitmap_line_xdyi::y#5 reg byte x 600001.5 +(byte) bitmap_line_xdyi::y#6 reg byte x 1.00000001E8 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 yd zp[1]:15 4.0 -(byte) bitmap_line_xdyi::yd#1 yd zp[1]:15 4.0 -(byte) bitmap_line_xdyi::yd#2 yd zp[1]:15 7.642857142857143 +(byte) bitmap_line_xdyi::yd#0 yd zp[1]:15 200002.0 +(byte) bitmap_line_xdyi::yd#1 yd zp[1]:15 200002.0 +(byte) bitmap_line_xdyi::yd#2 yd zp[1]:15 7228571.714285715 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 reg byte a 202.0 +(byte~) bitmap_line_ydxd::$6 reg byte x 2.00000002E8 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:15 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:15 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp[1]:15 202.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:15 40.8 -(byte) bitmap_line_ydxd::e#6 e zp[1]:15 101.0 +(byte) bitmap_line_ydxd::e#0 e zp[1]:15 2000002.0 +(byte) bitmap_line_ydxd::e#1 e zp[1]:15 1.3333333466666667E8 +(byte) bitmap_line_ydxd::e#2 e zp[1]:15 2.00000002E8 +(byte) bitmap_line_ydxd::e#3 e zp[1]:15 4.0200000599999994E7 +(byte) bitmap_line_ydxd::e#6 e zp[1]:15 1.00000001E8 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#2 reg byte x 101.0 -(byte) bitmap_line_ydxd::x#3 reg byte x 58.00000000000001 -(byte) bitmap_line_ydxd::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxd::x#6 reg byte x 101.0 +(byte) bitmap_line_ydxd::x#0 x zp[1]:22 50000.5 +(byte) bitmap_line_ydxd::x#1 x zp[1]:22 50000.5 +(byte) bitmap_line_ydxd::x#2 x zp[1]:22 1.00000001E8 +(byte) bitmap_line_ydxd::x#3 x zp[1]:22 5.7285715E7 +(byte) bitmap_line_ydxd::x#5 x zp[1]:22 600001.5 +(byte) bitmap_line_ydxd::x#6 x zp[1]:22 1.00000001E8 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxd::xd#1 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxd::xd#2 xd zp[1]:18 7.642857142857143 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxd::xd#1 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxd::xd#2 xd zp[1]:18 7228571.714285715 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 y zp[1]:14 0.8 -(byte) bitmap_line_ydxd::y#1 y zp[1]:14 0.8 -(byte) bitmap_line_ydxd::y#2 y zp[1]:14 76.25 -(byte) bitmap_line_ydxd::y#3 y zp[1]:14 37.875 -(byte) bitmap_line_ydxd::y#7 y zp[1]:14 3.0 +(byte) bitmap_line_ydxd::y#0 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxd::y#1 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxd::y#2 y zp[1]:14 7.5250001E7 +(byte) bitmap_line_ydxd::y#3 y zp[1]:14 3.7500000375E7 +(byte) bitmap_line_ydxd::y#7 y zp[1]:14 600001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:33 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:33 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:33 7.5 +(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:19 7157143.071428572 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxd::yd#1 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxd::yd#5 yd zp[1]:13 14.714285714285715 +(byte) bitmap_line_ydxd::yd#0 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxd::yd#1 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxd::yd#5 yd zp[1]:13 1.4300000285714287E7 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 reg byte a 202.0 +(byte~) bitmap_line_ydxi::$6 reg byte x 2.00000002E8 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:15 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:15 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp[1]:15 202.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:15 40.8 -(byte) bitmap_line_ydxi::e#6 e zp[1]:15 101.0 +(byte) bitmap_line_ydxi::e#0 e zp[1]:15 2000002.0 +(byte) bitmap_line_ydxi::e#1 e zp[1]:15 1.3333333466666667E8 +(byte) bitmap_line_ydxi::e#2 e zp[1]:15 2.00000002E8 +(byte) bitmap_line_ydxi::e#3 e zp[1]:15 4.0200000599999994E7 +(byte) bitmap_line_ydxi::e#6 e zp[1]:15 1.00000001E8 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#2 reg byte x 101.0 -(byte) bitmap_line_ydxi::x#3 reg byte x 58.00000000000001 -(byte) bitmap_line_ydxi::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxi::x#6 reg byte x 101.0 +(byte) bitmap_line_ydxi::x#0 x zp[1]:33 50000.5 +(byte) bitmap_line_ydxi::x#1 x zp[1]:33 50000.5 +(byte) bitmap_line_ydxi::x#2 x zp[1]:33 1.00000001E8 +(byte) bitmap_line_ydxi::x#3 x zp[1]:33 5.7285715E7 +(byte) bitmap_line_ydxi::x#5 x zp[1]:33 600001.5 +(byte) bitmap_line_ydxi::x#6 x zp[1]:33 1.00000001E8 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:18 4.0 -(byte) bitmap_line_ydxi::xd#2 xd zp[1]:18 7.642857142857143 +(byte) bitmap_line_ydxi::xd#0 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:18 200002.0 +(byte) bitmap_line_ydxi::xd#2 xd zp[1]:18 7228571.714285715 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 y zp[1]:14 0.8 -(byte) bitmap_line_ydxi::y#1 y zp[1]:14 0.8 -(byte) bitmap_line_ydxi::y#2 y zp[1]:14 37.875 -(byte) bitmap_line_ydxi::y#3 y zp[1]:14 76.25 -(byte) bitmap_line_ydxi::y#6 y zp[1]:14 3.0 +(byte) bitmap_line_ydxi::y#0 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxi::y#1 y zp[1]:14 40000.4 +(byte) bitmap_line_ydxi::y#2 y zp[1]:14 3.7500000375E7 +(byte) bitmap_line_ydxi::y#3 y zp[1]:14 7.5250001E7 +(byte) bitmap_line_ydxi::y#6 y zp[1]:14 600001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:19 7.5 +(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:19 66667.33333333333 +(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:19 7157143.071428572 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#1 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#5 yd zp[1]:13 14.714285714285715 +(byte) bitmap_line_ydxi::yd#0 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxi::yd#1 yd zp[1]:13 100001.0 +(byte) bitmap_line_ydxi::yd#5 yd zp[1]:13 1.4300000285714287E7 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.000000002E9 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:29 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:29 5.000000005E8 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:29 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:29 1.000000001E9 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:31 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:31 2.000000002E9 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 101.0 -(byte) bitmap_plot::x#1 reg byte x 101.0 -(byte) bitmap_plot::x#2 reg byte x 101.0 -(byte) bitmap_plot::x#3 reg byte x 101.0 -(byte) bitmap_plot::x#4 reg byte x 102.5 +(byte) bitmap_plot::x#0 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#1 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#2 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#3 reg byte y 1.00000001E8 +(byte) bitmap_plot::x#4 reg byte y 8.5000000175E8 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 202.0 -(byte) bitmap_plot::y#1 reg byte y 202.0 -(byte) bitmap_plot::y#2 reg byte y 202.0 -(byte) bitmap_plot::y#3 reg byte y 202.0 -(byte) bitmap_plot::y#4 reg byte y 204.0 +(byte) bitmap_plot::y#0 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#1 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#2 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#3 reg byte x 2.00000002E8 +(byte) bitmap_plot::y#4 reg byte x 1.200000003E9 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -375,9 +375,9 @@ (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 4.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 105.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 200002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 20002.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 1110003.0 (const byte*) form_a_mod_hi = (const byte*) form_fields_val+(byte) $f (const byte*) form_a_mod_lo = (const byte*) form_fields_val+(byte) $10 (const byte*) form_a_pattern = (const byte*) form_fields_val+(byte) $a @@ -393,11 +393,11 @@ (const byte*) form_b_step_hi = (const byte*) form_fields_val+(byte) $14 (const byte*) form_b_step_lo = (const byte*) form_fields_val+(byte) $15 (byte()) form_control() -(byte~) form_control::$12 reg byte a 4.0 -(byte~) form_control::$13 reg byte a 4.0 -(byte~) form_control::$14 reg byte a 4.0 -(byte~) form_control::$15 reg byte a 4.0 -(byte~) form_control::$22 reg byte a 4.0 +(byte~) form_control::$12 reg byte a 2.0000002E7 +(byte~) form_control::$13 reg byte a 2.0000002E7 +(byte~) form_control::$14 reg byte a 2.0000002E7 +(byte~) form_control::$15 reg byte a 2.0000002E7 +(byte~) form_control::$22 reg byte a 2.0000002E7 (label) form_control::@1 (label) form_control::@10 (label) form_control::@11 @@ -423,12 +423,12 @@ (label) form_control::@9 (label) form_control::@return (byte*) form_control::field -(byte*) form_control::field#0 field zp[2]:29 0.5925925925925926 +(byte*) form_control::field#0 field zp[2]:29 2962963.2592592593 (byte) form_control::key_event -(byte) form_control::key_event#0 reg byte a 2.6666666666666665 +(byte) form_control::key_event#0 reg byte a 1.3333334666666666E7 (byte) form_control::return -(byte) form_control::return#0 reg byte a 2002.0 -(byte) form_control::return#2 reg byte x 333.6666666666667 +(byte) form_control::return#0 reg byte a 2000002.0 +(byte) form_control::return#2 reg byte x 333333.6666666667 (const byte*) form_ctrl_bmm = (const byte*) form_fields_val+(byte) 1 (const byte*) form_ctrl_borof = (const byte*) form_fields_val+(byte) 8 (const byte*) form_ctrl_chunk = (const byte*) form_fields_val+(byte) 7 @@ -439,35 +439,35 @@ (const byte*) form_ctrl_mcm = (const byte*) form_fields_val+(byte) 2 (const byte*) form_ctrl_overs = (const byte*) form_fields_val+(byte) 9 (signed byte) form_cursor_count -(signed byte) form_cursor_count#1 form_cursor_count zp[1]:3 0.3333333333333333 -(signed byte) form_cursor_count#15 form_cursor_count zp[1]:3 0.4 -(signed byte) form_cursor_count#16 form_cursor_count zp[1]:3 65.82352941176472 -(signed byte) form_cursor_count#21 form_cursor_count zp[1]:3 157.99999999999997 -(signed byte) form_cursor_count#5 form_cursor_count zp[1]:3 2.0 +(signed byte) form_cursor_count#1 form_cursor_count zp[1]:3 28.25641025641026 +(signed byte) form_cursor_count#15 form_cursor_count zp[1]:3 2000000.2 +(signed byte) form_cursor_count#16 form_cursor_count zp[1]:3 1829418.0 +(signed byte) form_cursor_count#21 form_cursor_count zp[1]:3 1585857.714285714 +(signed byte) form_cursor_count#5 form_cursor_count zp[1]:3 1.0000001E7 (const byte*) form_dtv_palet = (const byte*) form_fields_val+(byte) $1b (byte) form_field_idx -(byte) form_field_idx#1 form_field_idx zp[1]:4 0.3333333333333333 -(byte) form_field_idx#18 form_field_idx zp[1]:4 65.94117647058826 -(byte) form_field_idx#28 form_field_idx zp[1]:4 29.17948717948718 -(byte) form_field_idx#31 form_field_idx zp[1]:4 6.0 -(byte) form_field_idx#5 form_field_idx zp[1]:4 2.0 -(byte) form_field_idx#6 form_field_idx zp[1]:4 2.0 +(byte) form_field_idx#1 form_field_idx zp[1]:4 28.25641025641026 +(byte) form_field_idx#18 form_field_idx zp[1]:4 2417653.3529411764 +(byte) form_field_idx#28 form_field_idx zp[1]:4 4387205.641025641 +(byte) form_field_idx#31 form_field_idx zp[1]:4 3.0000003E7 +(byte) form_field_idx#5 form_field_idx zp[1]:4 1.0000001E7 +(byte) form_field_idx#6 form_field_idx zp[1]:4 1.0000001E7 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) (label) form_field_ptr::@return (byte*) form_field_ptr::field (byte) form_field_ptr::field_idx -(byte) form_field_ptr::field_idx#0 reg byte x 2002.0 -(byte) form_field_ptr::field_idx#1 reg byte x 4.0 -(byte) form_field_ptr::field_idx#2 reg byte x 335.66666666666674 +(byte) form_field_ptr::field_idx#0 reg byte x 2.000000002E9 +(byte) form_field_ptr::field_idx#1 reg byte x 2.0000002E7 +(byte) form_field_ptr::field_idx#2 reg byte x 7.003333334666666E9 (byte*) form_field_ptr::line -(word) form_field_ptr::line#0 line zp[2]:20 0.4 +(word) form_field_ptr::line#0 line zp[2]:20 2.0000000002E9 (byte*) form_field_ptr::return -(byte*) form_field_ptr::return#0 return zp[2]:29 1.3333333333333333 -(byte*) form_field_ptr::return#3 return zp[2]:29 4.0 +(byte*) form_field_ptr::return#0 return zp[2]:29 3.336666667333333E9 +(byte*) form_field_ptr::return#3 return zp[2]:29 2.0000002E7 (byte) form_field_ptr::x -(byte) form_field_ptr::x#0 x zp[1]:22 251.25 +(byte) form_field_ptr::x#0 x zp[1]:22 5.25000000075E9 (byte) form_field_ptr::y -(byte) form_field_ptr::y#0 reg byte y 6.0 +(byte) form_field_ptr::y#0 reg byte y 3.0000000003E10 (const byte) form_fields_cnt = (byte) $24 (const byte*) form_fields_max[] = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f } (const byte*) form_fields_val[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } @@ -476,7 +476,7 @@ (const byte*) form_line_hi[(number) $19] = { fill( $19, 0) } (const byte*) form_line_lo[(number) $19] = { fill( $19, 0) } (void()) form_mode() -(byte~) form_mode::$11 reg byte a 2002.0 +(byte~) form_mode::$11 reg byte a 2000002.0 (label) form_mode::@1 (label) form_mode::@10 (label) form_mode::@11 @@ -498,12 +498,12 @@ (label) form_mode::@9 (label) form_mode::@return (byte) form_mode::i -(byte) form_mode::i#1 reg byte x 151.5 -(byte) form_mode::i#2 reg byte x 202.0 +(byte) form_mode::i#1 reg byte x 150001.5 +(byte) form_mode::i#2 reg byte x 200002.0 (byte) form_mode::preset_current -(byte) form_mode::preset_current#0 preset_current zp[1]:13 4.0 -(byte) form_mode::preset_current#1 preset_current zp[1]:13 50.5 -(byte) form_mode::preset_current#6 preset_current zp[1]:13 388.25 +(byte) form_mode::preset_current#0 preset_current zp[1]:13 2002.0 +(byte) form_mode::preset_current#1 preset_current zp[1]:13 50000.5 +(byte) form_mode::preset_current#6 preset_current zp[1]:13 387625.625 (void()) form_render_values() (label) form_render_values::@1 (label) form_render_values::@2 @@ -511,20 +511,20 @@ (label) form_render_values::@return (byte*) form_render_values::field (byte) form_render_values::idx -(byte) form_render_values::idx#1 reg byte x 2002.0 -(byte) form_render_values::idx#2 reg byte x 1001.0 +(byte) form_render_values::idx#1 reg byte x 2.000000002E9 +(byte) form_render_values::idx#2 reg byte x 1.000000001E9 (void()) form_set_screen((byte*) form_set_screen::screen) -(byte~) form_set_screen::$0 reg byte a 202.0 -(byte~) form_set_screen::$1 reg byte a 202.0 +(byte~) form_set_screen::$0 reg byte a 2000002.0 +(byte~) form_set_screen::$1 reg byte a 2000002.0 (label) form_set_screen::@1 (label) form_set_screen::@return (byte*) form_set_screen::line -(byte*) form_set_screen::line#1 line zp[2]:16 67.33333333333333 -(byte*) form_set_screen::line#2 line zp[2]:16 80.8 +(byte*) form_set_screen::line#1 line zp[2]:16 666667.3333333334 +(byte*) form_set_screen::line#2 line zp[2]:16 800000.8 (byte*) form_set_screen::screen (byte) form_set_screen::y -(byte) form_set_screen::y#1 reg byte x 151.5 -(byte) form_set_screen::y#2 reg byte x 67.33333333333333 +(byte) form_set_screen::y#1 reg byte x 1500001.5 +(byte) form_set_screen::y#2 reg byte x 666667.3333333334 (const byte*) form_vic_bg0_hi = (const byte*) form_fields_val+(byte) $1c (const byte*) form_vic_bg0_lo = (const byte*) form_fields_val+(byte) $1d (const byte*) form_vic_bg1_hi = (const byte*) form_fields_val+(byte) $1e @@ -553,22 +553,22 @@ (label) get_plane::@9 (label) get_plane::@return (byte) get_plane::idx -(byte) get_plane::idx#0 reg byte a 4.0 -(byte) get_plane::idx#1 reg byte a 4.0 -(byte) get_plane::idx#10 reg byte a 2.285714285714285 +(byte) get_plane::idx#0 reg byte a 2002.0 +(byte) get_plane::idx#1 reg byte a 2002.0 +(byte) get_plane::idx#10 reg byte a 10144.000000000002 (dword) get_plane::return -(dword) get_plane::return#14 return zp[4]:9 1.0 -(dword) get_plane::return#16 return zp[4]:9 4.0 -(dword) get_plane::return#17 return zp[4]:9 4.0 +(dword) get_plane::return#14 return zp[4]:9 500.5 +(dword) get_plane::return#16 return zp[4]:9 2002.0 +(dword) get_plane::return#17 return zp[4]:9 2002.0 (byte*()) get_vic_charset((byte) get_vic_charset::idx) (label) get_vic_charset::@1 (label) get_vic_charset::@2 (label) get_vic_charset::@return (byte) get_vic_charset::idx -(byte) get_vic_charset::idx#0 reg byte a 3.0 +(byte) get_vic_charset::idx#0 reg byte a 10501.5 (byte*) get_vic_charset::return -(byte*) get_vic_charset::return#2 return zp[2]:7 0.6666666666666666 -(byte*) get_vic_charset::return#4 return zp[2]:7 4.0 +(byte*) get_vic_charset::return#2 return zp[2]:7 333.6666666666667 +(byte*) get_vic_charset::return#4 return zp[2]:7 2002.0 (byte*()) get_vic_screen((byte) get_vic_screen::idx) (label) get_vic_screen::@1 (label) get_vic_screen::@2 @@ -577,13 +577,13 @@ (label) get_vic_screen::@5 (label) get_vic_screen::@return (byte) get_vic_screen::idx -(byte) get_vic_screen::idx#0 reg byte a 4.0 -(byte) get_vic_screen::idx#1 reg byte a 4.0 -(byte) get_vic_screen::idx#2 reg byte a 2.8 +(byte) get_vic_screen::idx#0 reg byte a 2002.0 +(byte) get_vic_screen::idx#1 reg byte a 2002.0 +(byte) get_vic_screen::idx#2 reg byte a 10401.400000000001 (byte*) get_vic_screen::return -(byte*) get_vic_screen::return#10 return zp[2]:16 4.0 -(byte*) get_vic_screen::return#11 return zp[2]:16 4.0 -(byte*) get_vic_screen::return#5 return zp[2]:16 1.0 +(byte*) get_vic_screen::return#10 return zp[2]:16 2002.0 +(byte*) get_vic_screen::return#11 return zp[2]:16 2002.0 +(byte*) get_vic_screen::return#5 return zp[2]:16 500.5 (void()) gfx_init() (label) gfx_init::@1 (label) gfx_init::@10 @@ -607,21 +607,21 @@ (label) gfx_init_charset::@4 (label) gfx_init_charset::@return (byte) gfx_init_charset::c -(byte) gfx_init_charset::c#1 c zp[1]:33 16.5 -(byte) gfx_init_charset::c#4 c zp[1]:33 3.142857142857143 +(byte) gfx_init_charset::c#1 c zp[1]:33 15001.5 +(byte) gfx_init_charset::c#4 c zp[1]:33 2857.4285714285716 (byte*) gfx_init_charset::chargen -(byte*) gfx_init_charset::chargen#1 chargen zp[2]:20 42.599999999999994 -(byte*) gfx_init_charset::chargen#2 chargen zp[2]:20 104.66666666666666 -(byte*) gfx_init_charset::chargen#3 chargen zp[2]:20 22.0 +(byte*) gfx_init_charset::chargen#1 chargen zp[2]:20 42000.600000000006 +(byte*) gfx_init_charset::chargen#2 chargen zp[2]:20 103334.66666666666 +(byte*) gfx_init_charset::chargen#3 chargen zp[2]:20 20002.0 (byte*) gfx_init_charset::charset -(byte*) gfx_init_charset::charset#1 charset zp[2]:16 35.5 -(byte*) gfx_init_charset::charset#2 charset zp[2]:16 157.0 -(byte*) gfx_init_charset::charset#3 charset zp[2]:16 22.0 +(byte*) gfx_init_charset::charset#1 charset zp[2]:16 35000.5 +(byte*) gfx_init_charset::charset#2 charset zp[2]:16 155002.0 +(byte*) gfx_init_charset::charset#3 charset zp[2]:16 20002.0 (byte) gfx_init_charset::l -(byte) gfx_init_charset::l#1 reg byte x 151.5 -(byte) gfx_init_charset::l#2 reg byte x 50.5 +(byte) gfx_init_charset::l#1 reg byte x 150001.5 +(byte) gfx_init_charset::l#2 reg byte x 50000.5 (void()) gfx_init_plane_8bppchunky() -(word~) gfx_init_plane_8bppchunky::$5 zp[2]:29 101.0 +(word~) gfx_init_plane_8bppchunky::$5 zp[2]:29 100001.0 (label) gfx_init_plane_8bppchunky::@1 (label) gfx_init_plane_8bppchunky::@2 (label) gfx_init_plane_8bppchunky::@3 @@ -631,27 +631,27 @@ (label) gfx_init_plane_8bppchunky::@7 (label) gfx_init_plane_8bppchunky::@return (byte) gfx_init_plane_8bppchunky::c -(byte) gfx_init_plane_8bppchunky::c#0 reg byte a 202.0 +(byte) gfx_init_plane_8bppchunky::c#0 reg byte a 200002.0 (byte*) gfx_init_plane_8bppchunky::gfxb -(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_8bppchunky::gfxb#4 gfxb zp[2]:16 75.75 -(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfxb zp[2]:16 22.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfxb zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfxb zp[2]:16 155002.0 +(byte*) gfx_init_plane_8bppchunky::gfxb#4 gfxb zp[2]:16 75000.75 +(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_8bppchunky::gfxbCpuBank -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 reg byte x 202.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 reg byte x 103.75 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 reg byte x 22.0 -(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 reg byte x 34.888888888888886 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 reg byte x 200002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 reg byte x 102501.25 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 reg byte x 20002.0 +(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 reg byte x 34444.88888888889 (word) gfx_init_plane_8bppchunky::x -(word) gfx_init_plane_8bppchunky::x#1 x zp[2]:20 151.5 -(word) gfx_init_plane_8bppchunky::x#2 x zp[2]:20 30.299999999999997 +(word) gfx_init_plane_8bppchunky::x#1 x zp[2]:20 150001.5 +(word) gfx_init_plane_8bppchunky::x#2 x zp[2]:20 30000.300000000003 (byte) gfx_init_plane_8bppchunky::y -(byte) gfx_init_plane_8bppchunky::y#1 y zp[1]:14 16.5 -(byte) gfx_init_plane_8bppchunky::y#6 y zp[1]:14 9.461538461538462 +(byte) gfx_init_plane_8bppchunky::y#1 y zp[1]:14 15001.5 +(byte) gfx_init_plane_8bppchunky::y#6 y zp[1]:14 9230.999999999998 (void()) gfx_init_plane_blank() (label) gfx_init_plane_blank::@return (void()) gfx_init_plane_charset8() -(byte~) gfx_init_plane_charset8::$2 reg byte a 2002.0 +(byte~) gfx_init_plane_charset8::$2 reg byte a 2000002.0 (label) gfx_init_plane_charset8::@1 (label) gfx_init_plane_charset8::@2 (label) gfx_init_plane_charset8::@3 @@ -663,42 +663,42 @@ (label) gfx_init_plane_charset8::@9 (label) gfx_init_plane_charset8::@return (byte) gfx_init_plane_charset8::bits -(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:15 101.0 -(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:15 500.5 -(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:15 443.42857142857144 +(byte) gfx_init_plane_charset8::bits#0 bits zp[1]:15 100001.0 +(byte) gfx_init_plane_charset8::bits#1 bits zp[1]:15 500000.5 +(byte) gfx_init_plane_charset8::bits#2 bits zp[1]:15 442857.7142857142 (byte) gfx_init_plane_charset8::c -(byte) gfx_init_plane_charset8::c#2 reg byte a 2002.0 -(byte) gfx_init_plane_charset8::c#3 reg byte a 2002.0 +(byte) gfx_init_plane_charset8::c#2 reg byte a 2000002.0 +(byte) gfx_init_plane_charset8::c#3 reg byte a 2000002.0 (byte) gfx_init_plane_charset8::ch -(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:14 16.5 -(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:14 1.2941176470588236 +(byte) gfx_init_plane_charset8::ch#1 ch zp[1]:14 15001.5 +(byte) gfx_init_plane_charset8::ch#8 ch zp[1]:14 1176.5882352941176 (byte*) gfx_init_plane_charset8::chargen -(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:16 13.3125 -(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:16 157.0 -(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:16 22.0 +(byte*) gfx_init_plane_charset8::chargen#1 chargen zp[2]:16 13125.1875 +(byte*) gfx_init_plane_charset8::chargen#2 chargen zp[2]:16 155002.0 +(byte*) gfx_init_plane_charset8::chargen#3 chargen zp[2]:16 20002.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp[1]:18 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp[1]:18 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp[1]:18 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp[1]:18 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp[1]:18 301429.14285714284 +(byte) gfx_init_plane_charset8::col#2 col zp[1]:18 387500.5 +(byte) gfx_init_plane_charset8::col#5 col zp[1]:18 70001.0 +(byte) gfx_init_plane_charset8::col#6 col zp[1]:18 20002.0 (byte) gfx_init_plane_charset8::cp -(byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 -(byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 +(byte) gfx_init_plane_charset8::cp#1 reg byte x 1500001.5 +(byte) gfx_init_plane_charset8::cp#2 reg byte x 222222.44444444444 (byte) gfx_init_plane_charset8::cr -(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:34 151.5 -(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:34 14.428571428571429 +(byte) gfx_init_plane_charset8::cr#1 cr zp[1]:34 150001.5 +(byte) gfx_init_plane_charset8::cr#6 cr zp[1]:34 14285.857142857143 (byte*) gfx_init_plane_charset8::gfxa -(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:20 234.8888888888889 -(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:20 517.3333333333334 -(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:20 71.0 -(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:20 22.0 +(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp[2]:20 234444.88888888888 +(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp[2]:20 516667.3333333334 +(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp[2]:20 70001.0 +(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp[2]:20 20002.0 (byte) gfx_init_plane_charset8::gfxbCpuBank (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_CHARSET8/(word) $4000 (void()) gfx_init_plane_fill((dword) gfx_init_plane_fill::plane_addr , (byte) gfx_init_plane_fill::fill) -(dword~) gfx_init_plane_fill::$0 zp[4]:23 4.0 -(word~) gfx_init_plane_fill::$1 zp[2]:27 4.0 -(word~) gfx_init_plane_fill::$4 zp[2]:16 4.0 -(word~) gfx_init_plane_fill::$5 zp[2]:16 4.0 +(dword~) gfx_init_plane_fill::$0 zp[4]:23 20002.0 +(word~) gfx_init_plane_fill::$1 zp[2]:27 20002.0 +(word~) gfx_init_plane_fill::$4 zp[2]:16 20002.0 +(word~) gfx_init_plane_fill::$5 zp[2]:16 20002.0 (label) gfx_init_plane_fill::@1 (label) gfx_init_plane_fill::@2 (label) gfx_init_plane_fill::@3 @@ -706,27 +706,27 @@ (label) gfx_init_plane_fill::@5 (label) gfx_init_plane_fill::@return (byte) gfx_init_plane_fill::bx -(byte) gfx_init_plane_fill::bx#1 reg byte x 151.5 -(byte) gfx_init_plane_fill::bx#2 reg byte x 67.33333333333333 +(byte) gfx_init_plane_fill::bx#1 reg byte x 1500001.5 +(byte) gfx_init_plane_fill::bx#2 reg byte x 666667.3333333334 (byte) gfx_init_plane_fill::by -(byte) gfx_init_plane_fill::by#1 by zp[1]:34 16.5 -(byte) gfx_init_plane_fill::by#4 by zp[1]:34 3.6666666666666665 +(byte) gfx_init_plane_fill::by#1 by zp[1]:34 150001.5 +(byte) gfx_init_plane_fill::by#4 by zp[1]:34 33333.666666666664 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 fill zp[1]:14 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 fill zp[1]:14 55555.61111111111 (byte*) gfx_init_plane_fill::gfxb -(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:16 2.0 -(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:16 24.0 -(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:16 4.0 +(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:16 10001.0 +(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:16 420000.60000000003 +(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:16 1550002.0 +(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:16 210003.0 +(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 20002.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp[4]:9 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp[4]:9 3333.6666666666665 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() -(byte~) gfx_init_plane_horisontal::$2 reg byte a 202.0 +(byte~) gfx_init_plane_horisontal::$2 reg byte a 200002.0 (label) gfx_init_plane_horisontal::@1 (label) gfx_init_plane_horisontal::@2 (label) gfx_init_plane_horisontal::@3 @@ -736,40 +736,40 @@ (label) gfx_init_plane_horisontal::@7 (label) gfx_init_plane_horisontal::@return (byte) gfx_init_plane_horisontal::ax -(byte) gfx_init_plane_horisontal::ax#1 reg byte x 151.5 -(byte) gfx_init_plane_horisontal::ax#2 reg byte x 25.25 +(byte) gfx_init_plane_horisontal::ax#1 reg byte x 150001.5 +(byte) gfx_init_plane_horisontal::ax#2 reg byte x 25000.25 (byte) gfx_init_plane_horisontal::ay -(byte) gfx_init_plane_horisontal::ay#1 ay zp[1]:13 16.5 -(byte) gfx_init_plane_horisontal::ay#4 ay zp[1]:13 11.181818181818182 +(byte) gfx_init_plane_horisontal::ay#1 ay zp[1]:13 15001.5 +(byte) gfx_init_plane_horisontal::ay#4 ay zp[1]:13 10909.363636363636 (byte*) gfx_init_plane_horisontal::gfxa -(byte*) gfx_init_plane_horisontal::gfxa#1 gfxa zp[2]:16 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#2 gfxa zp[2]:16 202.0 -(byte*) gfx_init_plane_horisontal::gfxa#3 gfxa zp[2]:16 103.2 -(byte*) gfx_init_plane_horisontal::gfxa#6 gfxa zp[2]:16 22.0 -(byte*) gfx_init_plane_horisontal::gfxa#7 gfxa zp[2]:16 62.8 +(byte*) gfx_init_plane_horisontal::gfxa#1 gfxa zp[2]:16 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#2 gfxa zp[2]:16 200002.0 +(byte*) gfx_init_plane_horisontal::gfxa#3 gfxa zp[2]:16 102001.2 +(byte*) gfx_init_plane_horisontal::gfxa#6 gfxa zp[2]:16 20002.0 +(byte*) gfx_init_plane_horisontal::gfxa#7 gfxa zp[2]:16 62000.8 (byte) gfx_init_plane_horisontal::gfxbCpuBank (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL/(word) $4000 (void()) gfx_init_plane_horisontal2() -(byte~) gfx_init_plane_horisontal2::$2 reg byte a 202.0 +(byte~) gfx_init_plane_horisontal2::$2 reg byte a 200002.0 (label) gfx_init_plane_horisontal2::@1 (label) gfx_init_plane_horisontal2::@2 (label) gfx_init_plane_horisontal2::@3 (label) gfx_init_plane_horisontal2::@4 (label) gfx_init_plane_horisontal2::@return (byte) gfx_init_plane_horisontal2::ax -(byte) gfx_init_plane_horisontal2::ax#1 reg byte x 151.5 -(byte) gfx_init_plane_horisontal2::ax#2 reg byte x 40.4 +(byte) gfx_init_plane_horisontal2::ax#1 reg byte x 150001.5 +(byte) gfx_init_plane_horisontal2::ax#2 reg byte x 40000.4 (byte) gfx_init_plane_horisontal2::ay -(byte) gfx_init_plane_horisontal2::ay#1 ay zp[1]:15 16.5 -(byte) gfx_init_plane_horisontal2::ay#4 ay zp[1]:15 15.375 +(byte) gfx_init_plane_horisontal2::ay#1 ay zp[1]:15 15001.5 +(byte) gfx_init_plane_horisontal2::ay#4 ay zp[1]:15 15000.375 (byte*) gfx_init_plane_horisontal2::gfxa -(byte*) gfx_init_plane_horisontal2::gfxa#1 gfxa zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_horisontal2::gfxa#2 gfxa zp[2]:16 78.5 -(byte*) gfx_init_plane_horisontal2::gfxa#3 gfxa zp[2]:16 22.0 +(byte*) gfx_init_plane_horisontal2::gfxa#1 gfxa zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_horisontal2::gfxa#2 gfxa zp[2]:16 77501.0 +(byte*) gfx_init_plane_horisontal2::gfxa#3 gfxa zp[2]:16 20002.0 (byte) gfx_init_plane_horisontal2::gfxbCpuBank (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL2/(word) $4000 (byte) gfx_init_plane_horisontal2::row -(byte) gfx_init_plane_horisontal2::row#0 reg byte a 202.0 +(byte) gfx_init_plane_horisontal2::row#0 reg byte a 200002.0 (const byte*) gfx_init_plane_horisontal2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } (void()) gfx_init_plane_vertical() (label) gfx_init_plane_vertical::@1 @@ -778,111 +778,111 @@ (label) gfx_init_plane_vertical::@4 (label) gfx_init_plane_vertical::@return (byte) gfx_init_plane_vertical::bx -(byte) gfx_init_plane_vertical::bx#1 reg byte x 151.5 -(byte) gfx_init_plane_vertical::bx#2 reg byte x 67.33333333333333 +(byte) gfx_init_plane_vertical::bx#1 reg byte x 150001.5 +(byte) gfx_init_plane_vertical::bx#2 reg byte x 66667.33333333333 (byte) gfx_init_plane_vertical::by -(byte) gfx_init_plane_vertical::by#1 by zp[1]:13 16.5 -(byte) gfx_init_plane_vertical::by#4 by zp[1]:13 3.6666666666666665 +(byte) gfx_init_plane_vertical::by#1 by zp[1]:13 15001.5 +(byte) gfx_init_plane_vertical::by#4 by zp[1]:13 3333.6666666666665 (byte*) gfx_init_plane_vertical::gfxb -(byte*) gfx_init_plane_vertical::gfxb#1 gfxb zp[2]:16 42.599999999999994 -(byte*) gfx_init_plane_vertical::gfxb#2 gfxb zp[2]:16 157.0 -(byte*) gfx_init_plane_vertical::gfxb#3 gfxb zp[2]:16 22.0 +(byte*) gfx_init_plane_vertical::gfxb#1 gfxb zp[2]:16 42000.600000000006 +(byte*) gfx_init_plane_vertical::gfxb#2 gfxb zp[2]:16 155002.0 +(byte*) gfx_init_plane_vertical::gfxb#3 gfxb zp[2]:16 20002.0 (byte) gfx_init_plane_vertical::gfxbCpuBank (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_VERTICAL/(word) $4000 (void()) gfx_init_plane_vertical2() (label) gfx_init_plane_vertical2::@return (void()) gfx_init_screen0() -(byte~) gfx_init_screen0::$0 reg byte a 202.0 -(byte~) gfx_init_screen0::$1 zp[1]:34 101.0 -(byte~) gfx_init_screen0::$2 reg byte a 202.0 -(byte~) gfx_init_screen0::$3 reg byte a 202.0 +(byte~) gfx_init_screen0::$0 reg byte a 200002.0 +(byte~) gfx_init_screen0::$1 zp[1]:34 100001.0 +(byte~) gfx_init_screen0::$2 reg byte a 200002.0 +(byte~) gfx_init_screen0::$3 reg byte a 200002.0 (label) gfx_init_screen0::@1 (label) gfx_init_screen0::@2 (label) gfx_init_screen0::@3 (label) gfx_init_screen0::@return (byte*) gfx_init_screen0::ch -(byte*) gfx_init_screen0::ch#1 ch zp[2]:20 42.599999999999994 -(byte*) gfx_init_screen0::ch#2 ch zp[2]:20 52.33333333333333 -(byte*) gfx_init_screen0::ch#3 ch zp[2]:20 22.0 +(byte*) gfx_init_screen0::ch#1 ch zp[2]:20 42000.600000000006 +(byte*) gfx_init_screen0::ch#2 ch zp[2]:20 51667.33333333333 +(byte*) gfx_init_screen0::ch#3 ch zp[2]:20 20002.0 (byte) gfx_init_screen0::cx -(byte) gfx_init_screen0::cx#1 reg byte x 151.5 -(byte) gfx_init_screen0::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen0::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen0::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen0::cy -(byte) gfx_init_screen0::cy#1 cy zp[1]:19 16.5 -(byte) gfx_init_screen0::cy#4 cy zp[1]:19 12.299999999999999 +(byte) gfx_init_screen0::cy#1 cy zp[1]:19 15001.5 +(byte) gfx_init_screen0::cy#4 cy zp[1]:19 12000.300000000001 (void()) gfx_init_screen1() -(byte~) gfx_init_screen1::$0 reg byte a 202.0 -(byte~) gfx_init_screen1::$1 reg byte a 202.0 +(byte~) gfx_init_screen1::$0 reg byte a 200002.0 +(byte~) gfx_init_screen1::$1 reg byte a 200002.0 (label) gfx_init_screen1::@1 (label) gfx_init_screen1::@2 (label) gfx_init_screen1::@3 (label) gfx_init_screen1::@return (byte*) gfx_init_screen1::ch -(byte*) gfx_init_screen1::ch#1 ch zp[2]:20 42.599999999999994 -(byte*) gfx_init_screen1::ch#2 ch zp[2]:20 78.5 -(byte*) gfx_init_screen1::ch#3 ch zp[2]:20 22.0 +(byte*) gfx_init_screen1::ch#1 ch zp[2]:20 42000.600000000006 +(byte*) gfx_init_screen1::ch#2 ch zp[2]:20 77501.0 +(byte*) gfx_init_screen1::ch#3 ch zp[2]:20 20002.0 (byte) gfx_init_screen1::cx -(byte) gfx_init_screen1::cx#1 reg byte x 151.5 -(byte) gfx_init_screen1::cx#2 reg byte x 60.599999999999994 +(byte) gfx_init_screen1::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen1::cx#2 reg byte x 60000.600000000006 (byte) gfx_init_screen1::cy -(byte) gfx_init_screen1::cy#1 cy zp[1]:18 16.5 -(byte) gfx_init_screen1::cy#4 cy zp[1]:18 15.375 +(byte) gfx_init_screen1::cy#1 cy zp[1]:18 15001.5 +(byte) gfx_init_screen1::cy#4 cy zp[1]:18 15000.375 (void()) gfx_init_screen2() -(byte~) gfx_init_screen2::$0 reg byte a 202.0 -(byte~) gfx_init_screen2::$3 reg byte a 202.0 -(byte~) gfx_init_screen2::$4 reg byte a 202.0 +(byte~) gfx_init_screen2::$0 reg byte a 200002.0 +(byte~) gfx_init_screen2::$3 reg byte a 200002.0 +(byte~) gfx_init_screen2::$4 reg byte a 200002.0 (label) gfx_init_screen2::@1 (label) gfx_init_screen2::@2 (label) gfx_init_screen2::@3 (label) gfx_init_screen2::@return (byte*) gfx_init_screen2::ch -(byte*) gfx_init_screen2::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen2::ch#2 ch zp[2]:16 44.85714285714286 -(byte*) gfx_init_screen2::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen2::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen2::ch#2 ch zp[2]:16 44286.28571428572 +(byte*) gfx_init_screen2::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen2::col -(byte) gfx_init_screen2::col#0 reg byte y 151.5 +(byte) gfx_init_screen2::col#0 reg byte y 150001.5 (byte) gfx_init_screen2::col2 -(byte) gfx_init_screen2::col2#0 col2 zp[1]:34 101.0 +(byte) gfx_init_screen2::col2#0 col2 zp[1]:34 100001.0 (byte) gfx_init_screen2::cx -(byte) gfx_init_screen2::cx#1 reg byte x 151.5 -(byte) gfx_init_screen2::cx#2 reg byte x 37.875 +(byte) gfx_init_screen2::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen2::cx#2 reg byte x 37500.375 (byte) gfx_init_screen2::cy -(byte) gfx_init_screen2::cy#1 cy zp[1]:18 16.5 -(byte) gfx_init_screen2::cy#4 cy zp[1]:18 11.181818181818182 +(byte) gfx_init_screen2::cy#1 cy zp[1]:18 15001.5 +(byte) gfx_init_screen2::cy#4 cy zp[1]:18 10909.363636363636 (void()) gfx_init_screen3() -(byte~) gfx_init_screen3::$0 reg byte a 202.0 -(byte~) gfx_init_screen3::$1 zp[1]:34 101.0 -(byte~) gfx_init_screen3::$2 reg byte a 202.0 -(byte~) gfx_init_screen3::$3 reg byte a 202.0 +(byte~) gfx_init_screen3::$0 reg byte a 200002.0 +(byte~) gfx_init_screen3::$1 zp[1]:34 100001.0 +(byte~) gfx_init_screen3::$2 reg byte a 200002.0 +(byte~) gfx_init_screen3::$3 reg byte a 200002.0 (label) gfx_init_screen3::@1 (label) gfx_init_screen3::@2 (label) gfx_init_screen3::@3 (label) gfx_init_screen3::@return (byte*) gfx_init_screen3::ch -(byte*) gfx_init_screen3::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen3::ch#2 ch zp[2]:16 52.33333333333333 -(byte*) gfx_init_screen3::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen3::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen3::ch#2 ch zp[2]:16 51667.33333333333 +(byte*) gfx_init_screen3::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen3::cx -(byte) gfx_init_screen3::cx#1 reg byte x 151.5 -(byte) gfx_init_screen3::cx#2 reg byte x 43.285714285714285 +(byte) gfx_init_screen3::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen3::cx#2 reg byte x 42857.57142857143 (byte) gfx_init_screen3::cy -(byte) gfx_init_screen3::cy#1 cy zp[1]:15 16.5 -(byte) gfx_init_screen3::cy#4 cy zp[1]:15 12.299999999999999 +(byte) gfx_init_screen3::cy#1 cy zp[1]:15 15001.5 +(byte) gfx_init_screen3::cy#4 cy zp[1]:15 12000.300000000001 (void()) gfx_init_screen4() (label) gfx_init_screen4::@1 (label) gfx_init_screen4::@2 (label) gfx_init_screen4::@3 (label) gfx_init_screen4::@return (byte*) gfx_init_screen4::ch -(byte*) gfx_init_screen4::ch#1 ch zp[2]:16 42.599999999999994 -(byte*) gfx_init_screen4::ch#2 ch zp[2]:16 157.0 -(byte*) gfx_init_screen4::ch#3 ch zp[2]:16 22.0 +(byte*) gfx_init_screen4::ch#1 ch zp[2]:16 42000.600000000006 +(byte*) gfx_init_screen4::ch#2 ch zp[2]:16 155002.0 +(byte*) gfx_init_screen4::ch#3 ch zp[2]:16 20002.0 (byte) gfx_init_screen4::cx -(byte) gfx_init_screen4::cx#1 reg byte x 151.5 -(byte) gfx_init_screen4::cx#2 reg byte x 67.33333333333333 +(byte) gfx_init_screen4::cx#1 reg byte x 150001.5 +(byte) gfx_init_screen4::cx#2 reg byte x 66667.33333333333 (byte) gfx_init_screen4::cy -(byte) gfx_init_screen4::cy#1 cy zp[1]:14 16.5 -(byte) gfx_init_screen4::cy#4 cy zp[1]:14 3.6666666666666665 +(byte) gfx_init_screen4::cy#1 cy zp[1]:14 15001.5 +(byte) gfx_init_screen4::cy#4 cy zp[1]:14 3333.6666666666665 (void()) gfx_init_vic_bitmap() (label) gfx_init_vic_bitmap::@1 (label) gfx_init_vic_bitmap::@2 @@ -890,51 +890,51 @@ (label) gfx_init_vic_bitmap::@4 (label) gfx_init_vic_bitmap::@return (byte) gfx_init_vic_bitmap::l -(byte) gfx_init_vic_bitmap::l#1 l zp[1]:34 22.0 -(byte) gfx_init_vic_bitmap::l#2 l zp[1]:34 11.0 +(byte) gfx_init_vic_bitmap::l#1 l zp[1]:34 20002.0 +(byte) gfx_init_vic_bitmap::l#2 l zp[1]:34 10001.000000000002 (const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9 (const byte*) gfx_init_vic_bitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 } (const byte*) gfx_init_vic_bitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 } (void()) gfx_mode() -(byte~) gfx_mode::$18 reg byte a 4.0 -(dword~) gfx_mode::$20 zp[4]:9 4.0 -(byte~) gfx_mode::$23 reg byte a 4.0 -(word~) gfx_mode::$24 zp[2]:20 2.0 -(byte~) gfx_mode::$25 reg byte a 4.0 -(word~) gfx_mode::$26 zp[2]:29 4.0 -(byte~) gfx_mode::$27 reg byte a 4.0 -(byte~) gfx_mode::$28 reg byte a 4.0 -(byte~) gfx_mode::$29 reg byte a 4.0 -(byte~) gfx_mode::$30 reg byte a 4.0 -(byte~) gfx_mode::$31 reg byte a 4.0 -(byte~) gfx_mode::$32 reg byte a 4.0 -(dword~) gfx_mode::$34 zp[4]:9 4.0 -(byte~) gfx_mode::$37 reg byte a 4.0 -(word~) gfx_mode::$38 zp[2]:31 2.0 -(byte~) gfx_mode::$39 reg byte a 4.0 -(word~) gfx_mode::$40 zp[2]:27 4.0 -(byte~) gfx_mode::$41 reg byte a 4.0 -(byte~) gfx_mode::$42 reg byte a 4.0 -(byte~) gfx_mode::$43 reg byte a 4.0 -(byte~) gfx_mode::$44 reg byte a 4.0 -(byte~) gfx_mode::$45 reg byte a 4.0 -(byte*~) gfx_mode::$47 zp[2]:16 2.0 -(word~) gfx_mode::$48 zp[2]:16 4.0 -(word~) gfx_mode::$49 zp[2]:16 2.0 -(byte~) gfx_mode::$50 zp[1]:19 0.5 -(byte*~) gfx_mode::$52 zp[2]:7 2.0 -(word~) gfx_mode::$53 zp[2]:7 4.0 -(byte~) gfx_mode::$54 reg byte a 4.0 -(byte~) gfx_mode::$55 reg byte a 4.0 -(byte~) gfx_mode::$56 reg byte a 4.0 -(byte~) gfx_mode::$58 reg byte a 4.0 -(byte~) gfx_mode::$59 reg byte a 4.0 -(byte~) gfx_mode::$60 reg byte a 4.0 -(byte~) gfx_mode::$61 reg byte a 4.0 -(byte~) gfx_mode::$62 reg byte a 4.0 -(byte~) gfx_mode::$63 reg byte a 4.0 -(byte~) gfx_mode::$64 reg byte a 4.0 -(byte~) gfx_mode::$65 reg byte a 4.0 +(byte~) gfx_mode::$18 reg byte a 2002.0 +(dword~) gfx_mode::$20 zp[4]:9 2002.0 +(byte~) gfx_mode::$23 reg byte a 2002.0 +(word~) gfx_mode::$24 zp[2]:20 1001.0 +(byte~) gfx_mode::$25 reg byte a 2002.0 +(word~) gfx_mode::$26 zp[2]:29 2002.0 +(byte~) gfx_mode::$27 reg byte a 2002.0 +(byte~) gfx_mode::$28 reg byte a 2002.0 +(byte~) gfx_mode::$29 reg byte a 2002.0 +(byte~) gfx_mode::$30 reg byte a 2002.0 +(byte~) gfx_mode::$31 reg byte a 2002.0 +(byte~) gfx_mode::$32 reg byte a 2002.0 +(dword~) gfx_mode::$34 zp[4]:9 2002.0 +(byte~) gfx_mode::$37 reg byte a 2002.0 +(word~) gfx_mode::$38 zp[2]:31 1001.0 +(byte~) gfx_mode::$39 reg byte a 2002.0 +(word~) gfx_mode::$40 zp[2]:27 2002.0 +(byte~) gfx_mode::$41 reg byte a 2002.0 +(byte~) gfx_mode::$42 reg byte a 2002.0 +(byte~) gfx_mode::$43 reg byte a 2002.0 +(byte~) gfx_mode::$44 reg byte a 2002.0 +(byte~) gfx_mode::$45 reg byte a 2002.0 +(byte*~) gfx_mode::$47 zp[2]:16 1001.0 +(word~) gfx_mode::$48 zp[2]:16 2002.0 +(word~) gfx_mode::$49 zp[2]:16 1001.0 +(byte~) gfx_mode::$50 zp[1]:19 250.25 +(byte*~) gfx_mode::$52 zp[2]:7 1001.0 +(word~) gfx_mode::$53 zp[2]:7 2002.0 +(byte~) gfx_mode::$54 reg byte a 2002.0 +(byte~) gfx_mode::$55 reg byte a 2002.0 +(byte~) gfx_mode::$56 reg byte a 2002.0 +(byte~) gfx_mode::$58 reg byte a 2002.0 +(byte~) gfx_mode::$59 reg byte a 2002.0 +(byte~) gfx_mode::$60 reg byte a 2002.0 +(byte~) gfx_mode::$61 reg byte a 2002.0 +(byte~) gfx_mode::$62 reg byte a 2002.0 +(byte~) gfx_mode::$63 reg byte a 2002.0 +(byte~) gfx_mode::$64 reg byte a 2002.0 +(byte~) gfx_mode::$65 reg byte a 2002.0 (label) gfx_mode::@1 (label) gfx_mode::@10 (label) gfx_mode::@11 @@ -970,84 +970,84 @@ (label) gfx_mode::@9 (label) gfx_mode::@return (byte*) gfx_mode::col -(byte*) gfx_mode::col#1 col zp[2]:5 350.5 -(byte*) gfx_mode::col#2 col zp[2]:5 1552.0 -(byte*) gfx_mode::col#3 col zp[2]:5 202.0 +(byte*) gfx_mode::col#1 col zp[2]:5 350000.5 +(byte*) gfx_mode::col#2 col zp[2]:5 1550002.0 +(byte*) gfx_mode::col#3 col zp[2]:5 200002.0 (byte) gfx_mode::cx -(byte) gfx_mode::cx#1 reg byte x 1501.5 -(byte) gfx_mode::cx#2 reg byte x 500.5 +(byte) gfx_mode::cx#1 reg byte x 1500001.5 +(byte) gfx_mode::cx#2 reg byte x 500000.5 (byte) gfx_mode::cy -(byte) gfx_mode::cy#1 cy zp[1]:13 151.5 -(byte) gfx_mode::cy#4 cy zp[1]:13 28.857142857142858 +(byte) gfx_mode::cy#1 cy zp[1]:13 150001.5 +(byte) gfx_mode::cy#4 cy zp[1]:13 28571.714285714286 (byte) gfx_mode::dtv_control -(byte) gfx_mode::dtv_control#10 reg byte x 4.0 -(byte) gfx_mode::dtv_control#11 reg byte x 4.0 -(byte) gfx_mode::dtv_control#12 reg byte x 6.0 -(byte) gfx_mode::dtv_control#13 reg byte x 4.0 -(byte) gfx_mode::dtv_control#14 reg byte x 2.0 -(byte) gfx_mode::dtv_control#15 reg byte x 4.0 -(byte) gfx_mode::dtv_control#2 reg byte x 4.0 -(byte) gfx_mode::dtv_control#3 reg byte x 4.0 -(byte) gfx_mode::dtv_control#4 reg byte x 4.0 -(byte) gfx_mode::dtv_control#5 reg byte x 4.0 -(byte) gfx_mode::dtv_control#6 reg byte x 4.0 +(byte) gfx_mode::dtv_control#10 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#11 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#12 reg byte x 3003.0 +(byte) gfx_mode::dtv_control#13 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#14 reg byte x 1001.0 +(byte) gfx_mode::dtv_control#15 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#2 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#3 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#4 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#5 reg byte x 2002.0 +(byte) gfx_mode::dtv_control#6 reg byte x 2002.0 (byte) gfx_mode::i -(byte) gfx_mode::i#1 reg byte x 151.5 -(byte) gfx_mode::i#2 reg byte x 202.0 +(byte) gfx_mode::i#1 reg byte x 150001.5 +(byte) gfx_mode::i#2 reg byte x 200002.0 (byte) gfx_mode::j -(byte) gfx_mode::j#1 reg byte x 151.5 -(byte) gfx_mode::j#2 reg byte x 202.0 +(byte) gfx_mode::j#1 reg byte x 150001.5 +(byte) gfx_mode::j#2 reg byte x 200002.0 (byte) gfx_mode::keyboard_event -(byte) gfx_mode::keyboard_event#0 reg byte a 202.0 +(byte) gfx_mode::keyboard_event#0 reg byte a 200002.0 (dword) gfx_mode::plane_a -(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 1.0 +(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 500.5 (byte) gfx_mode::plane_a_offs -(byte) gfx_mode::plane_a_offs#0 reg byte x 0.8 +(byte) gfx_mode::plane_a_offs#0 reg byte x 400.4 (dword) gfx_mode::plane_b -(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 1.0 +(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 500.5 (byte) gfx_mode::plane_b_offs -(byte) gfx_mode::plane_b_offs#0 reg byte x 0.8 +(byte) gfx_mode::plane_b_offs#0 reg byte x 400.4 (byte*) gfx_mode::vic_colors -(byte*) gfx_mode::vic_colors#0 vic_colors zp[2]:16 4.0 -(byte*) gfx_mode::vic_colors#1 vic_colors zp[2]:16 420.59999999999997 -(byte*) gfx_mode::vic_colors#2 vic_colors zp[2]:16 1034.6666666666667 -(byte*) gfx_mode::vic_colors#3 vic_colors zp[2]:16 204.0 +(byte*) gfx_mode::vic_colors#0 vic_colors zp[2]:16 2002.0 +(byte*) gfx_mode::vic_colors#1 vic_colors zp[2]:16 420000.60000000003 +(byte*) gfx_mode::vic_colors#2 vic_colors zp[2]:16 1033334.6666666667 +(byte*) gfx_mode::vic_colors#3 vic_colors zp[2]:16 201003.0 (byte) gfx_mode::vic_control -(byte) gfx_mode::vic_control#2 reg byte x 4.0 -(byte) gfx_mode::vic_control#4 reg byte x 6.0 -(byte) gfx_mode::vic_control#5 reg byte x 2.0 +(byte) gfx_mode::vic_control#2 reg byte x 2002.0 +(byte) gfx_mode::vic_control#4 reg byte x 3003.0 +(byte) gfx_mode::vic_control#5 reg byte x 1001.0 (byte) gfx_mode::vic_control2 -(byte) gfx_mode::vic_control2#2 reg byte a 2.0 +(byte) gfx_mode::vic_control2#2 reg byte a 1001.0 (byte()) keyboard_event_get() (label) keyboard_event_get::@1 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte a 4.0 -(byte) keyboard_event_get::return#2 reg byte a 26.25 -(byte) keyboard_event_get::return#3 reg byte a 202.0 -(byte) keyboard_event_get::return#4 reg byte a 4.0 +(byte) keyboard_event_get::return#1 reg byte a 2.00000002E8 +(byte) keyboard_event_get::return#2 reg byte a 2.752500075E7 +(byte) keyboard_event_get::return#3 reg byte a 200002.0 +(byte) keyboard_event_get::return#4 reg byte a 2.0000002E7 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 reg byte a 4.0 -(byte~) keyboard_event_pressed::$1 reg byte a 4.0 +(byte~) keyboard_event_pressed::$0 reg byte a 2.000000002E9 +(byte~) keyboard_event_pressed::$1 reg byte a 2.000000002E9 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#4 keycode zp[1]:15 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#4 keycode zp[1]:15 6.666666673333334E8 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 reg byte a 4.0 -(byte) keyboard_event_pressed::return#1 reg byte a 4.0 -(byte) keyboard_event_pressed::return#10 reg byte a 1.6666666666666665 -(byte) keyboard_event_pressed::return#2 reg byte a 4.0 -(byte) keyboard_event_pressed::return#3 reg byte a 4.0 +(byte) keyboard_event_pressed::return#0 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#1 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#10 reg byte a 2.333333341666667E8 +(byte) keyboard_event_pressed::return#2 reg byte a 2.00000002E8 +(byte) keyboard_event_pressed::return#3 reg byte a 2.00000002E8 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:33 2.0 +(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:33 1.000000001E9 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 reg byte a 4.0 -(byte~) keyboard_event_scan::$15 reg byte a 200002.0 -(byte~) keyboard_event_scan::$16 reg byte a 200002.0 -(byte~) keyboard_event_scan::$23 reg byte a 200002.0 -(byte~) keyboard_event_scan::$3 reg byte a 4.0 -(byte~) keyboard_event_scan::$6 reg byte a 4.0 -(byte~) keyboard_event_scan::$9 reg byte a 4.0 +(byte~) keyboard_event_scan::$0 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$15 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$16 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$23 reg byte a 2.0000000000002E13 +(byte~) keyboard_event_scan::$3 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$6 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$9 reg byte a 2.00000002E8 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -1073,54 +1073,54 @@ (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 150001.5 -(byte) keyboard_event_scan::col#2 reg byte x 28571.714285714286 +(byte) keyboard_event_scan::col#1 reg byte x 1.50000000000015E13 +(byte) keyboard_event_scan::col#2 reg byte x 2.857142857143143E12 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 200002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2.0000000000002E13 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp[1]:34 20002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp[1]:34 31538.846153846156 -(byte) keyboard_event_scan::keycode#11 keycode zp[1]:34 5000.5 -(byte) keyboard_event_scan::keycode#13 keycode zp[1]:34 10001.0 -(byte) keyboard_event_scan::keycode#14 keycode zp[1]:34 52500.75 +(byte) keyboard_event_scan::keycode#1 keycode zp[1]:34 2.000000000002E12 +(byte) keyboard_event_scan::keycode#10 keycode zp[1]:34 3.1538461538465386E12 +(byte) keyboard_event_scan::keycode#11 keycode zp[1]:34 5.000000000005E11 +(byte) keyboard_event_scan::keycode#13 keycode zp[1]:34 1.000000000001E12 +(byte) keyboard_event_scan::keycode#14 keycode zp[1]:34 5.25000000000075E12 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp[1]:14 15001.5 -(byte) keyboard_event_scan::row#2 row zp[1]:14 6000.24 +(byte) keyboard_event_scan::row#1 row zp[1]:14 1.5000000000015E12 +(byte) keyboard_event_scan::row#2 row zp[1]:14 6.0000000000024E11 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:22 12778.055555555557 +(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:22 1.2777777777780554E12 (const byte*) keyboard_events[(number) 8] = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp[1]:2 200002.0 -(byte) keyboard_events_size#100 keyboard_events_size zp[1]:2 882.6176470588235 -(byte) keyboard_events_size#105 keyboard_events_size zp[1]:2 102001.2 -(byte) keyboard_events_size#106 keyboard_events_size zp[1]:2 4286.428571428572 -(byte) keyboard_events_size#18 keyboard_events_size zp[1]:2 81000.90000000001 -(byte) keyboard_events_size#2 keyboard_events_size zp[1]:2 200002.0 -(byte) keyboard_events_size#24 keyboard_events_size zp[1]:2 6.766666666666667 -(byte) keyboard_events_size#27 keyboard_events_size zp[1]:2 0.3333333333333333 -(byte) keyboard_events_size#4 keyboard_events_size zp[1]:2 3.0 -(byte) keyboard_events_size#47 keyboard_events_size zp[1]:2 65.05882352941177 -(byte) keyboard_events_size#97 keyboard_events_size zp[1]:2 105.0 +(byte) keyboard_events_size#1 keyboard_events_size zp[1]:2 2.0000000000002E13 +(byte) keyboard_events_size#100 keyboard_events_size zp[1]:2 8.824411764723529E10 +(byte) keyboard_events_size#105 keyboard_events_size zp[1]:2 1.02000000000012E13 +(byte) keyboard_events_size#106 keyboard_events_size zp[1]:2 4.285857142862857E11 +(byte) keyboard_events_size#18 keyboard_events_size zp[1]:2 8.100000000000898E12 +(byte) keyboard_events_size#2 keyboard_events_size zp[1]:2 2.0000000000002E13 +(byte) keyboard_events_size#24 keyboard_events_size zp[1]:2 1117778.3666666667 +(byte) keyboard_events_size#27 keyboard_events_size zp[1]:2 28.25641025641026 +(byte) keyboard_events_size#4 keyboard_events_size zp[1]:2 1.500000015E8 +(byte) keyboard_events_size#47 keyboard_events_size zp[1]:2 653000.2352941177 +(byte) keyboard_events_size#97 keyboard_events_size zp[1]:2 1.10100003E8 (void()) keyboard_init() (label) keyboard_init::@return (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 3334.333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.666666666667333E12 +(byte) keyboard_matrix_read::return#2 reg byte a 2.000000000002E12 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.1000000000002E13 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (byte) keyboard_modifiers -(byte) keyboard_modifiers#18 reg byte x 0.8 -(byte) keyboard_modifiers#19 reg byte x 1.6 -(byte) keyboard_modifiers#20 reg byte x 1.6 -(byte) keyboard_modifiers#21 reg byte x 0.7272727272727273 -(byte) keyboard_modifiers#3 reg byte x 4.0 -(byte) keyboard_modifiers#4 reg byte x 4.0 -(byte) keyboard_modifiers#5 reg byte x 4.0 +(byte) keyboard_modifiers#18 reg byte x 4.00000004E7 +(byte) keyboard_modifiers#19 reg byte x 8.00000008E7 +(byte) keyboard_modifiers#20 reg byte x 8.00000008E7 +(byte) keyboard_modifiers#21 reg byte x 2.0000000363636363E7 +(byte) keyboard_modifiers#3 reg byte x 2.00000002E8 +(byte) keyboard_modifiers#4 reg byte x 2.00000002E8 +(byte) keyboard_modifiers#5 reg byte x 2.00000002E8 (const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) } (void()) main() (label) main::@1 @@ -1135,16 +1135,16 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 202.0 -(byte*) memset::dst#2 dst zp[2]:16 135.33333333333331 -(byte*) memset::dst#4 dst zp[2]:16 4.0 +(byte*) memset::dst#1 dst zp[2]:16 2.0000002E7 +(byte*) memset::dst#2 dst zp[2]:16 1.3366668333333332E7 +(byte*) memset::dst#4 dst zp[2]:16 200002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:31 17.166666666666664 +(byte*) memset::end#0 end zp[2]:31 1683333.6666666665 (word) memset::num (const word) memset::num#0 num = (word) $3e8 (void*) memset::return (void*) memset::str -(void*) memset::str#0 str zp[2]:16 0.6666666666666666 +(void*) memset::str#0 str zp[2]:16 3333.6666666666665 (const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 } @@ -1157,19 +1157,19 @@ (const byte*) preset_stdchar[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) preset_twoplane[] = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 2002.0 -(byte*) print_char_cursor#20 print_char_cursor zp[2]:5 821.0 -(byte*) print_char_cursor#22 print_char_cursor zp[2]:5 102.0 -(byte*) print_char_cursor#38 print_char_cursor zp[2]:5 572.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#68 print_char_cursor zp[2]:5 202.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 2.0000002E7 +(byte*) print_char_cursor#20 print_char_cursor zp[2]:5 8200001.0 +(byte*) print_char_cursor#22 print_char_cursor zp[2]:5 1005001.5 +(byte*) print_char_cursor#38 print_char_cursor zp[2]:5 1.4328571434285712E9 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:5 20002.0 +(byte*) print_char_cursor#68 print_char_cursor zp[2]:5 2000002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#2 print_line_cursor zp[2]:7 8.749999999999998 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:7 2004.0 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:7 641.0 +(byte*) print_line_cursor#2 print_line_cursor zp[2]:7 917500.25 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:7 2.0010000003E10 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:7 6.000400001E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1177,18 +1177,18 @@ (void()) print_set_screen((byte*) print_set_screen::screen) (label) print_set_screen::@return (byte*) print_set_screen::screen -(byte*) print_set_screen::screen#2 screen zp[2]:7 0.26666666666666666 +(byte*) print_set_screen::screen#2 screen zp[2]:7 1333.4666666666667 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (label) print_str_at::@1 (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#0 at zp[2]:5 1001.0 -(byte*) print_str_at::at#2 at zp[2]:5 1001.0 +(byte*) print_str_at::at#0 at zp[2]:5 1.0000000001E10 +(byte*) print_str_at::at#2 at zp[2]:5 1.0000000001E10 (byte*) print_str_at::str -(byte*) print_str_at::str#0 str zp[2]:16 2002.0 -(byte*) print_str_at::str#1 str zp[2]:16 2.0 -(byte*) print_str_at::str#2 str zp[2]:16 1001.5 +(byte*) print_str_at::str#0 str zp[2]:16 2.0000000002E10 +(byte*) print_str_at::str#1 str zp[2]:16 5500001.0 +(byte*) print_str_at::str#2 str zp[2]:16 1.000250000125E10 (void()) print_str_lines((byte*) print_str_lines::str) (label) print_str_lines::@1 (label) print_str_lines::@2 @@ -1198,12 +1198,12 @@ (label) print_str_lines::@6 (label) print_str_lines::@return (byte) print_str_lines::ch -(byte) print_str_lines::ch#0 reg byte a 667.3333333333334 +(byte) print_str_lines::ch#0 reg byte a 6666667.333333333 (byte*) print_str_lines::str -(byte*) print_str_lines::str#0 str zp[2]:16 233.66666666666669 -(byte*) print_str_lines::str#3 str zp[2]:16 152.5 -(byte*) print_str_lines::str#4 str zp[2]:16 1552.0 -(byte*) print_str_lines::str#5 str zp[2]:16 1.0 +(byte*) print_str_lines::str#0 str zp[2]:16 2333333.666666667 +(byte*) print_str_lines::str#3 str zp[2]:16 1505002.0 +(byte*) print_str_lines::str#4 str zp[2]:16 1.5500002E7 +(byte*) print_str_lines::str#5 str zp[2]:16 5000.5 (void()) render_preset_name((byte) render_preset_name::idx) (label) render_preset_name::@1 (label) render_preset_name::@10 @@ -1219,14 +1219,14 @@ (label) render_preset_name::@9 (label) render_preset_name::@return (byte) render_preset_name::idx -(byte) render_preset_name::idx#0 reg byte a 4.0 -(byte) render_preset_name::idx#1 reg byte a 202.0 -(byte) render_preset_name::idx#10 reg byte a 11.363636363636362 +(byte) render_preset_name::idx#0 reg byte a 2002.0 +(byte) render_preset_name::idx#1 reg byte a 200002.0 +(byte) render_preset_name::idx#10 reg byte a 1009183.0000000002 (byte*) render_preset_name::name (const byte*) render_preset_name::name#1 name_1 = (byte*) "Standard Charset " (const byte*) render_preset_name::name#10 name_10 = (byte*) "Sixs Fred 2 " (const byte*) render_preset_name::name#11 name_11 = (byte*) "8bpp Pixel Cell " -(byte*) render_preset_name::name#13 name zp[2]:16 2.0 +(byte*) render_preset_name::name#13 name zp[2]:16 1000001.0 (const byte*) render_preset_name::name#2 name_2 = (byte*) "Extended Color Charset " (const byte*) render_preset_name::name#3 name_3 = (byte*) "Standard Bitmap " (const byte*) render_preset_name::name#4 name_4 = (byte*) "Multicolor Bitmap " @@ -1268,11 +1268,11 @@ reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] -reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] -reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] +reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] +reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:13 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 gfx_mode::cy#4 gfx_mode::cy#1 ] -reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] @@ -1305,7 +1305,7 @@ reg byte a [ gfx_mode::$42 ] reg byte a [ gfx_mode::$43 ] reg byte a [ gfx_mode::$44 ] reg byte a [ gfx_mode::$45 ] -zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +zp[1]:19 [ gfx_mode::$50 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte a [ get_vic_charset::idx#0 ] reg byte a [ gfx_mode::$54 ] reg byte a [ gfx_mode::$55 ] @@ -1343,7 +1343,7 @@ reg byte a [ form_mode::$11 ] reg byte a [ apply_preset::idx#0 ] reg byte y [ form_field_ptr::y#0 ] zp[2]:20 [ form_field_ptr::line#0 gfx_mode::$24 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] -zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ form_control::$12 ] reg byte a [ keyboard_event_get::return#4 ] reg byte a [ form_control::key_event#0 ] @@ -1362,20 +1362,20 @@ reg byte a [ gfx_init_plane_horisontal2::row#0 ] reg byte a [ gfx_init_plane_horisontal::$2 ] reg byte a [ gfx_init_plane_charset8::$2 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] -reg byte x [ bitmap_line::x1#0 ] +reg byte x [ bitmap_line::y0#0 ] reg byte y [ bitmap_line::yd#2 ] reg byte y [ bitmap_line::yd#1 ] reg byte y [ bitmap_line::yd#10 ] reg byte y [ bitmap_line::yd#11 ] -reg byte x [ bitmap_line_xdyi::$6 ] +reg byte a [ bitmap_line_xdyi::$6 ] zp[2]:29 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 gfx_init_plane_8bppchunky::$5 form_field_ptr::return#0 form_field_ptr::return#3 form_control::field#0 gfx_mode::$26 ] zp[2]:31 [ bitmap_plot::plotter_y#0 memset::end#0 gfx_mode::$38 ] reg byte a [ bitmap_plot::$1 ] -reg byte a [ bitmap_line_ydxi::$6 ] -reg byte x [ bitmap_line_xdyd::$6 ] -reg byte a [ bitmap_line_ydxd::$6 ] +reg byte x [ bitmap_line_ydxi::$6 ] +reg byte a [ bitmap_line_xdyd::$6 ] +reg byte x [ bitmap_line_ydxd::$6 ] reg byte a [ bitmap_init::$0 ] -zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +zp[1]:33 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 gfx_init_charset::c#4 gfx_init_charset::c#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] reg byte a [ bitmap_init::$7 ] reg byte a [ bitmap_init::$8 ] reg byte a [ bitmap_init::$9 ] diff --git a/src/test/ref/c64dtv-gfxmodes.asm b/src/test/ref/c64dtv-gfxmodes.asm index 63e26fb48..db6f5cd2d 100644 --- a/src/test/ref/c64dtv-gfxmodes.asm +++ b/src/test/ref/c64dtv-gfxmodes.asm @@ -96,22 +96,8 @@ .const KEY_1 = $38 .const KEY_2 = $3b .const KEY_SPACE = $3c - .label print_char_cursor = 7 - // The value of the DTV control register - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - .label dtv_control = 2 - .label print_line_cursor = 9 + .label print_char_cursor = 6 + .label print_line_cursor = 8 main: { // asm sei @@ -135,7 +121,7 @@ main: { menu: { .label SCREEN = $8000 .label CHARSET = $9800 - .label c = 7 + .label c = 6 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // Charset ROM // DTV Graphics Bank @@ -367,9 +353,9 @@ menu: { mode_8bppchunkybmm: { // 8BPP Chunky Bitmap (contains 8bpp pixels) .const PLANEB = $20000 - .label __7 = $f - .label gfxb = 9 - .label x = 7 + .label __7 = $d + .label gfxb = 8 + .label x = 6 .label y = 2 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_COLORRAM_OFF lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF @@ -483,14 +469,15 @@ mode_8bppchunkybmm: { jsr dtvSetCpuBankSegment1 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF - sta.z dtv_control + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF jsr mode_ctrl // } rts } // Allow the user to control the DTV graphics using different keys mode_ctrl: { + // DTV Graphics Mode - Reset + .label ctrl = 3 __b1: // Wait for the raster __b2: @@ -510,7 +497,7 @@ mode_ctrl: { __b4: // ctrl = dtv_control // Read the current control byte - ldx.z dtv_control + stx.z ctrl // keyboard_key_pressed(KEY_L) ldy #KEY_L jsr keyboard_key_pressed @@ -519,9 +506,9 @@ mode_ctrl: { cmp #0 beq __b5 // ctrl = ctrl|DTV_LINEAR - txa - ora #DTV_LINEAR - tax + lda #DTV_LINEAR + ora.z ctrl + sta.z ctrl __b5: // keyboard_key_pressed(KEY_H) ldy #KEY_H @@ -531,9 +518,9 @@ mode_ctrl: { cmp #0 beq __b6 // ctrl = ctrl|DTV_HIGHCOLOR - txa - ora #DTV_HIGHCOLOR - tax + lda #DTV_HIGHCOLOR + ora.z ctrl + sta.z ctrl __b6: // keyboard_key_pressed(KEY_O) ldy #KEY_O @@ -543,9 +530,9 @@ mode_ctrl: { cmp #0 beq __b7 // ctrl = ctrl|DTV_OVERSCAN - txa - ora #DTV_OVERSCAN - tax + lda #DTV_OVERSCAN + ora.z ctrl + sta.z ctrl __b7: // keyboard_key_pressed(KEY_B) ldy #KEY_B @@ -555,9 +542,9 @@ mode_ctrl: { cmp #0 beq __b8 // ctrl = ctrl|DTV_BORDER_OFF - txa - ora #DTV_BORDER_OFF - tax + lda #DTV_BORDER_OFF + ora.z ctrl + sta.z ctrl __b8: // keyboard_key_pressed(KEY_U) ldy #KEY_U @@ -567,9 +554,9 @@ mode_ctrl: { cmp #0 beq __b9 // ctrl = ctrl|DTV_CHUNKY - txa - ora #DTV_CHUNKY - tax + lda #DTV_CHUNKY + ora.z ctrl + sta.z ctrl __b9: // keyboard_key_pressed(KEY_C) ldy #KEY_C @@ -579,9 +566,9 @@ mode_ctrl: { cmp #0 beq __b10 // ctrl = ctrl|DTV_COLORRAM_OFF - txa - ora #DTV_COLORRAM_OFF - tax + lda #DTV_COLORRAM_OFF + ora.z ctrl + sta.z ctrl __b10: // keyboard_key_pressed(KEY_0) ldy #KEY_0 @@ -590,17 +577,20 @@ mode_ctrl: { // if(keyboard_key_pressed(KEY_0)!=0) cmp #0 beq __b11 - ldx #0 + lda #0 + sta.z ctrl __b11: // if(ctrl != dtv_control) - cpx.z dtv_control + cpx.z ctrl beq __b1 // dtv_control = ctrl - stx.z dtv_control + ldx.z ctrl // *DTV_CONTROL = ctrl - stx DTV_CONTROL + txa + sta DTV_CONTROL // *BORDERCOL = ctrl - stx BORDERCOL + txa + sta BORDERCOL jmp __b1 } // Determines whether a specific key is currently pressed by accessing the matrix directly @@ -609,7 +599,7 @@ mode_ctrl: { // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed // keyboard_key_pressed(byte register(Y) key) keyboard_key_pressed: { - .label colidx = $b + .label colidx = $13 // colidx = key&7 tya and #7 @@ -675,16 +665,16 @@ mode_8bpppixelcell: { // 8BPP Pixel Cell Charset (contains 256 64 byte chars) .label PLANEB = $4000 .label CHARGEN = $d000 - .label __3 = $c + .label __3 = $a // Screen Chars for Plane A (screen) - 16x16 repeating - .label gfxa = 7 - .label ay = 4 - .label bits = 3 - .label chargen = 9 - .label gfxb = 5 - .label col = $d - .label cr = $13 - .label ch = $e + .label gfxa = 6 + .label ay = 2 + .label bits = $11 + .label chargen = 8 + .label gfxb = 4 + .label col = $13 + .label cr = $c + .label ch = 3 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta DTV_CONTROL @@ -852,8 +842,7 @@ mode_8bpppixelcell: { sta PROCPORT // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY - sta.z dtv_control + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY jsr mode_ctrl // } rts @@ -869,13 +858,13 @@ mode_sixsfred: { .label PLANEB = $6000 .label COLORS = $8000 // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = $c // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = $11 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 + .label gfxb = 8 .label by = $13 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR lda #DTV_HIGHCOLOR|DTV_LINEAR @@ -1037,8 +1026,7 @@ mode_sixsfred: { bne __b9 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl // } rts @@ -1057,17 +1045,17 @@ mode_twoplanebitmap: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $c + .label __3 = $a // Color for bits 11 // Colors for bits 01 / 10 - .label col = 7 - .label cy = 3 + .label col = 6 + .label cy = 2 // Graphics for Plane A - horizontal stripes - .label gfxa = 9 - .label ay = $d + .label gfxa = 8 + .label ay = 3 // Graphics for Plane B - vertical stripes - .label gfxb = 5 - .label by = 4 + .label gfxb = 4 + .label by = $c // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL @@ -1244,8 +1232,7 @@ mode_twoplanebitmap: { bne __b12 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl // } rts @@ -1271,16 +1258,16 @@ mode_sixsfred2: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $d + .label __3 = $b // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = 2 // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = 3 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 - .label by = $13 + .label gfxb = 8 + .label by = $c // *DTV_CONTROL = DTV_LINEAR lda #DTV_LINEAR sta DTV_CONTROL @@ -1449,8 +1436,7 @@ mode_sixsfred2: { bne __b9 // mode_ctrl() // Leave control to the user until exit - lda #DTV_LINEAR - sta.z dtv_control + ldx #DTV_LINEAR jsr mode_ctrl // } rts @@ -1473,11 +1459,11 @@ mode_hicolmcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $d + .label __3 = $b // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $e + .label col = 6 + .label ch = 8 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -1589,8 +1575,7 @@ mode_hicolmcchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR - sta.z dtv_control + ldx #DTV_HIGHCOLOR jsr mode_ctrl // } rts @@ -1611,11 +1596,11 @@ mode_hicolecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $13 + .label col = 6 + .label ch = 8 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -1730,8 +1715,7 @@ mode_hicolecmchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR - sta.z dtv_control + ldx #DTV_HIGHCOLOR jsr mode_ctrl // } rts @@ -1748,11 +1732,11 @@ mode_hicolstdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = 3 + .label col = 6 + .label ch = 8 + .label cy = $13 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -1857,8 +1841,7 @@ mode_hicolstdchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #DTV_HIGHCOLOR - sta.z dtv_control + ldx #DTV_HIGHCOLOR jsr mode_ctrl // } rts @@ -1874,11 +1857,11 @@ mode_stdbitmap: { .label SCREEN = $4000 .label BITMAP = $6000 .const lines_cnt = 9 - .label col2 = $13 + .label col2 = $11 // Bitmap Colors - .label ch = 5 - .label cy = 3 - .label l = $15 + .label ch = 4 + .label cy = $13 + .label l = $c // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)BITMAP/$10000) // DTV Graphics Bank lda #0 @@ -1982,8 +1965,7 @@ mode_stdbitmap: { bcc __b8 // mode_ctrl() // Leave control to the user until exit - lda #0 - sta.z dtv_control + ldx #0 jsr mode_ctrl // } rts @@ -1992,9 +1974,9 @@ mode_stdbitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - ldx lines_x+1,y - lda lines_y,y - sta.z bitmap_line.y0 + lda lines_x+1,y + sta.z bitmap_line.x1 + ldx lines_y,y lda lines_y+1,y sta.z bitmap_line.y1 jsr bitmap_line @@ -2005,29 +1987,25 @@ mode_stdbitmap: { lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } // Draw a line on the bitmap -// bitmap_line(byte zp($13) x0, byte register(X) x1, byte zp($14) y0, byte zp($c) y1) +// bitmap_line(byte zp($11) x0, byte zp($12) x1, byte register(X) y0, byte zp($a) y1) bitmap_line: { - .label xd = $e - .label x0 = $13 - .label y0 = $14 - .label y1 = $c + .label xd = $b + .label x0 = $11 + .label x1 = $12 + .label y1 = $a // if(x0>1 lda.z yd lsr sta.z e __b1: // bitmap_plot(x,y) - ldx.z x - ldy.z y + ldy.z x jsr bitmap_plot // x++; inc.z x @@ -2162,7 +2140,7 @@ bitmap_line_xdyi: { cmp.z e bcs __b2 // y++; - inc.z y + inx // e = e - xd lda.z e sec @@ -2170,28 +2148,29 @@ bitmap_line_xdyi: { sta.z e __b2: // x1+1 - ldx.z x1 - inx + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - cpx.z x + cmp.z x bne __b1 // } rts } -// bitmap_plot(byte register(X) x, byte register(Y) y) +// bitmap_plot(byte register(Y) x, byte register(X) y) bitmap_plot: { - .label plotter_x = $f - .label plotter_y = $11 - .label plotter = $f + .label plotter_x = $d + .label plotter_y = $f + .label plotter = $d // plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] } - lda bitmap_plot_xhi,x + lda bitmap_plot_xhi,y sta.z plotter_x+1 - lda bitmap_plot_xlo,x + lda bitmap_plot_xlo,y sta.z plotter_x // plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - lda bitmap_plot_yhi,y + lda bitmap_plot_yhi,x sta.z plotter_y+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta.z plotter_y // plotter_x+plotter_y lda.z plotter @@ -2202,7 +2181,7 @@ bitmap_plot: { adc.z plotter_y+1 sta.z plotter+1 // *plotter | bitmap_plot_bit[x] - lda bitmap_plot_bit,x + lda bitmap_plot_bit,y ldy #0 ora (plotter),y // *plotter = *plotter | bitmap_plot_bit[x] @@ -2210,20 +2189,22 @@ bitmap_plot: { // } rts } -// bitmap_line_ydxi(byte zp(4) y, byte register(X) x, byte zp($c) y1, byte zp($d) yd, byte zp($e) xd) +// bitmap_line_ydxi(byte zp(3) y, byte zp($12) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxi: { - .label y = 4 - .label y1 = $c - .label yd = $d - .label xd = $e - .label e = $b + .label y = 3 + .label x = $12 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // e = xd>>1 lda.z xd lsr sta.z e __b1: // bitmap_plot(x,y) - ldy.z y + ldy.z x + ldx.z y jsr bitmap_plot // y++; inc.z y @@ -2237,7 +2218,7 @@ bitmap_line_ydxi: { cmp.z e bcs __b2 // x++; - inx + inc.z x // e = e - yd lda.z e sec @@ -2245,31 +2226,28 @@ bitmap_line_ydxi: { sta.z e __b2: // y1+1 - lda.z y1 - clc - adc #1 + ldx.z y1 + inx // while (y!=(y1+1)) - cmp.z y + cpx.z y bne __b1 // } rts } -// bitmap_line_xdyd(byte zp(4) x, byte zp($14) y, byte zp($13) x1, byte zp($e) xd, byte zp($b) yd) +// bitmap_line_xdyd(byte zp(2) x, byte register(X) y, byte zp($11) x1, byte zp($b) xd, byte zp($13) yd) bitmap_line_xdyd: { - .label x = 4 - .label y = $14 - .label x1 = $13 - .label xd = $e - .label yd = $b - .label e = $d + .label x = 2 + .label x1 = $11 + .label xd = $b + .label yd = $13 + .label e = 3 // e = yd>>1 lda.z yd lsr sta.z e __b1: // bitmap_plot(x,y) - ldx.z x - ldy.z y + ldy.z x jsr bitmap_plot // x++; inc.z x @@ -2283,7 +2261,7 @@ bitmap_line_xdyd: { cmp.z e bcs __b2 // y--; - dec.z y + dex // e = e - xd lda.z e sec @@ -2291,28 +2269,31 @@ bitmap_line_xdyd: { sta.z e __b2: // x1+1 - ldx.z x1 - inx + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - cpx.z x + cmp.z x bne __b1 // } rts } -// bitmap_line_ydxd(byte zp($d) y, byte register(X) x, byte zp($14) y1, byte zp(4) yd, byte zp($e) xd) +// bitmap_line_ydxd(byte zp(3) y, byte zp($11) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxd: { - .label y = $d - .label y1 = $14 - .label yd = 4 - .label xd = $e - .label e = $b + .label y = 3 + .label x = $11 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // e = xd>>1 lda.z xd lsr sta.z e __b1: // bitmap_plot(x,y) - ldy.z y + ldy.z x + ldx.z y jsr bitmap_plot // y = y++; inc.z y @@ -2326,7 +2307,7 @@ bitmap_line_ydxd: { cmp.z e bcs __b2 // x--; - dex + dec.z x // e = e - yd lda.z e sec @@ -2334,19 +2315,18 @@ bitmap_line_ydxd: { sta.z e __b2: // y1+1 - lda.z y1 - clc - adc #1 + ldx.z y1 + inx // while (y!=(y1+1)) - cmp.z y + cpx.z y bne __b1 // } rts } // Clear all graphics on the bitmap bitmap_clear: { - .label bitmap = 5 - .label y = $e + .label bitmap = 4 + .label y = $b // (byte*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] } lda bitmap_plot_xlo sta.z bitmap @@ -2380,8 +2360,8 @@ bitmap_clear: { } // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { - .label __10 = $14 - .label yoffs = 5 + .label __10 = $12 + .label yoffs = 4 ldy #$80 ldx #0 __b1: @@ -2464,11 +2444,11 @@ mode_mcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $13 + .label __5 = $11 // Char Colors and screen chars - .label col = 5 - .label ch = $f - .label cy = $15 + .label col = 4 + .label ch = $d + .label cy = $c // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -2585,8 +2565,7 @@ mode_mcchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #0 - sta.z dtv_control + ldx #0 jsr mode_ctrl // } rts @@ -2607,11 +2586,11 @@ mode_ecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $14 + .label __5 = $12 // Char Colors and screen chars - .label col = $f - .label ch = 7 - .label cy = $13 + .label col = $d + .label ch = 6 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -2730,8 +2709,7 @@ mode_ecmchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #0 - sta.z dtv_control + ldx #0 jsr mode_ctrl // } rts @@ -2748,11 +2726,11 @@ mode_stdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $15 + .label __5 = $13 // Char Colors and screen chars - .label col = 7 - .label ch = $f - .label cy = $14 + .label col = 6 + .label ch = $d + .label cy = $12 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // DTV Graphics Bank lda #0 @@ -2862,17 +2840,16 @@ mode_stdchar: { bne __b3 // mode_ctrl() // Leave control to the user until exit - lda #0 - sta.z dtv_control + ldx #0 jsr mode_ctrl // } rts } // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. -// print_str_lines(byte* zp($f) str) +// print_str_lines(byte* zp($d) str) print_str_lines: { - .label str = $f + .label str = $d lda #menu.SCREEN @@ -2960,7 +2937,7 @@ memset: { .const num = $3e8 .label str = menu.SCREEN .label end = str+num - .label dst = $f + .label dst = $d lda #str diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log index 8c4ffc6c9..52e0eceaf 100644 --- a/src/test/ref/c64dtv-gfxmodes.log +++ b/src/test/ref/c64dtv-gfxmodes.log @@ -6594,347 +6594,347 @@ Inversing boolean not [692] (bool~) mode_ctrl::$32 ← (byte) mode_ctrl::ctrl#14 Inversing boolean not [1381] (bool~) mode_8bpppixelcell::$10 ← (byte~) mode_8bpppixelcell::$8 == (byte) 0 from [1380] (bool~) mode_8bpppixelcell::$9 ← (byte~) mode_8bpppixelcell::$8 != (byte) 0 Inversing boolean not [1439] (bool~) mode_8bppchunkybmm::$5 ← (byte*) mode_8bppchunkybmm::gfxb#3 != (word) $8000 from [1438] (bool~) mode_8bppchunkybmm::$4 ← (byte*) mode_8bppchunkybmm::gfxb#3 == (word) $8000 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#49 (byte*) print_line_cursor#67 (byte*) print_char_cursor#69 (byte*) print_screen#32 (byte*) print_line_cursor#49 (byte*) print_char_cursor#51 -Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#2 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#31 -Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#7 -Alias (byte*) print_line_cursor#68 = (byte*) print_line_cursor#69 -Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#51 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#53 -Alias (byte*) print_str_lines::str#5 = (byte*) print_str_lines::str#8 (byte*) print_str_lines::str#6 -Alias (byte*) print_line_cursor#1 = (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#3 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#31 (byte*) print_line_cursor#2 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#3 (byte*~) print_ln::$0 (byte*) print_char_cursor#4 (byte*) print_line_cursor#20 (byte*) print_char_cursor#21 (byte*) print_line_cursor#4 (byte*) print_char_cursor#5 -Alias (byte*) print_line_cursor#21 = (byte*) print_screen#9 (byte*) print_screen#8 (byte*) print_line_cursor#5 (byte*) print_char_cursor#6 (byte*) print_char_cursor#22 (byte*) print_line_cursor#6 (byte*) print_char_cursor#7 -Alias (byte*) print_screen#1 = (byte*) print_line_cursor#7 (byte*) print_char_cursor#8 (byte*) print_screen#10 (byte*) print_line_cursor#22 (byte*) print_char_cursor#23 (byte*) print_screen#2 (byte*) print_line_cursor#8 (byte*) print_char_cursor#9 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#22 (byte) keyboard_key_pressed::return#1 -Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$13 -Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 -Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 -Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 -Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 -Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 -Alias (byte) bitmap_line::x1#1 = (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 -Alias (byte) bitmap_line::x0#1 = (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 -Alias (byte) bitmap_line::y0#1 = (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 -Alias (byte) bitmap_line::y1#1 = (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 -Alias (byte) bitmap_line::xd#1 = (byte~) bitmap_line::$11 (byte) bitmap_line::xd#9 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 -Alias (byte) bitmap_line::xd#2 = (byte~) bitmap_line::$1 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 -Alias (byte) bitmap_line::yd#1 = (byte~) bitmap_line::$7 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 -Alias (byte) bitmap_line::yd#2 = (byte~) bitmap_line::$3 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 -Alias (byte) bitmap_line::yd#11 = (byte) bitmap_line::yd#3 (byte~) bitmap_line::$17 (byte) bitmap_line::yd#12 -Alias (byte) bitmap_line::yd#10 = (byte) bitmap_line::yd#4 (byte~) bitmap_line::$13 (byte) bitmap_line::yd#9 -Alias (byte) bitmap_line_xdyi::e#0 = (byte~) bitmap_line_xdyi::$0 -Alias (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#4 -Alias (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#6 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#3 -Alias (byte) bitmap_line_xdyi::x1#3 = (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 -Alias (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::y#4 -Alias (byte) bitmap_line_xdyi::e#1 = (byte~) bitmap_line_xdyi::$2 (byte) bitmap_line_xdyi::e#4 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#7 -Alias (byte) bitmap_line_xdyi::e#2 = (byte~) bitmap_line_xdyi::$5 -Alias (byte) bitmap_line_xdyd::e#0 = (byte~) bitmap_line_xdyd::$0 -Alias (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#4 -Alias (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#6 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#3 -Alias (byte) bitmap_line_xdyd::x1#3 = (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 -Alias (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::y#4 -Alias (byte) bitmap_line_xdyd::e#1 = (byte~) bitmap_line_xdyd::$2 (byte) bitmap_line_xdyd::e#4 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#7 -Alias (byte) bitmap_line_xdyd::e#2 = (byte~) bitmap_line_xdyd::$5 -Alias (byte) bitmap_line_ydxi::e#0 = (byte~) bitmap_line_ydxi::$0 -Alias (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#4 -Alias (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#6 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#3 -Alias (byte) bitmap_line_ydxi::y1#3 = (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 -Alias (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::x#4 -Alias (byte) bitmap_line_ydxi::e#1 = (byte~) bitmap_line_ydxi::$2 (byte) bitmap_line_ydxi::e#4 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#7 -Alias (byte) bitmap_line_ydxi::e#2 = (byte~) bitmap_line_ydxi::$5 -Alias (byte) bitmap_line_ydxd::e#0 = (byte~) bitmap_line_ydxd::$0 -Alias (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#4 -Alias (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#5 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#6 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#3 -Alias (byte) bitmap_line_ydxd::y1#3 = (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 -Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::x#4 -Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8 -Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5 -Alias (byte*) print_screen#12 = (byte*) print_screen#16 (byte*) print_screen#17 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#34 (byte*) print_line_cursor#24 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#36 (byte*) print_char_cursor#25 -Alias (byte) dtv_control#1 = (byte) dtv_control#98 (byte) dtv_control#99 (byte) dtv_control#56 -Alias (byte*) print_screen#11 = (byte*) print_screen#3 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#24 -Alias (byte) dtv_control#0 = (byte) dtv_control#55 -Alias (byte*) print_screen#50 = (byte*) print_screen#65 -Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#84 -Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#84 -Alias (byte) dtv_control#235 = (byte) dtv_control#245 -Alias (byte*) menu::c#2 = (byte*) menu::c#3 -Alias (byte*) print_screen#18 = (byte*) print_screen#51 (byte*) print_screen#34 -Alias (byte*) print_line_cursor#35 = (byte*) print_line_cursor#71 (byte*) print_line_cursor#53 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#71 (byte*) print_char_cursor#55 -Alias (byte) dtv_control#131 = (byte) dtv_control#236 (byte) dtv_control#220 (byte) dtv_control#203 (byte) dtv_control#188 (byte) dtv_control#159 -Alias (byte*) print_screen#13 = (byte*) print_screen#5 (byte*) print_screen#52 (byte*) print_screen#35 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#25 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#26 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#26 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#27 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#28 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#27 -Alias (byte) dtv_control#100 = (byte) dtv_control#160 (byte) dtv_control#101 (byte) dtv_control#133 (byte) dtv_control#161 (byte) dtv_control#134 (byte) dtv_control#162 (byte) dtv_control#135 (byte) dtv_control#102 (byte) dtv_control#163 (byte) dtv_control#136 (byte) dtv_control#103 (byte) dtv_control#164 (byte) dtv_control#137 (byte) dtv_control#104 (byte) dtv_control#165 (byte) dtv_control#138 (byte) dtv_control#105 (byte) dtv_control#166 (byte) dtv_control#139 (byte) dtv_control#106 (byte) dtv_control#167 (byte) dtv_control#140 (byte) dtv_control#107 (byte) dtv_control#168 (byte) dtv_control#141 (byte) dtv_control#108 (byte) dtv_control#169 (byte) dtv_control#142 (byte) dtv_control#109 (byte) dtv_control#170 (byte) dtv_control#143 (byte) dtv_control#110 (byte) dtv_control#171 (byte) dtv_control#132 (byte) dtv_control#111 (byte) dtv_control#112 -Alias (byte*) print_screen#19 = (byte*) print_screen#66 (byte*) print_screen#31 (byte*) print_screen#53 (byte*) print_screen#67 (byte*) print_screen#54 (byte*) print_screen#37 (byte*) print_screen#68 (byte*) print_screen#55 (byte*) print_screen#38 (byte*) print_screen#20 (byte*) print_screen#69 (byte*) print_screen#56 (byte*) print_screen#39 (byte*) print_screen#21 (byte*) print_screen#70 (byte*) print_screen#57 (byte*) print_screen#40 (byte*) print_screen#22 (byte*) print_screen#71 (byte*) print_screen#58 (byte*) print_screen#41 (byte*) print_screen#23 (byte*) print_screen#72 (byte*) print_screen#59 (byte*) print_screen#42 (byte*) print_screen#24 (byte*) print_screen#73 (byte*) print_screen#60 (byte*) print_screen#43 (byte*) print_screen#25 (byte*) print_screen#74 (byte*) print_screen#61 (byte*) print_screen#44 (byte*) print_screen#26 (byte*) print_screen#75 (byte*) print_screen#62 (byte*) print_screen#45 (byte*) print_screen#27 (byte*) print_screen#76 (byte*) print_screen#64 (byte*) print_screen#46 (byte*) print_screen#28 (byte*) print_screen#63 (byte*) print_screen#36 (byte*) print_screen#47 (byte*) print_screen#29 (byte*) print_screen#48 (byte*) print_screen#30 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#85 (byte*) print_line_cursor#48 (byte*) print_line_cursor#72 (byte*) print_line_cursor#86 (byte*) print_line_cursor#73 (byte*) print_line_cursor#55 (byte*) print_line_cursor#87 (byte*) print_line_cursor#74 (byte*) print_line_cursor#56 (byte*) print_line_cursor#37 (byte*) print_line_cursor#88 (byte*) print_line_cursor#75 (byte*) print_line_cursor#57 (byte*) print_line_cursor#38 (byte*) print_line_cursor#89 (byte*) print_line_cursor#76 (byte*) print_line_cursor#58 (byte*) print_line_cursor#39 (byte*) print_line_cursor#90 (byte*) print_line_cursor#77 (byte*) print_line_cursor#59 (byte*) print_line_cursor#40 (byte*) print_line_cursor#91 (byte*) print_line_cursor#78 (byte*) print_line_cursor#60 (byte*) print_line_cursor#41 (byte*) print_line_cursor#92 (byte*) print_line_cursor#79 (byte*) print_line_cursor#61 (byte*) print_line_cursor#42 (byte*) print_line_cursor#93 (byte*) print_line_cursor#80 (byte*) print_line_cursor#62 (byte*) print_line_cursor#43 (byte*) print_line_cursor#94 (byte*) print_line_cursor#81 (byte*) print_line_cursor#63 (byte*) print_line_cursor#44 (byte*) print_line_cursor#95 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 (byte*) print_line_cursor#45 (byte*) print_line_cursor#82 (byte*) print_line_cursor#54 (byte*) print_line_cursor#65 (byte*) print_line_cursor#46 (byte*) print_line_cursor#66 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#50 (byte*) print_char_cursor#72 (byte*) print_char_cursor#86 (byte*) print_char_cursor#73 (byte*) print_char_cursor#57 (byte*) print_char_cursor#87 (byte*) print_char_cursor#74 (byte*) print_char_cursor#58 (byte*) print_char_cursor#39 (byte*) print_char_cursor#88 (byte*) print_char_cursor#75 (byte*) print_char_cursor#59 (byte*) print_char_cursor#40 (byte*) print_char_cursor#89 (byte*) print_char_cursor#76 (byte*) print_char_cursor#60 (byte*) print_char_cursor#41 (byte*) print_char_cursor#90 (byte*) print_char_cursor#77 (byte*) print_char_cursor#61 (byte*) print_char_cursor#42 (byte*) print_char_cursor#91 (byte*) print_char_cursor#78 (byte*) print_char_cursor#62 (byte*) print_char_cursor#43 (byte*) print_char_cursor#92 (byte*) print_char_cursor#79 (byte*) print_char_cursor#63 (byte*) print_char_cursor#44 (byte*) print_char_cursor#93 (byte*) print_char_cursor#80 (byte*) print_char_cursor#64 (byte*) print_char_cursor#45 (byte*) print_char_cursor#94 (byte*) print_char_cursor#81 (byte*) print_char_cursor#65 (byte*) print_char_cursor#46 (byte*) print_char_cursor#95 (byte*) print_char_cursor#83 (byte*) print_char_cursor#66 (byte*) print_char_cursor#47 (byte*) print_char_cursor#82 (byte*) print_char_cursor#56 (byte*) print_char_cursor#67 (byte*) print_char_cursor#48 (byte*) print_char_cursor#68 (byte*) print_char_cursor#49 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#23 -Alias (byte) keyboard_key_pressed::return#24 = (byte) keyboard_key_pressed::return#3 -Alias (byte) dtv_control#2 = (byte) dtv_control#57 -Alias (byte*) print_screen#14 = (byte*) print_screen#6 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#28 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#29 -Alias (byte) dtv_control#3 = (byte) dtv_control#58 -Alias (byte) keyboard_key_pressed::return#25 = (byte) keyboard_key_pressed::return#4 -Alias (byte) dtv_control#4 = (byte) dtv_control#59 -Alias (byte) keyboard_key_pressed::return#26 = (byte) keyboard_key_pressed::return#5 -Alias (byte) dtv_control#5 = (byte) dtv_control#60 -Alias (byte) keyboard_key_pressed::return#27 = (byte) keyboard_key_pressed::return#6 -Alias (byte) dtv_control#6 = (byte) dtv_control#61 -Alias (byte) keyboard_key_pressed::return#28 = (byte) keyboard_key_pressed::return#7 -Alias (byte) dtv_control#62 = (byte) dtv_control#7 -Alias (byte) keyboard_key_pressed::return#29 = (byte) keyboard_key_pressed::return#8 -Alias (byte) dtv_control#63 = (byte) dtv_control#8 -Alias (byte) keyboard_key_pressed::return#30 = (byte) keyboard_key_pressed::return#9 -Alias (byte) dtv_control#64 = (byte) dtv_control#9 -Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#31 -Alias (byte) dtv_control#10 = (byte) dtv_control#65 -Alias (byte) keyboard_key_pressed::return#11 = (byte) keyboard_key_pressed::return#32 -Alias (byte) dtv_control#11 = (byte) dtv_control#66 -Alias (byte) keyboard_key_pressed::return#12 = (byte) keyboard_key_pressed::return#33 -Alias (byte) dtv_control#12 = (byte) dtv_control#67 -Alias (byte) keyboard_key_pressed::return#13 = (byte) keyboard_key_pressed::return#34 -Alias (byte) dtv_control#13 = (byte) dtv_control#68 -Alias (byte) dtv_control#14 = (byte) dtv_control#69 -Alias (byte) dtv_control#113 = (byte) dtv_control#145 (byte) dtv_control#172 (byte) dtv_control#70 (byte) dtv_control#281 (byte) dtv_control#280 -Alias (byte) keyboard_key_pressed::return#14 = (byte) keyboard_key_pressed::return#35 -Alias (byte) keyboard_key_pressed::return#15 = (byte) keyboard_key_pressed::return#36 -Alias (byte) mode_ctrl::ctrl#0 = (byte) mode_ctrl::ctrl#16 (byte) mode_ctrl::ctrl#8 -Alias (byte) dtv_control#16 = (byte) dtv_control#71 -Alias (byte) keyboard_key_pressed::return#16 = (byte) keyboard_key_pressed::return#37 -Alias (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#23 (byte) mode_ctrl::ctrl#9 -Alias (byte) dtv_control#269 = (byte) dtv_control#270 (byte) dtv_control#275 -Alias (byte) mode_ctrl::ctrl#1 = (byte~) mode_ctrl::$7 -Alias (byte) keyboard_key_pressed::return#17 = (byte) keyboard_key_pressed::return#38 -Alias (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#18 (byte) mode_ctrl::ctrl#24 -Alias (byte) dtv_control#255 = (byte) dtv_control#256 (byte) dtv_control#263 -Alias (byte) mode_ctrl::ctrl#2 = (byte~) mode_ctrl::$11 -Alias (byte) keyboard_key_pressed::return#18 = (byte) keyboard_key_pressed::return#39 -Alias (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#19 (byte) mode_ctrl::ctrl#25 -Alias (byte) dtv_control#237 = (byte) dtv_control#238 (byte) dtv_control#246 -Alias (byte) mode_ctrl::ctrl#3 = (byte~) mode_ctrl::$15 -Alias (byte) keyboard_key_pressed::return#19 = (byte) keyboard_key_pressed::return#40 -Alias (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#20 (byte) mode_ctrl::ctrl#26 -Alias (byte) dtv_control#204 = (byte) dtv_control#205 (byte) dtv_control#221 -Alias (byte) mode_ctrl::ctrl#4 = (byte~) mode_ctrl::$19 -Alias (byte) keyboard_key_pressed::return#20 = (byte) keyboard_key_pressed::return#41 -Alias (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#21 (byte) mode_ctrl::ctrl#27 -Alias (byte) dtv_control#173 = (byte) dtv_control#174 (byte) dtv_control#189 -Alias (byte) mode_ctrl::ctrl#5 = (byte~) mode_ctrl::$23 -Alias (byte) keyboard_key_pressed::return#21 = (byte) keyboard_key_pressed::return#42 -Alias (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#28 -Alias (byte) dtv_control#115 = (byte) dtv_control#116 (byte) dtv_control#146 -Alias (byte) mode_ctrl::ctrl#6 = (byte~) mode_ctrl::$27 -Alias (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#15 -Alias (byte) dtv_control#206 = (byte) dtv_control#222 -Alias (byte) mode_stdchar::cy#2 = (byte) mode_stdchar::cy#3 -Alias (byte*) mode_stdchar::col#1 = (byte*) mode_stdchar::col#4 -Alias (byte*) mode_stdchar::ch#1 = (byte*) mode_stdchar::ch#4 -Alias (byte) dtv_control#117 = (byte) dtv_control#147 (byte) dtv_control#175 -Alias (byte) dtv_control#19 = (byte) dtv_control#73 (byte) dtv_control#74 (byte) dtv_control#20 -Alias (byte) dtv_control#207 = (byte) dtv_control#223 -Alias (byte) mode_ecmchar::cy#2 = (byte) mode_ecmchar::cy#3 -Alias (byte*) mode_ecmchar::col#1 = (byte*) mode_ecmchar::col#4 -Alias (byte*) mode_ecmchar::ch#1 = (byte*) mode_ecmchar::ch#4 -Alias (byte) dtv_control#118 = (byte) dtv_control#148 (byte) dtv_control#176 -Alias (byte) dtv_control#22 = (byte) dtv_control#75 (byte) dtv_control#76 (byte) dtv_control#23 -Alias (byte) dtv_control#208 = (byte) dtv_control#224 -Alias (byte) mode_mcchar::cy#2 = (byte) mode_mcchar::cy#3 -Alias (byte*) mode_mcchar::col#1 = (byte*) mode_mcchar::col#4 -Alias (byte*) mode_mcchar::ch#1 = (byte*) mode_mcchar::ch#4 -Alias (byte) dtv_control#119 = (byte) dtv_control#149 (byte) dtv_control#177 -Alias (byte) dtv_control#25 = (byte) dtv_control#77 (byte) dtv_control#78 (byte) dtv_control#26 -Alias (byte) dtv_control#257 = (byte) dtv_control#264 -Alias (byte) mode_stdbitmap::col#0 = (byte~) mode_stdbitmap::$5 -Alias (byte) mode_stdbitmap::col2#0 = (byte~) mode_stdbitmap::$6 -Alias (byte) mode_stdbitmap::cy#2 = (byte) mode_stdbitmap::cy#3 -Alias (byte*) mode_stdbitmap::ch#1 = (byte*) mode_stdbitmap::ch#4 -Alias (byte) dtv_control#178 = (byte) dtv_control#225 (byte) dtv_control#239 (byte) dtv_control#209 (byte) dtv_control#193 -Alias (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#3 (byte) mode_stdbitmap::l#4 -Alias (byte) dtv_control#120 = (byte) dtv_control#194 (byte) dtv_control#150 (byte) dtv_control#179 -Alias (byte) dtv_control#28 = (byte) dtv_control#79 (byte) dtv_control#80 (byte) dtv_control#29 -Alias (byte) dtv_control#210 = (byte) dtv_control#226 -Alias (byte) mode_hicolstdchar::v#0 = (byte~) mode_hicolstdchar::$5 -Alias (byte) mode_hicolstdchar::cy#2 = (byte) mode_hicolstdchar::cy#3 -Alias (byte*) mode_hicolstdchar::col#1 = (byte*) mode_hicolstdchar::col#4 -Alias (byte*) mode_hicolstdchar::ch#1 = (byte*) mode_hicolstdchar::ch#4 -Alias (byte) dtv_control#121 = (byte) dtv_control#151 (byte) dtv_control#180 -Alias (byte) dtv_control#31 = (byte) dtv_control#81 (byte) dtv_control#82 (byte) dtv_control#32 -Alias (byte) dtv_control#211 = (byte) dtv_control#227 -Alias (byte) mode_hicolecmchar::v#0 = (byte~) mode_hicolecmchar::$5 -Alias (byte) mode_hicolecmchar::cy#2 = (byte) mode_hicolecmchar::cy#3 -Alias (byte*) mode_hicolecmchar::col#1 = (byte*) mode_hicolecmchar::col#4 -Alias (byte*) mode_hicolecmchar::ch#1 = (byte*) mode_hicolecmchar::ch#4 -Alias (byte) dtv_control#122 = (byte) dtv_control#152 (byte) dtv_control#181 -Alias (byte) dtv_control#34 = (byte) dtv_control#83 (byte) dtv_control#84 (byte) dtv_control#35 -Alias (byte) dtv_control#212 = (byte) dtv_control#228 -Alias (byte) mode_hicolmcchar::v#0 = (byte~) mode_hicolmcchar::$5 -Alias (byte) mode_hicolmcchar::cy#2 = (byte) mode_hicolmcchar::cy#3 -Alias (byte*) mode_hicolmcchar::col#1 = (byte*) mode_hicolmcchar::col#4 -Alias (byte*) mode_hicolmcchar::ch#1 = (byte*) mode_hicolmcchar::ch#4 -Alias (byte) dtv_control#123 = (byte) dtv_control#153 (byte) dtv_control#182 -Alias (byte) dtv_control#37 = (byte) dtv_control#85 (byte) dtv_control#86 (byte) dtv_control#38 -Alias (byte) dtv_control#289 = (byte) dtv_control#290 -Alias (byte) mode_twoplanebitmap::cy#2 = (byte) mode_twoplanebitmap::cy#3 -Alias (byte*) mode_twoplanebitmap::col#1 = (byte*) mode_twoplanebitmap::col#4 -Alias (byte) dtv_control#271 = (byte) dtv_control#276 (byte) dtv_control#282 -Alias (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#5 (byte*) mode_twoplanebitmap::gfxa#4 -Alias (byte) mode_twoplanebitmap::ax#3 = (byte) mode_twoplanebitmap::ax#4 (byte) mode_twoplanebitmap::ax#5 -Alias (byte) mode_twoplanebitmap::ay#2 = (byte) mode_twoplanebitmap::ay#7 (byte) mode_twoplanebitmap::ay#6 -Alias (byte) dtv_control#248 = (byte) dtv_control#249 (byte) dtv_control#258 -Alias (byte) mode_twoplanebitmap::ay#3 = (byte) mode_twoplanebitmap::ay#4 -Alias (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#8 -Alias (byte) dtv_control#213 = (byte) dtv_control#229 (byte) dtv_control#240 -Alias (byte) mode_twoplanebitmap::by#2 = (byte) mode_twoplanebitmap::by#3 -Alias (byte*) mode_twoplanebitmap::gfxb#1 = (byte*) mode_twoplanebitmap::gfxb#4 -Alias (byte) dtv_control#124 = (byte) dtv_control#154 (byte) dtv_control#183 -Alias (byte) dtv_control#40 = (byte) dtv_control#87 (byte) dtv_control#88 (byte) dtv_control#41 -Alias (byte) dtv_control#283 = (byte) dtv_control#287 -Alias (byte) mode_sixsfred::cy#2 = (byte) mode_sixsfred::cy#3 -Alias (byte*) mode_sixsfred::col#1 = (byte*) mode_sixsfred::col#4 -Alias (byte) dtv_control#259 = (byte) dtv_control#266 (byte) dtv_control#272 -Alias (byte) mode_sixsfred::row#0 = (byte~) mode_sixsfred::$7 -Alias (byte) mode_sixsfred::ay#2 = (byte) mode_sixsfred::ay#3 -Alias (byte*) mode_sixsfred::gfxa#1 = (byte*) mode_sixsfred::gfxa#4 -Alias (byte) dtv_control#214 = (byte) dtv_control#230 (byte) dtv_control#241 -Alias (byte) mode_sixsfred::by#2 = (byte) mode_sixsfred::by#3 -Alias (byte*) mode_sixsfred::gfxb#1 = (byte*) mode_sixsfred::gfxb#4 -Alias (byte) dtv_control#125 = (byte) dtv_control#155 (byte) dtv_control#184 -Alias (byte) dtv_control#43 = (byte) dtv_control#89 (byte) dtv_control#90 (byte) dtv_control#44 -Alias (byte) dtv_control#284 = (byte) dtv_control#288 -Alias (byte) mode_sixsfred2::cy#2 = (byte) mode_sixsfred2::cy#3 -Alias (byte*) mode_sixsfred2::col#1 = (byte*) mode_sixsfred2::col#4 -Alias (byte) dtv_control#260 = (byte) dtv_control#267 (byte) dtv_control#273 -Alias (byte) mode_sixsfred2::row#0 = (byte~) mode_sixsfred2::$9 -Alias (byte) mode_sixsfred2::ay#2 = (byte) mode_sixsfred2::ay#3 -Alias (byte*) mode_sixsfred2::gfxa#1 = (byte*) mode_sixsfred2::gfxa#4 -Alias (byte) dtv_control#215 = (byte) dtv_control#231 (byte) dtv_control#242 -Alias (byte) mode_sixsfred2::by#2 = (byte) mode_sixsfred2::by#3 -Alias (byte*) mode_sixsfred2::gfxb#1 = (byte*) mode_sixsfred2::gfxb#4 -Alias (byte) dtv_control#126 = (byte) dtv_control#156 (byte) dtv_control#185 -Alias (byte) dtv_control#46 = (byte) dtv_control#91 (byte) dtv_control#92 (byte) dtv_control#47 -Alias (byte) dtv_control#279 = (byte) dtv_control#285 -Alias (byte) mode_8bpppixelcell::ay#2 = (byte) mode_8bpppixelcell::ay#3 -Alias (byte*) mode_8bpppixelcell::gfxa#1 = (byte*) mode_8bpppixelcell::gfxa#4 -Alias (byte) dtv_control#252 = (byte) dtv_control#261 (byte) dtv_control#268 -Alias (byte) mode_8bpppixelcell::bits#1 = (byte~) mode_8bpppixelcell::$11 -Alias (byte) mode_8bpppixelcell::col#3 = (byte) mode_8bpppixelcell::col#4 (byte) mode_8bpppixelcell::c#1 -Alias (byte*) mode_8bpppixelcell::gfxb#3 = (byte*) mode_8bpppixelcell::gfxb#4 -Alias (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#4 -Alias (byte) mode_8bpppixelcell::cp#3 = (byte) mode_8bpppixelcell::cp#4 -Alias (byte) mode_8bpppixelcell::cr#4 = (byte) mode_8bpppixelcell::cr#5 -Alias (byte*) mode_8bpppixelcell::chargen#7 = (byte*) mode_8bpppixelcell::chargen#8 -Alias (byte) mode_8bpppixelcell::ch#5 = (byte) mode_8bpppixelcell::ch#6 -Alias (byte) dtv_control#216 = (byte) dtv_control#217 -Alias (byte) mode_8bpppixelcell::cr#2 = (byte) mode_8bpppixelcell::cr#3 -Alias (byte*) mode_8bpppixelcell::chargen#3 = (byte*) mode_8bpppixelcell::chargen#6 (byte*) mode_8bpppixelcell::chargen#5 -Alias (byte) mode_8bpppixelcell::ch#2 = (byte) mode_8bpppixelcell::ch#3 (byte) mode_8bpppixelcell::ch#4 -Alias (byte*) mode_8bpppixelcell::gfxb#1 = (byte*) mode_8bpppixelcell::gfxb#6 (byte*) mode_8bpppixelcell::gfxb#8 -Alias (byte) mode_8bpppixelcell::col#1 = (byte) mode_8bpppixelcell::col#6 (byte) mode_8bpppixelcell::col#8 -Alias (byte) dtv_control#127 = (byte) dtv_control#186 (byte) dtv_control#201 (byte) dtv_control#157 -Alias (byte) dtv_control#49 = (byte) dtv_control#93 (byte) dtv_control#94 (byte) dtv_control#50 -Alias (byte) dtv_control#244 = (byte) dtv_control#253 (byte) dtv_control#262 -Alias (byte) mode_8bppchunkybmm::gfxbCpuBank#0 = (byte) mode_8bppchunkybmm::gfxbCpuBank#3 -Alias (byte) mode_8bppchunkybmm::c#0 = (byte~) mode_8bppchunkybmm::$8 -Alias (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#6 (byte) mode_8bppchunkybmm::gfxbCpuBank#5 -Alias (word) mode_8bppchunkybmm::x#3 = (word) mode_8bppchunkybmm::x#5 (word) mode_8bppchunkybmm::x#4 -Alias (byte) mode_8bppchunkybmm::y#4 = (byte) mode_8bppchunkybmm::y#7 (byte) mode_8bppchunkybmm::y#5 -Alias (byte) dtv_control#218 = (byte) dtv_control#234 (byte) dtv_control#219 -Alias (byte) mode_8bppchunkybmm::y#2 = (byte) mode_8bppchunkybmm::y#3 -Alias (byte*) mode_8bppchunkybmm::gfxb#1 = (byte*) mode_8bppchunkybmm::gfxb#6 -Alias (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#9 -Alias (byte) dtv_control#128 = (byte) dtv_control#187 (byte) dtv_control#202 (byte) dtv_control#158 -Alias (byte) dtv_control#52 = (byte) dtv_control#95 (byte) dtv_control#96 (byte) dtv_control#53 -Alias (byte) dtv_control#129 = (byte) dtv_control#15 -Alias (byte*) print_screen#15 = (byte*) print_screen#7 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#29 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#30 -Alias (byte) dtv_control#54 = (byte) dtv_control#97 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_screen#0 = print_line_cursor#0 print_char_cursor#0 print_screen#49 print_line_cursor#67 print_char_cursor#69 print_screen#32 print_line_cursor#49 print_char_cursor#51 +Alias print_str_lines::ch#0 = print_str_lines::ch#2 +Alias print_char_cursor#17 = print_char_cursor#31 +Alias print_str_lines::str#0 = print_str_lines::str#7 +Alias print_line_cursor#68 = print_line_cursor#69 +Alias print_line_cursor#30 = print_line_cursor#51 +Alias print_char_cursor#32 = print_char_cursor#53 +Alias print_str_lines::str#5 = print_str_lines::str#8 print_str_lines::str#6 +Alias print_line_cursor#1 = print_line_cursor#16 +Alias print_char_cursor#18 = print_char_cursor#2 +Alias print_char_cursor#19 = print_char_cursor#33 print_char_cursor#3 +Alias print_line_cursor#17 = print_line_cursor#31 print_line_cursor#2 +Alias print_line_cursor#19 = print_line_cursor#3 print_ln::$0 print_char_cursor#4 print_line_cursor#20 print_char_cursor#21 print_line_cursor#4 print_char_cursor#5 +Alias print_line_cursor#21 = print_screen#9 print_screen#8 print_line_cursor#5 print_char_cursor#6 print_char_cursor#22 print_line_cursor#6 print_char_cursor#7 +Alias print_screen#1 = print_line_cursor#7 print_char_cursor#8 print_screen#10 print_line_cursor#22 print_char_cursor#23 print_screen#2 print_line_cursor#8 print_char_cursor#9 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#22 keyboard_key_pressed::return#1 +Alias bitmap_init::bits#1 = bitmap_init::$2 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_init::yoffs#1 = bitmap_init::$13 +Alias bitmap_clear::bitmap#0 = bitmap_clear::$0 +Alias bitmap_clear::y#2 = bitmap_clear::y#3 +Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 +Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 +Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 +Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 +Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 +Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 +Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 +Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 +Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 +Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 +Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 +Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 +Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 +Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 +Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 +Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 +Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 +Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 +Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 +Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 +Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 +Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 +Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 +Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 +Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 +Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 +Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 +Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 +Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 +Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 +Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 +Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 +Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 +Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 +Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 +Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 +Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 +Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 +Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 +Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 +Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 +Alias print_screen#12 = print_screen#16 print_screen#17 print_screen#4 +Alias print_line_cursor#10 = print_line_cursor#33 print_line_cursor#34 print_line_cursor#24 +Alias print_char_cursor#11 = print_char_cursor#35 print_char_cursor#36 print_char_cursor#25 +Alias dtv_control#1 = dtv_control#98 dtv_control#99 dtv_control#56 +Alias print_screen#11 = print_screen#3 +Alias print_line_cursor#23 = print_line_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#24 +Alias dtv_control#0 = dtv_control#55 +Alias print_screen#50 = print_screen#65 +Alias print_line_cursor#70 = print_line_cursor#84 +Alias print_char_cursor#70 = print_char_cursor#84 +Alias dtv_control#235 = dtv_control#245 +Alias menu::c#2 = menu::c#3 +Alias print_screen#18 = print_screen#51 print_screen#34 +Alias print_line_cursor#35 = print_line_cursor#71 print_line_cursor#53 +Alias print_char_cursor#37 = print_char_cursor#71 print_char_cursor#55 +Alias dtv_control#131 = dtv_control#236 dtv_control#220 dtv_control#203 dtv_control#188 dtv_control#159 +Alias print_screen#13 = print_screen#5 print_screen#52 print_screen#35 +Alias print_line_cursor#11 = print_line_cursor#25 +Alias print_char_cursor#12 = print_char_cursor#26 +Alias print_line_cursor#12 = print_line_cursor#26 +Alias print_char_cursor#13 = print_char_cursor#27 +Alias print_char_cursor#14 = print_char_cursor#28 +Alias print_line_cursor#13 = print_line_cursor#27 +Alias dtv_control#100 = dtv_control#160 dtv_control#101 dtv_control#133 dtv_control#161 dtv_control#134 dtv_control#162 dtv_control#135 dtv_control#102 dtv_control#163 dtv_control#136 dtv_control#103 dtv_control#164 dtv_control#137 dtv_control#104 dtv_control#165 dtv_control#138 dtv_control#105 dtv_control#166 dtv_control#139 dtv_control#106 dtv_control#167 dtv_control#140 dtv_control#107 dtv_control#168 dtv_control#141 dtv_control#108 dtv_control#169 dtv_control#142 dtv_control#109 dtv_control#170 dtv_control#143 dtv_control#110 dtv_control#171 dtv_control#132 dtv_control#111 dtv_control#112 +Alias print_screen#19 = print_screen#66 print_screen#31 print_screen#53 print_screen#67 print_screen#54 print_screen#37 print_screen#68 print_screen#55 print_screen#38 print_screen#20 print_screen#69 print_screen#56 print_screen#39 print_screen#21 print_screen#70 print_screen#57 print_screen#40 print_screen#22 print_screen#71 print_screen#58 print_screen#41 print_screen#23 print_screen#72 print_screen#59 print_screen#42 print_screen#24 print_screen#73 print_screen#60 print_screen#43 print_screen#25 print_screen#74 print_screen#61 print_screen#44 print_screen#26 print_screen#75 print_screen#62 print_screen#45 print_screen#27 print_screen#76 print_screen#64 print_screen#46 print_screen#28 print_screen#63 print_screen#36 print_screen#47 print_screen#29 print_screen#48 print_screen#30 +Alias print_line_cursor#36 = print_line_cursor#85 print_line_cursor#48 print_line_cursor#72 print_line_cursor#86 print_line_cursor#73 print_line_cursor#55 print_line_cursor#87 print_line_cursor#74 print_line_cursor#56 print_line_cursor#37 print_line_cursor#88 print_line_cursor#75 print_line_cursor#57 print_line_cursor#38 print_line_cursor#89 print_line_cursor#76 print_line_cursor#58 print_line_cursor#39 print_line_cursor#90 print_line_cursor#77 print_line_cursor#59 print_line_cursor#40 print_line_cursor#91 print_line_cursor#78 print_line_cursor#60 print_line_cursor#41 print_line_cursor#92 print_line_cursor#79 print_line_cursor#61 print_line_cursor#42 print_line_cursor#93 print_line_cursor#80 print_line_cursor#62 print_line_cursor#43 print_line_cursor#94 print_line_cursor#81 print_line_cursor#63 print_line_cursor#44 print_line_cursor#95 print_line_cursor#83 print_line_cursor#64 print_line_cursor#45 print_line_cursor#82 print_line_cursor#54 print_line_cursor#65 print_line_cursor#46 print_line_cursor#66 print_line_cursor#47 +Alias print_char_cursor#38 = print_char_cursor#85 print_char_cursor#50 print_char_cursor#72 print_char_cursor#86 print_char_cursor#73 print_char_cursor#57 print_char_cursor#87 print_char_cursor#74 print_char_cursor#58 print_char_cursor#39 print_char_cursor#88 print_char_cursor#75 print_char_cursor#59 print_char_cursor#40 print_char_cursor#89 print_char_cursor#76 print_char_cursor#60 print_char_cursor#41 print_char_cursor#90 print_char_cursor#77 print_char_cursor#61 print_char_cursor#42 print_char_cursor#91 print_char_cursor#78 print_char_cursor#62 print_char_cursor#43 print_char_cursor#92 print_char_cursor#79 print_char_cursor#63 print_char_cursor#44 print_char_cursor#93 print_char_cursor#80 print_char_cursor#64 print_char_cursor#45 print_char_cursor#94 print_char_cursor#81 print_char_cursor#65 print_char_cursor#46 print_char_cursor#95 print_char_cursor#83 print_char_cursor#66 print_char_cursor#47 print_char_cursor#82 print_char_cursor#56 print_char_cursor#67 print_char_cursor#48 print_char_cursor#68 print_char_cursor#49 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#23 +Alias keyboard_key_pressed::return#24 = keyboard_key_pressed::return#3 +Alias dtv_control#2 = dtv_control#57 +Alias print_screen#14 = print_screen#6 +Alias print_line_cursor#14 = print_line_cursor#28 +Alias print_char_cursor#15 = print_char_cursor#29 +Alias dtv_control#3 = dtv_control#58 +Alias keyboard_key_pressed::return#25 = keyboard_key_pressed::return#4 +Alias dtv_control#4 = dtv_control#59 +Alias keyboard_key_pressed::return#26 = keyboard_key_pressed::return#5 +Alias dtv_control#5 = dtv_control#60 +Alias keyboard_key_pressed::return#27 = keyboard_key_pressed::return#6 +Alias dtv_control#6 = dtv_control#61 +Alias keyboard_key_pressed::return#28 = keyboard_key_pressed::return#7 +Alias dtv_control#62 = dtv_control#7 +Alias keyboard_key_pressed::return#29 = keyboard_key_pressed::return#8 +Alias dtv_control#63 = dtv_control#8 +Alias keyboard_key_pressed::return#30 = keyboard_key_pressed::return#9 +Alias dtv_control#64 = dtv_control#9 +Alias keyboard_key_pressed::return#10 = keyboard_key_pressed::return#31 +Alias dtv_control#10 = dtv_control#65 +Alias keyboard_key_pressed::return#11 = keyboard_key_pressed::return#32 +Alias dtv_control#11 = dtv_control#66 +Alias keyboard_key_pressed::return#12 = keyboard_key_pressed::return#33 +Alias dtv_control#12 = dtv_control#67 +Alias keyboard_key_pressed::return#13 = keyboard_key_pressed::return#34 +Alias dtv_control#13 = dtv_control#68 +Alias dtv_control#14 = dtv_control#69 +Alias dtv_control#113 = dtv_control#145 dtv_control#172 dtv_control#70 dtv_control#281 dtv_control#280 +Alias keyboard_key_pressed::return#14 = keyboard_key_pressed::return#35 +Alias keyboard_key_pressed::return#15 = keyboard_key_pressed::return#36 +Alias mode_ctrl::ctrl#0 = mode_ctrl::ctrl#16 mode_ctrl::ctrl#8 +Alias dtv_control#16 = dtv_control#71 +Alias keyboard_key_pressed::return#16 = keyboard_key_pressed::return#37 +Alias mode_ctrl::ctrl#17 = mode_ctrl::ctrl#23 mode_ctrl::ctrl#9 +Alias dtv_control#269 = dtv_control#270 dtv_control#275 +Alias mode_ctrl::ctrl#1 = mode_ctrl::$7 +Alias keyboard_key_pressed::return#17 = keyboard_key_pressed::return#38 +Alias mode_ctrl::ctrl#10 = mode_ctrl::ctrl#18 mode_ctrl::ctrl#24 +Alias dtv_control#255 = dtv_control#256 dtv_control#263 +Alias mode_ctrl::ctrl#2 = mode_ctrl::$11 +Alias keyboard_key_pressed::return#18 = keyboard_key_pressed::return#39 +Alias mode_ctrl::ctrl#11 = mode_ctrl::ctrl#19 mode_ctrl::ctrl#25 +Alias dtv_control#237 = dtv_control#238 dtv_control#246 +Alias mode_ctrl::ctrl#3 = mode_ctrl::$15 +Alias keyboard_key_pressed::return#19 = keyboard_key_pressed::return#40 +Alias mode_ctrl::ctrl#12 = mode_ctrl::ctrl#20 mode_ctrl::ctrl#26 +Alias dtv_control#204 = dtv_control#205 dtv_control#221 +Alias mode_ctrl::ctrl#4 = mode_ctrl::$19 +Alias keyboard_key_pressed::return#20 = keyboard_key_pressed::return#41 +Alias mode_ctrl::ctrl#13 = mode_ctrl::ctrl#21 mode_ctrl::ctrl#27 +Alias dtv_control#173 = dtv_control#174 dtv_control#189 +Alias mode_ctrl::ctrl#5 = mode_ctrl::$23 +Alias keyboard_key_pressed::return#21 = keyboard_key_pressed::return#42 +Alias mode_ctrl::ctrl#22 = mode_ctrl::ctrl#28 +Alias dtv_control#115 = dtv_control#116 dtv_control#146 +Alias mode_ctrl::ctrl#6 = mode_ctrl::$27 +Alias mode_ctrl::ctrl#14 = mode_ctrl::ctrl#15 +Alias dtv_control#206 = dtv_control#222 +Alias mode_stdchar::cy#2 = mode_stdchar::cy#3 +Alias mode_stdchar::col#1 = mode_stdchar::col#4 +Alias mode_stdchar::ch#1 = mode_stdchar::ch#4 +Alias dtv_control#117 = dtv_control#147 dtv_control#175 +Alias dtv_control#19 = dtv_control#73 dtv_control#74 dtv_control#20 +Alias dtv_control#207 = dtv_control#223 +Alias mode_ecmchar::cy#2 = mode_ecmchar::cy#3 +Alias mode_ecmchar::col#1 = mode_ecmchar::col#4 +Alias mode_ecmchar::ch#1 = mode_ecmchar::ch#4 +Alias dtv_control#118 = dtv_control#148 dtv_control#176 +Alias dtv_control#22 = dtv_control#75 dtv_control#76 dtv_control#23 +Alias dtv_control#208 = dtv_control#224 +Alias mode_mcchar::cy#2 = mode_mcchar::cy#3 +Alias mode_mcchar::col#1 = mode_mcchar::col#4 +Alias mode_mcchar::ch#1 = mode_mcchar::ch#4 +Alias dtv_control#119 = dtv_control#149 dtv_control#177 +Alias dtv_control#25 = dtv_control#77 dtv_control#78 dtv_control#26 +Alias dtv_control#257 = dtv_control#264 +Alias mode_stdbitmap::col#0 = mode_stdbitmap::$5 +Alias mode_stdbitmap::col2#0 = mode_stdbitmap::$6 +Alias mode_stdbitmap::cy#2 = mode_stdbitmap::cy#3 +Alias mode_stdbitmap::ch#1 = mode_stdbitmap::ch#4 +Alias dtv_control#178 = dtv_control#225 dtv_control#239 dtv_control#209 dtv_control#193 +Alias mode_stdbitmap::l#2 = mode_stdbitmap::l#3 mode_stdbitmap::l#4 +Alias dtv_control#120 = dtv_control#194 dtv_control#150 dtv_control#179 +Alias dtv_control#28 = dtv_control#79 dtv_control#80 dtv_control#29 +Alias dtv_control#210 = dtv_control#226 +Alias mode_hicolstdchar::v#0 = mode_hicolstdchar::$5 +Alias mode_hicolstdchar::cy#2 = mode_hicolstdchar::cy#3 +Alias mode_hicolstdchar::col#1 = mode_hicolstdchar::col#4 +Alias mode_hicolstdchar::ch#1 = mode_hicolstdchar::ch#4 +Alias dtv_control#121 = dtv_control#151 dtv_control#180 +Alias dtv_control#31 = dtv_control#81 dtv_control#82 dtv_control#32 +Alias dtv_control#211 = dtv_control#227 +Alias mode_hicolecmchar::v#0 = mode_hicolecmchar::$5 +Alias mode_hicolecmchar::cy#2 = mode_hicolecmchar::cy#3 +Alias mode_hicolecmchar::col#1 = mode_hicolecmchar::col#4 +Alias mode_hicolecmchar::ch#1 = mode_hicolecmchar::ch#4 +Alias dtv_control#122 = dtv_control#152 dtv_control#181 +Alias dtv_control#34 = dtv_control#83 dtv_control#84 dtv_control#35 +Alias dtv_control#212 = dtv_control#228 +Alias mode_hicolmcchar::v#0 = mode_hicolmcchar::$5 +Alias mode_hicolmcchar::cy#2 = mode_hicolmcchar::cy#3 +Alias mode_hicolmcchar::col#1 = mode_hicolmcchar::col#4 +Alias mode_hicolmcchar::ch#1 = mode_hicolmcchar::ch#4 +Alias dtv_control#123 = dtv_control#153 dtv_control#182 +Alias dtv_control#37 = dtv_control#85 dtv_control#86 dtv_control#38 +Alias dtv_control#289 = dtv_control#290 +Alias mode_twoplanebitmap::cy#2 = mode_twoplanebitmap::cy#3 +Alias mode_twoplanebitmap::col#1 = mode_twoplanebitmap::col#4 +Alias dtv_control#271 = dtv_control#276 dtv_control#282 +Alias mode_twoplanebitmap::gfxa#3 = mode_twoplanebitmap::gfxa#5 mode_twoplanebitmap::gfxa#4 +Alias mode_twoplanebitmap::ax#3 = mode_twoplanebitmap::ax#4 mode_twoplanebitmap::ax#5 +Alias mode_twoplanebitmap::ay#2 = mode_twoplanebitmap::ay#7 mode_twoplanebitmap::ay#6 +Alias dtv_control#248 = dtv_control#249 dtv_control#258 +Alias mode_twoplanebitmap::ay#3 = mode_twoplanebitmap::ay#4 +Alias mode_twoplanebitmap::gfxa#6 = mode_twoplanebitmap::gfxa#8 +Alias dtv_control#213 = dtv_control#229 dtv_control#240 +Alias mode_twoplanebitmap::by#2 = mode_twoplanebitmap::by#3 +Alias mode_twoplanebitmap::gfxb#1 = mode_twoplanebitmap::gfxb#4 +Alias dtv_control#124 = dtv_control#154 dtv_control#183 +Alias dtv_control#40 = dtv_control#87 dtv_control#88 dtv_control#41 +Alias dtv_control#283 = dtv_control#287 +Alias mode_sixsfred::cy#2 = mode_sixsfred::cy#3 +Alias mode_sixsfred::col#1 = mode_sixsfred::col#4 +Alias dtv_control#259 = dtv_control#266 dtv_control#272 +Alias mode_sixsfred::row#0 = mode_sixsfred::$7 +Alias mode_sixsfred::ay#2 = mode_sixsfred::ay#3 +Alias mode_sixsfred::gfxa#1 = mode_sixsfred::gfxa#4 +Alias dtv_control#214 = dtv_control#230 dtv_control#241 +Alias mode_sixsfred::by#2 = mode_sixsfred::by#3 +Alias mode_sixsfred::gfxb#1 = mode_sixsfred::gfxb#4 +Alias dtv_control#125 = dtv_control#155 dtv_control#184 +Alias dtv_control#43 = dtv_control#89 dtv_control#90 dtv_control#44 +Alias dtv_control#284 = dtv_control#288 +Alias mode_sixsfred2::cy#2 = mode_sixsfred2::cy#3 +Alias mode_sixsfred2::col#1 = mode_sixsfred2::col#4 +Alias dtv_control#260 = dtv_control#267 dtv_control#273 +Alias mode_sixsfred2::row#0 = mode_sixsfred2::$9 +Alias mode_sixsfred2::ay#2 = mode_sixsfred2::ay#3 +Alias mode_sixsfred2::gfxa#1 = mode_sixsfred2::gfxa#4 +Alias dtv_control#215 = dtv_control#231 dtv_control#242 +Alias mode_sixsfred2::by#2 = mode_sixsfred2::by#3 +Alias mode_sixsfred2::gfxb#1 = mode_sixsfred2::gfxb#4 +Alias dtv_control#126 = dtv_control#156 dtv_control#185 +Alias dtv_control#46 = dtv_control#91 dtv_control#92 dtv_control#47 +Alias dtv_control#279 = dtv_control#285 +Alias mode_8bpppixelcell::ay#2 = mode_8bpppixelcell::ay#3 +Alias mode_8bpppixelcell::gfxa#1 = mode_8bpppixelcell::gfxa#4 +Alias dtv_control#252 = dtv_control#261 dtv_control#268 +Alias mode_8bpppixelcell::bits#1 = mode_8bpppixelcell::$11 +Alias mode_8bpppixelcell::col#3 = mode_8bpppixelcell::col#4 mode_8bpppixelcell::c#1 +Alias mode_8bpppixelcell::gfxb#3 = mode_8bpppixelcell::gfxb#4 +Alias mode_8bpppixelcell::bits#2 = mode_8bpppixelcell::bits#4 +Alias mode_8bpppixelcell::cp#3 = mode_8bpppixelcell::cp#4 +Alias mode_8bpppixelcell::cr#4 = mode_8bpppixelcell::cr#5 +Alias mode_8bpppixelcell::chargen#7 = mode_8bpppixelcell::chargen#8 +Alias mode_8bpppixelcell::ch#5 = mode_8bpppixelcell::ch#6 +Alias dtv_control#216 = dtv_control#217 +Alias mode_8bpppixelcell::cr#2 = mode_8bpppixelcell::cr#3 +Alias mode_8bpppixelcell::chargen#3 = mode_8bpppixelcell::chargen#6 mode_8bpppixelcell::chargen#5 +Alias mode_8bpppixelcell::ch#2 = mode_8bpppixelcell::ch#3 mode_8bpppixelcell::ch#4 +Alias mode_8bpppixelcell::gfxb#1 = mode_8bpppixelcell::gfxb#6 mode_8bpppixelcell::gfxb#8 +Alias mode_8bpppixelcell::col#1 = mode_8bpppixelcell::col#6 mode_8bpppixelcell::col#8 +Alias dtv_control#127 = dtv_control#186 dtv_control#201 dtv_control#157 +Alias dtv_control#49 = dtv_control#93 dtv_control#94 dtv_control#50 +Alias dtv_control#244 = dtv_control#253 dtv_control#262 +Alias mode_8bppchunkybmm::gfxbCpuBank#0 = mode_8bppchunkybmm::gfxbCpuBank#3 +Alias mode_8bppchunkybmm::c#0 = mode_8bppchunkybmm::$8 +Alias mode_8bppchunkybmm::gfxbCpuBank#4 = mode_8bppchunkybmm::gfxbCpuBank#6 mode_8bppchunkybmm::gfxbCpuBank#5 +Alias mode_8bppchunkybmm::x#3 = mode_8bppchunkybmm::x#5 mode_8bppchunkybmm::x#4 +Alias mode_8bppchunkybmm::y#4 = mode_8bppchunkybmm::y#7 mode_8bppchunkybmm::y#5 +Alias dtv_control#218 = dtv_control#234 dtv_control#219 +Alias mode_8bppchunkybmm::y#2 = mode_8bppchunkybmm::y#3 +Alias mode_8bppchunkybmm::gfxb#1 = mode_8bppchunkybmm::gfxb#6 +Alias mode_8bppchunkybmm::gfxbCpuBank#8 = mode_8bppchunkybmm::gfxbCpuBank#9 +Alias dtv_control#128 = dtv_control#187 dtv_control#202 dtv_control#158 +Alias dtv_control#52 = dtv_control#95 dtv_control#96 dtv_control#53 +Alias dtv_control#129 = dtv_control#15 +Alias print_screen#15 = print_screen#7 +Alias print_line_cursor#15 = print_line_cursor#29 +Alias print_char_cursor#16 = print_char_cursor#30 +Alias dtv_control#54 = dtv_control#97 Successful SSA optimization Pass2AliasElimination -Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#1 -Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#5 -Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#68 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte) bitmap_line_xdyi::x1#2 = (byte) bitmap_line_xdyi::x1#3 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#5 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#6 -Alias (byte) bitmap_line_xdyd::x1#2 = (byte) bitmap_line_xdyd::x1#3 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#5 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#6 -Alias (byte) bitmap_line_ydxi::y1#2 = (byte) bitmap_line_ydxi::y1#3 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#5 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#6 -Alias (byte) bitmap_line_ydxd::y1#2 = (byte) bitmap_line_ydxd::y1#3 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#6 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#5 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#6 -Alias (byte*) print_screen#14 = (byte*) print_screen#19 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#36 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#38 -Alias (byte) dtv_control#113 = (byte) dtv_control#269 (byte) dtv_control#255 (byte) dtv_control#237 (byte) dtv_control#204 (byte) dtv_control#173 (byte) dtv_control#115 (byte) dtv_control#72 -Alias (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#3 -Alias (byte) mode_twoplanebitmap::ay#2 = (byte) mode_twoplanebitmap::ay#3 -Alias (byte) dtv_control#213 = (byte) dtv_control#248 -Alias (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#3 -Alias (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#3 -Alias (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#3 -Alias (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#3 -Alias (byte) mode_8bpppixelcell::cr#2 = (byte) mode_8bpppixelcell::cr#4 -Alias (byte*) mode_8bpppixelcell::chargen#3 = (byte*) mode_8bpppixelcell::chargen#7 -Alias (byte) mode_8bpppixelcell::ch#2 = (byte) mode_8bpppixelcell::ch#5 -Alias (byte) dtv_control#127 = (byte) dtv_control#216 -Alias (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#3 -Alias (byte) mode_8bppchunkybmm::y#2 = (byte) mode_8bppchunkybmm::y#4 -Alias (byte) dtv_control#128 = (byte) dtv_control#218 +Alias print_str_lines::ch#0 = print_str_lines::ch#1 +Alias print_str_lines::str#0 = print_str_lines::str#5 +Alias print_line_cursor#30 = print_line_cursor#68 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 +Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 +Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 +Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 +Alias print_screen#14 = print_screen#19 +Alias print_line_cursor#14 = print_line_cursor#36 +Alias print_char_cursor#15 = print_char_cursor#38 +Alias dtv_control#113 = dtv_control#269 dtv_control#255 dtv_control#237 dtv_control#204 dtv_control#173 dtv_control#115 dtv_control#72 +Alias mode_twoplanebitmap::ax#2 = mode_twoplanebitmap::ax#3 +Alias mode_twoplanebitmap::ay#2 = mode_twoplanebitmap::ay#3 +Alias dtv_control#213 = dtv_control#248 +Alias mode_8bpppixelcell::gfxb#2 = mode_8bpppixelcell::gfxb#3 +Alias mode_8bpppixelcell::bits#2 = mode_8bpppixelcell::bits#3 +Alias mode_8bpppixelcell::col#2 = mode_8bpppixelcell::col#3 +Alias mode_8bpppixelcell::cp#2 = mode_8bpppixelcell::cp#3 +Alias mode_8bpppixelcell::cr#2 = mode_8bpppixelcell::cr#4 +Alias mode_8bpppixelcell::chargen#3 = mode_8bpppixelcell::chargen#7 +Alias mode_8bpppixelcell::ch#2 = mode_8bpppixelcell::ch#5 +Alias dtv_control#127 = dtv_control#216 +Alias mode_8bppchunkybmm::x#2 = mode_8bppchunkybmm::x#3 +Alias mode_8bppchunkybmm::y#2 = mode_8bppchunkybmm::y#4 +Alias dtv_control#128 = dtv_control#218 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -7718,7 +7718,7 @@ Finalized unsigned number type (byte) $10 Finalized unsigned number type (word) $140 Finalized unsigned number type (byte) $c8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$10 = (byte~) bitmap_init::$6 +Alias bitmap_init::$10 = bitmap_init::$6 Successful SSA optimization Pass2AliasElimination Constant right-side identified [4] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0 Constant right-side identified [44] (byte~) bitmap_init::$1 ← > (const byte*) bitmap_init::bitmap#0 @@ -8012,7 +8012,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(mode_stdbitmap::lines_x+1 + mode_stdbitmap::$12) Consolidated array index constant in assignment *(mode_stdbitmap::lines_y+1 + mode_stdbitmap::$13) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) mode_stdbitmap::l#2 = (byte~) mode_stdbitmap::$12 (byte~) mode_stdbitmap::$13 +Alias mode_stdbitmap::l#2 = mode_stdbitmap::$12 mode_stdbitmap::$13 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting print_str_lines::@12(between print_str_lines::@1 and print_str_lines::@4) Added new block during phi lifting print_str_lines::@13(between print_str_lines::@5 and print_str_lines::@4) @@ -10509,685 +10509,685 @@ null depth in calling loop Loop head: mode_ctrl::@1 tails: mode_ctrl::@18 blocks VARIABLE REGISTER WEIGHTS (void()) bitmap_clear() (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 2.0 -(byte*) bitmap_clear::bitmap#1 420.59999999999997 -(byte*) bitmap_clear::bitmap#2 1552.0 -(byte*) bitmap_clear::bitmap#3 204.0 -(byte*) bitmap_clear::bitmap#5 4.0 +(word) bitmap_clear::bitmap#0 100001.0 +(byte*) bitmap_clear::bitmap#1 4.2000000599999994E7 +(byte*) bitmap_clear::bitmap#2 1.55000002E8 +(byte*) bitmap_clear::bitmap#3 2.0100003E7 +(byte*) bitmap_clear::bitmap#5 200002.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 1501.5 -(byte) bitmap_clear::x#2 667.3333333333334 +(byte) bitmap_clear::x#1 1.500000015E8 +(byte) bitmap_clear::x#2 6.6666667333333336E7 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 151.5 -(byte) bitmap_clear::y#4 33.666666666666664 +(byte) bitmap_clear::y#1 1.50000015E7 +(byte) bitmap_clear::y#4 3333333.6666666665 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 202.0 -(byte~) bitmap_init::$10 50.5 -(byte~) bitmap_init::$7 202.0 -(byte~) bitmap_init::$8 202.0 -(byte~) bitmap_init::$9 202.0 +(byte~) bitmap_init::$0 2.0000002E7 +(byte~) bitmap_init::$10 5000000.5 +(byte~) bitmap_init::$7 2.0000002E7 +(byte~) bitmap_init::$8 2.0000002E7 +(byte~) bitmap_init::$9 2.0000002E7 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 101.0 -(byte) bitmap_init::bits#3 60.599999999999994 -(byte) bitmap_init::bits#4 67.33333333333333 +(byte) bitmap_init::bits#1 1.0000001E7 +(byte) bitmap_init::bits#3 6000000.6 +(byte) bitmap_init::bits#4 6666667.333333333 (byte) bitmap_init::x -(byte) bitmap_init::x#1 151.5 -(byte) bitmap_init::x#2 67.33333333333333 +(byte) bitmap_init::x#1 1.50000015E7 +(byte) bitmap_init::x#2 6666667.333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 151.5 -(byte) bitmap_init::y#2 50.5 +(byte) bitmap_init::y#1 1.50000015E7 +(byte) bitmap_init::y#2 5000000.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 202.0 -(byte*) bitmap_init::yoffs#2 63.125 -(byte*) bitmap_init::yoffs#4 101.0 +(byte*) bitmap_init::yoffs#1 2.0000002E7 +(byte*) bitmap_init::yoffs#2 6250000.625 +(byte*) bitmap_init::yoffs#4 1.0000001E7 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 5.173913043478264 +(byte) bitmap_line::x0#0 3956522.1739130435 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 5.409090909090908 +(byte) bitmap_line::x1#0 4136364.090909091 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 0.7 -(byte) bitmap_line::xd#2 0.7 +(byte) bitmap_line::xd#1 3500000.3499999996 +(byte) bitmap_line::xd#2 3500000.3499999996 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 5.952380952380948 +(byte) bitmap_line::y0#0 5761905.380952382 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 6.249999999999996 +(byte) bitmap_line::y1#0 6050000.6499999985 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 0.8888888888888888 -(byte) bitmap_line::yd#10 0.8888888888888888 -(byte) bitmap_line::yd#11 0.8888888888888888 -(byte) bitmap_line::yd#2 0.8888888888888888 +(byte) bitmap_line::yd#1 4444444.888888889 +(byte) bitmap_line::yd#10 4444444.888888889 +(byte) bitmap_line::yd#11 4444444.888888889 +(byte) bitmap_line::yd#2 4444444.888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 2002.0 +(byte~) bitmap_line_xdyd::$6 2.00000000002E11 (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 4.0 -(byte) bitmap_line_xdyd::e#1 1334.6666666666667 -(byte) bitmap_line_xdyd::e#2 2002.0 -(byte) bitmap_line_xdyd::e#3 400.79999999999995 -(byte) bitmap_line_xdyd::e#6 1001.0 +(byte) bitmap_line_xdyd::e#0 2.00000002E8 +(byte) bitmap_line_xdyd::e#1 1.3333333333466667E11 +(byte) bitmap_line_xdyd::e#2 2.00000000002E11 +(byte) bitmap_line_xdyd::e#3 4.0020000000600006E10 +(byte) bitmap_line_xdyd::e#6 1.00000000001E11 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 0.8 -(byte) bitmap_line_xdyd::x#1 0.8 -(byte) bitmap_line_xdyd::x#2 375.375 -(byte) bitmap_line_xdyd::x#3 751.25 -(byte) bitmap_line_xdyd::x#6 3.0 +(byte) bitmap_line_xdyd::x#0 4000000.4 +(byte) bitmap_line_xdyd::x#1 4000000.4 +(byte) bitmap_line_xdyd::x#2 3.7500000000375E10 +(byte) bitmap_line_xdyd::x#3 7.5025000001E10 +(byte) bitmap_line_xdyd::x#6 6.00000015E7 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 71.78571428571429 +(byte) bitmap_line_xdyd::x1#0 6666667.333333333 +(byte) bitmap_line_xdyd::x1#1 6666667.333333333 +(byte) bitmap_line_xdyd::x1#6 7.1442857145E9 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 2.0 -(byte) bitmap_line_xdyd::xd#1 2.0 -(byte) bitmap_line_xdyd::xd#5 143.28571428571428 +(byte) bitmap_line_xdyd::xd#0 1.0000001E7 +(byte) bitmap_line_xdyd::xd#1 1.0000001E7 +(byte) bitmap_line_xdyd::xd#5 1.4287142857428572E10 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 1.0 -(byte) bitmap_line_xdyd::y#1 1.0 -(byte) bitmap_line_xdyd::y#2 1001.0 -(byte) bitmap_line_xdyd::y#3 572.2857142857142 -(byte) bitmap_line_xdyd::y#5 3.0 -(byte) bitmap_line_xdyd::y#6 1001.0 +(byte) bitmap_line_xdyd::y#0 5000000.5 +(byte) bitmap_line_xdyd::y#1 5000000.5 +(byte) bitmap_line_xdyd::y#2 1.00000000001E11 +(byte) bitmap_line_xdyd::y#3 5.715714285785715E10 +(byte) bitmap_line_xdyd::y#5 6.00000015E7 +(byte) bitmap_line_xdyd::y#6 1.00000000001E11 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 4.0 -(byte) bitmap_line_xdyd::yd#1 4.0 -(byte) bitmap_line_xdyd::yd#2 71.92857142857143 +(byte) bitmap_line_xdyd::yd#0 2.0000002E7 +(byte) bitmap_line_xdyd::yd#1 2.0000002E7 +(byte) bitmap_line_xdyd::yd#2 7.151428571714286E9 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 2002.0 +(byte~) bitmap_line_xdyi::$6 2.00000000002E11 (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 4.0 -(byte) bitmap_line_xdyi::e#1 1334.6666666666667 -(byte) bitmap_line_xdyi::e#2 2002.0 -(byte) bitmap_line_xdyi::e#3 400.79999999999995 -(byte) bitmap_line_xdyi::e#6 1001.0 +(byte) bitmap_line_xdyi::e#0 2.00000002E8 +(byte) bitmap_line_xdyi::e#1 1.3333333333466667E11 +(byte) bitmap_line_xdyi::e#2 2.00000000002E11 +(byte) bitmap_line_xdyi::e#3 4.0020000000600006E10 +(byte) bitmap_line_xdyi::e#6 1.00000000001E11 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 0.8 -(byte) bitmap_line_xdyi::x#1 0.8 -(byte) bitmap_line_xdyi::x#2 375.375 -(byte) bitmap_line_xdyi::x#3 751.25 -(byte) bitmap_line_xdyi::x#6 3.0 +(byte) bitmap_line_xdyi::x#0 4000000.4 +(byte) bitmap_line_xdyi::x#1 4000000.4 +(byte) bitmap_line_xdyi::x#2 3.7500000000375E10 +(byte) bitmap_line_xdyi::x#3 7.5025000001E10 +(byte) bitmap_line_xdyi::x#6 6.00000015E7 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 71.78571428571429 +(byte) bitmap_line_xdyi::x1#0 6666667.333333333 +(byte) bitmap_line_xdyi::x1#1 6666667.333333333 +(byte) bitmap_line_xdyi::x1#6 7.1442857145E9 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 2.0 -(byte) bitmap_line_xdyi::xd#1 2.0 -(byte) bitmap_line_xdyi::xd#5 143.28571428571428 +(byte) bitmap_line_xdyi::xd#0 1.0000001E7 +(byte) bitmap_line_xdyi::xd#1 1.0000001E7 +(byte) bitmap_line_xdyi::xd#5 1.4287142857428572E10 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 1.0 -(byte) bitmap_line_xdyi::y#1 1.0 -(byte) bitmap_line_xdyi::y#2 1001.0 -(byte) bitmap_line_xdyi::y#3 572.2857142857142 -(byte) bitmap_line_xdyi::y#5 3.0 -(byte) bitmap_line_xdyi::y#6 1001.0 +(byte) bitmap_line_xdyi::y#0 5000000.5 +(byte) bitmap_line_xdyi::y#1 5000000.5 +(byte) bitmap_line_xdyi::y#2 1.00000000001E11 +(byte) bitmap_line_xdyi::y#3 5.715714285785715E10 +(byte) bitmap_line_xdyi::y#5 6.00000015E7 +(byte) bitmap_line_xdyi::y#6 1.00000000001E11 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 4.0 -(byte) bitmap_line_xdyi::yd#1 4.0 -(byte) bitmap_line_xdyi::yd#2 71.92857142857143 +(byte) bitmap_line_xdyi::yd#0 2.0000002E7 +(byte) bitmap_line_xdyi::yd#1 2.0000002E7 +(byte) bitmap_line_xdyi::yd#2 7.151428571714286E9 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 2002.0 +(byte~) bitmap_line_ydxd::$6 2.00000000002E11 (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 4.0 -(byte) bitmap_line_ydxd::e#1 1334.6666666666667 -(byte) bitmap_line_ydxd::e#2 2002.0 -(byte) bitmap_line_ydxd::e#3 400.79999999999995 -(byte) bitmap_line_ydxd::e#6 1001.0 +(byte) bitmap_line_ydxd::e#0 2.00000002E8 +(byte) bitmap_line_ydxd::e#1 1.3333333333466667E11 +(byte) bitmap_line_ydxd::e#2 2.00000000002E11 +(byte) bitmap_line_ydxd::e#3 4.0020000000600006E10 +(byte) bitmap_line_ydxd::e#6 1.00000000001E11 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 1.0 -(byte) bitmap_line_ydxd::x#1 1.0 -(byte) bitmap_line_ydxd::x#2 1001.0 -(byte) bitmap_line_ydxd::x#3 572.2857142857142 -(byte) bitmap_line_ydxd::x#5 3.0 -(byte) bitmap_line_ydxd::x#6 1001.0 +(byte) bitmap_line_ydxd::x#0 5000000.5 +(byte) bitmap_line_ydxd::x#1 5000000.5 +(byte) bitmap_line_ydxd::x#2 1.00000000001E11 +(byte) bitmap_line_ydxd::x#3 5.715714285785715E10 +(byte) bitmap_line_ydxd::x#5 6.00000015E7 +(byte) bitmap_line_ydxd::x#6 1.00000000001E11 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 4.0 -(byte) bitmap_line_ydxd::xd#1 4.0 -(byte) bitmap_line_ydxd::xd#2 71.92857142857143 +(byte) bitmap_line_ydxd::xd#0 2.0000002E7 +(byte) bitmap_line_ydxd::xd#1 2.0000002E7 +(byte) bitmap_line_ydxd::xd#2 7.151428571714286E9 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 0.8 -(byte) bitmap_line_ydxd::y#1 0.8 -(byte) bitmap_line_ydxd::y#2 751.25 -(byte) bitmap_line_ydxd::y#3 375.375 -(byte) bitmap_line_ydxd::y#7 3.0 +(byte) bitmap_line_ydxd::y#0 4000000.4 +(byte) bitmap_line_ydxd::y#1 4000000.4 +(byte) bitmap_line_ydxd::y#2 7.5025000001E10 +(byte) bitmap_line_ydxd::y#3 3.7500000000375E10 +(byte) bitmap_line_ydxd::y#7 6.00000015E7 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 71.78571428571429 +(byte) bitmap_line_ydxd::y1#0 6666667.333333333 +(byte) bitmap_line_ydxd::y1#1 6666667.333333333 +(byte) bitmap_line_ydxd::y1#6 7.1442857145E9 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 2.0 -(byte) bitmap_line_ydxd::yd#1 2.0 -(byte) bitmap_line_ydxd::yd#5 143.28571428571428 +(byte) bitmap_line_ydxd::yd#0 1.0000001E7 +(byte) bitmap_line_ydxd::yd#1 1.0000001E7 +(byte) bitmap_line_ydxd::yd#5 1.4287142857428572E10 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 2002.0 +(byte~) bitmap_line_ydxi::$6 2.00000000002E11 (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 4.0 -(byte) bitmap_line_ydxi::e#1 1334.6666666666667 -(byte) bitmap_line_ydxi::e#2 2002.0 -(byte) bitmap_line_ydxi::e#3 400.79999999999995 -(byte) bitmap_line_ydxi::e#6 1001.0 +(byte) bitmap_line_ydxi::e#0 2.00000002E8 +(byte) bitmap_line_ydxi::e#1 1.3333333333466667E11 +(byte) bitmap_line_ydxi::e#2 2.00000000002E11 +(byte) bitmap_line_ydxi::e#3 4.0020000000600006E10 +(byte) bitmap_line_ydxi::e#6 1.00000000001E11 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 1.0 -(byte) bitmap_line_ydxi::x#1 1.0 -(byte) bitmap_line_ydxi::x#2 1001.0 -(byte) bitmap_line_ydxi::x#3 572.2857142857142 -(byte) bitmap_line_ydxi::x#5 3.0 -(byte) bitmap_line_ydxi::x#6 1001.0 +(byte) bitmap_line_ydxi::x#0 5000000.5 +(byte) bitmap_line_ydxi::x#1 5000000.5 +(byte) bitmap_line_ydxi::x#2 1.00000000001E11 +(byte) bitmap_line_ydxi::x#3 5.715714285785715E10 +(byte) bitmap_line_ydxi::x#5 6.00000015E7 +(byte) bitmap_line_ydxi::x#6 1.00000000001E11 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 4.0 -(byte) bitmap_line_ydxi::xd#1 4.0 -(byte) bitmap_line_ydxi::xd#2 71.92857142857143 +(byte) bitmap_line_ydxi::xd#0 2.0000002E7 +(byte) bitmap_line_ydxi::xd#1 2.0000002E7 +(byte) bitmap_line_ydxi::xd#2 7.151428571714286E9 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 0.8 -(byte) bitmap_line_ydxi::y#1 0.8 -(byte) bitmap_line_ydxi::y#2 375.375 -(byte) bitmap_line_ydxi::y#3 751.25 -(byte) bitmap_line_ydxi::y#6 3.0 +(byte) bitmap_line_ydxi::y#0 4000000.4 +(byte) bitmap_line_ydxi::y#1 4000000.4 +(byte) bitmap_line_ydxi::y#2 3.7500000000375E10 +(byte) bitmap_line_ydxi::y#3 7.5025000001E10 +(byte) bitmap_line_ydxi::y#6 6.00000015E7 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 71.78571428571429 +(byte) bitmap_line_ydxi::y1#0 6666667.333333333 +(byte) bitmap_line_ydxi::y1#1 6666667.333333333 +(byte) bitmap_line_ydxi::y1#6 7.1442857145E9 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 2.0 -(byte) bitmap_line_ydxi::yd#1 2.0 -(byte) bitmap_line_ydxi::yd#5 143.28571428571428 +(byte) bitmap_line_ydxi::yd#0 1.0000001E7 +(byte) bitmap_line_ydxi::yd#1 1.0000001E7 +(byte) bitmap_line_ydxi::yd#5 1.4287142857428572E10 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$1 2.000000000002E12 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 +(word) bitmap_plot::plotter#0 5.000000000005E11 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 2.0 +(word) bitmap_plot::plotter_x#0 1.000000000001E12 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 4.0 +(word) bitmap_plot::plotter_y#0 2.000000000002E12 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 1001.0 -(byte) bitmap_plot::x#1 1001.0 -(byte) bitmap_plot::x#2 1001.0 -(byte) bitmap_plot::x#3 1001.0 -(byte) bitmap_plot::x#4 1002.5 +(byte) bitmap_plot::x#0 1.00000000001E11 +(byte) bitmap_plot::x#1 1.00000000001E11 +(byte) bitmap_plot::x#2 1.00000000001E11 +(byte) bitmap_plot::x#3 1.00000000001E11 +(byte) bitmap_plot::x#4 8.5000000000175E11 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 2002.0 -(byte) bitmap_plot::y#1 2002.0 -(byte) bitmap_plot::y#2 2002.0 -(byte) bitmap_plot::y#3 2002.0 -(byte) bitmap_plot::y#4 2004.0 +(byte) bitmap_plot::y#0 2.00000000002E11 +(byte) bitmap_plot::y#1 2.00000000002E11 +(byte) bitmap_plot::y#2 2.00000000002E11 +(byte) bitmap_plot::y#3 2.00000000002E11 +(byte) bitmap_plot::y#4 1.200000000003E12 (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 2002.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 1003.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 2.0000002E7 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 1.10000002E8 (byte) dtv_control -(byte) dtv_control#114 80.52941176470588 -(byte) dtv_control#144 2.0 -(byte) dtv_control#17 67.33333333333333 +(byte) dtv_control#114 8041176.5882352935 +(byte) dtv_control#144 100001.0 +(byte) dtv_control#17 6666667.333333333 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2.000000002E9 (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 3.333333336666667E8 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#20 2.0 +(byte) keyboard_key_pressed::key#20 1.000000001E9 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 419.1818181818182 -(byte) keyboard_key_pressed::return#10 202.0 -(byte) keyboard_key_pressed::return#11 202.0 -(byte) keyboard_key_pressed::return#12 202.0 -(byte) keyboard_key_pressed::return#13 202.0 -(byte) keyboard_key_pressed::return#14 2002.0 -(byte) keyboard_key_pressed::return#15 2002.0 -(byte) keyboard_key_pressed::return#16 2002.0 -(byte) keyboard_key_pressed::return#17 2002.0 -(byte) keyboard_key_pressed::return#18 2002.0 -(byte) keyboard_key_pressed::return#19 2002.0 -(byte) keyboard_key_pressed::return#2 202.0 -(byte) keyboard_key_pressed::return#20 2002.0 -(byte) keyboard_key_pressed::return#21 2002.0 -(byte) keyboard_key_pressed::return#24 202.0 -(byte) keyboard_key_pressed::return#25 202.0 -(byte) keyboard_key_pressed::return#26 202.0 -(byte) keyboard_key_pressed::return#27 202.0 -(byte) keyboard_key_pressed::return#28 202.0 -(byte) keyboard_key_pressed::return#29 202.0 -(byte) keyboard_key_pressed::return#30 202.0 +(byte) keyboard_key_pressed::return#0 8.187272822727272E7 +(byte) keyboard_key_pressed::return#10 200002.0 +(byte) keyboard_key_pressed::return#11 200002.0 +(byte) keyboard_key_pressed::return#12 200002.0 +(byte) keyboard_key_pressed::return#13 200002.0 +(byte) keyboard_key_pressed::return#14 2.00000002E8 +(byte) keyboard_key_pressed::return#15 2.00000002E8 +(byte) keyboard_key_pressed::return#16 2.00000002E8 +(byte) keyboard_key_pressed::return#17 2.00000002E8 +(byte) keyboard_key_pressed::return#18 2.00000002E8 +(byte) keyboard_key_pressed::return#19 2.00000002E8 +(byte) keyboard_key_pressed::return#2 200002.0 +(byte) keyboard_key_pressed::return#20 2.00000002E8 +(byte) keyboard_key_pressed::return#21 2.00000002E8 +(byte) keyboard_key_pressed::return#24 200002.0 +(byte) keyboard_key_pressed::return#25 200002.0 +(byte) keyboard_key_pressed::return#26 200002.0 +(byte) keyboard_key_pressed::return#27 200002.0 +(byte) keyboard_key_pressed::return#28 200002.0 +(byte) keyboard_key_pressed::return#29 200002.0 +(byte) keyboard_key_pressed::return#30 200002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 4.0 +(byte) keyboard_key_pressed::rowidx#0 2.000000002E9 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3.666666667333333E9 +(byte) keyboard_matrix_read::return#2 2.000000002E9 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 4.0 +(byte) keyboard_matrix_read::rowid#0 1.1000000002E10 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 202.0 -(byte*) memset::dst#2 134.66666666666666 +(byte*) memset::dst#1 2.0000002E7 +(byte*) memset::dst#2 1.3333334666666666E7 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) menu() -(byte~) menu::$13 202.0 -(byte~) menu::$17 202.0 -(byte~) menu::$21 202.0 -(byte~) menu::$25 202.0 -(byte~) menu::$29 202.0 -(byte~) menu::$33 202.0 -(byte~) menu::$37 202.0 -(byte~) menu::$41 202.0 -(byte~) menu::$45 202.0 -(byte~) menu::$49 202.0 -(byte~) menu::$5 202.0 -(byte~) menu::$9 202.0 +(byte~) menu::$13 200002.0 +(byte~) menu::$17 200002.0 +(byte~) menu::$21 200002.0 +(byte~) menu::$25 200002.0 +(byte~) menu::$29 200002.0 +(byte~) menu::$33 200002.0 +(byte~) menu::$37 200002.0 +(byte~) menu::$41 200002.0 +(byte~) menu::$45 200002.0 +(byte~) menu::$49 200002.0 +(byte~) menu::$5 200002.0 +(byte~) menu::$9 200002.0 (byte*) menu::c -(byte*) menu::c#1 202.0 -(byte*) menu::c#2 134.66666666666666 +(byte*) menu::c#1 200002.0 +(byte*) menu::c#2 133334.66666666666 (byte) menu::i -(byte) menu::i#1 151.5 -(byte) menu::i#2 202.0 +(byte) menu::i#1 150001.5 +(byte) menu::i#2 200002.0 (void()) mode_8bppchunkybmm() -(word~) mode_8bppchunkybmm::$7 1001.0 +(word~) mode_8bppchunkybmm::$7 1.0000001E7 (byte) mode_8bppchunkybmm::c -(byte) mode_8bppchunkybmm::c#0 2002.0 +(byte) mode_8bppchunkybmm::c#0 2.0000002E7 (byte*) mode_8bppchunkybmm::gfxb -(byte*) mode_8bppchunkybmm::gfxb#1 420.59999999999997 -(byte*) mode_8bppchunkybmm::gfxb#3 1552.0 -(byte*) mode_8bppchunkybmm::gfxb#4 750.75 -(byte*) mode_8bppchunkybmm::gfxb#5 202.0 +(byte*) mode_8bppchunkybmm::gfxb#1 4200000.6 +(byte*) mode_8bppchunkybmm::gfxb#3 1.5500002E7 +(byte*) mode_8bppchunkybmm::gfxb#4 7500000.75 +(byte*) mode_8bppchunkybmm::gfxb#5 2000002.0 (byte) mode_8bppchunkybmm::gfxbCpuBank -(byte) mode_8bppchunkybmm::gfxbCpuBank#2 2002.0 -(byte) mode_8bppchunkybmm::gfxbCpuBank#4 1026.25 -(byte) mode_8bppchunkybmm::gfxbCpuBank#7 202.0 -(byte) mode_8bppchunkybmm::gfxbCpuBank#8 344.8888888888889 +(byte) mode_8bppchunkybmm::gfxbCpuBank#2 2.0000002E7 +(byte) mode_8bppchunkybmm::gfxbCpuBank#4 1.025000125E7 +(byte) mode_8bppchunkybmm::gfxbCpuBank#7 2000002.0 +(byte) mode_8bppchunkybmm::gfxbCpuBank#8 3444444.888888889 (byte) mode_8bppchunkybmm::i -(byte) mode_8bppchunkybmm::i#1 151.5 -(byte) mode_8bppchunkybmm::i#2 202.0 +(byte) mode_8bppchunkybmm::i#1 1500001.5 +(byte) mode_8bppchunkybmm::i#2 2000002.0 (word) mode_8bppchunkybmm::x -(word) mode_8bppchunkybmm::x#1 1501.5 -(word) mode_8bppchunkybmm::x#2 300.29999999999995 +(word) mode_8bppchunkybmm::x#1 1.50000015E7 +(word) mode_8bppchunkybmm::x#2 3000000.3 (byte) mode_8bppchunkybmm::y -(byte) mode_8bppchunkybmm::y#1 151.5 -(byte) mode_8bppchunkybmm::y#6 92.53846153846155 +(byte) mode_8bppchunkybmm::y#1 1500001.5 +(byte) mode_8bppchunkybmm::y#6 923077.1538461539 (void()) mode_8bpppixelcell() -(byte~) mode_8bpppixelcell::$2 2002.0 -(byte~) mode_8bpppixelcell::$3 1001.0 -(byte~) mode_8bpppixelcell::$4 2002.0 -(byte~) mode_8bpppixelcell::$5 2002.0 -(byte~) mode_8bpppixelcell::$8 20002.0 +(byte~) mode_8bpppixelcell::$2 2.0000002E7 +(byte~) mode_8bpppixelcell::$3 1.0000001E7 +(byte~) mode_8bpppixelcell::$4 2.0000002E7 +(byte~) mode_8bpppixelcell::$5 2.0000002E7 +(byte~) mode_8bpppixelcell::$8 2.00000002E8 (byte) mode_8bpppixelcell::ax -(byte) mode_8bpppixelcell::ax#1 1501.5 -(byte) mode_8bpppixelcell::ax#2 429.0 +(byte) mode_8bpppixelcell::ax#1 1.50000015E7 +(byte) mode_8bpppixelcell::ax#2 4285714.714285715 (byte) mode_8bpppixelcell::ay -(byte) mode_8bpppixelcell::ay#1 151.5 -(byte) mode_8bpppixelcell::ay#4 120.29999999999998 +(byte) mode_8bpppixelcell::ay#1 1500001.5 +(byte) mode_8bpppixelcell::ay#4 1200000.3 (byte) mode_8bpppixelcell::bits -(byte) mode_8bpppixelcell::bits#0 1001.0 -(byte) mode_8bpppixelcell::bits#1 5000.5 -(byte) mode_8bpppixelcell::bits#2 4429.142857142857 +(byte) mode_8bpppixelcell::bits#0 1.0000001E7 +(byte) mode_8bpppixelcell::bits#1 5.00000005E7 +(byte) mode_8bpppixelcell::bits#2 4.428571485714286E7 (byte) mode_8bpppixelcell::c -(byte) mode_8bpppixelcell::c#2 20002.0 -(byte) mode_8bpppixelcell::c#3 20002.0 +(byte) mode_8bpppixelcell::c#2 2.00000002E8 +(byte) mode_8bpppixelcell::c#3 2.00000002E8 (byte) mode_8bpppixelcell::ch -(byte) mode_8bpppixelcell::ch#1 151.5 -(byte) mode_8bpppixelcell::ch#8 11.882352941176471 +(byte) mode_8bpppixelcell::ch#1 1500001.5 +(byte) mode_8bpppixelcell::ch#8 117647.17647058824 (byte*) mode_8bpppixelcell::chargen -(byte*) mode_8bpppixelcell::chargen#1 131.4375 -(byte*) mode_8bpppixelcell::chargen#2 1552.0 -(byte*) mode_8bpppixelcell::chargen#4 202.0 +(byte*) mode_8bpppixelcell::chargen#1 1312500.1875 +(byte*) mode_8bpppixelcell::chargen#2 1.5500002E7 +(byte*) mode_8bpppixelcell::chargen#4 2000002.0 (byte) mode_8bpppixelcell::col -(byte) mode_8bpppixelcell::col#1 3014.857142857143 -(byte) mode_8bpppixelcell::col#2 3875.5 -(byte) mode_8bpppixelcell::col#5 701.0 -(byte) mode_8bpppixelcell::col#7 202.0 +(byte) mode_8bpppixelcell::col#1 3.0142857714285716E7 +(byte) mode_8bpppixelcell::col#2 3.87500005E7 +(byte) mode_8bpppixelcell::col#5 7000001.0 +(byte) mode_8bpppixelcell::col#7 2000002.0 (byte) mode_8bpppixelcell::cp -(byte) mode_8bpppixelcell::cp#1 15001.5 -(byte) mode_8bpppixelcell::cp#2 2222.4444444444443 +(byte) mode_8bpppixelcell::cp#1 1.500000015E8 +(byte) mode_8bpppixelcell::cp#2 2.2222222444444444E7 (byte) mode_8bpppixelcell::cr -(byte) mode_8bpppixelcell::cr#1 1501.5 -(byte) mode_8bpppixelcell::cr#6 143.0 +(byte) mode_8bpppixelcell::cr#1 1.50000015E7 +(byte) mode_8bpppixelcell::cr#6 1428571.5714285714 (byte*) mode_8bpppixelcell::gfxa -(byte*) mode_8bpppixelcell::gfxa#1 420.59999999999997 -(byte*) mode_8bpppixelcell::gfxa#2 517.3333333333334 -(byte*) mode_8bpppixelcell::gfxa#3 202.0 +(byte*) mode_8bpppixelcell::gfxa#1 4200000.6 +(byte*) mode_8bpppixelcell::gfxa#2 5166667.333333333 +(byte*) mode_8bpppixelcell::gfxa#3 2000002.0 (byte*) mode_8bpppixelcell::gfxb -(byte*) mode_8bpppixelcell::gfxb#1 2344.8888888888887 -(byte*) mode_8bpppixelcell::gfxb#2 5167.333333333333 -(byte*) mode_8bpppixelcell::gfxb#5 701.0 -(byte*) mode_8bpppixelcell::gfxb#7 202.0 +(byte*) mode_8bpppixelcell::gfxb#1 2.3444444888888888E7 +(byte*) mode_8bpppixelcell::gfxb#2 5.1666667333333336E7 +(byte*) mode_8bpppixelcell::gfxb#5 7000001.0 +(byte*) mode_8bpppixelcell::gfxb#7 2000002.0 (byte) mode_8bpppixelcell::i -(byte) mode_8bpppixelcell::i#1 151.5 -(byte) mode_8bpppixelcell::i#2 202.0 +(byte) mode_8bpppixelcell::i#1 1500001.5 +(byte) mode_8bpppixelcell::i#2 2000002.0 (void()) mode_ctrl() -(byte~) mode_ctrl::$1 2002.0 -(byte~) mode_ctrl::$12 2002.0 -(byte~) mode_ctrl::$16 2002.0 -(byte~) mode_ctrl::$20 2002.0 -(byte~) mode_ctrl::$24 2002.0 -(byte~) mode_ctrl::$28 2002.0 -(byte~) mode_ctrl::$4 2002.0 -(byte~) mode_ctrl::$8 2002.0 +(byte~) mode_ctrl::$1 2.00000002E8 +(byte~) mode_ctrl::$12 2.00000002E8 +(byte~) mode_ctrl::$16 2.00000002E8 +(byte~) mode_ctrl::$20 2.00000002E8 +(byte~) mode_ctrl::$24 2.00000002E8 +(byte~) mode_ctrl::$28 2.00000002E8 +(byte~) mode_ctrl::$4 2.00000002E8 +(byte~) mode_ctrl::$8 2.00000002E8 (byte) mode_ctrl::ctrl -(byte) mode_ctrl::ctrl#0 600.5999999999999 -(byte) mode_ctrl::ctrl#1 2002.0 -(byte) mode_ctrl::ctrl#10 800.8 -(byte) mode_ctrl::ctrl#11 800.8 -(byte) mode_ctrl::ctrl#12 800.8 -(byte) mode_ctrl::ctrl#13 800.8 -(byte) mode_ctrl::ctrl#14 576.25 -(byte) mode_ctrl::ctrl#17 800.8 -(byte) mode_ctrl::ctrl#2 2002.0 -(byte) mode_ctrl::ctrl#22 500.5 -(byte) mode_ctrl::ctrl#3 2002.0 -(byte) mode_ctrl::ctrl#4 2002.0 -(byte) mode_ctrl::ctrl#5 2002.0 -(byte) mode_ctrl::ctrl#6 2002.0 +(byte) mode_ctrl::ctrl#0 6.0000000599999994E7 +(byte) mode_ctrl::ctrl#1 2.00000002E8 +(byte) mode_ctrl::ctrl#10 8.00000008E7 +(byte) mode_ctrl::ctrl#11 8.00000008E7 +(byte) mode_ctrl::ctrl#12 8.00000008E7 +(byte) mode_ctrl::ctrl#13 8.00000008E7 +(byte) mode_ctrl::ctrl#14 5.750000125E7 +(byte) mode_ctrl::ctrl#17 8.00000008E7 +(byte) mode_ctrl::ctrl#2 2.00000002E8 +(byte) mode_ctrl::ctrl#22 5.00000005E7 +(byte) mode_ctrl::ctrl#3 2.00000002E8 +(byte) mode_ctrl::ctrl#4 2.00000002E8 +(byte) mode_ctrl::ctrl#5 2.00000002E8 +(byte) mode_ctrl::ctrl#6 2.00000002E8 (void()) mode_ecmchar() -(byte~) mode_ecmchar::$2 2002.0 -(byte~) mode_ecmchar::$3 2002.0 -(byte~) mode_ecmchar::$4 2002.0 -(byte~) mode_ecmchar::$5 1001.0 -(byte~) mode_ecmchar::$6 2002.0 -(byte~) mode_ecmchar::$7 2002.0 +(byte~) mode_ecmchar::$2 2.0000002E7 +(byte~) mode_ecmchar::$3 2.0000002E7 +(byte~) mode_ecmchar::$4 2.0000002E7 +(byte~) mode_ecmchar::$5 1.0000001E7 +(byte~) mode_ecmchar::$6 2.0000002E7 +(byte~) mode_ecmchar::$7 2.0000002E7 (byte*) mode_ecmchar::ch -(byte*) mode_ecmchar::ch#1 420.59999999999997 -(byte*) mode_ecmchar::ch#2 310.4 -(byte*) mode_ecmchar::ch#3 202.0 +(byte*) mode_ecmchar::ch#1 4200000.6 +(byte*) mode_ecmchar::ch#2 3100000.4 +(byte*) mode_ecmchar::ch#3 2000002.0 (byte*) mode_ecmchar::col -(byte*) mode_ecmchar::col#1 191.1818181818182 -(byte*) mode_ecmchar::col#2 776.0 -(byte*) mode_ecmchar::col#3 202.0 +(byte*) mode_ecmchar::col#1 1909091.1818181819 +(byte*) mode_ecmchar::col#2 7750001.0 +(byte*) mode_ecmchar::col#3 2000002.0 (byte) mode_ecmchar::cx -(byte) mode_ecmchar::cx#1 1501.5 -(byte) mode_ecmchar::cx#2 364.0 +(byte) mode_ecmchar::cx#1 1.50000015E7 +(byte) mode_ecmchar::cx#2 3636364.0 (byte) mode_ecmchar::cy -(byte) mode_ecmchar::cy#1 151.5 -(byte) mode_ecmchar::cy#4 157.42857142857144 +(byte) mode_ecmchar::cy#1 1500001.5 +(byte) mode_ecmchar::cy#4 1571428.857142857 (byte) mode_ecmchar::i -(byte) mode_ecmchar::i#1 151.5 -(byte) mode_ecmchar::i#2 202.0 +(byte) mode_ecmchar::i#1 1500001.5 +(byte) mode_ecmchar::i#2 2000002.0 (void()) mode_hicolecmchar() -(byte~) mode_hicolecmchar::$2 2002.0 -(byte~) mode_hicolecmchar::$3 1001.0 -(byte~) mode_hicolecmchar::$4 2002.0 +(byte~) mode_hicolecmchar::$2 2.0000002E7 +(byte~) mode_hicolecmchar::$3 1.0000001E7 +(byte~) mode_hicolecmchar::$4 2.0000002E7 (byte*) mode_hicolecmchar::ch -(byte*) mode_hicolecmchar::ch#1 420.59999999999997 -(byte*) mode_hicolecmchar::ch#2 388.0 -(byte*) mode_hicolecmchar::ch#3 202.0 +(byte*) mode_hicolecmchar::ch#1 4200000.6 +(byte*) mode_hicolecmchar::ch#2 3875000.5 +(byte*) mode_hicolecmchar::ch#3 2000002.0 (byte*) mode_hicolecmchar::col -(byte*) mode_hicolecmchar::col#1 300.42857142857144 -(byte*) mode_hicolecmchar::col#2 517.3333333333334 -(byte*) mode_hicolecmchar::col#3 202.0 +(byte*) mode_hicolecmchar::col#1 3000000.428571428 +(byte*) mode_hicolecmchar::col#2 5166667.333333333 +(byte*) mode_hicolecmchar::col#3 2000002.0 (byte) mode_hicolecmchar::cx -(byte) mode_hicolecmchar::cx#1 1501.5 -(byte) mode_hicolecmchar::cx#2 333.6666666666667 +(byte) mode_hicolecmchar::cx#1 1.50000015E7 +(byte) mode_hicolecmchar::cx#2 3333333.666666667 (byte) mode_hicolecmchar::cy -(byte) mode_hicolecmchar::cy#1 151.5 -(byte) mode_hicolecmchar::cy#4 100.25000000000001 +(byte) mode_hicolecmchar::cy#1 1500001.5 +(byte) mode_hicolecmchar::cy#4 1000000.2499999999 (byte) mode_hicolecmchar::i -(byte) mode_hicolecmchar::i#1 151.5 -(byte) mode_hicolecmchar::i#2 202.0 +(byte) mode_hicolecmchar::i#1 1500001.5 +(byte) mode_hicolecmchar::i#2 2000002.0 (byte) mode_hicolecmchar::v -(byte) mode_hicolecmchar::v#0 1001.0 +(byte) mode_hicolecmchar::v#0 1.0000001E7 (void()) mode_hicolmcchar() -(byte~) mode_hicolmcchar::$2 2002.0 -(byte~) mode_hicolmcchar::$3 1001.0 -(byte~) mode_hicolmcchar::$4 2002.0 +(byte~) mode_hicolmcchar::$2 2.0000002E7 +(byte~) mode_hicolmcchar::$3 1.0000001E7 +(byte~) mode_hicolmcchar::$4 2.0000002E7 (byte*) mode_hicolmcchar::ch -(byte*) mode_hicolmcchar::ch#1 420.59999999999997 -(byte*) mode_hicolmcchar::ch#2 388.0 -(byte*) mode_hicolmcchar::ch#3 202.0 +(byte*) mode_hicolmcchar::ch#1 4200000.6 +(byte*) mode_hicolmcchar::ch#2 3875000.5 +(byte*) mode_hicolmcchar::ch#3 2000002.0 (byte*) mode_hicolmcchar::col -(byte*) mode_hicolmcchar::col#1 300.42857142857144 -(byte*) mode_hicolmcchar::col#2 517.3333333333334 -(byte*) mode_hicolmcchar::col#3 202.0 +(byte*) mode_hicolmcchar::col#1 3000000.428571428 +(byte*) mode_hicolmcchar::col#2 5166667.333333333 +(byte*) mode_hicolmcchar::col#3 2000002.0 (byte) mode_hicolmcchar::cx -(byte) mode_hicolmcchar::cx#1 1501.5 -(byte) mode_hicolmcchar::cx#2 333.6666666666667 +(byte) mode_hicolmcchar::cx#1 1.50000015E7 +(byte) mode_hicolmcchar::cx#2 3333333.666666667 (byte) mode_hicolmcchar::cy -(byte) mode_hicolmcchar::cy#1 151.5 -(byte) mode_hicolmcchar::cy#4 100.25000000000001 +(byte) mode_hicolmcchar::cy#1 1500001.5 +(byte) mode_hicolmcchar::cy#4 1000000.2499999999 (byte) mode_hicolmcchar::i -(byte) mode_hicolmcchar::i#1 151.5 -(byte) mode_hicolmcchar::i#2 202.0 +(byte) mode_hicolmcchar::i#1 1500001.5 +(byte) mode_hicolmcchar::i#2 2000002.0 (byte) mode_hicolmcchar::v -(byte) mode_hicolmcchar::v#0 1001.0 +(byte) mode_hicolmcchar::v#0 1.0000001E7 (void()) mode_hicolstdchar() -(byte~) mode_hicolstdchar::$2 2002.0 -(byte~) mode_hicolstdchar::$3 1001.0 -(byte~) mode_hicolstdchar::$4 2002.0 +(byte~) mode_hicolstdchar::$2 2.0000002E7 +(byte~) mode_hicolstdchar::$3 1.0000001E7 +(byte~) mode_hicolstdchar::$4 2.0000002E7 (byte*) mode_hicolstdchar::ch -(byte*) mode_hicolstdchar::ch#1 420.59999999999997 -(byte*) mode_hicolstdchar::ch#2 388.0 -(byte*) mode_hicolstdchar::ch#3 202.0 +(byte*) mode_hicolstdchar::ch#1 4200000.6 +(byte*) mode_hicolstdchar::ch#2 3875000.5 +(byte*) mode_hicolstdchar::ch#3 2000002.0 (byte*) mode_hicolstdchar::col -(byte*) mode_hicolstdchar::col#1 300.42857142857144 -(byte*) mode_hicolstdchar::col#2 517.3333333333334 -(byte*) mode_hicolstdchar::col#3 202.0 +(byte*) mode_hicolstdchar::col#1 3000000.428571428 +(byte*) mode_hicolstdchar::col#2 5166667.333333333 +(byte*) mode_hicolstdchar::col#3 2000002.0 (byte) mode_hicolstdchar::cx -(byte) mode_hicolstdchar::cx#1 1501.5 -(byte) mode_hicolstdchar::cx#2 333.6666666666667 +(byte) mode_hicolstdchar::cx#1 1.50000015E7 +(byte) mode_hicolstdchar::cx#2 3333333.666666667 (byte) mode_hicolstdchar::cy -(byte) mode_hicolstdchar::cy#1 151.5 -(byte) mode_hicolstdchar::cy#4 100.25000000000001 +(byte) mode_hicolstdchar::cy#1 1500001.5 +(byte) mode_hicolstdchar::cy#4 1000000.2499999999 (byte) mode_hicolstdchar::i -(byte) mode_hicolstdchar::i#1 151.5 -(byte) mode_hicolstdchar::i#2 202.0 +(byte) mode_hicolstdchar::i#1 1500001.5 +(byte) mode_hicolstdchar::i#2 2000002.0 (byte) mode_hicolstdchar::v -(byte) mode_hicolstdchar::v#0 1001.0 +(byte) mode_hicolstdchar::v#0 1.0000001E7 (void()) mode_mcchar() -(byte~) mode_mcchar::$2 2002.0 -(byte~) mode_mcchar::$3 2002.0 -(byte~) mode_mcchar::$4 2002.0 -(byte~) mode_mcchar::$5 1001.0 -(byte~) mode_mcchar::$6 2002.0 -(byte~) mode_mcchar::$7 2002.0 +(byte~) mode_mcchar::$2 2.0000002E7 +(byte~) mode_mcchar::$3 2.0000002E7 +(byte~) mode_mcchar::$4 2.0000002E7 +(byte~) mode_mcchar::$5 1.0000001E7 +(byte~) mode_mcchar::$6 2.0000002E7 +(byte~) mode_mcchar::$7 2.0000002E7 (byte*) mode_mcchar::ch -(byte*) mode_mcchar::ch#1 420.59999999999997 -(byte*) mode_mcchar::ch#2 310.4 -(byte*) mode_mcchar::ch#3 202.0 +(byte*) mode_mcchar::ch#1 4200000.6 +(byte*) mode_mcchar::ch#2 3100000.4 +(byte*) mode_mcchar::ch#3 2000002.0 (byte*) mode_mcchar::col -(byte*) mode_mcchar::col#1 191.1818181818182 -(byte*) mode_mcchar::col#2 776.0 -(byte*) mode_mcchar::col#3 202.0 +(byte*) mode_mcchar::col#1 1909091.1818181819 +(byte*) mode_mcchar::col#2 7750001.0 +(byte*) mode_mcchar::col#3 2000002.0 (byte) mode_mcchar::cx -(byte) mode_mcchar::cx#1 1501.5 -(byte) mode_mcchar::cx#2 364.0 +(byte) mode_mcchar::cx#1 1.50000015E7 +(byte) mode_mcchar::cx#2 3636364.0 (byte) mode_mcchar::cy -(byte) mode_mcchar::cy#1 151.5 -(byte) mode_mcchar::cy#4 157.42857142857144 +(byte) mode_mcchar::cy#1 1500001.5 +(byte) mode_mcchar::cy#4 1571428.857142857 (byte) mode_mcchar::i -(byte) mode_mcchar::i#1 151.5 -(byte) mode_mcchar::i#2 202.0 +(byte) mode_mcchar::i#1 1500001.5 +(byte) mode_mcchar::i#2 2000002.0 (void()) mode_sixsfred() -(byte~) mode_sixsfred::$2 2002.0 -(byte~) mode_sixsfred::$3 2002.0 -(byte~) mode_sixsfred::$6 2002.0 +(byte~) mode_sixsfred::$2 2.0000002E7 +(byte~) mode_sixsfred::$3 2.0000002E7 +(byte~) mode_sixsfred::$6 2.0000002E7 (byte) mode_sixsfred::ax -(byte) mode_sixsfred::ax#1 1501.5 -(byte) mode_sixsfred::ax#2 400.4 +(byte) mode_sixsfred::ax#1 1.50000015E7 +(byte) mode_sixsfred::ax#2 4000000.4 (byte) mode_sixsfred::ay -(byte) mode_sixsfred::ay#1 151.5 -(byte) mode_sixsfred::ay#4 150.375 +(byte) mode_sixsfred::ay#1 1500001.5 +(byte) mode_sixsfred::ay#4 1500000.375 (byte) mode_sixsfred::bx -(byte) mode_sixsfred::bx#1 1501.5 -(byte) mode_sixsfred::bx#2 667.3333333333334 +(byte) mode_sixsfred::bx#1 1.50000015E7 +(byte) mode_sixsfred::bx#2 6666667.333333333 (byte) mode_sixsfred::by -(byte) mode_sixsfred::by#1 151.5 -(byte) mode_sixsfred::by#4 33.666666666666664 +(byte) mode_sixsfred::by#1 1500001.5 +(byte) mode_sixsfred::by#4 333333.6666666667 (byte*) mode_sixsfred::col -(byte*) mode_sixsfred::col#1 420.59999999999997 -(byte*) mode_sixsfred::col#2 776.0 -(byte*) mode_sixsfred::col#3 202.0 +(byte*) mode_sixsfred::col#1 4200000.6 +(byte*) mode_sixsfred::col#2 7750001.0 +(byte*) mode_sixsfred::col#3 2000002.0 (byte) mode_sixsfred::cx -(byte) mode_sixsfred::cx#1 1501.5 -(byte) mode_sixsfred::cx#2 600.5999999999999 +(byte) mode_sixsfred::cx#1 1.50000015E7 +(byte) mode_sixsfred::cx#2 6000000.6 (byte) mode_sixsfred::cy -(byte) mode_sixsfred::cy#1 151.5 -(byte) mode_sixsfred::cy#4 150.375 +(byte) mode_sixsfred::cy#1 1500001.5 +(byte) mode_sixsfred::cy#4 1500000.375 (byte*) mode_sixsfred::gfxa -(byte*) mode_sixsfred::gfxa#1 420.59999999999997 -(byte*) mode_sixsfred::gfxa#2 776.0 -(byte*) mode_sixsfred::gfxa#3 202.0 +(byte*) mode_sixsfred::gfxa#1 4200000.6 +(byte*) mode_sixsfred::gfxa#2 7750001.0 +(byte*) mode_sixsfred::gfxa#3 2000002.0 (byte*) mode_sixsfred::gfxb -(byte*) mode_sixsfred::gfxb#1 420.59999999999997 -(byte*) mode_sixsfred::gfxb#2 1552.0 -(byte*) mode_sixsfred::gfxb#3 202.0 +(byte*) mode_sixsfred::gfxb#1 4200000.6 +(byte*) mode_sixsfred::gfxb#2 1.5500002E7 +(byte*) mode_sixsfred::gfxb#3 2000002.0 (byte) mode_sixsfred::i -(byte) mode_sixsfred::i#1 151.5 -(byte) mode_sixsfred::i#2 202.0 +(byte) mode_sixsfred::i#1 1500001.5 +(byte) mode_sixsfred::i#2 2000002.0 (byte) mode_sixsfred::row -(byte) mode_sixsfred::row#0 2002.0 +(byte) mode_sixsfred::row#0 2.0000002E7 (void()) mode_sixsfred2() -(byte~) mode_sixsfred2::$2 2002.0 -(byte~) mode_sixsfred2::$3 1001.0 -(byte~) mode_sixsfred2::$4 2002.0 -(byte~) mode_sixsfred2::$5 2002.0 -(byte~) mode_sixsfred2::$8 2002.0 +(byte~) mode_sixsfred2::$2 2.0000002E7 +(byte~) mode_sixsfred2::$3 1.0000001E7 +(byte~) mode_sixsfred2::$4 2.0000002E7 +(byte~) mode_sixsfred2::$5 2.0000002E7 +(byte~) mode_sixsfred2::$8 2.0000002E7 (byte) mode_sixsfred2::ax -(byte) mode_sixsfred2::ax#1 1501.5 -(byte) mode_sixsfred2::ax#2 400.4 +(byte) mode_sixsfred2::ax#1 1.50000015E7 +(byte) mode_sixsfred2::ax#2 4000000.4 (byte) mode_sixsfred2::ay -(byte) mode_sixsfred2::ay#1 151.5 -(byte) mode_sixsfred2::ay#4 150.375 +(byte) mode_sixsfred2::ay#1 1500001.5 +(byte) mode_sixsfred2::ay#4 1500000.375 (byte) mode_sixsfred2::bx -(byte) mode_sixsfred2::bx#1 1501.5 -(byte) mode_sixsfred2::bx#2 667.3333333333334 +(byte) mode_sixsfred2::bx#1 1.50000015E7 +(byte) mode_sixsfred2::bx#2 6666667.333333333 (byte) mode_sixsfred2::by -(byte) mode_sixsfred2::by#1 151.5 -(byte) mode_sixsfred2::by#4 33.666666666666664 +(byte) mode_sixsfred2::by#1 1500001.5 +(byte) mode_sixsfred2::by#4 333333.6666666667 (byte*) mode_sixsfred2::col -(byte*) mode_sixsfred2::col#1 420.59999999999997 -(byte*) mode_sixsfred2::col#2 517.3333333333334 -(byte*) mode_sixsfred2::col#3 202.0 +(byte*) mode_sixsfred2::col#1 4200000.6 +(byte*) mode_sixsfred2::col#2 5166667.333333333 +(byte*) mode_sixsfred2::col#3 2000002.0 (byte) mode_sixsfred2::cx -(byte) mode_sixsfred2::cx#1 1501.5 -(byte) mode_sixsfred2::cx#2 429.0 +(byte) mode_sixsfred2::cx#1 1.50000015E7 +(byte) mode_sixsfred2::cx#2 4285714.714285715 (byte) mode_sixsfred2::cy -(byte) mode_sixsfred2::cy#1 151.5 -(byte) mode_sixsfred2::cy#4 120.29999999999998 +(byte) mode_sixsfred2::cy#1 1500001.5 +(byte) mode_sixsfred2::cy#4 1200000.3 (byte*) mode_sixsfred2::gfxa -(byte*) mode_sixsfred2::gfxa#1 420.59999999999997 -(byte*) mode_sixsfred2::gfxa#2 776.0 -(byte*) mode_sixsfred2::gfxa#3 202.0 +(byte*) mode_sixsfred2::gfxa#1 4200000.6 +(byte*) mode_sixsfred2::gfxa#2 7750001.0 +(byte*) mode_sixsfred2::gfxa#3 2000002.0 (byte*) mode_sixsfred2::gfxb -(byte*) mode_sixsfred2::gfxb#1 420.59999999999997 -(byte*) mode_sixsfred2::gfxb#2 1552.0 -(byte*) mode_sixsfred2::gfxb#3 202.0 +(byte*) mode_sixsfred2::gfxb#1 4200000.6 +(byte*) mode_sixsfred2::gfxb#2 1.5500002E7 +(byte*) mode_sixsfred2::gfxb#3 2000002.0 (byte) mode_sixsfred2::i -(byte) mode_sixsfred2::i#1 151.5 -(byte) mode_sixsfred2::i#2 202.0 +(byte) mode_sixsfred2::i#1 1500001.5 +(byte) mode_sixsfred2::i#2 2000002.0 (byte) mode_sixsfred2::row -(byte) mode_sixsfred2::row#0 2002.0 +(byte) mode_sixsfred2::row#0 2.0000002E7 (void()) mode_stdbitmap() -(byte~) mode_stdbitmap::$4 2002.0 -(byte~) mode_stdbitmap::$7 2002.0 -(byte~) mode_stdbitmap::$8 2002.0 +(byte~) mode_stdbitmap::$4 2.0000002E7 +(byte~) mode_stdbitmap::$7 2.0000002E7 +(byte~) mode_stdbitmap::$8 2.0000002E7 (byte*) mode_stdbitmap::ch -(byte*) mode_stdbitmap::ch#1 420.59999999999997 -(byte*) mode_stdbitmap::ch#2 443.42857142857144 -(byte*) mode_stdbitmap::ch#3 202.0 +(byte*) mode_stdbitmap::ch#1 4200000.6 +(byte*) mode_stdbitmap::ch#2 4428572.0 +(byte*) mode_stdbitmap::ch#3 2000002.0 (byte) mode_stdbitmap::col -(byte) mode_stdbitmap::col#0 1501.5 +(byte) mode_stdbitmap::col#0 1.50000015E7 (byte) mode_stdbitmap::col2 -(byte) mode_stdbitmap::col2#0 1001.0 +(byte) mode_stdbitmap::col2#0 1.0000001E7 (byte) mode_stdbitmap::cx -(byte) mode_stdbitmap::cx#1 1501.5 -(byte) mode_stdbitmap::cx#2 375.375 +(byte) mode_stdbitmap::cx#1 1.50000015E7 +(byte) mode_stdbitmap::cx#2 3750000.375 (byte) mode_stdbitmap::cy -(byte) mode_stdbitmap::cy#1 151.5 -(byte) mode_stdbitmap::cy#4 109.36363636363637 +(byte) mode_stdbitmap::cy#1 1500001.5 +(byte) mode_stdbitmap::cy#4 1090909.3636363638 (byte) mode_stdbitmap::i -(byte) mode_stdbitmap::i#1 151.5 -(byte) mode_stdbitmap::i#2 202.0 +(byte) mode_stdbitmap::i#1 1500001.5 +(byte) mode_stdbitmap::i#2 2000002.0 (byte) mode_stdbitmap::l -(byte) mode_stdbitmap::l#1 202.0 -(byte) mode_stdbitmap::l#2 101.0 +(byte) mode_stdbitmap::l#1 2000002.0 +(byte) mode_stdbitmap::l#2 1000000.9999999999 (void()) mode_stdchar() -(byte~) mode_stdchar::$2 2002.0 -(byte~) mode_stdchar::$3 2002.0 -(byte~) mode_stdchar::$4 2002.0 -(byte~) mode_stdchar::$5 1001.0 -(byte~) mode_stdchar::$6 2002.0 -(byte~) mode_stdchar::$7 2002.0 +(byte~) mode_stdchar::$2 2.0000002E7 +(byte~) mode_stdchar::$3 2.0000002E7 +(byte~) mode_stdchar::$4 2.0000002E7 +(byte~) mode_stdchar::$5 1.0000001E7 +(byte~) mode_stdchar::$6 2.0000002E7 +(byte~) mode_stdchar::$7 2.0000002E7 (byte*) mode_stdchar::ch -(byte*) mode_stdchar::ch#1 420.59999999999997 -(byte*) mode_stdchar::ch#2 310.4 -(byte*) mode_stdchar::ch#3 202.0 +(byte*) mode_stdchar::ch#1 4200000.6 +(byte*) mode_stdchar::ch#2 3100000.4 +(byte*) mode_stdchar::ch#3 2000002.0 (byte*) mode_stdchar::col -(byte*) mode_stdchar::col#1 191.1818181818182 -(byte*) mode_stdchar::col#2 776.0 -(byte*) mode_stdchar::col#3 202.0 +(byte*) mode_stdchar::col#1 1909091.1818181819 +(byte*) mode_stdchar::col#2 7750001.0 +(byte*) mode_stdchar::col#3 2000002.0 (byte) mode_stdchar::cx -(byte) mode_stdchar::cx#1 1501.5 -(byte) mode_stdchar::cx#2 364.0 +(byte) mode_stdchar::cx#1 1.50000015E7 +(byte) mode_stdchar::cx#2 3636364.0 (byte) mode_stdchar::cy -(byte) mode_stdchar::cy#1 151.5 -(byte) mode_stdchar::cy#4 157.42857142857144 +(byte) mode_stdchar::cy#1 1500001.5 +(byte) mode_stdchar::cy#4 1571428.857142857 (byte) mode_stdchar::i -(byte) mode_stdchar::i#1 151.5 -(byte) mode_stdchar::i#2 202.0 +(byte) mode_stdchar::i#1 1500001.5 +(byte) mode_stdchar::i#2 2000002.0 (void()) mode_twoplanebitmap() -(byte~) mode_twoplanebitmap::$2 2002.0 -(byte~) mode_twoplanebitmap::$3 1001.0 -(byte~) mode_twoplanebitmap::$4 2002.0 -(byte~) mode_twoplanebitmap::$5 2002.0 -(byte~) mode_twoplanebitmap::$8 2002.0 +(byte~) mode_twoplanebitmap::$2 2.0000002E7 +(byte~) mode_twoplanebitmap::$3 1.0000001E7 +(byte~) mode_twoplanebitmap::$4 2.0000002E7 +(byte~) mode_twoplanebitmap::$5 2.0000002E7 +(byte~) mode_twoplanebitmap::$8 2.0000002E7 (byte) mode_twoplanebitmap::ax -(byte) mode_twoplanebitmap::ax#1 1501.5 -(byte) mode_twoplanebitmap::ax#2 250.25 +(byte) mode_twoplanebitmap::ax#1 1.50000015E7 +(byte) mode_twoplanebitmap::ax#2 2500000.25 (byte) mode_twoplanebitmap::ay -(byte) mode_twoplanebitmap::ay#1 151.5 -(byte) mode_twoplanebitmap::ay#5 109.36363636363637 +(byte) mode_twoplanebitmap::ay#1 1500001.5 +(byte) mode_twoplanebitmap::ay#5 1090909.3636363638 (byte) mode_twoplanebitmap::bx -(byte) mode_twoplanebitmap::bx#1 1501.5 -(byte) mode_twoplanebitmap::bx#2 667.3333333333334 +(byte) mode_twoplanebitmap::bx#1 1.50000015E7 +(byte) mode_twoplanebitmap::bx#2 6666667.333333333 (byte) mode_twoplanebitmap::by -(byte) mode_twoplanebitmap::by#1 151.5 -(byte) mode_twoplanebitmap::by#4 33.666666666666664 +(byte) mode_twoplanebitmap::by#1 1500001.5 +(byte) mode_twoplanebitmap::by#4 333333.6666666667 (byte*) mode_twoplanebitmap::col -(byte*) mode_twoplanebitmap::col#1 420.59999999999997 -(byte*) mode_twoplanebitmap::col#2 517.3333333333334 -(byte*) mode_twoplanebitmap::col#3 202.0 +(byte*) mode_twoplanebitmap::col#1 4200000.6 +(byte*) mode_twoplanebitmap::col#2 5166667.333333333 +(byte*) mode_twoplanebitmap::col#3 2000002.0 (byte) mode_twoplanebitmap::cx -(byte) mode_twoplanebitmap::cx#1 1501.5 -(byte) mode_twoplanebitmap::cx#2 429.0 +(byte) mode_twoplanebitmap::cx#1 1.50000015E7 +(byte) mode_twoplanebitmap::cx#2 4285714.714285715 (byte) mode_twoplanebitmap::cy -(byte) mode_twoplanebitmap::cy#1 151.5 -(byte) mode_twoplanebitmap::cy#4 120.29999999999998 +(byte) mode_twoplanebitmap::cy#1 1500001.5 +(byte) mode_twoplanebitmap::cy#4 1200000.3 (byte*) mode_twoplanebitmap::gfxa -(byte*) mode_twoplanebitmap::gfxa#1 2002.0 -(byte*) mode_twoplanebitmap::gfxa#2 2002.0 -(byte*) mode_twoplanebitmap::gfxa#3 1021.2 -(byte*) mode_twoplanebitmap::gfxa#6 620.8 -(byte*) mode_twoplanebitmap::gfxa#7 202.0 +(byte*) mode_twoplanebitmap::gfxa#1 2.0000002E7 +(byte*) mode_twoplanebitmap::gfxa#2 2.0000002E7 +(byte*) mode_twoplanebitmap::gfxa#3 1.02000012E7 +(byte*) mode_twoplanebitmap::gfxa#6 6200000.8 +(byte*) mode_twoplanebitmap::gfxa#7 2000002.0 (byte*) mode_twoplanebitmap::gfxb -(byte*) mode_twoplanebitmap::gfxb#1 420.59999999999997 -(byte*) mode_twoplanebitmap::gfxb#2 1552.0 -(byte*) mode_twoplanebitmap::gfxb#3 202.0 +(byte*) mode_twoplanebitmap::gfxb#1 4200000.6 +(byte*) mode_twoplanebitmap::gfxb#2 1.5500002E7 +(byte*) mode_twoplanebitmap::gfxb#3 2000002.0 (byte) mode_twoplanebitmap::i -(byte) mode_twoplanebitmap::i#1 151.5 -(byte) mode_twoplanebitmap::i#2 202.0 +(byte) mode_twoplanebitmap::i#1 1500001.5 +(byte) mode_twoplanebitmap::i#2 2000002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 2002.0 -(byte*) print_char_cursor#17 821.0 -(byte*) print_char_cursor#19 101.0 -(byte*) print_char_cursor#32 572.0 -(byte*) print_char_cursor#97 202.0 +(byte*) print_char_cursor#1 2.0000002E7 +(byte*) print_char_cursor#17 8200001.0 +(byte*) print_char_cursor#19 1000001.0 +(byte*) print_char_cursor#32 1.4328571434285712E9 +(byte*) print_char_cursor#97 2000002.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#17 8.583333333333332 -(byte*) print_line_cursor#18 2004.0 -(byte*) print_line_cursor#19 641.0 +(byte*) print_line_cursor#17 916666.8333333333 +(byte*) print_line_cursor#18 2.0010000003E10 +(byte*) print_line_cursor#19 6.000400001E9 (void()) print_ln() (byte*) print_screen (void()) print_set_screen((byte*) print_set_screen::screen) (byte*) print_set_screen::screen (void()) print_str_lines((byte*) print_str_lines::str) (byte) print_str_lines::ch -(byte) print_str_lines::ch#0 667.3333333333334 +(byte) print_str_lines::ch#0 6666667.333333333 (byte*) print_str_lines::str -(byte*) print_str_lines::str#0 233.66666666666669 -(byte*) print_str_lines::str#2 151.5 -(byte*) print_str_lines::str#3 1552.0 +(byte*) print_str_lines::str#0 2333333.666666667 +(byte*) print_str_lines::str#2 1500001.5 +(byte*) print_str_lines::str#3 1.5500002E7 Initial phi equivalence classes [ menu::i#2 menu::i#1 ] @@ -17349,315 +17349,315 @@ print_set_screen: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:273 [ bitmap_init::$7 ] has ALU potential. -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) menu::CHARSET/(word) $4000 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) menu::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) menu::i#2) [ menu::i#2 ] ( main:2::menu:9 [ menu::i#2 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) menu::CHARSET/(word) $4000 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) menu::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) menu::i#2) [ menu::i#2 ] ( main:2::menu:9 [ menu::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ menu::i#2 menu::i#1 ] -Statement [24] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@3 [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] ) always clobbers reg byte a -Statement [25] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] ) always clobbers reg byte a reg byte y -Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [127] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [128] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ) always clobbers reg byte a +Statement [24] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@3 [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [127] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [128] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] -Statement [142] (word~) mode_8bppchunkybmm::$7 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ) always clobbers reg byte a -Statement [143] (byte) mode_8bppchunkybmm::c#0 ← (byte)(word~) mode_8bppchunkybmm::$7 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ) always clobbers reg byte a -Statement [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ) always clobbers reg byte y +Statement [142] (word~) mode_8bppchunkybmm::$7 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] { } ) always clobbers reg byte a +Statement [143] (byte) mode_8bppchunkybmm::c#0 ← (byte)(word~) mode_8bppchunkybmm::$7 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] { } ) always clobbers reg byte a +Statement [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] -Statement [147] if((word) mode_8bppchunkybmm::x#1!=(word) $140) goto mode_8bppchunkybmm::@4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ) always clobbers reg byte a -Statement [157] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@2 [ dtv_control#114 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 ] ) always clobbers reg byte a +Statement [147] if((word) mode_8bppchunkybmm::x#1!=(word) $140) goto mode_8bppchunkybmm::@4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] { } ) always clobbers reg byte a +Statement [157] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@2 [ dtv_control#114 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] -Statement [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR [ dtv_control#114 mode_ctrl::ctrl#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#1 ] ) always clobbers reg byte a -Statement [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR [ dtv_control#114 mode_ctrl::ctrl#2 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#2 ] ) always clobbers reg byte a -Statement [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN [ dtv_control#114 mode_ctrl::ctrl#3 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#3 ] ) always clobbers reg byte a -Statement [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF [ dtv_control#114 mode_ctrl::ctrl#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#4 ] ) always clobbers reg byte a -Statement [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY [ dtv_control#114 mode_ctrl::ctrl#5 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#5 ] ) always clobbers reg byte a -Statement [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF [ dtv_control#114 mode_ctrl::ctrl#6 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#6 ] ) always clobbers reg byte a -Statement [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:9::keyboard_key_pressed:33 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:41 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:48 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:55 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:62 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:69 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:76 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:83 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:90 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:97 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:104 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:111 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a +Statement [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR [ dtv_control#114 mode_ctrl::ctrl#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } ) always clobbers reg byte a +Statement [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR [ dtv_control#114 mode_ctrl::ctrl#2 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } ) always clobbers reg byte a +Statement [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN [ dtv_control#114 mode_ctrl::ctrl#3 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } ) always clobbers reg byte a +Statement [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF [ dtv_control#114 mode_ctrl::ctrl#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } ) always clobbers reg byte a +Statement [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY [ dtv_control#114 mode_ctrl::ctrl#5 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } ) always clobbers reg byte a +Statement [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF [ dtv_control#114 mode_ctrl::ctrl#6 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } ) always clobbers reg byte a +Statement [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:9::keyboard_key_pressed:33 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:204 [ keyboard_key_pressed::colidx#0 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] -Statement [220] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [220] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [228] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [229] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [230] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [231] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEA [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [232] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [233] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [234] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [235] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [236] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [237] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEB [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [238] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [239] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [240] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [241] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [242] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [250] (byte~) mode_8bpppixelcell::$3 ← (byte~) mode_8bpppixelcell::$2 << (byte) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ) always clobbers reg byte a +Statement [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [228] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [229] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [230] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [231] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEA [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [232] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [233] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [234] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [235] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [236] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEB [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [239] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [240] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [241] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [242] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [250] (byte~) mode_8bpppixelcell::$3 ← (byte~) mode_8bpppixelcell::$2 << (byte) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] -Statement [251] (byte~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ) always clobbers reg byte a +Statement [251] (byte~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:212 [ mode_8bpppixelcell::$3 ] -Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$5 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ) always clobbers reg byte y +Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$5 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] -Statement [259] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [259] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] Removing always clobbered register reg byte y as potential for zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] -Statement [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ) always clobbers reg byte y +Statement [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] Removing always clobbered register reg byte y as potential for zp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] -Statement [279] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [283] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [284] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [285] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [286] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred::PLANEA [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [287] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [288] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [289] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [290] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [291] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [292] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred::PLANEB [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [293] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [294] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [295] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [296] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [297] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [298] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [306] (byte~) mode_sixsfred::$2 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ) always clobbers reg byte a +Statement [279] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [283] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [284] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [285] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [286] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred::PLANEA [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [287] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [288] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [289] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [290] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [291] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [292] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred::PLANEB [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [293] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [294] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [295] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [296] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [297] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [298] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [303] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [306] (byte~) mode_sixsfred::$2 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] -Statement [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$3 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ) always clobbers reg byte y +Statement [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$3 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] -Statement [316] (byte~) mode_sixsfred::$6 ← (byte) mode_sixsfred::ay#4 >> (byte) 1 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ) always clobbers reg byte a +Statement [316] (byte~) mode_sixsfred::$6 ← (byte) mode_sixsfred::ay#4 >> (byte) 1 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] -Statement [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte*) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte*) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] -Statement [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte) $1b [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte) $1b [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] Removing always clobbered register reg byte y as potential for zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] Removing always clobbered register reg byte a as potential for zp[1]:43 [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:43 [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] -Statement [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [336] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [337] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [338] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [339] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEA [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [340] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [341] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [342] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [343] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [344] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [345] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEB [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [346] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [347] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [348] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [349] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [350] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_twoplanebitmap::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [351] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [356] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [357] *((const byte*) BGCOL1) ← (byte) $70 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [358] *((const byte*) BGCOL2) ← (byte) $d4 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [362] (byte~) mode_twoplanebitmap::$3 ← (byte~) mode_twoplanebitmap::$2 << (byte) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ) always clobbers reg byte a +Statement [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [336] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [337] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [338] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [339] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEA [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [340] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [341] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [342] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [343] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [344] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [345] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEB [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [346] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [347] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [348] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [349] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [350] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_twoplanebitmap::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [351] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [356] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [357] *((const byte*) BGCOL1) ← (byte) $70 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [358] *((const byte*) BGCOL2) ← (byte) $d4 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [362] (byte~) mode_twoplanebitmap::$3 ← (byte~) mode_twoplanebitmap::$2 << (byte) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] -Statement [363] (byte~) mode_twoplanebitmap::$4 ← (byte) mode_twoplanebitmap::cx#2 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ) always clobbers reg byte a +Statement [363] (byte~) mode_twoplanebitmap::$4 ← (byte) mode_twoplanebitmap::cx#2 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:221 [ mode_twoplanebitmap::$3 ] -Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$5 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ) always clobbers reg byte y +Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$5 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] -Statement [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) $ff [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) $ff [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] Removing always clobbered register reg byte y as potential for zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] -Statement [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte) $f [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte) $f [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] Removing always clobbered register reg byte y as potential for zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] Removing always clobbered register reg byte a as potential for zp[1]:56 [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:56 [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] -Statement [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) 0 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [396] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [397] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [398] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [399] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred2::PLANEA [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [400] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [401] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [402] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [403] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [404] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [405] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred2::PLANEB [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [406] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [407] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [408] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [409] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [410] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred2::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [411] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [416] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [420] (byte~) mode_sixsfred2::$3 ← (byte~) mode_sixsfred2::$2 << (byte) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ) always clobbers reg byte a +Statement [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) 0 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [396] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [397] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [398] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [399] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred2::PLANEA [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [400] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [401] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [402] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [403] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [404] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [405] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred2::PLANEB [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [406] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [407] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [408] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [409] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [410] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred2::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [411] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [416] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [420] (byte~) mode_sixsfred2::$3 ← (byte~) mode_sixsfred2::$2 << (byte) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] -Statement [421] (byte~) mode_sixsfred2::$4 ← (byte) mode_sixsfred2::cy#4 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ) always clobbers reg byte a +Statement [421] (byte~) mode_sixsfred2::$4 ← (byte) mode_sixsfred2::cy#4 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:226 [ mode_sixsfred2::$3 ] -Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$5 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ) always clobbers reg byte y +Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$5 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] -Statement [431] (byte~) mode_sixsfred2::$8 ← (byte) mode_sixsfred2::ay#4 >> (byte) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ) always clobbers reg byte a +Statement [431] (byte~) mode_sixsfred2::$8 ← (byte) mode_sixsfred2::ay#4 >> (byte) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] Removing always clobbered register reg byte a as potential for zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] -Statement [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte*) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte*) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] Removing always clobbered register reg byte y as potential for zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] -Statement [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte) $1b [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte) $1b [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] Removing always clobbered register reg byte y as potential for zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] Removing always clobbered register reg byte a as potential for zp[1]:69 [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:69 [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] -Statement [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [451] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [452] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [453] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [454] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [455] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolmcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [456] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [457] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [458] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolmcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [463] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [464] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [465] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [466] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [470] (byte~) mode_hicolmcchar::$3 ← (byte~) mode_hicolmcchar::$2 << (byte) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ) always clobbers reg byte a +Statement [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [451] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [452] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [453] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [454] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [455] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolmcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [456] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [457] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [458] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolmcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [463] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [464] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [465] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [466] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [470] (byte~) mode_hicolmcchar::$3 ← (byte~) mode_hicolmcchar::$2 << (byte) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] -Statement [471] (byte~) mode_hicolmcchar::$4 ← (byte) mode_hicolmcchar::cx#2 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ) always clobbers reg byte a +Statement [471] (byte~) mode_hicolmcchar::$4 ← (byte) mode_hicolmcchar::cx#2 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:232 [ mode_hicolmcchar::$3 ] -Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ) always clobbers reg byte y +Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:234 [ mode_hicolmcchar::v#0 ] -Statement [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ) always clobbers reg byte y -Statement [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [486] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [487] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [488] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [489] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [490] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [491] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [492] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [497] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [498] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [499] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) BGCOL4) ← (byte) $5c [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [505] (byte~) mode_hicolecmchar::$3 ← (byte~) mode_hicolecmchar::$2 << (byte) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ) always clobbers reg byte a +Statement [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] { } ) always clobbers reg byte y +Statement [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [485] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [486] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [487] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [488] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [489] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [490] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [491] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [492] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [497] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [498] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [499] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [500] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [501] *((const byte*) BGCOL4) ← (byte) $5c [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [505] (byte~) mode_hicolecmchar::$3 ← (byte~) mode_hicolecmchar::$2 << (byte) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] -Statement [506] (byte~) mode_hicolecmchar::$4 ← (byte) mode_hicolecmchar::cx#2 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ) always clobbers reg byte a +Statement [506] (byte~) mode_hicolecmchar::$4 ← (byte) mode_hicolecmchar::cx#2 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:236 [ mode_hicolecmchar::$3 ] -Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ) always clobbers reg byte y +Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:238 [ mode_hicolecmchar::v#0 ] -Statement [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ) always clobbers reg byte y -Statement [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [520] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [521] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [522] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [523] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [524] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolstdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [525] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [526] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [527] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolstdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [532] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [533] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [537] (byte~) mode_hicolstdchar::$3 ← (byte~) mode_hicolstdchar::$2 << (byte) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ) always clobbers reg byte a +Statement [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] { } ) always clobbers reg byte y +Statement [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [520] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [521] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [522] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [523] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [524] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolstdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [525] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [526] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [527] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolstdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [532] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [533] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [537] (byte~) mode_hicolstdchar::$3 ← (byte~) mode_hicolstdchar::$2 << (byte) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] -Statement [538] (byte~) mode_hicolstdchar::$4 ← (byte) mode_hicolstdchar::cx#2 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ) always clobbers reg byte a +Statement [538] (byte~) mode_hicolstdchar::$4 ← (byte) mode_hicolstdchar::cx#2 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:240 [ mode_hicolstdchar::$3 ] -Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ) always clobbers reg byte y +Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:242 [ mode_hicolstdchar::v#0 ] -Statement [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ) always clobbers reg byte y -Statement [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [552] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [553] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [554] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdbitmap::BITMAP/(word) $4000 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [555] *((const byte*) VIC_CONTROL) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [556] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [557] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdbitmap::BITMAP&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [559] *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) [ mode_stdbitmap::i#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::i#2 ] ) always clobbers reg byte a +Statement [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] { } ) always clobbers reg byte y +Statement [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [552] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [553] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [554] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdbitmap::BITMAP/(word) $4000 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [555] *((const byte*) VIC_CONTROL) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [556] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [557] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdbitmap::BITMAP&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [559] *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) [ mode_stdbitmap::i#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] -Statement [562] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [563] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [566] (byte~) mode_stdbitmap::$4 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ) always clobbers reg byte a +Statement [562] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [563] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [566] (byte~) mode_stdbitmap::$4 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] -Statement [568] (byte) mode_stdbitmap::col2#0 ← (byte) $f - (byte) mode_stdbitmap::col#0 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ) always clobbers reg byte a +Statement [568] (byte) mode_stdbitmap::col2#0 ← (byte) $f - (byte) mode_stdbitmap::col#0 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:244 [ mode_stdbitmap::col#0 ] -Statement [569] (byte~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 << (byte) 4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ) always clobbers reg byte a +Statement [569] (byte~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 << (byte) 4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:245 [ mode_stdbitmap::col2#0 ] -Statement [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$8 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ) always clobbers reg byte y +Statement [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$8 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] -Statement [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a +Statement [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:248 [ bitmap_line::x0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:249 [ bitmap_line::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:250 [ bitmap_line::y0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:251 [ bitmap_line::y1#0 ] -Statement [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a +Statement [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:252 [ bitmap_line::xd#2 ] -Statement [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a +Statement [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:255 [ bitmap_line::xd#1 ] -Statement [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Statement [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] @@ -17679,9 +17679,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:119 [ bitma Removing always clobbered register reg byte a as potential for zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] @@ -17707,423 +17707,423 @@ Removing always clobbered register reg byte y as potential for zp[1]:119 [ bitma Removing always clobbered register reg byte y as potential for zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [674] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [722] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [725] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [674] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [722] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [725] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [736] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [736] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Statement [737] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [752] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [737] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [752] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [758] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [759] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [760] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [761] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [762] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_mcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [763] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [764] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [765] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_mcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [767] *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) [ mode_mcchar::i#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::i#2 ] ) always clobbers reg byte a +Statement [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [758] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [759] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [760] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [761] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [762] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_mcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [763] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [764] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [765] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_mcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [767] *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) [ mode_mcchar::i#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] -Statement [770] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [771] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [772] *((const byte*) BGCOL2) ← (const byte) GREEN [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [773] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [776] (byte~) mode_mcchar::$2 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ) always clobbers reg byte a +Statement [770] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [771] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [772] *((const byte*) BGCOL2) ← (const byte) GREEN [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [773] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [776] (byte~) mode_mcchar::$2 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] -Statement [778] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$3 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y +Statement [778] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$3 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] -Statement [780] (byte~) mode_mcchar::$4 ← (byte) mode_mcchar::cy#4 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ) always clobbers reg byte a -Statement [781] (byte~) mode_mcchar::$5 ← (byte~) mode_mcchar::$4 << (byte) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ) always clobbers reg byte a -Statement [782] (byte~) mode_mcchar::$6 ← (byte) mode_mcchar::cx#2 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ) always clobbers reg byte a +Statement [780] (byte~) mode_mcchar::$4 ← (byte) mode_mcchar::cy#4 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] { } ) always clobbers reg byte a +Statement [781] (byte~) mode_mcchar::$5 ← (byte~) mode_mcchar::$4 << (byte) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] { } ) always clobbers reg byte a +Statement [782] (byte~) mode_mcchar::$6 ← (byte) mode_mcchar::cx#2 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:279 [ mode_mcchar::$5 ] -Statement [784] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$7 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y -Statement [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [794] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [795] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [796] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [797] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [798] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_ecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [799] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [800] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [801] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_ecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [803] *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) [ mode_ecmchar::i#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::i#2 ] ) always clobbers reg byte a +Statement [784] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$7 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] { } ) always clobbers reg byte y +Statement [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [794] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [795] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [796] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [797] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [798] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_ecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [799] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [800] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [801] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_ecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [803] *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) [ mode_ecmchar::i#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] -Statement [806] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [807] *((const byte*) BGCOL1) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [808] *((const byte*) BGCOL2) ← (byte) 2 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [809] *((const byte*) BGCOL3) ← (byte) 5 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [810] *((const byte*) BGCOL4) ← (byte) 6 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [813] (byte~) mode_ecmchar::$2 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ) always clobbers reg byte a +Statement [806] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [807] *((const byte*) BGCOL1) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [808] *((const byte*) BGCOL2) ← (byte) 2 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [809] *((const byte*) BGCOL3) ← (byte) 5 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [810] *((const byte*) BGCOL4) ← (byte) 6 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [813] (byte~) mode_ecmchar::$2 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] -Statement [815] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$3 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y +Statement [815] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$3 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] -Statement [817] (byte~) mode_ecmchar::$4 ← (byte) mode_ecmchar::cy#4 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ) always clobbers reg byte a -Statement [818] (byte~) mode_ecmchar::$5 ← (byte~) mode_ecmchar::$4 << (byte) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ) always clobbers reg byte a -Statement [819] (byte~) mode_ecmchar::$6 ← (byte) mode_ecmchar::cx#2 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ) always clobbers reg byte a +Statement [817] (byte~) mode_ecmchar::$4 ← (byte) mode_ecmchar::cy#4 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] { } ) always clobbers reg byte a +Statement [818] (byte~) mode_ecmchar::$5 ← (byte~) mode_ecmchar::$4 << (byte) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] { } ) always clobbers reg byte a +Statement [819] (byte~) mode_ecmchar::$6 ← (byte) mode_ecmchar::cx#2 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:285 [ mode_ecmchar::$5 ] -Statement [821] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$7 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y -Statement [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [831] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [832] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [833] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [834] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [835] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [836] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [837] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [838] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [840] *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) [ mode_stdchar::i#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::i#2 ] ) always clobbers reg byte a +Statement [821] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$7 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] { } ) always clobbers reg byte y +Statement [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [831] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [832] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [833] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [834] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [835] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [836] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [837] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [838] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [840] *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) [ mode_stdchar::i#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] -Statement [843] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [844] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [847] (byte~) mode_stdchar::$2 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ) always clobbers reg byte a +Statement [843] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [844] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [847] (byte~) mode_stdchar::$2 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -Statement [849] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$3 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y +Statement [849] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$3 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -Statement [851] (byte~) mode_stdchar::$4 ← (byte) mode_stdchar::cy#4 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ) always clobbers reg byte a -Statement [852] (byte~) mode_stdchar::$5 ← (byte~) mode_stdchar::$4 << (byte) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ) always clobbers reg byte a -Statement [853] (byte~) mode_stdchar::$6 ← (byte) mode_stdchar::cx#2 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ) always clobbers reg byte a +Statement [851] (byte~) mode_stdchar::$4 ← (byte) mode_stdchar::cy#4 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] { } ) always clobbers reg byte a +Statement [852] (byte~) mode_stdchar::$5 ← (byte~) mode_stdchar::$4 << (byte) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] { } ) always clobbers reg byte a +Statement [853] (byte~) mode_stdchar::$6 ← (byte) mode_stdchar::cx#2 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:291 [ mode_stdchar::$5 ] -Statement [855] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$7 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y -Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y +Statement [855] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$7 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] { } ) always clobbers reg byte y +Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:294 [ print_str_lines::ch#0 ] -Statement [878] (byte*) print_char_cursor#97 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ) always clobbers reg byte a -Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [891] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) menu::CHARSET/(word) $4000 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) menu::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) menu::i#2) [ menu::i#2 ] ( main:2::menu:9 [ menu::i#2 ] ) always clobbers reg byte a -Statement [24] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@3 [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] ) always clobbers reg byte a -Statement [25] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] ) always clobbers reg byte a -Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] ) always clobbers reg byte a reg byte y -Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [127] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [128] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] ) always clobbers reg byte a -Statement [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [142] (word~) mode_8bppchunkybmm::$7 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ) always clobbers reg byte a -Statement [143] (byte) mode_8bppchunkybmm::c#0 ← (byte)(word~) mode_8bppchunkybmm::$7 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ) always clobbers reg byte a -Statement [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ) always clobbers reg byte y -Statement [147] if((word) mode_8bppchunkybmm::x#1!=(word) $140) goto mode_8bppchunkybmm::@4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ) always clobbers reg byte a -Statement [157] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@2 [ dtv_control#114 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 ] ) always clobbers reg byte a -Statement [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR [ dtv_control#114 mode_ctrl::ctrl#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#1 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#1 ] ) always clobbers reg byte a -Statement [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR [ dtv_control#114 mode_ctrl::ctrl#2 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#2 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#2 ] ) always clobbers reg byte a -Statement [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN [ dtv_control#114 mode_ctrl::ctrl#3 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#3 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#3 ] ) always clobbers reg byte a -Statement [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF [ dtv_control#114 mode_ctrl::ctrl#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#4 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#4 ] ) always clobbers reg byte a -Statement [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY [ dtv_control#114 mode_ctrl::ctrl#5 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#5 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#5 ] ) always clobbers reg byte a -Statement [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF [ dtv_control#114 mode_ctrl::ctrl#6 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#6 ] ) always clobbers reg byte a -Statement [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:9::keyboard_key_pressed:33 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:41 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:48 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:55 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:62 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:69 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:76 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:83 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:90 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:97 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:104 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::keyboard_key_pressed:111 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a -Statement [220] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [878] (byte*) print_char_cursor#97 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] { } ) always clobbers reg byte a +Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] { } ) always clobbers reg byte a +Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] { } ) always clobbers reg byte a +Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [891] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) menu::CHARSET/(word) $4000 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) menu::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) menu::i#2) [ menu::i#2 ] ( main:2::menu:9 [ menu::i#2 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@3 [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9 [ ] { } ) always clobbers reg byte a +Statement [117] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN [ menu::c#2 ] ( main:2::menu:9 [ menu::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [120] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [121] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) DTV_PLANEB_START_MI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [124] *((const byte*) DTV_PLANEB_START_HI) ← <>(const dword) mode_8bppchunkybmm::PLANEB [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) DTV_PLANEB_STEP) ← (byte) 8 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [127] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [128] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ ] { } ) always clobbers reg byte a +Statement [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxbCpuBank#4 ] { } ) always clobbers reg byte a +Statement [142] (word~) mode_8bppchunkybmm::$7 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::$7 ] { } ) always clobbers reg byte a +Statement [143] (byte) mode_8bppchunkybmm::c#0 ← (byte)(word~) mode_8bppchunkybmm::$7 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::c#0 ] { } ) always clobbers reg byte a +Statement [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::gfxb#4 ] { } ) always clobbers reg byte y +Statement [147] if((word) mode_8bppchunkybmm::x#1!=(word) $140) goto mode_8bppchunkybmm::@4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::gfxb#1 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::x#1 ] { } ) always clobbers reg byte a +Statement [157] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@2 [ dtv_control#114 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 ] { } ) always clobbers reg byte a +Statement [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR [ dtv_control#114 mode_ctrl::ctrl#1 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#1 ] { } ) always clobbers reg byte a +Statement [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR [ dtv_control#114 mode_ctrl::ctrl#2 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#2 ] { } ) always clobbers reg byte a +Statement [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN [ dtv_control#114 mode_ctrl::ctrl#3 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#3 ] { } ) always clobbers reg byte a +Statement [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF [ dtv_control#114 mode_ctrl::ctrl#4 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#4 ] { } ) always clobbers reg byte a +Statement [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY [ dtv_control#114 mode_ctrl::ctrl#5 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#5 ] { } ) always clobbers reg byte a +Statement [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF [ dtv_control#114 mode_ctrl::ctrl#6 ] ( main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_mcchar:53::mode_ctrl:791 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } main:2::menu:9::mode_stdchar:38::mode_ctrl:862 [ dtv_control#114 mode_ctrl::ctrl#6 ] { } ) always clobbers reg byte a +Statement [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:9::keyboard_key_pressed:33 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [220] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:9::keyboard_key_pressed:33::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:41::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#24 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:48::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#25 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:55::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#26 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:62::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#27 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:69::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#28 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:76::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#29 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:83::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#30 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:90::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:97::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:104::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::keyboard_key_pressed:111::keyboard_matrix_read:215 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:159::keyboard_matrix_read:215 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:165::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#15 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:171::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#16 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:177::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#17 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:183::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#18 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:189::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#19 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:195::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#20 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bppchunkybmm:116::mode_ctrl:153::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_8bpppixelcell:109::mode_ctrl:280::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred:102::mode_ctrl:333::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_twoplanebitmap:95::mode_ctrl:391::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_sixsfred2:88::mode_ctrl:448::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolmcchar:81::mode_ctrl:482::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolecmchar:74::mode_ctrl:517::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_hicolstdchar:67::mode_ctrl:549::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdbitmap:60::mode_ctrl:584::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_mcchar:53::mode_ctrl:791::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_ecmchar:46::mode_ctrl:828::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:9::mode_stdchar:38::mode_ctrl:862::keyboard_key_pressed:201::keyboard_matrix_read:215 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#21 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [228] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [229] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [230] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [231] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEA [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [232] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [233] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [234] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [235] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [236] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [237] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEB [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [238] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [239] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [240] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [241] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [242] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [249] (byte~) mode_8bpppixelcell::$2 ← (byte) mode_8bpppixelcell::ay#4 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$2 ] ) always clobbers reg byte a -Statement [250] (byte~) mode_8bpppixelcell::$3 ← (byte~) mode_8bpppixelcell::$2 << (byte) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ) always clobbers reg byte a -Statement [251] (byte~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ) always clobbers reg byte a -Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$5 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ) always clobbers reg byte y -Statement [259] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ) always clobbers reg byte y -Statement [279] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] ) always clobbers reg byte a -Statement [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [283] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [284] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [285] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [286] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred::PLANEA [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [287] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [288] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [289] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [290] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [291] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [292] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred::PLANEB [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [293] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [294] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [295] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [296] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [297] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [298] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] ) always clobbers reg byte a -Statement [306] (byte~) mode_sixsfred::$2 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ) always clobbers reg byte a -Statement [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$3 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ) always clobbers reg byte y -Statement [316] (byte~) mode_sixsfred::$6 ← (byte) mode_sixsfred::ay#4 >> (byte) 1 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ) always clobbers reg byte a -Statement [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte*) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte) $1b [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ) always clobbers reg byte a reg byte y -Statement [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [336] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [337] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [338] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [339] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEA [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [340] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [341] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [342] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [343] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [344] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [345] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEB [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [346] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [347] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [348] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [349] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [350] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_twoplanebitmap::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [351] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [356] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [357] *((const byte*) BGCOL1) ← (byte) $70 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [358] *((const byte*) BGCOL2) ← (byte) $d4 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] ) always clobbers reg byte a -Statement [361] (byte~) mode_twoplanebitmap::$2 ← (byte) mode_twoplanebitmap::cy#4 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$2 ] ) always clobbers reg byte a -Statement [362] (byte~) mode_twoplanebitmap::$3 ← (byte~) mode_twoplanebitmap::$2 << (byte) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ) always clobbers reg byte a -Statement [363] (byte~) mode_twoplanebitmap::$4 ← (byte) mode_twoplanebitmap::cx#2 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ) always clobbers reg byte a -Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$5 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ) always clobbers reg byte y -Statement [373] (byte~) mode_twoplanebitmap::$8 ← (byte) mode_twoplanebitmap::ay#5 & (byte) 4 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$8 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$8 ] ) always clobbers reg byte a -Statement [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) $ff [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte) $f [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ) always clobbers reg byte a reg byte y -Statement [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) 0 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [396] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [397] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [398] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [399] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred2::PLANEA [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [400] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [401] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [402] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [403] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [404] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [405] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred2::PLANEB [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [406] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [407] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [408] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [409] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [410] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred2::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [411] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [416] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] ) always clobbers reg byte a -Statement [419] (byte~) mode_sixsfred2::$2 ← (byte) mode_sixsfred2::cx#2 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$2 ] ) always clobbers reg byte a -Statement [420] (byte~) mode_sixsfred2::$3 ← (byte~) mode_sixsfred2::$2 << (byte) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ) always clobbers reg byte a -Statement [421] (byte~) mode_sixsfred2::$4 ← (byte) mode_sixsfred2::cy#4 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ) always clobbers reg byte a -Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$5 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ) always clobbers reg byte y -Statement [431] (byte~) mode_sixsfred2::$8 ← (byte) mode_sixsfred2::ay#4 >> (byte) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ) always clobbers reg byte a -Statement [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte*) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte) $1b [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ) always clobbers reg byte a reg byte y -Statement [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [451] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [452] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [453] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [454] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [455] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolmcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [456] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [457] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [458] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolmcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [463] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [464] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [465] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [466] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] ) always clobbers reg byte a -Statement [469] (byte~) mode_hicolmcchar::$2 ← (byte) mode_hicolmcchar::cy#4 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$2 ] ) always clobbers reg byte a -Statement [470] (byte~) mode_hicolmcchar::$3 ← (byte~) mode_hicolmcchar::$2 << (byte) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ) always clobbers reg byte a -Statement [471] (byte~) mode_hicolmcchar::$4 ← (byte) mode_hicolmcchar::cx#2 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ) always clobbers reg byte a -Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ) always clobbers reg byte y -Statement [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ) always clobbers reg byte y -Statement [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [485] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [486] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [487] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [488] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [489] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [490] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [491] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [492] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [497] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [498] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [499] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [500] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [501] *((const byte*) BGCOL4) ← (byte) $5c [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] ) always clobbers reg byte a -Statement [504] (byte~) mode_hicolecmchar::$2 ← (byte) mode_hicolecmchar::cy#4 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$2 ] ) always clobbers reg byte a -Statement [505] (byte~) mode_hicolecmchar::$3 ← (byte~) mode_hicolecmchar::$2 << (byte) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ) always clobbers reg byte a -Statement [506] (byte~) mode_hicolecmchar::$4 ← (byte) mode_hicolecmchar::cx#2 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ) always clobbers reg byte a -Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ) always clobbers reg byte y -Statement [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ) always clobbers reg byte y -Statement [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [520] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [521] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [522] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [523] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [524] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolstdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [525] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [526] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [527] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolstdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [532] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [533] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] ) always clobbers reg byte a -Statement [536] (byte~) mode_hicolstdchar::$2 ← (byte) mode_hicolstdchar::cy#4 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$2 ] ) always clobbers reg byte a -Statement [537] (byte~) mode_hicolstdchar::$3 ← (byte~) mode_hicolstdchar::$2 << (byte) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ) always clobbers reg byte a -Statement [538] (byte~) mode_hicolstdchar::$4 ← (byte) mode_hicolstdchar::cx#2 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ) always clobbers reg byte a -Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ) always clobbers reg byte y -Statement [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ) always clobbers reg byte y -Statement [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [552] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [553] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [554] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdbitmap::BITMAP/(word) $4000 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [555] *((const byte*) VIC_CONTROL) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [556] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [557] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdbitmap::BITMAP&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [559] *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) [ mode_stdbitmap::i#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::i#2 ] ) always clobbers reg byte a -Statement [562] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [563] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] ) always clobbers reg byte a -Statement [566] (byte~) mode_stdbitmap::$4 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ) always clobbers reg byte a -Statement [568] (byte) mode_stdbitmap::col2#0 ← (byte) $f - (byte) mode_stdbitmap::col#0 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ) always clobbers reg byte a -Statement [569] (byte~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 << (byte) 4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ) always clobbers reg byte a -Statement [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$8 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ) always clobbers reg byte y -Statement [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a -Statement [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a -Statement [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a -Statement [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [674] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [722] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [725] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [736] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [737] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [745] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [752] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [758] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [759] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [760] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [761] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [762] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_mcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [763] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [764] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [765] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_mcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [767] *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) [ mode_mcchar::i#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::i#2 ] ) always clobbers reg byte a -Statement [770] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [771] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [772] *((const byte*) BGCOL2) ← (const byte) GREEN [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [773] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::menu:9::mode_mcchar:53 [ ] ) always clobbers reg byte a -Statement [776] (byte~) mode_mcchar::$2 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ) always clobbers reg byte a -Statement [778] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$3 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y -Statement [780] (byte~) mode_mcchar::$4 ← (byte) mode_mcchar::cy#4 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ) always clobbers reg byte a -Statement [781] (byte~) mode_mcchar::$5 ← (byte~) mode_mcchar::$4 << (byte) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ) always clobbers reg byte a -Statement [782] (byte~) mode_mcchar::$6 ← (byte) mode_mcchar::cx#2 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ) always clobbers reg byte a -Statement [784] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$7 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y -Statement [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [794] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [795] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [796] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [797] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [798] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_ecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [799] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [800] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [801] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_ecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [803] *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) [ mode_ecmchar::i#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::i#2 ] ) always clobbers reg byte a -Statement [806] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [807] *((const byte*) BGCOL1) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [808] *((const byte*) BGCOL2) ← (byte) 2 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [809] *((const byte*) BGCOL3) ← (byte) 5 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [810] *((const byte*) BGCOL4) ← (byte) 6 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] ) always clobbers reg byte a -Statement [813] (byte~) mode_ecmchar::$2 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ) always clobbers reg byte a -Statement [815] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$3 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y -Statement [817] (byte~) mode_ecmchar::$4 ← (byte) mode_ecmchar::cy#4 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ) always clobbers reg byte a -Statement [818] (byte~) mode_ecmchar::$5 ← (byte~) mode_ecmchar::$4 << (byte) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ) always clobbers reg byte a -Statement [819] (byte~) mode_ecmchar::$6 ← (byte) mode_ecmchar::cx#2 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ) always clobbers reg byte a -Statement [821] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$7 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y -Statement [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [831] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [832] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [833] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [834] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [835] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [836] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [837] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [838] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [840] *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) [ mode_stdchar::i#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::i#2 ] ) always clobbers reg byte a -Statement [843] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [844] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] ) always clobbers reg byte a -Statement [847] (byte~) mode_stdchar::$2 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ) always clobbers reg byte a -Statement [849] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$3 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y -Statement [851] (byte~) mode_stdchar::$4 ← (byte) mode_stdchar::cy#4 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ) always clobbers reg byte a -Statement [852] (byte~) mode_stdchar::$5 ← (byte~) mode_stdchar::$4 << (byte) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ) always clobbers reg byte a -Statement [853] (byte~) mode_stdchar::$6 ← (byte) mode_stdchar::cx#2 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ) always clobbers reg byte a -Statement [855] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$7 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y -Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [878] (byte*) print_char_cursor#97 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ) always clobbers reg byte a -Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [891] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [228] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [229] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [230] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [231] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEA [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [232] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [233] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [234] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [235] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [236] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_8bpppixelcell::PLANEB [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [239] *((const byte*) DTV_PLANEB_STEP) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [240] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [241] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [242] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [249] (byte~) mode_8bpppixelcell::$2 ← (byte) mode_8bpppixelcell::ay#4 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$2 ] { } ) always clobbers reg byte a +Statement [250] (byte~) mode_8bpppixelcell::$3 ← (byte~) mode_8bpppixelcell::$2 << (byte) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 ] { } ) always clobbers reg byte a +Statement [251] (byte~) mode_8bpppixelcell::$4 ← (byte) mode_8bpppixelcell::ax#2 & (byte) $f [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$3 mode_8bpppixelcell::$4 ] { } ) always clobbers reg byte a +Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$5 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] { } ) always clobbers reg byte y +Statement [259] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::col#5 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#0 ] { } ) always clobbers reg byte a reg byte y +Statement [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] ( main:2::menu:9::mode_8bpppixelcell:109 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::chargen#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::col#2 mode_8bpppixelcell::cp#2 ] { } ) always clobbers reg byte y +Statement [279] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2::menu:9::mode_8bpppixelcell:109 [ ] { } ) always clobbers reg byte a +Statement [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [283] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [284] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [285] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [286] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred::PLANEA [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [287] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [288] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [289] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [290] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [291] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [292] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred::PLANEB [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [293] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [294] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [295] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [296] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [297] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [298] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [303] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred:102 [ ] { } ) always clobbers reg byte a +Statement [306] (byte~) mode_sixsfred::$2 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$2 ] { } ) always clobbers reg byte a +Statement [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$3 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] { } ) always clobbers reg byte y +Statement [316] (byte~) mode_sixsfred::$6 ← (byte) mode_sixsfred::ay#4 >> (byte) 1 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$6 ] { } ) always clobbers reg byte a +Statement [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte*) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte) $1b [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] ( main:2::menu:9::mode_sixsfred:102 [ mode_sixsfred::by#4 mode_sixsfred::gfxb#2 mode_sixsfred::bx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [336] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [337] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [338] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [339] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEA [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [340] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [341] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [342] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [343] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [344] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [345] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_twoplanebitmap::PLANEB [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [346] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [347] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [348] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [349] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [350] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_twoplanebitmap::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [351] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [356] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [357] *((const byte*) BGCOL1) ← (byte) $70 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [358] *((const byte*) BGCOL2) ← (byte) $d4 [ ] ( main:2::menu:9::mode_twoplanebitmap:95 [ ] { } ) always clobbers reg byte a +Statement [361] (byte~) mode_twoplanebitmap::$2 ← (byte) mode_twoplanebitmap::cy#4 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$2 ] { } ) always clobbers reg byte a +Statement [362] (byte~) mode_twoplanebitmap::$3 ← (byte~) mode_twoplanebitmap::$2 << (byte) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 ] { } ) always clobbers reg byte a +Statement [363] (byte~) mode_twoplanebitmap::$4 ← (byte) mode_twoplanebitmap::cx#2 & (byte) $f [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$3 mode_twoplanebitmap::$4 ] { } ) always clobbers reg byte a +Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$5 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] { } ) always clobbers reg byte y +Statement [373] (byte~) mode_twoplanebitmap::$8 ← (byte) mode_twoplanebitmap::ay#5 & (byte) 4 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$8 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$8 ] { } ) always clobbers reg byte a +Statement [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) $ff [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte) $f [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::bx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte) 0 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] ( main:2::menu:9::mode_twoplanebitmap:95 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [396] *((const byte*) VIC_CONTROL) ← (const byte) VIC_ECM|(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [397] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [398] *((const byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [399] *((const byte*) DTV_PLANEA_START_MI) ← >(const byte*) mode_sixsfred2::PLANEA [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [400] *((const byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [401] *((const byte*) DTV_PLANEA_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [402] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [403] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [404] *((const byte*) DTV_PLANEB_START_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [405] *((const byte*) DTV_PLANEB_START_MI) ← >(const byte*) mode_sixsfred2::PLANEB [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [406] *((const byte*) DTV_PLANEB_START_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [407] *((const byte*) DTV_PLANEB_STEP) ← (byte) 1 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [408] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [409] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [410] *((const byte*) DTV_COLOR_BANK_LO) ← <(const byte*) mode_sixsfred2::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [411] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [416] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_sixsfred2:88 [ ] { } ) always clobbers reg byte a +Statement [419] (byte~) mode_sixsfred2::$2 ← (byte) mode_sixsfred2::cx#2 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$2 ] { } ) always clobbers reg byte a +Statement [420] (byte~) mode_sixsfred2::$3 ← (byte~) mode_sixsfred2::$2 << (byte) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 ] { } ) always clobbers reg byte a +Statement [421] (byte~) mode_sixsfred2::$4 ← (byte) mode_sixsfred2::cy#4 & (byte) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$3 mode_sixsfred2::$4 ] { } ) always clobbers reg byte a +Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$5 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] { } ) always clobbers reg byte y +Statement [431] (byte~) mode_sixsfred2::$8 ← (byte) mode_sixsfred2::ay#4 >> (byte) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$8 ] { } ) always clobbers reg byte a +Statement [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte*) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] { } ) always clobbers reg byte a reg byte y +Statement [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte) $1b [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] ( main:2::menu:9::mode_sixsfred2:88 [ mode_sixsfred2::by#4 mode_sixsfred2::gfxb#2 mode_sixsfred2::bx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [451] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [452] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [453] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [454] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [455] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolmcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [456] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [457] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [458] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolmcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [463] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [464] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [465] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [466] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolmcchar:81 [ ] { } ) always clobbers reg byte a +Statement [469] (byte~) mode_hicolmcchar::$2 ← (byte) mode_hicolmcchar::cy#4 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$2 ] { } ) always clobbers reg byte a +Statement [470] (byte~) mode_hicolmcchar::$3 ← (byte~) mode_hicolmcchar::$2 << (byte) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 ] { } ) always clobbers reg byte a +Statement [471] (byte~) mode_hicolmcchar::$4 ← (byte) mode_hicolmcchar::cx#2 & (byte) $f [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$3 mode_hicolmcchar::$4 ] { } ) always clobbers reg byte a +Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] { } ) always clobbers reg byte y +Statement [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ( main:2::menu:9::mode_hicolmcchar:81 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] { } ) always clobbers reg byte y +Statement [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [485] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [486] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [487] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [488] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [489] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [490] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [491] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [492] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [497] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [498] *((const byte*) BGCOL1) ← (byte) $50 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [499] *((const byte*) BGCOL2) ← (byte) $54 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [500] *((const byte*) BGCOL3) ← (byte) $58 [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [501] *((const byte*) BGCOL4) ← (byte) $5c [ ] ( main:2::menu:9::mode_hicolecmchar:74 [ ] { } ) always clobbers reg byte a +Statement [504] (byte~) mode_hicolecmchar::$2 ← (byte) mode_hicolecmchar::cy#4 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$2 ] { } ) always clobbers reg byte a +Statement [505] (byte~) mode_hicolecmchar::$3 ← (byte~) mode_hicolecmchar::$2 << (byte) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 ] { } ) always clobbers reg byte a +Statement [506] (byte~) mode_hicolecmchar::$4 ← (byte) mode_hicolecmchar::cx#2 & (byte) $f [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$3 mode_hicolecmchar::$4 ] { } ) always clobbers reg byte a +Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] { } ) always clobbers reg byte y +Statement [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ( main:2::menu:9::mode_hicolecmchar:74 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] { } ) always clobbers reg byte y +Statement [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [520] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [521] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [522] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [523] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [524] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_hicolstdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [525] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [526] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [527] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_hicolstdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [532] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [533] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:67 [ ] { } ) always clobbers reg byte a +Statement [536] (byte~) mode_hicolstdchar::$2 ← (byte) mode_hicolstdchar::cy#4 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$2 ] { } ) always clobbers reg byte a +Statement [537] (byte~) mode_hicolstdchar::$3 ← (byte~) mode_hicolstdchar::$2 << (byte) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 ] { } ) always clobbers reg byte a +Statement [538] (byte~) mode_hicolstdchar::$4 ← (byte) mode_hicolstdchar::cx#2 & (byte) $f [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$3 mode_hicolstdchar::$4 ] { } ) always clobbers reg byte a +Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] { } ) always clobbers reg byte y +Statement [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ( main:2::menu:9::mode_hicolstdchar:67 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] { } ) always clobbers reg byte y +Statement [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [552] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [553] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [554] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdbitmap::BITMAP/(word) $4000 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [555] *((const byte*) VIC_CONTROL) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [556] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [557] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdbitmap::BITMAP&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [559] *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) [ mode_stdbitmap::i#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::i#2 ] { } ) always clobbers reg byte a +Statement [562] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [563] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_stdbitmap:60 [ ] { } ) always clobbers reg byte a +Statement [566] (byte~) mode_stdbitmap::$4 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$4 ] { } ) always clobbers reg byte a +Statement [568] (byte) mode_stdbitmap::col2#0 ← (byte) $f - (byte) mode_stdbitmap::col#0 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] { } ) always clobbers reg byte a +Statement [569] (byte~) mode_stdbitmap::$7 ← (byte) mode_stdbitmap::col#0 << (byte) 4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$7 ] { } ) always clobbers reg byte a +Statement [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$8 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] ( main:2::menu:9::mode_stdbitmap:60 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 ] { } ) always clobbers reg byte y +Statement [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a +Statement [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a +Statement [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a +Statement [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y +Statement [674] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:602 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxi:647 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:623 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_xdyd:639 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:617 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::menu:9::mode_stdbitmap:60::bitmap_line:590::bitmap_line_ydxd:633 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [722] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [725] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_clear:580 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a +Statement [736] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [737] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [745] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a +Statement [752] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::menu:9::mode_stdbitmap:60::bitmap_init:578 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [758] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [759] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [760] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [761] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [762] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_mcchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [763] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [764] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL|(const byte) VIC_MCM [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [765] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_mcchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [767] *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) [ mode_mcchar::i#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::i#2 ] { } ) always clobbers reg byte a +Statement [770] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [771] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [772] *((const byte*) BGCOL2) ← (const byte) GREEN [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [773] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::menu:9::mode_mcchar:53 [ ] { } ) always clobbers reg byte a +Statement [776] (byte~) mode_mcchar::$2 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$2 ] { } ) always clobbers reg byte a +Statement [778] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$3 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] { } ) always clobbers reg byte y +Statement [780] (byte~) mode_mcchar::$4 ← (byte) mode_mcchar::cy#4 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$4 ] { } ) always clobbers reg byte a +Statement [781] (byte~) mode_mcchar::$5 ← (byte~) mode_mcchar::$4 << (byte) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 ] { } ) always clobbers reg byte a +Statement [782] (byte~) mode_mcchar::$6 ← (byte) mode_mcchar::cx#2 & (byte) $f [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$5 mode_mcchar::$6 ] { } ) always clobbers reg byte a +Statement [784] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$7 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:53 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] { } ) always clobbers reg byte y +Statement [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [794] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [795] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [796] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [797] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [798] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_ecmchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [799] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(const byte) VIC_ECM|(byte) 3 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [800] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [801] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_ecmchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [803] *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) [ mode_ecmchar::i#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::i#2 ] { } ) always clobbers reg byte a +Statement [806] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [807] *((const byte*) BGCOL1) ← (byte) 0 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [808] *((const byte*) BGCOL2) ← (byte) 2 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [809] *((const byte*) BGCOL3) ← (byte) 5 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [810] *((const byte*) BGCOL4) ← (byte) 6 [ ] ( main:2::menu:9::mode_ecmchar:46 [ ] { } ) always clobbers reg byte a +Statement [813] (byte~) mode_ecmchar::$2 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$2 ] { } ) always clobbers reg byte a +Statement [815] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$3 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] { } ) always clobbers reg byte y +Statement [817] (byte~) mode_ecmchar::$4 ← (byte) mode_ecmchar::cy#4 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$4 ] { } ) always clobbers reg byte a +Statement [818] (byte~) mode_ecmchar::$5 ← (byte~) mode_ecmchar::$4 << (byte) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 ] { } ) always clobbers reg byte a +Statement [819] (byte~) mode_ecmchar::$6 ← (byte) mode_ecmchar::cx#2 & (byte) $f [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$5 mode_ecmchar::$6 ] { } ) always clobbers reg byte a +Statement [821] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$7 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:46 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] { } ) always clobbers reg byte y +Statement [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [831] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [832] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [833] *((const byte*) DTV_CONTROL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [834] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [835] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) mode_stdchar::CHARSET/(word) $4000 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [836] *((const byte*) VIC_CONTROL) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [837] *((const byte*) VIC_CONTROL2) ← (const byte) VIC_CSEL [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [838] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) mode_stdchar::CHARSET&(word) $3fff/(word) $400 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [840] *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) [ mode_stdchar::i#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::i#2 ] { } ) always clobbers reg byte a +Statement [843] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [844] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2::menu:9::mode_stdchar:38 [ ] { } ) always clobbers reg byte a +Statement [847] (byte~) mode_stdchar::$2 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$2 ] { } ) always clobbers reg byte a +Statement [849] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$3 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] { } ) always clobbers reg byte y +Statement [851] (byte~) mode_stdchar::$4 ← (byte) mode_stdchar::cy#4 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$4 ] { } ) always clobbers reg byte a +Statement [852] (byte~) mode_stdchar::$5 ← (byte~) mode_stdchar::$4 << (byte) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 ] { } ) always clobbers reg byte a +Statement [853] (byte~) mode_stdchar::$6 ← (byte) mode_stdchar::cx#2 & (byte) $f [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$5 mode_stdchar::$6 ] { } ) always clobbers reg byte a +Statement [855] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$7 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:38 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] { } ) always clobbers reg byte y +Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] { } ) always clobbers reg byte y +Statement [878] (byte*) print_char_cursor#97 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#97 print_line_cursor#19 ] { } ) always clobbers reg byte a +Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] { } ) always clobbers reg byte a +Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] { } ) always clobbers reg byte a +Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [891] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ menu::i#2 menu::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ menu::c#2 menu::c#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -18380,469 +18380,469 @@ Potential registers zp[1]:293 [ mode_stdchar::$7 ] : zp[1]:293 , reg byte a , re Potential registers zp[1]:294 [ print_str_lines::ch#0 ] : zp[1]:294 , reg byte a , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [mode_8bpppixelcell] 40,004: zp[1]:30 [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ] 20,002: zp[1]:215 [ mode_8bpppixelcell::$8 ] 17,223.94: zp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] 10,430.64: zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] 8,415.22: zp[2]:26 [ mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] 7,793.36: zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] 2,002: zp[1]:211 [ mode_8bpppixelcell::$2 ] 2,002: zp[1]:213 [ mode_8bpppixelcell::$4 ] 2,002: zp[1]:214 [ mode_8bpppixelcell::$5 ] 1,930.5: zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] 1,885.44: zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 ] 1,644.5: zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] 1,139.93: zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 ] 1,001: zp[1]:212 [ mode_8bpppixelcell::$3 ] 353.5: zp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] 271.8: zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] 163.38: zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] -Uplift Scope [mode_ctrl] 17,693.35: zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] 2,002: zp[1]:189 [ mode_ctrl::$1 ] 2,002: zp[1]:191 [ mode_ctrl::$4 ] 2,002: zp[1]:193 [ mode_ctrl::$8 ] 2,002: zp[1]:195 [ mode_ctrl::$12 ] 2,002: zp[1]:197 [ mode_ctrl::$16 ] 2,002: zp[1]:199 [ mode_ctrl::$20 ] 2,002: zp[1]:201 [ mode_ctrl::$24 ] 2,002: zp[1]:203 [ mode_ctrl::$28 ] -Uplift Scope [mode_twoplanebitmap] 5,848: zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ] 2,174.6: zp[2]:54 [ mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] 2,168.83: zp[1]:56 [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] 2,002: zp[1]:220 [ mode_twoplanebitmap::$2 ] 2,002: zp[1]:222 [ mode_twoplanebitmap::$4 ] 2,002: zp[1]:223 [ mode_twoplanebitmap::$5 ] 2,002: zp[1]:224 [ mode_twoplanebitmap::$8 ] 1,930.5: zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] 1,751.75: zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] 1,139.93: zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 ] 1,001: zp[1]:221 [ mode_twoplanebitmap::$3 ] 353.5: zp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] 271.8: zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] 260.86: zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] 185.17: zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] -Uplift Scope [mode_sixsfred2] 2,174.6: zp[2]:67 [ mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] 2,168.83: zp[1]:69 [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] 2,002: zp[1]:225 [ mode_sixsfred2::$2 ] 2,002: zp[1]:227 [ mode_sixsfred2::$4 ] 2,002: zp[1]:228 [ mode_sixsfred2::$5 ] 2,002: zp[1]:229 [ mode_sixsfred2::$8 ] 2,002: zp[1]:230 [ mode_sixsfred2::row#0 ] 1,930.5: zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] 1,901.9: zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] 1,398.6: zp[2]:63 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] 1,139.93: zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 ] 1,001: zp[1]:226 [ mode_sixsfred2::$3 ] 353.5: zp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] 301.88: zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] 271.8: zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] 185.17: zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] -Uplift Scope [mode_sixsfred] 2,174.6: zp[2]:41 [ mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] 2,168.83: zp[1]:43 [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] 2,102.1: zp[1]:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] 2,002: zp[1]:216 [ mode_sixsfred::$2 ] 2,002: zp[1]:217 [ mode_sixsfred::$3 ] 2,002: zp[1]:218 [ mode_sixsfred::$6 ] 2,002: zp[1]:219 [ mode_sixsfred::row#0 ] 1,901.9: zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] 1,398.6: zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 ] 1,398.6: zp[2]:37 [ mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] 353.5: zp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] 301.88: zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] 301.88: zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] 185.17: zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] -Uplift Scope [keyboard_key_pressed] 2,002: zp[1]:188 [ keyboard_key_pressed::return#14 ] 2,002: zp[1]:190 [ keyboard_key_pressed::return#15 ] 2,002: zp[1]:192 [ keyboard_key_pressed::return#16 ] 2,002: zp[1]:194 [ keyboard_key_pressed::return#17 ] 2,002: zp[1]:196 [ keyboard_key_pressed::return#18 ] 2,002: zp[1]:198 [ keyboard_key_pressed::return#19 ] 2,002: zp[1]:200 [ keyboard_key_pressed::return#20 ] 2,002: zp[1]:202 [ keyboard_key_pressed::return#21 ] 419.18: zp[1]:209 [ keyboard_key_pressed::return#0 ] 202: zp[1]:161 [ keyboard_key_pressed::return#2 ] 202: zp[1]:163 [ keyboard_key_pressed::return#24 ] 202: zp[1]:165 [ keyboard_key_pressed::return#25 ] 202: zp[1]:167 [ keyboard_key_pressed::return#26 ] 202: zp[1]:169 [ keyboard_key_pressed::return#27 ] 202: zp[1]:171 [ keyboard_key_pressed::return#28 ] 202: zp[1]:173 [ keyboard_key_pressed::return#29 ] 202: zp[1]:175 [ keyboard_key_pressed::return#30 ] 202: zp[1]:177 [ keyboard_key_pressed::return#10 ] 202: zp[1]:179 [ keyboard_key_pressed::return#11 ] 202: zp[1]:181 [ keyboard_key_pressed::return#12 ] 202: zp[1]:183 [ keyboard_key_pressed::return#13 ] 4: zp[1]:205 [ keyboard_key_pressed::rowidx#0 ] 4: zp[1]:208 [ keyboard_key_pressed::$2 ] 2: zp[1]:14 [ keyboard_key_pressed::key#20 ] 0.67: zp[1]:204 [ keyboard_key_pressed::colidx#0 ] -Uplift Scope [mode_stdchar] 2,002: zp[1]:288 [ mode_stdchar::$2 ] 2,002: zp[1]:289 [ mode_stdchar::$3 ] 2,002: zp[1]:290 [ mode_stdchar::$4 ] 2,002: zp[1]:292 [ mode_stdchar::$6 ] 2,002: zp[1]:293 [ mode_stdchar::$7 ] 1,865.5: zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] 1,169.18: zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] 1,001: zp[1]:291 [ mode_stdchar::$5 ] 933: zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] 353.5: zp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] 308.93: zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] -Uplift Scope [mode_ecmchar] 2,002: zp[1]:282 [ mode_ecmchar::$2 ] 2,002: zp[1]:283 [ mode_ecmchar::$3 ] 2,002: zp[1]:284 [ mode_ecmchar::$4 ] 2,002: zp[1]:286 [ mode_ecmchar::$6 ] 2,002: zp[1]:287 [ mode_ecmchar::$7 ] 1,865.5: zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] 1,169.18: zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] 1,001: zp[1]:285 [ mode_ecmchar::$5 ] 933: zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] 353.5: zp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] 308.93: zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] -Uplift Scope [mode_mcchar] 2,002: zp[1]:276 [ mode_mcchar::$2 ] 2,002: zp[1]:277 [ mode_mcchar::$3 ] 2,002: zp[1]:278 [ mode_mcchar::$4 ] 2,002: zp[1]:280 [ mode_mcchar::$6 ] 2,002: zp[1]:281 [ mode_mcchar::$7 ] 1,865.5: zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] 1,169.18: zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] 1,001: zp[1]:279 [ mode_mcchar::$5 ] 933: zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] 353.5: zp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] 308.93: zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] -Uplift Scope [bitmap_plot] 10,012: zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 5,006.5: zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp[2]:261 [ bitmap_plot::plotter_y#0 ] 4: zp[1]:265 [ bitmap_plot::$1 ] 2: zp[2]:259 [ bitmap_plot::plotter_x#0 ] 1: zp[2]:263 [ bitmap_plot::plotter#0 ] -Uplift Scope [mode_stdbitmap] 2,002: zp[1]:243 [ mode_stdbitmap::$4 ] 2,002: zp[1]:246 [ mode_stdbitmap::$7 ] 2,002: zp[1]:247 [ mode_stdbitmap::$8 ] 1,876.88: zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] 1,501.5: zp[1]:244 [ mode_stdbitmap::col#0 ] 1,066.03: zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] 1,001: zp[1]:245 [ mode_stdbitmap::col2#0 ] 353.5: zp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] 303: zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] 260.86: zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] -Uplift Scope [mode_8bppchunkybmm] 3,575.14: zp[1]:9 [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] 2,925.35: zp[2]:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] 2,002: zp[1]:187 [ mode_8bppchunkybmm::c#0 ] 1,801.8: zp[2]:7 [ mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] 1,001: zp[2]:185 [ mode_8bppchunkybmm::$7 ] 353.5: zp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] 244.04: zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] -Uplift Scope [bitmap_line_xdyi] 4,742.47: zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 2,579.29: zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 2,002: zp[1]:258 [ bitmap_line_xdyi::$6 ] 1,131.22: zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 147.29: zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 79.93: zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 74.45: zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Uplift Scope [bitmap_line_xdyd] 4,742.47: zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 2,579.29: zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 2,002: zp[1]:267 [ bitmap_line_xdyd::$6 ] 1,131.22: zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 147.29: zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 79.93: zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 74.45: zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Uplift Scope [bitmap_line_ydxi] 4,742.47: zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 2,579.29: zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 2,002: zp[1]:266 [ bitmap_line_ydxi::$6 ] 1,131.22: zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 147.29: zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 79.93: zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 74.45: zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Uplift Scope [bitmap_line_ydxd] 4,742.47: zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 2,579.29: zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 2,002: zp[1]:268 [ bitmap_line_ydxd::$6 ] 1,131.22: zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 147.29: zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 79.93: zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 74.45: zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplift Scope [mode_hicolstdchar] 2,002: zp[1]:239 [ mode_hicolstdchar::$2 ] 2,002: zp[1]:241 [ mode_hicolstdchar::$4 ] 1,835.17: zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] 1,019.76: zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] 1,010.6: zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] 1,001: zp[1]:240 [ mode_hicolstdchar::$3 ] 1,001: zp[1]:242 [ mode_hicolstdchar::v#0 ] 353.5: zp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] 251.75: zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] -Uplift Scope [mode_hicolecmchar] 2,002: zp[1]:235 [ mode_hicolecmchar::$2 ] 2,002: zp[1]:237 [ mode_hicolecmchar::$4 ] 1,835.17: zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] 1,019.76: zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] 1,010.6: zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] 1,001: zp[1]:236 [ mode_hicolecmchar::$3 ] 1,001: zp[1]:238 [ mode_hicolecmchar::v#0 ] 353.5: zp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] 251.75: zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] -Uplift Scope [mode_hicolmcchar] 2,002: zp[1]:231 [ mode_hicolmcchar::$2 ] 2,002: zp[1]:233 [ mode_hicolmcchar::$4 ] 1,835.17: zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] 1,019.76: zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] 1,010.6: zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] 1,001: zp[1]:232 [ mode_hicolmcchar::$3 ] 1,001: zp[1]:234 [ mode_hicolmcchar::v#0 ] 353.5: zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] 251.75: zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Uplift Scope [] 3,698: zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 ] 2,653.58: zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 149.86: zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] -Uplift Scope [bitmap_clear] 2,180.6: zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,168.83: zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 185.17: zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:269 [ bitmap_clear::bitmap#0 ] -Uplift Scope [menu] 353.5: zp[1]:2 [ menu::i#2 menu::i#1 ] 336.67: zp[2]:3 [ menu::c#2 menu::c#1 ] 202: zp[1]:162 [ menu::$5 ] 202: zp[1]:164 [ menu::$9 ] 202: zp[1]:166 [ menu::$13 ] 202: zp[1]:168 [ menu::$17 ] 202: zp[1]:170 [ menu::$21 ] 202: zp[1]:172 [ menu::$25 ] 202: zp[1]:174 [ menu::$29 ] 202: zp[1]:176 [ menu::$33 ] 202: zp[1]:178 [ menu::$37 ] 202: zp[1]:180 [ menu::$41 ] 202: zp[1]:182 [ menu::$45 ] 202: zp[1]:184 [ menu::$49 ] -Uplift Scope [dtvSetCpuBankSegment1] 3,005: zp[1]:15 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] -Uplift Scope [print_str_lines] 1,937.17: zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] 667.33: zp[1]:294 [ print_str_lines::ch#0 ] -Uplift Scope [bitmap_init] 366.12: zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 228.93: zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 218.83: zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:271 [ bitmap_init::$0 ] 202: zp[1]:273 [ bitmap_init::$7 ] 202: zp[1]:274 [ bitmap_init::$8 ] 202: zp[1]:275 [ bitmap_init::$9 ] 50.5: zp[1]:272 [ bitmap_init::$10 ] -Uplift Scope [memset] 336.67: zp[2]:159 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [bitmap_line] 6.25: zp[1]:251 [ bitmap_line::y1#0 ] 5.95: zp[1]:250 [ bitmap_line::y0#0 ] 5.41: zp[1]:249 [ bitmap_line::x1#0 ] 5.17: zp[1]:248 [ bitmap_line::x0#0 ] 0.89: zp[1]:253 [ bitmap_line::yd#2 ] 0.89: zp[1]:254 [ bitmap_line::yd#1 ] 0.89: zp[1]:256 [ bitmap_line::yd#10 ] 0.89: zp[1]:257 [ bitmap_line::yd#11 ] 0.7: zp[1]:252 [ bitmap_line::xd#2 ] 0.7: zp[1]:255 [ bitmap_line::xd#1 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:206 [ keyboard_matrix_read::rowid#0 ] 4: zp[1]:207 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:210 [ keyboard_matrix_read::return#0 ] +Uplift Scope [bitmap_plot] 2,000,000,000,011: zp[1]:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 2,000,000,000,002: zp[2]:261 [ bitmap_plot::plotter_y#0 ] 2,000,000,000,002: zp[1]:265 [ bitmap_plot::$1 ] 1,250,000,000,005.75: zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 1,000,000,000,001: zp[2]:259 [ bitmap_plot::plotter_x#0 ] 500,000,000,000.5: zp[2]:263 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line_xdyi] 473,553,333,340.27: zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 257,227,142,862.36: zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 200,000,000,002: zp[1]:258 [ bitmap_line_xdyi::$6 ] 112,593,000,003.67: zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 14,307,142,859.43: zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 7,191,428,575.71: zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 7,157,619,049.17: zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Uplift Scope [bitmap_line_xdyd] 473,553,333,340.27: zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 257,227,142,862.36: zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 200,000,000,002: zp[1]:267 [ bitmap_line_xdyd::$6 ] 112,593,000,003.67: zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 14,307,142,859.43: zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 7,191,428,575.71: zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 7,157,619,049.17: zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Uplift Scope [bitmap_line_ydxi] 473,553,333,340.27: zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 257,227,142,862.36: zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 200,000,000,002: zp[1]:266 [ bitmap_line_ydxi::$6 ] 112,593,000,003.67: zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 14,307,142,859.43: zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 7,191,428,575.71: zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 7,157,619,049.17: zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Uplift Scope [bitmap_line_ydxd] 473,553,333,340.27: zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 257,227,142,862.36: zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 200,000,000,002: zp[1]:268 [ bitmap_line_ydxd::$6 ] 112,593,000,003.67: zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 14,307,142,859.43: zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 7,191,428,575.71: zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 7,157,619,049.17: zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplift Scope [] 26,011,316,670.83: zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 1,464,057,149.43: zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 ] 14,807,844.92: zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] +Uplift Scope [keyboard_matrix_read] 11,000,000,002: zp[1]:206 [ keyboard_matrix_read::rowid#0 ] 3,666,666,667.33: zp[1]:210 [ keyboard_matrix_read::return#0 ] 2,000,000,002: zp[1]:207 [ keyboard_matrix_read::return#2 ] +Uplift Scope [keyboard_key_pressed] 2,000,000,002: zp[1]:205 [ keyboard_key_pressed::rowidx#0 ] 2,000,000,002: zp[1]:208 [ keyboard_key_pressed::$2 ] 1,000,000,001: zp[1]:14 [ keyboard_key_pressed::key#20 ] 333,333,333.67: zp[1]:204 [ keyboard_key_pressed::colidx#0 ] 200,000,002: zp[1]:188 [ keyboard_key_pressed::return#14 ] 200,000,002: zp[1]:190 [ keyboard_key_pressed::return#15 ] 200,000,002: zp[1]:192 [ keyboard_key_pressed::return#16 ] 200,000,002: zp[1]:194 [ keyboard_key_pressed::return#17 ] 200,000,002: zp[1]:196 [ keyboard_key_pressed::return#18 ] 200,000,002: zp[1]:198 [ keyboard_key_pressed::return#19 ] 200,000,002: zp[1]:200 [ keyboard_key_pressed::return#20 ] 200,000,002: zp[1]:202 [ keyboard_key_pressed::return#21 ] 81,872,728.23: zp[1]:209 [ keyboard_key_pressed::return#0 ] 200,002: zp[1]:161 [ keyboard_key_pressed::return#2 ] 200,002: zp[1]:163 [ keyboard_key_pressed::return#24 ] 200,002: zp[1]:165 [ keyboard_key_pressed::return#25 ] 200,002: zp[1]:167 [ keyboard_key_pressed::return#26 ] 200,002: zp[1]:169 [ keyboard_key_pressed::return#27 ] 200,002: zp[1]:171 [ keyboard_key_pressed::return#28 ] 200,002: zp[1]:173 [ keyboard_key_pressed::return#29 ] 200,002: zp[1]:175 [ keyboard_key_pressed::return#30 ] 200,002: zp[1]:177 [ keyboard_key_pressed::return#10 ] 200,002: zp[1]:179 [ keyboard_key_pressed::return#11 ] 200,002: zp[1]:181 [ keyboard_key_pressed::return#12 ] 200,002: zp[1]:183 [ keyboard_key_pressed::return#13 ] +Uplift Scope [mode_ctrl] 1,767,500,018.35: zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] 200,000,002: zp[1]:189 [ mode_ctrl::$1 ] 200,000,002: zp[1]:191 [ mode_ctrl::$4 ] 200,000,002: zp[1]:193 [ mode_ctrl::$8 ] 200,000,002: zp[1]:195 [ mode_ctrl::$12 ] 200,000,002: zp[1]:197 [ mode_ctrl::$16 ] 200,000,002: zp[1]:199 [ mode_ctrl::$20 ] 200,000,002: zp[1]:201 [ mode_ctrl::$24 ] 200,000,002: zp[1]:203 [ mode_ctrl::$28 ] +Uplift Scope [mode_8bpppixelcell] 400,000,004: zp[1]:30 [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ] 200,000,002: zp[1]:215 [ mode_8bpppixelcell::$8 ] 172,222,223.94: zp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] 104,285,716.36: zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] 84,111,115.22: zp[2]:26 [ mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] 77,892,861.21: zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] 20,000,002: zp[1]:211 [ mode_8bpppixelcell::$2 ] 20,000,002: zp[1]:213 [ mode_8bpppixelcell::$4 ] 20,000,002: zp[1]:214 [ mode_8bpppixelcell::$5 ] 19,285,716.21: zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] 18,812,504.19: zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 ] 16,428,573.07: zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] 11,366,669.93: zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 ] 10,000,001: zp[1]:212 [ mode_8bpppixelcell::$3 ] 3,500,003.5: zp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] 2,700,001.8: zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] 1,617,648.68: zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] +Uplift Scope [bitmap_clear] 217,300,007.6: zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 216,666,668.83: zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 18,333,335.17: zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 100,001: zp[2]:269 [ bitmap_clear::bitmap#0 ] +Uplift Scope [mode_twoplanebitmap] 58,400,008: zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ] 21,700,004.6: zp[2]:54 [ mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] 21,666,668.83: zp[1]:56 [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] 20,000,002: zp[1]:220 [ mode_twoplanebitmap::$2 ] 20,000,002: zp[1]:222 [ mode_twoplanebitmap::$4 ] 20,000,002: zp[1]:223 [ mode_twoplanebitmap::$5 ] 20,000,002: zp[1]:224 [ mode_twoplanebitmap::$8 ] 19,285,716.21: zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] 17,500,001.75: zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] 11,366,669.93: zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 ] 10,000,001: zp[1]:221 [ mode_twoplanebitmap::$3 ] 3,500,003.5: zp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] 2,700,001.8: zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] 2,590,910.86: zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] 1,833,335.17: zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] +Uplift Scope [mode_sixsfred2] 21,700,004.6: zp[2]:67 [ mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] 21,666,668.83: zp[1]:69 [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] 20,000,002: zp[1]:225 [ mode_sixsfred2::$2 ] 20,000,002: zp[1]:227 [ mode_sixsfred2::$4 ] 20,000,002: zp[1]:228 [ mode_sixsfred2::$5 ] 20,000,002: zp[1]:229 [ mode_sixsfred2::$8 ] 20,000,002: zp[1]:230 [ mode_sixsfred2::row#0 ] 19,285,716.21: zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] 19,000,001.9: zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] 13,950,003.6: zp[2]:63 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] 11,366,669.93: zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 ] 10,000,001: zp[1]:226 [ mode_sixsfred2::$3 ] 3,500,003.5: zp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] 3,000,001.88: zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] 2,700,001.8: zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] 1,833,335.17: zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] +Uplift Scope [mode_sixsfred] 21,700,004.6: zp[2]:41 [ mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] 21,666,668.83: zp[1]:43 [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] 21,000,002.1: zp[1]:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] 20,000,002: zp[1]:216 [ mode_sixsfred::$2 ] 20,000,002: zp[1]:217 [ mode_sixsfred::$3 ] 20,000,002: zp[1]:218 [ mode_sixsfred::$6 ] 20,000,002: zp[1]:219 [ mode_sixsfred::row#0 ] 19,000,001.9: zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] 13,950,003.6: zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 ] 13,950,003.6: zp[2]:37 [ mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] 3,500,003.5: zp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] 3,000,001.88: zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] 3,000,001.88: zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] 1,833,335.17: zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] +Uplift Scope [bitmap_init] 36,250,003.62: zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 22,666,668.93: zp[1]:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 21,666,668.83: zp[1]:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 20,000,002: zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 20,000,002: zp[1]:271 [ bitmap_init::$0 ] 20,000,002: zp[1]:273 [ bitmap_init::$7 ] 20,000,002: zp[1]:274 [ bitmap_init::$8 ] 20,000,002: zp[1]:275 [ bitmap_init::$9 ] 5,000,000.5: zp[1]:272 [ bitmap_init::$10 ] +Uplift Scope [mode_stdchar] 20,000,002: zp[1]:288 [ mode_stdchar::$2 ] 20,000,002: zp[1]:289 [ mode_stdchar::$3 ] 20,000,002: zp[1]:290 [ mode_stdchar::$4 ] 20,000,002: zp[1]:292 [ mode_stdchar::$6 ] 20,000,002: zp[1]:293 [ mode_stdchar::$7 ] 18,636,365.5: zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] 11,659,094.18: zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] 10,000,001: zp[1]:291 [ mode_stdchar::$5 ] 9,300,003: zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] 3,500,003.5: zp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] 3,071,430.36: zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] +Uplift Scope [mode_ecmchar] 20,000,002: zp[1]:282 [ mode_ecmchar::$2 ] 20,000,002: zp[1]:283 [ mode_ecmchar::$3 ] 20,000,002: zp[1]:284 [ mode_ecmchar::$4 ] 20,000,002: zp[1]:286 [ mode_ecmchar::$6 ] 20,000,002: zp[1]:287 [ mode_ecmchar::$7 ] 18,636,365.5: zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] 11,659,094.18: zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] 10,000,001: zp[1]:285 [ mode_ecmchar::$5 ] 9,300,003: zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] 3,500,003.5: zp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] 3,071,430.36: zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] +Uplift Scope [mode_mcchar] 20,000,002: zp[1]:276 [ mode_mcchar::$2 ] 20,000,002: zp[1]:277 [ mode_mcchar::$3 ] 20,000,002: zp[1]:278 [ mode_mcchar::$4 ] 20,000,002: zp[1]:280 [ mode_mcchar::$6 ] 20,000,002: zp[1]:281 [ mode_mcchar::$7 ] 18,636,365.5: zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] 11,659,094.18: zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] 10,000,001: zp[1]:279 [ mode_mcchar::$5 ] 9,300,003: zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] 3,500,003.5: zp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] 3,071,430.36: zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] +Uplift Scope [dtvSetCpuBankSegment1] 130,000,004: zp[1]:15 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] +Uplift Scope [mode_stdbitmap] 20,000,002: zp[1]:243 [ mode_stdbitmap::$4 ] 20,000,002: zp[1]:246 [ mode_stdbitmap::$7 ] 20,000,002: zp[1]:247 [ mode_stdbitmap::$8 ] 18,750,001.88: zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] 15,000,001.5: zp[1]:244 [ mode_stdbitmap::col#0 ] 10,628,574.6: zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] 10,000,001: zp[1]:245 [ mode_stdbitmap::col2#0 ] 3,500,003.5: zp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] 3,000,003: zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] 2,590,910.86: zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] +Uplift Scope [mode_8bppchunkybmm] 35,694,450.14: zp[1]:9 [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] 29,200,005.35: zp[2]:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] 20,000,002: zp[1]:187 [ mode_8bppchunkybmm::c#0 ] 18,000,001.8: zp[2]:7 [ mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] 10,000,001: zp[2]:185 [ mode_8bppchunkybmm::$7 ] 3,500,003.5: zp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] 2,423,078.65: zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +Uplift Scope [mode_hicolstdchar] 20,000,002: zp[1]:239 [ mode_hicolstdchar::$2 ] 20,000,002: zp[1]:241 [ mode_hicolstdchar::$4 ] 18,333,335.17: zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] 10,166,669.76: zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] 10,075,003.1: zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] 10,000,001: zp[1]:240 [ mode_hicolstdchar::$3 ] 10,000,001: zp[1]:242 [ mode_hicolstdchar::v#0 ] 3,500,003.5: zp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] 2,500,001.75: zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] +Uplift Scope [mode_hicolecmchar] 20,000,002: zp[1]:235 [ mode_hicolecmchar::$2 ] 20,000,002: zp[1]:237 [ mode_hicolecmchar::$4 ] 18,333,335.17: zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] 10,166,669.76: zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] 10,075,003.1: zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] 10,000,001: zp[1]:236 [ mode_hicolecmchar::$3 ] 10,000,001: zp[1]:238 [ mode_hicolecmchar::v#0 ] 3,500,003.5: zp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] 2,500,001.75: zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] +Uplift Scope [mode_hicolmcchar] 20,000,002: zp[1]:231 [ mode_hicolmcchar::$2 ] 20,000,002: zp[1]:233 [ mode_hicolmcchar::$4 ] 18,333,335.17: zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] 10,166,669.76: zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] 10,075,003.1: zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] 10,000,001: zp[1]:232 [ mode_hicolmcchar::$3 ] 10,000,001: zp[1]:234 [ mode_hicolmcchar::v#0 ] 3,500,003.5: zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] 2,500,001.75: zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] +Uplift Scope [bitmap_line] 6,050,000.65: zp[1]:251 [ bitmap_line::y1#0 ] 5,761,905.38: zp[1]:250 [ bitmap_line::y0#0 ] 4,444,444.89: zp[1]:253 [ bitmap_line::yd#2 ] 4,444,444.89: zp[1]:254 [ bitmap_line::yd#1 ] 4,444,444.89: zp[1]:256 [ bitmap_line::yd#10 ] 4,444,444.89: zp[1]:257 [ bitmap_line::yd#11 ] 4,136,364.09: zp[1]:249 [ bitmap_line::x1#0 ] 3,956,522.17: zp[1]:248 [ bitmap_line::x0#0 ] 3,500,000.35: zp[1]:252 [ bitmap_line::xd#2 ] 3,500,000.35: zp[1]:255 [ bitmap_line::xd#1 ] +Uplift Scope [memset] 33,333,336.67: zp[2]:159 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_str_lines] 19,333,337.17: zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] 6,666,667.33: zp[1]:294 [ print_str_lines::ch#0 ] +Uplift Scope [menu] 350,003.5: zp[1]:2 [ menu::i#2 menu::i#1 ] 333,336.67: zp[2]:3 [ menu::c#2 menu::c#1 ] 200,002: zp[1]:162 [ menu::$5 ] 200,002: zp[1]:164 [ menu::$9 ] 200,002: zp[1]:166 [ menu::$13 ] 200,002: zp[1]:168 [ menu::$17 ] 200,002: zp[1]:170 [ menu::$21 ] 200,002: zp[1]:172 [ menu::$25 ] 200,002: zp[1]:174 [ menu::$29 ] 200,002: zp[1]:176 [ menu::$33 ] 200,002: zp[1]:178 [ menu::$37 ] 200,002: zp[1]:180 [ menu::$41 ] 200,002: zp[1]:182 [ menu::$45 ] 200,002: zp[1]:184 [ menu::$49 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [print_set_screen] Uplift Scope [main] -Uplifting [mode_8bpppixelcell] best 3629720 combination reg byte a [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ] reg byte a [ mode_8bpppixelcell::$8 ] zp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] zp[2]:26 [ mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] zp[1]:211 [ mode_8bpppixelcell::$2 ] zp[1]:213 [ mode_8bpppixelcell::$4 ] zp[1]:214 [ mode_8bpppixelcell::$5 ] zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 ] zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 ] zp[1]:212 [ mode_8bpppixelcell::$3 ] zp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] -Limited combination testing to 10 combinations of 3538944 possible. -Uplifting [mode_ctrl] best 3601820 combination reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] reg byte a [ mode_ctrl::$1 ] zp[1]:191 [ mode_ctrl::$4 ] zp[1]:193 [ mode_ctrl::$8 ] zp[1]:195 [ mode_ctrl::$12 ] zp[1]:197 [ mode_ctrl::$16 ] zp[1]:199 [ mode_ctrl::$20 ] zp[1]:201 [ mode_ctrl::$24 ] zp[1]:203 [ mode_ctrl::$28 ] -Limited combination testing to 10 combinations of 196608 possible. -Uplifting [mode_twoplanebitmap] best 3586820 combination zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ] zp[2]:54 [ mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] reg byte x [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] reg byte a [ mode_twoplanebitmap::$2 ] zp[1]:222 [ mode_twoplanebitmap::$4 ] zp[1]:223 [ mode_twoplanebitmap::$5 ] zp[1]:224 [ mode_twoplanebitmap::$8 ] zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 ] zp[1]:221 [ mode_twoplanebitmap::$3 ] zp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] -Limited combination testing to 10 combinations of 196608 possible. -Uplifting [mode_sixsfred2] best 3571820 combination zp[2]:67 [ mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] reg byte x [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] reg byte a [ mode_sixsfred2::$2 ] zp[1]:227 [ mode_sixsfred2::$4 ] zp[1]:228 [ mode_sixsfred2::$5 ] zp[1]:229 [ mode_sixsfred2::$8 ] zp[1]:230 [ mode_sixsfred2::row#0 ] zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] zp[2]:63 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 ] zp[1]:226 [ mode_sixsfred2::$3 ] zp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] -Limited combination testing to 10 combinations of 786432 possible. -Uplifting [mode_sixsfred] best 3546820 combination zp[2]:41 [ mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] reg byte x [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] reg byte x [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] reg byte a [ mode_sixsfred::$2 ] zp[1]:217 [ mode_sixsfred::$3 ] zp[1]:218 [ mode_sixsfred::$6 ] zp[1]:219 [ mode_sixsfred::row#0 ] zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 ] zp[2]:37 [ mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] zp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] -Limited combination testing to 10 combinations of 65536 possible. -Uplifting [mode_stdchar] best 3534820 combination reg byte a [ mode_stdchar::$2 ] reg byte a [ mode_stdchar::$3 ] zp[1]:290 [ mode_stdchar::$4 ] zp[1]:292 [ mode_stdchar::$6 ] zp[1]:293 [ mode_stdchar::$7 ] zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] zp[1]:291 [ mode_stdchar::$5 ] zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] zp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] -Limited combination testing to 10 combinations of 36864 possible. -Uplifting [mode_ecmchar] best 3522820 combination reg byte a [ mode_ecmchar::$2 ] reg byte a [ mode_ecmchar::$3 ] zp[1]:284 [ mode_ecmchar::$4 ] zp[1]:286 [ mode_ecmchar::$6 ] zp[1]:287 [ mode_ecmchar::$7 ] zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] zp[1]:285 [ mode_ecmchar::$5 ] zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] zp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] -Limited combination testing to 10 combinations of 36864 possible. -Uplifting [mode_mcchar] best 3510820 combination reg byte a [ mode_mcchar::$2 ] reg byte a [ mode_mcchar::$3 ] zp[1]:278 [ mode_mcchar::$4 ] zp[1]:280 [ mode_mcchar::$6 ] zp[1]:281 [ mode_mcchar::$7 ] zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] zp[1]:279 [ mode_mcchar::$5 ] zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] zp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] -Limited combination testing to 10 combinations of 36864 possible. -Uplifting [bitmap_plot] best 3486811 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:261 [ bitmap_plot::plotter_y#0 ] zp[1]:265 [ bitmap_plot::$1 ] zp[2]:259 [ bitmap_plot::plotter_x#0 ] zp[2]:263 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_plot] best 3767711 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:261 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] zp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:259 [ bitmap_plot::plotter_x#0 ] zp[2]:263 [ bitmap_plot::plotter#0 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [mode_stdbitmap] best 3474811 combination reg byte a [ mode_stdbitmap::$4 ] reg byte a [ mode_stdbitmap::$7 ] zp[1]:247 [ mode_stdbitmap::$8 ] zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] zp[1]:244 [ mode_stdbitmap::col#0 ] zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] zp[1]:245 [ mode_stdbitmap::col2#0 ] zp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] -Limited combination testing to 10 combinations of 13824 possible. -Uplifting [mode_8bppchunkybmm] best 3462511 combination reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] zp[2]:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] reg byte a [ mode_8bppchunkybmm::c#0 ] zp[2]:7 [ mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] zp[2]:185 [ mode_8bppchunkybmm::$7 ] zp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +Uplifting [bitmap_line_xdyi] best 3757705 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte a [ bitmap_line_xdyi::$6 ] zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_xdyd] best 3747699 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte a [ bitmap_line_xdyd::$6 ] zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_ydxi] best 3741699 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte x [ bitmap_line_ydxi::$6 ] zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [bitmap_line_ydxd] best 3735699 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte x [ bitmap_line_ydxd::$6 ] zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Limited combination testing to 10 combinations of 256 possible. +Uplifting [] best 3729363 combination zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 ] reg byte x [ dtv_control#114 dtv_control#144 dtv_control#17 ] +Uplifting [keyboard_matrix_read] best 3729351 combination reg byte y [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] zp[1]:207 [ keyboard_matrix_read::return#2 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [bitmap_line_xdyi] best 3456511 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_xdyd] best 3450511 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxi] best 3440505 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxd] best 3430499 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Limited combination testing to 10 combinations of 256 possible. -Uplifting [mode_hicolstdchar] best 3418499 combination reg byte a [ mode_hicolstdchar::$2 ] reg byte a [ mode_hicolstdchar::$4 ] zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] zp[1]:240 [ mode_hicolstdchar::$3 ] zp[1]:242 [ mode_hicolstdchar::v#0 ] zp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] -Limited combination testing to 10 combinations of 2304 possible. -Uplifting [mode_hicolecmchar] best 3406499 combination reg byte a [ mode_hicolecmchar::$2 ] reg byte a [ mode_hicolecmchar::$4 ] zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] zp[1]:236 [ mode_hicolecmchar::$3 ] zp[1]:238 [ mode_hicolecmchar::v#0 ] zp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] -Limited combination testing to 10 combinations of 2304 possible. -Uplifting [mode_hicolmcchar] best 3394499 combination reg byte a [ mode_hicolmcchar::$2 ] reg byte a [ mode_hicolmcchar::$4 ] zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] zp[1]:232 [ mode_hicolmcchar::$3 ] zp[1]:234 [ mode_hicolmcchar::v#0 ] zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Limited combination testing to 10 combinations of 2304 possible. -Uplifting [] best 3394499 combination zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 ] zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] -Uplifting [bitmap_clear] best 3385499 combination zp[2]:124 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:269 [ bitmap_clear::bitmap#0 ] -Uplifting [menu] best 3383699 combination reg byte x [ menu::i#2 menu::i#1 ] zp[2]:3 [ menu::c#2 menu::c#1 ] reg byte a [ menu::$5 ] zp[1]:164 [ menu::$9 ] zp[1]:166 [ menu::$13 ] zp[1]:168 [ menu::$17 ] zp[1]:170 [ menu::$21 ] zp[1]:172 [ menu::$25 ] zp[1]:174 [ menu::$29 ] zp[1]:176 [ menu::$33 ] zp[1]:178 [ menu::$37 ] zp[1]:180 [ menu::$41 ] zp[1]:182 [ menu::$45 ] zp[1]:184 [ menu::$49 ] -Limited combination testing to 10 combinations of 50331648 possible. -Uplifting [dtvSetCpuBankSegment1] best 3382690 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] -Uplifting [print_str_lines] best 3370690 combination zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] -Uplifting [bitmap_init] best 3367690 combination zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp[1]:271 [ bitmap_init::$0 ] zp[1]:273 [ bitmap_init::$7 ] zp[1]:274 [ bitmap_init::$8 ] zp[1]:275 [ bitmap_init::$9 ] zp[1]:272 [ bitmap_init::$10 ] +Uplifting [mode_ctrl] best 3723351 combination zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] reg byte a [ mode_ctrl::$1 ] zp[1]:191 [ mode_ctrl::$4 ] zp[1]:193 [ mode_ctrl::$8 ] zp[1]:195 [ mode_ctrl::$12 ] zp[1]:197 [ mode_ctrl::$16 ] zp[1]:199 [ mode_ctrl::$20 ] zp[1]:201 [ mode_ctrl::$24 ] zp[1]:203 [ mode_ctrl::$28 ] +Limited combination testing to 10 combinations of 196608 possible. +Uplifting [mode_8bpppixelcell] best 3573351 combination reg byte a [ mode_8bpppixelcell::c#2 mode_8bpppixelcell::c#3 ] reg byte a [ mode_8bpppixelcell::$8 ] zp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] zp[2]:26 [ mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] zp[1]:211 [ mode_8bpppixelcell::$2 ] zp[1]:213 [ mode_8bpppixelcell::$4 ] zp[1]:214 [ mode_8bpppixelcell::$5 ] zp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 ] zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 ] zp[1]:212 [ mode_8bpppixelcell::$3 ] zp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] +Limited combination testing to 10 combinations of 3538944 possible. +Uplifting [bitmap_clear] best 3564351 combination zp[2]:124 [ 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[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:269 [ bitmap_clear::bitmap#0 ] +Uplifting [mode_twoplanebitmap] best 3549351 combination zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ] zp[2]:54 [ mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] reg byte x [ mode_twoplanebitmap::bx#2 mode_twoplanebitmap::bx#1 ] reg byte a [ mode_twoplanebitmap::$2 ] zp[1]:222 [ mode_twoplanebitmap::$4 ] zp[1]:223 [ mode_twoplanebitmap::$5 ] zp[1]:224 [ mode_twoplanebitmap::$8 ] zp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] zp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 ] zp[1]:221 [ mode_twoplanebitmap::$3 ] zp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] +Limited combination testing to 10 combinations of 196608 possible. +Uplifting [mode_sixsfred2] best 3534351 combination zp[2]:67 [ mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] reg byte x [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ] reg byte a [ mode_sixsfred2::$2 ] zp[1]:227 [ mode_sixsfred2::$4 ] zp[1]:228 [ mode_sixsfred2::$5 ] zp[1]:229 [ mode_sixsfred2::$8 ] zp[1]:230 [ mode_sixsfred2::row#0 ] zp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] zp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] zp[2]:63 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 ] zp[1]:226 [ mode_sixsfred2::$3 ] zp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] +Limited combination testing to 10 combinations of 786432 possible. +Uplifting [mode_sixsfred] best 3509351 combination zp[2]:41 [ mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] reg byte x [ mode_sixsfred::bx#2 mode_sixsfred::bx#1 ] reg byte x [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ] reg byte a [ mode_sixsfred::$2 ] zp[1]:217 [ mode_sixsfred::$3 ] zp[1]:218 [ mode_sixsfred::$6 ] zp[1]:219 [ mode_sixsfred::row#0 ] zp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 ] zp[2]:37 [ mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] zp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] +Limited combination testing to 10 combinations of 65536 possible. +Uplifting [bitmap_init] best 3506351 combination zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp[1]:271 [ bitmap_init::$0 ] zp[1]:273 [ bitmap_init::$7 ] zp[1]:274 [ bitmap_init::$8 ] zp[1]:275 [ bitmap_init::$9 ] zp[1]:272 [ bitmap_init::$10 ] Limited combination testing to 10 combinations of 34560 possible. -Uplifting [memset] best 3367690 combination zp[2]:159 [ memset::dst#2 memset::dst#1 ] -Uplifting [bitmap_line] best 3367374 combination zp[1]:251 [ bitmap_line::y1#0 ] zp[1]:250 [ bitmap_line::y0#0 ] reg byte x [ bitmap_line::x1#0 ] zp[1]:248 [ bitmap_line::x0#0 ] zp[1]:253 [ bitmap_line::yd#2 ] zp[1]:254 [ bitmap_line::yd#1 ] zp[1]:256 [ bitmap_line::yd#10 ] zp[1]:257 [ bitmap_line::yd#11 ] zp[1]:252 [ bitmap_line::xd#2 ] zp[1]:255 [ bitmap_line::xd#1 ] -Limited combination testing to 10 combinations of 186624 possible. -Uplifting [keyboard_matrix_read] best 3367362 combination reg byte y [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] zp[1]:210 [ keyboard_matrix_read::return#0 ] +Uplifting [mode_stdchar] best 3494351 combination reg byte a [ mode_stdchar::$2 ] reg byte a [ mode_stdchar::$3 ] zp[1]:290 [ mode_stdchar::$4 ] zp[1]:292 [ mode_stdchar::$6 ] zp[1]:293 [ mode_stdchar::$7 ] zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] zp[1]:291 [ mode_stdchar::$5 ] zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] zp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] +Limited combination testing to 10 combinations of 36864 possible. +Uplifting [mode_ecmchar] best 3482351 combination reg byte a [ mode_ecmchar::$2 ] reg byte a [ mode_ecmchar::$3 ] zp[1]:284 [ mode_ecmchar::$4 ] zp[1]:286 [ mode_ecmchar::$6 ] zp[1]:287 [ mode_ecmchar::$7 ] zp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] zp[1]:285 [ mode_ecmchar::$5 ] zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] zp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] +Limited combination testing to 10 combinations of 36864 possible. +Uplifting [mode_mcchar] best 3470351 combination reg byte a [ mode_mcchar::$2 ] reg byte a [ mode_mcchar::$3 ] zp[1]:278 [ mode_mcchar::$4 ] zp[1]:280 [ mode_mcchar::$6 ] zp[1]:281 [ mode_mcchar::$7 ] zp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] zp[1]:279 [ mode_mcchar::$5 ] zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] zp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] +Limited combination testing to 10 combinations of 36864 possible. +Uplifting [dtvSetCpuBankSegment1] best 3467342 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] +Uplifting [mode_stdbitmap] best 3455342 combination reg byte a [ mode_stdbitmap::$4 ] reg byte a [ mode_stdbitmap::$7 ] zp[1]:247 [ mode_stdbitmap::$8 ] zp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] zp[1]:244 [ mode_stdbitmap::col#0 ] zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] zp[1]:245 [ mode_stdbitmap::col2#0 ] zp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] +Limited combination testing to 10 combinations of 13824 possible. +Uplifting [mode_8bppchunkybmm] best 3445042 combination reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] zp[2]:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] reg byte a [ mode_8bppchunkybmm::c#0 ] zp[2]:7 [ mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] zp[2]:185 [ mode_8bppchunkybmm::$7 ] zp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [RADIX] best 3367362 combination -Uplifting [print_ln] best 3367362 combination -Uplifting [print_cls] best 3367362 combination -Uplifting [print_set_screen] best 3367362 combination -Uplifting [main] best 3367362 combination -Attempting to uplift remaining variables inzp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] -Uplifting [mode_8bpppixelcell] best 3277362 combination reg byte x [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] -Attempting to uplift remaining variables inzp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] -Uplifting [mode_8bpppixelcell] best 3277362 combination zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] -Attempting to uplift remaining variables inzp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] -Uplifting [mode_8bpppixelcell] best 3277362 combination zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] +Uplifting [mode_hicolstdchar] best 3433042 combination reg byte a [ mode_hicolstdchar::$2 ] reg byte a [ mode_hicolstdchar::$4 ] zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] zp[1]:240 [ mode_hicolstdchar::$3 ] zp[1]:242 [ mode_hicolstdchar::v#0 ] zp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] +Limited combination testing to 10 combinations of 2304 possible. +Uplifting [mode_hicolecmchar] best 3421042 combination reg byte a [ mode_hicolecmchar::$2 ] reg byte a [ mode_hicolecmchar::$4 ] zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] zp[1]:236 [ mode_hicolecmchar::$3 ] zp[1]:238 [ mode_hicolecmchar::v#0 ] zp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] +Limited combination testing to 10 combinations of 2304 possible. +Uplifting [mode_hicolmcchar] best 3409042 combination reg byte a [ mode_hicolmcchar::$2 ] reg byte a [ mode_hicolmcchar::$4 ] zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] zp[1]:232 [ mode_hicolmcchar::$3 ] zp[1]:234 [ mode_hicolmcchar::v#0 ] zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] +Limited combination testing to 10 combinations of 2304 possible. +Uplifting [bitmap_line] best 3408718 combination zp[1]:251 [ bitmap_line::y1#0 ] reg byte x [ bitmap_line::y0#0 ] zp[1]:253 [ bitmap_line::yd#2 ] zp[1]:254 [ bitmap_line::yd#1 ] zp[1]:256 [ bitmap_line::yd#10 ] zp[1]:257 [ bitmap_line::yd#11 ] zp[1]:249 [ bitmap_line::x1#0 ] zp[1]:248 [ bitmap_line::x0#0 ] zp[1]:252 [ bitmap_line::xd#2 ] zp[1]:255 [ bitmap_line::xd#1 ] +Limited combination testing to 10 combinations of 186624 possible. +Uplifting [memset] best 3408718 combination zp[2]:159 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_str_lines] best 3396718 combination zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] +Uplifting [menu] best 3394918 combination reg byte x [ menu::i#2 menu::i#1 ] zp[2]:3 [ menu::c#2 menu::c#1 ] reg byte a [ menu::$5 ] zp[1]:164 [ menu::$9 ] zp[1]:166 [ menu::$13 ] zp[1]:168 [ menu::$17 ] zp[1]:170 [ menu::$21 ] zp[1]:172 [ menu::$25 ] zp[1]:174 [ menu::$29 ] zp[1]:176 [ menu::$33 ] zp[1]:178 [ menu::$37 ] zp[1]:180 [ menu::$41 ] zp[1]:182 [ menu::$45 ] zp[1]:184 [ menu::$49 ] +Limited combination testing to 10 combinations of 50331648 possible. +Uplifting [RADIX] best 3394918 combination +Uplifting [print_ln] best 3394918 combination +Uplifting [print_cls] best 3394918 combination +Uplifting [print_set_screen] best 3394918 combination +Uplifting [main] best 3394918 combination +Attempting to uplift remaining variables inzp[1]:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] +Uplifting [bitmap_plot] best 3382912 combination reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Attempting to uplift remaining variables inzp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Uplifting [bitmap_line_xdyi] best 3277362 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Uplifting [bitmap_line_xdyi] best 3382912 combination zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Attempting to uplift remaining variables inzp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Uplifting [bitmap_line_ydxi] best 3277362 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Attempting to uplift remaining variables inzp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] -Uplifting [bitmap_line_xdyd] best 3277362 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] +Uplifting [bitmap_line_xdyd] best 3382912 combination zp[1]:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Attempting to uplift remaining variables inzp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Uplifting [bitmap_line_ydxd] best 3277362 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Attempting to uplift remaining variables inzp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Uplifting [bitmap_line_xdyi] best 3277362 combination zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Attempting to uplift remaining variables inzp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] -Uplifting [bitmap_line_xdyd] best 3277362 combination zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] -Attempting to uplift remaining variables inzp[1]:188 [ keyboard_key_pressed::return#14 ] -Uplifting [keyboard_key_pressed] best 3271362 combination reg byte a [ keyboard_key_pressed::return#14 ] -Attempting to uplift remaining variables inzp[1]:190 [ keyboard_key_pressed::return#15 ] -Uplifting [keyboard_key_pressed] best 3265362 combination reg byte a [ keyboard_key_pressed::return#15 ] -Attempting to uplift remaining variables inzp[1]:191 [ mode_ctrl::$4 ] -Uplifting [mode_ctrl] best 3259362 combination reg byte a [ mode_ctrl::$4 ] -Attempting to uplift remaining variables inzp[1]:192 [ keyboard_key_pressed::return#16 ] -Uplifting [keyboard_key_pressed] best 3253362 combination reg byte a [ keyboard_key_pressed::return#16 ] -Attempting to uplift remaining variables inzp[1]:193 [ mode_ctrl::$8 ] -Uplifting [mode_ctrl] best 3247362 combination reg byte a [ mode_ctrl::$8 ] -Attempting to uplift remaining variables inzp[1]:194 [ keyboard_key_pressed::return#17 ] -Uplifting [keyboard_key_pressed] best 3241362 combination reg byte a [ keyboard_key_pressed::return#17 ] -Attempting to uplift remaining variables inzp[1]:195 [ mode_ctrl::$12 ] -Uplifting [mode_ctrl] best 3235362 combination reg byte a [ mode_ctrl::$12 ] -Attempting to uplift remaining variables inzp[1]:196 [ keyboard_key_pressed::return#18 ] -Uplifting [keyboard_key_pressed] best 3229362 combination reg byte a [ keyboard_key_pressed::return#18 ] -Attempting to uplift remaining variables inzp[1]:197 [ mode_ctrl::$16 ] -Uplifting [mode_ctrl] best 3223362 combination reg byte a [ mode_ctrl::$16 ] -Attempting to uplift remaining variables inzp[1]:198 [ keyboard_key_pressed::return#19 ] -Uplifting [keyboard_key_pressed] best 3217362 combination reg byte a [ keyboard_key_pressed::return#19 ] -Attempting to uplift remaining variables inzp[1]:199 [ mode_ctrl::$20 ] -Uplifting [mode_ctrl] best 3211362 combination reg byte a [ mode_ctrl::$20 ] -Attempting to uplift remaining variables inzp[1]:200 [ keyboard_key_pressed::return#20 ] -Uplifting [keyboard_key_pressed] best 3205362 combination reg byte a [ keyboard_key_pressed::return#20 ] -Attempting to uplift remaining variables inzp[1]:201 [ mode_ctrl::$24 ] -Uplifting [mode_ctrl] best 3199362 combination reg byte a [ mode_ctrl::$24 ] -Attempting to uplift remaining variables inzp[1]:202 [ keyboard_key_pressed::return#21 ] -Uplifting [keyboard_key_pressed] best 3193362 combination reg byte a [ keyboard_key_pressed::return#21 ] -Attempting to uplift remaining variables inzp[1]:203 [ mode_ctrl::$28 ] -Uplifting [mode_ctrl] best 3187362 combination reg byte a [ mode_ctrl::$28 ] -Attempting to uplift remaining variables inzp[1]:211 [ mode_8bpppixelcell::$2 ] -Uplifting [mode_8bpppixelcell] best 3181362 combination reg byte a [ mode_8bpppixelcell::$2 ] -Attempting to uplift remaining variables inzp[1]:213 [ mode_8bpppixelcell::$4 ] -Uplifting [mode_8bpppixelcell] best 3175362 combination reg byte a [ mode_8bpppixelcell::$4 ] -Attempting to uplift remaining variables inzp[1]:214 [ mode_8bpppixelcell::$5 ] -Uplifting [mode_8bpppixelcell] best 3169362 combination reg byte a [ mode_8bpppixelcell::$5 ] -Attempting to uplift remaining variables inzp[1]:217 [ mode_sixsfred::$3 ] -Uplifting [mode_sixsfred] best 3163362 combination reg byte a [ mode_sixsfred::$3 ] -Attempting to uplift remaining variables inzp[1]:218 [ mode_sixsfred::$6 ] -Uplifting [mode_sixsfred] best 3157362 combination reg byte a [ mode_sixsfred::$6 ] -Attempting to uplift remaining variables inzp[1]:219 [ mode_sixsfred::row#0 ] -Uplifting [mode_sixsfred] best 3153362 combination reg byte a [ mode_sixsfred::row#0 ] -Attempting to uplift remaining variables inzp[1]:222 [ mode_twoplanebitmap::$4 ] -Uplifting [mode_twoplanebitmap] best 3147362 combination reg byte a [ mode_twoplanebitmap::$4 ] -Attempting to uplift remaining variables inzp[1]:223 [ mode_twoplanebitmap::$5 ] -Uplifting [mode_twoplanebitmap] best 3141362 combination reg byte a [ mode_twoplanebitmap::$5 ] -Attempting to uplift remaining variables inzp[1]:224 [ mode_twoplanebitmap::$8 ] -Uplifting [mode_twoplanebitmap] best 3135362 combination reg byte a [ mode_twoplanebitmap::$8 ] -Attempting to uplift remaining variables inzp[1]:227 [ mode_sixsfred2::$4 ] -Uplifting [mode_sixsfred2] best 3129362 combination reg byte a [ mode_sixsfred2::$4 ] -Attempting to uplift remaining variables inzp[1]:228 [ mode_sixsfred2::$5 ] -Uplifting [mode_sixsfred2] best 3123362 combination reg byte a [ mode_sixsfred2::$5 ] -Attempting to uplift remaining variables inzp[1]:229 [ mode_sixsfred2::$8 ] -Uplifting [mode_sixsfred2] best 3117362 combination reg byte a [ mode_sixsfred2::$8 ] -Attempting to uplift remaining variables inzp[1]:230 [ mode_sixsfred2::row#0 ] -Uplifting [mode_sixsfred2] best 3113362 combination reg byte a [ mode_sixsfred2::row#0 ] -Attempting to uplift remaining variables inzp[1]:247 [ mode_stdbitmap::$8 ] -Uplifting [mode_stdbitmap] best 3107362 combination reg byte a [ mode_stdbitmap::$8 ] -Attempting to uplift remaining variables inzp[1]:278 [ mode_mcchar::$4 ] -Uplifting [mode_mcchar] best 3101362 combination reg byte a [ mode_mcchar::$4 ] -Attempting to uplift remaining variables inzp[1]:280 [ mode_mcchar::$6 ] -Uplifting [mode_mcchar] best 3095362 combination reg byte a [ mode_mcchar::$6 ] -Attempting to uplift remaining variables inzp[1]:281 [ mode_mcchar::$7 ] -Uplifting [mode_mcchar] best 3089362 combination reg byte a [ mode_mcchar::$7 ] -Attempting to uplift remaining variables inzp[1]:284 [ mode_ecmchar::$4 ] -Uplifting [mode_ecmchar] best 3083362 combination reg byte a [ mode_ecmchar::$4 ] -Attempting to uplift remaining variables inzp[1]:286 [ mode_ecmchar::$6 ] -Uplifting [mode_ecmchar] best 3077362 combination reg byte a [ mode_ecmchar::$6 ] -Attempting to uplift remaining variables inzp[1]:287 [ mode_ecmchar::$7 ] -Uplifting [mode_ecmchar] best 3071362 combination reg byte a [ mode_ecmchar::$7 ] -Attempting to uplift remaining variables inzp[1]:290 [ mode_stdchar::$4 ] -Uplifting [mode_stdchar] best 3065362 combination reg byte a [ mode_stdchar::$4 ] -Attempting to uplift remaining variables inzp[1]:292 [ mode_stdchar::$6 ] -Uplifting [mode_stdchar] best 3059362 combination reg byte a [ mode_stdchar::$6 ] -Attempting to uplift remaining variables inzp[1]:293 [ mode_stdchar::$7 ] -Uplifting [mode_stdchar] best 3053362 combination reg byte a [ mode_stdchar::$7 ] -Attempting to uplift remaining variables inzp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] -Uplifting [mode_8bpppixelcell] best 3043362 combination reg byte x [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] -Attempting to uplift remaining variables inzp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] -Uplifting [mode_twoplanebitmap] best 3033362 combination reg byte x [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] -Attempting to uplift remaining variables inzp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] -Uplifting [mode_sixsfred2] best 3023362 combination reg byte x [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] -Attempting to uplift remaining variables inzp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] -Uplifting [mode_sixsfred] best 3014362 combination reg byte x [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] -Attempting to uplift remaining variables inzp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] -Uplifting [mode_sixsfred2] best 3005362 combination reg byte x [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] -Attempting to uplift remaining variables inzp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] -Uplifting [mode_stdbitmap] best 2995362 combination reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] -Attempting to uplift remaining variables inzp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] -Uplifting [mode_mcchar] best 2984362 combination reg byte x [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] -Uplifting [mode_ecmchar] best 2973362 combination reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -Uplifting [mode_stdchar] best 2962362 combination reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] -Uplifting [mode_hicolmcchar] best 2952362 combination reg byte x [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] -Uplifting [mode_hicolecmchar] best 2942362 combination reg byte x [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] -Uplifting [mode_hicolstdchar] best 2932362 combination reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] -Attempting to uplift remaining variables inzp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] -Uplifting [mode_twoplanebitmap] best 2923362 combination reg byte x [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] -Attempting to uplift remaining variables inzp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] -Uplifting [mode_8bpppixelcell] best 2923362 combination zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] -Attempting to uplift remaining variables inzp[1]:244 [ mode_stdbitmap::col#0 ] -Uplifting [mode_stdbitmap] best 2922362 combination reg byte y [ mode_stdbitmap::col#0 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Attempting to uplift remaining variables inzp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] +Attempting to uplift remaining variables inzp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Attempting to uplift remaining variables inzp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] -Uplifting [bitmap_line_xdyi] best 2922362 combination zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] +Uplifting [bitmap_line_xdyi] best 3382912 combination zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] Attempting to uplift remaining variables inzp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] -Uplifting [bitmap_line_ydxi] best 2922362 combination zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] -Uplifting [bitmap_line_xdyd] best 2922362 combination zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] +Uplifting [bitmap_line_xdyd] best 3382912 combination zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] Attempting to uplift remaining variables inzp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Uplifting [bitmap_line_ydxd] best 2922362 combination zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Attempting to uplift remaining variables inzp[1]:212 [ mode_8bpppixelcell::$3 ] -Uplifting [mode_8bpppixelcell] best 2922362 combination zp[1]:212 [ mode_8bpppixelcell::$3 ] -Attempting to uplift remaining variables inzp[1]:221 [ mode_twoplanebitmap::$3 ] -Uplifting [mode_twoplanebitmap] best 2922362 combination zp[1]:221 [ mode_twoplanebitmap::$3 ] -Attempting to uplift remaining variables inzp[1]:226 [ mode_sixsfred2::$3 ] -Uplifting [mode_sixsfred2] best 2922362 combination zp[1]:226 [ mode_sixsfred2::$3 ] -Attempting to uplift remaining variables inzp[1]:232 [ mode_hicolmcchar::$3 ] -Uplifting [mode_hicolmcchar] best 2922362 combination zp[1]:232 [ mode_hicolmcchar::$3 ] -Attempting to uplift remaining variables inzp[1]:234 [ mode_hicolmcchar::v#0 ] -Uplifting [mode_hicolmcchar] best 2913362 combination reg byte a [ mode_hicolmcchar::v#0 ] -Attempting to uplift remaining variables inzp[1]:236 [ mode_hicolecmchar::$3 ] -Uplifting [mode_hicolecmchar] best 2913362 combination zp[1]:236 [ mode_hicolecmchar::$3 ] -Attempting to uplift remaining variables inzp[1]:238 [ mode_hicolecmchar::v#0 ] -Uplifting [mode_hicolecmchar] best 2904362 combination reg byte a [ mode_hicolecmchar::v#0 ] -Attempting to uplift remaining variables inzp[1]:240 [ mode_hicolstdchar::$3 ] -Uplifting [mode_hicolstdchar] best 2904362 combination zp[1]:240 [ mode_hicolstdchar::$3 ] -Attempting to uplift remaining variables inzp[1]:242 [ mode_hicolstdchar::v#0 ] -Uplifting [mode_hicolstdchar] best 2895362 combination reg byte a [ mode_hicolstdchar::v#0 ] -Attempting to uplift remaining variables inzp[1]:245 [ mode_stdbitmap::col2#0 ] -Uplifting [mode_stdbitmap] best 2895362 combination zp[1]:245 [ mode_stdbitmap::col2#0 ] -Attempting to uplift remaining variables inzp[1]:279 [ mode_mcchar::$5 ] -Uplifting [mode_mcchar] best 2895362 combination zp[1]:279 [ mode_mcchar::$5 ] -Attempting to uplift remaining variables inzp[1]:285 [ mode_ecmchar::$5 ] -Uplifting [mode_ecmchar] best 2895362 combination zp[1]:285 [ mode_ecmchar::$5 ] -Attempting to uplift remaining variables inzp[1]:291 [ mode_stdchar::$5 ] -Uplifting [mode_stdchar] best 2895362 combination zp[1]:291 [ mode_stdchar::$5 ] -Attempting to uplift remaining variables inzp[1]:209 [ keyboard_key_pressed::return#0 ] -Uplifting [keyboard_key_pressed] best 2867759 combination reg byte a [ keyboard_key_pressed::return#0 ] -Attempting to uplift remaining variables inzp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] -Uplifting [mode_8bppchunkybmm] best 2866559 combination reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] -Attempting to uplift remaining variables inzp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] -Uplifting [mode_8bpppixelcell] best 2865359 combination reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] -Attempting to uplift remaining variables inzp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] -Uplifting [mode_sixsfred] best 2864159 combination reg byte x [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] -Attempting to uplift remaining variables inzp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] -Uplifting [mode_twoplanebitmap] best 2862959 combination reg byte x [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] -Attempting to uplift remaining variables inzp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] -Uplifting [mode_sixsfred2] best 2861759 combination reg byte x [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] -Attempting to uplift remaining variables inzp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] -Uplifting [mode_hicolmcchar] best 2860559 combination reg byte x [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] -Uplifting [mode_hicolecmchar] best 2859359 combination reg byte x [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] -Uplifting [mode_hicolstdchar] best 2858159 combination reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] -Uplifting [mode_stdbitmap] best 2856959 combination reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] -Attempting to uplift remaining variables inzp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] -Uplifting [mode_mcchar] best 2855759 combination reg byte x [ mode_mcchar::i#2 mode_mcchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] -Uplifting [mode_ecmchar] best 2854559 combination reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] -Uplifting [mode_stdchar] best 2853359 combination reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ] -Attempting to uplift remaining variables inzp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] -Uplifting [mode_mcchar] best 2853359 combination zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] -Uplifting [mode_ecmchar] best 2853359 combination zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] -Uplifting [mode_stdchar] best 2853359 combination zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] -Uplifting [mode_stdbitmap] best 2853359 combination zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] -Attempting to uplift remaining variables inzp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] -Uplifting [mode_sixsfred] best 2853359 combination zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] -Attempting to uplift remaining variables inzp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] -Uplifting [mode_sixsfred] best 2853359 combination zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] -Attempting to uplift remaining variables inzp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] -Uplifting [mode_sixsfred2] best 2853359 combination zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] -Attempting to uplift remaining variables inzp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] -Uplifting [mode_8bpppixelcell] best 2853359 combination zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] -Attempting to uplift remaining variables inzp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] -Uplifting [mode_twoplanebitmap] best 2853359 combination zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] -Attempting to uplift remaining variables inzp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] -Uplifting [mode_sixsfred2] best 2853359 combination zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] -Attempting to uplift remaining variables inzp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] -Uplifting [mode_twoplanebitmap] best 2853359 combination zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] -Attempting to uplift remaining variables inzp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] -Uplifting [mode_stdbitmap] best 2853359 combination zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] -Attempting to uplift remaining variables inzp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Uplifting [mode_hicolmcchar] best 2853359 combination zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] -Uplifting [mode_hicolecmchar] best 2853359 combination zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] -Uplifting [mode_hicolstdchar] best 2853359 combination zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] -Uplifting [mode_8bppchunkybmm] best 2853359 combination zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] -Attempting to uplift remaining variables inzp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Uplifting [bitmap_init] best 2851559 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -Attempting to uplift remaining variables inzp[1]:161 [ keyboard_key_pressed::return#2 ] -Uplifting [keyboard_key_pressed] best 2850959 combination reg byte a [ keyboard_key_pressed::return#2 ] -Attempting to uplift remaining variables inzp[1]:163 [ keyboard_key_pressed::return#24 ] -Uplifting [keyboard_key_pressed] best 2850359 combination reg byte a [ keyboard_key_pressed::return#24 ] -Attempting to uplift remaining variables inzp[1]:164 [ menu::$9 ] -Uplifting [menu] best 2849759 combination reg byte a [ menu::$9 ] -Attempting to uplift remaining variables inzp[1]:165 [ keyboard_key_pressed::return#25 ] -Uplifting [keyboard_key_pressed] best 2849159 combination reg byte a [ keyboard_key_pressed::return#25 ] -Attempting to uplift remaining variables inzp[1]:166 [ menu::$13 ] -Uplifting [menu] best 2848559 combination reg byte a [ menu::$13 ] -Attempting to uplift remaining variables inzp[1]:167 [ keyboard_key_pressed::return#26 ] -Uplifting [keyboard_key_pressed] best 2847959 combination reg byte a [ keyboard_key_pressed::return#26 ] -Attempting to uplift remaining variables inzp[1]:168 [ menu::$17 ] -Uplifting [menu] best 2847359 combination reg byte a [ menu::$17 ] -Attempting to uplift remaining variables inzp[1]:169 [ keyboard_key_pressed::return#27 ] -Uplifting [keyboard_key_pressed] best 2846759 combination reg byte a [ keyboard_key_pressed::return#27 ] -Attempting to uplift remaining variables inzp[1]:170 [ menu::$21 ] -Uplifting [menu] best 2846159 combination reg byte a [ menu::$21 ] -Attempting to uplift remaining variables inzp[1]:171 [ keyboard_key_pressed::return#28 ] -Uplifting [keyboard_key_pressed] best 2845559 combination reg byte a [ keyboard_key_pressed::return#28 ] -Attempting to uplift remaining variables inzp[1]:172 [ menu::$25 ] -Uplifting [menu] best 2844959 combination reg byte a [ menu::$25 ] -Attempting to uplift remaining variables inzp[1]:173 [ keyboard_key_pressed::return#29 ] -Uplifting [keyboard_key_pressed] best 2844359 combination reg byte a [ keyboard_key_pressed::return#29 ] -Attempting to uplift remaining variables inzp[1]:174 [ menu::$29 ] -Uplifting [menu] best 2843759 combination reg byte a [ menu::$29 ] -Attempting to uplift remaining variables inzp[1]:175 [ keyboard_key_pressed::return#30 ] -Uplifting [keyboard_key_pressed] best 2843159 combination reg byte a [ keyboard_key_pressed::return#30 ] -Attempting to uplift remaining variables inzp[1]:176 [ menu::$33 ] -Uplifting [menu] best 2842559 combination reg byte a [ menu::$33 ] -Attempting to uplift remaining variables inzp[1]:177 [ keyboard_key_pressed::return#10 ] -Uplifting [keyboard_key_pressed] best 2841959 combination reg byte a [ keyboard_key_pressed::return#10 ] -Attempting to uplift remaining variables inzp[1]:178 [ menu::$37 ] -Uplifting [menu] best 2841359 combination reg byte a [ menu::$37 ] -Attempting to uplift remaining variables inzp[1]:179 [ keyboard_key_pressed::return#11 ] -Uplifting [keyboard_key_pressed] best 2840759 combination reg byte a [ keyboard_key_pressed::return#11 ] -Attempting to uplift remaining variables inzp[1]:180 [ menu::$41 ] -Uplifting [menu] best 2840159 combination reg byte a [ menu::$41 ] -Attempting to uplift remaining variables inzp[1]:181 [ keyboard_key_pressed::return#12 ] -Uplifting [keyboard_key_pressed] best 2839559 combination reg byte a [ keyboard_key_pressed::return#12 ] -Attempting to uplift remaining variables inzp[1]:182 [ menu::$45 ] -Uplifting [menu] best 2838959 combination reg byte a [ menu::$45 ] -Attempting to uplift remaining variables inzp[1]:183 [ keyboard_key_pressed::return#13 ] -Uplifting [keyboard_key_pressed] best 2838359 combination reg byte a [ keyboard_key_pressed::return#13 ] -Attempting to uplift remaining variables inzp[1]:184 [ menu::$49 ] -Uplifting [menu] best 2837759 combination reg byte a [ menu::$49 ] -Attempting to uplift remaining variables inzp[1]:271 [ bitmap_init::$0 ] -Uplifting [bitmap_init] best 2837359 combination reg byte a [ bitmap_init::$0 ] -Attempting to uplift remaining variables inzp[1]:273 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 2836759 combination reg byte a [ bitmap_init::$7 ] -Attempting to uplift remaining variables inzp[1]:274 [ bitmap_init::$8 ] -Uplifting [bitmap_init] best 2836159 combination reg byte a [ bitmap_init::$8 ] -Attempting to uplift remaining variables inzp[1]:275 [ bitmap_init::$9 ] -Uplifting [bitmap_init] best 2835559 combination reg byte a [ bitmap_init::$9 ] -Attempting to uplift remaining variables inzp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] -Uplifting [mode_sixsfred] best 2835559 combination zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] -Attempting to uplift remaining variables inzp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] -Uplifting [mode_twoplanebitmap] best 2835559 combination zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] -Attempting to uplift remaining variables inzp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] -Uplifting [mode_sixsfred2] best 2835559 combination zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] -Attempting to uplift remaining variables inzp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 2835559 combination zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] -Uplifting [mode_8bpppixelcell] best 2835559 combination zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] -Attempting to uplift remaining variables inzp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] -Uplifting [] best 2835559 combination zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Attempting to uplift remaining variables inzp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] -Uplifting [bitmap_line_xdyi] best 2835559 combination zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] +Uplifting [bitmap_line_xdyi] best 3382912 combination zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] -Uplifting [bitmap_line_ydxi] best 2835559 combination zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] Attempting to uplift remaining variables inzp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] -Uplifting [bitmap_line_xdyd] best 2835559 combination zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] +Uplifting [bitmap_line_xdyd] best 3382912 combination zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] Attempting to uplift remaining variables inzp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] -Uplifting [bitmap_line_ydxd] best 2835559 combination zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] Attempting to uplift remaining variables inzp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] -Uplifting [bitmap_line_xdyi] best 2835559 combination zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] +Uplifting [bitmap_line_xdyi] best 3382912 combination zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Attempting to uplift remaining variables inzp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] -Uplifting [bitmap_line_ydxi] best 2835559 combination zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] Attempting to uplift remaining variables inzp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] -Uplifting [bitmap_line_xdyd] best 2835559 combination zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] +Uplifting [bitmap_line_xdyd] best 3382912 combination zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] Attempting to uplift remaining variables inzp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] -Uplifting [bitmap_line_ydxd] best 2835559 combination zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] Attempting to uplift remaining variables inzp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Uplifting [bitmap_line_xdyi] best 2835559 combination zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Uplifting [bitmap_line_xdyi] best 3382912 combination zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Uplifting [bitmap_line_ydxi] best 2835559 combination zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Uplifting [bitmap_line_ydxi] best 3382912 combination zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] Attempting to uplift remaining variables inzp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Uplifting [bitmap_line_xdyd] best 2835559 combination zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Uplifting [bitmap_line_xdyd] best 3382912 combination zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] Attempting to uplift remaining variables inzp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplifting [bitmap_line_ydxd] best 2835559 combination zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Attempting to uplift remaining variables inzp[1]:272 [ bitmap_init::$10 ] -Uplifting [bitmap_init] best 2835559 combination zp[1]:272 [ bitmap_init::$10 ] -Attempting to uplift remaining variables inzp[1]:251 [ bitmap_line::y1#0 ] -Uplifting [bitmap_line] best 2835559 combination zp[1]:251 [ bitmap_line::y1#0 ] -Attempting to uplift remaining variables inzp[1]:250 [ bitmap_line::y0#0 ] -Uplifting [bitmap_line] best 2835559 combination zp[1]:250 [ bitmap_line::y0#0 ] -Attempting to uplift remaining variables inzp[1]:248 [ bitmap_line::x0#0 ] -Uplifting [bitmap_line] best 2835559 combination zp[1]:248 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line_ydxd] best 3382912 combination zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Attempting to uplift remaining variables inzp[1]:205 [ keyboard_key_pressed::rowidx#0 ] -Uplifting [keyboard_key_pressed] best 2835555 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] +Uplifting [keyboard_key_pressed] best 3382908 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] +Attempting to uplift remaining variables inzp[1]:207 [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_matrix_read] best 3382902 combination reg byte a [ keyboard_matrix_read::return#2 ] Attempting to uplift remaining variables inzp[1]:208 [ keyboard_key_pressed::$2 ] -Uplifting [keyboard_key_pressed] best 2835549 combination reg byte a [ keyboard_key_pressed::$2 ] -Attempting to uplift remaining variables inzp[1]:265 [ bitmap_plot::$1 ] -Uplifting [bitmap_plot] best 2835543 combination reg byte a [ bitmap_plot::$1 ] +Uplifting [keyboard_key_pressed] best 3382896 combination reg byte a [ keyboard_key_pressed::$2 ] +Attempting to uplift remaining variables inzp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] +Uplifting [mode_ctrl] best 3382896 combination zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] Attempting to uplift remaining variables inzp[1]:14 [ keyboard_key_pressed::key#20 ] -Uplifting [keyboard_key_pressed] best 2835481 combination reg byte y [ keyboard_key_pressed::key#20 ] -Attempting to uplift remaining variables inzp[1]:210 [ keyboard_matrix_read::return#0 ] -Uplifting [keyboard_matrix_read] best 2835475 combination reg byte a [ keyboard_matrix_read::return#0 ] -Attempting to uplift remaining variables inzp[1]:253 [ bitmap_line::yd#2 ] -Uplifting [bitmap_line] best 2835465 combination reg byte y [ bitmap_line::yd#2 ] -Attempting to uplift remaining variables inzp[1]:254 [ bitmap_line::yd#1 ] -Uplifting [bitmap_line] best 2835455 combination reg byte y [ bitmap_line::yd#1 ] -Attempting to uplift remaining variables inzp[1]:256 [ bitmap_line::yd#10 ] -Uplifting [bitmap_line] best 2835445 combination reg byte y [ bitmap_line::yd#10 ] -Attempting to uplift remaining variables inzp[1]:257 [ bitmap_line::yd#11 ] -Uplifting [bitmap_line] best 2835435 combination reg byte y [ bitmap_line::yd#11 ] -Attempting to uplift remaining variables inzp[1]:252 [ bitmap_line::xd#2 ] -Uplifting [bitmap_line] best 2835435 combination zp[1]:252 [ bitmap_line::xd#2 ] -Attempting to uplift remaining variables inzp[1]:255 [ bitmap_line::xd#1 ] -Uplifting [bitmap_line] best 2835435 combination zp[1]:255 [ bitmap_line::xd#1 ] +Uplifting [keyboard_key_pressed] best 3382834 combination reg byte y [ keyboard_key_pressed::key#20 ] Attempting to uplift remaining variables inzp[1]:204 [ keyboard_key_pressed::colidx#0 ] -Uplifting [keyboard_key_pressed] best 2835435 combination zp[1]:204 [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_key_pressed] best 3382834 combination zp[1]:204 [ keyboard_key_pressed::colidx#0 ] +Attempting to uplift remaining variables inzp[1]:188 [ keyboard_key_pressed::return#14 ] +Uplifting [keyboard_key_pressed] best 3376834 combination reg byte a [ keyboard_key_pressed::return#14 ] +Attempting to uplift remaining variables inzp[1]:190 [ keyboard_key_pressed::return#15 ] +Uplifting [keyboard_key_pressed] best 3370834 combination reg byte a [ keyboard_key_pressed::return#15 ] +Attempting to uplift remaining variables inzp[1]:191 [ mode_ctrl::$4 ] +Uplifting [mode_ctrl] best 3364834 combination reg byte a [ mode_ctrl::$4 ] +Attempting to uplift remaining variables inzp[1]:192 [ keyboard_key_pressed::return#16 ] +Uplifting [keyboard_key_pressed] best 3358834 combination reg byte a [ keyboard_key_pressed::return#16 ] +Attempting to uplift remaining variables inzp[1]:193 [ mode_ctrl::$8 ] +Uplifting [mode_ctrl] best 3352834 combination reg byte a [ mode_ctrl::$8 ] +Attempting to uplift remaining variables inzp[1]:194 [ keyboard_key_pressed::return#17 ] +Uplifting [keyboard_key_pressed] best 3346834 combination reg byte a [ keyboard_key_pressed::return#17 ] +Attempting to uplift remaining variables inzp[1]:195 [ mode_ctrl::$12 ] +Uplifting [mode_ctrl] best 3340834 combination reg byte a [ mode_ctrl::$12 ] +Attempting to uplift remaining variables inzp[1]:196 [ keyboard_key_pressed::return#18 ] +Uplifting [keyboard_key_pressed] best 3334834 combination reg byte a [ keyboard_key_pressed::return#18 ] +Attempting to uplift remaining variables inzp[1]:197 [ mode_ctrl::$16 ] +Uplifting [mode_ctrl] best 3328834 combination reg byte a [ mode_ctrl::$16 ] +Attempting to uplift remaining variables inzp[1]:198 [ keyboard_key_pressed::return#19 ] +Uplifting [keyboard_key_pressed] best 3322834 combination reg byte a [ keyboard_key_pressed::return#19 ] +Attempting to uplift remaining variables inzp[1]:199 [ mode_ctrl::$20 ] +Uplifting [mode_ctrl] best 3316834 combination reg byte a [ mode_ctrl::$20 ] +Attempting to uplift remaining variables inzp[1]:200 [ keyboard_key_pressed::return#20 ] +Uplifting [keyboard_key_pressed] best 3310834 combination reg byte a [ keyboard_key_pressed::return#20 ] +Attempting to uplift remaining variables inzp[1]:201 [ mode_ctrl::$24 ] +Uplifting [mode_ctrl] best 3304834 combination reg byte a [ mode_ctrl::$24 ] +Attempting to uplift remaining variables inzp[1]:202 [ keyboard_key_pressed::return#21 ] +Uplifting [keyboard_key_pressed] best 3298834 combination reg byte a [ keyboard_key_pressed::return#21 ] +Attempting to uplift remaining variables inzp[1]:203 [ mode_ctrl::$28 ] +Uplifting [mode_ctrl] best 3292834 combination reg byte a [ mode_ctrl::$28 ] +Attempting to uplift remaining variables inzp[1]:29 [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] +Uplifting [mode_8bpppixelcell] best 3202834 combination reg byte x [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ] +Attempting to uplift remaining variables inzp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] +Uplifting [mode_8bpppixelcell] best 3202834 combination zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] +Attempting to uplift remaining variables inzp[1]:209 [ keyboard_key_pressed::return#0 ] +Uplifting [keyboard_key_pressed] best 3175231 combination reg byte a [ keyboard_key_pressed::return#0 ] +Attempting to uplift remaining variables inzp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] +Uplifting [mode_8bpppixelcell] best 3175231 combination zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] +Attempting to uplift remaining variables inzp[1]:129 [ bitmap_init::y#2 bitmap_init::y#1 ] +Uplifting [bitmap_init] best 3173431 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +Attempting to uplift remaining variables inzp[1]:211 [ mode_8bpppixelcell::$2 ] +Uplifting [mode_8bpppixelcell] best 3167431 combination reg byte a [ mode_8bpppixelcell::$2 ] +Attempting to uplift remaining variables inzp[1]:213 [ mode_8bpppixelcell::$4 ] +Uplifting [mode_8bpppixelcell] best 3161431 combination reg byte a [ mode_8bpppixelcell::$4 ] +Attempting to uplift remaining variables inzp[1]:214 [ mode_8bpppixelcell::$5 ] +Uplifting [mode_8bpppixelcell] best 3155431 combination reg byte a [ mode_8bpppixelcell::$5 ] +Attempting to uplift remaining variables inzp[1]:217 [ mode_sixsfred::$3 ] +Uplifting [mode_sixsfred] best 3149431 combination reg byte a [ mode_sixsfred::$3 ] +Attempting to uplift remaining variables inzp[1]:218 [ mode_sixsfred::$6 ] +Uplifting [mode_sixsfred] best 3143431 combination reg byte a [ mode_sixsfred::$6 ] +Attempting to uplift remaining variables inzp[1]:219 [ mode_sixsfred::row#0 ] +Uplifting [mode_sixsfred] best 3139431 combination reg byte a [ mode_sixsfred::row#0 ] +Attempting to uplift remaining variables inzp[1]:222 [ mode_twoplanebitmap::$4 ] +Uplifting [mode_twoplanebitmap] best 3133431 combination reg byte a [ mode_twoplanebitmap::$4 ] +Attempting to uplift remaining variables inzp[1]:223 [ mode_twoplanebitmap::$5 ] +Uplifting [mode_twoplanebitmap] best 3127431 combination reg byte a [ mode_twoplanebitmap::$5 ] +Attempting to uplift remaining variables inzp[1]:224 [ mode_twoplanebitmap::$8 ] +Uplifting [mode_twoplanebitmap] best 3121431 combination reg byte a [ mode_twoplanebitmap::$8 ] +Attempting to uplift remaining variables inzp[1]:227 [ mode_sixsfred2::$4 ] +Uplifting [mode_sixsfred2] best 3115431 combination reg byte a [ mode_sixsfred2::$4 ] +Attempting to uplift remaining variables inzp[1]:228 [ mode_sixsfred2::$5 ] +Uplifting [mode_sixsfred2] best 3109431 combination reg byte a [ mode_sixsfred2::$5 ] +Attempting to uplift remaining variables inzp[1]:229 [ mode_sixsfred2::$8 ] +Uplifting [mode_sixsfred2] best 3103431 combination reg byte a [ mode_sixsfred2::$8 ] +Attempting to uplift remaining variables inzp[1]:230 [ mode_sixsfred2::row#0 ] +Uplifting [mode_sixsfred2] best 3099431 combination reg byte a [ mode_sixsfred2::row#0 ] +Attempting to uplift remaining variables inzp[1]:247 [ mode_stdbitmap::$8 ] +Uplifting [mode_stdbitmap] best 3093431 combination reg byte a [ mode_stdbitmap::$8 ] +Attempting to uplift remaining variables inzp[1]:271 [ bitmap_init::$0 ] +Uplifting [bitmap_init] best 3093031 combination reg byte a [ bitmap_init::$0 ] +Attempting to uplift remaining variables inzp[1]:273 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 3092431 combination reg byte a [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:274 [ bitmap_init::$8 ] +Uplifting [bitmap_init] best 3091831 combination reg byte a [ bitmap_init::$8 ] +Attempting to uplift remaining variables inzp[1]:275 [ bitmap_init::$9 ] +Uplifting [bitmap_init] best 3091231 combination reg byte a [ bitmap_init::$9 ] +Attempting to uplift remaining variables inzp[1]:278 [ mode_mcchar::$4 ] +Uplifting [mode_mcchar] best 3085231 combination reg byte a [ mode_mcchar::$4 ] +Attempting to uplift remaining variables inzp[1]:280 [ mode_mcchar::$6 ] +Uplifting [mode_mcchar] best 3079231 combination reg byte a [ mode_mcchar::$6 ] +Attempting to uplift remaining variables inzp[1]:281 [ mode_mcchar::$7 ] +Uplifting [mode_mcchar] best 3073231 combination reg byte a [ mode_mcchar::$7 ] +Attempting to uplift remaining variables inzp[1]:284 [ mode_ecmchar::$4 ] +Uplifting [mode_ecmchar] best 3067231 combination reg byte a [ mode_ecmchar::$4 ] +Attempting to uplift remaining variables inzp[1]:286 [ mode_ecmchar::$6 ] +Uplifting [mode_ecmchar] best 3061231 combination reg byte a [ mode_ecmchar::$6 ] +Attempting to uplift remaining variables inzp[1]:287 [ mode_ecmchar::$7 ] +Uplifting [mode_ecmchar] best 3055231 combination reg byte a [ mode_ecmchar::$7 ] +Attempting to uplift remaining variables inzp[1]:290 [ mode_stdchar::$4 ] +Uplifting [mode_stdchar] best 3049231 combination reg byte a [ mode_stdchar::$4 ] +Attempting to uplift remaining variables inzp[1]:292 [ mode_stdchar::$6 ] +Uplifting [mode_stdchar] best 3043231 combination reg byte a [ mode_stdchar::$6 ] +Attempting to uplift remaining variables inzp[1]:293 [ mode_stdchar::$7 ] +Uplifting [mode_stdchar] best 3037231 combination reg byte a [ mode_stdchar::$7 ] +Attempting to uplift remaining variables inzp[1]:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] +Uplifting [mode_8bpppixelcell] best 3027231 combination reg byte x [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ] +Attempting to uplift remaining variables inzp[1]:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] +Uplifting [mode_twoplanebitmap] best 3017231 combination reg byte x [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ] +Attempting to uplift remaining variables inzp[1]:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] +Uplifting [mode_sixsfred2] best 3007231 combination reg byte x [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ] +Attempting to uplift remaining variables inzp[1]:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] +Uplifting [mode_sixsfred] best 2998231 combination reg byte x [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ] +Attempting to uplift remaining variables inzp[1]:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] +Uplifting [mode_sixsfred2] best 2989231 combination reg byte x [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ] +Attempting to uplift remaining variables inzp[1]:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] +Uplifting [mode_stdbitmap] best 2979231 combination reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] +Attempting to uplift remaining variables inzp[1]:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] +Uplifting [mode_mcchar] best 2968231 combination reg byte x [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] +Uplifting [mode_ecmchar] best 2957231 combination reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] +Uplifting [mode_stdchar] best 2946231 combination reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] +Uplifting [mode_hicolmcchar] best 2936231 combination reg byte x [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] +Uplifting [mode_hicolecmchar] best 2926231 combination reg byte x [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] +Uplifting [mode_hicolstdchar] best 2916231 combination reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] +Attempting to uplift remaining variables inzp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 2916231 combination zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp[1]:52 [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] +Uplifting [mode_twoplanebitmap] best 2907231 combination reg byte x [ mode_twoplanebitmap::ax#2 mode_twoplanebitmap::ax#1 ] +Attempting to uplift remaining variables inzp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] +Uplifting [mode_8bpppixelcell] best 2907231 combination zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] +Attempting to uplift remaining variables inzp[1]:244 [ mode_stdbitmap::col#0 ] +Uplifting [mode_stdbitmap] best 2906231 combination reg byte y [ mode_stdbitmap::col#0 ] +Attempting to uplift remaining variables inzp[1]:212 [ mode_8bpppixelcell::$3 ] +Uplifting [mode_8bpppixelcell] best 2906231 combination zp[1]:212 [ mode_8bpppixelcell::$3 ] +Attempting to uplift remaining variables inzp[1]:221 [ mode_twoplanebitmap::$3 ] +Uplifting [mode_twoplanebitmap] best 2906231 combination zp[1]:221 [ mode_twoplanebitmap::$3 ] +Attempting to uplift remaining variables inzp[1]:226 [ mode_sixsfred2::$3 ] +Uplifting [mode_sixsfred2] best 2906231 combination zp[1]:226 [ mode_sixsfred2::$3 ] +Attempting to uplift remaining variables inzp[1]:232 [ mode_hicolmcchar::$3 ] +Uplifting [mode_hicolmcchar] best 2906231 combination zp[1]:232 [ mode_hicolmcchar::$3 ] +Attempting to uplift remaining variables inzp[1]:234 [ mode_hicolmcchar::v#0 ] +Uplifting [mode_hicolmcchar] best 2897231 combination reg byte a [ mode_hicolmcchar::v#0 ] +Attempting to uplift remaining variables inzp[1]:236 [ mode_hicolecmchar::$3 ] +Uplifting [mode_hicolecmchar] best 2897231 combination zp[1]:236 [ mode_hicolecmchar::$3 ] +Attempting to uplift remaining variables inzp[1]:238 [ mode_hicolecmchar::v#0 ] +Uplifting [mode_hicolecmchar] best 2888231 combination reg byte a [ mode_hicolecmchar::v#0 ] +Attempting to uplift remaining variables inzp[1]:240 [ mode_hicolstdchar::$3 ] +Uplifting [mode_hicolstdchar] best 2888231 combination zp[1]:240 [ mode_hicolstdchar::$3 ] +Attempting to uplift remaining variables inzp[1]:242 [ mode_hicolstdchar::v#0 ] +Uplifting [mode_hicolstdchar] best 2879231 combination reg byte a [ mode_hicolstdchar::v#0 ] +Attempting to uplift remaining variables inzp[1]:245 [ mode_stdbitmap::col2#0 ] +Uplifting [mode_stdbitmap] best 2879231 combination zp[1]:245 [ mode_stdbitmap::col2#0 ] +Attempting to uplift remaining variables inzp[1]:279 [ mode_mcchar::$5 ] +Uplifting [mode_mcchar] best 2879231 combination zp[1]:279 [ mode_mcchar::$5 ] +Attempting to uplift remaining variables inzp[1]:285 [ mode_ecmchar::$5 ] +Uplifting [mode_ecmchar] best 2879231 combination zp[1]:285 [ mode_ecmchar::$5 ] +Attempting to uplift remaining variables inzp[1]:291 [ mode_stdchar::$5 ] +Uplifting [mode_stdchar] best 2879231 combination zp[1]:291 [ mode_stdchar::$5 ] +Attempting to uplift remaining variables inzp[1]:251 [ bitmap_line::y1#0 ] +Uplifting [bitmap_line] best 2879231 combination zp[1]:251 [ bitmap_line::y1#0 ] +Attempting to uplift remaining variables inzp[1]:272 [ bitmap_init::$10 ] +Uplifting [bitmap_init] best 2879231 combination zp[1]:272 [ bitmap_init::$10 ] +Attempting to uplift remaining variables inzp[1]:253 [ bitmap_line::yd#2 ] +Uplifting [bitmap_line] best 2879221 combination reg byte y [ bitmap_line::yd#2 ] +Attempting to uplift remaining variables inzp[1]:254 [ bitmap_line::yd#1 ] +Uplifting [bitmap_line] best 2879211 combination reg byte y [ bitmap_line::yd#1 ] +Attempting to uplift remaining variables inzp[1]:256 [ bitmap_line::yd#10 ] +Uplifting [bitmap_line] best 2879201 combination reg byte y [ bitmap_line::yd#10 ] +Attempting to uplift remaining variables inzp[1]:257 [ bitmap_line::yd#11 ] +Uplifting [bitmap_line] best 2879191 combination reg byte y [ bitmap_line::yd#11 ] +Attempting to uplift remaining variables inzp[1]:249 [ bitmap_line::x1#0 ] +Uplifting [bitmap_line] best 2879191 combination zp[1]:249 [ bitmap_line::x1#0 ] +Attempting to uplift remaining variables inzp[1]:248 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line] best 2879191 combination zp[1]:248 [ bitmap_line::x0#0 ] +Attempting to uplift remaining variables inzp[1]:5 [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] +Uplifting [mode_8bppchunkybmm] best 2877991 combination reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] +Attempting to uplift remaining variables inzp[1]:16 [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] +Uplifting [mode_8bpppixelcell] best 2876791 combination reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] +Attempting to uplift remaining variables inzp[1]:31 [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] +Uplifting [mode_sixsfred] best 2875591 combination reg byte x [ mode_sixsfred::i#2 mode_sixsfred::i#1 ] +Attempting to uplift remaining variables inzp[1]:44 [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] +Uplifting [mode_twoplanebitmap] best 2874391 combination reg byte x [ mode_twoplanebitmap::i#2 mode_twoplanebitmap::i#1 ] +Attempting to uplift remaining variables inzp[1]:57 [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] +Uplifting [mode_sixsfred2] best 2873191 combination reg byte x [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ] +Attempting to uplift remaining variables inzp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] +Uplifting [mode_hicolmcchar] best 2871991 combination reg byte x [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] +Uplifting [mode_hicolecmchar] best 2870791 combination reg byte x [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] +Uplifting [mode_hicolstdchar] best 2869591 combination reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] +Uplifting [mode_stdbitmap] best 2868391 combination reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] +Attempting to uplift remaining variables inzp[1]:132 [ mode_mcchar::i#2 mode_mcchar::i#1 ] +Uplifting [mode_mcchar] best 2867191 combination reg byte x [ mode_mcchar::i#2 mode_mcchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:139 [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] +Uplifting [mode_ecmchar] best 2865991 combination reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ] +Uplifting [mode_stdchar] best 2864791 combination reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ] +Attempting to uplift remaining variables inzp[1]:252 [ bitmap_line::xd#2 ] +Uplifting [bitmap_line] best 2864791 combination zp[1]:252 [ bitmap_line::xd#2 ] +Attempting to uplift remaining variables inzp[1]:255 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 2864791 combination zp[1]:255 [ bitmap_line::xd#1 ] +Attempting to uplift remaining variables inzp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] +Uplifting [mode_mcchar] best 2864791 combination zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] +Uplifting [mode_ecmchar] best 2864791 combination zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] +Uplifting [mode_stdchar] best 2864791 combination zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] +Uplifting [mode_stdbitmap] best 2864791 combination zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] +Attempting to uplift remaining variables inzp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] +Uplifting [mode_sixsfred] best 2864791 combination zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] +Attempting to uplift remaining variables inzp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] +Uplifting [mode_sixsfred] best 2864791 combination zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] +Attempting to uplift remaining variables inzp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] +Uplifting [mode_sixsfred2] best 2864791 combination zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] +Attempting to uplift remaining variables inzp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] +Uplifting [mode_8bpppixelcell] best 2864791 combination zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] +Attempting to uplift remaining variables inzp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] +Uplifting [mode_twoplanebitmap] best 2864791 combination zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] +Attempting to uplift remaining variables inzp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] +Uplifting [mode_sixsfred2] best 2864791 combination zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] +Attempting to uplift remaining variables inzp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] +Uplifting [mode_twoplanebitmap] best 2864791 combination zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] +Attempting to uplift remaining variables inzp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] +Uplifting [mode_stdbitmap] best 2864791 combination zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] +Attempting to uplift remaining variables inzp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] +Uplifting [mode_hicolmcchar] best 2864791 combination zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] +Uplifting [mode_hicolecmchar] best 2864791 combination zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] +Uplifting [mode_hicolstdchar] best 2864791 combination zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] +Attempting to uplift remaining variables inzp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +Uplifting [mode_8bppchunkybmm] best 2864791 combination zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +Attempting to uplift remaining variables inzp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] +Uplifting [mode_sixsfred] best 2864791 combination zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] +Attempting to uplift remaining variables inzp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] +Uplifting [mode_twoplanebitmap] best 2864791 combination zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] +Attempting to uplift remaining variables inzp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] +Uplifting [mode_sixsfred2] best 2864791 combination zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] +Attempting to uplift remaining variables inzp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] +Uplifting [mode_8bpppixelcell] best 2864791 combination zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] +Attempting to uplift remaining variables inzp[1]:161 [ keyboard_key_pressed::return#2 ] +Uplifting [keyboard_key_pressed] best 2864191 combination reg byte a [ keyboard_key_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:163 [ keyboard_key_pressed::return#24 ] +Uplifting [keyboard_key_pressed] best 2863591 combination reg byte a [ keyboard_key_pressed::return#24 ] +Attempting to uplift remaining variables inzp[1]:164 [ menu::$9 ] +Uplifting [menu] best 2862991 combination reg byte a [ menu::$9 ] +Attempting to uplift remaining variables inzp[1]:165 [ keyboard_key_pressed::return#25 ] +Uplifting [keyboard_key_pressed] best 2862391 combination reg byte a [ keyboard_key_pressed::return#25 ] +Attempting to uplift remaining variables inzp[1]:166 [ menu::$13 ] +Uplifting [menu] best 2861791 combination reg byte a [ menu::$13 ] +Attempting to uplift remaining variables inzp[1]:167 [ keyboard_key_pressed::return#26 ] +Uplifting [keyboard_key_pressed] best 2861191 combination reg byte a [ keyboard_key_pressed::return#26 ] +Attempting to uplift remaining variables inzp[1]:168 [ menu::$17 ] +Uplifting [menu] best 2860591 combination reg byte a [ menu::$17 ] +Attempting to uplift remaining variables inzp[1]:169 [ keyboard_key_pressed::return#27 ] +Uplifting [keyboard_key_pressed] best 2859991 combination reg byte a [ keyboard_key_pressed::return#27 ] +Attempting to uplift remaining variables inzp[1]:170 [ menu::$21 ] +Uplifting [menu] best 2859391 combination reg byte a [ menu::$21 ] +Attempting to uplift remaining variables inzp[1]:171 [ keyboard_key_pressed::return#28 ] +Uplifting [keyboard_key_pressed] best 2858791 combination reg byte a [ keyboard_key_pressed::return#28 ] +Attempting to uplift remaining variables inzp[1]:172 [ menu::$25 ] +Uplifting [menu] best 2858191 combination reg byte a [ menu::$25 ] +Attempting to uplift remaining variables inzp[1]:173 [ keyboard_key_pressed::return#29 ] +Uplifting [keyboard_key_pressed] best 2857591 combination reg byte a [ keyboard_key_pressed::return#29 ] +Attempting to uplift remaining variables inzp[1]:174 [ menu::$29 ] +Uplifting [menu] best 2856991 combination reg byte a [ menu::$29 ] +Attempting to uplift remaining variables inzp[1]:175 [ keyboard_key_pressed::return#30 ] +Uplifting [keyboard_key_pressed] best 2856391 combination reg byte a [ keyboard_key_pressed::return#30 ] +Attempting to uplift remaining variables inzp[1]:176 [ menu::$33 ] +Uplifting [menu] best 2855791 combination reg byte a [ menu::$33 ] +Attempting to uplift remaining variables inzp[1]:177 [ keyboard_key_pressed::return#10 ] +Uplifting [keyboard_key_pressed] best 2855191 combination reg byte a [ keyboard_key_pressed::return#10 ] +Attempting to uplift remaining variables inzp[1]:178 [ menu::$37 ] +Uplifting [menu] best 2854591 combination reg byte a [ menu::$37 ] +Attempting to uplift remaining variables inzp[1]:179 [ keyboard_key_pressed::return#11 ] +Uplifting [keyboard_key_pressed] best 2853991 combination reg byte a [ keyboard_key_pressed::return#11 ] +Attempting to uplift remaining variables inzp[1]:180 [ menu::$41 ] +Uplifting [menu] best 2853391 combination reg byte a [ menu::$41 ] +Attempting to uplift remaining variables inzp[1]:181 [ keyboard_key_pressed::return#12 ] +Uplifting [keyboard_key_pressed] best 2852791 combination reg byte a [ keyboard_key_pressed::return#12 ] +Attempting to uplift remaining variables inzp[1]:182 [ menu::$45 ] +Uplifting [menu] best 2852191 combination reg byte a [ menu::$45 ] +Attempting to uplift remaining variables inzp[1]:183 [ keyboard_key_pressed::return#13 ] +Uplifting [keyboard_key_pressed] best 2851591 combination reg byte a [ keyboard_key_pressed::return#13 ] +Attempting to uplift remaining variables inzp[1]:184 [ menu::$49 ] +Uplifting [menu] best 2850991 combination reg byte a [ menu::$49 ] Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] ] with [ zp[1]:252 [ bitmap_line::xd#2 ] ] - score: 1 Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 ] ] with [ zp[1]:255 [ bitmap_line::xd#1 ] ] - score: 1 Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] ] with [ zp[1]:248 [ bitmap_line::x0#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] with [ zp[1]:250 [ bitmap_line::y0#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] ] with [ zp[1]:251 [ bitmap_line::y1#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] with [ zp[1]:249 [ bitmap_line::x1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:269 [ bitmap_clear::bitmap#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:259 [ bitmap_plot::plotter_x#0 ] ] with [ zp[2]:263 [ bitmap_plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 ] ] with [ zp[1]:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] ] - score: 2 Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] ] with [ zp[1]:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] ] - score: 2 Coalescing zero page register [ zp[1]:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] ] with [ zp[1]:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] - score: 2 Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 ] ] with [ zp[1]:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 ] ] with [ zp[1]:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] - score: 1 -Coalescing zero page register [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] with [ zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] ] with [ zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] ] +Coalescing zero page register [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] with [ zp[1]:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] - score: 1 +Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 ] ] with [ zp[1]:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] ] with [ zp[1]:6 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] ] Coalescing zero page register [ zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 ] ] with [ zp[2]:7 [ mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] ] +Coalescing zero page register [ zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] ] with [ zp[1]:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] ] Coalescing zero page register [ zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 ] ] with [ zp[2]:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] ] with [ zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] ] +Coalescing zero page register [ zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ] ] with [ zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] Coalescing zero page register [ zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 ] ] with [ zp[2]:26 [ mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] ] with [ zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] ] -Coalescing zero page register [ zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] ] with [ zp[1]:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] -Coalescing zero page register [ zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] ] with [ zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] ] +Coalescing zero page register [ zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ] ] with [ zp[1]:25 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] ] +Coalescing zero page register [ zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 ] ] with [ zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] Coalescing zero page register [ zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 ] ] with [ zp[2]:37 [ mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] ] -Coalescing zero page register [ zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] ] with [ zp[1]:28 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] Coalescing zero page register [ zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 ] ] with [ zp[2]:41 [ mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] ] with [ zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] ] +Coalescing zero page register [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ] ] with [ zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] ] Coalescing zero page register [ zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 ] ] with [ zp[2]:54 [ mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] ] with [ zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] ] +Coalescing zero page register [ zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] ] with [ zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] ] +Coalescing zero page register [ zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] ] with [ zp[1]:53 [ mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] ] Coalescing zero page register [ zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] ] with [ zp[2]:63 [ mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] ] Coalescing zero page register [ zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] ] with [ zp[2]:67 [ mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] ] with [ zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] ] +Coalescing zero page register [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] ] with [ zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] ] Coalescing zero page register [ zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] ] with [ zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] ] Coalescing zero page register [ zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] ] with [ zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] ] Coalescing zero page register [ zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ] ] with [ zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] ] Coalescing zero page register [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] ] with [ zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] -Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 ] ] with [ zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] +Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] with [ zp[1]:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] ] with [ zp[1]:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] Coalescing zero page register [ zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] ] with [ zp[1]:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp[1]:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] ] @@ -18851,9 +18851,9 @@ Coalescing zero page register [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 Coalescing zero page register [ zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] Coalescing zero page register [ zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ] ] with [ zp[1]:96 [ mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] Coalescing zero page register [ zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] ] with [ zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] ] -Coalescing zero page register [ zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] ] with [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] +Coalescing zero page register [ zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ] ] with [ zp[1]:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] Coalescing zero page register [ zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] ] with [ zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] -Coalescing zero page register [ zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] ] with [ zp[1]:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] +Coalescing zero page register [ zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] ] with [ zp[1]:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] ] Coalescing zero page register [ zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] ] with [ zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] Coalescing zero page register [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] ] with [ zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 ] ] with [ zp[2]:3 [ menu::c#2 menu::c#1 ] ] @@ -18866,51 +18866,51 @@ Coalescing zero page register [ zp[1]:279 [ mode_mcchar::$5 ] ] with [ zp[1]:245 Coalescing zero page register [ zp[1]:285 [ mode_ecmchar::$5 ] ] with [ zp[1]:272 [ bitmap_init::$10 ] ] Coalescing zero page register [ zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 ] ] with [ zp[2]:19 [ mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] ] Coalescing zero page register [ zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 ] ] with [ zp[2]:22 [ mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] ] with [ zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] ] +Coalescing zero page register [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ] ] with [ zp[1]:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] ] Coalescing zero page register [ zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 ] ] with [ zp[2]:34 [ mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ] ] with [ zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] ] -Coalescing zero page register [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 ] ] with [ zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] +Coalescing zero page register [ zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 ] ] with [ zp[1]:21 [ mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] ] +Coalescing zero page register [ zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 ] ] with [ zp[1]:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] +Coalescing zero page register [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] ] with [ zp[1]:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] ] Coalescing zero page register [ zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] ] with [ zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] ] Coalescing zero page register [ zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] ] with [ zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] ] with [ zp[1]:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] ] -Coalescing zero page register [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] with [ zp[1]:49 [ mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] -Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] +Coalescing zero page register [ zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] ] with [ zp[1]:40 [ mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] +Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] +Coalescing zero page register [ zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp[1]:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] Coalescing zero page register [ zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 ] ] with [ zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] Coalescing zero page register [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] with [ zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 ] ] with [ zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] Coalescing zero page register [ zp[1]:204 [ keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] with [ zp[1]:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] -Coalescing zero page register [ zp[1]:221 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 ] ] with [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] -Coalescing zero page register [ zp[1]:232 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 ] ] with [ zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] -Coalescing zero page register [ zp[1]:240 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 ] ] with [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] +Coalescing zero page register [ zp[1]:221 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 ] ] with [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] +Coalescing zero page register [ zp[1]:232 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 ] ] with [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] +Coalescing zero page register [ zp[1]:240 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 ] ] with [ zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] Coalescing zero page register [ zp[2]:259 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 ] ] with [ zp[2]:185 [ mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 ] ] -Coalescing zero page register [ zp[1]:279 [ mode_mcchar::$5 mode_stdbitmap::col2#0 ] ] with [ zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] -Coalescing zero page register [ zp[1]:285 [ mode_ecmchar::$5 bitmap_init::$10 ] ] with [ zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] -Coalescing zero page register [ zp[1]:291 [ mode_stdchar::$5 ] ] with [ zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] +Coalescing zero page register [ zp[1]:279 [ mode_mcchar::$5 mode_stdbitmap::col2#0 ] ] with [ zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] +Coalescing zero page register [ zp[1]:285 [ mode_ecmchar::$5 bitmap_init::$10 ] ] with [ zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] ] Coalescing zero page register [ zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 ] ] with [ zp[2]:47 [ mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] ] Coalescing zero page register [ zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 ] ] with [ zp[2]:50 [ mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] with [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] ] +Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] with [ zp[1]:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] ] +Coalescing zero page register [ zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] ] with [ zp[1]:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] ] Coalescing zero page register [ zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:60 [ mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] ] -Coalescing zero page register [ zp[1]:232 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] -Coalescing zero page register [ zp[1]:240 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] with [ zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] ] +Coalescing zero page register [ zp[1]:240 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] with [ zp[1]:66 [ mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] Coalescing zero page register [ zp[2]:259 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 ] ] with [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] -Coalescing zero page register [ zp[1]:279 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] ] with [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] +Coalescing zero page register [ zp[1]:279 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] with [ zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] ] +Coalescing zero page register [ zp[1]:291 [ mode_stdchar::$5 ] ] with [ zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] with [ zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] ] Coalescing zero page register [ zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] ] with [ zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] ] -Allocated (was zp[1]:12) zp[1]:2 [ dtv_control#114 dtv_control#144 dtv_control#17 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] -Allocated (was zp[1]:92) zp[1]:3 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] -Allocated (was zp[1]:118) zp[1]:4 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] -Allocated (was zp[2]:135) zp[2]:5 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] -Allocated (was zp[2]:155) zp[2]:7 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] -Allocated (was zp[2]:157) zp[2]:9 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] -Allocated (was zp[1]:204) zp[1]:11 [ keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Allocated (was zp[1]:221) zp[1]:12 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Allocated (was zp[1]:232) zp[1]:13 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] -Allocated (was zp[1]:240) zp[1]:14 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] -Allocated (was zp[2]:259) zp[2]:15 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] -Allocated (was zp[2]:261) zp[2]:17 [ bitmap_plot::plotter_y#0 ] -Allocated (was zp[1]:279) zp[1]:19 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] -Allocated (was zp[1]:285) zp[1]:20 [ mode_ecmchar::$5 bitmap_init::$10 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Allocated (was zp[1]:291) zp[1]:21 [ mode_stdchar::$5 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] +Coalescing zero page register [ zp[1]:291 [ mode_stdchar::$5 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] with [ zp[1]:204 [ keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] +Allocated (was zp[1]:118) zp[1]:2 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +Allocated (was zp[1]:121) zp[1]:3 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] +Allocated (was zp[2]:135) zp[2]:4 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] +Allocated (was zp[2]:155) zp[2]:6 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] +Allocated (was zp[2]:157) zp[2]:8 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] +Allocated (was zp[1]:221) zp[1]:10 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Allocated (was zp[1]:232) zp[1]:11 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Allocated (was zp[1]:240) zp[1]:12 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] +Allocated (was zp[2]:259) zp[2]:13 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] +Allocated (was zp[2]:261) zp[2]:15 [ bitmap_plot::plotter_y#0 ] +Allocated (was zp[1]:279) zp[1]:17 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] +Allocated (was zp[1]:285) zp[1]:18 [ mode_ecmchar::$5 bitmap_init::$10 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] +Allocated (was zp[1]:291) zp[1]:19 [ mode_stdchar::$5 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -19014,22 +19014,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_1 = $38 .const KEY_2 = $3b .const KEY_SPACE = $3c - .label print_char_cursor = 7 - // The value of the DTV control register - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - .label dtv_control = 2 - .label print_line_cursor = 9 + .label print_char_cursor = 6 + .label print_line_cursor = 8 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -19074,7 +19060,7 @@ main: { menu: { .label SCREEN = $8000 .label CHARSET = $9800 - .label c = 7 + .label c = 6 // [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Charset ROM // DTV Graphics Bank @@ -19537,9 +19523,9 @@ menu: { mode_8bppchunkybmm: { // 8BPP Chunky Bitmap (contains 8bpp pixels) .const PLANEB = $20000 - .label __7 = $f - .label gfxb = 9 - .label x = 7 + .label __7 = $d + .label gfxb = 8 + .label x = 6 .label y = 2 // [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF @@ -19742,9 +19728,8 @@ mode_8bppchunkybmm: { // Leave control to the user until exit // [155] phi from mode_8bppchunkybmm::@10 to mode_ctrl [phi:mode_8bppchunkybmm::@10->mode_ctrl] mode_ctrl_from___b10: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [phi:mode_8bppchunkybmm::@10->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [phi:mode_8bppchunkybmm::@10->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF jsr mode_ctrl jmp __breturn // mode_8bppchunkybmm::@return @@ -19755,6 +19740,8 @@ mode_8bppchunkybmm: { // mode_ctrl // Allow the user to control the DTV graphics using different keys mode_ctrl: { + // DTV Graphics Mode - Reset + .label ctrl = 3 // [156] phi from mode_ctrl mode_ctrl::@11 mode_ctrl::@18 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@11/mode_ctrl::@18->mode_ctrl::@1] __b1_from_mode_ctrl: __b1_from___b11: @@ -19797,9 +19784,9 @@ mode_ctrl: { rts // mode_ctrl::@4 __b4: - // [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 + // [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuz1=vbuxx // Read the current control byte - ldx.z dtv_control + stx.z ctrl // [165] call keyboard_key_pressed // [211] phi from mode_ctrl::@4 to keyboard_key_pressed [phi:mode_ctrl::@4->keyboard_key_pressed] keyboard_key_pressed_from___b4: @@ -19817,10 +19804,10 @@ mode_ctrl: { jmp __b12 // mode_ctrl::@12 __b12: - // [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_LINEAR - tax + // [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_LINEAR + ora.z ctrl + sta.z ctrl // [170] phi from mode_ctrl::@12 mode_ctrl::@20 to mode_ctrl::@5 [phi:mode_ctrl::@12/mode_ctrl::@20->mode_ctrl::@5] __b5_from___b12: __b5_from___b20: @@ -19845,10 +19832,10 @@ mode_ctrl: { jmp __b13 // mode_ctrl::@13 __b13: - // [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_HIGHCOLOR - tax + // [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_HIGHCOLOR + ora.z ctrl + sta.z ctrl // [176] phi from mode_ctrl::@13 mode_ctrl::@21 to mode_ctrl::@6 [phi:mode_ctrl::@13/mode_ctrl::@21->mode_ctrl::@6] __b6_from___b13: __b6_from___b21: @@ -19873,10 +19860,10 @@ mode_ctrl: { jmp __b14 // mode_ctrl::@14 __b14: - // [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_OVERSCAN - tax + // [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_OVERSCAN + ora.z ctrl + sta.z ctrl // [182] phi from mode_ctrl::@14 mode_ctrl::@22 to mode_ctrl::@7 [phi:mode_ctrl::@14/mode_ctrl::@22->mode_ctrl::@7] __b7_from___b14: __b7_from___b22: @@ -19901,10 +19888,10 @@ mode_ctrl: { jmp __b15 // mode_ctrl::@15 __b15: - // [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_BORDER_OFF - tax + // [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_BORDER_OFF + ora.z ctrl + sta.z ctrl // [188] phi from mode_ctrl::@15 mode_ctrl::@23 to mode_ctrl::@8 [phi:mode_ctrl::@15/mode_ctrl::@23->mode_ctrl::@8] __b8_from___b15: __b8_from___b23: @@ -19929,10 +19916,10 @@ mode_ctrl: { jmp __b16 // mode_ctrl::@16 __b16: - // [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_CHUNKY - tax + // [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_CHUNKY + ora.z ctrl + sta.z ctrl // [194] phi from mode_ctrl::@16 mode_ctrl::@24 to mode_ctrl::@9 [phi:mode_ctrl::@16/mode_ctrl::@24->mode_ctrl::@9] __b9_from___b16: __b9_from___b24: @@ -19957,10 +19944,10 @@ mode_ctrl: { jmp __b17 // mode_ctrl::@17 __b17: - // [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_COLORRAM_OFF - tax + // [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_COLORRAM_OFF + ora.z ctrl + sta.z ctrl // [200] phi from mode_ctrl::@17 mode_ctrl::@25 to mode_ctrl::@10 [phi:mode_ctrl::@17/mode_ctrl::@25->mode_ctrl::@10] __b10_from___b17: __b10_from___b25: @@ -19984,8 +19971,9 @@ mode_ctrl: { beq __b27_from___b26 // [206] phi from mode_ctrl::@26 to mode_ctrl::@11 [phi:mode_ctrl::@26->mode_ctrl::@11] __b11_from___b26: - // [206] phi (byte) mode_ctrl::ctrl#14 = (byte) 0 [phi:mode_ctrl::@26->mode_ctrl::@11#0] -- vbuxx=vbuc1 - ldx #0 + // [206] phi (byte) mode_ctrl::ctrl#14 = (byte) 0 [phi:mode_ctrl::@26->mode_ctrl::@11#0] -- vbuz1=vbuc1 + lda #0 + sta.z ctrl jmp __b11 // [205] phi from mode_ctrl::@26 to mode_ctrl::@27 [phi:mode_ctrl::@26->mode_ctrl::@27] __b27_from___b26: @@ -19998,18 +19986,20 @@ mode_ctrl: { jmp __b11 // mode_ctrl::@11 __b11: - // [207] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 - cpx.z dtv_control + // [207] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuz1_eq_vbuxx_then_la1 + cpx.z ctrl beq __b1_from___b11 jmp __b18 // mode_ctrl::@18 __b18: - // [208] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx - stx.z dtv_control - // [209] *((const byte*) DTV_CONTROL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx - stx DTV_CONTROL - // [210] *((const byte*) BORDERCOL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx - stx BORDERCOL + // [208] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuxx=vbuz1 + ldx.z ctrl + // [209] *((const byte*) DTV_CONTROL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + lda.z ctrl + sta DTV_CONTROL + // [210] *((const byte*) BORDERCOL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + lda.z ctrl + sta BORDERCOL jmp __b1_from___b18 } // keyboard_key_pressed @@ -20019,7 +20009,7 @@ mode_ctrl: { // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed // keyboard_key_pressed(byte register(Y) key) keyboard_key_pressed: { - .label colidx = $b + .label colidx = $13 // [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte) 7 -- vbuz1=vbuyy_band_vbuc1 tya and #7 @@ -20103,16 +20093,16 @@ mode_8bpppixelcell: { // 8BPP Pixel Cell Charset (contains 256 64 byte chars) .label PLANEB = $4000 .label CHARGEN = $d000 - .label __3 = $c + .label __3 = $a // Screen Chars for Plane A (screen) - 16x16 repeating - .label gfxa = 7 - .label ay = 4 - .label bits = 3 - .label chargen = 9 - .label gfxb = 5 - .label col = $d - .label cr = $13 - .label ch = $e + .label gfxa = 6 + .label ay = 2 + .label bits = $11 + .label chargen = 8 + .label gfxb = 4 + .label col = $13 + .label cr = $c + .label ch = 3 // [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta DTV_CONTROL @@ -20398,9 +20388,8 @@ mode_8bpppixelcell: { // Leave control to the user until exit // [155] phi from mode_8bpppixelcell::@13 to mode_ctrl [phi:mode_8bpppixelcell::@13->mode_ctrl] mode_ctrl_from___b13: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [phi:mode_8bpppixelcell::@13->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [phi:mode_8bpppixelcell::@13->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY jsr mode_ctrl jmp __breturn // mode_8bpppixelcell::@return @@ -20420,13 +20409,13 @@ mode_sixsfred: { .label PLANEB = $6000 .label COLORS = $8000 // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = $c // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = $11 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 + .label gfxb = 8 .label by = $13 // [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR @@ -20692,9 +20681,8 @@ mode_sixsfred: { // Leave control to the user until exit // [155] phi from mode_sixsfred::@12 to mode_ctrl [phi:mode_sixsfred::@12->mode_ctrl] mode_ctrl_from___b12: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_sixsfred::@12->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_sixsfred::@12->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl jmp __breturn // mode_sixsfred::@return @@ -20717,17 +20705,17 @@ mode_twoplanebitmap: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $c + .label __3 = $a // Color for bits 11 // Colors for bits 01 / 10 - .label col = 7 - .label cy = 3 + .label col = 6 + .label cy = 2 // Graphics for Plane A - horizontal stripes - .label gfxa = 9 - .label ay = $d + .label gfxa = 8 + .label ay = 3 // Graphics for Plane B - vertical stripes - .label gfxb = 5 - .label by = 4 + .label gfxb = 4 + .label by = $c // [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL @@ -21017,9 +21005,8 @@ mode_twoplanebitmap: { // Leave control to the user until exit // [155] phi from mode_twoplanebitmap::@15 to mode_ctrl [phi:mode_twoplanebitmap::@15->mode_ctrl] mode_ctrl_from___b15: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_twoplanebitmap::@15->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_twoplanebitmap::@15->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl jmp __breturn // mode_twoplanebitmap::@return @@ -21050,16 +21037,16 @@ mode_sixsfred2: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $d + .label __3 = $b // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = 2 // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = 3 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 - .label by = $13 + .label gfxb = 8 + .label by = $c // [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 lda #DTV_LINEAR sta DTV_CONTROL @@ -21332,9 +21319,8 @@ mode_sixsfred2: { // Leave control to the user until exit // [155] phi from mode_sixsfred2::@12 to mode_ctrl [phi:mode_sixsfred2::@12->mode_ctrl] mode_ctrl_from___b12: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_LINEAR [phi:mode_sixsfred2::@12->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_LINEAR [phi:mode_sixsfred2::@12->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_LINEAR jsr mode_ctrl jmp __breturn // mode_sixsfred2::@return @@ -21361,11 +21347,11 @@ mode_hicolmcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $d + .label __3 = $b // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $e + .label col = 6 + .label ch = 8 + .label cy = $11 // [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -21528,9 +21514,8 @@ mode_hicolmcchar: { // Leave control to the user until exit // [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl jmp __breturn // mode_hicolmcchar::@return @@ -21555,11 +21540,11 @@ mode_hicolecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $13 + .label col = 6 + .label ch = 8 + .label cy = $11 // [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -21725,9 +21710,8 @@ mode_hicolecmchar: { // Leave control to the user until exit // [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl jmp __breturn // mode_hicolecmchar::@return @@ -21748,11 +21732,11 @@ mode_hicolstdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = 3 + .label col = 6 + .label ch = 8 + .label cy = $13 // [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -21909,9 +21893,8 @@ mode_hicolstdchar: { // Leave control to the user until exit // [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl jmp __breturn // mode_hicolstdchar::@return @@ -21931,11 +21914,11 @@ mode_stdbitmap: { .label SCREEN = $4000 .label BITMAP = $6000 .const lines_cnt = 9 - .label col2 = $13 + .label col2 = $11 // Bitmap Colors - .label ch = 5 - .label cy = 3 - .label l = $15 + .label ch = 4 + .label cy = $13 + .label l = $c // [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -22105,9 +22088,8 @@ mode_stdbitmap: { // Leave control to the user until exit // [155] phi from mode_stdbitmap::@9 to mode_ctrl [phi:mode_stdbitmap::@9->mode_ctrl] mode_ctrl_from___b9: - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdbitmap::@9->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdbitmap::@9->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl jmp __breturn // mode_stdbitmap::@return @@ -22120,13 +22102,13 @@ mode_stdbitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - // [587] (byte) bitmap_line::x1#0 ← *((const byte*) mode_stdbitmap::lines_x+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 + // [587] (byte) bitmap_line::x1#0 ← *((const byte*) mode_stdbitmap::lines_x+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z l - ldx lines_x+1,y - // [588] (byte) bitmap_line::y0#0 ← *((const byte*) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + lda lines_x+1,y + sta.z bitmap_line.x1 + // [588] (byte) bitmap_line::y0#0 ← *((const byte*) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 ldy.z l - lda lines_y,y - sta.z bitmap_line.y0 + ldx lines_y,y // [589] (byte) bitmap_line::y1#0 ← *((const byte*) mode_stdbitmap::lines_y+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z l lda lines_y+1,y @@ -22147,36 +22129,32 @@ mode_stdbitmap: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zp($13) x0, byte register(X) x1, byte zp($14) y0, byte zp($c) y1) +// bitmap_line(byte zp($11) x0, byte zp($12) x1, byte register(X) y0, byte zp($a) y1) bitmap_line: { - .label xd = $e - .label x0 = $13 - .label y0 = $14 - .label y1 = $c - // [592] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuxx_then_la1 - txa - cmp.z x0 - beq !+ - bcs __b1 - !: + .label xd = $b + .label x0 = $11 + .label x1 = $12 + .label y1 = $a + // [592] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + lda.z x0 + cmp.z x1 + bcc __b1 jmp __b2 // bitmap_line::@2 __b2: - // [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuxx - txa - eor #$ff + // [593] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + lda.z x0 sec - adc.z x0 + sbc.z x1 sta.z xd - // [594] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuz1_lt_vbuz2_then_la1 - lda.z y0 - cmp.z y1 + // [594] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuxx_lt_vbuz1_then_la1 + cpx.z y1 bcc __b7 jmp __b3 // bitmap_line::@3 __b3: - // [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y0 + // [595] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuxx_minus_vbuz1 + txa sec sbc.z y1 tay @@ -22190,9 +22168,8 @@ bitmap_line: { lda.z y1 sta.z bitmap_line_ydxi.y // [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 - // [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxi.y1 + // [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxi.y1 // [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#2 -- vbuz1=vbuyy sty.z bitmap_line_ydxi.yd // [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#2 @@ -22212,11 +22189,11 @@ bitmap_line: { rts // bitmap_line::@8 __b8: - // [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyi.x - // [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_xdyi.y + // [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyi.x + // [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuxx=vbuz1 + ldx.z y1 // [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 // [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#2 // [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#2 -- vbuz1=vbuyy @@ -22233,10 +22210,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@7 __b7: - // [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y1 + // [610] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuxx + txa + eor #$ff sec - sbc.z y0 + adc.z y1 tay // [611] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@9 -- vbuyy_lt_vbuz1_then_la1 cpy.z xd @@ -22244,14 +22222,10 @@ bitmap_line: { jmp __b10 // bitmap_line::@10 __b10: - // [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxd.y - // [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 - ldx.z x0 - // [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_ydxd.y1 + // [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxd.y + // [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 + // [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 // [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuyy sty.z bitmap_line_ydxd.yd // [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 @@ -22267,11 +22241,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@9 __b9: - // [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyd.x - // [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 - lda.z y1 - sta.z bitmap_line_xdyd.y + // [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyd.x + // [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuxx=vbuz1 + ldx.z y1 // [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 // [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 // [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuyy @@ -22288,20 +22262,19 @@ bitmap_line: { jmp __breturn // bitmap_line::@1 __b1: - // [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuxx_minus_vbuz2 - txa + // [624] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + lda.z x1 sec sbc.z x0 sta.z xd - // [625] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuz1_lt_vbuz2_then_la1 - lda.z y0 - cmp.z y1 + // [625] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuxx_lt_vbuz1_then_la1 + cpx.z y1 bcc __b11 jmp __b5 // bitmap_line::@5 __b5: - // [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y0 + // [626] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuyy=vbuxx_minus_vbuz1 + txa sec sbc.z y1 tay @@ -22314,8 +22287,11 @@ bitmap_line: { // [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda.z y1 sta.z bitmap_line_ydxd.y - // [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 - // [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + // [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_ydxd.x + // [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxd.y1 // [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuyy sty.z bitmap_line_ydxd.yd // [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#1 @@ -22335,8 +22311,9 @@ bitmap_line: { lda.z x0 sta.z bitmap_line_xdyd.x // [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - // [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyd.x1 + // [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyd.x1 // [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#1 // [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuyy sty.z bitmap_line_xdyd.yd @@ -22352,10 +22329,11 @@ bitmap_line: { jmp __breturn // bitmap_line::@11 __b11: - // [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuz2 - lda.z y1 + // [640] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuyy=vbuz1_minus_vbuxx + txa + eor #$ff sec - sbc.z y0 + adc.z y1 tay // [641] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@13 -- vbuyy_lt_vbuz1_then_la1 cpy.z xd @@ -22363,11 +22341,11 @@ bitmap_line: { jmp __b14 // bitmap_line::@14 __b14: - // [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 - lda.z y0 - sta.z bitmap_line_ydxi.y - // [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 - ldx.z x0 + // [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuxx + stx.z bitmap_line_ydxi.y + // [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + lda.z x0 + sta.z bitmap_line_ydxi.x // [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 // [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#11 -- vbuz1=vbuyy sty.z bitmap_line_ydxi.yd @@ -22388,8 +22366,9 @@ bitmap_line: { lda.z x0 sta.z bitmap_line_xdyi.x // [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - // [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuxx - stx.z bitmap_line_xdyi.x1 + // [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + lda.z x1 + sta.z bitmap_line_xdyi.x1 // [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 // [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#11 -- vbuz1=vbuyy sty.z bitmap_line_xdyi.yd @@ -22405,14 +22384,13 @@ bitmap_line: { jmp __breturn } // bitmap_line_xdyi -// bitmap_line_xdyi(byte zp(4) x, byte zp($14) y, byte zp($13) x1, byte zp($e) xd, byte zp($d) yd) +// bitmap_line_xdyi(byte zp(3) x, byte register(X) y, byte zp($11) x1, byte zp($b) xd, byte zp(2) yd) bitmap_line_xdyi: { - .label x = 4 - .label y = $14 - .label x1 = $13 - .label xd = $e - .label yd = $d - .label e = $c + .label x = 3 + .label x1 = $11 + .label xd = $b + .label yd = 2 + .label e = $a // [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z yd lsr @@ -22426,10 +22404,9 @@ bitmap_line_xdyi: { jmp __b1 // bitmap_line_xdyi::@1 __b1: - // [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 - ldx.z x - // [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 // [659] call bitmap_plot // [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: @@ -22453,8 +22430,8 @@ bitmap_line_xdyi: { jmp __b3 // bitmap_line_xdyi::@3 __b3: - // [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 - inc.z y + // [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuxx=_inc_vbuxx + inx // [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -22468,11 +22445,12 @@ bitmap_line_xdyi: { jmp __b2 // bitmap_line_xdyi::@2 __b2: - // [666] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx - // [667] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [666] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 + // [667] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return @@ -22481,20 +22459,20 @@ bitmap_line_xdyi: { rts } // bitmap_plot -// bitmap_plot(byte register(X) x, byte register(Y) y) +// bitmap_plot(byte register(Y) x, byte register(X) y) bitmap_plot: { - .label plotter_x = $f - .label plotter_y = $11 - .label plotter = $f - // [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx - lda bitmap_plot_xhi,x + .label plotter_x = $d + .label plotter_y = $f + .label plotter = $d + // [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + lda bitmap_plot_xhi,y sta.z plotter_x+1 - lda bitmap_plot_xlo,x + lda bitmap_plot_xlo,y sta.z plotter_x - // [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + // [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta.z plotter_y+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta.z plotter_y // [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter @@ -22504,8 +22482,8 @@ bitmap_plot: { lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 - // [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx - lda bitmap_plot_bit,x + // [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy + lda bitmap_plot_bit,y ldy #0 ora (plotter),y // [674] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa @@ -22518,13 +22496,14 @@ bitmap_plot: { rts } // bitmap_line_ydxi -// bitmap_line_ydxi(byte zp(4) y, byte register(X) x, byte zp($c) y1, byte zp($d) yd, byte zp($e) xd) +// bitmap_line_ydxi(byte zp(3) y, byte zp($12) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxi: { - .label y = 4 - .label y1 = $c - .label yd = $d - .label xd = $e - .label e = $b + .label y = 3 + .label x = $12 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr @@ -22538,9 +22517,10 @@ bitmap_line_ydxi: { jmp __b1 // bitmap_line_ydxi::@1 __b1: - // [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - // [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuxx=vbuz1 + ldx.z y // [681] call bitmap_plot // [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: @@ -22564,8 +22544,8 @@ bitmap_line_ydxi: { jmp __b3 // bitmap_line_ydxi::@3 __b3: - // [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx - inx + // [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + inc.z x // [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -22579,12 +22559,11 @@ bitmap_line_ydxi: { jmp __b2 // bitmap_line_ydxi::@2 __b2: - // [688] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 - // [689] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [688] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx + // [689] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return @@ -22593,14 +22572,13 @@ bitmap_line_ydxi: { rts } // bitmap_line_xdyd -// bitmap_line_xdyd(byte zp(4) x, byte zp($14) y, byte zp($13) x1, byte zp($e) xd, byte zp($b) yd) +// bitmap_line_xdyd(byte zp(2) x, byte register(X) y, byte zp($11) x1, byte zp($b) xd, byte zp($13) yd) bitmap_line_xdyd: { - .label x = 4 - .label y = $14 - .label x1 = $13 - .label xd = $e - .label yd = $b - .label e = $d + .label x = 2 + .label x1 = $11 + .label xd = $b + .label yd = $13 + .label e = 3 // [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z yd lsr @@ -22614,10 +22592,9 @@ bitmap_line_xdyd: { jmp __b1 // bitmap_line_xdyd::@1 __b1: - // [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 - ldx.z x - // [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 - ldy.z y + // [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 // [696] call bitmap_plot // [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: @@ -22641,8 +22618,8 @@ bitmap_line_xdyd: { jmp __b3 // bitmap_line_xdyd::@3 __b3: - // [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 - dec.z y + // [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuxx=_dec_vbuxx + dex // [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -22656,11 +22633,12 @@ bitmap_line_xdyd: { jmp __b2 // bitmap_line_xdyd::@2 __b2: - // [703] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx - // [704] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [703] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 + // [704] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return @@ -22669,13 +22647,14 @@ bitmap_line_xdyd: { rts } // bitmap_line_ydxd -// bitmap_line_ydxd(byte zp($d) y, byte register(X) x, byte zp($14) y1, byte zp(4) yd, byte zp($e) xd) +// bitmap_line_ydxd(byte zp(3) y, byte zp($11) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxd: { - .label y = $d - .label y1 = $14 - .label yd = 4 - .label xd = $e - .label e = $b + .label y = 3 + .label x = $11 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr @@ -22689,9 +22668,10 @@ bitmap_line_ydxd: { jmp __b1 // bitmap_line_ydxd::@1 __b1: - // [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - // [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 - ldy.z y + // [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuxx=vbuz1 + ldx.z y // [711] call bitmap_plot // [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: @@ -22715,8 +22695,8 @@ bitmap_line_ydxd: { jmp __b3 // bitmap_line_ydxd::@3 __b3: - // [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx - dex + // [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + dec.z x // [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec @@ -22730,12 +22710,11 @@ bitmap_line_ydxd: { jmp __b2 // bitmap_line_ydxd::@2 __b2: - // [718] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 - // [719] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [718] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx + // [719] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return @@ -22746,8 +22725,8 @@ bitmap_line_ydxd: { // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { - .label bitmap = 5 - .label y = $e + .label bitmap = 4 + .label y = $b // [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap @@ -22813,8 +22792,8 @@ bitmap_clear: { // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { - .label __10 = $14 - .label yoffs = 5 + .label __10 = $12 + .label yoffs = 4 // [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [733] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 @@ -22949,11 +22928,11 @@ mode_mcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $13 + .label __5 = $11 // Char Colors and screen chars - .label col = 5 - .label ch = $f - .label cy = $15 + .label col = 4 + .label ch = $d + .label cy = $c // [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -23122,9 +23101,8 @@ mode_mcchar: { // Leave control to the user until exit // [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl jmp __breturn // mode_mcchar::@return @@ -23149,11 +23127,11 @@ mode_ecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $14 + .label __5 = $12 // Char Colors and screen chars - .label col = $f - .label ch = 7 - .label cy = $13 + .label col = $d + .label ch = 6 + .label cy = $11 // [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -23325,9 +23303,8 @@ mode_ecmchar: { // Leave control to the user until exit // [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl jmp __breturn // mode_ecmchar::@return @@ -23348,11 +23325,11 @@ mode_stdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $15 + .label __5 = $13 // Char Colors and screen chars - .label col = 7 - .label ch = $f - .label cy = $14 + .label col = 6 + .label ch = $d + .label cy = $12 // [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank lda #0 @@ -23515,9 +23492,8 @@ mode_stdchar: { // Leave control to the user until exit // [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] mode_ctrl_from___b6: - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl jmp __breturn // mode_stdchar::@return @@ -23528,9 +23504,9 @@ mode_stdchar: { // print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. -// print_str_lines(byte* zp($f) str) +// print_str_lines(byte* zp($d) str) print_str_lines: { - .label str = $f + .label str = $d // [865] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] __b1_from_print_str_lines: // [865] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 @@ -23678,7 +23654,7 @@ memset: { .const num = $3e8 .label str = menu.SCREEN .label end = str+num - .label dst = $f + .label dst = $d // [888] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: // [888] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 @@ -23998,6 +23974,8 @@ Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #>0 +Replacing instruction lda.z ctrl with TXA +Replacing instruction lda.z ctrl with TXA Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 @@ -24638,16 +24616,15 @@ Replacing instruction ldx #0 with TAX Replacing instruction ldx #0 with TAX Replacing instruction ldx #0 with TAX Replacing instruction ldx #0 with TAX -Removing instruction lda.z y0 -Removing instruction lda.z y0 +Removing instruction lda.z x0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __bbegin: Removing instruction __breturn: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [268] beq __b5 to bne -Fixing long branch [175] bne __b3 to beq -Fixing long branch [180] bne __b3 to beq +Fixing long branch [254] beq __b5 to bne +Fixing long branch [161] bne __b3 to beq +Fixing long branch [166] bne __b3 to beq FINAL SYMBOL TABLE (label) @1 @@ -24739,23 +24716,23 @@ FINAL SYMBOL TABLE (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:5 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:5 420.59999999999997 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:5 1552.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:5 204.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:5 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:4 100001.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:4 4.2000000599999994E7 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:4 1.55000002E8 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:4 2.0100003E7 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:4 200002.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 1501.5 -(byte) bitmap_clear::x#2 reg byte x 667.3333333333334 +(byte) bitmap_clear::x#1 reg byte x 1.500000015E8 +(byte) bitmap_clear::x#2 reg byte x 6.6666667333333336E7 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:14 151.5 -(byte) bitmap_clear::y#4 y zp[1]:14 33.666666666666664 +(byte) bitmap_clear::y#1 y zp[1]:11 1.50000015E7 +(byte) bitmap_clear::y#4 y zp[1]:11 3333333.6666666665 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 202.0 -(byte~) bitmap_init::$10 zp[1]:20 50.5 -(byte~) bitmap_init::$7 reg byte a 202.0 -(byte~) bitmap_init::$8 reg byte a 202.0 -(byte~) bitmap_init::$9 reg byte a 202.0 +(byte~) bitmap_init::$0 reg byte a 2.0000002E7 +(byte~) bitmap_init::$10 zp[1]:18 5000000.5 +(byte~) bitmap_init::$7 reg byte a 2.0000002E7 +(byte~) bitmap_init::$8 reg byte a 2.0000002E7 +(byte~) bitmap_init::$9 reg byte a 2.0000002E7 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -24765,19 +24742,19 @@ FINAL SYMBOL TABLE (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 101.0 -(byte) bitmap_init::bits#3 reg byte y 60.599999999999994 -(byte) bitmap_init::bits#4 reg byte y 67.33333333333333 +(byte) bitmap_init::bits#1 reg byte y 1.0000001E7 +(byte) bitmap_init::bits#3 reg byte y 6000000.6 +(byte) bitmap_init::bits#4 reg byte y 6666667.333333333 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 151.5 -(byte) bitmap_init::x#2 reg byte x 67.33333333333333 +(byte) bitmap_init::x#1 reg byte x 1.50000015E7 +(byte) bitmap_init::x#2 reg byte x 6666667.333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 151.5 -(byte) bitmap_init::y#2 reg byte x 50.5 +(byte) bitmap_init::y#1 reg byte x 1.50000015E7 +(byte) bitmap_init::y#2 reg byte x 5000000.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:5 202.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:5 63.125 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:5 101.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:4 2.0000002E7 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:4 6250000.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:4 1.0000001E7 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -24795,194 +24772,194 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp[1]:19 5.173913043478264 +(byte) bitmap_line::x0#0 x0 zp[1]:17 3956522.1739130435 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 reg byte x 5.409090909090908 +(byte) bitmap_line::x1#0 x1 zp[1]:18 4136364.090909091 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 xd zp[1]:14 0.7 -(byte) bitmap_line::xd#2 xd zp[1]:14 0.7 +(byte) bitmap_line::xd#1 xd zp[1]:11 3500000.3499999996 +(byte) bitmap_line::xd#2 xd zp[1]:11 3500000.3499999996 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 y0 zp[1]:20 5.952380952380948 +(byte) bitmap_line::y0#0 reg byte x 5761905.380952382 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 y1 zp[1]:12 6.249999999999996 +(byte) bitmap_line::y1#0 y1 zp[1]:10 6050000.6499999985 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#10 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#11 reg byte y 0.8888888888888888 -(byte) bitmap_line::yd#2 reg byte y 0.8888888888888888 +(byte) bitmap_line::yd#1 reg byte y 4444444.888888889 +(byte) bitmap_line::yd#10 reg byte y 4444444.888888889 +(byte) bitmap_line::yd#11 reg byte y 4444444.888888889 +(byte) bitmap_line::yd#2 reg byte y 4444444.888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 reg byte x 2002.0 +(byte~) bitmap_line_xdyd::$6 reg byte a 2.00000000002E11 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 e zp[1]:13 4.0 -(byte) bitmap_line_xdyd::e#1 e zp[1]:13 1334.6666666666667 -(byte) bitmap_line_xdyd::e#2 e zp[1]:13 2002.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:13 400.79999999999995 -(byte) bitmap_line_xdyd::e#6 e zp[1]:13 1001.0 +(byte) bitmap_line_xdyd::e#0 e zp[1]:3 2.00000002E8 +(byte) bitmap_line_xdyd::e#1 e zp[1]:3 1.3333333333466667E11 +(byte) bitmap_line_xdyd::e#2 e zp[1]:3 2.00000000002E11 +(byte) bitmap_line_xdyd::e#3 e zp[1]:3 4.0020000000600006E10 +(byte) bitmap_line_xdyd::e#6 e zp[1]:3 1.00000000001E11 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 x zp[1]:4 0.8 -(byte) bitmap_line_xdyd::x#1 x zp[1]:4 0.8 -(byte) bitmap_line_xdyd::x#2 x zp[1]:4 375.375 -(byte) bitmap_line_xdyd::x#3 x zp[1]:4 751.25 -(byte) bitmap_line_xdyd::x#6 x zp[1]:4 3.0 +(byte) bitmap_line_xdyd::x#0 x zp[1]:2 4000000.4 +(byte) bitmap_line_xdyd::x#1 x zp[1]:2 4000000.4 +(byte) bitmap_line_xdyd::x#2 x zp[1]:2 3.7500000000375E10 +(byte) bitmap_line_xdyd::x#3 x zp[1]:2 7.5025000001E10 +(byte) bitmap_line_xdyd::x#6 x zp[1]:2 6.00000015E7 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:19 71.78571428571429 +(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:17 6666667.333333333 +(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:17 6666667.333333333 +(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:17 7.1442857145E9 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:14 2.0 -(byte) bitmap_line_xdyd::xd#1 xd zp[1]:14 2.0 -(byte) bitmap_line_xdyd::xd#5 xd zp[1]:14 143.28571428571428 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:11 1.0000001E7 +(byte) bitmap_line_xdyd::xd#1 xd zp[1]:11 1.0000001E7 +(byte) bitmap_line_xdyd::xd#5 xd zp[1]:11 1.4287142857428572E10 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 y zp[1]:20 1.0 -(byte) bitmap_line_xdyd::y#1 y zp[1]:20 1.0 -(byte) bitmap_line_xdyd::y#2 y zp[1]:20 1001.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:20 572.2857142857142 -(byte) bitmap_line_xdyd::y#5 y zp[1]:20 3.0 -(byte) bitmap_line_xdyd::y#6 y zp[1]:20 1001.0 +(byte) bitmap_line_xdyd::y#0 reg byte x 5000000.5 +(byte) bitmap_line_xdyd::y#1 reg byte x 5000000.5 +(byte) bitmap_line_xdyd::y#2 reg byte x 1.00000000001E11 +(byte) bitmap_line_xdyd::y#3 reg byte x 5.715714285785715E10 +(byte) bitmap_line_xdyd::y#5 reg byte x 6.00000015E7 +(byte) bitmap_line_xdyd::y#6 reg byte x 1.00000000001E11 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 yd zp[1]:11 4.0 -(byte) bitmap_line_xdyd::yd#1 yd zp[1]:11 4.0 -(byte) bitmap_line_xdyd::yd#2 yd zp[1]:11 71.92857142857143 +(byte) bitmap_line_xdyd::yd#0 yd zp[1]:19 2.0000002E7 +(byte) bitmap_line_xdyd::yd#1 yd zp[1]:19 2.0000002E7 +(byte) bitmap_line_xdyd::yd#2 yd zp[1]:19 7.151428571714286E9 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 reg byte x 2002.0 +(byte~) bitmap_line_xdyi::$6 reg byte a 2.00000000002E11 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 e zp[1]:12 4.0 -(byte) bitmap_line_xdyi::e#1 e zp[1]:12 1334.6666666666667 -(byte) bitmap_line_xdyi::e#2 e zp[1]:12 2002.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:12 400.79999999999995 -(byte) bitmap_line_xdyi::e#6 e zp[1]:12 1001.0 +(byte) bitmap_line_xdyi::e#0 e zp[1]:10 2.00000002E8 +(byte) bitmap_line_xdyi::e#1 e zp[1]:10 1.3333333333466667E11 +(byte) bitmap_line_xdyi::e#2 e zp[1]:10 2.00000000002E11 +(byte) bitmap_line_xdyi::e#3 e zp[1]:10 4.0020000000600006E10 +(byte) bitmap_line_xdyi::e#6 e zp[1]:10 1.00000000001E11 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 x zp[1]:4 0.8 -(byte) bitmap_line_xdyi::x#1 x zp[1]:4 0.8 -(byte) bitmap_line_xdyi::x#2 x zp[1]:4 375.375 -(byte) bitmap_line_xdyi::x#3 x zp[1]:4 751.25 -(byte) bitmap_line_xdyi::x#6 x zp[1]:4 3.0 +(byte) bitmap_line_xdyi::x#0 x zp[1]:3 4000000.4 +(byte) bitmap_line_xdyi::x#1 x zp[1]:3 4000000.4 +(byte) bitmap_line_xdyi::x#2 x zp[1]:3 3.7500000000375E10 +(byte) bitmap_line_xdyi::x#3 x zp[1]:3 7.5025000001E10 +(byte) bitmap_line_xdyi::x#6 x zp[1]:3 6.00000015E7 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:19 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:19 71.78571428571429 +(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:17 6666667.333333333 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:17 6666667.333333333 +(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:17 7.1442857145E9 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 xd zp[1]:14 2.0 -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:14 2.0 -(byte) bitmap_line_xdyi::xd#5 xd zp[1]:14 143.28571428571428 +(byte) bitmap_line_xdyi::xd#0 xd zp[1]:11 1.0000001E7 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:11 1.0000001E7 +(byte) bitmap_line_xdyi::xd#5 xd zp[1]:11 1.4287142857428572E10 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 y zp[1]:20 1.0 -(byte) bitmap_line_xdyi::y#1 y zp[1]:20 1.0 -(byte) bitmap_line_xdyi::y#2 y zp[1]:20 1001.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:20 572.2857142857142 -(byte) bitmap_line_xdyi::y#5 y zp[1]:20 3.0 -(byte) bitmap_line_xdyi::y#6 y zp[1]:20 1001.0 +(byte) bitmap_line_xdyi::y#0 reg byte x 5000000.5 +(byte) bitmap_line_xdyi::y#1 reg byte x 5000000.5 +(byte) bitmap_line_xdyi::y#2 reg byte x 1.00000000001E11 +(byte) bitmap_line_xdyi::y#3 reg byte x 5.715714285785715E10 +(byte) bitmap_line_xdyi::y#5 reg byte x 6.00000015E7 +(byte) bitmap_line_xdyi::y#6 reg byte x 1.00000000001E11 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 yd zp[1]:13 4.0 -(byte) bitmap_line_xdyi::yd#1 yd zp[1]:13 4.0 -(byte) bitmap_line_xdyi::yd#2 yd zp[1]:13 71.92857142857143 +(byte) bitmap_line_xdyi::yd#0 yd zp[1]:2 2.0000002E7 +(byte) bitmap_line_xdyi::yd#1 yd zp[1]:2 2.0000002E7 +(byte) bitmap_line_xdyi::yd#2 yd zp[1]:2 7.151428571714286E9 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 reg byte a 2002.0 +(byte~) bitmap_line_ydxd::$6 reg byte x 2.00000000002E11 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:11 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:11 1334.6666666666667 -(byte) bitmap_line_ydxd::e#2 e zp[1]:11 2002.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:11 400.79999999999995 -(byte) bitmap_line_ydxd::e#6 e zp[1]:11 1001.0 +(byte) bitmap_line_ydxd::e#0 e zp[1]:19 2.00000002E8 +(byte) bitmap_line_ydxd::e#1 e zp[1]:19 1.3333333333466667E11 +(byte) bitmap_line_ydxd::e#2 e zp[1]:19 2.00000000002E11 +(byte) bitmap_line_ydxd::e#3 e zp[1]:19 4.0020000000600006E10 +(byte) bitmap_line_ydxd::e#6 e zp[1]:19 1.00000000001E11 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxd::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxd::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxd::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxd::x#0 x zp[1]:17 5000000.5 +(byte) bitmap_line_ydxd::x#1 x zp[1]:17 5000000.5 +(byte) bitmap_line_ydxd::x#2 x zp[1]:17 1.00000000001E11 +(byte) bitmap_line_ydxd::x#3 x zp[1]:17 5.715714285785715E10 +(byte) bitmap_line_ydxd::x#5 x zp[1]:17 6.00000015E7 +(byte) bitmap_line_ydxd::x#6 x zp[1]:17 1.00000000001E11 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:14 4.0 -(byte) bitmap_line_ydxd::xd#1 xd zp[1]:14 4.0 -(byte) bitmap_line_ydxd::xd#2 xd zp[1]:14 71.92857142857143 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:11 2.0000002E7 +(byte) bitmap_line_ydxd::xd#1 xd zp[1]:11 2.0000002E7 +(byte) bitmap_line_ydxd::xd#2 xd zp[1]:11 7.151428571714286E9 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 y zp[1]:13 0.8 -(byte) bitmap_line_ydxd::y#1 y zp[1]:13 0.8 -(byte) bitmap_line_ydxd::y#2 y zp[1]:13 751.25 -(byte) bitmap_line_ydxd::y#3 y zp[1]:13 375.375 -(byte) bitmap_line_ydxd::y#7 y zp[1]:13 3.0 +(byte) bitmap_line_ydxd::y#0 y zp[1]:3 4000000.4 +(byte) bitmap_line_ydxd::y#1 y zp[1]:3 4000000.4 +(byte) bitmap_line_ydxd::y#2 y zp[1]:3 7.5025000001E10 +(byte) bitmap_line_ydxd::y#3 y zp[1]:3 3.7500000000375E10 +(byte) bitmap_line_ydxd::y#7 y zp[1]:3 6.00000015E7 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:20 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:20 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:20 71.78571428571429 +(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:10 6666667.333333333 +(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:10 6666667.333333333 +(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:10 7.1442857145E9 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 yd zp[1]:4 2.0 -(byte) bitmap_line_ydxd::yd#1 yd zp[1]:4 2.0 -(byte) bitmap_line_ydxd::yd#5 yd zp[1]:4 143.28571428571428 +(byte) bitmap_line_ydxd::yd#0 yd zp[1]:2 1.0000001E7 +(byte) bitmap_line_ydxd::yd#1 yd zp[1]:2 1.0000001E7 +(byte) bitmap_line_ydxd::yd#5 yd zp[1]:2 1.4287142857428572E10 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 reg byte a 2002.0 +(byte~) bitmap_line_ydxi::$6 reg byte x 2.00000000002E11 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:11 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:11 1334.6666666666667 -(byte) bitmap_line_ydxi::e#2 e zp[1]:11 2002.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:11 400.79999999999995 -(byte) bitmap_line_ydxi::e#6 e zp[1]:11 1001.0 +(byte) bitmap_line_ydxi::e#0 e zp[1]:19 2.00000002E8 +(byte) bitmap_line_ydxi::e#1 e zp[1]:19 1.3333333333466667E11 +(byte) bitmap_line_ydxi::e#2 e zp[1]:19 2.00000000002E11 +(byte) bitmap_line_ydxi::e#3 e zp[1]:19 4.0020000000600006E10 +(byte) bitmap_line_ydxi::e#6 e zp[1]:19 1.00000000001E11 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxi::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxi::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxi::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxi::x#0 x zp[1]:18 5000000.5 +(byte) bitmap_line_ydxi::x#1 x zp[1]:18 5000000.5 +(byte) bitmap_line_ydxi::x#2 x zp[1]:18 1.00000000001E11 +(byte) bitmap_line_ydxi::x#3 x zp[1]:18 5.715714285785715E10 +(byte) bitmap_line_ydxi::x#5 x zp[1]:18 6.00000015E7 +(byte) bitmap_line_ydxi::x#6 x zp[1]:18 1.00000000001E11 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 xd zp[1]:14 4.0 -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:14 4.0 -(byte) bitmap_line_ydxi::xd#2 xd zp[1]:14 71.92857142857143 +(byte) bitmap_line_ydxi::xd#0 xd zp[1]:11 2.0000002E7 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:11 2.0000002E7 +(byte) bitmap_line_ydxi::xd#2 xd zp[1]:11 7.151428571714286E9 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 y zp[1]:4 0.8 -(byte) bitmap_line_ydxi::y#1 y zp[1]:4 0.8 -(byte) bitmap_line_ydxi::y#2 y zp[1]:4 375.375 -(byte) bitmap_line_ydxi::y#3 y zp[1]:4 751.25 -(byte) bitmap_line_ydxi::y#6 y zp[1]:4 3.0 +(byte) bitmap_line_ydxi::y#0 y zp[1]:3 4000000.4 +(byte) bitmap_line_ydxi::y#1 y zp[1]:3 4000000.4 +(byte) bitmap_line_ydxi::y#2 y zp[1]:3 3.7500000000375E10 +(byte) bitmap_line_ydxi::y#3 y zp[1]:3 7.5025000001E10 +(byte) bitmap_line_ydxi::y#6 y zp[1]:3 6.00000015E7 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:12 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:12 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:12 71.78571428571429 +(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:10 6666667.333333333 +(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:10 6666667.333333333 +(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:10 7.1442857145E9 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#1 yd zp[1]:13 2.0 -(byte) bitmap_line_ydxi::yd#5 yd zp[1]:13 143.28571428571428 +(byte) bitmap_line_ydxi::yd#0 yd zp[1]:2 1.0000001E7 +(byte) bitmap_line_ydxi::yd#1 yd zp[1]:2 1.0000001E7 +(byte) bitmap_line_ydxi::yd#5 yd zp[1]:2 1.4287142857428572E10 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.000000000002E12 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:15 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:13 5.000000000005E11 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:15 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:13 1.000000000001E12 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:17 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:15 2.000000000002E12 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 1001.0 -(byte) bitmap_plot::x#1 reg byte x 1001.0 -(byte) bitmap_plot::x#2 reg byte x 1001.0 -(byte) bitmap_plot::x#3 reg byte x 1001.0 -(byte) bitmap_plot::x#4 reg byte x 1002.5 +(byte) bitmap_plot::x#0 reg byte y 1.00000000001E11 +(byte) bitmap_plot::x#1 reg byte y 1.00000000001E11 +(byte) bitmap_plot::x#2 reg byte y 1.00000000001E11 +(byte) bitmap_plot::x#3 reg byte y 1.00000000001E11 +(byte) bitmap_plot::x#4 reg byte y 8.5000000000175E11 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 2002.0 -(byte) bitmap_plot::y#1 reg byte y 2002.0 -(byte) bitmap_plot::y#2 reg byte y 2002.0 -(byte) bitmap_plot::y#3 reg byte y 2002.0 -(byte) bitmap_plot::y#4 reg byte y 2004.0 +(byte) bitmap_plot::y#0 reg byte x 2.00000000002E11 +(byte) bitmap_plot::y#1 reg byte x 2.00000000002E11 +(byte) bitmap_plot::y#2 reg byte x 2.00000000002E11 +(byte) bitmap_plot::y#3 reg byte x 2.00000000002E11 +(byte) bitmap_plot::y#4 reg byte x 1.200000000003E12 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -24992,53 +24969,53 @@ FINAL SYMBOL TABLE (label) dtvSetCpuBankSegment1::@return (const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255 (byte) dtvSetCpuBankSegment1::cpuBankIdx -(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2002.0 -(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1003.0 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2.0000002E7 +(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1.10000002E8 (byte) dtv_control -(byte) dtv_control#114 dtv_control zp[1]:2 80.52941176470588 -(byte) dtv_control#144 dtv_control zp[1]:2 2.0 -(byte) dtv_control#17 dtv_control zp[1]:2 67.33333333333333 +(byte) dtv_control#114 reg byte x 8041176.5882352935 +(byte) dtv_control#144 reg byte x 100001.0 +(byte) dtv_control#17 reg byte x 6666667.333333333 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2.000000002E9 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 colidx zp[1]:11 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 colidx zp[1]:19 3.333333336666667E8 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#20 reg byte y 2.0 +(byte) keyboard_key_pressed::key#20 reg byte y 1.000000001E9 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 419.1818181818182 -(byte) keyboard_key_pressed::return#10 reg byte a 202.0 -(byte) keyboard_key_pressed::return#11 reg byte a 202.0 -(byte) keyboard_key_pressed::return#12 reg byte a 202.0 -(byte) keyboard_key_pressed::return#13 reg byte a 202.0 -(byte) keyboard_key_pressed::return#14 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#15 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#16 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#17 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#18 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#19 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#2 reg byte a 202.0 -(byte) keyboard_key_pressed::return#20 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#21 reg byte a 2002.0 -(byte) keyboard_key_pressed::return#24 reg byte a 202.0 -(byte) keyboard_key_pressed::return#25 reg byte a 202.0 -(byte) keyboard_key_pressed::return#26 reg byte a 202.0 -(byte) keyboard_key_pressed::return#27 reg byte a 202.0 -(byte) keyboard_key_pressed::return#28 reg byte a 202.0 -(byte) keyboard_key_pressed::return#29 reg byte a 202.0 -(byte) keyboard_key_pressed::return#30 reg byte a 202.0 +(byte) keyboard_key_pressed::return#0 reg byte a 8.187272822727272E7 +(byte) keyboard_key_pressed::return#10 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#11 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#12 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#13 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#14 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#15 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#16 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#17 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#18 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#19 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#2 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#20 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#21 reg byte a 2.00000002E8 +(byte) keyboard_key_pressed::return#24 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#25 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#26 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#27 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#28 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#29 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#30 reg byte a 200002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 2.000000002E9 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.666666667333333E9 +(byte) keyboard_matrix_read::return#2 reg byte a 2.000000002E9 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0 +(byte) keyboard_matrix_read::rowid#0 reg byte y 1.1000000002E10 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() (label) main::@1 @@ -25049,8 +25026,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:15 202.0 -(byte*) memset::dst#2 dst zp[2]:15 134.66666666666666 +(byte*) memset::dst#1 dst zp[2]:13 2.0000002E7 +(byte*) memset::dst#2 dst zp[2]:13 1.3333334666666666E7 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -25059,18 +25036,18 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) menu::SCREEN (void()) menu() -(byte~) menu::$13 reg byte a 202.0 -(byte~) menu::$17 reg byte a 202.0 -(byte~) menu::$21 reg byte a 202.0 -(byte~) menu::$25 reg byte a 202.0 -(byte~) menu::$29 reg byte a 202.0 -(byte~) menu::$33 reg byte a 202.0 -(byte~) menu::$37 reg byte a 202.0 -(byte~) menu::$41 reg byte a 202.0 -(byte~) menu::$45 reg byte a 202.0 -(byte~) menu::$49 reg byte a 202.0 -(byte~) menu::$5 reg byte a 202.0 -(byte~) menu::$9 reg byte a 202.0 +(byte~) menu::$13 reg byte a 200002.0 +(byte~) menu::$17 reg byte a 200002.0 +(byte~) menu::$21 reg byte a 200002.0 +(byte~) menu::$25 reg byte a 200002.0 +(byte~) menu::$29 reg byte a 200002.0 +(byte~) menu::$33 reg byte a 200002.0 +(byte~) menu::$37 reg byte a 200002.0 +(byte~) menu::$41 reg byte a 200002.0 +(byte~) menu::$45 reg byte a 200002.0 +(byte~) menu::$49 reg byte a 200002.0 +(byte~) menu::$5 reg byte a 200002.0 +(byte~) menu::$9 reg byte a 200002.0 (label) menu::@1 (label) menu::@10 (label) menu::@11 @@ -25117,13 +25094,13 @@ FINAL SYMBOL TABLE (const byte*) menu::CHARSET = (byte*) 38912 (const byte*) menu::SCREEN = (byte*) 32768 (byte*) menu::c -(byte*) menu::c#1 c zp[2]:7 202.0 -(byte*) menu::c#2 c zp[2]:7 134.66666666666666 +(byte*) menu::c#1 c zp[2]:6 200002.0 +(byte*) menu::c#2 c zp[2]:6 133334.66666666666 (byte) menu::i -(byte) menu::i#1 reg byte x 151.5 -(byte) menu::i#2 reg byte x 202.0 +(byte) menu::i#1 reg byte x 150001.5 +(byte) menu::i#2 reg byte x 200002.0 (void()) mode_8bppchunkybmm() -(word~) mode_8bppchunkybmm::$7 zp[2]:15 1001.0 +(word~) mode_8bppchunkybmm::$7 zp[2]:13 1.0000001E7 (label) mode_8bppchunkybmm::@1 (label) mode_8bppchunkybmm::@10 (label) mode_8bppchunkybmm::@2 @@ -25137,32 +25114,32 @@ FINAL SYMBOL TABLE (label) mode_8bppchunkybmm::@return (const dword) mode_8bppchunkybmm::PLANEB = (dword) $20000 (byte) mode_8bppchunkybmm::c -(byte) mode_8bppchunkybmm::c#0 reg byte a 2002.0 +(byte) mode_8bppchunkybmm::c#0 reg byte a 2.0000002E7 (byte*) mode_8bppchunkybmm::gfxb -(byte*) mode_8bppchunkybmm::gfxb#1 gfxb zp[2]:9 420.59999999999997 -(byte*) mode_8bppchunkybmm::gfxb#3 gfxb zp[2]:9 1552.0 -(byte*) mode_8bppchunkybmm::gfxb#4 gfxb zp[2]:9 750.75 -(byte*) mode_8bppchunkybmm::gfxb#5 gfxb zp[2]:9 202.0 +(byte*) mode_8bppchunkybmm::gfxb#1 gfxb zp[2]:8 4200000.6 +(byte*) mode_8bppchunkybmm::gfxb#3 gfxb zp[2]:8 1.5500002E7 +(byte*) mode_8bppchunkybmm::gfxb#4 gfxb zp[2]:8 7500000.75 +(byte*) mode_8bppchunkybmm::gfxb#5 gfxb zp[2]:8 2000002.0 (byte) mode_8bppchunkybmm::gfxbCpuBank -(byte) mode_8bppchunkybmm::gfxbCpuBank#2 reg byte x 2002.0 -(byte) mode_8bppchunkybmm::gfxbCpuBank#4 reg byte x 1026.25 -(byte) mode_8bppchunkybmm::gfxbCpuBank#7 reg byte x 202.0 -(byte) mode_8bppchunkybmm::gfxbCpuBank#8 reg byte x 344.8888888888889 +(byte) mode_8bppchunkybmm::gfxbCpuBank#2 reg byte x 2.0000002E7 +(byte) mode_8bppchunkybmm::gfxbCpuBank#4 reg byte x 1.025000125E7 +(byte) mode_8bppchunkybmm::gfxbCpuBank#7 reg byte x 2000002.0 +(byte) mode_8bppchunkybmm::gfxbCpuBank#8 reg byte x 3444444.888888889 (byte) mode_8bppchunkybmm::i -(byte) mode_8bppchunkybmm::i#1 reg byte x 151.5 -(byte) mode_8bppchunkybmm::i#2 reg byte x 202.0 +(byte) mode_8bppchunkybmm::i#1 reg byte x 1500001.5 +(byte) mode_8bppchunkybmm::i#2 reg byte x 2000002.0 (word) mode_8bppchunkybmm::x -(word) mode_8bppchunkybmm::x#1 x zp[2]:7 1501.5 -(word) mode_8bppchunkybmm::x#2 x zp[2]:7 300.29999999999995 +(word) mode_8bppchunkybmm::x#1 x zp[2]:6 1.50000015E7 +(word) mode_8bppchunkybmm::x#2 x zp[2]:6 3000000.3 (byte) mode_8bppchunkybmm::y -(byte) mode_8bppchunkybmm::y#1 y zp[1]:2 151.5 -(byte) mode_8bppchunkybmm::y#6 y zp[1]:2 92.53846153846155 +(byte) mode_8bppchunkybmm::y#1 y zp[1]:2 1500001.5 +(byte) mode_8bppchunkybmm::y#6 y zp[1]:2 923077.1538461539 (void()) mode_8bpppixelcell() -(byte~) mode_8bpppixelcell::$2 reg byte a 2002.0 -(byte~) mode_8bpppixelcell::$3 zp[1]:12 1001.0 -(byte~) mode_8bpppixelcell::$4 reg byte a 2002.0 -(byte~) mode_8bpppixelcell::$5 reg byte a 2002.0 -(byte~) mode_8bpppixelcell::$8 reg byte a 20002.0 +(byte~) mode_8bpppixelcell::$2 reg byte a 2.0000002E7 +(byte~) mode_8bpppixelcell::$3 zp[1]:10 1.0000001E7 +(byte~) mode_8bpppixelcell::$4 reg byte a 2.0000002E7 +(byte~) mode_8bpppixelcell::$5 reg byte a 2.0000002E7 +(byte~) mode_8bpppixelcell::$8 reg byte a 2.00000002E8 (label) mode_8bpppixelcell::@1 (label) mode_8bpppixelcell::@10 (label) mode_8bpppixelcell::@11 @@ -25181,57 +25158,57 @@ FINAL SYMBOL TABLE (const byte*) mode_8bpppixelcell::PLANEA = (byte*) 15360 (const byte*) mode_8bpppixelcell::PLANEB = (byte*) 16384 (byte) mode_8bpppixelcell::ax -(byte) mode_8bpppixelcell::ax#1 reg byte x 1501.5 -(byte) mode_8bpppixelcell::ax#2 reg byte x 429.0 +(byte) mode_8bpppixelcell::ax#1 reg byte x 1.50000015E7 +(byte) mode_8bpppixelcell::ax#2 reg byte x 4285714.714285715 (byte) mode_8bpppixelcell::ay -(byte) mode_8bpppixelcell::ay#1 ay zp[1]:4 151.5 -(byte) mode_8bpppixelcell::ay#4 ay zp[1]:4 120.29999999999998 +(byte) mode_8bpppixelcell::ay#1 ay zp[1]:2 1500001.5 +(byte) mode_8bpppixelcell::ay#4 ay zp[1]:2 1200000.3 (byte) mode_8bpppixelcell::bits -(byte) mode_8bpppixelcell::bits#0 bits zp[1]:3 1001.0 -(byte) mode_8bpppixelcell::bits#1 bits zp[1]:3 5000.5 -(byte) mode_8bpppixelcell::bits#2 bits zp[1]:3 4429.142857142857 +(byte) mode_8bpppixelcell::bits#0 bits zp[1]:17 1.0000001E7 +(byte) mode_8bpppixelcell::bits#1 bits zp[1]:17 5.00000005E7 +(byte) mode_8bpppixelcell::bits#2 bits zp[1]:17 4.428571485714286E7 (byte) mode_8bpppixelcell::c -(byte) mode_8bpppixelcell::c#2 reg byte a 20002.0 -(byte) mode_8bpppixelcell::c#3 reg byte a 20002.0 +(byte) mode_8bpppixelcell::c#2 reg byte a 2.00000002E8 +(byte) mode_8bpppixelcell::c#3 reg byte a 2.00000002E8 (byte) mode_8bpppixelcell::ch -(byte) mode_8bpppixelcell::ch#1 ch zp[1]:14 151.5 -(byte) mode_8bpppixelcell::ch#8 ch zp[1]:14 11.882352941176471 +(byte) mode_8bpppixelcell::ch#1 ch zp[1]:3 1500001.5 +(byte) mode_8bpppixelcell::ch#8 ch zp[1]:3 117647.17647058824 (byte*) mode_8bpppixelcell::chargen -(byte*) mode_8bpppixelcell::chargen#1 chargen zp[2]:9 131.4375 -(byte*) mode_8bpppixelcell::chargen#2 chargen zp[2]:9 1552.0 -(byte*) mode_8bpppixelcell::chargen#4 chargen zp[2]:9 202.0 +(byte*) mode_8bpppixelcell::chargen#1 chargen zp[2]:8 1312500.1875 +(byte*) mode_8bpppixelcell::chargen#2 chargen zp[2]:8 1.5500002E7 +(byte*) mode_8bpppixelcell::chargen#4 chargen zp[2]:8 2000002.0 (byte) mode_8bpppixelcell::col -(byte) mode_8bpppixelcell::col#1 col zp[1]:13 3014.857142857143 -(byte) mode_8bpppixelcell::col#2 col zp[1]:13 3875.5 -(byte) mode_8bpppixelcell::col#5 col zp[1]:13 701.0 -(byte) mode_8bpppixelcell::col#7 col zp[1]:13 202.0 +(byte) mode_8bpppixelcell::col#1 col zp[1]:19 3.0142857714285716E7 +(byte) mode_8bpppixelcell::col#2 col zp[1]:19 3.87500005E7 +(byte) mode_8bpppixelcell::col#5 col zp[1]:19 7000001.0 +(byte) mode_8bpppixelcell::col#7 col zp[1]:19 2000002.0 (byte) mode_8bpppixelcell::cp -(byte) mode_8bpppixelcell::cp#1 reg byte x 15001.5 -(byte) mode_8bpppixelcell::cp#2 reg byte x 2222.4444444444443 +(byte) mode_8bpppixelcell::cp#1 reg byte x 1.500000015E8 +(byte) mode_8bpppixelcell::cp#2 reg byte x 2.2222222444444444E7 (byte) mode_8bpppixelcell::cr -(byte) mode_8bpppixelcell::cr#1 cr zp[1]:19 1501.5 -(byte) mode_8bpppixelcell::cr#6 cr zp[1]:19 143.0 +(byte) mode_8bpppixelcell::cr#1 cr zp[1]:12 1.50000015E7 +(byte) mode_8bpppixelcell::cr#6 cr zp[1]:12 1428571.5714285714 (byte*) mode_8bpppixelcell::gfxa -(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp[2]:7 420.59999999999997 -(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp[2]:7 517.3333333333334 -(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp[2]:7 202.0 +(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp[2]:6 4200000.6 +(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp[2]:6 5166667.333333333 +(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp[2]:6 2000002.0 (byte*) mode_8bpppixelcell::gfxb -(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp[2]:5 2344.8888888888887 -(byte*) mode_8bpppixelcell::gfxb#2 gfxb zp[2]:5 5167.333333333333 -(byte*) mode_8bpppixelcell::gfxb#5 gfxb zp[2]:5 701.0 -(byte*) mode_8bpppixelcell::gfxb#7 gfxb zp[2]:5 202.0 +(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp[2]:4 2.3444444888888888E7 +(byte*) mode_8bpppixelcell::gfxb#2 gfxb zp[2]:4 5.1666667333333336E7 +(byte*) mode_8bpppixelcell::gfxb#5 gfxb zp[2]:4 7000001.0 +(byte*) mode_8bpppixelcell::gfxb#7 gfxb zp[2]:4 2000002.0 (byte) mode_8bpppixelcell::i -(byte) mode_8bpppixelcell::i#1 reg byte x 151.5 -(byte) mode_8bpppixelcell::i#2 reg byte x 202.0 +(byte) mode_8bpppixelcell::i#1 reg byte x 1500001.5 +(byte) mode_8bpppixelcell::i#2 reg byte x 2000002.0 (void()) mode_ctrl() -(byte~) mode_ctrl::$1 reg byte a 2002.0 -(byte~) mode_ctrl::$12 reg byte a 2002.0 -(byte~) mode_ctrl::$16 reg byte a 2002.0 -(byte~) mode_ctrl::$20 reg byte a 2002.0 -(byte~) mode_ctrl::$24 reg byte a 2002.0 -(byte~) mode_ctrl::$28 reg byte a 2002.0 -(byte~) mode_ctrl::$4 reg byte a 2002.0 -(byte~) mode_ctrl::$8 reg byte a 2002.0 +(byte~) mode_ctrl::$1 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$12 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$16 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$20 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$24 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$28 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$4 reg byte a 2.00000002E8 +(byte~) mode_ctrl::$8 reg byte a 2.00000002E8 (label) mode_ctrl::@1 (label) mode_ctrl::@10 (label) mode_ctrl::@11 @@ -25261,27 +25238,27 @@ FINAL SYMBOL TABLE (label) mode_ctrl::@9 (label) mode_ctrl::@return (byte) mode_ctrl::ctrl -(byte) mode_ctrl::ctrl#0 reg byte x 600.5999999999999 -(byte) mode_ctrl::ctrl#1 reg byte x 2002.0 -(byte) mode_ctrl::ctrl#10 reg byte x 800.8 -(byte) mode_ctrl::ctrl#11 reg byte x 800.8 -(byte) mode_ctrl::ctrl#12 reg byte x 800.8 -(byte) mode_ctrl::ctrl#13 reg byte x 800.8 -(byte) mode_ctrl::ctrl#14 reg byte x 576.25 -(byte) mode_ctrl::ctrl#17 reg byte x 800.8 -(byte) mode_ctrl::ctrl#2 reg byte x 2002.0 -(byte) mode_ctrl::ctrl#22 reg byte x 500.5 -(byte) mode_ctrl::ctrl#3 reg byte x 2002.0 -(byte) mode_ctrl::ctrl#4 reg byte x 2002.0 -(byte) mode_ctrl::ctrl#5 reg byte x 2002.0 -(byte) mode_ctrl::ctrl#6 reg byte x 2002.0 +(byte) mode_ctrl::ctrl#0 ctrl zp[1]:3 6.0000000599999994E7 +(byte) mode_ctrl::ctrl#1 ctrl zp[1]:3 2.00000002E8 +(byte) mode_ctrl::ctrl#10 ctrl zp[1]:3 8.00000008E7 +(byte) mode_ctrl::ctrl#11 ctrl zp[1]:3 8.00000008E7 +(byte) mode_ctrl::ctrl#12 ctrl zp[1]:3 8.00000008E7 +(byte) mode_ctrl::ctrl#13 ctrl zp[1]:3 8.00000008E7 +(byte) mode_ctrl::ctrl#14 ctrl zp[1]:3 5.750000125E7 +(byte) mode_ctrl::ctrl#17 ctrl zp[1]:3 8.00000008E7 +(byte) mode_ctrl::ctrl#2 ctrl zp[1]:3 2.00000002E8 +(byte) mode_ctrl::ctrl#22 ctrl zp[1]:3 5.00000005E7 +(byte) mode_ctrl::ctrl#3 ctrl zp[1]:3 2.00000002E8 +(byte) mode_ctrl::ctrl#4 ctrl zp[1]:3 2.00000002E8 +(byte) mode_ctrl::ctrl#5 ctrl zp[1]:3 2.00000002E8 +(byte) mode_ctrl::ctrl#6 ctrl zp[1]:3 2.00000002E8 (void()) mode_ecmchar() -(byte~) mode_ecmchar::$2 reg byte a 2002.0 -(byte~) mode_ecmchar::$3 reg byte a 2002.0 -(byte~) mode_ecmchar::$4 reg byte a 2002.0 -(byte~) mode_ecmchar::$5 zp[1]:20 1001.0 -(byte~) mode_ecmchar::$6 reg byte a 2002.0 -(byte~) mode_ecmchar::$7 reg byte a 2002.0 +(byte~) mode_ecmchar::$2 reg byte a 2.0000002E7 +(byte~) mode_ecmchar::$3 reg byte a 2.0000002E7 +(byte~) mode_ecmchar::$4 reg byte a 2.0000002E7 +(byte~) mode_ecmchar::$5 zp[1]:18 1.0000001E7 +(byte~) mode_ecmchar::$6 reg byte a 2.0000002E7 +(byte~) mode_ecmchar::$7 reg byte a 2.0000002E7 (label) mode_ecmchar::@1 (label) mode_ecmchar::@2 (label) mode_ecmchar::@3 @@ -25293,26 +25270,26 @@ FINAL SYMBOL TABLE (const byte*) mode_ecmchar::COLORS = (byte*) 55296 (const byte*) mode_ecmchar::SCREEN = (byte*) 32768 (byte*) mode_ecmchar::ch -(byte*) mode_ecmchar::ch#1 ch zp[2]:7 420.59999999999997 -(byte*) mode_ecmchar::ch#2 ch zp[2]:7 310.4 -(byte*) mode_ecmchar::ch#3 ch zp[2]:7 202.0 +(byte*) mode_ecmchar::ch#1 ch zp[2]:6 4200000.6 +(byte*) mode_ecmchar::ch#2 ch zp[2]:6 3100000.4 +(byte*) mode_ecmchar::ch#3 ch zp[2]:6 2000002.0 (byte*) mode_ecmchar::col -(byte*) mode_ecmchar::col#1 col zp[2]:15 191.1818181818182 -(byte*) mode_ecmchar::col#2 col zp[2]:15 776.0 -(byte*) mode_ecmchar::col#3 col zp[2]:15 202.0 +(byte*) mode_ecmchar::col#1 col zp[2]:13 1909091.1818181819 +(byte*) mode_ecmchar::col#2 col zp[2]:13 7750001.0 +(byte*) mode_ecmchar::col#3 col zp[2]:13 2000002.0 (byte) mode_ecmchar::cx -(byte) mode_ecmchar::cx#1 reg byte x 1501.5 -(byte) mode_ecmchar::cx#2 reg byte x 364.0 +(byte) mode_ecmchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_ecmchar::cx#2 reg byte x 3636364.0 (byte) mode_ecmchar::cy -(byte) mode_ecmchar::cy#1 cy zp[1]:19 151.5 -(byte) mode_ecmchar::cy#4 cy zp[1]:19 157.42857142857144 +(byte) mode_ecmchar::cy#1 cy zp[1]:17 1500001.5 +(byte) mode_ecmchar::cy#4 cy zp[1]:17 1571428.857142857 (byte) mode_ecmchar::i -(byte) mode_ecmchar::i#1 reg byte x 151.5 -(byte) mode_ecmchar::i#2 reg byte x 202.0 +(byte) mode_ecmchar::i#1 reg byte x 1500001.5 +(byte) mode_ecmchar::i#2 reg byte x 2000002.0 (void()) mode_hicolecmchar() -(byte~) mode_hicolecmchar::$2 reg byte a 2002.0 -(byte~) mode_hicolecmchar::$3 zp[1]:14 1001.0 -(byte~) mode_hicolecmchar::$4 reg byte a 2002.0 +(byte~) mode_hicolecmchar::$2 reg byte a 2.0000002E7 +(byte~) mode_hicolecmchar::$3 zp[1]:12 1.0000001E7 +(byte~) mode_hicolecmchar::$4 reg byte a 2.0000002E7 (label) mode_hicolecmchar::@1 (label) mode_hicolecmchar::@2 (label) mode_hicolecmchar::@3 @@ -25324,28 +25301,28 @@ FINAL SYMBOL TABLE (const byte*) mode_hicolecmchar::COLORS = (byte*) 33792 (const byte*) mode_hicolecmchar::SCREEN = (byte*) 32768 (byte*) mode_hicolecmchar::ch -(byte*) mode_hicolecmchar::ch#1 ch zp[2]:9 420.59999999999997 -(byte*) mode_hicolecmchar::ch#2 ch zp[2]:9 388.0 -(byte*) mode_hicolecmchar::ch#3 ch zp[2]:9 202.0 +(byte*) mode_hicolecmchar::ch#1 ch zp[2]:8 4200000.6 +(byte*) mode_hicolecmchar::ch#2 ch zp[2]:8 3875000.5 +(byte*) mode_hicolecmchar::ch#3 ch zp[2]:8 2000002.0 (byte*) mode_hicolecmchar::col -(byte*) mode_hicolecmchar::col#1 col zp[2]:7 300.42857142857144 -(byte*) mode_hicolecmchar::col#2 col zp[2]:7 517.3333333333334 -(byte*) mode_hicolecmchar::col#3 col zp[2]:7 202.0 +(byte*) mode_hicolecmchar::col#1 col zp[2]:6 3000000.428571428 +(byte*) mode_hicolecmchar::col#2 col zp[2]:6 5166667.333333333 +(byte*) mode_hicolecmchar::col#3 col zp[2]:6 2000002.0 (byte) mode_hicolecmchar::cx -(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5 -(byte) mode_hicolecmchar::cx#2 reg byte x 333.6666666666667 +(byte) mode_hicolecmchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_hicolecmchar::cx#2 reg byte x 3333333.666666667 (byte) mode_hicolecmchar::cy -(byte) mode_hicolecmchar::cy#1 cy zp[1]:19 151.5 -(byte) mode_hicolecmchar::cy#4 cy zp[1]:19 100.25000000000001 +(byte) mode_hicolecmchar::cy#1 cy zp[1]:17 1500001.5 +(byte) mode_hicolecmchar::cy#4 cy zp[1]:17 1000000.2499999999 (byte) mode_hicolecmchar::i -(byte) mode_hicolecmchar::i#1 reg byte x 151.5 -(byte) mode_hicolecmchar::i#2 reg byte x 202.0 +(byte) mode_hicolecmchar::i#1 reg byte x 1500001.5 +(byte) mode_hicolecmchar::i#2 reg byte x 2000002.0 (byte) mode_hicolecmchar::v -(byte) mode_hicolecmchar::v#0 reg byte a 1001.0 +(byte) mode_hicolecmchar::v#0 reg byte a 1.0000001E7 (void()) mode_hicolmcchar() -(byte~) mode_hicolmcchar::$2 reg byte a 2002.0 -(byte~) mode_hicolmcchar::$3 zp[1]:13 1001.0 -(byte~) mode_hicolmcchar::$4 reg byte a 2002.0 +(byte~) mode_hicolmcchar::$2 reg byte a 2.0000002E7 +(byte~) mode_hicolmcchar::$3 zp[1]:11 1.0000001E7 +(byte~) mode_hicolmcchar::$4 reg byte a 2.0000002E7 (label) mode_hicolmcchar::@1 (label) mode_hicolmcchar::@2 (label) mode_hicolmcchar::@3 @@ -25357,28 +25334,28 @@ FINAL SYMBOL TABLE (const byte*) mode_hicolmcchar::COLORS = (byte*) 33792 (const byte*) mode_hicolmcchar::SCREEN = (byte*) 32768 (byte*) mode_hicolmcchar::ch -(byte*) mode_hicolmcchar::ch#1 ch zp[2]:9 420.59999999999997 -(byte*) mode_hicolmcchar::ch#2 ch zp[2]:9 388.0 -(byte*) mode_hicolmcchar::ch#3 ch zp[2]:9 202.0 +(byte*) mode_hicolmcchar::ch#1 ch zp[2]:8 4200000.6 +(byte*) mode_hicolmcchar::ch#2 ch zp[2]:8 3875000.5 +(byte*) mode_hicolmcchar::ch#3 ch zp[2]:8 2000002.0 (byte*) mode_hicolmcchar::col -(byte*) mode_hicolmcchar::col#1 col zp[2]:7 300.42857142857144 -(byte*) mode_hicolmcchar::col#2 col zp[2]:7 517.3333333333334 -(byte*) mode_hicolmcchar::col#3 col zp[2]:7 202.0 +(byte*) mode_hicolmcchar::col#1 col zp[2]:6 3000000.428571428 +(byte*) mode_hicolmcchar::col#2 col zp[2]:6 5166667.333333333 +(byte*) mode_hicolmcchar::col#3 col zp[2]:6 2000002.0 (byte) mode_hicolmcchar::cx -(byte) mode_hicolmcchar::cx#1 reg byte x 1501.5 -(byte) mode_hicolmcchar::cx#2 reg byte x 333.6666666666667 +(byte) mode_hicolmcchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_hicolmcchar::cx#2 reg byte x 3333333.666666667 (byte) mode_hicolmcchar::cy -(byte) mode_hicolmcchar::cy#1 cy zp[1]:14 151.5 -(byte) mode_hicolmcchar::cy#4 cy zp[1]:14 100.25000000000001 +(byte) mode_hicolmcchar::cy#1 cy zp[1]:17 1500001.5 +(byte) mode_hicolmcchar::cy#4 cy zp[1]:17 1000000.2499999999 (byte) mode_hicolmcchar::i -(byte) mode_hicolmcchar::i#1 reg byte x 151.5 -(byte) mode_hicolmcchar::i#2 reg byte x 202.0 +(byte) mode_hicolmcchar::i#1 reg byte x 1500001.5 +(byte) mode_hicolmcchar::i#2 reg byte x 2000002.0 (byte) mode_hicolmcchar::v -(byte) mode_hicolmcchar::v#0 reg byte a 1001.0 +(byte) mode_hicolmcchar::v#0 reg byte a 1.0000001E7 (void()) mode_hicolstdchar() -(byte~) mode_hicolstdchar::$2 reg byte a 2002.0 -(byte~) mode_hicolstdchar::$3 zp[1]:14 1001.0 -(byte~) mode_hicolstdchar::$4 reg byte a 2002.0 +(byte~) mode_hicolstdchar::$2 reg byte a 2.0000002E7 +(byte~) mode_hicolstdchar::$3 zp[1]:12 1.0000001E7 +(byte~) mode_hicolstdchar::$4 reg byte a 2.0000002E7 (label) mode_hicolstdchar::@1 (label) mode_hicolstdchar::@2 (label) mode_hicolstdchar::@3 @@ -25390,31 +25367,31 @@ FINAL SYMBOL TABLE (const byte*) mode_hicolstdchar::COLORS = (byte*) 33792 (const byte*) mode_hicolstdchar::SCREEN = (byte*) 32768 (byte*) mode_hicolstdchar::ch -(byte*) mode_hicolstdchar::ch#1 ch zp[2]:9 420.59999999999997 -(byte*) mode_hicolstdchar::ch#2 ch zp[2]:9 388.0 -(byte*) mode_hicolstdchar::ch#3 ch zp[2]:9 202.0 +(byte*) mode_hicolstdchar::ch#1 ch zp[2]:8 4200000.6 +(byte*) mode_hicolstdchar::ch#2 ch zp[2]:8 3875000.5 +(byte*) mode_hicolstdchar::ch#3 ch zp[2]:8 2000002.0 (byte*) mode_hicolstdchar::col -(byte*) mode_hicolstdchar::col#1 col zp[2]:7 300.42857142857144 -(byte*) mode_hicolstdchar::col#2 col zp[2]:7 517.3333333333334 -(byte*) mode_hicolstdchar::col#3 col zp[2]:7 202.0 +(byte*) mode_hicolstdchar::col#1 col zp[2]:6 3000000.428571428 +(byte*) mode_hicolstdchar::col#2 col zp[2]:6 5166667.333333333 +(byte*) mode_hicolstdchar::col#3 col zp[2]:6 2000002.0 (byte) mode_hicolstdchar::cx -(byte) mode_hicolstdchar::cx#1 reg byte x 1501.5 -(byte) mode_hicolstdchar::cx#2 reg byte x 333.6666666666667 +(byte) mode_hicolstdchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_hicolstdchar::cx#2 reg byte x 3333333.666666667 (byte) mode_hicolstdchar::cy -(byte) mode_hicolstdchar::cy#1 cy zp[1]:3 151.5 -(byte) mode_hicolstdchar::cy#4 cy zp[1]:3 100.25000000000001 +(byte) mode_hicolstdchar::cy#1 cy zp[1]:19 1500001.5 +(byte) mode_hicolstdchar::cy#4 cy zp[1]:19 1000000.2499999999 (byte) mode_hicolstdchar::i -(byte) mode_hicolstdchar::i#1 reg byte x 151.5 -(byte) mode_hicolstdchar::i#2 reg byte x 202.0 +(byte) mode_hicolstdchar::i#1 reg byte x 1500001.5 +(byte) mode_hicolstdchar::i#2 reg byte x 2000002.0 (byte) mode_hicolstdchar::v -(byte) mode_hicolstdchar::v#0 reg byte a 1001.0 +(byte) mode_hicolstdchar::v#0 reg byte a 1.0000001E7 (void()) mode_mcchar() -(byte~) mode_mcchar::$2 reg byte a 2002.0 -(byte~) mode_mcchar::$3 reg byte a 2002.0 -(byte~) mode_mcchar::$4 reg byte a 2002.0 -(byte~) mode_mcchar::$5 zp[1]:19 1001.0 -(byte~) mode_mcchar::$6 reg byte a 2002.0 -(byte~) mode_mcchar::$7 reg byte a 2002.0 +(byte~) mode_mcchar::$2 reg byte a 2.0000002E7 +(byte~) mode_mcchar::$3 reg byte a 2.0000002E7 +(byte~) mode_mcchar::$4 reg byte a 2.0000002E7 +(byte~) mode_mcchar::$5 zp[1]:17 1.0000001E7 +(byte~) mode_mcchar::$6 reg byte a 2.0000002E7 +(byte~) mode_mcchar::$7 reg byte a 2.0000002E7 (label) mode_mcchar::@1 (label) mode_mcchar::@2 (label) mode_mcchar::@3 @@ -25426,26 +25403,26 @@ FINAL SYMBOL TABLE (const byte*) mode_mcchar::COLORS = (byte*) 55296 (const byte*) mode_mcchar::SCREEN = (byte*) 32768 (byte*) mode_mcchar::ch -(byte*) mode_mcchar::ch#1 ch zp[2]:15 420.59999999999997 -(byte*) mode_mcchar::ch#2 ch zp[2]:15 310.4 -(byte*) mode_mcchar::ch#3 ch zp[2]:15 202.0 +(byte*) mode_mcchar::ch#1 ch zp[2]:13 4200000.6 +(byte*) mode_mcchar::ch#2 ch zp[2]:13 3100000.4 +(byte*) mode_mcchar::ch#3 ch zp[2]:13 2000002.0 (byte*) mode_mcchar::col -(byte*) mode_mcchar::col#1 col zp[2]:5 191.1818181818182 -(byte*) mode_mcchar::col#2 col zp[2]:5 776.0 -(byte*) mode_mcchar::col#3 col zp[2]:5 202.0 +(byte*) mode_mcchar::col#1 col zp[2]:4 1909091.1818181819 +(byte*) mode_mcchar::col#2 col zp[2]:4 7750001.0 +(byte*) mode_mcchar::col#3 col zp[2]:4 2000002.0 (byte) mode_mcchar::cx -(byte) mode_mcchar::cx#1 reg byte x 1501.5 -(byte) mode_mcchar::cx#2 reg byte x 364.0 +(byte) mode_mcchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_mcchar::cx#2 reg byte x 3636364.0 (byte) mode_mcchar::cy -(byte) mode_mcchar::cy#1 cy zp[1]:21 151.5 -(byte) mode_mcchar::cy#4 cy zp[1]:21 157.42857142857144 +(byte) mode_mcchar::cy#1 cy zp[1]:12 1500001.5 +(byte) mode_mcchar::cy#4 cy zp[1]:12 1571428.857142857 (byte) mode_mcchar::i -(byte) mode_mcchar::i#1 reg byte x 151.5 -(byte) mode_mcchar::i#2 reg byte x 202.0 +(byte) mode_mcchar::i#1 reg byte x 1500001.5 +(byte) mode_mcchar::i#2 reg byte x 2000002.0 (void()) mode_sixsfred() -(byte~) mode_sixsfred::$2 reg byte a 2002.0 -(byte~) mode_sixsfred::$3 reg byte a 2002.0 -(byte~) mode_sixsfred::$6 reg byte a 2002.0 +(byte~) mode_sixsfred::$2 reg byte a 2.0000002E7 +(byte~) mode_sixsfred::$3 reg byte a 2.0000002E7 +(byte~) mode_sixsfred::$6 reg byte a 2.0000002E7 (label) mode_sixsfred::@1 (label) mode_sixsfred::@10 (label) mode_sixsfred::@11 @@ -25463,47 +25440,47 @@ FINAL SYMBOL TABLE (const byte*) mode_sixsfred::PLANEA = (byte*) 16384 (const byte*) mode_sixsfred::PLANEB = (byte*) 24576 (byte) mode_sixsfred::ax -(byte) mode_sixsfred::ax#1 reg byte x 1501.5 -(byte) mode_sixsfred::ax#2 reg byte x 400.4 +(byte) mode_sixsfred::ax#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred::ax#2 reg byte x 4000000.4 (byte) mode_sixsfred::ay -(byte) mode_sixsfred::ay#1 ay zp[1]:14 151.5 -(byte) mode_sixsfred::ay#4 ay zp[1]:14 150.375 +(byte) mode_sixsfred::ay#1 ay zp[1]:17 1500001.5 +(byte) mode_sixsfred::ay#4 ay zp[1]:17 1500000.375 (byte) mode_sixsfred::bx -(byte) mode_sixsfred::bx#1 reg byte x 1501.5 -(byte) mode_sixsfred::bx#2 reg byte x 667.3333333333334 +(byte) mode_sixsfred::bx#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred::bx#2 reg byte x 6666667.333333333 (byte) mode_sixsfred::by -(byte) mode_sixsfred::by#1 by zp[1]:19 151.5 -(byte) mode_sixsfred::by#4 by zp[1]:19 33.666666666666664 +(byte) mode_sixsfred::by#1 by zp[1]:19 1500001.5 +(byte) mode_sixsfred::by#4 by zp[1]:19 333333.6666666667 (byte*) mode_sixsfred::col -(byte*) mode_sixsfred::col#1 col zp[2]:5 420.59999999999997 -(byte*) mode_sixsfred::col#2 col zp[2]:5 776.0 -(byte*) mode_sixsfred::col#3 col zp[2]:5 202.0 +(byte*) mode_sixsfred::col#1 col zp[2]:4 4200000.6 +(byte*) mode_sixsfred::col#2 col zp[2]:4 7750001.0 +(byte*) mode_sixsfred::col#3 col zp[2]:4 2000002.0 (byte) mode_sixsfred::cx -(byte) mode_sixsfred::cx#1 reg byte x 1501.5 -(byte) mode_sixsfred::cx#2 reg byte x 600.5999999999999 +(byte) mode_sixsfred::cx#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred::cx#2 reg byte x 6000000.6 (byte) mode_sixsfred::cy -(byte) mode_sixsfred::cy#1 cy zp[1]:4 151.5 -(byte) mode_sixsfred::cy#4 cy zp[1]:4 150.375 +(byte) mode_sixsfred::cy#1 cy zp[1]:12 1500001.5 +(byte) mode_sixsfred::cy#4 cy zp[1]:12 1500000.375 (byte*) mode_sixsfred::gfxa -(byte*) mode_sixsfred::gfxa#1 gfxa zp[2]:7 420.59999999999997 -(byte*) mode_sixsfred::gfxa#2 gfxa zp[2]:7 776.0 -(byte*) mode_sixsfred::gfxa#3 gfxa zp[2]:7 202.0 +(byte*) mode_sixsfred::gfxa#1 gfxa zp[2]:6 4200000.6 +(byte*) mode_sixsfred::gfxa#2 gfxa zp[2]:6 7750001.0 +(byte*) mode_sixsfred::gfxa#3 gfxa zp[2]:6 2000002.0 (byte*) mode_sixsfred::gfxb -(byte*) mode_sixsfred::gfxb#1 gfxb zp[2]:9 420.59999999999997 -(byte*) mode_sixsfred::gfxb#2 gfxb zp[2]:9 1552.0 -(byte*) mode_sixsfred::gfxb#3 gfxb zp[2]:9 202.0 +(byte*) mode_sixsfred::gfxb#1 gfxb zp[2]:8 4200000.6 +(byte*) mode_sixsfred::gfxb#2 gfxb zp[2]:8 1.5500002E7 +(byte*) mode_sixsfred::gfxb#3 gfxb zp[2]:8 2000002.0 (byte) mode_sixsfred::i -(byte) mode_sixsfred::i#1 reg byte x 151.5 -(byte) mode_sixsfred::i#2 reg byte x 202.0 +(byte) mode_sixsfred::i#1 reg byte x 1500001.5 +(byte) mode_sixsfred::i#2 reg byte x 2000002.0 (byte) mode_sixsfred::row -(byte) mode_sixsfred::row#0 reg byte a 2002.0 +(byte) mode_sixsfred::row#0 reg byte a 2.0000002E7 (const byte*) mode_sixsfred::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } (void()) mode_sixsfred2() -(byte~) mode_sixsfred2::$2 reg byte a 2002.0 -(byte~) mode_sixsfred2::$3 zp[1]:13 1001.0 -(byte~) mode_sixsfred2::$4 reg byte a 2002.0 -(byte~) mode_sixsfred2::$5 reg byte a 2002.0 -(byte~) mode_sixsfred2::$8 reg byte a 2002.0 +(byte~) mode_sixsfred2::$2 reg byte a 2.0000002E7 +(byte~) mode_sixsfred2::$3 zp[1]:11 1.0000001E7 +(byte~) mode_sixsfred2::$4 reg byte a 2.0000002E7 +(byte~) mode_sixsfred2::$5 reg byte a 2.0000002E7 +(byte~) mode_sixsfred2::$8 reg byte a 2.0000002E7 (label) mode_sixsfred2::@1 (label) mode_sixsfred2::@10 (label) mode_sixsfred2::@11 @@ -25521,45 +25498,45 @@ FINAL SYMBOL TABLE (const byte*) mode_sixsfred2::PLANEA = (byte*) 16384 (const byte*) mode_sixsfred2::PLANEB = (byte*) 24576 (byte) mode_sixsfred2::ax -(byte) mode_sixsfred2::ax#1 reg byte x 1501.5 -(byte) mode_sixsfred2::ax#2 reg byte x 400.4 +(byte) mode_sixsfred2::ax#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred2::ax#2 reg byte x 4000000.4 (byte) mode_sixsfred2::ay -(byte) mode_sixsfred2::ay#1 ay zp[1]:14 151.5 -(byte) mode_sixsfred2::ay#4 ay zp[1]:14 150.375 +(byte) mode_sixsfred2::ay#1 ay zp[1]:3 1500001.5 +(byte) mode_sixsfred2::ay#4 ay zp[1]:3 1500000.375 (byte) mode_sixsfred2::bx -(byte) mode_sixsfred2::bx#1 reg byte x 1501.5 -(byte) mode_sixsfred2::bx#2 reg byte x 667.3333333333334 +(byte) mode_sixsfred2::bx#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred2::bx#2 reg byte x 6666667.333333333 (byte) mode_sixsfred2::by -(byte) mode_sixsfred2::by#1 by zp[1]:19 151.5 -(byte) mode_sixsfred2::by#4 by zp[1]:19 33.666666666666664 +(byte) mode_sixsfred2::by#1 by zp[1]:12 1500001.5 +(byte) mode_sixsfred2::by#4 by zp[1]:12 333333.6666666667 (byte*) mode_sixsfred2::col -(byte*) mode_sixsfred2::col#1 col zp[2]:5 420.59999999999997 -(byte*) mode_sixsfred2::col#2 col zp[2]:5 517.3333333333334 -(byte*) mode_sixsfred2::col#3 col zp[2]:5 202.0 +(byte*) mode_sixsfred2::col#1 col zp[2]:4 4200000.6 +(byte*) mode_sixsfred2::col#2 col zp[2]:4 5166667.333333333 +(byte*) mode_sixsfred2::col#3 col zp[2]:4 2000002.0 (byte) mode_sixsfred2::cx -(byte) mode_sixsfred2::cx#1 reg byte x 1501.5 -(byte) mode_sixsfred2::cx#2 reg byte x 429.0 +(byte) mode_sixsfred2::cx#1 reg byte x 1.50000015E7 +(byte) mode_sixsfred2::cx#2 reg byte x 4285714.714285715 (byte) mode_sixsfred2::cy -(byte) mode_sixsfred2::cy#1 cy zp[1]:4 151.5 -(byte) mode_sixsfred2::cy#4 cy zp[1]:4 120.29999999999998 +(byte) mode_sixsfred2::cy#1 cy zp[1]:2 1500001.5 +(byte) mode_sixsfred2::cy#4 cy zp[1]:2 1200000.3 (byte*) mode_sixsfred2::gfxa -(byte*) mode_sixsfred2::gfxa#1 gfxa zp[2]:7 420.59999999999997 -(byte*) mode_sixsfred2::gfxa#2 gfxa zp[2]:7 776.0 -(byte*) mode_sixsfred2::gfxa#3 gfxa zp[2]:7 202.0 +(byte*) mode_sixsfred2::gfxa#1 gfxa zp[2]:6 4200000.6 +(byte*) mode_sixsfred2::gfxa#2 gfxa zp[2]:6 7750001.0 +(byte*) mode_sixsfred2::gfxa#3 gfxa zp[2]:6 2000002.0 (byte*) mode_sixsfred2::gfxb -(byte*) mode_sixsfred2::gfxb#1 gfxb zp[2]:9 420.59999999999997 -(byte*) mode_sixsfred2::gfxb#2 gfxb zp[2]:9 1552.0 -(byte*) mode_sixsfred2::gfxb#3 gfxb zp[2]:9 202.0 +(byte*) mode_sixsfred2::gfxb#1 gfxb zp[2]:8 4200000.6 +(byte*) mode_sixsfred2::gfxb#2 gfxb zp[2]:8 1.5500002E7 +(byte*) mode_sixsfred2::gfxb#3 gfxb zp[2]:8 2000002.0 (byte) mode_sixsfred2::i -(byte) mode_sixsfred2::i#1 reg byte x 151.5 -(byte) mode_sixsfred2::i#2 reg byte x 202.0 +(byte) mode_sixsfred2::i#1 reg byte x 1500001.5 +(byte) mode_sixsfred2::i#2 reg byte x 2000002.0 (byte) mode_sixsfred2::row -(byte) mode_sixsfred2::row#0 reg byte a 2002.0 +(byte) mode_sixsfred2::row#0 reg byte a 2.0000002E7 (const byte*) mode_sixsfred2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } (void()) mode_stdbitmap() -(byte~) mode_stdbitmap::$4 reg byte a 2002.0 -(byte~) mode_stdbitmap::$7 reg byte a 2002.0 -(byte~) mode_stdbitmap::$8 reg byte a 2002.0 +(byte~) mode_stdbitmap::$4 reg byte a 2.0000002E7 +(byte~) mode_stdbitmap::$7 reg byte a 2.0000002E7 +(byte~) mode_stdbitmap::$8 reg byte a 2.0000002E7 (label) mode_stdbitmap::@1 (label) mode_stdbitmap::@10 (label) mode_stdbitmap::@11 @@ -25575,35 +25552,35 @@ FINAL SYMBOL TABLE (const byte*) mode_stdbitmap::BITMAP = (byte*) 24576 (const byte*) mode_stdbitmap::SCREEN = (byte*) 16384 (byte*) mode_stdbitmap::ch -(byte*) mode_stdbitmap::ch#1 ch zp[2]:5 420.59999999999997 -(byte*) mode_stdbitmap::ch#2 ch zp[2]:5 443.42857142857144 -(byte*) mode_stdbitmap::ch#3 ch zp[2]:5 202.0 +(byte*) mode_stdbitmap::ch#1 ch zp[2]:4 4200000.6 +(byte*) mode_stdbitmap::ch#2 ch zp[2]:4 4428572.0 +(byte*) mode_stdbitmap::ch#3 ch zp[2]:4 2000002.0 (byte) mode_stdbitmap::col -(byte) mode_stdbitmap::col#0 reg byte y 1501.5 +(byte) mode_stdbitmap::col#0 reg byte y 1.50000015E7 (byte) mode_stdbitmap::col2 -(byte) mode_stdbitmap::col2#0 col2 zp[1]:19 1001.0 +(byte) mode_stdbitmap::col2#0 col2 zp[1]:17 1.0000001E7 (byte) mode_stdbitmap::cx -(byte) mode_stdbitmap::cx#1 reg byte x 1501.5 -(byte) mode_stdbitmap::cx#2 reg byte x 375.375 +(byte) mode_stdbitmap::cx#1 reg byte x 1.50000015E7 +(byte) mode_stdbitmap::cx#2 reg byte x 3750000.375 (byte) mode_stdbitmap::cy -(byte) mode_stdbitmap::cy#1 cy zp[1]:3 151.5 -(byte) mode_stdbitmap::cy#4 cy zp[1]:3 109.36363636363637 +(byte) mode_stdbitmap::cy#1 cy zp[1]:19 1500001.5 +(byte) mode_stdbitmap::cy#4 cy zp[1]:19 1090909.3636363638 (byte) mode_stdbitmap::i -(byte) mode_stdbitmap::i#1 reg byte x 151.5 -(byte) mode_stdbitmap::i#2 reg byte x 202.0 +(byte) mode_stdbitmap::i#1 reg byte x 1500001.5 +(byte) mode_stdbitmap::i#2 reg byte x 2000002.0 (byte) mode_stdbitmap::l -(byte) mode_stdbitmap::l#1 l zp[1]:21 202.0 -(byte) mode_stdbitmap::l#2 l zp[1]:21 101.0 +(byte) mode_stdbitmap::l#1 l zp[1]:12 2000002.0 +(byte) mode_stdbitmap::l#2 l zp[1]:12 1000000.9999999999 (const byte) mode_stdbitmap::lines_cnt = (byte) 9 (const byte*) mode_stdbitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 } (const byte*) mode_stdbitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 } (void()) mode_stdchar() -(byte~) mode_stdchar::$2 reg byte a 2002.0 -(byte~) mode_stdchar::$3 reg byte a 2002.0 -(byte~) mode_stdchar::$4 reg byte a 2002.0 -(byte~) mode_stdchar::$5 zp[1]:21 1001.0 -(byte~) mode_stdchar::$6 reg byte a 2002.0 -(byte~) mode_stdchar::$7 reg byte a 2002.0 +(byte~) mode_stdchar::$2 reg byte a 2.0000002E7 +(byte~) mode_stdchar::$3 reg byte a 2.0000002E7 +(byte~) mode_stdchar::$4 reg byte a 2.0000002E7 +(byte~) mode_stdchar::$5 zp[1]:19 1.0000001E7 +(byte~) mode_stdchar::$6 reg byte a 2.0000002E7 +(byte~) mode_stdchar::$7 reg byte a 2.0000002E7 (label) mode_stdchar::@1 (label) mode_stdchar::@2 (label) mode_stdchar::@3 @@ -25615,28 +25592,28 @@ FINAL SYMBOL TABLE (const byte*) mode_stdchar::COLORS = (byte*) 55296 (const byte*) mode_stdchar::SCREEN = (byte*) 32768 (byte*) mode_stdchar::ch -(byte*) mode_stdchar::ch#1 ch zp[2]:15 420.59999999999997 -(byte*) mode_stdchar::ch#2 ch zp[2]:15 310.4 -(byte*) mode_stdchar::ch#3 ch zp[2]:15 202.0 +(byte*) mode_stdchar::ch#1 ch zp[2]:13 4200000.6 +(byte*) mode_stdchar::ch#2 ch zp[2]:13 3100000.4 +(byte*) mode_stdchar::ch#3 ch zp[2]:13 2000002.0 (byte*) mode_stdchar::col -(byte*) mode_stdchar::col#1 col zp[2]:7 191.1818181818182 -(byte*) mode_stdchar::col#2 col zp[2]:7 776.0 -(byte*) mode_stdchar::col#3 col zp[2]:7 202.0 +(byte*) mode_stdchar::col#1 col zp[2]:6 1909091.1818181819 +(byte*) mode_stdchar::col#2 col zp[2]:6 7750001.0 +(byte*) mode_stdchar::col#3 col zp[2]:6 2000002.0 (byte) mode_stdchar::cx -(byte) mode_stdchar::cx#1 reg byte x 1501.5 -(byte) mode_stdchar::cx#2 reg byte x 364.0 +(byte) mode_stdchar::cx#1 reg byte x 1.50000015E7 +(byte) mode_stdchar::cx#2 reg byte x 3636364.0 (byte) mode_stdchar::cy -(byte) mode_stdchar::cy#1 cy zp[1]:20 151.5 -(byte) mode_stdchar::cy#4 cy zp[1]:20 157.42857142857144 +(byte) mode_stdchar::cy#1 cy zp[1]:18 1500001.5 +(byte) mode_stdchar::cy#4 cy zp[1]:18 1571428.857142857 (byte) mode_stdchar::i -(byte) mode_stdchar::i#1 reg byte x 151.5 -(byte) mode_stdchar::i#2 reg byte x 202.0 +(byte) mode_stdchar::i#1 reg byte x 1500001.5 +(byte) mode_stdchar::i#2 reg byte x 2000002.0 (void()) mode_twoplanebitmap() -(byte~) mode_twoplanebitmap::$2 reg byte a 2002.0 -(byte~) mode_twoplanebitmap::$3 zp[1]:12 1001.0 -(byte~) mode_twoplanebitmap::$4 reg byte a 2002.0 -(byte~) mode_twoplanebitmap::$5 reg byte a 2002.0 -(byte~) mode_twoplanebitmap::$8 reg byte a 2002.0 +(byte~) mode_twoplanebitmap::$2 reg byte a 2.0000002E7 +(byte~) mode_twoplanebitmap::$3 zp[1]:10 1.0000001E7 +(byte~) mode_twoplanebitmap::$4 reg byte a 2.0000002E7 +(byte~) mode_twoplanebitmap::$5 reg byte a 2.0000002E7 +(byte~) mode_twoplanebitmap::$8 reg byte a 2.0000002E7 (label) mode_twoplanebitmap::@1 (label) mode_twoplanebitmap::@10 (label) mode_twoplanebitmap::@11 @@ -25657,52 +25634,52 @@ FINAL SYMBOL TABLE (const byte*) mode_twoplanebitmap::PLANEA = (byte*) 16384 (const byte*) mode_twoplanebitmap::PLANEB = (byte*) 24576 (byte) mode_twoplanebitmap::ax -(byte) mode_twoplanebitmap::ax#1 reg byte x 1501.5 -(byte) mode_twoplanebitmap::ax#2 reg byte x 250.25 +(byte) mode_twoplanebitmap::ax#1 reg byte x 1.50000015E7 +(byte) mode_twoplanebitmap::ax#2 reg byte x 2500000.25 (byte) mode_twoplanebitmap::ay -(byte) mode_twoplanebitmap::ay#1 ay zp[1]:13 151.5 -(byte) mode_twoplanebitmap::ay#5 ay zp[1]:13 109.36363636363637 +(byte) mode_twoplanebitmap::ay#1 ay zp[1]:3 1500001.5 +(byte) mode_twoplanebitmap::ay#5 ay zp[1]:3 1090909.3636363638 (byte) mode_twoplanebitmap::bx -(byte) mode_twoplanebitmap::bx#1 reg byte x 1501.5 -(byte) mode_twoplanebitmap::bx#2 reg byte x 667.3333333333334 +(byte) mode_twoplanebitmap::bx#1 reg byte x 1.50000015E7 +(byte) mode_twoplanebitmap::bx#2 reg byte x 6666667.333333333 (byte) mode_twoplanebitmap::by -(byte) mode_twoplanebitmap::by#1 by zp[1]:4 151.5 -(byte) mode_twoplanebitmap::by#4 by zp[1]:4 33.666666666666664 +(byte) mode_twoplanebitmap::by#1 by zp[1]:12 1500001.5 +(byte) mode_twoplanebitmap::by#4 by zp[1]:12 333333.6666666667 (byte*) mode_twoplanebitmap::col -(byte*) mode_twoplanebitmap::col#1 col zp[2]:7 420.59999999999997 -(byte*) mode_twoplanebitmap::col#2 col zp[2]:7 517.3333333333334 -(byte*) mode_twoplanebitmap::col#3 col zp[2]:7 202.0 +(byte*) mode_twoplanebitmap::col#1 col zp[2]:6 4200000.6 +(byte*) mode_twoplanebitmap::col#2 col zp[2]:6 5166667.333333333 +(byte*) mode_twoplanebitmap::col#3 col zp[2]:6 2000002.0 (byte) mode_twoplanebitmap::cx -(byte) mode_twoplanebitmap::cx#1 reg byte x 1501.5 -(byte) mode_twoplanebitmap::cx#2 reg byte x 429.0 +(byte) mode_twoplanebitmap::cx#1 reg byte x 1.50000015E7 +(byte) mode_twoplanebitmap::cx#2 reg byte x 4285714.714285715 (byte) mode_twoplanebitmap::cy -(byte) mode_twoplanebitmap::cy#1 cy zp[1]:3 151.5 -(byte) mode_twoplanebitmap::cy#4 cy zp[1]:3 120.29999999999998 +(byte) mode_twoplanebitmap::cy#1 cy zp[1]:2 1500001.5 +(byte) mode_twoplanebitmap::cy#4 cy zp[1]:2 1200000.3 (byte*) mode_twoplanebitmap::gfxa -(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp[2]:9 2002.0 -(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp[2]:9 2002.0 -(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp[2]:9 1021.2 -(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp[2]:9 620.8 -(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp[2]:9 202.0 +(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp[2]:8 2.0000002E7 +(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp[2]:8 2.0000002E7 +(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp[2]:8 1.02000012E7 +(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp[2]:8 6200000.8 +(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp[2]:8 2000002.0 (byte*) mode_twoplanebitmap::gfxb -(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp[2]:5 420.59999999999997 -(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp[2]:5 1552.0 -(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp[2]:5 202.0 +(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp[2]:4 4200000.6 +(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp[2]:4 1.5500002E7 +(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp[2]:4 2000002.0 (byte) mode_twoplanebitmap::i -(byte) mode_twoplanebitmap::i#1 reg byte x 151.5 -(byte) mode_twoplanebitmap::i#2 reg byte x 202.0 +(byte) mode_twoplanebitmap::i#1 reg byte x 1500001.5 +(byte) mode_twoplanebitmap::i#2 reg byte x 2000002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:7 2002.0 -(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 821.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:7 101.0 -(byte*) print_char_cursor#32 print_char_cursor zp[2]:7 572.0 -(byte*) print_char_cursor#97 print_char_cursor zp[2]:7 202.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 2.0000002E7 +(byte*) print_char_cursor#17 print_char_cursor zp[2]:6 8200001.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:6 1000001.0 +(byte*) print_char_cursor#32 print_char_cursor zp[2]:6 1.4328571434285712E9 +(byte*) print_char_cursor#97 print_char_cursor zp[2]:6 2000002.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor -(byte*) print_line_cursor#17 print_line_cursor zp[2]:9 8.583333333333332 -(byte*) print_line_cursor#18 print_line_cursor zp[2]:9 2004.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:9 641.0 +(byte*) print_line_cursor#17 print_line_cursor zp[2]:8 916666.8333333333 +(byte*) print_line_cursor#18 print_line_cursor zp[2]:8 2.0010000003E10 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:8 6.000400001E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -25719,17 +25696,16 @@ FINAL SYMBOL TABLE (label) print_str_lines::@6 (label) print_str_lines::@return (byte) print_str_lines::ch -(byte) print_str_lines::ch#0 reg byte a 667.3333333333334 +(byte) print_str_lines::ch#0 reg byte a 6666667.333333333 (byte*) print_str_lines::str -(byte*) print_str_lines::str#0 str zp[2]:15 233.66666666666669 -(byte*) print_str_lines::str#2 str zp[2]:15 151.5 -(byte*) print_str_lines::str#3 str zp[2]:15 1552.0 +(byte*) print_str_lines::str#0 str zp[2]:13 2333333.666666667 +(byte*) print_str_lines::str#2 str zp[2]:13 1500001.5 +(byte*) print_str_lines::str#3 str zp[2]:13 1.5500002E7 reg byte x [ menu::i#2 menu::i#1 ] reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] -zp[1]:2 [ dtv_control#114 dtv_control#144 dtv_control#17 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] -reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] +reg byte x [ dtv_control#114 dtv_control#144 dtv_control#17 ] reg byte y [ keyboard_key_pressed::key#20 ] reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ] @@ -25755,26 +25731,26 @@ reg byte x [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ] -zp[1]:3 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ] -reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] -reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] -reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] -zp[1]:4 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ] -reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] +reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] +reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] +reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] +zp[1]:2 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] +zp[1]:3 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ 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 [ mode_mcchar::i#2 mode_mcchar::i#1 ] reg byte x [ mode_mcchar::cx#2 mode_mcchar::cx#1 ] -zp[2]:5 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] +zp[2]:4 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ] reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -zp[2]:7 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] -zp[2]:9 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] +zp[2]:6 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#97 print_char_cursor#32 print_char_cursor#1 menu::c#2 menu::c#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 ] +zp[2]:8 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ menu::$5 ] reg byte a [ keyboard_key_pressed::return#24 ] @@ -25816,7 +25792,6 @@ reg byte a [ keyboard_key_pressed::return#20 ] reg byte a [ mode_ctrl::$24 ] reg byte a [ keyboard_key_pressed::return#21 ] reg byte a [ mode_ctrl::$28 ] -zp[1]:11 [ keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte a [ keyboard_key_pressed::rowidx#0 ] reg byte y [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] @@ -25832,7 +25807,7 @@ reg byte a [ mode_sixsfred::$3 ] reg byte a [ mode_sixsfred::$6 ] reg byte a [ mode_sixsfred::row#0 ] reg byte a [ mode_twoplanebitmap::$2 ] -zp[1]:12 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +zp[1]:10 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte a [ mode_twoplanebitmap::$4 ] reg byte a [ mode_twoplanebitmap::$5 ] reg byte a [ mode_twoplanebitmap::$8 ] @@ -25842,32 +25817,32 @@ reg byte a [ mode_sixsfred2::$5 ] reg byte a [ mode_sixsfred2::$8 ] reg byte a [ mode_sixsfred2::row#0 ] reg byte a [ mode_hicolmcchar::$2 ] -zp[1]:13 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] +zp[1]:11 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] reg byte a [ mode_hicolmcchar::$4 ] reg byte a [ mode_hicolmcchar::v#0 ] reg byte a [ mode_hicolecmchar::$2 ] reg byte a [ mode_hicolecmchar::$4 ] reg byte a [ mode_hicolecmchar::v#0 ] reg byte a [ mode_hicolstdchar::$2 ] -zp[1]:14 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] +zp[1]:12 [ mode_hicolstdchar::$3 mode_hicolecmchar::$3 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] reg byte a [ mode_hicolstdchar::$4 ] reg byte a [ mode_hicolstdchar::v#0 ] reg byte a [ mode_stdbitmap::$4 ] reg byte y [ mode_stdbitmap::col#0 ] reg byte a [ mode_stdbitmap::$7 ] reg byte a [ mode_stdbitmap::$8 ] -reg byte x [ bitmap_line::x1#0 ] +reg byte x [ bitmap_line::y0#0 ] reg byte y [ bitmap_line::yd#2 ] reg byte y [ bitmap_line::yd#1 ] reg byte y [ bitmap_line::yd#10 ] reg byte y [ bitmap_line::yd#11 ] -reg byte x [ bitmap_line_xdyi::$6 ] -zp[2]:15 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] -zp[2]:17 [ bitmap_plot::plotter_y#0 ] +reg byte a [ bitmap_line_xdyi::$6 ] +zp[2]:13 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$7 memset::dst#2 memset::dst#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] +zp[2]:15 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] -reg byte a [ bitmap_line_ydxi::$6 ] -reg byte x [ bitmap_line_xdyd::$6 ] -reg byte a [ bitmap_line_ydxd::$6 ] +reg byte x [ bitmap_line_ydxi::$6 ] +reg byte a [ bitmap_line_xdyd::$6 ] +reg byte x [ bitmap_line_ydxd::$6 ] reg byte a [ bitmap_init::$0 ] reg byte a [ bitmap_init::$7 ] reg byte a [ bitmap_init::$8 ] @@ -25875,26 +25850,26 @@ reg byte a [ bitmap_init::$9 ] reg byte a [ mode_mcchar::$2 ] reg byte a [ mode_mcchar::$3 ] reg byte a [ mode_mcchar::$4 ] -zp[1]:19 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] +zp[1]:17 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] reg byte a [ mode_mcchar::$6 ] reg byte a [ mode_mcchar::$7 ] reg byte a [ mode_ecmchar::$2 ] reg byte a [ mode_ecmchar::$3 ] reg byte a [ mode_ecmchar::$4 ] -zp[1]:20 [ mode_ecmchar::$5 bitmap_init::$10 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +zp[1]:18 [ mode_ecmchar::$5 bitmap_init::$10 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line::x1#0 ] reg byte a [ mode_ecmchar::$6 ] reg byte a [ mode_ecmchar::$7 ] reg byte a [ mode_stdchar::$2 ] reg byte a [ mode_stdchar::$3 ] reg byte a [ mode_stdchar::$4 ] -zp[1]:21 [ mode_stdchar::$5 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] +zp[1]:19 [ mode_stdchar::$5 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte a [ mode_stdchar::$6 ] reg byte a [ mode_stdchar::$7 ] reg byte a [ print_str_lines::ch#0 ] FINAL ASSEMBLER -Score: 2307041 +Score: 2322400 // File Comments // Exploring C64DTV Screen Modes @@ -25997,22 +25972,8 @@ Score: 2307041 .const KEY_1 = $38 .const KEY_2 = $3b .const KEY_SPACE = $3c - .label print_char_cursor = 7 - // The value of the DTV control register - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - // DTV Graphics Mode - .label dtv_control = 2 - .label print_line_cursor = 9 + .label print_char_cursor = 6 + .label print_line_cursor = 8 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -26051,7 +26012,7 @@ main: { menu: { .label SCREEN = $8000 .label CHARSET = $9800 - .label c = 7 + .label c = 6 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [10] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Charset ROM @@ -26469,9 +26430,9 @@ menu: { mode_8bppchunkybmm: { // 8BPP Chunky Bitmap (contains 8bpp pixels) .const PLANEB = $20000 - .label __7 = $f - .label gfxb = 9 - .label x = 7 + .label __7 = $d + .label gfxb = 8 + .label x = 6 .label y = 2 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_COLORRAM_OFF // [119] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF -- _deref_pbuc1=vbuc2 @@ -26659,9 +26620,8 @@ mode_8bppchunkybmm: { // [153] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_8bppchunkybmm::@10 to mode_ctrl [phi:mode_8bppchunkybmm::@10->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [phi:mode_8bppchunkybmm::@10->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY|(const byte) DTV_COLORRAM_OFF [phi:mode_8bppchunkybmm::@10->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF jsr mode_ctrl // mode_8bppchunkybmm::@return // } @@ -26671,6 +26631,8 @@ mode_8bppchunkybmm: { // mode_ctrl // Allow the user to control the DTV graphics using different keys mode_ctrl: { + // DTV Graphics Mode - Reset + .label ctrl = 3 // [156] phi from mode_ctrl mode_ctrl::@11 mode_ctrl::@18 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@11/mode_ctrl::@18->mode_ctrl::@1] // [156] phi (byte) dtv_control#114 = (byte) dtv_control#144 [phi:mode_ctrl/mode_ctrl::@11/mode_ctrl::@18->mode_ctrl::@1#0] -- register_copy // mode_ctrl::@1 @@ -26706,9 +26668,9 @@ mode_ctrl: { // mode_ctrl::@4 __b4: // ctrl = dtv_control - // [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 + // [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuz1=vbuxx // Read the current control byte - ldx.z dtv_control + stx.z ctrl // keyboard_key_pressed(KEY_L) // [165] call keyboard_key_pressed // [211] phi from mode_ctrl::@4 to keyboard_key_pressed [phi:mode_ctrl::@4->keyboard_key_pressed] @@ -26725,10 +26687,10 @@ mode_ctrl: { beq __b5 // mode_ctrl::@12 // ctrl = ctrl|DTV_LINEAR - // [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_LINEAR - tax + // [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_LINEAR + ora.z ctrl + sta.z ctrl // [170] phi from mode_ctrl::@12 mode_ctrl::@20 to mode_ctrl::@5 [phi:mode_ctrl::@12/mode_ctrl::@20->mode_ctrl::@5] // [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@12/mode_ctrl::@20->mode_ctrl::@5#0] -- register_copy // mode_ctrl::@5 @@ -26749,10 +26711,10 @@ mode_ctrl: { beq __b6 // mode_ctrl::@13 // ctrl = ctrl|DTV_HIGHCOLOR - // [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_HIGHCOLOR - tax + // [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_HIGHCOLOR + ora.z ctrl + sta.z ctrl // [176] phi from mode_ctrl::@13 mode_ctrl::@21 to mode_ctrl::@6 [phi:mode_ctrl::@13/mode_ctrl::@21->mode_ctrl::@6] // [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@13/mode_ctrl::@21->mode_ctrl::@6#0] -- register_copy // mode_ctrl::@6 @@ -26773,10 +26735,10 @@ mode_ctrl: { beq __b7 // mode_ctrl::@14 // ctrl = ctrl|DTV_OVERSCAN - // [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_OVERSCAN - tax + // [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_OVERSCAN + ora.z ctrl + sta.z ctrl // [182] phi from mode_ctrl::@14 mode_ctrl::@22 to mode_ctrl::@7 [phi:mode_ctrl::@14/mode_ctrl::@22->mode_ctrl::@7] // [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@14/mode_ctrl::@22->mode_ctrl::@7#0] -- register_copy // mode_ctrl::@7 @@ -26797,10 +26759,10 @@ mode_ctrl: { beq __b8 // mode_ctrl::@15 // ctrl = ctrl|DTV_BORDER_OFF - // [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_BORDER_OFF - tax + // [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_BORDER_OFF + ora.z ctrl + sta.z ctrl // [188] phi from mode_ctrl::@15 mode_ctrl::@23 to mode_ctrl::@8 [phi:mode_ctrl::@15/mode_ctrl::@23->mode_ctrl::@8] // [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@15/mode_ctrl::@23->mode_ctrl::@8#0] -- register_copy // mode_ctrl::@8 @@ -26821,10 +26783,10 @@ mode_ctrl: { beq __b9 // mode_ctrl::@16 // ctrl = ctrl|DTV_CHUNKY - // [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_CHUNKY - tax + // [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_CHUNKY + ora.z ctrl + sta.z ctrl // [194] phi from mode_ctrl::@16 mode_ctrl::@24 to mode_ctrl::@9 [phi:mode_ctrl::@16/mode_ctrl::@24->mode_ctrl::@9] // [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@16/mode_ctrl::@24->mode_ctrl::@9#0] -- register_copy // mode_ctrl::@9 @@ -26845,10 +26807,10 @@ mode_ctrl: { beq __b10 // mode_ctrl::@17 // ctrl = ctrl|DTV_COLORRAM_OFF - // [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF -- vbuxx=vbuxx_bor_vbuc1 - txa - ora #DTV_COLORRAM_OFF - tax + // [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF -- vbuz1=vbuz1_bor_vbuc1 + lda #DTV_COLORRAM_OFF + ora.z ctrl + sta.z ctrl // [200] phi from mode_ctrl::@17 mode_ctrl::@25 to mode_ctrl::@10 [phi:mode_ctrl::@17/mode_ctrl::@25->mode_ctrl::@10] // [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@17/mode_ctrl::@25->mode_ctrl::@10#0] -- register_copy // mode_ctrl::@10 @@ -26868,8 +26830,9 @@ mode_ctrl: { cmp #0 beq __b11 // [206] phi from mode_ctrl::@26 to mode_ctrl::@11 [phi:mode_ctrl::@26->mode_ctrl::@11] - // [206] phi (byte) mode_ctrl::ctrl#14 = (byte) 0 [phi:mode_ctrl::@26->mode_ctrl::@11#0] -- vbuxx=vbuc1 - ldx #0 + // [206] phi (byte) mode_ctrl::ctrl#14 = (byte) 0 [phi:mode_ctrl::@26->mode_ctrl::@11#0] -- vbuz1=vbuc1 + lda #0 + sta.z ctrl // [205] phi from mode_ctrl::@26 to mode_ctrl::@27 [phi:mode_ctrl::@26->mode_ctrl::@27] // mode_ctrl::@27 // [206] phi from mode_ctrl::@27 to mode_ctrl::@11 [phi:mode_ctrl::@27->mode_ctrl::@11] @@ -26877,19 +26840,21 @@ mode_ctrl: { // mode_ctrl::@11 __b11: // if(ctrl != dtv_control) - // [207] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 - cpx.z dtv_control + // [207] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuz1_eq_vbuxx_then_la1 + cpx.z ctrl beq __b1 // mode_ctrl::@18 // dtv_control = ctrl - // [208] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx - stx.z dtv_control + // [208] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuxx=vbuz1 + ldx.z ctrl // *DTV_CONTROL = ctrl - // [209] *((const byte*) DTV_CONTROL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx - stx DTV_CONTROL + // [209] *((const byte*) DTV_CONTROL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + txa + sta DTV_CONTROL // *BORDERCOL = ctrl - // [210] *((const byte*) BORDERCOL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx - stx BORDERCOL + // [210] *((const byte*) BORDERCOL) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + txa + sta BORDERCOL jmp __b1 } // keyboard_key_pressed @@ -26899,7 +26864,7 @@ mode_ctrl: { // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed // keyboard_key_pressed(byte register(Y) key) keyboard_key_pressed: { - .label colidx = $b + .label colidx = $13 // colidx = key&7 // [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte) 7 -- vbuz1=vbuyy_band_vbuc1 tya @@ -26986,16 +26951,16 @@ mode_8bpppixelcell: { // 8BPP Pixel Cell Charset (contains 256 64 byte chars) .label PLANEB = $4000 .label CHARGEN = $d000 - .label __3 = $c + .label __3 = $a // Screen Chars for Plane A (screen) - 16x16 repeating - .label gfxa = 7 - .label ay = 4 - .label bits = 3 - .label chargen = 9 - .label gfxb = 5 - .label col = $d - .label cr = $13 - .label ch = $e + .label gfxa = 6 + .label ay = 2 + .label bits = $11 + .label chargen = 8 + .label gfxb = 4 + .label col = $13 + .label cr = $c + .label ch = 3 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY // [227] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY @@ -27274,9 +27239,8 @@ mode_8bpppixelcell: { // [280] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_8bpppixelcell::@13 to mode_ctrl [phi:mode_8bpppixelcell::@13->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [phi:mode_8bpppixelcell::@13->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR|(const byte) DTV_CHUNKY [phi:mode_8bpppixelcell::@13->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY jsr mode_ctrl // mode_8bpppixelcell::@return // } @@ -27295,13 +27259,13 @@ mode_sixsfred: { .label PLANEB = $6000 .label COLORS = $8000 // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = $c // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = $11 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 + .label gfxb = 8 .label by = $13 // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR // [282] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 @@ -27561,9 +27525,8 @@ mode_sixsfred: { // [333] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_sixsfred::@12 to mode_ctrl [phi:mode_sixsfred::@12->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_sixsfred::@12->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_sixsfred::@12->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl // mode_sixsfred::@return // } @@ -27585,17 +27548,17 @@ mode_twoplanebitmap: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $c + .label __3 = $a // Color for bits 11 // Colors for bits 01 / 10 - .label col = 7 - .label cy = 3 + .label col = 6 + .label cy = 2 // Graphics for Plane A - horizontal stripes - .label gfxa = 9 - .label ay = $d + .label gfxa = 8 + .label ay = 3 // Graphics for Plane B - vertical stripes - .label gfxb = 5 - .label by = 4 + .label gfxb = 4 + .label by = $c // *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR // [335] *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR @@ -27878,9 +27841,8 @@ mode_twoplanebitmap: { // [391] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_twoplanebitmap::@15 to mode_ctrl [phi:mode_twoplanebitmap::@15->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_twoplanebitmap::@15->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR|DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR|(const byte) DTV_LINEAR [phi:mode_twoplanebitmap::@15->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR|DTV_LINEAR jsr mode_ctrl // mode_twoplanebitmap::@return // } @@ -27912,16 +27874,16 @@ mode_sixsfred2: { .label PLANEA = $4000 .label PLANEB = $6000 .label COLORS = $8000 - .label __3 = $d + .label __3 = $b // Colors for high 4 bits of 8bpp - .label col = 5 - .label cy = 4 + .label col = 4 + .label cy = 2 // Graphics for Plane A () - horizontal stripes every 2 pixels - .label gfxa = 7 - .label ay = $e + .label gfxa = 6 + .label ay = 3 // Graphics for Plane B - vertical stripes every 2 pixels - .label gfxb = 9 - .label by = $13 + .label gfxb = 8 + .label by = $c // *DTV_CONTROL = DTV_LINEAR // [395] *((const byte*) DTV_CONTROL) ← (const byte) DTV_LINEAR -- _deref_pbuc1=vbuc2 lda #DTV_LINEAR @@ -28190,9 +28152,8 @@ mode_sixsfred2: { // [448] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_sixsfred2::@12 to mode_ctrl [phi:mode_sixsfred2::@12->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_LINEAR [phi:mode_sixsfred2::@12->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_LINEAR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_LINEAR [phi:mode_sixsfred2::@12->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_LINEAR jsr mode_ctrl // mode_sixsfred2::@return // } @@ -28218,11 +28179,11 @@ mode_hicolmcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $d + .label __3 = $b // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $e + .label col = 6 + .label ch = 8 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [450] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -28391,9 +28352,8 @@ mode_hicolmcchar: { // [482] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl // mode_hicolmcchar::@return // } @@ -28417,11 +28377,11 @@ mode_hicolecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = $13 + .label col = 6 + .label ch = 8 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [484] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -28594,9 +28554,8 @@ mode_hicolecmchar: { // [517] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl // mode_hicolecmchar::@return // } @@ -28616,11 +28575,11 @@ mode_hicolstdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $8400 - .label __3 = $e + .label __3 = $c // Char Colors and screen chars - .label col = 7 - .label ch = 9 - .label cy = 3 + .label col = 6 + .label ch = 8 + .label cy = $13 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [519] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -28780,9 +28739,8 @@ mode_hicolstdchar: { // [549] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #DTV_HIGHCOLOR - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (const byte) DTV_HIGHCOLOR [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #DTV_HIGHCOLOR jsr mode_ctrl // mode_hicolstdchar::@return // } @@ -28801,11 +28759,11 @@ mode_stdbitmap: { .label SCREEN = $4000 .label BITMAP = $6000 .const lines_cnt = 9 - .label col2 = $13 + .label col2 = $11 // Bitmap Colors - .label ch = 5 - .label cy = 3 - .label l = $15 + .label ch = 4 + .label cy = $13 + .label l = $c // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)BITMAP/$10000) // [551] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -28968,9 +28926,8 @@ mode_stdbitmap: { // [584] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_stdbitmap::@9 to mode_ctrl [phi:mode_stdbitmap::@9->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdbitmap::@9->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdbitmap::@9->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl // mode_stdbitmap::@return // } @@ -28983,11 +28940,11 @@ mode_stdbitmap: { ldy.z l lda lines_x,y sta.z bitmap_line.x0 - // [587] (byte) bitmap_line::x1#0 ← *((const byte*) mode_stdbitmap::lines_x+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 - ldx lines_x+1,y - // [588] (byte) bitmap_line::y0#0 ← *((const byte*) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 - lda lines_y,y - sta.z bitmap_line.y0 + // [587] (byte) bitmap_line::x1#0 ← *((const byte*) mode_stdbitmap::lines_x+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + lda lines_x+1,y + sta.z bitmap_line.x1 + // [588] (byte) bitmap_line::y0#0 ← *((const byte*) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#2) -- vbuxx=pbuc1_derefidx_vbuz1 + ldx lines_y,y // [589] (byte) bitmap_line::y1#0 ← *((const byte*) mode_stdbitmap::lines_y+(byte) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y+1,y sta.z bitmap_line.y1 @@ -29005,35 +28962,31 @@ mode_stdbitmap: { } // bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zp($13) x0, byte register(X) x1, byte zp($14) y0, byte zp($c) y1) +// bitmap_line(byte zp($11) x0, byte zp($12) x1, byte register(X) y0, byte zp($a) y1) bitmap_line: { - .label xd = $e - .label x0 = $13 - .label y0 = $14 - .label y1 = $c + .label xd = $b + .label x0 = $11 + .label x1 = $12 + .label y1 = $a // if(x0>1 // [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z yd @@ -29279,10 +29233,9 @@ bitmap_line_xdyi: { // bitmap_line_xdyi::@1 __b1: // bitmap_plot(x,y) - // [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 - ldx.z x - // [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 // [659] call bitmap_plot // [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] // [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy @@ -29305,8 +29258,8 @@ bitmap_line_xdyi: { bcs __b2 // bitmap_line_xdyi::@3 // y++; - // [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 - inc.z y + // [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuxx=_inc_vbuxx + inx // e = e - xd // [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -29319,12 +29272,13 @@ bitmap_line_xdyi: { // bitmap_line_xdyi::@2 __b2: // x1+1 - // [666] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx + // [666] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - // [667] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [667] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1 // bitmap_line_xdyi::@return // } @@ -29332,22 +29286,22 @@ bitmap_line_xdyi: { rts } // bitmap_plot -// bitmap_plot(byte register(X) x, byte register(Y) y) +// bitmap_plot(byte register(Y) x, byte register(X) y) bitmap_plot: { - .label plotter_x = $f - .label plotter_y = $11 - .label plotter = $f + .label plotter_x = $d + .label plotter_y = $f + .label plotter = $d // plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] } - // [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx - lda bitmap_plot_xhi,x + // [670] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + lda bitmap_plot_xhi,y sta.z plotter_x+1 - lda bitmap_plot_xlo,x + lda bitmap_plot_xlo,y sta.z plotter_x // plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy - lda bitmap_plot_yhi,y + // [671] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x sta.z plotter_y+1 - lda bitmap_plot_ylo,y + lda bitmap_plot_ylo,x sta.z plotter_y // plotter_x+plotter_y // [672] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 @@ -29359,8 +29313,8 @@ bitmap_plot: { adc.z plotter_y+1 sta.z plotter+1 // *plotter | bitmap_plot_bit[x] - // [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx - lda bitmap_plot_bit,x + // [673] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy + lda bitmap_plot_bit,y ldy #0 ora (plotter),y // *plotter = *plotter | bitmap_plot_bit[x] @@ -29372,13 +29326,14 @@ bitmap_plot: { rts } // bitmap_line_ydxi -// bitmap_line_ydxi(byte zp(4) y, byte register(X) x, byte zp($c) y1, byte zp($d) yd, byte zp($e) xd) +// bitmap_line_ydxi(byte zp(3) y, byte zp($12) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxi: { - .label y = 4 - .label y1 = $c - .label yd = $d - .label xd = $e - .label e = $b + .label y = 3 + .label x = $12 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // e = xd>>1 // [677] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd @@ -29391,9 +29346,10 @@ bitmap_line_ydxi: { // bitmap_line_ydxi::@1 __b1: // bitmap_plot(x,y) - // [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - // [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 - ldy.z y + // [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuyy=vbuz1 + ldy.z x + // [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuxx=vbuz1 + ldx.z y // [681] call bitmap_plot // [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] // [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy @@ -29416,8 +29372,8 @@ bitmap_line_ydxi: { bcs __b2 // bitmap_line_ydxi::@3 // x++; - // [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx - inx + // [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + inc.z x // e = e - yd // [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -29430,13 +29386,12 @@ bitmap_line_ydxi: { // bitmap_line_ydxi::@2 __b2: // y1+1 - // [688] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 + // [688] (byte~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx // while (y!=(y1+1)) - // [689] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [689] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1 // bitmap_line_ydxi::@return // } @@ -29444,14 +29399,13 @@ bitmap_line_ydxi: { rts } // bitmap_line_xdyd -// bitmap_line_xdyd(byte zp(4) x, byte zp($14) y, byte zp($13) x1, byte zp($e) xd, byte zp($b) yd) +// bitmap_line_xdyd(byte zp(2) x, byte register(X) y, byte zp($11) x1, byte zp($b) xd, byte zp($13) yd) bitmap_line_xdyd: { - .label x = 4 - .label y = $14 - .label x1 = $13 - .label xd = $e - .label yd = $b - .label e = $d + .label x = 2 + .label x1 = $11 + .label xd = $b + .label yd = $13 + .label e = 3 // e = yd>>1 // [692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z yd @@ -29464,10 +29418,9 @@ bitmap_line_xdyd: { // bitmap_line_xdyd::@1 __b1: // bitmap_plot(x,y) - // [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 - ldx.z x - // [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 - ldy.z y + // [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 // [696] call bitmap_plot // [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] // [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy @@ -29490,8 +29443,8 @@ bitmap_line_xdyd: { bcs __b2 // bitmap_line_xdyd::@3 // y--; - // [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 - dec.z y + // [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuxx=_dec_vbuxx + dex // e = e - xd // [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -29504,12 +29457,13 @@ bitmap_line_xdyd: { // bitmap_line_xdyd::@2 __b2: // x1+1 - // [703] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 - ldx.z x1 - inx + // [703] (byte~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 + lda.z x1 + clc + adc #1 // while (x!=(x1+1)) - // [704] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 - cpx.z x + // [704] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuaa_then_la1 + cmp.z x bne __b1 // bitmap_line_xdyd::@return // } @@ -29517,13 +29471,14 @@ bitmap_line_xdyd: { rts } // bitmap_line_ydxd -// bitmap_line_ydxd(byte zp($d) y, byte register(X) x, byte zp($14) y1, byte zp(4) yd, byte zp($e) xd) +// bitmap_line_ydxd(byte zp(3) y, byte zp($11) x, byte zp($a) y1, byte zp(2) yd, byte zp($b) xd) bitmap_line_ydxd: { - .label y = $d - .label y1 = $14 - .label yd = 4 - .label xd = $e - .label e = $b + .label y = 3 + .label x = $11 + .label y1 = $a + .label yd = 2 + .label xd = $b + .label e = $13 // e = xd>>1 // [707] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd @@ -29536,9 +29491,10 @@ bitmap_line_ydxd: { // bitmap_line_ydxd::@1 __b1: // bitmap_plot(x,y) - // [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - // [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 - ldy.z y + // [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuyy=vbuz1 + ldy.z x + // [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuxx=vbuz1 + ldx.z y // [711] call bitmap_plot // [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] // [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy @@ -29561,8 +29517,8 @@ bitmap_line_ydxd: { bcs __b2 // bitmap_line_ydxd::@3 // x--; - // [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx - dex + // [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + dec.z x // e = e - yd // [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda.z e @@ -29575,13 +29531,12 @@ bitmap_line_ydxd: { // bitmap_line_ydxd::@2 __b2: // y1+1 - // [718] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuaa=vbuz1_plus_1 - lda.z y1 - clc - adc #1 + // [718] (byte~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte) 1 -- vbuxx=vbuz1_plus_1 + ldx.z y1 + inx // while (y!=(y1+1)) - // [719] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 - cmp.z y + // [719] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuxx_then_la1 + cpx.z y bne __b1 // bitmap_line_ydxd::@return // } @@ -29591,8 +29546,8 @@ bitmap_line_ydxd: { // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { - .label bitmap = 5 - .label y = $e + .label bitmap = 4 + .label y = $b // (byte*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] } // [721] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo @@ -29652,8 +29607,8 @@ bitmap_clear: { // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { - .label __10 = $14 - .label yoffs = 5 + .label __10 = $12 + .label yoffs = 4 // [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [733] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 @@ -29782,11 +29737,11 @@ mode_mcchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $13 + .label __5 = $11 // Char Colors and screen chars - .label col = 5 - .label ch = $f - .label cy = $15 + .label col = 4 + .label ch = $d + .label cy = $c // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [757] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -29962,9 +29917,8 @@ mode_mcchar: { // [791] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl // mode_mcchar::@return // } @@ -29988,11 +29942,11 @@ mode_ecmchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $14 + .label __5 = $12 // Char Colors and screen chars - .label col = $f - .label ch = 7 - .label cy = $13 + .label col = $d + .label ch = 6 + .label cy = $11 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [793] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -30171,9 +30125,8 @@ mode_ecmchar: { // [828] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl // mode_ecmchar::@return // } @@ -30193,11 +30146,11 @@ mode_stdchar: { .label CHARSET = $9000 // Charset ROM .label COLORS = $d800 - .label __5 = $15 + .label __5 = $13 // Char Colors and screen chars - .label col = 7 - .label ch = $f - .label cy = $14 + .label col = 6 + .label ch = $d + .label cy = $12 // *DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000) // [830] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Graphics Bank @@ -30364,9 +30317,8 @@ mode_stdchar: { // [862] call mode_ctrl // Leave control to the user until exit // [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] - // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 - lda #0 - sta.z dtv_control + // [155] phi (byte) dtv_control#144 = (byte) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuxx=vbuc1 + ldx #0 jsr mode_ctrl // mode_stdchar::@return // } @@ -30376,9 +30328,9 @@ mode_stdchar: { // print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. -// print_str_lines(byte* zp($f) str) +// print_str_lines(byte* zp($d) str) print_str_lines: { - .label str = $f + .label str = $d // [865] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] // [865] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 lda #memset::@1] // [888] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda # (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:13 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [16] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:13 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [20] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [9] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [10] (dword~) main::$1 ← (dword) clock::return#2 [ main::$1 ] ( main:2 [ main::$1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [11] (dword) main::cyclecount#0 ← (dword~) main::$1 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [12] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [14] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:13 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [16] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:13 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [23] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [24] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:13::print_word_at:17 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [28] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [30] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [24] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:13::print_word_at:17 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [28] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [30] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] -Statement [32] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [33] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [32] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [33] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ print_byte_at::$2 ] -Statement [38] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:31 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:31 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:31 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:31 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:35 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:35 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:35 [ print_dword_at::dw#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:35 [ ] ) always clobbers reg byte a reg byte y +Statement [38] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:31 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:31 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:31 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:31 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:35 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:35 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:35 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:35 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [40] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:8 [ clock::return#0 ] ) always clobbers reg byte a -Statement [42] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [43] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [44] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [45] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [46] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [9] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [10] (dword~) main::$1 ← (dword) clock::return#2 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [11] (dword) main::cyclecount#0 ← (dword~) main::$1 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [12] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [14] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:13 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [16] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:13 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [20] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [23] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:13::print_word_at:17 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [24] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:13::print_word_at:17 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [28] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [30] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [33] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [38] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:31 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:31 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:31 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:31 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:35 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:35 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:35 [ print_dword_at::dw#0 ] main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:35 [ ] ) always clobbers reg byte a reg byte y -Statement [40] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:8 [ clock::return#0 ] ) always clobbers reg byte a -Statement [42] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [43] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [44] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [45] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a -Statement [46] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:6 [ ] ) always clobbers reg byte a +Statement [40] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [42] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [44] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [45] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [9] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [10] (dword~) main::$1 ← (dword) clock::return#2 [ main::$1 ] ( main:2 [ main::$1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [11] (dword) main::cyclecount#0 ← (dword~) main::$1 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [12] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [14] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:13 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [16] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:13 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [24] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:13::print_word_at:17 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [28] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [30] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [32] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [33] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [38] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:31 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:31 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:31 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:31 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:22::print_char_at:35 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:22::print_char_at:35 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:15::print_byte_at:25::print_char_at:35 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:13::print_word_at:17::print_byte_at:25::print_char_at:35 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [40] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [42] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [44] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [45] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:6 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_word_at::at#2 ] : zp[2]:4 , Potential registers zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] : zp[1]:6 , reg byte x , @@ -1032,22 +1028,22 @@ Potential registers zp[1]:29 [ print_byte_at::$2 ] : zp[1]:29 , reg byte x , reg Potential registers zp[4]:30 [ clock::return#0 ] : zp[4]:30 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[4]:16 [ main::$1 ] 22: zp[4]:20 [ main::cyclecount#0 ] -Uplift Scope [clock] 22: zp[4]:12 [ clock::return#2 ] 4.33: zp[4]:30 [ clock::return#0 ] -Uplift Scope [print_char_at] 12: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplift Scope [print_byte_at] 9.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp[1]:28 [ print_byte_at::$0 ] 2: zp[1]:29 [ print_byte_at::$2 ] -Uplift Scope [print_word_at] 10: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp[2]:4 [ print_word_at::at#2 ] -Uplift Scope [print_dword_at] 5: zp[4]:24 [ print_dword_at::dw#0 ] +Uplift Scope [print_char_at] 1,500,006: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 1,500,006: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [print_byte_at] 200,002: zp[1]:28 [ print_byte_at::$0 ] 100,001: zp[1]:29 [ print_byte_at::$2 ] 76,671.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 64,002.8: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplift Scope [print_word_at] 9,505: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 4,000.4: zp[2]:4 [ print_word_at::at#2 ] +Uplift Scope [print_dword_at] 701: zp[4]:24 [ print_dword_at::dw#0 ] +Uplift Scope [clock] 367.33: zp[4]:30 [ clock::return#0 ] 202: zp[4]:12 [ clock::return#2 ] +Uplift Scope [main] 202: zp[4]:16 [ main::$1 ] 202: zp[4]:20 [ main::cyclecount#0 ] Uplift Scope [clock_start] Uplift Scope [RADIX] Uplift Scope [] -Uplifting [main] best 1746 combination zp[4]:16 [ main::$1 ] zp[4]:20 [ main::cyclecount#0 ] -Uplifting [clock] best 1746 combination zp[4]:12 [ clock::return#2 ] zp[4]:30 [ clock::return#0 ] Uplifting [print_char_at] best 1739 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplifting [print_byte_at] best 1731 combination zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] +Uplifting [print_byte_at] best 1731 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Uplifting [print_word_at] best 1731 combination zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 ] Uplifting [print_dword_at] best 1731 combination zp[4]:24 [ print_dword_at::dw#0 ] +Uplifting [clock] best 1731 combination zp[4]:30 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ] +Uplifting [main] best 1731 combination zp[4]:16 [ main::$1 ] zp[4]:20 [ main::cyclecount#0 ] Uplifting [clock_start] best 1731 combination Uplifting [RADIX] best 1731 combination Uplifting [] best 1731 combination @@ -1428,56 +1424,56 @@ FINAL SYMBOL TABLE (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:9 4.333333333333333 -(dword) clock::return#2 return zp[4]:9 22.0 +(dword) clock::return#0 return zp[4]:9 367.33333333333337 +(dword) clock::return#2 return zp[4]:9 202.0 (void()) clock_start() (label) clock_start::@return (void()) main() -(dword~) main::$1 zp[4]:9 22.0 +(dword~) main::$1 zp[4]:9 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:9 22.0 +(dword) main::cyclecount#0 cyclecount zp[4]:9 202.0 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 36667.33333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:6 2.0 -(byte) print_byte_at::b#1 b zp[1]:6 2.0 -(byte) print_byte_at::b#2 b zp[1]:6 1.6 +(byte) print_byte_at::b#0 b zp[1]:6 10001.0 +(byte) print_byte_at::b#1 b zp[1]:6 10001.0 +(byte) print_byte_at::b#2 b zp[1]:6 44000.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:7 4.0 -(byte*) print_char_at::at#1 at zp[2]:7 2.0 -(byte*) print_char_at::at#2 at zp[2]:7 6.0 +(byte*) print_char_at::at#0 at zp[2]:7 200002.0 +(byte*) print_char_at::at#1 at zp[2]:7 100001.0 +(byte*) print_char_at::at#2 at zp[2]:7 1200003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 100001.0 +(byte) print_char_at::ch#1 reg byte x 200002.0 +(byte) print_char_at::ch#2 reg byte x 1200003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:9 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:9 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 4000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 2002.0 +(word) print_word_at::w#1 w zp[2]:2 2002.0 +(word) print_word_at::w#2 w zp[2]:2 5501.0 zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] diff --git a/src/test/ref/cia-timer-cyclecount.sym b/src/test/ref/cia-timer-cyclecount.sym index 886ad4314..5a8b9817b 100644 --- a/src/test/ref/cia-timer-cyclecount.sym +++ b/src/test/ref/cia-timer-cyclecount.sym @@ -15,56 +15,56 @@ (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:9 4.333333333333333 -(dword) clock::return#2 return zp[4]:9 22.0 +(dword) clock::return#0 return zp[4]:9 367.33333333333337 +(dword) clock::return#2 return zp[4]:9 202.0 (void()) clock_start() (label) clock_start::@return (void()) main() -(dword~) main::$1 zp[4]:9 22.0 +(dword~) main::$1 zp[4]:9 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:9 22.0 +(dword) main::cyclecount#0 cyclecount zp[4]:9 202.0 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 36667.33333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:6 2.0 -(byte) print_byte_at::b#1 b zp[1]:6 2.0 -(byte) print_byte_at::b#2 b zp[1]:6 1.6 +(byte) print_byte_at::b#0 b zp[1]:6 10001.0 +(byte) print_byte_at::b#1 b zp[1]:6 10001.0 +(byte) print_byte_at::b#2 b zp[1]:6 44000.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:7 4.0 -(byte*) print_char_at::at#1 at zp[2]:7 2.0 -(byte*) print_char_at::at#2 at zp[2]:7 6.0 +(byte*) print_char_at::at#0 at zp[2]:7 200002.0 +(byte*) print_char_at::at#1 at zp[2]:7 100001.0 +(byte*) print_char_at::at#2 at zp[2]:7 1200003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 100001.0 +(byte) print_char_at::ch#1 reg byte x 200002.0 +(byte) print_char_at::ch#2 reg byte x 1200003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:9 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:9 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 4000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 2002.0 +(word) print_word_at::w#1 w zp[2]:2 2002.0 +(word) print_word_at::w#2 w zp[2]:2 5501.0 zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] diff --git a/src/test/ref/cia-timer-simple.log b/src/test/ref/cia-timer-simple.log index e443c5145..f45b6fe5f 100644 --- a/src/test/ref/cia-timer-simple.log +++ b/src/test/ref/cia-timer-simple.log @@ -334,22 +334,22 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to dword in (unumber~) clock::$0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) Inferred type updated to byte in (unumber~) print_byte_at::$2 ← (byte) print_byte_at::b#3 & (byte) $f -Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 -Alias (byte) print_byte_at::b#0 = (byte~) print_word_at::$0 -Alias (word) print_word_at::w#2 = (word) print_word_at::w#3 -Alias (byte*) print_word_at::at#2 = (byte*) print_word_at::at#3 -Alias (byte) print_byte_at::b#1 = (byte~) print_word_at::$2 -Alias (byte*) print_byte_at::at#1 = (byte*~) print_word_at::$3 -Alias (word) print_word_at::w#0 = (word~) print_dword_at::$0 -Alias (dword) print_dword_at::dw#1 = (dword) print_dword_at::dw#2 -Alias (byte*) print_dword_at::at#1 = (byte*) print_dword_at::at#2 -Alias (word) print_word_at::w#1 = (word~) print_dword_at::$2 -Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 -Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 -Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 -Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 -Alias (dword) clock::return#2 = (dword) clock::return#4 -Alias (dword) print_dword_at::dw#0 = (dword~) main::$1 +Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1 +Alias print_byte_at::b#0 = print_word_at::$0 +Alias print_word_at::w#2 = print_word_at::w#3 +Alias print_word_at::at#2 = print_word_at::at#3 +Alias print_byte_at::b#1 = print_word_at::$2 +Alias print_byte_at::at#1 = print_word_at::$3 +Alias print_word_at::w#0 = print_dword_at::$0 +Alias print_dword_at::dw#1 = print_dword_at::dw#2 +Alias print_dword_at::at#1 = print_dword_at::at#2 +Alias print_word_at::w#1 = print_dword_at::$2 +Alias print_word_at::at#1 = print_dword_at::$3 +Alias print_byte_at::b#2 = print_byte_at::b#3 +Alias print_byte_at::at#2 = print_byte_at::at#3 +Alias print_char_at::at#1 = print_byte_at::$3 +Alias clock::return#2 = clock::return#4 +Alias print_dword_at::dw#0 = main::$1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (dword) print_dword_at::dw#1 (dword) print_dword_at::dw#0 Identical Phi Values (byte*) print_dword_at::at#1 (byte*) print_dword_at::at#0 @@ -541,41 +541,41 @@ clock_start::@return: scope:[clock_start] from clock_start VARIABLE REGISTER WEIGHTS (dword()) clock() (dword) clock::return -(dword) clock::return#0 4.333333333333333 -(dword) clock::return#2 22.0 +(dword) clock::return#0 367.33333333333337 +(dword) clock::return#2 202.0 (void()) clock_start() (void()) main() (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 200002.0 +(byte~) print_byte_at::$2 100001.0 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 4.0 -(byte*) print_byte_at::at#1 4.0 -(byte*) print_byte_at::at#2 1.3333333333333333 +(byte*) print_byte_at::at#0 20002.0 +(byte*) print_byte_at::at#1 20002.0 +(byte*) print_byte_at::at#2 36667.33333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 2.0 -(byte) print_byte_at::b#1 2.0 -(byte) print_byte_at::b#2 1.6 +(byte) print_byte_at::b#0 10001.0 +(byte) print_byte_at::b#1 10001.0 +(byte) print_byte_at::b#2 44000.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 2.0 -(byte*) print_char_at::at#2 6.0 +(byte*) print_char_at::at#0 200002.0 +(byte*) print_char_at::at#1 100001.0 +(byte*) print_char_at::at#2 1200003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 2.0 -(byte) print_char_at::ch#1 4.0 -(byte) print_char_at::ch#2 6.0 +(byte) print_char_at::ch#0 100001.0 +(byte) print_char_at::ch#1 200002.0 +(byte) print_char_at::ch#2 1200003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 5.0 +(dword) print_dword_at::dw#0 701.0 (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (byte*) print_word_at::at -(byte*) print_word_at::at#2 0.8 +(byte*) print_word_at::at#2 4000.4 (word) print_word_at::w -(word) print_word_at::w#0 4.0 -(word) print_word_at::w#1 4.0 -(word) print_word_at::w#2 2.0 +(word) print_word_at::w#0 2002.0 +(word) print_word_at::w#1 2002.0 +(word) print_word_at::w#2 5501.0 Initial phi equivalence classes [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] @@ -917,48 +917,44 @@ clock_start: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [9] (dword) print_dword_at::dw#0 ← (dword) clock::return#2 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [11] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:10 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [13] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:10 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [17] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [18] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [8] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [9] (dword) print_dword_at::dw#0 ← (dword) clock::return#2 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [11] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:10 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [13] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:10 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [18] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [20] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [21] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:10::print_word_at:14 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [25] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [27] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [21] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:10::print_word_at:14 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [25] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [27] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] -Statement [29] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [30] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [29] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [30] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ print_byte_at::$2 ] -Statement [35] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:28 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:28 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:28 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:28 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:32 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:32 [ print_dword_at::dw#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:32 [ ] ) always clobbers reg byte a reg byte y +Statement [35] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:28 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:28 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:28 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:28 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:32 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:32 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:32 [ ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [37] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:7 [ clock::return#0 ] ) always clobbers reg byte a -Statement [39] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [41] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [42] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [43] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [8] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [9] (dword) print_dword_at::dw#0 ← (dword) clock::return#2 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [11] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:10 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [13] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:10 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [17] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [18] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [20] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:10::print_word_at:14 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [21] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:10::print_word_at:14 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [25] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [27] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [29] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [30] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [35] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:28 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:28 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:28 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:28 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:32 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:32 [ print_dword_at::dw#0 ] main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:32 [ ] ) always clobbers reg byte a reg byte y -Statement [37] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:7 [ clock::return#0 ] ) always clobbers reg byte a -Statement [39] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [41] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [42] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a -Statement [43] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:5 [ ] ) always clobbers reg byte a +Statement [37] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:7 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [39] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [41] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [8] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [9] (dword) print_dword_at::dw#0 ← (dword) clock::return#2 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [11] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:10 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [13] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:10 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [18] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:10::print_word_at:14 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [25] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [27] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [29] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [30] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [35] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:28 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:28 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:28 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:28 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:19::print_char_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:19::print_char_at:32 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:12::print_byte_at:22::print_char_at:32 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:10::print_word_at:14::print_byte_at:22::print_char_at:32 [ ] { { print_dword_at::dw#0 = clock::return#2 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [37] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:7 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [39] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [41] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:5 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_word_at::at#2 ] : zp[2]:4 , Potential registers zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] : zp[1]:6 , reg byte x , @@ -972,21 +968,21 @@ Potential registers zp[1]:21 [ print_byte_at::$2 ] : zp[1]:21 , reg byte x , reg Potential registers zp[4]:22 [ clock::return#0 ] : zp[4]:22 , REGISTER UPLIFT SCOPES -Uplift Scope [clock] 22: zp[4]:12 [ clock::return#2 ] 4.33: zp[4]:22 [ clock::return#0 ] -Uplift Scope [print_char_at] 12: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplift Scope [print_byte_at] 9.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp[1]:20 [ print_byte_at::$0 ] 2: zp[1]:21 [ print_byte_at::$2 ] -Uplift Scope [print_word_at] 10: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp[2]:4 [ print_word_at::at#2 ] -Uplift Scope [print_dword_at] 5: zp[4]:16 [ print_dword_at::dw#0 ] +Uplift Scope [print_char_at] 1,500,006: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 1,500,006: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [print_byte_at] 200,002: zp[1]:20 [ print_byte_at::$0 ] 100,001: zp[1]:21 [ print_byte_at::$2 ] 76,671.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 64,002.8: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplift Scope [print_word_at] 9,505: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 4,000.4: zp[2]:4 [ print_word_at::at#2 ] +Uplift Scope [print_dword_at] 701: zp[4]:16 [ print_dword_at::dw#0 ] +Uplift Scope [clock] 367.33: zp[4]:22 [ clock::return#0 ] 202: zp[4]:12 [ clock::return#2 ] Uplift Scope [clock_start] Uplift Scope [RADIX] Uplift Scope [main] Uplift Scope [] -Uplifting [clock] best 1062 combination zp[4]:12 [ clock::return#2 ] zp[4]:22 [ clock::return#0 ] Uplifting [print_char_at] best 1055 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplifting [print_byte_at] best 1047 combination zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] +Uplifting [print_byte_at] best 1047 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Uplifting [print_word_at] best 1047 combination zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 ] Uplifting [print_dword_at] best 1047 combination zp[4]:16 [ print_dword_at::dw#0 ] +Uplifting [clock] best 1047 combination zp[4]:22 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ] Uplifting [clock_start] best 1047 combination Uplifting [RADIX] best 1047 combination Uplifting [main] best 1047 combination @@ -1337,52 +1333,52 @@ FINAL SYMBOL TABLE (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:9 4.333333333333333 -(dword) clock::return#2 return zp[4]:9 22.0 +(dword) clock::return#0 return zp[4]:9 367.33333333333337 +(dword) clock::return#2 return zp[4]:9 202.0 (void()) clock_start() (label) clock_start::@return (void()) main() (label) main::@1 (label) main::@2 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 36667.33333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:6 2.0 -(byte) print_byte_at::b#1 b zp[1]:6 2.0 -(byte) print_byte_at::b#2 b zp[1]:6 1.6 +(byte) print_byte_at::b#0 b zp[1]:6 10001.0 +(byte) print_byte_at::b#1 b zp[1]:6 10001.0 +(byte) print_byte_at::b#2 b zp[1]:6 44000.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:7 4.0 -(byte*) print_char_at::at#1 at zp[2]:7 2.0 -(byte*) print_char_at::at#2 at zp[2]:7 6.0 +(byte*) print_char_at::at#0 at zp[2]:7 200002.0 +(byte*) print_char_at::at#1 at zp[2]:7 100001.0 +(byte*) print_char_at::at#2 at zp[2]:7 1200003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 100001.0 +(byte) print_char_at::ch#1 reg byte x 200002.0 +(byte) print_char_at::ch#2 reg byte x 1200003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:9 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:9 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 4000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 2002.0 +(word) print_word_at::w#1 w zp[2]:2 2002.0 +(word) print_word_at::w#2 w zp[2]:2 5501.0 zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] diff --git a/src/test/ref/cia-timer-simple.sym b/src/test/ref/cia-timer-simple.sym index 9ce6a8665..788b840bd 100644 --- a/src/test/ref/cia-timer-simple.sym +++ b/src/test/ref/cia-timer-simple.sym @@ -14,52 +14,52 @@ (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:9 4.333333333333333 -(dword) clock::return#2 return zp[4]:9 22.0 +(dword) clock::return#0 return zp[4]:9 367.33333333333337 +(dword) clock::return#2 return zp[4]:9 202.0 (void()) clock_start() (label) clock_start::@return (void()) main() (label) main::@1 (label) main::@2 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 20002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 36667.33333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:6 2.0 -(byte) print_byte_at::b#1 b zp[1]:6 2.0 -(byte) print_byte_at::b#2 b zp[1]:6 1.6 +(byte) print_byte_at::b#0 b zp[1]:6 10001.0 +(byte) print_byte_at::b#1 b zp[1]:6 10001.0 +(byte) print_byte_at::b#2 b zp[1]:6 44000.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:7 4.0 -(byte*) print_char_at::at#1 at zp[2]:7 2.0 -(byte*) print_char_at::at#2 at zp[2]:7 6.0 +(byte*) print_char_at::at#0 at zp[2]:7 200002.0 +(byte*) print_char_at::at#1 at zp[2]:7 100001.0 +(byte*) print_char_at::at#2 at zp[2]:7 1200003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 100001.0 +(byte) print_char_at::ch#1 reg byte x 200002.0 +(byte) print_char_at::ch#2 reg byte x 1200003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:9 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:9 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 4000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 2002.0 +(word) print_word_at::w#1 w zp[2]:2 2002.0 +(word) print_word_at::w#2 w zp[2]:2 5501.0 zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] diff --git a/src/test/ref/clobber-a-problem.log b/src/test/ref/clobber-a-problem.log index e4b1ac915..00688628f 100644 --- a/src/test/ref/clobber-a-problem.log +++ b/src/test/ref/clobber-a-problem.log @@ -97,7 +97,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) irq::$0 ← (byte) irq::raster_next#0 & (byte) 7 Inversing boolean not [8] (bool~) irq::$2 ← (byte~) irq::$0 != (byte) 0 from [7] (bool~) irq::$1 ← (byte~) irq::$0 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) irq::raster_next#0 = (byte) irq::raster_next#3 +Alias irq::raster_next#0 = irq::raster_next#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) irq::$2 [8] if((byte~) irq::$0!=(byte) 0) goto irq::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -291,12 +291,12 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) irq_raster_next ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BORDERCOL) ← (const byte) DARK_GREY [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [8] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [15] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [16] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [1] (byte) irq_raster_next ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BORDERCOL) ← (const byte) DARK_GREY [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [8] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [15] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [16] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[1]:2 [ irq::raster_next#2 irq::raster_next#0 irq::raster_next#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ irq_raster_next ] : zp[1]:3 , Potential registers zp[1]:4 [ irq::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , diff --git a/src/test/ref/coalesce-assignment.log b/src/test/ref/coalesce-assignment.log index d1d92d942..0c9f21041 100644 --- a/src/test/ref/coalesce-assignment.log +++ b/src/test/ref/coalesce-assignment.log @@ -94,12 +94,12 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::a#2 = (byte) main::c#0 (byte) main::a#3 -Alias (byte) main::d#0 = (byte) main::b#2 -Alias (byte) main::e#0 = (byte~) main::$0 -Alias (byte) main::f#0 = (byte~) main::$1 -Alias (byte) main::g#0 = (byte~) main::$2 -Alias (byte) main::idx#1 = (byte) main::idx#4 +Alias main::a#2 = main::c#0 main::a#3 +Alias main::d#0 = main::b#2 +Alias main::e#0 = main::$0 +Alias main::f#0 = main::$1 +Alias main::g#0 = main::$2 +Alias main::idx#1 = main::idx#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::a#2 (byte) main::a#4 Successful SSA optimization Pass2IdenticalPhiElimination @@ -197,23 +197,23 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#1 16.5 -(byte) main::a#4 24.888888888888886 +(byte) main::a#1 151.5 +(byte) main::a#4 244.8888888888889 (byte) main::b -(byte) main::b#1 151.5 +(byte) main::b#1 1501.5 (byte) main::c (byte) main::d -(byte) main::d#0 67.33333333333333 +(byte) main::d#0 667.3333333333334 (byte) main::e -(byte) main::e#0 101.0 +(byte) main::e#0 1001.0 (byte) main::f -(byte) main::f#0 202.0 +(byte) main::f#0 2002.0 (byte) main::g -(byte) main::g#0 202.0 +(byte) main::g#0 2002.0 (byte) main::idx -(byte) main::idx#1 42.599999999999994 -(byte) main::idx#2 62.8 -(byte) main::idx#3 22.0 +(byte) main::idx#1 420.59999999999997 +(byte) main::idx#2 620.8 +(byte) main::idx#3 202.0 Initial phi equivalence classes [ main::a#4 main::a#1 ] @@ -346,16 +346,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ) always clobbers reg byte a +Statement [7] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#4 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::d#0 main::b#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] -Statement [8] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ) always clobbers reg byte a +Statement [8] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#0 ] -Statement [9] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ) always clobbers reg byte a -Statement [7] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ) always clobbers reg byte a -Statement [8] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ) always clobbers reg byte a -Statement [9] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ) always clobbers reg byte a +Statement [9] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a +Statement [7] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] { } ) always clobbers reg byte a +Statement [8] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] { } ) always clobbers reg byte a +Statement [9] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( main:2 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::a#4 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::d#0 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -364,7 +364,7 @@ Potential registers zp[1]:6 [ main::f#0 ] : zp[1]:6 , reg byte a , reg byte x , Potential registers zp[1]:7 [ main::g#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 218.83: zp[1]:3 [ main::d#0 main::b#1 ] 202: zp[1]:6 [ main::f#0 ] 202: zp[1]:7 [ main::g#0 ] 127.4: zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] 101: zp[1]:5 [ main::e#0 ] 41.39: zp[1]:2 [ main::a#4 main::a#1 ] +Uplift Scope [main] 2,168.83: zp[1]:3 [ main::d#0 main::b#1 ] 2,002: zp[1]:6 [ main::f#0 ] 2,002: zp[1]:7 [ main::g#0 ] 1,243.4: zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] 1,001: zp[1]:5 [ main::e#0 ] 396.39: zp[1]:2 [ main::a#4 main::a#1 ] Uplift Scope [] Uplifting [main] best 4953 combination reg byte y [ main::d#0 main::b#1 ] reg byte a [ main::f#0 ] reg byte a [ main::g#0 ] reg byte x [ main::idx#2 main::idx#3 main::idx#1 ] zp[1]:5 [ main::e#0 ] zp[1]:2 [ main::a#4 main::a#1 ] @@ -515,23 +515,23 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#4 a zp[1]:2 24.888888888888886 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#4 a zp[1]:2 244.8888888888889 (byte) main::b -(byte) main::b#1 reg byte y 151.5 +(byte) main::b#1 reg byte y 1501.5 (byte) main::c (byte) main::d -(byte) main::d#0 reg byte y 67.33333333333333 +(byte) main::d#0 reg byte y 667.3333333333334 (byte) main::e -(byte) main::e#0 e zp[1]:3 101.0 +(byte) main::e#0 e zp[1]:3 1001.0 (byte) main::f -(byte) main::f#0 reg byte a 202.0 +(byte) main::f#0 reg byte a 2002.0 (byte) main::g -(byte) main::g#0 reg byte a 202.0 +(byte) main::g#0 reg byte a 2002.0 (byte) main::idx -(byte) main::idx#1 reg byte x 42.599999999999994 -(byte) main::idx#2 reg byte x 62.8 -(byte) main::idx#3 reg byte x 22.0 +(byte) main::idx#1 reg byte x 420.59999999999997 +(byte) main::idx#2 reg byte x 620.8 +(byte) main::idx#3 reg byte x 202.0 zp[1]:2 [ main::a#4 main::a#1 ] reg byte y [ main::d#0 main::b#1 ] diff --git a/src/test/ref/coalesce-assignment.sym b/src/test/ref/coalesce-assignment.sym index 5c5570e90..5e2d7ea4f 100644 --- a/src/test/ref/coalesce-assignment.sym +++ b/src/test/ref/coalesce-assignment.sym @@ -8,23 +8,23 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#4 a zp[1]:2 24.888888888888886 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#4 a zp[1]:2 244.8888888888889 (byte) main::b -(byte) main::b#1 reg byte y 151.5 +(byte) main::b#1 reg byte y 1501.5 (byte) main::c (byte) main::d -(byte) main::d#0 reg byte y 67.33333333333333 +(byte) main::d#0 reg byte y 667.3333333333334 (byte) main::e -(byte) main::e#0 e zp[1]:3 101.0 +(byte) main::e#0 e zp[1]:3 1001.0 (byte) main::f -(byte) main::f#0 reg byte a 202.0 +(byte) main::f#0 reg byte a 2002.0 (byte) main::g -(byte) main::g#0 reg byte a 202.0 +(byte) main::g#0 reg byte a 2002.0 (byte) main::idx -(byte) main::idx#1 reg byte x 42.599999999999994 -(byte) main::idx#2 reg byte x 62.8 -(byte) main::idx#3 reg byte x 22.0 +(byte) main::idx#1 reg byte x 420.59999999999997 +(byte) main::idx#2 reg byte x 620.8 +(byte) main::idx#3 reg byte x 202.0 zp[1]:2 [ main::a#4 main::a#1 ] reg byte y [ main::d#0 main::b#1 ] diff --git a/src/test/ref/code-after-return-1.log b/src/test/ref/code-after-return-1.log index 015cc896f..7dd923a84 100644 --- a/src/test/ref/code-after-return-1.log +++ b/src/test/ref/code-after-return-1.log @@ -83,11 +83,11 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) b#1 = (byte) b#7 -Alias (byte) b#2 = (byte) b#8 -Alias (byte) b#10 = (byte) b#3 (byte) b#4 -Alias (byte) b#0 = (byte) b#12 -Alias (byte) b#11 = (byte) b#5 +Alias b#1 = b#7 +Alias b#2 = b#8 +Alias b#10 = b#3 b#4 +Alias b#0 = b#12 +Alias b#11 = b#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) b#6 (byte) b#0 Identical Phi Values (byte) b#2 (byte) b#10 @@ -189,7 +189,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) b#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) b#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/code-after-return.log b/src/test/ref/code-after-return.log index d64f8bb87..42ecdbd9e 100644 --- a/src/test/ref/code-after-return.log +++ b/src/test/ref/code-after-return.log @@ -122,7 +122,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/comma-decl-for.log b/src/test/ref/comma-decl-for.log index aea73d210..c6c4d5f57 100644 --- a/src/test/ref/comma-decl-for.log +++ b/src/test/ref/comma-decl-for.log @@ -64,8 +64,8 @@ Simplifying constant integer cast $a Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::j#2 = main::j#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -128,11 +128,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 101.0 +(byte) main::i#2 134.66666666666666 (byte) main::j -(byte) main::j#1 22.0 -(byte) main::j#2 8.25 +(byte) main::j#1 202.0 +(byte) main::j#2 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -216,7 +216,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[1]:3 [ main::j#2 main::j#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 277.75: zp[1]:3 [ main::j#2 main::j#1 ] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 303 combination reg byte a [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -315,11 +315,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 8.25 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/comma-decl-for.sym b/src/test/ref/comma-decl-for.sym index 517a885a5..07233e94c 100644 --- a/src/test/ref/comma-decl-for.sym +++ b/src/test/ref/comma-decl-for.sym @@ -7,11 +7,11 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 8.25 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/comma-decl.log b/src/test/ref/comma-decl.log index 9e627c990..7107570df 100644 --- a/src/test/ref/comma-decl.log +++ b/src/test/ref/comma-decl.log @@ -63,8 +63,8 @@ Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (const byte) main::b + (byte) 1 Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::c#0 + (byte) 1 -Alias (byte) main::c#0 = (byte~) main::$0 -Alias (byte) main::d#0 = (byte~) main::$1 +Alias main::c#0 = main::$0 +Alias main::d#0 = main::$1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte) main::c#0 ← (const byte) main::b + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -170,9 +170,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::b [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::c#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::d#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::b [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::c#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::d#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/comma-expr-1.log b/src/test/ref/comma-expr-1.log index 364747956..6957539d6 100644 --- a/src/test/ref/comma-expr-1.log +++ b/src/test/ref/comma-expr-1.log @@ -45,7 +45,7 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (const byte) main::b + (byte) 1 -Alias (byte) main::c#0 = (byte~) main::$0 +Alias main::c#0 = main::$0 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte) main::c#0 ← (const byte) main::b + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -134,7 +134,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::c#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::c#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/comma-expr-2.log b/src/test/ref/comma-expr-2.log index 2ddeb1585..029a71620 100644 --- a/src/test/ref/comma-expr-2.log +++ b/src/test/ref/comma-expr-2.log @@ -130,7 +130,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::c#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::c#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/comma-expr-for.log b/src/test/ref/comma-expr-for.log index 55bca450d..7d287baa0 100644 --- a/src/test/ref/comma-expr-for.log +++ b/src/test/ref/comma-expr-for.log @@ -64,8 +64,8 @@ Simplifying constant integer cast $a Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::j#2 = main::j#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [4] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -128,11 +128,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 101.0 +(byte) main::i#2 134.66666666666666 (byte) main::j -(byte) main::j#1 22.0 -(byte) main::j#2 8.25 +(byte) main::j#1 202.0 +(byte) main::j#2 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -216,7 +216,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[1]:3 [ main::j#2 main::j#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 277.75: zp[1]:3 [ main::j#2 main::j#1 ] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 303 combination reg byte a [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -315,11 +315,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 8.25 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/comma-expr-for.sym b/src/test/ref/comma-expr-for.sym index 517a885a5..07233e94c 100644 --- a/src/test/ref/comma-expr-for.sym +++ b/src/test/ref/comma-expr-for.sym @@ -7,11 +7,11 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 8.25 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/comparison-rewriting-pointer.log b/src/test/ref/comparison-rewriting-pointer.log index 1d4687146..ba4fe0851 100644 --- a/src/test/ref/comparison-rewriting-pointer.log +++ b/src/test/ref/comparison-rewriting-pointer.log @@ -93,8 +93,8 @@ Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::sc#2 = (byte*) main::sc#3 -Alias (byte*) main::cc#2 = (byte*) main::cc#3 +Alias main::sc#2 = main::sc#3 +Alias main::cc#2 = main::cc#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte*) main::sc#2<=(const byte*) main::screen+(word) $3e7) goto main::@2 Simple Condition (bool~) main::$1 [9] if((byte*) main::cc#2>(const byte*) main::cols-(byte) 1) goto main::@8 @@ -168,11 +168,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::cc -(byte*) main::cc#1 22.0 -(byte*) main::cc#2 14.666666666666666 +(byte*) main::cc#1 202.0 +(byte*) main::cc#2 134.66666666666666 (byte*) main::sc -(byte*) main::sc#1 22.0 -(byte*) main::sc#2 14.666666666666666 +(byte*) main::sc#1 202.0 +(byte*) main::sc#2 134.66666666666666 Initial phi equivalence classes [ main::sc#2 main::sc#1 ] @@ -292,16 +292,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::sc#2<=(const byte*) main::screen+(word) $3e7) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [8] if((byte*) main::cc#2>(const byte*) main::cols-(byte) 1) goto main::@4 [ main::cc#2 ] ( main:2 [ main::cc#2 ] ) always clobbers reg byte a -Statement [10] *((byte*) main::cc#2) ← (byte) 2 [ main::cc#2 ] ( main:2 [ main::cc#2 ] ) always clobbers reg byte a reg byte y -Statement [11] (byte*) main::cc#1 ← -- (byte*) main::cc#2 [ main::cc#1 ] ( main:2 [ main::cc#1 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::sc#2) ← (byte) 'a' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [6] if((byte*) main::sc#2<=(const byte*) main::screen+(word) $3e7) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [8] if((byte*) main::cc#2>(const byte*) main::cols-(byte) 1) goto main::@4 [ main::cc#2 ] ( main:2 [ main::cc#2 ] { } ) always clobbers reg byte a +Statement [10] *((byte*) main::cc#2) ← (byte) 2 [ main::cc#2 ] ( main:2 [ main::cc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [11] (byte*) main::cc#1 ← -- (byte*) main::cc#2 [ main::cc#1 ] ( main:2 [ main::cc#1 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::sc#2) ← (byte) 'a' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::cc#2 main::cc#1 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 36.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 36.67: zp[2]:4 [ main::cc#2 main::cc#1 ] +Uplift Scope [main] 336.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 336.67: zp[2]:4 [ main::cc#2 main::cc#1 ] Uplift Scope [] Uplifting [main] best 1198 combination zp[2]:2 [ main::sc#2 main::sc#1 ] zp[2]:4 [ main::cc#2 main::cc#1 ] @@ -450,12 +450,12 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte*) main::cc -(byte*) main::cc#1 cc zp[2]:4 22.0 -(byte*) main::cc#2 cc zp[2]:4 14.666666666666666 +(byte*) main::cc#1 cc zp[2]:4 202.0 +(byte*) main::cc#2 cc zp[2]:4 134.66666666666666 (const byte*) main::cols = (byte*) 55296 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/comparison-rewriting-pointer.sym b/src/test/ref/comparison-rewriting-pointer.sym index 3db0d7f9f..144a17f85 100644 --- a/src/test/ref/comparison-rewriting-pointer.sym +++ b/src/test/ref/comparison-rewriting-pointer.sym @@ -8,12 +8,12 @@ (label) main::@4 (label) main::@return (byte*) main::cc -(byte*) main::cc#1 cc zp[2]:4 22.0 -(byte*) main::cc#2 cc zp[2]:4 14.666666666666666 +(byte*) main::cc#1 cc zp[2]:4 202.0 +(byte*) main::cc#2 cc zp[2]:4 134.66666666666666 (const byte*) main::cols = (byte*) 55296 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/comparison-rewriting.log b/src/test/ref/comparison-rewriting.log index a6c2c0c59..230ee45a2 100644 --- a/src/test/ref/comparison-rewriting.log +++ b/src/test/ref/comparison-rewriting.log @@ -257,21 +257,21 @@ Inversing boolean not [33] (bool~) main::$9 ← (byte) main::i1#5 != (byte) 5 fr Inversing boolean not [39] (bool~) main::$11 ← (byte) main::i1#6 < (byte) 5 from [38] (bool~) main::$10 ← (byte) main::i1#6 >= (byte) 5 Inversing boolean not [45] (bool~) main::$13 ← (byte) main::i1#7 <= (byte) 5 from [44] (bool~) main::$12 ← (byte) main::i1#7 > (byte) 5 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte*) main::screen#2 = (byte*) main::screen#8 -Alias (byte) main::i1#2 = (byte) main::i1#3 (byte) main::i1#9 -Alias (byte*) main::screen#1 = (byte*) main::screen#3 -Alias (byte*) main::screen#4 = (byte*) main::screen#9 -Alias (byte) main::i1#10 = (byte) main::i1#4 -Alias (byte*) main::screen#10 = (byte*) main::screen#5 -Alias (byte) main::i1#11 = (byte) main::i1#5 -Alias (byte*) main::screen#11 = (byte*) main::screen#6 -Alias (byte) main::i1#12 = (byte) main::i1#6 -Alias (byte*) main::screen#12 = (byte*) main::screen#7 -Alias (byte) main::i1#13 = (byte) main::i1#7 +Alias main::i#2 = main::i#3 +Alias main::screen#2 = main::screen#8 +Alias main::i1#2 = main::i1#3 main::i1#9 +Alias main::screen#1 = main::screen#3 +Alias main::screen#4 = main::screen#9 +Alias main::i1#10 = main::i1#4 +Alias main::screen#10 = main::screen#5 +Alias main::i1#11 = main::i1#5 +Alias main::screen#11 = main::screen#6 +Alias main::i1#12 = main::i1#6 +Alias main::screen#12 = main::screen#7 +Alias main::i1#13 = main::i1#7 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i1#10 = (byte) main::i1#2 (byte) main::i1#11 (byte) main::i1#12 (byte) main::i1#13 (byte) main::i1#8 -Alias (byte*) main::screen#1 = (byte*) main::screen#4 (byte*) main::screen#10 (byte*) main::screen#11 (byte*) main::screen#12 (byte*) main::screen#13 +Alias main::i1#10 = main::i1#2 main::i1#11 main::i1#12 main::i1#13 main::i1#8 +Alias main::screen#1 = main::screen#4 main::screen#10 main::screen#11 main::screen#12 main::screen#13 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [5] if((byte*) main::sc#1!=rangelast(main::SCREEN,main::SCREEN+$3e8)) goto main::@1 Simple Condition (bool~) main::$1 [9] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@4 @@ -442,19 +442,19 @@ main::@3: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$3 22.0 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 22.0 -(byte) main::i1#10 6.6 +(byte) main::i1#1 202.0 +(byte) main::i1#10 60.6 (byte*) main::sc -(byte*) main::sc#1 16.5 -(byte*) main::sc#2 16.5 +(byte*) main::sc#1 151.5 +(byte*) main::sc#2 151.5 (byte*) main::screen -(byte*) main::screen#1 6.285714285714286 -(byte*) main::screen#2 11.0 +(byte*) main::screen#1 57.714285714285715 +(byte*) main::screen#2 101.0 Initial phi equivalence classes [ main::sc#2 main::sc#1 ] @@ -685,33 +685,33 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [8] if((byte*) main::sc#1!=(const byte*) main::SCREEN+(word) $3e8+(byte) 1) goto main::@1 [ main::sc#1 ] ( main:2 [ main::sc#1 ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] if((byte*) main::sc#1!=(const byte*) main::SCREEN+(word) $3e8+(byte) 1) goto main::@1 [ main::sc#1 ] ( main:2 [ main::sc#1 ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [14] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a +Statement [14] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i1#10 main::i1#1 ] -Statement [15] (byte~) main::$3 ← (byte) '0' + (byte) main::i1#10 [ main::i1#10 main::screen#1 main::$3 ] ( main:2 [ main::i1#10 main::screen#1 main::$3 ] ) always clobbers reg byte a -Statement [16] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte y +Statement [15] (byte~) main::$3 ← (byte) '0' + (byte) main::i1#10 [ main::i1#10 main::screen#1 main::$3 ] ( main:2 [ main::i1#10 main::screen#1 main::$3 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::i1#10 main::i1#1 ] -Statement [18] *((byte*) main::screen#1 + (byte) 2) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [20] *((byte*) main::screen#1 + (byte) 5) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [22] *((byte*) main::screen#1 + (byte) 8) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [24] *((byte*) main::screen#1 + (byte) $b) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [26] *((byte*) main::screen#1 + (byte) $e) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [28] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::header + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [8] if((byte*) main::sc#1!=(const byte*) main::SCREEN+(word) $3e8+(byte) 1) goto main::@1 [ main::sc#1 ] ( main:2 [ main::sc#1 ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [14] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$3 ← (byte) '0' + (byte) main::i1#10 [ main::i1#10 main::screen#1 main::$3 ] ( main:2 [ main::i1#10 main::screen#1 main::$3 ] ) always clobbers reg byte a -Statement [16] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte y -Statement [18] *((byte*) main::screen#1 + (byte) 2) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [20] *((byte*) main::screen#1 + (byte) 5) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [22] *((byte*) main::screen#1 + (byte) 8) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [24] *((byte*) main::screen#1 + (byte) $b) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [26] *((byte*) main::screen#1 + (byte) $e) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [28] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::header + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [18] *((byte*) main::screen#1 + (byte) 2) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [20] *((byte*) main::screen#1 + (byte) 5) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [22] *((byte*) main::screen#1 + (byte) 8) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [24] *((byte*) main::screen#1 + (byte) $b) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [26] *((byte*) main::screen#1 + (byte) $e) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [28] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::header + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] if((byte*) main::sc#1!=(const byte*) main::SCREEN+(word) $3e8+(byte) 1) goto main::@1 [ main::sc#1 ] ( main:2 [ main::sc#1 ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$3 ← (byte) '0' + (byte) main::i1#10 [ main::i1#10 main::screen#1 main::$3 ] ( main:2 [ main::i1#10 main::screen#1 main::$3 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte y +Statement [18] *((byte*) main::screen#1 + (byte) 2) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [20] *((byte*) main::screen#1 + (byte) 5) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [22] *((byte*) main::screen#1 + (byte) 8) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [24] *((byte*) main::screen#1 + (byte) $b) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [26] *((byte*) main::screen#1 + (byte) $e) ← (byte) '+' [ main::i1#10 main::screen#1 ] ( main:2 [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [28] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::header + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::i1#10 main::i1#1 ] : zp[1]:5 , reg byte x , @@ -719,7 +719,7 @@ Potential registers zp[2]:6 [ main::screen#2 main::screen#1 ] : zp[2]:6 , Potential registers zp[1]:8 [ main::$3 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:4 [ main::i#2 main::i#1 ] 33: zp[2]:2 [ main::sc#2 main::sc#1 ] 28.6: zp[1]:5 [ main::i1#10 main::i1#1 ] 22: zp[1]:8 [ main::$3 ] 17.29: zp[2]:6 [ main::screen#2 main::screen#1 ] +Uplift Scope [main] 370.33: zp[1]:4 [ main::i#2 main::i#1 ] 303: zp[2]:2 [ main::sc#2 main::sc#1 ] 262.6: zp[1]:5 [ main::i1#10 main::i1#1 ] 202: zp[1]:8 [ main::$3 ] 158.71: zp[2]:6 [ main::screen#2 main::screen#1 ] Uplift Scope [] Uplifting [main] best 2453 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::i1#10 main::i1#1 ] reg byte a [ main::$3 ] zp[2]:6 [ main::screen#2 main::screen#1 ] @@ -973,7 +973,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -993,17 +993,17 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (const byte*) main::header[] = (byte*) " < <= == >= >" (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 reg byte x 22.0 -(byte) main::i1#10 reg byte x 6.6 +(byte) main::i1#1 reg byte x 202.0 +(byte) main::i1#10 reg byte x 60.6 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 16.5 -(byte*) main::sc#2 sc zp[2]:2 16.5 +(byte*) main::sc#1 sc zp[2]:2 151.5 +(byte*) main::sc#2 sc zp[2]:2 151.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 6.285714285714286 -(byte*) main::screen#2 screen zp[2]:4 11.0 +(byte*) main::screen#1 screen zp[2]:4 57.714285714285715 +(byte*) main::screen#2 screen zp[2]:4 101.0 zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/comparison-rewriting.sym b/src/test/ref/comparison-rewriting.sym index c3e541885..8cfa085f2 100644 --- a/src/test/ref/comparison-rewriting.sym +++ b/src/test/ref/comparison-rewriting.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -22,17 +22,17 @@ (const byte*) main::SCREEN = (byte*) 1024 (const byte*) main::header[] = (byte*) " < <= == >= >" (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (byte) main::i1 -(byte) main::i1#1 reg byte x 22.0 -(byte) main::i1#10 reg byte x 6.6 +(byte) main::i1#1 reg byte x 202.0 +(byte) main::i1#10 reg byte x 60.6 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 16.5 -(byte*) main::sc#2 sc zp[2]:2 16.5 +(byte*) main::sc#1 sc zp[2]:2 151.5 +(byte*) main::sc#2 sc zp[2]:2 151.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 6.285714285714286 -(byte*) main::screen#2 screen zp[2]:4 11.0 +(byte*) main::screen#1 screen zp[2]:4 57.714285714285715 +(byte*) main::screen#2 screen zp[2]:4 101.0 zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/complex-conditional-problem.log b/src/test/ref/complex-conditional-problem.log index c0cd513b0..44191472e 100644 --- a/src/test/ref/complex-conditional-problem.log +++ b/src/test/ref/complex-conditional-problem.log @@ -163,8 +163,8 @@ main::@2: scope:[main] from main::@1 main::@3 main::@4 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::key -(byte) main::key#0 11.0 -(byte) main::key#2 22.0 +(byte) main::key#0 101.0 +(byte) main::key#2 202.0 Initial phi equivalence classes [ main::key#2 main::key#0 ] @@ -248,7 +248,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::key#2 main::key#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::key#2 main::key#0 ] +Uplift Scope [main] 303: zp[1]:2 [ main::key#2 main::key#0 ] Uplift Scope [] Uplifting [main] best 382 combination reg byte a [ main::key#2 main::key#0 ] @@ -363,8 +363,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@4 (byte) main::key -(byte) main::key#0 reg byte a 11.0 -(byte) main::key#2 reg byte a 22.0 +(byte) main::key#0 reg byte a 101.0 +(byte) main::key#2 reg byte a 202.0 reg byte a [ main::key#2 main::key#0 ] diff --git a/src/test/ref/complex-conditional-problem.sym b/src/test/ref/complex-conditional-problem.sym index 063102d10..f3b271b2b 100644 --- a/src/test/ref/complex-conditional-problem.sym +++ b/src/test/ref/complex-conditional-problem.sym @@ -9,7 +9,7 @@ (label) main::@3 (label) main::@4 (byte) main::key -(byte) main::key#0 reg byte a 11.0 -(byte) main::key#2 reg byte a 22.0 +(byte) main::key#0 reg byte a 101.0 +(byte) main::key#2 reg byte a 202.0 reg byte a [ main::key#2 main::key#0 ] diff --git a/src/test/ref/complex/ataritempest/ataritempest.log b/src/test/ref/complex/ataritempest/ataritempest.log index a58275919..04cdca91e 100644 --- a/src/test/ref/complex/ataritempest/ataritempest.log +++ b/src/test/ref/complex/ataritempest/ataritempest.log @@ -262,11 +262,11 @@ entryPoint: { VECTORS: .word nmiHandler, entryPoint REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [10] *((const byte*) SCREEN + (byte) entryPoint::i#2) ← *((const byte*) MESSAGE + (byte) entryPoint::i#2) [ entryPoint::i#2 ] ( [ entryPoint::i#2 ] ) always clobbers reg byte a +Statement [7] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [10] *((const byte*) SCREEN + (byte) entryPoint::i#2) ← *((const byte*) MESSAGE + (byte) entryPoint::i#2) [ entryPoint::i#2 ] ( [ entryPoint::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ entryPoint::i#2 entryPoint::i#1 ] -Statement [7] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [10] *((const byte*) SCREEN + (byte) entryPoint::i#2) ← *((const byte*) MESSAGE + (byte) entryPoint::i#2) [ entryPoint::i#2 ] ( [ entryPoint::i#2 ] ) always clobbers reg byte a +Statement [7] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [10] *((const byte*) SCREEN + (byte) entryPoint::i#2) ← *((const byte*) MESSAGE + (byte) entryPoint::i#2) [ entryPoint::i#2 ] ( [ entryPoint::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ entryPoint::i#2 entryPoint::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log index c3eb698a1..8db275d70 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -2493,178 +2493,178 @@ Inversing boolean not [219] (bool~) startProcessing::$23 ← *((byte*)(const str Inversing boolean not [299] (bool~) processChars::$4 ← *((byte*~) processChars::$36) == (const byte) STATUS_FREE from [298] (bool~) processChars::$3 ← *((byte*~) processChars::$36) != (const byte) STATUS_FREE Inversing boolean not [308] (bool~) processChars::$6 ← *((byte*~) processChars::$37) != (const byte) STATUS_NEW from [307] (bool~) processChars::$5 ← *((byte*~) processChars::$37) == (const byte) STATUS_NEW Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#4 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#6 (byte*) heap_head#2 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte*) heap_head#0 = (byte*) heap_head#9 -Alias (void*) malloc::return#2 = (void*) malloc::return#5 -Alias (byte*) heap_head#3 = (byte*) heap_head#7 -Alias (void*) malloc::return#3 = (void*) malloc::return#6 -Alias (byte*) SCREEN_COPY#0 = (byte*) SCREEN_COPY#14 (byte*) SCREEN_COPY#7 -Alias (byte*) heap_head#4 = (byte*) heap_head#8 -Alias (byte*) SCREEN_COPY#1 = (byte*) SCREEN_COPY#4 -Alias (byte*) SCREEN_DIST#1 = (byte*) SCREEN_DIST#14 -Alias (byte*) main::src#2 = (byte*) main::src#3 -Alias (byte*) main::dst#2 = (byte*) main::dst#3 -Alias (byte*) SCREEN_COPY#22 = (byte*) SCREEN_COPY#24 (byte*) SCREEN_COPY#23 -Alias (byte*) SCREEN_DIST#12 = (byte*) SCREEN_DIST#15 (byte*) SCREEN_DIST#13 -Alias (byte*) SCREEN_COPY#11 = (byte*) SCREEN_COPY#15 (byte*) SCREEN_COPY#20 (byte*) SCREEN_COPY#8 -Alias (byte*) SCREEN_DIST#11 = (byte*) SCREEN_DIST#9 (byte*) SCREEN_DIST#7 (byte*) SCREEN_DIST#5 -Alias (byte) getCharToProcess::return_x#0 = (byte) getCharToProcess::return_x#3 -Alias (byte) getCharToProcess::return_y#0 = (byte) getCharToProcess::return_y#3 -Alias (byte) getCharToProcess::return_dist#0 = (byte) getCharToProcess::return_dist#3 -Alias (byte*) SCREEN_COPY#12 = (byte*) SCREEN_COPY#16 (byte*) SCREEN_COPY#5 (byte*) SCREEN_COPY#9 -Alias (byte*) SCREEN_DIST#10 = (byte*) SCREEN_DIST#4 (byte*) SCREEN_DIST#8 (byte*) SCREEN_DIST#6 -Alias (byte) main::center_x#0 = (byte~) main::$5_x (byte) main::center_x#1 -Alias (byte) main::center_y#0 = (byte~) main::$5_y (byte) main::center_y#1 -Alias (byte) main::center_dist#0 = (byte~) main::$5_dist (byte) main::center_dist#1 -Alias (byte*) getCharToProcess::dist_line#2 = (byte*) getCharToProcess::dist_line#4 (byte*) getCharToProcess::dist_line#7 -Alias (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#4 (byte) getCharToProcess::x#5 (byte) getCharToProcess::closest_x#1 -Alias (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#5 -Alias (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#4 (byte) getCharToProcess::y#6 (byte) getCharToProcess::closest_y#1 -Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#6 (byte*) getCharToProcess::screen_line#7 -Alias (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#8 -Alias (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#8 -Alias (byte*) SCREEN_COPY#17 = (byte*) SCREEN_COPY#18 (byte*) SCREEN_COPY#19 -Alias (byte) getCharToProcess::dist#0 = (byte) getCharToProcess::dist#1 (byte) getCharToProcess::closest_dist#1 -Alias (byte*) getCharToProcess::screen_line#3 = (byte*) getCharToProcess::screen_line#5 -Alias (byte*) getCharToProcess::dist_line#3 = (byte*) getCharToProcess::dist_line#5 -Alias (byte) getCharToProcess::y#3 = (byte) getCharToProcess::y#5 -Alias (byte) getCharToProcess::closest_dist#3 = (byte) getCharToProcess::closest_dist#6 (byte) getCharToProcess::closest_dist#9 (byte) getCharToProcess::closest_dist#7 -Alias (byte) getCharToProcess::closest_x#3 = (byte) getCharToProcess::closest_x#5 (byte) getCharToProcess::closest_x#6 (byte) getCharToProcess::closest_x#4 -Alias (byte) getCharToProcess::closest_y#3 = (byte) getCharToProcess::closest_y#5 (byte) getCharToProcess::closest_y#6 (byte) getCharToProcess::closest_y#4 -Alias (byte*) SCREEN_COPY#10 = (byte*) SCREEN_COPY#13 (byte*) SCREEN_COPY#6 (byte*) SCREEN_COPY#3 -Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#2 (byte) getCharToProcess::return_x#4 (byte) getCharToProcess::return_x#2 -Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#2 (byte) getCharToProcess::return_y#4 (byte) getCharToProcess::return_y#2 -Alias (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::closest_dist#4 (byte) getCharToProcess::return_dist#4 (byte) getCharToProcess::return_dist#2 -Alias (byte) startProcessing::i#2 = (byte) startProcessing::i#3 (byte) startProcessing::i#4 (byte) startProcessing::freeIdx#1 -Alias (byte) startProcessing::freeIdx#4 = (byte) startProcessing::freeIdx#5 -Alias (byte) startProcessing::center_y#5 = (byte) startProcessing::center_y#7 (byte) startProcessing::center_y#6 -Alias (byte) startProcessing::center_x#5 = (byte) startProcessing::center_x#7 (byte) startProcessing::center_x#6 -Alias (byte) startProcessing::freeIdx#2 = (byte) startProcessing::freeIdx#3 (byte) startProcessing::spriteIdx#0 -Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#3 -Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#3 -Alias (word) startProcessing::offset#0 = (word~) startProcessing::$2 -Alias (byte*) startProcessing::colPtr#0 = (byte*~) startProcessing::$3 -Alias (byte*) startProcessing::screenPtr#0 = (byte*~) startProcessing::$4 -Alias (byte*) startProcessing::spriteData#0 = (byte*~) startProcessing::$7 -Alias (byte*) startProcessing::chargenData#0 = (byte*~) startProcessing::$10 -Alias (byte) startProcessing::center_x#2 = (byte) startProcessing::center_x#4 -Alias (byte) startProcessing::center_y#2 = (byte) startProcessing::center_y#4 -Alias (byte) startProcessing::spriteIdx#1 = (byte) startProcessing::spriteIdx#2 -Alias (byte) startProcessing::spriteCol#1 = (byte) startProcessing::spriteCol#2 -Alias (byte*) startProcessing::screenPtr#1 = (byte*) startProcessing::screenPtr#2 -Alias (word) startProcessing::spriteX#0 = (word~) startProcessing::$14 -Alias (word) startProcessing::spriteY#0 = (word~) startProcessing::$18 -Alias (byte) startProcessing::spritePtr#0 = (byte~) startProcessing::$19 -Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$1 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3 -Alias (byte) processChars::bitmask#0 = (byte~) processChars::$2 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1 -Alias (byte) processChars::i#11 = (byte) processChars::i#2 (byte) processChars::i#12 -Alias (byte) processChars::numActive#13 = (byte) processChars::numActive#9 (byte) processChars::numActive#14 -Alias (word) processChars::xpos#0 = (word~) processChars::$8 (word) processChars::xpos#3 (word) processChars::xpos#4 -Alias (byte) processChars::bitmask#2 = (byte) processChars::bitmask#6 (byte) processChars::bitmask#3 -Alias (byte) processChars::i#6 = (byte) processChars::i#8 (byte) processChars::i#7 -Alias (struct ProcessingSprite*) processChars::processing#2 = (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#11 -Alias (byte) processChars::ypos#0 = (byte~) processChars::$14 (byte) processChars::ypos#1 -Alias (struct ProcessingSprite*) processChars::processing#4 = (struct ProcessingSprite*) processChars::processing#5 (struct ProcessingSprite*) processChars::processing#6 -Alias (byte) processChars::bitmask#4 = (byte) processChars::bitmask#7 -Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#7 -Alias (byte) processChars::i#10 = (byte) processChars::i#4 (byte) processChars::i#9 -Alias (word) processChars::xpos#1 = (word) processChars::xpos#2 -Alias (byte) processChars::xchar#0 = (byte~) processChars::$25 -Alias (byte) processChars::ychar#0 = (byte~) processChars::$28 -Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6 (byte) processChars::numActive#8 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 -Alias (byte*) initSprites::sp#2 = (byte*) initSprites::sp#3 -Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#3 (word) setupRasterIrq::raster#4 -Alias (void()*) setupRasterIrq::irqRoutine#2 = (void()*) setupRasterIrq::irqRoutine#4 (void()*) setupRasterIrq::irqRoutine#3 -Alias (byte*) SCREEN_DIST#0 = (byte*) SCREEN_DIST#3 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#4 malloc::return#1 +Alias heap_head#1 = heap_head#6 heap_head#2 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias heap_head#0 = heap_head#9 +Alias malloc::return#2 = malloc::return#5 +Alias heap_head#3 = heap_head#7 +Alias malloc::return#3 = malloc::return#6 +Alias SCREEN_COPY#0 = SCREEN_COPY#14 SCREEN_COPY#7 +Alias heap_head#4 = heap_head#8 +Alias SCREEN_COPY#1 = SCREEN_COPY#4 +Alias SCREEN_DIST#1 = SCREEN_DIST#14 +Alias main::src#2 = main::src#3 +Alias main::dst#2 = main::dst#3 +Alias SCREEN_COPY#22 = SCREEN_COPY#24 SCREEN_COPY#23 +Alias SCREEN_DIST#12 = SCREEN_DIST#15 SCREEN_DIST#13 +Alias SCREEN_COPY#11 = SCREEN_COPY#15 SCREEN_COPY#20 SCREEN_COPY#8 +Alias SCREEN_DIST#11 = SCREEN_DIST#9 SCREEN_DIST#7 SCREEN_DIST#5 +Alias getCharToProcess::return_x#0 = getCharToProcess::return_x#3 +Alias getCharToProcess::return_y#0 = getCharToProcess::return_y#3 +Alias getCharToProcess::return_dist#0 = getCharToProcess::return_dist#3 +Alias SCREEN_COPY#12 = SCREEN_COPY#16 SCREEN_COPY#5 SCREEN_COPY#9 +Alias SCREEN_DIST#10 = SCREEN_DIST#4 SCREEN_DIST#8 SCREEN_DIST#6 +Alias main::center_x#0 = main::$5_x main::center_x#1 +Alias main::center_y#0 = main::$5_y main::center_y#1 +Alias main::center_dist#0 = main::$5_dist main::center_dist#1 +Alias getCharToProcess::dist_line#2 = getCharToProcess::dist_line#4 getCharToProcess::dist_line#7 +Alias getCharToProcess::x#2 = getCharToProcess::x#4 getCharToProcess::x#5 getCharToProcess::closest_x#1 +Alias getCharToProcess::closest_dist#2 = getCharToProcess::closest_dist#5 +Alias getCharToProcess::y#2 = getCharToProcess::y#4 getCharToProcess::y#6 getCharToProcess::closest_y#1 +Alias getCharToProcess::screen_line#2 = getCharToProcess::screen_line#6 getCharToProcess::screen_line#7 +Alias getCharToProcess::closest_x#7 = getCharToProcess::closest_x#8 +Alias getCharToProcess::closest_y#7 = getCharToProcess::closest_y#8 +Alias SCREEN_COPY#17 = SCREEN_COPY#18 SCREEN_COPY#19 +Alias getCharToProcess::dist#0 = getCharToProcess::dist#1 getCharToProcess::closest_dist#1 +Alias getCharToProcess::screen_line#3 = getCharToProcess::screen_line#5 +Alias getCharToProcess::dist_line#3 = getCharToProcess::dist_line#5 +Alias getCharToProcess::y#3 = getCharToProcess::y#5 +Alias getCharToProcess::closest_dist#3 = getCharToProcess::closest_dist#6 getCharToProcess::closest_dist#9 getCharToProcess::closest_dist#7 +Alias getCharToProcess::closest_x#3 = getCharToProcess::closest_x#5 getCharToProcess::closest_x#6 getCharToProcess::closest_x#4 +Alias getCharToProcess::closest_y#3 = getCharToProcess::closest_y#5 getCharToProcess::closest_y#6 getCharToProcess::closest_y#4 +Alias SCREEN_COPY#10 = SCREEN_COPY#13 SCREEN_COPY#6 SCREEN_COPY#3 +Alias getCharToProcess::return_x#1 = getCharToProcess::closest_x#2 getCharToProcess::return_x#4 getCharToProcess::return_x#2 +Alias getCharToProcess::return_y#1 = getCharToProcess::closest_y#2 getCharToProcess::return_y#4 getCharToProcess::return_y#2 +Alias getCharToProcess::return_dist#1 = getCharToProcess::closest_dist#4 getCharToProcess::return_dist#4 getCharToProcess::return_dist#2 +Alias startProcessing::i#2 = startProcessing::i#3 startProcessing::i#4 startProcessing::freeIdx#1 +Alias startProcessing::freeIdx#4 = startProcessing::freeIdx#5 +Alias startProcessing::center_y#5 = startProcessing::center_y#7 startProcessing::center_y#6 +Alias startProcessing::center_x#5 = startProcessing::center_x#7 startProcessing::center_x#6 +Alias startProcessing::freeIdx#2 = startProcessing::freeIdx#3 startProcessing::spriteIdx#0 +Alias startProcessing::center_y#1 = startProcessing::center_y#3 +Alias startProcessing::center_x#1 = startProcessing::center_x#3 +Alias startProcessing::offset#0 = startProcessing::$2 +Alias startProcessing::colPtr#0 = startProcessing::$3 +Alias startProcessing::screenPtr#0 = startProcessing::$4 +Alias startProcessing::spriteData#0 = startProcessing::$7 +Alias startProcessing::chargenData#0 = startProcessing::$10 +Alias startProcessing::center_x#2 = startProcessing::center_x#4 +Alias startProcessing::center_y#2 = startProcessing::center_y#4 +Alias startProcessing::spriteIdx#1 = startProcessing::spriteIdx#2 +Alias startProcessing::spriteCol#1 = startProcessing::spriteCol#2 +Alias startProcessing::screenPtr#1 = startProcessing::screenPtr#2 +Alias startProcessing::spriteX#0 = startProcessing::$14 +Alias startProcessing::spriteY#0 = startProcessing::$18 +Alias startProcessing::spritePtr#0 = startProcessing::$19 +Alias processChars::processing#0 = processChars::$1 processChars::processing#1 processChars::processing#3 +Alias processChars::bitmask#0 = processChars::$2 processChars::bitmask#5 processChars::bitmask#1 +Alias processChars::i#11 = processChars::i#2 processChars::i#12 +Alias processChars::numActive#13 = processChars::numActive#9 processChars::numActive#14 +Alias processChars::xpos#0 = processChars::$8 processChars::xpos#3 processChars::xpos#4 +Alias processChars::bitmask#2 = processChars::bitmask#6 processChars::bitmask#3 +Alias processChars::i#6 = processChars::i#8 processChars::i#7 +Alias processChars::processing#2 = processChars::processing#7 processChars::processing#8 +Alias processChars::numActive#10 = processChars::numActive#12 processChars::numActive#11 +Alias processChars::ypos#0 = processChars::$14 processChars::ypos#1 +Alias processChars::processing#4 = processChars::processing#5 processChars::processing#6 +Alias processChars::bitmask#4 = processChars::bitmask#7 +Alias processChars::numActive#4 = processChars::numActive#5 processChars::numActive#7 +Alias processChars::i#10 = processChars::i#4 processChars::i#9 +Alias processChars::xpos#1 = processChars::xpos#2 +Alias processChars::xchar#0 = processChars::$25 +Alias processChars::ychar#0 = processChars::$28 +Alias processChars::numActive#3 = processChars::numActive#6 processChars::numActive#8 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 +Alias initSprites::sp#2 = initSprites::sp#3 +Alias setupRasterIrq::raster#1 = setupRasterIrq::raster#3 setupRasterIrq::raster#4 +Alias setupRasterIrq::irqRoutine#2 = setupRasterIrq::irqRoutine#4 setupRasterIrq::irqRoutine#3 +Alias SCREEN_DIST#0 = SCREEN_DIST#3 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#3 -Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#3 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 -Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#3 -Alias (byte*) getCharToProcess::dist_line#2 = (byte*) getCharToProcess::dist_line#3 -Alias (byte*) SCREEN_COPY#10 = (byte*) SCREEN_COPY#17 -Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#3 -Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#3 -Alias (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::closest_dist#3 -Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#5 -Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#5 -Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*) processChars::processing#2 (struct ProcessingSprite*) processChars::processing#4 -Alias (byte) processChars::bitmask#0 = (byte) processChars::bitmask#2 (byte) processChars::bitmask#4 -Alias (byte) processChars::i#10 = (byte) processChars::i#6 (byte) processChars::i#11 (byte) processChars::i#5 -Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#13 (byte) processChars::numActive#4 (byte) processChars::numActive#2 -Alias (word) processChars::xpos#0 = (word) processChars::xpos#1 -Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#2 -Alias (void()*) setupRasterIrq::irqRoutine#1 = (void()*) setupRasterIrq::irqRoutine#2 +Alias candidate removed (phi-usage) getCharToProcess::x#2 = getCharToProcess::x#3 +Alias candidate removed (phi-usage) getCharToProcess::y#2 = getCharToProcess::y#3 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 +Alias getCharToProcess::screen_line#2 = getCharToProcess::screen_line#3 +Alias getCharToProcess::dist_line#2 = getCharToProcess::dist_line#3 +Alias SCREEN_COPY#10 = SCREEN_COPY#17 +Alias getCharToProcess::return_x#1 = getCharToProcess::closest_x#3 +Alias getCharToProcess::return_y#1 = getCharToProcess::closest_y#3 +Alias getCharToProcess::return_dist#1 = getCharToProcess::closest_dist#3 +Alias startProcessing::center_y#1 = startProcessing::center_y#5 +Alias startProcessing::center_x#1 = startProcessing::center_x#5 +Alias processChars::processing#0 = processChars::processing#2 processChars::processing#4 +Alias processChars::bitmask#0 = processChars::bitmask#2 processChars::bitmask#4 +Alias processChars::i#10 = processChars::i#6 processChars::i#11 processChars::i#5 +Alias processChars::numActive#10 = processChars::numActive#13 processChars::numActive#4 processChars::numActive#2 +Alias processChars::xpos#0 = processChars::xpos#1 +Alias setupRasterIrq::raster#1 = setupRasterIrq::raster#2 +Alias setupRasterIrq::irqRoutine#1 = setupRasterIrq::irqRoutine#2 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#3 -Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#3 -Alias (byte) processChars::i#10 = (byte) processChars::i#3 +Alias candidate removed (phi-usage) getCharToProcess::x#2 = getCharToProcess::x#3 +Alias candidate removed (phi-usage) getCharToProcess::y#2 = getCharToProcess::y#3 +Alias processChars::i#10 = processChars::i#3 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#3 -Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#3 +Alias candidate removed (phi-usage) getCharToProcess::x#2 = getCharToProcess::x#3 +Alias candidate removed (phi-usage) getCharToProcess::y#2 = getCharToProcess::y#3 Identical Phi Values (signed word) atan2_16::y#1 (signed word) atan2_16::y#0 Identical Phi Values (signed word) atan2_16::x#1 (signed word) atan2_16::x#0 Identical Phi Values (signed word) atan2_16::yi#10 (signed word) atan2_16::yi#3 @@ -2966,8 +2966,8 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $d Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) processChars::$15 = (byte~) processChars::$11 -Alias (byte~) processChars::$27 = (byte~) processChars::$26 +Alias processChars::$15 = processChars::$11 +Alias processChars::$27 = processChars::$26 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) processChars::$16 [182] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@7 Simple Condition (bool~) processChars::$21 [265] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@7 @@ -3068,12 +3068,12 @@ Constant inlined processChars::i#0 = (byte) 0 Constant inlined getCharToProcess::closest_dist#0 = (const byte) NOT_FOUND Constant inlined initSprites::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$10 = (byte~) main::$15 -Alias (word~) getCharToProcess::$9 = (word~) getCharToProcess::$14 -Alias (byte~) startProcessing::$27 = (byte~) startProcessing::$33 -Alias (word~) startProcessing::$1 = (word~) startProcessing::$36 -Alias (byte~) startProcessing::$28 = (byte~) startProcessing::$41 -Alias (byte~) processChars::$32 = (byte~) processChars::$66 +Alias main::$10 = main::$15 +Alias getCharToProcess::$9 = getCharToProcess::$14 +Alias startProcessing::$27 = startProcessing::$33 +Alias startProcessing::$1 = startProcessing::$36 +Alias startProcessing::$28 = startProcessing::$41 +Alias processChars::$32 = processChars::$66 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) malloc::size#2 (word) $3e8 Successful SSA optimization Pass2IdenticalPhiElimination @@ -3894,292 +3894,292 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN_DIST (void*) SCREEN_DIST#0 0.031746031746031744 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (struct ProcessingChar()) getCharToProcess() -(byte*~) getCharToProcess::$10 4.0 -(word~) getCharToProcess::$12 4.0 -(word~) getCharToProcess::$13 4.0 -(word~) getCharToProcess::$8 3.0 -(word~) getCharToProcess::$9 4.0 +(byte*~) getCharToProcess::$10 2002.0 +(word~) getCharToProcess::$12 2002.0 +(word~) getCharToProcess::$13 2002.0 +(word~) getCharToProcess::$8 1501.5 +(word~) getCharToProcess::$9 2002.0 (byte) getCharToProcess::closest_dist -(byte) getCharToProcess::closest_dist#10 202.0 -(byte) getCharToProcess::closest_dist#12 2002.0 -(byte) getCharToProcess::closest_dist#2 1026.25 -(byte) getCharToProcess::closest_dist#8 202.0 +(byte) getCharToProcess::closest_dist#10 200002.0 +(byte) getCharToProcess::closest_dist#12 2000002.0 +(byte) getCharToProcess::closest_dist#2 1025001.25 +(byte) getCharToProcess::closest_dist#8 200002.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 517.3333333333334 -(byte) getCharToProcess::closest_x#9 202.0 +(byte) getCharToProcess::closest_x#7 516667.3333333334 +(byte) getCharToProcess::closest_x#9 200002.0 (byte) getCharToProcess::closest_y -(byte) getCharToProcess::closest_y#7 517.3333333333334 -(byte) getCharToProcess::closest_y#9 202.0 +(byte) getCharToProcess::closest_y#7 516667.3333333334 +(byte) getCharToProcess::closest_y#9 200002.0 (byte) getCharToProcess::dist -(byte) getCharToProcess::dist#0 750.75 +(byte) getCharToProcess::dist#0 750000.75 (byte*) getCharToProcess::dist_line -(byte*) getCharToProcess::dist_line#0 4.0 -(byte*) getCharToProcess::dist_line#1 50.5 -(byte*) getCharToProcess::dist_line#6 86.07142857142857 +(byte*) getCharToProcess::dist_line#0 2002.0 +(byte*) getCharToProcess::dist_line#1 50000.5 +(byte*) getCharToProcess::dist_line#6 85785.99999999999 (struct ProcessingChar) getCharToProcess::return (byte) getCharToProcess::return_dist -(byte) getCharToProcess::return_dist#0 7.333333333333333 -(byte) getCharToProcess::return_dist#1 228.7777777777778 -(byte) getCharToProcess::return_dist#5 2002.0 -(byte) getCharToProcess::return_dist#6 2002.0 +(byte) getCharToProcess::return_dist#0 67.33333333333333 +(byte) getCharToProcess::return_dist#1 227839.2777777778 +(byte) getCharToProcess::return_dist#5 2000002.0 +(byte) getCharToProcess::return_dist#6 2000002.0 (byte) getCharToProcess::return_x -(byte) getCharToProcess::return_x#0 7.333333333333333 -(byte) getCharToProcess::return_x#1 228.7777777777778 -(byte) getCharToProcess::return_x#7 1001.0 +(byte) getCharToProcess::return_x#0 67.33333333333333 +(byte) getCharToProcess::return_x#1 227839.2777777778 +(byte) getCharToProcess::return_x#7 1000001.0 (byte) getCharToProcess::return_y -(byte) getCharToProcess::return_y#0 7.333333333333333 -(byte) getCharToProcess::return_y#1 216.6315789473684 -(byte) getCharToProcess::return_y#7 2002.0 +(byte) getCharToProcess::return_y#0 67.33333333333333 +(byte) getCharToProcess::return_y#1 215795.05263157893 +(byte) getCharToProcess::return_y#7 2000002.0 (byte*) getCharToProcess::screen_line -(byte*) getCharToProcess::screen_line#0 2.0 -(byte*) getCharToProcess::screen_line#1 40.4 -(byte*) getCharToProcess::screen_line#4 92.6923076923077 +(byte*) getCharToProcess::screen_line#0 1001.0 +(byte*) getCharToProcess::screen_line#1 40000.4 +(byte*) getCharToProcess::screen_line#4 92384.92307692306 (byte) getCharToProcess::x -(byte) getCharToProcess::x#1 1001.0 -(byte) getCharToProcess::x#2 556.1111111111111 +(byte) getCharToProcess::x#1 1000001.0 +(byte) getCharToProcess::x#2 555556.1111111111 (byte) getCharToProcess::y -(byte) getCharToProcess::y#1 101.0 -(byte) getCharToProcess::y#7 80.2 +(byte) getCharToProcess::y#1 100001.0 +(byte) getCharToProcess::y#7 80000.20000000001 (byte*) heap_head -(byte*) heap_head#1 1.0 -(byte*) heap_head#5 4.0 +(byte*) heap_head#1 3.25 +(byte*) heap_head#5 13.0 (void()) initSprites() (byte) initSprites::i -(byte) initSprites::i#1 16.5 -(byte) initSprites::i#2 16.5 +(byte) initSprites::i#1 1501.5 +(byte) initSprites::i#2 1501.5 (byte*) initSprites::sp -(byte*) initSprites::sp#1 22.0 -(byte*) initSprites::sp#2 14.666666666666666 +(byte*) initSprites::sp#1 2002.0 +(byte*) initSprites::sp#2 1334.6666666666667 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 84.16666666666666 +(byte) init_angle_screen::ang_w#0 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 3.0 +(byte*) init_angle_screen::screen#0 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 4.0 -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 9.04 +(byte*) init_angle_screen::screen_bottomline#0 202.0 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 2.0 -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 101.0 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 interrupt(HARDWARE_ALL)(void()) irqBottom() (byte) irqBottom::i interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$10 22.0 -(byte~) main::$11 22.0 -(byte~) main::$12 22.0 -(byte~) main::$13 22.0 -(byte~) main::$14 22.0 +(byte~) main::$10 202.0 +(byte~) main::$11 202.0 +(byte~) main::$12 202.0 +(byte~) main::$13 202.0 +(byte~) main::$14 202.0 (byte) main::center_dist -(byte) main::center_dist#0 22.0 +(byte) main::center_dist#0 202.0 (byte) main::center_x -(byte) main::center_x#0 5.5 +(byte) main::center_x#0 50.5 (byte) main::center_y -(byte) main::center_y#0 5.5 +(byte) main::center_y#0 50.5 (byte*) main::dst -(byte*) main::dst#0 4.0 -(byte*) main::dst#1 22.0 -(byte*) main::dst#2 8.75 +(byte*) main::dst#0 22.0 +(byte*) main::dst#1 202.0 +(byte*) main::dst#2 78.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.857142857142857 +(byte) main::i#1 151.5 +(byte) main::i#2 72.14285714285714 (byte*) main::src -(byte*) main::src#1 11.0 -(byte*) main::src#2 14.666666666666666 +(byte*) main::src#1 101.0 +(byte*) main::src#2 134.66666666666666 (void*()) malloc((word) malloc::size) (byte*) malloc::mem -(byte*) malloc::mem#0 0.8 +(byte*) malloc::mem#0 4.4 (void*) malloc::return (word) malloc::size (void()) processChars() -(byte~) processChars::$10 22.0 -(byte~) processChars::$12 22.0 -(word~) processChars::$13 11.0 -(byte~) processChars::$15 6.6000000000000005 -(word~) processChars::$23 11.0 -(byte~) processChars::$24 22.0 -(byte~) processChars::$27 22.0 -(byte~) processChars::$29 22.0 -(byte~) processChars::$32 22.0 -(byte~) processChars::$33 22.0 -(byte~) processChars::$34 22.0 -(byte~) processChars::$62 22.0 -(byte~) processChars::$63 22.0 -(byte~) processChars::$64 22.0 -(byte~) processChars::$65 22.0 -(byte~) processChars::$9 22.0 +(byte~) processChars::$10 202.0 +(byte~) processChars::$12 202.0 +(word~) processChars::$13 101.0 +(byte~) processChars::$15 60.599999999999994 +(word~) processChars::$23 101.0 +(byte~) processChars::$24 202.0 +(byte~) processChars::$27 202.0 +(byte~) processChars::$29 202.0 +(byte~) processChars::$32 202.0 +(byte~) processChars::$33 202.0 +(byte~) processChars::$34 202.0 +(byte~) processChars::$62 202.0 +(byte~) processChars::$63 202.0 +(byte~) processChars::$64 202.0 +(byte~) processChars::$65 202.0 +(byte~) processChars::$9 202.0 (byte) processChars::bitmask -(byte) processChars::bitmask#0 2.2 +(byte) processChars::bitmask#0 20.2 (byte) processChars::i -(byte) processChars::i#1 16.5 -(byte) processChars::i#10 1.4042553191489362 +(byte) processChars::i#1 151.5 +(byte) processChars::i#10 12.893617021276595 (byte) processChars::numActive -(byte) processChars::numActive#1 22.0 -(byte) processChars::numActive#10 0.7333333333333333 -(byte) processChars::numActive#3 11.0 +(byte) processChars::numActive#1 202.0 +(byte) processChars::numActive#10 6.733333333333333 +(byte) processChars::numActive#3 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 0.3142857142857143 +(struct ProcessingSprite*) processChars::processing#0 2.8857142857142857 (byte) processChars::xchar -(byte) processChars::xchar#0 22.0 +(byte) processChars::xchar#0 202.0 (word) processChars::xpos -(word) processChars::xpos#0 2.0625 +(word) processChars::xpos#0 18.9375 (byte) processChars::ychar -(byte) processChars::ychar#0 22.0 +(byte) processChars::ychar#0 202.0 (byte) processChars::ypos -(byte) processChars::ypos#0 2.75 +(byte) processChars::ypos#0 25.25 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (void()*) setupRasterIrq::irqRoutine (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) -(word~) startProcessing::$0 3.0 -(word~) startProcessing::$1 4.0 -(word~) startProcessing::$11 4.0 -(word~) startProcessing::$12 4.0 -(word~) startProcessing::$13 4.0 -(word~) startProcessing::$15 4.0 -(word~) startProcessing::$16 4.0 -(word~) startProcessing::$17 4.0 -(byte~) startProcessing::$20 2.0 -(word~) startProcessing::$21 0.5 -(byte~) startProcessing::$27 2002.0 -(byte~) startProcessing::$28 2.2222222222222228 -(byte~) startProcessing::$29 2002.0 -(byte~) startProcessing::$30 2002.0 -(byte~) startProcessing::$31 2002.0 -(byte~) startProcessing::$32 2002.0 -(word~) startProcessing::$34 4.0 -(word~) startProcessing::$35 4.0 -(byte~) startProcessing::$37 4.0 -(byte~) startProcessing::$38 4.0 -(byte~) startProcessing::$39 4.0 -(byte~) startProcessing::$40 4.0 -(word~) startProcessing::$5 4.0 -(word~) startProcessing::$6 4.0 -(word~) startProcessing::$8 4.0 -(word~) startProcessing::$9 4.0 +(word~) startProcessing::$0 1501.5 +(word~) startProcessing::$1 2002.0 +(word~) startProcessing::$11 2002.0 +(word~) startProcessing::$12 2002.0 +(word~) startProcessing::$13 2002.0 +(word~) startProcessing::$15 2002.0 +(word~) startProcessing::$16 2002.0 +(word~) startProcessing::$17 2002.0 +(byte~) startProcessing::$20 1001.0 +(word~) startProcessing::$21 250.25 +(byte~) startProcessing::$27 2000002.0 +(byte~) startProcessing::$28 1112.222222222222 +(byte~) startProcessing::$29 2000002.0 +(byte~) startProcessing::$30 2000002.0 +(byte~) startProcessing::$31 2000002.0 +(byte~) startProcessing::$32 2000002.0 +(word~) startProcessing::$34 2002.0 +(word~) startProcessing::$35 2002.0 +(byte~) startProcessing::$37 2002.0 +(byte~) startProcessing::$38 2002.0 +(byte~) startProcessing::$39 2002.0 +(byte~) startProcessing::$40 2002.0 +(word~) startProcessing::$5 2002.0 +(word~) startProcessing::$6 2002.0 +(word~) startProcessing::$8 2002.0 +(word~) startProcessing::$9 2002.0 (struct ProcessingChar) startProcessing::center (byte) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 0.30952380952380953 +(byte) startProcessing::center_x#0 26.238095238095237 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 0.24444444444444444 +(byte) startProcessing::center_y#0 2.2444444444444445 (byte) startProcessing::ch -(byte) startProcessing::ch#0 2.0 +(byte) startProcessing::ch#0 1001.0 (byte*) startProcessing::chargenData -(byte*) startProcessing::chargenData#0 1.3333333333333333 -(byte*) startProcessing::chargenData#1 67.33333333333333 -(byte*) startProcessing::chargenData#2 101.66666666666666 +(byte*) startProcessing::chargenData#0 667.3333333333334 +(byte*) startProcessing::chargenData#1 66667.33333333333 +(byte*) startProcessing::chargenData#2 100334.66666666666 (byte*) startProcessing::colPtr -(byte*) startProcessing::colPtr#0 4.0 +(byte*) startProcessing::colPtr#0 2002.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 28.0 -(byte) startProcessing::freeIdx#6 20.2 -(byte) startProcessing::freeIdx#7 202.0 -(byte) startProcessing::freeIdx#8 202.0 +(byte) startProcessing::freeIdx#2 27787.446808510645 +(byte) startProcessing::freeIdx#6 20000.2 +(byte) startProcessing::freeIdx#7 200002.0 +(byte) startProcessing::freeIdx#8 200002.0 (byte) startProcessing::i -(byte) startProcessing::i#1 1501.5 -(byte) startProcessing::i#2 858.0 +(byte) startProcessing::i#1 1500001.5 +(byte) startProcessing::i#2 857143.7142857142 (byte) startProcessing::i1 -(byte) startProcessing::i1#1 151.5 -(byte) startProcessing::i1#2 50.5 +(byte) startProcessing::i1#1 150001.5 +(byte) startProcessing::i1#2 50000.5 (word) startProcessing::offset -(word) startProcessing::offset#0 2.0 +(word) startProcessing::offset#0 1001.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 0.14285714285714285 +(byte*) startProcessing::screenPtr#0 71.5 (byte) startProcessing::spriteCol -(byte) startProcessing::spriteCol#0 0.0975609756097561 +(byte) startProcessing::spriteCol#0 48.829268292682926 (byte*) startProcessing::spriteData -(byte*) startProcessing::spriteData#0 0.5714285714285714 -(byte*) startProcessing::spriteData#1 50.5 -(byte*) startProcessing::spriteData#2 152.5 +(byte*) startProcessing::spriteData#0 286.0 +(byte*) startProcessing::spriteData#1 50000.5 +(byte*) startProcessing::spriteData#2 150502.0 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 0.3076923076923077 +(byte) startProcessing::spritePtr#0 154.0 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 0.3076923076923077 +(word) startProcessing::spriteX#0 154.0 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 0.4 +(word) startProcessing::spriteY#0 200.2 Initial phi equivalence classes [ main::src#2 main::src#1 ] @@ -6796,429 +6796,425 @@ VYSIN: .word 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 heap_head#1 ] ( [ SCREEN_COPY#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ( [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ) always clobbers reg byte a -Statement [13] if((byte*) main::src#2!=(const byte*) SCREEN+(word) $3e8) goto main::@2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$11 ← (byte) main::i#2 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ) always clobbers reg byte a +Statement [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 heap_head#1 ] ( [ SCREEN_COPY#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ( [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] { } ) always clobbers reg byte a +Statement [13] if((byte*) main::src#2!=(const byte*) SCREEN+(word) $3e8) goto main::@2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$11 ← (byte) main::i#2 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [16] (byte~) main::$12 ← (byte~) main::$11 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$13 ← (byte~) main::$12 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$14 ← (byte~) main::$13 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$10 ← (byte~) main::$14 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [20] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10) ← memcpy(*(&(const struct ProcessingSprite) $2), struct ProcessingSprite, (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE) [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [16] (byte~) main::$12 ← (byte~) main::$11 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$13 ← (byte~) main::$12 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$14 ← (byte~) main::$13 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$10 ← (byte~) main::$14 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] { } ) always clobbers reg byte a +Statement [20] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10) ← memcpy(*(&(const struct ProcessingSprite) $2), struct ProcessingSprite, (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE) [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [22] if((byte) main::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ) always clobbers reg byte a -Statement [36] *((const byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] ) always clobbers reg byte a -Statement [41] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [47] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a +Statement [22] if((byte) main::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] { } ) always clobbers reg byte a +Statement [41] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [47] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:69 [ startProcessing::center_x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:70 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [48] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ) always clobbers reg byte a -Statement [50] (byte~) startProcessing::$32 ← (byte~) startProcessing::$31 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ) always clobbers reg byte a -Statement [51] (byte~) startProcessing::$27 ← (byte~) startProcessing::$32 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [52] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [55] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$34 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [57] (word~) startProcessing::$35 ← (word~) startProcessing::$34 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ) always clobbers reg byte a -Statement [58] (word~) startProcessing::$1 ← (word~) startProcessing::$35 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [59] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ) always clobbers reg byte a -Statement [60] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ) always clobbers reg byte a -Statement [61] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ) always clobbers reg byte a reg byte y +Statement [48] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [49] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [50] (byte~) startProcessing::$32 ← (byte~) startProcessing::$31 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [51] (byte~) startProcessing::$27 ← (byte~) startProcessing::$32 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [52] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [55] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [56] (word~) startProcessing::$34 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [57] (word~) startProcessing::$35 ← (word~) startProcessing::$34 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [58] (word~) startProcessing::$1 ← (word~) startProcessing::$35 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [59] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [60] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [61] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:69 [ startProcessing::center_x#0 ] Removing always clobbered register reg byte y as potential for zp[1]:70 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [62] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a +Statement [62] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:88 [ startProcessing::spriteCol#0 ] -Statement [63] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [64] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ) always clobbers reg byte a -Statement [65] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [66] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y +Statement [63] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [64] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [65] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [66] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:88 [ startProcessing::spriteCol#0 ] -Statement [67] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -Statement [68] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ) always clobbers reg byte a -Statement [69] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [73] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [67] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [68] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [69] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [73] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:13 [ startProcessing::i1#2 startProcessing::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ startProcessing::i1#2 startProcessing::i1#1 ] -Statement [74] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [78] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [82] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ) always clobbers reg byte a -Statement [83] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [84] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [85] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [86] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ) always clobbers reg byte a -Statement [87] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [88] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [89] (byte~) startProcessing::$20 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ) always clobbers reg byte a +Statement [74] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [78] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [82] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [83] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [86] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [87] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [88] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [89] (byte~) startProcessing::$20 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:116 [ startProcessing::spritePtr#0 ] -Statement [90] (word~) startProcessing::$21 ← (word)(byte~) startProcessing::$20 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a -Statement [91] (byte~) startProcessing::$37 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ) always clobbers reg byte a -Statement [92] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ) always clobbers reg byte a -Statement [93] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ) always clobbers reg byte a -Statement [94] (byte~) startProcessing::$40 ← (byte~) startProcessing::$39 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ) always clobbers reg byte a -Statement [95] (byte~) startProcessing::$28 ← (byte~) startProcessing::$40 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a -Statement [96] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a +Statement [90] (word~) startProcessing::$21 ← (word)(byte~) startProcessing::$20 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [91] (byte~) startProcessing::$37 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [92] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [94] (byte~) startProcessing::$40 ← (byte~) startProcessing::$39 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [95] (byte~) startProcessing::$28 ← (byte~) startProcessing::$40 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:124 [ startProcessing::$28 ] -Statement [97] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a -Statement [98] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (word~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [99] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [100] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [101] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [102] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [103] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [104] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [110] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ) always clobbers reg byte a -Statement [111] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ) always clobbers reg byte a -Statement [114] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a +Statement [97] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [98] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (word~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [99] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [100] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [101] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [102] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [103] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [104] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [110] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [111] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [114] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:19 [ getCharToProcess::x#2 getCharToProcess::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -Statement [115] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [122] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a +Statement [115] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [122] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] -Statement [123] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ) always clobbers reg byte a -Statement [127] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ) always clobbers reg byte a -Statement [128] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ) always clobbers reg byte a -Statement [129] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::$9 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [131] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [132] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [139] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [140] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [141] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [142] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [143] *((const byte*) RASTER) ← <(const byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [144] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [145] *((const void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [150] if((byte*) initSprites::sp#2<(const byte*) SPRITE_DATA+(const byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] ) always clobbers reg byte a -Statement [152] *((const byte*) SPRITES_COLS + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] ) always clobbers reg byte a +Statement [123] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [127] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [128] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [129] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [130] (word~) getCharToProcess::$9 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [131] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [132] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [139] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [140] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [141] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [142] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [143] *((const byte*) RASTER) ← <(const byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [144] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [145] *((const void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [150] if((byte*) initSprites::sp#2<(const byte*) SPRITE_DATA+(const byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a +Statement [152] *((const byte*) SPRITES_COLS + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ initSprites::i#2 initSprites::i#1 ] -Statement [155] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [156] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [157] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [159] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [161] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [162] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [166] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [156] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [157] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [159] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y +Statement [161] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [162] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [166] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [167] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [171] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [167] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [171] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [172] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [173] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [172] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [173] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [174] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [175] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [176] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [177] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [179] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [180] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [181] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [182] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [183] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [174] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [175] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [176] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [177] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [179] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [180] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [181] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [183] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:152 [ init_angle_screen::ang_w#0 ] -Statement [184] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a +Statement [184] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:152 [ init_angle_screen::ang_w#0 ] -Statement [185] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [186] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [187] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [188] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [189] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [192] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [193] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [195] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [196] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [199] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [185] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [186] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [187] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [188] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [189] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [192] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [193] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [195] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [196] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [199] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:38 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [201] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [202] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [203] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [205] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [206] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [210] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [201] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [202] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [203] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [205] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [206] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [210] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:43 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [211] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [215] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [216] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [218] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [219] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [220] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [221] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [222] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [226] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [227] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [228] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [229] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [230] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [231] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [233] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [234] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [236] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] ) always clobbers reg byte a -Statement [237] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [242] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_TOP [ ] ( [ ] ) always clobbers reg byte a -Statement [243] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [244] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [245] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [248] (byte~) processChars::$62 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ) always clobbers reg byte a +Statement [211] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [215] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [216] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [218] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [219] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [220] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [221] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [222] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [226] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [227] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [228] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [229] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [230] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [231] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [233] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [234] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [236] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } ) always clobbers reg byte a +Statement [237] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [242] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_TOP [ ] ( [ ] { } ) always clobbers reg byte a +Statement [243] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [244] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [245] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [248] (byte~) processChars::$62 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [249] (byte~) processChars::$63 ← (byte~) processChars::$62 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ) always clobbers reg byte a -Statement [250] (byte~) processChars::$64 ← (byte~) processChars::$63 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a -Statement [251] (byte~) processChars::$65 ← (byte~) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a -Statement [252] (byte~) processChars::$32 ← (byte~) processChars::$65 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ) always clobbers reg byte a -Statement [253] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$32 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [254] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [249] (byte~) processChars::$63 ← (byte~) processChars::$62 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] { } ) always clobbers reg byte a +Statement [250] (byte~) processChars::$64 ← (byte~) processChars::$63 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] { } ) always clobbers reg byte a +Statement [251] (byte~) processChars::$65 ← (byte~) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] { } ) always clobbers reg byte a +Statement [252] (byte~) processChars::$32 ← (byte~) processChars::$65 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] { } ) always clobbers reg byte a +Statement [253] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$32 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a +Statement [254] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:50 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [255] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y +Statement [255] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:167 [ processChars::bitmask#0 ] Removing always clobbered register reg byte y as potential for zp[1]:167 [ processChars::bitmask#0 ] -Statement [256] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [257] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [256] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [257] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:50 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] Removing always clobbered register reg byte x as potential for zp[1]:167 [ processChars::bitmask#0 ] -Statement [258] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [259] *((const byte*) SPRITES_COLS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [260] *((const byte*) SCREEN+(const word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [261] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [262] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [263] (byte~) processChars::$9 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$9 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$9 ] ) always clobbers reg byte a -Statement [265] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ) always clobbers reg byte a -Statement [266] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [267] (byte~) processChars::$15 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ) always clobbers reg byte a -Statement [268] (byte~) processChars::$12 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ) always clobbers reg byte a +Statement [258] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a +Statement [259] *((const byte*) SPRITES_COLS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [260] *((const byte*) SCREEN+(const word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [261] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [262] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [265] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a +Statement [266] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [267] (byte~) processChars::$15 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] { } ) always clobbers reg byte a +Statement [268] (byte~) processChars::$12 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:172 [ processChars::$15 ] -Statement [270] (word~) processChars::$13 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ) always clobbers reg byte a reg byte y +Statement [270] (word~) processChars::$13 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:172 [ processChars::$15 ] -Statement [271] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y +Statement [271] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] { } ) always clobbers reg byte a +Statement [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:176 [ processChars::ypos#0 ] Removing always clobbered register reg byte y as potential for zp[1]:176 [ processChars::ypos#0 ] -Statement [274] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [275] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [277] (word~) processChars::$23 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ) always clobbers reg byte a -Statement [278] (byte~) processChars::$24 ← (byte)(word~) processChars::$23 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ) always clobbers reg byte a -Statement [280] (byte~) processChars::$33 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ) always clobbers reg byte a -Statement [281] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN + (byte~) processChars::$33) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [282] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [283] (byte~) processChars::$27 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ) always clobbers reg byte a -Statement [285] (byte~) processChars::$34 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ) always clobbers reg byte a -Statement [286] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN + (byte~) processChars::$34) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [287] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [291] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:241 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [293] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [294] (byte~) processChars::$29 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ) always clobbers reg byte a -Statement [295] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) & (byte~) processChars::$29 [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [296] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [298] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_MIDDLE [ ] ( [ ] ) always clobbers reg byte a -Statement [299] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [300] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [301] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 heap_head#1 ] ( [ SCREEN_COPY#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ( [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ) always clobbers reg byte a -Statement [13] if((byte*) main::src#2!=(const byte*) SCREEN+(word) $3e8) goto main::@2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$11 ← (byte) main::i#2 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ) always clobbers reg byte a -Statement [16] (byte~) main::$12 ← (byte~) main::$11 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$13 ← (byte~) main::$12 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$14 ← (byte~) main::$13 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$10 ← (byte~) main::$14 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [20] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10) ← memcpy(*(&(const struct ProcessingSprite) $2), struct ProcessingSprite, (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE) [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [22] if((byte) main::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ) always clobbers reg byte a -Statement [36] *((const byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] ) always clobbers reg byte a -Statement [41] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [47] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a -Statement [48] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ) always clobbers reg byte a -Statement [49] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ) always clobbers reg byte a -Statement [50] (byte~) startProcessing::$32 ← (byte~) startProcessing::$31 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ) always clobbers reg byte a -Statement [51] (byte~) startProcessing::$27 ← (byte~) startProcessing::$32 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ) always clobbers reg byte a -Statement [52] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a -Statement [55] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a -Statement [56] (word~) startProcessing::$34 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ) always clobbers reg byte a -Statement [57] (word~) startProcessing::$35 ← (word~) startProcessing::$34 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ) always clobbers reg byte a -Statement [58] (word~) startProcessing::$1 ← (word~) startProcessing::$35 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a -Statement [59] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ) always clobbers reg byte a -Statement [60] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ) always clobbers reg byte a -Statement [61] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ) always clobbers reg byte a reg byte y -Statement [62] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [63] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a -Statement [64] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ) always clobbers reg byte a -Statement [65] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a -Statement [66] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [67] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a -Statement [68] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ) always clobbers reg byte a -Statement [69] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a -Statement [73] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a -Statement [78] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ) always clobbers reg byte a -Statement [80] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a -Statement [81] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a -Statement [82] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ) always clobbers reg byte a -Statement [83] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a -Statement [84] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a -Statement [85] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a -Statement [86] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ) always clobbers reg byte a -Statement [87] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a -Statement [88] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a -Statement [89] (byte~) startProcessing::$20 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ) always clobbers reg byte a -Statement [90] (word~) startProcessing::$21 ← (word)(byte~) startProcessing::$20 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a -Statement [91] (byte~) startProcessing::$37 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ) always clobbers reg byte a -Statement [92] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ) always clobbers reg byte a -Statement [93] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ) always clobbers reg byte a -Statement [94] (byte~) startProcessing::$40 ← (byte~) startProcessing::$39 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ) always clobbers reg byte a -Statement [95] (byte~) startProcessing::$28 ← (byte~) startProcessing::$40 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a -Statement [96] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a -Statement [97] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ) always clobbers reg byte a -Statement [98] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (word~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [99] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [100] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [101] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [102] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [103] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] ) always clobbers reg byte a -Statement [104] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [110] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ) always clobbers reg byte a -Statement [111] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ) always clobbers reg byte a -Statement [114] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a -Statement [115] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a -Statement [122] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a -Statement [123] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ) always clobbers reg byte a -Statement [127] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ) always clobbers reg byte a -Statement [128] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ) always clobbers reg byte a -Statement [129] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ) always clobbers reg byte a -Statement [130] (word~) getCharToProcess::$9 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a -Statement [131] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a -Statement [132] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a -Statement [139] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [140] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [141] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [142] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [143] *((const byte*) RASTER) ← <(const byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [144] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [145] *((const void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [150] if((byte*) initSprites::sp#2<(const byte*) SPRITE_DATA+(const byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] ) always clobbers reg byte a -Statement [152] *((const byte*) SPRITES_COLS + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] ) always clobbers reg byte a -Statement [155] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [156] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [157] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ) always clobbers reg byte a -Statement [159] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] ) always clobbers reg byte a reg byte y -Statement [161] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [162] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [166] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [167] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [171] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [172] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [173] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [174] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [175] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [176] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [177] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [179] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [180] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [181] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [182] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [183] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [184] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [185] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [186] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [187] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [188] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [189] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [192] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [193] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [195] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [196] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [199] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [201] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [202] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [203] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [205] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [206] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [210] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [211] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [215] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [216] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [218] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [219] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [220] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [221] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [222] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [226] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [227] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [228] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [229] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [230] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [231] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [233] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [234] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [236] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] ) always clobbers reg byte a -Statement [237] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [242] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_TOP [ ] ( [ ] ) always clobbers reg byte a -Statement [243] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a -Statement [244] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [245] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [248] (byte~) processChars::$62 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ) always clobbers reg byte a -Statement [249] (byte~) processChars::$63 ← (byte~) processChars::$62 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ) always clobbers reg byte a -Statement [250] (byte~) processChars::$64 ← (byte~) processChars::$63 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a -Statement [251] (byte~) processChars::$65 ← (byte~) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a -Statement [252] (byte~) processChars::$32 ← (byte~) processChars::$65 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ) always clobbers reg byte a -Statement [253] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$32 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a -Statement [254] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [255] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [256] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [257] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [258] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a -Statement [259] *((const byte*) SPRITES_COLS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [260] *((const byte*) SCREEN+(const word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [261] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [262] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [263] (byte~) processChars::$9 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$9 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$9 ] ) always clobbers reg byte a -Statement [265] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ) always clobbers reg byte a -Statement [266] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [267] (byte~) processChars::$15 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ) always clobbers reg byte a -Statement [268] (byte~) processChars::$12 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ) always clobbers reg byte a -Statement [270] (word~) processChars::$13 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ) always clobbers reg byte a reg byte y -Statement [271] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [272] *((const byte*) SPRITES_YPOS + (byte~) processChars::$15) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a -Statement [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [274] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [275] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [277] (word~) processChars::$23 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ) always clobbers reg byte a -Statement [278] (byte~) processChars::$24 ← (byte)(word~) processChars::$23 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ) always clobbers reg byte a -Statement [280] (byte~) processChars::$33 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ) always clobbers reg byte a -Statement [281] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN + (byte~) processChars::$33) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [282] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y -Statement [283] (byte~) processChars::$27 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ) always clobbers reg byte a -Statement [285] (byte~) processChars::$34 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ) always clobbers reg byte a -Statement [286] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN + (byte~) processChars::$34) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y -Statement [287] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y -Statement [291] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:241 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a -Statement [293] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y -Statement [294] (byte~) processChars::$29 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ) always clobbers reg byte a -Statement [295] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) & (byte~) processChars::$29 [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a -Statement [296] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a -Statement [298] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_MIDDLE [ ] ( [ ] ) always clobbers reg byte a -Statement [299] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a -Statement [300] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [301] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [274] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [275] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [277] (word~) processChars::$23 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] { } ) always clobbers reg byte a +Statement [278] (byte~) processChars::$24 ← (byte)(word~) processChars::$23 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] { } ) always clobbers reg byte a +Statement [280] (byte~) processChars::$33 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] { } ) always clobbers reg byte a +Statement [281] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN + (byte~) processChars::$33) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [282] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [283] (byte~) processChars::$27 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] { } ) always clobbers reg byte a +Statement [285] (byte~) processChars::$34 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] { } ) always clobbers reg byte a +Statement [286] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN + (byte~) processChars::$34) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y +Statement [287] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y +Statement [291] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:241 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a +Statement [293] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [294] (byte~) processChars::$29 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] { } ) always clobbers reg byte a +Statement [295] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) & (byte~) processChars::$29 [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a +Statement [296] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [298] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_MIDDLE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [299] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [300] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [301] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 heap_head#1 ] ( [ SCREEN_COPY#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ( [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::dst#0 ] { } ) always clobbers reg byte a +Statement [13] if((byte*) main::src#2!=(const byte*) SCREEN+(word) $3e8) goto main::@2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$11 ← (byte) main::i#2 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$11 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$12 ← (byte~) main::$11 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$12 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$13 ← (byte~) main::$12 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$13 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$14 ← (byte~) main::$13 + (byte) main::i#2 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$14 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$10 ← (byte~) main::$14 << (byte) 1 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 main::$10 ] { } ) always clobbers reg byte a +Statement [20] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10) ← memcpy(*(&(const struct ProcessingSprite) $2), struct ProcessingSprite, (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE) [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [22] if((byte) main::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] { } ) always clobbers reg byte a +Statement [41] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [47] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [48] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [49] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [50] (byte~) startProcessing::$32 ← (byte~) startProcessing::$31 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$32 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [51] (byte~) startProcessing::$27 ← (byte~) startProcessing::$32 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [52] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [55] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [56] (word~) startProcessing::$34 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [57] (word~) startProcessing::$35 ← (word~) startProcessing::$34 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$35 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [58] (word~) startProcessing::$1 ← (word~) startProcessing::$35 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [59] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [60] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [61] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [62] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [63] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$5 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [64] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [65] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [66] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [67] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [68] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [69] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN + (word~) startProcessing::$9 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [73] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [74] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [78] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [80] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [81] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [82] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT + (word~) startProcessing::$12 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$13 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [83] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [84] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [85] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [86] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP + (word~) startProcessing::$16 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$17 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [87] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [88] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [89] (byte~) startProcessing::$20 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$20 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [90] (word~) startProcessing::$21 ← (word)(byte~) startProcessing::$20 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [91] (byte~) startProcessing::$37 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [92] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [93] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [94] (byte~) startProcessing::$40 ← (byte~) startProcessing::$39 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$40 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [95] (byte~) startProcessing::$28 ← (byte~) startProcessing::$40 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [96] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [97] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$21 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [98] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (word~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [99] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [100] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [101] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [102] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [103] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$28 ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [104] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [110] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [111] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [114] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [115] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [122] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [123] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [127] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [128] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [129] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [130] (word~) getCharToProcess::$9 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [131] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [132] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [139] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [140] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [141] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [142] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [143] *((const byte*) RASTER) ← <(const byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [144] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [145] *((const void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:26 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [150] if((byte*) initSprites::sp#2<(const byte*) SPRITE_DATA+(const byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a +Statement [152] *((const byte*) SPRITES_COLS + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a +Statement [155] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [156] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [157] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [159] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:24 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y +Statement [161] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [162] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [166] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [167] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [171] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [173] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [174] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [175] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [176] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [177] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [179] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [180] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [181] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [183] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [184] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [185] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [186] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [187] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [188] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [189] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:10 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [192] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [193] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [195] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [196] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [199] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [201] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [202] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [203] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [205] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [206] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [210] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [211] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [215] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [216] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [218] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [219] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [220] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [221] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [222] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [226] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [227] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [228] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [229] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [230] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [231] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [233] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [234] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:10::atan2_16:178 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [236] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } ) always clobbers reg byte a +Statement [237] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [242] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_TOP [ ] ( [ ] { } ) always clobbers reg byte a +Statement [243] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [244] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [245] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [248] (byte~) processChars::$62 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$62 ] { } ) always clobbers reg byte a +Statement [249] (byte~) processChars::$63 ← (byte~) processChars::$62 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$63 ] { } ) always clobbers reg byte a +Statement [250] (byte~) processChars::$64 ← (byte~) processChars::$63 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] { } ) always clobbers reg byte a +Statement [251] (byte~) processChars::$65 ← (byte~) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] { } ) always clobbers reg byte a +Statement [252] (byte~) processChars::$32 ← (byte~) processChars::$65 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$32 ] { } ) always clobbers reg byte a +Statement [253] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$32 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a +Statement [254] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [255] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [256] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [257] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [258] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a +Statement [259] *((const byte*) SPRITES_COLS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [260] *((const byte*) SCREEN+(const word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [261] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [262] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [265] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a +Statement [266] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [267] (byte~) processChars::$15 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 ] { } ) always clobbers reg byte a +Statement [268] (byte~) processChars::$12 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$12 ] { } ) always clobbers reg byte a +Statement [270] (word~) processChars::$13 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::$13 ] { } ) always clobbers reg byte a reg byte y +Statement [271] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$15 processChars::ypos#0 ] { } ) always clobbers reg byte a +Statement [272] *((const byte*) SPRITES_YPOS + (byte~) processChars::$15) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a +Statement [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [274] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [275] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [277] (word~) processChars::$23 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$23 ] { } ) always clobbers reg byte a +Statement [278] (byte~) processChars::$24 ← (byte)(word~) processChars::$23 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$24 ] { } ) always clobbers reg byte a +Statement [280] (byte~) processChars::$33 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$33 ] { } ) always clobbers reg byte a +Statement [281] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN + (byte~) processChars::$33) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [282] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [283] (byte~) processChars::$27 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$27 ] { } ) always clobbers reg byte a +Statement [285] (byte~) processChars::$34 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$34 ] { } ) always clobbers reg byte a +Statement [286] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN + (byte~) processChars::$34) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y +Statement [287] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y +Statement [291] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:241 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a +Statement [293] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [294] (byte~) processChars::$29 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::$29 ] { } ) always clobbers reg byte a +Statement [295] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) & (byte~) processChars::$29 [ processChars::i#10 processChars::numActive#10 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a +Statement [296] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:241 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [298] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_MIDDLE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [299] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [300] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [301] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[2]:2 [ main::src#2 main::src#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , @@ -7349,15 +7345,15 @@ Potential registers zp[1]:184 [ processChars::$34 ] : zp[1]:184 , reg byte a , r Potential registers zp[1]:185 [ processChars::$29 ] : zp[1]:185 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:43 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:44 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:46 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:39 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:34 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:36 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:156 [ atan2_16::$23 ] 2,002: zp[1]:157 [ atan2_16::$22 ] 1,710.04: zp[1]:38 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:146 [ atan2_16::return#2 ] 50: zp[2]:41 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:142 [ atan2_16::x#0 ] 2.72: zp[2]:144 [ atan2_16::y#0 ] -Uplift Scope [getCharToProcess] 4,983.53: zp[1]:23 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,432.25: zp[1]:20 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,937.96: zp[1]:22 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 1,949.11: zp[1]:21 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,557.11: zp[1]:19 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 181.2: zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 140.57: zp[2]:16 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] 135.09: zp[2]:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] 7.33: zp[1]:63 [ getCharToProcess::return_x#0 ] 7.33: zp[1]:64 [ getCharToProcess::return_y#0 ] 7.33: zp[1]:65 [ getCharToProcess::return_dist#0 ] 4: zp[2]:127 [ getCharToProcess::$12 ] 4: zp[2]:129 [ getCharToProcess::$13 ] 4: zp[2]:131 [ getCharToProcess::$9 ] 4: zp[2]:133 [ getCharToProcess::$10 ] 3: zp[2]:125 [ getCharToProcess::$8 ] -Uplift Scope [startProcessing] 2,589.5: zp[1]:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp[1]:71 [ startProcessing::$29 ] 2,002: zp[1]:72 [ startProcessing::$30 ] 2,002: zp[1]:73 [ startProcessing::$31 ] 2,002: zp[1]:74 [ startProcessing::$32 ] 2,002: zp[1]:75 [ startProcessing::$27 ] 222.2: zp[1]:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp[2]:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp[1]:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp[2]:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp[2]:78 [ startProcessing::$34 ] 4: zp[2]:80 [ startProcessing::$35 ] 4: zp[2]:82 [ startProcessing::$1 ] 4: zp[2]:86 [ startProcessing::colPtr#0 ] 4: zp[2]:91 [ startProcessing::$5 ] 4: zp[2]:93 [ startProcessing::$6 ] 4: zp[2]:96 [ startProcessing::$8 ] 4: zp[2]:98 [ startProcessing::$9 ] 4: zp[2]:100 [ startProcessing::$11 ] 4: zp[2]:102 [ startProcessing::$12 ] 4: zp[2]:104 [ startProcessing::$13 ] 4: zp[2]:108 [ startProcessing::$15 ] 4: zp[2]:110 [ startProcessing::$16 ] 4: zp[2]:112 [ startProcessing::$17 ] 4: zp[1]:120 [ startProcessing::$37 ] 4: zp[1]:121 [ startProcessing::$38 ] 4: zp[1]:122 [ startProcessing::$39 ] 4: zp[1]:123 [ startProcessing::$40 ] 3: zp[2]:76 [ startProcessing::$0 ] 2.22: zp[1]:124 [ startProcessing::$28 ] 2: zp[2]:84 [ startProcessing::offset#0 ] 2: zp[1]:95 [ startProcessing::ch#0 ] 2: zp[1]:117 [ startProcessing::$20 ] 0.5: zp[2]:118 [ startProcessing::$21 ] 0.4: zp[2]:114 [ startProcessing::spriteY#0 ] 0.31: zp[1]:69 [ startProcessing::center_x#0 ] 0.31: zp[2]:106 [ startProcessing::spriteX#0 ] 0.31: zp[1]:116 [ startProcessing::spritePtr#0 ] 0.24: zp[1]:70 [ startProcessing::center_y#0 ] 0.14: zp[2]:89 [ startProcessing::screenPtr#0 ] 0.1: zp[1]:88 [ startProcessing::spriteCol#0 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:135 [ init_angle_screen::$3 ] 202: zp[1]:136 [ init_angle_screen::$4 ] 202: zp[1]:139 [ init_angle_screen::$7 ] 202: zp[2]:148 [ init_angle_screen::angle_w#0 ] 202: zp[2]:150 [ init_angle_screen::$11 ] 202: zp[1]:153 [ init_angle_screen::$13 ] 202: zp[1]:154 [ init_angle_screen::$14 ] 202: zp[1]:155 [ init_angle_screen::$15 ] 129.86: zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 84.17: zp[1]:152 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:140 [ init_angle_screen::yw#0 ] 33.67: zp[2]:137 [ init_angle_screen::xw#0 ] 21.23: zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 20.37: zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 16.92: zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 3: zp[2]:56 [ init_angle_screen::screen#0 ] -Uplift Scope [processChars] 33.73: zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp[1]:160 [ processChars::$62 ] 22: zp[1]:161 [ processChars::$63 ] 22: zp[1]:162 [ processChars::$64 ] 22: zp[1]:163 [ processChars::$65 ] 22: zp[1]:164 [ processChars::$32 ] 22: zp[1]:170 [ processChars::$9 ] 22: zp[1]:171 [ processChars::$10 ] 22: zp[1]:173 [ processChars::$12 ] 22: zp[1]:179 [ processChars::$24 ] 22: zp[1]:180 [ processChars::xchar#0 ] 22: zp[1]:181 [ processChars::$33 ] 22: zp[1]:182 [ processChars::$27 ] 22: zp[1]:183 [ processChars::ychar#0 ] 22: zp[1]:184 [ processChars::$34 ] 22: zp[1]:185 [ processChars::$29 ] 17.9: zp[1]:50 [ processChars::i#10 processChars::i#1 ] 11: zp[2]:174 [ processChars::$13 ] 11: zp[2]:177 [ processChars::$23 ] 6.6: zp[1]:172 [ processChars::$15 ] 2.75: zp[1]:176 [ processChars::ypos#0 ] 2.2: zp[1]:167 [ processChars::bitmask#0 ] 2.06: zp[2]:168 [ processChars::xpos#0 ] 0.31: zp[2]:165 [ processChars::processing#0 ] -Uplift Scope [main] 34.75: zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] 25.67: zp[2]:2 [ main::src#2 main::src#1 ] 24.36: zp[1]:6 [ main::i#2 main::i#1 ] 22: zp[1]:58 [ main::$11 ] 22: zp[1]:59 [ main::$12 ] 22: zp[1]:60 [ main::$13 ] 22: zp[1]:61 [ main::$14 ] 22: zp[1]:62 [ main::$10 ] 22: zp[1]:68 [ main::center_dist#0 ] 5.5: zp[1]:66 [ main::center_x#0 ] 5.5: zp[1]:67 [ main::center_y#0 ] -Uplift Scope [initSprites] 36.67: zp[2]:24 [ initSprites::sp#2 initSprites::sp#1 ] 33: zp[1]:26 [ initSprites::i#2 initSprites::i#1 ] -Uplift Scope [] 5: zp[2]:48 [ heap_head#5 heap_head#1 ] 0.03: zp[2]:54 [ SCREEN_DIST#0 ] 0.03: zp[2]:52 [ SCREEN_COPY#0 ] -Uplift Scope [malloc] 0.8: zp[2]:158 [ malloc::mem#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:43 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:44 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:46 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:39 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:34 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:36 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:156 [ atan2_16::$23 ] 200,000,002: zp[1]:157 [ atan2_16::$22 ] 170,833,335.04: zp[1]:38 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:41 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:146 [ atan2_16::return#2 ] 10,789.61: zp[2]:142 [ atan2_16::x#0 ] 10,250.12: zp[2]:144 [ atan2_16::y#0 ] +Uplift Scope [getCharToProcess] 4,977,844.03: zp[1]:23 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,425,007.25: zp[1]:20 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,932,466.39: zp[1]:22 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 1,944,509.61: zp[1]:21 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,555,557.11: zp[1]:19 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 180,001.2: zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 137,788.5: zp[2]:16 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] 133,386.32: zp[2]:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] 2,002: zp[2]:127 [ getCharToProcess::$12 ] 2,002: zp[2]:129 [ getCharToProcess::$13 ] 2,002: zp[2]:131 [ getCharToProcess::$9 ] 2,002: zp[2]:133 [ getCharToProcess::$10 ] 1,501.5: zp[2]:125 [ getCharToProcess::$8 ] 67.33: zp[1]:63 [ getCharToProcess::return_x#0 ] 67.33: zp[1]:64 [ getCharToProcess::return_y#0 ] 67.33: zp[1]:65 [ getCharToProcess::return_dist#0 ] +Uplift Scope [startProcessing] 2,584,934.66: zp[1]:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,000,002: zp[1]:71 [ startProcessing::$29 ] 2,000,002: zp[1]:72 [ startProcessing::$30 ] 2,000,002: zp[1]:73 [ startProcessing::$31 ] 2,000,002: zp[1]:74 [ startProcessing::$32 ] 2,000,002: zp[1]:75 [ startProcessing::$27 ] 220,002.2: zp[1]:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 200,788.5: zp[2]:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 200,002: zp[1]:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 167,669.33: zp[2]:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 2,002: zp[2]:78 [ startProcessing::$34 ] 2,002: zp[2]:80 [ startProcessing::$35 ] 2,002: zp[2]:82 [ startProcessing::$1 ] 2,002: zp[2]:86 [ startProcessing::colPtr#0 ] 2,002: zp[2]:91 [ startProcessing::$5 ] 2,002: zp[2]:93 [ startProcessing::$6 ] 2,002: zp[2]:96 [ startProcessing::$8 ] 2,002: zp[2]:98 [ startProcessing::$9 ] 2,002: zp[2]:100 [ startProcessing::$11 ] 2,002: zp[2]:102 [ startProcessing::$12 ] 2,002: zp[2]:104 [ startProcessing::$13 ] 2,002: zp[2]:108 [ startProcessing::$15 ] 2,002: zp[2]:110 [ startProcessing::$16 ] 2,002: zp[2]:112 [ startProcessing::$17 ] 2,002: zp[1]:120 [ startProcessing::$37 ] 2,002: zp[1]:121 [ startProcessing::$38 ] 2,002: zp[1]:122 [ startProcessing::$39 ] 2,002: zp[1]:123 [ startProcessing::$40 ] 1,501.5: zp[2]:76 [ startProcessing::$0 ] 1,112.22: zp[1]:124 [ startProcessing::$28 ] 1,001: zp[2]:84 [ startProcessing::offset#0 ] 1,001: zp[1]:95 [ startProcessing::ch#0 ] 1,001: zp[1]:117 [ startProcessing::$20 ] 250.25: zp[2]:118 [ startProcessing::$21 ] 200.2: zp[2]:114 [ startProcessing::spriteY#0 ] 154: zp[2]:106 [ startProcessing::spriteX#0 ] 154: zp[1]:116 [ startProcessing::spritePtr#0 ] 71.5: zp[2]:89 [ startProcessing::screenPtr#0 ] 48.83: zp[1]:88 [ startProcessing::spriteCol#0 ] 26.24: zp[1]:69 [ startProcessing::center_x#0 ] 2.24: zp[1]:70 [ startProcessing::center_y#0 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:135 [ init_angle_screen::$3 ] 20,002: zp[1]:136 [ init_angle_screen::$4 ] 20,002: zp[1]:139 [ init_angle_screen::$7 ] 20,002: zp[2]:148 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:150 [ init_angle_screen::$11 ] 20,002: zp[1]:153 [ init_angle_screen::$13 ] 20,002: zp[1]:154 [ init_angle_screen::$14 ] 20,002: zp[1]:155 [ init_angle_screen::$15 ] 12,858.43: zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:152 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:140 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:137 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:56 [ init_angle_screen::screen#0 ] +Uplift Scope [initSprites] 3,336.67: zp[2]:24 [ initSprites::sp#2 initSprites::sp#1 ] 3,003: zp[1]:26 [ initSprites::i#2 initSprites::i#1 ] +Uplift Scope [processChars] 309.73: zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 202: zp[1]:160 [ processChars::$62 ] 202: zp[1]:161 [ processChars::$63 ] 202: zp[1]:162 [ processChars::$64 ] 202: zp[1]:163 [ processChars::$65 ] 202: zp[1]:164 [ processChars::$32 ] 202: zp[1]:170 [ processChars::$9 ] 202: zp[1]:171 [ processChars::$10 ] 202: zp[1]:173 [ processChars::$12 ] 202: zp[1]:179 [ processChars::$24 ] 202: zp[1]:180 [ processChars::xchar#0 ] 202: zp[1]:181 [ processChars::$33 ] 202: zp[1]:182 [ processChars::$27 ] 202: zp[1]:183 [ processChars::ychar#0 ] 202: zp[1]:184 [ processChars::$34 ] 202: zp[1]:185 [ processChars::$29 ] 164.39: zp[1]:50 [ processChars::i#10 processChars::i#1 ] 101: zp[2]:174 [ processChars::$13 ] 101: zp[2]:177 [ processChars::$23 ] 60.6: zp[1]:172 [ processChars::$15 ] 25.25: zp[1]:176 [ processChars::ypos#0 ] 20.2: zp[1]:167 [ processChars::bitmask#0 ] 18.94: zp[2]:168 [ processChars::xpos#0 ] 2.89: zp[2]:165 [ processChars::processing#0 ] +Uplift Scope [main] 302.5: zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] 235.67: zp[2]:2 [ main::src#2 main::src#1 ] 223.64: zp[1]:6 [ main::i#2 main::i#1 ] 202: zp[1]:58 [ main::$11 ] 202: zp[1]:59 [ main::$12 ] 202: zp[1]:60 [ main::$13 ] 202: zp[1]:61 [ main::$14 ] 202: zp[1]:62 [ main::$10 ] 202: zp[1]:68 [ main::center_dist#0 ] 50.5: zp[1]:66 [ main::center_x#0 ] 50.5: zp[1]:67 [ main::center_y#0 ] +Uplift Scope [] 16.25: zp[2]:48 [ heap_head#5 heap_head#1 ] 0.03: zp[2]:54 [ SCREEN_DIST#0 ] 0.03: zp[2]:52 [ SCREEN_COPY#0 ] +Uplift Scope [malloc] 4.4: zp[2]:158 [ malloc::mem#0 ] Uplift Scope [RADIX] Uplift Scope [ProcessingChar] Uplift Scope [ProcessingSprite] @@ -7366,15 +7362,15 @@ Uplift Scope [setupRasterIrq] Uplift Scope [irqTop] Uplift Scope [irqBottom] -Uplifting [atan2_16] best 1279112 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:44 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:46 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:39 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:34 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:36 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:146 [ atan2_16::return#2 ] zp[2]:41 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:142 [ atan2_16::x#0 ] zp[2]:144 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1279112 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:44 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:46 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:39 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:34 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:36 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:41 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:146 [ atan2_16::return#2 ] zp[2]:142 [ atan2_16::x#0 ] zp[2]:144 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [getCharToProcess] best 1265779 combination reg byte x [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp[1]:20 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp[1]:22 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] zp[1]:21 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp[1]:19 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp[2]:16 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] zp[2]:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] zp[1]:63 [ getCharToProcess::return_x#0 ] zp[1]:64 [ getCharToProcess::return_y#0 ] zp[1]:65 [ getCharToProcess::return_dist#0 ] zp[2]:127 [ getCharToProcess::$12 ] zp[2]:129 [ getCharToProcess::$13 ] zp[2]:131 [ getCharToProcess::$9 ] zp[2]:133 [ getCharToProcess::$10 ] zp[2]:125 [ getCharToProcess::$8 ] +Uplifting [getCharToProcess] best 1265779 combination reg byte x [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp[1]:20 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp[1]:22 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] zp[1]:21 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp[1]:19 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp[2]:16 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] zp[2]:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] zp[2]:127 [ getCharToProcess::$12 ] zp[2]:129 [ getCharToProcess::$13 ] zp[2]:131 [ getCharToProcess::$9 ] zp[2]:133 [ getCharToProcess::$10 ] zp[2]:125 [ getCharToProcess::$8 ] zp[1]:63 [ getCharToProcess::return_x#0 ] zp[1]:64 [ getCharToProcess::return_y#0 ] zp[1]:65 [ getCharToProcess::return_dist#0 ] Limited combination testing to 100 combinations of 46656 possible. Uplifting [init_angle_screen] best 1264179 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:148 [ init_angle_screen::angle_w#0 ] zp[2]:150 [ init_angle_screen::$11 ] zp[1]:153 [ init_angle_screen::$13 ] zp[1]:154 [ init_angle_screen::$14 ] zp[1]:155 [ init_angle_screen::$15 ] zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:152 [ init_angle_screen::ang_w#0 ] zp[2]:140 [ init_angle_screen::yw#0 ] zp[2]:137 [ init_angle_screen::xw#0 ] zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:56 [ init_angle_screen::screen#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [main] best 1263939 combination zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] zp[2]:2 [ main::src#2 main::src#1 ] zp[1]:6 [ main::i#2 main::i#1 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] zp[1]:62 [ main::$10 ] zp[1]:68 [ main::center_dist#0 ] zp[1]:66 [ main::center_x#0 ] zp[1]:67 [ main::center_y#0 ] +Uplifting [initSprites] best 1264059 combination zp[2]:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [main] best 1263819 combination zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] zp[2]:2 [ main::src#2 main::src#1 ] zp[1]:6 [ main::i#2 main::i#1 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] zp[1]:62 [ main::$10 ] zp[1]:68 [ main::center_dist#0 ] zp[1]:66 [ main::center_x#0 ] zp[1]:67 [ main::center_y#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [initSprites] best 1263819 combination zp[2]:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] Uplifting [] best 1263819 combination zp[2]:48 [ heap_head#5 heap_head#1 ] zp[2]:54 [ SCREEN_DIST#0 ] zp[2]:52 [ SCREEN_COPY#0 ] Uplifting [malloc] best 1263819 combination zp[2]:158 [ malloc::mem#0 ] Uplifting [RADIX] best 1263819 combination @@ -7406,102 +7402,102 @@ Attempting to uplift remaining variables inzp[1]:19 [ getCharToProcess::x#2 getC Uplifting [getCharToProcess] best 1217819 combination reg byte y [ getCharToProcess::x#2 getCharToProcess::x#1 ] Attempting to uplift remaining variables inzp[1]:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Uplifting [startProcessing] best 1216919 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Attempting to uplift remaining variables inzp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Uplifting [init_angle_screen] best 1216919 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] Attempting to uplift remaining variables inzp[1]:13 [ startProcessing::i1#2 startProcessing::i1#1 ] Uplifting [startProcessing] best 1216019 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Attempting to uplift remaining variables inzp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 1216019 combination zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Attempting to uplift remaining variables inzp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] +Uplifting [init_angle_screen] best 1216019 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] Attempting to uplift remaining variables inzp[1]:153 [ init_angle_screen::$13 ] Uplifting [init_angle_screen] best 1215419 combination reg byte a [ init_angle_screen::$13 ] Attempting to uplift remaining variables inzp[1]:154 [ init_angle_screen::$14 ] Uplifting [init_angle_screen] best 1215019 combination reg byte a [ init_angle_screen::$14 ] Attempting to uplift remaining variables inzp[1]:155 [ init_angle_screen::$15 ] Uplifting [init_angle_screen] best 1214419 combination reg byte a [ init_angle_screen::$15 ] -Attempting to uplift remaining variables inzp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 1214419 combination zp[1]:18 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Attempting to uplift remaining variables inzp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Uplifting [init_angle_screen] best 1214419 combination zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Attempting to uplift remaining variables inzp[1]:152 [ init_angle_screen::ang_w#0 ] Uplifting [init_angle_screen] best 1214419 combination zp[1]:152 [ init_angle_screen::ang_w#0 ] -Attempting to uplift remaining variables inzp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Uplifting [processChars] best 1214419 combination zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ main::i#2 main::i#1 ] -Uplifting [main] best 1214419 combination zp[1]:6 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:62 [ main::$10 ] -Uplifting [main] best 1214379 combination reg byte a [ main::$10 ] -Attempting to uplift remaining variables inzp[1]:68 [ main::center_dist#0 ] -Uplifting [main] best 1214319 combination reg byte a [ main::center_dist#0 ] -Attempting to uplift remaining variables inzp[1]:160 [ processChars::$62 ] -Uplifting [processChars] best 1214259 combination reg byte a [ processChars::$62 ] -Attempting to uplift remaining variables inzp[1]:161 [ processChars::$63 ] -Uplifting [processChars] best 1214199 combination reg byte a [ processChars::$63 ] -Attempting to uplift remaining variables inzp[1]:162 [ processChars::$64 ] -Uplifting [processChars] best 1214139 combination reg byte a [ processChars::$64 ] -Attempting to uplift remaining variables inzp[1]:163 [ processChars::$65 ] -Uplifting [processChars] best 1214079 combination reg byte a [ processChars::$65 ] -Attempting to uplift remaining variables inzp[1]:164 [ processChars::$32 ] -Uplifting [processChars] best 1214019 combination reg byte a [ processChars::$32 ] -Attempting to uplift remaining variables inzp[1]:170 [ processChars::$9 ] -Uplifting [processChars] best 1213959 combination reg byte a [ processChars::$9 ] -Attempting to uplift remaining variables inzp[1]:171 [ processChars::$10 ] -Uplifting [processChars] best 1213899 combination reg byte a [ processChars::$10 ] -Attempting to uplift remaining variables inzp[1]:173 [ processChars::$12 ] -Uplifting [processChars] best 1213839 combination reg byte a [ processChars::$12 ] -Attempting to uplift remaining variables inzp[1]:179 [ processChars::$24 ] -Uplifting [processChars] best 1213799 combination reg byte a [ processChars::$24 ] -Attempting to uplift remaining variables inzp[1]:180 [ processChars::xchar#0 ] -Uplifting [processChars] best 1213739 combination reg byte a [ processChars::xchar#0 ] -Attempting to uplift remaining variables inzp[1]:181 [ processChars::$33 ] -Uplifting [processChars] best 1213699 combination reg byte a [ processChars::$33 ] -Attempting to uplift remaining variables inzp[1]:182 [ processChars::$27 ] -Uplifting [processChars] best 1213659 combination reg byte a [ processChars::$27 ] -Attempting to uplift remaining variables inzp[1]:183 [ processChars::ychar#0 ] -Uplifting [processChars] best 1213599 combination reg byte a [ processChars::ychar#0 ] -Attempting to uplift remaining variables inzp[1]:184 [ processChars::$34 ] -Uplifting [processChars] best 1213559 combination reg byte a [ processChars::$34 ] -Attempting to uplift remaining variables inzp[1]:185 [ processChars::$29 ] -Uplifting [processChars] best 1213499 combination reg byte a [ processChars::$29 ] -Attempting to uplift remaining variables inzp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Uplifting [init_angle_screen] best 1213499 combination zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Attempting to uplift remaining variables inzp[1]:50 [ processChars::i#10 processChars::i#1 ] -Uplifting [processChars] best 1213499 combination zp[1]:50 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp[1]:63 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 1213439 combination reg byte y [ getCharToProcess::return_x#0 ] -Attempting to uplift remaining variables inzp[1]:64 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 1213379 combination reg byte a [ getCharToProcess::return_y#0 ] -Attempting to uplift remaining variables inzp[1]:65 [ getCharToProcess::return_dist#0 ] -Uplifting [getCharToProcess] best 1213339 combination reg byte x [ getCharToProcess::return_dist#0 ] -Attempting to uplift remaining variables inzp[1]:172 [ processChars::$15 ] -Uplifting [processChars] best 1213269 combination reg byte x [ processChars::$15 ] -Attempting to uplift remaining variables inzp[1]:66 [ main::center_x#0 ] -Uplifting [main] best 1213209 combination reg byte y [ main::center_x#0 ] -Attempting to uplift remaining variables inzp[1]:67 [ main::center_y#0 ] -Uplifting [main] best 1213209 combination zp[1]:67 [ main::center_y#0 ] Attempting to uplift remaining variables inzp[1]:120 [ startProcessing::$37 ] -Uplifting [startProcessing] best 1213203 combination reg byte a [ startProcessing::$37 ] +Uplifting [startProcessing] best 1214413 combination reg byte a [ startProcessing::$37 ] Attempting to uplift remaining variables inzp[1]:121 [ startProcessing::$38 ] -Uplifting [startProcessing] best 1213197 combination reg byte a [ startProcessing::$38 ] +Uplifting [startProcessing] best 1214407 combination reg byte a [ startProcessing::$38 ] Attempting to uplift remaining variables inzp[1]:122 [ startProcessing::$39 ] -Uplifting [startProcessing] best 1213191 combination reg byte a [ startProcessing::$39 ] +Uplifting [startProcessing] best 1214401 combination reg byte a [ startProcessing::$39 ] Attempting to uplift remaining variables inzp[1]:123 [ startProcessing::$40 ] -Uplifting [startProcessing] best 1213185 combination reg byte a [ startProcessing::$40 ] -Attempting to uplift remaining variables inzp[1]:176 [ processChars::ypos#0 ] -Uplifting [processChars] best 1213185 combination zp[1]:176 [ processChars::ypos#0 ] +Uplifting [startProcessing] best 1214395 combination reg byte a [ startProcessing::$40 ] +Attempting to uplift remaining variables inzp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] +Uplifting [init_angle_screen] best 1214395 combination zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Attempting to uplift remaining variables inzp[1]:124 [ startProcessing::$28 ] -Uplifting [startProcessing] best 1213157 combination reg byte x [ startProcessing::$28 ] -Attempting to uplift remaining variables inzp[1]:167 [ processChars::bitmask#0 ] -Uplifting [processChars] best 1213157 combination zp[1]:167 [ processChars::bitmask#0 ] +Uplifting [startProcessing] best 1214367 combination reg byte x [ startProcessing::$28 ] Attempting to uplift remaining variables inzp[1]:95 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 1213151 combination reg byte a [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 1214361 combination reg byte a [ startProcessing::ch#0 ] Attempting to uplift remaining variables inzp[1]:117 [ startProcessing::$20 ] -Uplifting [startProcessing] best 1213145 combination reg byte a [ startProcessing::$20 ] -Attempting to uplift remaining variables inzp[1]:69 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 1213145 combination zp[1]:69 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 1214355 combination reg byte a [ startProcessing::$20 ] +Attempting to uplift remaining variables inzp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [processChars] best 1214355 combination zp[1]:51 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Attempting to uplift remaining variables inzp[1]:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 1214355 combination zp[1]:6 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:62 [ main::$10 ] +Uplifting [main] best 1214315 combination reg byte a [ main::$10 ] +Attempting to uplift remaining variables inzp[1]:68 [ main::center_dist#0 ] +Uplifting [main] best 1214255 combination reg byte a [ main::center_dist#0 ] +Attempting to uplift remaining variables inzp[1]:160 [ processChars::$62 ] +Uplifting [processChars] best 1214195 combination reg byte a [ processChars::$62 ] +Attempting to uplift remaining variables inzp[1]:161 [ processChars::$63 ] +Uplifting [processChars] best 1214135 combination reg byte a [ processChars::$63 ] +Attempting to uplift remaining variables inzp[1]:162 [ processChars::$64 ] +Uplifting [processChars] best 1214075 combination reg byte a [ processChars::$64 ] +Attempting to uplift remaining variables inzp[1]:163 [ processChars::$65 ] +Uplifting [processChars] best 1214015 combination reg byte a [ processChars::$65 ] +Attempting to uplift remaining variables inzp[1]:164 [ processChars::$32 ] +Uplifting [processChars] best 1213955 combination reg byte a [ processChars::$32 ] +Attempting to uplift remaining variables inzp[1]:170 [ processChars::$9 ] +Uplifting [processChars] best 1213895 combination reg byte a [ processChars::$9 ] +Attempting to uplift remaining variables inzp[1]:171 [ processChars::$10 ] +Uplifting [processChars] best 1213835 combination reg byte a [ processChars::$10 ] +Attempting to uplift remaining variables inzp[1]:173 [ processChars::$12 ] +Uplifting [processChars] best 1213775 combination reg byte a [ processChars::$12 ] +Attempting to uplift remaining variables inzp[1]:179 [ processChars::$24 ] +Uplifting [processChars] best 1213735 combination reg byte a [ processChars::$24 ] +Attempting to uplift remaining variables inzp[1]:180 [ processChars::xchar#0 ] +Uplifting [processChars] best 1213675 combination reg byte a [ processChars::xchar#0 ] +Attempting to uplift remaining variables inzp[1]:181 [ processChars::$33 ] +Uplifting [processChars] best 1213635 combination reg byte a [ processChars::$33 ] +Attempting to uplift remaining variables inzp[1]:182 [ processChars::$27 ] +Uplifting [processChars] best 1213595 combination reg byte a [ processChars::$27 ] +Attempting to uplift remaining variables inzp[1]:183 [ processChars::ychar#0 ] +Uplifting [processChars] best 1213535 combination reg byte a [ processChars::ychar#0 ] +Attempting to uplift remaining variables inzp[1]:184 [ processChars::$34 ] +Uplifting [processChars] best 1213495 combination reg byte a [ processChars::$34 ] +Attempting to uplift remaining variables inzp[1]:185 [ processChars::$29 ] +Uplifting [processChars] best 1213435 combination reg byte a [ processChars::$29 ] +Attempting to uplift remaining variables inzp[1]:50 [ processChars::i#10 processChars::i#1 ] +Uplifting [processChars] best 1213435 combination zp[1]:50 [ processChars::i#10 processChars::i#1 ] Attempting to uplift remaining variables inzp[1]:116 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 1213145 combination zp[1]:116 [ startProcessing::spritePtr#0 ] -Attempting to uplift remaining variables inzp[1]:70 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 1213145 combination zp[1]:70 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 1213435 combination zp[1]:116 [ startProcessing::spritePtr#0 ] +Attempting to uplift remaining variables inzp[1]:63 [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 1213375 combination reg byte y [ getCharToProcess::return_x#0 ] +Attempting to uplift remaining variables inzp[1]:64 [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 1213315 combination reg byte a [ getCharToProcess::return_y#0 ] +Attempting to uplift remaining variables inzp[1]:65 [ getCharToProcess::return_dist#0 ] +Uplifting [getCharToProcess] best 1213275 combination reg byte x [ getCharToProcess::return_dist#0 ] +Attempting to uplift remaining variables inzp[1]:172 [ processChars::$15 ] +Uplifting [processChars] best 1213205 combination reg byte x [ processChars::$15 ] +Attempting to uplift remaining variables inzp[1]:66 [ main::center_x#0 ] +Uplifting [main] best 1213145 combination reg byte y [ main::center_x#0 ] +Attempting to uplift remaining variables inzp[1]:67 [ main::center_y#0 ] +Uplifting [main] best 1213145 combination zp[1]:67 [ main::center_y#0 ] Attempting to uplift remaining variables inzp[1]:88 [ startProcessing::spriteCol#0 ] Uplifting [startProcessing] best 1213145 combination zp[1]:88 [ startProcessing::spriteCol#0 ] +Attempting to uplift remaining variables inzp[1]:69 [ startProcessing::center_x#0 ] +Uplifting [startProcessing] best 1213145 combination zp[1]:69 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp[1]:176 [ processChars::ypos#0 ] +Uplifting [processChars] best 1213145 combination zp[1]:176 [ processChars::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:167 [ processChars::bitmask#0 ] +Uplifting [processChars] best 1213145 combination zp[1]:167 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp[1]:70 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 1213145 combination zp[1]:70 [ startProcessing::center_y#0 ] Coalescing zero page register [ zp[2]:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp[2]:98 [ startProcessing::$9 ] ] - score: 1 Coalescing zero page register [ zp[2]:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp[2]:93 [ startProcessing::$6 ] ] - score: 1 Coalescing zero page register [ zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:56 [ init_angle_screen::screen#0 ] ] - score: 1 @@ -9930,10 +9926,10 @@ FINAL SYMBOL TABLE (const word) YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM<<(byte) 4 (const word) YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP-(byte) 8<<(byte) 4 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:19 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:21 4.0 +(signed word~) atan2_16::$2 zp[2]:19 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:21 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -9957,61 +9953,61 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:24 3.0 -(word) atan2_16::angle#11 angle zp[2]:24 4.0 -(word) atan2_16::angle#12 angle zp[2]:24 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:24 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:24 2002.0 -(word) atan2_16::angle#3 angle zp[2]:24 2002.0 -(word) atan2_16::angle#4 angle zp[2]:24 4.0 -(word) atan2_16::angle#5 angle zp[2]:24 4.0 -(word) atan2_16::angle#6 angle zp[2]:24 2004.0 +(word) atan2_16::angle#1 angle zp[2]:24 150001.5 +(word) atan2_16::angle#11 angle zp[2]:24 200002.0 +(word) atan2_16::angle#12 angle zp[2]:24 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:24 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:24 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:24 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:24 200002.0 +(word) atan2_16::angle#5 angle zp[2]:24 200002.0 +(word) atan2_16::angle#6 angle zp[2]:24 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:24 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:24 202.0 +(word) atan2_16::return#0 return zp[2]:24 70001.0 +(word) atan2_16::return#2 return zp[2]:24 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:31 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:31 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:29 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:29 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:29 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:29 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:29 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:29 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:29 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:29 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:29 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:29 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:21 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:21 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:21 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:21 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:21 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:21 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:21 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:21 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:21 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:21 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:21 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:21 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:33 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:33 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:26 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:26 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:26 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:26 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:26 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:26 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:26 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:26 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:26 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:26 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:19 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:19 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:19 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:19 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:19 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:19 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:19 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:19 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:19 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:19 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:19 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:19 1.00000001E8 (struct ProcessingChar()) getCharToProcess() -(byte*~) getCharToProcess::$10 zp[2]:31 4.0 -(word~) getCharToProcess::$12 zp[2]:33 4.0 -(word~) getCharToProcess::$13 zp[2]:31 4.0 -(word~) getCharToProcess::$8 zp[2]:31 3.0 -(word~) getCharToProcess::$9 zp[2]:31 4.0 +(byte*~) getCharToProcess::$10 zp[2]:31 2002.0 +(word~) getCharToProcess::$12 zp[2]:33 2002.0 +(word~) getCharToProcess::$13 zp[2]:31 2002.0 +(word~) getCharToProcess::$8 zp[2]:31 1501.5 +(word~) getCharToProcess::$9 zp[2]:31 2002.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -10026,49 +10022,49 @@ FINAL SYMBOL TABLE (label) getCharToProcess::@9 (label) getCharToProcess::@return (byte) getCharToProcess::closest_dist -(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:16 202.0 -(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:16 2002.0 -(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:16 1026.25 -(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:16 202.0 +(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:16 200002.0 +(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:16 2000002.0 +(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:16 1025001.25 +(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:16 200002.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp[1]:23 517.3333333333334 -(byte) getCharToProcess::closest_x#9 closest_x zp[1]:23 202.0 +(byte) getCharToProcess::closest_x#7 closest_x zp[1]:23 516667.3333333334 +(byte) getCharToProcess::closest_x#9 closest_x zp[1]:23 200002.0 (byte) getCharToProcess::closest_y -(byte) getCharToProcess::closest_y#7 closest_y zp[1]:28 517.3333333333334 -(byte) getCharToProcess::closest_y#9 closest_y zp[1]:28 202.0 +(byte) getCharToProcess::closest_y#7 closest_y zp[1]:28 516667.3333333334 +(byte) getCharToProcess::closest_y#9 closest_y zp[1]:28 200002.0 (byte) getCharToProcess::dist -(byte) getCharToProcess::dist#0 reg byte x 750.75 +(byte) getCharToProcess::dist#0 reg byte x 750000.75 (byte*) getCharToProcess::dist_line -(byte*) getCharToProcess::dist_line#0 dist_line zp[2]:8 4.0 -(byte*) getCharToProcess::dist_line#1 dist_line zp[2]:8 50.5 -(byte*) getCharToProcess::dist_line#6 dist_line zp[2]:8 86.07142857142857 +(byte*) getCharToProcess::dist_line#0 dist_line zp[2]:8 2002.0 +(byte*) getCharToProcess::dist_line#1 dist_line zp[2]:8 50000.5 +(byte*) getCharToProcess::dist_line#6 dist_line zp[2]:8 85785.99999999999 (struct ProcessingChar) getCharToProcess::return (byte) getCharToProcess::return_dist -(byte) getCharToProcess::return_dist#0 reg byte x 7.333333333333333 -(byte) getCharToProcess::return_dist#1 reg byte x 228.7777777777778 -(byte) getCharToProcess::return_dist#5 reg byte x 2002.0 -(byte) getCharToProcess::return_dist#6 reg byte x 2002.0 +(byte) getCharToProcess::return_dist#0 reg byte x 67.33333333333333 +(byte) getCharToProcess::return_dist#1 reg byte x 227839.2777777778 +(byte) getCharToProcess::return_dist#5 reg byte x 2000002.0 +(byte) getCharToProcess::return_dist#6 reg byte x 2000002.0 (byte) getCharToProcess::return_x -(byte) getCharToProcess::return_x#0 reg byte y 7.333333333333333 -(byte) getCharToProcess::return_x#1 return_x zp[1]:23 228.7777777777778 -(byte) getCharToProcess::return_x#7 return_x zp[1]:23 1001.0 +(byte) getCharToProcess::return_x#0 reg byte y 67.33333333333333 +(byte) getCharToProcess::return_x#1 return_x zp[1]:23 227839.2777777778 +(byte) getCharToProcess::return_x#7 return_x zp[1]:23 1000001.0 (byte) getCharToProcess::return_y -(byte) getCharToProcess::return_y#0 reg byte a 7.333333333333333 -(byte) getCharToProcess::return_y#1 return_y zp[1]:28 216.6315789473684 -(byte) getCharToProcess::return_y#7 return_y zp[1]:28 2002.0 +(byte) getCharToProcess::return_y#0 reg byte a 67.33333333333333 +(byte) getCharToProcess::return_y#1 return_y zp[1]:28 215795.05263157893 +(byte) getCharToProcess::return_y#7 return_y zp[1]:28 2000002.0 (byte*) getCharToProcess::screen_line -(byte*) getCharToProcess::screen_line#0 screen_line zp[2]:6 2.0 -(byte*) getCharToProcess::screen_line#1 screen_line zp[2]:6 40.4 -(byte*) getCharToProcess::screen_line#4 screen_line zp[2]:6 92.6923076923077 +(byte*) getCharToProcess::screen_line#0 screen_line zp[2]:6 1001.0 +(byte*) getCharToProcess::screen_line#1 screen_line zp[2]:6 40000.4 +(byte*) getCharToProcess::screen_line#4 screen_line zp[2]:6 92384.92307692306 (byte) getCharToProcess::x -(byte) getCharToProcess::x#1 reg byte y 1001.0 -(byte) getCharToProcess::x#2 reg byte y 556.1111111111111 +(byte) getCharToProcess::x#1 reg byte y 1000001.0 +(byte) getCharToProcess::x#2 reg byte y 555556.1111111111 (byte) getCharToProcess::y -(byte) getCharToProcess::y#1 y zp[1]:5 101.0 -(byte) getCharToProcess::y#7 y zp[1]:5 80.2 +(byte) getCharToProcess::y#1 y zp[1]:5 100001.0 +(byte) getCharToProcess::y#7 y zp[1]:5 80000.20000000001 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:8 1.0 -(byte*) heap_head#5 heap_head zp[2]:8 4.0 +(byte*) heap_head#1 heap_head zp[2]:8 3.25 +(byte*) heap_head#5 heap_head zp[2]:8 13.0 (void()) initSprites() (label) initSprites::@1 (label) initSprites::@2 @@ -10076,19 +10072,19 @@ FINAL SYMBOL TABLE (label) initSprites::@4 (label) initSprites::@return (byte) initSprites::i -(byte) initSprites::i#1 reg byte x 16.5 -(byte) initSprites::i#2 reg byte x 16.5 +(byte) initSprites::i#1 reg byte x 1501.5 +(byte) initSprites::i#2 reg byte x 1501.5 (byte*) initSprites::sp -(byte*) initSprites::sp#1 sp zp[2]:6 22.0 -(byte*) initSprites::sp#2 sp zp[2]:6 14.666666666666666 +(byte*) initSprites::sp#1 sp zp[2]:6 2002.0 +(byte*) initSprites::sp#2 sp zp[2]:6 1334.6666666666667 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:24 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:24 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -10096,32 +10092,32 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:35 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:35 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:24 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:24 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:17 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:17 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:17 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:17 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:17 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:17 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:17 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:17 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:6 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:6 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:6 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:6 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:23 101.0 -(byte) init_angle_screen::x#2 x zp[1]:23 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:23 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:23 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:28 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:28 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:28 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:28 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:31 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:31 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:16 16.5 -(byte) init_angle_screen::y#5 y zp[1]:16 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:16 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:16 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:33 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:33 5000.5 interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 @@ -10133,11 +10129,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 202.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -10150,44 +10146,44 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@8 (label) main::@9 (byte) main::center_dist -(byte) main::center_dist#0 reg byte a 22.0 +(byte) main::center_dist#0 reg byte a 202.0 (byte) main::center_x -(byte) main::center_x#0 reg byte y 5.5 +(byte) main::center_x#0 reg byte y 50.5 (byte) main::center_y -(byte) main::center_y#0 center_y zp[1]:16 5.5 +(byte) main::center_y#0 center_y zp[1]:16 50.5 (byte*) main::dst -(byte*) main::dst#0 dst zp[2]:2 4.0 -(byte*) main::dst#1 dst zp[2]:2 22.0 -(byte*) main::dst#2 dst zp[2]:2 8.75 +(byte*) main::dst#0 dst zp[2]:2 22.0 +(byte*) main::dst#1 dst zp[2]:2 202.0 +(byte*) main::dst#2 dst zp[2]:2 78.5 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 7.857142857142857 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 72.14285714285714 (byte*) main::src -(byte*) main::src#1 src zp[2]:8 11.0 -(byte*) main::src#2 src zp[2]:8 14.666666666666666 +(byte*) main::src#1 src zp[2]:8 101.0 +(byte*) main::src#2 src zp[2]:8 134.66666666666666 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:14 0.8 +(byte*) malloc::mem#0 mem zp[2]:14 4.4 (void*) malloc::return (word) malloc::size (void()) processChars() -(byte~) processChars::$10 reg byte a 22.0 -(byte~) processChars::$12 reg byte a 22.0 -(word~) processChars::$13 zp[2]:41 11.0 -(byte~) processChars::$15 reg byte x 6.6000000000000005 -(word~) processChars::$23 zp[2]:39 11.0 -(byte~) processChars::$24 reg byte a 22.0 -(byte~) processChars::$27 reg byte a 22.0 -(byte~) processChars::$29 reg byte a 22.0 -(byte~) processChars::$32 reg byte a 22.0 -(byte~) processChars::$33 reg byte a 22.0 -(byte~) processChars::$34 reg byte a 22.0 -(byte~) processChars::$62 reg byte a 22.0 -(byte~) processChars::$63 reg byte a 22.0 -(byte~) processChars::$64 reg byte a 22.0 -(byte~) processChars::$65 reg byte a 22.0 -(byte~) processChars::$9 reg byte a 22.0 +(byte~) processChars::$10 reg byte a 202.0 +(byte~) processChars::$12 reg byte a 202.0 +(word~) processChars::$13 zp[2]:41 101.0 +(byte~) processChars::$15 reg byte x 60.599999999999994 +(word~) processChars::$23 zp[2]:39 101.0 +(byte~) processChars::$24 reg byte a 202.0 +(byte~) processChars::$27 reg byte a 202.0 +(byte~) processChars::$29 reg byte a 202.0 +(byte~) processChars::$32 reg byte a 202.0 +(byte~) processChars::$33 reg byte a 202.0 +(byte~) processChars::$34 reg byte a 202.0 +(byte~) processChars::$62 reg byte a 202.0 +(byte~) processChars::$63 reg byte a 202.0 +(byte~) processChars::$64 reg byte a 202.0 +(byte~) processChars::$65 reg byte a 202.0 +(byte~) processChars::$9 reg byte a 202.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -10204,24 +10200,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp[1]:38 2.2 +(byte) processChars::bitmask#0 bitmask zp[1]:38 20.2 (byte) processChars::i -(byte) processChars::i#1 i zp[1]:10 16.5 -(byte) processChars::i#10 i zp[1]:10 1.4042553191489362 +(byte) processChars::i#1 i zp[1]:10 151.5 +(byte) processChars::i#10 i zp[1]:10 12.893617021276595 (byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp[1]:11 22.0 -(byte) processChars::numActive#10 numActive zp[1]:11 0.7333333333333333 -(byte) processChars::numActive#3 numActive zp[1]:11 11.0 +(byte) processChars::numActive#1 numActive zp[1]:11 202.0 +(byte) processChars::numActive#10 numActive zp[1]:11 6.733333333333333 +(byte) processChars::numActive#3 numActive zp[1]:11 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:36 0.3142857142857143 +(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:36 2.8857142857142857 (byte) processChars::xchar -(byte) processChars::xchar#0 reg byte a 22.0 +(byte) processChars::xchar#0 reg byte a 202.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp[2]:39 2.0625 +(word) processChars::xpos#0 xpos zp[2]:39 18.9375 (byte) processChars::ychar -(byte) processChars::ychar#0 reg byte a 22.0 +(byte) processChars::ychar#0 reg byte a 202.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp[1]:43 2.75 +(byte) processChars::ypos#0 ypos zp[1]:43 25.25 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -10230,32 +10226,32 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) -(word~) startProcessing::$0 zp[2]:17 3.0 -(word~) startProcessing::$1 zp[2]:17 4.0 -(word~) startProcessing::$11 zp[2]:24 4.0 -(word~) startProcessing::$12 zp[2]:24 4.0 -(word~) startProcessing::$13 zp[2]:24 4.0 -(word~) startProcessing::$15 zp[2]:26 4.0 -(word~) startProcessing::$16 zp[2]:26 4.0 -(word~) startProcessing::$17 zp[2]:26 4.0 -(byte~) startProcessing::$20 reg byte a 2.0 -(word~) startProcessing::$21 zp[2]:29 0.5 -(byte~) startProcessing::$27 reg byte a 2002.0 -(byte~) startProcessing::$28 reg byte x 2.2222222222222228 -(byte~) startProcessing::$29 reg byte a 2002.0 -(byte~) startProcessing::$30 reg byte a 2002.0 -(byte~) startProcessing::$31 reg byte a 2002.0 -(byte~) startProcessing::$32 reg byte a 2002.0 -(word~) startProcessing::$34 zp[2]:19 4.0 -(word~) startProcessing::$35 zp[2]:17 4.0 -(byte~) startProcessing::$37 reg byte a 4.0 -(byte~) startProcessing::$38 reg byte a 4.0 -(byte~) startProcessing::$39 reg byte a 4.0 -(byte~) startProcessing::$40 reg byte a 4.0 -(word~) startProcessing::$5 zp[2]:8 4.0 -(word~) startProcessing::$6 zp[2]:8 4.0 -(word~) startProcessing::$8 zp[2]:6 4.0 -(word~) startProcessing::$9 zp[2]:6 4.0 +(word~) startProcessing::$0 zp[2]:17 1501.5 +(word~) startProcessing::$1 zp[2]:17 2002.0 +(word~) startProcessing::$11 zp[2]:24 2002.0 +(word~) startProcessing::$12 zp[2]:24 2002.0 +(word~) startProcessing::$13 zp[2]:24 2002.0 +(word~) startProcessing::$15 zp[2]:26 2002.0 +(word~) startProcessing::$16 zp[2]:26 2002.0 +(word~) startProcessing::$17 zp[2]:26 2002.0 +(byte~) startProcessing::$20 reg byte a 1001.0 +(word~) startProcessing::$21 zp[2]:29 250.25 +(byte~) startProcessing::$27 reg byte a 2000002.0 +(byte~) startProcessing::$28 reg byte x 1112.222222222222 +(byte~) startProcessing::$29 reg byte a 2000002.0 +(byte~) startProcessing::$30 reg byte a 2000002.0 +(byte~) startProcessing::$31 reg byte a 2000002.0 +(byte~) startProcessing::$32 reg byte a 2000002.0 +(word~) startProcessing::$34 zp[2]:19 2002.0 +(word~) startProcessing::$35 zp[2]:17 2002.0 +(byte~) startProcessing::$37 reg byte a 2002.0 +(byte~) startProcessing::$38 reg byte a 2002.0 +(byte~) startProcessing::$39 reg byte a 2002.0 +(byte~) startProcessing::$40 reg byte a 2002.0 +(word~) startProcessing::$5 zp[2]:8 2002.0 +(word~) startProcessing::$6 zp[2]:8 2002.0 +(word~) startProcessing::$8 zp[2]:6 2002.0 +(word~) startProcessing::$9 zp[2]:6 2002.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -10269,45 +10265,45 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (byte) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp[1]:35 0.30952380952380953 +(byte) startProcessing::center_x#0 center_x zp[1]:35 26.238095238095237 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp[1]:16 0.24444444444444444 +(byte) startProcessing::center_y#0 center_y zp[1]:16 2.2444444444444445 (byte) startProcessing::ch -(byte) startProcessing::ch#0 reg byte a 2.0 +(byte) startProcessing::ch#0 reg byte a 1001.0 (byte*) startProcessing::chargenData -(byte*) startProcessing::chargenData#0 chargenData zp[2]:6 1.3333333333333333 -(byte*) startProcessing::chargenData#1 chargenData zp[2]:6 67.33333333333333 -(byte*) startProcessing::chargenData#2 chargenData zp[2]:6 101.66666666666666 +(byte*) startProcessing::chargenData#0 chargenData zp[2]:6 667.3333333333334 +(byte*) startProcessing::chargenData#1 chargenData zp[2]:6 66667.33333333333 +(byte*) startProcessing::chargenData#2 chargenData zp[2]:6 100334.66666666666 (byte*) startProcessing::colPtr -(byte*) startProcessing::colPtr#0 colPtr zp[2]:21 4.0 +(byte*) startProcessing::colPtr#0 colPtr zp[2]:21 2002.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp[1]:5 28.0 -(byte) startProcessing::freeIdx#6 reg byte x 20.2 -(byte) startProcessing::freeIdx#7 reg byte x 202.0 -(byte) startProcessing::freeIdx#8 freeIdx zp[1]:5 202.0 +(byte) startProcessing::freeIdx#2 freeIdx zp[1]:5 27787.446808510645 +(byte) startProcessing::freeIdx#6 reg byte x 20000.2 +(byte) startProcessing::freeIdx#7 reg byte x 200002.0 +(byte) startProcessing::freeIdx#8 freeIdx zp[1]:5 200002.0 (byte) startProcessing::i -(byte) startProcessing::i#1 i zp[1]:5 1501.5 -(byte) startProcessing::i#2 i zp[1]:5 858.0 +(byte) startProcessing::i#1 i zp[1]:5 1500001.5 +(byte) startProcessing::i#2 i zp[1]:5 857143.7142857142 (byte) startProcessing::i1 -(byte) startProcessing::i1#1 reg byte x 151.5 -(byte) startProcessing::i1#2 reg byte x 50.5 +(byte) startProcessing::i1#1 reg byte x 150001.5 +(byte) startProcessing::i1#2 reg byte x 50000.5 (word) startProcessing::offset -(word) startProcessing::offset#0 offset zp[2]:17 2.0 +(word) startProcessing::offset#0 offset zp[2]:17 1001.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:17 0.14285714285714285 +(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:17 71.5 (byte) startProcessing::spriteCol -(byte) startProcessing::spriteCol#0 spriteCol zp[1]:23 0.0975609756097561 +(byte) startProcessing::spriteCol#0 spriteCol zp[1]:23 48.829268292682926 (byte*) startProcessing::spriteData -(byte*) startProcessing::spriteData#0 spriteData zp[2]:8 0.5714285714285714 -(byte*) startProcessing::spriteData#1 spriteData zp[2]:8 50.5 -(byte*) startProcessing::spriteData#2 spriteData zp[2]:8 152.5 +(byte*) startProcessing::spriteData#0 spriteData zp[2]:8 286.0 +(byte*) startProcessing::spriteData#1 spriteData zp[2]:8 50000.5 +(byte*) startProcessing::spriteData#2 spriteData zp[2]:8 150502.0 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp[1]:28 0.3076923076923077 +(byte) startProcessing::spritePtr#0 spritePtr zp[1]:28 154.0 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp[2]:24 0.3076923076923077 +(word) startProcessing::spriteX#0 spriteX zp[2]:24 154.0 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp[2]:26 0.4 +(word) startProcessing::spriteY#0 spriteY zp[2]:26 200.2 zp[2]:2 [ main::dst#2 main::dst#0 main::dst#1 ] zp[1]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/complex/clearscreen/clearscreen.sym b/src/test/ref/complex/clearscreen/clearscreen.sym index df666346c..553360ab0 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.sym +++ b/src/test/ref/complex/clearscreen/clearscreen.sym @@ -91,10 +91,10 @@ (const word) YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM<<(byte) 4 (const word) YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP-(byte) 8<<(byte) 4 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:19 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:21 4.0 +(signed word~) atan2_16::$2 zp[2]:19 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:21 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -118,61 +118,61 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:24 3.0 -(word) atan2_16::angle#11 angle zp[2]:24 4.0 -(word) atan2_16::angle#12 angle zp[2]:24 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:24 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:24 2002.0 -(word) atan2_16::angle#3 angle zp[2]:24 2002.0 -(word) atan2_16::angle#4 angle zp[2]:24 4.0 -(word) atan2_16::angle#5 angle zp[2]:24 4.0 -(word) atan2_16::angle#6 angle zp[2]:24 2004.0 +(word) atan2_16::angle#1 angle zp[2]:24 150001.5 +(word) atan2_16::angle#11 angle zp[2]:24 200002.0 +(word) atan2_16::angle#12 angle zp[2]:24 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:24 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:24 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:24 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:24 200002.0 +(word) atan2_16::angle#5 angle zp[2]:24 200002.0 +(word) atan2_16::angle#6 angle zp[2]:24 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:24 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:24 202.0 +(word) atan2_16::return#0 return zp[2]:24 70001.0 +(word) atan2_16::return#2 return zp[2]:24 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:31 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:31 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:29 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:29 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:29 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:29 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:29 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:29 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:29 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:29 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:29 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:29 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:21 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:21 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:21 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:21 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:21 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:21 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:21 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:21 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:21 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:21 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:21 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:21 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:33 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:33 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:26 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:26 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:26 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:26 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:26 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:26 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:26 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:26 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:26 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:26 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:19 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:19 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:19 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:19 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:19 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:19 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:19 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:19 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:19 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:19 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:19 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:19 1.00000001E8 (struct ProcessingChar()) getCharToProcess() -(byte*~) getCharToProcess::$10 zp[2]:31 4.0 -(word~) getCharToProcess::$12 zp[2]:33 4.0 -(word~) getCharToProcess::$13 zp[2]:31 4.0 -(word~) getCharToProcess::$8 zp[2]:31 3.0 -(word~) getCharToProcess::$9 zp[2]:31 4.0 +(byte*~) getCharToProcess::$10 zp[2]:31 2002.0 +(word~) getCharToProcess::$12 zp[2]:33 2002.0 +(word~) getCharToProcess::$13 zp[2]:31 2002.0 +(word~) getCharToProcess::$8 zp[2]:31 1501.5 +(word~) getCharToProcess::$9 zp[2]:31 2002.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -187,49 +187,49 @@ (label) getCharToProcess::@9 (label) getCharToProcess::@return (byte) getCharToProcess::closest_dist -(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:16 202.0 -(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:16 2002.0 -(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:16 1026.25 -(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:16 202.0 +(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:16 200002.0 +(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:16 2000002.0 +(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:16 1025001.25 +(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:16 200002.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp[1]:23 517.3333333333334 -(byte) getCharToProcess::closest_x#9 closest_x zp[1]:23 202.0 +(byte) getCharToProcess::closest_x#7 closest_x zp[1]:23 516667.3333333334 +(byte) getCharToProcess::closest_x#9 closest_x zp[1]:23 200002.0 (byte) getCharToProcess::closest_y -(byte) getCharToProcess::closest_y#7 closest_y zp[1]:28 517.3333333333334 -(byte) getCharToProcess::closest_y#9 closest_y zp[1]:28 202.0 +(byte) getCharToProcess::closest_y#7 closest_y zp[1]:28 516667.3333333334 +(byte) getCharToProcess::closest_y#9 closest_y zp[1]:28 200002.0 (byte) getCharToProcess::dist -(byte) getCharToProcess::dist#0 reg byte x 750.75 +(byte) getCharToProcess::dist#0 reg byte x 750000.75 (byte*) getCharToProcess::dist_line -(byte*) getCharToProcess::dist_line#0 dist_line zp[2]:8 4.0 -(byte*) getCharToProcess::dist_line#1 dist_line zp[2]:8 50.5 -(byte*) getCharToProcess::dist_line#6 dist_line zp[2]:8 86.07142857142857 +(byte*) getCharToProcess::dist_line#0 dist_line zp[2]:8 2002.0 +(byte*) getCharToProcess::dist_line#1 dist_line zp[2]:8 50000.5 +(byte*) getCharToProcess::dist_line#6 dist_line zp[2]:8 85785.99999999999 (struct ProcessingChar) getCharToProcess::return (byte) getCharToProcess::return_dist -(byte) getCharToProcess::return_dist#0 reg byte x 7.333333333333333 -(byte) getCharToProcess::return_dist#1 reg byte x 228.7777777777778 -(byte) getCharToProcess::return_dist#5 reg byte x 2002.0 -(byte) getCharToProcess::return_dist#6 reg byte x 2002.0 +(byte) getCharToProcess::return_dist#0 reg byte x 67.33333333333333 +(byte) getCharToProcess::return_dist#1 reg byte x 227839.2777777778 +(byte) getCharToProcess::return_dist#5 reg byte x 2000002.0 +(byte) getCharToProcess::return_dist#6 reg byte x 2000002.0 (byte) getCharToProcess::return_x -(byte) getCharToProcess::return_x#0 reg byte y 7.333333333333333 -(byte) getCharToProcess::return_x#1 return_x zp[1]:23 228.7777777777778 -(byte) getCharToProcess::return_x#7 return_x zp[1]:23 1001.0 +(byte) getCharToProcess::return_x#0 reg byte y 67.33333333333333 +(byte) getCharToProcess::return_x#1 return_x zp[1]:23 227839.2777777778 +(byte) getCharToProcess::return_x#7 return_x zp[1]:23 1000001.0 (byte) getCharToProcess::return_y -(byte) getCharToProcess::return_y#0 reg byte a 7.333333333333333 -(byte) getCharToProcess::return_y#1 return_y zp[1]:28 216.6315789473684 -(byte) getCharToProcess::return_y#7 return_y zp[1]:28 2002.0 +(byte) getCharToProcess::return_y#0 reg byte a 67.33333333333333 +(byte) getCharToProcess::return_y#1 return_y zp[1]:28 215795.05263157893 +(byte) getCharToProcess::return_y#7 return_y zp[1]:28 2000002.0 (byte*) getCharToProcess::screen_line -(byte*) getCharToProcess::screen_line#0 screen_line zp[2]:6 2.0 -(byte*) getCharToProcess::screen_line#1 screen_line zp[2]:6 40.4 -(byte*) getCharToProcess::screen_line#4 screen_line zp[2]:6 92.6923076923077 +(byte*) getCharToProcess::screen_line#0 screen_line zp[2]:6 1001.0 +(byte*) getCharToProcess::screen_line#1 screen_line zp[2]:6 40000.4 +(byte*) getCharToProcess::screen_line#4 screen_line zp[2]:6 92384.92307692306 (byte) getCharToProcess::x -(byte) getCharToProcess::x#1 reg byte y 1001.0 -(byte) getCharToProcess::x#2 reg byte y 556.1111111111111 +(byte) getCharToProcess::x#1 reg byte y 1000001.0 +(byte) getCharToProcess::x#2 reg byte y 555556.1111111111 (byte) getCharToProcess::y -(byte) getCharToProcess::y#1 y zp[1]:5 101.0 -(byte) getCharToProcess::y#7 y zp[1]:5 80.2 +(byte) getCharToProcess::y#1 y zp[1]:5 100001.0 +(byte) getCharToProcess::y#7 y zp[1]:5 80000.20000000001 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:8 1.0 -(byte*) heap_head#5 heap_head zp[2]:8 4.0 +(byte*) heap_head#1 heap_head zp[2]:8 3.25 +(byte*) heap_head#5 heap_head zp[2]:8 13.0 (void()) initSprites() (label) initSprites::@1 (label) initSprites::@2 @@ -237,19 +237,19 @@ (label) initSprites::@4 (label) initSprites::@return (byte) initSprites::i -(byte) initSprites::i#1 reg byte x 16.5 -(byte) initSprites::i#2 reg byte x 16.5 +(byte) initSprites::i#1 reg byte x 1501.5 +(byte) initSprites::i#2 reg byte x 1501.5 (byte*) initSprites::sp -(byte*) initSprites::sp#1 sp zp[2]:6 22.0 -(byte*) initSprites::sp#2 sp zp[2]:6 14.666666666666666 +(byte*) initSprites::sp#1 sp zp[2]:6 2002.0 +(byte*) initSprites::sp#2 sp zp[2]:6 1334.6666666666667 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:24 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:24 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -257,32 +257,32 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:35 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:35 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:24 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:24 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:17 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:17 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:17 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:17 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:17 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:17 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:17 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:17 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:6 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:6 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:6 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:6 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:23 101.0 -(byte) init_angle_screen::x#2 x zp[1]:23 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:23 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:23 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:28 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:28 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:28 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:28 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:31 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:31 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:16 16.5 -(byte) init_angle_screen::y#5 y zp[1]:16 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:16 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:16 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:33 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:33 5000.5 interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 @@ -294,11 +294,11 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) irqTop::i (byte) irqTop::i1 (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 202.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -311,44 +311,44 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) main::@8 (label) main::@9 (byte) main::center_dist -(byte) main::center_dist#0 reg byte a 22.0 +(byte) main::center_dist#0 reg byte a 202.0 (byte) main::center_x -(byte) main::center_x#0 reg byte y 5.5 +(byte) main::center_x#0 reg byte y 50.5 (byte) main::center_y -(byte) main::center_y#0 center_y zp[1]:16 5.5 +(byte) main::center_y#0 center_y zp[1]:16 50.5 (byte*) main::dst -(byte*) main::dst#0 dst zp[2]:2 4.0 -(byte*) main::dst#1 dst zp[2]:2 22.0 -(byte*) main::dst#2 dst zp[2]:2 8.75 +(byte*) main::dst#0 dst zp[2]:2 22.0 +(byte*) main::dst#1 dst zp[2]:2 202.0 +(byte*) main::dst#2 dst zp[2]:2 78.5 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 7.857142857142857 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 72.14285714285714 (byte*) main::src -(byte*) main::src#1 src zp[2]:8 11.0 -(byte*) main::src#2 src zp[2]:8 14.666666666666666 +(byte*) main::src#1 src zp[2]:8 101.0 +(byte*) main::src#2 src zp[2]:8 134.66666666666666 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:14 0.8 +(byte*) malloc::mem#0 mem zp[2]:14 4.4 (void*) malloc::return (word) malloc::size (void()) processChars() -(byte~) processChars::$10 reg byte a 22.0 -(byte~) processChars::$12 reg byte a 22.0 -(word~) processChars::$13 zp[2]:41 11.0 -(byte~) processChars::$15 reg byte x 6.6000000000000005 -(word~) processChars::$23 zp[2]:39 11.0 -(byte~) processChars::$24 reg byte a 22.0 -(byte~) processChars::$27 reg byte a 22.0 -(byte~) processChars::$29 reg byte a 22.0 -(byte~) processChars::$32 reg byte a 22.0 -(byte~) processChars::$33 reg byte a 22.0 -(byte~) processChars::$34 reg byte a 22.0 -(byte~) processChars::$62 reg byte a 22.0 -(byte~) processChars::$63 reg byte a 22.0 -(byte~) processChars::$64 reg byte a 22.0 -(byte~) processChars::$65 reg byte a 22.0 -(byte~) processChars::$9 reg byte a 22.0 +(byte~) processChars::$10 reg byte a 202.0 +(byte~) processChars::$12 reg byte a 202.0 +(word~) processChars::$13 zp[2]:41 101.0 +(byte~) processChars::$15 reg byte x 60.599999999999994 +(word~) processChars::$23 zp[2]:39 101.0 +(byte~) processChars::$24 reg byte a 202.0 +(byte~) processChars::$27 reg byte a 202.0 +(byte~) processChars::$29 reg byte a 202.0 +(byte~) processChars::$32 reg byte a 202.0 +(byte~) processChars::$33 reg byte a 202.0 +(byte~) processChars::$34 reg byte a 202.0 +(byte~) processChars::$62 reg byte a 202.0 +(byte~) processChars::$63 reg byte a 202.0 +(byte~) processChars::$64 reg byte a 202.0 +(byte~) processChars::$65 reg byte a 202.0 +(byte~) processChars::$9 reg byte a 202.0 (label) processChars::@1 (label) processChars::@10 (label) processChars::@11 @@ -365,24 +365,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp[1]:38 2.2 +(byte) processChars::bitmask#0 bitmask zp[1]:38 20.2 (byte) processChars::i -(byte) processChars::i#1 i zp[1]:10 16.5 -(byte) processChars::i#10 i zp[1]:10 1.4042553191489362 +(byte) processChars::i#1 i zp[1]:10 151.5 +(byte) processChars::i#10 i zp[1]:10 12.893617021276595 (byte) processChars::numActive -(byte) processChars::numActive#1 numActive zp[1]:11 22.0 -(byte) processChars::numActive#10 numActive zp[1]:11 0.7333333333333333 -(byte) processChars::numActive#3 numActive zp[1]:11 11.0 +(byte) processChars::numActive#1 numActive zp[1]:11 202.0 +(byte) processChars::numActive#10 numActive zp[1]:11 6.733333333333333 +(byte) processChars::numActive#3 numActive zp[1]:11 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:36 0.3142857142857143 +(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:36 2.8857142857142857 (byte) processChars::xchar -(byte) processChars::xchar#0 reg byte a 22.0 +(byte) processChars::xchar#0 reg byte a 202.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp[2]:39 2.0625 +(word) processChars::xpos#0 xpos zp[2]:39 18.9375 (byte) processChars::ychar -(byte) processChars::ychar#0 reg byte a 22.0 +(byte) processChars::ychar#0 reg byte a 202.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp[1]:43 2.75 +(byte) processChars::ypos#0 ypos zp[1]:43 25.25 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -391,32 +391,32 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) -(word~) startProcessing::$0 zp[2]:17 3.0 -(word~) startProcessing::$1 zp[2]:17 4.0 -(word~) startProcessing::$11 zp[2]:24 4.0 -(word~) startProcessing::$12 zp[2]:24 4.0 -(word~) startProcessing::$13 zp[2]:24 4.0 -(word~) startProcessing::$15 zp[2]:26 4.0 -(word~) startProcessing::$16 zp[2]:26 4.0 -(word~) startProcessing::$17 zp[2]:26 4.0 -(byte~) startProcessing::$20 reg byte a 2.0 -(word~) startProcessing::$21 zp[2]:29 0.5 -(byte~) startProcessing::$27 reg byte a 2002.0 -(byte~) startProcessing::$28 reg byte x 2.2222222222222228 -(byte~) startProcessing::$29 reg byte a 2002.0 -(byte~) startProcessing::$30 reg byte a 2002.0 -(byte~) startProcessing::$31 reg byte a 2002.0 -(byte~) startProcessing::$32 reg byte a 2002.0 -(word~) startProcessing::$34 zp[2]:19 4.0 -(word~) startProcessing::$35 zp[2]:17 4.0 -(byte~) startProcessing::$37 reg byte a 4.0 -(byte~) startProcessing::$38 reg byte a 4.0 -(byte~) startProcessing::$39 reg byte a 4.0 -(byte~) startProcessing::$40 reg byte a 4.0 -(word~) startProcessing::$5 zp[2]:8 4.0 -(word~) startProcessing::$6 zp[2]:8 4.0 -(word~) startProcessing::$8 zp[2]:6 4.0 -(word~) startProcessing::$9 zp[2]:6 4.0 +(word~) startProcessing::$0 zp[2]:17 1501.5 +(word~) startProcessing::$1 zp[2]:17 2002.0 +(word~) startProcessing::$11 zp[2]:24 2002.0 +(word~) startProcessing::$12 zp[2]:24 2002.0 +(word~) startProcessing::$13 zp[2]:24 2002.0 +(word~) startProcessing::$15 zp[2]:26 2002.0 +(word~) startProcessing::$16 zp[2]:26 2002.0 +(word~) startProcessing::$17 zp[2]:26 2002.0 +(byte~) startProcessing::$20 reg byte a 1001.0 +(word~) startProcessing::$21 zp[2]:29 250.25 +(byte~) startProcessing::$27 reg byte a 2000002.0 +(byte~) startProcessing::$28 reg byte x 1112.222222222222 +(byte~) startProcessing::$29 reg byte a 2000002.0 +(byte~) startProcessing::$30 reg byte a 2000002.0 +(byte~) startProcessing::$31 reg byte a 2000002.0 +(byte~) startProcessing::$32 reg byte a 2000002.0 +(word~) startProcessing::$34 zp[2]:19 2002.0 +(word~) startProcessing::$35 zp[2]:17 2002.0 +(byte~) startProcessing::$37 reg byte a 2002.0 +(byte~) startProcessing::$38 reg byte a 2002.0 +(byte~) startProcessing::$39 reg byte a 2002.0 +(byte~) startProcessing::$40 reg byte a 2002.0 +(word~) startProcessing::$5 zp[2]:8 2002.0 +(word~) startProcessing::$6 zp[2]:8 2002.0 +(word~) startProcessing::$8 zp[2]:6 2002.0 +(word~) startProcessing::$9 zp[2]:6 2002.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -430,45 +430,45 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (byte) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp[1]:35 0.30952380952380953 +(byte) startProcessing::center_x#0 center_x zp[1]:35 26.238095238095237 (byte) startProcessing::center_y -(byte) startProcessing::center_y#0 center_y zp[1]:16 0.24444444444444444 +(byte) startProcessing::center_y#0 center_y zp[1]:16 2.2444444444444445 (byte) startProcessing::ch -(byte) startProcessing::ch#0 reg byte a 2.0 +(byte) startProcessing::ch#0 reg byte a 1001.0 (byte*) startProcessing::chargenData -(byte*) startProcessing::chargenData#0 chargenData zp[2]:6 1.3333333333333333 -(byte*) startProcessing::chargenData#1 chargenData zp[2]:6 67.33333333333333 -(byte*) startProcessing::chargenData#2 chargenData zp[2]:6 101.66666666666666 +(byte*) startProcessing::chargenData#0 chargenData zp[2]:6 667.3333333333334 +(byte*) startProcessing::chargenData#1 chargenData zp[2]:6 66667.33333333333 +(byte*) startProcessing::chargenData#2 chargenData zp[2]:6 100334.66666666666 (byte*) startProcessing::colPtr -(byte*) startProcessing::colPtr#0 colPtr zp[2]:21 4.0 +(byte*) startProcessing::colPtr#0 colPtr zp[2]:21 2002.0 (byte) startProcessing::freeIdx -(byte) startProcessing::freeIdx#2 freeIdx zp[1]:5 28.0 -(byte) startProcessing::freeIdx#6 reg byte x 20.2 -(byte) startProcessing::freeIdx#7 reg byte x 202.0 -(byte) startProcessing::freeIdx#8 freeIdx zp[1]:5 202.0 +(byte) startProcessing::freeIdx#2 freeIdx zp[1]:5 27787.446808510645 +(byte) startProcessing::freeIdx#6 reg byte x 20000.2 +(byte) startProcessing::freeIdx#7 reg byte x 200002.0 +(byte) startProcessing::freeIdx#8 freeIdx zp[1]:5 200002.0 (byte) startProcessing::i -(byte) startProcessing::i#1 i zp[1]:5 1501.5 -(byte) startProcessing::i#2 i zp[1]:5 858.0 +(byte) startProcessing::i#1 i zp[1]:5 1500001.5 +(byte) startProcessing::i#2 i zp[1]:5 857143.7142857142 (byte) startProcessing::i1 -(byte) startProcessing::i1#1 reg byte x 151.5 -(byte) startProcessing::i1#2 reg byte x 50.5 +(byte) startProcessing::i1#1 reg byte x 150001.5 +(byte) startProcessing::i1#2 reg byte x 50000.5 (word) startProcessing::offset -(word) startProcessing::offset#0 offset zp[2]:17 2.0 +(word) startProcessing::offset#0 offset zp[2]:17 1001.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:17 0.14285714285714285 +(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:17 71.5 (byte) startProcessing::spriteCol -(byte) startProcessing::spriteCol#0 spriteCol zp[1]:23 0.0975609756097561 +(byte) startProcessing::spriteCol#0 spriteCol zp[1]:23 48.829268292682926 (byte*) startProcessing::spriteData -(byte*) startProcessing::spriteData#0 spriteData zp[2]:8 0.5714285714285714 -(byte*) startProcessing::spriteData#1 spriteData zp[2]:8 50.5 -(byte*) startProcessing::spriteData#2 spriteData zp[2]:8 152.5 +(byte*) startProcessing::spriteData#0 spriteData zp[2]:8 286.0 +(byte*) startProcessing::spriteData#1 spriteData zp[2]:8 50000.5 +(byte*) startProcessing::spriteData#2 spriteData zp[2]:8 150502.0 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp[1]:28 0.3076923076923077 +(byte) startProcessing::spritePtr#0 spritePtr zp[1]:28 154.0 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp[2]:24 0.3076923076923077 +(word) startProcessing::spriteX#0 spriteX zp[2]:24 154.0 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp[2]:26 0.4 +(word) startProcessing::spriteY#0 spriteY zp[2]:26 200.2 zp[2]:2 [ main::dst#2 main::dst#0 main::dst#1 ] zp[1]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/complex/medusa/medusa.log b/src/test/ref/complex/medusa/medusa.log index e827a8c48..e2219fb39 100644 --- a/src/test/ref/complex/medusa/medusa.log +++ b/src/test/ref/complex/medusa/medusa.log @@ -187,11 +187,11 @@ Finalized unsigned number type (word) $3e8 Finalized unsigned number type (word) $3e7 Finalized unsigned number type (byte) $e Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) memcpy::src_end#0 = (byte*~) memcpy::$1 -Alias (byte*) memcpy::src#2 = (byte*) memcpy::src#3 -Alias (byte*) memcpy::dst#2 = (byte*) memcpy::dst#3 -Alias (byte*) memcpy::src_end#1 = (byte*) memcpy::src_end#2 -Alias (void*) memcpy::destination#3 = (void*) memcpy::destination#5 (void*) memcpy::destination#4 (void*) memcpy::return#0 (void*) memcpy::return#4 (void*) memcpy::return#1 +Alias memcpy::src_end#0 = memcpy::$1 +Alias memcpy::src#2 = memcpy::src#3 +Alias memcpy::dst#2 = memcpy::dst#3 +Alias memcpy::src_end#1 = memcpy::src_end#2 +Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memcpy::src_end#1 (byte*) memcpy::src_end#0 Identical Phi Values (void*) memcpy::destination#3 (void*) memcpy::destination#2 @@ -317,19 +317,19 @@ VARIABLE REGISTER WEIGHTS (void*) memcpy::destination (void*) memcpy::destination#2 (byte*) memcpy::dst -(byte*) memcpy::dst#1 11.0 -(byte*) memcpy::dst#2 11.666666666666666 -(byte*) memcpy::dst#4 4.0 +(byte*) memcpy::dst#1 1001.0 +(byte*) memcpy::dst#2 1034.6666666666667 +(byte*) memcpy::dst#4 202.0 (word) memcpy::num (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 (byte*) memcpy::src -(byte*) memcpy::src#1 22.0 -(byte*) memcpy::src#2 11.5 -(byte*) memcpy::src#4 2.0 +(byte*) memcpy::src#1 2002.0 +(byte*) memcpy::src#2 1026.25 +(byte*) memcpy::src#4 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 1.625 +(byte*) memcpy::src_end#0 137.75 Initial phi equivalence classes [ memcpy::source#2 ] @@ -504,13 +504,13 @@ MEDUSA_COLORS: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(word) $3e7) ← *((const byte*) SCREEN+(word) $3e7) ^ (byte) $e [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:5 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:2::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a -Statement [11] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:5 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:2::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a -Statement [12] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a -Statement [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a -Statement [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(word) $3e7) ← *((const byte*) SCREEN+(word) $3e7) ^ (byte) $e [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:5 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:2::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } ) always clobbers reg byte a +Statement [11] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:5 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:2::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } ) always clobbers reg byte a +Statement [12] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } ) always clobbers reg byte a +Statement [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ memcpy::source#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ memcpy::destination#2 ] : zp[2]:4 , Potential registers zp[2]:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp[2]:6 , @@ -518,7 +518,7 @@ Potential registers zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[2 Potential registers zp[2]:10 [ memcpy::src_end#0 ] : zp[2]:10 , REGISTER UPLIFT SCOPES -Uplift Scope [memcpy] 35.5: zp[2]:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 26.67: zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 1.62: zp[2]:10 [ memcpy::src_end#0 ] 0: zp[2]:2 [ memcpy::source#2 ] 0: zp[2]:4 [ memcpy::destination#2 ] +Uplift Scope [memcpy] 3,129.25: zp[2]:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 2,237.67: zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 137.75: zp[2]:10 [ memcpy::src_end#0 ] 0: zp[2]:2 [ memcpy::source#2 ] 0: zp[2]:4 [ memcpy::destination#2 ] Uplift Scope [main] Uplift Scope [] @@ -728,19 +728,19 @@ FINAL SYMBOL TABLE (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:4 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:4 11.0 -(byte*) memcpy::dst#2 dst zp[2]:4 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:4 4.0 +(byte*) memcpy::dst#1 dst zp[2]:4 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:4 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:4 202.0 (word) memcpy::num (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:2 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:2 22.0 -(byte*) memcpy::src#2 src zp[2]:2 11.5 -(byte*) memcpy::src#4 src zp[2]:2 2.0 +(byte*) memcpy::src#1 src zp[2]:2 2002.0 +(byte*) memcpy::src#2 src zp[2]:2 1026.25 +(byte*) memcpy::src#4 src zp[2]:2 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:6 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:6 137.75 zp[2]:2 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:4 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] diff --git a/src/test/ref/complex/medusa/medusa.sym b/src/test/ref/complex/medusa/medusa.sym index d75709a28..00ddca061 100644 --- a/src/test/ref/complex/medusa/medusa.sym +++ b/src/test/ref/complex/medusa/medusa.sym @@ -21,19 +21,19 @@ (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:4 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:4 11.0 -(byte*) memcpy::dst#2 dst zp[2]:4 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:4 4.0 +(byte*) memcpy::dst#1 dst zp[2]:4 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:4 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:4 202.0 (word) memcpy::num (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:2 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:2 22.0 -(byte*) memcpy::src#2 src zp[2]:2 11.5 -(byte*) memcpy::src#4 src zp[2]:2 2.0 +(byte*) memcpy::src#1 src zp[2]:2 2002.0 +(byte*) memcpy::src#2 src zp[2]:2 1026.25 +(byte*) memcpy::src#4 src zp[2]:2 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:6 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:6 137.75 zp[2]:2 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:4 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] diff --git a/src/test/ref/complex/prebob/grid-bobs.log b/src/test/ref/complex/prebob/grid-bobs.log index 28c7fbe47..9be6f03ff 100644 --- a/src/test/ref/complex/prebob/grid-bobs.log +++ b/src/test/ref/complex/prebob/grid-bobs.log @@ -2751,175 +2751,175 @@ Inversing boolean not [433] (bool~) charsetFindOrAddGlyph::$3 ← *((byte*) char Inversing boolean not [441] (bool~) charsetFindOrAddGlyph::$4 ← (byte) 0 == (byte) charsetFindOrAddGlyph::found#2 from [440] (bool~) charsetFindOrAddGlyph::$6 ← (byte) 0 != (byte) charsetFindOrAddGlyph::found#2 Inversing boolean not [474] (bool~) progress_inc::$1 ← (byte) progress_idx#8 != (byte) 8 from [473] (bool~) progress_inc::$0 ← (byte) progress_idx#8 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::return#1 -Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 -Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 -Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 -Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 -Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$6 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 -Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 -Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 -Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 -Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (byte*) progress_cursor#21 = (byte*) progress_cursor#28 -Alias (byte) progress_idx#22 = (byte) progress_idx#28 -Alias (byte) bob_charset_next_id#19 = (byte) bob_charset_next_id#28 -Alias (byte**) renderBobCleanupNext#28 = (byte**) renderBobCleanupNext#49 (byte**) renderBobCleanupNext#50 (byte**) renderBobCleanupNext#48 (byte**) renderBobCleanupNext#47 (byte**) renderBobCleanupNext#46 (byte**) renderBobCleanupNext#44 (byte**) renderBobCleanupNext#42 (byte**) renderBobCleanupNext#40 (byte**) renderBobCleanupNext#38 (byte**) renderBobCleanupNext#36 (byte**) renderBobCleanupNext#34 (byte**) renderBobCleanupNext#31 -Alias (byte*) progress_cursor#0 = (byte*) progress_cursor#11 (byte*) progress_cursor#69 (byte*) progress_cursor#68 (byte*) progress_cursor#66 (byte*) progress_cursor#64 (byte*) progress_cursor#62 (byte*) progress_cursor#60 (byte*) progress_cursor#58 (byte*) progress_cursor#56 (byte*) progress_cursor#54 (byte*) progress_cursor#52 -Alias (byte) progress_idx#0 = (byte) progress_idx#12 (byte) progress_idx#69 (byte) progress_idx#68 (byte) progress_idx#66 (byte) progress_idx#64 (byte) progress_idx#62 (byte) progress_idx#60 (byte) progress_idx#58 (byte) progress_idx#56 (byte) progress_idx#54 (byte) progress_idx#52 -Alias (byte) bob_charset_next_id#0 = (byte) bob_charset_next_id#10 (byte) bob_charset_next_id#77 (byte) bob_charset_next_id#76 (byte) bob_charset_next_id#74 (byte) bob_charset_next_id#72 (byte) bob_charset_next_id#70 (byte) bob_charset_next_id#68 (byte) bob_charset_next_id#66 (byte) bob_charset_next_id#64 (byte) bob_charset_next_id#62 (byte) bob_charset_next_id#60 -Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 -Alias (byte**) renderBobCleanupNext#16 = (byte**) renderBobCleanupNext#20 -Alias (signed word) main::origX#2 = (signed word) main::origX#4 (signed word) main::origX#6 (signed word) main::rowX#0 -Alias (signed word) main::rowOffsetY#7 = (signed word) main::rowOffsetY#8 (signed word) main::rowOffsetY#9 -Alias (byte*) progress_cursor#63 = (byte*) progress_cursor#65 (byte*) progress_cursor#67 -Alias (byte) progress_idx#63 = (byte) progress_idx#65 (byte) progress_idx#67 -Alias (byte) bob_charset_next_id#71 = (byte) bob_charset_next_id#73 (byte) bob_charset_next_id#75 -Alias (byte**) renderBobCleanupNext#0 = (byte**) renderBobCleanupNext#9 -Alias (signed word) main::x#0 = (signed word) main::rowX#2 -Alias (signed word) main::y#0 = (signed word) main::rowY#2 -Alias (byte) renderBob::xpos#0 = (byte~) main::$10 -Alias (byte) renderBob::ypos#0 = (byte~) main::$11 -Alias (signed word) main::x#2 = (signed word) main::x#3 -Alias (signed word) main::y#2 = (signed word) main::y#3 -Alias (signed word) main::rowOffsetY#2 = (signed word) main::rowOffsetY#4 (signed word) main::rowOffsetY#5 (signed word) main::rowOffsetY#3 -Alias (byte) main::row#2 = (byte) main::row#3 -Alias (signed word) main::rowX#3 = (signed word) main::rowX#4 (signed word) main::rowX#5 -Alias (signed word) main::rowY#3 = (signed word) main::rowY#4 (signed word) main::rowY#5 -Alias (byte) main::col#2 = (byte) main::col#3 (byte) main::col#4 -Alias (signed word) main::origX#3 = (signed word) main::origX#7 (signed word) main::origX#9 (signed word) main::origX#5 -Alias (byte*) progress_cursor#51 = (byte*) progress_cursor#57 (byte*) progress_cursor#59 (byte*) progress_cursor#55 (byte*) progress_cursor#53 -Alias (byte) progress_idx#51 = (byte) progress_idx#57 (byte) progress_idx#59 (byte) progress_idx#55 (byte) progress_idx#53 -Alias (byte) bob_charset_next_id#59 = (byte) bob_charset_next_id#65 (byte) bob_charset_next_id#67 (byte) bob_charset_next_id#63 (byte) bob_charset_next_id#61 -Alias (byte**) renderBobCleanupNext#1 = (byte**) renderBobCleanupNext#10 (byte**) renderBobCleanupNext#25 (byte**) renderBobCleanupNext#32 (byte**) renderBobCleanupNext#29 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 -Alias (signed word) main::origX#1 = (signed word) main::origX#10 -Alias (signed word) main::rowOffsetY#1 = (signed word) main::rowOffsetY#11 -Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 -Alias (byte*) progress_cursor#1 = (byte*) progress_cursor#48 (byte*) progress_cursor#49 (byte*) progress_cursor#47 (byte*) progress_cursor#46 (byte*) progress_cursor#44 (byte*) progress_cursor#42 (byte*) progress_cursor#39 (byte*) progress_cursor#36 (byte*) progress_cursor#33 (byte*) progress_cursor#29 (byte*) progress_cursor#22 (byte*) progress_cursor#12 -Alias (byte) progress_idx#1 = (byte) progress_idx#48 (byte) progress_idx#49 (byte) progress_idx#47 (byte) progress_idx#46 (byte) progress_idx#44 (byte) progress_idx#42 (byte) progress_idx#39 (byte) progress_idx#36 (byte) progress_idx#33 (byte) progress_idx#29 (byte) progress_idx#23 (byte) progress_idx#13 -Alias (byte) bob_charset_next_id#1 = (byte) bob_charset_next_id#56 (byte) bob_charset_next_id#57 (byte) bob_charset_next_id#55 (byte) bob_charset_next_id#54 (byte) bob_charset_next_id#52 (byte) bob_charset_next_id#50 (byte) bob_charset_next_id#47 (byte) bob_charset_next_id#42 (byte) bob_charset_next_id#36 (byte) bob_charset_next_id#29 (byte) bob_charset_next_id#20 (byte) bob_charset_next_id#11 -Alias (byte**) renderBobCleanupNext#11 = (byte**) renderBobCleanupNext#43 (byte**) renderBobCleanupNext#45 (byte**) renderBobCleanupNext#41 (byte**) renderBobCleanupNext#39 (byte**) renderBobCleanupNext#37 (byte**) renderBobCleanupNext#35 (byte**) renderBobCleanupNext#33 (byte**) renderBobCleanupNext#30 (byte**) renderBobCleanupNext#26 (byte**) renderBobCleanupNext#22 (byte**) renderBobCleanupNext#18 (byte**) renderBobCleanupNext#2 -Alias (byte*) main::vicSelectGfxBank2_gfx#0 = (byte*) main::vicSelectGfxBank2_gfx#1 (byte*) main::vicSelectGfxBank2_toDd001_gfx#0 (byte*) main::vicSelectGfxBank2_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank2_toDd001_return#0 = (byte~) main::vicSelectGfxBank2_toDd001_$3 (byte) main::vicSelectGfxBank2_toDd001_return#2 (byte) main::vicSelectGfxBank2_toDd001_return#1 (byte) main::vicSelectGfxBank2_toDd001_return#3 (byte~) main::vicSelectGfxBank2_$0 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 -Alias (byte) renderBob::x_char_offset#0 = (byte~) renderBob::$0 -Alias (byte) renderBob::y_char_offset#0 = (byte~) renderBob::$1 -Alias (byte*) renderBob::screen#0 = (byte*~) renderBob::$3 -Alias (byte) renderBob::bob_table_idx#0 = (byte~) renderBob::$7 -Alias (byte**) renderBobCleanupNext#13 = (byte**) renderBobCleanupNext#4 (byte**) renderBobCleanupNext#5 -Alias (byte**) renderBobCleanupNext#14 = (byte**) renderBobCleanupNext#6 (byte**) renderBobCleanupNext#7 -Alias (byte*) progress_cursor#13 = (byte*) progress_cursor#2 (byte*) progress_cursor#30 -Alias (byte) progress_idx#14 = (byte) progress_idx#2 (byte) progress_idx#30 -Alias (byte) bob_charset_next_id#12 = (byte) bob_charset_next_id#3 -Alias (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#9 -Alias (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#6 -Alias (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#48 (byte) bob_charset_next_id#22 (byte) bob_charset_next_id#5 -Alias (byte*) progress_cursor#15 = (byte*) progress_cursor#40 (byte*) progress_cursor#25 (byte*) progress_cursor#4 -Alias (byte) progress_idx#16 = (byte) progress_idx#40 (byte) progress_idx#26 (byte) progress_idx#4 -Alias (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#2 (byte) prepareBobs::bob_table_idx#4 (byte) prepareBobs::bob_table_idx#14 -Alias (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#39 (byte) bob_charset_next_id#43 (byte) bob_charset_next_id#37 -Alias (byte) progress_idx#31 = (byte) progress_idx#38 (byte) progress_idx#37 (byte) progress_idx#34 -Alias (byte*) progress_cursor#31 = (byte*) progress_cursor#38 (byte*) progress_cursor#37 (byte*) progress_cursor#34 -Alias (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#8 -Alias (byte) prepareBobs::shift_y#12 = (byte) prepareBobs::shift_y#5 (byte) prepareBobs::shift_y#4 (byte) prepareBobs::shift_y#3 -Alias (byte*) prepareBobs::bob_table#0 = (byte*~) prepareBobs::$4 -Alias (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#4 (byte*) prepareBobs::bob_glyph#3 -Alias (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#31 (byte) bob_charset_next_id#53 (byte) bob_charset_next_id#51 (byte) bob_charset_next_id#49 -Alias (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#3 (byte*) prepareBobs::bob_table#4 -Alias (byte) progress_idx#25 = (byte) progress_idx#32 (byte) progress_idx#35 (byte) progress_idx#45 (byte) progress_idx#43 (byte) progress_idx#41 -Alias (byte*) progress_cursor#24 = (byte*) progress_cursor#32 (byte*) progress_cursor#35 (byte*) progress_cursor#45 (byte*) progress_cursor#43 (byte*) progress_cursor#41 -Alias (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#5 (byte) prepareBobs::cell#4 (byte) prepareBobs::cell#3 -Alias (byte) prepareBobs::bob_table_idx#10 = (byte) prepareBobs::bob_table_idx#13 (byte) prepareBobs::bob_table_idx#5 (byte) prepareBobs::bob_table_idx#8 (byte) prepareBobs::bob_table_idx#3 -Alias (byte) prepareBobs::shift_x#10 = (byte) prepareBobs::shift_x#6 (byte) prepareBobs::shift_x#9 (byte) prepareBobs::shift_x#7 (byte) prepareBobs::shift_x#5 (byte) prepareBobs::shift_x#4 (byte) prepareBobs::shift_x#3 -Alias (byte) prepareBobs::shift_y#10 = (byte) prepareBobs::shift_y#14 (byte) prepareBobs::shift_y#13 (byte) prepareBobs::shift_y#11 (byte) prepareBobs::shift_y#9 (byte) prepareBobs::shift_y#8 (byte) prepareBobs::shift_y#7 -Alias (byte) charsetFindOrAddGlyph::return#1 = (byte) charsetFindOrAddGlyph::return#5 -Alias (byte) bob_charset_next_id#13 = (byte) bob_charset_next_id#4 (byte) bob_charset_next_id#38 -Alias (byte*) prepareBobs::bob_glyph#1 = (byte*) prepareBobs::bob_glyph#5 -Alias (byte*) prepareBobs::bob_table#1 = (byte*) prepareBobs::bob_table#5 -Alias (byte) progress_idx#15 = (byte) progress_idx#3 -Alias (byte*) progress_cursor#14 = (byte*) progress_cursor#3 -Alias (byte) prepareBobs::bob_table_idx#1 = (byte) prepareBobs::bob_table_idx#11 (byte) prepareBobs::bob_table_idx#7 -Alias (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#7 (byte) protoBobShiftRight::j#8 (byte) protoBobShiftRight::j#9 -Alias (byte) protoBobShiftRight::carry#3 = (byte) protoBobShiftRight::carry#5 (byte) protoBobShiftRight::carry#6 (byte) protoBobShiftRight::carry#4 -Alias (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#9 (byte) protoBobShiftRight::i#7 (byte) protoBobShiftRight::i#8 -Alias (byte) protoBobShiftRight::carry#1 = (byte) protoBobShiftRight::new_carry#0 (byte~) protoBobShiftRight::$4 (byte) protoBobShiftRight::carry#9 (byte) protoBobShiftRight::carry#8 -Alias (byte) protoBobShiftRight::j#4 = (byte) protoBobShiftRight::j#5 (byte) protoBobShiftRight::j#6 -Alias (byte) protoBobShiftRight::i#4 = (byte) protoBobShiftRight::i#5 (byte) protoBobShiftRight::i#6 -Alias (byte) protoBobShiftDown::i#2 = (byte) protoBobShiftDown::i#3 -Alias (byte**) renderBobCleanupNext#19 = (byte**) renderBobCleanupNext#27 (byte**) renderBobCleanupNext#3 (byte**) renderBobCleanupNext#23 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#0 = (byte*) charsetFindOrAddGlyph::charset#2 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#11 = (byte*) charsetFindOrAddGlyph::glyph_cursor#8 (byte*) charsetFindOrAddGlyph::glyph_cursor#12 -Alias (byte*) charsetFindOrAddGlyph::glyph#6 = (byte*) charsetFindOrAddGlyph::glyph#9 (byte*) charsetFindOrAddGlyph::glyph#8 -Alias (byte) charsetFindOrAddGlyph::glyph_id#11 = (byte) charsetFindOrAddGlyph::glyph_id#12 (byte) charsetFindOrAddGlyph::glyph_id#2 -Alias (byte) bob_charset_next_id#15 = (byte) bob_charset_next_id#44 (byte) bob_charset_next_id#34 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#10 = (byte*) charsetFindOrAddGlyph::glyph_cursor#2 (byte*) charsetFindOrAddGlyph::glyph_cursor#5 (byte*) charsetFindOrAddGlyph::glyph_cursor#9 -Alias (byte) charsetFindOrAddGlyph::i#2 = (byte) charsetFindOrAddGlyph::i#3 (byte) charsetFindOrAddGlyph::i#4 -Alias (byte*) charsetFindOrAddGlyph::glyph#13 = (byte*) charsetFindOrAddGlyph::glyph#2 (byte*) charsetFindOrAddGlyph::glyph#4 (byte*) charsetFindOrAddGlyph::glyph#7 -Alias (byte) charsetFindOrAddGlyph::found#3 = (byte) charsetFindOrAddGlyph::found#5 (byte) charsetFindOrAddGlyph::found#4 -Alias (byte) charsetFindOrAddGlyph::glyph_id#13 = (byte) charsetFindOrAddGlyph::glyph_id#14 (byte) charsetFindOrAddGlyph::glyph_id#9 (byte) charsetFindOrAddGlyph::glyph_id#8 -Alias (byte) bob_charset_next_id#40 = (byte) bob_charset_next_id#46 (byte) bob_charset_next_id#41 (byte) bob_charset_next_id#45 -Alias (byte) charsetFindOrAddGlyph::glyph_id#3 = (byte) charsetFindOrAddGlyph::glyph_id#6 (byte) charsetFindOrAddGlyph::glyph_id#4 (byte) charsetFindOrAddGlyph::return#2 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#3 = (byte*) charsetFindOrAddGlyph::glyph_cursor#6 -Alias (byte) bob_charset_next_id#24 = (byte) bob_charset_next_id#32 (byte) bob_charset_next_id#25 -Alias (byte*) charsetFindOrAddGlyph::glyph#11 = (byte*) charsetFindOrAddGlyph::glyph#12 -Alias (byte) charsetFindOrAddGlyph::return#3 = (byte) charsetFindOrAddGlyph::return#6 -Alias (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#7 -Alias (byte*) charsetFindOrAddGlyph::glyph#3 = (byte*) charsetFindOrAddGlyph::glyph#5 -Alias (byte) charsetFindOrAddGlyph::i1#2 = (byte) charsetFindOrAddGlyph::i1#3 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#4 = (byte*) charsetFindOrAddGlyph::glyph_cursor#7 -Alias (byte) bob_charset_next_id#17 = (byte) bob_charset_next_id#33 (byte) bob_charset_next_id#26 -Alias (byte) charsetFindOrAddGlyph::glyph_id#10 = (byte) charsetFindOrAddGlyph::glyph_id#7 (byte) charsetFindOrAddGlyph::glyph_id#5 (byte) charsetFindOrAddGlyph::return#4 -Alias (byte) bob_charset_next_id#27 = (byte) bob_charset_next_id#35 (byte) bob_charset_next_id#6 -Alias (byte*) progress_cursor#16 = (byte*) progress_cursor#6 (byte*) progress_cursor#7 -Alias (byte) progress_idx#17 = (byte) progress_idx#6 (byte) progress_idx#7 -Alias (byte*) progress_cursor#18 = (byte*) progress_cursor#26 -Alias (byte) progress_idx#10 = (byte) progress_idx#20 (byte) progress_idx#19 -Alias (byte*) progress_cursor#17 = (byte*) progress_cursor#19 (byte*) progress_cursor#9 -Alias (byte*) progress_cursor#27 = (byte*) progress_cursor#5 -Alias (byte) progress_idx#27 = (byte) progress_idx#5 -Alias (byte*) progress_cursor#10 = (byte*) progress_cursor#20 -Alias (byte) progress_idx#11 = (byte) progress_idx#21 -Alias (byte) bob_charset_next_id#18 = (byte) bob_charset_next_id#9 -Alias (byte**) renderBobCleanupNext#15 = (byte**) renderBobCleanupNext#8 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#4 keyboard_key_pressed::return#1 +Alias mulf_init::c#2 = mulf_init::c#3 +Alias mulf_init::sqr#4 = mulf_init::sqr#5 mulf_init::sqr#6 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#4 mulf_init::sqr1_lo#5 +Alias mulf_init::sqr1_hi#3 = mulf_init::sqr1_hi#5 mulf_init::sqr1_hi#4 +Alias mulf_init::x_2#3 = mulf_init::x_2#4 mulf_init::x_2#5 +Alias mulf_init::sqr#1 = mulf_init::$6 +Alias mulf_init::c#1 = mulf_init::c#5 +Alias mulf_init::x_255#2 = mulf_init::x_255#3 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#3 mulf_init::sqr2_lo#5 +Alias mulf_init::sqr2_hi#2 = mulf_init::sqr2_hi#3 +Alias mulf_init::dir#2 = mulf_init::dir#3 +Alias mulf_init::x_255#1 = mulf_init::$8 mulf_init::x_255#5 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#5 +Alias progress_cursor#21 = progress_cursor#28 +Alias progress_idx#22 = progress_idx#28 +Alias bob_charset_next_id#19 = bob_charset_next_id#28 +Alias renderBobCleanupNext#28 = renderBobCleanupNext#49 renderBobCleanupNext#50 renderBobCleanupNext#48 renderBobCleanupNext#47 renderBobCleanupNext#46 renderBobCleanupNext#44 renderBobCleanupNext#42 renderBobCleanupNext#40 renderBobCleanupNext#38 renderBobCleanupNext#36 renderBobCleanupNext#34 renderBobCleanupNext#31 +Alias progress_cursor#0 = progress_cursor#11 progress_cursor#69 progress_cursor#68 progress_cursor#66 progress_cursor#64 progress_cursor#62 progress_cursor#60 progress_cursor#58 progress_cursor#56 progress_cursor#54 progress_cursor#52 +Alias progress_idx#0 = progress_idx#12 progress_idx#69 progress_idx#68 progress_idx#66 progress_idx#64 progress_idx#62 progress_idx#60 progress_idx#58 progress_idx#56 progress_idx#54 progress_idx#52 +Alias bob_charset_next_id#0 = bob_charset_next_id#10 bob_charset_next_id#77 bob_charset_next_id#76 bob_charset_next_id#74 bob_charset_next_id#72 bob_charset_next_id#70 bob_charset_next_id#68 bob_charset_next_id#66 bob_charset_next_id#64 bob_charset_next_id#62 bob_charset_next_id#60 +Alias main::vicSelectGfxBank1_gfx#0 = main::vicSelectGfxBank1_gfx#1 main::vicSelectGfxBank1_toDd001_gfx#0 main::vicSelectGfxBank1_toDd001_gfx#1 +Alias main::vicSelectGfxBank1_toDd001_return#0 = main::vicSelectGfxBank1_toDd001_$3 main::vicSelectGfxBank1_toDd001_return#2 main::vicSelectGfxBank1_toDd001_return#1 main::vicSelectGfxBank1_toDd001_return#3 main::vicSelectGfxBank1_$0 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$4 +Alias renderBobCleanupNext#16 = renderBobCleanupNext#20 +Alias main::origX#2 = main::origX#4 main::origX#6 main::rowX#0 +Alias main::rowOffsetY#7 = main::rowOffsetY#8 main::rowOffsetY#9 +Alias progress_cursor#63 = progress_cursor#65 progress_cursor#67 +Alias progress_idx#63 = progress_idx#65 progress_idx#67 +Alias bob_charset_next_id#71 = bob_charset_next_id#73 bob_charset_next_id#75 +Alias renderBobCleanupNext#0 = renderBobCleanupNext#9 +Alias main::x#0 = main::rowX#2 +Alias main::y#0 = main::rowY#2 +Alias renderBob::xpos#0 = main::$10 +Alias renderBob::ypos#0 = main::$11 +Alias main::x#2 = main::x#3 +Alias main::y#2 = main::y#3 +Alias main::rowOffsetY#2 = main::rowOffsetY#4 main::rowOffsetY#5 main::rowOffsetY#3 +Alias main::row#2 = main::row#3 +Alias main::rowX#3 = main::rowX#4 main::rowX#5 +Alias main::rowY#3 = main::rowY#4 main::rowY#5 +Alias main::col#2 = main::col#3 main::col#4 +Alias main::origX#3 = main::origX#7 main::origX#9 main::origX#5 +Alias progress_cursor#51 = progress_cursor#57 progress_cursor#59 progress_cursor#55 progress_cursor#53 +Alias progress_idx#51 = progress_idx#57 progress_idx#59 progress_idx#55 progress_idx#53 +Alias bob_charset_next_id#59 = bob_charset_next_id#65 bob_charset_next_id#67 bob_charset_next_id#63 bob_charset_next_id#61 +Alias renderBobCleanupNext#1 = renderBobCleanupNext#10 renderBobCleanupNext#25 renderBobCleanupNext#32 renderBobCleanupNext#29 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#5 +Alias main::origX#1 = main::origX#10 +Alias main::rowOffsetY#1 = main::rowOffsetY#11 +Alias keyboard_key_pressed::return#3 = keyboard_key_pressed::return#6 +Alias progress_cursor#1 = progress_cursor#48 progress_cursor#49 progress_cursor#47 progress_cursor#46 progress_cursor#44 progress_cursor#42 progress_cursor#39 progress_cursor#36 progress_cursor#33 progress_cursor#29 progress_cursor#22 progress_cursor#12 +Alias progress_idx#1 = progress_idx#48 progress_idx#49 progress_idx#47 progress_idx#46 progress_idx#44 progress_idx#42 progress_idx#39 progress_idx#36 progress_idx#33 progress_idx#29 progress_idx#23 progress_idx#13 +Alias bob_charset_next_id#1 = bob_charset_next_id#56 bob_charset_next_id#57 bob_charset_next_id#55 bob_charset_next_id#54 bob_charset_next_id#52 bob_charset_next_id#50 bob_charset_next_id#47 bob_charset_next_id#42 bob_charset_next_id#36 bob_charset_next_id#29 bob_charset_next_id#20 bob_charset_next_id#11 +Alias renderBobCleanupNext#11 = renderBobCleanupNext#43 renderBobCleanupNext#45 renderBobCleanupNext#41 renderBobCleanupNext#39 renderBobCleanupNext#37 renderBobCleanupNext#35 renderBobCleanupNext#33 renderBobCleanupNext#30 renderBobCleanupNext#26 renderBobCleanupNext#22 renderBobCleanupNext#18 renderBobCleanupNext#2 +Alias main::vicSelectGfxBank2_gfx#0 = main::vicSelectGfxBank2_gfx#1 main::vicSelectGfxBank2_toDd001_gfx#0 main::vicSelectGfxBank2_toDd001_gfx#1 +Alias main::vicSelectGfxBank2_toDd001_return#0 = main::vicSelectGfxBank2_toDd001_$3 main::vicSelectGfxBank2_toDd001_return#2 main::vicSelectGfxBank2_toDd001_return#1 main::vicSelectGfxBank2_toDd001_return#3 main::vicSelectGfxBank2_$0 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 +Alias renderBob::x_char_offset#0 = renderBob::$0 +Alias renderBob::y_char_offset#0 = renderBob::$1 +Alias renderBob::screen#0 = renderBob::$3 +Alias renderBob::bob_table_idx#0 = renderBob::$7 +Alias renderBobCleanupNext#13 = renderBobCleanupNext#4 renderBobCleanupNext#5 +Alias renderBobCleanupNext#14 = renderBobCleanupNext#6 renderBobCleanupNext#7 +Alias progress_cursor#13 = progress_cursor#2 progress_cursor#30 +Alias progress_idx#14 = progress_idx#2 progress_idx#30 +Alias bob_charset_next_id#12 = bob_charset_next_id#3 +Alias prepareBobs::bob_table_idx#6 = prepareBobs::bob_table_idx#9 +Alias prepareBobs::shift_y#2 = prepareBobs::shift_y#6 +Alias bob_charset_next_id#14 = bob_charset_next_id#48 bob_charset_next_id#22 bob_charset_next_id#5 +Alias progress_cursor#15 = progress_cursor#40 progress_cursor#25 progress_cursor#4 +Alias progress_idx#16 = progress_idx#40 progress_idx#26 progress_idx#4 +Alias prepareBobs::bob_table_idx#12 = prepareBobs::bob_table_idx#2 prepareBobs::bob_table_idx#4 prepareBobs::bob_table_idx#14 +Alias bob_charset_next_id#30 = bob_charset_next_id#39 bob_charset_next_id#43 bob_charset_next_id#37 +Alias progress_idx#31 = progress_idx#38 progress_idx#37 progress_idx#34 +Alias progress_cursor#31 = progress_cursor#38 progress_cursor#37 progress_cursor#34 +Alias prepareBobs::shift_x#2 = prepareBobs::shift_x#8 +Alias prepareBobs::shift_y#12 = prepareBobs::shift_y#5 prepareBobs::shift_y#4 prepareBobs::shift_y#3 +Alias prepareBobs::bob_table#0 = prepareBobs::$4 +Alias prepareBobs::bob_glyph#2 = prepareBobs::bob_glyph#4 prepareBobs::bob_glyph#3 +Alias bob_charset_next_id#21 = bob_charset_next_id#31 bob_charset_next_id#53 bob_charset_next_id#51 bob_charset_next_id#49 +Alias prepareBobs::bob_table#2 = prepareBobs::bob_table#3 prepareBobs::bob_table#4 +Alias progress_idx#25 = progress_idx#32 progress_idx#35 progress_idx#45 progress_idx#43 progress_idx#41 +Alias progress_cursor#24 = progress_cursor#32 progress_cursor#35 progress_cursor#45 progress_cursor#43 progress_cursor#41 +Alias prepareBobs::cell#2 = prepareBobs::cell#5 prepareBobs::cell#4 prepareBobs::cell#3 +Alias prepareBobs::bob_table_idx#10 = prepareBobs::bob_table_idx#13 prepareBobs::bob_table_idx#5 prepareBobs::bob_table_idx#8 prepareBobs::bob_table_idx#3 +Alias prepareBobs::shift_x#10 = prepareBobs::shift_x#6 prepareBobs::shift_x#9 prepareBobs::shift_x#7 prepareBobs::shift_x#5 prepareBobs::shift_x#4 prepareBobs::shift_x#3 +Alias prepareBobs::shift_y#10 = prepareBobs::shift_y#14 prepareBobs::shift_y#13 prepareBobs::shift_y#11 prepareBobs::shift_y#9 prepareBobs::shift_y#8 prepareBobs::shift_y#7 +Alias charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::return#5 +Alias bob_charset_next_id#13 = bob_charset_next_id#4 bob_charset_next_id#38 +Alias prepareBobs::bob_glyph#1 = prepareBobs::bob_glyph#5 +Alias prepareBobs::bob_table#1 = prepareBobs::bob_table#5 +Alias progress_idx#15 = progress_idx#3 +Alias progress_cursor#14 = progress_cursor#3 +Alias prepareBobs::bob_table_idx#1 = prepareBobs::bob_table_idx#11 prepareBobs::bob_table_idx#7 +Alias protoBobShiftRight::j#3 = protoBobShiftRight::j#7 protoBobShiftRight::j#8 protoBobShiftRight::j#9 +Alias protoBobShiftRight::carry#3 = protoBobShiftRight::carry#5 protoBobShiftRight::carry#6 protoBobShiftRight::carry#4 +Alias protoBobShiftRight::i#2 = protoBobShiftRight::i#9 protoBobShiftRight::i#7 protoBobShiftRight::i#8 +Alias protoBobShiftRight::carry#1 = protoBobShiftRight::new_carry#0 protoBobShiftRight::$4 protoBobShiftRight::carry#9 protoBobShiftRight::carry#8 +Alias protoBobShiftRight::j#4 = protoBobShiftRight::j#5 protoBobShiftRight::j#6 +Alias protoBobShiftRight::i#4 = protoBobShiftRight::i#5 protoBobShiftRight::i#6 +Alias protoBobShiftDown::i#2 = protoBobShiftDown::i#3 +Alias renderBobCleanupNext#19 = renderBobCleanupNext#27 renderBobCleanupNext#3 renderBobCleanupNext#23 +Alias charsetFindOrAddGlyph::glyph_cursor#0 = charsetFindOrAddGlyph::charset#2 +Alias charsetFindOrAddGlyph::glyph_cursor#11 = charsetFindOrAddGlyph::glyph_cursor#8 charsetFindOrAddGlyph::glyph_cursor#12 +Alias charsetFindOrAddGlyph::glyph#6 = charsetFindOrAddGlyph::glyph#9 charsetFindOrAddGlyph::glyph#8 +Alias charsetFindOrAddGlyph::glyph_id#11 = charsetFindOrAddGlyph::glyph_id#12 charsetFindOrAddGlyph::glyph_id#2 +Alias bob_charset_next_id#15 = bob_charset_next_id#44 bob_charset_next_id#34 +Alias charsetFindOrAddGlyph::glyph_cursor#10 = charsetFindOrAddGlyph::glyph_cursor#2 charsetFindOrAddGlyph::glyph_cursor#5 charsetFindOrAddGlyph::glyph_cursor#9 +Alias charsetFindOrAddGlyph::i#2 = charsetFindOrAddGlyph::i#3 charsetFindOrAddGlyph::i#4 +Alias charsetFindOrAddGlyph::glyph#13 = charsetFindOrAddGlyph::glyph#2 charsetFindOrAddGlyph::glyph#4 charsetFindOrAddGlyph::glyph#7 +Alias charsetFindOrAddGlyph::found#3 = charsetFindOrAddGlyph::found#5 charsetFindOrAddGlyph::found#4 +Alias charsetFindOrAddGlyph::glyph_id#13 = charsetFindOrAddGlyph::glyph_id#14 charsetFindOrAddGlyph::glyph_id#9 charsetFindOrAddGlyph::glyph_id#8 +Alias bob_charset_next_id#40 = bob_charset_next_id#46 bob_charset_next_id#41 bob_charset_next_id#45 +Alias charsetFindOrAddGlyph::glyph_id#3 = charsetFindOrAddGlyph::glyph_id#6 charsetFindOrAddGlyph::glyph_id#4 charsetFindOrAddGlyph::return#2 +Alias charsetFindOrAddGlyph::glyph_cursor#3 = charsetFindOrAddGlyph::glyph_cursor#6 +Alias bob_charset_next_id#24 = bob_charset_next_id#32 bob_charset_next_id#25 +Alias charsetFindOrAddGlyph::glyph#11 = charsetFindOrAddGlyph::glyph#12 +Alias charsetFindOrAddGlyph::return#3 = charsetFindOrAddGlyph::return#6 +Alias bob_charset_next_id#16 = bob_charset_next_id#7 +Alias charsetFindOrAddGlyph::glyph#3 = charsetFindOrAddGlyph::glyph#5 +Alias charsetFindOrAddGlyph::i1#2 = charsetFindOrAddGlyph::i1#3 +Alias charsetFindOrAddGlyph::glyph_cursor#4 = charsetFindOrAddGlyph::glyph_cursor#7 +Alias bob_charset_next_id#17 = bob_charset_next_id#33 bob_charset_next_id#26 +Alias charsetFindOrAddGlyph::glyph_id#10 = charsetFindOrAddGlyph::glyph_id#7 charsetFindOrAddGlyph::glyph_id#5 charsetFindOrAddGlyph::return#4 +Alias bob_charset_next_id#27 = bob_charset_next_id#35 bob_charset_next_id#6 +Alias progress_cursor#16 = progress_cursor#6 progress_cursor#7 +Alias progress_idx#17 = progress_idx#6 progress_idx#7 +Alias progress_cursor#18 = progress_cursor#26 +Alias progress_idx#10 = progress_idx#20 progress_idx#19 +Alias progress_cursor#17 = progress_cursor#19 progress_cursor#9 +Alias progress_cursor#27 = progress_cursor#5 +Alias progress_idx#27 = progress_idx#5 +Alias progress_cursor#10 = progress_cursor#20 +Alias progress_idx#11 = progress_idx#21 +Alias bob_charset_next_id#18 = bob_charset_next_id#9 +Alias renderBobCleanupNext#15 = renderBobCleanupNext#8 Successful SSA optimization Pass2AliasElimination -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 -Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 -Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (byte) protoBobShiftRight::j#3 = (byte) protoBobShiftRight::j#4 -Alias (byte) protoBobShiftRight::carry#2 = (byte) protoBobShiftRight::carry#3 -Alias (byte) protoBobShiftRight::i#2 = (byte) protoBobShiftRight::i#4 (byte) protoBobShiftRight::i#3 -Alias (byte) protoBobShiftRight::carry#1 = (byte) protoBobShiftRight::carry#7 -Alias (byte) charsetFindOrAddGlyph::glyph_id#13 = (byte) charsetFindOrAddGlyph::glyph_id#3 -Alias (byte*) charsetFindOrAddGlyph::glyph_cursor#10 = (byte*) charsetFindOrAddGlyph::glyph_cursor#3 -Alias (byte) bob_charset_next_id#24 = (byte) bob_charset_next_id#40 -Alias (byte*) charsetFindOrAddGlyph::glyph#11 = (byte*) charsetFindOrAddGlyph::glyph#13 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#3 +Alias mulf_init::sqr1_hi#2 = mulf_init::sqr1_hi#3 +Alias mulf_init::c#1 = mulf_init::c#4 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#4 +Alias mulf_init::x_255#1 = mulf_init::x_255#4 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#4 +Alias protoBobShiftRight::j#3 = protoBobShiftRight::j#4 +Alias protoBobShiftRight::carry#2 = protoBobShiftRight::carry#3 +Alias protoBobShiftRight::i#2 = protoBobShiftRight::i#4 protoBobShiftRight::i#3 +Alias protoBobShiftRight::carry#1 = protoBobShiftRight::carry#7 +Alias charsetFindOrAddGlyph::glyph_id#13 = charsetFindOrAddGlyph::glyph_id#3 +Alias charsetFindOrAddGlyph::glyph_cursor#10 = charsetFindOrAddGlyph::glyph_cursor#3 +Alias bob_charset_next_id#24 = bob_charset_next_id#40 +Alias charsetFindOrAddGlyph::glyph#11 = charsetFindOrAddGlyph::glyph#13 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -3339,7 +3339,7 @@ Consolidated array index constant in *(PROTO_BOB+$18) Consolidated array index constant in *(PROTO_BOB+$30) Consolidated array index constant in *(progress_inc::progress_chars+8) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word~) renderBobInit::$1 = (word~) renderBobInit::$8 +Alias renderBobInit::$1 = renderBobInit::$8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_key_pressed::key#2 (const byte) KEY_SPACE Identical Phi Values (byte*) charsetFindOrAddGlyph::glyph_cursor#0 (const byte*) BOB_CHARSET @@ -4120,67 +4120,67 @@ mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 VARIABLE REGISTER WEIGHTS (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 12.0 -(byte) bob_charset_next_id#16 1000.5454545454544 -(byte) bob_charset_next_id#21 275.5 -(byte) bob_charset_next_id#23 1400.3333333333335 -(byte) bob_charset_next_id#30 37.33333333333333 -(byte) bob_charset_next_id#8 4.0 +(byte) bob_charset_next_id#14 1051.5 +(byte) bob_charset_next_id#16 9.091909185454544E8 +(byte) bob_charset_next_id#21 27500.5 +(byte) bob_charset_next_id#23 1.3334066669333334E9 +(byte) bob_charset_next_id#30 3667.333333333333 +(byte) bob_charset_next_id#8 2000002.0 (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) (byte*) charsetFindOrAddGlyph::charset (byte) charsetFindOrAddGlyph::found -(byte) charsetFindOrAddGlyph::found#2 10001.0 +(byte) charsetFindOrAddGlyph::found#2 1.0000000001E10 (byte*) charsetFindOrAddGlyph::glyph -(byte*) charsetFindOrAddGlyph::glyph#1 2002.0 -(byte*) charsetFindOrAddGlyph::glyph#10 7400.200000000001 +(byte*) charsetFindOrAddGlyph::glyph#1 200002.0 +(byte*) charsetFindOrAddGlyph::glyph#10 7.333340000200001E9 (byte*) charsetFindOrAddGlyph::glyph_cursor -(byte*) charsetFindOrAddGlyph::glyph_cursor#1 20002.0 -(byte*) charsetFindOrAddGlyph::glyph_cursor#11 10000.307692307691 +(byte*) charsetFindOrAddGlyph::glyph_cursor#1 2.0000000002E10 +(byte*) charsetFindOrAddGlyph::glyph_cursor#11 1.0000000000307692E10 (byte) charsetFindOrAddGlyph::glyph_id -(byte) charsetFindOrAddGlyph::glyph_id#1 10001.0 -(byte) charsetFindOrAddGlyph::glyph_id#11 1937.75 +(byte) charsetFindOrAddGlyph::glyph_id#1 1.0000000001E10 +(byte) charsetFindOrAddGlyph::glyph_id#11 1.87500625025E9 (byte) charsetFindOrAddGlyph::i -(byte) charsetFindOrAddGlyph::i#1 200002.0 -(byte) charsetFindOrAddGlyph::i#2 166668.3333333333 +(byte) charsetFindOrAddGlyph::i#1 2.00000000002E11 +(byte) charsetFindOrAddGlyph::i#2 1.6666666666833334E11 (byte) charsetFindOrAddGlyph::i1 -(byte) charsetFindOrAddGlyph::i1#1 20002.0 -(byte) charsetFindOrAddGlyph::i1#2 16668.333333333332 +(byte) charsetFindOrAddGlyph::i1#1 2.0000000002E10 +(byte) charsetFindOrAddGlyph::i1#2 1.6666666668333332E10 (byte) charsetFindOrAddGlyph::return -(byte) charsetFindOrAddGlyph::return#1 2002.0 +(byte) charsetFindOrAddGlyph::return#1 200002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2002.0 (byte) keyboard_key_pressed::colidx (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 6.0 -(byte) keyboard_key_pressed::return#2 22.0 -(byte) keyboard_key_pressed::return#3 22.0 +(byte) keyboard_key_pressed::return#0 300.75 +(byte) keyboard_key_pressed::return#2 202.0 +(byte) keyboard_key_pressed::return#3 202.0 (byte) keyboard_key_pressed::rowidx (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3667.333333333333 +(byte) keyboard_matrix_read::return#2 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) main() -(byte~) main::$15 22.0 -(byte~) main::$17 22.0 +(byte~) main::$15 202.0 +(byte~) main::$17 202.0 (byte) main::col -(byte) main::col#1 151.5 -(byte) main::col#5 13.466666666666667 +(byte) main::col#1 1501.5 +(byte) main::col#5 133.46666666666667 (signed word) main::origX -(signed word) main::origX#1 3.142857142857143 -(signed word) main::origX#8 1.5 +(signed word) main::origX#1 28.857142857142858 +(signed word) main::origX#8 13.772727272727273 (byte) main::row -(byte) main::row#1 1501.5 -(byte) main::row#2 250.25 +(byte) main::row#1 15001.5 +(byte) main::row#2 2500.25 (signed word) main::rowOffsetY -(signed word) main::rowOffsetY#1 3.6666666666666665 -(signed word) main::rowOffsetY#10 44.47826086956522 +(signed word) main::rowOffsetY#1 33.666666666666664 +(signed word) main::rowOffsetY#10 443.6086956521739 (signed word) main::rowX -(signed word) main::rowX#1 50.5 +(signed word) main::rowX#1 500.5 (signed word) main::rowY -(signed word) main::rowY#1 67.33333333333333 +(signed word) main::rowY#1 667.3333333333334 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -4194,161 +4194,161 @@ VARIABLE REGISTER WEIGHTS (byte*) main::vicSelectGfxBank2_toDd001_gfx (byte) main::vicSelectGfxBank2_toDd001_return (signed word) main::x -(signed word) main::x#0 24.153846153846153 -(signed word) main::x#1 400.4 -(signed word) main::x#2 620.8 -(signed word) main::x#4 22.0 -(signed word) main::x#7 101.0 +(signed word) main::x#0 238.76923076923077 +(signed word) main::x#1 4000.4 +(signed word) main::x#2 6200.8 +(signed word) main::x#4 202.0 +(signed word) main::x#7 1001.0 (signed word) main::y -(signed word) main::y#0 21.642857142857142 -(signed word) main::y#1 500.5 -(signed word) main::y#2 517.3333333333334 -(signed word) main::y#6 202.0 +(signed word) main::y#0 214.5 +(signed word) main::y#1 5000.5 +(signed word) main::y#2 5167.333333333333 +(signed word) main::y#6 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1334.6666666666667 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) mulf_init() -(byte~) mulf_init::$1 22.0 -(byte~) mulf_init::$4 22.0 -(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$1 2002.0 +(byte~) mulf_init::$4 2002.0 +(byte~) mulf_init::$5 2002.0 (byte) mulf_init::c -(byte) mulf_init::c#1 2.5384615384615383 -(byte) mulf_init::c#2 11.0 +(byte) mulf_init::c#1 231.0 +(byte) mulf_init::c#2 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 4.125 -(byte) mulf_init::dir#4 11.0 +(byte) mulf_init::dir#2 375.375 +(byte) mulf_init::dir#4 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 11.0 -(word) mulf_init::sqr#2 22.0 -(word) mulf_init::sqr#3 9.166666666666666 -(word) mulf_init::sqr#4 5.5 +(word) mulf_init::sqr#1 1001.0 +(word) mulf_init::sqr#2 2002.0 +(word) mulf_init::sqr#3 834.1666666666667 +(word) mulf_init::sqr#4 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 2.75 +(byte*) mulf_init::sqr1_hi#1 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 22.0 -(byte*) mulf_init::sqr1_lo#2 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 2002.0 +(byte*) mulf_init::sqr1_lo#2 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 8.25 +(byte*) mulf_init::sqr2_hi#1 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 22.0 -(byte*) mulf_init::sqr2_lo#2 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 2002.0 +(byte*) mulf_init::sqr2_lo#2 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 11.0 -(byte) mulf_init::x_2#2 5.5 -(byte) mulf_init::x_2#3 6.6000000000000005 +(byte) mulf_init::x_2#1 1001.0 +(byte) mulf_init::x_2#2 500.5 +(byte) mulf_init::x_2#3 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 6.6000000000000005 -(byte) mulf_init::x_255#2 8.8 +(byte) mulf_init::x_255#1 600.5999999999999 +(byte) mulf_init::x_255#2 800.8 (void()) prepareBobs() -(byte~) prepareBobs::$6 2002.0 +(byte~) prepareBobs::$6 200002.0 (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 500.5 -(byte*) prepareBobs::bob_glyph#2 429.0 +(byte*) prepareBobs::bob_glyph#1 50000.5 +(byte*) prepareBobs::bob_glyph#2 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 202.0 -(byte*) prepareBobs::bob_table#1 667.3333333333334 -(byte*) prepareBobs::bob_table#2 388.0 +(byte*) prepareBobs::bob_table#0 20002.0 +(byte*) prepareBobs::bob_table#1 66667.33333333333 +(byte*) prepareBobs::bob_table#2 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 40.4 -(byte) prepareBobs::bob_table_idx#12 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 11.0 +(byte) prepareBobs::bob_table_idx#1 4000.4 +(byte) prepareBobs::bob_table_idx#12 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 2002.0 -(byte) prepareBobs::cell#2 300.29999999999995 +(byte) prepareBobs::cell#1 200002.0 +(byte) prepareBobs::cell#2 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 202.0 -(byte) prepareBobs::shift_x#2 16.833333333333332 +(byte) prepareBobs::shift_x#1 20002.0 +(byte) prepareBobs::shift_x#2 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 22.0 -(byte) prepareBobs::shift_y#2 1.4347826086956523 +(byte) prepareBobs::shift_y#1 2002.0 +(byte) prepareBobs::shift_y#2 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 11.0 -(byte*) progress_cursor#17 201.4 -(byte*) progress_cursor#24 71.11764705882355 -(byte*) progress_cursor#31 37.33333333333333 -(byte*) progress_cursor#8 4.0 +(byte*) progress_cursor#15 1001.0 +(byte*) progress_cursor#17 620000.8 +(byte*) progress_cursor#24 183529.76470588235 +(byte*) progress_cursor#31 3667.333333333333 +(byte*) progress_cursor#8 2000002.0 (byte) progress_idx -(byte) progress_idx#10 201.0 -(byte) progress_idx#16 11.0 -(byte) progress_idx#25 86.07142857142856 -(byte) progress_idx#31 37.33333333333333 -(byte) progress_idx#8 3.0 +(byte) progress_idx#10 420000.60000000003 +(byte) progress_idx#16 1001.0 +(byte) progress_idx#25 80000.28571428571 +(byte) progress_idx#31 3667.333333333333 +(byte) progress_idx#8 1500001.5 (void()) progress_inc() (void()) progress_init((byte*) progress_init::line) (byte*) progress_init::line (void()) protoBobShiftDown() (byte) protoBobShiftDown::i -(byte) protoBobShiftDown::i#1 202.0 -(byte) protoBobShiftDown::i#2 161.6 +(byte) protoBobShiftDown::i#1 2000002.0 +(byte) protoBobShiftDown::i#2 1600001.5999999999 (void()) protoBobShiftRight() -(byte~) protoBobShiftRight::$1 2002.0 -(byte~) protoBobShiftRight::$5 2002.0 -(byte~) protoBobShiftRight::$6 2002.0 +(byte~) protoBobShiftRight::$1 2.00000002E8 +(byte~) protoBobShiftRight::$5 2.00000002E8 +(byte~) protoBobShiftRight::$6 2.00000002E8 (byte) protoBobShiftRight::carry -(byte) protoBobShiftRight::carry#1 111.22222222222223 -(byte) protoBobShiftRight::carry#10 2002.0 -(byte) protoBobShiftRight::carry#2 286.0 +(byte) protoBobShiftRight::carry#1 1.1111111222222222E7 +(byte) protoBobShiftRight::carry#10 2.00000002E8 +(byte) protoBobShiftRight::carry#2 2.857142885714286E7 (byte) protoBobShiftRight::i -(byte) protoBobShiftRight::i#1 1001.0 -(byte) protoBobShiftRight::i#2 231.0 +(byte) protoBobShiftRight::i#1 1.00000001E8 +(byte) protoBobShiftRight::i#2 2.3076923307692308E7 (byte) protoBobShiftRight::j -(byte) protoBobShiftRight::j#1 2002.0 -(byte) protoBobShiftRight::j#10 1001.0 -(byte) protoBobShiftRight::j#2 2002.0 -(byte) protoBobShiftRight::j#3 700.7 +(byte) protoBobShiftRight::j#1 2.00000002E8 +(byte) protoBobShiftRight::j#10 1.00000001E8 +(byte) protoBobShiftRight::j#2 2.00000002E8 +(byte) protoBobShiftRight::j#3 7.00000007E7 (byte) protoBobShiftRight::new_carry (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 4.0 -(byte~) renderBob::$4 4.0 -(byte~) renderBob::$5 2.0 -(byte~) renderBob::$6 4.0 -(byte~) renderBob::$8 4.0 +(byte*~) renderBob::$2 200002.0 +(byte~) renderBob::$4 200002.0 +(byte~) renderBob::$5 100001.0 +(byte~) renderBob::$6 200002.0 +(byte~) renderBob::$8 200002.0 (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 90910.0 (byte*) renderBob::screen -(byte*) renderBob::screen#0 1.4666666666666666 +(byte*) renderBob::screen#0 73334.0666666667 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 0.8 +(byte) renderBob::x_char_offset#0 40000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 100.5 +(byte) renderBob::xpos#0 21000.300000000003 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 4.0 +(byte) renderBob::y_char_offset#0 200002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 4.0 +(word) renderBob::y_offset#0 200002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 143.57142857142856 +(byte) renderBob::ypos#0 30000.428571428572 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 202.0 +(byte~) renderBobCleanup::$1 200002.0 (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 151.5 -(byte) renderBobCleanup::i#2 25.25 +(byte) renderBobCleanup::i#1 150001.5 +(byte) renderBobCleanup::i#2 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 112.22222222222223 +(byte*) renderBobCleanup::screen#0 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 52.57142857142857 -(byte**) renderBobCleanupNext#17 73.73333333333335 -(byte**) renderBobCleanupNext#21 67.33333333333333 +(byte**) renderBobCleanupNext#13 5285.857142857143 +(byte**) renderBobCleanupNext#17 14066.933333333334 +(byte**) renderBobCleanupNext#21 667.3333333333334 (void()) renderBobInit() -(word~) renderBobInit::$0 16.5 -(word~) renderBobInit::$1 11.0 -(byte~) renderBobInit::$4 22.0 -(byte~) renderBobInit::$5 22.0 -(word~) renderBobInit::$6 22.0 -(word~) renderBobInit::$7 22.0 +(word~) renderBobInit::$0 1501.5 +(word~) renderBobInit::$1 1001.0 +(byte~) renderBobInit::$4 2002.0 +(byte~) renderBobInit::$5 2002.0 +(word~) renderBobInit::$6 2002.0 +(word~) renderBobInit::$7 2002.0 (byte) renderBobInit::i -(byte) renderBobInit::i#1 16.5 -(byte) renderBobInit::i#2 11.0 +(byte) renderBobInit::i#1 1501.5 +(byte) renderBobInit::i#2 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 16.5 -(byte) renderBobInit::y#2 4.714285714285714 +(byte) renderBobInit::y#1 1501.5 +(byte) renderBobInit::y#2 429.0 Initial phi equivalence classes [ main::origX#8 main::origX#1 ] @@ -6262,246 +6262,238 @@ PROTO_BOB: MUL40: .fill 2*$20, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a -Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ) always clobbers reg byte a -Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] { } ) always clobbers reg byte a +Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] { } ) always clobbers reg byte a +Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::col#5 main::col#1 ] -Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ) always clobbers reg byte a -Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ) always clobbers reg byte a +Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ main::row#2 main::row#1 ] -Statement [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a +Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] { } ) always clobbers reg byte a +Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a +Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a +Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a +Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:62 [ renderBob::xpos#0 ] -Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ) always clobbers reg byte a -Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a -Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a -Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a -Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] ) always clobbers reg byte a -Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a -Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a -Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] ) always clobbers reg byte a -Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:63 [ renderBob::ypos#0 ] -Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a +Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:72 [ renderBob::x_char_offset#0 ] -Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a +Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] { } ) always clobbers reg byte a +Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] { } ) always clobbers reg byte a +Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] { } ) always clobbers reg byte a +Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] { } ) always clobbers reg byte a +Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] { } ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] { } ) always clobbers reg byte a +Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:82 [ renderBob::$5 ] -Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::col#5 main::col#1 ] Removing always clobbered register reg byte y as potential for zp[1]:17 [ main::row#2 main::row#1 ] Removing always clobbered register reg byte a as potential for zp[1]:84 [ renderBob::bob_table_idx#0 ] Removing always clobbered register reg byte y as potential for zp[1]:84 [ renderBob::bob_table_idx#0 ] -Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a +Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a reg byte y +Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a +Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a +Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] -Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a +Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] { } ) always clobbers reg byte a +Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] { } ) always clobbers reg byte a +Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] { } ) always clobbers reg byte a +Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] { } ) always clobbers reg byte a +Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] { } ) always clobbers reg byte a +Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] -Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a +Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] { } ) always clobbers reg byte a +Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a +Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y +Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] Removing always clobbered register reg byte y as potential for zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a +Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] { } ) always clobbers reg byte a +Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] { } ) always clobbers reg byte a +Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] { } ) always clobbers reg byte a reg byte y +Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] Removing always clobbered register reg byte a as potential for zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] -Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a +Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] -Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a +Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] -Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a +Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ protoBobShiftRight::carry#1 ] -Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a -Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a -Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a +Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] { } ) always clobbers reg byte a +Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] { } ) always clobbers reg byte a +Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a +Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a +Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [220] (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:5 [ 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 [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [231] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [220] (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:5 [ 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 [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [233] (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:5 [ 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 [234] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [236] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] ) always clobbers reg byte a -Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ) always clobbers reg byte a -Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ) always clobbers reg byte a -Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ) always clobbers reg byte a -Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ) always clobbers reg byte a -Statement [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ) always clobbers reg byte a -Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a -Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ) always clobbers reg byte a -Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a -Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] ) always clobbers reg byte a -Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a -Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] ) always clobbers reg byte a -Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] ) always clobbers reg byte a -Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ) always clobbers reg byte a -Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ) always clobbers reg byte a -Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ) always clobbers reg byte a -Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ) always clobbers reg byte a -Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ) always clobbers reg byte a -Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] ) always clobbers reg byte a -Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [220] (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:5 [ 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 [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [231] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [233] (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:5 [ 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 [234] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [236] (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:5 [ 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 [234] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [236] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::origX#8 main::rowOffsetY#10 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 ] { } ) always clobbers reg byte a +Statement [20] (signed word) main::x#4 ← (signed word) main::origX#8 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#4 ] { } ) always clobbers reg byte a +Statement [22] (signed word) main::x#7 ← (signed word) main::x#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 ] { } ) always clobbers reg byte a +Statement [23] (signed word) main::y#6 ← (signed word) main::y#0 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 renderBobCleanupNext#21 main::col#5 main::x#7 main::y#6 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) BORDERCOL) ← (byte) 1 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 renderBobCleanupNext#17 main::row#2 ] { } ) always clobbers reg byte a +Statement [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::y#2 main::row#2 main::x#1 ] { } ) always clobbers reg byte a +Statement [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) 2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 renderBobCleanupNext#13 main::row#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a +Statement [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::y#0 main::col#5 main::rowX#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a +Statement [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] ( main:2 [ main::origX#8 main::rowOffsetY#10 main::col#5 main::rowX#1 main::rowY#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a +Statement [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100 [ main::rowOffsetY#10 main::origX#1 ] ( main:2 [ main::rowOffsetY#10 main::origX#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [40] *((const byte*) BORDERCOL) ← (byte) 0 [ main::origX#1 main::rowOffsetY#1 ] ( main:2 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:41::keyboard_matrix_read:57 [ main::origX#1 main::rowOffsetY#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:46::keyboard_matrix_read:57 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] { } ) always clobbers reg byte a +Statement [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] { } ) always clobbers reg byte a +Statement [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] { } ) always clobbers reg byte a +Statement [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] { } ) always clobbers reg byte a +Statement [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] { } ) always clobbers reg byte a +Statement [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] { } ) always clobbers reg byte a +Statement [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] { } ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] { } ) always clobbers reg byte a +Statement [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] { } ) always clobbers reg byte a +Statement [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:28 [ main::origX#8 main::rowOffsetY#10 main::x#0 main::y#0 main::col#5 main::x#2 main::y#2 main::row#2 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a reg byte y +Statement [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::$1 ] { } ) always clobbers reg byte a +Statement [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a +Statement [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::origX#8 main::rowOffsetY#10 renderBobCleanup::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] { } ) always clobbers reg byte a +Statement [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] { } ) always clobbers reg byte a +Statement [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] { } ) always clobbers reg byte a +Statement [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] { } ) always clobbers reg byte a +Statement [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] { } ) always clobbers reg byte a +Statement [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] { } ) always clobbers reg byte a +Statement [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] { } ) always clobbers reg byte a +Statement [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] { } ) always clobbers reg byte a +Statement [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] { } ) always clobbers reg byte a +Statement [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] { } ) always clobbers reg byte y +Statement [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] { } ) always clobbers reg byte a +Statement [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] { } ) always clobbers reg byte a +Statement [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] { } ) always clobbers reg byte a reg byte y +Statement [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:152 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2) [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i1#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 charsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::i#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::charsetFindOrAddGlyph:128 [ bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] { } main:2::prepareBobs:7::charsetFindOrAddGlyph:146 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph_id#1 charsetFindOrAddGlyph::glyph_cursor#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { charsetFindOrAddGlyph::glyph#1 = charsetFindOrAddGlyph::glyph#10 prepareBobs::bob_glyph#2 } { charsetFindOrAddGlyph::return#1 = charsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::$1 ] { } ) always clobbers reg byte a +Statement [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1 [ protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::j#3 protoBobShiftRight::carry#2 protoBobShiftRight::carry#1 protoBobShiftRight::$5 ] { } ) always clobbers reg byte a +Statement [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18 [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#2 ] { } ) always clobbers reg byte a +Statement [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f [ protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] ( main:2::prepareBobs:7::protoBobShiftRight:141 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] { } main:2::prepareBobs:7::protoBobShiftRight:143 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 protoBobShiftRight::i#2 protoBobShiftRight::carry#1 protoBobShiftRight::j#1 ] { } ) always clobbers reg byte a +Statement [199] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a +Statement [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2) [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a +Statement [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0 [ protoBobShiftDown::i#2 ] ( main:2::prepareBobs:7::protoBobShiftDown:135 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 protoBobShiftDown::i#2 ] { } ) always clobbers reg byte a +Statement [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [220] (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:5 [ 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 [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [234] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [236] (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:5 [ 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 Potential registers zp[2]:2 [ main::origX#8 main::origX#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] : zp[2]:6 , @@ -6582,87 +6574,83 @@ Potential registers zp[1]:104 [ mulf_init::$4 ] : zp[1]:104 , reg byte a , reg b Potential registers zp[1]:105 [ mulf_init::$5 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [charsetFindOrAddGlyph] 366,670.33: zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] 36,670.33: zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] 30,002.31: zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] 11,938.75: zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] 10,001: zp[1]:42 [ charsetFindOrAddGlyph::found#2 ] 9,402.2: zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] 2,002: zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] -Uplift Scope [protoBobShiftRight] 5,705.7: zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] 2,288: zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] 2,002: zp[1]:100 [ protoBobShiftRight::$1 ] 2,002: zp[1]:101 [ protoBobShiftRight::$5 ] 2,002: zp[1]:102 [ protoBobShiftRight::$6 ] 1,232: zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] 111.22: zp[1]:46 [ protoBobShiftRight::carry#1 ] -Uplift Scope [prepareBobs] 2,302.3: zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 2,002: zp[1]:99 [ prepareBobs::$6 ] 1,257.33: zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 929.5: zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 218.83: zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 70.52: zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 23.43: zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplift Scope [main] 1,751.75: zp[1]:17 [ main::row#2 main::row#1 ] 1,219.83: zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] 1,122.2: zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] 164.97: zp[1]:10 [ main::col#5 main::col#1 ] 96.65: zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] 88.98: zp[2]:8 [ main::y#0 main::rowY#1 ] 48.14: zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] 22: zp[1]:65 [ main::$15 ] 22: zp[1]:67 [ main::$17 ] 4.64: zp[2]:2 [ main::origX#8 main::origX#1 ] -Uplift Scope [] 2,729.71: zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 338.4: zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 324.85: zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 193.64: zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] -Uplift Scope [renderBobCleanup] 202: zp[1]:85 [ renderBobCleanup::$1 ] 176.75: zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 112.22: zp[2]:86 [ renderBobCleanup::screen#0 ] -Uplift Scope [protoBobShiftDown] 363.6: zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Uplift Scope [renderBob] 143.57: zp[1]:63 [ renderBob::ypos#0 ] 100.5: zp[1]:62 [ renderBob::xpos#0 ] 4: zp[1]:73 [ renderBob::y_char_offset#0 ] 4: zp[1]:74 [ renderBob::$8 ] 4: zp[2]:75 [ renderBob::y_offset#0 ] 4: zp[2]:77 [ renderBob::$2 ] 4: zp[1]:81 [ renderBob::$4 ] 4: zp[1]:83 [ renderBob::$6 ] 2: zp[1]:82 [ renderBob::$5 ] 1.82: zp[1]:84 [ renderBob::bob_table_idx#0 ] 1.47: zp[2]:79 [ renderBob::screen#0 ] 0.8: zp[1]:72 [ renderBob::x_char_offset#0 ] -Uplift Scope [mulf_init] 47.67: zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:103 [ mulf_init::$1 ] 22: zp[1]:104 [ mulf_init::$4 ] 22: zp[1]:105 [ mulf_init::$5 ] 15.4: zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [renderBobInit] 27.5: zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] 22: zp[2]:90 [ renderBobInit::$6 ] 22: zp[2]:92 [ renderBobInit::$7 ] 22: zp[1]:96 [ renderBobInit::$4 ] 22: zp[1]:97 [ renderBobInit::$5 ] 21.21: zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] 16.5: zp[2]:88 [ renderBobInit::$0 ] 11: zp[2]:94 [ renderBobInit::$1 ] -Uplift Scope [keyboard_key_pressed] 22: zp[1]:64 [ keyboard_key_pressed::return#2 ] 22: zp[1]:66 [ keyboard_key_pressed::return#3 ] 6: zp[1]:70 [ keyboard_key_pressed::return#0 ] 4: zp[1]:69 [ keyboard_key_pressed::$2 ] -Uplift Scope [memset] 36.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:68 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:71 [ keyboard_matrix_read::return#0 ] +Uplift Scope [charsetFindOrAddGlyph] 366,666,666,670.33: zp[1]:41 [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] 36,666,666,670.33: zp[1]:40 [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] 30,000,000,002.31: zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] 11,875,006,251.25: zp[1]:37 [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] 10,000,000,001: zp[1]:42 [ charsetFindOrAddGlyph::found#2 ] 7,333,540,002.2: zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] 200,002: zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] +Uplift Scope [] 2,244,629,806.81: zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 2,808,200.9: zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 2,004,670.72: zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 20,020.12: zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] +Uplift Scope [protoBobShiftRight] 570,000,005.7: zp[1]:44 [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] 228,571,430.86: zp[1]:45 [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] 200,000,002: zp[1]:100 [ protoBobShiftRight::$1 ] 200,000,002: zp[1]:101 [ protoBobShiftRight::$5 ] 200,000,002: zp[1]:102 [ protoBobShiftRight::$6 ] 123,076,924.31: zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] 11,111,111.22: zp[1]:46 [ protoBobShiftRight::carry#1 ] +Uplift Scope [protoBobShiftDown] 3,600,003.6: zp[1]:47 [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Uplift Scope [renderBob] 200,002: zp[1]:73 [ renderBob::y_char_offset#0 ] 200,002: zp[1]:74 [ renderBob::$8 ] 200,002: zp[2]:75 [ renderBob::y_offset#0 ] 200,002: zp[2]:77 [ renderBob::$2 ] 200,002: zp[1]:81 [ renderBob::$4 ] 200,002: zp[1]:83 [ renderBob::$6 ] 100,001: zp[1]:82 [ renderBob::$5 ] 90,910: zp[1]:84 [ renderBob::bob_table_idx#0 ] 73,334.07: zp[2]:79 [ renderBob::screen#0 ] 40,000.4: zp[1]:72 [ renderBob::x_char_offset#0 ] 30,000.43: zp[1]:63 [ renderBob::ypos#0 ] 21,000.3: zp[1]:62 [ renderBob::xpos#0 ] +Uplift Scope [prepareBobs] 230,002.3: zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 200,002: zp[1]:99 [ prepareBobs::$6 ] 125,419.83: zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 92,858.07: zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 21,668.83: zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 6,884.05: zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 2,132.57: zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplift Scope [renderBobCleanup] 200,002: zp[1]:85 [ renderBobCleanup::$1 ] 175,001.75: zp[1]:18 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 111,112.22: zp[2]:86 [ renderBobCleanup::screen#0 ] +Uplift Scope [main] 17,501.75: zp[1]:17 [ main::row#2 main::row#1 ] 12,169.83: zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] 11,202.2: zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] 1,634.97: zp[1]:10 [ main::col#5 main::col#1 ] 941.27: zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] 881.83: zp[2]:8 [ main::y#0 main::rowY#1 ] 477.28: zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] 202: zp[1]:65 [ main::$15 ] 202: zp[1]:67 [ main::$17 ] 42.63: zp[2]:2 [ main::origX#8 main::origX#1 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:53 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:103 [ mulf_init::$1 ] 2,002: zp[1]:104 [ mulf_init::$4 ] 2,002: zp[1]:105 [ mulf_init::$5 ] 1,401.4: zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [renderBobInit] 2,502.5: zp[1]:22 [ renderBobInit::i#2 renderBobInit::i#1 ] 2,002: zp[2]:90 [ renderBobInit::$6 ] 2,002: zp[2]:92 [ renderBobInit::$7 ] 2,002: zp[1]:96 [ renderBobInit::$4 ] 2,002: zp[1]:97 [ renderBobInit::$5 ] 1,930.5: zp[1]:21 [ renderBobInit::y#2 renderBobInit::y#1 ] 1,501.5: zp[2]:88 [ renderBobInit::$0 ] 1,001: zp[2]:94 [ renderBobInit::$1 ] +Uplift Scope [keyboard_matrix_read] 3,667.33: zp[1]:71 [ keyboard_matrix_read::return#0 ] 2,002: zp[1]:68 [ keyboard_matrix_read::return#2 ] +Uplift Scope [memset] 3,336.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [keyboard_key_pressed] 2,002: zp[1]:69 [ keyboard_key_pressed::$2 ] 300.75: zp[1]:70 [ keyboard_key_pressed::return#0 ] 202: zp[1]:64 [ keyboard_key_pressed::return#2 ] 202: zp[1]:66 [ keyboard_key_pressed::return#3 ] Uplift Scope [RADIX] Uplift Scope [progress_init] Uplift Scope [progress_inc] Uplifting [charsetFindOrAddGlyph] best 4099890 combination reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ] reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ] zp[2]:38 [ charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ] reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ] reg byte a [ charsetFindOrAddGlyph::found#2 ] zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] zp[1]:98 [ charsetFindOrAddGlyph::return#1 ] Limited combination testing to 100 combinations of 432 possible. +Uplifting [] best 4099890 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] Uplifting [protoBobShiftRight] best 4061890 combination reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ] reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ] reg byte a [ protoBobShiftRight::$1 ] reg byte a [ protoBobShiftRight::$5 ] zp[1]:102 [ protoBobShiftRight::$6 ] zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] zp[1]:46 [ protoBobShiftRight::carry#1 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [prepareBobs] best 4055890 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [main] best 4046770 combination reg byte x [ main::row#2 main::row#1 ] zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] zp[1]:10 [ main::col#5 main::col#1 ] zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] zp[2]:8 [ main::y#0 main::rowY#1 ] zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] reg byte a [ main::$15 ] reg byte a [ main::$17 ] zp[2]:2 [ main::origX#8 main::origX#1 ] -Uplifting [] best 4046770 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:24 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[2]:15 [ renderBobCleanupNext#17 renderBobCleanupNext#21 renderBobCleanupNext#13 ] -Uplifting [renderBobCleanup] best 4045370 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:86 [ renderBobCleanup::screen#0 ] -Uplifting [protoBobShiftDown] best 4043770 combination reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] -Uplifting [renderBob] best 4043760 combination zp[1]:63 [ renderBob::ypos#0 ] zp[1]:62 [ renderBob::xpos#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:75 [ renderBob::y_offset#0 ] zp[2]:77 [ renderBob::$2 ] zp[1]:81 [ renderBob::$4 ] zp[1]:83 [ renderBob::$6 ] zp[1]:82 [ renderBob::$5 ] zp[1]:84 [ renderBob::bob_table_idx#0 ] zp[2]:79 [ renderBob::screen#0 ] zp[1]:72 [ renderBob::x_char_offset#0 ] +Uplifting [protoBobShiftDown] best 4060290 combination reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ] +Uplifting [renderBob] best 4060268 combination reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:75 [ renderBob::y_offset#0 ] zp[2]:77 [ renderBob::$2 ] reg byte a [ renderBob::$4 ] reg byte a [ renderBob::$6 ] zp[1]:82 [ renderBob::$5 ] zp[1]:84 [ renderBob::bob_table_idx#0 ] zp[2]:79 [ renderBob::screen#0 ] zp[1]:72 [ renderBob::x_char_offset#0 ] zp[1]:63 [ renderBob::ypos#0 ] zp[1]:62 [ renderBob::xpos#0 ] Limited combination testing to 100 combinations of 41472 possible. -Uplifting [mulf_init] best 4043510 combination zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [prepareBobs] best 4054268 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:32 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [renderBobCleanup] best 4052868 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:86 [ renderBobCleanup::screen#0 ] +Uplifting [main] best 4043748 combination reg byte x [ main::row#2 main::row#1 ] zp[2]:13 [ main::y#2 main::y#1 main::y#6 ] zp[2]:11 [ main::x#2 main::x#1 main::x#7 ] zp[1]:10 [ main::col#5 main::col#1 ] zp[2]:6 [ main::x#0 main::x#4 main::rowX#1 ] zp[2]:8 [ main::y#0 main::rowY#1 ] zp[2]:4 [ main::rowOffsetY#10 main::rowOffsetY#1 ] reg byte a [ main::$15 ] reg byte a [ main::$17 ] zp[2]:2 [ main::origX#8 main::origX#1 ] +Uplifting [mulf_init] best 4043498 combination zp[2]:60 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:48 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:57 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:51 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [renderBobInit] best 4043220 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:90 [ renderBobInit::$6 ] zp[2]:92 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:88 [ renderBobInit::$0 ] zp[2]:94 [ renderBobInit::$1 ] +Uplifting [renderBobInit] best 4043208 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:90 [ renderBobInit::$6 ] zp[2]:92 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:88 [ renderBobInit::$0 ] zp[2]:94 [ renderBobInit::$1 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [keyboard_key_pressed] best 4043031 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] +Uplifting [keyboard_matrix_read] best 4043196 combination reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [memset] best 4043196 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplifting [keyboard_key_pressed] best 4043007 combination reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [memset] best 4043031 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplifting [keyboard_matrix_read] best 4043019 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [RADIX] best 4043019 combination -Uplifting [progress_init] best 4043019 combination -Uplifting [progress_inc] best 4043019 combination +Uplifting [RADIX] best 4043007 combination +Uplifting [progress_init] best 4043007 combination +Uplifting [progress_inc] best 4043007 combination Attempting to uplift remaining variables inzp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Uplifting [] best 4043019 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Attempting to uplift remaining variables inzp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Uplifting [prepareBobs] best 4043019 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Attempting to uplift remaining variables inzp[1]:98 [ charsetFindOrAddGlyph::return#1 ] -Uplifting [charsetFindOrAddGlyph] best 4039019 combination reg byte a [ charsetFindOrAddGlyph::return#1 ] +Uplifting [] best 4043007 combination zp[1]:34 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Attempting to uplift remaining variables inzp[1]:102 [ protoBobShiftRight::$6 ] -Uplifting [protoBobShiftRight] best 4033019 combination reg byte a [ protoBobShiftRight::$6 ] +Uplifting [protoBobShiftRight] best 4037007 combination reg byte a [ protoBobShiftRight::$6 ] Attempting to uplift remaining variables inzp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Uplifting [protoBobShiftRight] best 4033019 combination zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] -Attempting to uplift remaining variables inzp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Uplifting [] best 4033019 combination zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Attempting to uplift remaining variables inzp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Uplifting [prepareBobs] best 4033019 combination zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Attempting to uplift remaining variables inzp[1]:10 [ main::col#5 main::col#1 ] -Uplifting [main] best 4033019 combination zp[1]:10 [ main::col#5 main::col#1 ] -Attempting to uplift remaining variables inzp[1]:63 [ renderBob::ypos#0 ] -Uplifting [renderBob] best 4033019 combination zp[1]:63 [ renderBob::ypos#0 ] +Uplifting [protoBobShiftRight] best 4037007 combination zp[1]:43 [ protoBobShiftRight::i#2 protoBobShiftRight::i#1 ] Attempting to uplift remaining variables inzp[1]:46 [ protoBobShiftRight::carry#1 ] -Uplifting [protoBobShiftRight] best 4033019 combination zp[1]:46 [ protoBobShiftRight::carry#1 ] -Attempting to uplift remaining variables inzp[1]:62 [ renderBob::xpos#0 ] -Uplifting [renderBob] best 4033019 combination zp[1]:62 [ renderBob::xpos#0 ] -Attempting to uplift remaining variables inzp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Uplifting [prepareBobs] best 4033019 combination zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [prepareBobs] best 4033019 combination zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Attempting to uplift remaining variables inzp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 4032879 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 4032879 combination zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 4032879 combination zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:81 [ renderBob::$4 ] -Uplifting [renderBob] best 4032873 combination reg byte a [ renderBob::$4 ] -Attempting to uplift remaining variables inzp[1]:83 [ renderBob::$6 ] -Uplifting [renderBob] best 4032867 combination reg byte a [ renderBob::$6 ] +Uplifting [protoBobShiftRight] best 4037007 combination zp[1]:46 [ protoBobShiftRight::carry#1 ] +Attempting to uplift remaining variables inzp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Uplifting [] best 4037007 combination zp[1]:26 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Attempting to uplift remaining variables inzp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Uplifting [prepareBobs] best 4037007 combination zp[1]:29 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Attempting to uplift remaining variables inzp[1]:98 [ charsetFindOrAddGlyph::return#1 ] +Uplifting [charsetFindOrAddGlyph] best 4033007 combination reg byte a [ charsetFindOrAddGlyph::return#1 ] Attempting to uplift remaining variables inzp[1]:82 [ renderBob::$5 ] -Uplifting [renderBob] best 4032867 combination zp[1]:82 [ renderBob::$5 ] +Uplifting [renderBob] best 4033007 combination zp[1]:82 [ renderBob::$5 ] Attempting to uplift remaining variables inzp[1]:84 [ renderBob::bob_table_idx#0 ] -Uplifting [renderBob] best 4032867 combination zp[1]:84 [ renderBob::bob_table_idx#0 ] +Uplifting [renderBob] best 4033007 combination zp[1]:84 [ renderBob::bob_table_idx#0 ] Attempting to uplift remaining variables inzp[1]:72 [ renderBob::x_char_offset#0 ] -Uplifting [renderBob] best 4032867 combination zp[1]:72 [ renderBob::x_char_offset#0 ] +Uplifting [renderBob] best 4033007 combination zp[1]:72 [ renderBob::x_char_offset#0 ] +Attempting to uplift remaining variables inzp[1]:63 [ renderBob::ypos#0 ] +Uplifting [renderBob] best 4033007 combination zp[1]:63 [ renderBob::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Uplifting [prepareBobs] best 4033007 combination zp[1]:28 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Attempting to uplift remaining variables inzp[1]:62 [ renderBob::xpos#0 ] +Uplifting [renderBob] best 4033007 combination zp[1]:62 [ renderBob::xpos#0 ] +Attempting to uplift remaining variables inzp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Uplifting [prepareBobs] best 4033007 combination zp[1]:27 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [prepareBobs] best 4033007 combination zp[1]:23 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Attempting to uplift remaining variables inzp[1]:10 [ main::col#5 main::col#1 ] +Uplifting [main] best 4033007 combination zp[1]:10 [ main::col#5 main::col#1 ] +Attempting to uplift remaining variables inzp[1]:56 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 4032867 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 4032867 combination zp[1]:59 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 4032867 combination zp[1]:50 [ mulf_init::c#2 mulf_init::c#1 ] Coalescing zero page register [ zp[2]:30 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] ] with [ zp[2]:35 [ charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:75 [ renderBob::y_offset#0 ] ] with [ zp[2]:77 [ renderBob::$2 ] ] - score: 1 Coalescing zero page register [ zp[1]:82 [ renderBob::$5 ] ] with [ zp[1]:84 [ renderBob::bob_table_idx#0 ] ] - score: 1 @@ -8547,12 +8535,12 @@ FINAL SYMBOL TABLE (const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) } (const byte) SIZEOF_POINTER = (byte) 2 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:17 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:17 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:17 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:17 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:17 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:17 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:17 1051.5 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:17 9.091909185454544E8 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:17 27500.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:17 1.3334066669333334E9 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:17 3667.333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:17 2000002.0 (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) (label) charsetFindOrAddGlyph::@1 (label) charsetFindOrAddGlyph::@2 @@ -8566,49 +8554,49 @@ FINAL SYMBOL TABLE (label) charsetFindOrAddGlyph::@return (byte*) charsetFindOrAddGlyph::charset (byte) charsetFindOrAddGlyph::found -(byte) charsetFindOrAddGlyph::found#2 reg byte a 10001.0 +(byte) charsetFindOrAddGlyph::found#2 reg byte a 1.0000000001E10 (byte*) charsetFindOrAddGlyph::glyph -(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:25 2002.0 -(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:25 7400.200000000001 +(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:25 200002.0 +(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:25 7.333340000200001E9 (byte*) charsetFindOrAddGlyph::glyph_cursor -(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:19 20002.0 -(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:19 10000.307692307691 +(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:19 2.0000000002E10 +(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:19 1.0000000000307692E10 (byte) charsetFindOrAddGlyph::glyph_id -(byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 -(byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 +(byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 1.0000000001E10 +(byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1.87500625025E9 (byte) charsetFindOrAddGlyph::i -(byte) charsetFindOrAddGlyph::i#1 reg byte y 200002.0 -(byte) charsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333 +(byte) charsetFindOrAddGlyph::i#1 reg byte y 2.00000000002E11 +(byte) charsetFindOrAddGlyph::i#2 reg byte y 1.6666666666833334E11 (byte) charsetFindOrAddGlyph::i1 -(byte) charsetFindOrAddGlyph::i1#1 reg byte y 20002.0 -(byte) charsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332 +(byte) charsetFindOrAddGlyph::i1#1 reg byte y 2.0000000002E10 +(byte) charsetFindOrAddGlyph::i1#2 reg byte y 1.6666666668333332E10 (byte) charsetFindOrAddGlyph::return -(byte) charsetFindOrAddGlyph::return#1 reg byte a 2002.0 +(byte) charsetFindOrAddGlyph::return#1 reg byte a 200002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$17 reg byte a 22.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$17 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -8627,25 +8615,25 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::col -(byte) main::col#1 col zp[1]:16 151.5 -(byte) main::col#5 col zp[1]:16 13.466666666666667 +(byte) main::col#1 col zp[1]:16 1501.5 +(byte) main::col#5 col zp[1]:16 133.46666666666667 (const signed word) main::colOffsetX = (signed word) $100 (const signed word) main::colOffsetY = (signed word) $1800 (signed word) main::origX -(signed word) main::origX#1 origX zp[2]:14 3.142857142857143 -(signed word) main::origX#8 origX zp[2]:14 1.5 +(signed word) main::origX#1 origX zp[2]:14 28.857142857142858 +(signed word) main::origX#8 origX zp[2]:14 13.772727272727273 (const signed word) main::origY = (signed word) $a00 (byte) main::row -(byte) main::row#1 reg byte x 1501.5 -(byte) main::row#2 reg byte x 250.25 +(byte) main::row#1 reg byte x 15001.5 +(byte) main::row#2 reg byte x 2500.25 (const signed word) main::rowOffsetX = (signed word) $c00 (signed word) main::rowOffsetY -(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:2 3.6666666666666665 -(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:2 44.47826086956522 +(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:2 33.666666666666664 +(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:2 443.6086956521739 (signed word) main::rowX -(signed word) main::rowX#1 rowX zp[2]:4 50.5 +(signed word) main::rowX#1 rowX zp[2]:4 500.5 (signed word) main::rowY -(signed word) main::rowY#1 rowY zp[2]:6 67.33333333333333 +(signed word) main::rowY#1 rowY zp[2]:6 667.3333333333334 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -8671,16 +8659,16 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:4 24.153846153846153 -(signed word) main::x#1 x_1 zp[2]:8 400.4 -(signed word) main::x#2 x_1 zp[2]:8 620.8 -(signed word) main::x#4 x zp[2]:4 22.0 -(signed word) main::x#7 x_1 zp[2]:8 101.0 +(signed word) main::x#0 x zp[2]:4 238.76923076923077 +(signed word) main::x#1 x_1 zp[2]:8 4000.4 +(signed word) main::x#2 x_1 zp[2]:8 6200.8 +(signed word) main::x#4 x zp[2]:4 202.0 +(signed word) main::x#7 x_1 zp[2]:8 1001.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:6 21.642857142857142 -(signed word) main::y#1 y_1 zp[2]:10 500.5 -(signed word) main::y#2 y_1 zp[2]:10 517.3333333333334 -(signed word) main::y#6 y_1 zp[2]:10 202.0 +(signed word) main::y#0 y zp[2]:6 214.5 +(signed word) main::y#1 y_1 zp[2]:10 5000.5 +(signed word) main::y#2 y_1 zp[2]:10 5167.333333333333 +(signed word) main::y#6 y_1 zp[2]:10 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -8688,8 +8676,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:25 22.0 -(byte*) memset::dst#2 dst zp[2]:25 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:25 2002.0 +(byte*) memset::dst#2 dst zp[2]:25 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -8698,9 +8686,9 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) BOB_SCREEN (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -8712,41 +8700,41 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:18 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:18 11.0 +(byte) mulf_init::c#1 c zp[1]:18 231.0 +(byte) mulf_init::c#2 c zp[1]:18 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:21 4.125 -(byte) mulf_init::dir#4 dir zp[1]:21 11.0 +(byte) mulf_init::dir#2 dir zp[1]:21 375.375 +(byte) mulf_init::dir#4 dir zp[1]:21 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:30 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:30 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:30 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:30 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:30 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:30 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:30 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:30 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:19 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:19 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:19 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:19 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:32 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:32 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:32 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:32 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:28 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:28 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:28 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:28 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:25 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:25 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:25 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:25 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) prepareBobs() -(byte~) prepareBobs::$6 reg byte a 2002.0 +(byte~) prepareBobs::$6 reg byte a 200002.0 (label) prepareBobs::@1 (label) prepareBobs::@10 (label) prepareBobs::@11 @@ -8762,37 +8750,37 @@ FINAL SYMBOL TABLE (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:25 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:25 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:25 50000.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:25 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:32 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:32 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:32 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:32 20002.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:32 66667.33333333333 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:32 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:21 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:21 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:21 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:21 4000.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:21 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:21 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:23 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:23 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:23 200002.0 +(byte) prepareBobs::cell#2 cell zp[1]:23 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:22 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:22 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:22 20002.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:22 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 shift_y zp[1]:18 22.0 -(byte) prepareBobs::shift_y#2 shift_y zp[1]:18 1.4347826086956523 +(byte) prepareBobs::shift_y#1 shift_y zp[1]:18 2002.0 +(byte) prepareBobs::shift_y#2 shift_y zp[1]:18 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:14 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:14 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:14 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:14 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:14 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:14 1001.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:14 620000.8 +(byte*) progress_cursor#24 progress_cursor zp[2]:14 183529.76470588235 +(byte*) progress_cursor#31 progress_cursor zp[2]:14 3667.333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:14 2000002.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:16 201.0 -(byte) progress_idx#16 progress_idx zp[1]:16 11.0 -(byte) progress_idx#25 progress_idx zp[1]:16 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:16 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:16 3.0 +(byte) progress_idx#10 progress_idx zp[1]:16 420000.60000000003 +(byte) progress_idx#16 progress_idx zp[1]:16 1001.0 +(byte) progress_idx#25 progress_idx zp[1]:16 80000.28571428571 +(byte) progress_idx#31 progress_idx zp[1]:16 3667.333333333333 +(byte) progress_idx#8 progress_idx zp[1]:16 1500001.5 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -8807,12 +8795,12 @@ FINAL SYMBOL TABLE (label) protoBobShiftDown::@3 (label) protoBobShiftDown::@return (byte) protoBobShiftDown::i -(byte) protoBobShiftDown::i#1 reg byte x 202.0 -(byte) protoBobShiftDown::i#2 reg byte x 161.6 +(byte) protoBobShiftDown::i#1 reg byte x 2000002.0 +(byte) protoBobShiftDown::i#2 reg byte x 1600001.5999999999 (void()) protoBobShiftRight() -(byte~) protoBobShiftRight::$1 reg byte a 2002.0 -(byte~) protoBobShiftRight::$5 reg byte a 2002.0 -(byte~) protoBobShiftRight::$6 reg byte a 2002.0 +(byte~) protoBobShiftRight::$1 reg byte a 2.00000002E8 +(byte~) protoBobShiftRight::$5 reg byte a 2.00000002E8 +(byte~) protoBobShiftRight::$6 reg byte a 2.00000002E8 (label) protoBobShiftRight::@1 (label) protoBobShiftRight::@2 (label) protoBobShiftRight::@3 @@ -8822,68 +8810,68 @@ FINAL SYMBOL TABLE (label) protoBobShiftRight::@7 (label) protoBobShiftRight::@return (byte) protoBobShiftRight::carry -(byte) protoBobShiftRight::carry#1 carry zp[1]:27 111.22222222222223 -(byte) protoBobShiftRight::carry#10 reg byte y 2002.0 -(byte) protoBobShiftRight::carry#2 reg byte y 286.0 +(byte) protoBobShiftRight::carry#1 carry zp[1]:27 1.1111111222222222E7 +(byte) protoBobShiftRight::carry#10 reg byte y 2.00000002E8 +(byte) protoBobShiftRight::carry#2 reg byte y 2.857142885714286E7 (byte) protoBobShiftRight::i -(byte) protoBobShiftRight::i#1 i zp[1]:24 1001.0 -(byte) protoBobShiftRight::i#2 i zp[1]:24 231.0 +(byte) protoBobShiftRight::i#1 i zp[1]:24 1.00000001E8 +(byte) protoBobShiftRight::i#2 i zp[1]:24 2.3076923307692308E7 (byte) protoBobShiftRight::j -(byte) protoBobShiftRight::j#1 reg byte x 2002.0 -(byte) protoBobShiftRight::j#10 reg byte x 1001.0 -(byte) protoBobShiftRight::j#2 reg byte x 2002.0 -(byte) protoBobShiftRight::j#3 reg byte x 700.7 +(byte) protoBobShiftRight::j#1 reg byte x 2.00000002E8 +(byte) protoBobShiftRight::j#10 reg byte x 1.00000001E8 +(byte) protoBobShiftRight::j#2 reg byte x 2.00000002E8 +(byte) protoBobShiftRight::j#3 reg byte x 7.00000007E7 (byte) protoBobShiftRight::new_carry (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:25 4.0 -(byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:27 2.0 -(byte~) renderBob::$6 reg byte a 4.0 -(byte~) renderBob::$8 reg byte a 4.0 +(byte*~) renderBob::$2 zp[2]:25 200002.0 +(byte~) renderBob::$4 reg byte a 200002.0 +(byte~) renderBob::$5 zp[1]:27 100001.0 +(byte~) renderBob::$6 reg byte a 200002.0 +(byte~) renderBob::$8 reg byte a 200002.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:27 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:27 90910.0 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:25 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:25 73334.0666666667 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:24 0.8 +(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:24 40000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:22 100.5 +(byte) renderBob::xpos#0 xpos zp[1]:22 21000.300000000003 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 reg byte a 4.0 +(byte) renderBob::y_char_offset#0 reg byte a 200002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:25 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:25 200002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 ypos zp[1]:23 143.57142857142856 +(byte) renderBob::ypos#0 ypos zp[1]:23 30000.428571428572 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 reg byte a 202.0 +(byte~) renderBobCleanup::$1 reg byte a 200002.0 (label) renderBobCleanup::@1 (label) renderBobCleanup::@return (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 reg byte x 151.5 -(byte) renderBobCleanup::i#2 reg byte x 25.25 +(byte) renderBobCleanup::i#1 reg byte x 150001.5 +(byte) renderBobCleanup::i#2 reg byte x 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:28 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:28 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:12 52.57142857142857 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:12 73.73333333333335 -(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:12 67.33333333333333 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:12 5285.857142857143 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:12 14066.933333333334 +(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:12 667.3333333333334 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:30 16.5 -(word~) renderBobInit::$1 zp[2]:30 11.0 -(byte~) renderBobInit::$4 reg byte a 22.0 -(byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:32 22.0 -(word~) renderBobInit::$7 zp[2]:30 22.0 +(word~) renderBobInit::$0 zp[2]:30 1501.5 +(word~) renderBobInit::$1 zp[2]:30 1001.0 +(byte~) renderBobInit::$4 reg byte a 2002.0 +(byte~) renderBobInit::$5 reg byte a 2002.0 +(word~) renderBobInit::$6 zp[2]:32 2002.0 +(word~) renderBobInit::$7 zp[2]:30 2002.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return (byte) renderBobInit::i -(byte) renderBobInit::i#1 reg byte x 16.5 -(byte) renderBobInit::i#2 reg byte x 11.0 +(byte) renderBobInit::i#1 reg byte x 1501.5 +(byte) renderBobInit::i#2 reg byte x 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 reg byte x 16.5 -(byte) renderBobInit::y#2 reg byte x 4.714285714285714 +(byte) renderBobInit::y#1 reg byte x 1501.5 +(byte) renderBobInit::y#2 reg byte x 429.0 zp[2]:2 [ main::rowOffsetY#10 main::rowOffsetY#1 ] zp[2]:4 [ main::x#0 main::x#4 main::rowX#1 ] diff --git a/src/test/ref/complex/prebob/grid-bobs.sym b/src/test/ref/complex/prebob/grid-bobs.sym index 8ecd314f0..248782b60 100644 --- a/src/test/ref/complex/prebob/grid-bobs.sym +++ b/src/test/ref/complex/prebob/grid-bobs.sym @@ -31,12 +31,12 @@ (const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) } (const byte) SIZEOF_POINTER = (byte) 2 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:17 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:17 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:17 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:17 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:17 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:17 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:17 1051.5 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:17 9.091909185454544E8 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:17 27500.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:17 1.3334066669333334E9 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:17 3667.333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:17 2000002.0 (byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset) (label) charsetFindOrAddGlyph::@1 (label) charsetFindOrAddGlyph::@2 @@ -50,49 +50,49 @@ (label) charsetFindOrAddGlyph::@return (byte*) charsetFindOrAddGlyph::charset (byte) charsetFindOrAddGlyph::found -(byte) charsetFindOrAddGlyph::found#2 reg byte a 10001.0 +(byte) charsetFindOrAddGlyph::found#2 reg byte a 1.0000000001E10 (byte*) charsetFindOrAddGlyph::glyph -(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:25 2002.0 -(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:25 7400.200000000001 +(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:25 200002.0 +(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:25 7.333340000200001E9 (byte*) charsetFindOrAddGlyph::glyph_cursor -(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:19 20002.0 -(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:19 10000.307692307691 +(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:19 2.0000000002E10 +(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:19 1.0000000000307692E10 (byte) charsetFindOrAddGlyph::glyph_id -(byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 -(byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 +(byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 1.0000000001E10 +(byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1.87500625025E9 (byte) charsetFindOrAddGlyph::i -(byte) charsetFindOrAddGlyph::i#1 reg byte y 200002.0 -(byte) charsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333 +(byte) charsetFindOrAddGlyph::i#1 reg byte y 2.00000000002E11 +(byte) charsetFindOrAddGlyph::i#2 reg byte y 1.6666666666833334E11 (byte) charsetFindOrAddGlyph::i1 -(byte) charsetFindOrAddGlyph::i1#1 reg byte y 20002.0 -(byte) charsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332 +(byte) charsetFindOrAddGlyph::i1#1 reg byte y 2.0000000002E10 +(byte) charsetFindOrAddGlyph::i1#2 reg byte y 1.6666666668333332E10 (byte) charsetFindOrAddGlyph::return -(byte) charsetFindOrAddGlyph::return#1 reg byte a 2002.0 +(byte) charsetFindOrAddGlyph::return#1 reg byte a 200002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$17 reg byte a 22.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$17 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -111,25 +111,25 @@ (label) main::@9 (label) main::@return (byte) main::col -(byte) main::col#1 col zp[1]:16 151.5 -(byte) main::col#5 col zp[1]:16 13.466666666666667 +(byte) main::col#1 col zp[1]:16 1501.5 +(byte) main::col#5 col zp[1]:16 133.46666666666667 (const signed word) main::colOffsetX = (signed word) $100 (const signed word) main::colOffsetY = (signed word) $1800 (signed word) main::origX -(signed word) main::origX#1 origX zp[2]:14 3.142857142857143 -(signed word) main::origX#8 origX zp[2]:14 1.5 +(signed word) main::origX#1 origX zp[2]:14 28.857142857142858 +(signed word) main::origX#8 origX zp[2]:14 13.772727272727273 (const signed word) main::origY = (signed word) $a00 (byte) main::row -(byte) main::row#1 reg byte x 1501.5 -(byte) main::row#2 reg byte x 250.25 +(byte) main::row#1 reg byte x 15001.5 +(byte) main::row#2 reg byte x 2500.25 (const signed word) main::rowOffsetX = (signed word) $c00 (signed word) main::rowOffsetY -(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:2 3.6666666666666665 -(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:2 44.47826086956522 +(signed word) main::rowOffsetY#1 rowOffsetY zp[2]:2 33.666666666666664 +(signed word) main::rowOffsetY#10 rowOffsetY zp[2]:2 443.6086956521739 (signed word) main::rowX -(signed word) main::rowX#1 rowX zp[2]:4 50.5 +(signed word) main::rowX#1 rowX zp[2]:4 500.5 (signed word) main::rowY -(signed word) main::rowY#1 rowY zp[2]:6 67.33333333333333 +(signed word) main::rowY#1 rowY zp[2]:6 667.3333333333334 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -155,16 +155,16 @@ (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:4 24.153846153846153 -(signed word) main::x#1 x_1 zp[2]:8 400.4 -(signed word) main::x#2 x_1 zp[2]:8 620.8 -(signed word) main::x#4 x zp[2]:4 22.0 -(signed word) main::x#7 x_1 zp[2]:8 101.0 +(signed word) main::x#0 x zp[2]:4 238.76923076923077 +(signed word) main::x#1 x_1 zp[2]:8 4000.4 +(signed word) main::x#2 x_1 zp[2]:8 6200.8 +(signed word) main::x#4 x zp[2]:4 202.0 +(signed word) main::x#7 x_1 zp[2]:8 1001.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:6 21.642857142857142 -(signed word) main::y#1 y_1 zp[2]:10 500.5 -(signed word) main::y#2 y_1 zp[2]:10 517.3333333333334 -(signed word) main::y#6 y_1 zp[2]:10 202.0 +(signed word) main::y#0 y zp[2]:6 214.5 +(signed word) main::y#1 y_1 zp[2]:10 5000.5 +(signed word) main::y#2 y_1 zp[2]:10 5167.333333333333 +(signed word) main::y#6 y_1 zp[2]:10 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -172,8 +172,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:25 22.0 -(byte*) memset::dst#2 dst zp[2]:25 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:25 2002.0 +(byte*) memset::dst#2 dst zp[2]:25 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -182,9 +182,9 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) BOB_SCREEN (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -196,41 +196,41 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:18 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:18 11.0 +(byte) mulf_init::c#1 c zp[1]:18 231.0 +(byte) mulf_init::c#2 c zp[1]:18 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:21 4.125 -(byte) mulf_init::dir#4 dir zp[1]:21 11.0 +(byte) mulf_init::dir#2 dir zp[1]:21 375.375 +(byte) mulf_init::dir#4 dir zp[1]:21 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:30 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:30 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:30 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:30 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:30 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:30 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:30 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:30 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:19 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:19 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:19 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:19 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:32 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:32 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:32 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:32 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:28 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:28 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:28 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:28 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:25 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:25 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:25 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:25 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) prepareBobs() -(byte~) prepareBobs::$6 reg byte a 2002.0 +(byte~) prepareBobs::$6 reg byte a 200002.0 (label) prepareBobs::@1 (label) prepareBobs::@10 (label) prepareBobs::@11 @@ -246,37 +246,37 @@ (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:25 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:25 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:25 50000.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:25 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:32 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:32 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:32 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:32 20002.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:32 66667.33333333333 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:32 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:21 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:21 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:21 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:21 4000.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:21 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:21 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:23 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:23 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:23 200002.0 +(byte) prepareBobs::cell#2 cell zp[1]:23 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:22 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:22 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:22 20002.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:22 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 shift_y zp[1]:18 22.0 -(byte) prepareBobs::shift_y#2 shift_y zp[1]:18 1.4347826086956523 +(byte) prepareBobs::shift_y#1 shift_y zp[1]:18 2002.0 +(byte) prepareBobs::shift_y#2 shift_y zp[1]:18 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:14 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:14 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:14 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:14 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:14 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:14 1001.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:14 620000.8 +(byte*) progress_cursor#24 progress_cursor zp[2]:14 183529.76470588235 +(byte*) progress_cursor#31 progress_cursor zp[2]:14 3667.333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:14 2000002.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:16 201.0 -(byte) progress_idx#16 progress_idx zp[1]:16 11.0 -(byte) progress_idx#25 progress_idx zp[1]:16 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:16 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:16 3.0 +(byte) progress_idx#10 progress_idx zp[1]:16 420000.60000000003 +(byte) progress_idx#16 progress_idx zp[1]:16 1001.0 +(byte) progress_idx#25 progress_idx zp[1]:16 80000.28571428571 +(byte) progress_idx#31 progress_idx zp[1]:16 3667.333333333333 +(byte) progress_idx#8 progress_idx zp[1]:16 1500001.5 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -291,12 +291,12 @@ (label) protoBobShiftDown::@3 (label) protoBobShiftDown::@return (byte) protoBobShiftDown::i -(byte) protoBobShiftDown::i#1 reg byte x 202.0 -(byte) protoBobShiftDown::i#2 reg byte x 161.6 +(byte) protoBobShiftDown::i#1 reg byte x 2000002.0 +(byte) protoBobShiftDown::i#2 reg byte x 1600001.5999999999 (void()) protoBobShiftRight() -(byte~) protoBobShiftRight::$1 reg byte a 2002.0 -(byte~) protoBobShiftRight::$5 reg byte a 2002.0 -(byte~) protoBobShiftRight::$6 reg byte a 2002.0 +(byte~) protoBobShiftRight::$1 reg byte a 2.00000002E8 +(byte~) protoBobShiftRight::$5 reg byte a 2.00000002E8 +(byte~) protoBobShiftRight::$6 reg byte a 2.00000002E8 (label) protoBobShiftRight::@1 (label) protoBobShiftRight::@2 (label) protoBobShiftRight::@3 @@ -306,68 +306,68 @@ (label) protoBobShiftRight::@7 (label) protoBobShiftRight::@return (byte) protoBobShiftRight::carry -(byte) protoBobShiftRight::carry#1 carry zp[1]:27 111.22222222222223 -(byte) protoBobShiftRight::carry#10 reg byte y 2002.0 -(byte) protoBobShiftRight::carry#2 reg byte y 286.0 +(byte) protoBobShiftRight::carry#1 carry zp[1]:27 1.1111111222222222E7 +(byte) protoBobShiftRight::carry#10 reg byte y 2.00000002E8 +(byte) protoBobShiftRight::carry#2 reg byte y 2.857142885714286E7 (byte) protoBobShiftRight::i -(byte) protoBobShiftRight::i#1 i zp[1]:24 1001.0 -(byte) protoBobShiftRight::i#2 i zp[1]:24 231.0 +(byte) protoBobShiftRight::i#1 i zp[1]:24 1.00000001E8 +(byte) protoBobShiftRight::i#2 i zp[1]:24 2.3076923307692308E7 (byte) protoBobShiftRight::j -(byte) protoBobShiftRight::j#1 reg byte x 2002.0 -(byte) protoBobShiftRight::j#10 reg byte x 1001.0 -(byte) protoBobShiftRight::j#2 reg byte x 2002.0 -(byte) protoBobShiftRight::j#3 reg byte x 700.7 +(byte) protoBobShiftRight::j#1 reg byte x 2.00000002E8 +(byte) protoBobShiftRight::j#10 reg byte x 1.00000001E8 +(byte) protoBobShiftRight::j#2 reg byte x 2.00000002E8 +(byte) protoBobShiftRight::j#3 reg byte x 7.00000007E7 (byte) protoBobShiftRight::new_carry (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:25 4.0 -(byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:27 2.0 -(byte~) renderBob::$6 reg byte a 4.0 -(byte~) renderBob::$8 reg byte a 4.0 +(byte*~) renderBob::$2 zp[2]:25 200002.0 +(byte~) renderBob::$4 reg byte a 200002.0 +(byte~) renderBob::$5 zp[1]:27 100001.0 +(byte~) renderBob::$6 reg byte a 200002.0 +(byte~) renderBob::$8 reg byte a 200002.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:27 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 bob_table_idx zp[1]:27 90910.0 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:25 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:25 73334.0666666667 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:24 0.8 +(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:24 40000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:22 100.5 +(byte) renderBob::xpos#0 xpos zp[1]:22 21000.300000000003 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 reg byte a 4.0 +(byte) renderBob::y_char_offset#0 reg byte a 200002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:25 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:25 200002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 ypos zp[1]:23 143.57142857142856 +(byte) renderBob::ypos#0 ypos zp[1]:23 30000.428571428572 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 reg byte a 202.0 +(byte~) renderBobCleanup::$1 reg byte a 200002.0 (label) renderBobCleanup::@1 (label) renderBobCleanup::@return (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 reg byte x 151.5 -(byte) renderBobCleanup::i#2 reg byte x 25.25 +(byte) renderBobCleanup::i#1 reg byte x 150001.5 +(byte) renderBobCleanup::i#2 reg byte x 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:28 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:28 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:12 52.57142857142857 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:12 73.73333333333335 -(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:12 67.33333333333333 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:12 5285.857142857143 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:12 14066.933333333334 +(byte**) renderBobCleanupNext#21 renderBobCleanupNext zp[2]:12 667.3333333333334 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:30 16.5 -(word~) renderBobInit::$1 zp[2]:30 11.0 -(byte~) renderBobInit::$4 reg byte a 22.0 -(byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:32 22.0 -(word~) renderBobInit::$7 zp[2]:30 22.0 +(word~) renderBobInit::$0 zp[2]:30 1501.5 +(word~) renderBobInit::$1 zp[2]:30 1001.0 +(byte~) renderBobInit::$4 reg byte a 2002.0 +(byte~) renderBobInit::$5 reg byte a 2002.0 +(word~) renderBobInit::$6 zp[2]:32 2002.0 +(word~) renderBobInit::$7 zp[2]:30 2002.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return (byte) renderBobInit::i -(byte) renderBobInit::i#1 reg byte x 16.5 -(byte) renderBobInit::i#2 reg byte x 11.0 +(byte) renderBobInit::i#1 reg byte x 1501.5 +(byte) renderBobInit::i#2 reg byte x 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 reg byte x 16.5 -(byte) renderBobInit::y#2 reg byte x 4.714285714285714 +(byte) renderBobInit::y#1 reg byte x 1501.5 +(byte) renderBobInit::y#2 reg byte x 429.0 zp[2]:2 [ main::rowOffsetY#10 main::rowOffsetY#1 ] zp[2]:4 [ main::x#0 main::x#4 main::rowX#1 ] diff --git a/src/test/ref/complex/prebob/vogel-bobs.asm b/src/test/ref/complex/prebob/vogel-bobs.asm index 9585fbada..4cdd908f8 100644 --- a/src/test/ref/complex/prebob/vogel-bobs.asm +++ b/src/test/ref/complex/prebob/vogel-bobs.asm @@ -158,7 +158,7 @@ main: { lda.z x+1 sta.z renderBob.xpos lda.z y+1 - tax + sta.z renderBob.ypos jsr renderBob // for(char i: 0..NUM_BOBS-1) inc.z i @@ -231,21 +231,21 @@ keyboard_matrix_read: { // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zp($e) xpos, byte register(X) ypos) +// renderBob(byte zp($e) xpos, byte zp($f) ypos) renderBob: { .label __2 = $10 .label __5 = $12 .label xpos = $e - .label x_char_offset = $f + .label ypos = $f .label y_offset = $10 .label screen = $10 // x_char_offset = xpos/BOB_SHIFTS_X lda.z xpos lsr lsr - sta.z x_char_offset + tax // y_char_offset = ypos/BOB_SHIFTS_Y - txa + lda.z ypos lsr lsr lsr @@ -265,7 +265,7 @@ renderBob: { adc #>BOB_SCREEN sta.z __2+1 // screen = BOB_SCREEN+y_offset+x_char_offset - lda.z x_char_offset + txa clc adc.z screen sta.z screen @@ -273,8 +273,8 @@ renderBob: { inc.z screen+1 !: // ypos&7 - txa - and #7 + lda #7 + and.z ypos // (ypos&7)*BOB_SHIFTS_X asl asl diff --git a/src/test/ref/complex/prebob/vogel-bobs.log b/src/test/ref/complex/prebob/vogel-bobs.log index a3273a8d9..0969debd2 100644 --- a/src/test/ref/complex/prebob/vogel-bobs.log +++ b/src/test/ref/complex/prebob/vogel-bobs.log @@ -2958,188 +2958,188 @@ Inversing boolean not [498] (bool~) bobCharsetFindOrAddGlyph::$3 ← *((byte*) b Inversing boolean not [506] (bool~) bobCharsetFindOrAddGlyph::$4 ← (byte) 0 == (byte) bobCharsetFindOrAddGlyph::found#2 from [505] (bool~) bobCharsetFindOrAddGlyph::$6 ← (byte) 0 != (byte) bobCharsetFindOrAddGlyph::found#2 Inversing boolean not [539] (bool~) progress_inc::$1 ← (byte) progress_idx#8 != (byte) 8 from [538] (bool~) progress_inc::$0 ← (byte) progress_idx#8 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::return#1 -Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 -Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 -Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 -Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 -Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$6 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 -Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 -Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 -Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 -Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 (word) mulf8u_prepared::return#3 (word) mulf8u_prepared::return#1 -Alias (byte) mulf8u_prepared::b#0 = (byte~) mulf8s_prepared::$0 -Alias (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#4 (signed byte) mulf8s_prepared::b#3 -Alias (word) mulf8s_prepared::m#0 = (word~) mulf8s_prepared::$1 (word) mulf8s_prepared::m#3 -Alias (byte~) mulf8s_prepared::$15 = (byte~) mulf8s_prepared::$10 -Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$6 (signed word) mulf8s_prepared::return#3 (signed word) mulf8s_prepared::return#1 -Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6 -Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$14 -Alias (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#2 (signed byte) mulf8s::mulf8s_prepare1_a#1 -Alias (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#4 (signed byte) mulf8s::b#5 (signed byte) mulf8s::b#3 -Alias (byte) mulf8u_prepare::a#0 = (byte~) mulf8s::mulf8s_prepare1_$0 -Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#4 -Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$1 (signed word) mulf8s::return#4 (signed word) mulf8s::return#1 -Alias (byte*) progress_cursor#21 = (byte*) progress_cursor#28 -Alias (byte) progress_idx#22 = (byte) progress_idx#28 -Alias (byte) bob_charset_next_id#19 = (byte) bob_charset_next_id#28 -Alias (byte**) renderBobCleanupNext#28 = (byte**) renderBobCleanupNext#49 (byte**) renderBobCleanupNext#50 (byte**) renderBobCleanupNext#48 (byte**) renderBobCleanupNext#47 (byte**) renderBobCleanupNext#46 (byte**) renderBobCleanupNext#44 (byte**) renderBobCleanupNext#42 (byte**) renderBobCleanupNext#40 (byte**) renderBobCleanupNext#38 (byte**) renderBobCleanupNext#36 (byte**) renderBobCleanupNext#34 (byte**) renderBobCleanupNext#31 -Alias (byte*) progress_cursor#0 = (byte*) progress_cursor#11 (byte*) progress_cursor#69 (byte*) progress_cursor#68 (byte*) progress_cursor#66 (byte*) progress_cursor#64 (byte*) progress_cursor#62 (byte*) progress_cursor#60 (byte*) progress_cursor#58 (byte*) progress_cursor#56 (byte*) progress_cursor#54 (byte*) progress_cursor#52 -Alias (byte) progress_idx#0 = (byte) progress_idx#12 (byte) progress_idx#69 (byte) progress_idx#68 (byte) progress_idx#66 (byte) progress_idx#64 (byte) progress_idx#62 (byte) progress_idx#60 (byte) progress_idx#58 (byte) progress_idx#56 (byte) progress_idx#54 (byte) progress_idx#52 -Alias (byte) bob_charset_next_id#0 = (byte) bob_charset_next_id#10 (byte) bob_charset_next_id#77 (byte) bob_charset_next_id#76 (byte) bob_charset_next_id#74 (byte) bob_charset_next_id#72 (byte) bob_charset_next_id#70 (byte) bob_charset_next_id#68 (byte) bob_charset_next_id#66 (byte) bob_charset_next_id#64 (byte) bob_charset_next_id#62 (byte) bob_charset_next_id#60 -Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 -Alias (byte**) renderBobCleanupNext#16 = (byte**) renderBobCleanupNext#20 -Alias (byte) main::angle#2 = (byte) main::angle#4 (byte) main::angle#6 (byte) main::a#0 -Alias (byte*) progress_cursor#63 = (byte*) progress_cursor#65 (byte*) progress_cursor#67 -Alias (byte) progress_idx#63 = (byte) progress_idx#65 (byte) progress_idx#67 -Alias (byte) bob_charset_next_id#71 = (byte) bob_charset_next_id#73 (byte) bob_charset_next_id#75 -Alias (byte**) renderBobCleanupNext#0 = (byte**) renderBobCleanupNext#9 -Alias (signed word) mulf8s::return#2 = (signed word) mulf8s::return#5 -Alias (signed byte) main::r#2 = (signed byte) main::r#3 (signed byte) main::r#4 -Alias (byte) main::a#2 = (byte) main::a#3 (byte) main::a#4 -Alias (byte**) renderBobCleanupNext#17 = (byte**) renderBobCleanupNext#21 (byte**) renderBobCleanupNext#25 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#5 (byte) main::i#3 -Alias (byte) main::angle#11 = (byte) main::angle#9 (byte) main::angle#7 (byte) main::angle#5 (byte) main::angle#3 -Alias (byte*) progress_cursor#51 = (byte*) progress_cursor#59 (byte*) progress_cursor#61 (byte*) progress_cursor#57 (byte*) progress_cursor#55 (byte*) progress_cursor#53 -Alias (byte) progress_idx#51 = (byte) progress_idx#59 (byte) progress_idx#61 (byte) progress_idx#57 (byte) progress_idx#55 (byte) progress_idx#53 -Alias (byte) bob_charset_next_id#59 = (byte) bob_charset_next_id#67 (byte) bob_charset_next_id#69 (byte) bob_charset_next_id#65 (byte) bob_charset_next_id#63 (byte) bob_charset_next_id#61 -Alias (signed word) main::x#0 = (signed word~) main::$11 (signed word) main::x#1 -Alias (signed word) mulf8s::return#3 = (signed word) mulf8s::return#6 -Alias (signed word) main::y#0 = (signed word~) main::$14 -Alias (byte) renderBob::xpos#0 = (byte~) main::$15 -Alias (byte) renderBob::ypos#0 = (byte~) main::$16 -Alias (signed byte) main::r#1 = (signed byte) main::r#5 -Alias (byte) main::a#1 = (byte) main::a#5 -Alias (byte**) renderBobCleanupNext#1 = (byte**) renderBobCleanupNext#10 (byte**) renderBobCleanupNext#32 (byte**) renderBobCleanupNext#29 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 -Alias (byte) main::angle#1 = (byte) main::angle#10 -Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 -Alias (byte*) progress_cursor#1 = (byte*) progress_cursor#48 (byte*) progress_cursor#49 (byte*) progress_cursor#47 (byte*) progress_cursor#46 (byte*) progress_cursor#44 (byte*) progress_cursor#42 (byte*) progress_cursor#39 (byte*) progress_cursor#36 (byte*) progress_cursor#33 (byte*) progress_cursor#29 (byte*) progress_cursor#22 (byte*) progress_cursor#12 -Alias (byte) progress_idx#1 = (byte) progress_idx#48 (byte) progress_idx#49 (byte) progress_idx#47 (byte) progress_idx#46 (byte) progress_idx#44 (byte) progress_idx#42 (byte) progress_idx#39 (byte) progress_idx#36 (byte) progress_idx#33 (byte) progress_idx#29 (byte) progress_idx#23 (byte) progress_idx#13 -Alias (byte) bob_charset_next_id#1 = (byte) bob_charset_next_id#56 (byte) bob_charset_next_id#57 (byte) bob_charset_next_id#55 (byte) bob_charset_next_id#54 (byte) bob_charset_next_id#52 (byte) bob_charset_next_id#50 (byte) bob_charset_next_id#47 (byte) bob_charset_next_id#42 (byte) bob_charset_next_id#36 (byte) bob_charset_next_id#29 (byte) bob_charset_next_id#20 (byte) bob_charset_next_id#11 -Alias (byte**) renderBobCleanupNext#11 = (byte**) renderBobCleanupNext#43 (byte**) renderBobCleanupNext#45 (byte**) renderBobCleanupNext#41 (byte**) renderBobCleanupNext#39 (byte**) renderBobCleanupNext#37 (byte**) renderBobCleanupNext#35 (byte**) renderBobCleanupNext#33 (byte**) renderBobCleanupNext#30 (byte**) renderBobCleanupNext#26 (byte**) renderBobCleanupNext#22 (byte**) renderBobCleanupNext#18 (byte**) renderBobCleanupNext#2 -Alias (byte*) main::vicSelectGfxBank2_gfx#0 = (byte*) main::vicSelectGfxBank2_gfx#1 (byte*) main::vicSelectGfxBank2_toDd001_gfx#0 (byte*) main::vicSelectGfxBank2_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank2_toDd001_return#0 = (byte~) main::vicSelectGfxBank2_toDd001_$3 (byte) main::vicSelectGfxBank2_toDd001_return#2 (byte) main::vicSelectGfxBank2_toDd001_return#1 (byte) main::vicSelectGfxBank2_toDd001_return#3 (byte~) main::vicSelectGfxBank2_$0 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 -Alias (byte) renderBob::x_char_offset#0 = (byte~) renderBob::$0 -Alias (byte) renderBob::y_char_offset#0 = (byte~) renderBob::$1 -Alias (byte*) renderBob::screen#0 = (byte*~) renderBob::$3 -Alias (byte) renderBob::bob_table_idx#0 = (byte~) renderBob::$7 -Alias (byte**) renderBobCleanupNext#13 = (byte**) renderBobCleanupNext#4 (byte**) renderBobCleanupNext#5 -Alias (byte**) renderBobCleanupNext#14 = (byte**) renderBobCleanupNext#6 (byte**) renderBobCleanupNext#7 -Alias (byte*) progress_cursor#13 = (byte*) progress_cursor#2 (byte*) progress_cursor#30 -Alias (byte) progress_idx#14 = (byte) progress_idx#2 (byte) progress_idx#30 -Alias (byte) bob_charset_next_id#12 = (byte) bob_charset_next_id#3 -Alias (byte) prepareBobs::bob_table_idx#6 = (byte) prepareBobs::bob_table_idx#9 -Alias (byte) prepareBobs::shift_y#2 = (byte) prepareBobs::shift_y#6 -Alias (byte) bob_charset_next_id#14 = (byte) bob_charset_next_id#48 (byte) bob_charset_next_id#22 (byte) bob_charset_next_id#5 -Alias (byte*) progress_cursor#15 = (byte*) progress_cursor#40 (byte*) progress_cursor#25 (byte*) progress_cursor#4 -Alias (byte) progress_idx#16 = (byte) progress_idx#40 (byte) progress_idx#26 (byte) progress_idx#4 -Alias (byte) prepareBobs::bob_table_idx#12 = (byte) prepareBobs::bob_table_idx#2 (byte) prepareBobs::bob_table_idx#4 (byte) prepareBobs::bob_table_idx#14 -Alias (byte) bob_charset_next_id#30 = (byte) bob_charset_next_id#39 (byte) bob_charset_next_id#43 (byte) bob_charset_next_id#37 -Alias (byte) progress_idx#31 = (byte) progress_idx#38 (byte) progress_idx#37 (byte) progress_idx#34 -Alias (byte*) progress_cursor#31 = (byte*) progress_cursor#38 (byte*) progress_cursor#37 (byte*) progress_cursor#34 -Alias (byte) prepareBobs::shift_x#2 = (byte) prepareBobs::shift_x#8 -Alias (byte) prepareBobs::shift_y#12 = (byte) prepareBobs::shift_y#5 (byte) prepareBobs::shift_y#4 (byte) prepareBobs::shift_y#3 -Alias (byte*) prepareBobs::bob_table#0 = (byte*~) prepareBobs::$4 -Alias (byte*) prepareBobs::bob_glyph#2 = (byte*) prepareBobs::bob_glyph#4 (byte*) prepareBobs::bob_glyph#3 -Alias (byte) bob_charset_next_id#21 = (byte) bob_charset_next_id#31 (byte) bob_charset_next_id#53 (byte) bob_charset_next_id#51 (byte) bob_charset_next_id#49 -Alias (byte*) prepareBobs::bob_table#2 = (byte*) prepareBobs::bob_table#3 (byte*) prepareBobs::bob_table#4 -Alias (byte) progress_idx#25 = (byte) progress_idx#32 (byte) progress_idx#35 (byte) progress_idx#45 (byte) progress_idx#43 (byte) progress_idx#41 -Alias (byte*) progress_cursor#24 = (byte*) progress_cursor#32 (byte*) progress_cursor#35 (byte*) progress_cursor#45 (byte*) progress_cursor#43 (byte*) progress_cursor#41 -Alias (byte) prepareBobs::cell#2 = (byte) prepareBobs::cell#5 (byte) prepareBobs::cell#4 (byte) prepareBobs::cell#3 -Alias (byte) prepareBobs::bob_table_idx#10 = (byte) prepareBobs::bob_table_idx#13 (byte) prepareBobs::bob_table_idx#5 (byte) prepareBobs::bob_table_idx#8 (byte) prepareBobs::bob_table_idx#3 -Alias (byte) prepareBobs::shift_x#10 = (byte) prepareBobs::shift_x#6 (byte) prepareBobs::shift_x#9 (byte) prepareBobs::shift_x#7 (byte) prepareBobs::shift_x#5 (byte) prepareBobs::shift_x#4 (byte) prepareBobs::shift_x#3 -Alias (byte) prepareBobs::shift_y#10 = (byte) prepareBobs::shift_y#14 (byte) prepareBobs::shift_y#13 (byte) prepareBobs::shift_y#11 (byte) prepareBobs::shift_y#9 (byte) prepareBobs::shift_y#8 (byte) prepareBobs::shift_y#7 -Alias (byte) bobCharsetFindOrAddGlyph::return#1 = (byte) bobCharsetFindOrAddGlyph::return#5 -Alias (byte) bob_charset_next_id#13 = (byte) bob_charset_next_id#4 (byte) bob_charset_next_id#38 -Alias (byte*) prepareBobs::bob_glyph#1 = (byte*) prepareBobs::bob_glyph#5 -Alias (byte*) prepareBobs::bob_table#1 = (byte*) prepareBobs::bob_table#5 -Alias (byte) progress_idx#15 = (byte) progress_idx#3 -Alias (byte*) progress_cursor#14 = (byte*) progress_cursor#3 -Alias (byte) prepareBobs::bob_table_idx#1 = (byte) prepareBobs::bob_table_idx#11 (byte) prepareBobs::bob_table_idx#7 -Alias (byte) shiftProtoBobRight::j#3 = (byte) shiftProtoBobRight::j#7 (byte) shiftProtoBobRight::j#8 (byte) shiftProtoBobRight::j#9 -Alias (byte) shiftProtoBobRight::carry#3 = (byte) shiftProtoBobRight::carry#5 (byte) shiftProtoBobRight::carry#6 (byte) shiftProtoBobRight::carry#4 -Alias (byte) shiftProtoBobRight::i#2 = (byte) shiftProtoBobRight::i#9 (byte) shiftProtoBobRight::i#7 (byte) shiftProtoBobRight::i#8 -Alias (byte) shiftProtoBobRight::carry#1 = (byte) shiftProtoBobRight::new_carry#0 (byte~) shiftProtoBobRight::$4 (byte) shiftProtoBobRight::carry#9 (byte) shiftProtoBobRight::carry#8 -Alias (byte) shiftProtoBobRight::j#4 = (byte) shiftProtoBobRight::j#5 (byte) shiftProtoBobRight::j#6 -Alias (byte) shiftProtoBobRight::i#4 = (byte) shiftProtoBobRight::i#5 (byte) shiftProtoBobRight::i#6 -Alias (byte) shiftProtoBobDown::i#2 = (byte) shiftProtoBobDown::i#3 -Alias (byte**) renderBobCleanupNext#19 = (byte**) renderBobCleanupNext#27 (byte**) renderBobCleanupNext#3 (byte**) renderBobCleanupNext#23 -Alias (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 = (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#8 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#12 -Alias (byte*) bobCharsetFindOrAddGlyph::bob_glyph#6 = (byte*) bobCharsetFindOrAddGlyph::bob_glyph#9 (byte*) bobCharsetFindOrAddGlyph::bob_glyph#8 -Alias (byte) bobCharsetFindOrAddGlyph::glyph_id#11 = (byte) bobCharsetFindOrAddGlyph::glyph_id#12 (byte) bobCharsetFindOrAddGlyph::glyph_id#2 -Alias (byte) bob_charset_next_id#15 = (byte) bob_charset_next_id#44 (byte) bob_charset_next_id#34 -Alias (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#10 = (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#2 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#5 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#9 -Alias (byte) bobCharsetFindOrAddGlyph::i#2 = (byte) bobCharsetFindOrAddGlyph::i#3 (byte) bobCharsetFindOrAddGlyph::i#4 -Alias (byte*) bobCharsetFindOrAddGlyph::bob_glyph#13 = (byte*) bobCharsetFindOrAddGlyph::bob_glyph#2 (byte*) bobCharsetFindOrAddGlyph::bob_glyph#4 (byte*) bobCharsetFindOrAddGlyph::bob_glyph#7 -Alias (byte) bobCharsetFindOrAddGlyph::found#3 = (byte) bobCharsetFindOrAddGlyph::found#5 (byte) bobCharsetFindOrAddGlyph::found#4 -Alias (byte) bobCharsetFindOrAddGlyph::glyph_id#13 = (byte) bobCharsetFindOrAddGlyph::glyph_id#14 (byte) bobCharsetFindOrAddGlyph::glyph_id#9 (byte) bobCharsetFindOrAddGlyph::glyph_id#8 -Alias (byte) bob_charset_next_id#40 = (byte) bob_charset_next_id#46 (byte) bob_charset_next_id#41 (byte) bob_charset_next_id#45 -Alias (byte) bobCharsetFindOrAddGlyph::glyph_id#3 = (byte) bobCharsetFindOrAddGlyph::glyph_id#6 (byte) bobCharsetFindOrAddGlyph::glyph_id#4 (byte) bobCharsetFindOrAddGlyph::return#2 -Alias (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#3 = (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#6 -Alias (byte) bob_charset_next_id#24 = (byte) bob_charset_next_id#32 (byte) bob_charset_next_id#25 -Alias (byte*) bobCharsetFindOrAddGlyph::bob_glyph#11 = (byte*) bobCharsetFindOrAddGlyph::bob_glyph#12 -Alias (byte) bobCharsetFindOrAddGlyph::return#3 = (byte) bobCharsetFindOrAddGlyph::return#6 -Alias (byte) bob_charset_next_id#16 = (byte) bob_charset_next_id#7 -Alias (byte*) bobCharsetFindOrAddGlyph::bob_glyph#3 = (byte*) bobCharsetFindOrAddGlyph::bob_glyph#5 -Alias (byte) bobCharsetFindOrAddGlyph::i1#2 = (byte) bobCharsetFindOrAddGlyph::i1#3 -Alias (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#4 = (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#7 -Alias (byte) bob_charset_next_id#17 = (byte) bob_charset_next_id#33 (byte) bob_charset_next_id#26 -Alias (byte) bobCharsetFindOrAddGlyph::glyph_id#10 = (byte) bobCharsetFindOrAddGlyph::glyph_id#7 (byte) bobCharsetFindOrAddGlyph::glyph_id#5 (byte) bobCharsetFindOrAddGlyph::return#4 -Alias (byte) bob_charset_next_id#27 = (byte) bob_charset_next_id#35 (byte) bob_charset_next_id#6 -Alias (byte*) progress_cursor#16 = (byte*) progress_cursor#6 (byte*) progress_cursor#7 -Alias (byte) progress_idx#17 = (byte) progress_idx#6 (byte) progress_idx#7 -Alias (byte*) progress_cursor#18 = (byte*) progress_cursor#26 -Alias (byte) progress_idx#10 = (byte) progress_idx#20 (byte) progress_idx#19 -Alias (byte*) progress_cursor#17 = (byte*) progress_cursor#19 (byte*) progress_cursor#9 -Alias (byte*) progress_cursor#27 = (byte*) progress_cursor#5 -Alias (byte) progress_idx#27 = (byte) progress_idx#5 -Alias (byte*) progress_cursor#10 = (byte*) progress_cursor#20 -Alias (byte) progress_idx#11 = (byte) progress_idx#21 -Alias (byte) bob_charset_next_id#18 = (byte) bob_charset_next_id#9 -Alias (byte**) renderBobCleanupNext#15 = (byte**) renderBobCleanupNext#8 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#4 keyboard_key_pressed::return#1 +Alias mulf_init::c#2 = mulf_init::c#3 +Alias mulf_init::sqr#4 = mulf_init::sqr#5 mulf_init::sqr#6 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#4 mulf_init::sqr1_lo#5 +Alias mulf_init::sqr1_hi#3 = mulf_init::sqr1_hi#5 mulf_init::sqr1_hi#4 +Alias mulf_init::x_2#3 = mulf_init::x_2#4 mulf_init::x_2#5 +Alias mulf_init::sqr#1 = mulf_init::$6 +Alias mulf_init::c#1 = mulf_init::c#5 +Alias mulf_init::x_255#2 = mulf_init::x_255#3 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#3 mulf_init::sqr2_lo#5 +Alias mulf_init::sqr2_hi#2 = mulf_init::sqr2_hi#3 +Alias mulf_init::dir#2 = mulf_init::dir#3 +Alias mulf_init::x_255#1 = mulf_init::$8 mulf_init::x_255#5 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#5 +Alias mulf8u_prepared::return#0 = mulf8u_prepared::$0 mulf8u_prepared::return#3 mulf8u_prepared::return#1 +Alias mulf8u_prepared::b#0 = mulf8s_prepared::$0 +Alias mulf8u_prepared::return#2 = mulf8u_prepared::return#4 +Alias mulf8s_prepared::b#1 = mulf8s_prepared::b#4 mulf8s_prepared::b#3 +Alias mulf8s_prepared::m#0 = mulf8s_prepared::$1 mulf8s_prepared::m#3 +Alias mulf8s_prepared::$15 = mulf8s_prepared::$10 +Alias mulf8s_prepared::return#0 = mulf8s_prepared::$6 mulf8s_prepared::return#3 mulf8s_prepared::return#1 +Alias mulf8s_prepared::m#5 = mulf8s_prepared::m#6 +Alias mulf8s_prepared::$16 = mulf8s_prepared::$14 +Alias mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#2 mulf8s::mulf8s_prepare1_a#1 +Alias mulf8s::b#2 = mulf8s::b#4 mulf8s::b#5 mulf8s::b#3 +Alias mulf8u_prepare::a#0 = mulf8s::mulf8s_prepare1_$0 +Alias mulf8s_prepared::return#2 = mulf8s_prepared::return#4 +Alias mulf8s::return#0 = mulf8s::$1 mulf8s::return#4 mulf8s::return#1 +Alias progress_cursor#21 = progress_cursor#28 +Alias progress_idx#22 = progress_idx#28 +Alias bob_charset_next_id#19 = bob_charset_next_id#28 +Alias renderBobCleanupNext#28 = renderBobCleanupNext#49 renderBobCleanupNext#50 renderBobCleanupNext#48 renderBobCleanupNext#47 renderBobCleanupNext#46 renderBobCleanupNext#44 renderBobCleanupNext#42 renderBobCleanupNext#40 renderBobCleanupNext#38 renderBobCleanupNext#36 renderBobCleanupNext#34 renderBobCleanupNext#31 +Alias progress_cursor#0 = progress_cursor#11 progress_cursor#69 progress_cursor#68 progress_cursor#66 progress_cursor#64 progress_cursor#62 progress_cursor#60 progress_cursor#58 progress_cursor#56 progress_cursor#54 progress_cursor#52 +Alias progress_idx#0 = progress_idx#12 progress_idx#69 progress_idx#68 progress_idx#66 progress_idx#64 progress_idx#62 progress_idx#60 progress_idx#58 progress_idx#56 progress_idx#54 progress_idx#52 +Alias bob_charset_next_id#0 = bob_charset_next_id#10 bob_charset_next_id#77 bob_charset_next_id#76 bob_charset_next_id#74 bob_charset_next_id#72 bob_charset_next_id#70 bob_charset_next_id#68 bob_charset_next_id#66 bob_charset_next_id#64 bob_charset_next_id#62 bob_charset_next_id#60 +Alias main::vicSelectGfxBank1_gfx#0 = main::vicSelectGfxBank1_gfx#1 main::vicSelectGfxBank1_toDd001_gfx#0 main::vicSelectGfxBank1_toDd001_gfx#1 +Alias main::vicSelectGfxBank1_toDd001_return#0 = main::vicSelectGfxBank1_toDd001_$3 main::vicSelectGfxBank1_toDd001_return#2 main::vicSelectGfxBank1_toDd001_return#1 main::vicSelectGfxBank1_toDd001_return#3 main::vicSelectGfxBank1_$0 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$4 +Alias renderBobCleanupNext#16 = renderBobCleanupNext#20 +Alias main::angle#2 = main::angle#4 main::angle#6 main::a#0 +Alias progress_cursor#63 = progress_cursor#65 progress_cursor#67 +Alias progress_idx#63 = progress_idx#65 progress_idx#67 +Alias bob_charset_next_id#71 = bob_charset_next_id#73 bob_charset_next_id#75 +Alias renderBobCleanupNext#0 = renderBobCleanupNext#9 +Alias mulf8s::return#2 = mulf8s::return#5 +Alias main::r#2 = main::r#3 main::r#4 +Alias main::a#2 = main::a#3 main::a#4 +Alias renderBobCleanupNext#17 = renderBobCleanupNext#21 renderBobCleanupNext#25 +Alias main::i#2 = main::i#4 main::i#5 main::i#3 +Alias main::angle#11 = main::angle#9 main::angle#7 main::angle#5 main::angle#3 +Alias progress_cursor#51 = progress_cursor#59 progress_cursor#61 progress_cursor#57 progress_cursor#55 progress_cursor#53 +Alias progress_idx#51 = progress_idx#59 progress_idx#61 progress_idx#57 progress_idx#55 progress_idx#53 +Alias bob_charset_next_id#59 = bob_charset_next_id#67 bob_charset_next_id#69 bob_charset_next_id#65 bob_charset_next_id#63 bob_charset_next_id#61 +Alias main::x#0 = main::$11 main::x#1 +Alias mulf8s::return#3 = mulf8s::return#6 +Alias main::y#0 = main::$14 +Alias renderBob::xpos#0 = main::$15 +Alias renderBob::ypos#0 = main::$16 +Alias main::r#1 = main::r#5 +Alias main::a#1 = main::a#5 +Alias renderBobCleanupNext#1 = renderBobCleanupNext#10 renderBobCleanupNext#32 renderBobCleanupNext#29 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#5 +Alias main::angle#1 = main::angle#10 +Alias keyboard_key_pressed::return#3 = keyboard_key_pressed::return#6 +Alias progress_cursor#1 = progress_cursor#48 progress_cursor#49 progress_cursor#47 progress_cursor#46 progress_cursor#44 progress_cursor#42 progress_cursor#39 progress_cursor#36 progress_cursor#33 progress_cursor#29 progress_cursor#22 progress_cursor#12 +Alias progress_idx#1 = progress_idx#48 progress_idx#49 progress_idx#47 progress_idx#46 progress_idx#44 progress_idx#42 progress_idx#39 progress_idx#36 progress_idx#33 progress_idx#29 progress_idx#23 progress_idx#13 +Alias bob_charset_next_id#1 = bob_charset_next_id#56 bob_charset_next_id#57 bob_charset_next_id#55 bob_charset_next_id#54 bob_charset_next_id#52 bob_charset_next_id#50 bob_charset_next_id#47 bob_charset_next_id#42 bob_charset_next_id#36 bob_charset_next_id#29 bob_charset_next_id#20 bob_charset_next_id#11 +Alias renderBobCleanupNext#11 = renderBobCleanupNext#43 renderBobCleanupNext#45 renderBobCleanupNext#41 renderBobCleanupNext#39 renderBobCleanupNext#37 renderBobCleanupNext#35 renderBobCleanupNext#33 renderBobCleanupNext#30 renderBobCleanupNext#26 renderBobCleanupNext#22 renderBobCleanupNext#18 renderBobCleanupNext#2 +Alias main::vicSelectGfxBank2_gfx#0 = main::vicSelectGfxBank2_gfx#1 main::vicSelectGfxBank2_toDd001_gfx#0 main::vicSelectGfxBank2_toDd001_gfx#1 +Alias main::vicSelectGfxBank2_toDd001_return#0 = main::vicSelectGfxBank2_toDd001_$3 main::vicSelectGfxBank2_toDd001_return#2 main::vicSelectGfxBank2_toDd001_return#1 main::vicSelectGfxBank2_toDd001_return#3 main::vicSelectGfxBank2_$0 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 +Alias renderBob::x_char_offset#0 = renderBob::$0 +Alias renderBob::y_char_offset#0 = renderBob::$1 +Alias renderBob::screen#0 = renderBob::$3 +Alias renderBob::bob_table_idx#0 = renderBob::$7 +Alias renderBobCleanupNext#13 = renderBobCleanupNext#4 renderBobCleanupNext#5 +Alias renderBobCleanupNext#14 = renderBobCleanupNext#6 renderBobCleanupNext#7 +Alias progress_cursor#13 = progress_cursor#2 progress_cursor#30 +Alias progress_idx#14 = progress_idx#2 progress_idx#30 +Alias bob_charset_next_id#12 = bob_charset_next_id#3 +Alias prepareBobs::bob_table_idx#6 = prepareBobs::bob_table_idx#9 +Alias prepareBobs::shift_y#2 = prepareBobs::shift_y#6 +Alias bob_charset_next_id#14 = bob_charset_next_id#48 bob_charset_next_id#22 bob_charset_next_id#5 +Alias progress_cursor#15 = progress_cursor#40 progress_cursor#25 progress_cursor#4 +Alias progress_idx#16 = progress_idx#40 progress_idx#26 progress_idx#4 +Alias prepareBobs::bob_table_idx#12 = prepareBobs::bob_table_idx#2 prepareBobs::bob_table_idx#4 prepareBobs::bob_table_idx#14 +Alias bob_charset_next_id#30 = bob_charset_next_id#39 bob_charset_next_id#43 bob_charset_next_id#37 +Alias progress_idx#31 = progress_idx#38 progress_idx#37 progress_idx#34 +Alias progress_cursor#31 = progress_cursor#38 progress_cursor#37 progress_cursor#34 +Alias prepareBobs::shift_x#2 = prepareBobs::shift_x#8 +Alias prepareBobs::shift_y#12 = prepareBobs::shift_y#5 prepareBobs::shift_y#4 prepareBobs::shift_y#3 +Alias prepareBobs::bob_table#0 = prepareBobs::$4 +Alias prepareBobs::bob_glyph#2 = prepareBobs::bob_glyph#4 prepareBobs::bob_glyph#3 +Alias bob_charset_next_id#21 = bob_charset_next_id#31 bob_charset_next_id#53 bob_charset_next_id#51 bob_charset_next_id#49 +Alias prepareBobs::bob_table#2 = prepareBobs::bob_table#3 prepareBobs::bob_table#4 +Alias progress_idx#25 = progress_idx#32 progress_idx#35 progress_idx#45 progress_idx#43 progress_idx#41 +Alias progress_cursor#24 = progress_cursor#32 progress_cursor#35 progress_cursor#45 progress_cursor#43 progress_cursor#41 +Alias prepareBobs::cell#2 = prepareBobs::cell#5 prepareBobs::cell#4 prepareBobs::cell#3 +Alias prepareBobs::bob_table_idx#10 = prepareBobs::bob_table_idx#13 prepareBobs::bob_table_idx#5 prepareBobs::bob_table_idx#8 prepareBobs::bob_table_idx#3 +Alias prepareBobs::shift_x#10 = prepareBobs::shift_x#6 prepareBobs::shift_x#9 prepareBobs::shift_x#7 prepareBobs::shift_x#5 prepareBobs::shift_x#4 prepareBobs::shift_x#3 +Alias prepareBobs::shift_y#10 = prepareBobs::shift_y#14 prepareBobs::shift_y#13 prepareBobs::shift_y#11 prepareBobs::shift_y#9 prepareBobs::shift_y#8 prepareBobs::shift_y#7 +Alias bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::return#5 +Alias bob_charset_next_id#13 = bob_charset_next_id#4 bob_charset_next_id#38 +Alias prepareBobs::bob_glyph#1 = prepareBobs::bob_glyph#5 +Alias prepareBobs::bob_table#1 = prepareBobs::bob_table#5 +Alias progress_idx#15 = progress_idx#3 +Alias progress_cursor#14 = progress_cursor#3 +Alias prepareBobs::bob_table_idx#1 = prepareBobs::bob_table_idx#11 prepareBobs::bob_table_idx#7 +Alias shiftProtoBobRight::j#3 = shiftProtoBobRight::j#7 shiftProtoBobRight::j#8 shiftProtoBobRight::j#9 +Alias shiftProtoBobRight::carry#3 = shiftProtoBobRight::carry#5 shiftProtoBobRight::carry#6 shiftProtoBobRight::carry#4 +Alias shiftProtoBobRight::i#2 = shiftProtoBobRight::i#9 shiftProtoBobRight::i#7 shiftProtoBobRight::i#8 +Alias shiftProtoBobRight::carry#1 = shiftProtoBobRight::new_carry#0 shiftProtoBobRight::$4 shiftProtoBobRight::carry#9 shiftProtoBobRight::carry#8 +Alias shiftProtoBobRight::j#4 = shiftProtoBobRight::j#5 shiftProtoBobRight::j#6 +Alias shiftProtoBobRight::i#4 = shiftProtoBobRight::i#5 shiftProtoBobRight::i#6 +Alias shiftProtoBobDown::i#2 = shiftProtoBobDown::i#3 +Alias renderBobCleanupNext#19 = renderBobCleanupNext#27 renderBobCleanupNext#3 renderBobCleanupNext#23 +Alias bobCharsetFindOrAddGlyph::glyph_cursor#11 = bobCharsetFindOrAddGlyph::glyph_cursor#8 bobCharsetFindOrAddGlyph::glyph_cursor#12 +Alias bobCharsetFindOrAddGlyph::bob_glyph#6 = bobCharsetFindOrAddGlyph::bob_glyph#9 bobCharsetFindOrAddGlyph::bob_glyph#8 +Alias bobCharsetFindOrAddGlyph::glyph_id#11 = bobCharsetFindOrAddGlyph::glyph_id#12 bobCharsetFindOrAddGlyph::glyph_id#2 +Alias bob_charset_next_id#15 = bob_charset_next_id#44 bob_charset_next_id#34 +Alias bobCharsetFindOrAddGlyph::glyph_cursor#10 = bobCharsetFindOrAddGlyph::glyph_cursor#2 bobCharsetFindOrAddGlyph::glyph_cursor#5 bobCharsetFindOrAddGlyph::glyph_cursor#9 +Alias bobCharsetFindOrAddGlyph::i#2 = bobCharsetFindOrAddGlyph::i#3 bobCharsetFindOrAddGlyph::i#4 +Alias bobCharsetFindOrAddGlyph::bob_glyph#13 = bobCharsetFindOrAddGlyph::bob_glyph#2 bobCharsetFindOrAddGlyph::bob_glyph#4 bobCharsetFindOrAddGlyph::bob_glyph#7 +Alias bobCharsetFindOrAddGlyph::found#3 = bobCharsetFindOrAddGlyph::found#5 bobCharsetFindOrAddGlyph::found#4 +Alias bobCharsetFindOrAddGlyph::glyph_id#13 = bobCharsetFindOrAddGlyph::glyph_id#14 bobCharsetFindOrAddGlyph::glyph_id#9 bobCharsetFindOrAddGlyph::glyph_id#8 +Alias bob_charset_next_id#40 = bob_charset_next_id#46 bob_charset_next_id#41 bob_charset_next_id#45 +Alias bobCharsetFindOrAddGlyph::glyph_id#3 = bobCharsetFindOrAddGlyph::glyph_id#6 bobCharsetFindOrAddGlyph::glyph_id#4 bobCharsetFindOrAddGlyph::return#2 +Alias bobCharsetFindOrAddGlyph::glyph_cursor#3 = bobCharsetFindOrAddGlyph::glyph_cursor#6 +Alias bob_charset_next_id#24 = bob_charset_next_id#32 bob_charset_next_id#25 +Alias bobCharsetFindOrAddGlyph::bob_glyph#11 = bobCharsetFindOrAddGlyph::bob_glyph#12 +Alias bobCharsetFindOrAddGlyph::return#3 = bobCharsetFindOrAddGlyph::return#6 +Alias bob_charset_next_id#16 = bob_charset_next_id#7 +Alias bobCharsetFindOrAddGlyph::bob_glyph#3 = bobCharsetFindOrAddGlyph::bob_glyph#5 +Alias bobCharsetFindOrAddGlyph::i1#2 = bobCharsetFindOrAddGlyph::i1#3 +Alias bobCharsetFindOrAddGlyph::glyph_cursor#4 = bobCharsetFindOrAddGlyph::glyph_cursor#7 +Alias bob_charset_next_id#17 = bob_charset_next_id#33 bob_charset_next_id#26 +Alias bobCharsetFindOrAddGlyph::glyph_id#10 = bobCharsetFindOrAddGlyph::glyph_id#7 bobCharsetFindOrAddGlyph::glyph_id#5 bobCharsetFindOrAddGlyph::return#4 +Alias bob_charset_next_id#27 = bob_charset_next_id#35 bob_charset_next_id#6 +Alias progress_cursor#16 = progress_cursor#6 progress_cursor#7 +Alias progress_idx#17 = progress_idx#6 progress_idx#7 +Alias progress_cursor#18 = progress_cursor#26 +Alias progress_idx#10 = progress_idx#20 progress_idx#19 +Alias progress_cursor#17 = progress_cursor#19 progress_cursor#9 +Alias progress_cursor#27 = progress_cursor#5 +Alias progress_idx#27 = progress_idx#5 +Alias progress_cursor#10 = progress_cursor#20 +Alias progress_idx#11 = progress_idx#21 +Alias bob_charset_next_id#18 = bob_charset_next_id#9 +Alias renderBobCleanupNext#15 = renderBobCleanupNext#8 Successful SSA optimization Pass2AliasElimination -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 -Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 -Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#2 -Alias (byte) shiftProtoBobRight::j#3 = (byte) shiftProtoBobRight::j#4 -Alias (byte) shiftProtoBobRight::carry#2 = (byte) shiftProtoBobRight::carry#3 -Alias (byte) shiftProtoBobRight::i#2 = (byte) shiftProtoBobRight::i#4 (byte) shiftProtoBobRight::i#3 -Alias (byte) shiftProtoBobRight::carry#1 = (byte) shiftProtoBobRight::carry#7 -Alias (byte) bobCharsetFindOrAddGlyph::glyph_id#13 = (byte) bobCharsetFindOrAddGlyph::glyph_id#3 -Alias (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#10 = (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#3 -Alias (byte) bob_charset_next_id#24 = (byte) bob_charset_next_id#40 -Alias (byte*) bobCharsetFindOrAddGlyph::bob_glyph#11 = (byte*) bobCharsetFindOrAddGlyph::bob_glyph#13 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#3 +Alias mulf_init::sqr1_hi#2 = mulf_init::sqr1_hi#3 +Alias mulf_init::c#1 = mulf_init::c#4 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#4 +Alias mulf_init::x_255#1 = mulf_init::x_255#4 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#4 +Alias mulf8s_prepared::b#1 = mulf8s_prepared::b#2 +Alias shiftProtoBobRight::j#3 = shiftProtoBobRight::j#4 +Alias shiftProtoBobRight::carry#2 = shiftProtoBobRight::carry#3 +Alias shiftProtoBobRight::i#2 = shiftProtoBobRight::i#4 shiftProtoBobRight::i#3 +Alias shiftProtoBobRight::carry#1 = shiftProtoBobRight::carry#7 +Alias bobCharsetFindOrAddGlyph::glyph_id#13 = bobCharsetFindOrAddGlyph::glyph_id#3 +Alias bobCharsetFindOrAddGlyph::glyph_cursor#10 = bobCharsetFindOrAddGlyph::glyph_cursor#3 +Alias bob_charset_next_id#24 = bob_charset_next_id#40 +Alias bobCharsetFindOrAddGlyph::bob_glyph#11 = bobCharsetFindOrAddGlyph::bob_glyph#13 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -3549,7 +3549,7 @@ Consolidated array index constant in *(PROTO_BOB+$18) Consolidated array index constant in *(PROTO_BOB+$30) Consolidated array index constant in *(progress_inc::progress_chars+8) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word~) renderBobInit::$1 = (word~) renderBobInit::$8 +Alias renderBobInit::$1 = renderBobInit::$8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_key_pressed::key#2 (const byte) KEY_SPACE Successful SSA optimization Pass2IdenticalPhiElimination @@ -4410,65 +4410,65 @@ mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 VARIABLE REGISTER WEIGHTS (byte()) bobCharsetFindOrAddGlyph((byte*) bobCharsetFindOrAddGlyph::bob_glyph) (byte*) bobCharsetFindOrAddGlyph::bob_glyph -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 2002.0 -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 7400.200000000001 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 200002.0 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 7.333340000200001E9 (byte) bobCharsetFindOrAddGlyph::found -(byte) bobCharsetFindOrAddGlyph::found#2 10001.0 +(byte) bobCharsetFindOrAddGlyph::found#2 1.0000000001E10 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 20002.0 -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 10000.307692307691 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 2.0000000002E10 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 1.0000000000307692E10 (byte) bobCharsetFindOrAddGlyph::glyph_id -(byte) bobCharsetFindOrAddGlyph::glyph_id#1 10001.0 -(byte) bobCharsetFindOrAddGlyph::glyph_id#11 1937.75 +(byte) bobCharsetFindOrAddGlyph::glyph_id#1 1.0000000001E10 +(byte) bobCharsetFindOrAddGlyph::glyph_id#11 1.87500625025E9 (byte) bobCharsetFindOrAddGlyph::i -(byte) bobCharsetFindOrAddGlyph::i#1 200002.0 -(byte) bobCharsetFindOrAddGlyph::i#2 166668.3333333333 +(byte) bobCharsetFindOrAddGlyph::i#1 2.00000000002E11 +(byte) bobCharsetFindOrAddGlyph::i#2 1.6666666666833334E11 (byte) bobCharsetFindOrAddGlyph::i1 -(byte) bobCharsetFindOrAddGlyph::i1#1 20002.0 -(byte) bobCharsetFindOrAddGlyph::i1#2 16668.333333333332 +(byte) bobCharsetFindOrAddGlyph::i1#1 2.0000000002E10 +(byte) bobCharsetFindOrAddGlyph::i1#2 1.6666666668333332E10 (byte) bobCharsetFindOrAddGlyph::return -(byte) bobCharsetFindOrAddGlyph::return#1 2002.0 +(byte) bobCharsetFindOrAddGlyph::return#1 200002.0 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 12.0 -(byte) bob_charset_next_id#16 1000.5454545454544 -(byte) bob_charset_next_id#21 275.5 -(byte) bob_charset_next_id#23 1400.3333333333335 -(byte) bob_charset_next_id#30 37.33333333333333 -(byte) bob_charset_next_id#8 4.0 +(byte) bob_charset_next_id#14 1051.5 +(byte) bob_charset_next_id#16 9.091909185454544E8 +(byte) bob_charset_next_id#21 27500.5 +(byte) bob_charset_next_id#23 1.3334066669333334E9 +(byte) bob_charset_next_id#30 3667.333333333333 +(byte) bob_charset_next_id#8 2000002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2002.0 (byte) keyboard_key_pressed::colidx (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 6.0 -(byte) keyboard_key_pressed::return#2 22.0 -(byte) keyboard_key_pressed::return#3 22.0 +(byte) keyboard_key_pressed::return#0 300.75 +(byte) keyboard_key_pressed::return#2 202.0 +(byte) keyboard_key_pressed::return#3 202.0 (byte) keyboard_key_pressed::rowidx (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3667.333333333333 +(byte) keyboard_matrix_read::return#2 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) main() -(signed word~) main::$10 202.0 -(signed word~) main::$12 202.0 -(signed word~) main::$13 202.0 -(byte~) main::$19 22.0 -(byte~) main::$21 22.0 +(signed word~) main::$10 2002.0 +(signed word~) main::$12 2002.0 +(signed word~) main::$13 2002.0 +(byte~) main::$19 202.0 +(byte~) main::$21 202.0 (byte) main::a -(byte) main::a#1 28.857142857142858 -(byte) main::a#2 25.9375 -(byte) main::a#6 22.0 +(byte) main::a#1 286.0 +(byte) main::a#2 256.5625 +(byte) main::a#6 202.0 (byte) main::angle -(byte) main::angle#1 3.6666666666666665 -(byte) main::angle#8 1.1785714285714286 +(byte) main::angle#1 33.666666666666664 +(byte) main::angle#8 10.821428571428571 (byte) main::i -(byte) main::i#1 151.5 -(byte) main::i#2 9.619047619047619 +(byte) main::i#1 1501.5 +(byte) main::i#2 95.33333333333333 (signed byte) main::r -(signed byte) main::r#1 33.666666666666664 -(signed byte) main::r#2 23.764705882352942 +(signed byte) main::r#1 333.6666666666667 +(signed byte) main::r#2 235.52941176470588 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -4482,189 +4482,189 @@ VARIABLE REGISTER WEIGHTS (byte*) main::vicSelectGfxBank2_toDd001_gfx (byte) main::vicSelectGfxBank2_toDd001_return (signed word) main::x -(signed word) main::x#0 18.363636363636363 +(signed word) main::x#0 182.0 (signed word) main::y -(signed word) main::y#0 40.4 +(signed word) main::y#0 400.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1334.6666666666667 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 101.0 -(signed byte) mulf8s::a#1 101.0 +(signed byte) mulf8s::a#0 1001.0 +(signed byte) mulf8s::a#1 1001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 202.0 -(signed byte) mulf8s::b#1 202.0 -(signed byte) mulf8s::b#2 68.0 +(signed byte) mulf8s::b#0 2002.0 +(signed byte) mulf8s::b#1 2002.0 +(signed byte) mulf8s::b#2 4001.0 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 2002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 51.0 -(signed word) mulf8s::return#2 202.0 -(signed word) mulf8s::return#3 202.0 +(signed word) mulf8s::return#0 3000.75 +(signed word) mulf8s::return#2 2002.0 +(signed word) mulf8s::return#3 2002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 4.0 -(byte~) mulf8s_prepared::$15 4.0 -(byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$8 4.0 +(byte~) mulf8s_prepared::$12 200002.0 +(byte~) mulf8s_prepared::$15 200002.0 +(byte~) mulf8s_prepared::$16 200002.0 +(byte~) mulf8s_prepared::$8 200002.0 (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 0.4 +(signed byte) mulf8s_prepared::b#0 11000.2 (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.5 +(word) mulf8s_prepared::m#0 100001.0 +(word) mulf8s_prepared::m#1 200002.0 +(word) mulf8s_prepared::m#2 200002.0 +(word) mulf8s_prepared::m#4 66667.33333333333 +(word) mulf8s_prepared::m#5 125001.25 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 4.0 +(byte) mulf8u_prepare::a#0 110002.0 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 4.0 +(byte) mulf8u_prepared::b#0 1100002.0 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 1.3333333333333333 -(word) mulf8u_prepared::return#2 4.0 +(word) mulf8u_prepared::return#0 366667.3333333334 +(word) mulf8u_prepared::return#2 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 22.0 -(byte~) mulf_init::$4 22.0 -(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$1 2002.0 +(byte~) mulf_init::$4 2002.0 +(byte~) mulf_init::$5 2002.0 (byte) mulf_init::c -(byte) mulf_init::c#1 2.5384615384615383 -(byte) mulf_init::c#2 11.0 +(byte) mulf_init::c#1 231.0 +(byte) mulf_init::c#2 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 4.125 -(byte) mulf_init::dir#4 11.0 +(byte) mulf_init::dir#2 375.375 +(byte) mulf_init::dir#4 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 11.0 -(word) mulf_init::sqr#2 22.0 -(word) mulf_init::sqr#3 9.166666666666666 -(word) mulf_init::sqr#4 5.5 +(word) mulf_init::sqr#1 1001.0 +(word) mulf_init::sqr#2 2002.0 +(word) mulf_init::sqr#3 834.1666666666667 +(word) mulf_init::sqr#4 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 2.75 +(byte*) mulf_init::sqr1_hi#1 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 22.0 -(byte*) mulf_init::sqr1_lo#2 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 2002.0 +(byte*) mulf_init::sqr1_lo#2 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 8.25 +(byte*) mulf_init::sqr2_hi#1 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 22.0 -(byte*) mulf_init::sqr2_lo#2 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 2002.0 +(byte*) mulf_init::sqr2_lo#2 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 11.0 -(byte) mulf_init::x_2#2 5.5 -(byte) mulf_init::x_2#3 6.6000000000000005 +(byte) mulf_init::x_2#1 1001.0 +(byte) mulf_init::x_2#2 500.5 +(byte) mulf_init::x_2#3 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 6.6000000000000005 -(byte) mulf_init::x_255#2 8.8 +(byte) mulf_init::x_255#1 600.5999999999999 +(byte) mulf_init::x_255#2 800.8 (void()) prepareBobs() -(byte~) prepareBobs::$6 2002.0 +(byte~) prepareBobs::$6 200002.0 (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 500.5 -(byte*) prepareBobs::bob_glyph#2 429.0 +(byte*) prepareBobs::bob_glyph#1 50000.5 +(byte*) prepareBobs::bob_glyph#2 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 202.0 -(byte*) prepareBobs::bob_table#1 667.3333333333334 -(byte*) prepareBobs::bob_table#2 388.0 +(byte*) prepareBobs::bob_table#0 20002.0 +(byte*) prepareBobs::bob_table#1 66667.33333333333 +(byte*) prepareBobs::bob_table#2 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 40.4 -(byte) prepareBobs::bob_table_idx#12 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 11.0 +(byte) prepareBobs::bob_table_idx#1 4000.4 +(byte) prepareBobs::bob_table_idx#12 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 2002.0 -(byte) prepareBobs::cell#2 300.29999999999995 +(byte) prepareBobs::cell#1 200002.0 +(byte) prepareBobs::cell#2 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 202.0 -(byte) prepareBobs::shift_x#2 16.833333333333332 +(byte) prepareBobs::shift_x#1 20002.0 +(byte) prepareBobs::shift_x#2 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 22.0 -(byte) prepareBobs::shift_y#2 1.4347826086956523 +(byte) prepareBobs::shift_y#1 2002.0 +(byte) prepareBobs::shift_y#2 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 11.0 -(byte*) progress_cursor#17 201.4 -(byte*) progress_cursor#24 71.11764705882355 -(byte*) progress_cursor#31 37.33333333333333 -(byte*) progress_cursor#8 4.0 +(byte*) progress_cursor#15 1001.0 +(byte*) progress_cursor#17 620000.8 +(byte*) progress_cursor#24 183529.76470588235 +(byte*) progress_cursor#31 3667.333333333333 +(byte*) progress_cursor#8 2000002.0 (byte) progress_idx -(byte) progress_idx#10 201.0 -(byte) progress_idx#16 11.0 -(byte) progress_idx#25 86.07142857142856 -(byte) progress_idx#31 37.33333333333333 -(byte) progress_idx#8 3.0 +(byte) progress_idx#10 420000.60000000003 +(byte) progress_idx#16 1001.0 +(byte) progress_idx#25 80000.28571428571 +(byte) progress_idx#31 3667.333333333333 +(byte) progress_idx#8 1500001.5 (void()) progress_inc() (void()) progress_init((byte*) progress_init::line) (byte*) progress_init::line (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 4.0 -(byte~) renderBob::$4 4.0 -(byte~) renderBob::$5 2.0 -(byte~) renderBob::$6 4.0 -(byte~) renderBob::$8 4.0 +(byte*~) renderBob::$2 20002.0 +(byte~) renderBob::$4 20002.0 +(byte~) renderBob::$5 10001.0 +(byte~) renderBob::$6 20002.0 +(byte~) renderBob::$8 20002.0 (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 9091.818181818182 (byte*) renderBob::screen -(byte*) renderBob::screen#0 1.4666666666666666 +(byte*) renderBob::screen#0 7334.066666666668 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 0.8 +(byte) renderBob::x_char_offset#0 4000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 10.499999999999998 +(byte) renderBob::xpos#0 2100.3 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 4.0 +(byte) renderBob::y_char_offset#0 20002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 4.0 +(word) renderBob::y_offset#0 20002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 15.000000000000002 +(byte) renderBob::ypos#0 3000.4285714285716 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 202.0 +(byte~) renderBobCleanup::$1 200002.0 (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 151.5 -(byte) renderBobCleanup::i#2 25.25 +(byte) renderBobCleanup::i#1 150001.5 +(byte) renderBobCleanup::i#2 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 112.22222222222223 +(byte*) renderBobCleanup::screen#0 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 7.357142857142858 -(byte**) renderBobCleanupNext#17 3.3870967741935485 +(byte**) renderBobCleanupNext#13 785.8571428571429 +(byte**) renderBobCleanupNext#17 677.516129032258 (void()) renderBobInit() -(word~) renderBobInit::$0 16.5 -(word~) renderBobInit::$1 11.0 -(byte~) renderBobInit::$4 22.0 -(byte~) renderBobInit::$5 22.0 -(word~) renderBobInit::$6 22.0 -(word~) renderBobInit::$7 22.0 +(word~) renderBobInit::$0 1501.5 +(word~) renderBobInit::$1 1001.0 +(byte~) renderBobInit::$4 2002.0 +(byte~) renderBobInit::$5 2002.0 +(word~) renderBobInit::$6 2002.0 +(word~) renderBobInit::$7 2002.0 (byte) renderBobInit::i -(byte) renderBobInit::i#1 16.5 -(byte) renderBobInit::i#2 11.0 +(byte) renderBobInit::i#1 1501.5 +(byte) renderBobInit::i#2 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 16.5 -(byte) renderBobInit::y#2 4.714285714285714 +(byte) renderBobInit::y#1 1501.5 +(byte) renderBobInit::y#2 429.0 (void()) shiftProtoBobDown() (byte) shiftProtoBobDown::i -(byte) shiftProtoBobDown::i#1 202.0 -(byte) shiftProtoBobDown::i#2 161.6 +(byte) shiftProtoBobDown::i#1 2000002.0 +(byte) shiftProtoBobDown::i#2 1600001.5999999999 (void()) shiftProtoBobRight() -(byte~) shiftProtoBobRight::$1 2002.0 -(byte~) shiftProtoBobRight::$5 2002.0 -(byte~) shiftProtoBobRight::$6 2002.0 +(byte~) shiftProtoBobRight::$1 2.00000002E8 +(byte~) shiftProtoBobRight::$5 2.00000002E8 +(byte~) shiftProtoBobRight::$6 2.00000002E8 (byte) shiftProtoBobRight::carry -(byte) shiftProtoBobRight::carry#1 111.22222222222223 -(byte) shiftProtoBobRight::carry#10 2002.0 -(byte) shiftProtoBobRight::carry#2 286.0 +(byte) shiftProtoBobRight::carry#1 1.1111111222222222E7 +(byte) shiftProtoBobRight::carry#10 2.00000002E8 +(byte) shiftProtoBobRight::carry#2 2.857142885714286E7 (byte) shiftProtoBobRight::i -(byte) shiftProtoBobRight::i#1 1001.0 -(byte) shiftProtoBobRight::i#2 231.0 +(byte) shiftProtoBobRight::i#1 1.00000001E8 +(byte) shiftProtoBobRight::i#2 2.3076923307692308E7 (byte) shiftProtoBobRight::j -(byte) shiftProtoBobRight::j#1 2002.0 -(byte) shiftProtoBobRight::j#10 1001.0 -(byte) shiftProtoBobRight::j#2 2002.0 -(byte) shiftProtoBobRight::j#3 700.7 +(byte) shiftProtoBobRight::j#1 2.00000002E8 +(byte) shiftProtoBobRight::j#10 1.00000001E8 +(byte) shiftProtoBobRight::j#2 2.00000002E8 +(byte) shiftProtoBobRight::j#3 7.00000007E7 (byte) shiftProtoBobRight::new_carry Initial phi equivalence classes @@ -6816,401 +6816,383 @@ SIN: MUL40: .fill 2*$20, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::angle#8 main::angle#1 ] -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::r#2 main::r#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ] -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a +Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] { } ) always clobbers reg byte a +Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] { } ) always clobbers reg byte a +Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:70 [ renderBob::xpos#0 ] -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ renderBob::ypos#0 ] -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a +Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:80 [ renderBob::x_char_offset#0 ] -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] { } ) always clobbers reg byte a +Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] { } ) always clobbers reg byte a +Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] { } ) always clobbers reg byte a +Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] { } ) always clobbers reg byte a +Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] { } ) always clobbers reg byte a +Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] { } ) always clobbers reg byte a +Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:90 [ renderBob::$5 ] -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y +Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::angle#8 main::angle#1 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::r#2 main::r#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:92 [ renderBob::bob_table_idx#0 ] Removing always clobbered register reg byte y as potential for zp[1]:92 [ renderBob::bob_table_idx#0 ] -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a reg byte y +Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:94 [ mulf8s_prepared::b#0 ] -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) 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[1]:2 [ main::angle#8 main::angle#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::r#2 main::r#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:94 [ mulf8s_prepared::b#0 ] -Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a +Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y +Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a +Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a +Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a +Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] { } ) always clobbers reg byte a +Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] { } ) always clobbers reg byte a +Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] { } ) always clobbers reg byte a +Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] { } ) always clobbers reg byte a +Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] { } ) always clobbers reg byte a +Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a +Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] { } ) always clobbers reg byte a +Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ) always clobbers reg byte a +Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y +Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a +Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] { } ) always clobbers reg byte a +Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] { } ) always clobbers reg byte a reg byte y +Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ] -Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a +Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ] -Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ) always clobbers reg byte a +Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:38 [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:39 [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ] -Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ) always clobbers reg byte a +Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ shiftProtoBobRight::carry#1 ] -Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a +Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } ) always clobbers reg byte a +Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } ) always clobbers reg byte a +Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ] -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [267] (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:5 [ 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 [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a -Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ) always clobbers reg byte y +Statement [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a +Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ) always clobbers reg byte y -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ) always clobbers reg byte a -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a reg byte x -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte y +Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] { } ) always clobbers reg byte a +Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] { } ) always clobbers reg byte a +Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] { } ) always clobbers reg byte a +Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a reg byte x +Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] { } ) always clobbers reg byte a +Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] { } ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] { } ) always clobbers reg byte a +Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] { } ) always clobbers reg byte a +Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] { } ) always clobbers reg byte a +Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] { } ) always clobbers reg byte a +Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] { } ) always clobbers reg byte a +Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] { } ) always clobbers reg byte a +Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] { } ) always clobbers reg byte a +Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a reg byte y +Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a +Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) 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 [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ) always clobbers reg byte a -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ) always clobbers reg byte a -Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ) always clobbers reg byte a -Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [267] (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:5 [ 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 [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] ) always clobbers reg byte a -Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] ) always clobbers reg byte a -Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ) always clobbers reg byte a -Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ) always clobbers reg byte y -Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ) always clobbers reg byte a -Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ) always clobbers reg byte y -Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ) always clobbers reg byte a -Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ) always clobbers reg byte a -Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte x -Statement [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::y#0 renderBob::xpos#0 ] ) always clobbers reg byte a -Statement [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 renderBob::xpos#0 renderBob::ypos#0 ] ) always clobbers reg byte a -Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ) always clobbers reg byte a -Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a reg byte x -Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] ) always clobbers reg byte a -Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ) always clobbers reg byte a -Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ) always clobbers reg byte a -Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ) always clobbers reg byte a -Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ) always clobbers reg byte a -Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ) always clobbers reg byte a -Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ) always clobbers reg byte a -Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ) always clobbers reg byte a -Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ) always clobbers reg byte a -Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ) always clobbers reg byte a -Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a -Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ) always clobbers reg byte a reg byte y -Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] ) always clobbers reg byte a reg byte y -Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] { } ) always clobbers reg byte a +Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a +Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] { } ) always clobbers reg byte a +Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] { } ) always clobbers reg byte a +Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] { } ) always clobbers reg byte a +Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] { } ) always clobbers reg byte a +Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] { } ) always clobbers reg byte a +Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] { } ) always clobbers reg byte a +Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] { } ) always clobbers reg byte a +Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] { } ) always clobbers reg byte a +Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] { } ) always clobbers reg byte a +Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] { } ) always clobbers reg byte y +Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] { } ) always clobbers reg byte a +Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] { } ) always clobbers reg byte a reg byte y +Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } ) always clobbers reg byte a +Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } ) always clobbers reg byte a +Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } ) always clobbers reg byte a +Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } ) always clobbers reg byte a +Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2 [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (byte) $f [ main::angle#8 ] ( main:2 [ main::angle#8 ] { } ) always clobbers reg byte a +Statement [20] (byte) main::a#6 ← (byte) main::angle#8 [ main::angle#8 main::a#6 ] ( main:2 [ main::angle#8 main::a#6 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) BORDERCOL) ← (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::a#0 mulf8s::b#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte y +Statement [26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word~) main::$10 ← (signed word) mulf8s::return#2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::$10 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2) [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::a#1 mulf8s::b#1 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte y +Statement [32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#3 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [33] (signed word~) main::$12 ← (signed word) mulf8s::return#3 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$12 ] { } ) always clobbers reg byte a +Statement [34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::$13 ] { } ) always clobbers reg byte a +Statement [35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) BORDERCOL) ← (byte) 2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a +Statement [37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 main::r#2 renderBobCleanupNext#17 main::i#2 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] ( main:2 [ main::angle#8 renderBobCleanupNext#17 main::i#2 main::r#1 main::a#1 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] ( main:2 [ main::angle#8 main::r#1 main::a#1 renderBobCleanupNext#13 main::i#1 ] { } ) always clobbers reg byte a +Statement [44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a reg byte x +Statement [45] *((const byte*) BORDERCOL) ← (byte) 0 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } } ) always clobbers reg byte a +Statement [55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:46::keyboard_matrix_read:62 [ main::angle#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:51::keyboard_matrix_read:62 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 ] { } ) always clobbers reg byte a +Statement [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_char_offset#0 ] { } ) always clobbers reg byte a +Statement [72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$8 ] { } ) always clobbers reg byte a +Statement [73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8) [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::y_offset#0 ] { } ) always clobbers reg byte a +Statement [74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::x_char_offset#0 renderBob::$2 ] { } ) always clobbers reg byte a +Statement [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::ypos#0 renderBob::screen#0 ] { } ) always clobbers reg byte a +Statement [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$4 ] { } ) always clobbers reg byte a +Statement [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 [ renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::xpos#0 renderBob::screen#0 renderBob::$5 ] { } ) always clobbers reg byte a +Statement [78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::$5 renderBob::$6 ] { } ) always clobbers reg byte a +Statement [79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0 [ renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#17 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a +Statement [82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 renderBob::screen#0 renderBob::bob_table_idx#0 ] { } ) always clobbers reg byte a reg byte y +Statement [90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0) [ renderBobCleanupNext#13 ] ( main:2::renderBob:41 [ main::angle#8 main::i#2 main::r#1 main::a#1 renderBobCleanupNext#13 ] { } ) always clobbers reg byte a reg byte y +Statement [97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mulf8s:25 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a +Statement [102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mulf8s:25::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) 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 [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mulf8s:25::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 main::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::mulf8s:31::mulf8s_prepared:96::mulf8u_prepared:100 [ main::angle#8 main::r#2 main::a#2 renderBobCleanupNext#17 main::i#2 main::x#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 main::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] ) always clobbers reg byte a -Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a -Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] ) always clobbers reg byte a reg byte y -Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] ) always clobbers reg byte a -Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ) always clobbers reg byte a -Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] ) always clobbers reg byte a -Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] ) always clobbers reg byte a -Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ) always clobbers reg byte a -Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] ) always clobbers reg byte a -Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] ) always clobbers reg byte a -Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] ) always clobbers reg byte a -Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ) always clobbers reg byte a -Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ) always clobbers reg byte a -Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ) always clobbers reg byte y -Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ) always clobbers reg byte a -Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ) always clobbers reg byte a -Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] ) always clobbers reg byte a reg byte y -Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] ) always clobbers reg byte a reg byte y -Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ) always clobbers reg byte a -Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ) always clobbers reg byte a -Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ) always clobbers reg byte a -Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ) always clobbers reg byte a -Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ) always clobbers reg byte a -Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ) always clobbers reg byte a -Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ) always clobbers reg byte a -Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] ) always clobbers reg byte a -Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] ) always clobbers reg byte a -Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [265] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [267] (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:5 [ 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 [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 [123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1 [ renderBobCleanup::i#2 renderBobCleanup::$1 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::$1 ] { } ) always clobbers reg byte a +Statement [124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1) [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a +Statement [125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0 [ renderBobCleanup::i#2 renderBobCleanup::screen#0 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 renderBobCleanup::screen#0 ] { } ) always clobbers reg byte a reg byte y +Statement [133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0 [ renderBobCleanup::i#2 ] ( main:2::renderBobCleanup:19 [ main::angle#8 renderBobCleanup::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [141] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:15 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2 [ renderBobInit::y#2 renderBobInit::$0 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 ] { } ) always clobbers reg byte a +Statement [146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$0 renderBobInit::$6 ] { } ) always clobbers reg byte a +Statement [147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0 [ renderBobInit::y#2 renderBobInit::$7 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$7 ] { } ) always clobbers reg byte a +Statement [148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3 [ renderBobInit::y#2 renderBobInit::$1 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 ] { } ) always clobbers reg byte a +Statement [149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 renderBobInit::$1 renderBobInit::$4 ] { } ) always clobbers reg byte a +Statement [150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1 [ renderBobInit::y#2 ] ( main:2::renderBobInit:9 [ renderBobInit::y#2 ] { } ) always clobbers reg byte a +Statement [154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1 [ renderBobInit::i#2 renderBobInit::$5 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 renderBobInit::$5 ] { } ) always clobbers reg byte a +Statement [155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN [ renderBobInit::i#2 ] ( main:2::renderBobInit:9 [ renderBobInit::i#2 ] { } ) always clobbers reg byte a +Statement [171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::bob_table#0 ] { } ) always clobbers reg byte a +Statement [179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::bob_glyph#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 ] { } ) always clobbers reg byte y +Statement [184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_table#2 prepareBobs::bob_glyph#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] ( main:2::prepareBobs:7 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 ] { } ) always clobbers reg byte a +Statement [190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#24 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_cursor#24 ] { } ) always clobbers reg byte a reg byte y +Statement [193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10) [ progress_idx#10 progress_cursor#17 ] ( main:2::prepareBobs:7::progress_inc:186 [ prepareBobs::shift_y#2 bob_charset_next_id#16 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 prepareBobs::cell#2 prepareBobs::bob_glyph#1 prepareBobs::bob_table#1 progress_idx#10 progress_cursor#17 ] { } ) always clobbers reg byte a reg byte y +Statement [203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2) [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i1#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bobCharsetFindOrAddGlyph::glyph_id#11 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::i#2 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] ( main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:162 [ bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { } main:2::prepareBobs:7::bobCharsetFindOrAddGlyph:180 [ prepareBobs::shift_y#2 prepareBobs::bob_table_idx#12 prepareBobs::shift_x#2 progress_cursor#24 progress_idx#25 prepareBobs::cell#2 prepareBobs::bob_glyph#2 prepareBobs::bob_table#2 bob_charset_next_id#23 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::glyph_id#1 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] { { bob_charset_next_id#21 = bob_charset_next_id#23 } { bobCharsetFindOrAddGlyph::bob_glyph#1 = bobCharsetFindOrAddGlyph::bob_glyph#10 prepareBobs::bob_glyph#2 } { bobCharsetFindOrAddGlyph::return#1 = bobCharsetFindOrAddGlyph::glyph_id#11 } } ) always clobbers reg byte a +Statement [217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::$1 ] { } ) always clobbers reg byte a +Statement [221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1 [ shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::j#3 shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::$5 ] { } ) always clobbers reg byte a +Statement [225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18 [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#2 ] { } ) always clobbers reg byte a +Statement [229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f [ shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] ( main:2::prepareBobs:7::shiftProtoBobRight:175 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } main:2::prepareBobs:7::shiftProtoBobRight:177 [ prepareBobs::shift_y#2 prepareBobs::shift_x#2 prepareBobs::bob_table_idx#1 bob_charset_next_id#21 progress_cursor#24 progress_idx#25 shiftProtoBobRight::i#2 shiftProtoBobRight::carry#1 shiftProtoBobRight::j#1 ] { } ) always clobbers reg byte a +Statement [233] *((const byte*) PROTO_BOB) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0 [ ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 ] { } ) always clobbers reg byte a +Statement [237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2) [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0 [ shiftProtoBobDown::i#2 ] ( main:2::prepareBobs:7::shiftProtoBobDown:169 [ prepareBobs::shift_y#2 progress_cursor#31 progress_idx#31 bob_charset_next_id#30 prepareBobs::bob_table_idx#12 shiftProtoBobDown::i#2 ] { } ) always clobbers reg byte a +Statement [245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [254] (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:5 [ 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 [260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [268] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [270] (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:5 [ 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 Potential registers zp[1]:2 [ main::angle#8 main::angle#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::r#2 main::r#1 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] : zp[1]:4 , @@ -7307,102 +7289,100 @@ Potential registers zp[1]:125 [ mulf_init::$4 ] : zp[1]:125 , reg byte a , reg b Potential registers zp[1]:126 [ mulf_init::$5 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bobCharsetFindOrAddGlyph] 366,670.33: zp[1]:35 [ bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ] 36,670.33: zp[1]:34 [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ] 30,002.31: zp[2]:32 [ bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] 11,938.75: zp[1]:31 [ bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ] 10,001: zp[1]:36 [ bobCharsetFindOrAddGlyph::found#2 ] 9,402.2: zp[2]:29 [ bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 ] 2,002: zp[1]:119 [ bobCharsetFindOrAddGlyph::return#1 ] -Uplift Scope [shiftProtoBobRight] 5,705.7: zp[1]:38 [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ] 2,288: zp[1]:39 [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ] 2,002: zp[1]:121 [ shiftProtoBobRight::$1 ] 2,002: zp[1]:122 [ shiftProtoBobRight::$5 ] 2,002: zp[1]:123 [ shiftProtoBobRight::$6 ] 1,232: zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] 111.22: zp[1]:40 [ shiftProtoBobRight::carry#1 ] -Uplift Scope [prepareBobs] 2,302.3: zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 2,002: zp[1]:120 [ prepareBobs::$6 ] 1,257.33: zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 929.5: zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 218.83: zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 70.52: zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 23.43: zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplift Scope [] 2,729.71: zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 338.4: zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 324.85: zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 10.74: zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Uplift Scope [mulf8s] 472: zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] 404: zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] 202: zp[2]:56 [ mulf8s::return#2 ] 202: zp[2]:62 [ mulf8s::return#3 ] 51: zp[2]:95 [ mulf8s::return#0 ] -Uplift Scope [main] 202: zp[2]:58 [ main::$10 ] 202: zp[2]:64 [ main::$12 ] 202: zp[2]:66 [ main::$13 ] 161.12: zp[1]:7 [ main::i#2 main::i#1 ] 76.79: zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] 57.43: zp[1]:3 [ main::r#2 main::r#1 ] 40.4: zp[2]:68 [ main::y#0 ] 22: zp[1]:73 [ main::$19 ] 22: zp[1]:75 [ main::$21 ] 18.36: zp[2]:60 [ main::x#0 ] 4.85: zp[1]:2 [ main::angle#8 main::angle#1 ] -Uplift Scope [renderBobCleanup] 202: zp[1]:106 [ renderBobCleanup::$1 ] 176.75: zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 112.22: zp[2]:107 [ renderBobCleanup::screen#0 ] -Uplift Scope [shiftProtoBobDown] 363.6: zp[1]:41 [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ] -Uplift Scope [mulf_init] 47.67: zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:124 [ mulf_init::$1 ] 22: zp[1]:125 [ mulf_init::$4 ] 22: zp[1]:126 [ mulf_init::$5 ] 15.4: zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [renderBobInit] 27.5: zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] 22: zp[2]:111 [ renderBobInit::$6 ] 22: zp[2]:113 [ renderBobInit::$7 ] 22: zp[1]:117 [ renderBobInit::$4 ] 22: zp[1]:118 [ renderBobInit::$5 ] 21.21: zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] 16.5: zp[2]:109 [ renderBobInit::$0 ] 11: zp[2]:115 [ renderBobInit::$1 ] -Uplift Scope [renderBob] 15: zp[1]:71 [ renderBob::ypos#0 ] 10.5: zp[1]:70 [ renderBob::xpos#0 ] 4: zp[1]:81 [ renderBob::y_char_offset#0 ] 4: zp[1]:82 [ renderBob::$8 ] 4: zp[2]:83 [ renderBob::y_offset#0 ] 4: zp[2]:85 [ renderBob::$2 ] 4: zp[1]:89 [ renderBob::$4 ] 4: zp[1]:91 [ renderBob::$6 ] 2: zp[1]:90 [ renderBob::$5 ] 1.82: zp[1]:92 [ renderBob::bob_table_idx#0 ] 1.47: zp[2]:87 [ renderBob::screen#0 ] 0.8: zp[1]:80 [ renderBob::x_char_offset#0 ] -Uplift Scope [keyboard_key_pressed] 22: zp[1]:72 [ keyboard_key_pressed::return#2 ] 22: zp[1]:74 [ keyboard_key_pressed::return#3 ] 6: zp[1]:78 [ keyboard_key_pressed::return#0 ] 4: zp[1]:77 [ keyboard_key_pressed::$2 ] -Uplift Scope [memset] 36.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [mulf8s_prepared] 13.83: zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:100 [ mulf8s_prepared::$8 ] 4: zp[1]:101 [ mulf8s_prepared::$15 ] 4: zp[1]:102 [ mulf8s_prepared::$12 ] 4: zp[1]:103 [ mulf8s_prepared::$16 ] 0.4: zp[1]:94 [ mulf8s_prepared::b#0 ] -Uplift Scope [mulf8u_prepared] 4: zp[1]:97 [ mulf8u_prepared::b#0 ] 4: zp[2]:98 [ mulf8u_prepared::return#2 ] 1.33: zp[2]:104 [ mulf8u_prepared::return#0 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:76 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:79 [ keyboard_matrix_read::return#0 ] -Uplift Scope [mulf8u_prepare] 4: zp[1]:93 [ mulf8u_prepare::a#0 ] +Uplift Scope [bobCharsetFindOrAddGlyph] 366,666,666,670.33: zp[1]:35 [ bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ] 36,666,666,670.33: zp[1]:34 [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ] 30,000,000,002.31: zp[2]:32 [ bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] 11,875,006,251.25: zp[1]:31 [ bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ] 10,000,000,001: zp[1]:36 [ bobCharsetFindOrAddGlyph::found#2 ] 7,333,540,002.2: zp[2]:29 [ bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 ] 200,002: zp[1]:119 [ bobCharsetFindOrAddGlyph::return#1 ] +Uplift Scope [] 2,244,629,806.81: zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] 2,808,200.9: zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] 2,004,670.72: zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] 1,463.37: zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] +Uplift Scope [shiftProtoBobRight] 570,000,005.7: zp[1]:38 [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ] 228,571,430.86: zp[1]:39 [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ] 200,000,002: zp[1]:121 [ shiftProtoBobRight::$1 ] 200,000,002: zp[1]:122 [ shiftProtoBobRight::$5 ] 200,000,002: zp[1]:123 [ shiftProtoBobRight::$6 ] 123,076,924.31: zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] 11,111,111.22: zp[1]:40 [ shiftProtoBobRight::carry#1 ] +Uplift Scope [shiftProtoBobDown] 3,600,003.6: zp[1]:41 [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ] +Uplift Scope [mulf8u_prepared] 1,100,002: zp[1]:97 [ mulf8u_prepared::b#0 ] 366,667.33: zp[2]:104 [ mulf8u_prepared::return#0 ] 200,002: zp[2]:98 [ mulf8u_prepared::return#2 ] +Uplift Scope [mulf8s_prepared] 691,673.58: zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 200,002: zp[1]:100 [ mulf8s_prepared::$8 ] 200,002: zp[1]:101 [ mulf8s_prepared::$15 ] 200,002: zp[1]:102 [ mulf8s_prepared::$12 ] 200,002: zp[1]:103 [ mulf8s_prepared::$16 ] 11,000.2: zp[1]:94 [ mulf8s_prepared::b#0 ] +Uplift Scope [prepareBobs] 230,002.3: zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] 200,002: zp[1]:120 [ prepareBobs::$6 ] 125,419.83: zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] 92,858.07: zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] 21,668.83: zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] 6,884.05: zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] 2,132.57: zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplift Scope [renderBobCleanup] 200,002: zp[1]:106 [ renderBobCleanup::$1 ] 175,001.75: zp[1]:12 [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] 111,112.22: zp[2]:107 [ renderBobCleanup::screen#0 ] +Uplift Scope [renderBob] 20,002: zp[1]:81 [ renderBob::y_char_offset#0 ] 20,002: zp[1]:82 [ renderBob::$8 ] 20,002: zp[2]:83 [ renderBob::y_offset#0 ] 20,002: zp[2]:85 [ renderBob::$2 ] 20,002: zp[1]:89 [ renderBob::$4 ] 20,002: zp[1]:91 [ renderBob::$6 ] 10,001: zp[1]:90 [ renderBob::$5 ] 9,091.82: zp[1]:92 [ renderBob::bob_table_idx#0 ] 7,334.07: zp[2]:87 [ renderBob::screen#0 ] 4,000.4: zp[1]:80 [ renderBob::x_char_offset#0 ] 3,000.43: zp[1]:71 [ renderBob::ypos#0 ] 2,100.3: zp[1]:70 [ renderBob::xpos#0 ] +Uplift Scope [mulf8u_prepare] 110,002: zp[1]:93 [ mulf8u_prepare::a#0 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:47 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:124 [ mulf_init::$1 ] 2,002: zp[1]:125 [ mulf_init::$4 ] 2,002: zp[1]:126 [ mulf_init::$5 ] 1,401.4: zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf8s] 8,005: zp[1]:9 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] 4,004: zp[1]:8 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] 3,000.75: zp[2]:95 [ mulf8s::return#0 ] 2,002: zp[2]:56 [ mulf8s::return#2 ] 2,002: zp[2]:62 [ mulf8s::return#3 ] +Uplift Scope [renderBobInit] 2,502.5: zp[1]:16 [ renderBobInit::i#2 renderBobInit::i#1 ] 2,002: zp[2]:111 [ renderBobInit::$6 ] 2,002: zp[2]:113 [ renderBobInit::$7 ] 2,002: zp[1]:117 [ renderBobInit::$4 ] 2,002: zp[1]:118 [ renderBobInit::$5 ] 1,930.5: zp[1]:15 [ renderBobInit::y#2 renderBobInit::y#1 ] 1,501.5: zp[2]:109 [ renderBobInit::$0 ] 1,001: zp[2]:115 [ renderBobInit::$1 ] +Uplift Scope [main] 2,002: zp[2]:58 [ main::$10 ] 2,002: zp[2]:64 [ main::$12 ] 2,002: zp[2]:66 [ main::$13 ] 1,596.83: zp[1]:7 [ main::i#2 main::i#1 ] 744.56: zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] 569.2: zp[1]:3 [ main::r#2 main::r#1 ] 400.4: zp[2]:68 [ main::y#0 ] 202: zp[1]:73 [ main::$19 ] 202: zp[1]:75 [ main::$21 ] 182: zp[2]:60 [ main::x#0 ] 44.49: zp[1]:2 [ main::angle#8 main::angle#1 ] +Uplift Scope [keyboard_matrix_read] 3,667.33: zp[1]:79 [ keyboard_matrix_read::return#0 ] 2,002: zp[1]:76 [ keyboard_matrix_read::return#2 ] +Uplift Scope [memset] 3,336.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [keyboard_key_pressed] 2,002: zp[1]:77 [ keyboard_key_pressed::$2 ] 300.75: zp[1]:78 [ keyboard_key_pressed::return#0 ] 202: zp[1]:72 [ keyboard_key_pressed::return#2 ] 202: zp[1]:74 [ keyboard_key_pressed::return#3 ] Uplift Scope [RADIX] Uplift Scope [progress_init] Uplift Scope [progress_inc] Uplifting [bobCharsetFindOrAddGlyph] best 4014542 combination reg byte y [ bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ] reg byte y [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ] zp[2]:32 [ bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::glyph_cursor#1 ] reg byte x [ bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ] reg byte a [ bobCharsetFindOrAddGlyph::found#2 ] zp[2]:29 [ bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 ] zp[1]:119 [ bobCharsetFindOrAddGlyph::return#1 ] Limited combination testing to 100 combinations of 432 possible. +Uplifting [] best 4014542 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] Uplifting [shiftProtoBobRight] best 3976542 combination reg byte x [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ] reg byte y [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ] reg byte a [ shiftProtoBobRight::$1 ] reg byte a [ shiftProtoBobRight::$5 ] zp[1]:123 [ shiftProtoBobRight::$6 ] zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] zp[1]:40 [ shiftProtoBobRight::carry#1 ] Limited combination testing to 100 combinations of 5184 possible. -Uplifting [prepareBobs] best 3970542 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [] best 3970542 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] zp[2]:18 [ progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 ] zp[2]:5 [ renderBobCleanupNext#17 renderBobCleanupNext#13 ] -Uplifting [mulf8s] best 3969336 combination reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] zp[2]:56 [ mulf8s::return#2 ] zp[2]:62 [ mulf8s::return#3 ] zp[2]:95 [ mulf8s::return#0 ] -Uplifting [main] best 3969216 combination zp[2]:58 [ main::$10 ] zp[2]:64 [ main::$12 ] zp[2]:66 [ main::$13 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] zp[1]:3 [ main::r#2 main::r#1 ] zp[2]:68 [ main::y#0 ] reg byte a [ main::$19 ] reg byte a [ main::$21 ] zp[2]:60 [ main::x#0 ] zp[1]:2 [ main::angle#8 main::angle#1 ] -Uplifting [renderBobCleanup] best 3967816 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:107 [ renderBobCleanup::screen#0 ] -Uplifting [shiftProtoBobDown] best 3966216 combination reg byte x [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ] -Uplifting [mulf_init] best 3965966 combination zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Limited combination testing to 100 combinations of 1024 possible. -Uplifting [renderBobInit] best 3965676 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:111 [ renderBobInit::$6 ] zp[2]:113 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:109 [ renderBobInit::$0 ] zp[2]:115 [ renderBobInit::$1 ] -Limited combination testing to 100 combinations of 144 possible. -Uplifting [renderBob] best 3965562 combination reg byte x [ renderBob::ypos#0 ] zp[1]:70 [ renderBob::xpos#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:83 [ renderBob::y_offset#0 ] zp[2]:85 [ renderBob::$2 ] zp[1]:89 [ renderBob::$4 ] zp[1]:91 [ renderBob::$6 ] zp[1]:90 [ renderBob::$5 ] zp[1]:92 [ renderBob::bob_table_idx#0 ] zp[2]:87 [ renderBob::screen#0 ] zp[1]:80 [ renderBob::x_char_offset#0 ] -Limited combination testing to 100 combinations of 41472 possible. -Uplifting [keyboard_key_pressed] best 3965373 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] -Limited combination testing to 100 combinations of 256 possible. -Uplifting [memset] best 3965373 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplifting [mulf8s_prepared] best 3965349 combination zp[2]:10 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:94 [ mulf8s_prepared::b#0 ] +Uplifting [shiftProtoBobDown] best 3974942 combination reg byte x [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ] +Uplifting [mulf8u_prepared] best 3974936 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:104 [ mulf8u_prepared::return#0 ] zp[2]:98 [ mulf8u_prepared::return#2 ] +Uplifting [mulf8s_prepared] best 3974912 combination zp[2]:10 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:94 [ mulf8s_prepared::b#0 ] Limited combination testing to 100 combinations of 512 possible. -Uplifting [mulf8u_prepared] best 3965343 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:98 [ mulf8u_prepared::return#2 ] zp[2]:104 [ mulf8u_prepared::return#0 ] -Uplifting [keyboard_matrix_read] best 3965331 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [mulf8u_prepare] best 3965325 combination reg byte a [ mulf8u_prepare::a#0 ] -Uplifting [RADIX] best 3965325 combination -Uplifting [progress_init] best 3965325 combination -Uplifting [progress_inc] best 3965325 combination +Uplifting [prepareBobs] best 3968912 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ prepareBobs::$6 ] zp[2]:26 [ prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ] zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [renderBobCleanup] best 3967512 combination reg byte a [ renderBobCleanup::$1 ] reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ] zp[2]:107 [ renderBobCleanup::screen#0 ] +Uplifting [renderBob] best 3967490 combination reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:83 [ renderBob::y_offset#0 ] zp[2]:85 [ renderBob::$2 ] reg byte a [ renderBob::$4 ] reg byte a [ renderBob::$6 ] zp[1]:90 [ renderBob::$5 ] zp[1]:92 [ renderBob::bob_table_idx#0 ] zp[2]:87 [ renderBob::screen#0 ] zp[1]:80 [ renderBob::x_char_offset#0 ] zp[1]:71 [ renderBob::ypos#0 ] zp[1]:70 [ renderBob::xpos#0 ] +Limited combination testing to 100 combinations of 41472 possible. +Uplifting [mulf8u_prepare] best 3967484 combination reg byte a [ mulf8u_prepare::a#0 ] +Uplifting [mulf_init] best 3967234 combination zp[2]:54 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:42 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [mulf8s] best 3966028 combination reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] zp[2]:95 [ mulf8s::return#0 ] zp[2]:56 [ mulf8s::return#2 ] zp[2]:62 [ mulf8s::return#3 ] +Uplifting [renderBobInit] best 3965738 combination reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ] zp[2]:111 [ renderBobInit::$6 ] zp[2]:113 [ renderBobInit::$7 ] reg byte a [ renderBobInit::$4 ] reg byte a [ renderBobInit::$5 ] reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ] zp[2]:109 [ renderBobInit::$0 ] zp[2]:115 [ renderBobInit::$1 ] +Limited combination testing to 100 combinations of 144 possible. +Uplifting [main] best 3965618 combination zp[2]:58 [ main::$10 ] zp[2]:64 [ main::$12 ] zp[2]:66 [ main::$13 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] zp[1]:3 [ main::r#2 main::r#1 ] zp[2]:68 [ main::y#0 ] reg byte a [ main::$19 ] reg byte a [ main::$21 ] zp[2]:60 [ main::x#0 ] zp[1]:2 [ main::angle#8 main::angle#1 ] +Uplifting [keyboard_matrix_read] best 3965606 combination reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [memset] best 3965606 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplifting [keyboard_key_pressed] best 3965417 combination reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [RADIX] best 3965417 combination +Uplifting [progress_init] best 3965417 combination +Uplifting [progress_inc] best 3965417 combination Attempting to uplift remaining variables inzp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Uplifting [] best 3965325 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] -Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Uplifting [prepareBobs] best 3965325 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] -Attempting to uplift remaining variables inzp[1]:119 [ bobCharsetFindOrAddGlyph::return#1 ] -Uplifting [bobCharsetFindOrAddGlyph] best 3961325 combination reg byte a [ bobCharsetFindOrAddGlyph::return#1 ] +Uplifting [] best 3965417 combination zp[1]:28 [ bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ] Attempting to uplift remaining variables inzp[1]:123 [ shiftProtoBobRight::$6 ] -Uplifting [shiftProtoBobRight] best 3955325 combination reg byte a [ shiftProtoBobRight::$6 ] +Uplifting [shiftProtoBobRight] best 3959417 combination reg byte a [ shiftProtoBobRight::$6 ] Attempting to uplift remaining variables inzp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] -Uplifting [shiftProtoBobRight] best 3955325 combination zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] -Attempting to uplift remaining variables inzp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Uplifting [] best 3955325 combination zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] -Attempting to uplift remaining variables inzp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ] -Uplifting [main] best 3955325 combination zp[1]:7 [ main::i#2 main::i#1 ] +Uplifting [shiftProtoBobRight] best 3959417 combination zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] Attempting to uplift remaining variables inzp[1]:40 [ shiftProtoBobRight::carry#1 ] -Uplifting [shiftProtoBobRight] best 3955325 combination zp[1]:40 [ shiftProtoBobRight::carry#1 ] -Attempting to uplift remaining variables inzp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Uplifting [main] best 3955325 combination zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] -Attempting to uplift remaining variables inzp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::r#2 main::r#1 ] -Uplifting [main] best 3955325 combination zp[1]:3 [ main::r#2 main::r#1 ] -Attempting to uplift remaining variables inzp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Uplifting [prepareBobs] best 3955325 combination zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] -Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 3955185 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 3955185 combination zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 3955185 combination zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:70 [ renderBob::xpos#0 ] -Uplifting [renderBob] best 3955185 combination zp[1]:70 [ renderBob::xpos#0 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::angle#8 main::angle#1 ] -Uplifting [main] best 3955185 combination zp[1]:2 [ main::angle#8 main::angle#1 ] -Attempting to uplift remaining variables inzp[1]:89 [ renderBob::$4 ] -Uplifting [renderBob] best 3955181 combination reg byte a [ renderBob::$4 ] -Attempting to uplift remaining variables inzp[1]:91 [ renderBob::$6 ] -Uplifting [renderBob] best 3955175 combination reg byte a [ renderBob::$6 ] -Attempting to uplift remaining variables inzp[1]:90 [ renderBob::$5 ] -Uplifting [renderBob] best 3955175 combination zp[1]:90 [ renderBob::$5 ] -Attempting to uplift remaining variables inzp[1]:92 [ renderBob::bob_table_idx#0 ] -Uplifting [renderBob] best 3955147 combination reg byte x [ renderBob::bob_table_idx#0 ] -Attempting to uplift remaining variables inzp[1]:80 [ renderBob::x_char_offset#0 ] -Uplifting [renderBob] best 3955147 combination zp[1]:80 [ renderBob::x_char_offset#0 ] +Uplifting [shiftProtoBobRight] best 3959417 combination zp[1]:40 [ shiftProtoBobRight::carry#1 ] +Attempting to uplift remaining variables inzp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Uplifting [] best 3959417 combination zp[1]:20 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 ] +Attempting to uplift remaining variables inzp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Uplifting [prepareBobs] best 3959417 combination zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] +Attempting to uplift remaining variables inzp[1]:119 [ bobCharsetFindOrAddGlyph::return#1 ] +Uplifting [bobCharsetFindOrAddGlyph] best 3955417 combination reg byte a [ bobCharsetFindOrAddGlyph::return#1 ] +Attempting to uplift remaining variables inzp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] +Uplifting [prepareBobs] best 3955417 combination zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] Attempting to uplift remaining variables inzp[1]:94 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 3955147 combination zp[1]:94 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 3955417 combination zp[1]:94 [ mulf8s_prepared::b#0 ] +Attempting to uplift remaining variables inzp[1]:90 [ renderBob::$5 ] +Uplifting [renderBob] best 3955417 combination zp[1]:90 [ renderBob::$5 ] +Attempting to uplift remaining variables inzp[1]:92 [ renderBob::bob_table_idx#0 ] +Uplifting [renderBob] best 3955389 combination reg byte x [ renderBob::bob_table_idx#0 ] +Attempting to uplift remaining variables inzp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Uplifting [prepareBobs] best 3955389 combination zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] +Attempting to uplift remaining variables inzp[1]:80 [ renderBob::x_char_offset#0 ] +Uplifting [renderBob] best 3955387 combination reg byte x [ renderBob::x_char_offset#0 ] +Attempting to uplift remaining variables inzp[1]:71 [ renderBob::ypos#0 ] +Uplifting [renderBob] best 3955387 combination zp[1]:71 [ renderBob::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Uplifting [prepareBobs] best 3955387 combination zp[1]:17 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 ] +Attempting to uplift remaining variables inzp[1]:70 [ renderBob::xpos#0 ] +Uplifting [renderBob] best 3955387 combination zp[1]:70 [ renderBob::xpos#0 ] +Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ] +Uplifting [main] best 3955387 combination zp[1]:7 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:50 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 3955247 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 3955247 combination zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 3955247 combination zp[1]:44 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::a#2 main::a#6 main::a#1 ] +Uplifting [main] best 3955247 combination zp[1]:4 [ main::a#2 main::a#6 main::a#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::r#2 main::r#1 ] +Uplifting [main] best 3955247 combination zp[1]:3 [ main::r#2 main::r#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::angle#8 main::angle#1 ] +Uplifting [main] best 3955247 combination zp[1]:2 [ main::angle#8 main::angle#1 ] Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp[2]:95 [ mulf8s::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:10 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 ] ] with [ zp[2]:98 [ mulf8u_prepared::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:24 [ prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 ] ] with [ zp[2]:29 [ bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 ] ] - score: 1 @@ -7427,7 +7407,7 @@ Coalescing zero page register [ zp[2]:45 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_ Coalescing zero page register [ zp[1]:53 [ mulf_init::dir#2 mulf_init::dir#4 ] ] with [ zp[1]:21 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] ] Coalescing zero page register [ zp[2]:60 [ main::x#0 ] ] with [ zp[2]:48 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] Coalescing zero page register [ zp[1]:70 [ renderBob::xpos#0 ] ] with [ zp[1]:22 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] ] -Coalescing zero page register [ zp[1]:80 [ renderBob::x_char_offset#0 ] ] with [ zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] ] +Coalescing zero page register [ zp[1]:71 [ renderBob::ypos#0 ] ] with [ zp[1]:23 [ prepareBobs::cell#2 prepareBobs::cell#1 ] ] Coalescing zero page register [ zp[2]:83 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 ] ] with [ zp[2]:51 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] Coalescing zero page register [ zp[1]:90 [ renderBob::$5 ] ] with [ zp[1]:37 [ shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] ] Coalescing zero page register [ zp[1]:94 [ mulf8s_prepared::b#0 ] ] with [ zp[1]:40 [ shiftProtoBobRight::carry#1 ] ] @@ -7445,7 +7425,7 @@ Allocated (was zp[1]:44) zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 prepareBobs::s Allocated (was zp[1]:53) zp[1]:11 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] Allocated (was zp[2]:60) zp[2]:12 [ main::x#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 memset::dst#2 memset::dst#1 ] Allocated (was zp[1]:70) zp[1]:14 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -Allocated (was zp[1]:80) zp[1]:15 [ renderBob::x_char_offset#0 prepareBobs::cell#2 prepareBobs::cell#1 ] +Allocated (was zp[1]:71) zp[1]:15 [ renderBob::ypos#0 prepareBobs::cell#2 prepareBobs::cell#1 ] Allocated (was zp[2]:83) zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] Allocated (was zp[1]:90) zp[1]:18 [ renderBob::$5 shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 ] Allocated (was zp[1]:94) zp[1]:19 [ mulf8s_prepared::b#0 shiftProtoBobRight::carry#1 ] @@ -7722,9 +7702,9 @@ main: { // [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 -- vbuz1=_hi_vwsz2 lda.z x+1 sta.z renderBob.xpos - // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuxx=_hi_vwsz1 + // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuz1=_hi_vwsz2 lda.z y+1 - tax + sta.z renderBob.ypos // [41] call renderBob jsr renderBob jmp __b14 @@ -7861,21 +7841,21 @@ keyboard_matrix_read: { // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zp($e) xpos, byte register(X) ypos) +// renderBob(byte zp($e) xpos, byte zp($f) ypos) renderBob: { .label __2 = $10 .label __5 = $12 .label xpos = $e - .label x_char_offset = $f + .label ypos = $f .label y_offset = $10 .label screen = $10 - // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 + // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuxx=vbuz1_ror_2 lda.z xpos lsr lsr - sta.z x_char_offset - // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 - txa + tax + // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + lda.z ypos lsr lsr lsr @@ -7895,17 +7875,17 @@ renderBob: { lda.z __2+1 adc #>BOB_SCREEN sta.z __2+1 - // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 - lda.z x_char_offset + // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuxx + txa clc adc.z screen sta.z screen bcc !+ inc.z screen+1 !: - // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 + // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + lda #7 + and.z ypos // [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 asl asl @@ -9457,59 +9437,59 @@ FINAL SYMBOL TABLE (label) bobCharsetFindOrAddGlyph::@9 (label) bobCharsetFindOrAddGlyph::@return (byte*) bobCharsetFindOrAddGlyph::bob_glyph -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 bob_glyph zp[2]:12 2002.0 -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 bob_glyph zp[2]:12 7400.200000000001 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 bob_glyph zp[2]:12 200002.0 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 bob_glyph zp[2]:12 7.333340000200001E9 (byte) bobCharsetFindOrAddGlyph::found -(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 10001.0 +(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 1.0000000001E10 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:24 20002.0 -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:24 10000.307692307691 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:24 2.0000000002E10 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:24 1.0000000000307692E10 (byte) bobCharsetFindOrAddGlyph::glyph_id -(byte) bobCharsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 -(byte) bobCharsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 +(byte) bobCharsetFindOrAddGlyph::glyph_id#1 reg byte x 1.0000000001E10 +(byte) bobCharsetFindOrAddGlyph::glyph_id#11 reg byte x 1.87500625025E9 (byte) bobCharsetFindOrAddGlyph::i -(byte) bobCharsetFindOrAddGlyph::i#1 reg byte y 200002.0 -(byte) bobCharsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333 +(byte) bobCharsetFindOrAddGlyph::i#1 reg byte y 2.00000000002E11 +(byte) bobCharsetFindOrAddGlyph::i#2 reg byte y 1.6666666666833334E11 (byte) bobCharsetFindOrAddGlyph::i1 -(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 20002.0 -(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332 +(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 2.0000000002E10 +(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 1.6666666668333332E10 (byte) bobCharsetFindOrAddGlyph::return -(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 2002.0 +(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 200002.0 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:9 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:9 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:9 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:9 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:9 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:9 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:9 1051.5 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:9 9.091909185454544E8 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:9 27500.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:9 1.3334066669333334E9 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:9 3667.333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:9 2000002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(signed word~) main::$10 zp[2]:6 202.0 -(signed word~) main::$12 zp[2]:6 202.0 -(signed word~) main::$13 zp[2]:6 202.0 -(byte~) main::$19 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 +(signed word~) main::$10 zp[2]:6 2002.0 +(signed word~) main::$12 zp[2]:6 2002.0 +(signed word~) main::$13 zp[2]:6 2002.0 +(byte~) main::$19 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -9528,18 +9508,18 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 28.857142857142858 -(byte) main::a#2 a zp[1]:2 25.9375 -(byte) main::a#6 a zp[1]:2 22.0 +(byte) main::a#1 a zp[1]:2 286.0 +(byte) main::a#2 a zp[1]:2 256.5625 +(byte) main::a#6 a zp[1]:2 202.0 (byte) main::angle -(byte) main::angle#1 angle zp[1]:8 3.6666666666666665 -(byte) main::angle#8 angle zp[1]:8 1.1785714285714286 +(byte) main::angle#1 angle zp[1]:8 33.666666666666664 +(byte) main::angle#8 angle zp[1]:8 10.821428571428571 (byte) main::i -(byte) main::i#1 i zp[1]:5 151.5 -(byte) main::i#2 i zp[1]:5 9.619047619047619 +(byte) main::i#1 i zp[1]:5 1501.5 +(byte) main::i#2 i zp[1]:5 95.33333333333333 (signed byte) main::r -(signed byte) main::r#1 r zp[1]:9 33.666666666666664 -(signed byte) main::r#2 r zp[1]:9 23.764705882352942 +(signed byte) main::r#1 r zp[1]:9 333.6666666666667 +(signed byte) main::r#2 r zp[1]:9 235.52941176470588 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -9565,9 +9545,9 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:12 18.363636363636363 +(signed word) main::x#0 x zp[2]:12 182.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:6 40.4 +(signed word) main::y#0 y zp[2]:6 400.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -9575,8 +9555,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 2002.0 +(byte*) memset::dst#2 dst zp[2]:12 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -9589,24 +9569,24 @@ FINAL SYMBOL TABLE (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 +(signed byte) mulf8s::a#0 reg byte a 1001.0 +(signed byte) mulf8s::a#1 reg byte a 1001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 +(signed byte) mulf8s::b#0 reg byte x 2002.0 +(signed byte) mulf8s::b#1 reg byte x 2002.0 +(signed byte) mulf8s::b#2 reg byte x 4001.0 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 2002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:6 51.0 -(signed word) mulf8s::return#2 return zp[2]:6 202.0 -(signed word) mulf8s::return#3 return zp[2]:6 202.0 +(signed word) mulf8s::return#0 return zp[2]:6 3000.75 +(signed word) mulf8s::return#2 return zp[2]:6 2002.0 +(signed word) mulf8s::return#3 return zp[2]:6 2002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 200002.0 +(byte~) mulf8s_prepared::$15 reg byte a 200002.0 +(byte~) mulf8s_prepared::$16 reg byte a 200002.0 +(byte~) mulf8s_prepared::$8 reg byte a 200002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -9614,33 +9594,33 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:19 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:19 11000.2 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:6 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:6 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:6 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:6 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:6 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:6 100001.0 +(word) mulf8s_prepared::m#1 m zp[2]:6 200002.0 +(word) mulf8s_prepared::m#2 m zp[2]:6 200002.0 +(word) mulf8s_prepared::m#4 m zp[2]:6 66667.33333333333 +(word) mulf8s_prepared::m#5 m zp[2]:6 125001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 +(byte) mulf8u_prepare::a#0 reg byte a 110002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1100002.0 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:6 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:6 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:6 366667.3333333334 +(word) mulf8u_prepared::return#2 return zp[2]:6 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -9652,41 +9632,41 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:10 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:10 11.0 +(byte) mulf_init::c#1 c zp[1]:10 231.0 +(byte) mulf_init::c#2 c zp[1]:10 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:11 4.125 -(byte) mulf_init::dir#4 dir zp[1]:11 11.0 +(byte) mulf_init::dir#2 dir zp[1]:11 375.375 +(byte) mulf_init::dir#4 dir zp[1]:11 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:20 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:20 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:20 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:20 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:20 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:20 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:20 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:20 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:24 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:24 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:24 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:24 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:22 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:22 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:22 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:22 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:16 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:16 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:16 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:16 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) prepareBobs() -(byte~) prepareBobs::$6 reg byte a 2002.0 +(byte~) prepareBobs::$6 reg byte a 200002.0 (label) prepareBobs::@1 (label) prepareBobs::@10 (label) prepareBobs::@11 @@ -9702,37 +9682,37 @@ FINAL SYMBOL TABLE (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:12 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:12 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:12 50000.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:12 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:22 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:22 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:22 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:22 20002.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:22 66667.33333333333 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:22 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:11 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:11 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:11 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:11 4000.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:11 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:11 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:15 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:15 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:15 200002.0 +(byte) prepareBobs::cell#2 cell zp[1]:15 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:14 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:14 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:14 20002.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:14 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 shift_y zp[1]:10 22.0 -(byte) prepareBobs::shift_y#2 shift_y zp[1]:10 1.4347826086956523 +(byte) prepareBobs::shift_y#1 shift_y zp[1]:10 2002.0 +(byte) prepareBobs::shift_y#2 shift_y zp[1]:10 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:6 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:6 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:6 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:6 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:6 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:6 1001.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:6 620000.8 +(byte*) progress_cursor#24 progress_cursor zp[2]:6 183529.76470588235 +(byte*) progress_cursor#31 progress_cursor zp[2]:6 3667.333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:6 2000002.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:8 201.0 -(byte) progress_idx#16 progress_idx zp[1]:8 11.0 -(byte) progress_idx#25 progress_idx zp[1]:8 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:8 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:8 3.0 +(byte) progress_idx#10 progress_idx zp[1]:8 420000.60000000003 +(byte) progress_idx#16 progress_idx zp[1]:8 1001.0 +(byte) progress_idx#25 progress_idx zp[1]:8 80000.28571428571 +(byte) progress_idx#31 progress_idx zp[1]:8 3667.333333333333 +(byte) progress_idx#8 progress_idx zp[1]:8 1500001.5 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -9742,66 +9722,66 @@ FINAL SYMBOL TABLE (label) progress_init::@return (byte*) progress_init::line (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:16 4.0 -(byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:18 2.0 -(byte~) renderBob::$6 reg byte a 4.0 -(byte~) renderBob::$8 reg byte a 4.0 +(byte*~) renderBob::$2 zp[2]:16 20002.0 +(byte~) renderBob::$4 reg byte a 20002.0 +(byte~) renderBob::$5 zp[1]:18 10001.0 +(byte~) renderBob::$6 reg byte a 20002.0 +(byte~) renderBob::$8 reg byte a 20002.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 reg byte x 9091.818181818182 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:16 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:16 7334.066666666668 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:15 0.8 +(byte) renderBob::x_char_offset#0 reg byte x 4000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998 +(byte) renderBob::xpos#0 xpos zp[1]:14 2100.3 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 reg byte a 4.0 +(byte) renderBob::y_char_offset#0 reg byte a 20002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:16 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:16 20002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 reg byte x 15.000000000000002 +(byte) renderBob::ypos#0 ypos zp[1]:15 3000.4285714285716 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 reg byte a 202.0 +(byte~) renderBobCleanup::$1 reg byte a 200002.0 (label) renderBobCleanup::@1 (label) renderBobCleanup::@return (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 reg byte x 151.5 -(byte) renderBobCleanup::i#2 reg byte x 25.25 +(byte) renderBobCleanup::i#1 reg byte x 150001.5 +(byte) renderBobCleanup::i#2 reg byte x 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:20 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:20 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:3 7.357142857142858 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:3 3.3870967741935485 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:3 785.8571428571429 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:3 677.516129032258 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:22 16.5 -(word~) renderBobInit::$1 zp[2]:22 11.0 -(byte~) renderBobInit::$4 reg byte a 22.0 -(byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:24 22.0 -(word~) renderBobInit::$7 zp[2]:22 22.0 +(word~) renderBobInit::$0 zp[2]:22 1501.5 +(word~) renderBobInit::$1 zp[2]:22 1001.0 +(byte~) renderBobInit::$4 reg byte a 2002.0 +(byte~) renderBobInit::$5 reg byte a 2002.0 +(word~) renderBobInit::$6 zp[2]:24 2002.0 +(word~) renderBobInit::$7 zp[2]:22 2002.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return (byte) renderBobInit::i -(byte) renderBobInit::i#1 reg byte x 16.5 -(byte) renderBobInit::i#2 reg byte x 11.0 +(byte) renderBobInit::i#1 reg byte x 1501.5 +(byte) renderBobInit::i#2 reg byte x 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 reg byte x 16.5 -(byte) renderBobInit::y#2 reg byte x 4.714285714285714 +(byte) renderBobInit::y#1 reg byte x 1501.5 +(byte) renderBobInit::y#2 reg byte x 429.0 (void()) shiftProtoBobDown() (label) shiftProtoBobDown::@1 (label) shiftProtoBobDown::@2 (label) shiftProtoBobDown::@3 (label) shiftProtoBobDown::@return (byte) shiftProtoBobDown::i -(byte) shiftProtoBobDown::i#1 reg byte x 202.0 -(byte) shiftProtoBobDown::i#2 reg byte x 161.6 +(byte) shiftProtoBobDown::i#1 reg byte x 2000002.0 +(byte) shiftProtoBobDown::i#2 reg byte x 1600001.5999999999 (void()) shiftProtoBobRight() -(byte~) shiftProtoBobRight::$1 reg byte a 2002.0 -(byte~) shiftProtoBobRight::$5 reg byte a 2002.0 -(byte~) shiftProtoBobRight::$6 reg byte a 2002.0 +(byte~) shiftProtoBobRight::$1 reg byte a 2.00000002E8 +(byte~) shiftProtoBobRight::$5 reg byte a 2.00000002E8 +(byte~) shiftProtoBobRight::$6 reg byte a 2.00000002E8 (label) shiftProtoBobRight::@1 (label) shiftProtoBobRight::@2 (label) shiftProtoBobRight::@3 @@ -9811,17 +9791,17 @@ FINAL SYMBOL TABLE (label) shiftProtoBobRight::@7 (label) shiftProtoBobRight::@return (byte) shiftProtoBobRight::carry -(byte) shiftProtoBobRight::carry#1 carry zp[1]:19 111.22222222222223 -(byte) shiftProtoBobRight::carry#10 reg byte y 2002.0 -(byte) shiftProtoBobRight::carry#2 reg byte y 286.0 +(byte) shiftProtoBobRight::carry#1 carry zp[1]:19 1.1111111222222222E7 +(byte) shiftProtoBobRight::carry#10 reg byte y 2.00000002E8 +(byte) shiftProtoBobRight::carry#2 reg byte y 2.857142885714286E7 (byte) shiftProtoBobRight::i -(byte) shiftProtoBobRight::i#1 i zp[1]:18 1001.0 -(byte) shiftProtoBobRight::i#2 i zp[1]:18 231.0 +(byte) shiftProtoBobRight::i#1 i zp[1]:18 1.00000001E8 +(byte) shiftProtoBobRight::i#2 i zp[1]:18 2.3076923307692308E7 (byte) shiftProtoBobRight::j -(byte) shiftProtoBobRight::j#1 reg byte x 2002.0 -(byte) shiftProtoBobRight::j#10 reg byte x 1001.0 -(byte) shiftProtoBobRight::j#2 reg byte x 2002.0 -(byte) shiftProtoBobRight::j#3 reg byte x 700.7 +(byte) shiftProtoBobRight::j#1 reg byte x 2.00000002E8 +(byte) shiftProtoBobRight::j#10 reg byte x 1.00000001E8 +(byte) shiftProtoBobRight::j#2 reg byte x 2.00000002E8 +(byte) shiftProtoBobRight::j#3 reg byte x 7.00000007E7 (byte) shiftProtoBobRight::new_carry zp[1]:2 [ main::a#2 main::a#6 main::a#1 ] @@ -9848,7 +9828,7 @@ reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:11 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[2]:12 [ main::x#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 memset::dst#2 memset::dst#1 ] zp[1]:14 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -reg byte x [ renderBob::ypos#0 ] +zp[1]:15 [ renderBob::ypos#0 prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ main::$19 ] reg byte a [ keyboard_key_pressed::return#3 ] @@ -9857,7 +9837,7 @@ reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -zp[1]:15 [ renderBob::x_char_offset#0 prepareBobs::cell#2 prepareBobs::cell#1 ] +reg byte x [ renderBob::x_char_offset#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] @@ -9889,7 +9869,7 @@ reg byte a [ mulf_init::$5 ] FINAL ASSEMBLER -Score: 3510699 +Score: 3510799 // File Comments // Pre-calculated bobs inside a charset (pre-moved to all x/y-combinations) @@ -10131,9 +10111,9 @@ main: { // [39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0 -- vbuz1=_hi_vwsz2 lda.z x+1 sta.z renderBob.xpos - // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuxx=_hi_vwsz1 + // [40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0 -- vbuz1=_hi_vwsz2 lda.z y+1 - tax + sta.z renderBob.ypos // [41] call renderBob jsr renderBob // main::@14 @@ -10255,23 +10235,23 @@ keyboard_matrix_read: { // Render a single BOB at a given x/y-position // X-position is 0-151. Each x-position is 2 pixels wide. // Y-position is 0-183. Each y-position is 1 pixel high. -// renderBob(byte zp($e) xpos, byte register(X) ypos) +// renderBob(byte zp($e) xpos, byte zp($f) ypos) renderBob: { .label __2 = $10 .label __5 = $12 .label xpos = $e - .label x_char_offset = $f + .label ypos = $f .label y_offset = $10 .label screen = $10 // x_char_offset = xpos/BOB_SHIFTS_X - // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuz1=vbuz2_ror_2 + // [70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2 -- vbuxx=vbuz1_ror_2 lda.z xpos lsr lsr - sta.z x_char_offset + tax // y_char_offset = ypos/BOB_SHIFTS_Y - // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 - txa + // [71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + lda.z ypos lsr lsr lsr @@ -10294,8 +10274,8 @@ renderBob: { adc #>BOB_SCREEN sta.z __2+1 // screen = BOB_SCREEN+y_offset+x_char_offset - // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuz2 - lda.z x_char_offset + // [75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0 -- pbuz1=pbuz1_plus_vbuxx + txa clc adc.z screen sta.z screen @@ -10303,9 +10283,9 @@ renderBob: { inc.z screen+1 !: // ypos&7 - // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuxx_band_vbuc1 - txa - and #7 + // [76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 + lda #7 + and.z ypos // (ypos&7)*BOB_SHIFTS_X // [77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2 -- vbuz1=vbuaa_rol_2 asl diff --git a/src/test/ref/complex/prebob/vogel-bobs.sym b/src/test/ref/complex/prebob/vogel-bobs.sym index 687dd86ce..8c50d3c81 100644 --- a/src/test/ref/complex/prebob/vogel-bobs.sym +++ b/src/test/ref/complex/prebob/vogel-bobs.sym @@ -46,59 +46,59 @@ (label) bobCharsetFindOrAddGlyph::@9 (label) bobCharsetFindOrAddGlyph::@return (byte*) bobCharsetFindOrAddGlyph::bob_glyph -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 bob_glyph zp[2]:12 2002.0 -(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 bob_glyph zp[2]:12 7400.200000000001 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 bob_glyph zp[2]:12 200002.0 +(byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 bob_glyph zp[2]:12 7.333340000200001E9 (byte) bobCharsetFindOrAddGlyph::found -(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 10001.0 +(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 1.0000000001E10 (byte*) bobCharsetFindOrAddGlyph::glyph_cursor -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:24 20002.0 -(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:24 10000.307692307691 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:24 2.0000000002E10 +(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:24 1.0000000000307692E10 (byte) bobCharsetFindOrAddGlyph::glyph_id -(byte) bobCharsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0 -(byte) bobCharsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75 +(byte) bobCharsetFindOrAddGlyph::glyph_id#1 reg byte x 1.0000000001E10 +(byte) bobCharsetFindOrAddGlyph::glyph_id#11 reg byte x 1.87500625025E9 (byte) bobCharsetFindOrAddGlyph::i -(byte) bobCharsetFindOrAddGlyph::i#1 reg byte y 200002.0 -(byte) bobCharsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333 +(byte) bobCharsetFindOrAddGlyph::i#1 reg byte y 2.00000000002E11 +(byte) bobCharsetFindOrAddGlyph::i#2 reg byte y 1.6666666666833334E11 (byte) bobCharsetFindOrAddGlyph::i1 -(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 20002.0 -(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332 +(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 2.0000000002E10 +(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 1.6666666668333332E10 (byte) bobCharsetFindOrAddGlyph::return -(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 2002.0 +(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 200002.0 (byte) bob_charset_next_id -(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:9 12.0 -(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:9 1000.5454545454544 -(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:9 275.5 -(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:9 1400.3333333333335 -(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:9 37.33333333333333 -(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:9 4.0 +(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:9 1051.5 +(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:9 9.091909185454544E8 +(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:9 27500.5 +(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:9 1.3334066669333334E9 +(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:9 3667.333333333333 +(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:9 2000002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(signed word~) main::$10 zp[2]:6 202.0 -(signed word~) main::$12 zp[2]:6 202.0 -(signed word~) main::$13 zp[2]:6 202.0 -(byte~) main::$19 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 +(signed word~) main::$10 zp[2]:6 2002.0 +(signed word~) main::$12 zp[2]:6 2002.0 +(signed word~) main::$13 zp[2]:6 2002.0 +(byte~) main::$19 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -117,18 +117,18 @@ (label) main::@9 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 28.857142857142858 -(byte) main::a#2 a zp[1]:2 25.9375 -(byte) main::a#6 a zp[1]:2 22.0 +(byte) main::a#1 a zp[1]:2 286.0 +(byte) main::a#2 a zp[1]:2 256.5625 +(byte) main::a#6 a zp[1]:2 202.0 (byte) main::angle -(byte) main::angle#1 angle zp[1]:8 3.6666666666666665 -(byte) main::angle#8 angle zp[1]:8 1.1785714285714286 +(byte) main::angle#1 angle zp[1]:8 33.666666666666664 +(byte) main::angle#8 angle zp[1]:8 10.821428571428571 (byte) main::i -(byte) main::i#1 i zp[1]:5 151.5 -(byte) main::i#2 i zp[1]:5 9.619047619047619 +(byte) main::i#1 i zp[1]:5 1501.5 +(byte) main::i#2 i zp[1]:5 95.33333333333333 (signed byte) main::r -(signed byte) main::r#1 r zp[1]:9 33.666666666666664 -(signed byte) main::r#2 r zp[1]:9 23.764705882352942 +(signed byte) main::r#1 r zp[1]:9 333.6666666666667 +(signed byte) main::r#2 r zp[1]:9 235.52941176470588 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -154,9 +154,9 @@ (byte) main::vicSelectGfxBank2_toDd001_return (const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3 (signed word) main::x -(signed word) main::x#0 x zp[2]:12 18.363636363636363 +(signed word) main::x#0 x zp[2]:12 182.0 (signed word) main::y -(signed word) main::y#0 y zp[2]:6 40.4 +(signed word) main::y#0 y zp[2]:6 400.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -164,8 +164,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 2002.0 +(byte*) memset::dst#2 dst zp[2]:12 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -178,24 +178,24 @@ (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 +(signed byte) mulf8s::a#0 reg byte a 1001.0 +(signed byte) mulf8s::a#1 reg byte a 1001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 +(signed byte) mulf8s::b#0 reg byte x 2002.0 +(signed byte) mulf8s::b#1 reg byte x 2002.0 +(signed byte) mulf8s::b#2 reg byte x 4001.0 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 2002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:6 51.0 -(signed word) mulf8s::return#2 return zp[2]:6 202.0 -(signed word) mulf8s::return#3 return zp[2]:6 202.0 +(signed word) mulf8s::return#0 return zp[2]:6 3000.75 +(signed word) mulf8s::return#2 return zp[2]:6 2002.0 +(signed word) mulf8s::return#3 return zp[2]:6 2002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 200002.0 +(byte~) mulf8s_prepared::$15 reg byte a 200002.0 +(byte~) mulf8s_prepared::$16 reg byte a 200002.0 +(byte~) mulf8s_prepared::$8 reg byte a 200002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -203,33 +203,33 @@ (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:19 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:19 11000.2 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:6 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:6 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:6 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:6 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:6 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:6 100001.0 +(word) mulf8s_prepared::m#1 m zp[2]:6 200002.0 +(word) mulf8s_prepared::m#2 m zp[2]:6 200002.0 +(word) mulf8s_prepared::m#4 m zp[2]:6 66667.33333333333 +(word) mulf8s_prepared::m#5 m zp[2]:6 125001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 +(byte) mulf8u_prepare::a#0 reg byte a 110002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1100002.0 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:6 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:6 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:6 366667.3333333334 +(word) mulf8u_prepared::return#2 return zp[2]:6 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -241,41 +241,41 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:10 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:10 11.0 +(byte) mulf_init::c#1 c zp[1]:10 231.0 +(byte) mulf_init::c#2 c zp[1]:10 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:11 4.125 -(byte) mulf_init::dir#4 dir zp[1]:11 11.0 +(byte) mulf_init::dir#2 dir zp[1]:11 375.375 +(byte) mulf_init::dir#4 dir zp[1]:11 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:20 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:20 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:20 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:20 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:20 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:20 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:20 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:20 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:24 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:24 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:24 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:24 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:22 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:22 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:22 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:22 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:16 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:16 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:16 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:16 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) prepareBobs() -(byte~) prepareBobs::$6 reg byte a 2002.0 +(byte~) prepareBobs::$6 reg byte a 200002.0 (label) prepareBobs::@1 (label) prepareBobs::@10 (label) prepareBobs::@11 @@ -291,37 +291,37 @@ (label) prepareBobs::@9 (label) prepareBobs::@return (byte*) prepareBobs::bob_glyph -(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:12 500.5 -(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:12 429.0 +(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:12 50000.5 +(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:12 42857.57142857143 (byte*) prepareBobs::bob_table -(byte*) prepareBobs::bob_table#0 bob_table zp[2]:22 202.0 -(byte*) prepareBobs::bob_table#1 bob_table zp[2]:22 667.3333333333334 -(byte*) prepareBobs::bob_table#2 bob_table zp[2]:22 388.0 +(byte*) prepareBobs::bob_table#0 bob_table zp[2]:22 20002.0 +(byte*) prepareBobs::bob_table#1 bob_table zp[2]:22 66667.33333333333 +(byte*) prepareBobs::bob_table#2 bob_table zp[2]:22 38750.5 (byte) prepareBobs::bob_table_idx -(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:11 40.4 -(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:11 19.11764705882353 -(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:11 11.0 +(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:11 4000.4 +(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:11 1882.6470588235293 +(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:11 1001.0 (byte) prepareBobs::cell -(byte) prepareBobs::cell#1 cell zp[1]:15 2002.0 -(byte) prepareBobs::cell#2 cell zp[1]:15 300.29999999999995 +(byte) prepareBobs::cell#1 cell zp[1]:15 200002.0 +(byte) prepareBobs::cell#2 cell zp[1]:15 30000.300000000003 (byte) prepareBobs::shift_x -(byte) prepareBobs::shift_x#1 shift_x zp[1]:14 202.0 -(byte) prepareBobs::shift_x#2 shift_x zp[1]:14 16.833333333333332 +(byte) prepareBobs::shift_x#1 shift_x zp[1]:14 20002.0 +(byte) prepareBobs::shift_x#2 shift_x zp[1]:14 1666.8333333333333 (byte) prepareBobs::shift_y -(byte) prepareBobs::shift_y#1 shift_y zp[1]:10 22.0 -(byte) prepareBobs::shift_y#2 shift_y zp[1]:10 1.4347826086956523 +(byte) prepareBobs::shift_y#1 shift_y zp[1]:10 2002.0 +(byte) prepareBobs::shift_y#2 shift_y zp[1]:10 130.56521739130434 (byte*) progress_cursor -(byte*) progress_cursor#15 progress_cursor zp[2]:6 11.0 -(byte*) progress_cursor#17 progress_cursor zp[2]:6 201.4 -(byte*) progress_cursor#24 progress_cursor zp[2]:6 71.11764705882355 -(byte*) progress_cursor#31 progress_cursor zp[2]:6 37.33333333333333 -(byte*) progress_cursor#8 progress_cursor zp[2]:6 4.0 +(byte*) progress_cursor#15 progress_cursor zp[2]:6 1001.0 +(byte*) progress_cursor#17 progress_cursor zp[2]:6 620000.8 +(byte*) progress_cursor#24 progress_cursor zp[2]:6 183529.76470588235 +(byte*) progress_cursor#31 progress_cursor zp[2]:6 3667.333333333333 +(byte*) progress_cursor#8 progress_cursor zp[2]:6 2000002.0 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:8 201.0 -(byte) progress_idx#16 progress_idx zp[1]:8 11.0 -(byte) progress_idx#25 progress_idx zp[1]:8 86.07142857142856 -(byte) progress_idx#31 progress_idx zp[1]:8 37.33333333333333 -(byte) progress_idx#8 progress_idx zp[1]:8 3.0 +(byte) progress_idx#10 progress_idx zp[1]:8 420000.60000000003 +(byte) progress_idx#16 progress_idx zp[1]:8 1001.0 +(byte) progress_idx#25 progress_idx zp[1]:8 80000.28571428571 +(byte) progress_idx#31 progress_idx zp[1]:8 3667.333333333333 +(byte) progress_idx#8 progress_idx zp[1]:8 1500001.5 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -331,66 +331,66 @@ (label) progress_init::@return (byte*) progress_init::line (void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos) -(byte*~) renderBob::$2 zp[2]:16 4.0 -(byte~) renderBob::$4 reg byte a 4.0 -(byte~) renderBob::$5 zp[1]:18 2.0 -(byte~) renderBob::$6 reg byte a 4.0 -(byte~) renderBob::$8 reg byte a 4.0 +(byte*~) renderBob::$2 zp[2]:16 20002.0 +(byte~) renderBob::$4 reg byte a 20002.0 +(byte~) renderBob::$5 zp[1]:18 10001.0 +(byte~) renderBob::$6 reg byte a 20002.0 +(byte~) renderBob::$8 reg byte a 20002.0 (label) renderBob::@return (byte) renderBob::bob_table_idx -(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186 +(byte) renderBob::bob_table_idx#0 reg byte x 9091.818181818182 (byte*) renderBob::screen -(byte*) renderBob::screen#0 screen zp[2]:16 1.4666666666666666 +(byte*) renderBob::screen#0 screen zp[2]:16 7334.066666666668 (byte) renderBob::x_char_offset -(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:15 0.8 +(byte) renderBob::x_char_offset#0 reg byte x 4000.4 (byte) renderBob::xpos -(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998 +(byte) renderBob::xpos#0 xpos zp[1]:14 2100.3 (byte) renderBob::y_char_offset -(byte) renderBob::y_char_offset#0 reg byte a 4.0 +(byte) renderBob::y_char_offset#0 reg byte a 20002.0 (word) renderBob::y_offset -(word) renderBob::y_offset#0 y_offset zp[2]:16 4.0 +(word) renderBob::y_offset#0 y_offset zp[2]:16 20002.0 (byte) renderBob::ypos -(byte) renderBob::ypos#0 reg byte x 15.000000000000002 +(byte) renderBob::ypos#0 ypos zp[1]:15 3000.4285714285716 (void()) renderBobCleanup() -(byte~) renderBobCleanup::$1 reg byte a 202.0 +(byte~) renderBobCleanup::$1 reg byte a 200002.0 (label) renderBobCleanup::@1 (label) renderBobCleanup::@return (byte) renderBobCleanup::i -(byte) renderBobCleanup::i#1 reg byte x 151.5 -(byte) renderBobCleanup::i#2 reg byte x 25.25 +(byte) renderBobCleanup::i#1 reg byte x 150001.5 +(byte) renderBobCleanup::i#2 reg byte x 25000.25 (byte*) renderBobCleanup::screen -(byte*) renderBobCleanup::screen#0 screen zp[2]:20 112.22222222222223 +(byte*) renderBobCleanup::screen#0 screen zp[2]:20 111112.2222222222 (byte**) renderBobCleanupNext -(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:3 7.357142857142858 -(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:3 3.3870967741935485 +(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:3 785.8571428571429 +(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:3 677.516129032258 (void()) renderBobInit() -(word~) renderBobInit::$0 zp[2]:22 16.5 -(word~) renderBobInit::$1 zp[2]:22 11.0 -(byte~) renderBobInit::$4 reg byte a 22.0 -(byte~) renderBobInit::$5 reg byte a 22.0 -(word~) renderBobInit::$6 zp[2]:24 22.0 -(word~) renderBobInit::$7 zp[2]:22 22.0 +(word~) renderBobInit::$0 zp[2]:22 1501.5 +(word~) renderBobInit::$1 zp[2]:22 1001.0 +(byte~) renderBobInit::$4 reg byte a 2002.0 +(byte~) renderBobInit::$5 reg byte a 2002.0 +(word~) renderBobInit::$6 zp[2]:24 2002.0 +(word~) renderBobInit::$7 zp[2]:22 2002.0 (label) renderBobInit::@1 (label) renderBobInit::@2 (label) renderBobInit::@return (byte) renderBobInit::i -(byte) renderBobInit::i#1 reg byte x 16.5 -(byte) renderBobInit::i#2 reg byte x 11.0 +(byte) renderBobInit::i#1 reg byte x 1501.5 +(byte) renderBobInit::i#2 reg byte x 1001.0 (byte) renderBobInit::y -(byte) renderBobInit::y#1 reg byte x 16.5 -(byte) renderBobInit::y#2 reg byte x 4.714285714285714 +(byte) renderBobInit::y#1 reg byte x 1501.5 +(byte) renderBobInit::y#2 reg byte x 429.0 (void()) shiftProtoBobDown() (label) shiftProtoBobDown::@1 (label) shiftProtoBobDown::@2 (label) shiftProtoBobDown::@3 (label) shiftProtoBobDown::@return (byte) shiftProtoBobDown::i -(byte) shiftProtoBobDown::i#1 reg byte x 202.0 -(byte) shiftProtoBobDown::i#2 reg byte x 161.6 +(byte) shiftProtoBobDown::i#1 reg byte x 2000002.0 +(byte) shiftProtoBobDown::i#2 reg byte x 1600001.5999999999 (void()) shiftProtoBobRight() -(byte~) shiftProtoBobRight::$1 reg byte a 2002.0 -(byte~) shiftProtoBobRight::$5 reg byte a 2002.0 -(byte~) shiftProtoBobRight::$6 reg byte a 2002.0 +(byte~) shiftProtoBobRight::$1 reg byte a 2.00000002E8 +(byte~) shiftProtoBobRight::$5 reg byte a 2.00000002E8 +(byte~) shiftProtoBobRight::$6 reg byte a 2.00000002E8 (label) shiftProtoBobRight::@1 (label) shiftProtoBobRight::@2 (label) shiftProtoBobRight::@3 @@ -400,17 +400,17 @@ (label) shiftProtoBobRight::@7 (label) shiftProtoBobRight::@return (byte) shiftProtoBobRight::carry -(byte) shiftProtoBobRight::carry#1 carry zp[1]:19 111.22222222222223 -(byte) shiftProtoBobRight::carry#10 reg byte y 2002.0 -(byte) shiftProtoBobRight::carry#2 reg byte y 286.0 +(byte) shiftProtoBobRight::carry#1 carry zp[1]:19 1.1111111222222222E7 +(byte) shiftProtoBobRight::carry#10 reg byte y 2.00000002E8 +(byte) shiftProtoBobRight::carry#2 reg byte y 2.857142885714286E7 (byte) shiftProtoBobRight::i -(byte) shiftProtoBobRight::i#1 i zp[1]:18 1001.0 -(byte) shiftProtoBobRight::i#2 i zp[1]:18 231.0 +(byte) shiftProtoBobRight::i#1 i zp[1]:18 1.00000001E8 +(byte) shiftProtoBobRight::i#2 i zp[1]:18 2.3076923307692308E7 (byte) shiftProtoBobRight::j -(byte) shiftProtoBobRight::j#1 reg byte x 2002.0 -(byte) shiftProtoBobRight::j#10 reg byte x 1001.0 -(byte) shiftProtoBobRight::j#2 reg byte x 2002.0 -(byte) shiftProtoBobRight::j#3 reg byte x 700.7 +(byte) shiftProtoBobRight::j#1 reg byte x 2.00000002E8 +(byte) shiftProtoBobRight::j#10 reg byte x 1.00000001E8 +(byte) shiftProtoBobRight::j#2 reg byte x 2.00000002E8 +(byte) shiftProtoBobRight::j#3 reg byte x 7.00000007E7 (byte) shiftProtoBobRight::new_carry zp[1]:2 [ main::a#2 main::a#6 main::a#1 ] @@ -437,7 +437,7 @@ reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:11 [ mulf_init::dir#2 mulf_init::dir#4 prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 ] zp[2]:12 [ main::x#0 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 memset::dst#2 memset::dst#1 ] zp[1]:14 [ renderBob::xpos#0 prepareBobs::shift_x#2 prepareBobs::shift_x#1 ] -reg byte x [ renderBob::ypos#0 ] +zp[1]:15 [ renderBob::ypos#0 prepareBobs::cell#2 prepareBobs::cell#1 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ main::$19 ] reg byte a [ keyboard_key_pressed::return#3 ] @@ -446,7 +446,7 @@ reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -zp[1]:15 [ renderBob::x_char_offset#0 prepareBobs::cell#2 prepareBobs::cell#1 ] +reg byte x [ renderBob::x_char_offset#0 ] reg byte a [ renderBob::y_char_offset#0 ] reg byte a [ renderBob::$8 ] zp[2]:16 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] diff --git a/src/test/ref/complex/prebob/vogel-sprites.log b/src/test/ref/complex/prebob/vogel-sprites.log index 30976114e..c347392fa 100644 --- a/src/test/ref/complex/prebob/vogel-sprites.log +++ b/src/test/ref/complex/prebob/vogel-sprites.log @@ -2109,168 +2109,168 @@ Inversing boolean not [182] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s Inversing boolean not [221] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [220] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Inversing boolean not [419] (bool~) loop::$19 ← (byte) 0 == (byte~) loop::$18 from [418] (bool~) loop::$21 ← (byte) 0 != (byte~) loop::$18 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 -Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*~) plexInit::plexSetScreen1_$0 (byte*) PLEX_SCREEN_PTR#22 -Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 -Alias (byte) plexSort::m#2 = (byte) plexSort::m#4 (byte) plexSort::s#0 -Alias (byte) plexSort::nxt_y#0 = (byte) plexSort::nxt_y#2 -Alias (byte) plexSort::nxt_idx#0 = (byte) plexSort::nxt_idx#3 -Alias (byte) plexSort::s#1 = (byte) plexSort::s#4 -Alias (byte) plexSort::nxt_idx#1 = (byte) plexSort::nxt_idx#2 -Alias (byte) plexSort::m#5 = (byte) plexSort::m#6 -Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#41 -Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#41 -Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#40 -Alias (byte) plex_show_idx#11 = (byte) plex_show_idx#22 (byte) plex_show_idx#34 (byte) plex_show_idx#2 -Alias (byte) plex_sprite_idx#11 = (byte) plex_sprite_idx#22 (byte) plex_sprite_idx#34 (byte) plex_sprite_idx#2 -Alias (byte) plex_sprite_msb#12 = (byte) plex_sprite_msb#23 (byte) plex_sprite_msb#32 (byte) plex_sprite_msb#2 -Alias (byte) plex_free_next#0 = (byte) plex_free_next#11 (byte) plex_free_next#1 -Alias (byte) plexShowSprite::plex_sprite_idx2#0 = (byte~) plexShowSprite::$0 (byte) plexShowSprite::plex_sprite_idx2#2 (byte) plexShowSprite::plex_sprite_idx2#1 -Alias (byte) plexShowSprite::plexFreeAdd1_ypos#0 = (byte) plexShowSprite::ypos#0 (byte) plexShowSprite::plexFreeAdd1_ypos#1 -Alias (byte) plex_free_next#12 = (byte) plex_free_next#21 -Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#24 (byte) plex_show_idx#13 (byte) plex_show_idx#25 (byte) plex_show_idx#26 -Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#9 -Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#24 (byte) plex_sprite_idx#13 (byte) plex_sprite_idx#25 (byte) plex_sprite_idx#26 -Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#33 (byte) plex_sprite_msb#41 (byte) plex_sprite_msb#24 (byte) plex_sprite_msb#14 -Alias (byte) plex_free_next#2 = (byte~) plexShowSprite::plexFreeAdd1_$2 (byte) plex_free_next#40 (byte) plex_free_next#32 (byte) plex_free_next#33 -Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte~) plexShowSprite::$6 -Alias (byte) plex_free_next#22 = (byte) plex_free_next#23 -Alias (byte) plex_show_idx#27 = (byte) plex_show_idx#3 -Alias (byte) plex_free_next#13 = (byte) plex_free_next#3 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#4 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#4 -Alias (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#5 -Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#26 (byte*) PLEX_SCREEN_PTR#21 -Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#40 (byte) plex_show_idx#33 -Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#40 (byte) plex_sprite_idx#33 -Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#39 (byte) plex_sprite_msb#31 -Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 -Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 -Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 -Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 -Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$6 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 -Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 -Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 -Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 -Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 (word) mulf8u_prepared::return#3 (word) mulf8u_prepared::return#1 -Alias (byte) mulf8u_prepared::b#0 = (byte~) mulf8s_prepared::$0 -Alias (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#4 (signed byte) mulf8s_prepared::b#3 -Alias (word) mulf8s_prepared::m#0 = (word~) mulf8s_prepared::$1 (word) mulf8s_prepared::m#3 -Alias (byte~) mulf8s_prepared::$15 = (byte~) mulf8s_prepared::$10 -Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$6 (signed word) mulf8s_prepared::return#3 (signed word) mulf8s_prepared::return#1 -Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6 -Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$14 -Alias (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#2 (signed byte) mulf8s::mulf8s_prepare1_a#1 -Alias (signed byte) mulf8s::b#2 = (signed byte) mulf8s::b#4 (signed byte) mulf8s::b#5 (signed byte) mulf8s::b#3 -Alias (byte) mulf8u_prepare::a#0 = (byte~) mulf8s::mulf8s_prepare1_$0 -Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#4 -Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$1 (signed word) mulf8s::return#4 (signed word) mulf8s::return#1 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::return#1 -Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#35 -Alias (byte) plex_sprite_idx#28 = (byte) plex_sprite_idx#35 -Alias (byte) plex_sprite_msb#25 = (byte) plex_sprite_msb#34 -Alias (byte) plex_free_next#24 = (byte) plex_free_next#34 -Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 -Alias (byte) plex_show_idx#16 = (byte) plex_show_idx#5 (byte) plex_show_idx#29 (byte) plex_show_idx#17 (byte) plex_show_idx#6 -Alias (byte) plex_sprite_idx#16 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#29 (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#6 -Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#26 (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#7 -Alias (byte) plex_free_next#14 = (byte) plex_free_next#5 (byte) plex_free_next#25 (byte) plex_free_next#15 (byte) plex_free_next#6 -Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5 -Alias (byte*) PLEX_SCREEN_PTR#31 = (byte*) PLEX_SCREEN_PTR#33 -Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#29 (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#6 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 -Alias (byte) loop::angle#2 = (byte) loop::angle#4 (byte) loop::a#0 -Alias (byte) plex_show_idx#46 = (byte) plex_show_idx#48 -Alias (byte) plex_sprite_idx#46 = (byte) plex_sprite_idx#48 -Alias (byte) plex_sprite_msb#46 = (byte) plex_sprite_msb#48 -Alias (byte) plex_free_next#46 = (byte) plex_free_next#47 -Alias (byte*) PLEX_SCREEN_PTR#45 = (byte*) PLEX_SCREEN_PTR#46 -Alias (signed word) mulf8s::return#2 = (signed word) mulf8s::return#5 -Alias (byte) loop::i#2 = (byte) loop::i#4 (byte) loop::i#3 -Alias (signed byte) loop::r#2 = (signed byte) loop::r#3 (signed byte) loop::r#4 -Alias (byte) loop::a#2 = (byte) loop::a#3 (byte) loop::a#4 -Alias (byte) plex_show_idx#30 = (byte) plex_show_idx#42 (byte) plex_show_idx#44 (byte) plex_show_idx#37 -Alias (byte) plex_sprite_idx#30 = (byte) plex_sprite_idx#42 (byte) plex_sprite_idx#44 (byte) plex_sprite_idx#37 -Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#42 (byte) plex_sprite_msb#44 (byte) plex_sprite_msb#36 -Alias (byte) plex_free_next#26 = (byte) plex_free_next#41 (byte) plex_free_next#44 (byte) plex_free_next#36 -Alias (byte) loop::angle#10 = (byte) loop::angle#9 (byte) loop::angle#7 (byte) loop::angle#5 (byte) loop::angle#3 -Alias (byte*) PLEX_SCREEN_PTR#40 = (byte*) PLEX_SCREEN_PTR#43 (byte*) PLEX_SCREEN_PTR#44 (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#41 -Alias (signed word) loop::x#0 = (signed word~) loop::$3 -Alias (signed word) mulf8s::return#3 = (signed word) mulf8s::return#6 -Alias (signed word) loop::y#0 = (signed word~) loop::$7 -Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#7 -Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#7 -Alias (byte) plex_sprite_msb#19 = (byte) plex_sprite_msb#8 -Alias (byte) plex_free_next#16 = (byte) plex_free_next#7 -Alias (byte) plex_free_next#37 = (byte) plex_free_next#42 -Alias (byte) plex_sprite_idx#50 = (byte) plex_sprite_idx#51 -Alias (byte) plex_show_idx#50 = (byte) plex_show_idx#51 -Alias (byte) plex_sprite_msb#50 = (byte) plex_sprite_msb#51 -Alias (byte*) PLEX_SCREEN_PTR#37 = (byte*) PLEX_SCREEN_PTR#39 -Alias (byte) loop::angle#19 = (byte) loop::angle#20 -Alias (byte) plex_free_next#17 = (byte) plex_free_next#27 (byte) plex_free_next#45 (byte) plex_free_next#43 -Alias (byte) plex_sprite_idx#43 = (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#49 (byte) plex_sprite_idx#45 -Alias (byte) plex_show_idx#43 = (byte) plex_show_idx#47 (byte) plex_show_idx#49 (byte) plex_show_idx#45 -Alias (byte) plex_sprite_msb#43 = (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#49 (byte) plex_sprite_msb#45 -Alias (byte) loop::i1#5 = (byte) loop::i1#7 (byte) loop::i1#8 (byte) loop::i1#6 -Alias (byte*) PLEX_SCREEN_PTR#32 = (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#34 -Alias (byte) loop::angle#15 = (byte) loop::angle#17 (byte) loop::angle#18 (byte) loop::angle#16 -Alias (byte) loop::plexFreeNextYpos1_return#0 = (byte) loop::plexFreeNextYpos1_return#2 (byte) loop::plexFreeNextYpos1_return#1 (byte) loop::plexFreeNextYpos1_return#3 (byte~) loop::$13 (byte) loop::rasterY#0 -Alias (byte) plex_sprite_idx#23 = (byte) plex_sprite_idx#38 -Alias (byte) plex_show_idx#23 = (byte) plex_show_idx#38 -Alias (byte) plex_free_next#28 = (byte) plex_free_next#38 -Alias (byte) plex_sprite_msb#28 = (byte) plex_sprite_msb#37 -Alias (byte) loop::i1#2 = (byte) loop::i1#3 (byte) loop::i1#4 -Alias (byte*) PLEX_SCREEN_PTR#27 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#38 (byte*) PLEX_SCREEN_PTR#50 (byte*) PLEX_SCREEN_PTR#49 -Alias (byte) loop::angle#11 = (byte) loop::angle#13 (byte) loop::angle#14 (byte) loop::angle#12 (byte) loop::angle#8 -Alias (byte) plex_free_next#18 = (byte) plex_free_next#8 (byte) plex_free_next#39 (byte) plex_free_next#30 -Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#39 (byte) plex_sprite_idx#32 -Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#39 (byte) plex_show_idx#32 -Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#38 (byte) plex_sprite_msb#30 -Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 -Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#9 -Alias (byte) plex_sprite_idx#20 = (byte) plex_sprite_idx#9 -Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#21 -Alias (byte) plex_free_next#19 = (byte) plex_free_next#9 -Alias (byte) plex_free_next#31 = (byte) plex_free_next#4 -Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7 -Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#21 -Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#21 -Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#22 -Alias (byte) plex_free_next#10 = (byte) plex_free_next#20 +Alias plexInit::plexSetScreen1_screen#0 = plexInit::screen#1 plexInit::plexSetScreen1_screen#1 +Alias PLEX_SCREEN_PTR#1 = plexInit::plexSetScreen1_$0 PLEX_SCREEN_PTR#22 +Alias PLEX_SCREEN_PTR#15 = PLEX_SCREEN_PTR#8 PLEX_SCREEN_PTR#2 +Alias plexSort::m#2 = plexSort::m#4 plexSort::s#0 +Alias plexSort::nxt_y#0 = plexSort::nxt_y#2 +Alias plexSort::nxt_idx#0 = plexSort::nxt_idx#3 +Alias plexSort::s#1 = plexSort::s#4 +Alias plexSort::nxt_idx#1 = plexSort::nxt_idx#2 +Alias plexSort::m#5 = plexSort::m#6 +Alias plex_show_idx#1 = plex_show_idx#41 +Alias plex_sprite_idx#1 = plex_sprite_idx#41 +Alias plex_sprite_msb#1 = plex_sprite_msb#40 +Alias plex_show_idx#11 = plex_show_idx#22 plex_show_idx#34 plex_show_idx#2 +Alias plex_sprite_idx#11 = plex_sprite_idx#22 plex_sprite_idx#34 plex_sprite_idx#2 +Alias plex_sprite_msb#12 = plex_sprite_msb#23 plex_sprite_msb#32 plex_sprite_msb#2 +Alias plex_free_next#0 = plex_free_next#11 plex_free_next#1 +Alias plexShowSprite::plex_sprite_idx2#0 = plexShowSprite::$0 plexShowSprite::plex_sprite_idx2#2 plexShowSprite::plex_sprite_idx2#1 +Alias plexShowSprite::plexFreeAdd1_ypos#0 = plexShowSprite::ypos#0 plexShowSprite::plexFreeAdd1_ypos#1 +Alias plex_free_next#12 = plex_free_next#21 +Alias plex_show_idx#12 = plex_show_idx#24 plex_show_idx#13 plex_show_idx#25 plex_show_idx#26 +Alias PLEX_SCREEN_PTR#16 = PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#9 +Alias plex_sprite_idx#12 = plex_sprite_idx#24 plex_sprite_idx#13 plex_sprite_idx#25 plex_sprite_idx#26 +Alias plex_sprite_msb#13 = plex_sprite_msb#33 plex_sprite_msb#41 plex_sprite_msb#24 plex_sprite_msb#14 +Alias plex_free_next#2 = plexShowSprite::plexFreeAdd1_$2 plex_free_next#40 plex_free_next#32 plex_free_next#33 +Alias plex_sprite_idx#27 = plex_sprite_idx#3 plexShowSprite::$6 +Alias plex_free_next#22 = plex_free_next#23 +Alias plex_show_idx#27 = plex_show_idx#3 +Alias plex_free_next#13 = plex_free_next#3 +Alias plex_sprite_idx#15 = plex_sprite_idx#4 +Alias plex_show_idx#15 = plex_show_idx#4 +Alias plex_sprite_msb#16 = plex_sprite_msb#5 +Alias PLEX_SCREEN_PTR#0 = PLEX_SCREEN_PTR#26 PLEX_SCREEN_PTR#21 +Alias plex_show_idx#0 = plex_show_idx#40 plex_show_idx#33 +Alias plex_sprite_idx#0 = plex_sprite_idx#40 plex_sprite_idx#33 +Alias plex_sprite_msb#0 = plex_sprite_msb#39 plex_sprite_msb#31 +Alias mulf_init::c#2 = mulf_init::c#3 +Alias mulf_init::sqr#4 = mulf_init::sqr#5 mulf_init::sqr#6 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#4 mulf_init::sqr1_lo#5 +Alias mulf_init::sqr1_hi#3 = mulf_init::sqr1_hi#5 mulf_init::sqr1_hi#4 +Alias mulf_init::x_2#3 = mulf_init::x_2#4 mulf_init::x_2#5 +Alias mulf_init::sqr#1 = mulf_init::$6 +Alias mulf_init::c#1 = mulf_init::c#5 +Alias mulf_init::x_255#2 = mulf_init::x_255#3 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#3 mulf_init::sqr2_lo#5 +Alias mulf_init::sqr2_hi#2 = mulf_init::sqr2_hi#3 +Alias mulf_init::dir#2 = mulf_init::dir#3 +Alias mulf_init::x_255#1 = mulf_init::$8 mulf_init::x_255#5 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#5 +Alias mulf8u_prepared::return#0 = mulf8u_prepared::$0 mulf8u_prepared::return#3 mulf8u_prepared::return#1 +Alias mulf8u_prepared::b#0 = mulf8s_prepared::$0 +Alias mulf8u_prepared::return#2 = mulf8u_prepared::return#4 +Alias mulf8s_prepared::b#1 = mulf8s_prepared::b#4 mulf8s_prepared::b#3 +Alias mulf8s_prepared::m#0 = mulf8s_prepared::$1 mulf8s_prepared::m#3 +Alias mulf8s_prepared::$15 = mulf8s_prepared::$10 +Alias mulf8s_prepared::return#0 = mulf8s_prepared::$6 mulf8s_prepared::return#3 mulf8s_prepared::return#1 +Alias mulf8s_prepared::m#5 = mulf8s_prepared::m#6 +Alias mulf8s_prepared::$16 = mulf8s_prepared::$14 +Alias mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#2 mulf8s::mulf8s_prepare1_a#1 +Alias mulf8s::b#2 = mulf8s::b#4 mulf8s::b#5 mulf8s::b#3 +Alias mulf8u_prepare::a#0 = mulf8s::mulf8s_prepare1_$0 +Alias mulf8s_prepared::return#2 = mulf8s_prepared::return#4 +Alias mulf8s::return#0 = mulf8s::$1 mulf8s::return#4 mulf8s::return#1 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#4 keyboard_key_pressed::return#1 +Alias plex_show_idx#28 = plex_show_idx#35 +Alias plex_sprite_idx#28 = plex_sprite_idx#35 +Alias plex_sprite_msb#25 = plex_sprite_msb#34 +Alias plex_free_next#24 = plex_free_next#34 +Alias PLEX_SCREEN_PTR#10 = PLEX_SCREEN_PTR#3 PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#11 PLEX_SCREEN_PTR#4 +Alias plex_show_idx#16 = plex_show_idx#5 plex_show_idx#29 plex_show_idx#17 plex_show_idx#6 +Alias plex_sprite_idx#16 = plex_sprite_idx#5 plex_sprite_idx#29 plex_sprite_idx#17 plex_sprite_idx#6 +Alias plex_sprite_msb#17 = plex_sprite_msb#6 plex_sprite_msb#26 plex_sprite_msb#18 plex_sprite_msb#7 +Alias plex_free_next#14 = plex_free_next#5 plex_free_next#25 plex_free_next#15 plex_free_next#6 +Alias PLEX_SCREEN_PTR#12 = PLEX_SCREEN_PTR#5 +Alias PLEX_SCREEN_PTR#31 = PLEX_SCREEN_PTR#33 +Alias PLEX_SCREEN_PTR#13 = PLEX_SCREEN_PTR#28 PLEX_SCREEN_PTR#29 PLEX_SCREEN_PTR#25 PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#6 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#5 +Alias loop::angle#2 = loop::angle#4 loop::a#0 +Alias plex_show_idx#46 = plex_show_idx#48 +Alias plex_sprite_idx#46 = plex_sprite_idx#48 +Alias plex_sprite_msb#46 = plex_sprite_msb#48 +Alias plex_free_next#46 = plex_free_next#47 +Alias PLEX_SCREEN_PTR#45 = PLEX_SCREEN_PTR#46 +Alias mulf8s::return#2 = mulf8s::return#5 +Alias loop::i#2 = loop::i#4 loop::i#3 +Alias loop::r#2 = loop::r#3 loop::r#4 +Alias loop::a#2 = loop::a#3 loop::a#4 +Alias plex_show_idx#30 = plex_show_idx#42 plex_show_idx#44 plex_show_idx#37 +Alias plex_sprite_idx#30 = plex_sprite_idx#42 plex_sprite_idx#44 plex_sprite_idx#37 +Alias plex_sprite_msb#27 = plex_sprite_msb#42 plex_sprite_msb#44 plex_sprite_msb#36 +Alias plex_free_next#26 = plex_free_next#41 plex_free_next#44 plex_free_next#36 +Alias loop::angle#10 = loop::angle#9 loop::angle#7 loop::angle#5 loop::angle#3 +Alias PLEX_SCREEN_PTR#40 = PLEX_SCREEN_PTR#43 PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#42 PLEX_SCREEN_PTR#41 +Alias loop::x#0 = loop::$3 +Alias mulf8s::return#3 = mulf8s::return#6 +Alias loop::y#0 = loop::$7 +Alias plex_show_idx#18 = plex_show_idx#7 +Alias plex_sprite_idx#18 = plex_sprite_idx#7 +Alias plex_sprite_msb#19 = plex_sprite_msb#8 +Alias plex_free_next#16 = plex_free_next#7 +Alias plex_free_next#37 = plex_free_next#42 +Alias plex_sprite_idx#50 = plex_sprite_idx#51 +Alias plex_show_idx#50 = plex_show_idx#51 +Alias plex_sprite_msb#50 = plex_sprite_msb#51 +Alias PLEX_SCREEN_PTR#37 = PLEX_SCREEN_PTR#39 +Alias loop::angle#19 = loop::angle#20 +Alias plex_free_next#17 = plex_free_next#27 plex_free_next#45 plex_free_next#43 +Alias plex_sprite_idx#43 = plex_sprite_idx#47 plex_sprite_idx#49 plex_sprite_idx#45 +Alias plex_show_idx#43 = plex_show_idx#47 plex_show_idx#49 plex_show_idx#45 +Alias plex_sprite_msb#43 = plex_sprite_msb#47 plex_sprite_msb#49 plex_sprite_msb#45 +Alias loop::i1#5 = loop::i1#7 loop::i1#8 loop::i1#6 +Alias PLEX_SCREEN_PTR#32 = PLEX_SCREEN_PTR#35 PLEX_SCREEN_PTR#36 PLEX_SCREEN_PTR#34 +Alias loop::angle#15 = loop::angle#17 loop::angle#18 loop::angle#16 +Alias loop::plexFreeNextYpos1_return#0 = loop::plexFreeNextYpos1_return#2 loop::plexFreeNextYpos1_return#1 loop::plexFreeNextYpos1_return#3 loop::$13 loop::rasterY#0 +Alias plex_sprite_idx#23 = plex_sprite_idx#38 +Alias plex_show_idx#23 = plex_show_idx#38 +Alias plex_free_next#28 = plex_free_next#38 +Alias plex_sprite_msb#28 = plex_sprite_msb#37 +Alias loop::i1#2 = loop::i1#3 loop::i1#4 +Alias PLEX_SCREEN_PTR#27 = PLEX_SCREEN_PTR#30 PLEX_SCREEN_PTR#38 PLEX_SCREEN_PTR#50 PLEX_SCREEN_PTR#49 +Alias loop::angle#11 = loop::angle#13 loop::angle#14 loop::angle#12 loop::angle#8 +Alias plex_free_next#18 = plex_free_next#8 plex_free_next#39 plex_free_next#30 +Alias plex_sprite_idx#19 = plex_sprite_idx#8 plex_sprite_idx#39 plex_sprite_idx#32 +Alias plex_show_idx#19 = plex_show_idx#8 plex_show_idx#39 plex_show_idx#32 +Alias plex_sprite_msb#20 = plex_sprite_msb#9 plex_sprite_msb#38 plex_sprite_msb#30 +Alias keyboard_key_pressed::return#3 = keyboard_key_pressed::return#6 +Alias plex_show_idx#20 = plex_show_idx#9 +Alias plex_sprite_idx#20 = plex_sprite_idx#9 +Alias plex_sprite_msb#10 = plex_sprite_msb#21 +Alias plex_free_next#19 = plex_free_next#9 +Alias plex_free_next#31 = plex_free_next#4 +Alias PLEX_SCREEN_PTR#14 = PLEX_SCREEN_PTR#7 +Alias plex_show_idx#10 = plex_show_idx#21 +Alias plex_sprite_idx#10 = plex_sprite_idx#21 +Alias plex_sprite_msb#11 = plex_sprite_msb#22 +Alias plex_free_next#10 = plex_free_next#20 Successful SSA optimization Pass2AliasElimination -Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#14 -Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#14 -Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#15 -Alias (byte) plex_free_next#13 = (byte) plex_free_next#22 (byte) plex_free_next#2 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#27 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#27 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 -Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 -Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#2 +Alias plex_sprite_idx#12 = plex_sprite_idx#14 +Alias plex_show_idx#12 = plex_show_idx#14 +Alias plex_sprite_msb#13 = plex_sprite_msb#15 +Alias plex_free_next#13 = plex_free_next#22 plex_free_next#2 +Alias plex_sprite_idx#15 = plex_sprite_idx#27 +Alias plex_show_idx#15 = plex_show_idx#27 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#3 +Alias mulf_init::sqr1_hi#2 = mulf_init::sqr1_hi#3 +Alias mulf_init::c#1 = mulf_init::c#4 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#4 +Alias mulf_init::x_255#1 = mulf_init::x_255#4 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#4 +Alias mulf8s_prepared::b#1 = mulf8s_prepared::b#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) plexInit::plexSetScreen1_screen#0 (byte*) plexInit::screen#0 Identical Phi Values (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1 @@ -2501,7 +2501,7 @@ Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) plexShowSprite::$11 = (byte~) plexShowSprite::$10 +Alias plexShowSprite::$11 = plexShowSprite::$10 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) plexSort::$5 [19] if((byte) plexSort::s#1!=(byte) $ff) goto plexSort::@8 Simple Condition (bool~) plexSort::$6 [210] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 @@ -2590,9 +2590,9 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$1) Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$4) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 -Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 -Alias (byte~) init::$3 = (byte~) init::$11 +Alias plexSort::m#2 = plexSort::$1 +Alias plexSort::s#3 = plexSort::$4 +Alias init::$3 = init::$11 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_key_pressed::key#2 (const byte) KEY_SPACE Successful SSA optimization Pass2IdenticalPhiElimination @@ -3254,199 +3254,199 @@ plexInit::@return: scope:[plexInit] from plexInit::@1 VARIABLE REGISTER WEIGHTS (byte*) PLEX_SCREEN_PTR (void()) exit() -(byte~) exit::$0 22.0 +(byte~) exit::$0 2002.0 (void()) init() -(byte~) init::$10 22.0 -(byte~) init::$3 22.0 -(byte~) init::$4 11.0 -(byte~) init::$5 22.0 -(byte~) init::$6 22.0 -(byte~) init::$9 22.0 +(byte~) init::$10 2002.0 +(byte~) init::$3 2002.0 +(byte~) init::$4 1001.0 +(byte~) init::$5 2002.0 +(byte~) init::$6 2002.0 +(byte~) init::$9 2002.0 (byte) init::i -(byte) init::i#1 16.5 -(byte) init::i#2 8.799999999999999 +(byte) init::i#1 1501.5 +(byte) init::i#2 800.8000000000001 (byte) init::i1 -(byte) init::i1#1 16.5 -(byte) init::i1#2 16.5 +(byte) init::i1#1 1501.5 +(byte) init::i1#2 1501.5 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 20002.0 (byte) keyboard_key_pressed::colidx (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 6.0 -(byte) keyboard_key_pressed::return#2 22.0 -(byte) keyboard_key_pressed::return#3 22.0 +(byte) keyboard_key_pressed::return#0 3000.75 +(byte) keyboard_key_pressed::return#2 2002.0 +(byte) keyboard_key_pressed::return#3 2002.0 (byte) keyboard_key_pressed::rowidx (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 36667.33333333333 +(byte) keyboard_matrix_read::return#2 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) loop() -(signed word~) loop::$1 202.0 -(byte~) loop::$11 202.0 -(byte~) loop::$18 22.0 -(signed word~) loop::$2 202.0 -(byte~) loop::$20 202.0 -(byte~) loop::$4 101.0 -(signed word~) loop::$5 202.0 -(signed word~) loop::$6 202.0 -(byte~) loop::$8 202.0 +(signed word~) loop::$1 20002.0 +(byte~) loop::$11 20002.0 +(byte~) loop::$18 2002.0 +(signed word~) loop::$2 20002.0 +(byte~) loop::$20 20002.0 +(byte~) loop::$4 10001.0 +(signed word~) loop::$5 20002.0 +(signed word~) loop::$6 20002.0 +(byte~) loop::$8 20002.0 (byte) loop::a -(byte) loop::a#1 50.5 -(byte) loop::a#2 19.761904761904763 -(byte) loop::a#6 22.0 +(byte) loop::a#1 5000.5 +(byte) loop::a#2 1952.6190476190475 +(byte) loop::a#6 2002.0 (byte) loop::angle -(byte) loop::angle#1 1.2941176470588236 -(byte) loop::angle#6 1.064516129032258 +(byte) loop::angle#1 117.76470588235294 +(byte) loop::angle#6 96.87096774193549 (byte) loop::i -(byte) loop::i#1 151.5 -(byte) loop::i#2 17.565217391304348 +(byte) loop::i#1 15001.5 +(byte) loop::i#2 1739.304347826087 (byte) loop::i1 -(byte) loop::i1#1 151.5 -(byte) loop::i1#5 33.666666666666664 +(byte) loop::i1#1 15001.5 +(byte) loop::i1#5 3333.6666666666665 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 551.0 +(byte) loop::plexFreeNextYpos1_return#0 55001.0 (signed byte) loop::r -(signed byte) loop::r#1 67.33333333333333 -(signed byte) loop::r#2 18.363636363636363 +(signed byte) loop::r#1 6667.333333333333 +(signed byte) loop::r#2 1818.3636363636363 (byte) loop::rasterY (signed word) loop::x -(signed word) loop::x#0 202.0 +(signed word) loop::x#0 20002.0 (signed word) loop::y -(signed word) loop::y#0 202.0 +(signed word) loop::y#0 20002.0 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 101.0 -(signed byte) mulf8s::a#1 101.0 +(signed byte) mulf8s::a#0 10001.0 +(signed byte) mulf8s::a#1 10001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 202.0 -(signed byte) mulf8s::b#1 202.0 -(signed byte) mulf8s::b#2 68.0 +(signed byte) mulf8s::b#0 20002.0 +(signed byte) mulf8s::b#1 20002.0 +(signed byte) mulf8s::b#2 40001.0 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 20002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 51.0 -(signed word) mulf8s::return#2 202.0 -(signed word) mulf8s::return#3 202.0 +(signed word) mulf8s::return#0 30000.75 +(signed word) mulf8s::return#2 20002.0 +(signed word) mulf8s::return#3 20002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 4.0 -(byte~) mulf8s_prepared::$15 4.0 -(byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$8 4.0 +(byte~) mulf8s_prepared::$12 2000002.0 +(byte~) mulf8s_prepared::$15 2000002.0 +(byte~) mulf8s_prepared::$16 2000002.0 +(byte~) mulf8s_prepared::$8 2000002.0 (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 0.4 +(signed byte) mulf8s_prepared::b#0 110000.20000000001 (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.5 +(word) mulf8s_prepared::m#0 1000001.0 +(word) mulf8s_prepared::m#1 2000002.0 +(word) mulf8s_prepared::m#2 2000002.0 +(word) mulf8s_prepared::m#4 666667.3333333334 +(word) mulf8s_prepared::m#5 1250001.25 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 4.0 +(byte) mulf8u_prepare::a#0 1100002.0 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 4.0 +(byte) mulf8u_prepared::b#0 1.1000002E7 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 1.3333333333333333 -(word) mulf8u_prepared::return#2 4.0 +(word) mulf8u_prepared::return#0 3666667.333333333 +(word) mulf8u_prepared::return#2 2000002.0 (void()) mulf_init() -(byte~) mulf_init::$1 22.0 -(byte~) mulf_init::$4 22.0 -(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$1 20002.0 +(byte~) mulf_init::$4 20002.0 +(byte~) mulf_init::$5 20002.0 (byte) mulf_init::c -(byte) mulf_init::c#1 2.5384615384615383 -(byte) mulf_init::c#2 11.0 +(byte) mulf_init::c#1 2307.9230769230767 +(byte) mulf_init::c#2 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 4.125 -(byte) mulf_init::dir#4 11.0 +(byte) mulf_init::dir#2 3750.375 +(byte) mulf_init::dir#4 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 11.0 -(word) mulf_init::sqr#2 22.0 -(word) mulf_init::sqr#3 9.166666666666666 -(word) mulf_init::sqr#4 5.5 +(word) mulf_init::sqr#1 10001.0 +(word) mulf_init::sqr#2 20002.0 +(word) mulf_init::sqr#3 8334.166666666666 +(word) mulf_init::sqr#4 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 2.75 +(byte*) mulf_init::sqr1_hi#1 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 22.0 -(byte*) mulf_init::sqr1_lo#2 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 20002.0 +(byte*) mulf_init::sqr1_lo#2 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 8.25 +(byte*) mulf_init::sqr2_hi#1 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 22.0 -(byte*) mulf_init::sqr2_lo#2 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 20002.0 +(byte*) mulf_init::sqr2_lo#2 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 11.0 -(byte) mulf_init::x_2#2 5.5 -(byte) mulf_init::x_2#3 6.6000000000000005 +(byte) mulf_init::x_2#1 10001.0 +(byte) mulf_init::x_2#2 5000.5 +(byte) mulf_init::x_2#3 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 6.6000000000000005 -(byte) mulf_init::x_255#2 8.8 +(byte) mulf_init::x_255#1 6000.6 +(byte) mulf_init::x_255#2 8000.8 (void()) plexInit((byte*) plexInit::screen) (byte) plexInit::i -(byte) plexInit::i#1 16.5 -(byte) plexInit::i#2 22.0 +(byte) plexInit::i#1 15001.5 +(byte) plexInit::i#2 20002.0 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 2.0 -(byte~) plexShowSprite::$2 4.0 -(byte~) plexShowSprite::$3 4.0 -(byte~) plexShowSprite::$5 4.0 -(byte~) plexShowSprite::$9 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$0 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 4.0 +(byte~) plexShowSprite::$11 100001.0 +(byte~) plexShowSprite::$2 200002.0 +(byte~) plexShowSprite::$3 200002.0 +(byte~) plexShowSprite::$5 200002.0 +(byte~) plexShowSprite::$9 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 4.0 +(byte) plexShowSprite::xpos_idx#0 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (byte) plexSort::m -(byte) plexSort::m#1 151.5 -(byte) plexSort::m#2 42.08333333333333 +(byte) plexSort::m#1 1500001.5 +(byte) plexSort::m#2 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 30.299999999999997 +(byte) plexSort::nxt_idx#0 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 150.375 +(byte) plexSort::nxt_y#0 1500000.375 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 151.5 -(byte) plexSort::plexFreePrepare1_s#2 151.5 +(byte) plexSort::plexFreePrepare1_s#1 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 1368.3333333333335 -(byte) plexSort::s#2 202.0 -(byte) plexSort::s#3 2052.5 -(byte) plexSort::s#6 202.0 +(byte) plexSort::s#1 1.3666668333333332E7 +(byte) plexSort::s#2 2000002.0 +(byte) plexSort::s#3 2.05000025E7 +(byte) plexSort::s#6 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 4.681818181818182 -(byte) plex_free_next#17 20.599999999999998 +(byte) plex_free_next#13 5000.090909090909 +(byte) plex_free_next#17 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 11.444444444444443 -(byte) plex_show_idx#43 4.541666666666665 +(byte) plex_show_idx#15 12222.444444444445 +(byte) plex_show_idx#43 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 10.299999999999999 -(byte) plex_sprite_idx#43 4.863636363636363 +(byte) plex_sprite_idx#15 11000.2 +(byte) plex_sprite_idx#43 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 20.599999999999998 -(byte) plex_sprite_msb#3 2.0 -(byte) plex_sprite_msb#43 4.28 +(byte) plex_sprite_msb#16 22000.4 +(byte) plex_sprite_msb#3 100001.0 +(byte) plex_sprite_msb#43 12400.16 Initial phi equivalence classes [ loop::angle#6 loop::angle#1 ] @@ -5124,186 +5124,174 @@ SIN: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [25] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ ] main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 ] ) always clobbers reg byte a +Statement [25] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ loop::angle#6 loop::angle#1 ] -Statement [26] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ keyboard_matrix_read::return#0 ] main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [30] if(*((const byte*) RASTER)<(byte) $d8) goto loop::@2 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [31] *((const byte*) BORDERCOL) ← (byte) $f [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [34] *((const byte*) BORDERCOL) ← (byte) 6 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ) always clobbers reg byte a +Statement [26] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [30] if(*((const byte*) RASTER)<(byte) $d8) goto loop::@2 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) $f [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) BORDERCOL) ← (byte) 6 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ loop::r#2 loop::r#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ loop::i#2 loop::i#1 ] -Statement [38] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [39] (signed word~) loop::$1 ← (signed word) mulf8s::return#2 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ) always clobbers reg byte a -Statement [40] (signed word~) loop::$2 ← (signed word~) loop::$1 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ) always clobbers reg byte a -Statement [41] (signed word) loop::x#0 ← (signed word~) loop::$2 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ) always clobbers reg byte a -Statement [42] (byte~) loop::$4 ← > (signed word) loop::x#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 ] ) always clobbers reg byte a -Statement [43] (byte~) loop::$20 ← (byte) loop::i#2 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ) always clobbers reg byte a +Statement [38] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [39] (signed word~) loop::$1 ← (signed word) mulf8s::return#2 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [40] (signed word~) loop::$2 ← (signed word~) loop::$1 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [41] (signed word) loop::x#0 ← (signed word~) loop::$2 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [43] (byte~) loop::$20 ← (byte) loop::i#2 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ loop::$4 ] -Statement [44] *((const word*) PLEX_XPOS + (byte~) loop::$20) ← (byte~) loop::$4 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ) always clobbers reg byte a -Statement [48] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [49] (signed word~) loop::$5 ← (signed word) mulf8s::return#3 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ) always clobbers reg byte a -Statement [50] (signed word~) loop::$6 ← (signed word~) loop::$5 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ) always clobbers reg byte a -Statement [51] (signed word) loop::y#0 ← (signed word~) loop::$6 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ) always clobbers reg byte a -Statement [52] (byte~) loop::$8 ← > (signed word) loop::y#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$8 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$8 ] ) always clobbers reg byte a -Statement [54] (byte) loop::a#1 ← (byte) loop::a#2 + (byte) $62 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ) always clobbers reg byte a -Statement [55] (signed byte) loop::r#1 ← (signed byte) loop::r#2 + (signed byte) 3 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ) always clobbers reg byte a -Statement [58] *((const byte*) BORDERCOL) ← (byte) 3 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [60] (byte) loop::angle#1 ← (byte) loop::angle#6 + (byte) 3 [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [61] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [62] (byte~) loop::$11 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::angle#1 loop::$11 ] ( main:2::loop:7 [ loop::angle#1 loop::$11 ] ) always clobbers reg byte a -Statement [65] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ( main:2::loop:7 [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ) always clobbers reg byte a +Statement [44] *((const word*) PLEX_XPOS + (byte~) loop::$20) ← (byte~) loop::$4 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [48] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [49] (signed word~) loop::$5 ← (signed word) mulf8s::return#3 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] { } ) always clobbers reg byte a +Statement [50] (signed word~) loop::$6 ← (signed word~) loop::$5 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] { } ) always clobbers reg byte a +Statement [51] (signed word) loop::y#0 ← (signed word~) loop::$6 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] { } ) always clobbers reg byte a +Statement [54] (byte) loop::a#1 ← (byte) loop::a#2 + (byte) $62 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] { } ) always clobbers reg byte a +Statement [55] (signed byte) loop::r#1 ← (signed byte) loop::r#2 + (signed byte) 3 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] { } ) always clobbers reg byte a +Statement [58] *((const byte*) BORDERCOL) ← (byte) 3 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [60] (byte) loop::angle#1 ← (byte) loop::angle#6 + (byte) 3 [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { } ) always clobbers reg byte a +Statement [62] (byte~) loop::$11 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::angle#1 loop::$11 ] ( main:2::loop:7 [ loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ( main:2::loop:7 [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ loop::i1#5 loop::i1#1 ] -Statement [72] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [78] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#43 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [85] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#43) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#43)) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a +Statement [72] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } } ) always clobbers reg byte a +Statement [78] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#43 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [85] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#43) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#43)) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [87] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [88] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [87] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [88] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ plexShowSprite::$11 ] -Statement [90] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [92] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [93] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ) always clobbers reg byte a -Statement [102] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ) always clobbers reg byte a -Statement [110] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a +Statement [90] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [92] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [93] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [102] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [110] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ plexSort::m#2 plexSort::m#1 ] Removing always clobbered register reg byte a as potential for zp[1]:76 [ plexSort::nxt_idx#0 ] Removing always clobbered register reg byte a as potential for zp[1]:77 [ plexSort::nxt_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Statement [113] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [115] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 ] ) always clobbers reg byte a -Statement [120] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a +Statement [113] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [115] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [120] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] -Statement [129] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::loop:7::mulf8s:37 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] main:2::loop:7::mulf8s:47 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [133] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [129] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::loop:7::mulf8s:37 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [133] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:80 [ mulf8s_prepared::b#0 ] -Statement [134] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [135] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [136] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [137] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [141] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [142] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [134] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [135] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [137] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [142] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) 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[1]:2 [ loop::angle#6 loop::angle#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ loop::r#2 loop::r#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] Removing always clobbered register reg byte x as potential for zp[1]:5 [ loop::i#2 loop::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:80 [ mulf8s_prepared::b#0 ] -Statement [148] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [148] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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[1]:15 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] -Statement [153] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [156] *((const byte*) PLEX_PTR + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [153] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [156] *((const byte*) PLEX_PTR + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ init::i#2 init::i#1 ] -Statement [157] (byte~) init::$10 ← (byte) init::i#2 << (byte) 2 [ init::i#2 init::$10 ] ( main:2::init:5 [ init::i#2 init::$10 ] ) always clobbers reg byte a -Statement [158] (byte~) init::$3 ← (byte~) init::$10 + (byte) init::i#2 [ init::i#2 init::$3 ] ( main:2::init:5 [ init::i#2 init::$3 ] ) always clobbers reg byte a -Statement [160] (byte~) init::$9 ← (byte) init::i#2 << (byte) 1 [ init::i#2 init::$4 init::$9 ] ( main:2::init:5 [ init::i#2 init::$4 init::$9 ] ) always clobbers reg byte a +Statement [157] (byte~) init::$10 ← (byte) init::i#2 << (byte) 2 [ init::i#2 init::$10 ] ( main:2::init:5 [ init::i#2 init::$10 ] { } ) always clobbers reg byte a +Statement [158] (byte~) init::$3 ← (byte~) init::$10 + (byte) init::i#2 [ init::i#2 init::$3 ] ( main:2::init:5 [ init::i#2 init::$3 ] { } ) always clobbers reg byte a +Statement [160] (byte~) init::$9 ← (byte) init::i#2 << (byte) 1 [ init::i#2 init::$4 init::$9 ] ( main:2::init:5 [ init::i#2 init::$4 init::$9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:94 [ init::$4 ] -Statement [161] *((const word*) PLEX_XPOS + (byte~) init::$9) ← (byte~) init::$4 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [162] (byte~) init::$5 ← (byte) init::i#2 << (byte) 3 [ init::i#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::$5 ] ) always clobbers reg byte a -Statement [167] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [169] *((const byte*) SPRITES_COLS + (byte) init::i1#2) ← (const byte) GREEN [ init::i1#2 ] ( main:2::init:5 [ init::i1#2 ] ) always clobbers reg byte a +Statement [161] *((const word*) PLEX_XPOS + (byte~) init::$9) ← (byte~) init::$4 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [162] (byte~) init::$5 ← (byte) init::i#2 << (byte) 3 [ init::i#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::$5 ] { } ) always clobbers reg byte a +Statement [167] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [169] *((const byte*) SPRITES_COLS + (byte) init::i1#2) ← (const byte) GREEN [ init::i1#2 ] ( main:2::init:5 [ init::i1#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ init::i1#2 init::i1#1 ] -Statement [179] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [181] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [179] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [181] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [187] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [187] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [188] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] ) always clobbers reg byte a -Statement [189] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] ) always clobbers reg byte a -Statement [191] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [188] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] { } ) always clobbers reg byte a +Statement [189] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] { } ) always clobbers reg byte a +Statement [191] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [192] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [194] (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::init:5::mulf_init:173 [ 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 [200] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [205] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::init:5::mulf_init:173 [ 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::$4 ] ) always clobbers reg byte a -Statement [206] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:173 [ 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 [192] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [194] (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::init:5::mulf_init:173 [ 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 [200] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:173 [ 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[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [207] (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::init:5::mulf_init:173 [ 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 [208] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:173 [ 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 [210] (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::init:5::mulf_init:173 [ 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 [25] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ ] main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [26] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ keyboard_matrix_read::return#0 ] main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [30] if(*((const byte*) RASTER)<(byte) $d8) goto loop::@2 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [31] *((const byte*) BORDERCOL) ← (byte) $f [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [34] *((const byte*) BORDERCOL) ← (byte) 6 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ) always clobbers reg byte a -Statement [38] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [39] (signed word~) loop::$1 ← (signed word) mulf8s::return#2 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ) always clobbers reg byte a -Statement [40] (signed word~) loop::$2 ← (signed word~) loop::$1 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ) always clobbers reg byte a -Statement [41] (signed word) loop::x#0 ← (signed word~) loop::$2 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ) always clobbers reg byte a -Statement [42] (byte~) loop::$4 ← > (signed word) loop::x#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 ] ) always clobbers reg byte a -Statement [43] (byte~) loop::$20 ← (byte) loop::i#2 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ) always clobbers reg byte a -Statement [44] *((const word*) PLEX_XPOS + (byte~) loop::$20) ← (byte~) loop::$4 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ) always clobbers reg byte a -Statement [48] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ) always clobbers reg byte a -Statement [49] (signed word~) loop::$5 ← (signed word) mulf8s::return#3 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ) always clobbers reg byte a -Statement [50] (signed word~) loop::$6 ← (signed word~) loop::$5 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ) always clobbers reg byte a -Statement [51] (signed word) loop::y#0 ← (signed word~) loop::$6 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ) always clobbers reg byte a -Statement [52] (byte~) loop::$8 ← > (signed word) loop::y#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$8 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$8 ] ) always clobbers reg byte a -Statement [54] (byte) loop::a#1 ← (byte) loop::a#2 + (byte) $62 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ) always clobbers reg byte a -Statement [55] (signed byte) loop::r#1 ← (signed byte) loop::r#2 + (signed byte) 3 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ) always clobbers reg byte a -Statement [58] *((const byte*) BORDERCOL) ← (byte) 3 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] ) always clobbers reg byte a -Statement [60] (byte) loop::angle#1 ← (byte) loop::angle#6 + (byte) 3 [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [61] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [62] (byte~) loop::$11 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::angle#1 loop::$11 ] ( main:2::loop:7 [ loop::angle#1 loop::$11 ] ) always clobbers reg byte a -Statement [65] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ( main:2::loop:7 [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ) always clobbers reg byte a -Statement [72] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] ) always clobbers reg byte a -Statement [78] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#43 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [85] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#43) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#43)) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [87] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [88] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a -Statement [90] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [92] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [93] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ) always clobbers reg byte a -Statement [102] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ) always clobbers reg byte a -Statement [107] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a -Statement [110] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a -Statement [113] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [115] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 ] ) always clobbers reg byte a -Statement [120] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a -Statement [129] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::loop:7::mulf8s:37 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] main:2::loop:7::mulf8s:47 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [133] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [134] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [135] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [136] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [137] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [141] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [142] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [208] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:173 [ 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 [210] (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::init:5::mulf_init:173 [ 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 [25] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [26] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::exit:9::keyboard_key_pressed:14::keyboard_matrix_read:20 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::loop:7::keyboard_key_pressed:73::keyboard_matrix_read:20 [ loop::angle#1 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [30] if(*((const byte*) RASTER)<(byte) $d8) goto loop::@2 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) BORDERCOL) ← (byte) $f [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) BORDERCOL) ← (byte) 6 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [38] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [39] (signed word~) loop::$1 ← (signed word) mulf8s::return#2 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$1 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [40] (signed word~) loop::$2 ← (signed word~) loop::$1 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [41] (signed word) loop::x#0 ← (signed word~) loop::$2 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::x#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [43] (byte~) loop::$20 ← (byte) loop::i#2 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$4 loop::$20 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [44] *((const word*) PLEX_XPOS + (byte~) loop::$20) ← (byte~) loop::$4 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [48] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#3 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [49] (signed word~) loop::$5 ← (signed word) mulf8s::return#3 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$5 ] { } ) always clobbers reg byte a +Statement [50] (signed word~) loop::$6 ← (signed word~) loop::$5 << (byte) 1 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::$6 ] { } ) always clobbers reg byte a +Statement [51] (signed word) loop::y#0 ← (signed word~) loop::$6 + (signed word)(number) $7d*(number) $100 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 loop::y#0 ] { } ) always clobbers reg byte a +Statement [54] (byte) loop::a#1 ← (byte) loop::a#2 + (byte) $62 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::r#2 loop::i#2 loop::a#1 ] { } ) always clobbers reg byte a +Statement [55] (signed byte) loop::r#1 ← (signed byte) loop::r#2 + (signed byte) 3 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] ( main:2::loop:7 [ loop::angle#6 loop::i#2 loop::r#1 loop::a#1 ] { } ) always clobbers reg byte a +Statement [58] *((const byte*) BORDERCOL) ← (byte) 3 [ loop::angle#6 ] ( main:2::loop:7 [ loop::angle#6 ] { } ) always clobbers reg byte a +Statement [60] (byte) loop::angle#1 ← (byte) loop::angle#6 + (byte) 3 [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { } ) always clobbers reg byte a +Statement [62] (byte~) loop::$11 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::angle#1 loop::$11 ] ( main:2::loop:7 [ loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] ( main:2::loop:7 [ loop::angle#1 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 loop::i1#5 ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::angle#1 ] ( main:2::loop:7 [ loop::angle#1 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } } ) always clobbers reg byte a +Statement [78] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#43 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_free_next#17 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [85] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#43) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#43)) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [87] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [88] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a +Statement [90] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [92] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [93] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [102] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#43 [ plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] ( main:2::loop:7::plexShowSprite:69 [ loop::angle#1 loop::i1#5 plex_sprite_idx#43 plex_show_idx#43 plex_sprite_msb#43 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [107] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a +Statement [110] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a +Statement [113] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [115] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [120] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:2::loop:7::plexSort:59 [ loop::angle#6 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a +Statement [129] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::loop:7::mulf8s:37 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [133] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#2 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a +Statement [134] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [135] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [137] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) always clobbers reg byte a +Statement [142] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } } ) 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 [148] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::loop:7::mulf8s:47::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [148] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::loop:7::mulf8s:37::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#0 loop::r#2 } { mulf8s::b#0 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::loop:7::mulf8s:47::mulf8s_prepared:128::mulf8u_prepared:132 [ loop::angle#6 loop::r#2 loop::a#2 loop::i#2 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::mulf8s_prepare1_a#0 = mulf8s::a#1 loop::r#2 } { mulf8s::b#1 = mulf8s::b#2 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#3 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [153] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [156] *((const byte*) PLEX_PTR + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [157] (byte~) init::$10 ← (byte) init::i#2 << (byte) 2 [ init::i#2 init::$10 ] ( main:2::init:5 [ init::i#2 init::$10 ] ) always clobbers reg byte a -Statement [158] (byte~) init::$3 ← (byte~) init::$10 + (byte) init::i#2 [ init::i#2 init::$3 ] ( main:2::init:5 [ init::i#2 init::$3 ] ) always clobbers reg byte a -Statement [160] (byte~) init::$9 ← (byte) init::i#2 << (byte) 1 [ init::i#2 init::$4 init::$9 ] ( main:2::init:5 [ init::i#2 init::$4 init::$9 ] ) always clobbers reg byte a -Statement [161] *((const word*) PLEX_XPOS + (byte~) init::$9) ← (byte~) init::$4 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [162] (byte~) init::$5 ← (byte) init::i#2 << (byte) 3 [ init::i#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::$5 ] ) always clobbers reg byte a -Statement [167] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [169] *((const byte*) SPRITES_COLS + (byte) init::i1#2) ← (const byte) GREEN [ init::i1#2 ] ( main:2::init:5 [ init::i1#2 ] ) always clobbers reg byte a -Statement [179] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [181] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [187] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [188] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] ) always clobbers reg byte a -Statement [189] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] ) always clobbers reg byte a -Statement [191] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [192] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [194] (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::init:5::mulf_init:173 [ 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 [200] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [205] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::init:5::mulf_init:173 [ 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::$4 ] ) always clobbers reg byte a -Statement [206] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:173 [ 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 [207] (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::init:5::mulf_init:173 [ 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 [208] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:173 [ 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 [210] (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::init:5::mulf_init:173 [ 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 [153] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [156] *((const byte*) PLEX_PTR + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [157] (byte~) init::$10 ← (byte) init::i#2 << (byte) 2 [ init::i#2 init::$10 ] ( main:2::init:5 [ init::i#2 init::$10 ] { } ) always clobbers reg byte a +Statement [158] (byte~) init::$3 ← (byte~) init::$10 + (byte) init::i#2 [ init::i#2 init::$3 ] ( main:2::init:5 [ init::i#2 init::$3 ] { } ) always clobbers reg byte a +Statement [160] (byte~) init::$9 ← (byte) init::i#2 << (byte) 1 [ init::i#2 init::$4 init::$9 ] ( main:2::init:5 [ init::i#2 init::$4 init::$9 ] { } ) always clobbers reg byte a +Statement [161] *((const word*) PLEX_XPOS + (byte~) init::$9) ← (byte~) init::$4 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [162] (byte~) init::$5 ← (byte) init::i#2 << (byte) 3 [ init::i#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::$5 ] { } ) always clobbers reg byte a +Statement [167] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [169] *((const byte*) SPRITES_COLS + (byte) init::i1#2) ← (const byte) GREEN [ init::i1#2 ] ( main:2::init:5 [ init::i1#2 ] { } ) always clobbers reg byte a +Statement [179] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [181] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init:5::memset:175 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [185] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [187] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [188] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] { } ) always clobbers reg byte a +Statement [189] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:173 [ ] { } ) always clobbers reg byte a +Statement [191] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [192] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [194] (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::init:5::mulf_init:173 [ 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 [200] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:173 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:173 [ 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 [208] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:173 [ 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 [210] (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::init:5::mulf_init:173 [ 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 Potential registers zp[1]:2 [ loop::angle#6 loop::angle#1 ] : zp[1]:2 , reg byte y , Potential registers zp[1]:3 [ loop::r#2 loop::r#1 ] : zp[1]:3 , reg byte y , Potential registers zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] : zp[1]:4 , reg byte y , @@ -5387,106 +5375,106 @@ Potential registers zp[1]:99 [ mulf_init::$4 ] : zp[1]:99 , reg byte a , reg byt Potential registers zp[1]:100 [ mulf_init::$5 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plexSort] 3,622.83: zp[1]:12 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp[1]:13 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp[1]:78 [ plexSort::s#2 ] 193.58: zp[1]:11 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp[1]:77 [ plexSort::nxt_y#0 ] 30.3: zp[1]:76 [ plexSort::nxt_idx#0 ] -Uplift Scope [loop] 551: zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] 202: zp[2]:45 [ loop::$1 ] 202: zp[2]:47 [ loop::$2 ] 202: zp[2]:49 [ loop::x#0 ] 202: zp[1]:52 [ loop::$20 ] 202: zp[2]:55 [ loop::$5 ] 202: zp[2]:57 [ loop::$6 ] 202: zp[2]:59 [ loop::y#0 ] 202: zp[1]:61 [ loop::$8 ] 202: zp[1]:62 [ loop::$11 ] 185.17: zp[1]:10 [ loop::i1#5 loop::i1#1 ] 169.07: zp[1]:5 [ loop::i#2 loop::i#1 ] 101: zp[1]:51 [ loop::$4 ] 92.26: zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] 85.7: zp[1]:3 [ loop::r#2 loop::r#1 ] 22: zp[1]:65 [ loop::$18 ] 2.36: zp[1]:2 [ loop::angle#6 loop::angle#1 ] -Uplift Scope [mulf8s] 472: zp[1]:15 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] 404: zp[1]:14 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] 202: zp[2]:43 [ mulf8s::return#2 ] 202: zp[2]:53 [ mulf8s::return#3 ] 51: zp[2]:81 [ mulf8s::return#0 ] -Uplift Scope [mulf_init] 47.67: zp[2]:34 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:28 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:22 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:27 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:98 [ mulf_init::$1 ] 22: zp[1]:99 [ mulf_init::$4 ] 22: zp[1]:100 [ mulf_init::$5 ] 15.4: zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:31 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:25 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [init] 33: zp[1]:19 [ init::i1#2 init::i1#1 ] 25.3: zp[1]:18 [ init::i#2 init::i#1 ] 22: zp[1]:92 [ init::$10 ] 22: zp[1]:93 [ init::$3 ] 22: zp[1]:95 [ init::$9 ] 22: zp[1]:96 [ init::$5 ] 22: zp[1]:97 [ init::$6 ] 11: zp[1]:94 [ init::$4 ] -Uplift Scope [] 26.88: zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] 25.28: zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] 15.99: zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] 15.16: zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] -Uplift Scope [keyboard_key_pressed] 22: zp[1]:37 [ keyboard_key_pressed::return#2 ] 22: zp[1]:64 [ keyboard_key_pressed::return#3 ] 6: zp[1]:41 [ keyboard_key_pressed::return#0 ] 4: zp[1]:40 [ keyboard_key_pressed::$2 ] -Uplift Scope [plexInit] 38.5: zp[1]:36 [ plexInit::i#2 plexInit::i#1 ] -Uplift Scope [memset] 36.67: zp[2]:20 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [plexShowSprite] 4: zp[1]:68 [ plexShowSprite::plexFreeAdd1_$0 ] 4: zp[1]:69 [ plexShowSprite::plexFreeAdd1_$1 ] 4: zp[1]:70 [ plexShowSprite::xpos_idx#0 ] 4: zp[1]:72 [ plexShowSprite::$2 ] 4: zp[1]:73 [ plexShowSprite::$3 ] 4: zp[1]:74 [ plexShowSprite::$9 ] 4: zp[1]:75 [ plexShowSprite::$5 ] 3: zp[1]:67 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp[1]:71 [ plexShowSprite::$11 ] 0.55: zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplift Scope [mulf8s_prepared] 13.83: zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:86 [ mulf8s_prepared::$8 ] 4: zp[1]:87 [ mulf8s_prepared::$15 ] 4: zp[1]:88 [ mulf8s_prepared::$12 ] 4: zp[1]:89 [ mulf8s_prepared::$16 ] 0.4: zp[1]:80 [ mulf8s_prepared::b#0 ] -Uplift Scope [exit] 22: zp[1]:38 [ exit::$0 ] -Uplift Scope [mulf8u_prepared] 4: zp[1]:83 [ mulf8u_prepared::b#0 ] 4: zp[2]:84 [ mulf8u_prepared::return#2 ] 1.33: zp[2]:90 [ mulf8u_prepared::return#0 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:39 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:42 [ keyboard_matrix_read::return#0 ] -Uplift Scope [mulf8u_prepare] 4: zp[1]:79 [ mulf8u_prepare::a#0 ] +Uplift Scope [plexSort] 36,166,672.83: zp[1]:12 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 3,000,003: zp[1]:13 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 2,000,002: zp[1]:78 [ plexSort::s#2 ] 1,916,668.58: zp[1]:11 [ plexSort::m#2 plexSort::m#1 ] 1,500,000.38: zp[1]:77 [ plexSort::nxt_y#0 ] 300,000.3: zp[1]:76 [ plexSort::nxt_idx#0 ] +Uplift Scope [mulf8u_prepared] 11,000,002: zp[1]:83 [ mulf8u_prepared::b#0 ] 3,666,667.33: zp[2]:90 [ mulf8u_prepared::return#0 ] 2,000,002: zp[2]:84 [ mulf8u_prepared::return#2 ] +Uplift Scope [mulf8s_prepared] 6,916,673.58: zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 2,000,002: zp[1]:86 [ mulf8s_prepared::$8 ] 2,000,002: zp[1]:87 [ mulf8s_prepared::$15 ] 2,000,002: zp[1]:88 [ mulf8s_prepared::$12 ] 2,000,002: zp[1]:89 [ mulf8s_prepared::$16 ] 110,000.2: zp[1]:80 [ mulf8s_prepared::b#0 ] +Uplift Scope [plexShowSprite] 200,002: zp[1]:68 [ plexShowSprite::plexFreeAdd1_$0 ] 200,002: zp[1]:69 [ plexShowSprite::plexFreeAdd1_$1 ] 200,002: zp[1]:70 [ plexShowSprite::xpos_idx#0 ] 200,002: zp[1]:72 [ plexShowSprite::$2 ] 200,002: zp[1]:73 [ plexShowSprite::$3 ] 200,002: zp[1]:74 [ plexShowSprite::$9 ] 200,002: zp[1]:75 [ plexShowSprite::$5 ] 150,001.5: zp[1]:67 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 100,001: zp[1]:71 [ plexShowSprite::$11 ] 27,273: zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplift Scope [mulf8u_prepare] 1,100,002: zp[1]:79 [ mulf8u_prepare::a#0 ] +Uplift Scope [loop] 55,001: zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] 20,002: zp[2]:45 [ loop::$1 ] 20,002: zp[2]:47 [ loop::$2 ] 20,002: zp[2]:49 [ loop::x#0 ] 20,002: zp[1]:52 [ loop::$20 ] 20,002: zp[2]:55 [ loop::$5 ] 20,002: zp[2]:57 [ loop::$6 ] 20,002: zp[2]:59 [ loop::y#0 ] 20,002: zp[1]:61 [ loop::$8 ] 20,002: zp[1]:62 [ loop::$11 ] 18,335.17: zp[1]:10 [ loop::i1#5 loop::i1#1 ] 16,740.8: zp[1]:5 [ loop::i#2 loop::i#1 ] 10,001: zp[1]:51 [ loop::$4 ] 8,955.12: zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] 8,485.7: zp[1]:3 [ loop::r#2 loop::r#1 ] 2,002: zp[1]:65 [ loop::$18 ] 214.64: zp[1]:2 [ loop::angle#6 loop::angle#1 ] +Uplift Scope [mulf_init] 43,337.67: zp[2]:34 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24,446.89: zp[2]:28 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 22,859.43: zp[2]:22 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 21,002.1: zp[1]:27 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 20,002: zp[1]:98 [ mulf_init::$1 ] 20,002: zp[1]:99 [ mulf_init::$4 ] 20,002: zp[1]:100 [ mulf_init::$5 ] 14,001.4: zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 13,751.38: zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] 12,308.92: zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] 10,834.42: zp[2]:31 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 9,167.58: zp[2]:25 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [] 134,401.56: zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] 29,305.99: zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] 27,000.49: zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] 25,091.29: zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] +Uplift Scope [mulf8s] 80,005: zp[1]:15 [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] 40,004: zp[1]:14 [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] 30,000.75: zp[2]:81 [ mulf8s::return#0 ] 20,002: zp[2]:43 [ mulf8s::return#2 ] 20,002: zp[2]:53 [ mulf8s::return#3 ] +Uplift Scope [keyboard_matrix_read] 36,667.33: zp[1]:42 [ keyboard_matrix_read::return#0 ] 20,002: zp[1]:39 [ keyboard_matrix_read::return#2 ] +Uplift Scope [plexInit] 35,003.5: zp[1]:36 [ plexInit::i#2 plexInit::i#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:20 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [keyboard_key_pressed] 20,002: zp[1]:40 [ keyboard_key_pressed::$2 ] 3,000.75: zp[1]:41 [ keyboard_key_pressed::return#0 ] 2,002: zp[1]:37 [ keyboard_key_pressed::return#2 ] 2,002: zp[1]:64 [ keyboard_key_pressed::return#3 ] +Uplift Scope [init] 3,003: zp[1]:19 [ init::i1#2 init::i1#1 ] 2,302.3: zp[1]:18 [ init::i#2 init::i#1 ] 2,002: zp[1]:92 [ init::$10 ] 2,002: zp[1]:93 [ init::$3 ] 2,002: zp[1]:95 [ init::$9 ] 2,002: zp[1]:96 [ init::$5 ] 2,002: zp[1]:97 [ init::$6 ] 1,001: zp[1]:94 [ init::$4 ] +Uplift Scope [exit] 2,002: zp[1]:38 [ exit::$0 ] Uplift Scope [main] Uplifting [plexSort] best 106800 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] reg byte x [ plexSort::s#2 ] zp[1]:11 [ plexSort::m#2 plexSort::m#1 ] zp[1]:77 [ plexSort::nxt_y#0 ] zp[1]:76 [ plexSort::nxt_idx#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [loop] best 105000 combination zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] zp[2]:45 [ loop::$1 ] zp[2]:47 [ loop::$2 ] zp[2]:49 [ loop::x#0 ] reg byte a [ loop::$20 ] zp[2]:55 [ loop::$5 ] zp[2]:57 [ loop::$6 ] zp[2]:59 [ loop::y#0 ] reg byte a [ loop::$8 ] reg byte a [ loop::$11 ] zp[1]:10 [ loop::i1#5 loop::i1#1 ] zp[1]:5 [ loop::i#2 loop::i#1 ] zp[1]:51 [ loop::$4 ] zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] zp[1]:3 [ loop::r#2 loop::r#1 ] zp[1]:65 [ loop::$18 ] zp[1]:2 [ loop::angle#6 loop::angle#1 ] -Limited combination testing to 100 combinations of 147456 possible. -Uplifting [mulf8s] best 103794 combination reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] zp[2]:43 [ mulf8s::return#2 ] zp[2]:53 [ mulf8s::return#3 ] zp[2]:81 [ mulf8s::return#0 ] -Uplifting [mulf_init] best 103544 combination zp[2]:34 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:28 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:22 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:31 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:25 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Limited combination testing to 100 combinations of 1024 possible. -Uplifting [init] best 103324 combination reg byte x [ init::i1#2 init::i1#1 ] zp[1]:18 [ init::i#2 init::i#1 ] reg byte a [ init::$10 ] reg byte a [ init::$3 ] zp[1]:95 [ init::$9 ] zp[1]:96 [ init::$5 ] zp[1]:97 [ init::$6 ] zp[1]:94 [ init::$4 ] -Limited combination testing to 100 combinations of 27648 possible. -Uplifting [] best 103324 combination zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] -Uplifting [keyboard_key_pressed] best 103135 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] -Limited combination testing to 100 combinations of 256 possible. -Uplifting [plexInit] best 103015 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [memset] best 103015 combination zp[2]:20 [ memset::dst#2 memset::dst#1 ] -Uplifting [plexShowSprite] best 102993 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] reg byte a [ plexShowSprite::xpos_idx#0 ] reg byte a [ plexShowSprite::$2 ] zp[1]:73 [ plexShowSprite::$3 ] zp[1]:74 [ plexShowSprite::$9 ] zp[1]:75 [ plexShowSprite::$5 ] zp[1]:67 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:71 [ plexShowSprite::$11 ] zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] -Limited combination testing to 100 combinations of 589824 possible. -Uplifting [mulf8s_prepared] best 102969 combination zp[2]:16 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:80 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8u_prepared] best 106794 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:90 [ mulf8u_prepared::return#0 ] zp[2]:84 [ mulf8u_prepared::return#2 ] +Uplifting [mulf8s_prepared] best 106770 combination zp[2]:16 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:80 [ mulf8s_prepared::b#0 ] Limited combination testing to 100 combinations of 512 possible. -Uplifting [exit] best 102909 combination reg byte a [ exit::$0 ] -Uplifting [mulf8u_prepared] best 102903 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:84 [ mulf8u_prepared::return#2 ] zp[2]:90 [ mulf8u_prepared::return#0 ] -Uplifting [keyboard_matrix_read] best 102891 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [mulf8u_prepare] best 102885 combination reg byte a [ mulf8u_prepare::a#0 ] +Uplifting [plexShowSprite] best 106748 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] reg byte a [ plexShowSprite::xpos_idx#0 ] reg byte a [ plexShowSprite::$2 ] zp[1]:73 [ plexShowSprite::$3 ] zp[1]:74 [ plexShowSprite::$9 ] zp[1]:75 [ plexShowSprite::$5 ] zp[1]:67 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:71 [ plexShowSprite::$11 ] zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] +Limited combination testing to 100 combinations of 589824 possible. +Uplifting [mulf8u_prepare] best 106742 combination reg byte a [ mulf8u_prepare::a#0 ] +Uplifting [loop] best 104942 combination zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] zp[2]:45 [ loop::$1 ] zp[2]:47 [ loop::$2 ] zp[2]:49 [ loop::x#0 ] reg byte a [ loop::$20 ] zp[2]:55 [ loop::$5 ] zp[2]:57 [ loop::$6 ] zp[2]:59 [ loop::y#0 ] reg byte a [ loop::$8 ] reg byte a [ loop::$11 ] zp[1]:10 [ loop::i1#5 loop::i1#1 ] zp[1]:5 [ loop::i#2 loop::i#1 ] zp[1]:51 [ loop::$4 ] zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] zp[1]:3 [ loop::r#2 loop::r#1 ] zp[1]:65 [ loop::$18 ] zp[1]:2 [ loop::angle#6 loop::angle#1 ] +Limited combination testing to 100 combinations of 147456 possible. +Uplifting [mulf_init] best 104692 combination zp[2]:34 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:28 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:22 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:31 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:25 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [] best 104692 combination zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] +Uplifting [mulf8s] best 103486 combination reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ] reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ] zp[2]:81 [ mulf8s::return#0 ] zp[2]:43 [ mulf8s::return#2 ] zp[2]:53 [ mulf8s::return#3 ] +Uplifting [keyboard_matrix_read] best 103474 combination reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [plexInit] best 103354 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [memset] best 103354 combination zp[2]:20 [ memset::dst#2 memset::dst#1 ] +Uplifting [keyboard_key_pressed] best 103165 combination reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [init] best 102945 combination reg byte x [ init::i1#2 init::i1#1 ] zp[1]:18 [ init::i#2 init::i#1 ] reg byte a [ init::$10 ] reg byte a [ init::$3 ] zp[1]:95 [ init::$9 ] zp[1]:96 [ init::$5 ] zp[1]:97 [ init::$6 ] zp[1]:94 [ init::$4 ] +Limited combination testing to 100 combinations of 27648 possible. +Uplifting [exit] best 102885 combination reg byte a [ exit::$0 ] Uplifting [main] best 102885 combination -Attempting to uplift remaining variables inzp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] -Uplifting [loop] best 102885 combination zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] Attempting to uplift remaining variables inzp[1]:11 [ plexSort::m#2 plexSort::m#1 ] Uplifting [plexSort] best 102885 combination zp[1]:11 [ plexSort::m#2 plexSort::m#1 ] -Attempting to uplift remaining variables inzp[1]:10 [ loop::i1#5 loop::i1#1 ] -Uplifting [loop] best 102885 combination zp[1]:10 [ loop::i1#5 loop::i1#1 ] -Attempting to uplift remaining variables inzp[1]:5 [ loop::i#2 loop::i#1 ] -Uplifting [loop] best 102885 combination zp[1]:5 [ loop::i#2 loop::i#1 ] Attempting to uplift remaining variables inzp[1]:77 [ plexSort::nxt_y#0 ] Uplifting [plexSort] best 102885 combination zp[1]:77 [ plexSort::nxt_y#0 ] -Attempting to uplift remaining variables inzp[1]:51 [ loop::$4 ] -Uplifting [loop] best 102485 combination reg byte x [ loop::$4 ] -Attempting to uplift remaining variables inzp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] -Uplifting [loop] best 102485 combination zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] -Attempting to uplift remaining variables inzp[1]:3 [ loop::r#2 loop::r#1 ] -Uplifting [loop] best 102485 combination zp[1]:3 [ loop::r#2 loop::r#1 ] Attempting to uplift remaining variables inzp[1]:76 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 102485 combination zp[1]:76 [ plexSort::nxt_idx#0 ] -Attempting to uplift remaining variables inzp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] -Uplifting [] best 102485 combination zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] -Attempting to uplift remaining variables inzp[1]:18 [ init::i#2 init::i#1 ] -Uplifting [init] best 102485 combination zp[1]:18 [ init::i#2 init::i#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ plex_free_next#17 plex_free_next#13 ] -Uplifting [] best 102485 combination zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] -Attempting to uplift remaining variables inzp[1]:65 [ loop::$18 ] -Uplifting [loop] best 102425 combination reg byte a [ loop::$18 ] -Attempting to uplift remaining variables inzp[1]:95 [ init::$9 ] -Uplifting [init] best 102365 combination reg byte a [ init::$9 ] -Attempting to uplift remaining variables inzp[1]:96 [ init::$5 ] -Uplifting [init] best 102325 combination reg byte a [ init::$5 ] -Attempting to uplift remaining variables inzp[1]:97 [ init::$6 ] -Uplifting [init] best 102265 combination reg byte a [ init::$6 ] -Attempting to uplift remaining variables inzp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] -Uplifting [] best 102265 combination zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] -Attempting to uplift remaining variables inzp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 102125 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] -Uplifting [] best 102125 combination zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] -Attempting to uplift remaining variables inzp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 102125 combination zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 102125 combination zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:94 [ init::$4 ] -Uplifting [init] best 102065 combination reg byte x [ init::$4 ] +Uplifting [plexSort] best 102885 combination zp[1]:76 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp[1]:73 [ plexShowSprite::$3 ] -Uplifting [plexShowSprite] best 102059 combination reg byte a [ plexShowSprite::$3 ] +Uplifting [plexShowSprite] best 102879 combination reg byte a [ plexShowSprite::$3 ] Attempting to uplift remaining variables inzp[1]:74 [ plexShowSprite::$9 ] -Uplifting [plexShowSprite] best 102053 combination reg byte a [ plexShowSprite::$9 ] +Uplifting [plexShowSprite] best 102873 combination reg byte a [ plexShowSprite::$9 ] Attempting to uplift remaining variables inzp[1]:75 [ plexShowSprite::$5 ] -Uplifting [plexShowSprite] best 102047 combination reg byte x [ plexShowSprite::$5 ] +Uplifting [plexShowSprite] best 102867 combination reg byte x [ plexShowSprite::$5 ] Attempting to uplift remaining variables inzp[1]:67 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Uplifting [plexShowSprite] best 102038 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Attempting to uplift remaining variables inzp[1]:2 [ loop::angle#6 loop::angle#1 ] -Uplifting [loop] best 102038 combination zp[1]:2 [ loop::angle#6 loop::angle#1 ] -Attempting to uplift remaining variables inzp[1]:71 [ plexShowSprite::$11 ] -Uplifting [plexShowSprite] best 102031 combination reg byte x [ plexShowSprite::$11 ] -Attempting to uplift remaining variables inzp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 102031 combination zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 102858 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Attempting to uplift remaining variables inzp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] +Uplifting [] best 102858 combination zp[1]:9 [ plex_sprite_msb#43 plex_sprite_msb#16 plex_sprite_msb#3 ] Attempting to uplift remaining variables inzp[1]:80 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 102031 combination zp[1]:80 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 102858 combination zp[1]:80 [ mulf8s_prepared::b#0 ] +Attempting to uplift remaining variables inzp[1]:71 [ plexShowSprite::$11 ] +Uplifting [plexShowSprite] best 102851 combination reg byte x [ plexShowSprite::$11 ] +Attempting to uplift remaining variables inzp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] +Uplifting [loop] best 102851 combination zp[1]:63 [ loop::plexFreeNextYpos1_return#0 ] +Attempting to uplift remaining variables inzp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] +Uplifting [] best 102851 combination zp[1]:8 [ plex_show_idx#43 plex_show_idx#15 ] +Attempting to uplift remaining variables inzp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 102851 combination zp[1]:66 [ plexShowSprite::plex_sprite_idx2#0 ] +Attempting to uplift remaining variables inzp[1]:6 [ plex_free_next#17 plex_free_next#13 ] +Uplifting [] best 102851 combination zp[1]:6 [ plex_free_next#17 plex_free_next#13 ] +Attempting to uplift remaining variables inzp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] +Uplifting [] best 102851 combination zp[1]:7 [ plex_sprite_idx#43 plex_sprite_idx#15 ] +Attempting to uplift remaining variables inzp[1]:10 [ loop::i1#5 loop::i1#1 ] +Uplifting [loop] best 102851 combination zp[1]:10 [ loop::i1#5 loop::i1#1 ] +Attempting to uplift remaining variables inzp[1]:5 [ loop::i#2 loop::i#1 ] +Uplifting [loop] best 102851 combination zp[1]:5 [ loop::i#2 loop::i#1 ] +Attempting to uplift remaining variables inzp[1]:30 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 102711 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 102711 combination zp[1]:33 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 102711 combination zp[1]:24 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:51 [ loop::$4 ] +Uplifting [loop] best 102111 combination reg byte x [ loop::$4 ] +Attempting to uplift remaining variables inzp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] +Uplifting [loop] best 102111 combination zp[1]:4 [ loop::a#2 loop::a#1 loop::a#6 ] +Attempting to uplift remaining variables inzp[1]:3 [ loop::r#2 loop::r#1 ] +Uplifting [loop] best 102111 combination zp[1]:3 [ loop::r#2 loop::r#1 ] +Attempting to uplift remaining variables inzp[1]:18 [ init::i#2 init::i#1 ] +Uplifting [init] best 102111 combination zp[1]:18 [ init::i#2 init::i#1 ] +Attempting to uplift remaining variables inzp[1]:65 [ loop::$18 ] +Uplifting [loop] best 102051 combination reg byte a [ loop::$18 ] +Attempting to uplift remaining variables inzp[1]:95 [ init::$9 ] +Uplifting [init] best 101991 combination reg byte a [ init::$9 ] +Attempting to uplift remaining variables inzp[1]:96 [ init::$5 ] +Uplifting [init] best 101951 combination reg byte a [ init::$5 ] +Attempting to uplift remaining variables inzp[1]:97 [ init::$6 ] +Uplifting [init] best 101891 combination reg byte a [ init::$6 ] +Attempting to uplift remaining variables inzp[1]:94 [ init::$4 ] +Uplifting [init] best 101831 combination reg byte x [ init::$4 ] +Attempting to uplift remaining variables inzp[1]:2 [ loop::angle#6 loop::angle#1 ] +Uplifting [loop] best 101831 combination zp[1]:2 [ loop::angle#6 loop::angle#1 ] Coalescing zero page register [ zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp[2]:81 [ mulf8s::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 ] ] with [ zp[2]:84 [ mulf8u_prepared::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:43 [ mulf8s::return#2 ] ] with [ zp[2]:45 [ loop::$1 ] ] - score: 1 @@ -5778,8 +5766,7 @@ loop: { adc #>$7d*$100 sta.z x+1 // [42] (byte~) loop::$4 ← > (signed word) loop::x#0 -- vbuxx=_hi_vwsz1 - lda.z x+1 - tax + ldx.z x+1 // [43] (byte~) loop::$20 ← (byte) loop::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z i asl @@ -6843,7 +6830,7 @@ Removing instruction jmp plexSetScreen1 Removing instruction jmp __b1 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Removing instruction lda.z x+1 +Replacing instruction ldx.z x+1 with TAX Removing instruction lda.z y+1 Removing instruction lda #0 Removing instruction lda #0 @@ -7044,17 +7031,17 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte) VIC_RST8 = (byte) $80 (void()) exit() -(byte~) exit::$0 reg byte a 22.0 +(byte~) exit::$0 reg byte a 2002.0 (label) exit::@1 (label) exit::@2 (label) exit::@return (void()) init() -(byte~) init::$10 reg byte a 22.0 -(byte~) init::$3 reg byte a 22.0 -(byte~) init::$4 reg byte x 11.0 -(byte~) init::$5 reg byte a 22.0 -(byte~) init::$6 reg byte a 22.0 -(byte~) init::$9 reg byte a 22.0 +(byte~) init::$10 reg byte a 2002.0 +(byte~) init::$3 reg byte a 2002.0 +(byte~) init::$4 reg byte x 1001.0 +(byte~) init::$5 reg byte a 2002.0 +(byte~) init::$6 reg byte a 2002.0 +(byte~) init::$9 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -7062,43 +7049,43 @@ FINAL SYMBOL TABLE (label) init::@5 (label) init::@return (byte) init::i -(byte) init::i#1 i zp[1]:6 16.5 -(byte) init::i#2 i zp[1]:6 8.799999999999999 +(byte) init::i#1 i zp[1]:6 1501.5 +(byte) init::i#2 i zp[1]:6 800.8000000000001 (byte) init::i1 -(byte) init::i1#1 reg byte x 16.5 -(byte) init::i1#2 reg byte x 16.5 +(byte) init::i1#1 reg byte x 1501.5 +(byte) init::i1#2 reg byte x 1501.5 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 3000.75 +(byte) keyboard_key_pressed::return#2 reg byte a 2002.0 +(byte) keyboard_key_pressed::return#3 reg byte a 2002.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 36667.33333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) loop() -(signed word~) loop::$1 zp[2]:7 202.0 -(byte~) loop::$11 reg byte a 202.0 -(byte~) loop::$18 reg byte a 22.0 -(signed word~) loop::$2 zp[2]:7 202.0 -(byte~) loop::$20 reg byte a 202.0 -(byte~) loop::$4 reg byte x 101.0 -(signed word~) loop::$5 zp[2]:7 202.0 -(signed word~) loop::$6 zp[2]:7 202.0 -(byte~) loop::$8 reg byte a 202.0 +(signed word~) loop::$1 zp[2]:7 20002.0 +(byte~) loop::$11 reg byte a 20002.0 +(byte~) loop::$18 reg byte a 2002.0 +(signed word~) loop::$2 zp[2]:7 20002.0 +(byte~) loop::$20 reg byte a 20002.0 +(byte~) loop::$4 reg byte x 10001.0 +(signed word~) loop::$5 zp[2]:7 20002.0 +(signed word~) loop::$6 zp[2]:7 20002.0 +(byte~) loop::$8 reg byte a 20002.0 (label) loop::@1 (label) loop::@10 (label) loop::@11 @@ -7116,29 +7103,29 @@ FINAL SYMBOL TABLE (label) loop::@9 (label) loop::@return (byte) loop::a -(byte) loop::a#1 a zp[1]:3 50.5 -(byte) loop::a#2 a zp[1]:3 19.761904761904763 -(byte) loop::a#6 a zp[1]:3 22.0 +(byte) loop::a#1 a zp[1]:3 5000.5 +(byte) loop::a#2 a zp[1]:3 1952.6190476190475 +(byte) loop::a#6 a zp[1]:3 2002.0 (byte) loop::angle -(byte) loop::angle#1 angle zp[1]:6 1.2941176470588236 -(byte) loop::angle#6 angle zp[1]:6 1.064516129032258 +(byte) loop::angle#1 angle zp[1]:6 117.76470588235294 +(byte) loop::angle#6 angle zp[1]:6 96.87096774193549 (byte) loop::i -(byte) loop::i#1 i zp[1]:4 151.5 -(byte) loop::i#2 i zp[1]:4 17.565217391304348 +(byte) loop::i#1 i zp[1]:4 15001.5 +(byte) loop::i#2 i zp[1]:4 1739.304347826087 (byte) loop::i1 -(byte) loop::i1#1 i1 zp[1]:9 151.5 -(byte) loop::i1#5 i1 zp[1]:9 33.666666666666664 +(byte) loop::i1#1 i1 zp[1]:9 15001.5 +(byte) loop::i1#5 i1 zp[1]:9 3333.6666666666665 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:18 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:18 55001.0 (signed byte) loop::r -(signed byte) loop::r#1 r zp[1]:2 67.33333333333333 -(signed byte) loop::r#2 r zp[1]:2 18.363636363636363 +(signed byte) loop::r#1 r zp[1]:2 6667.333333333333 +(signed byte) loop::r#2 r zp[1]:2 1818.3636363636363 (byte) loop::rasterY (signed word) loop::x -(signed word) loop::x#0 x zp[2]:7 202.0 +(signed word) loop::x#0 x zp[2]:7 20002.0 (signed word) loop::y -(signed word) loop::y#0 y zp[2]:7 202.0 +(signed word) loop::y#0 y zp[2]:7 20002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -7151,8 +7138,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -7165,24 +7152,24 @@ FINAL SYMBOL TABLE (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 +(signed byte) mulf8s::a#0 reg byte a 10001.0 +(signed byte) mulf8s::a#1 reg byte a 10001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 +(signed byte) mulf8s::b#0 reg byte x 20002.0 +(signed byte) mulf8s::b#1 reg byte x 20002.0 +(signed byte) mulf8s::b#2 reg byte x 40001.0 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 20002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:7 51.0 -(signed word) mulf8s::return#2 return zp[2]:7 202.0 -(signed word) mulf8s::return#3 return zp[2]:7 202.0 +(signed word) mulf8s::return#0 return zp[2]:7 30000.75 +(signed word) mulf8s::return#2 return zp[2]:7 20002.0 +(signed word) mulf8s::return#3 return zp[2]:7 20002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$15 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$16 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$8 reg byte a 2000002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -7190,33 +7177,33 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:20 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:20 110000.20000000001 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:7 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:7 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:7 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:7 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:7 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:7 1000001.0 +(word) mulf8s_prepared::m#1 m zp[2]:7 2000002.0 +(word) mulf8s_prepared::m#2 m zp[2]:7 2000002.0 +(word) mulf8s_prepared::m#4 m zp[2]:7 666667.3333333334 +(word) mulf8s_prepared::m#5 m zp[2]:7 1250001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 +(byte) mulf8u_prepare::a#0 reg byte a 1100002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1.1000002E7 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:7 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:7 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:7 3666667.333333333 +(word) mulf8u_prepared::return#2 return zp[2]:7 2000002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 20002.0 +(byte~) mulf_init::$4 reg byte a 20002.0 +(byte~) mulf_init::$5 reg byte a 20002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -7228,35 +7215,35 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:9 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:9 11.0 +(byte) mulf_init::c#1 c zp[1]:9 2307.9230769230767 +(byte) mulf_init::c#2 c zp[1]:9 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:18 4.125 -(byte) mulf_init::dir#4 dir zp[1]:18 11.0 +(byte) mulf_init::dir#2 dir zp[1]:18 3750.375 +(byte) mulf_init::dir#4 dir zp[1]:18 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:16 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:16 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:16 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:16 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:16 10001.0 +(word) mulf_init::sqr#2 sqr zp[2]:16 20002.0 +(word) mulf_init::sqr#3 sqr zp[2]:16 8334.166666666666 +(word) mulf_init::sqr#4 sqr zp[2]:16 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 20002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:14 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:14 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:14 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:14 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 20002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 10001.0 +(byte) mulf_init::x_2#2 reg byte x 5000.5 +(byte) mulf_init::x_2#3 reg byte x 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 6000.6 +(byte) mulf_init::x_255#2 reg byte x 8000.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } @@ -7265,17 +7252,17 @@ FINAL SYMBOL TABLE (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 100001.0 +(byte~) plexShowSprite::$2 reg byte a 200002.0 +(byte~) plexShowSprite::$3 reg byte a 200002.0 +(byte~) plexShowSprite::$5 reg byte x 200002.0 +(byte~) plexShowSprite::$9 reg byte a 200002.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -7283,14 +7270,14 @@ FINAL SYMBOL TABLE (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:19 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:19 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -7301,35 +7288,35 @@ FINAL SYMBOL TABLE (label) plexSort::@6 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:18 151.5 -(byte) plexSort::m#2 m zp[1]:18 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:18 1500001.5 +(byte) plexSort::m#2 m zp[1]:18 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:19 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:19 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:20 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:20 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp[1]:2 4.681818181818182 -(byte) plex_free_next#17 plex_free_next zp[1]:2 20.599999999999998 +(byte) plex_free_next#13 plex_free_next zp[1]:2 5000.090909090909 +(byte) plex_free_next#17 plex_free_next zp[1]:2 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp[1]:4 11.444444444444443 -(byte) plex_show_idx#43 plex_show_idx zp[1]:4 4.541666666666665 +(byte) plex_show_idx#15 plex_show_idx zp[1]:4 12222.444444444445 +(byte) plex_show_idx#43 plex_show_idx zp[1]:4 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:3 10.299999999999999 -(byte) plex_sprite_idx#43 plex_sprite_idx zp[1]:3 4.863636363636363 +(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:3 11000.2 +(byte) plex_sprite_idx#43 plex_sprite_idx zp[1]:3 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:5 20.599999999999998 -(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:5 2.0 -(byte) plex_sprite_msb#43 plex_sprite_msb zp[1]:5 4.28 +(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:5 22000.4 +(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:5 100001.0 +(byte) plex_sprite_msb#43 plex_sprite_msb zp[1]:5 12400.16 zp[1]:2 [ plex_free_next#17 plex_free_next#13 loop::r#2 loop::r#1 ] zp[1]:3 [ plex_sprite_idx#43 plex_sprite_idx#15 loop::a#2 loop::a#1 loop::a#6 ] diff --git a/src/test/ref/complex/prebob/vogel-sprites.sym b/src/test/ref/complex/prebob/vogel-sprites.sym index b4b0e2322..f580e9efc 100644 --- a/src/test/ref/complex/prebob/vogel-sprites.sym +++ b/src/test/ref/complex/prebob/vogel-sprites.sym @@ -37,17 +37,17 @@ (const byte) VIC_RSEL = (byte) 8 (const byte) VIC_RST8 = (byte) $80 (void()) exit() -(byte~) exit::$0 reg byte a 22.0 +(byte~) exit::$0 reg byte a 2002.0 (label) exit::@1 (label) exit::@2 (label) exit::@return (void()) init() -(byte~) init::$10 reg byte a 22.0 -(byte~) init::$3 reg byte a 22.0 -(byte~) init::$4 reg byte x 11.0 -(byte~) init::$5 reg byte a 22.0 -(byte~) init::$6 reg byte a 22.0 -(byte~) init::$9 reg byte a 22.0 +(byte~) init::$10 reg byte a 2002.0 +(byte~) init::$3 reg byte a 2002.0 +(byte~) init::$4 reg byte x 1001.0 +(byte~) init::$5 reg byte a 2002.0 +(byte~) init::$6 reg byte a 2002.0 +(byte~) init::$9 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 @@ -55,43 +55,43 @@ (label) init::@5 (label) init::@return (byte) init::i -(byte) init::i#1 i zp[1]:6 16.5 -(byte) init::i#2 i zp[1]:6 8.799999999999999 +(byte) init::i#1 i zp[1]:6 1501.5 +(byte) init::i#2 i zp[1]:6 800.8000000000001 (byte) init::i1 -(byte) init::i1#1 reg byte x 16.5 -(byte) init::i1#2 reg byte x 16.5 +(byte) init::i1#1 reg byte x 1501.5 +(byte) init::i1#2 reg byte x 1501.5 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 3000.75 +(byte) keyboard_key_pressed::return#2 reg byte a 2002.0 +(byte) keyboard_key_pressed::return#3 reg byte a 2002.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 36667.33333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) loop() -(signed word~) loop::$1 zp[2]:7 202.0 -(byte~) loop::$11 reg byte a 202.0 -(byte~) loop::$18 reg byte a 22.0 -(signed word~) loop::$2 zp[2]:7 202.0 -(byte~) loop::$20 reg byte a 202.0 -(byte~) loop::$4 reg byte x 101.0 -(signed word~) loop::$5 zp[2]:7 202.0 -(signed word~) loop::$6 zp[2]:7 202.0 -(byte~) loop::$8 reg byte a 202.0 +(signed word~) loop::$1 zp[2]:7 20002.0 +(byte~) loop::$11 reg byte a 20002.0 +(byte~) loop::$18 reg byte a 2002.0 +(signed word~) loop::$2 zp[2]:7 20002.0 +(byte~) loop::$20 reg byte a 20002.0 +(byte~) loop::$4 reg byte x 10001.0 +(signed word~) loop::$5 zp[2]:7 20002.0 +(signed word~) loop::$6 zp[2]:7 20002.0 +(byte~) loop::$8 reg byte a 20002.0 (label) loop::@1 (label) loop::@10 (label) loop::@11 @@ -109,29 +109,29 @@ (label) loop::@9 (label) loop::@return (byte) loop::a -(byte) loop::a#1 a zp[1]:3 50.5 -(byte) loop::a#2 a zp[1]:3 19.761904761904763 -(byte) loop::a#6 a zp[1]:3 22.0 +(byte) loop::a#1 a zp[1]:3 5000.5 +(byte) loop::a#2 a zp[1]:3 1952.6190476190475 +(byte) loop::a#6 a zp[1]:3 2002.0 (byte) loop::angle -(byte) loop::angle#1 angle zp[1]:6 1.2941176470588236 -(byte) loop::angle#6 angle zp[1]:6 1.064516129032258 +(byte) loop::angle#1 angle zp[1]:6 117.76470588235294 +(byte) loop::angle#6 angle zp[1]:6 96.87096774193549 (byte) loop::i -(byte) loop::i#1 i zp[1]:4 151.5 -(byte) loop::i#2 i zp[1]:4 17.565217391304348 +(byte) loop::i#1 i zp[1]:4 15001.5 +(byte) loop::i#2 i zp[1]:4 1739.304347826087 (byte) loop::i1 -(byte) loop::i1#1 i1 zp[1]:9 151.5 -(byte) loop::i1#5 i1 zp[1]:9 33.666666666666664 +(byte) loop::i1#1 i1 zp[1]:9 15001.5 +(byte) loop::i1#5 i1 zp[1]:9 3333.6666666666665 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:18 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:18 55001.0 (signed byte) loop::r -(signed byte) loop::r#1 r zp[1]:2 67.33333333333333 -(signed byte) loop::r#2 r zp[1]:2 18.363636363636363 +(signed byte) loop::r#1 r zp[1]:2 6667.333333333333 +(signed byte) loop::r#2 r zp[1]:2 1818.3636363636363 (byte) loop::rasterY (signed word) loop::x -(signed word) loop::x#0 x zp[2]:7 202.0 +(signed word) loop::x#0 x zp[2]:7 20002.0 (signed word) loop::y -(signed word) loop::y#0 y zp[2]:7 202.0 +(signed word) loop::y#0 y zp[2]:7 20002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -144,8 +144,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -158,24 +158,24 @@ (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 101.0 -(signed byte) mulf8s::a#1 reg byte a 101.0 +(signed byte) mulf8s::a#0 reg byte a 10001.0 +(signed byte) mulf8s::a#1 reg byte a 10001.0 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 202.0 -(signed byte) mulf8s::b#1 reg byte x 202.0 -(signed byte) mulf8s::b#2 reg byte x 68.0 +(signed byte) mulf8s::b#0 reg byte x 20002.0 +(signed byte) mulf8s::b#1 reg byte x 20002.0 +(signed byte) mulf8s::b#2 reg byte x 40001.0 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a -(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0 +(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 20002.0 (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:7 51.0 -(signed word) mulf8s::return#2 return zp[2]:7 202.0 -(signed word) mulf8s::return#3 return zp[2]:7 202.0 +(signed word) mulf8s::return#0 return zp[2]:7 30000.75 +(signed word) mulf8s::return#2 return zp[2]:7 20002.0 +(signed word) mulf8s::return#3 return zp[2]:7 20002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$15 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$16 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$8 reg byte a 2000002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -183,33 +183,33 @@ (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:20 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:20 110000.20000000001 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:7 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:7 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:7 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:7 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:7 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:7 1000001.0 +(word) mulf8s_prepared::m#1 m zp[2]:7 2000002.0 +(word) mulf8s_prepared::m#2 m zp[2]:7 2000002.0 +(word) mulf8s_prepared::m#4 m zp[2]:7 666667.3333333334 +(word) mulf8s_prepared::m#5 m zp[2]:7 1250001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 +(byte) mulf8u_prepare::a#0 reg byte a 1100002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1.1000002E7 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:7 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:7 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:7 3666667.333333333 +(word) mulf8u_prepared::return#2 return zp[2]:7 2000002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 20002.0 +(byte~) mulf_init::$4 reg byte a 20002.0 +(byte~) mulf_init::$5 reg byte a 20002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -221,35 +221,35 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:9 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:9 11.0 +(byte) mulf_init::c#1 c zp[1]:9 2307.9230769230767 +(byte) mulf_init::c#2 c zp[1]:9 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:18 4.125 -(byte) mulf_init::dir#4 dir zp[1]:18 11.0 +(byte) mulf_init::dir#2 dir zp[1]:18 3750.375 +(byte) mulf_init::dir#4 dir zp[1]:18 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:16 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:16 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:16 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:16 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:16 10001.0 +(word) mulf_init::sqr#2 sqr zp[2]:16 20002.0 +(word) mulf_init::sqr#3 sqr zp[2]:16 8334.166666666666 +(word) mulf_init::sqr#4 sqr zp[2]:16 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:10 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:10 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 20002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:14 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:14 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:14 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:14 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:12 20002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:12 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 10001.0 +(byte) mulf_init::x_2#2 reg byte x 5000.5 +(byte) mulf_init::x_2#3 reg byte x 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 6000.6 +(byte) mulf_init::x_255#2 reg byte x 8000.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } @@ -258,17 +258,17 @@ (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 100001.0 +(byte~) plexShowSprite::$2 reg byte a 200002.0 +(byte~) plexShowSprite::$3 reg byte a 200002.0 +(byte~) plexShowSprite::$5 reg byte x 200002.0 +(byte~) plexShowSprite::$9 reg byte a 200002.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -276,14 +276,14 @@ (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:19 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:19 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -294,35 +294,35 @@ (label) plexSort::@6 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:18 151.5 -(byte) plexSort::m#2 m zp[1]:18 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:18 1500001.5 +(byte) plexSort::m#2 m zp[1]:18 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:19 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:19 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:20 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:20 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp[1]:2 4.681818181818182 -(byte) plex_free_next#17 plex_free_next zp[1]:2 20.599999999999998 +(byte) plex_free_next#13 plex_free_next zp[1]:2 5000.090909090909 +(byte) plex_free_next#17 plex_free_next zp[1]:2 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp[1]:4 11.444444444444443 -(byte) plex_show_idx#43 plex_show_idx zp[1]:4 4.541666666666665 +(byte) plex_show_idx#15 plex_show_idx zp[1]:4 12222.444444444445 +(byte) plex_show_idx#43 plex_show_idx zp[1]:4 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:3 10.299999999999999 -(byte) plex_sprite_idx#43 plex_sprite_idx zp[1]:3 4.863636363636363 +(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:3 11000.2 +(byte) plex_sprite_idx#43 plex_sprite_idx zp[1]:3 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:5 20.599999999999998 -(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:5 2.0 -(byte) plex_sprite_msb#43 plex_sprite_msb zp[1]:5 4.28 +(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:5 22000.4 +(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:5 100001.0 +(byte) plex_sprite_msb#43 plex_sprite_msb zp[1]:5 12400.16 zp[1]:2 [ plex_free_next#17 plex_free_next#13 loop::r#2 loop::r#1 ] zp[1]:3 [ plex_sprite_idx#43 plex_sprite_idx#15 loop::a#2 loop::a#1 loop::a#6 ] diff --git a/src/test/ref/complex/splines/truetype-splines.asm b/src/test/ref/complex/splines/truetype-splines.asm index 3afbcdba5..233f69bc6 100644 --- a/src/test/ref/complex/splines/truetype-splines.asm +++ b/src/test/ref/complex/splines/truetype-splines.asm @@ -558,10 +558,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // = (signed byte) 0 from [327] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#5 < (signed byte) 0 Inversing boolean not [332] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#5 >= (signed byte) 0 from [331] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#5 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (signed word) spline_8segB::a_x#0 = (signed word~) spline_8segB::$2 -Alias (signed word) spline_8segB::a_y#0 = (signed word~) spline_8segB::$5 -Alias (signed word) spline_8segB::b_x#0 = (signed word~) spline_8segB::$7 -Alias (signed word) spline_8segB::b_y#0 = (signed word~) spline_8segB::$9 -Alias (signed word) spline_8segB::i_x#0 = (signed word~) spline_8segB::$11 -Alias (signed word) spline_8segB::i_y#0 = (signed word~) spline_8segB::$13 -Alias (signed word) spline_8segB::j_x#0 = (signed word~) spline_8segB::$14 -Alias (signed word) spline_8segB::j_y#0 = (signed word~) spline_8segB::$15 -Alias (signed word) spline_8segB::p_x#0 = (signed word~) spline_8segB::$16 -Alias (signed word) spline_8segB::p_y#0 = (signed word~) spline_8segB::$17 -Alias (signed word) spline_8segB::p_x#1 = (signed word~) spline_8segB::$26 (signed word) spline_8segB::p_x#3 -Alias (signed word) spline_8segB::p_y#1 = (signed word~) spline_8segB::$27 (signed word) spline_8segB::p_y#3 -Alias (signed word) spline_8segB::i_x#1 = (signed word~) spline_8segB::$28 -Alias (signed word) spline_8segB::i_y#1 = (signed word~) spline_8segB::$29 -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 -Alias (byte*) bitmap_gfx#28 = (byte*) bitmap_gfx#29 -Alias (byte*) bitmap_screen#27 = (byte*) bitmap_screen#28 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 -Alias (byte*) bitmap_gfx#22 = (byte*) bitmap_gfx#25 -Alias (byte*) bitmap_screen#21 = (byte*) bitmap_screen#24 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 -Alias (byte*) bitmap_screen#16 = (byte*) bitmap_screen#17 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 -Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 -Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 -Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 -Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#2 (word) bitmap_line::x1#5 (word) bitmap_line::x#16 (word) bitmap_line::x1#4 (word) bitmap_line::x#10 (word) bitmap_line::x1#3 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 -Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#2 (word) bitmap_line::y1#3 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#6 (word) bitmap_line::y1#5 (word) bitmap_line::y#19 (word) bitmap_line::y1#4 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 -Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 -Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 -Alias (word) bitmap_line::y2#11 = (word) bitmap_line::y2#2 (word) bitmap_line::y2#5 (word) bitmap_line::y2#9 (word) bitmap_line::y2#6 (word) bitmap_line::y2#3 (word) bitmap_line::y2#12 -Alias (word) bitmap_line::x2#10 = (word) bitmap_line::x2#8 (word) bitmap_line::x2#2 (word) bitmap_line::x2#5 (word) bitmap_line::x2#3 (word) bitmap_line::x2#12 (word) bitmap_line::x2#11 -Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 -Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 -Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 -Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 -Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 -Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 -Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 -Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 -Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 -Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 -Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 -Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 -Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 -Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 -Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 -Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 -Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 -Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 -Alias (word) bitmap_line::y2#10 = (word) bitmap_line::y2#7 (word) bitmap_line::y2#8 -Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 -Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 -Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 -Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 -Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 -Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 -Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 -Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 -Alias (word) bitmap_line::x2#6 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#9 -Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 -Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 -Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 -Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 -Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 -Alias (word) sgn_u16::return#4 = (word) sgn_u16::return#7 -Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 -Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 -Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 -Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 -Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$6 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 -Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 -Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 -Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 -Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (dword) mulf16u::return#0 = (dword) mulf16u::return#3 (dword) mulf16u::return#1 -Alias (word) mulf16u::a#0 = (word~) mulf16s::$0 -Alias (word) mulf16u::b#0 = (word~) mulf16s::$1 -Alias (dword) mulf16u::return#2 = (dword) mulf16u::return#4 -Alias (signed word) mulf16s::a#4 = (signed word) mulf16s::a#5 (signed word) mulf16s::a#8 -Alias (signed word) mulf16s::b#4 = (signed word) mulf16s::b#7 (signed word) mulf16s::b#6 -Alias (dword) mulf16s::m#0 = (dword~) mulf16s::$2 (dword) mulf16s::m#3 -Alias (word~) mulf16s::$16 = (word~) mulf16s::$11 -Alias (signed dword) mulf16s::return#0 = (signed dword~) mulf16s::$7 (signed dword) mulf16s::return#6 (signed dword) mulf16s::return#1 -Alias (dword) mulf16s::m#5 = (dword) mulf16s::m#6 -Alias (signed word) mulf16s::a#6 = (signed word) mulf16s::a#7 -Alias (word~) mulf16s::$17 = (word~) mulf16s::$15 -Alias (byte*) bitmap_gfx#13 = (byte*) bitmap_gfx#19 -Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#18 -Alias (byte*) bitmap_gfx#23 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#40 (byte*) bitmap_gfx#39 (byte*) bitmap_gfx#38 (byte*) bitmap_gfx#36 (byte*) bitmap_gfx#34 (byte*) bitmap_gfx#32 (byte*) bitmap_gfx#30 (byte*) bitmap_gfx#26 -Alias (byte*) bitmap_screen#22 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#39 (byte*) bitmap_screen#38 (byte*) bitmap_screen#37 (byte*) bitmap_screen#35 (byte*) bitmap_screen#33 (byte*) bitmap_screen#31 (byte*) bitmap_screen#29 (byte*) bitmap_screen#25 -Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 -Alias (byte*) bitmap_screen#12 = (byte*) bitmap_screen#19 (byte*) bitmap_screen#36 (byte*) bitmap_screen#34 -Alias (byte) main::angle#2 = (byte) main::angle#4 (byte) main::angle#6 (byte) main::angle#9 -Alias (byte*) bitmap_gfx#18 = (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#37 (byte*) bitmap_gfx#35 -Alias (byte) main::w#2 = (byte) main::w#3 -Alias (byte) main::angle#3 = (byte) main::angle#5 (byte) main::angle#7 -Alias (byte*) bitmap_screen#23 = (byte*) bitmap_screen#26 (byte*) bitmap_screen#30 -Alias (byte*) bitmap_gfx#24 = (byte*) bitmap_gfx#27 (byte*) bitmap_gfx#31 -Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#21 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 -Alias (byte*) bitmap_screen#14 = (byte*) bitmap_screen#20 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 -Alias (signed word) show_letter::to_x#1 = (signed word~) show_letter::$0 -Alias (signed word) show_letter::to_y#1 = (signed word~) show_letter::$1 -Alias (signed word) rotate::return_x#0 = (signed word) rotate::return_x#4 -Alias (signed word) rotate::return_y#0 = (signed word) rotate::return_y#4 -Alias (byte) show_letter::i#10 = (byte) show_letter::i#3 (byte) show_letter::i#2 (byte) show_letter::i#4 (byte) show_letter::i#8 (byte) show_letter::i#12 (byte) show_letter::i#11 (byte) show_letter::i#9 (byte) show_letter::i#6 (byte) show_letter::i#7 -Alias (byte) show_letter::angle#1 = (byte) show_letter::angle#2 (byte) show_letter::angle#8 (byte) show_letter::angle#7 (byte) show_letter::angle#12 (byte) show_letter::angle#11 (byte) show_letter::angle#9 (byte) show_letter::angle#5 (byte) show_letter::angle#10 (byte) show_letter::angle#6 -Alias (signed word) show_letter::current_x#4 = (signed word) show_letter::current_x#8 (signed word) show_letter::current_x#9 (signed word) show_letter::current_x#7 (signed word) show_letter::current_x#6 (signed word) show_letter::current_x#5 -Alias (signed word) show_letter::current_y#4 = (signed word) show_letter::current_y#8 (signed word) show_letter::current_y#9 (signed word) show_letter::current_y#7 (signed word) show_letter::current_y#6 (signed word) show_letter::current_y#5 -Alias (signed word) show_letter::to_x#2 = (signed word~) show_letter::$2_x -Alias (signed word) show_letter::to_y#2 = (signed word~) show_letter::$2_y -Alias (signed word) show_letter::segment_to_x#0 = (signed word) show_letter::to_x#3 (signed word~) show_letter::$3 (signed word) show_letter::to_x#4 (signed word) show_letter::segment_to_x#1 (signed word) show_letter::current_x#1 (signed word) show_letter::segment_to_x#6 (signed word) show_letter::segment_to_x#2 (signed word) show_letter::segment_to_x#7 (signed word) show_letter::segment_to_x#3 (signed word) show_letter::current_x#2 (signed word) show_letter::segment_to_x#4 (signed word) show_letter::segment_to_x#5 (signed word) show_letter::current_x#3 -Alias (signed word) show_letter::segment_to_y#0 = (signed word) show_letter::to_y#3 (signed word~) show_letter::$4 (signed word) show_letter::to_y#4 (signed word) show_letter::segment_to_y#1 (signed word) show_letter::current_y#1 (signed word) show_letter::segment_to_y#6 (signed word) show_letter::segment_to_y#2 (signed word) show_letter::segment_to_y#7 (signed word) show_letter::segment_to_y#3 (signed word) show_letter::current_y#2 (signed word) show_letter::segment_to_y#4 (signed word) show_letter::segment_to_y#5 (signed word) show_letter::current_y#3 -Alias (signed word) show_letter::via_x#1 = (signed word~) show_letter::$5 -Alias (signed word) show_letter::via_y#1 = (signed word~) show_letter::$6 -Alias (signed word) rotate::return_x#1 = (signed word) rotate::return_x#5 -Alias (signed word) rotate::return_y#1 = (signed word) rotate::return_y#5 -Alias (signed word) show_letter::via_x#2 = (signed word~) show_letter::$7_x -Alias (signed word) show_letter::via_y#2 = (signed word~) show_letter::$7_y -Alias (signed word) show_letter::segment_via_x#0 = (signed word) show_letter::via_x#3 (signed word~) show_letter::$8 (signed word) show_letter::segment_via_x#2 (signed word) show_letter::segment_via_x#1 -Alias (signed word) show_letter::segment_via_y#0 = (signed word) show_letter::via_y#3 (signed word~) show_letter::$9 (signed word) show_letter::segment_via_y#2 (signed word) show_letter::segment_via_y#1 -Alias (byte) show_letter::segment_type#0 = (byte) show_letter::segment_type#1 -Alias (word) bitmap_line::x1#0 = (word~) show_letter::$12 -Alias (word) bitmap_line::y1#0 = (word~) show_letter::$13 -Alias (word) bitmap_line::x2#0 = (word~) show_letter::$14 -Alias (word) bitmap_line::y2#0 = (word~) show_letter::$15 -Alias (word) bitmap_line::x1#1 = (word~) bitmap_plot_spline_8seg::$0 -Alias (word) bitmap_line::y1#1 = (word~) bitmap_plot_spline_8seg::$1 -Alias (word) bitmap_line::x2#1 = (word~) bitmap_plot_spline_8seg::$2 -Alias (word) bitmap_line::y2#1 = (word~) bitmap_plot_spline_8seg::$3 -Alias (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#3 -Alias (signed word) rotate::cos_a#0 = (signed word~) rotate::$0 (signed word) rotate::cos_a#1 -Alias (signed dword) mulf16s::return#2 = (signed dword) mulf16s::return#7 -Alias (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#4 (signed word) rotate::vector_y#3 -Alias (byte) rotate::angle#2 = (byte) rotate::angle#4 (byte) rotate::angle#3 -Alias (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#5 (signed word) rotate::vector_x#4 (signed word) rotate::vector_x#3 -Alias (signed word) rotate::xr#0 = (signed word~) rotate::$3 (signed word) rotate::xr#4 (signed word) rotate::xr#2 -Alias (signed dword) mulf16s::return#3 = (signed dword) mulf16s::return#8 -Alias (signed word) rotate::yr#0 = (signed word~) rotate::$6 (signed word) rotate::yr#3 (signed word) rotate::yr#2 -Alias (signed word) rotate::sin_a#0 = (signed word~) rotate::$7 (signed word) rotate::sin_a#1 -Alias (signed dword) mulf16s::return#4 = (signed dword) mulf16s::return#9 -Alias (signed dword) mulf16s::return#10 = (signed dword) mulf16s::return#5 -Alias (signed word) rotate::xr#1 = (signed word) rotate::xr#3 -Alias (signed word) rotate::return_x#2 = (signed word) rotate::rotated_x#0 (signed word~) rotate::$16 (signed word) rotate::return_x#6 (signed word) rotate::return_x#3 -Alias (signed word) rotate::return_y#2 = (signed word) rotate::rotated_y#0 (signed word~) rotate::$19 (signed word) rotate::return_y#6 (signed word) rotate::return_y#3 -Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#15 -Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#15 -Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 -Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 +Alias spline_8segB::a_x#0 = spline_8segB::$2 +Alias spline_8segB::a_y#0 = spline_8segB::$5 +Alias spline_8segB::b_x#0 = spline_8segB::$7 +Alias spline_8segB::b_y#0 = spline_8segB::$9 +Alias spline_8segB::i_x#0 = spline_8segB::$11 +Alias spline_8segB::i_y#0 = spline_8segB::$13 +Alias spline_8segB::j_x#0 = spline_8segB::$14 +Alias spline_8segB::j_y#0 = spline_8segB::$15 +Alias spline_8segB::p_x#0 = spline_8segB::$16 +Alias spline_8segB::p_y#0 = spline_8segB::$17 +Alias spline_8segB::p_x#1 = spline_8segB::$26 spline_8segB::p_x#3 +Alias spline_8segB::p_y#1 = spline_8segB::$27 spline_8segB::p_y#3 +Alias spline_8segB::i_x#1 = spline_8segB::$28 +Alias spline_8segB::i_y#1 = spline_8segB::$29 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::gfx#4 = bitmap_init::gfx#5 +Alias bitmap_gfx#28 = bitmap_gfx#29 +Alias bitmap_screen#27 = bitmap_screen#28 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0 +Alias bitmap_gfx#22 = bitmap_gfx#25 +Alias bitmap_screen#21 = bitmap_screen#24 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_gfx#16 = bitmap_gfx#17 +Alias bitmap_screen#16 = bitmap_screen#17 +Alias bitmap_init::yoffs#1 = bitmap_init::$10 +Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2 +Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2 +Alias bitmap_clear::col#0 = bitmap_clear::$1 +Alias bitmap_gfx#12 = bitmap_gfx#7 +Alias bitmap_plot::plotter#0 = bitmap_plot::$0 +Alias bitmap_line::x#0 = bitmap_line::x1#2 bitmap_line::x1#5 bitmap_line::x#16 bitmap_line::x1#4 bitmap_line::x#10 bitmap_line::x1#3 bitmap_line::x#19 bitmap_line::x#18 bitmap_line::x#17 bitmap_line::x#3 bitmap_line::x#14 bitmap_line::x#11 +Alias bitmap_line::y#0 = bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y#16 bitmap_line::y#10 bitmap_line::y1#6 bitmap_line::y1#5 bitmap_line::y#19 bitmap_line::y1#4 bitmap_line::y#18 bitmap_line::y#17 bitmap_line::y#3 bitmap_line::y#14 bitmap_line::y#11 +Alias abs_u16::w#0 = bitmap_line::$0 +Alias abs_u16::return#0 = abs_u16::return#5 +Alias bitmap_line::y2#11 = bitmap_line::y2#2 bitmap_line::y2#5 bitmap_line::y2#9 bitmap_line::y2#6 bitmap_line::y2#3 bitmap_line::y2#12 +Alias bitmap_line::x2#10 = bitmap_line::x2#8 bitmap_line::x2#2 bitmap_line::x2#5 bitmap_line::x2#3 bitmap_line::x2#12 bitmap_line::x2#11 +Alias bitmap_line::dx#0 = bitmap_line::$1 bitmap_line::dx#1 bitmap_line::dx#10 bitmap_line::dx#7 bitmap_line::dx#2 bitmap_line::dx#13 bitmap_line::dx#3 +Alias abs_u16::w#1 = bitmap_line::$2 +Alias abs_u16::return#1 = abs_u16::return#6 +Alias bitmap_line::dy#0 = bitmap_line::$3 bitmap_line::dy#9 bitmap_line::dy#6 bitmap_line::dy#1 bitmap_line::dy#2 bitmap_line::dy#10 +Alias sgn_u16::w#0 = bitmap_line::$8 +Alias sgn_u16::return#0 = sgn_u16::return#5 +Alias bitmap_line::sx#0 = bitmap_line::$9 bitmap_line::sx#8 bitmap_line::sx#7 bitmap_line::sx#9 +Alias sgn_u16::w#1 = bitmap_line::$10 +Alias sgn_u16::return#1 = sgn_u16::return#6 +Alias bitmap_line::sy#0 = bitmap_line::$11 bitmap_line::sy#10 bitmap_line::sy#5 +Alias bitmap_plot::y#0 = bitmap_line::$15 +Alias bitmap_line::e1#0 = bitmap_line::$23 +Alias bitmap_line::e#0 = bitmap_line::$17 +Alias bitmap_plot::y#1 = bitmap_line::$18 +Alias bitmap_line::y#4 = bitmap_line::y#5 +Alias bitmap_line::sy#1 = bitmap_line::sy#3 bitmap_line::sy#8 +Alias bitmap_line::e#3 = bitmap_line::e#5 +Alias bitmap_line::dx#14 = bitmap_line::dx#4 bitmap_line::dx#8 +Alias bitmap_line::dy#3 = bitmap_line::dy#7 bitmap_line::dy#4 +Alias bitmap_line::y2#10 = bitmap_line::y2#7 bitmap_line::y2#8 +Alias bitmap_line::x#13 = bitmap_line::x#4 bitmap_line::x#5 +Alias bitmap_line::sx#1 = bitmap_line::sx#3 bitmap_line::sx#5 +Alias bitmap_line::e#1 = bitmap_line::e#4 +Alias bitmap_line::y#1 = bitmap_line::y#12 +Alias bitmap_plot::y#2 = bitmap_line::$13 +Alias bitmap_plot::y#3 = bitmap_line::$24 +Alias bitmap_line::x#7 = bitmap_line::x#8 +Alias bitmap_line::sx#11 = bitmap_line::sx#2 bitmap_line::sx#4 +Alias bitmap_line::e1#3 = bitmap_line::e1#5 +Alias bitmap_line::dy#13 = bitmap_line::dy#5 bitmap_line::dy#8 +Alias bitmap_line::dx#5 = bitmap_line::dx#9 bitmap_line::dx#6 +Alias bitmap_line::x2#6 = bitmap_line::x2#7 bitmap_line::x2#9 +Alias bitmap_line::y#15 = bitmap_line::y#8 bitmap_line::y#9 +Alias bitmap_line::sy#2 = bitmap_line::sy#4 bitmap_line::sy#7 +Alias bitmap_line::e1#1 = bitmap_line::e1#4 +Alias bitmap_line::x#15 = bitmap_line::x#2 +Alias abs_u16::w#2 = abs_u16::w#3 abs_u16::w#4 abs_u16::return#3 +Alias abs_u16::return#2 = abs_u16::$2 +Alias abs_u16::return#4 = abs_u16::return#7 +Alias sgn_u16::return#4 = sgn_u16::return#7 +Alias mulf_init::c#2 = mulf_init::c#3 +Alias mulf_init::sqr#4 = mulf_init::sqr#5 mulf_init::sqr#6 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#4 mulf_init::sqr1_lo#5 +Alias mulf_init::sqr1_hi#3 = mulf_init::sqr1_hi#5 mulf_init::sqr1_hi#4 +Alias mulf_init::x_2#3 = mulf_init::x_2#4 mulf_init::x_2#5 +Alias mulf_init::sqr#1 = mulf_init::$6 +Alias mulf_init::c#1 = mulf_init::c#5 +Alias mulf_init::x_255#2 = mulf_init::x_255#3 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#3 mulf_init::sqr2_lo#5 +Alias mulf_init::sqr2_hi#2 = mulf_init::sqr2_hi#3 +Alias mulf_init::dir#2 = mulf_init::dir#3 +Alias mulf_init::x_255#1 = mulf_init::$8 mulf_init::x_255#5 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#5 +Alias mulf16u::return#0 = mulf16u::return#3 mulf16u::return#1 +Alias mulf16u::a#0 = mulf16s::$0 +Alias mulf16u::b#0 = mulf16s::$1 +Alias mulf16u::return#2 = mulf16u::return#4 +Alias mulf16s::a#4 = mulf16s::a#5 mulf16s::a#8 +Alias mulf16s::b#4 = mulf16s::b#7 mulf16s::b#6 +Alias mulf16s::m#0 = mulf16s::$2 mulf16s::m#3 +Alias mulf16s::$16 = mulf16s::$11 +Alias mulf16s::return#0 = mulf16s::$7 mulf16s::return#6 mulf16s::return#1 +Alias mulf16s::m#5 = mulf16s::m#6 +Alias mulf16s::a#6 = mulf16s::a#7 +Alias mulf16s::$17 = mulf16s::$15 +Alias bitmap_gfx#13 = bitmap_gfx#19 +Alias bitmap_screen#13 = bitmap_screen#18 +Alias bitmap_gfx#23 = bitmap_gfx#3 bitmap_gfx#8 bitmap_gfx#40 bitmap_gfx#39 bitmap_gfx#38 bitmap_gfx#36 bitmap_gfx#34 bitmap_gfx#32 bitmap_gfx#30 bitmap_gfx#26 +Alias bitmap_screen#22 = bitmap_screen#3 bitmap_screen#8 bitmap_screen#39 bitmap_screen#38 bitmap_screen#37 bitmap_screen#35 bitmap_screen#33 bitmap_screen#31 bitmap_screen#29 bitmap_screen#25 +Alias main::vicSelectGfxBank1_gfx#0 = main::vicSelectGfxBank1_gfx#1 main::vicSelectGfxBank1_toDd001_gfx#0 main::vicSelectGfxBank1_toDd001_gfx#1 +Alias main::vicSelectGfxBank1_toDd001_return#0 = main::vicSelectGfxBank1_toDd001_$3 main::vicSelectGfxBank1_toDd001_return#2 main::vicSelectGfxBank1_toDd001_return#1 main::vicSelectGfxBank1_toDd001_return#3 main::vicSelectGfxBank1_$0 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$4 +Alias bitmap_screen#12 = bitmap_screen#19 bitmap_screen#36 bitmap_screen#34 +Alias main::angle#2 = main::angle#4 main::angle#6 main::angle#9 +Alias bitmap_gfx#18 = bitmap_gfx#20 bitmap_gfx#37 bitmap_gfx#35 +Alias main::w#2 = main::w#3 +Alias main::angle#3 = main::angle#5 main::angle#7 +Alias bitmap_screen#23 = bitmap_screen#26 bitmap_screen#30 +Alias bitmap_gfx#24 = bitmap_gfx#27 bitmap_gfx#31 +Alias bitmap_gfx#14 = bitmap_gfx#21 bitmap_gfx#9 bitmap_gfx#4 +Alias bitmap_screen#14 = bitmap_screen#20 bitmap_screen#9 bitmap_screen#4 +Alias show_letter::to_x#1 = show_letter::$0 +Alias show_letter::to_y#1 = show_letter::$1 +Alias rotate::return_x#0 = rotate::return_x#4 +Alias rotate::return_y#0 = rotate::return_y#4 +Alias show_letter::i#10 = show_letter::i#3 show_letter::i#2 show_letter::i#4 show_letter::i#8 show_letter::i#12 show_letter::i#11 show_letter::i#9 show_letter::i#6 show_letter::i#7 +Alias show_letter::angle#1 = show_letter::angle#2 show_letter::angle#8 show_letter::angle#7 show_letter::angle#12 show_letter::angle#11 show_letter::angle#9 show_letter::angle#5 show_letter::angle#10 show_letter::angle#6 +Alias show_letter::current_x#4 = show_letter::current_x#8 show_letter::current_x#9 show_letter::current_x#7 show_letter::current_x#6 show_letter::current_x#5 +Alias show_letter::current_y#4 = show_letter::current_y#8 show_letter::current_y#9 show_letter::current_y#7 show_letter::current_y#6 show_letter::current_y#5 +Alias show_letter::to_x#2 = show_letter::$2_x +Alias show_letter::to_y#2 = show_letter::$2_y +Alias show_letter::segment_to_x#0 = show_letter::to_x#3 show_letter::$3 show_letter::to_x#4 show_letter::segment_to_x#1 show_letter::current_x#1 show_letter::segment_to_x#6 show_letter::segment_to_x#2 show_letter::segment_to_x#7 show_letter::segment_to_x#3 show_letter::current_x#2 show_letter::segment_to_x#4 show_letter::segment_to_x#5 show_letter::current_x#3 +Alias show_letter::segment_to_y#0 = show_letter::to_y#3 show_letter::$4 show_letter::to_y#4 show_letter::segment_to_y#1 show_letter::current_y#1 show_letter::segment_to_y#6 show_letter::segment_to_y#2 show_letter::segment_to_y#7 show_letter::segment_to_y#3 show_letter::current_y#2 show_letter::segment_to_y#4 show_letter::segment_to_y#5 show_letter::current_y#3 +Alias show_letter::via_x#1 = show_letter::$5 +Alias show_letter::via_y#1 = show_letter::$6 +Alias rotate::return_x#1 = rotate::return_x#5 +Alias rotate::return_y#1 = rotate::return_y#5 +Alias show_letter::via_x#2 = show_letter::$7_x +Alias show_letter::via_y#2 = show_letter::$7_y +Alias show_letter::segment_via_x#0 = show_letter::via_x#3 show_letter::$8 show_letter::segment_via_x#2 show_letter::segment_via_x#1 +Alias show_letter::segment_via_y#0 = show_letter::via_y#3 show_letter::$9 show_letter::segment_via_y#2 show_letter::segment_via_y#1 +Alias show_letter::segment_type#0 = show_letter::segment_type#1 +Alias bitmap_line::x1#0 = show_letter::$12 +Alias bitmap_line::y1#0 = show_letter::$13 +Alias bitmap_line::x2#0 = show_letter::$14 +Alias bitmap_line::y2#0 = show_letter::$15 +Alias bitmap_line::x1#1 = bitmap_plot_spline_8seg::$0 +Alias bitmap_line::y1#1 = bitmap_plot_spline_8seg::$1 +Alias bitmap_line::x2#1 = bitmap_plot_spline_8seg::$2 +Alias bitmap_line::y2#1 = bitmap_plot_spline_8seg::$3 +Alias bitmap_plot_spline_8seg::n#2 = bitmap_plot_spline_8seg::n#3 +Alias rotate::cos_a#0 = rotate::$0 rotate::cos_a#1 +Alias mulf16s::return#2 = mulf16s::return#7 +Alias rotate::vector_y#2 = rotate::vector_y#4 rotate::vector_y#3 +Alias rotate::angle#2 = rotate::angle#4 rotate::angle#3 +Alias rotate::vector_x#2 = rotate::vector_x#5 rotate::vector_x#4 rotate::vector_x#3 +Alias rotate::xr#0 = rotate::$3 rotate::xr#4 rotate::xr#2 +Alias mulf16s::return#3 = mulf16s::return#8 +Alias rotate::yr#0 = rotate::$6 rotate::yr#3 rotate::yr#2 +Alias rotate::sin_a#0 = rotate::$7 rotate::sin_a#1 +Alias mulf16s::return#4 = mulf16s::return#9 +Alias mulf16s::return#10 = mulf16s::return#5 +Alias rotate::xr#1 = rotate::xr#3 +Alias rotate::return_x#2 = rotate::rotated_x#0 rotate::$16 rotate::return_x#6 rotate::return_x#3 +Alias rotate::return_y#2 = rotate::rotated_y#0 rotate::$19 rotate::return_y#6 rotate::return_y#3 +Alias bitmap_gfx#0 = bitmap_gfx#15 +Alias bitmap_screen#0 = bitmap_screen#15 +Alias bitmap_gfx#10 = bitmap_gfx#5 +Alias bitmap_screen#10 = bitmap_screen#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 -Alias (byte*) bitmap_gfx#22 = (byte*) bitmap_gfx#28 -Alias (byte*) bitmap_screen#21 = (byte*) bitmap_screen#27 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 -Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#16 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 -Alias (word) bitmap_line::y2#10 = (word) bitmap_line::y2#4 -Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 -Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 -Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 -Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 -Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 -Alias (word) bitmap_line::x2#4 = (word) bitmap_line::x2#6 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 -Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 -Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 -Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 -Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 -Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (signed word) mulf16s::b#4 = (signed word) mulf16s::b#5 -Alias (signed word) mulf16s::a#4 = (signed word) mulf16s::a#6 -Alias (byte) show_letter::i#10 = (byte) show_letter::i#5 -Alias (byte) show_letter::angle#1 = (byte) show_letter::angle#4 -Alias (signed word) show_letter::current_x#10 = (signed word) show_letter::segment_to_x#0 -Alias (signed word) show_letter::current_y#10 = (signed word) show_letter::segment_to_y#0 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::gfx#2 = bitmap_init::gfx#4 +Alias bitmap_gfx#22 = bitmap_gfx#28 +Alias bitmap_screen#21 = bitmap_screen#27 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_gfx#11 = bitmap_gfx#16 +Alias bitmap_screen#11 = bitmap_screen#16 +Alias bitmap_line::y#1 = bitmap_line::y#6 +Alias bitmap_line::y2#10 = bitmap_line::y2#4 +Alias bitmap_line::sy#1 = bitmap_line::sy#6 +Alias bitmap_line::dx#11 = bitmap_line::dx#14 +Alias bitmap_line::dy#11 = bitmap_line::dy#3 +Alias bitmap_line::sx#1 = bitmap_line::sx#10 +Alias bitmap_line::x#15 = bitmap_line::x#9 +Alias bitmap_line::x2#4 = bitmap_line::x2#6 +Alias bitmap_line::sx#11 = bitmap_line::sx#6 +Alias bitmap_line::dy#12 = bitmap_line::dy#13 +Alias bitmap_line::dx#12 = bitmap_line::dx#5 +Alias bitmap_line::sy#2 = bitmap_line::sy#9 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#3 +Alias mulf_init::sqr1_hi#2 = mulf_init::sqr1_hi#3 +Alias mulf_init::c#1 = mulf_init::c#4 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#4 +Alias mulf_init::x_255#1 = mulf_init::x_255#4 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#4 +Alias mulf16s::b#4 = mulf16s::b#5 +Alias mulf16s::a#4 = mulf16s::a#6 +Alias show_letter::i#10 = show_letter::i#5 +Alias show_letter::angle#1 = show_letter::angle#4 +Alias show_letter::current_x#10 = show_letter::segment_to_x#0 +Alias show_letter::current_y#10 = show_letter::segment_to_y#0 Successful SSA optimization Pass2AliasElimination Identical Phi Values (signed word) spline_8segB::p1_x#1 (signed word) spline_8segB::p1_x#0 Identical Phi Values (signed word) spline_8segB::p2_x#1 (signed word) spline_8segB::p2_x#0 @@ -3689,8 +3689,8 @@ Finalized unsigned number type (byte) $3d Finalized unsigned number type (byte) $16 Finalized unsigned number type (byte) 9 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 -Alias (byte~) bitmap_plot_spline_8seg::$8 = (byte~) bitmap_plot_spline_8seg::$7 +Alias bitmap_init::$7 = bitmap_init::$3 +Alias bitmap_plot_spline_8seg::$8 = bitmap_plot_spline_8seg::$7 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) bitmap_line::$4 [95] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24 Simple Condition (bool~) bitmap_line::$5 [336] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 @@ -3853,9 +3853,9 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in *((signed word*)SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16) Consolidated array index constant in *((signed word*)SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte~) show_letter::$20 = (byte~) show_letter::$24 -Alias (byte~) show_letter::$21 = (byte~) show_letter::$26 -Alias (byte~) show_letter::$22 = (byte~) show_letter::$28 +Alias show_letter::$20 = show_letter::$24 +Alias show_letter::$21 = show_letter::$26 +Alias show_letter::$22 = show_letter::$28 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bitmap_clear::fgcol#2 (const byte) WHITE Identical Phi Values (byte) bitmap_clear::bgcol#2 (const byte) BLACK @@ -4782,131 +4782,131 @@ VARIABLE REGISTER WEIGHTS (signed dword) SplineVector32::x (signed dword) SplineVector32::y (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 4.0 -(byte~) abs_u16::$1 4.0 +(byte~) abs_u16::$0 2.00000000002E11 +(byte~) abs_u16::$1 2.00000000002E11 (word) abs_u16::return -(word) abs_u16::return#0 4.0 -(word) abs_u16::return#1 4.0 -(word) abs_u16::return#2 4.0 -(word) abs_u16::return#4 2.0 +(word) abs_u16::return#0 2.0000000002E10 +(word) abs_u16::return#1 2.0000000002E10 +(word) abs_u16::return#2 2.00000000002E11 +(word) abs_u16::return#4 5.5000000001E10 (word) abs_u16::w -(word) abs_u16::w#0 4.0 -(word) abs_u16::w#1 4.0 -(word) abs_u16::w#2 2.5 +(word) abs_u16::w#0 2.0000000002E10 +(word) abs_u16::w#1 2.0000000002E10 +(word) abs_u16::w#2 8.000000000125E10 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (byte) bitmap_clear::bgcol (byte) bitmap_clear::col (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (word) bitmap_line::dx -(word) bitmap_line::dx#0 75.275 +(word) bitmap_line::dx#0 7.51000000000175E11 (word) bitmap_line::dy -(word) bitmap_line::dy#0 83.6388888888889 +(word) bitmap_line::dy#0 8.344444444446389E11 (word) bitmap_line::e -(word) bitmap_line::e#0 4.0 -(word) bitmap_line::e#1 1334.6666666666667 -(word) bitmap_line::e#2 2002.0 -(word) bitmap_line::e#3 400.79999999999995 -(word) bitmap_line::e#6 1501.5 +(word) bitmap_line::e#0 2.0000000002E10 +(word) bitmap_line::e#1 1.3333333333334666E13 +(word) bitmap_line::e#2 2.0000000000002E13 +(word) bitmap_line::e#3 4.0020000000005996E12 +(word) bitmap_line::e#6 1.50000000000015E13 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 4.0 -(word) bitmap_line::e1#1 1334.6666666666667 -(word) bitmap_line::e1#2 2002.0 -(word) bitmap_line::e1#3 400.79999999999995 -(word) bitmap_line::e1#6 1501.5 +(word) bitmap_line::e1#0 2.0000000002E10 +(word) bitmap_line::e1#1 1.3333333333334666E13 +(word) bitmap_line::e1#2 2.0000000000002E13 +(word) bitmap_line::e1#3 4.0020000000005996E12 +(word) bitmap_line::e1#6 1.50000000000015E13 (word) bitmap_line::sx -(word) bitmap_line::sx#0 66.80000000000001 +(word) bitmap_line::sx#0 6.670000000000999E11 (word) bitmap_line::sy -(word) bitmap_line::sy#0 77.07692307692308 +(word) bitmap_line::sy#0 7.696153846155E11 (word) bitmap_line::x -(word) bitmap_line::x#0 48.34782608695653 -(word) bitmap_line::x#1 1001.0 -(word) bitmap_line::x#12 2002.0 -(word) bitmap_line::x#13 572.2857142857142 -(word) bitmap_line::x#15 572.0 -(word) bitmap_line::x#6 1002.0 -(word) bitmap_line::x#7 751.25 +(word) bitmap_line::x#0 2.217395652478261E9 +(word) bitmap_line::x#1 1.0000000000001E13 +(word) bitmap_line::x#12 2.0000000000002E13 +(word) bitmap_line::x#13 5.715714285715E12 +(word) bitmap_line::x#15 5.714285714286286E12 +(word) bitmap_line::x#6 1.00050000000015E13 +(word) bitmap_line::x#7 7.502500000001E12 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 50.5 -(word) bitmap_line::x1#1 400.4 +(word) bitmap_line::x1#0 50000.5 +(word) bitmap_line::x1#1 4.000000004E8 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 101.0 -(word) bitmap_line::x2#10 65.84375 -(word) bitmap_line::x2#13 1001.0 +(word) bitmap_line::x2#0 100001.0 +(word) bitmap_line::x2#10 3.1315625312515625E11 +(word) bitmap_line::x2#13 1.000000001E9 (word) bitmap_line::y -(word) bitmap_line::y#0 50.45454545454547 -(word) bitmap_line::y#1 572.0 -(word) bitmap_line::y#13 2002.0 -(word) bitmap_line::y#15 429.2857142857143 -(word) bitmap_line::y#2 1001.0 -(word) bitmap_line::y#4 501.0 -(word) bitmap_line::y#7 2002.0 +(word) bitmap_line::y#0 1.8636409093636363E9 +(word) bitmap_line::y#1 5.714285714286286E12 +(word) bitmap_line::y#13 2.0000000000002E13 +(word) bitmap_line::y#15 4.2871428571434287E12 +(word) bitmap_line::y#2 1.0000000000001E13 +(word) bitmap_line::y#4 5.00250000000075E12 +(word) bitmap_line::y#7 2.0000000000002E13 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 67.33333333333333 -(word) bitmap_line::y1#1 500.5 +(word) bitmap_line::y1#0 66667.33333333333 +(word) bitmap_line::y1#1 5.000000005E8 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 202.0 -(word) bitmap_line::y2#11 65.84375 -(word) bitmap_line::y2#13 2002.0 +(word) bitmap_line::y2#0 200002.0 +(word) bitmap_line::y2#11 3.1315625312515625E11 +(word) bitmap_line::y2#13 2.000000002E9 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 2.00000000000002E14 +(byte~) bitmap_plot::$2 2.00000000000002E14 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 5.00000000000005E13 +(byte*) bitmap_plot::plotter#1 1.500000000000015E14 (word) bitmap_plot::x -(word) bitmap_plot::x#0 4.0 -(word) bitmap_plot::x#1 2002.0 -(word) bitmap_plot::x#2 4.0 -(word) bitmap_plot::x#3 2002.0 -(word) bitmap_plot::x#4 502.5 +(word) bitmap_plot::x#0 2.0000000002E10 +(word) bitmap_plot::x#1 2.0000000000002E13 +(word) bitmap_plot::x#2 2.0000000002E10 +(word) bitmap_plot::x#3 2.0000000000002E13 +(word) bitmap_plot::x#4 5.50050000000015E13 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 2.0 -(byte) bitmap_plot::y#1 1001.0 -(byte) bitmap_plot::y#2 2.0 -(byte) bitmap_plot::y#3 1001.0 -(byte) bitmap_plot::y#4 2010.0 +(byte) bitmap_plot::y#0 1.0000000001E10 +(byte) bitmap_plot::y#1 1.0000000000001E13 +(byte) bitmap_plot::y#2 1.0000000001E10 +(byte) bitmap_plot::y#3 1.0000000000001E13 +(byte) bitmap_plot::y#4 2.20020000000006E14 (void()) bitmap_plot_spline_8seg() -(byte~) bitmap_plot_spline_8seg::$8 500.5 -(byte~) bitmap_plot_spline_8seg::$9 1501.5 +(byte~) bitmap_plot_spline_8seg::$8 5.000000005E8 +(byte~) bitmap_plot_spline_8seg::$9 1.5000000015E9 (signed word) bitmap_plot_spline_8seg::current_x -(signed word) bitmap_plot_spline_8seg::current_x#0 2.0 -(signed word) bitmap_plot_spline_8seg::current_x#1 500.5 -(signed word) bitmap_plot_spline_8seg::current_x#2 1003.0 +(signed word) bitmap_plot_spline_8seg::current_x#0 1000001.0 +(signed word) bitmap_plot_spline_8seg::current_x#1 5.000000005E8 +(signed word) bitmap_plot_spline_8seg::current_x#2 1.001000002E9 (signed word) bitmap_plot_spline_8seg::current_y -(signed word) bitmap_plot_spline_8seg::current_y#0 4.0 -(signed word) bitmap_plot_spline_8seg::current_y#1 667.3333333333334 -(signed word) bitmap_plot_spline_8seg::current_y#2 501.5 +(signed word) bitmap_plot_spline_8seg::current_y#0 2000002.0 +(signed word) bitmap_plot_spline_8seg::current_y#1 6.666666673333334E8 +(signed word) bitmap_plot_spline_8seg::current_y#2 5.00500001E8 (byte) bitmap_plot_spline_8seg::n -(byte) bitmap_plot_spline_8seg::n#1 1501.5 -(byte) bitmap_plot_spline_8seg::n#2 400.4 +(byte) bitmap_plot_spline_8seg::n#1 1.5000000015E9 +(byte) bitmap_plot_spline_8seg::n#2 4.000000004E8 (byte*) bitmap_screen (void()) main() (byte) main::angle -(byte) main::angle#1 22.0 -(byte) main::angle#2 3.3000000000000003 +(byte) main::angle#1 202.0 +(byte) main::angle#2 30.299999999999997 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -4914,261 +4914,261 @@ VARIABLE REGISTER WEIGHTS (byte*) main::vicSelectGfxBank1_toDd001_gfx (byte) main::vicSelectGfxBank1_toDd001_return (byte) main::w -(byte) main::w#1 151.5 -(byte) main::w#4 734.6666666666666 +(byte) main::w#1 1501.5 +(byte) main::w#4 7334.666666666667 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 12.625 +(byte) memset::c#4 125000.125 (byte*) memset::dst -(byte*) memset::dst#1 202.0 -(byte*) memset::dst#2 135.33333333333331 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 2000002.0 +(byte*) memset::dst#2 1336668.3333333335 +(byte*) memset::dst#4 20002.0 (byte*) memset::end -(byte*) memset::end#0 17.166666666666664 +(byte*) memset::end#0 168333.6666666667 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 10001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$13 4.0 -(word~) mulf16s::$16 4.0 -(word~) mulf16s::$17 4.0 -(word~) mulf16s::$9 4.0 +(word~) mulf16s::$13 2.0000002E7 +(word~) mulf16s::$16 2.0000002E7 +(word~) mulf16s::$17 2.0000002E7 +(word~) mulf16s::$9 2.0000002E7 (signed word) mulf16s::a -(signed word) mulf16s::a#0 2.0 -(signed word) mulf16s::a#1 2.0 -(signed word) mulf16s::a#2 2.0 -(signed word) mulf16s::a#3 2.0 -(signed word) mulf16s::a#4 0.7692307692307693 +(signed word) mulf16s::a#0 1000001.0 +(signed word) mulf16s::a#1 1000001.0 +(signed word) mulf16s::a#2 1000001.0 +(signed word) mulf16s::a#3 1000001.0 +(signed word) mulf16s::a#4 1076923.4615384615 (signed word) mulf16s::b -(signed word) mulf16s::b#0 4.0 -(signed word) mulf16s::b#1 4.0 -(signed word) mulf16s::b#2 4.0 -(signed word) mulf16s::b#3 4.0 -(signed word) mulf16s::b#4 0.9090909090909092 +(signed word) mulf16s::b#0 2000002.0 +(signed word) mulf16s::b#1 2000002.0 +(signed word) mulf16s::b#2 2000002.0 +(signed word) mulf16s::b#3 2000002.0 +(signed word) mulf16s::b#4 1272727.7272727273 (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 4.0 -(dword) mulf16s::m#5 2.5 +(dword) mulf16s::m#0 1.0000001E7 +(dword) mulf16s::m#1 2.0000002E7 +(dword) mulf16s::m#2 2.0000002E7 +(dword) mulf16s::m#4 2.0000002E7 +(dword) mulf16s::m#5 1.250000125E7 (signed dword) mulf16s::return -(signed dword) mulf16s::return#0 1.6666666666666665 -(signed dword) mulf16s::return#10 4.0 -(signed dword) mulf16s::return#2 4.0 -(signed dword) mulf16s::return#3 4.0 -(signed dword) mulf16s::return#4 4.0 +(signed dword) mulf16s::return#0 2333334.1666666665 +(signed dword) mulf16s::return#10 2000002.0 +(signed dword) mulf16s::return#2 2000002.0 +(signed dword) mulf16s::return#3 2000002.0 +(signed dword) mulf16s::return#4 2000002.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (word) mulf16u::a -(word) mulf16u::a#0 2.0 +(word) mulf16u::a#0 5.5000001E7 (word) mulf16u::b -(word) mulf16u::b#0 2.0 +(word) mulf16u::b#0 5.5000001E7 (dword) mulf16u::return -(dword) mulf16u::return#0 1.3333333333333333 -(dword) mulf16u::return#2 4.0 +(dword) mulf16u::return#0 3.6666667333333336E7 +(dword) mulf16u::return#2 2.0000002E7 (void()) mulf_init() -(byte~) mulf_init::$1 22.0 -(byte~) mulf_init::$4 22.0 -(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$1 2002.0 +(byte~) mulf_init::$4 2002.0 +(byte~) mulf_init::$5 2002.0 (byte) mulf_init::c -(byte) mulf_init::c#1 2.5384615384615383 -(byte) mulf_init::c#2 11.0 +(byte) mulf_init::c#1 231.0 +(byte) mulf_init::c#2 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 4.125 -(byte) mulf_init::dir#4 11.0 +(byte) mulf_init::dir#2 375.375 +(byte) mulf_init::dir#4 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 11.0 -(word) mulf_init::sqr#2 22.0 -(word) mulf_init::sqr#3 9.166666666666666 -(word) mulf_init::sqr#4 5.5 +(word) mulf_init::sqr#1 1001.0 +(word) mulf_init::sqr#2 2002.0 +(word) mulf_init::sqr#3 834.1666666666667 +(word) mulf_init::sqr#4 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 2.75 +(byte*) mulf_init::sqr1_hi#1 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 22.0 -(byte*) mulf_init::sqr1_lo#2 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 2002.0 +(byte*) mulf_init::sqr1_lo#2 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 8.25 +(byte*) mulf_init::sqr2_hi#1 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 22.0 -(byte*) mulf_init::sqr2_lo#2 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 2002.0 +(byte*) mulf_init::sqr2_lo#2 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 11.0 -(byte) mulf_init::x_2#2 5.5 -(byte) mulf_init::x_2#3 6.6000000000000005 +(byte) mulf_init::x_2#1 1001.0 +(byte) mulf_init::x_2#2 500.5 +(byte) mulf_init::x_2#3 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 6.6000000000000005 -(byte) mulf_init::x_255#2 8.8 +(byte) mulf_init::x_255#1 600.5999999999999 +(byte) mulf_init::x_255#2 800.8 (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) -(signed dword~) rotate::$1 2.0 -(signed word~) rotate::$10 4.0 -(signed dword~) rotate::$11 2.0 -(signed word~) rotate::$12 4.0 -(signed word~) rotate::$13 4.0 -(byte~) rotate::$15 2.0 -(byte~) rotate::$18 2.0 -(signed word~) rotate::$2 4.0 -(signed dword~) rotate::$4 2.0 -(signed word~) rotate::$5 4.0 -(signed dword~) rotate::$8 2.0 -(signed word~) rotate::$9 4.0 +(signed dword~) rotate::$1 1000001.0 +(signed word~) rotate::$10 2000002.0 +(signed dword~) rotate::$11 1000001.0 +(signed word~) rotate::$12 2000002.0 +(signed word~) rotate::$13 2000002.0 +(byte~) rotate::$15 1000001.0 +(byte~) rotate::$18 1000001.0 +(signed word~) rotate::$2 2000002.0 +(signed dword~) rotate::$4 1000001.0 +(signed word~) rotate::$5 2000002.0 +(signed dword~) rotate::$8 1000001.0 +(signed word~) rotate::$9 2000002.0 (byte) rotate::angle -(byte) rotate::angle#0 202.0 -(byte) rotate::angle#1 202.0 -(byte) rotate::angle#2 12.625 +(byte) rotate::angle#0 200002.0 +(byte) rotate::angle#1 200002.0 +(byte) rotate::angle#2 12500.125 (signed word) rotate::cos_a -(signed word) rotate::cos_a#0 0.75 +(signed word) rotate::cos_a#0 375000.375 (struct SplineVector16) rotate::return (signed word) rotate::return_x -(signed word) rotate::return_x#0 101.0 -(signed word) rotate::return_x#1 101.0 -(signed word) rotate::return_x#2 34.0 +(signed word) rotate::return_x#0 100001.0 +(signed word) rotate::return_x#1 100001.0 +(signed word) rotate::return_x#2 200000.5 (signed word) rotate::return_y -(signed word) rotate::return_y#0 101.0 -(signed word) rotate::return_y#1 101.0 -(signed word) rotate::return_y#2 34.0 +(signed word) rotate::return_y#0 100001.0 +(signed word) rotate::return_y#1 100001.0 +(signed word) rotate::return_y#2 200000.5 (signed word) rotate::rotated_x (signed word) rotate::rotated_y (signed word) rotate::sin_a -(signed word) rotate::sin_a#0 0.6666666666666666 +(signed word) rotate::sin_a#0 333333.6666666666 (struct SplineVector16) rotate::vector (signed word) rotate::vector_x -(signed word) rotate::vector_x#0 67.33333333333333 -(signed word) rotate::vector_x#1 67.33333333333333 -(signed word) rotate::vector_x#2 7.9230769230769225 +(signed word) rotate::vector_x#0 66667.33333333333 +(signed word) rotate::vector_x#1 66667.33333333333 +(signed word) rotate::vector_x#2 84615.53846153847 (signed word) rotate::vector_y -(signed word) rotate::vector_y#0 101.0 -(signed word) rotate::vector_y#1 101.0 -(signed word) rotate::vector_y#2 11.444444444444443 +(signed word) rotate::vector_y#0 100001.0 +(signed word) rotate::vector_y#1 100001.0 +(signed word) rotate::vector_y#2 122222.44444444444 (signed word) rotate::xr -(signed word) rotate::xr#0 0.25 -(signed word) rotate::xr#1 0.4444444444444444 +(signed word) rotate::xr#0 125000.125 +(signed word) rotate::xr#1 222222.44444444444 (signed word) rotate::yr -(signed word) rotate::yr#0 0.23529411764705882 -(signed word) rotate::yr#1 1.3333333333333333 +(signed word) rotate::yr#0 117647.17647058824 +(signed word) rotate::yr#1 666667.3333333334 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 4.0 -(byte~) sgn_u16::$1 4.0 +(byte~) sgn_u16::$0 2.00000000002E11 +(byte~) sgn_u16::$1 2.00000000002E11 (word) sgn_u16::return -(word) sgn_u16::return#0 4.0 -(word) sgn_u16::return#1 4.0 -(word) sgn_u16::return#4 1.0 +(word) sgn_u16::return#0 2.0000000002E10 +(word) sgn_u16::return#1 2.0000000002E10 +(word) sgn_u16::return#4 5.0000000005E9 (word) sgn_u16::w -(word) sgn_u16::w#0 4.0 -(word) sgn_u16::w#1 4.0 -(word) sgn_u16::w#2 6.0 +(word) sgn_u16::w#0 2.0000000002E10 +(word) sgn_u16::w#1 2.0000000002E10 +(word) sgn_u16::w#2 1.20000000003E11 (void()) show_letter((byte) show_letter::angle) -(byte~) show_letter::$20 151.5 -(byte~) show_letter::$21 151.5 -(byte~) show_letter::$22 202.0 -(byte~) show_letter::$23 202.0 -(byte~) show_letter::$25 202.0 -(byte~) show_letter::$27 202.0 +(byte~) show_letter::$20 150001.5 +(byte~) show_letter::$21 150001.5 +(byte~) show_letter::$22 200002.0 +(byte~) show_letter::$23 200002.0 +(byte~) show_letter::$25 200002.0 +(byte~) show_letter::$27 200002.0 (byte) show_letter::angle -(byte) show_letter::angle#0 3.6724137931034484 +(byte) show_letter::angle#0 3450.051724137931 (signed word) show_letter::current_x -(signed word) show_letter::current_x#10 7.76923076923077 -(signed word) show_letter::current_x#11 101.0 -(signed word) show_letter::current_x#4 5.315789473684211 +(signed word) show_letter::current_x#10 7692.384615384615 +(signed word) show_letter::current_x#11 100001.0 +(signed word) show_letter::current_x#4 5263.210526315789 (signed word) show_letter::current_y -(signed word) show_letter::current_y#10 7.76923076923077 -(signed word) show_letter::current_y#11 202.0 -(signed word) show_letter::current_y#4 5.05 +(signed word) show_letter::current_y#10 7692.384615384615 +(signed word) show_letter::current_y#11 200002.0 +(signed word) show_letter::current_y#4 5000.05 (byte) show_letter::i -(byte) show_letter::i#1 75.75 -(byte) show_letter::i#10 15.538461538461537 +(byte) show_letter::i#1 75000.75 +(byte) show_letter::i#10 15384.769230769232 (struct SplineVector16) show_letter::segment_to (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y (byte) show_letter::segment_type -(byte) show_letter::segment_type#0 151.5 +(byte) show_letter::segment_type#0 150001.5 (struct SplineVector16) show_letter::segment_via (signed word) show_letter::segment_via_x -(signed word) show_letter::segment_via_x#0 22.444444444444443 +(signed word) show_letter::segment_via_x#0 22222.444444444445 (signed word) show_letter::segment_via_y -(signed word) show_letter::segment_via_y#0 22.444444444444443 +(signed word) show_letter::segment_via_y#0 22222.444444444445 (signed word) show_letter::to_x -(signed word) show_letter::to_x#0 101.0 -(signed word) show_letter::to_x#1 101.0 -(signed word) show_letter::to_x#2 101.0 +(signed word) show_letter::to_x#0 100001.0 +(signed word) show_letter::to_x#1 100001.0 +(signed word) show_letter::to_x#2 100001.0 (signed word) show_letter::to_y -(signed word) show_letter::to_y#0 101.0 -(signed word) show_letter::to_y#1 101.0 -(signed word) show_letter::to_y#2 101.0 +(signed word) show_letter::to_y#0 100001.0 +(signed word) show_letter::to_y#1 100001.0 +(signed word) show_letter::to_y#2 100001.0 (signed word) show_letter::via_x -(signed word) show_letter::via_x#0 101.0 -(signed word) show_letter::via_x#1 101.0 -(signed word) show_letter::via_x#2 101.0 +(signed word) show_letter::via_x#0 100001.0 +(signed word) show_letter::via_x#1 100001.0 +(signed word) show_letter::via_x#2 100001.0 (signed word) show_letter::via_y -(signed word) show_letter::via_y#0 101.0 -(signed word) show_letter::via_y#1 101.0 -(signed word) show_letter::via_y#2 101.0 +(signed word) show_letter::via_y#0 100001.0 +(signed word) show_letter::via_y#1 100001.0 +(signed word) show_letter::via_y#2 100001.0 (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) -(signed word~) spline_8segB::$0 4.0 -(signed word~) spline_8segB::$1 4.0 -(signed word~) spline_8segB::$10 4.0 -(signed word~) spline_8segB::$12 4.0 -(signed word~) spline_8segB::$18 4.0 -(signed word~) spline_8segB::$19 1.3333333333333333 -(signed word~) spline_8segB::$20 4.0 -(signed word~) spline_8segB::$21 2.0 -(signed word~) spline_8segB::$22 2002.0 -(signed word~) spline_8segB::$23 500.5 -(signed word~) spline_8segB::$24 2002.0 -(signed word~) spline_8segB::$25 667.3333333333334 -(signed word~) spline_8segB::$3 4.0 -(byte~) spline_8segB::$31 1501.5 -(signed word~) spline_8segB::$4 4.0 -(signed word~) spline_8segB::$6 4.0 -(signed word~) spline_8segB::$8 4.0 +(signed word~) spline_8segB::$0 2000002.0 +(signed word~) spline_8segB::$1 2000002.0 +(signed word~) spline_8segB::$10 2000002.0 +(signed word~) spline_8segB::$12 2000002.0 +(signed word~) spline_8segB::$18 2000002.0 +(signed word~) spline_8segB::$19 666667.3333333334 +(signed word~) spline_8segB::$20 2000002.0 +(signed word~) spline_8segB::$21 1000001.0 +(signed word~) spline_8segB::$22 2.000000002E9 +(signed word~) spline_8segB::$23 5.000000005E8 +(signed word~) spline_8segB::$24 2.000000002E9 +(signed word~) spline_8segB::$25 6.666666673333334E8 +(signed word~) spline_8segB::$3 2000002.0 +(byte~) spline_8segB::$31 1.5000000015E9 +(signed word~) spline_8segB::$4 2000002.0 +(signed word~) spline_8segB::$6 2000002.0 +(signed word~) spline_8segB::$8 2000002.0 (signed word) spline_8segB::a_x -(signed word) spline_8segB::a_x#0 0.5 +(signed word) spline_8segB::a_x#0 250000.25 (signed word) spline_8segB::a_y -(signed word) spline_8segB::a_y#0 0.6000000000000001 +(signed word) spline_8segB::a_y#0 300000.30000000005 (signed word) spline_8segB::b_x -(signed word) spline_8segB::b_x#0 1.3333333333333333 +(signed word) spline_8segB::b_x#0 666667.3333333334 (signed word) spline_8segB::b_y -(signed word) spline_8segB::b_y#0 1.3333333333333333 +(signed word) spline_8segB::b_y#0 666667.3333333334 (signed word) spline_8segB::i_x -(signed word) spline_8segB::i_x#0 0.5714285714285714 -(signed word) spline_8segB::i_x#1 500.5 -(signed word) spline_8segB::i_x#2 300.5 +(signed word) spline_8segB::i_x#0 285714.5714285714 +(signed word) spline_8segB::i_x#1 5.000000005E8 +(signed word) spline_8segB::i_x#2 3.001000004E8 (signed word) spline_8segB::i_y -(signed word) spline_8segB::i_y#0 0.8 -(signed word) spline_8segB::i_y#1 667.3333333333334 -(signed word) spline_8segB::i_y#2 273.1818181818182 +(signed word) spline_8segB::i_y#0 400000.4 +(signed word) spline_8segB::i_y#1 6.666666673333334E8 +(signed word) spline_8segB::i_y#2 2.728181821818182E8 (signed word) spline_8segB::j_x -(signed word) spline_8segB::j_x#0 55.72222222222223 +(signed word) spline_8segB::j_x#0 5.5611111222222224E7 (signed word) spline_8segB::j_y -(signed word) spline_8segB::j_y#0 59.0 +(signed word) spline_8segB::j_y#0 5.888235305882353E7 (byte) spline_8segB::n -(byte) spline_8segB::n#1 1501.5 -(byte) spline_8segB::n#2 250.25 +(byte) spline_8segB::n#1 1.5000000015E9 +(byte) spline_8segB::n#2 2.5000000025E8 (struct SplineVector16) spline_8segB::p0 (signed word) spline_8segB::p0_x -(signed word) spline_8segB::p0_x#0 4.863636363636363 +(signed word) spline_8segB::p0_x#0 140909.27272727274 (signed word) spline_8segB::p0_y -(signed word) spline_8segB::p0_y#0 4.863636363636363 +(signed word) spline_8segB::p0_y#0 140909.27272727274 (struct SplineVector16) spline_8segB::p1 (signed word) spline_8segB::p1_x -(signed word) spline_8segB::p1_x#0 10.499999999999998 +(signed word) spline_8segB::p1_x#0 210000.30000000002 (signed word) spline_8segB::p1_y -(signed word) spline_8segB::p1_y#0 9.545454545454545 +(signed word) spline_8segB::p1_y#0 190909.36363636365 (struct SplineVector16) spline_8segB::p2 (signed word) spline_8segB::p2_x -(signed word) spline_8segB::p2_x#0 34.33333333333333 +(signed word) spline_8segB::p2_x#0 366667.3333333334 (signed word) spline_8segB::p2_y -(signed word) spline_8segB::p2_y#0 20.599999999999998 +(signed word) spline_8segB::p2_y#0 220000.40000000002 (signed word) spline_8segB::p_x -(signed word) spline_8segB::p_x#0 2.0 -(signed word) spline_8segB::p_x#1 334.0 -(signed word) spline_8segB::p_x#2 375.625 +(signed word) spline_8segB::p_x#0 1000001.0 +(signed word) spline_8segB::p_x#1 3.335000005E8 +(signed word) spline_8segB::p_x#2 3.751250005E8 (signed word) spline_8segB::p_y -(signed word) spline_8segB::p_y#0 4.0 -(signed word) spline_8segB::p_y#1 286.2857142857143 -(signed word) spline_8segB::p_y#2 333.8888888888889 +(signed word) spline_8segB::p_y#0 2000002.0 +(signed word) spline_8segB::p_y#1 2.8585714328571427E8 +(signed word) spline_8segB::p_y#2 3.334444448888889E8 Initial phi equivalence classes [ main::angle#2 main::angle#1 ] @@ -8329,455 +8329,441 @@ SIN: REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:306 [ bitmap_init::$4 ] has ALU potential. -Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@3 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@3 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::angle#2 main::angle#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::w#4 main::w#1 ] -Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] ) always clobbers reg byte a -Statement [26] (byte) main::angle#1 ← (byte) main::angle#2 + (byte) 9 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a -Statement [29] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ) always clobbers reg byte a +Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] { } ) always clobbers reg byte a +Statement [26] (byte) main::angle#1 ← (byte) main::angle#2 + (byte) 9 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { } ) always clobbers reg byte a +Statement [29] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] -Statement [30] (byte~) show_letter::$20 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ) always clobbers reg byte a -Statement [31] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ) always clobbers reg byte a +Statement [30] (byte~) show_letter::$20 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [31] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:85 [ show_letter::$20 ] -Statement [32] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ) always clobbers reg byte a -Statement [33] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ) always clobbers reg byte a -Statement [34] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ) always clobbers reg byte a -Statement [35] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ) always clobbers reg byte a -Statement [36] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ) always clobbers reg byte a -Statement [39] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ) always clobbers reg byte a -Statement [40] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ) always clobbers reg byte a -Statement [41] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ) always clobbers reg byte a -Statement [42] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ) always clobbers reg byte a -Statement [43] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ) always clobbers reg byte a -Statement [44] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [45] (byte~) show_letter::$25 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ) always clobbers reg byte a -Statement [46] (byte~) show_letter::$21 ← (byte~) show_letter::$25 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ) always clobbers reg byte a -Statement [47] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ) always clobbers reg byte a +Statement [32] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [33] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [34] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [35] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [36] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [39] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [40] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [41] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [42] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [43] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [44] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [45] (byte~) show_letter::$25 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [46] (byte~) show_letter::$21 ← (byte~) show_letter::$25 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [47] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:107 [ show_letter::$21 ] -Statement [48] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ) always clobbers reg byte a -Statement [49] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ) always clobbers reg byte a -Statement [50] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ) always clobbers reg byte a -Statement [51] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ) always clobbers reg byte a -Statement [52] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ) always clobbers reg byte a -Statement [55] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ) always clobbers reg byte a -Statement [56] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ) always clobbers reg byte a -Statement [57] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ) always clobbers reg byte a -Statement [58] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ) always clobbers reg byte a -Statement [59] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ) always clobbers reg byte a -Statement [60] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ) always clobbers reg byte a -Statement [61] (byte~) show_letter::$27 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ) always clobbers reg byte a -Statement [62] (byte~) show_letter::$22 ← (byte~) show_letter::$27 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ) always clobbers reg byte a -Statement [66] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a -Statement [68] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [69] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a -Statement [74] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [75] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ) always clobbers reg byte a -Statement [76] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ) always clobbers reg byte a -Statement [77] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ) always clobbers reg byte a -Statement [78] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ) always clobbers reg byte a -Statement [79] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ) always clobbers reg byte a -Statement [80] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ) always clobbers reg byte a -Statement [81] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ) always clobbers reg byte a -Statement [85] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] ) always clobbers reg byte a -Statement [86] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ) always clobbers reg byte a -Statement [88] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ) always clobbers reg byte a +Statement [48] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [49] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [50] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [51] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [52] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [55] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [56] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [57] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [58] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [59] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [60] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [61] (byte~) show_letter::$27 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [62] (byte~) show_letter::$22 ← (byte~) show_letter::$27 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [66] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [68] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [69] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [74] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [75] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [76] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [77] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [78] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [79] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [80] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [81] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [85] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [86] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [88] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Statement [89] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ) always clobbers reg byte a -Statement [90] (byte~) bitmap_plot_spline_8seg::$8 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ) always clobbers reg byte a -Statement [91] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ) always clobbers reg byte a +Statement [89] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [90] (byte~) bitmap_plot_spline_8seg::$8 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [91] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:143 [ bitmap_plot_spline_8seg::$8 ] -Statement [92] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ) always clobbers reg byte a -Statement [94] (byte~) bitmap_plot_spline_8seg::$9 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ) always clobbers reg byte a -Statement [95] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ) always clobbers reg byte a +Statement [92] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [94] (byte~) bitmap_plot_spline_8seg::$9 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [95] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:144 [ bitmap_plot_spline_8seg::$9 ] -Statement [96] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ) always clobbers reg byte a -Statement [101] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [103] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [104] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [105] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a -Statement [107] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [108] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [109] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [110] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [111] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [113] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [114] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [115] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [117] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [118] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [119] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [120] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [122] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [123] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [96] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [101] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [103] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [104] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [105] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [107] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [108] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [109] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [110] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [111] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [113] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [114] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [115] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [117] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [118] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [119] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [120] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [122] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [123] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] -Statement [125] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [126] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [127] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [128] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [129] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [131] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [133] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#6 bitmap_plot::y#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [134] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#2 bitmap_plot::x#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [137] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [139] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [140] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [142] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [143] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [144] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [145] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [146] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [148] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [149] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_plot::y#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [150] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#0 bitmap_plot::x#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [153] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [154] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [155] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [156] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] ) always clobbers reg byte a reg byte y +Statement [125] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [126] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [127] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [128] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [129] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [131] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [133] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#6 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#6 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [134] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#2 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#2 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [137] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [139] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [140] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [142] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [143] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [144] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [145] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [146] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [148] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [149] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [150] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [153] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [154] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [155] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::angle#2 main::angle#1 ] Removing always clobbered register reg byte y as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Statement [160] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::show_letter:20::bitmap_line:70::sgn_u16:112 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::sgn_u16:112 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_line:70::sgn_u16:116 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::sgn_u16:116 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [167] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [170] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [173] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ) always clobbers reg byte a -Statement [174] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ) always clobbers reg byte a -Statement [175] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ) always clobbers reg byte a -Statement [176] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ) always clobbers reg byte a -Statement [177] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ) always clobbers reg byte a -Statement [178] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ) always clobbers reg byte a -Statement [179] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ) always clobbers reg byte a -Statement [180] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ) always clobbers reg byte a -Statement [181] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ) always clobbers reg byte a -Statement [182] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ) always clobbers reg byte a -Statement [183] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ) always clobbers reg byte a -Statement [184] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ) always clobbers reg byte a -Statement [185] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ) always clobbers reg byte a -Statement [186] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ) always clobbers reg byte a -Statement [187] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ) always clobbers reg byte a -Statement [188] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ) always clobbers reg byte a -Statement [189] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ) always clobbers reg byte a -Statement [190] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ) always clobbers reg byte a -Statement [192] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ) always clobbers reg byte a +Statement [170] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [173] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [174] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [175] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [176] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [177] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [178] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [179] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [180] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [181] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [182] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [183] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [184] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [185] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [186] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [187] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [188] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [189] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [190] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [192] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:39 [ spline_8segB::n#2 spline_8segB::n#1 ] -Statement [193] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ) always clobbers reg byte a -Statement [194] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ) always clobbers reg byte a -Statement [195] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ) always clobbers reg byte a -Statement [196] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a -Statement [197] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a +Statement [193] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [194] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [195] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [196] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [197] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:208 [ spline_8segB::$31 ] -Statement [198] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ) always clobbers reg byte a -Statement [199] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ) always clobbers reg byte a -Statement [200] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ) always clobbers reg byte a -Statement [201] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ) always clobbers reg byte a -Statement [202] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ) always clobbers reg byte a -Statement [205] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] ) always clobbers reg byte a -Statement [206] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] ) always clobbers reg byte a -Statement [207] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] ) always clobbers reg byte a -Statement [208] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] ) always clobbers reg byte a -Statement [209] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] ) always clobbers reg byte a -Statement [210] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [213] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ) always clobbers reg byte a +Statement [198] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [199] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [200] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [201] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [202] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [205] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [206] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [207] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [208] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [209] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [210] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [213] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:44 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] -Statement [214] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [215] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [217] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [218] (signed dword~) rotate::$1 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ) always clobbers reg byte a -Statement [219] (signed word~) rotate::$2 ← (signed word)(signed dword~) rotate::$1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ) always clobbers reg byte a -Statement [220] (signed word) rotate::xr#0 ← (signed word~) rotate::$2 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ) always clobbers reg byte a -Statement [221] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ) always clobbers reg byte a -Statement [222] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ) always clobbers reg byte a -Statement [224] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ) always clobbers reg byte a -Statement [225] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ) always clobbers reg byte a -Statement [226] (signed word~) rotate::$5 ← (signed word)(signed dword~) rotate::$4 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ) always clobbers reg byte a -Statement [227] (signed word) rotate::yr#0 ← (signed word~) rotate::$5 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ) always clobbers reg byte a -Statement [228] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ) always clobbers reg byte a -Statement [229] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ) always clobbers reg byte a -Statement [230] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ) always clobbers reg byte a -Statement [232] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ) always clobbers reg byte a -Statement [233] (signed dword~) rotate::$8 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ) always clobbers reg byte a -Statement [234] (signed word~) rotate::$9 ← (signed word)(signed dword~) rotate::$8 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ) always clobbers reg byte a -Statement [235] (signed word~) rotate::$10 ← (signed word~) rotate::$9 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ) always clobbers reg byte a -Statement [236] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$10 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ) always clobbers reg byte a -Statement [237] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ) always clobbers reg byte a -Statement [238] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ) always clobbers reg byte a -Statement [240] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ) always clobbers reg byte a -Statement [241] (signed dword~) rotate::$11 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$11 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$11 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$11 ] ) always clobbers reg byte a -Statement [242] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$11 [ rotate::yr#0 rotate::xr#1 rotate::$12 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$12 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$12 ] ) always clobbers reg byte a -Statement [243] (signed word~) rotate::$13 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] ) always clobbers reg byte a -Statement [244] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$13 [ rotate::xr#1 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] ) always clobbers reg byte a -Statement [245] (byte~) rotate::$15 ← > (signed word) rotate::xr#1 [ rotate::yr#1 rotate::$15 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#1 rotate::$15 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#1 rotate::$15 ] ) always clobbers reg byte a -Statement [246] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$15 [ rotate::return_x#2 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::yr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::yr#1 ] ) always clobbers reg byte a -Statement [247] (byte~) rotate::$18 ← > (signed word) rotate::yr#1 [ rotate::return_x#2 rotate::$18 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::$18 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$18 ] ) always clobbers reg byte a -Statement [248] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$18 [ rotate::return_x#2 rotate::return_y#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] ) always clobbers reg byte a -Statement [251] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [252] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [254] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [255] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [256] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [257] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [258] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [259] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [261] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [262] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [263] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [264] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [266] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [268] *((const word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [269] *((const word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] ) always clobbers reg byte a +Statement [214] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [215] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [217] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [218] (signed dword~) rotate::$1 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [219] (signed word~) rotate::$2 ← (signed word)(signed dword~) rotate::$1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [220] (signed word) rotate::xr#0 ← (signed word~) rotate::$2 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [221] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [222] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [224] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [225] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [226] (signed word~) rotate::$5 ← (signed word)(signed dword~) rotate::$4 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [227] (signed word) rotate::yr#0 ← (signed word~) rotate::$5 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [228] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [229] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [230] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [232] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [233] (signed dword~) rotate::$8 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [234] (signed word~) rotate::$9 ← (signed word)(signed dword~) rotate::$8 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [235] (signed word~) rotate::$10 ← (signed word~) rotate::$9 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [236] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$10 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [237] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [238] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [240] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [241] (signed dword~) rotate::$11 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$11 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [242] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$11 [ rotate::yr#0 rotate::xr#1 rotate::$12 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [243] (signed word~) rotate::$13 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [244] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$13 [ rotate::xr#1 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [246] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$15 [ rotate::return_x#2 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [248] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$18 [ rotate::return_x#2 rotate::return_y#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [251] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [252] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [254] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [255] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [256] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [257] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [258] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [259] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [261] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [262] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [263] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [264] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [266] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [268] *((const word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [269] *((const word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) 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[1]:2 [ main::angle#2 main::angle#1 ] Removing always clobbered register reg byte x as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:44 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] -Statement [271] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [279] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:9::memset:276 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [271] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [279] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:9::memset:276 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:61 [ memset::c#4 ] -Statement [280] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:9::memset:274 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:9::memset:276 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [281] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [283] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [285] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [280] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:9::memset:274 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:9::memset:276 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [281] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [283] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [285] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:61 [ memset::c#4 ] -Statement [304] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [304] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:66 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [311] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [311] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:74 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [313] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [313] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [314] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [315] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [317] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [314] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [315] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [317] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [318] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [320] (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:5 [ 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 [326] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [331] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [332] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [318] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [320] (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:5 [ 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 [326] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [332] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:74 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [333] (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:5 [ 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 [334] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [336] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] (byte) show_letter::angle#0 ← (byte) main::angle#2 [ main::angle#2 show_letter::angle#0 ] ( main:2 [ main::angle#2 show_letter::angle#0 ] ) always clobbers reg byte a -Statement [22] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@3 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] ) always clobbers reg byte a -Statement [26] (byte) main::angle#1 ← (byte) main::angle#2 + (byte) 9 [ main::angle#1 ] ( main:2 [ main::angle#1 ] ) always clobbers reg byte a reg byte x -Statement [29] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ) always clobbers reg byte a -Statement [30] (byte~) show_letter::$20 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ) always clobbers reg byte a -Statement [31] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ) always clobbers reg byte a -Statement [32] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ) always clobbers reg byte a -Statement [33] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ) always clobbers reg byte a -Statement [34] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ) always clobbers reg byte a -Statement [35] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ) always clobbers reg byte a -Statement [36] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ) always clobbers reg byte a -Statement [39] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ) always clobbers reg byte a -Statement [40] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ) always clobbers reg byte a -Statement [41] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ) always clobbers reg byte a -Statement [42] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ) always clobbers reg byte a -Statement [43] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ) always clobbers reg byte a -Statement [44] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [45] (byte~) show_letter::$25 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ) always clobbers reg byte a -Statement [46] (byte~) show_letter::$21 ← (byte~) show_letter::$25 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ) always clobbers reg byte a -Statement [47] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ) always clobbers reg byte a -Statement [48] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ) always clobbers reg byte a -Statement [49] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ) always clobbers reg byte a -Statement [50] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ) always clobbers reg byte a -Statement [51] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ) always clobbers reg byte a -Statement [52] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ) always clobbers reg byte a -Statement [55] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ) always clobbers reg byte a -Statement [56] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ) always clobbers reg byte a -Statement [57] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ) always clobbers reg byte a -Statement [58] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ) always clobbers reg byte a -Statement [59] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ) always clobbers reg byte a -Statement [60] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ) always clobbers reg byte a -Statement [61] (byte~) show_letter::$27 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ) always clobbers reg byte a -Statement [62] (byte~) show_letter::$22 ← (byte~) show_letter::$27 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ) always clobbers reg byte a -Statement [66] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ) always clobbers reg byte a -Statement [67] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a -Statement [68] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a -Statement [69] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a -Statement [72] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [74] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [75] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ) always clobbers reg byte a -Statement [76] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ) always clobbers reg byte a -Statement [77] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ) always clobbers reg byte a -Statement [78] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ) always clobbers reg byte a -Statement [79] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ) always clobbers reg byte a -Statement [80] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ) always clobbers reg byte a -Statement [81] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ) always clobbers reg byte a -Statement [85] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] ) always clobbers reg byte a -Statement [86] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ) always clobbers reg byte a -Statement [88] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ) always clobbers reg byte a -Statement [89] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ) always clobbers reg byte a -Statement [90] (byte~) bitmap_plot_spline_8seg::$8 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ) always clobbers reg byte a -Statement [91] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ) always clobbers reg byte a -Statement [92] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ) always clobbers reg byte a -Statement [94] (byte~) bitmap_plot_spline_8seg::$9 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ) always clobbers reg byte a -Statement [95] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ) always clobbers reg byte a -Statement [96] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ) always clobbers reg byte a -Statement [101] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ) always clobbers reg byte a -Statement [103] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ) always clobbers reg byte a -Statement [104] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ) always clobbers reg byte a -Statement [105] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a -Statement [107] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a -Statement [108] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [109] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [110] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [111] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [113] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [114] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [115] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [117] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [118] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [119] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [120] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [122] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [123] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [125] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [126] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [127] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [128] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [129] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [131] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [133] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#6 bitmap_plot::y#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [134] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#2 bitmap_plot::x#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [137] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [139] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a -Statement [140] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a -Statement [142] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [143] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [144] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [145] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [146] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [148] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [149] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_plot::y#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [150] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#0 bitmap_plot::x#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [153] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [154] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [155] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [156] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] ) always clobbers reg byte a reg byte y -Statement [160] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::show_letter:20::bitmap_line:70::sgn_u16:112 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::sgn_u16:112 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_line:70::sgn_u16:116 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::sgn_u16:116 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [167] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [170] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [173] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ) always clobbers reg byte a -Statement [174] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ) always clobbers reg byte a -Statement [175] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ) always clobbers reg byte a -Statement [176] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ) always clobbers reg byte a -Statement [177] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ) always clobbers reg byte a -Statement [178] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ) always clobbers reg byte a -Statement [179] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ) always clobbers reg byte a -Statement [180] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ) always clobbers reg byte a -Statement [181] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ) always clobbers reg byte a -Statement [182] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ) always clobbers reg byte a -Statement [183] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ) always clobbers reg byte a -Statement [184] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ) always clobbers reg byte a -Statement [185] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ) always clobbers reg byte a -Statement [186] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ) always clobbers reg byte a -Statement [187] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ) always clobbers reg byte a -Statement [188] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ) always clobbers reg byte a -Statement [189] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ) always clobbers reg byte a -Statement [190] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ) always clobbers reg byte a -Statement [192] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ) always clobbers reg byte a -Statement [193] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ) always clobbers reg byte a -Statement [194] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ) always clobbers reg byte a -Statement [195] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ) always clobbers reg byte a -Statement [196] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a -Statement [197] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a -Statement [198] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ) always clobbers reg byte a -Statement [199] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ) always clobbers reg byte a -Statement [200] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ) always clobbers reg byte a -Statement [201] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ) always clobbers reg byte a -Statement [202] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ) always clobbers reg byte a -Statement [205] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] ) always clobbers reg byte a -Statement [206] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] ) always clobbers reg byte a -Statement [207] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] ) always clobbers reg byte a -Statement [208] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] ) always clobbers reg byte a -Statement [209] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] ) always clobbers reg byte a -Statement [210] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] ) always clobbers reg byte a -Statement [213] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ) always clobbers reg byte a -Statement [214] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [215] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [217] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [218] (signed dword~) rotate::$1 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ) always clobbers reg byte a -Statement [219] (signed word~) rotate::$2 ← (signed word)(signed dword~) rotate::$1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ) always clobbers reg byte a -Statement [220] (signed word) rotate::xr#0 ← (signed word~) rotate::$2 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ) always clobbers reg byte a -Statement [221] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ) always clobbers reg byte a -Statement [222] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ) always clobbers reg byte a -Statement [224] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ) always clobbers reg byte a -Statement [225] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ) always clobbers reg byte a -Statement [226] (signed word~) rotate::$5 ← (signed word)(signed dword~) rotate::$4 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ) always clobbers reg byte a -Statement [227] (signed word) rotate::yr#0 ← (signed word~) rotate::$5 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ) always clobbers reg byte a -Statement [228] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ) always clobbers reg byte a -Statement [229] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ) always clobbers reg byte a -Statement [230] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ) always clobbers reg byte a -Statement [232] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ) always clobbers reg byte a -Statement [233] (signed dword~) rotate::$8 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ) always clobbers reg byte a -Statement [234] (signed word~) rotate::$9 ← (signed word)(signed dword~) rotate::$8 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ) always clobbers reg byte a -Statement [235] (signed word~) rotate::$10 ← (signed word~) rotate::$9 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ) always clobbers reg byte a -Statement [236] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$10 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ) always clobbers reg byte a -Statement [237] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ) always clobbers reg byte a -Statement [238] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ) always clobbers reg byte a -Statement [240] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ) always clobbers reg byte a -Statement [241] (signed dword~) rotate::$11 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$11 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$11 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$11 ] ) always clobbers reg byte a -Statement [242] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$11 [ rotate::yr#0 rotate::xr#1 rotate::$12 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$12 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$12 ] ) always clobbers reg byte a -Statement [243] (signed word~) rotate::$13 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] ) always clobbers reg byte a -Statement [244] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$13 [ rotate::xr#1 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] ) always clobbers reg byte a -Statement [245] (byte~) rotate::$15 ← > (signed word) rotate::xr#1 [ rotate::yr#1 rotate::$15 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#1 rotate::$15 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#1 rotate::$15 ] ) always clobbers reg byte a -Statement [246] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$15 [ rotate::return_x#2 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::yr#1 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::yr#1 ] ) always clobbers reg byte a -Statement [247] (byte~) rotate::$18 ← > (signed word) rotate::yr#1 [ rotate::return_x#2 rotate::$18 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::$18 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$18 ] ) always clobbers reg byte a -Statement [248] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$18 [ rotate::return_x#2 rotate::return_y#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] ) always clobbers reg byte a -Statement [251] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [252] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [254] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [255] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [256] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [257] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [258] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [259] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [261] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [262] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [263] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [264] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [266] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [268] *((const word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [269] *((const word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] ) always clobbers reg byte a +Statement [334] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [336] (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:5 [ 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 [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] (byte) show_letter::angle#0 ← (byte) main::angle#2 [ main::angle#2 show_letter::angle#0 ] ( main:2 [ main::angle#2 show_letter::angle#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [22] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@3 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] { } ) always clobbers reg byte a +Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ main::angle#2 main::w#4 ] ( main:2 [ main::angle#2 main::w#4 ] { } ) always clobbers reg byte a +Statement [26] (byte) main::angle#1 ← (byte) main::angle#2 + (byte) 9 [ main::angle#1 ] ( main:2 [ main::angle#1 ] { } ) always clobbers reg byte a reg byte x +Statement [29] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$23 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [30] (byte~) show_letter::$20 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [31] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$20 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [32] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$20) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [33] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [34] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [35] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [36] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [39] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [40] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [41] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [42] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [43] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [44] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [45] (byte~) show_letter::$25 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$25 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [46] (byte~) show_letter::$21 ← (byte~) show_letter::$25 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [47] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [48] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$21) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [49] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [50] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [51] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [52] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [55] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [56] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [57] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [58] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [59] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [60] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [61] (byte~) show_letter::$27 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$27 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [62] (byte~) show_letter::$22 ← (byte~) show_letter::$27 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$22 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [66] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [68] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [69] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [72] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [74] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [75] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [76] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [77] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [78] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [79] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [80] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [81] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2::show_letter:20 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [85] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [86] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [88] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [89] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [90] (byte~) bitmap_plot_spline_8seg::$8 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [91] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::$8 bitmap_line::x2#13 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [92] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$8) [ bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [94] (byte~) bitmap_plot_spline_8seg::$9 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$9 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [95] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$9 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [96] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$9) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( main:2::show_letter:20::bitmap_plot_spline_8seg:84 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [101] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [103] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [104] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [105] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [107] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [108] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [109] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [110] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [111] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [113] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [114] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [115] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [117] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [118] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [119] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [120] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [122] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [123] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [125] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [126] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [127] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [128] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [129] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [131] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [133] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#6 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#6 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [134] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#2 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#2 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [137] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [139] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [140] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [142] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [143] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [144] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [145] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [146] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [148] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [149] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [150] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::show_letter:20::bitmap_line:70 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [153] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [154] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [155] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::show_letter:20::bitmap_line:70::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:124 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:135 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:141 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } main:2::show_letter:20::bitmap_line:70::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::bitmap_plot:151 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y +Statement [170] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::show_letter:20::bitmap_line:70::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:102 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_line:70::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } main:2::show_letter:20::bitmap_plot_spline_8seg:84::bitmap_line:93::abs_u16:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [173] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [174] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [175] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [176] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [177] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [178] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [179] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [180] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [181] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [182] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [183] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [184] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [185] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [186] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [187] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [188] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [189] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [190] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [192] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [193] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [194] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [195] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [196] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [197] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [198] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [199] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [200] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [201] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [202] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [205] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [206] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [207] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [208] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [209] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [210] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::show_letter:20::spline_8segB:82 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [213] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [214] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [215] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [217] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [218] (signed dword~) rotate::$1 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [219] (signed word~) rotate::$2 ← (signed word)(signed dword~) rotate::$1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [220] (signed word) rotate::xr#0 ← (signed word~) rotate::$2 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [221] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [222] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [224] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [225] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [226] (signed word~) rotate::$5 ← (signed word)(signed dword~) rotate::$4 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [227] (signed word) rotate::yr#0 ← (signed word~) rotate::$5 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [228] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [229] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [230] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [232] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [233] (signed dword~) rotate::$8 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$8 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [234] (signed word~) rotate::$9 ← (signed word)(signed dword~) rotate::$8 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [235] (signed word~) rotate::$10 ← (signed word~) rotate::$9 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [236] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$10 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [237] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [238] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [240] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [241] (signed dword~) rotate::$11 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$11 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [242] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$11 [ rotate::yr#0 rotate::xr#1 rotate::$12 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [243] (signed word~) rotate::$13 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [244] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$13 [ rotate::xr#1 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [246] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$15 [ rotate::return_x#2 rotate::yr#1 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [248] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$18 [ rotate::return_x#2 rotate::return_y#2 ] ( main:2::show_letter:20::rotate:38 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } main:2::show_letter:20::rotate:54 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [251] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [252] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [254] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [255] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [256] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [257] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [258] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$16 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [259] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [261] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [262] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [263] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [264] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [266] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:54::mulf16s:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } main:2::show_letter:20::rotate:38::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:54::mulf16s:231 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } main:2::show_letter:20::rotate:38::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } main:2::show_letter:20::rotate:54::mulf16s:239 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [268] *((const word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [269] *((const word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) 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 [271] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [279] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:9::memset:276 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [280] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:9::memset:274 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:9::memset:276 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [281] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [283] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [285] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [297] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [304] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [311] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [313] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [314] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [315] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [317] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [318] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [320] (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:5 [ 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 [326] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [331] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [332] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [333] (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:5 [ 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 [334] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [336] (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:5 [ 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 [271] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::show_letter:20::rotate:38::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:216::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:223::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:231::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:38::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::show_letter:20::rotate:54::mulf16s:239::mulf16u:253 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [279] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:9::memset:276 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [280] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:9::memset:274 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:9::memset:276 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [281] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [283] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [285] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:9::memset:274 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:274 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:9::memset:276 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:18::memset:276 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [297] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [304] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:7 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a +Statement [311] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [313] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [314] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [315] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [317] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [318] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [320] (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:5 [ 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 [326] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [332] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [334] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [336] (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:5 [ 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 Potential registers zp[1]:2 [ main::angle#2 main::angle#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::w#4 main::w#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] : zp[1]:4 , @@ -8943,20 +8929,20 @@ Potential registers zp[1]:310 [ mulf_init::$4 ] : zp[1]:310 , reg byte a , reg b Potential registers zp[1]:311 [ mulf_init::$5 ] : zp[1]:311 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_line] 7,125.57: zp[2]:20 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 6,399.78: zp[2]:22 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 5,242.97: zp[2]:18 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 5,242.97: zp[2]:24 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 2,269.84: zp[2]:16 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] 1,167.84: zp[2]:14 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] 83.64: zp[2]:151 [ bitmap_line::dy#0 ] 77.08: zp[2]:159 [ bitmap_line::sy#0 ] 75.28: zp[2]:147 [ bitmap_line::dx#0 ] 66.8: zp[2]:155 [ bitmap_line::sx#0 ] -Uplift Scope [spline_8segB] 2,002: zp[2]:200 [ spline_8segB::$22 ] 2,002: zp[2]:204 [ spline_8segB::$24 ] 1,751.75: zp[1]:39 [ spline_8segB::n#2 spline_8segB::n#1 ] 1,501.5: zp[1]:208 [ spline_8segB::$31 ] 941.32: zp[2]:42 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] 801.57: zp[2]:40 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] 711.62: zp[2]:35 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] 667.33: zp[2]:206 [ spline_8segB::$25 ] 624.17: zp[2]:37 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] 500.5: zp[2]:202 [ spline_8segB::$23 ] 59: zp[2]:198 [ spline_8segB::j_y#0 ] 55.72: zp[2]:196 [ spline_8segB::j_x#0 ] 34.33: zp[2]:139 [ spline_8segB::p2_x#0 ] 20.6: zp[2]:141 [ spline_8segB::p2_y#0 ] 10.5: zp[2]:135 [ spline_8segB::p1_x#0 ] 9.55: zp[2]:137 [ spline_8segB::p1_y#0 ] 4.86: zp[2]:131 [ spline_8segB::p0_x#0 ] 4.86: zp[2]:133 [ spline_8segB::p0_y#0 ] 4: zp[2]:172 [ spline_8segB::$0 ] 4: zp[2]:174 [ spline_8segB::$1 ] 4: zp[2]:178 [ spline_8segB::$3 ] 4: zp[2]:180 [ spline_8segB::$4 ] 4: zp[2]:184 [ spline_8segB::$6 ] 4: zp[2]:188 [ spline_8segB::$8 ] 4: zp[2]:192 [ spline_8segB::$10 ] 4: zp[2]:194 [ spline_8segB::$12 ] 4: zp[2]:209 [ spline_8segB::$18 ] 4: zp[2]:213 [ spline_8segB::$20 ] 2: zp[2]:215 [ spline_8segB::$21 ] 1.33: zp[2]:186 [ spline_8segB::b_x#0 ] 1.33: zp[2]:190 [ spline_8segB::b_y#0 ] 1.33: zp[2]:211 [ spline_8segB::$19 ] 0.6: zp[2]:182 [ spline_8segB::a_y#0 ] 0.5: zp[2]:176 [ spline_8segB::a_x#0 ] -Uplift Scope [bitmap_plot] 4,514.5: zp[2]:27 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 4,016: zp[1]:26 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 4: zp[2]:163 [ bitmap_plot::$1 ] 4: zp[1]:167 [ bitmap_plot::$2 ] 3: zp[2]:165 [ bitmap_plot::plotter#1 ] 1: zp[2]:161 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_plot_spline_8seg] 1,901.9: zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] 1,505.5: zp[2]:9 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] 1,501.5: zp[1]:144 [ bitmap_plot_spline_8seg::$9 ] 1,172.83: zp[2]:11 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] 500.5: zp[1]:143 [ bitmap_plot_spline_8seg::$8 ] -Uplift Scope [show_letter] 207.05: zp[2]:7 [ show_letter::current_y#4 show_letter::current_y#11 ] 202: zp[1]:84 [ show_letter::$23 ] 202: zp[1]:106 [ show_letter::$25 ] 202: zp[1]:128 [ show_letter::$27 ] 202: zp[1]:129 [ show_letter::$22 ] 151.5: zp[1]:85 [ show_letter::$20 ] 151.5: zp[1]:107 [ show_letter::$21 ] 151.5: zp[1]:130 [ show_letter::segment_type#0 ] 106.32: zp[2]:5 [ show_letter::current_x#4 show_letter::current_x#11 ] 101: zp[2]:86 [ show_letter::to_x#0 ] 101: zp[2]:88 [ show_letter::to_y#0 ] 101: zp[2]:90 [ show_letter::to_x#1 ] 101: zp[2]:92 [ show_letter::to_y#1 ] 101: zp[2]:98 [ show_letter::to_x#2 ] 101: zp[2]:100 [ show_letter::to_y#2 ] 101: zp[2]:108 [ show_letter::via_x#0 ] 101: zp[2]:110 [ show_letter::via_y#0 ] 101: zp[2]:112 [ show_letter::via_x#1 ] 101: zp[2]:114 [ show_letter::via_y#1 ] 101: zp[2]:120 [ show_letter::via_x#2 ] 101: zp[2]:122 [ show_letter::via_y#2 ] 91.29: zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] 22.44: zp[2]:124 [ show_letter::segment_via_x#0 ] 22.44: zp[2]:126 [ show_letter::segment_via_y#0 ] 7.77: zp[2]:102 [ show_letter::current_x#10 ] 7.77: zp[2]:104 [ show_letter::current_y#10 ] 3.67: zp[1]:83 [ show_letter::angle#0 ] -Uplift Scope [rotate] 416.62: zp[1]:44 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] 213.44: zp[2]:47 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] 142.59: zp[2]:45 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] 101: zp[2]:94 [ rotate::return_x#0 ] 101: zp[2]:96 [ rotate::return_y#0 ] 101: zp[2]:116 [ rotate::return_x#1 ] 101: zp[2]:118 [ rotate::return_y#1 ] 34: zp[2]:274 [ rotate::return_x#2 ] 34: zp[2]:277 [ rotate::return_y#2 ] 4: zp[2]:227 [ rotate::$2 ] 4: zp[2]:239 [ rotate::$5 ] 4: zp[2]:253 [ rotate::$9 ] 4: zp[2]:255 [ rotate::$10 ] 4: zp[2]:267 [ rotate::$12 ] 4: zp[2]:269 [ rotate::$13 ] 2: zp[4]:223 [ rotate::$1 ] 2: zp[4]:235 [ rotate::$4 ] 2: zp[4]:249 [ rotate::$8 ] 2: zp[4]:263 [ rotate::$11 ] 2: zp[1]:273 [ rotate::$15 ] 2: zp[1]:276 [ rotate::$18 ] 1.33: zp[2]:271 [ rotate::yr#1 ] 0.75: zp[2]:217 [ rotate::cos_a#0 ] 0.67: zp[2]:243 [ rotate::sin_a#0 ] 0.44: zp[2]:257 [ rotate::xr#1 ] 0.25: zp[2]:229 [ rotate::xr#0 ] 0.24: zp[2]:241 [ rotate::yr#0 ] -Uplift Scope [main] 886.17: zp[1]:3 [ main::w#4 main::w#1 ] 25.3: zp[1]:2 [ main::angle#2 main::angle#1 ] -Uplift Scope [memset] 341.33: zp[2]:62 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 17.17: zp[2]:303 [ memset::end#0 ] 12.62: zp[1]:61 [ memset::c#4 ] 2: zp[2]:57 [ memset::num#2 ] 0: zp[2]:59 [ memset::str#3 ] -Uplift Scope [mulf_init] 47.67: zp[2]:81 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:75 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:69 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:74 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:309 [ mulf_init::$1 ] 22: zp[1]:310 [ mulf_init::$4 ] 22: zp[1]:311 [ mulf_init::$5 ] 15.4: zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:78 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:72 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:67 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:64 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:65 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:66 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:306 [ bitmap_init::$4 ] 22: zp[1]:307 [ bitmap_init::$5 ] 22: zp[1]:308 [ bitmap_init::$6 ] 5.5: zp[1]:305 [ bitmap_init::$7 ] -Uplift Scope [mulf16s] 16.91: zp[2]:51 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] 16.5: zp[4]:53 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 8.77: zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] 4: zp[4]:219 [ mulf16s::return#2 ] 4: zp[4]:231 [ mulf16s::return#3 ] 4: zp[4]:245 [ mulf16s::return#4 ] 4: zp[4]:259 [ mulf16s::return#10 ] 4: zp[2]:287 [ mulf16s::$9 ] 4: zp[2]:289 [ mulf16s::$16 ] 4: zp[2]:291 [ mulf16s::$13 ] 4: zp[2]:293 [ mulf16s::$17 ] 1.67: zp[4]:295 [ mulf16s::return#0 ] -Uplift Scope [abs_u16] 16.5: zp[2]:33 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 4: zp[2]:145 [ abs_u16::return#0 ] 4: zp[2]:149 [ abs_u16::return#1 ] 4: zp[1]:170 [ abs_u16::$0 ] 4: zp[1]:171 [ abs_u16::$1 ] -Uplift Scope [sgn_u16] 14: zp[2]:29 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 4: zp[2]:153 [ sgn_u16::return#0 ] 4: zp[2]:157 [ sgn_u16::return#1 ] 4: zp[1]:168 [ sgn_u16::$0 ] 4: zp[1]:169 [ sgn_u16::$1 ] 1: zp[2]:31 [ sgn_u16::return#4 ] -Uplift Scope [mulf16u] 4: zp[4]:283 [ mulf16u::return#2 ] 2: zp[2]:279 [ mulf16u::a#0 ] 2: zp[2]:281 [ mulf16u::b#0 ] 1.33: zp[4]:299 [ mulf16u::return#0 ] +Uplift Scope [bitmap_plot] 240,040,000,000,010: zp[1]:26 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 200,000,000,000,002: zp[2]:163 [ bitmap_plot::$1 ] 200,000,000,000,002: zp[1]:167 [ bitmap_plot::$2 ] 150,000,000,000,001.5: zp[2]:165 [ bitmap_plot::plotter#1 ] 95,045,000,000,009.5: zp[2]:27 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 50,000,000,000,000.5: zp[2]:161 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line] 65,006,292,279,012.67: zp[2]:20 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 58,940,117,445,660.16: zp[2]:22 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 52,355,333,333,340.77: zp[2]:18 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,355,333,333,340.77: zp[2]:24 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 834,444,444,444.64: zp[2]:151 [ bitmap_line::dy#0 ] 769,615,384,615.5: zp[2]:159 [ bitmap_line::sy#0 ] 751,000,000,000.18: zp[2]:147 [ bitmap_line::dx#0 ] 667,000,000,000.1: zp[2]:155 [ bitmap_line::sx#0 ] 315,156,453,129.16: zp[2]:16 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] 314,156,353,127.16: zp[2]:14 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] +Uplift Scope [abs_u16] 375,000,000,008.25: zp[2]:33 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 200,000,000,002: zp[1]:170 [ abs_u16::$0 ] 200,000,000,002: zp[1]:171 [ abs_u16::$1 ] 20,000,000,002: zp[2]:145 [ abs_u16::return#0 ] 20,000,000,002: zp[2]:149 [ abs_u16::return#1 ] +Uplift Scope [sgn_u16] 200,000,000,002: zp[1]:168 [ sgn_u16::$0 ] 200,000,000,002: zp[1]:169 [ sgn_u16::$1 ] 160,000,000,007: zp[2]:29 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 20,000,000,002: zp[2]:153 [ sgn_u16::return#0 ] 20,000,000,002: zp[2]:157 [ sgn_u16::return#1 ] 5,000,000,000.5: zp[2]:31 [ sgn_u16::return#4 ] +Uplift Scope [spline_8segB] 2,000,000,002: zp[2]:200 [ spline_8segB::$22 ] 2,000,000,002: zp[2]:204 [ spline_8segB::$24 ] 1,750,000,001.75: zp[1]:39 [ spline_8segB::n#2 spline_8segB::n#1 ] 1,500,000,001.5: zp[1]:208 [ spline_8segB::$31 ] 939,884,849.92: zp[2]:42 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] 800,385,715.47: zp[2]:40 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] 709,625,002: zp[2]:35 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] 666,666,667.33: zp[2]:206 [ spline_8segB::$25 ] 621,301,590.17: zp[2]:37 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] 500,000,000.5: zp[2]:202 [ spline_8segB::$23 ] 58,882,353.06: zp[2]:198 [ spline_8segB::j_y#0 ] 55,611,111.22: zp[2]:196 [ spline_8segB::j_x#0 ] 2,000,002: zp[2]:172 [ spline_8segB::$0 ] 2,000,002: zp[2]:174 [ spline_8segB::$1 ] 2,000,002: zp[2]:178 [ spline_8segB::$3 ] 2,000,002: zp[2]:180 [ spline_8segB::$4 ] 2,000,002: zp[2]:184 [ spline_8segB::$6 ] 2,000,002: zp[2]:188 [ spline_8segB::$8 ] 2,000,002: zp[2]:192 [ spline_8segB::$10 ] 2,000,002: zp[2]:194 [ spline_8segB::$12 ] 2,000,002: zp[2]:209 [ spline_8segB::$18 ] 2,000,002: zp[2]:213 [ spline_8segB::$20 ] 1,000,001: zp[2]:215 [ spline_8segB::$21 ] 666,667.33: zp[2]:186 [ spline_8segB::b_x#0 ] 666,667.33: zp[2]:190 [ spline_8segB::b_y#0 ] 666,667.33: zp[2]:211 [ spline_8segB::$19 ] 366,667.33: zp[2]:139 [ spline_8segB::p2_x#0 ] 300,000.3: zp[2]:182 [ spline_8segB::a_y#0 ] 250,000.25: zp[2]:176 [ spline_8segB::a_x#0 ] 220,000.4: zp[2]:141 [ spline_8segB::p2_y#0 ] 210,000.3: zp[2]:135 [ spline_8segB::p1_x#0 ] 190,909.36: zp[2]:137 [ spline_8segB::p1_y#0 ] 140,909.27: zp[2]:131 [ spline_8segB::p0_x#0 ] 140,909.27: zp[2]:133 [ spline_8segB::p0_y#0 ] +Uplift Scope [bitmap_plot_spline_8seg] 1,900,000,001.9: zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] 1,502,000,003.5: zp[2]:9 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] 1,500,000,001.5: zp[1]:144 [ bitmap_plot_spline_8seg::$9 ] 1,169,166,670.33: zp[2]:11 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] 500,000,000.5: zp[1]:143 [ bitmap_plot_spline_8seg::$8 ] +Uplift Scope [mulf16s] 82,500,008.25: zp[4]:53 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 20,000,002: zp[2]:287 [ mulf16s::$9 ] 20,000,002: zp[2]:289 [ mulf16s::$16 ] 20,000,002: zp[2]:291 [ mulf16s::$13 ] 20,000,002: zp[2]:293 [ mulf16s::$17 ] 9,272,735.73: zp[2]:51 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] 5,076,927.46: zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] 2,333,334.17: zp[4]:295 [ mulf16s::return#0 ] 2,000,002: zp[4]:219 [ mulf16s::return#2 ] 2,000,002: zp[4]:231 [ mulf16s::return#3 ] 2,000,002: zp[4]:245 [ mulf16s::return#4 ] 2,000,002: zp[4]:259 [ mulf16s::return#10 ] +Uplift Scope [mulf16u] 55,000,001: zp[2]:279 [ mulf16u::a#0 ] 55,000,001: zp[2]:281 [ mulf16u::b#0 ] 36,666,667.33: zp[4]:299 [ mulf16u::return#0 ] 20,000,002: zp[4]:283 [ mulf16u::return#2 ] +Uplift Scope [rotate] 2,000,002: zp[2]:227 [ rotate::$2 ] 2,000,002: zp[2]:239 [ rotate::$5 ] 2,000,002: zp[2]:253 [ rotate::$9 ] 2,000,002: zp[2]:255 [ rotate::$10 ] 2,000,002: zp[2]:267 [ rotate::$12 ] 2,000,002: zp[2]:269 [ rotate::$13 ] 1,000,001: zp[4]:223 [ rotate::$1 ] 1,000,001: zp[4]:235 [ rotate::$4 ] 1,000,001: zp[4]:249 [ rotate::$8 ] 1,000,001: zp[4]:263 [ rotate::$11 ] 1,000,001: zp[1]:273 [ rotate::$15 ] 1,000,001: zp[1]:276 [ rotate::$18 ] 666,667.33: zp[2]:271 [ rotate::yr#1 ] 412,504.12: zp[1]:44 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] 375,000.38: zp[2]:217 [ rotate::cos_a#0 ] 333,333.67: zp[2]:243 [ rotate::sin_a#0 ] 322,224.44: zp[2]:47 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] 222,222.44: zp[2]:257 [ rotate::xr#1 ] 217,950.21: zp[2]:45 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] 200,000.5: zp[2]:274 [ rotate::return_x#2 ] 200,000.5: zp[2]:277 [ rotate::return_y#2 ] 125,000.12: zp[2]:229 [ rotate::xr#0 ] 117,647.18: zp[2]:241 [ rotate::yr#0 ] 100,001: zp[2]:94 [ rotate::return_x#0 ] 100,001: zp[2]:96 [ rotate::return_y#0 ] 100,001: zp[2]:116 [ rotate::return_x#1 ] 100,001: zp[2]:118 [ rotate::return_y#1 ] +Uplift Scope [memset] 3,356,672.33: zp[2]:62 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 168,333.67: zp[2]:303 [ memset::end#0 ] 125,000.12: zp[1]:61 [ memset::c#4 ] 10,001: zp[2]:57 [ memset::num#2 ] 0: zp[2]:59 [ memset::str#3 ] +Uplift Scope [show_letter] 205,002.05: zp[2]:7 [ show_letter::current_y#4 show_letter::current_y#11 ] 200,002: zp[1]:84 [ show_letter::$23 ] 200,002: zp[1]:106 [ show_letter::$25 ] 200,002: zp[1]:128 [ show_letter::$27 ] 200,002: zp[1]:129 [ show_letter::$22 ] 150,001.5: zp[1]:85 [ show_letter::$20 ] 150,001.5: zp[1]:107 [ show_letter::$21 ] 150,001.5: zp[1]:130 [ show_letter::segment_type#0 ] 105,264.21: zp[2]:5 [ show_letter::current_x#4 show_letter::current_x#11 ] 100,001: zp[2]:86 [ show_letter::to_x#0 ] 100,001: zp[2]:88 [ show_letter::to_y#0 ] 100,001: zp[2]:90 [ show_letter::to_x#1 ] 100,001: zp[2]:92 [ show_letter::to_y#1 ] 100,001: zp[2]:98 [ show_letter::to_x#2 ] 100,001: zp[2]:100 [ show_letter::to_y#2 ] 100,001: zp[2]:108 [ show_letter::via_x#0 ] 100,001: zp[2]:110 [ show_letter::via_y#0 ] 100,001: zp[2]:112 [ show_letter::via_x#1 ] 100,001: zp[2]:114 [ show_letter::via_y#1 ] 100,001: zp[2]:120 [ show_letter::via_x#2 ] 100,001: zp[2]:122 [ show_letter::via_y#2 ] 90,385.52: zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] 22,222.44: zp[2]:124 [ show_letter::segment_via_x#0 ] 22,222.44: zp[2]:126 [ show_letter::segment_via_y#0 ] 7,692.38: zp[2]:102 [ show_letter::current_x#10 ] 7,692.38: zp[2]:104 [ show_letter::current_y#10 ] 3,450.05: zp[1]:83 [ show_letter::angle#0 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:81 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:75 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:69 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:74 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:309 [ mulf_init::$1 ] 2,002: zp[1]:310 [ mulf_init::$4 ] 2,002: zp[1]:311 [ mulf_init::$5 ] 1,401.4: zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:78 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:72 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:67 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:64 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:65 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:66 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:306 [ bitmap_init::$4 ] 2,002: zp[1]:307 [ bitmap_init::$5 ] 2,002: zp[1]:308 [ bitmap_init::$6 ] 500.5: zp[1]:305 [ bitmap_init::$7 ] +Uplift Scope [main] 8,836.17: zp[1]:3 [ main::w#4 main::w#1 ] 232.3: zp[1]:2 [ main::angle#2 main::angle#1 ] Uplift Scope [SplineVector16] Uplift Scope [SplineVector32] Uplift Scope [bitmap_clear] @@ -8965,56 +8951,56 @@ Uplift Scope [Segment] Uplift Scope [Segment::SegmentType] Uplift Scope [] -Uplifting [bitmap_line] best 849275 combination zp[2]:20 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:22 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:18 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:24 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:16 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] zp[2]:14 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] zp[2]:151 [ bitmap_line::dy#0 ] zp[2]:159 [ bitmap_line::sy#0 ] zp[2]:147 [ bitmap_line::dx#0 ] zp[2]:155 [ bitmap_line::sx#0 ] -Uplifting [spline_8segB] best 832275 combination zp[2]:200 [ spline_8segB::$22 ] zp[2]:204 [ spline_8segB::$24 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] reg byte x [ spline_8segB::$31 ] zp[2]:42 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] zp[2]:40 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] zp[2]:35 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] zp[2]:206 [ spline_8segB::$25 ] zp[2]:37 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] zp[2]:202 [ spline_8segB::$23 ] zp[2]:198 [ spline_8segB::j_y#0 ] zp[2]:196 [ spline_8segB::j_x#0 ] zp[2]:139 [ spline_8segB::p2_x#0 ] zp[2]:141 [ spline_8segB::p2_y#0 ] zp[2]:135 [ spline_8segB::p1_x#0 ] zp[2]:137 [ spline_8segB::p1_y#0 ] zp[2]:131 [ spline_8segB::p0_x#0 ] zp[2]:133 [ spline_8segB::p0_y#0 ] zp[2]:172 [ spline_8segB::$0 ] zp[2]:174 [ spline_8segB::$1 ] zp[2]:178 [ spline_8segB::$3 ] zp[2]:180 [ spline_8segB::$4 ] zp[2]:184 [ spline_8segB::$6 ] zp[2]:188 [ spline_8segB::$8 ] zp[2]:192 [ spline_8segB::$10 ] zp[2]:194 [ spline_8segB::$12 ] zp[2]:209 [ spline_8segB::$18 ] zp[2]:213 [ spline_8segB::$20 ] zp[2]:215 [ spline_8segB::$21 ] zp[2]:186 [ spline_8segB::b_x#0 ] zp[2]:190 [ spline_8segB::b_y#0 ] zp[2]:211 [ spline_8segB::$19 ] zp[2]:182 [ spline_8segB::a_y#0 ] zp[2]:176 [ spline_8segB::a_x#0 ] -Uplifting [bitmap_plot] best 830266 combination zp[2]:27 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:163 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:165 [ bitmap_plot::plotter#1 ] zp[2]:161 [ bitmap_plot::plotter#0 ] -Uplifting [bitmap_plot_spline_8seg] best 816266 combination zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] zp[2]:9 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] reg byte x [ bitmap_plot_spline_8seg::$9 ] zp[2]:11 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] reg byte x [ bitmap_plot_spline_8seg::$8 ] -Uplifting [show_letter] best 814066 combination zp[2]:7 [ show_letter::current_y#4 show_letter::current_y#11 ] reg byte a [ show_letter::$23 ] reg byte a [ show_letter::$25 ] reg byte a [ show_letter::$27 ] reg byte a [ show_letter::$22 ] zp[1]:85 [ show_letter::$20 ] zp[1]:107 [ show_letter::$21 ] zp[1]:130 [ show_letter::segment_type#0 ] zp[2]:5 [ show_letter::current_x#4 show_letter::current_x#11 ] zp[2]:86 [ show_letter::to_x#0 ] zp[2]:88 [ show_letter::to_y#0 ] zp[2]:90 [ show_letter::to_x#1 ] zp[2]:92 [ show_letter::to_y#1 ] zp[2]:98 [ show_letter::to_x#2 ] zp[2]:100 [ show_letter::to_y#2 ] zp[2]:108 [ show_letter::via_x#0 ] zp[2]:110 [ show_letter::via_y#0 ] zp[2]:112 [ show_letter::via_x#1 ] zp[2]:114 [ show_letter::via_y#1 ] zp[2]:120 [ show_letter::via_x#2 ] zp[2]:122 [ show_letter::via_y#2 ] zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] zp[2]:124 [ show_letter::segment_via_x#0 ] zp[2]:126 [ show_letter::segment_via_y#0 ] zp[2]:102 [ show_letter::current_x#10 ] zp[2]:104 [ show_letter::current_y#10 ] zp[1]:83 [ show_letter::angle#0 ] +Uplifting [bitmap_plot] best 847264 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:163 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:165 [ bitmap_plot::plotter#1 ] zp[2]:27 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:161 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_line] best 847264 combination zp[2]:20 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:22 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:18 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:24 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:151 [ bitmap_line::dy#0 ] zp[2]:159 [ bitmap_line::sy#0 ] zp[2]:147 [ bitmap_line::dx#0 ] zp[2]:155 [ bitmap_line::sx#0 ] zp[2]:16 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] zp[2]:14 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] +Uplifting [abs_u16] best 847252 combination zp[2]:33 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:145 [ abs_u16::return#0 ] zp[2]:149 [ abs_u16::return#1 ] +Uplifting [sgn_u16] best 847240 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:29 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:153 [ sgn_u16::return#0 ] zp[2]:157 [ sgn_u16::return#1 ] zp[2]:31 [ sgn_u16::return#4 ] +Uplifting [spline_8segB] best 830240 combination zp[2]:200 [ spline_8segB::$22 ] zp[2]:204 [ spline_8segB::$24 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] reg byte x [ spline_8segB::$31 ] zp[2]:42 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] zp[2]:40 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] zp[2]:35 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] zp[2]:206 [ spline_8segB::$25 ] zp[2]:37 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] zp[2]:202 [ spline_8segB::$23 ] zp[2]:198 [ spline_8segB::j_y#0 ] zp[2]:196 [ spline_8segB::j_x#0 ] zp[2]:172 [ spline_8segB::$0 ] zp[2]:174 [ spline_8segB::$1 ] zp[2]:178 [ spline_8segB::$3 ] zp[2]:180 [ spline_8segB::$4 ] zp[2]:184 [ spline_8segB::$6 ] zp[2]:188 [ spline_8segB::$8 ] zp[2]:192 [ spline_8segB::$10 ] zp[2]:194 [ spline_8segB::$12 ] zp[2]:209 [ spline_8segB::$18 ] zp[2]:213 [ spline_8segB::$20 ] zp[2]:215 [ spline_8segB::$21 ] zp[2]:186 [ spline_8segB::b_x#0 ] zp[2]:190 [ spline_8segB::b_y#0 ] zp[2]:211 [ spline_8segB::$19 ] zp[2]:139 [ spline_8segB::p2_x#0 ] zp[2]:182 [ spline_8segB::a_y#0 ] zp[2]:176 [ spline_8segB::a_x#0 ] zp[2]:141 [ spline_8segB::p2_y#0 ] zp[2]:135 [ spline_8segB::p1_x#0 ] zp[2]:137 [ spline_8segB::p1_y#0 ] zp[2]:131 [ spline_8segB::p0_x#0 ] zp[2]:133 [ spline_8segB::p0_y#0 ] +Uplifting [bitmap_plot_spline_8seg] best 816240 combination zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] zp[2]:9 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] reg byte x [ bitmap_plot_spline_8seg::$9 ] zp[2]:11 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] reg byte x [ bitmap_plot_spline_8seg::$8 ] +Uplifting [mulf16s] best 816240 combination zp[4]:53 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:287 [ mulf16s::$9 ] zp[2]:289 [ mulf16s::$16 ] zp[2]:291 [ mulf16s::$13 ] zp[2]:293 [ mulf16s::$17 ] zp[2]:51 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] zp[4]:295 [ mulf16s::return#0 ] zp[4]:219 [ mulf16s::return#2 ] zp[4]:231 [ mulf16s::return#3 ] zp[4]:245 [ mulf16s::return#4 ] zp[4]:259 [ mulf16s::return#10 ] +Uplifting [mulf16u] best 816240 combination zp[2]:279 [ mulf16u::a#0 ] zp[2]:281 [ mulf16u::b#0 ] zp[4]:299 [ mulf16u::return#0 ] zp[4]:283 [ mulf16u::return#2 ] +Uplifting [rotate] best 815622 combination zp[2]:227 [ rotate::$2 ] zp[2]:239 [ rotate::$5 ] zp[2]:253 [ rotate::$9 ] zp[2]:255 [ rotate::$10 ] zp[2]:267 [ rotate::$12 ] zp[2]:269 [ rotate::$13 ] zp[4]:223 [ rotate::$1 ] zp[4]:235 [ rotate::$4 ] zp[4]:249 [ rotate::$8 ] zp[4]:263 [ rotate::$11 ] reg byte a [ rotate::$15 ] reg byte a [ rotate::$18 ] zp[2]:271 [ rotate::yr#1 ] reg byte y [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] zp[2]:217 [ rotate::cos_a#0 ] zp[2]:243 [ rotate::sin_a#0 ] zp[2]:47 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] zp[2]:257 [ rotate::xr#1 ] zp[2]:45 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] zp[2]:274 [ rotate::return_x#2 ] zp[2]:277 [ rotate::return_y#2 ] zp[2]:229 [ rotate::xr#0 ] zp[2]:241 [ rotate::yr#0 ] zp[2]:94 [ rotate::return_x#0 ] zp[2]:96 [ rotate::return_y#0 ] zp[2]:116 [ rotate::return_x#1 ] zp[2]:118 [ rotate::return_y#1 ] +Uplifting [memset] best 815516 combination zp[2]:62 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:303 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:57 [ memset::num#2 ] zp[2]:59 [ memset::str#3 ] +Uplifting [show_letter] best 813316 combination zp[2]:7 [ show_letter::current_y#4 show_letter::current_y#11 ] reg byte a [ show_letter::$23 ] reg byte a [ show_letter::$25 ] reg byte a [ show_letter::$27 ] reg byte a [ show_letter::$22 ] zp[1]:85 [ show_letter::$20 ] zp[1]:107 [ show_letter::$21 ] zp[1]:130 [ show_letter::segment_type#0 ] zp[2]:5 [ show_letter::current_x#4 show_letter::current_x#11 ] zp[2]:86 [ show_letter::to_x#0 ] zp[2]:88 [ show_letter::to_y#0 ] zp[2]:90 [ show_letter::to_x#1 ] zp[2]:92 [ show_letter::to_y#1 ] zp[2]:98 [ show_letter::to_x#2 ] zp[2]:100 [ show_letter::to_y#2 ] zp[2]:108 [ show_letter::via_x#0 ] zp[2]:110 [ show_letter::via_y#0 ] zp[2]:112 [ show_letter::via_x#1 ] zp[2]:114 [ show_letter::via_y#1 ] zp[2]:120 [ show_letter::via_x#2 ] zp[2]:122 [ show_letter::via_y#2 ] zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] zp[2]:124 [ show_letter::segment_via_x#0 ] zp[2]:126 [ show_letter::segment_via_y#0 ] zp[2]:102 [ show_letter::current_x#10 ] zp[2]:104 [ show_letter::current_y#10 ] zp[1]:83 [ show_letter::angle#0 ] Limited combination testing to 100 combinations of 9216 possible. -Uplifting [rotate] best 813448 combination reg byte y [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] zp[2]:47 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] zp[2]:45 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] zp[2]:94 [ rotate::return_x#0 ] zp[2]:96 [ rotate::return_y#0 ] zp[2]:116 [ rotate::return_x#1 ] zp[2]:118 [ rotate::return_y#1 ] zp[2]:274 [ rotate::return_x#2 ] zp[2]:277 [ rotate::return_y#2 ] zp[2]:227 [ rotate::$2 ] zp[2]:239 [ rotate::$5 ] zp[2]:253 [ rotate::$9 ] zp[2]:255 [ rotate::$10 ] zp[2]:267 [ rotate::$12 ] zp[2]:269 [ rotate::$13 ] zp[4]:223 [ rotate::$1 ] zp[4]:235 [ rotate::$4 ] zp[4]:249 [ rotate::$8 ] zp[4]:263 [ rotate::$11 ] reg byte a [ rotate::$15 ] reg byte a [ rotate::$18 ] zp[2]:271 [ rotate::yr#1 ] zp[2]:217 [ rotate::cos_a#0 ] zp[2]:243 [ rotate::sin_a#0 ] zp[2]:257 [ rotate::xr#1 ] zp[2]:229 [ rotate::xr#0 ] zp[2]:241 [ rotate::yr#0 ] -Uplifting [main] best 809848 combination reg byte x [ main::w#4 main::w#1 ] zp[1]:2 [ main::angle#2 main::angle#1 ] -Uplifting [memset] best 809742 combination zp[2]:62 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:303 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:57 [ memset::num#2 ] zp[2]:59 [ memset::str#3 ] -Uplifting [mulf_init] best 809492 combination zp[2]:81 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:75 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:69 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:78 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:72 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [mulf_init] best 813066 combination zp[2]:81 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:75 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:69 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:78 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:72 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [bitmap_init] best 808982 combination zp[2]:67 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:307 [ bitmap_init::$5 ] zp[1]:308 [ bitmap_init::$6 ] zp[1]:305 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 812556 combination zp[2]:67 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:307 [ bitmap_init::$5 ] zp[1]:308 [ bitmap_init::$6 ] zp[1]:305 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [mulf16s] best 808982 combination zp[2]:51 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] zp[4]:53 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] zp[4]:219 [ mulf16s::return#2 ] zp[4]:231 [ mulf16s::return#3 ] zp[4]:245 [ mulf16s::return#4 ] zp[4]:259 [ mulf16s::return#10 ] zp[2]:287 [ mulf16s::$9 ] zp[2]:289 [ mulf16s::$16 ] zp[2]:291 [ mulf16s::$13 ] zp[2]:293 [ mulf16s::$17 ] zp[4]:295 [ mulf16s::return#0 ] -Uplifting [abs_u16] best 808970 combination zp[2]:33 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp[2]:145 [ abs_u16::return#0 ] zp[2]:149 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] -Uplifting [sgn_u16] best 808958 combination zp[2]:29 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:153 [ sgn_u16::return#0 ] zp[2]:157 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:31 [ sgn_u16::return#4 ] -Uplifting [mulf16u] best 808958 combination zp[4]:283 [ mulf16u::return#2 ] zp[2]:279 [ mulf16u::a#0 ] zp[2]:281 [ mulf16u::b#0 ] zp[4]:299 [ mulf16u::return#0 ] -Uplifting [SplineVector16] best 808958 combination -Uplifting [SplineVector32] best 808958 combination -Uplifting [bitmap_clear] best 808958 combination -Uplifting [RADIX] best 808958 combination -Uplifting [Segment] best 808958 combination -Uplifting [Segment::SegmentType] best 808958 combination -Uplifting [] best 808958 combination +Uplifting [main] best 808956 combination reg byte x [ main::w#4 main::w#1 ] zp[1]:2 [ main::angle#2 main::angle#1 ] +Uplifting [SplineVector16] best 808956 combination +Uplifting [SplineVector32] best 808956 combination +Uplifting [bitmap_clear] best 808956 combination +Uplifting [RADIX] best 808956 combination +Uplifting [Segment] best 808956 combination +Uplifting [Segment::SegmentType] best 808956 combination +Uplifting [] best 808956 combination Attempting to uplift remaining variables inzp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Uplifting [bitmap_plot_spline_8seg] best 808958 combination zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Uplifting [bitmap_plot_spline_8seg] best 808956 combination zp[1]:13 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] Attempting to uplift remaining variables inzp[1]:85 [ show_letter::$20 ] -Uplifting [show_letter] best 808258 combination reg byte x [ show_letter::$20 ] +Uplifting [show_letter] best 808256 combination reg byte x [ show_letter::$20 ] Attempting to uplift remaining variables inzp[1]:107 [ show_letter::$21 ] -Uplifting [show_letter] best 807558 combination reg byte x [ show_letter::$21 ] +Uplifting [show_letter] best 807556 combination reg byte x [ show_letter::$21 ] Attempting to uplift remaining variables inzp[1]:130 [ show_letter::segment_type#0 ] -Uplifting [show_letter] best 806658 combination reg byte a [ show_letter::segment_type#0 ] +Uplifting [show_letter] best 806656 combination reg byte a [ show_letter::segment_type#0 ] Attempting to uplift remaining variables inzp[1]:4 [ show_letter::i#10 show_letter::i#1 ] -Uplifting [show_letter] best 806658 combination zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::angle#2 main::angle#1 ] -Uplifting [main] best 806658 combination zp[1]:2 [ main::angle#2 main::angle#1 ] -Attempting to uplift remaining variables inzp[1]:307 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 806598 combination reg byte a [ bitmap_init::$5 ] -Attempting to uplift remaining variables inzp[1]:308 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 806538 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 806398 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 806398 combination zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 806398 combination zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:305 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 806398 combination zp[1]:305 [ bitmap_init::$7 ] +Uplifting [show_letter] best 806656 combination zp[1]:4 [ show_letter::i#10 show_letter::i#1 ] Attempting to uplift remaining variables inzp[1]:83 [ show_letter::angle#0 ] -Uplifting [show_letter] best 806398 combination zp[1]:83 [ show_letter::angle#0 ] +Uplifting [show_letter] best 806656 combination zp[1]:83 [ show_letter::angle#0 ] +Attempting to uplift remaining variables inzp[1]:307 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 806596 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp[1]:308 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 806536 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp[1]:77 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 806396 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 806396 combination zp[1]:80 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 806396 combination zp[1]:71 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:305 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 806396 combination zp[1]:305 [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::angle#2 main::angle#1 ] +Uplifting [main] best 806396 combination zp[1]:2 [ main::angle#2 main::angle#1 ] Coalescing zero page register [ zp[2]:22 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:27 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 4 Coalescing zero page register [ zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] ] with [ zp[2]:217 [ rotate::cos_a#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:49 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 ] ] with [ zp[2]:243 [ rotate::sin_a#0 ] ] - score: 2 @@ -10040,11 +10026,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [156] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 - lda.z x - // [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [156] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuxx=_lo_vwuz1 + ldx.z x + // [157] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -11680,7 +11665,7 @@ Removing instruction __breturn: Removing instruction b1: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [769] bne __b1 to beq +Fixing long branch [768] bne __b1 to beq Fixing long branch [308] beq __b4 to bne FINAL SYMBOL TABLE @@ -11725,19 +11710,19 @@ FINAL SYMBOL TABLE (const byte) VIC_RSEL = (byte) 8 (const byte) WHITE = (byte) 1 (word()) abs_u16((word) abs_u16::w) -(byte~) abs_u16::$0 reg byte a 4.0 -(byte~) abs_u16::$1 reg byte a 4.0 +(byte~) abs_u16::$0 reg byte a 2.00000000002E11 +(byte~) abs_u16::$1 reg byte a 2.00000000002E11 (label) abs_u16::@1 (label) abs_u16::@return (word) abs_u16::return -(word) abs_u16::return#0 return zp[2]:26 4.0 -(word) abs_u16::return#1 return zp[2]:26 4.0 -(word) abs_u16::return#2 return zp[2]:26 4.0 -(word) abs_u16::return#4 return zp[2]:26 2.0 +(word) abs_u16::return#0 return zp[2]:26 2.0000000002E10 +(word) abs_u16::return#1 return zp[2]:26 2.0000000002E10 +(word) abs_u16::return#2 return zp[2]:26 2.00000000002E11 +(word) abs_u16::return#4 return zp[2]:26 5.5000000001E10 (word) abs_u16::w -(word) abs_u16::w#0 w zp[2]:26 4.0 -(word) abs_u16::w#1 w zp[2]:26 4.0 -(word) abs_u16::w#2 w zp[2]:26 2.5 +(word) abs_u16::w#0 w zp[2]:26 2.0000000002E10 +(word) abs_u16::w#1 w zp[2]:26 2.0000000002E10 +(word) abs_u16::w#2 w zp[2]:26 8.000000000125E10 (void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) (label) bitmap_clear::@1 (label) bitmap_clear::@return @@ -11747,10 +11732,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:38 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:38 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -11759,21 +11744,21 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:26 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:26 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:26 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:26 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:26 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:26 1001.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -11795,92 +11780,92 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx -(word) bitmap_line::dx#0 dx zp[2]:28 75.275 +(word) bitmap_line::dx#0 dx zp[2]:28 7.51000000000175E11 (word) bitmap_line::dy -(word) bitmap_line::dy#0 dy zp[2]:26 83.6388888888889 +(word) bitmap_line::dy#0 dy zp[2]:26 8.344444444446389E11 (word) bitmap_line::e -(word) bitmap_line::e#0 e zp[2]:7 4.0 -(word) bitmap_line::e#1 e zp[2]:7 1334.6666666666667 -(word) bitmap_line::e#2 e zp[2]:7 2002.0 -(word) bitmap_line::e#3 e zp[2]:7 400.79999999999995 -(word) bitmap_line::e#6 e zp[2]:7 1501.5 +(word) bitmap_line::e#0 e zp[2]:7 2.0000000002E10 +(word) bitmap_line::e#1 e zp[2]:7 1.3333333333334666E13 +(word) bitmap_line::e#2 e zp[2]:7 2.0000000000002E13 +(word) bitmap_line::e#3 e zp[2]:7 4.0020000000005996E12 +(word) bitmap_line::e#6 e zp[2]:7 1.50000000000015E13 (word) bitmap_line::e1 -(word) bitmap_line::e1#0 e1 zp[2]:9 4.0 -(word) bitmap_line::e1#1 e1 zp[2]:9 1334.6666666666667 -(word) bitmap_line::e1#2 e1 zp[2]:9 2002.0 -(word) bitmap_line::e1#3 e1 zp[2]:9 400.79999999999995 -(word) bitmap_line::e1#6 e1 zp[2]:9 1501.5 +(word) bitmap_line::e1#0 e1 zp[2]:9 2.0000000002E10 +(word) bitmap_line::e1#1 e1 zp[2]:9 1.3333333333334666E13 +(word) bitmap_line::e1#2 e1 zp[2]:9 2.0000000000002E13 +(word) bitmap_line::e1#3 e1 zp[2]:9 4.0020000000005996E12 +(word) bitmap_line::e1#6 e1 zp[2]:9 1.50000000000015E13 (word) bitmap_line::sx -(word) bitmap_line::sx#0 sx zp[2]:32 66.80000000000001 +(word) bitmap_line::sx#0 sx zp[2]:32 6.670000000000999E11 (word) bitmap_line::sy -(word) bitmap_line::sy#0 sy zp[2]:30 77.07692307692308 +(word) bitmap_line::sy#0 sy zp[2]:30 7.696153846155E11 (word) bitmap_line::x -(word) bitmap_line::x#0 x zp[2]:15 48.34782608695653 -(word) bitmap_line::x#1 x zp[2]:15 1001.0 -(word) bitmap_line::x#12 x zp[2]:15 2002.0 -(word) bitmap_line::x#13 x zp[2]:15 572.2857142857142 -(word) bitmap_line::x#15 x zp[2]:15 572.0 -(word) bitmap_line::x#6 x zp[2]:15 1002.0 -(word) bitmap_line::x#7 x zp[2]:15 751.25 +(word) bitmap_line::x#0 x zp[2]:15 2.217395652478261E9 +(word) bitmap_line::x#1 x zp[2]:15 1.0000000000001E13 +(word) bitmap_line::x#12 x zp[2]:15 2.0000000000002E13 +(word) bitmap_line::x#13 x zp[2]:15 5.715714285715E12 +(word) bitmap_line::x#15 x zp[2]:15 5.714285714286286E12 +(word) bitmap_line::x#6 x zp[2]:15 1.00050000000015E13 +(word) bitmap_line::x#7 x zp[2]:15 7.502500000001E12 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 x1 zp[2]:15 50.5 -(word) bitmap_line::x1#1 x1 zp[2]:15 400.4 +(word) bitmap_line::x1#0 x1 zp[2]:15 50000.5 +(word) bitmap_line::x1#1 x1 zp[2]:15 4.000000004E8 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp[2]:3 101.0 -(word) bitmap_line::x2#10 x2 zp[2]:3 65.84375 -(word) bitmap_line::x2#13 x2 zp[2]:3 1001.0 +(word) bitmap_line::x2#0 x2 zp[2]:3 100001.0 +(word) bitmap_line::x2#10 x2 zp[2]:3 3.1315625312515625E11 +(word) bitmap_line::x2#13 x2 zp[2]:3 1.000000001E9 (word) bitmap_line::y -(word) bitmap_line::y#0 y zp[2]:17 50.45454545454547 -(word) bitmap_line::y#1 y zp[2]:17 572.0 -(word) bitmap_line::y#13 y zp[2]:17 2002.0 -(word) bitmap_line::y#15 y zp[2]:17 429.2857142857143 -(word) bitmap_line::y#2 y zp[2]:17 1001.0 -(word) bitmap_line::y#4 y zp[2]:17 501.0 -(word) bitmap_line::y#7 y zp[2]:17 2002.0 +(word) bitmap_line::y#0 y zp[2]:17 1.8636409093636363E9 +(word) bitmap_line::y#1 y zp[2]:17 5.714285714286286E12 +(word) bitmap_line::y#13 y zp[2]:17 2.0000000000002E13 +(word) bitmap_line::y#15 y zp[2]:17 4.2871428571434287E12 +(word) bitmap_line::y#2 y zp[2]:17 1.0000000000001E13 +(word) bitmap_line::y#4 y zp[2]:17 5.00250000000075E12 +(word) bitmap_line::y#7 y zp[2]:17 2.0000000000002E13 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 y1 zp[2]:17 67.33333333333333 -(word) bitmap_line::y1#1 y1 zp[2]:17 500.5 +(word) bitmap_line::y1#0 y1 zp[2]:17 66667.33333333333 +(word) bitmap_line::y1#1 y1 zp[2]:17 5.000000005E8 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 y2 zp[2]:5 202.0 -(word) bitmap_line::y2#11 y2 zp[2]:5 65.84375 -(word) bitmap_line::y2#13 y2 zp[2]:5 2002.0 +(word) bitmap_line::y2#0 y2 zp[2]:5 200002.0 +(word) bitmap_line::y2#11 y2 zp[2]:5 3.1315625312515625E11 +(word) bitmap_line::y2#13 y2 zp[2]:5 2.000000002E9 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:34 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:34 2.00000000000002E14 +(byte~) bitmap_plot::$2 reg byte x 2.00000000000002E14 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:24 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:24 5.00000000000005E13 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 1.500000000000015E14 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:15 4.0 -(word) bitmap_plot::x#1 x zp[2]:15 2002.0 -(word) bitmap_plot::x#2 x zp[2]:15 4.0 -(word) bitmap_plot::x#3 x zp[2]:15 2002.0 -(word) bitmap_plot::x#4 x zp[2]:15 502.5 +(word) bitmap_plot::x#0 x zp[2]:15 2.0000000002E10 +(word) bitmap_plot::x#1 x zp[2]:15 2.0000000000002E13 +(word) bitmap_plot::x#2 x zp[2]:15 2.0000000002E10 +(word) bitmap_plot::x#3 x zp[2]:15 2.0000000000002E13 +(word) bitmap_plot::x#4 x zp[2]:15 5.50050000000015E13 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 2.0 -(byte) bitmap_plot::y#1 reg byte x 1001.0 -(byte) bitmap_plot::y#2 reg byte x 2.0 -(byte) bitmap_plot::y#3 reg byte x 1001.0 -(byte) bitmap_plot::y#4 reg byte x 2010.0 +(byte) bitmap_plot::y#0 reg byte x 1.0000000001E10 +(byte) bitmap_plot::y#1 reg byte x 1.0000000000001E13 +(byte) bitmap_plot::y#2 reg byte x 1.0000000001E10 +(byte) bitmap_plot::y#3 reg byte x 1.0000000000001E13 +(byte) bitmap_plot::y#4 reg byte x 2.20020000000006E14 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (void()) bitmap_plot_spline_8seg() -(byte~) bitmap_plot_spline_8seg::$8 reg byte x 500.5 -(byte~) bitmap_plot_spline_8seg::$9 reg byte x 1501.5 +(byte~) bitmap_plot_spline_8seg::$8 reg byte x 5.000000005E8 +(byte~) bitmap_plot_spline_8seg::$9 reg byte x 1.5000000015E9 (label) bitmap_plot_spline_8seg::@1 (label) bitmap_plot_spline_8seg::@2 (label) bitmap_plot_spline_8seg::@return (signed word) bitmap_plot_spline_8seg::current_x -(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp[2]:15 2.0 -(signed word) bitmap_plot_spline_8seg::current_x#1 current_x zp[2]:15 500.5 -(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp[2]:15 1003.0 +(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp[2]:15 1000001.0 +(signed word) bitmap_plot_spline_8seg::current_x#1 current_x zp[2]:15 5.000000005E8 +(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp[2]:15 1.001000002E9 (signed word) bitmap_plot_spline_8seg::current_y -(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp[2]:17 4.0 -(signed word) bitmap_plot_spline_8seg::current_y#1 current_y zp[2]:17 667.3333333333334 -(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp[2]:17 501.5 +(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp[2]:17 2000002.0 +(signed word) bitmap_plot_spline_8seg::current_y#1 current_y zp[2]:17 6.666666673333334E8 +(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp[2]:17 5.00500001E8 (byte) bitmap_plot_spline_8seg::n -(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:19 1501.5 -(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:19 400.4 +(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:19 1.5000000015E9 +(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:19 4.000000004E8 (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (byte*) bitmap_screen @@ -11897,8 +11882,8 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::angle -(byte) main::angle#1 angle zp[1]:2 22.0 -(byte) main::angle#2 angle zp[1]:2 3.3000000000000003 +(byte) main::angle#1 angle zp[1]:2 202.0 +(byte) main::angle#2 angle zp[1]:2 30.299999999999997 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -11912,31 +11897,31 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank1_toDd001_return (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) BITMAP_SCREEN/(byte) $40 (byte) main::w -(byte) main::w#1 reg byte x 151.5 -(byte) main::w#4 reg byte x 734.6666666666666 +(byte) main::w#1 reg byte x 1501.5 +(byte) main::w#4 reg byte x 7334.666666666667 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 12.625 +(byte) memset::c#4 reg byte x 125000.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:17 202.0 -(byte*) memset::dst#2 dst zp[2]:17 135.33333333333331 -(byte*) memset::dst#4 dst zp[2]:17 4.0 +(byte*) memset::dst#1 dst zp[2]:17 2000002.0 +(byte*) memset::dst#2 dst zp[2]:17 1336668.3333333335 +(byte*) memset::dst#4 dst zp[2]:17 20002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:15 17.166666666666664 +(byte*) memset::end#0 end zp[2]:15 168333.6666666667 (word) memset::num -(word) memset::num#2 num zp[2]:15 2.0 +(word) memset::num#2 num zp[2]:15 10001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:17 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$13 zp[2]:36 4.0 -(word~) mulf16s::$16 zp[2]:34 4.0 -(word~) mulf16s::$17 zp[2]:36 4.0 -(word~) mulf16s::$9 zp[2]:34 4.0 +(word~) mulf16s::$13 zp[2]:36 2.0000002E7 +(word~) mulf16s::$16 zp[2]:34 2.0000002E7 +(word~) mulf16s::$17 zp[2]:36 2.0000002E7 +(word~) mulf16s::$9 zp[2]:34 2.0000002E7 (label) mulf16s::@1 (label) mulf16s::@2 (label) mulf16s::@3 @@ -11944,45 +11929,45 @@ FINAL SYMBOL TABLE (label) mulf16s::@5 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp[2]:24 2.0 -(signed word) mulf16s::a#1 a zp[2]:24 2.0 -(signed word) mulf16s::a#2 a zp[2]:24 2.0 -(signed word) mulf16s::a#3 a zp[2]:24 2.0 -(signed word) mulf16s::a#4 a zp[2]:24 0.7692307692307693 +(signed word) mulf16s::a#0 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#1 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#2 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#3 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#4 a zp[2]:24 1076923.4615384615 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp[2]:30 4.0 -(signed word) mulf16s::b#1 b zp[2]:30 4.0 -(signed word) mulf16s::b#2 b zp[2]:30 4.0 -(signed word) mulf16s::b#3 b zp[2]:30 4.0 -(signed word) mulf16s::b#4 b zp[2]:30 0.9090909090909092 +(signed word) mulf16s::b#0 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#1 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#2 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#3 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#4 b zp[2]:30 1272727.7272727273 (dword) mulf16s::m -(dword) mulf16s::m#0 m zp[4]:11 2.0 -(dword) mulf16s::m#1 m zp[4]:11 4.0 -(dword) mulf16s::m#2 m zp[4]:11 4.0 -(dword) mulf16s::m#4 m zp[4]:11 4.0 -(dword) mulf16s::m#5 m zp[4]:11 2.5 +(dword) mulf16s::m#0 m zp[4]:11 1.0000001E7 +(dword) mulf16s::m#1 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#2 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#4 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#5 m zp[4]:11 1.250000125E7 (signed dword) mulf16s::return -(signed dword) mulf16s::return#0 return zp[4]:11 1.6666666666666665 -(signed dword) mulf16s::return#10 return zp[4]:11 4.0 -(signed dword) mulf16s::return#2 return zp[4]:11 4.0 -(signed dword) mulf16s::return#3 return zp[4]:11 4.0 -(signed dword) mulf16s::return#4 return zp[4]:11 4.0 +(signed dword) mulf16s::return#0 return zp[4]:11 2333334.1666666665 +(signed dword) mulf16s::return#10 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#2 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#3 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#4 return zp[4]:11 2000002.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a -(word) mulf16u::a#0 a zp[2]:34 2.0 +(word) mulf16u::a#0 a zp[2]:34 5.5000001E7 (word) mulf16u::b -(word) mulf16u::b#0 b zp[2]:36 2.0 +(word) mulf16u::b#0 b zp[2]:36 5.5000001E7 (const word*) mulf16u::memA = (word*) 248 (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:11 1.3333333333333333 -(dword) mulf16u::return#2 return zp[4]:11 4.0 +(dword) mulf16u::return#0 return zp[4]:11 3.6666667333333336E7 +(dword) mulf16u::return#2 return zp[4]:11 2.0000002E7 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -11994,111 +11979,111 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:38 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:38 11.0 +(byte) mulf_init::c#1 c zp[1]:38 231.0 +(byte) mulf_init::c#2 c zp[1]:38 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:19 4.125 -(byte) mulf_init::dir#4 dir zp[1]:19 11.0 +(byte) mulf_init::dir#2 dir zp[1]:19 375.375 +(byte) mulf_init::dir#4 dir zp[1]:19 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:24 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:24 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:24 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:24 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:24 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:24 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:24 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:24 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:22 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:22 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:22 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:22 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:20 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:20 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:20 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:20 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:32 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:32 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:32 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:32 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) -(signed dword~) rotate::$1 zp[4]:11 2.0 -(signed word~) rotate::$10 zp[2]:30 4.0 -(signed dword~) rotate::$11 zp[4]:11 2.0 -(signed word~) rotate::$12 zp[2]:32 4.0 -(signed word~) rotate::$13 zp[2]:32 4.0 -(byte~) rotate::$15 reg byte a 2.0 -(byte~) rotate::$18 reg byte a 2.0 -(signed word~) rotate::$2 zp[2]:26 4.0 -(signed dword~) rotate::$4 zp[4]:11 2.0 -(signed word~) rotate::$5 zp[2]:28 4.0 -(signed dword~) rotate::$8 zp[4]:11 2.0 -(signed word~) rotate::$9 zp[2]:30 4.0 +(signed dword~) rotate::$1 zp[4]:11 1000001.0 +(signed word~) rotate::$10 zp[2]:30 2000002.0 +(signed dword~) rotate::$11 zp[4]:11 1000001.0 +(signed word~) rotate::$12 zp[2]:32 2000002.0 +(signed word~) rotate::$13 zp[2]:32 2000002.0 +(byte~) rotate::$15 reg byte a 1000001.0 +(byte~) rotate::$18 reg byte a 1000001.0 +(signed word~) rotate::$2 zp[2]:26 2000002.0 +(signed dword~) rotate::$4 zp[4]:11 1000001.0 +(signed word~) rotate::$5 zp[2]:28 2000002.0 +(signed dword~) rotate::$8 zp[4]:11 1000001.0 +(signed word~) rotate::$9 zp[2]:30 2000002.0 (label) rotate::@1 (label) rotate::@2 (label) rotate::@3 (label) rotate::@4 (label) rotate::@return (byte) rotate::angle -(byte) rotate::angle#0 reg byte y 202.0 -(byte) rotate::angle#1 reg byte y 202.0 -(byte) rotate::angle#2 reg byte y 12.625 +(byte) rotate::angle#0 reg byte y 200002.0 +(byte) rotate::angle#1 reg byte y 200002.0 +(byte) rotate::angle#2 reg byte y 12500.125 (signed word) rotate::cos_a -(signed word) rotate::cos_a#0 cos_a zp[2]:24 0.75 +(signed word) rotate::cos_a#0 cos_a zp[2]:24 375000.375 (struct SplineVector16) rotate::return (signed word) rotate::return_x -(signed word) rotate::return_x#0 return_x zp[2]:3 101.0 -(signed word) rotate::return_x#1 return_x zp[2]:3 101.0 -(signed word) rotate::return_x#2 return_x zp[2]:3 34.0 +(signed word) rotate::return_x#0 return_x zp[2]:3 100001.0 +(signed word) rotate::return_x#1 return_x zp[2]:3 100001.0 +(signed word) rotate::return_x#2 return_x zp[2]:3 200000.5 (signed word) rotate::return_y -(signed word) rotate::return_y#0 return_y zp[2]:5 101.0 -(signed word) rotate::return_y#1 return_y zp[2]:5 101.0 -(signed word) rotate::return_y#2 return_y zp[2]:5 34.0 +(signed word) rotate::return_y#0 return_y zp[2]:5 100001.0 +(signed word) rotate::return_y#1 return_y zp[2]:5 100001.0 +(signed word) rotate::return_y#2 return_y zp[2]:5 200000.5 (signed word) rotate::rotated_x (signed word) rotate::rotated_y (signed word) rotate::sin_a -(signed word) rotate::sin_a#0 sin_a zp[2]:24 0.6666666666666666 +(signed word) rotate::sin_a#0 sin_a zp[2]:24 333333.6666666666 (struct SplineVector16) rotate::vector (signed word) rotate::vector_x -(signed word) rotate::vector_x#0 vector_x zp[2]:7 67.33333333333333 -(signed word) rotate::vector_x#1 vector_x zp[2]:7 67.33333333333333 -(signed word) rotate::vector_x#2 vector_x zp[2]:7 7.9230769230769225 +(signed word) rotate::vector_x#0 vector_x zp[2]:7 66667.33333333333 +(signed word) rotate::vector_x#1 vector_x zp[2]:7 66667.33333333333 +(signed word) rotate::vector_x#2 vector_x zp[2]:7 84615.53846153847 (signed word) rotate::vector_y -(signed word) rotate::vector_y#0 vector_y zp[2]:9 101.0 -(signed word) rotate::vector_y#1 vector_y zp[2]:9 101.0 -(signed word) rotate::vector_y#2 vector_y zp[2]:9 11.444444444444443 +(signed word) rotate::vector_y#0 vector_y zp[2]:9 100001.0 +(signed word) rotate::vector_y#1 vector_y zp[2]:9 100001.0 +(signed word) rotate::vector_y#2 vector_y zp[2]:9 122222.44444444444 (signed word) rotate::xr -(signed word) rotate::xr#0 xr zp[2]:26 0.25 -(signed word) rotate::xr#1 xr zp[2]:26 0.4444444444444444 +(signed word) rotate::xr#0 xr zp[2]:26 125000.125 +(signed word) rotate::xr#1 xr zp[2]:26 222222.44444444444 (signed word) rotate::yr -(signed word) rotate::yr#0 yr zp[2]:28 0.23529411764705882 -(signed word) rotate::yr#1 yr zp[2]:28 1.3333333333333333 +(signed word) rotate::yr#0 yr zp[2]:28 117647.17647058824 +(signed word) rotate::yr#1 yr zp[2]:28 666667.3333333334 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 reg byte a 4.0 -(byte~) sgn_u16::$1 reg byte a 4.0 +(byte~) sgn_u16::$0 reg byte a 2.00000000002E11 +(byte~) sgn_u16::$1 reg byte a 2.00000000002E11 (label) sgn_u16::@1 (label) sgn_u16::@return (word) sgn_u16::return -(word) sgn_u16::return#0 return zp[2]:30 4.0 -(word) sgn_u16::return#1 return zp[2]:30 4.0 -(word) sgn_u16::return#4 return zp[2]:30 1.0 +(word) sgn_u16::return#0 return zp[2]:30 2.0000000002E10 +(word) sgn_u16::return#1 return zp[2]:30 2.0000000002E10 +(word) sgn_u16::return#4 return zp[2]:30 5.0000000005E9 (word) sgn_u16::w -(word) sgn_u16::w#0 w zp[2]:24 4.0 -(word) sgn_u16::w#1 w zp[2]:24 4.0 -(word) sgn_u16::w#2 w zp[2]:24 6.0 +(word) sgn_u16::w#0 w zp[2]:24 2.0000000002E10 +(word) sgn_u16::w#1 w zp[2]:24 2.0000000002E10 +(word) sgn_u16::w#2 w zp[2]:24 1.20000000003E11 (void()) show_letter((byte) show_letter::angle) -(byte~) show_letter::$20 reg byte x 151.5 -(byte~) show_letter::$21 reg byte x 151.5 -(byte~) show_letter::$22 reg byte a 202.0 -(byte~) show_letter::$23 reg byte a 202.0 -(byte~) show_letter::$25 reg byte a 202.0 -(byte~) show_letter::$27 reg byte a 202.0 +(byte~) show_letter::$20 reg byte x 150001.5 +(byte~) show_letter::$21 reg byte x 150001.5 +(byte~) show_letter::$22 reg byte a 200002.0 +(byte~) show_letter::$23 reg byte a 200002.0 +(byte~) show_letter::$25 reg byte a 200002.0 +(byte~) show_letter::$27 reg byte a 200002.0 (label) show_letter::@1 (label) show_letter::@2 (label) show_letter::@3 @@ -12110,111 +12095,111 @@ FINAL SYMBOL TABLE (label) show_letter::@9 (label) show_letter::@return (byte) show_letter::angle -(byte) show_letter::angle#0 angle zp[1]:2 3.6724137931034484 +(byte) show_letter::angle#0 angle zp[1]:2 3450.051724137931 (signed word) show_letter::current_x -(signed word) show_letter::current_x#10 current_x_1 zp[2]:20 7.76923076923077 -(signed word) show_letter::current_x#11 current_x zp[2]:15 101.0 -(signed word) show_letter::current_x#4 current_x zp[2]:15 5.315789473684211 +(signed word) show_letter::current_x#10 current_x_1 zp[2]:20 7692.384615384615 +(signed word) show_letter::current_x#11 current_x zp[2]:15 100001.0 +(signed word) show_letter::current_x#4 current_x zp[2]:15 5263.210526315789 (signed word) show_letter::current_y -(signed word) show_letter::current_y#10 current_y_1 zp[2]:22 7.76923076923077 -(signed word) show_letter::current_y#11 current_y zp[2]:17 202.0 -(signed word) show_letter::current_y#4 current_y zp[2]:17 5.05 +(signed word) show_letter::current_y#10 current_y_1 zp[2]:22 7692.384615384615 +(signed word) show_letter::current_y#11 current_y zp[2]:17 200002.0 +(signed word) show_letter::current_y#4 current_y zp[2]:17 5000.05 (byte) show_letter::i -(byte) show_letter::i#1 i zp[1]:38 75.75 -(byte) show_letter::i#10 i zp[1]:38 15.538461538461537 +(byte) show_letter::i#1 i zp[1]:38 75000.75 +(byte) show_letter::i#10 i zp[1]:38 15384.769230769232 (struct SplineVector16) show_letter::segment_to (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y (byte) show_letter::segment_type -(byte) show_letter::segment_type#0 reg byte a 151.5 +(byte) show_letter::segment_type#0 reg byte a 150001.5 (struct SplineVector16) show_letter::segment_via (signed word) show_letter::segment_via_x -(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:3 22.444444444444443 +(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:3 22222.444444444445 (signed word) show_letter::segment_via_y -(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:5 22.444444444444443 +(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:5 22222.444444444445 (signed word) show_letter::to_x -(signed word) show_letter::to_x#0 to_x zp[2]:7 101.0 -(signed word) show_letter::to_x#1 to_x zp[2]:7 101.0 -(signed word) show_letter::to_x#2 to_x_1 zp[2]:3 101.0 +(signed word) show_letter::to_x#0 to_x zp[2]:7 100001.0 +(signed word) show_letter::to_x#1 to_x zp[2]:7 100001.0 +(signed word) show_letter::to_x#2 to_x_1 zp[2]:3 100001.0 (signed word) show_letter::to_y -(signed word) show_letter::to_y#0 to_y zp[2]:9 101.0 -(signed word) show_letter::to_y#1 to_y zp[2]:9 101.0 -(signed word) show_letter::to_y#2 to_y_1 zp[2]:5 101.0 +(signed word) show_letter::to_y#0 to_y zp[2]:9 100001.0 +(signed word) show_letter::to_y#1 to_y zp[2]:9 100001.0 +(signed word) show_letter::to_y#2 to_y_1 zp[2]:5 100001.0 (signed word) show_letter::via_x -(signed word) show_letter::via_x#0 via_x zp[2]:7 101.0 -(signed word) show_letter::via_x#1 via_x zp[2]:7 101.0 -(signed word) show_letter::via_x#2 via_x_1 zp[2]:3 101.0 +(signed word) show_letter::via_x#0 via_x zp[2]:7 100001.0 +(signed word) show_letter::via_x#1 via_x zp[2]:7 100001.0 +(signed word) show_letter::via_x#2 via_x_1 zp[2]:3 100001.0 (signed word) show_letter::via_y -(signed word) show_letter::via_y#0 via_y zp[2]:9 101.0 -(signed word) show_letter::via_y#1 via_y zp[2]:9 101.0 -(signed word) show_letter::via_y#2 via_y_1 zp[2]:5 101.0 +(signed word) show_letter::via_y#0 via_y zp[2]:9 100001.0 +(signed word) show_letter::via_y#1 via_y zp[2]:9 100001.0 +(signed word) show_letter::via_y#2 via_y_1 zp[2]:5 100001.0 (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) -(signed word~) spline_8segB::$0 zp[2]:34 4.0 -(signed word~) spline_8segB::$1 zp[2]:34 4.0 -(signed word~) spline_8segB::$10 zp[2]:3 4.0 -(signed word~) spline_8segB::$12 zp[2]:5 4.0 -(signed word~) spline_8segB::$18 zp[2]:15 4.0 -(signed word~) spline_8segB::$19 zp[2]:15 1.3333333333333333 -(signed word~) spline_8segB::$20 zp[2]:17 4.0 -(signed word~) spline_8segB::$21 zp[2]:17 2.0 -(signed word~) spline_8segB::$22 zp[2]:28 2002.0 -(signed word~) spline_8segB::$23 zp[2]:28 500.5 -(signed word~) spline_8segB::$24 zp[2]:30 2002.0 -(signed word~) spline_8segB::$25 zp[2]:30 667.3333333333334 -(signed word~) spline_8segB::$3 zp[2]:26 4.0 -(byte~) spline_8segB::$31 reg byte x 1501.5 -(signed word~) spline_8segB::$4 zp[2]:26 4.0 -(signed word~) spline_8segB::$6 zp[2]:3 4.0 -(signed word~) spline_8segB::$8 zp[2]:5 4.0 +(signed word~) spline_8segB::$0 zp[2]:34 2000002.0 +(signed word~) spline_8segB::$1 zp[2]:34 2000002.0 +(signed word~) spline_8segB::$10 zp[2]:3 2000002.0 +(signed word~) spline_8segB::$12 zp[2]:5 2000002.0 +(signed word~) spline_8segB::$18 zp[2]:15 2000002.0 +(signed word~) spline_8segB::$19 zp[2]:15 666667.3333333334 +(signed word~) spline_8segB::$20 zp[2]:17 2000002.0 +(signed word~) spline_8segB::$21 zp[2]:17 1000001.0 +(signed word~) spline_8segB::$22 zp[2]:28 2.000000002E9 +(signed word~) spline_8segB::$23 zp[2]:28 5.000000005E8 +(signed word~) spline_8segB::$24 zp[2]:30 2.000000002E9 +(signed word~) spline_8segB::$25 zp[2]:30 6.666666673333334E8 +(signed word~) spline_8segB::$3 zp[2]:26 2000002.0 +(byte~) spline_8segB::$31 reg byte x 1.5000000015E9 +(signed word~) spline_8segB::$4 zp[2]:26 2000002.0 +(signed word~) spline_8segB::$6 zp[2]:3 2000002.0 +(signed word~) spline_8segB::$8 zp[2]:5 2000002.0 (label) spline_8segB::@1 (label) spline_8segB::@2 (label) spline_8segB::@return (signed word) spline_8segB::a_x -(signed word) spline_8segB::a_x#0 a_x zp[2]:34 0.5 +(signed word) spline_8segB::a_x#0 a_x zp[2]:34 250000.25 (signed word) spline_8segB::a_y -(signed word) spline_8segB::a_y#0 a_y zp[2]:26 0.6000000000000001 +(signed word) spline_8segB::a_y#0 a_y zp[2]:26 300000.30000000005 (signed word) spline_8segB::b_x -(signed word) spline_8segB::b_x#0 b_x zp[2]:3 1.3333333333333333 +(signed word) spline_8segB::b_x#0 b_x zp[2]:3 666667.3333333334 (signed word) spline_8segB::b_y -(signed word) spline_8segB::b_y#0 b_y zp[2]:5 1.3333333333333333 +(signed word) spline_8segB::b_y#0 b_y zp[2]:5 666667.3333333334 (signed word) spline_8segB::i_x -(signed word) spline_8segB::i_x#0 i_x zp[2]:3 0.5714285714285714 -(signed word) spline_8segB::i_x#1 i_x zp[2]:3 500.5 -(signed word) spline_8segB::i_x#2 i_x zp[2]:3 300.5 +(signed word) spline_8segB::i_x#0 i_x zp[2]:3 285714.5714285714 +(signed word) spline_8segB::i_x#1 i_x zp[2]:3 5.000000005E8 +(signed word) spline_8segB::i_x#2 i_x zp[2]:3 3.001000004E8 (signed word) spline_8segB::i_y -(signed word) spline_8segB::i_y#0 i_y zp[2]:5 0.8 -(signed word) spline_8segB::i_y#1 i_y zp[2]:5 667.3333333333334 -(signed word) spline_8segB::i_y#2 i_y zp[2]:5 273.1818181818182 +(signed word) spline_8segB::i_y#0 i_y zp[2]:5 400000.4 +(signed word) spline_8segB::i_y#1 i_y zp[2]:5 6.666666673333334E8 +(signed word) spline_8segB::i_y#2 i_y zp[2]:5 2.728181821818182E8 (signed word) spline_8segB::j_x -(signed word) spline_8segB::j_x#0 j_x zp[2]:34 55.72222222222223 +(signed word) spline_8segB::j_x#0 j_x zp[2]:34 5.5611111222222224E7 (signed word) spline_8segB::j_y -(signed word) spline_8segB::j_y#0 j_y zp[2]:26 59.0 +(signed word) spline_8segB::j_y#0 j_y zp[2]:26 5.888235305882353E7 (byte) spline_8segB::n -(byte) spline_8segB::n#1 reg byte y 1501.5 -(byte) spline_8segB::n#2 reg byte y 250.25 +(byte) spline_8segB::n#1 reg byte y 1.5000000015E9 +(byte) spline_8segB::n#2 reg byte y 2.5000000025E8 (struct SplineVector16) spline_8segB::p0 (signed word) spline_8segB::p0_x -(signed word) spline_8segB::p0_x#0 p0_x zp[2]:15 4.863636363636363 +(signed word) spline_8segB::p0_x#0 p0_x zp[2]:15 140909.27272727274 (signed word) spline_8segB::p0_y -(signed word) spline_8segB::p0_y#0 p0_y zp[2]:17 4.863636363636363 +(signed word) spline_8segB::p0_y#0 p0_y zp[2]:17 140909.27272727274 (struct SplineVector16) spline_8segB::p1 (signed word) spline_8segB::p1_x -(signed word) spline_8segB::p1_x#0 p1_x zp[2]:3 10.499999999999998 +(signed word) spline_8segB::p1_x#0 p1_x zp[2]:3 210000.30000000002 (signed word) spline_8segB::p1_y -(signed word) spline_8segB::p1_y#0 p1_y zp[2]:5 9.545454545454545 +(signed word) spline_8segB::p1_y#0 p1_y zp[2]:5 190909.36363636365 (struct SplineVector16) spline_8segB::p2 (signed word) spline_8segB::p2_x -(signed word) spline_8segB::p2_x#0 p2_x zp[2]:20 34.33333333333333 +(signed word) spline_8segB::p2_x#0 p2_x zp[2]:20 366667.3333333334 (signed word) spline_8segB::p2_y -(signed word) spline_8segB::p2_y#0 p2_y zp[2]:22 20.599999999999998 +(signed word) spline_8segB::p2_y#0 p2_y zp[2]:22 220000.40000000002 (signed word) spline_8segB::p_x -(signed word) spline_8segB::p_x#0 p_x zp[2]:15 2.0 -(signed word) spline_8segB::p_x#1 p_x zp[2]:15 334.0 -(signed word) spline_8segB::p_x#2 p_x zp[2]:15 375.625 +(signed word) spline_8segB::p_x#0 p_x zp[2]:15 1000001.0 +(signed word) spline_8segB::p_x#1 p_x zp[2]:15 3.335000005E8 +(signed word) spline_8segB::p_x#2 p_x zp[2]:15 3.751250005E8 (signed word) spline_8segB::p_y -(signed word) spline_8segB::p_y#0 p_y zp[2]:17 4.0 -(signed word) spline_8segB::p_y#1 p_y zp[2]:17 286.2857142857143 -(signed word) spline_8segB::p_y#2 p_y zp[2]:17 333.8888888888889 +(signed word) spline_8segB::p_y#0 p_y zp[2]:17 2000002.0 +(signed word) spline_8segB::p_y#1 p_y zp[2]:17 2.8585714328571427E8 +(signed word) spline_8segB::p_y#2 p_y zp[2]:17 3.334444448888889E8 zp[1]:2 [ main::angle#2 main::angle#1 show_letter::angle#0 ] reg byte x [ main::w#4 main::w#1 ] @@ -12247,7 +12232,7 @@ reg byte a [ show_letter::segment_type#0 ] reg byte x [ bitmap_plot_spline_8seg::$8 ] reg byte x [ bitmap_plot_spline_8seg::$9 ] zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 rotate::sin_a#0 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] reg byte a [ abs_u16::$0 ] @@ -12271,7 +12256,7 @@ reg byte a [ mulf_init::$5 ] FINAL ASSEMBLER -Score: 678156 +Score: 678154 // File Comments // Show a few simple splines using the splines library @@ -13117,12 +13102,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) BITMAP_SCREEN/(byte) $40 (byte) main::w -(byte) main::w#1 reg byte x 151.5 -(byte) main::w#4 reg byte x 734.6666666666666 +(byte) main::w#1 reg byte x 1501.5 +(byte) main::w#4 reg byte x 7334.666666666667 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 12.625 +(byte) memset::c#4 reg byte x 125000.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:17 202.0 -(byte*) memset::dst#2 dst zp[2]:17 135.33333333333331 -(byte*) memset::dst#4 dst zp[2]:17 4.0 +(byte*) memset::dst#1 dst zp[2]:17 2000002.0 +(byte*) memset::dst#2 dst zp[2]:17 1336668.3333333335 +(byte*) memset::dst#4 dst zp[2]:17 20002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:15 17.166666666666664 +(byte*) memset::end#0 end zp[2]:15 168333.6666666667 (word) memset::num -(word) memset::num#2 num zp[2]:15 2.0 +(word) memset::num#2 num zp[2]:15 10001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:17 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$13 zp[2]:36 4.0 -(word~) mulf16s::$16 zp[2]:34 4.0 -(word~) mulf16s::$17 zp[2]:36 4.0 -(word~) mulf16s::$9 zp[2]:34 4.0 +(word~) mulf16s::$13 zp[2]:36 2.0000002E7 +(word~) mulf16s::$16 zp[2]:34 2.0000002E7 +(word~) mulf16s::$17 zp[2]:36 2.0000002E7 +(word~) mulf16s::$9 zp[2]:34 2.0000002E7 (label) mulf16s::@1 (label) mulf16s::@2 (label) mulf16s::@3 @@ -258,45 +258,45 @@ (label) mulf16s::@5 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp[2]:24 2.0 -(signed word) mulf16s::a#1 a zp[2]:24 2.0 -(signed word) mulf16s::a#2 a zp[2]:24 2.0 -(signed word) mulf16s::a#3 a zp[2]:24 2.0 -(signed word) mulf16s::a#4 a zp[2]:24 0.7692307692307693 +(signed word) mulf16s::a#0 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#1 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#2 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#3 a zp[2]:24 1000001.0 +(signed word) mulf16s::a#4 a zp[2]:24 1076923.4615384615 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp[2]:30 4.0 -(signed word) mulf16s::b#1 b zp[2]:30 4.0 -(signed word) mulf16s::b#2 b zp[2]:30 4.0 -(signed word) mulf16s::b#3 b zp[2]:30 4.0 -(signed word) mulf16s::b#4 b zp[2]:30 0.9090909090909092 +(signed word) mulf16s::b#0 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#1 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#2 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#3 b zp[2]:30 2000002.0 +(signed word) mulf16s::b#4 b zp[2]:30 1272727.7272727273 (dword) mulf16s::m -(dword) mulf16s::m#0 m zp[4]:11 2.0 -(dword) mulf16s::m#1 m zp[4]:11 4.0 -(dword) mulf16s::m#2 m zp[4]:11 4.0 -(dword) mulf16s::m#4 m zp[4]:11 4.0 -(dword) mulf16s::m#5 m zp[4]:11 2.5 +(dword) mulf16s::m#0 m zp[4]:11 1.0000001E7 +(dword) mulf16s::m#1 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#2 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#4 m zp[4]:11 2.0000002E7 +(dword) mulf16s::m#5 m zp[4]:11 1.250000125E7 (signed dword) mulf16s::return -(signed dword) mulf16s::return#0 return zp[4]:11 1.6666666666666665 -(signed dword) mulf16s::return#10 return zp[4]:11 4.0 -(signed dword) mulf16s::return#2 return zp[4]:11 4.0 -(signed dword) mulf16s::return#3 return zp[4]:11 4.0 -(signed dword) mulf16s::return#4 return zp[4]:11 4.0 +(signed dword) mulf16s::return#0 return zp[4]:11 2333334.1666666665 +(signed dword) mulf16s::return#10 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#2 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#3 return zp[4]:11 2000002.0 +(signed dword) mulf16s::return#4 return zp[4]:11 2000002.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a -(word) mulf16u::a#0 a zp[2]:34 2.0 +(word) mulf16u::a#0 a zp[2]:34 5.5000001E7 (word) mulf16u::b -(word) mulf16u::b#0 b zp[2]:36 2.0 +(word) mulf16u::b#0 b zp[2]:36 5.5000001E7 (const word*) mulf16u::memA = (word*) 248 (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:11 1.3333333333333333 -(dword) mulf16u::return#2 return zp[4]:11 4.0 +(dword) mulf16u::return#0 return zp[4]:11 3.6666667333333336E7 +(dword) mulf16u::return#2 return zp[4]:11 2.0000002E7 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -308,111 +308,111 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:38 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:38 11.0 +(byte) mulf_init::c#1 c zp[1]:38 231.0 +(byte) mulf_init::c#2 c zp[1]:38 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:19 4.125 -(byte) mulf_init::dir#4 dir zp[1]:19 11.0 +(byte) mulf_init::dir#2 dir zp[1]:19 375.375 +(byte) mulf_init::dir#4 dir zp[1]:19 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:24 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:24 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:24 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:24 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:24 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:24 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:24 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:24 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:22 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:22 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:22 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:22 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:20 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:20 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:20 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:20 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:32 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:32 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:32 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:32 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) -(signed dword~) rotate::$1 zp[4]:11 2.0 -(signed word~) rotate::$10 zp[2]:30 4.0 -(signed dword~) rotate::$11 zp[4]:11 2.0 -(signed word~) rotate::$12 zp[2]:32 4.0 -(signed word~) rotate::$13 zp[2]:32 4.0 -(byte~) rotate::$15 reg byte a 2.0 -(byte~) rotate::$18 reg byte a 2.0 -(signed word~) rotate::$2 zp[2]:26 4.0 -(signed dword~) rotate::$4 zp[4]:11 2.0 -(signed word~) rotate::$5 zp[2]:28 4.0 -(signed dword~) rotate::$8 zp[4]:11 2.0 -(signed word~) rotate::$9 zp[2]:30 4.0 +(signed dword~) rotate::$1 zp[4]:11 1000001.0 +(signed word~) rotate::$10 zp[2]:30 2000002.0 +(signed dword~) rotate::$11 zp[4]:11 1000001.0 +(signed word~) rotate::$12 zp[2]:32 2000002.0 +(signed word~) rotate::$13 zp[2]:32 2000002.0 +(byte~) rotate::$15 reg byte a 1000001.0 +(byte~) rotate::$18 reg byte a 1000001.0 +(signed word~) rotate::$2 zp[2]:26 2000002.0 +(signed dword~) rotate::$4 zp[4]:11 1000001.0 +(signed word~) rotate::$5 zp[2]:28 2000002.0 +(signed dword~) rotate::$8 zp[4]:11 1000001.0 +(signed word~) rotate::$9 zp[2]:30 2000002.0 (label) rotate::@1 (label) rotate::@2 (label) rotate::@3 (label) rotate::@4 (label) rotate::@return (byte) rotate::angle -(byte) rotate::angle#0 reg byte y 202.0 -(byte) rotate::angle#1 reg byte y 202.0 -(byte) rotate::angle#2 reg byte y 12.625 +(byte) rotate::angle#0 reg byte y 200002.0 +(byte) rotate::angle#1 reg byte y 200002.0 +(byte) rotate::angle#2 reg byte y 12500.125 (signed word) rotate::cos_a -(signed word) rotate::cos_a#0 cos_a zp[2]:24 0.75 +(signed word) rotate::cos_a#0 cos_a zp[2]:24 375000.375 (struct SplineVector16) rotate::return (signed word) rotate::return_x -(signed word) rotate::return_x#0 return_x zp[2]:3 101.0 -(signed word) rotate::return_x#1 return_x zp[2]:3 101.0 -(signed word) rotate::return_x#2 return_x zp[2]:3 34.0 +(signed word) rotate::return_x#0 return_x zp[2]:3 100001.0 +(signed word) rotate::return_x#1 return_x zp[2]:3 100001.0 +(signed word) rotate::return_x#2 return_x zp[2]:3 200000.5 (signed word) rotate::return_y -(signed word) rotate::return_y#0 return_y zp[2]:5 101.0 -(signed word) rotate::return_y#1 return_y zp[2]:5 101.0 -(signed word) rotate::return_y#2 return_y zp[2]:5 34.0 +(signed word) rotate::return_y#0 return_y zp[2]:5 100001.0 +(signed word) rotate::return_y#1 return_y zp[2]:5 100001.0 +(signed word) rotate::return_y#2 return_y zp[2]:5 200000.5 (signed word) rotate::rotated_x (signed word) rotate::rotated_y (signed word) rotate::sin_a -(signed word) rotate::sin_a#0 sin_a zp[2]:24 0.6666666666666666 +(signed word) rotate::sin_a#0 sin_a zp[2]:24 333333.6666666666 (struct SplineVector16) rotate::vector (signed word) rotate::vector_x -(signed word) rotate::vector_x#0 vector_x zp[2]:7 67.33333333333333 -(signed word) rotate::vector_x#1 vector_x zp[2]:7 67.33333333333333 -(signed word) rotate::vector_x#2 vector_x zp[2]:7 7.9230769230769225 +(signed word) rotate::vector_x#0 vector_x zp[2]:7 66667.33333333333 +(signed word) rotate::vector_x#1 vector_x zp[2]:7 66667.33333333333 +(signed word) rotate::vector_x#2 vector_x zp[2]:7 84615.53846153847 (signed word) rotate::vector_y -(signed word) rotate::vector_y#0 vector_y zp[2]:9 101.0 -(signed word) rotate::vector_y#1 vector_y zp[2]:9 101.0 -(signed word) rotate::vector_y#2 vector_y zp[2]:9 11.444444444444443 +(signed word) rotate::vector_y#0 vector_y zp[2]:9 100001.0 +(signed word) rotate::vector_y#1 vector_y zp[2]:9 100001.0 +(signed word) rotate::vector_y#2 vector_y zp[2]:9 122222.44444444444 (signed word) rotate::xr -(signed word) rotate::xr#0 xr zp[2]:26 0.25 -(signed word) rotate::xr#1 xr zp[2]:26 0.4444444444444444 +(signed word) rotate::xr#0 xr zp[2]:26 125000.125 +(signed word) rotate::xr#1 xr zp[2]:26 222222.44444444444 (signed word) rotate::yr -(signed word) rotate::yr#0 yr zp[2]:28 0.23529411764705882 -(signed word) rotate::yr#1 yr zp[2]:28 1.3333333333333333 +(signed word) rotate::yr#0 yr zp[2]:28 117647.17647058824 +(signed word) rotate::yr#1 yr zp[2]:28 666667.3333333334 (word()) sgn_u16((word) sgn_u16::w) -(byte~) sgn_u16::$0 reg byte a 4.0 -(byte~) sgn_u16::$1 reg byte a 4.0 +(byte~) sgn_u16::$0 reg byte a 2.00000000002E11 +(byte~) sgn_u16::$1 reg byte a 2.00000000002E11 (label) sgn_u16::@1 (label) sgn_u16::@return (word) sgn_u16::return -(word) sgn_u16::return#0 return zp[2]:30 4.0 -(word) sgn_u16::return#1 return zp[2]:30 4.0 -(word) sgn_u16::return#4 return zp[2]:30 1.0 +(word) sgn_u16::return#0 return zp[2]:30 2.0000000002E10 +(word) sgn_u16::return#1 return zp[2]:30 2.0000000002E10 +(word) sgn_u16::return#4 return zp[2]:30 5.0000000005E9 (word) sgn_u16::w -(word) sgn_u16::w#0 w zp[2]:24 4.0 -(word) sgn_u16::w#1 w zp[2]:24 4.0 -(word) sgn_u16::w#2 w zp[2]:24 6.0 +(word) sgn_u16::w#0 w zp[2]:24 2.0000000002E10 +(word) sgn_u16::w#1 w zp[2]:24 2.0000000002E10 +(word) sgn_u16::w#2 w zp[2]:24 1.20000000003E11 (void()) show_letter((byte) show_letter::angle) -(byte~) show_letter::$20 reg byte x 151.5 -(byte~) show_letter::$21 reg byte x 151.5 -(byte~) show_letter::$22 reg byte a 202.0 -(byte~) show_letter::$23 reg byte a 202.0 -(byte~) show_letter::$25 reg byte a 202.0 -(byte~) show_letter::$27 reg byte a 202.0 +(byte~) show_letter::$20 reg byte x 150001.5 +(byte~) show_letter::$21 reg byte x 150001.5 +(byte~) show_letter::$22 reg byte a 200002.0 +(byte~) show_letter::$23 reg byte a 200002.0 +(byte~) show_letter::$25 reg byte a 200002.0 +(byte~) show_letter::$27 reg byte a 200002.0 (label) show_letter::@1 (label) show_letter::@2 (label) show_letter::@3 @@ -424,111 +424,111 @@ (label) show_letter::@9 (label) show_letter::@return (byte) show_letter::angle -(byte) show_letter::angle#0 angle zp[1]:2 3.6724137931034484 +(byte) show_letter::angle#0 angle zp[1]:2 3450.051724137931 (signed word) show_letter::current_x -(signed word) show_letter::current_x#10 current_x_1 zp[2]:20 7.76923076923077 -(signed word) show_letter::current_x#11 current_x zp[2]:15 101.0 -(signed word) show_letter::current_x#4 current_x zp[2]:15 5.315789473684211 +(signed word) show_letter::current_x#10 current_x_1 zp[2]:20 7692.384615384615 +(signed word) show_letter::current_x#11 current_x zp[2]:15 100001.0 +(signed word) show_letter::current_x#4 current_x zp[2]:15 5263.210526315789 (signed word) show_letter::current_y -(signed word) show_letter::current_y#10 current_y_1 zp[2]:22 7.76923076923077 -(signed word) show_letter::current_y#11 current_y zp[2]:17 202.0 -(signed word) show_letter::current_y#4 current_y zp[2]:17 5.05 +(signed word) show_letter::current_y#10 current_y_1 zp[2]:22 7692.384615384615 +(signed word) show_letter::current_y#11 current_y zp[2]:17 200002.0 +(signed word) show_letter::current_y#4 current_y zp[2]:17 5000.05 (byte) show_letter::i -(byte) show_letter::i#1 i zp[1]:38 75.75 -(byte) show_letter::i#10 i zp[1]:38 15.538461538461537 +(byte) show_letter::i#1 i zp[1]:38 75000.75 +(byte) show_letter::i#10 i zp[1]:38 15384.769230769232 (struct SplineVector16) show_letter::segment_to (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y (byte) show_letter::segment_type -(byte) show_letter::segment_type#0 reg byte a 151.5 +(byte) show_letter::segment_type#0 reg byte a 150001.5 (struct SplineVector16) show_letter::segment_via (signed word) show_letter::segment_via_x -(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:3 22.444444444444443 +(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:3 22222.444444444445 (signed word) show_letter::segment_via_y -(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:5 22.444444444444443 +(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:5 22222.444444444445 (signed word) show_letter::to_x -(signed word) show_letter::to_x#0 to_x zp[2]:7 101.0 -(signed word) show_letter::to_x#1 to_x zp[2]:7 101.0 -(signed word) show_letter::to_x#2 to_x_1 zp[2]:3 101.0 +(signed word) show_letter::to_x#0 to_x zp[2]:7 100001.0 +(signed word) show_letter::to_x#1 to_x zp[2]:7 100001.0 +(signed word) show_letter::to_x#2 to_x_1 zp[2]:3 100001.0 (signed word) show_letter::to_y -(signed word) show_letter::to_y#0 to_y zp[2]:9 101.0 -(signed word) show_letter::to_y#1 to_y zp[2]:9 101.0 -(signed word) show_letter::to_y#2 to_y_1 zp[2]:5 101.0 +(signed word) show_letter::to_y#0 to_y zp[2]:9 100001.0 +(signed word) show_letter::to_y#1 to_y zp[2]:9 100001.0 +(signed word) show_letter::to_y#2 to_y_1 zp[2]:5 100001.0 (signed word) show_letter::via_x -(signed word) show_letter::via_x#0 via_x zp[2]:7 101.0 -(signed word) show_letter::via_x#1 via_x zp[2]:7 101.0 -(signed word) show_letter::via_x#2 via_x_1 zp[2]:3 101.0 +(signed word) show_letter::via_x#0 via_x zp[2]:7 100001.0 +(signed word) show_letter::via_x#1 via_x zp[2]:7 100001.0 +(signed word) show_letter::via_x#2 via_x_1 zp[2]:3 100001.0 (signed word) show_letter::via_y -(signed word) show_letter::via_y#0 via_y zp[2]:9 101.0 -(signed word) show_letter::via_y#1 via_y zp[2]:9 101.0 -(signed word) show_letter::via_y#2 via_y_1 zp[2]:5 101.0 +(signed word) show_letter::via_y#0 via_y zp[2]:9 100001.0 +(signed word) show_letter::via_y#1 via_y zp[2]:9 100001.0 +(signed word) show_letter::via_y#2 via_y_1 zp[2]:5 100001.0 (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) -(signed word~) spline_8segB::$0 zp[2]:34 4.0 -(signed word~) spline_8segB::$1 zp[2]:34 4.0 -(signed word~) spline_8segB::$10 zp[2]:3 4.0 -(signed word~) spline_8segB::$12 zp[2]:5 4.0 -(signed word~) spline_8segB::$18 zp[2]:15 4.0 -(signed word~) spline_8segB::$19 zp[2]:15 1.3333333333333333 -(signed word~) spline_8segB::$20 zp[2]:17 4.0 -(signed word~) spline_8segB::$21 zp[2]:17 2.0 -(signed word~) spline_8segB::$22 zp[2]:28 2002.0 -(signed word~) spline_8segB::$23 zp[2]:28 500.5 -(signed word~) spline_8segB::$24 zp[2]:30 2002.0 -(signed word~) spline_8segB::$25 zp[2]:30 667.3333333333334 -(signed word~) spline_8segB::$3 zp[2]:26 4.0 -(byte~) spline_8segB::$31 reg byte x 1501.5 -(signed word~) spline_8segB::$4 zp[2]:26 4.0 -(signed word~) spline_8segB::$6 zp[2]:3 4.0 -(signed word~) spline_8segB::$8 zp[2]:5 4.0 +(signed word~) spline_8segB::$0 zp[2]:34 2000002.0 +(signed word~) spline_8segB::$1 zp[2]:34 2000002.0 +(signed word~) spline_8segB::$10 zp[2]:3 2000002.0 +(signed word~) spline_8segB::$12 zp[2]:5 2000002.0 +(signed word~) spline_8segB::$18 zp[2]:15 2000002.0 +(signed word~) spline_8segB::$19 zp[2]:15 666667.3333333334 +(signed word~) spline_8segB::$20 zp[2]:17 2000002.0 +(signed word~) spline_8segB::$21 zp[2]:17 1000001.0 +(signed word~) spline_8segB::$22 zp[2]:28 2.000000002E9 +(signed word~) spline_8segB::$23 zp[2]:28 5.000000005E8 +(signed word~) spline_8segB::$24 zp[2]:30 2.000000002E9 +(signed word~) spline_8segB::$25 zp[2]:30 6.666666673333334E8 +(signed word~) spline_8segB::$3 zp[2]:26 2000002.0 +(byte~) spline_8segB::$31 reg byte x 1.5000000015E9 +(signed word~) spline_8segB::$4 zp[2]:26 2000002.0 +(signed word~) spline_8segB::$6 zp[2]:3 2000002.0 +(signed word~) spline_8segB::$8 zp[2]:5 2000002.0 (label) spline_8segB::@1 (label) spline_8segB::@2 (label) spline_8segB::@return (signed word) spline_8segB::a_x -(signed word) spline_8segB::a_x#0 a_x zp[2]:34 0.5 +(signed word) spline_8segB::a_x#0 a_x zp[2]:34 250000.25 (signed word) spline_8segB::a_y -(signed word) spline_8segB::a_y#0 a_y zp[2]:26 0.6000000000000001 +(signed word) spline_8segB::a_y#0 a_y zp[2]:26 300000.30000000005 (signed word) spline_8segB::b_x -(signed word) spline_8segB::b_x#0 b_x zp[2]:3 1.3333333333333333 +(signed word) spline_8segB::b_x#0 b_x zp[2]:3 666667.3333333334 (signed word) spline_8segB::b_y -(signed word) spline_8segB::b_y#0 b_y zp[2]:5 1.3333333333333333 +(signed word) spline_8segB::b_y#0 b_y zp[2]:5 666667.3333333334 (signed word) spline_8segB::i_x -(signed word) spline_8segB::i_x#0 i_x zp[2]:3 0.5714285714285714 -(signed word) spline_8segB::i_x#1 i_x zp[2]:3 500.5 -(signed word) spline_8segB::i_x#2 i_x zp[2]:3 300.5 +(signed word) spline_8segB::i_x#0 i_x zp[2]:3 285714.5714285714 +(signed word) spline_8segB::i_x#1 i_x zp[2]:3 5.000000005E8 +(signed word) spline_8segB::i_x#2 i_x zp[2]:3 3.001000004E8 (signed word) spline_8segB::i_y -(signed word) spline_8segB::i_y#0 i_y zp[2]:5 0.8 -(signed word) spline_8segB::i_y#1 i_y zp[2]:5 667.3333333333334 -(signed word) spline_8segB::i_y#2 i_y zp[2]:5 273.1818181818182 +(signed word) spline_8segB::i_y#0 i_y zp[2]:5 400000.4 +(signed word) spline_8segB::i_y#1 i_y zp[2]:5 6.666666673333334E8 +(signed word) spline_8segB::i_y#2 i_y zp[2]:5 2.728181821818182E8 (signed word) spline_8segB::j_x -(signed word) spline_8segB::j_x#0 j_x zp[2]:34 55.72222222222223 +(signed word) spline_8segB::j_x#0 j_x zp[2]:34 5.5611111222222224E7 (signed word) spline_8segB::j_y -(signed word) spline_8segB::j_y#0 j_y zp[2]:26 59.0 +(signed word) spline_8segB::j_y#0 j_y zp[2]:26 5.888235305882353E7 (byte) spline_8segB::n -(byte) spline_8segB::n#1 reg byte y 1501.5 -(byte) spline_8segB::n#2 reg byte y 250.25 +(byte) spline_8segB::n#1 reg byte y 1.5000000015E9 +(byte) spline_8segB::n#2 reg byte y 2.5000000025E8 (struct SplineVector16) spline_8segB::p0 (signed word) spline_8segB::p0_x -(signed word) spline_8segB::p0_x#0 p0_x zp[2]:15 4.863636363636363 +(signed word) spline_8segB::p0_x#0 p0_x zp[2]:15 140909.27272727274 (signed word) spline_8segB::p0_y -(signed word) spline_8segB::p0_y#0 p0_y zp[2]:17 4.863636363636363 +(signed word) spline_8segB::p0_y#0 p0_y zp[2]:17 140909.27272727274 (struct SplineVector16) spline_8segB::p1 (signed word) spline_8segB::p1_x -(signed word) spline_8segB::p1_x#0 p1_x zp[2]:3 10.499999999999998 +(signed word) spline_8segB::p1_x#0 p1_x zp[2]:3 210000.30000000002 (signed word) spline_8segB::p1_y -(signed word) spline_8segB::p1_y#0 p1_y zp[2]:5 9.545454545454545 +(signed word) spline_8segB::p1_y#0 p1_y zp[2]:5 190909.36363636365 (struct SplineVector16) spline_8segB::p2 (signed word) spline_8segB::p2_x -(signed word) spline_8segB::p2_x#0 p2_x zp[2]:20 34.33333333333333 +(signed word) spline_8segB::p2_x#0 p2_x zp[2]:20 366667.3333333334 (signed word) spline_8segB::p2_y -(signed word) spline_8segB::p2_y#0 p2_y zp[2]:22 20.599999999999998 +(signed word) spline_8segB::p2_y#0 p2_y zp[2]:22 220000.40000000002 (signed word) spline_8segB::p_x -(signed word) spline_8segB::p_x#0 p_x zp[2]:15 2.0 -(signed word) spline_8segB::p_x#1 p_x zp[2]:15 334.0 -(signed word) spline_8segB::p_x#2 p_x zp[2]:15 375.625 +(signed word) spline_8segB::p_x#0 p_x zp[2]:15 1000001.0 +(signed word) spline_8segB::p_x#1 p_x zp[2]:15 3.335000005E8 +(signed word) spline_8segB::p_x#2 p_x zp[2]:15 3.751250005E8 (signed word) spline_8segB::p_y -(signed word) spline_8segB::p_y#0 p_y zp[2]:17 4.0 -(signed word) spline_8segB::p_y#1 p_y zp[2]:17 286.2857142857143 -(signed word) spline_8segB::p_y#2 p_y zp[2]:17 333.8888888888889 +(signed word) spline_8segB::p_y#0 p_y zp[2]:17 2000002.0 +(signed word) spline_8segB::p_y#1 p_y zp[2]:17 2.8585714328571427E8 +(signed word) spline_8segB::p_y#2 p_y zp[2]:17 3.334444448888889E8 zp[1]:2 [ main::angle#2 main::angle#1 show_letter::angle#0 ] reg byte x [ main::w#4 main::w#1 ] @@ -561,7 +561,7 @@ reg byte a [ show_letter::segment_type#0 ] reg byte x [ bitmap_plot_spline_8seg::$8 ] reg byte x [ bitmap_plot_spline_8seg::$9 ] zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 rotate::sin_a#0 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] reg byte a [ abs_u16::$0 ] diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log index e83a5b13f..c493109d9 100644 --- a/src/test/ref/complex/tetris/test-sprites.log +++ b/src/test/ref/complex/tetris/test-sprites.log @@ -900,36 +900,36 @@ Inferred type updated to byte in (unumber~) main::$5 ← (byte) main::s#2 * (byt Inferred type updated to byte in (unumber~) main::$6 ← (byte) main::s#2 - (byte) 3 Inferred type updated to word in (unumber~) main::toSpritePtr2_$1 ← (word~) main::toSpritePtr2_$0 / (byte) $40 Inferred type updated to byte in (unumber~) loop::$1 ← (byte) loop::s#2 * (byte) 2 -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) irq_sprite_ptr (byte~) $1 (byte~) sprites_irq::toSpritePtr2_$2 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 -Alias (byte) sprites_init::s2#0 = (byte~) sprites_init::$0 -Alias (byte) sprites_init::xpos#1 = (byte~) sprites_init::$1 -Alias (byte*) toSpritePtr1_sprite#0 = (byte*) toSpritePtr1_sprite#1 -Alias (byte) toSpritePtr1_return#0 = (byte~) toSpritePtr1_$2 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $0 -Alias (byte) sprites_irq::ptr#0 = (byte) sprites_irq::ptr#5 (byte) sprites_irq::ptr#6 -Alias (byte*) sprites_irq::toSpritePtr2_sprite#0 = (byte*) sprites_irq::toSpritePtr2_sprite#1 -Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte) sin_idx#23 = (byte) sin_idx#31 (byte) sin_idx#32 (byte) sin_idx#30 (byte) sin_idx#29 (byte) sin_idx#28 (byte) sin_idx#27 (byte) sin_idx#26 (byte) sin_idx#25 (byte) sin_idx#24 -Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte) main::s2#0 = (byte~) main::$5 -Alias (byte*) main::toSpritePtr2_sprite#0 = (byte*) main::toSpritePtr2_sprite#1 -Alias (byte) main::s#2 = (byte) main::s#5 (byte) main::s#4 (byte) main::s#3 -Alias (byte) main::xpos#2 = (byte) main::xpos#5 (byte) main::xpos#4 (byte) main::xpos#3 -Alias (byte) main::ypos#2 = (byte) main::ypos#5 (byte) main::ypos#4 (byte) main::ypos#3 -Alias (byte) sin_idx#12 = (byte) sin_idx#21 (byte) sin_idx#22 (byte) sin_idx#20 (byte) sin_idx#19 (byte) sin_idx#17 -Alias (byte) main::toSpritePtr2_return#0 = (byte~) main::toSpritePtr2_$2 (byte) main::toSpritePtr2_return#2 (byte) main::toSpritePtr2_return#1 (byte) main::toSpritePtr2_return#3 (byte~) main::$7 -Alias (byte) sin_idx#1 = (byte) sin_idx#6 (byte) sin_idx#7 (byte) sin_idx#2 -Alias (byte) sin_idx#13 = (byte) sin_idx#8 -Alias (byte) sin_idx#14 = (byte) sin_idx#9 -Alias (byte) sin_idx#10 = (byte) sin_idx#15 (byte) sin_idx#4 -Alias (byte) sin_idx#0 = (byte) sin_idx#16 -Alias (byte) sin_idx#11 = (byte) sin_idx#5 +Alias candidate removed (volatile)sprites_irq::toSpritePtr2_return#0 = irq_sprite_ptr $1 sprites_irq::toSpritePtr2_$2 sprites_irq::toSpritePtr2_return#2 sprites_irq::toSpritePtr2_return#1 sprites_irq::toSpritePtr2_return#3 sprites_irq::$5 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 +Alias sprites_init::s2#0 = sprites_init::$0 +Alias sprites_init::xpos#1 = sprites_init::$1 +Alias toSpritePtr1_sprite#0 = toSpritePtr1_sprite#1 +Alias toSpritePtr1_return#0 = toSpritePtr1_$2 toSpritePtr1_return#2 toSpritePtr1_return#1 toSpritePtr1_return#3 $0 +Alias sprites_irq::ptr#0 = sprites_irq::ptr#5 sprites_irq::ptr#6 +Alias sprites_irq::toSpritePtr2_sprite#0 = sprites_irq::toSpritePtr2_sprite#1 +Alias main::vicSelectGfxBank1_gfx#0 = main::vicSelectGfxBank1_gfx#1 main::vicSelectGfxBank1_toDd001_gfx#0 main::vicSelectGfxBank1_toDd001_gfx#1 +Alias sin_idx#23 = sin_idx#31 sin_idx#32 sin_idx#30 sin_idx#29 sin_idx#28 sin_idx#27 sin_idx#26 sin_idx#25 sin_idx#24 +Alias main::vicSelectGfxBank1_toDd001_return#0 = main::vicSelectGfxBank1_toDd001_$3 main::vicSelectGfxBank1_toDd001_return#2 main::vicSelectGfxBank1_toDd001_return#1 main::vicSelectGfxBank1_toDd001_return#3 main::vicSelectGfxBank1_$0 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias main::s2#0 = main::$5 +Alias main::toSpritePtr2_sprite#0 = main::toSpritePtr2_sprite#1 +Alias main::s#2 = main::s#5 main::s#4 main::s#3 +Alias main::xpos#2 = main::xpos#5 main::xpos#4 main::xpos#3 +Alias main::ypos#2 = main::ypos#5 main::ypos#4 main::ypos#3 +Alias sin_idx#12 = sin_idx#21 sin_idx#22 sin_idx#20 sin_idx#19 sin_idx#17 +Alias main::toSpritePtr2_return#0 = main::toSpritePtr2_$2 main::toSpritePtr2_return#2 main::toSpritePtr2_return#1 main::toSpritePtr2_return#3 main::$7 +Alias sin_idx#1 = sin_idx#6 sin_idx#7 sin_idx#2 +Alias sin_idx#13 = sin_idx#8 +Alias sin_idx#14 = sin_idx#9 +Alias sin_idx#10 = sin_idx#15 sin_idx#4 +Alias sin_idx#0 = sin_idx#16 +Alias sin_idx#11 = sin_idx#5 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) irq_sprite_ptr (byte~) $1 (byte~) sprites_irq::toSpritePtr2_$2 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::toSpritePtr2_return#0 = irq_sprite_ptr $1 sprites_irq::toSpritePtr2_$2 sprites_irq::toSpritePtr2_return#2 sprites_irq::toSpritePtr2_return#1 sprites_irq::toSpritePtr2_return#3 sprites_irq::$5 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Identical Phi Values (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#0 Identical Phi Values (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSpritePtr2_return#1 Identical Phi Values (byte) sin_idx#23 (byte) sin_idx#0 @@ -998,8 +998,8 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) irq_sprite_ptr (byte~) $1 (byte~) sprites_irq::toSpritePtr2_$2 (byte) sprites_irq::toSpritePtr2_return#1 (byte~) sprites_irq::$5 -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::toSpritePtr2_return#0 = irq_sprite_ptr $1 sprites_irq::toSpritePtr2_$2 sprites_irq::toSpritePtr2_return#1 sprites_irq::$5 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Constant right-side identified [16] (word~) toSpritePtr1_$1 ← (const word) toSpritePtr1_$0 / (byte) $40 Constant right-side identified [60] (word~) sprites_irq::toSpritePtr2_$1 ← (const word) sprites_irq::toSpritePtr2_$0 / (byte) $40 Constant right-side identified [79] (byte~) main::vicSelectGfxBank1_toDd001_$1 ← > (const word) main::vicSelectGfxBank1_toDd001_$0 @@ -1024,8 +1024,8 @@ Constant (const byte) sprites_irq::toSpritePtr2_return#1 = sprites_irq::toSprite Successful SSA optimization Pass2ConstantIdentification Constant (const byte) sprites_irq::$5 = sprites_irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification -Alias candidate removed (volatile)(byte) irq_sprite_ptr = (byte~) $1 -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)irq_sprite_ptr = $1 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Constant right-side identified [16] (byte~) $1 ← (const byte) toSpritePtr1_return#0 + (byte) 3 Constant right-side identified [72] (byte~) main::vicSelectGfxBank1_toDd001_$2 ← (const byte) main::vicSelectGfxBank1_toDd001_$1 / (byte) $40 Constant right-side identified [75] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4 @@ -1047,7 +1047,7 @@ Eliminating unused constant (const word) main::vicSelectGfxBank1_toDd001_$0 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const byte*) main::vicSelectGfxBank1_gfx#0 Successful SSA optimization PassNEliminateUnusedVars -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Constant right-side identified [73] (byte~) main::toD0181_$3 ← > (const word) main::toD0181_$2 Constant right-side identified [74] (byte~) main::toD0181_$7 ← (const byte) main::toD0181_$6 & (byte) $f Successful SSA optimization Pass2ConstantRValueConsolidation @@ -1055,12 +1055,12 @@ Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3 Constant (const byte) main::toD0181_$3 = >main::toD0181_$2 Constant (const byte) main::toD0181_$7 = main::toD0181_$6&$f Successful SSA optimization Pass2ConstantIdentification -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Constant right-side identified [72] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7 Successful SSA optimization Pass2ConstantIdentification -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Rewriting multiplication to use shift [7] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 * (byte) 2 Rewriting multiplication to use shift [76] (byte) main::s2#0 ← (byte) main::s#2 * (byte) 2 Rewriting multiplication to use shift [93] (byte~) loop::$1 ← (byte) loop::s#2 * (byte) 2 @@ -1114,8 +1114,8 @@ Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+1) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+2) Consolidated array index constant in *(PLAYFIELD_SPRITE_PTRS_2+3) Successful SSA optimization Pass2ConstantAdditionElimination -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Added new block during phi lifting sprites_init::@3(between sprites_init::@1 and sprites_init::@1) Added new block during phi lifting main::@9(between main::@5 and main::@1) Added new block during phi lifting loop::@11(between loop::@6 and loop::@6) @@ -1439,21 +1439,21 @@ VARIABLE REGISTER WEIGHTS (byte) irq_sprite_ptr loadstore 0.45161290322580644 (byte) irq_sprite_ypos loadstore 0.48275862068965525 (void()) loop() -(byte~) loop::$1 202.0 +(byte~) loop::$1 20002.0 (byte) loop::idx -(byte) loop::idx#0 22.0 -(byte) loop::idx#1 67.33333333333333 -(byte) loop::idx#2 104.66666666666666 +(byte) loop::idx#0 2002.0 +(byte) loop::idx#1 6667.333333333333 +(byte) loop::idx#2 10334.666666666666 (byte) loop::s -(byte) loop::s#1 151.5 -(byte) loop::s#2 75.75 +(byte) loop::s#1 15001.5 +(byte) loop::s#2 7500.75 (void()) main() -(byte~) main::$6 22.0 +(byte~) main::$6 202.0 (byte) main::s -(byte) main::s#1 16.5 -(byte) main::s#2 6.6 +(byte) main::s#1 151.5 +(byte) main::s#2 60.6 (byte) main::s2 -(byte) main::s2#0 16.5 +(byte) main::s2#0 151.5 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -1463,24 +1463,24 @@ VARIABLE REGISTER WEIGHTS (byte*) main::vicSelectGfxBank1_toDd001_gfx (byte) main::vicSelectGfxBank1_toDd001_return (byte) main::xpos -(byte) main::xpos#1 5.5 -(byte) main::xpos#2 4.125 +(byte) main::xpos#1 50.5 +(byte) main::xpos#2 37.875 (byte) main::ypos -(byte) main::ypos#1 7.333333333333333 -(byte) main::ypos#2 3.666666666666667 +(byte) main::ypos#1 67.33333333333333 +(byte) main::ypos#2 33.666666666666664 (byte) render_screen_showing loadstore 0.4 (byte) sin_idx -(byte) sin_idx#10 3.666666666666667 -(byte) sin_idx#3 22.0 +(byte) sin_idx#10 333.6666666666667 +(byte) sin_idx#3 2002.0 (void()) sprites_init() (byte) sprites_init::s -(byte) sprites_init::s#1 16.5 -(byte) sprites_init::s#2 8.8 +(byte) sprites_init::s#1 1501.5 +(byte) sprites_init::s#2 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 22.0 +(byte) sprites_init::s2#0 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 7.333333333333333 -(byte) sprites_init::xpos#2 8.25 +(byte) sprites_init::xpos#1 667.3333333333334 +(byte) sprites_init::xpos#2 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 4.0 (byte) sprites_irq::ptr @@ -2243,124 +2243,124 @@ SIN: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [3] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ ] ( [ ] ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ ] ( [ ] ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( [ ] ) always clobbers reg byte a -Statement [7] (byte) irq_cnt ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [3] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [7] (byte) irq_cnt ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::s#2 main::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::xpos#2 main::xpos#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::ypos#2 main::ypos#1 ] -Statement [22] *((const byte*) SPRITES_XPOS + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_XPOS + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ main::s2#0 ] -Statement [23] *((const byte*) SPRITES_YPOS + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a -Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a -Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_YPOS + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] { } ) always clobbers reg byte a +Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] { } ) always clobbers reg byte a +Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] { } ) always clobbers reg byte a +Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] { } ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ sin_idx#10 sin_idx#3 ] -Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a +Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ loop::s#2 loop::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ loop::idx#2 loop::idx#0 loop::idx#1 ] -Statement [43] *((const byte*) SPRITES_YPOS + (byte~) loop::$1) ← *((const byte*) SIN + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a -Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a -Statement [49] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [43] *((const byte*) SPRITES_YPOS + (byte~) loop::$1) ← *((const byte*) SIN + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] { } ) always clobbers reg byte a +Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [51] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [53] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [55] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [56] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [57] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [60] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [61] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [55] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [57] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [60] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [63] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ sprites_init::s#2 sprites_init::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [66] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [80] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ) always clobbers reg byte a -Statement [82] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [66] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a +Statement [80] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a +Statement [82] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ sprites_irq::ptr#0 ] -Statement [90] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ) always clobbers reg byte a -Statement [91] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [92] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [93] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [94] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [95] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] ) always clobbers reg byte a -Statement [96] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [97] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [98] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [99] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [100] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [101] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [102] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [103] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [105] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [3] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ ] ( [ ] ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ ] ( [ ] ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( [ ] ) always clobbers reg byte a -Statement [7] (byte) irq_cnt ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:10 [ ] ) always clobbers reg byte a -Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a -Statement [22] *((const byte*) SPRITES_XPOS + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SPRITES_YPOS + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a -Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a -Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] ) always clobbers reg byte a -Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a -Statement [43] *((const byte*) SPRITES_YPOS + (byte~) loop::$1) ← *((const byte*) SIN + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a -Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a -Statement [49] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [90] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a +Statement [91] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [92] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [93] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [94] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [95] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [97] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [98] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [99] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [100] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [101] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [102] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [103] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [105] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [3] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [7] (byte) irq_cnt ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:10 [ ] { } ) always clobbers reg byte a +Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_XPOS + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_YPOS + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] { } ) always clobbers reg byte a +Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] { } ) always clobbers reg byte a +Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] { } ) always clobbers reg byte a +Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] { } ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] { } ) always clobbers reg byte a +Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) SPRITES_YPOS + (byte~) loop::$1) ← *((const byte*) SIN + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] { } ) always clobbers reg byte a +Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [51] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [53] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [55] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [56] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [57] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a -Statement [60] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [61] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a -Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [66] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [80] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ) always clobbers reg byte a -Statement [82] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [90] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ) always clobbers reg byte a -Statement [91] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [92] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [93] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [94] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [95] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] ) always clobbers reg byte a -Statement [96] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [97] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [98] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [99] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [100] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [101] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [102] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [103] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [105] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [55] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [57] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] { } ) always clobbers reg byte a +Statement [60] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [63] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:10::sprites_init:18 [ ] { } ) always clobbers reg byte a +Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a +Statement [80] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a +Statement [82] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a +Statement [90] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a +Statement [91] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [92] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [93] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [94] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [95] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [97] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [98] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [99] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [100] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [101] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [102] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [103] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [105] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::s#2 main::s#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::xpos#2 main::xpos#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::ypos#2 main::ypos#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -2388,20 +2388,20 @@ Potential registers zp[1]:25 [ sprites_irq::ptr#1 ] : zp[1]:25 , reg byte a , re Potential registers zp[1]:26 [ sprites_irq::ptr#2 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [loop] 227.25: zp[1]:6 [ loop::s#2 loop::s#1 ] 202: zp[1]:17 [ loop::$1 ] 194: zp[1]:7 [ loop::idx#2 loop::idx#0 loop::idx#1 ] -Uplift Scope [main] 23.1: zp[1]:2 [ main::s#2 main::s#1 ] 22: zp[1]:16 [ main::$6 ] 16.5: zp[1]:15 [ main::s2#0 ] 11: zp[1]:4 [ main::ypos#2 main::ypos#1 ] 9.62: zp[1]:3 [ main::xpos#2 main::xpos#1 ] -Uplift Scope [sprites_init] 25.3: zp[1]:8 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp[1]:18 [ sprites_init::s2#0 ] 15.58: zp[1]:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [loop] 22,502.25: zp[1]:6 [ loop::s#2 loop::s#1 ] 20,002: zp[1]:17 [ loop::$1 ] 19,004: zp[1]:7 [ loop::idx#2 loop::idx#0 loop::idx#1 ] +Uplift Scope [sprites_init] 2,302.3: zp[1]:8 [ sprites_init::s#2 sprites_init::s#1 ] 2,002: zp[1]:18 [ sprites_init::s2#0 ] 1,418.08: zp[1]:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [] 2,335.67: zp[1]:5 [ sin_idx#10 sin_idx#3 ] 0.48: zp[1]:12 [ irq_sprite_ypos ] 0.48: zp[1]:14 [ irq_cnt ] 0.45: zp[1]:13 [ irq_sprite_ptr ] 0.44: zp[1]:11 [ irq_raster_next ] 0.4: zp[1]:10 [ render_screen_showing ] +Uplift Scope [main] 212.1: zp[1]:2 [ main::s#2 main::s#1 ] 202: zp[1]:16 [ main::$6 ] 151.5: zp[1]:15 [ main::s2#0 ] 101: zp[1]:4 [ main::ypos#2 main::ypos#1 ] 88.38: zp[1]:3 [ main::xpos#2 main::xpos#1 ] Uplift Scope [sprites_irq] 6.5: zp[1]:21 [ sprites_irq::raster_sprite_gfx_modify ] 4: zp[1]:20 [ sprites_irq::$0 ] 4: zp[1]:24 [ sprites_irq::ptr#4 ] 4: zp[1]:26 [ sprites_irq::ptr#2 ] 2.67: zp[1]:23 [ sprites_irq::ptr#3 ] 2.67: zp[1]:25 [ sprites_irq::ptr#1 ] 2.5: zp[1]:19 [ sprites_irq::ypos#0 ] 2.5: zp[1]:22 [ sprites_irq::ptr#0 ] -Uplift Scope [] 25.67: zp[1]:5 [ sin_idx#10 sin_idx#3 ] 0.48: zp[1]:12 [ irq_sprite_ypos ] 0.48: zp[1]:14 [ irq_cnt ] 0.45: zp[1]:13 [ irq_sprite_ptr ] 0.44: zp[1]:11 [ irq_raster_next ] 0.4: zp[1]:10 [ render_screen_showing ] Uplift Scope [sprites_irq_init] Uplifting [loop] best 13962 combination zp[1]:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#0 loop::idx#1 ] -Uplifting [main] best 13682 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp[1]:4 [ main::ypos#2 main::ypos#1 ] zp[1]:3 [ main::xpos#2 main::xpos#1 ] +Uplifting [sprites_init] best 13792 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp[1]:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [] best 13792 combination zp[1]:5 [ sin_idx#10 sin_idx#3 ] zp[1]:12 [ irq_sprite_ypos ] zp[1]:14 [ irq_cnt ] zp[1]:13 [ irq_sprite_ptr ] zp[1]:11 [ irq_raster_next ] zp[1]:10 [ render_screen_showing ] +Uplifting [main] best 13512 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp[1]:4 [ main::ypos#2 main::ypos#1 ] zp[1]:3 [ main::xpos#2 main::xpos#1 ] Limited combination testing to 100 combinations of 324 possible. -Uplifting [sprites_init] best 13512 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp[1]:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Uplifting [sprites_irq] best 13488 combination zp[1]:21 [ sprites_irq::raster_sprite_gfx_modify ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp[1]:25 [ sprites_irq::ptr#1 ] zp[1]:19 [ sprites_irq::ypos#0 ] zp[1]:22 [ sprites_irq::ptr#0 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [] best 13488 combination zp[1]:5 [ sin_idx#10 sin_idx#3 ] zp[1]:12 [ irq_sprite_ypos ] zp[1]:14 [ irq_cnt ] zp[1]:13 [ irq_sprite_ptr ] zp[1]:11 [ irq_raster_next ] zp[1]:10 [ render_screen_showing ] Uplifting [sprites_irq_init] best 13488 combination Attempting to uplift remaining variables inzp[1]:6 [ loop::s#2 loop::s#1 ] Uplifting [loop] best 13488 combination zp[1]:6 [ loop::s#2 loop::s#1 ] @@ -3214,21 +3214,21 @@ FINAL SYMBOL TABLE (byte) irq_sprite_ptr loadstore zp[1]:8 0.45161290322580644 (byte) irq_sprite_ypos loadstore zp[1]:7 0.48275862068965525 (void()) loop() -(byte~) loop::$1 reg byte a 202.0 +(byte~) loop::$1 reg byte a 20002.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 (label) loop::@4 (label) loop::@5 (byte) loop::idx -(byte) loop::idx#0 reg byte x 22.0 -(byte) loop::idx#1 reg byte x 67.33333333333333 -(byte) loop::idx#2 reg byte x 104.66666666666666 +(byte) loop::idx#0 reg byte x 2002.0 +(byte) loop::idx#1 reg byte x 6667.333333333333 +(byte) loop::idx#2 reg byte x 10334.666666666666 (byte) loop::s -(byte) loop::s#1 s zp[1]:4 151.5 -(byte) loop::s#2 s zp[1]:4 75.75 +(byte) loop::s#1 s zp[1]:4 15001.5 +(byte) loop::s#2 s zp[1]:4 7500.75 (void()) main() -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -3237,10 +3237,10 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::s -(byte) main::s#1 reg byte y 16.5 -(byte) main::s#2 reg byte y 6.6 +(byte) main::s#1 reg byte y 151.5 +(byte) main::s#2 reg byte y 60.6 (byte) main::s2 -(byte) main::s2#0 reg byte x 16.5 +(byte) main::s2#0 reg byte x 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -3258,26 +3258,26 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank1_toDd001_return (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3 (byte) main::xpos -(byte) main::xpos#1 xpos zp[1]:3 5.5 -(byte) main::xpos#2 xpos zp[1]:3 4.125 +(byte) main::xpos#1 xpos zp[1]:3 50.5 +(byte) main::xpos#2 xpos zp[1]:3 37.875 (byte) main::ypos -(byte) main::ypos#1 ypos zp[1]:2 7.333333333333333 -(byte) main::ypos#2 ypos zp[1]:2 3.666666666666667 +(byte) main::ypos#1 ypos zp[1]:2 67.33333333333333 +(byte) main::ypos#2 ypos zp[1]:2 33.666666666666664 (byte) render_screen_showing loadstore zp[1]:5 0.4 (byte) sin_idx -(byte) sin_idx#10 sin_idx zp[1]:3 3.666666666666667 -(byte) sin_idx#3 sin_idx zp[1]:3 22.0 +(byte) sin_idx#10 sin_idx zp[1]:3 333.6666666666667 +(byte) sin_idx#3 sin_idx zp[1]:3 2002.0 (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return (byte) sprites_init::s -(byte) sprites_init::s#1 reg byte y 16.5 -(byte) sprites_init::s#2 reg byte y 8.8 +(byte) sprites_init::s#1 reg byte y 1501.5 +(byte) sprites_init::s#2 reg byte y 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 reg byte x 22.0 +(byte) sprites_init::s2#0 reg byte x 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 xpos zp[1]:4 7.333333333333333 -(byte) sprites_init::xpos#2 xpos zp[1]:4 8.25 +(byte) sprites_init::xpos#1 xpos zp[1]:4 667.3333333333334 +(byte) sprites_init::xpos#2 xpos zp[1]:4 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 diff --git a/src/test/ref/complex/tetris/test-sprites.sym b/src/test/ref/complex/tetris/test-sprites.sym index 5a39bd204..ebe15bfe5 100644 --- a/src/test/ref/complex/tetris/test-sprites.sym +++ b/src/test/ref/complex/tetris/test-sprites.sym @@ -48,21 +48,21 @@ (byte) irq_sprite_ptr loadstore zp[1]:8 0.45161290322580644 (byte) irq_sprite_ypos loadstore zp[1]:7 0.48275862068965525 (void()) loop() -(byte~) loop::$1 reg byte a 202.0 +(byte~) loop::$1 reg byte a 20002.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 (label) loop::@4 (label) loop::@5 (byte) loop::idx -(byte) loop::idx#0 reg byte x 22.0 -(byte) loop::idx#1 reg byte x 67.33333333333333 -(byte) loop::idx#2 reg byte x 104.66666666666666 +(byte) loop::idx#0 reg byte x 2002.0 +(byte) loop::idx#1 reg byte x 6667.333333333333 +(byte) loop::idx#2 reg byte x 10334.666666666666 (byte) loop::s -(byte) loop::s#1 s zp[1]:4 151.5 -(byte) loop::s#2 s zp[1]:4 75.75 +(byte) loop::s#1 s zp[1]:4 15001.5 +(byte) loop::s#2 s zp[1]:4 7500.75 (void()) main() -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -71,10 +71,10 @@ (label) main::@6 (label) main::@return (byte) main::s -(byte) main::s#1 reg byte y 16.5 -(byte) main::s#2 reg byte y 6.6 +(byte) main::s#1 reg byte y 151.5 +(byte) main::s#2 reg byte y 60.6 (byte) main::s2 -(byte) main::s2#0 reg byte x 16.5 +(byte) main::s2#0 reg byte x 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -92,26 +92,26 @@ (byte) main::vicSelectGfxBank1_toDd001_return (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3 (byte) main::xpos -(byte) main::xpos#1 xpos zp[1]:3 5.5 -(byte) main::xpos#2 xpos zp[1]:3 4.125 +(byte) main::xpos#1 xpos zp[1]:3 50.5 +(byte) main::xpos#2 xpos zp[1]:3 37.875 (byte) main::ypos -(byte) main::ypos#1 ypos zp[1]:2 7.333333333333333 -(byte) main::ypos#2 ypos zp[1]:2 3.666666666666667 +(byte) main::ypos#1 ypos zp[1]:2 67.33333333333333 +(byte) main::ypos#2 ypos zp[1]:2 33.666666666666664 (byte) render_screen_showing loadstore zp[1]:5 0.4 (byte) sin_idx -(byte) sin_idx#10 sin_idx zp[1]:3 3.666666666666667 -(byte) sin_idx#3 sin_idx zp[1]:3 22.0 +(byte) sin_idx#10 sin_idx zp[1]:3 333.6666666666667 +(byte) sin_idx#3 sin_idx zp[1]:3 2002.0 (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return (byte) sprites_init::s -(byte) sprites_init::s#1 reg byte y 16.5 -(byte) sprites_init::s#2 reg byte y 8.8 +(byte) sprites_init::s#1 reg byte y 1501.5 +(byte) sprites_init::s#2 reg byte y 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 reg byte x 22.0 +(byte) sprites_init::s2#0 reg byte x 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 xpos zp[1]:4 7.333333333333333 -(byte) sprites_init::xpos#2 xpos zp[1]:4 8.25 +(byte) sprites_init::xpos#1 xpos zp[1]:4 667.3333333333334 +(byte) sprites_init::xpos#2 xpos zp[1]:4 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index 1a19aec1a..03951d89a 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -121,29 +121,29 @@ .label irq_sprite_ptr = $2d .label irq_cnt = $2e // Keyboard event buffer size. The number of events currently in the event buffer - .label keyboard_events_size = $1f + .label keyboard_events_size = $20 // The rate of moving down the current piece (number of frames between moves if movedown is not forced) - .label current_movedown_slow = $10 - .label current_ypos = $c + .label current_movedown_slow = $11 + .label current_ypos = $d // Position of top left corner of current moving piece on the playfield - .label current_xpos = $18 + .label current_xpos = $19 // The curent piece orientation - each piece have 4 orientations (00/0x10/0x20/0x30). // The orientation chooses one of the 4 sub-graphics of the piece. - .label current_orientation = $15 + .label current_orientation = $16 // Pointer to the current piece in the current orientation. Updated each time current_orientation is updated. - .label current_piece_gfx = $16 + .label current_piece_gfx = $17 // The char of the current piece - .label current_piece_char = $14 + .label current_piece_char = $15 // Current level BCD-format - .label level_bcd = $11 + .label level_bcd = $12 // The current moving piece. Points to the start of the piece definition. - .label current_piece = $12 + .label current_piece = $13 // Is the game over? - .label game_over = $1a + .label game_over = $1b // The index of the next moving piece. (0-6) - .label next_piece_idx = $19 + .label next_piece_idx = $1a // Current level in normal (non-BCD) format - .label level = $f + .label level = $10 // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. .label render_screen_render = 3 // The screen currently to show next to the user. 0x00 for screen 1 / 0x20 for screen 2. @@ -152,7 +152,7 @@ // Counts up to the next movedown of current piece .label current_movedown_counter = 4 // Current number of cleared lines in BCD-format - .label lines_bcd = $d + .label lines_bcd = $e // The current moving piece. Points to the start of the piece definition. .label current_piece_1 = $a // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. @@ -233,9 +233,9 @@ main: { lda #$20 sta.z render_screen_render_1 jsr render_moving - ldx.z play_spawn_current.piece_idx + ldy.z play_spawn_current.piece_idx // render_next() - lda #$20 + ldx #$20 jsr render_next ldy.z play_spawn_current.__7 lda PIECES,y @@ -275,6 +275,7 @@ main: { // keyboard_event_get() jsr keyboard_event_get // key_event = keyboard_event_get() + tax // if(game_over==0) lda.z game_over cmp #0 @@ -308,8 +309,8 @@ main: { sta.z current_piece_char_1 // render_moving() jsr render_moving - lda.z render_screen_render - ldx.z next_piece_idx + ldx.z render_screen_render + ldy.z next_piece_idx // render_next() jsr render_next // render_score() @@ -378,8 +379,7 @@ render_score: { sta.z render_bcd.offset+1 jsr render_bcd // render_bcd( screen, lines_offset, >lines_bcd, 1) - lda.z lines_bcd+1 - tax + ldx.z lines_bcd+1 ldy #1 lda #0 render needed) // play_movement(byte zp($2f) key_event) play_movement: { - .label render = $20 - .label return = $20 + .label render = $21 + .label return = $21 .label key_event = $2f // play_move_down(key_event) lda.z key_event @@ -703,7 +702,7 @@ play_movement: { // play_move_rotate(byte register(A) key_event) play_move_rotate: { // Handle keyboard events - .label orientation = $1b + .label orientation = $c // if(key_event==KEY_Z) cmp #KEY_Z beq __b1 @@ -752,11 +751,12 @@ play_move_rotate: { rts __b1: // current_orientation-0x10 - lax.z current_orientation - axs #$10 + lda.z current_orientation + sec + sbc #$10 // orientation = (current_orientation-0x10)&0x3f - lda #$3f - sax.z orientation + and #$3f + sta.z orientation jmp __b3 } // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries @@ -771,7 +771,7 @@ play_collision: { .label i = $3b .label xp = $3c .label l = $1e - .label i_1 = $21 + .label i_1 = $1f // piece_gfx = current_piece + orientation txa clc @@ -923,19 +923,21 @@ play_move_leftright: { // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { + .label movedown = $c // ++current_movedown_counter; inc.z current_movedown_counter // if(key_event==KEY_SPACE) cmp #KEY_SPACE bne b1 - ldx #1 + lda #1 + sta.z movedown jmp __b1 b1: - ldx #0 + lda #0 + sta.z movedown __b1: // keyboard_event_pressed(KEY_SPACE) - lda #KEY_SPACE - sta.z keyboard_event_pressed.keycode + ldx #KEY_SPACE jsr keyboard_event_pressed // keyboard_event_pressed(KEY_SPACE) // if(keyboard_event_pressed(KEY_SPACE)!=0) @@ -946,17 +948,18 @@ play_move_down: { cmp #current_movedown_fast bcc __b2 // movedown++; - inx + inc.z movedown __b2: // if(current_movedown_counter>=current_movedown_slow) lda.z current_movedown_counter cmp.z current_movedown_slow bcc __b3 // movedown++; - inx + inc.z movedown __b3: // if(movedown!=0) - cpx #0 + lda.z movedown + cmp #0 beq b2 // play_collision(current_xpos,current_ypos+1,current_orientation) ldy.z current_ypos @@ -1021,7 +1024,7 @@ play_spawn_current: { .label __7 = $34 // Spawn a new next piece // Pick a random piece (0-6) - .label piece_idx = $19 + .label piece_idx = $1a // current_piece_idx = next_piece_idx // Move next piece into current ldx.z next_piece_idx @@ -1210,10 +1213,10 @@ play_increase_level: { // Returns the number of lines removed play_remove_lines: { .label c = $3b - .label x = $1d - .label y = $1b - .label removed = $1c - .label full = $1e + .label x = $1e + .label y = $1c + .label removed = $1d + .label full = $1f lda #0 sta.z removed sta.z y @@ -1278,12 +1281,12 @@ play_remove_lines: { } // Lock the current piece onto the playfield play_lock_current: { - .label yp = $c + .label yp = $d .label playfield_line = $39 - .label xp = $1e + .label xp = $1f .label i = $3b - .label l = $21 - .label i_1 = $3c + .label l = $3c + .label i_1 = $1e // yp = current_ypos lda #0 sta.z l @@ -1341,26 +1344,23 @@ play_lock_current: { } // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zp($1e) keycode) +// keyboard_event_pressed(byte register(X) keycode) keyboard_event_pressed: { - .label row_bits = $3c - .label keycode = $1e // keycode>>3 - lda.z keycode + txa lsr lsr lsr - // row_bits = keyboard_scan_values[keycode>>3] tay + // row_bits = keyboard_scan_values[keycode>>3] lda keyboard_scan_values,y - sta.z row_bits + tay // keycode&7 lda #7 - and.z keycode + axs #0 // row_bits & keyboard_matrix_col_bitmask[keycode&7] - tay - lda keyboard_matrix_col_bitmask,y - and.z row_bits + tya + and keyboard_matrix_col_bitmask,x // } rts } @@ -1375,10 +1375,10 @@ keyboard_event_get: { // return keyboard_events[--keyboard_events_size]; dec.z keyboard_events_size ldy.z keyboard_events_size - ldx keyboard_events,y + lda keyboard_events,y rts b1: - ldx #$ff + lda #$ff // } rts } @@ -1388,8 +1388,8 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $3c - .label keycode = $21 - .label row = $20 + .label keycode = $1f + .label row = $1e lda #0 sta.z keycode sta.z row @@ -1414,29 +1414,25 @@ keyboard_event_scan: { cmp.z row bne __b7 // keyboard_event_pressed(KEY_LSHIFT) - lda #KEY_LSHIFT - sta.z keyboard_event_pressed.keycode + ldx #KEY_LSHIFT jsr keyboard_event_pressed // keyboard_event_pressed(KEY_LSHIFT) // if(keyboard_event_pressed(KEY_LSHIFT)!= 0) cmp #0 // keyboard_event_pressed(KEY_RSHIFT) - lda #KEY_RSHIFT - sta.z keyboard_event_pressed.keycode + ldx #KEY_RSHIFT jsr keyboard_event_pressed // keyboard_event_pressed(KEY_RSHIFT) // if(keyboard_event_pressed(KEY_RSHIFT)!= 0) cmp #0 // keyboard_event_pressed(KEY_CTRL) - lda #KEY_CTRL - sta.z keyboard_event_pressed.keycode + ldx #KEY_CTRL jsr keyboard_event_pressed // keyboard_event_pressed(KEY_CTRL) // if(keyboard_event_pressed(KEY_CTRL)!= 0) cmp #0 // keyboard_event_pressed(KEY_COMMODORE) - lda #KEY_COMMODORE - sta.z keyboard_event_pressed.keycode + ldx #KEY_COMMODORE jsr keyboard_event_pressed // keyboard_event_pressed(KEY_COMMODORE) // if(keyboard_event_pressed(KEY_COMMODORE)!= 0) @@ -1546,7 +1542,7 @@ render_show: { play_init: { .label pli = $22 // Initialize the playfield line pointers; - .label idx = $20 + .label idx = $21 lda #0 sta.z idx lda # (const word) render_show::toD0181_$2 Constant right-side identified [86] (byte~) render_show::toD0181_$7 ← (const byte) render_show::toD0181_$6 & (byte) $f Constant right-side identified [88] (byte~) render_show::toD0182_$3 ← > (const word) render_show::toD0182_$2 @@ -8273,14 +8273,14 @@ Constant (const byte) render_show::toD0181_$7 = render_show::toD0181_$6&$f Constant (const byte) render_show::toD0182_$3 = >render_show::toD0182_$2 Constant (const byte) render_show::toD0182_$7 = render_show::toD0182_$6&$f Successful SSA optimization Pass2ConstantIdentification -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Constant right-side identified [84] (byte) render_show::toD0181_return#0 ← (const byte) render_show::toD0181_$3 | (const byte) render_show::toD0181_$7 Constant right-side identified [85] (byte) render_show::toD0182_return#0 ← (const byte) render_show::toD0182_$3 | (const byte) render_show::toD0182_$7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) render_show::toD0181_return#0 = render_show::toD0181_$3|render_show::toD0181_$7 Constant (const byte) render_show::toD0182_return#0 = render_show::toD0182_$3|render_show::toD0182_$7 Successful SSA optimization Pass2ConstantIdentification -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Inlining Noop Cast [194] (byte*) render_next::next_piece_gfx#0 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) keeping *(PIECES + render_next::$6) Inlining Noop Cast [421] (byte*) current_piece_gfx#74 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) keeping *(PIECES + play_spawn_current::$7) Successful SSA optimization Pass2NopCastInlining @@ -8530,12 +8530,12 @@ Consolidated array index constant in *(playfield_lines_idx+PLAYFIELD_LINES) Successful SSA optimization Pass2ConstantAdditionElimination Simplifying constant integer increment ++0 Successful SSA optimization Pass2ConstantSimplification -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Eliminating unused constant (const byte) SIZEOF_POINTER Eliminating unused constant (const byte) SIZEOF_WORD Eliminating unused constant (const byte) SIZEOF_DWORD Successful SSA optimization PassNEliminateUnusedVars -Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify = (byte~) sprites_irq::$0 +Alias candidate removed (volatile)sprites_irq::raster_sprite_gfx_modify = sprites_irq::$0 Added new block during phi lifting keyboard_event_scan::@30(between keyboard_event_scan::@10 and keyboard_event_scan::@8) Added new block during phi lifting keyboard_event_scan::@31(between keyboard_event_scan::@12 and keyboard_event_scan::@11) Added new block during phi lifting keyboard_event_scan::@32(between keyboard_event_scan::@11 and keyboard_event_scan::@12) @@ -10456,563 +10456,563 @@ sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 VARIABLE REGISTER WEIGHTS (byte) current_movedown_counter -(byte) current_movedown_counter#12 0.5333333333333333 -(byte) current_movedown_counter#14 3.081081081081081 -(byte) current_movedown_counter#16 8.769230769230768 +(byte) current_movedown_counter#12 26666.933333333334 +(byte) current_movedown_counter#14 2732.5135135135133 +(byte) current_movedown_counter#16 7777.153846153846 (byte) current_movedown_slow -(byte) current_movedown_slow#1 0.17391304347826086 -(byte) current_movedown_slow#10 4.0 -(byte) current_movedown_slow#14 2.214285714285714 -(byte) current_movedown_slow#21 3.135135135135135 -(byte) current_movedown_slow#23 1.1428571428571428 -(byte) current_movedown_slow#37 6.0 -(byte) current_movedown_slow#65 0.26666666666666666 +(byte) current_movedown_slow#1 4.869565217391305 +(byte) current_movedown_slow#10 2.0000002E7 +(byte) current_movedown_slow#14 41091.392857142855 +(byte) current_movedown_slow#21 5435.243243243243 +(byte) current_movedown_slow#23 442857.7142857142 +(byte) current_movedown_slow#37 300003.0 +(byte) current_movedown_slow#65 733333.4666666666 (byte) current_orientation -(byte) current_orientation#13 3.189189189189189 -(byte) current_orientation#17 5.523809523809523 -(byte) current_orientation#20 0.36734693877551017 -(byte) current_orientation#25 1.3333333333333333 -(byte) current_orientation#37 4.0 -(byte) current_orientation#7 3.0 +(byte) current_orientation#13 8137.972972972973 +(byte) current_orientation#17 1004.952380952381 +(byte) current_orientation#20 16530.79591836735 +(byte) current_orientation#25 51667.33333333333 +(byte) current_orientation#37 200002.0 +(byte) current_orientation#7 150001.5 (byte*) current_piece -(byte*) current_piece#10 3.243243243243243 -(byte*) current_piece#101 2.0 -(byte*) current_piece#15 1.5897435897435892 -(byte*) current_piece#17 12.0 -(byte*) current_piece#28 6.0 -(byte*) current_piece#92 2.0 -(byte*) current_piece#95 4.0 -(byte*) current_piece#96 4.0 -(byte*) current_piece#97 4.0 -(byte*) current_piece#98 4.0 -(byte*) current_piece#99 4.0 +(byte*) current_piece#10 8138.27027027027 +(byte*) current_piece#101 11.0 +(byte*) current_piece#15 7706.51282051282 +(byte*) current_piece#17 1.1400006E7 +(byte*) current_piece#28 300003.0 +(byte*) current_piece#92 100001.0 +(byte*) current_piece#95 200002.0 +(byte*) current_piece#96 200002.0 +(byte*) current_piece#97 200002.0 +(byte*) current_piece#98 200002.0 +(byte*) current_piece#99 2000002.0 (byte) current_piece_char -(byte) current_piece_char#10 183.9818181818182 -(byte) current_piece_char#100 22.0 -(byte) current_piece_char#16 3.4324324324324325 -(byte) current_piece_char#29 6.0 -(byte) current_piece_char#5 0.25 -(byte) current_piece_char#68 48.285714285714285 -(byte) current_piece_char#99 4.0 +(byte) current_piece_char#10 1.8182183847272727E8 +(byte) current_piece_char#100 202.0 +(byte) current_piece_char#16 5437.9729729729725 +(byte) current_piece_char#29 300003.0 +(byte) current_piece_char#5 34375.75 +(byte) current_piece_char#68 47624.42857142857 +(byte) current_piece_char#99 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#111 2.0 -(byte*) current_piece_gfx#112 11.0 -(byte*) current_piece_gfx#116 4.0 -(byte*) current_piece_gfx#123 4.0 -(byte*) current_piece_gfx#13 183.9818181818182 -(byte*) current_piece_gfx#18 6.047619047619047 -(byte*) current_piece_gfx#20 0.37037037037037035 -(byte*) current_piece_gfx#21 1.3333333333333333 -(byte*) current_piece_gfx#35 6.0 -(byte*) current_piece_gfx#64 48.285714285714285 -(byte*) current_piece_gfx#7 4.0 +(byte*) current_piece_gfx#111 11.0 +(byte*) current_piece_gfx#112 101.0 +(byte*) current_piece_gfx#116 200002.0 +(byte*) current_piece_gfx#123 22.0 +(byte*) current_piece_gfx#13 1.8182183847272727E8 +(byte*) current_piece_gfx#18 1009.7619047619048 +(byte*) current_piece_gfx#20 15185.37037037037 +(byte*) current_piece_gfx#21 51667.33333333333 +(byte*) current_piece_gfx#35 300003.0 +(byte*) current_piece_gfx#64 47624.42857142857 +(byte*) current_piece_gfx#7 200002.0 (byte) current_xpos -(byte) current_xpos#100 0.3225806451612903 -(byte) current_xpos#118 1.3333333333333333 -(byte) current_xpos#119 7.333333333333333 -(byte) current_xpos#14 20.38181818181818 -(byte) current_xpos#19 6.047619047619047 -(byte) current_xpos#22 0.7999999999999999 -(byte) current_xpos#26 0.4666666666666666 -(byte) current_xpos#43 6.0 -(byte) current_xpos#59 5.428571428571429 -(byte) current_xpos#6 4.0 -(byte) current_xpos#8 4.0 +(byte) current_xpos#100 67742.74193548388 +(byte) current_xpos#118 7.333333333333333 +(byte) current_xpos#119 67.33333333333333 +(byte) current_xpos#14 1.8187293036363635E7 +(byte) current_xpos#19 1009.7619047619048 +(byte) current_xpos#22 36400.4 +(byte) current_xpos#26 20333.566666666666 +(byte) current_xpos#43 300003.0 +(byte) current_xpos#59 4767.285714285714 +(byte) current_xpos#6 200002.0 +(byte) current_xpos#8 200002.0 (byte) current_ypos -(byte) current_ypos#11 3.297297297297297 -(byte) current_ypos#13 15.0 -(byte) current_ypos#19 1.7051282051282046 -(byte) current_ypos#3 4.0 -(byte) current_ypos#38 6.0 -(byte) current_ypos#6 0.3333333333333333 -(byte) current_ypos#97 1.0 -(byte) current_ypos#98 4.4 +(byte) current_ypos#11 35165.32432432432 +(byte) current_ypos#13 1113.0 +(byte) current_ypos#19 6425.74358974359 +(byte) current_ypos#3 200002.0 +(byte) current_ypos#38 300003.0 +(byte) current_ypos#6 70000.83333333334 +(byte) current_ypos#97 5.5 +(byte) current_ypos#98 40.4 (byte) game_over -(byte) game_over#10 4.804347826086958 -(byte) game_over#15 3.189189189189189 -(byte) game_over#27 6.0 -(byte) game_over#52 0.34782608695652173 -(byte) game_over#65 0.42857142857142855 +(byte) game_over#10 6567.760869565218 +(byte) game_over#15 5705.54054054054 +(byte) game_over#27 300003.0 +(byte) game_over#52 47827.13043478261 +(byte) game_over#65 78572.35714285714 (byte) irq_cnt loadstore 0.48000000000000004 (byte) irq_raster_next loadstore 0.44444444444444453 (byte) irq_sprite_ptr loadstore 0.45161290322580644 (byte) irq_sprite_ypos loadstore 0.48275862068965525 (byte()) keyboard_event_get() (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 4.0 -(byte) keyboard_event_get::return#2 34.33333333333333 -(byte) keyboard_event_get::return#3 202.0 +(byte) keyboard_event_get::return#1 20002.0 +(byte) keyboard_event_get::return#2 3667.333333333333 +(byte) keyboard_event_get::return#3 2002.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 4.0 -(byte~) keyboard_event_pressed::$1 4.0 +(byte~) keyboard_event_pressed::$0 2000002.0 +(byte~) keyboard_event_pressed::$1 2000002.0 (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#5 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#5 666667.3333333334 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 4.0 -(byte) keyboard_event_pressed::return#1 4.0 -(byte) keyboard_event_pressed::return#10 4.0 -(byte) keyboard_event_pressed::return#11 1.714285714285714 -(byte) keyboard_event_pressed::return#12 4.0 -(byte) keyboard_event_pressed::return#2 4.0 +(byte) keyboard_event_pressed::return#0 20002.0 +(byte) keyboard_event_pressed::return#1 20002.0 +(byte) keyboard_event_pressed::return#10 20002.0 +(byte) keyboard_event_pressed::return#11 162858.0 +(byte) keyboard_event_pressed::return#12 200002.0 +(byte) keyboard_event_pressed::return#2 20002.0 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 2.0 +(byte) keyboard_event_pressed::row_bits#0 1000001.0 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 4.0 -(byte~) keyboard_event_scan::$15 20002.0 -(byte~) keyboard_event_scan::$16 20002.0 -(byte~) keyboard_event_scan::$23 20002.0 -(byte~) keyboard_event_scan::$3 4.0 -(byte~) keyboard_event_scan::$6 4.0 -(byte~) keyboard_event_scan::$9 4.0 +(byte~) keyboard_event_scan::$0 20002.0 +(byte~) keyboard_event_scan::$15 2.00000002E8 +(byte~) keyboard_event_scan::$16 2.00000002E8 +(byte~) keyboard_event_scan::$23 2.00000002E8 +(byte~) keyboard_event_scan::$3 20002.0 +(byte~) keyboard_event_scan::$6 20002.0 +(byte~) keyboard_event_scan::$9 20002.0 (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 15001.5 -(byte) keyboard_event_scan::col#2 2857.4285714285716 +(byte) keyboard_event_scan::col#1 1.500000015E8 +(byte) keyboard_event_scan::col#2 2.857142885714286E7 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 20002.0 +(byte) keyboard_event_scan::event_type#0 2.00000002E8 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 2002.0 -(byte) keyboard_event_scan::keycode#10 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 500.5 -(byte) keyboard_event_scan::keycode#13 1001.0 -(byte) keyboard_event_scan::keycode#14 5250.75 +(byte) keyboard_event_scan::keycode#1 2.0000002E7 +(byte) keyboard_event_scan::keycode#10 3.153846192307692E7 +(byte) keyboard_event_scan::keycode#11 5000000.5 +(byte) keyboard_event_scan::keycode#13 1.0000001E7 +(byte) keyboard_event_scan::keycode#14 5.250000075E7 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 1501.5 -(byte) keyboard_event_scan::row#2 600.24 +(byte) keyboard_event_scan::row#1 1.50000015E7 +(byte) keyboard_event_scan::row#2 6000000.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 1.2777778055555556E7 (byte) keyboard_events_size -(byte) keyboard_events_size#1 20002.0 -(byte) keyboard_events_size#10 8100.9000000000015 -(byte) keyboard_events_size#13 97.06451612903226 -(byte) keyboard_events_size#16 4.461538461538461 -(byte) keyboard_events_size#19 18.999999999999996 -(byte) keyboard_events_size#2 20002.0 -(byte) keyboard_events_size#29 10201.2 -(byte) keyboard_events_size#30 429.2857142857143 -(byte) keyboard_events_size#4 3.0 +(byte) keyboard_events_size#1 2.00000002E8 +(byte) keyboard_events_size#10 8.100000089999999E7 +(byte) keyboard_events_size#13 968709.870967742 +(byte) keyboard_events_size#16 811.6923076923076 +(byte) keyboard_events_size#19 1850.5 +(byte) keyboard_events_size#2 2.00000002E8 +(byte) keyboard_events_size#29 1.020000012E8 +(byte) keyboard_events_size#30 4287143.428571429 +(byte) keyboard_events_size#4 15001.5 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 334.33333333333337 -(byte) keyboard_matrix_read::return#2 2002.0 +(byte) keyboard_matrix_read::return#0 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 1003.0 +(byte) keyboard_matrix_read::rowid#0 1.10000002E8 (byte) keyboard_modifiers (byte) level -(byte) level#10 1.909090909090909 -(byte) level#17 3.135135135135135 -(byte) level#19 1.1428571428571428 -(byte) level#21 0.4444444444444444 -(byte) level#33 6.0 +(byte) level#10 185168.31818181818 +(byte) level#17 5435.243243243243 +(byte) level#19 442857.7142857142 +(byte) level#21 1722222.4444444445 +(byte) level#33 300003.0 (byte) level_bcd -(byte) level_bcd#11 2.0 -(byte) level_bcd#17 1.9999999999999998 -(byte) level_bcd#19 1.1428571428571428 -(byte) level_bcd#21 2.6666666666666665 -(byte) level_bcd#31 6.0 -(byte) level_bcd#62 0.6000000000000001 -(byte) level_bcd#8 4.0 +(byte) level_bcd#11 200018.1475409836 +(byte) level_bcd#17 3425.508474576271 +(byte) level_bcd#19 442857.7142857142 +(byte) level_bcd#21 1.3333334666666666E7 +(byte) level_bcd#31 300003.0 +(byte) level_bcd#62 2100000.3 +(byte) level_bcd#8 2.0000002E7 (word) lines_bcd -(word) lines_bcd#15 2.0338983050847457 -(word) lines_bcd#17 1.1428571428571428 -(word) lines_bcd#19 2.4400000000000004 -(word) lines_bcd#26 6.0 -(word) lines_bcd#29 1.0 +(word) lines_bcd#15 3442.4745762711864 +(word) lines_bcd#17 442857.7142857142 +(word) lines_bcd#19 64022.14 +(word) lines_bcd#26 300003.0 +(word) lines_bcd#29 500000.5 (void()) main() (byte) main::key_event -(byte) main::key_event#0 101.0 +(byte) main::key_event#0 1001.0 (byte) main::render -(byte) main::render#1 202.0 +(byte) main::render#1 2002.0 (byte) next_piece_idx -(byte) next_piece_idx#10 2.608695652173914 -(byte) next_piece_idx#12 3.4 -(byte) next_piece_idx#16 3.4324324324324325 -(byte) next_piece_idx#17 6.0 -(byte) next_piece_idx#30 6.0 -(byte) next_piece_idx#76 4.0 -(byte) next_piece_idx#77 22.0 +(byte) next_piece_idx#10 6546.0 +(byte) next_piece_idx#12 422.79999999999995 +(byte) next_piece_idx#16 5437.9729729729725 +(byte) next_piece_idx#17 1100013.0 +(byte) next_piece_idx#30 300003.0 +(byte) next_piece_idx#76 22.0 +(byte) next_piece_idx#77 202.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$14 2002.0 -(byte~) play_collision::$5 20002.0 +(byte~) play_collision::$14 2.0000000002E10 +(byte~) play_collision::$5 2.00000000002E11 (byte) play_collision::c -(byte) play_collision::c#1 10001.0 -(byte) play_collision::c#2 2222.4444444444443 +(byte) play_collision::c#1 1.00000000001E11 +(byte) play_collision::c#2 2.2222222222444443E10 (byte) play_collision::i -(byte) play_collision::i#1 1615.6153846153845 -(byte) play_collision::i#10 2002.0 -(byte) play_collision::i#12 20002.0 -(byte) play_collision::i#2 15502.0 -(byte) play_collision::i#3 500.5 +(byte) play_collision::i#1 1.6153846154076923E10 +(byte) play_collision::i#10 2.0000000002E10 +(byte) play_collision::i#12 2.00000000002E11 +(byte) play_collision::i#2 1.55000000002E11 +(byte) play_collision::i#3 5.0000000005E9 (byte) play_collision::l -(byte) play_collision::l#1 1001.0 -(byte) play_collision::l#6 117.76470588235294 +(byte) play_collision::l#1 1.0000000001E10 +(byte) play_collision::l#6 1.1764705883529413E9 (byte) play_collision::orientation -(byte) play_collision::orientation#0 2.0 -(byte) play_collision::orientation#1 2.0 -(byte) play_collision::orientation#2 2.0 -(byte) play_collision::orientation#3 2.0 -(byte) play_collision::orientation#5 10.0 +(byte) play_collision::orientation#0 100001.0 +(byte) play_collision::orientation#1 100001.0 +(byte) play_collision::orientation#2 100001.0 +(byte) play_collision::orientation#3 100001.0 +(byte) play_collision::orientation#5 1.0400005E7 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 476.3333333333333 +(byte*) play_collision::piece_gfx#0 4.762380952476191E9 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 785.8571428571429 +(byte*) play_collision::playfield_line#0 7.857142857285714E9 (byte) play_collision::return -(byte) play_collision::return#0 4.0 -(byte) play_collision::return#1 4.0 -(byte) play_collision::return#10 4.0 -(byte) play_collision::return#13 4.0 -(byte) play_collision::return#14 4.0 -(byte) play_collision::return#15 1.4285714285714284 +(byte) play_collision::return#0 200002.0 +(byte) play_collision::return#1 200002.0 +(byte) play_collision::return#10 2000002.0 +(byte) play_collision::return#13 200002.0 +(byte) play_collision::return#14 200002.0 +(byte) play_collision::return#15 200000.7142857143 (byte) play_collision::xp -(byte) play_collision::xp#1 5000.5 -(byte) play_collision::xp#2 6375.75 -(byte) play_collision::xp#8 2002.0 +(byte) play_collision::xp#1 5.00000000005E10 +(byte) play_collision::xp#2 6.375000000075E10 +(byte) play_collision::xp#8 2.0000000002E10 (byte) play_collision::xpos -(byte) play_collision::xpos#0 1.3333333333333333 -(byte) play_collision::xpos#1 1.0 -(byte) play_collision::xpos#2 1.0 -(byte) play_collision::xpos#3 1.0 -(byte) play_collision::xpos#4 1.3333333333333333 -(byte) play_collision::xpos#6 45.95454545454545 +(byte) play_collision::xpos#0 66667.33333333333 +(byte) play_collision::xpos#1 50000.5 +(byte) play_collision::xpos#2 50000.5 +(byte) play_collision::xpos#3 50000.5 +(byte) play_collision::xpos#4 666667.3333333334 +(byte) play_collision::xpos#6 4.546090911818181E8 (byte) play_collision::yp -(byte) play_collision::yp#0 6.0 -(byte) play_collision::yp#1 500.5 -(byte) play_collision::yp#2 812.875 +(byte) play_collision::yp#0 5700003.0 +(byte) play_collision::yp#1 5.0000000005E9 +(byte) play_collision::yp#2 8.1256250003125E9 (byte) play_collision::ypos -(byte) play_collision::ypos#0 1.0 -(byte) play_collision::ypos#1 1.3333333333333333 -(byte) play_collision::ypos#2 1.3333333333333333 -(byte) play_collision::ypos#3 1.3333333333333333 -(byte) play_collision::ypos#4 2.0 +(byte) play_collision::ypos#0 50000.5 +(byte) play_collision::ypos#1 66667.33333333333 +(byte) play_collision::ypos#2 66667.33333333333 +(byte) play_collision::ypos#3 66667.33333333333 +(byte) play_collision::ypos#4 1000001.0 (void()) play_increase_level() -(byte~) play_increase_level::$1 4.0 -(byte~) play_increase_level::$5 4004.0 +(byte~) play_increase_level::$1 2.0000002E7 +(byte~) play_increase_level::$5 4.0000000004E10 (byte) play_increase_level::b -(byte) play_increase_level::b#1 1501.5 -(byte) play_increase_level::b#2 1001.0 +(byte) play_increase_level::b#1 1.50000000015E10 +(byte) play_increase_level::b#2 1.0000000001E10 (void()) play_init() -(byte~) play_init::$2 22.0 -(byte~) play_init::$3 33.0 +(byte~) play_init::$2 2002.0 +(byte~) play_init::$3 3003.0 (byte) play_init::b -(byte) play_init::b#1 16.5 -(byte) play_init::b#2 11.0 +(byte) play_init::b#1 1501.5 +(byte) play_init::b#2 1001.0 (byte) play_init::idx -(byte) play_init::idx#1 7.333333333333333 -(byte) play_init::idx#2 6.6000000000000005 +(byte) play_init::idx#1 667.3333333333334 +(byte) play_init::idx#2 600.5999999999999 (byte) play_init::j -(byte) play_init::j#1 16.5 -(byte) play_init::j#2 7.333333333333333 +(byte) play_init::j#1 1501.5 +(byte) play_init::j#2 667.3333333333334 (byte*) play_init::pli -(byte*) play_init::pli#1 5.5 -(byte*) play_init::pli#2 8.25 +(byte*) play_init::pli#1 500.5 +(byte*) play_init::pli#2 750.75 (void()) play_lock_current() -(byte~) play_lock_current::$4 2002.0 +(byte~) play_lock_current::$4 2.000000002E9 (byte) play_lock_current::c -(byte) play_lock_current::c#1 10001.0 -(byte) play_lock_current::c#2 4000.4 +(byte) play_lock_current::c#1 1.0000000001E10 +(byte) play_lock_current::c#2 4.0000000004E9 (byte) play_lock_current::i -(byte) play_lock_current::i#1 2333.6666666666665 -(byte) play_lock_current::i#2 15502.0 -(byte) play_lock_current::i#3 500.5 -(byte) play_lock_current::i#7 2002.0 -(byte) play_lock_current::i#9 20002.0 +(byte) play_lock_current::i#1 2.333333333666667E9 +(byte) play_lock_current::i#2 1.5500000002E10 +(byte) play_lock_current::i#3 5.000000005E8 +(byte) play_lock_current::i#7 2.000000002E9 +(byte) play_lock_current::i#9 2.0000000002E10 (byte) play_lock_current::l -(byte) play_lock_current::l#1 1001.0 -(byte) play_lock_current::l#6 154.0 +(byte) play_lock_current::l#1 1.000000001E9 +(byte) play_lock_current::l#6 1.53846154E8 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 1100.2 +(byte*) play_lock_current::playfield_line#0 1.1000000002E9 (byte) play_lock_current::xp -(byte) play_lock_current::xp#0 2002.0 -(byte) play_lock_current::xp#1 5000.5 -(byte) play_lock_current::xp#2 7751.0 +(byte) play_lock_current::xp#0 2.000000002E9 +(byte) play_lock_current::xp#1 5.0000000005E9 +(byte) play_lock_current::xp#2 7.750000001E9 (byte) play_lock_current::yp -(byte) play_lock_current::yp#0 4.0 -(byte) play_lock_current::yp#1 500.5 -(byte) play_lock_current::yp#2 250.41666666666669 +(byte) play_lock_current::yp#0 2000002.0 +(byte) play_lock_current::yp#1 5.000000005E8 +(byte) play_lock_current::yp#2 2.500833336666667E8 (byte()) play_move_down((byte) play_move_down::key_event) -(byte~) play_move_down::$12 4.0 -(byte~) play_move_down::$2 4.0 +(byte~) play_move_down::$12 200002.0 +(byte~) play_move_down::$2 200002.0 (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 2.0 +(byte) play_move_down::key_event#0 55001.0 (byte) play_move_down::movedown -(byte) play_move_down::movedown#10 1.0 -(byte) play_move_down::movedown#2 4.0 -(byte) play_move_down::movedown#3 4.0 -(byte) play_move_down::movedown#6 6.0 -(byte) play_move_down::movedown#7 5.0 +(byte) play_move_down::movedown#10 50000.5 +(byte) play_move_down::movedown#2 200002.0 +(byte) play_move_down::movedown#3 200002.0 +(byte) play_move_down::movedown#6 300003.0 +(byte) play_move_down::movedown#7 250002.5 (byte) play_move_down::removed -(byte) play_move_down::removed#0 4.0 +(byte) play_move_down::removed#0 200002.0 (byte) play_move_down::return -(byte) play_move_down::return#0 4.0 -(byte) play_move_down::return#3 0.6666666666666666 +(byte) play_move_down::return#0 20002.0 +(byte) play_move_down::return#3 3333.6666666666665 (byte()) play_move_leftright((byte) play_move_leftright::key_event) -(byte~) play_move_leftright::$4 4.0 -(byte~) play_move_leftright::$8 4.0 +(byte~) play_move_leftright::$4 200002.0 +(byte~) play_move_leftright::$8 200002.0 (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 3.0 +(byte) play_move_leftright::key_event#0 105001.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 4.0 -(byte) play_move_leftright::return#2 0.6666666666666666 +(byte) play_move_leftright::return#0 20002.0 +(byte) play_move_leftright::return#2 3333.6666666666665 (byte()) play_move_rotate((byte) play_move_rotate::key_event) -(byte~) play_move_rotate::$2 4.0 -(byte~) play_move_rotate::$5 4.0 -(byte~) play_move_rotate::$7 4.0 +(byte~) play_move_rotate::$2 200002.0 +(byte~) play_move_rotate::$5 200002.0 +(byte~) play_move_rotate::$7 200002.0 (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 3.0 +(byte) play_move_rotate::key_event#0 105001.5 (byte) play_move_rotate::orientation -(byte) play_move_rotate::orientation#1 4.0 -(byte) play_move_rotate::orientation#2 4.0 -(byte) play_move_rotate::orientation#3 0.8888888888888888 +(byte) play_move_rotate::orientation#1 200002.0 +(byte) play_move_rotate::orientation#2 200002.0 +(byte) play_move_rotate::orientation#3 44444.88888888889 (byte) play_move_rotate::return -(byte) play_move_rotate::return#0 4.0 -(byte) play_move_rotate::return#2 0.6666666666666666 +(byte) play_move_rotate::return#0 20002.0 +(byte) play_move_rotate::return#2 3333.6666666666665 (byte()) play_movement((byte) play_movement::key_event) -(byte~) play_movement::$3 4.0 -(byte~) play_movement::$4 4.0 +(byte~) play_movement::$3 20002.0 +(byte~) play_movement::$4 20002.0 (byte) play_movement::key_event -(byte) play_movement::key_event#0 9.727272727272727 +(byte) play_movement::key_event#0 2818.5454545454545 (byte) play_movement::render -(byte) play_movement::render#1 1.0 -(byte) play_movement::render#2 0.8 +(byte) play_movement::render#1 5000.5 +(byte) play_movement::render#2 4000.4 (byte) play_movement::return -(byte) play_movement::return#0 4.0 -(byte) play_movement::return#2 34.99999999999999 -(byte) play_movement::return#3 202.0 +(byte) play_movement::return#0 20002.0 +(byte) play_movement::return#2 7001.0 +(byte) play_movement::return#3 2002.0 (byte()) play_remove_lines() (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 6000.6 +(byte) play_remove_lines::c#0 6.0000000006E9 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 4200.6 -(byte) play_remove_lines::full#4 4000.4 +(byte) play_remove_lines::full#2 4.2000000006E9 +(byte) play_remove_lines::full#4 4.0000000004E9 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 1500.2142857142858 -(byte) play_remove_lines::r#2 15502.0 -(byte) play_remove_lines::r#3 2002.0 +(byte) play_remove_lines::r#1 1.5000000002142856E9 +(byte) play_remove_lines::r#2 1.5500000002E10 +(byte) play_remove_lines::r#3 2.000000002E9 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 2002.0 -(byte) play_remove_lines::removed#11 231.0 -(byte) play_remove_lines::removed#8 333.8888888888889 +(byte) play_remove_lines::removed#1 2.000000002E9 +(byte) play_remove_lines::removed#11 2.30769231E8 +(byte) play_remove_lines::removed#8 3.333444448888889E8 (byte) play_remove_lines::return -(byte) play_remove_lines::return#0 4.0 +(byte) play_remove_lines::return#0 200002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 5501.0 -(byte) play_remove_lines::w#11 1334.6666666666667 -(byte) play_remove_lines::w#12 2002.0 -(byte) play_remove_lines::w#2 1001.0 -(byte) play_remove_lines::w#3 2002.0 -(byte) play_remove_lines::w#4 4429.142857142857 -(byte) play_remove_lines::w#6 1668.3333333333335 +(byte) play_remove_lines::w#1 5.500000001E9 +(byte) play_remove_lines::w#11 1.3333333346666667E9 +(byte) play_remove_lines::w#12 2.000000002E9 +(byte) play_remove_lines::w#2 1.000000001E9 +(byte) play_remove_lines::w#3 2.000000002E9 +(byte) play_remove_lines::w#4 4.428571429142857E9 +(byte) play_remove_lines::w#6 1.6666666683333335E9 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 15001.5 -(byte) play_remove_lines::x#2 2500.25 +(byte) play_remove_lines::x#1 1.50000000015E10 +(byte) play_remove_lines::x#2 2.50000000025E9 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 1501.5 -(byte) play_remove_lines::y#8 133.46666666666667 +(byte) play_remove_lines::y#1 1.5000000015E9 +(byte) play_remove_lines::y#8 1.3333333346666667E8 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 4.0 -(byte~) play_spawn_current::$7 0.06451612903225806 +(byte~) play_spawn_current::$1 2000002.0 +(byte~) play_spawn_current::$7 32258.09677419355 (byte) play_spawn_current::current_piece_idx -(byte) play_spawn_current::current_piece_idx#0 2.5 +(byte) play_spawn_current::current_piece_idx#0 1250001.25 (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 2002.0 -(byte) play_spawn_current::piece_idx#2 100.5 +(byte) play_spawn_current::piece_idx#1 2.000000002E9 +(byte) play_spawn_current::piece_idx#2 1.000050018E8 (byte) play_spawn_current::sid_rnd1_return -(byte) play_spawn_current::sid_rnd1_return#0 2002.0 +(byte) play_spawn_current::sid_rnd1_return#0 2.000000002E9 (void()) play_update_score((byte) play_update_score::removed) -(byte~) play_update_score::$2 4.0 -(byte~) play_update_score::$4 4.0 -(byte~) play_update_score::$9 4.0 +(byte~) play_update_score::$2 2000002.0 +(byte~) play_update_score::$4 2000002.0 +(byte~) play_update_score::$9 2000002.0 (dword) play_update_score::add_bcd -(dword) play_update_score::add_bcd#0 1.3333333333333333 +(dword) play_update_score::add_bcd#0 666667.3333333334 (byte) play_update_score::lines_after -(byte) play_update_score::lines_after#0 4.0 +(byte) play_update_score::lines_after#0 2000002.0 (byte) play_update_score::lines_before -(byte) play_update_score::lines_before#0 0.4444444444444444 +(byte) play_update_score::lines_before#0 222222.44444444444 (byte) play_update_score::removed -(byte) play_update_score::removed#0 1.1428571428571428 +(byte) play_update_score::removed#0 442857.7142857142 (void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low) -(byte~) render_bcd::$3 4.0 -(byte~) render_bcd::$4 4.0 -(byte~) render_bcd::$5 4.0 -(byte~) render_bcd::$6 4.0 +(byte~) render_bcd::$3 20002.0 +(byte~) render_bcd::$4 20002.0 +(byte~) render_bcd::$5 20002.0 +(byte~) render_bcd::$6 20002.0 (byte) render_bcd::bcd -(byte) render_bcd::bcd#0 4.0 -(byte) render_bcd::bcd#1 4.0 -(byte) render_bcd::bcd#2 4.0 -(byte) render_bcd::bcd#3 2.0 -(byte) render_bcd::bcd#4 2.0 -(byte) render_bcd::bcd#5 4.0 -(byte) render_bcd::bcd#6 2.0 +(byte) render_bcd::bcd#0 2002.0 +(byte) render_bcd::bcd#1 2002.0 +(byte) render_bcd::bcd#2 2002.0 +(byte) render_bcd::bcd#3 1001.0 +(byte) render_bcd::bcd#4 1001.0 +(byte) render_bcd::bcd#5 2002.0 +(byte) render_bcd::bcd#6 3251.0 (word) render_bcd::offset -(word) render_bcd::offset#6 2.0 +(word) render_bcd::offset#6 10001.0 (byte) render_bcd::only_low -(byte) render_bcd::only_low#6 1.0 +(byte) render_bcd::only_low#6 5000.5 (byte*) render_bcd::screen -(byte*) render_bcd::screen#0 2.0 -(byte*) render_bcd::screen#1 2.0 -(byte*) render_bcd::screen#2 2.0 -(byte*) render_bcd::screen#3 4.0 -(byte*) render_bcd::screen#4 4.0 -(byte*) render_bcd::screen#5 2.0 -(byte*) render_bcd::screen#6 14.0 +(byte*) render_bcd::screen#0 1001.0 +(byte*) render_bcd::screen#1 1001.0 +(byte*) render_bcd::screen#2 1001.0 +(byte*) render_bcd::screen#3 2002.0 +(byte*) render_bcd::screen#4 2002.0 +(byte*) render_bcd::screen#5 1001.0 +(byte*) render_bcd::screen#6 16007.0 (byte*) render_bcd::screen_pos -(byte*) render_bcd::screen_pos#0 1.6 -(byte*) render_bcd::screen_pos#2 4.0 -(byte*) render_bcd::screen_pos#3 2.0 +(byte*) render_bcd::screen_pos#0 8000.8 +(byte*) render_bcd::screen_pos#2 20002.0 +(byte*) render_bcd::screen_pos#3 10001.0 (void()) render_init() -(byte~) render_init::$5 16.5 +(byte~) render_init::$5 1501.5 (byte) render_init::i -(byte) render_init::i#1 16.5 -(byte) render_init::i#2 5.5 +(byte) render_init::i#1 1501.5 +(byte) render_init::i#2 500.5 (byte*) render_init::li_1 -(byte*) render_init::li_1#1 5.5 -(byte*) render_init::li_1#2 8.25 +(byte*) render_init::li_1#1 500.5 +(byte*) render_init::li_1#2 750.75 (byte*) render_init::li_2 -(byte*) render_init::li_2#1 7.333333333333333 -(byte*) render_init::li_2#2 6.6000000000000005 +(byte*) render_init::li_2#1 667.3333333333334 +(byte*) render_init::li_2#2 600.5999999999999 (byte*) render_init::vicSelectGfxBank1_gfx (byte*) render_init::vicSelectGfxBank1_toDd001_gfx (byte) render_init::vicSelectGfxBank1_toDd001_return (void()) render_moving() -(byte~) render_moving::$1 202.0 -(byte~) render_moving::$6 202.0 +(byte~) render_moving::$1 200002.0 +(byte~) render_moving::$6 200002.0 (byte) render_moving::c -(byte) render_moving::c#1 1501.5 -(byte) render_moving::c#2 333.6666666666667 +(byte) render_moving::c#1 1500001.5 +(byte) render_moving::c#2 333333.6666666667 (byte) render_moving::current_cell -(byte) render_moving::current_cell#0 1001.0 +(byte) render_moving::current_cell#0 1000001.0 (byte) render_moving::i -(byte) render_moving::i#1 202.0 -(byte) render_moving::i#2 500.5 -(byte) render_moving::i#3 50.5 -(byte) render_moving::i#4 1552.0 -(byte) render_moving::i#8 300.75 +(byte) render_moving::i#1 200002.0 +(byte) render_moving::i#2 500000.5 +(byte) render_moving::i#3 50000.5 +(byte) render_moving::i#4 1550002.0 +(byte) render_moving::i#8 300000.75 (byte) render_moving::l -(byte) render_moving::l#1 151.5 -(byte) render_moving::l#4 11.882352941176471 +(byte) render_moving::l#1 150001.5 +(byte) render_moving::l#4 11764.823529411764 (byte*) render_moving::screen_line -(byte*) render_moving::screen_line#0 110.19999999999999 +(byte*) render_moving::screen_line#0 110000.20000000001 (byte) render_moving::xpos -(byte) render_moving::xpos#0 202.0 -(byte) render_moving::xpos#1 667.3333333333334 -(byte) render_moving::xpos#2 620.8 +(byte) render_moving::xpos#0 200002.0 +(byte) render_moving::xpos#1 666667.3333333334 +(byte) render_moving::xpos#2 620000.8 (byte) render_moving::ypos -(byte) render_moving::ypos#0 4.0 -(byte) render_moving::ypos#1 67.33333333333333 -(byte) render_moving::ypos#2 25.375 +(byte) render_moving::ypos#0 2002.0 +(byte) render_moving::ypos#1 66667.33333333333 +(byte) render_moving::ypos#2 25062.8125 (void()) render_next() -(byte~) render_next::$6 1.0 +(byte~) render_next::$6 500.5 (byte) render_next::c -(byte) render_next::c#1 1501.5 -(byte) render_next::c#2 286.0 +(byte) render_next::c#1 1500001.5 +(byte) render_next::c#2 285714.5714285714 (byte) render_next::cell -(byte) render_next::cell#0 1001.0 +(byte) render_next::cell#0 1000001.0 (byte) render_next::l -(byte) render_next::l#1 151.5 -(byte) render_next::l#7 18.363636363636363 +(byte) render_next::l#1 150001.5 +(byte) render_next::l#7 18182.0 (byte) render_next::next_piece_char -(byte) render_next::next_piece_char#0 66.86666666666667 +(byte) render_next::next_piece_char#0 66733.46666666667 (byte*) render_next::next_piece_gfx -(byte*) render_next::next_piece_gfx#1 210.29999999999998 -(byte*) render_next::next_piece_gfx#2 1552.0 -(byte*) render_next::next_piece_gfx#3 204.0 -(byte*) render_next::next_piece_gfx#9 4.0 +(byte*) render_next::next_piece_gfx#1 210000.30000000002 +(byte*) render_next::next_piece_gfx#2 1550002.0 +(byte*) render_next::next_piece_gfx#3 201003.0 +(byte*) render_next::next_piece_gfx#9 2002.0 (byte*) render_next::screen_next_area -(byte*) render_next::screen_next_area#10 204.0 -(byte*) render_next::screen_next_area#11 0.5 -(byte*) render_next::screen_next_area#3 701.0 -(byte*) render_next::screen_next_area#4 67.33333333333333 -(byte*) render_next::screen_next_area#5 684.1666666666667 +(byte*) render_next::screen_next_area#10 201003.0 +(byte*) render_next::screen_next_area#11 250.25 +(byte*) render_next::screen_next_area#3 700001.0 +(byte*) render_next::screen_next_area#4 66667.33333333333 +(byte*) render_next::screen_next_area#5 683334.1666666667 (void()) render_playfield() -(byte~) render_playfield::$0 202.0 -(byte~) render_playfield::$3 202.0 +(byte~) render_playfield::$0 200002.0 +(byte~) render_playfield::$3 200002.0 (byte) render_playfield::c -(byte) render_playfield::c#1 1501.5 -(byte) render_playfield::c#2 500.5 +(byte) render_playfield::c#1 1500001.5 +(byte) render_playfield::c#2 500000.5 (byte) render_playfield::i -(byte) render_playfield::i#1 420.59999999999997 -(byte) render_playfield::i#2 1034.6666666666667 -(byte) render_playfield::i#3 50.5 +(byte) render_playfield::i#1 420000.60000000003 +(byte) render_playfield::i#2 1033334.6666666667 +(byte) render_playfield::i#3 50000.5 (byte) render_playfield::l -(byte) render_playfield::l#1 151.5 -(byte) render_playfield::l#2 30.299999999999997 +(byte) render_playfield::l#1 150001.5 +(byte) render_playfield::l#2 30000.300000000003 (byte*) render_playfield::screen_line -(byte*) render_playfield::screen_line#0 202.0 -(byte*) render_playfield::screen_line#1 500.5 -(byte*) render_playfield::screen_line#2 1552.0 +(byte*) render_playfield::screen_line#0 200002.0 +(byte*) render_playfield::screen_line#1 500000.5 +(byte*) render_playfield::screen_line#2 1550002.0 (void()) render_score() (byte*) render_score::screen -(byte*) render_score::screen#3 0.75 +(byte*) render_score::screen#3 375.375 (void()) render_screen_original((byte*) render_screen_original::screen) (byte*) render_screen_original::cols -(byte*) render_screen_original::cols#1 101.0 -(byte*) render_screen_original::cols#2 75.75 -(byte*) render_screen_original::cols#3 42.599999999999994 -(byte*) render_screen_original::cols#4 78.5 -(byte*) render_screen_original::cols#5 80.8 -(byte*) render_screen_original::cols#6 101.0 -(byte*) render_screen_original::cols#7 22.0 +(byte*) render_screen_original::cols#1 100001.0 +(byte*) render_screen_original::cols#2 75000.75 +(byte*) render_screen_original::cols#3 42000.600000000006 +(byte*) render_screen_original::cols#4 77501.0 +(byte*) render_screen_original::cols#5 80000.8 +(byte*) render_screen_original::cols#6 100001.0 +(byte*) render_screen_original::cols#7 20002.0 (byte*) render_screen_original::ocols -(byte*) render_screen_original::ocols#1 17.75 -(byte*) render_screen_original::ocols#2 67.33333333333333 -(byte*) render_screen_original::ocols#4 14.0 +(byte*) render_screen_original::ocols#1 17500.25 +(byte*) render_screen_original::ocols#2 66667.33333333333 +(byte*) render_screen_original::ocols#4 13750.25 (byte*) render_screen_original::oscr -(byte*) render_screen_original::oscr#1 14.2 -(byte*) render_screen_original::oscr#2 134.66666666666666 -(byte*) render_screen_original::oscr#4 14.0 +(byte*) render_screen_original::oscr#1 14000.2 +(byte*) render_screen_original::oscr#2 133334.66666666666 +(byte*) render_screen_original::oscr#4 13750.25 (byte*) render_screen_original::screen -(byte*) render_screen_original::screen#10 30.42857142857143 -(byte*) render_screen_original::screen#2 60.599999999999994 -(byte*) render_screen_original::screen#3 43.285714285714285 -(byte*) render_screen_original::screen#5 157.0 -(byte*) render_screen_original::screen#6 202.0 -(byte*) render_screen_original::screen#7 202.0 -(byte*) render_screen_original::screen#8 24.0 -(byte*) render_screen_original::screen#9 2.0 +(byte*) render_screen_original::screen#10 30000.428571428572 +(byte*) render_screen_original::screen#2 60000.600000000006 +(byte*) render_screen_original::screen#3 42857.57142857143 +(byte*) render_screen_original::screen#5 155002.0 +(byte*) render_screen_original::screen#6 200002.0 +(byte*) render_screen_original::screen#7 200002.0 +(byte*) render_screen_original::screen#8 21003.0 +(byte*) render_screen_original::screen#9 1001.0 (byte) render_screen_original::x -(byte) render_screen_original::x#1 202.0 -(byte) render_screen_original::x#2 202.0 -(byte) render_screen_original::x#3 151.5 -(byte) render_screen_original::x#4 40.4 -(byte) render_screen_original::x#5 43.285714285714285 -(byte) render_screen_original::x#6 60.599999999999994 +(byte) render_screen_original::x#1 200002.0 +(byte) render_screen_original::x#2 200002.0 +(byte) render_screen_original::x#3 150001.5 +(byte) render_screen_original::x#4 40000.4 +(byte) render_screen_original::x#5 42857.57142857143 +(byte) render_screen_original::x#6 60000.600000000006 (byte) render_screen_original::y -(byte) render_screen_original::y#1 16.5 -(byte) render_screen_original::y#6 0.9166666666666666 +(byte) render_screen_original::y#1 15001.5 +(byte) render_screen_original::y#6 833.4166666666666 (byte) render_screen_render -(byte) render_screen_render#11 3.25 -(byte) render_screen_render#15 13.0 -(byte) render_screen_render#18 4.8076923076923075 -(byte) render_screen_render#22 8.615384615384615 -(byte) render_screen_render#33 5.333333333333333 -(byte) render_screen_render#63 22.0 -(byte) render_screen_render#64 5.5 -(byte) render_screen_render#65 11.0 +(byte) render_screen_render#11 275.5 +(byte) render_screen_render#15 1102.0 +(byte) render_screen_render#18 84.76923076923077 +(byte) render_screen_render#22 7700.153846153846 +(byte) render_screen_render#33 4766.761904761905 +(byte) render_screen_render#63 202.0 +(byte) render_screen_render#64 50.5 +(byte) render_screen_render#65 101.0 (byte) render_screen_show -(byte) render_screen_show#13 4.333333333333333 -(byte) render_screen_show#16 5.474999999999999 -(byte) render_screen_showing loadstore 0.6000000000000001 +(byte) render_screen_show#13 367.33333333333337 +(byte) render_screen_show#16 577.65 +(byte) render_screen_showing loadstore 1000.5000000000001 (void()) render_screen_swap() (void()) render_show() (byte) render_show::d018val -(byte) render_show::d018val#3 2.0 +(byte) render_show::d018val#3 10001.0 (byte*) render_show::toD0181_gfx (byte) render_show::toD0181_return (byte*) render_show::toD0181_screen (byte*) render_show::toD0182_gfx (byte) render_show::toD0182_return (byte*) render_show::toD0182_screen -(dword) score_bcd loadstore 0.043795620437956206 +(dword) score_bcd loadstore 14598.569343065694 (void()) sid_rnd_init() (void()) sprites_init() (byte) sprites_init::s -(byte) sprites_init::s#1 16.5 -(byte) sprites_init::s#2 8.8 +(byte) sprites_init::s#1 1501.5 +(byte) sprites_init::s#2 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 22.0 +(byte) sprites_init::s2#0 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 7.333333333333333 -(byte) sprites_init::xpos#2 8.25 +(byte) sprites_init::xpos#1 667.3333333333334 +(byte) sprites_init::xpos#2 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 4.0 (byte) sprites_irq::ptr @@ -15592,13 +15592,13 @@ PLAYFIELD_COLORS_ORIGINAL: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ current_ypos#13 current_ypos#97 current_ypos#98 ] Removing always clobbered register reg byte a as potential for zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] Removing always clobbered register reg byte a as potential for zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] @@ -15608,9 +15608,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:63 [ curren Removing always clobbered register reg byte a as potential for zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] Removing always clobbered register reg byte a as potential for zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] Removing always clobbered register reg byte a as potential for zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ) always clobbers reg byte a +Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte a as potential for zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] @@ -15618,23 +15618,21 @@ Removing always clobbered register reg byte a as potential for zp[1]:88 [ keyboa Removing always clobbered register reg byte a as potential for zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Removing always clobbered register reg byte a as potential for zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] Removing always clobbered register reg byte a as potential for zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ) always clobbers reg byte a +Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a +Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ render_bcd::only_low#6 ] -Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y +Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte y as potential for zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] Removing always clobbered register reg byte y as potential for zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] @@ -15649,88 +15647,86 @@ Removing always clobbered register reg byte y as potential for zp[1]:58 [ level# Removing always clobbered register reg byte y as potential for zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte y as potential for zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte y as potential for zp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ) always clobbers reg byte a +Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y +Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] -Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a +Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:131 [ render_next::next_piece_char#0 ] -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:172 [ play_spawn_current::$7 ] Removing always clobbered register reg byte y as potential for zp[1]:131 [ render_next::next_piece_char#0 ] Removing always clobbered register reg byte a as potential for zp[1]:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:17 [ render_next::l#7 render_next::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ render_next::c#2 render_next::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ render_next::c#2 render_next::c#1 ] -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] Removing always clobbered register reg byte a as potential for zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] -Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a +Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ render_moving::c#2 render_moving::c#1 ] -Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ render_screen_render#22 render_screen_render#63 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:34 [ render_screen_render#22 render_screen_render#63 ] Removing always clobbered register reg byte y as potential for zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] -Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:123 [ play_movement::key_event#0 ] -Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a +Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:145 [ play_movement::render#2 ] -Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ) always clobbers reg byte a +Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Removing always clobbered register reg byte a as potential for zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] Removing always clobbered register reg byte a as potential for zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] Removing always clobbered register reg byte a as potential for zp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a +Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] Removing always clobbered register reg byte a as potential for zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] -Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] Removing always clobbered register reg byte a as potential for zp[1]:51 [ play_collision::c#2 play_collision::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:158 [ play_collision::i#1 ] -Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a +Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:171 [ play_spawn_current::current_piece_idx#0 ] -Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a +Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:170 [ play_update_score::removed#0 ] -Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:177 [ play_update_score::lines_before#0 ] -Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] ) always clobbers reg byte a reg byte x +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] Removing always clobbered register reg byte x as potential for zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] @@ -15739,224 +15735,220 @@ Removing always clobbered register reg byte x as potential for zp[1]:70 [ game_o Removing always clobbered register reg byte x as potential for zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] Removing always clobbered register reg byte x as potential for zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] Removing always clobbered register reg byte x as potential for zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a +Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ play_increase_level::b#2 play_increase_level::b#1 ] -Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] Removing always clobbered register reg byte a as potential for zp[1]:74 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:77 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] -Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a +Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Removing always clobbered register reg byte a as potential for zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Removing always clobbered register reg byte a as potential for zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] -Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] Removing always clobbered register reg byte a as potential for zp[1]:82 [ play_lock_current::c#2 play_lock_current::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:191 [ play_lock_current::i#1 ] -Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] Removing always clobbered register reg byte a as potential for zp[1]:83 [ keyboard_event_pressed::keycode#5 ] -Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] -Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y +Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a +Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:198 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y +Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a +Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a +Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Removing always clobbered register reg byte y as potential for zp[1]:198 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte y as potential for zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte y as potential for zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a +Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] { } ) always clobbers reg byte a +Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a +Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte y +Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:90 [ play_init::j#2 play_init::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] -Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] ) always clobbers reg byte a -Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] ) always clobbers reg byte a +Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a +Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] { } ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] { } ) always clobbers reg byte a +Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:94 [ play_init::b#2 play_init::b#1 ] -Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a +Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] { } ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:95 [ sprites_init::s#2 sprites_init::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a +Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:97 [ render_init::i#2 render_init::i#1 ] -Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a +Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:215 [ render_init::$5 ] -Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y +Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a +Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a +Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:111 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] Removing always clobbered register reg byte y as potential for zp[1]:111 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] -Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ) always clobbers reg byte a -Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } ) always clobbers reg byte a reg byte y +Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } ) always clobbers reg byte a reg byte y +Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a +Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:219 [ sprites_irq::ptr#0 ] -Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ) always clobbers reg byte a -Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ) always clobbers reg byte a -Statement [48] if((byte) game_over#10==(byte) 0) goto main::@4 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a +Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a +Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a +Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [574] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } ) always clobbers reg byte a +Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] { } ) always clobbers reg byte a +Statement [48] if((byte) game_over#10==(byte) 0) goto main::@4 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:122 [ main::key_event#0 ] -Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ) always clobbers reg byte a -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [73] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a -Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a -Statement [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a -Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ) always clobbers reg byte a -Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a -Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ) always clobbers reg byte a -Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [168] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ) always clobbers reg byte a -Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a -Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [301] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a -Statement [304] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a -Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [322] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [323] (byte) current_movedown_slow#10 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y +Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [73] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] { } ) always clobbers reg byte a +Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y +Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y +Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y +Statement [168] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a +Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [301] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } } ) always clobbers reg byte a +Statement [304] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } } ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [322] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [323] (byte) current_movedown_slow#10 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:123 [ play_movement::key_event#0 ] -Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a -Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a -Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [396] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x +Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a +Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a +Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y +Statement [396] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] { } ) always clobbers reg byte a +Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] Removing always clobbered register reg byte x as potential for zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] Removing always clobbered register reg byte x as potential for zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] @@ -15964,260 +15956,256 @@ Removing always clobbered register reg byte x as potential for zp[1]:55 [ curren Removing always clobbered register reg byte x as potential for zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Removing always clobbered register reg byte x as potential for zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Removing always clobbered register reg byte x as potential for zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [400] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a -Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a -Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a -Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y -Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a -Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] ) always clobbers reg byte a -Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] ) always clobbers reg byte a -Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a +Statement [400] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] { } ) always clobbers reg byte a +Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a +Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] { } ) always clobbers reg byte a +Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a +Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a +Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a reg byte y +Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] { } ) always clobbers reg byte a reg byte y +Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a +Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte y +Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a +Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a +Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] { } ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] { } ) always clobbers reg byte a +Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a +Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] { } ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a -Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a -Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ) always clobbers reg byte a -Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ) always clobbers reg byte a -Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] ) always clobbers reg byte a -Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ) always clobbers reg byte a -Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ) always clobbers reg byte a -Statement [48] if((byte) game_over#10==(byte) 0) goto main::@4 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ) always clobbers reg byte a -Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ) always clobbers reg byte a -Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] ) always clobbers reg byte a -Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] ) always clobbers reg byte a -Statement [73] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte a -Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ) always clobbers reg byte a -Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ) always clobbers reg byte a -Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ) always clobbers reg byte a -Statement [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 ] ) always clobbers reg byte a -Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ) always clobbers reg byte a -Statement [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 ] ) always clobbers reg byte a -Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ) always clobbers reg byte a -Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ) always clobbers reg byte a -Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte a -Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ) always clobbers reg byte a -Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ) always clobbers reg byte y -Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] ) always clobbers reg byte a -Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] ) always clobbers reg byte y -Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ) always clobbers reg byte a -Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ) always clobbers reg byte a -Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ) always clobbers reg byte a reg byte y -Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ) always clobbers reg byte a -Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ) always clobbers reg byte a reg byte y -Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ) always clobbers reg byte a -Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ) always clobbers reg byte a -Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ) always clobbers reg byte a -Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ) always clobbers reg byte a -Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ) always clobbers reg byte a -Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ) always clobbers reg byte a -Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ) always clobbers reg byte a -Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ) always clobbers reg byte a -Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ) always clobbers reg byte a -Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [168] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ) always clobbers reg byte a -Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ) always clobbers reg byte a -Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ) always clobbers reg byte a -Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ) always clobbers reg byte a -Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ) always clobbers reg byte a -Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ) always clobbers reg byte a -Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ) always clobbers reg byte a -Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ) always clobbers reg byte a -Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ) always clobbers reg byte a -Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a -Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ) always clobbers reg byte a -Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ) always clobbers reg byte a -Statement [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast) goto play_move_down::@2 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ) always clobbers reg byte a -Statement [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ) always clobbers reg byte a -Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a -Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ) always clobbers reg byte a -Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [288] (byte) current_piece_char#5 ← *((const byte*) PIECES_CHARS + (byte) play_spawn_current::current_piece_idx#0) [ play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [289] (byte) current_xpos#100 ← *((const byte*) PIECES_START_X + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ) always clobbers reg byte a -Statement [290] (byte) current_ypos#6 ← *((const byte*) PIECES_START_Y + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ) always clobbers reg byte a -Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ) always clobbers reg byte a -Statement [301] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ) always clobbers reg byte a -Statement [304] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [306] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::$2 ] ) always clobbers reg byte a -Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ) always clobbers reg byte a -Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ) always clobbers reg byte a -Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ) always clobbers reg byte a -Statement [314] (byte~) play_update_score::$4 ← < (word) lines_bcd#29 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 play_update_score::$4 ] ) always clobbers reg byte a -Statement [322] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 ] ) always clobbers reg byte a -Statement [323] (byte) current_movedown_slow#10 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] ) always clobbers reg byte a reg byte y -Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ) always clobbers reg byte a -Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] ) always clobbers reg byte a reg byte x -Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ) always clobbers reg byte a -Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ) always clobbers reg byte a -Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a -Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] ) always clobbers reg byte a -Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ) always clobbers reg byte a -Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a -Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] ) always clobbers reg byte a -Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] ) always clobbers reg byte y -Statement [396] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a reg byte y -Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a reg byte x -Statement [400] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ) always clobbers reg byte a -Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ) always clobbers reg byte a -Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ) always clobbers reg byte a -Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a reg byte y -Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ) always clobbers reg byte a reg byte y -Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ) always clobbers reg byte a -Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte y -Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a reg byte y -Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] ) always clobbers reg byte a -Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ) always clobbers reg byte a -Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a -Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a -Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a -Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] ) always clobbers reg byte a -Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] ) always clobbers reg byte a -Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] ) always clobbers reg byte a -Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] ) always clobbers reg byte a -Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a +Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a +Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a +Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a +Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a +Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } ) always clobbers reg byte a reg byte y +Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } ) always clobbers reg byte a reg byte y +Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } ) always clobbers reg byte a reg byte y +Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a +Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a +Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a +Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a +Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [574] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [1] (byte) render_screen_showing ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (dword) score_bcd ← (dword) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [5] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [6] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS+(byte) $15 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [8] (byte) irq_sprite_ptr ← (const byte) toSpritePtr1_return#0+(byte) 3 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [9] (byte) irq_cnt ← (byte) 0 [ score_bcd ] ( [ score_bcd ] { } ) always clobbers reg byte a +Statement [31] (byte*) current_piece_gfx#111 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#97 current_ypos#6 current_xpos#118 current_xpos#100 current_piece_gfx#111 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } ) always clobbers reg byte a +Statement [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [37] (byte*) current_piece_gfx#123 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] ( main:11 [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 current_piece#101 current_piece_gfx#123 current_movedown_slow#1 game_over#52 ] { } ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 ] { } ) always clobbers reg byte a +Statement [48] if((byte) game_over#10==(byte) 0) goto main::@4 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#16 main::key_event#0 ] { } ) always clobbers reg byte a +Statement [60] (byte*) current_piece_gfx#112 ← (byte*) current_piece_gfx#18 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] ( main:11 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 current_ypos#98 render_screen_render#64 current_xpos#119 current_piece_gfx#112 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20 [ render_screen_show#16 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#16 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20 [ render_screen_show#13 render_screen_render#11 ] ( main:11::render_screen_swap:69 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_show#13 render_screen_render#11 ] { } ) always clobbers reg byte a +Statement [73] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 [ render_screen_render#18 lines_bcd#15 level_bcd#17 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] { } ) always clobbers reg byte a +Statement [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#1 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen#2 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#3 render_bcd::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#4 render_bcd::screen#4 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } ) always clobbers reg byte a +Statement [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3 [ render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] ( main:11::render_score:67 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen#5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 [ render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::only_low#6 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [98] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4 [ render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 render_bcd::$5 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6 [ render_bcd::bcd#6 render_bcd::screen_pos#0 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::bcd#6 render_bcd::screen_pos#0 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y +Statement [103] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f [ render_bcd::screen_pos#3 render_bcd::$3 ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_bcd::screen_pos#3 render_bcd::$3 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte a +Statement [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4 [ ] ( main:11::render_score:67::render_bcd:78 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#0 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#0 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:81 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#1 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#1 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:84 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#2 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#2 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:87 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#3 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#3 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:90 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 render_score::screen#3 ] { { render_bcd::screen#4 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#4 = render_bcd::bcd#6 } } main:11::render_score:67::render_bcd:93 [ score_bcd render_screen_show#16 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 level#17 render_screen_render#18 lines_bcd#15 level_bcd#17 ] { { render_bcd::screen#5 = render_bcd::screen#6 render_score::screen#3 } { render_bcd::bcd#5 = render_bcd::bcd#6 level_bcd#17 } } ) always clobbers reg byte y +Statement [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 [ next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 next_piece_idx#12 render_next::screen_next_area#11 render_next::$6 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) [ render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::screen_next_area#11 render_next::next_piece_char#0 render_next::next_piece_gfx#9 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [116] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#2 render_next::screen_next_area#5 render_next::c#2 render_next::cell#0 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [119] *((byte*) render_next::screen_next_area#5) ← (byte) 0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [123] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#4 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a +Statement [127] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0 [ render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] ( main:11::render_next:35 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { next_piece_idx#12 = next_piece_idx#76 } } main:11::render_next:65 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_next::next_piece_char#0 render_next::l#7 render_next::next_piece_gfx#1 render_next::screen_next_area#5 render_next::c#2 ] { { render_screen_render#15 = render_screen_render#65 } { next_piece_idx#12 = next_piece_idx#77 } } ) always clobbers reg byte a reg byte y +Statement [132] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [138] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$1 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [139] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::$6 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [140] (byte*) render_moving::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_moving::$6) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::i#3 render_moving::l#4 render_moving::screen_line#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4) [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::screen_line#0 render_moving::i#4 render_moving::xpos#2 render_moving::c#2 render_moving::current_cell#0 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68 [ render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] ( main:11::render_moving:33 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#97 } { current_xpos#118 = current_xpos#59 } { current_piece_gfx#111 = current_piece_gfx#64 } { current_piece_char#68 = current_piece_char#99 } } main:11::render_moving:62 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#33 current_xpos#59 current_piece_gfx#64 current_piece_char#68 render_moving::ypos#2 render_moving::l#4 render_moving::i#2 render_moving::screen_line#0 render_moving::xpos#2 render_moving::c#2 ] { { current_ypos#13 = current_ypos#98 } { render_screen_render#33 = render_screen_render#64 } { current_xpos#119 = current_xpos#59 } { current_piece_gfx#112 = current_piece_gfx#64 } { current_piece_char#100 = current_piece_char#68 } } ) always clobbers reg byte a +Statement [152] (byte~) render_playfield::$0 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [153] (byte~) render_playfield::$3 ← (byte~) render_playfield::$0 << (byte) 1 [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::$3 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [154] (byte*) render_playfield::screen_line#0 ← *((const byte**) screen_lines_1 + (byte~) render_playfield::$3) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#3 render_playfield::screen_line#0 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a +Statement [156] *((byte*) render_playfield::screen_line#2) ← *((const byte*) playfield + (byte) render_playfield::i#2) [ render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] ( main:11::render_playfield:28 [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 current_movedown_slow#1 game_over#52 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { } main:11::render_playfield:56 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#21 current_piece#15 current_piece_char#16 current_orientation#17 current_piece_gfx#18 current_xpos#19 current_ypos#19 game_over#15 next_piece_idx#16 keyboard_events_size#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 render_screen_render#22 render_playfield::l#2 render_playfield::i#2 render_playfield::screen_line#2 render_playfield::c#2 ] { { render_screen_render#22 = render_screen_render#63 } } ) always clobbers reg byte a reg byte y +Statement [168] if((byte) game_over#15==(byte) 0) goto play_movement::@1 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_orientation#20 current_piece_gfx#20 current_xpos#22 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a +Statement [175] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_movement::render#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [180] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 [ score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] ( main:11::play_movement:51 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece#15 current_piece_char#16 current_ypos#19 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::return#0 current_orientation#25 current_piece_gfx#21 current_xpos#26 ] { { play_movement::key_event#0 = main::key_event#0 } { play_movement::return#2 = play_movement::return#3 } } ) always clobbers reg byte a +Statement [185] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [191] (byte*) current_piece#98 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#98 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [197] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7 [ current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_xpos#26 current_orientation#7 current_piece_gfx#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 [ current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] ( main:11::play_movement:51::play_move_rotate:177 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::$7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } } ) always clobbers reg byte a +Statement [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 [ play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::yp#0 play_collision::xpos#6 play_collision::piece_gfx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [203] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::$14 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [204] (byte*) play_collision::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_collision::$14) [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [208] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [210] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 play_collision::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [213] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 [ play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] ( main:11::play_movement:51::play_move_rotate:177::play_collision:192 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::render#2 current_piece#15 current_ypos#19 current_orientation#20 current_piece_gfx#20 current_xpos#26 play_move_rotate::orientation#3 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_rotate::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_rotate::return#0 = play_move_rotate::return#2 } { current_piece#17 = current_piece#98 } { play_collision::orientation#3 = play_collision::orientation#5 play_move_rotate::orientation#3 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#3 } { play_collision::xpos#3 = play_collision::xpos#6 current_xpos#26 } { play_collision::return#14 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:230 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } main:11::play_movement:51::play_move_leftright:172::play_collision:241 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_collision:265 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } main:11::play_spawn_current:24::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26::play_collision:294 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278::play_collision:294 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_collision::xpos#6 play_collision::piece_gfx#0 play_collision::yp#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::xp#2 play_collision::c#2 play_collision::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [229] (byte*) current_piece#97 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#97 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#97 } { play_collision::orientation#2 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#2 } { play_collision::xpos#2 = play_collision::xpos#6 } { play_collision::return#13 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [240] (byte*) current_piece#96 ← (byte*) current_piece#15 [ current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] ( main:11::play_movement:51::play_move_leftright:172 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 score_bcd current_movedown_slow#21 current_piece_char#16 game_over#15 next_piece_idx#16 current_movedown_counter#14 lines_bcd#15 level#17 level_bcd#17 play_movement::key_event#0 play_movement::render#1 current_piece_gfx#20 current_piece#15 current_ypos#19 current_orientation#20 current_xpos#22 current_piece#96 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_leftright::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_leftright::return#0 = play_move_leftright::return#2 } { current_piece#17 = current_piece#96 } { play_collision::orientation#1 = play_collision::orientation#5 current_orientation#20 } { current_ypos#19 = play_collision::yp#0 play_collision::ypos#1 } { play_collision::xpos#1 = play_collision::xpos#6 } { play_collision::return#1 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [254] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast) goto play_move_down::@2 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [257] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#7 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [264] (byte*) current_piece#95 ← (byte*) current_piece#10 [ score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece#95 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { current_piece#17 = current_piece#95 } { play_collision::orientation#0 = play_collision::orientation#5 current_orientation#13 } { play_collision::yp#0 = play_collision::ypos#0 } { play_collision::xpos#0 = play_collision::xpos#6 current_xpos#14 } { play_collision::return#0 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [279] (byte*) current_piece#92 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [280] (byte*) current_piece_gfx#116 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] ( main:11::play_movement:51::play_move_down:165 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_ypos#6 current_xpos#100 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 current_piece#92 current_piece_gfx#116 lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [287] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1 [ play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 game_over#65 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [288] (byte) current_piece_char#5 ← *((const byte*) PIECES_CHARS + (byte) play_spawn_current::current_piece_idx#0) [ play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [289] (byte) current_xpos#100 ← *((const byte*) PIECES_START_X + (byte) play_spawn_current::current_piece_idx#0) [ current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 play_spawn_current::current_piece_idx#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [290] (byte) current_ypos#6 ← *((const byte*) PIECES_START_Y + (byte) play_spawn_current::current_piece_idx#0) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#65 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [293] (byte*) current_piece#99 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 current_piece#99 play_collision::ypos#4 play_collision::xpos#4 game_over#65 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } { current_piece#17 = current_piece#99 } { current_ypos#6 = play_collision::yp#0 play_collision::ypos#4 } { play_collision::xpos#4 = play_collision::xpos#6 current_xpos#100 } { play_collision::return#10 = play_collision::return#15 } } ) always clobbers reg byte a +Statement [301] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 play_spawn_current::piece_idx#2 game_over#52 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } } ) always clobbers reg byte a +Statement [304] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7 [ current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] ( main:11::play_spawn_current:24 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { } main:11::play_spawn_current:26 [ score_bcd current_movedown_slow#1 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { { next_piece_idx#17 = play_spawn_current::piece_idx#2 } { game_over#52 = game_over#65 } } main:11::play_movement:51::play_move_down:165::play_spawn_current:278 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd lines_bcd#17 level#19 current_movedown_slow#23 level_bcd#19 current_ypos#6 current_xpos#100 play_spawn_current::$7 current_piece_char#5 game_over#52 play_spawn_current::piece_idx#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { next_piece_idx#10 = next_piece_idx#17 } { game_over#10 = game_over#65 } } ) always clobbers reg byte a +Statement [308] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2 [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::$9 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [309] (dword) play_update_score::add_bcd#0 ← *((const dword*) score_add_bcd + (byte~) play_update_score::$9) [ score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 lines_bcd#19 level#10 level_bcd#11 play_update_score::removed#0 play_update_score::lines_before#0 play_update_score::add_bcd#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [311] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 play_update_score::add_bcd#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [312] (dword) score_bcd ← (dword) score_bcd + (dword) play_update_score::add_bcd#0 [ score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd current_movedown_slow#14 level#10 level_bcd#11 play_update_score::lines_before#0 lines_bcd#29 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [322] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1 [ level_bcd#11 level#21 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [323] (byte) current_movedown_slow#10 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) [ level_bcd#11 level#21 current_movedown_slow#10 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level_bcd#11 level#21 current_movedown_slow#10 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte y +Statement [326] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f [ level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#21 play_increase_level::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [328] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6 [ level#21 current_movedown_slow#65 level_bcd#8 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#8 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a reg byte x +Statement [332] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2 [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 play_increase_level::$5 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [333] *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) ← *((const dword*) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword*) SCORE_BASE_BCD + (byte~) play_increase_level::$5) [ level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] ( main:11::play_movement:51::play_move_down:165::play_update_score:276::play_increase_level:318 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 game_over#10 next_piece_idx#10 score_bcd lines_bcd#29 level#21 current_movedown_slow#65 level_bcd#62 play_increase_level::b#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_update_score::removed#0 = play_move_down::removed#0 } } ) always clobbers reg byte a +Statement [351] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS [ play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::y#8 play_remove_lines::removed#11 play_remove_lines::r#1 play_remove_lines::w#2 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a +Statement [359] *((const byte*) playfield + (byte) play_remove_lines::w#6) ← (byte) 0 [ play_remove_lines::removed#8 play_remove_lines::w#6 ] ( main:11::play_movement:51::play_move_down:165::play_remove_lines:272 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 play_remove_lines::removed#8 play_remove_lines::w#6 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { play_remove_lines::return#0 = play_remove_lines::removed#8 } } ) always clobbers reg byte a +Statement [363] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::$4 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [364] (byte*) play_lock_current::playfield_line#0 ← *((const byte**) playfield_lines + (byte~) play_lock_current::$4) [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [368] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [369] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10 [ current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:11::play_movement:51::play_move_down:165::play_lock_current:270 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_piece_char#10 current_piece_gfx#13 current_xpos#14 play_lock_current::yp#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::xp#2 play_lock_current::c#2 play_lock_current::i#1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } } ) always clobbers reg byte a +Statement [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:11::play_movement:51::play_move_down:165::keyboard_event_pressed:250 [ render_screen_show#16 render_screen_render#18 keyboard_events_size#16 play_movement::key_event#0 score_bcd current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 lines_bcd#19 level#10 level_bcd#11 current_movedown_counter#12 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] { { play_movement::key_event#0 = main::key_event#0 play_move_down::key_event#0 } { play_movement::return#2 = play_movement::return#3 } { play_move_down::return#0 = play_move_down::return#3 } { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#12 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:402 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#0 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:408 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#1 = keyboard_event_pressed::return#11 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:414 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#11 = keyboard_event_pressed::return#2 } } main:11::keyboard_event_scan:43::keyboard_event_pressed:420 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_pressed::return#11 ] { { keyboard_event_pressed::return#10 = keyboard_event_pressed::return#11 } } ) always clobbers reg byte a +Statement [385] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return [ keyboard_events_size#13 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte a +Statement [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) [ keyboard_events_size#4 keyboard_event_get::return#1 ] ( main:11::keyboard_event_get:45 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#4 keyboard_event_get::return#1 ] { { keyboard_event_get::return#2 = keyboard_event_get::return#3 } } ) always clobbers reg byte y +Statement [396] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_event_scan::row_scan#0 ] { } ) always clobbers reg byte a reg byte y +Statement [397] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_events_size#30 keyboard_event_scan::keycode#1 ] { } ) always clobbers reg byte a reg byte x +Statement [400] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 [ keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_events_size#13 keyboard_event_scan::row#1 keyboard_event_scan::keycode#13 ] { } ) always clobbers reg byte a +Statement [427] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$15 ] { } ) always clobbers reg byte a +Statement [428] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$16 ] { } ) always clobbers reg byte a +Statement [430] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a +Statement [431] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] { } ) always clobbers reg byte a +Statement [433] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte a reg byte y +Statement [439] *((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#29 ] { } ) always clobbers reg byte a reg byte y +Statement [440] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$23 ] { } ) always clobbers reg byte a +Statement [441] *((const byte*) keyboard_events + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:11::keyboard_event_scan:43 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] { } ) always clobbers reg byte y +Statement [443] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [444] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:11::keyboard_event_scan:43::keyboard_matrix_read:393 [ score_bcd render_screen_show#16 render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 current_movedown_counter#16 lines_bcd#19 level#10 level_bcd#11 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#30 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#0 = keyboard_event_scan::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [446] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [450] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [451] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2 + (byte) level#10) [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a reg byte y +Statement [452] (byte) render_screen_showing ← (byte) render_screen_show#16 [ render_screen_show#16 level#10 ] ( main:11::render_show:41 [ score_bcd render_screen_render#18 current_movedown_slow#14 current_piece#10 current_piece_char#10 current_orientation#13 current_piece_gfx#13 current_xpos#14 current_ypos#11 game_over#10 next_piece_idx#10 keyboard_events_size#19 current_movedown_counter#16 lines_bcd#19 level_bcd#11 render_screen_show#16 level#10 ] { } ) always clobbers reg byte a +Statement [457] (byte~) play_init::$2 ← (byte) play_init::j#2 << (byte) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$2 ] { } ) always clobbers reg byte a +Statement [458] *((const byte**) playfield_lines + (byte~) play_init::$2) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [459] *((const byte*) playfield_lines_idx + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#2 play_init::idx#2 ] { } ) always clobbers reg byte a +Statement [460] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::idx#2 play_init::pli#1 ] { } ) always clobbers reg byte a +Statement [461] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:11::play_init:22 [ score_bcd play_init::j#2 play_init::pli#1 play_init::idx#1 ] { } ) always clobbers reg byte a +Statement [464] *((const byte*) playfield_lines_idx+(const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES [ ] ( main:11::play_init:22 [ score_bcd ] { } ) always clobbers reg byte a +Statement [465] (byte) current_movedown_slow#1 ← *((const byte*) MOVEDOWN_SLOW_SPEEDS) [ current_movedown_slow#1 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 ] { } ) always clobbers reg byte a +Statement [467] (byte~) play_init::$3 ← (byte) play_init::b#2 << (byte) 2 [ current_movedown_slow#1 play_init::b#2 play_init::$3 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 play_init::$3 ] { } ) always clobbers reg byte a +Statement [468] *((const dword*) score_add_bcd + (byte~) play_init::$3) ← *((const dword*) SCORE_BASE_BCD + (byte~) play_init::$3) [ current_movedown_slow#1 play_init::b#2 ] ( main:11::play_init:22 [ score_bcd current_movedown_slow#1 play_init::b#2 ] { } ) always clobbers reg byte a +Statement [473] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] ) always clobbers reg byte a -Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] ) always clobbers reg byte a -Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] ) always clobbers reg byte a -Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a -Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ) always clobbers reg byte a -Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ) always clobbers reg byte a -Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ) always clobbers reg byte a -Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ) always clobbers reg byte a -Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ) always clobbers reg byte a reg byte y -Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ) always clobbers reg byte a reg byte y -Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ) always clobbers reg byte a reg byte y -Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ) always clobbers reg byte a reg byte y -Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] ) always clobbers reg byte a -Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ) always clobbers reg byte a -Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ) always clobbers reg byte a -Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] ) always clobbers reg byte a -Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [574] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ) always clobbers reg byte a -Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] ) always clobbers reg byte a reg byte x -Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a reg byte x -Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a -Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] ) always clobbers reg byte a +Statement [475] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [476] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [477] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [478] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [479] *((const byte*) RASTER) ← (const byte) IRQ_RASTER_FIRST [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [480] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [481] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:20 [ score_bcd ] { } ) always clobbers reg byte a +Statement [484] *((const byte*) SPRITES_ENABLE) ← (byte) $f [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [485] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [486] *((const byte*) SPRITES_EXPAND_Y) ← *((const byte*) SPRITES_MC) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [487] *((const byte*) SPRITES_EXPAND_X) ← *((const byte*) SPRITES_EXPAND_Y) [ ] ( main:11::sprites_init:18 [ score_bcd ] { } ) always clobbers reg byte a +Statement [489] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] { } ) always clobbers reg byte a +Statement [490] *((const byte*) SPRITES_XPOS + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [491] *((const byte*) SPRITES_COLS + (byte) sprites_init::s#2) ← (const byte) BLACK [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#2 ] { } ) always clobbers reg byte a +Statement [492] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:18 [ score_bcd sprites_init::s#2 sprites_init::xpos#1 ] { } ) always clobbers reg byte a +Statement [497] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [499] *((const byte*) CIA2_PORT_A) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [500] *((const byte*) D011) ← (const byte) VIC_ECM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [501] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [502] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [503] *((const byte*) BGCOL2) ← *((const byte*) PIECES_COLORS_1) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [504] *((const byte*) BGCOL3) ← *((const byte*) PIECES_COLORS_2) [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [505] *((const byte*) BGCOL4) ← (const byte) GREY [ ] ( main:11::render_init:16 [ score_bcd ] { } ) always clobbers reg byte a +Statement [510] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte) 1 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a +Statement [511] *((const byte**) screen_lines_1 + (byte~) render_init::$5) ← (byte*) render_init::li_1#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 render_init::$5 ] { } ) always clobbers reg byte a +Statement [512] *((const byte**) screen_lines_2 + (byte~) render_init::$5) ← (byte*) render_init::li_2#2 [ render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#2 render_init::li_2#2 ] { } ) always clobbers reg byte a +Statement [513] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28 [ render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_2#2 render_init::li_1#1 ] { } ) always clobbers reg byte a +Statement [514] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28 [ render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] ( main:11::render_init:16 [ score_bcd render_init::i#2 render_init::li_1#1 render_init::li_2#1 ] { } ) always clobbers reg byte a +Statement [521] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::screen#5 render_screen_original::cols#4 render_screen_original::x#4 ] { } ) always clobbers reg byte a reg byte y +Statement [523] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK [ render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::oscr#4 render_screen_original::ocols#4 render_screen_original::y#6 render_screen_original::cols#4 render_screen_original::x#4 render_screen_original::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [528] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) [ render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#2 render_screen_original::screen#6 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 ] { } ) always clobbers reg byte a reg byte y +Statement [531] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#2 render_screen_original::cols#5 render_screen_original::x#5 render_screen_original::screen#3 ] { } ) always clobbers reg byte a reg byte y +Statement [537] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE [ render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::screen#7 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [539] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK [ render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] ( main:11::render_init:16::render_screen_original:506 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } main:11::render_init:16::render_screen_original:508 [ score_bcd render_screen_original::y#6 render_screen_original::screen#10 render_screen_original::oscr#1 render_screen_original::ocols#1 render_screen_original::cols#6 render_screen_original::x#6 ] { } ) always clobbers reg byte a reg byte y +Statement [546] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [547] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:11::sid_rnd_init:14 [ score_bcd ] { } ) always clobbers reg byte a +Statement [557] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify) goto sprites_irq::@8 [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] ( [ render_screen_showing irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::raster_sprite_gfx_modify ] { } ) always clobbers reg byte a +Statement [559] if((byte) render_screen_showing==(byte) 0) goto sprites_irq::@1 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt sprites_irq::ptr#0 ] { } ) always clobbers reg byte a +Statement [567] if((byte) irq_cnt==(byte) 9) goto sprites_irq::@3 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr irq_cnt ] { } ) always clobbers reg byte a +Statement [568] if((byte) irq_cnt==(byte) $a) goto sprites_irq::@4 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [569] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $14 [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [570] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [571] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [572] *((const byte*) RASTER) ← (byte) irq_raster_next [ ] ( [ ] { } ) always clobbers reg byte a +Statement [573] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [574] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [575] (byte) irq_cnt ← (byte) 0 [ irq_sprite_ypos irq_sprite_ptr ] ( [ irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [576] (byte) irq_raster_next ← (const byte) IRQ_RASTER_FIRST [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ypos irq_sprite_ptr ] { } ) always clobbers reg byte a +Statement [577] (byte) irq_sprite_ypos ← (byte) irq_sprite_ypos + (byte) $15 [ irq_raster_next irq_sprite_ptr ] ( [ irq_raster_next irq_sprite_ptr ] { } ) always clobbers reg byte a reg byte x +Statement [578] (byte) irq_sprite_ptr ← (byte) irq_sprite_ptr + (byte) 3 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [579] (byte) irq_raster_next ← (byte) irq_raster_next + (byte) $15 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a reg byte x +Statement [580] (byte) irq_sprite_ypos ← (const byte) SPRITES_FIRST_YPOS [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a +Statement [582] (byte) irq_sprite_ptr ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_raster_next ] ( [ irq_raster_next ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] : zp[1]:2 , Potential registers zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] : zp[1]:3 , Potential registers zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] : zp[1]:4 , @@ -16413,274 +16401,284 @@ Potential registers zp[1]:222 [ sprites_irq::ptr#1 ] : zp[1]:222 , reg byte a , Potential registers zp[1]:223 [ sprites_irq::ptr#2 ] : zp[1]:223 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 20,002: zp[1]:207 [ keyboard_event_scan::$15 ] 20,002: zp[1]:208 [ keyboard_event_scan::$16 ] 20,002: zp[1]:209 [ keyboard_event_scan::event_type#0 ] 20,002: zp[1]:210 [ keyboard_event_scan::$23 ] 17,858.93: zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 2,101.74: zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp[1]:198 [ keyboard_event_scan::row_scan#0 ] 4: zp[1]:200 [ keyboard_event_scan::$0 ] 4: zp[1]:202 [ keyboard_event_scan::$3 ] 4: zp[1]:204 [ keyboard_event_scan::$6 ] 4: zp[1]:206 [ keyboard_event_scan::$9 ] -Uplift Scope [play_collision] 38,006.5: zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] 20,002: zp[1]:159 [ play_collision::$5 ] 13,378.25: zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] 12,223.44: zp[1]:51 [ play_collision::c#2 play_collision::c#1 ] 2,002: zp[1]:155 [ play_collision::$14 ] 1,615.62: zp[1]:158 [ play_collision::i#1 ] 1,326.38: zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] 1,118.76: zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] 785.86: zp[2]:156 [ play_collision::playfield_line#0 ] 476.33: zp[2]:153 [ play_collision::piece_gfx#0 ] 51.62: zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 18: zp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 4: zp[1]:150 [ play_collision::return#14 ] 4: zp[1]:160 [ play_collision::return#13 ] 4: zp[1]:162 [ play_collision::return#1 ] 4: zp[1]:166 [ play_collision::return#0 ] 4: zp[1]:173 [ play_collision::return#10 ] 1.43: zp[1]:52 [ play_collision::return#15 ] -Uplift Scope [play_lock_current] 38,006.5: zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,753.5: zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] 14,001.4: zp[1]:82 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333.67: zp[1]:191 [ play_lock_current::i#1 ] 2,002: zp[1]:188 [ play_lock_current::$4 ] 1,155: zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100.2: zp[2]:189 [ play_lock_current::playfield_line#0 ] 754.92: zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -Uplift Scope [play_remove_lines] 19,004.21: zp[1]:74 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,938.14: zp[1]:77 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] 17,501.75: zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,201: zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000.6: zp[1]:187 [ play_remove_lines::c#0 ] 2,566.89: zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] 1,634.97: zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 4: zp[1]:168 [ play_remove_lines::return#0 ] -Uplift Scope [] 58,858.91: zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 2,120.54: zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 209.73: zp[2]:65 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] 193.66: zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 74.29: zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] 61.29: zp[2]:26 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 ] 42.02: zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 32: zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 ] 30.62: zp[1]:34 [ render_screen_render#22 render_screen_render#63 ] 29.4: zp[1]:16 [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] 24: zp[1]:15 [ render_screen_render#15 render_screen_render#65 ] 20.4: zp[1]:23 [ current_ypos#13 current_ypos#97 current_ypos#98 ] 18.41: zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] 17.41: zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 16.93: zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] 15.34: zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] 14.83: zp[2]:61 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] 14.77: zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 14.1: zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] 12.63: zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] 12.62: zp[2]:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] 12.38: zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 10.83: zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] 9.81: zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] 8.06: zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] 0.6: zp[1]:112 [ render_screen_showing ] 0.48: zp[1]:118 [ irq_sprite_ypos ] 0.48: zp[1]:120 [ irq_cnt ] 0.45: zp[1]:119 [ irq_sprite_ptr ] 0.44: zp[1]:117 [ irq_raster_next ] 0.04: zp[4]:113 [ score_bcd ] -Uplift Scope [render_moving] 2,605.75: zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,835.17: zp[1]:33 [ render_moving::c#2 render_moving::c#1 ] 1,490.13: zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,001: zp[1]:137 [ render_moving::current_cell#0 ] 202: zp[1]:133 [ render_moving::$1 ] 202: zp[1]:134 [ render_moving::$6 ] 163.38: zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] 110.2: zp[2]:135 [ render_moving::screen_line#0 ] 96.71: zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Uplift Scope [render_next] 1,970.3: zp[2]:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] 1,787.5: zp[1]:22 [ render_next::c#2 render_next::c#1 ] 1,657: zp[2]:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] 1,001: zp[1]:132 [ render_next::cell#0 ] 169.86: zp[1]:17 [ render_next::l#7 render_next::l#1 ] 66.87: zp[1]:131 [ render_next::next_piece_char#0 ] 1: zp[1]:130 [ render_next::$6 ] -Uplift Scope [play_increase_level] 4,004: zp[1]:186 [ play_increase_level::$5 ] 2,502.5: zp[1]:71 [ play_increase_level::b#2 play_increase_level::b#1 ] 4: zp[1]:185 [ play_increase_level::$1 ] -Uplift Scope [render_playfield] 2,254.5: zp[2]:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,002: zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] 1,505.77: zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp[1]:138 [ render_playfield::$0 ] 202: zp[1]:139 [ render_playfield::$3 ] 181.8: zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [keyboard_matrix_read] 2,002: zp[1]:197 [ keyboard_matrix_read::return#2 ] 1,003: zp[1]:196 [ keyboard_matrix_read::rowid#0 ] 334.33: zp[1]:211 [ keyboard_matrix_read::return#0 ] -Uplift Scope [render_screen_original] 721.31: zp[2]:107 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 699.79: zp[1]:111 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 501.65: zp[2]:109 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 162.87: zp[2]:103 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 99.08: zp[2]:105 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 17.42: zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplift Scope [play_spawn_current] 2,002: zp[1]:175 [ play_spawn_current::sid_rnd1_return#0 ] 4: zp[1]:174 [ play_spawn_current::$1 ] 2.5: zp[1]:171 [ play_spawn_current::current_piece_idx#0 ] 0.06: zp[1]:172 [ play_spawn_current::$7 ] -Uplift Scope [main] 202: zp[1]:125 [ main::render#1 ] 101: zp[1]:122 [ main::key_event#0 ] -Uplift Scope [play_movement] 202: zp[1]:124 [ play_movement::return#3 ] 40: zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 9.73: zp[1]:123 [ play_movement::key_event#0 ] 4: zp[1]:144 [ play_movement::$3 ] 4: zp[1]:148 [ play_movement::$4 ] 0.8: zp[1]:145 [ play_movement::render#2 ] -Uplift Scope [keyboard_event_get] 202: zp[1]:121 [ keyboard_event_get::return#3 ] 38.33: zp[1]:84 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplift Scope [play_init] 33: zp[1]:213 [ play_init::$3 ] 27.5: zp[1]:94 [ play_init::b#2 play_init::b#1 ] 23.83: zp[1]:90 [ play_init::j#2 play_init::j#1 ] 22: zp[1]:212 [ play_init::$2 ] 13.93: zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp[2]:91 [ play_init::pli#2 play_init::pli#1 ] -Uplift Scope [render_bcd] 30: zp[2]:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 22: zp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 7.6: zp[2]:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 4: zp[1]:126 [ render_bcd::$5 ] 4: zp[1]:127 [ render_bcd::$6 ] 4: zp[1]:128 [ render_bcd::$3 ] 4: zp[1]:129 [ render_bcd::$4 ] 2: zp[2]:9 [ render_bcd::offset#6 ] 1: zp[1]:11 [ render_bcd::only_low#6 ] -Uplift Scope [render_init] 22: zp[1]:97 [ render_init::i#2 render_init::i#1 ] 16.5: zp[1]:215 [ render_init::$5 ] 13.93: zp[2]:100 [ render_init::li_2#2 render_init::li_2#1 ] 13.75: zp[2]:98 [ render_init::li_1#2 render_init::li_1#1 ] -Uplift Scope [sprites_init] 25.3: zp[1]:95 [ sprites_init::s#2 sprites_init::s#1 ] 22: zp[1]:214 [ sprites_init::s2#0 ] 15.58: zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplift Scope [play_move_down] 20: zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] 4: zp[1]:141 [ play_move_down::return#0 ] 4: zp[1]:165 [ play_move_down::$2 ] 4: zp[1]:167 [ play_move_down::$12 ] 4: zp[1]:169 [ play_move_down::removed#0 ] 2: zp[1]:140 [ play_move_down::key_event#0 ] 0.67: zp[1]:68 [ play_move_down::return#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp[1]:164 [ keyboard_event_pressed::return#12 ] 4: zp[1]:192 [ keyboard_event_pressed::$0 ] 4: zp[1]:194 [ keyboard_event_pressed::$1 ] 4: zp[1]:199 [ keyboard_event_pressed::return#0 ] 4: zp[1]:201 [ keyboard_event_pressed::return#1 ] 4: zp[1]:203 [ keyboard_event_pressed::return#2 ] 4: zp[1]:205 [ keyboard_event_pressed::return#10 ] 2: zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp[1]:195 [ keyboard_event_pressed::return#11 ] 1.33: zp[1]:83 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [play_collision] 380,000,000,006.5: zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] 200,000,000,002: zp[1]:159 [ play_collision::$5 ] 133,750,000,003.25: zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] 122,222,222,223.44: zp[1]:51 [ play_collision::c#2 play_collision::c#1 ] 20,000,000,002: zp[1]:155 [ play_collision::$14 ] 16,153,846,154.08: zp[1]:158 [ play_collision::i#1 ] 13,132,575,007.31: zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] 11,176,470,589.35: zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] 7,857,142,857.29: zp[2]:156 [ play_collision::playfield_line#0 ] 4,762,380,952.48: zp[2]:153 [ play_collision::piece_gfx#0 ] 455,492,427.35: zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] 10,800,009: zp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 2,000,002: zp[1]:173 [ play_collision::return#10 ] 200,002: zp[1]:150 [ play_collision::return#14 ] 200,002: zp[1]:160 [ play_collision::return#13 ] 200,002: zp[1]:162 [ play_collision::return#1 ] 200,002: zp[1]:166 [ play_collision::return#0 ] 200,000.71: zp[1]:52 [ play_collision::return#15 ] +Uplift Scope [play_lock_current] 38,000,000,006.5: zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 14,750,000,003.5: zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] 14,000,000,001.4: zp[1]:82 [ play_lock_current::c#2 play_lock_current::c#1 ] 2,333,333,333.67: zp[1]:191 [ play_lock_current::i#1 ] 2,000,000,002: zp[1]:188 [ play_lock_current::$4 ] 1,153,846,155: zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] 1,100,000,000.2: zp[2]:189 [ play_lock_current::playfield_line#0 ] 752,083,336.17: zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplift Scope [play_remove_lines] 19,000,000,004.21: zp[1]:74 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 17,928,571,438.14: zp[1]:77 [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] 17,500,000,001.75: zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 8,200,000,001: zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 6,000,000,000.6: zp[1]:187 [ play_remove_lines::c#0 ] 2,564,113,677.89: zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] 1,633,333,334.97: zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] 200,002: zp[1]:168 [ play_remove_lines::return#0 ] +Uplift Scope [play_increase_level] 40,000,000,004: zp[1]:186 [ play_increase_level::$5 ] 25,000,000,002.5: zp[1]:71 [ play_increase_level::b#2 play_increase_level::b#1 ] 20,000,002: zp[1]:185 [ play_increase_level::$1 ] +Uplift Scope [] 2,101,417,003.77: zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 588,273,523.09: zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] 182,589,729.94: zp[2]:65 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] 182,161,655.2: zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] 36,379,641.34: zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] 21,522,727.69: zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] 19,012,786.51: zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] 14,200,016: zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 ] 2,655,686.72: zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] 1,310,325.83: zp[2]:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] 611,596.9: zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] 438,675.79: zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] 427,344.55: zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] 415,859.78: zp[2]:61 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] 47,848.43: zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] 47,736.43: zp[2]:26 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 ] 37,176.6: zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] 14,598.57: zp[4]:113 [ score_bcd ] 7,902.15: zp[1]:34 [ render_screen_render#22 render_screen_render#63 ] 4,841.95: zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] 4,817.26: zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] 1,203: zp[1]:15 [ render_screen_render#15 render_screen_render#65 ] 1,158.9: zp[1]:23 [ current_ypos#13 current_ypos#97 current_ypos#98 ] 1,000.5: zp[1]:112 [ render_screen_showing ] 944.98: zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] 646.8: zp[1]:16 [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] 360.27: zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] 0.48: zp[1]:118 [ irq_sprite_ypos ] 0.48: zp[1]:120 [ irq_cnt ] 0.45: zp[1]:119 [ irq_sprite_ptr ] 0.44: zp[1]:117 [ irq_raster_next ] +Uplift Scope [play_spawn_current] 2,000,000,002: zp[1]:175 [ play_spawn_current::sid_rnd1_return#0 ] 2,000,002: zp[1]:174 [ play_spawn_current::$1 ] 1,250,001.25: zp[1]:171 [ play_spawn_current::current_piece_idx#0 ] 32,258.1: zp[1]:172 [ play_spawn_current::$7 ] +Uplift Scope [keyboard_event_scan] 200,000,002: zp[1]:207 [ keyboard_event_scan::$15 ] 200,000,002: zp[1]:208 [ keyboard_event_scan::$16 ] 200,000,002: zp[1]:209 [ keyboard_event_scan::event_type#0 ] 200,000,002: zp[1]:210 [ keyboard_event_scan::$23 ] 178,571,430.36: zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 119,038,466.17: zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 21,000,001.74: zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 12,777,778.06: zp[1]:198 [ keyboard_event_scan::row_scan#0 ] 20,002: zp[1]:200 [ keyboard_event_scan::$0 ] 20,002: zp[1]:202 [ keyboard_event_scan::$3 ] 20,002: zp[1]:204 [ keyboard_event_scan::$6 ] 20,002: zp[1]:206 [ keyboard_event_scan::$9 ] +Uplift Scope [keyboard_matrix_read] 110,000,002: zp[1]:196 [ keyboard_matrix_read::rowid#0 ] 36,666,667.33: zp[1]:211 [ keyboard_matrix_read::return#0 ] 20,000,002: zp[1]:197 [ keyboard_matrix_read::return#2 ] +Uplift Scope [play_update_score] 2,000,002: zp[1]:176 [ play_update_score::$2 ] 2,000,002: zp[1]:178 [ play_update_score::$9 ] 2,000,002: zp[1]:183 [ play_update_score::$4 ] 2,000,002: zp[1]:184 [ play_update_score::lines_after#0 ] 666,667.33: zp[4]:179 [ play_update_score::add_bcd#0 ] 442,857.71: zp[1]:170 [ play_update_score::removed#0 ] 222,222.44: zp[1]:177 [ play_update_score::lines_before#0 ] +Uplift Scope [render_moving] 2,600,005.75: zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] 1,833,335.17: zp[1]:33 [ render_moving::c#2 render_moving::c#1 ] 1,486,670.13: zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] 1,000,001: zp[1]:137 [ render_moving::current_cell#0 ] 200,002: zp[1]:133 [ render_moving::$1 ] 200,002: zp[1]:134 [ render_moving::$6 ] 161,766.32: zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] 110,000.2: zp[2]:135 [ render_moving::screen_line#0 ] 93,732.15: zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplift Scope [render_next] 1,963,007.3: zp[2]:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] 1,785,716.07: zp[1]:22 [ render_next::c#2 render_next::c#1 ] 1,651,255.75: zp[2]:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] 1,000,001: zp[1]:132 [ render_next::cell#0 ] 168,183.5: zp[1]:17 [ render_next::l#7 render_next::l#1 ] 66,733.47: zp[1]:131 [ render_next::next_piece_char#0 ] 500.5: zp[1]:130 [ render_next::$6 ] +Uplift Scope [render_playfield] 2,250,004.5: zp[2]:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] 2,000,002: zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] 1,503,335.77: zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 200,002: zp[1]:138 [ render_playfield::$0 ] 200,002: zp[1]:139 [ render_playfield::$3 ] 180,001.8: zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [keyboard_event_pressed] 2,000,002: zp[1]:192 [ keyboard_event_pressed::$0 ] 2,000,002: zp[1]:194 [ keyboard_event_pressed::$1 ] 1,000,001: zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] 666,667.33: zp[1]:83 [ keyboard_event_pressed::keycode#5 ] 200,002: zp[1]:164 [ keyboard_event_pressed::return#12 ] 162,858: zp[1]:195 [ keyboard_event_pressed::return#11 ] 20,002: zp[1]:199 [ keyboard_event_pressed::return#0 ] 20,002: zp[1]:201 [ keyboard_event_pressed::return#1 ] 20,002: zp[1]:203 [ keyboard_event_pressed::return#2 ] 20,002: zp[1]:205 [ keyboard_event_pressed::return#10 ] +Uplift Scope [render_screen_original] 709,868.6: zp[2]:107 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] 692,864.07: zp[1]:111 [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] 494,507.15: zp[2]:109 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] 161,085.12: zp[2]:103 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] 97,917.83: zp[2]:105 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] 15,834.92: zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplift Scope [play_move_down] 1,000,010: zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] 200,002: zp[1]:165 [ play_move_down::$2 ] 200,002: zp[1]:167 [ play_move_down::$12 ] 200,002: zp[1]:169 [ play_move_down::removed#0 ] 55,001: zp[1]:140 [ play_move_down::key_event#0 ] 20,002: zp[1]:141 [ play_move_down::return#0 ] 3,333.67: zp[1]:68 [ play_move_down::return#3 ] +Uplift Scope [play_move_rotate] 444,448.89: zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 200,002: zp[1]:149 [ play_move_rotate::$5 ] 200,002: zp[1]:151 [ play_move_rotate::$2 ] 200,002: zp[1]:152 [ play_move_rotate::$7 ] 105,001.5: zp[1]:146 [ play_move_rotate::key_event#0 ] 20,002: zp[1]:147 [ play_move_rotate::return#0 ] 3,333.67: zp[1]:41 [ play_move_rotate::return#2 ] +Uplift Scope [play_move_leftright] 200,002: zp[1]:161 [ play_move_leftright::$4 ] 200,002: zp[1]:163 [ play_move_leftright::$8 ] 105,001.5: zp[1]:142 [ play_move_leftright::key_event#0 ] 20,002: zp[1]:143 [ play_move_leftright::return#0 ] 3,333.67: zp[1]:53 [ play_move_leftright::return#2 ] +Uplift Scope [render_bcd] 38,003.8: zp[2]:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] 24,015: zp[2]:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] 20,002: zp[1]:126 [ render_bcd::$5 ] 20,002: zp[1]:127 [ render_bcd::$6 ] 20,002: zp[1]:128 [ render_bcd::$3 ] 20,002: zp[1]:129 [ render_bcd::$4 ] 13,261: zp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] 10,001: zp[2]:9 [ render_bcd::offset#6 ] 5,000.5: zp[1]:11 [ render_bcd::only_low#6 ] +Uplift Scope [play_movement] 32,003.5: zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] 20,002: zp[1]:144 [ play_movement::$3 ] 20,002: zp[1]:148 [ play_movement::$4 ] 4,000.4: zp[1]:145 [ play_movement::render#2 ] 2,818.55: zp[1]:123 [ play_movement::key_event#0 ] 2,002: zp[1]:124 [ play_movement::return#3 ] +Uplift Scope [keyboard_event_get] 23,669.33: zp[1]:84 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 2,002: zp[1]:121 [ keyboard_event_get::return#3 ] +Uplift Scope [play_init] 3,003: zp[1]:213 [ play_init::$3 ] 2,502.5: zp[1]:94 [ play_init::b#2 play_init::b#1 ] 2,168.83: zp[1]:90 [ play_init::j#2 play_init::j#1 ] 2,002: zp[1]:212 [ play_init::$2 ] 1,267.93: zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] 1,251.25: zp[2]:91 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [render_show] 10,001: zp[1]:89 [ render_show::d018val#3 ] +Uplift Scope [render_init] 2,002: zp[1]:97 [ render_init::i#2 render_init::i#1 ] 1,501.5: zp[1]:215 [ render_init::$5 ] 1,267.93: zp[2]:100 [ render_init::li_2#2 render_init::li_2#1 ] 1,251.25: zp[2]:98 [ render_init::li_1#2 render_init::li_1#1 ] +Uplift Scope [sprites_init] 2,302.3: zp[1]:95 [ sprites_init::s#2 sprites_init::s#1 ] 2,002: zp[1]:214 [ sprites_init::s2#0 ] 1,418.08: zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplift Scope [main] 2,002: zp[1]:125 [ main::render#1 ] 1,001: zp[1]:122 [ main::key_event#0 ] +Uplift Scope [render_score] 375.38: zp[2]:5 [ render_score::screen#3 ] Uplift Scope [sprites_irq] 6.5: zp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] 4: zp[1]:217 [ sprites_irq::$0 ] 4: zp[1]:221 [ sprites_irq::ptr#4 ] 4: zp[1]:223 [ sprites_irq::ptr#2 ] 2.67: zp[1]:220 [ sprites_irq::ptr#3 ] 2.67: zp[1]:222 [ sprites_irq::ptr#1 ] 2.5: zp[1]:216 [ sprites_irq::ypos#0 ] 2.5: zp[1]:219 [ sprites_irq::ptr#0 ] -Uplift Scope [play_move_rotate] 8.89: zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 4: zp[1]:147 [ play_move_rotate::return#0 ] 4: zp[1]:149 [ play_move_rotate::$5 ] 4: zp[1]:151 [ play_move_rotate::$2 ] 4: zp[1]:152 [ play_move_rotate::$7 ] 3: zp[1]:146 [ play_move_rotate::key_event#0 ] 0.67: zp[1]:41 [ play_move_rotate::return#2 ] -Uplift Scope [play_update_score] 4: zp[1]:176 [ play_update_score::$2 ] 4: zp[1]:178 [ play_update_score::$9 ] 4: zp[1]:183 [ play_update_score::$4 ] 4: zp[1]:184 [ play_update_score::lines_after#0 ] 1.33: zp[4]:179 [ play_update_score::add_bcd#0 ] 1.14: zp[1]:170 [ play_update_score::removed#0 ] 0.44: zp[1]:177 [ play_update_score::lines_before#0 ] -Uplift Scope [play_move_leftright] 4: zp[1]:143 [ play_move_leftright::return#0 ] 4: zp[1]:161 [ play_move_leftright::$4 ] 4: zp[1]:163 [ play_move_leftright::$8 ] 3: zp[1]:142 [ play_move_leftright::key_event#0 ] 0.67: zp[1]:53 [ play_move_leftright::return#2 ] -Uplift Scope [render_show] 2: zp[1]:89 [ render_show::d018val#3 ] -Uplift Scope [render_score] 0.75: zp[2]:5 [ render_score::screen#3 ] Uplift Scope [sid_rnd_init] Uplift Scope [render_screen_swap] Uplift Scope [sprites_irq_init] -Uplifting [keyboard_event_scan] best 4703737 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp[1]:198 [ keyboard_event_scan::row_scan#0 ] zp[1]:200 [ keyboard_event_scan::$0 ] zp[1]:202 [ keyboard_event_scan::$3 ] zp[1]:204 [ keyboard_event_scan::$6 ] zp[1]:206 [ keyboard_event_scan::$9 ] -Limited combination testing to 100 combinations of 524288 possible. -Uplifting [play_collision] best 4553737 combination zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp[1]:155 [ play_collision::$14 ] zp[1]:158 [ play_collision::i#1 ] zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] zp[2]:156 [ play_collision::playfield_line#0 ] zp[2]:153 [ play_collision::piece_gfx#0 ] zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp[1]:150 [ play_collision::return#14 ] zp[1]:160 [ play_collision::return#13 ] zp[1]:162 [ play_collision::return#1 ] zp[1]:166 [ play_collision::return#0 ] zp[1]:173 [ play_collision::return#10 ] zp[1]:52 [ play_collision::return#15 ] +Uplifting [play_collision] best 4793737 combination zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp[1]:155 [ play_collision::$14 ] zp[1]:158 [ play_collision::i#1 ] zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] zp[2]:156 [ play_collision::playfield_line#0 ] zp[2]:153 [ play_collision::piece_gfx#0 ] zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp[1]:173 [ play_collision::return#10 ] zp[1]:150 [ play_collision::return#14 ] zp[1]:160 [ play_collision::return#13 ] zp[1]:162 [ play_collision::return#1 ] zp[1]:166 [ play_collision::return#0 ] zp[1]:52 [ play_collision::return#15 ] Limited combination testing to 100 combinations of 429981696 possible. -Uplifting [play_lock_current] best 4459737 combination zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp[1]:191 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] zp[2]:189 [ play_lock_current::playfield_line#0 ] zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Uplifting [play_lock_current] best 4699737 combination zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp[1]:191 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] zp[2]:189 [ play_lock_current::playfield_line#0 ] zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] Limited combination testing to 100 combinations of 2916 possible. -Uplifting [play_remove_lines] best 4320737 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp[1]:187 [ play_remove_lines::c#0 ] zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp[1]:168 [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 4560737 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp[1]:187 [ play_remove_lines::c#0 ] zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp[1]:168 [ play_remove_lines::return#0 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [] best 4320495 combination zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp[2]:65 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] zp[2]:26 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 ] zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 ] reg byte x [ render_screen_render#22 render_screen_render#63 ] reg byte x [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] reg byte a [ render_screen_render#15 render_screen_render#65 ] reg byte x [ current_ypos#13 current_ypos#97 current_ypos#98 ] zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp[2]:61 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] zp[2]:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] zp[1]:112 [ render_screen_showing ] zp[1]:118 [ irq_sprite_ypos ] zp[1]:120 [ irq_cnt ] zp[1]:119 [ irq_sprite_ptr ] zp[1]:117 [ irq_raster_next ] zp[4]:113 [ score_bcd ] +Uplifting [play_increase_level] best 4546731 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] +Uplifting [] best 4546598 combination zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp[2]:65 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 ] zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] zp[2]:56 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp[2]:61 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] zp[2]:26 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 ] zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp[4]:113 [ score_bcd ] reg byte x [ render_screen_render#22 render_screen_render#63 ] zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] zp[1]:15 [ render_screen_render#15 render_screen_render#65 ] zp[1]:23 [ current_ypos#13 current_ypos#97 current_ypos#98 ] zp[1]:112 [ render_screen_showing ] zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] zp[1]:16 [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] zp[1]:118 [ irq_sprite_ypos ] zp[1]:120 [ irq_cnt ] zp[1]:119 [ irq_sprite_ptr ] zp[1]:117 [ irq_raster_next ] Limited combination testing to 100 combinations of 1944 possible. -Uplifting [render_moving] best 4305495 combination zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp[1]:133 [ render_moving::$1 ] zp[1]:134 [ render_moving::$6 ] zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] zp[2]:135 [ render_moving::screen_line#0 ] zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Limited combination testing to 100 combinations of 15552 possible. -Uplifting [render_next] best 4290491 combination zp[2]:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp[2]:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp[1]:17 [ render_next::l#7 render_next::l#1 ] zp[1]:131 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$6 ] -Limited combination testing to 100 combinations of 128 possible. -Uplifting [play_increase_level] best 4276485 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ] -Uplifting [render_playfield] best 4275485 combination zp[2]:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$0 ] reg byte a [ render_playfield::$3 ] zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] -Limited combination testing to 100 combinations of 128 possible. -Uplifting [keyboard_matrix_read] best 4263479 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [render_screen_original] best 4261379 combination zp[2]:107 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp[2]:109 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp[2]:103 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp[2]:105 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [play_spawn_current] best 4255360 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp[1]:172 [ play_spawn_current::$7 ] -Uplifting [main] best 4254160 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] -Uplifting [play_movement] best 4253548 combination reg byte a [ play_movement::return#3 ] zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp[1]:123 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp[1]:145 [ play_movement::render#2 ] -Limited combination testing to 100 combinations of 576 possible. -Uplifting [keyboard_event_get] best 4252642 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [play_init] best 4252432 combination reg byte a [ play_init::$3 ] zp[1]:94 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$2 ] zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] zp[2]:91 [ play_init::pli#2 play_init::pli#1 ] -Limited combination testing to 100 combinations of 432 possible. -Uplifting [render_bcd] best 4252402 combination zp[2]:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp[2]:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp[1]:129 [ render_bcd::$4 ] zp[2]:9 [ render_bcd::offset#6 ] zp[1]:11 [ render_bcd::only_low#6 ] -Limited combination testing to 100 combinations of 1536 possible. -Uplifting [render_init] best 4252232 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$5 ] zp[2]:100 [ render_init::li_2#2 render_init::li_2#1 ] zp[2]:98 [ render_init::li_1#2 render_init::li_1#1 ] -Uplifting [sprites_init] best 4252062 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [play_move_down] best 4252029 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp[1]:169 [ play_move_down::removed#0 ] zp[1]:140 [ play_move_down::key_event#0 ] zp[1]:68 [ play_move_down::return#3 ] -Limited combination testing to 100 combinations of 12288 possible. -Uplifting [keyboard_event_pressed] best 4252009 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp[1]:201 [ keyboard_event_pressed::return#1 ] zp[1]:203 [ keyboard_event_pressed::return#2 ] zp[1]:205 [ keyboard_event_pressed::return#10 ] zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] zp[1]:195 [ keyboard_event_pressed::return#11 ] zp[1]:83 [ keyboard_event_pressed::keycode#5 ] -Limited combination testing to 100 combinations of 589824 possible. -Uplifting [sprites_irq] best 4251985 combination zp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp[1]:222 [ sprites_irq::ptr#1 ] zp[1]:216 [ sprites_irq::ypos#0 ] zp[1]:219 [ sprites_irq::ptr#0 ] -Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_rotate] best 4251967 combination zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp[1]:152 [ play_move_rotate::$7 ] zp[1]:146 [ play_move_rotate::key_event#0 ] zp[1]:41 [ play_move_rotate::return#2 ] -Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_update_score] best 4251945 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp[4]:179 [ play_update_score::add_bcd#0 ] zp[1]:170 [ play_update_score::removed#0 ] zp[1]:177 [ play_update_score::lines_before#0 ] +Uplifting [play_spawn_current] best 4540579 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp[1]:172 [ play_spawn_current::$7 ] +Uplifting [keyboard_event_scan] best 4300579 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp[1]:198 [ keyboard_event_scan::row_scan#0 ] zp[1]:200 [ keyboard_event_scan::$0 ] zp[1]:202 [ keyboard_event_scan::$3 ] zp[1]:204 [ keyboard_event_scan::$6 ] zp[1]:206 [ keyboard_event_scan::$9 ] +Limited combination testing to 100 combinations of 524288 possible. +Uplifting [keyboard_matrix_read] best 4288573 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [play_update_score] best 4288551 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp[4]:179 [ play_update_score::add_bcd#0 ] zp[1]:170 [ play_update_score::removed#0 ] zp[1]:177 [ play_update_score::lines_before#0 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [play_move_leftright] best 4251918 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp[1]:53 [ play_move_leftright::return#2 ] +Uplifting [render_moving] best 4273551 combination zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp[1]:133 [ render_moving::$1 ] zp[1]:134 [ render_moving::$6 ] zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] zp[2]:135 [ render_moving::screen_line#0 ] zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Limited combination testing to 100 combinations of 15552 possible. +Uplifting [render_next] best 4258547 combination zp[2]:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp[2]:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp[1]:17 [ render_next::l#7 render_next::l#1 ] zp[1]:131 [ render_next::next_piece_char#0 ] reg byte x [ render_next::$6 ] +Limited combination testing to 100 combinations of 128 possible. +Uplifting [render_playfield] best 4257547 combination zp[2]:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$0 ] reg byte a [ render_playfield::$3 ] zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] +Limited combination testing to 100 combinations of 128 possible. +Uplifting [keyboard_event_pressed] best 4257518 combination reg byte y [ keyboard_event_pressed::$0 ] reg byte x [ keyboard_event_pressed::$1 ] reg byte y [ keyboard_event_pressed::row_bits#0 ] reg byte x [ keyboard_event_pressed::keycode#5 ] zp[1]:164 [ keyboard_event_pressed::return#12 ] zp[1]:195 [ keyboard_event_pressed::return#11 ] zp[1]:199 [ keyboard_event_pressed::return#0 ] zp[1]:201 [ keyboard_event_pressed::return#1 ] zp[1]:203 [ keyboard_event_pressed::return#2 ] zp[1]:205 [ keyboard_event_pressed::return#10 ] +Limited combination testing to 100 combinations of 589824 possible. +Uplifting [render_screen_original] best 4255418 combination zp[2]:107 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp[2]:109 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp[2]:103 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp[2]:105 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [play_move_down] best 4255400 combination zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] reg byte a [ play_move_down::removed#0 ] zp[1]:140 [ play_move_down::key_event#0 ] zp[1]:141 [ play_move_down::return#0 ] zp[1]:68 [ play_move_down::return#3 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [play_move_rotate] best 4255384 combination zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] reg byte a [ play_move_rotate::$7 ] zp[1]:146 [ play_move_rotate::key_event#0 ] zp[1]:147 [ play_move_rotate::return#0 ] zp[1]:41 [ play_move_rotate::return#2 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [play_move_leftright] best 4255357 combination reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::return#0 ] zp[1]:53 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [render_show] best 4251909 combination reg byte a [ render_show::d018val#3 ] -Uplifting [render_score] best 4251909 combination zp[2]:5 [ render_score::screen#3 ] -Uplifting [sid_rnd_init] best 4251909 combination -Uplifting [render_screen_swap] best 4251909 combination -Uplifting [sprites_irq_init] best 4251909 combination -Attempting to uplift remaining variables inzp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Uplifting [] best 4251909 combination zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [render_bcd] best 4255337 combination zp[2]:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] zp[2]:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] zp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp[2]:9 [ render_bcd::offset#6 ] zp[1]:11 [ render_bcd::only_low#6 ] +Limited combination testing to 100 combinations of 1536 possible. +Uplifting [play_movement] best 4255325 combination zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp[1]:145 [ play_movement::render#2 ] zp[1]:123 [ play_movement::key_event#0 ] zp[1]:124 [ play_movement::return#3 ] +Limited combination testing to 100 combinations of 576 possible. +Uplifting [keyboard_event_get] best 4254419 combination reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte a [ keyboard_event_get::return#3 ] +Uplifting [play_init] best 4254209 combination reg byte a [ play_init::$3 ] zp[1]:94 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$2 ] zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] zp[2]:91 [ play_init::pli#2 play_init::pli#1 ] +Limited combination testing to 100 combinations of 432 possible. +Uplifting [render_show] best 4254200 combination reg byte a [ render_show::d018val#3 ] +Uplifting [render_init] best 4254030 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$5 ] zp[2]:100 [ render_init::li_2#2 render_init::li_2#1 ] zp[2]:98 [ render_init::li_1#2 render_init::li_1#1 ] +Uplifting [sprites_init] best 4253860 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [main] best 4252860 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ] +Uplifting [render_score] best 4252860 combination zp[2]:5 [ render_score::screen#3 ] +Uplifting [sprites_irq] best 4252836 combination zp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp[1]:222 [ sprites_irq::ptr#1 ] zp[1]:216 [ sprites_irq::ypos#0 ] zp[1]:219 [ sprites_irq::ptr#0 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [sid_rnd_init] best 4252836 combination +Uplifting [render_screen_swap] best 4252836 combination +Uplifting [sprites_irq_init] best 4252836 combination Attempting to uplift remaining variables inzp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] -Uplifting [play_collision] best 4251909 combination zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] -Attempting to uplift remaining variables inzp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Uplifting [play_lock_current] best 4251909 combination zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] -Attempting to uplift remaining variables inzp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 4101909 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Uplifting [play_remove_lines] best 4101909 combination zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] -Attempting to uplift remaining variables inzp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] -Uplifting [play_lock_current] best 4101909 combination zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Uplifting [play_collision] best 4252836 combination zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] Attempting to uplift remaining variables inzp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] -Uplifting [play_collision] best 4101909 combination zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] -Attempting to uplift remaining variables inzp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Uplifting [keyboard_event_scan] best 4101909 combination zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Attempting to uplift remaining variables inzp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Uplifting [play_remove_lines] best 4101909 combination zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] -Attempting to uplift remaining variables inzp[1]:187 [ play_remove_lines::c#0 ] -Uplifting [play_remove_lines] best 4101909 combination zp[1]:187 [ play_remove_lines::c#0 ] -Attempting to uplift remaining variables inzp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Uplifting [render_moving] best 4101909 combination zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Attempting to uplift remaining variables inzp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Uplifting [play_remove_lines] best 4101909 combination zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] -Attempting to uplift remaining variables inzp[1]:191 [ play_lock_current::i#1 ] -Uplifting [play_lock_current] best 4101909 combination zp[1]:191 [ play_lock_current::i#1 ] -Attempting to uplift remaining variables inzp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Uplifting [] best 4101909 combination zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Attempting to uplift remaining variables inzp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 4101909 combination zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Attempting to uplift remaining variables inzp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] -Uplifting [render_playfield] best 4101909 combination zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] +Uplifting [play_collision] best 4252836 combination zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] +Attempting to uplift remaining variables inzp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Uplifting [play_lock_current] best 4252836 combination zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] Attempting to uplift remaining variables inzp[1]:155 [ play_collision::$14 ] -Uplifting [play_collision] best 4097909 combination reg byte a [ play_collision::$14 ] -Attempting to uplift remaining variables inzp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] -Uplifting [play_remove_lines] best 4097909 combination zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_collision] best 4248836 combination reg byte a [ play_collision::$14 ] +Attempting to uplift remaining variables inzp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Uplifting [play_remove_lines] best 4248836 combination zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] Attempting to uplift remaining variables inzp[1]:158 [ play_collision::i#1 ] -Uplifting [play_collision] best 4097909 combination zp[1]:158 [ play_collision::i#1 ] -Attempting to uplift remaining variables inzp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 4097909 combination zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Attempting to uplift remaining variables inzp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Uplifting [render_moving] best 4097909 combination zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Uplifting [play_collision] best 4248836 combination zp[1]:158 [ play_collision::i#1 ] +Attempting to uplift remaining variables inzp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] +Uplifting [play_lock_current] best 4248836 combination zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] Attempting to uplift remaining variables inzp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] -Uplifting [play_collision] best 4097909 combination zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] -Attempting to uplift remaining variables inzp[1]:198 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 4097909 combination zp[1]:198 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] -Uplifting [play_lock_current] best 4097909 combination zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_collision] best 4248836 combination zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] Attempting to uplift remaining variables inzp[1]:48 [ play_collision::l#6 play_collision::l#1 ] -Uplifting [play_collision] best 4097909 combination zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 4248836 combination zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] +Attempting to uplift remaining variables inzp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 4248836 combination zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Attempting to uplift remaining variables inzp[1]:187 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 4248836 combination zp[1]:187 [ play_remove_lines::c#0 ] +Attempting to uplift remaining variables inzp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Uplifting [play_remove_lines] best 4248836 combination zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] +Attempting to uplift remaining variables inzp[1]:191 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 4248836 combination zp[1]:191 [ play_lock_current::i#1 ] +Attempting to uplift remaining variables inzp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Uplifting [] best 4248836 combination zp[1]:69 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Attempting to uplift remaining variables inzp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 4248836 combination zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Attempting to uplift remaining variables inzp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 4248836 combination zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] Attempting to uplift remaining variables inzp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -Uplifting [play_lock_current] best 4097909 combination zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -Attempting to uplift remaining variables inzp[1]:133 [ render_moving::$1 ] -Uplifting [render_moving] best 4097309 combination reg byte a [ render_moving::$1 ] -Attempting to uplift remaining variables inzp[1]:134 [ render_moving::$6 ] -Uplifting [render_moving] best 4096909 combination reg byte a [ render_moving::$6 ] -Attempting to uplift remaining variables inzp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Uplifting [] best 4096909 combination zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Attempting to uplift remaining variables inzp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 4096909 combination zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] -Attempting to uplift remaining variables inzp[1]:17 [ render_next::l#7 render_next::l#1 ] -Uplifting [render_next] best 4096909 combination zp[1]:17 [ render_next::l#7 render_next::l#1 ] -Attempting to uplift remaining variables inzp[1]:30 [ render_moving::l#4 render_moving::l#1 ] -Uplifting [render_moving] best 4096909 combination zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] -Attempting to uplift remaining variables inzp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Uplifting [render_moving] best 4096909 combination zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Attempting to uplift remaining variables inzp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] -Uplifting [] best 4096909 combination zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] -Attempting to uplift remaining variables inzp[1]:131 [ render_next::next_piece_char#0 ] -Uplifting [render_next] best 4096909 combination zp[1]:131 [ render_next::next_piece_char#0 ] +Uplifting [play_lock_current] best 4248836 combination zp[1]:78 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Attempting to uplift remaining variables inzp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [] best 4248836 combination zp[1]:88 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] Attempting to uplift remaining variables inzp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Uplifting [play_collision] best 4096909 combination zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] -Attempting to uplift remaining variables inzp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Uplifting [] best 4096909 combination zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Attempting to uplift remaining variables inzp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Uplifting [play_movement] best 4096909 combination zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] -Attempting to uplift remaining variables inzp[1]:94 [ play_init::b#2 play_init::b#1 ] -Uplifting [play_init] best 4096809 combination reg byte x [ play_init::b#2 play_init::b#1 ] +Uplifting [play_collision] best 4248836 combination zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] +Attempting to uplift remaining variables inzp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Uplifting [] best 4248836 combination zp[1]:63 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Attempting to uplift remaining variables inzp[1]:86 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 4098836 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Attempting to uplift remaining variables inzp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] +Uplifting [keyboard_event_scan] best 4098836 combination zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] Attempting to uplift remaining variables inzp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Uplifting [] best 4096809 combination zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Attempting to uplift remaining variables inzp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Uplifting [play_collision] best 4096793 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] -Attempting to uplift remaining variables inzp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] -Uplifting [render_screen_original] best 4096793 combination zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] -Attempting to uplift remaining variables inzp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Uplifting [] best 4096793 combination zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Uplifting [] best 4098836 combination zp[1]:60 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] Attempting to uplift remaining variables inzp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -Uplifting [] best 4096793 combination zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -Attempting to uplift remaining variables inzp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 4096793 combination zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Attempting to uplift remaining variables inzp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] -Uplifting [] best 4096793 combination zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] -Attempting to uplift remaining variables inzp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Uplifting [] best 4096793 combination zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Attempting to uplift remaining variables inzp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] -Uplifting [] best 4096793 combination zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] -Attempting to uplift remaining variables inzp[1]:93 [ play_init::idx#2 play_init::idx#1 ] -Uplifting [play_init] best 4096793 combination zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [] best 4098836 combination zp[1]:59 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] +Attempting to uplift remaining variables inzp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 4098836 combination zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Attempting to uplift remaining variables inzp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Uplifting [] best 4098836 combination zp[1]:67 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Attempting to uplift remaining variables inzp[1]:198 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 4098836 combination zp[1]:198 [ keyboard_event_scan::row_scan#0 ] +Attempting to uplift remaining variables inzp[1]:45 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Uplifting [play_collision] best 4098820 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] Attempting to uplift remaining variables inzp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] -Uplifting [] best 4096793 combination zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] -Attempting to uplift remaining variables inzp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Uplifting [] best 4096793 combination zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] -Attempting to uplift remaining variables inzp[1]:24 [ render_screen_render#33 render_screen_render#64 ] -Uplifting [] best 4096793 combination zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] -Attempting to uplift remaining variables inzp[1]:2 [ render_screen_show#16 render_screen_show#13 ] -Uplifting [] best 4096793 combination zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] -Attempting to uplift remaining variables inzp[1]:123 [ play_movement::key_event#0 ] -Uplifting [play_movement] best 4096793 combination zp[1]:123 [ play_movement::key_event#0 ] -Attempting to uplift remaining variables inzp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 4096793 combination zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp[1]:3 [ render_screen_render#18 render_screen_render#11 ] -Uplifting [] best 4096793 combination zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] -Attempting to uplift remaining variables inzp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] -Uplifting [sprites_irq] best 4096793 combination zp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] -Attempting to uplift remaining variables inzp[1]:129 [ render_bcd::$4 ] -Uplifting [render_bcd] best 4096787 combination reg byte a [ render_bcd::$4 ] -Attempting to uplift remaining variables inzp[1]:150 [ play_collision::return#14 ] -Uplifting [play_collision] best 4096781 combination reg byte a [ play_collision::return#14 ] -Attempting to uplift remaining variables inzp[1]:152 [ play_move_rotate::$7 ] -Uplifting [play_move_rotate] best 4096775 combination reg byte x [ play_move_rotate::$7 ] -Attempting to uplift remaining variables inzp[1]:160 [ play_collision::return#13 ] -Uplifting [play_collision] best 4096769 combination reg byte a [ play_collision::return#13 ] -Attempting to uplift remaining variables inzp[1]:162 [ play_collision::return#1 ] -Uplifting [play_collision] best 4096763 combination reg byte a [ play_collision::return#1 ] -Attempting to uplift remaining variables inzp[1]:166 [ play_collision::return#0 ] -Uplifting [play_collision] best 4096757 combination reg byte a [ play_collision::return#0 ] -Attempting to uplift remaining variables inzp[1]:168 [ play_remove_lines::return#0 ] -Uplifting [play_remove_lines] best 4096751 combination reg byte a [ play_remove_lines::return#0 ] -Attempting to uplift remaining variables inzp[1]:169 [ play_move_down::removed#0 ] -Uplifting [play_move_down] best 4096745 combination reg byte a [ play_move_down::removed#0 ] +Uplifting [] best 4098820 combination zp[1]:58 [ level#33 level#10 level#17 level#19 level#21 ] +Attempting to uplift remaining variables inzp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] +Uplifting [render_moving] best 4098820 combination zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] +Attempting to uplift remaining variables inzp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] +Uplifting [render_playfield] best 4098820 combination zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] Attempting to uplift remaining variables inzp[1]:173 [ play_collision::return#10 ] -Uplifting [play_collision] best 4096739 combination reg byte a [ play_collision::return#10 ] -Attempting to uplift remaining variables inzp[1]:200 [ keyboard_event_scan::$0 ] -Uplifting [keyboard_event_scan] best 4096733 combination reg byte a [ keyboard_event_scan::$0 ] -Attempting to uplift remaining variables inzp[1]:201 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 4096727 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp[1]:202 [ keyboard_event_scan::$3 ] -Uplifting [keyboard_event_scan] best 4096721 combination reg byte a [ keyboard_event_scan::$3 ] -Attempting to uplift remaining variables inzp[1]:203 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 4096715 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp[1]:204 [ keyboard_event_scan::$6 ] -Uplifting [keyboard_event_scan] best 4096709 combination reg byte a [ keyboard_event_scan::$6 ] -Attempting to uplift remaining variables inzp[1]:205 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 4096703 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp[1]:206 [ keyboard_event_scan::$9 ] -Uplifting [keyboard_event_scan] best 4096697 combination reg byte a [ keyboard_event_scan::$9 ] -Attempting to uplift remaining variables inzp[1]:146 [ play_move_rotate::key_event#0 ] -Uplifting [play_move_rotate] best 4096688 combination reg byte a [ play_move_rotate::key_event#0 ] -Attempting to uplift remaining variables inzp[1]:222 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 4096676 combination reg byte x [ sprites_irq::ptr#1 ] -Attempting to uplift remaining variables inzp[1]:216 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 4096661 combination reg byte a [ sprites_irq::ypos#0 ] -Attempting to uplift remaining variables inzp[1]:219 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 4096646 combination reg byte x [ sprites_irq::ptr#0 ] -Attempting to uplift remaining variables inzp[1]:140 [ play_move_down::key_event#0 ] -Uplifting [play_move_down] best 4096640 combination reg byte a [ play_move_down::key_event#0 ] -Attempting to uplift remaining variables inzp[1]:193 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 4096640 combination zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp[1]:195 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 4096622 combination reg byte a [ keyboard_event_pressed::return#11 ] -Attempting to uplift remaining variables inzp[1]:52 [ play_collision::return#15 ] -Uplifting [play_collision] best 4096592 combination reg byte a [ play_collision::return#15 ] -Attempting to uplift remaining variables inzp[1]:83 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 4096592 combination zp[1]:83 [ keyboard_event_pressed::keycode#5 ] +Uplifting [play_collision] best 4098814 combination reg byte a [ play_collision::return#10 ] +Attempting to uplift remaining variables inzp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 4098814 combination zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Attempting to uplift remaining variables inzp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Uplifting [render_moving] best 4098814 combination zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] +Attempting to uplift remaining variables inzp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] +Uplifting [play_move_down] best 4098814 combination zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] +Attempting to uplift remaining variables inzp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] +Uplifting [] best 4098814 combination zp[1]:55 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] +Attempting to uplift remaining variables inzp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Uplifting [play_move_rotate] best 4098814 combination zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Attempting to uplift remaining variables inzp[1]:170 [ play_update_score::removed#0 ] -Uplifting [play_update_score] best 4096586 combination reg byte x [ play_update_score::removed#0 ] -Attempting to uplift remaining variables inzp[1]:11 [ render_bcd::only_low#6 ] -Uplifting [render_bcd] best 4096565 combination reg byte y [ render_bcd::only_low#6 ] -Attempting to uplift remaining variables inzp[1]:145 [ play_movement::render#2 ] -Uplifting [play_movement] best 4096565 combination zp[1]:145 [ play_movement::render#2 ] -Attempting to uplift remaining variables inzp[1]:41 [ play_move_rotate::return#2 ] -Uplifting [play_move_rotate] best 4096556 combination reg byte a [ play_move_rotate::return#2 ] -Attempting to uplift remaining variables inzp[1]:53 [ play_move_leftright::return#2 ] -Uplifting [play_move_leftright] best 4096547 combination reg byte a [ play_move_leftright::return#2 ] -Attempting to uplift remaining variables inzp[1]:68 [ play_move_down::return#3 ] -Uplifting [play_move_down] best 4096540 combination reg byte x [ play_move_down::return#3 ] -Attempting to uplift remaining variables inzp[1]:112 [ render_screen_showing ] -Uplifting [] best 4096540 combination zp[1]:112 [ render_screen_showing ] -Attempting to uplift remaining variables inzp[1]:118 [ irq_sprite_ypos ] -Uplifting [] best 4096540 combination zp[1]:118 [ irq_sprite_ypos ] -Attempting to uplift remaining variables inzp[1]:120 [ irq_cnt ] -Uplifting [] best 4096540 combination zp[1]:120 [ irq_cnt ] -Attempting to uplift remaining variables inzp[1]:119 [ irq_sprite_ptr ] -Uplifting [] best 4096540 combination zp[1]:119 [ irq_sprite_ptr ] -Attempting to uplift remaining variables inzp[1]:117 [ irq_raster_next ] -Uplifting [] best 4096540 combination zp[1]:117 [ irq_raster_next ] +Uplifting [play_update_score] best 4098808 combination reg byte x [ play_update_score::removed#0 ] +Attempting to uplift remaining variables inzp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Uplifting [] best 4098808 combination zp[1]:70 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Attempting to uplift remaining variables inzp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Uplifting [] best 4098808 combination zp[1]:64 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] Attempting to uplift remaining variables inzp[1]:177 [ play_update_score::lines_before#0 ] -Uplifting [play_update_score] best 4096540 combination zp[1]:177 [ play_update_score::lines_before#0 ] +Uplifting [play_update_score] best 4098808 combination zp[1]:177 [ play_update_score::lines_before#0 ] +Attempting to uplift remaining variables inzp[1]:133 [ render_moving::$1 ] +Uplifting [render_moving] best 4098208 combination reg byte a [ render_moving::$1 ] +Attempting to uplift remaining variables inzp[1]:134 [ render_moving::$6 ] +Uplifting [render_moving] best 4097808 combination reg byte a [ render_moving::$6 ] +Attempting to uplift remaining variables inzp[1]:150 [ play_collision::return#14 ] +Uplifting [play_collision] best 4097802 combination reg byte a [ play_collision::return#14 ] +Attempting to uplift remaining variables inzp[1]:160 [ play_collision::return#13 ] +Uplifting [play_collision] best 4097796 combination reg byte a [ play_collision::return#13 ] +Attempting to uplift remaining variables inzp[1]:162 [ play_collision::return#1 ] +Uplifting [play_collision] best 4097790 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp[1]:164 [ keyboard_event_pressed::return#12 ] +Uplifting [keyboard_event_pressed] best 4097784 combination reg byte a [ keyboard_event_pressed::return#12 ] +Attempting to uplift remaining variables inzp[1]:166 [ play_collision::return#0 ] +Uplifting [play_collision] best 4097778 combination reg byte a [ play_collision::return#0 ] +Attempting to uplift remaining variables inzp[1]:168 [ play_remove_lines::return#0 ] +Uplifting [play_remove_lines] best 4097772 combination reg byte a [ play_remove_lines::return#0 ] +Attempting to uplift remaining variables inzp[1]:52 [ play_collision::return#15 ] +Uplifting [play_collision] best 4097742 combination reg byte a [ play_collision::return#15 ] +Attempting to uplift remaining variables inzp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 4097742 combination zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 ] +Attempting to uplift remaining variables inzp[1]:17 [ render_next::l#7 render_next::l#1 ] +Uplifting [render_next] best 4097742 combination zp[1]:17 [ render_next::l#7 render_next::l#1 ] +Attempting to uplift remaining variables inzp[1]:195 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 4097724 combination reg byte a [ keyboard_event_pressed::return#11 ] +Attempting to uplift remaining variables inzp[1]:30 [ render_moving::l#4 render_moving::l#1 ] +Uplifting [render_moving] best 4097724 combination zp[1]:30 [ render_moving::l#4 render_moving::l#1 ] +Attempting to uplift remaining variables inzp[1]:146 [ play_move_rotate::key_event#0 ] +Uplifting [play_move_rotate] best 4097715 combination reg byte a [ play_move_rotate::key_event#0 ] +Attempting to uplift remaining variables inzp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Uplifting [render_moving] best 4097715 combination zp[1]:29 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Attempting to uplift remaining variables inzp[1]:131 [ render_next::next_piece_char#0 ] +Uplifting [render_next] best 4097715 combination zp[1]:131 [ render_next::next_piece_char#0 ] +Attempting to uplift remaining variables inzp[1]:140 [ play_move_down::key_event#0 ] +Uplifting [play_move_down] best 4097709 combination reg byte a [ play_move_down::key_event#0 ] +Attempting to uplift remaining variables inzp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] +Uplifting [] best 4097709 combination zp[1]:28 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] +Attempting to uplift remaining variables inzp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] +Uplifting [] best 4097709 combination zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] Attempting to uplift remaining variables inzp[1]:172 [ play_spawn_current::$7 ] -Uplifting [play_spawn_current] best 4096540 combination zp[1]:172 [ play_spawn_current::$7 ] +Uplifting [play_spawn_current] best 4097709 combination zp[1]:172 [ play_spawn_current::$7 ] +Attempting to uplift remaining variables inzp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Uplifting [play_movement] best 4097709 combination zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] +Attempting to uplift remaining variables inzp[1]:141 [ play_move_down::return#0 ] +Uplifting [play_move_down] best 4097703 combination reg byte a [ play_move_down::return#0 ] +Attempting to uplift remaining variables inzp[1]:147 [ play_move_rotate::return#0 ] +Uplifting [play_move_rotate] best 4097697 combination reg byte a [ play_move_rotate::return#0 ] +Attempting to uplift remaining variables inzp[1]:199 [ keyboard_event_pressed::return#0 ] +Uplifting [keyboard_event_pressed] best 4097691 combination reg byte a [ keyboard_event_pressed::return#0 ] +Attempting to uplift remaining variables inzp[1]:200 [ keyboard_event_scan::$0 ] +Uplifting [keyboard_event_scan] best 4097685 combination reg byte a [ keyboard_event_scan::$0 ] +Attempting to uplift remaining variables inzp[1]:201 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 4097679 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp[1]:202 [ keyboard_event_scan::$3 ] +Uplifting [keyboard_event_scan] best 4097673 combination reg byte a [ keyboard_event_scan::$3 ] +Attempting to uplift remaining variables inzp[1]:203 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 4097667 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:204 [ keyboard_event_scan::$6 ] +Uplifting [keyboard_event_scan] best 4097661 combination reg byte a [ keyboard_event_scan::$6 ] +Attempting to uplift remaining variables inzp[1]:205 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 4097655 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp[1]:206 [ keyboard_event_scan::$9 ] +Uplifting [keyboard_event_scan] best 4097649 combination reg byte a [ keyboard_event_scan::$9 ] +Attempting to uplift remaining variables inzp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] +Uplifting [render_screen_original] best 4097649 combination zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] +Attempting to uplift remaining variables inzp[1]:12 [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] +Uplifting [render_bcd] best 4097629 combination reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] +Attempting to uplift remaining variables inzp[1]:11 [ render_bcd::only_low#6 ] +Uplifting [render_bcd] best 4097608 combination reg byte y [ render_bcd::only_low#6 ] +Attempting to uplift remaining variables inzp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] +Uplifting [] best 4097608 combination zp[1]:25 [ current_xpos#59 current_xpos#118 current_xpos#119 ] +Attempting to uplift remaining variables inzp[1]:24 [ render_screen_render#33 render_screen_render#64 ] +Uplifting [] best 4097608 combination zp[1]:24 [ render_screen_render#33 render_screen_render#64 ] +Attempting to uplift remaining variables inzp[1]:145 [ play_movement::render#2 ] +Uplifting [play_movement] best 4097608 combination zp[1]:145 [ play_movement::render#2 ] +Attempting to uplift remaining variables inzp[1]:41 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 4097599 combination reg byte a [ play_move_rotate::return#2 ] +Attempting to uplift remaining variables inzp[1]:53 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 4097590 combination reg byte a [ play_move_leftright::return#2 ] +Attempting to uplift remaining variables inzp[1]:68 [ play_move_down::return#3 ] +Uplifting [play_move_down] best 4097583 combination reg byte x [ play_move_down::return#3 ] +Attempting to uplift remaining variables inzp[1]:123 [ play_movement::key_event#0 ] +Uplifting [play_movement] best 4097583 combination zp[1]:123 [ play_movement::key_event#0 ] +Attempting to uplift remaining variables inzp[1]:94 [ play_init::b#2 play_init::b#1 ] +Uplifting [play_init] best 4097483 combination reg byte x [ play_init::b#2 play_init::b#1 ] +Attempting to uplift remaining variables inzp[1]:124 [ play_movement::return#3 ] +Uplifting [play_movement] best 4096883 combination reg byte a [ play_movement::return#3 ] +Attempting to uplift remaining variables inzp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 4096883 combination zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Attempting to uplift remaining variables inzp[1]:93 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 4096883 combination zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp[1]:15 [ render_screen_render#15 render_screen_render#65 ] +Uplifting [] best 4096847 combination reg byte x [ render_screen_render#15 render_screen_render#65 ] +Attempting to uplift remaining variables inzp[1]:23 [ current_ypos#13 current_ypos#97 current_ypos#98 ] +Uplifting [] best 4096811 combination reg byte x [ current_ypos#13 current_ypos#97 current_ypos#98 ] +Attempting to uplift remaining variables inzp[1]:112 [ render_screen_showing ] +Uplifting [] best 4096811 combination zp[1]:112 [ render_screen_showing ] +Attempting to uplift remaining variables inzp[1]:2 [ render_screen_show#16 render_screen_show#13 ] +Uplifting [] best 4096811 combination zp[1]:2 [ render_screen_show#16 render_screen_show#13 ] +Attempting to uplift remaining variables inzp[1]:16 [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] +Uplifting [] best 4096774 combination reg byte y [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] +Attempting to uplift remaining variables inzp[1]:3 [ render_screen_render#18 render_screen_render#11 ] +Uplifting [] best 4096774 combination zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] +Attempting to uplift remaining variables inzp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] +Uplifting [sprites_irq] best 4096774 combination zp[1]:218 [ sprites_irq::raster_sprite_gfx_modify ] +Attempting to uplift remaining variables inzp[1]:222 [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 4096762 combination reg byte x [ sprites_irq::ptr#1 ] +Attempting to uplift remaining variables inzp[1]:216 [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 4096747 combination reg byte a [ sprites_irq::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:219 [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 4096732 combination reg byte x [ sprites_irq::ptr#0 ] +Attempting to uplift remaining variables inzp[1]:118 [ irq_sprite_ypos ] +Uplifting [] best 4096732 combination zp[1]:118 [ irq_sprite_ypos ] +Attempting to uplift remaining variables inzp[1]:120 [ irq_cnt ] +Uplifting [] best 4096732 combination zp[1]:120 [ irq_cnt ] +Attempting to uplift remaining variables inzp[1]:119 [ irq_sprite_ptr ] +Uplifting [] best 4096732 combination zp[1]:119 [ irq_sprite_ptr ] +Attempting to uplift remaining variables inzp[1]:117 [ irq_raster_next ] +Uplifting [] best 4096732 combination zp[1]:117 [ irq_raster_next ] Coalescing zero page register [ zp[2]:5 [ render_score::screen#3 ] ] with [ zp[2]:7 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6 Coalescing zero page register [ zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp[1]:145 [ play_movement::render#2 ] ] - score: 2 Coalescing zero page register [ zp[2]:9 [ render_bcd::offset#6 ] ] with [ zp[2]:13 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1 @@ -16694,15 +16692,15 @@ Coalescing zero page register [ zp[1]:36 [ render_playfield::i#2 render_playfiel Coalescing zero page register [ zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 ] ] with [ zp[1]:31 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] Coalescing zero page register [ zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 ] ] with [ zp[1]:32 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] Coalescing zero page register [ zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 play_collision::piece_gfx#0 ] ] with [ zp[2]:37 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] -Coalescing zero page register [ zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] with [ zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] -Coalescing zero page register [ zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] -Coalescing zero page register [ zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ] -Coalescing zero page register [ zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ] -Coalescing zero page register [ zp[1]:83 [ keyboard_event_pressed::keycode#5 ] ] with [ zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] -Coalescing zero page register [ zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] ] with [ zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] +Coalescing zero page register [ zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] ] with [ zp[1]:42 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp[1]:46 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] +Coalescing zero page register [ zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] ] with [ zp[1]:47 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] +Coalescing zero page register [ zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp[1]:48 [ play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp[1]:49 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ] +Coalescing zero page register [ zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 ] ] with [ zp[1]:50 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ] +Coalescing zero page register [ zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] with [ zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] +Coalescing zero page register [ zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] with [ zp[1]:81 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] +Coalescing zero page register [ zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 ] ] with [ zp[1]:93 [ play_init::idx#2 play_init::idx#1 ] ] Coalescing zero page register [ zp[2]:98 [ render_init::li_1#2 render_init::li_1#1 ] ] with [ zp[2]:91 [ play_init::pli#2 play_init::pli#1 ] ] Coalescing zero page register [ zp[1]:123 [ play_movement::key_event#0 ] ] with [ zp[1]:102 [ render_screen_original::y#6 render_screen_original::y#1 ] ] Coalescing zero page register [ zp[2]:135 [ render_moving::screen_line#0 ] ] with [ zp[2]:100 [ render_init::li_2#2 render_init::li_2#1 ] ] @@ -16711,42 +16709,41 @@ Coalescing zero page register [ zp[1]:158 [ play_collision::i#1 ] ] with [ zp[1] Coalescing zero page register [ zp[1]:177 [ play_update_score::lines_before#0 ] ] with [ zp[1]:172 [ play_spawn_current::$7 ] ] Coalescing zero page register [ zp[2]:189 [ play_lock_current::playfield_line#0 ] ] with [ zp[2]:105 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] ] Coalescing zero page register [ zp[1]:191 [ play_lock_current::i#1 ] ] with [ zp[1]:187 [ play_remove_lines::c#0 ] ] -Coalescing zero page register [ zp[1]:198 [ keyboard_event_scan::row_scan#0 ] ] with [ zp[1]:193 [ keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp[2]:26 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 ] ] with [ zp[2]:18 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] Coalescing zero page register [ zp[2]:43 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 play_collision::piece_gfx#0 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] ] with [ zp[2]:20 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] -Coalescing zero page register [ zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] ] -Coalescing zero page register [ zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] ] -Coalescing zero page register [ zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] with [ zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] -Coalescing zero page register [ zp[1]:83 [ keyboard_event_pressed::keycode#5 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] with [ zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 play_collision::l#6 play_collision::l#1 ] ] -Coalescing zero page register [ zp[1]:93 [ play_init::idx#2 play_init::idx#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] with [ zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] -Coalescing zero page register [ zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] with [ zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ] +Coalescing zero page register [ zp[1]:54 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp[1]:35 [ render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] ] +Coalescing zero page register [ zp[1]:72 [ play_remove_lines::y#8 play_remove_lines::y#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] ] with [ zp[1]:36 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] ] +Coalescing zero page register [ zp[1]:73 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] ] with [ zp[1]:39 [ render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] ] +Coalescing zero page register [ zp[1]:85 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp[1]:75 [ play_remove_lines::x#2 play_remove_lines::x#1 play_collision::l#6 play_collision::l#1 ] ] +Coalescing zero page register [ zp[1]:87 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] ] with [ zp[1]:76 [ play_remove_lines::full#4 play_remove_lines::full#2 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] ] +Coalescing zero page register [ zp[1]:96 [ sprites_init::xpos#2 sprites_init::xpos#1 play_init::idx#2 play_init::idx#1 ] ] with [ zp[1]:40 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] ] Coalescing zero page register [ zp[2]:135 [ render_moving::screen_line#0 render_init::li_2#2 render_init::li_2#1 ] ] with [ zp[2]:107 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] ] Coalescing zero page register [ zp[1]:191 [ play_lock_current::i#1 play_remove_lines::c#0 ] ] with [ zp[1]:158 [ play_collision::i#1 render_next::next_piece_char#0 ] ] -Coalescing zero page register [ zp[1]:198 [ keyboard_event_scan::row_scan#0 keyboard_event_pressed::row_bits#0 ] ] with [ zp[1]:80 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ] +Coalescing zero page register [ zp[1]:198 [ keyboard_event_scan::row_scan#0 ] ] with [ zp[1]:79 [ play_lock_current::l#6 play_lock_current::l#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] ] Allocated (was zp[1]:24) zp[1]:5 [ render_screen_render#33 render_screen_render#64 render_next::l#7 render_next::l#1 ] Allocated (was zp[1]:25) zp[1]:6 [ current_xpos#59 current_xpos#118 current_xpos#119 ] Allocated (was zp[2]:26) zp[2]:7 [ current_piece_gfx#64 current_piece_gfx#111 current_piece_gfx#112 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] Allocated (was zp[1]:28) zp[1]:9 [ current_piece_char#68 current_piece_char#99 current_piece_char#100 ] Allocated (was zp[2]:43) zp[2]:10 [ current_piece#17 current_piece#95 current_piece#96 current_piece#97 current_piece#98 current_piece#99 play_collision::piece_gfx#0 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] -Allocated (was zp[1]:55) zp[1]:12 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -Allocated (was zp[2]:56) zp[2]:13 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -Allocated (was zp[1]:58) zp[1]:15 [ level#33 level#10 level#17 level#19 level#21 ] -Allocated (was zp[1]:59) zp[1]:16 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -Allocated (was zp[1]:60) zp[1]:17 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -Allocated (was zp[2]:61) zp[2]:18 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] -Allocated (was zp[1]:63) zp[1]:20 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -Allocated (was zp[1]:64) zp[1]:21 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -Allocated (was zp[2]:65) zp[2]:22 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] -Allocated (was zp[1]:67) zp[1]:24 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] -Allocated (was zp[1]:69) zp[1]:25 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -Allocated (was zp[1]:70) zp[1]:26 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] -Allocated (was zp[1]:72) zp[1]:27 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -Allocated (was zp[1]:73) zp[1]:28 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] -Allocated (was zp[1]:75) zp[1]:29 [ play_remove_lines::x#2 play_remove_lines::x#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] -Allocated (was zp[1]:83) zp[1]:30 [ keyboard_event_pressed::keycode#5 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::l#6 play_collision::l#1 ] -Allocated (was zp[1]:88) zp[1]:31 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] -Allocated (was zp[1]:93) zp[1]:32 [ play_init::idx#2 play_init::idx#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] -Allocated (was zp[1]:96) zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::l#6 play_lock_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +Allocated (was zp[1]:54) zp[1]:12 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +Allocated (was zp[1]:55) zp[1]:13 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +Allocated (was zp[2]:56) zp[2]:14 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] +Allocated (was zp[1]:58) zp[1]:16 [ level#33 level#10 level#17 level#19 level#21 ] +Allocated (was zp[1]:59) zp[1]:17 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] +Allocated (was zp[1]:60) zp[1]:18 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] +Allocated (was zp[2]:61) zp[2]:19 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] +Allocated (was zp[1]:63) zp[1]:21 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +Allocated (was zp[1]:64) zp[1]:22 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +Allocated (was zp[2]:65) zp[2]:23 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] +Allocated (was zp[1]:67) zp[1]:25 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +Allocated (was zp[1]:69) zp[1]:26 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Allocated (was zp[1]:70) zp[1]:27 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +Allocated (was zp[1]:72) zp[1]:28 [ play_remove_lines::y#8 play_remove_lines::y#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] +Allocated (was zp[1]:73) zp[1]:29 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] +Allocated (was zp[1]:85) zp[1]:30 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_remove_lines::x#2 play_remove_lines::x#1 play_collision::l#6 play_collision::l#1 ] +Allocated (was zp[1]:87) zp[1]:31 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +Allocated (was zp[1]:88) zp[1]:32 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +Allocated (was zp[1]:96) zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 play_init::idx#2 play_init::idx#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] Allocated (was zp[2]:98) zp[2]:34 [ render_init::li_1#2 render_init::li_1#1 play_init::pli#2 play_init::pli#1 ] Allocated (was zp[2]:109) zp[2]:36 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] Allocated (was zp[1]:112) zp[1]:38 [ render_screen_showing ] @@ -16762,7 +16759,7 @@ Allocated (was zp[1]:177) zp[1]:52 [ play_update_score::lines_before#0 play_spaw Allocated (was zp[4]:179) zp[4]:53 [ play_update_score::add_bcd#0 ] Allocated (was zp[2]:189) zp[2]:57 [ play_lock_current::playfield_line#0 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] Allocated (was zp[1]:191) zp[1]:59 [ play_lock_current::i#1 play_remove_lines::c#0 play_collision::i#1 render_next::next_piece_char#0 ] -Allocated (was zp[1]:198) zp[1]:60 [ keyboard_event_scan::row_scan#0 keyboard_event_pressed::row_bits#0 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] +Allocated (was zp[1]:198) zp[1]:60 [ keyboard_event_scan::row_scan#0 play_lock_current::l#6 play_lock_current::l#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] Allocated (was zp[1]:218) zp[1]:61 [ sprites_irq::raster_sprite_gfx_modify ] Interrupt procedure sprites_irq clobbers AXCNZV Removing interrupt register storage sty regy+1 in 1183 entry interrupt(HARDWARE_CLOBBER) @@ -16896,29 +16893,29 @@ ASSEMBLER BEFORE OPTIMIZATION .label irq_sprite_ptr = $2d .label irq_cnt = $2e // Keyboard event buffer size. The number of events currently in the event buffer - .label keyboard_events_size = $1f + .label keyboard_events_size = $20 // The rate of moving down the current piece (number of frames between moves if movedown is not forced) - .label current_movedown_slow = $10 - .label current_ypos = $c + .label current_movedown_slow = $11 + .label current_ypos = $d // Position of top left corner of current moving piece on the playfield - .label current_xpos = $18 + .label current_xpos = $19 // The curent piece orientation - each piece have 4 orientations (00/0x10/0x20/0x30). // The orientation chooses one of the 4 sub-graphics of the piece. - .label current_orientation = $15 + .label current_orientation = $16 // Pointer to the current piece in the current orientation. Updated each time current_orientation is updated. - .label current_piece_gfx = $16 + .label current_piece_gfx = $17 // The char of the current piece - .label current_piece_char = $14 + .label current_piece_char = $15 // Current level BCD-format - .label level_bcd = $11 + .label level_bcd = $12 // The current moving piece. Points to the start of the piece definition. - .label current_piece = $12 + .label current_piece = $13 // Is the game over? - .label game_over = $1a + .label game_over = $1b // The index of the next moving piece. (0-6) - .label next_piece_idx = $19 + .label next_piece_idx = $1a // Current level in normal (non-BCD) format - .label level = $f + .label level = $10 // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. .label render_screen_render = 3 // The screen currently to show next to the user. 0x00 for screen 1 / 0x20 for screen 2. @@ -16927,7 +16924,7 @@ ASSEMBLER BEFORE OPTIMIZATION // Counts up to the next movedown of current piece .label current_movedown_counter = 4 // Current number of cleared lines in BCD-format - .label lines_bcd = $d + .label lines_bcd = $e // The current moving piece. Points to the start of the piece definition. .label current_piece_1 = $a // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. @@ -17108,14 +17105,14 @@ main: { jmp __b16 // main::@16 __b16: - // [34] (byte) next_piece_idx#76 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 - ldx.z play_spawn_current.piece_idx + // [34] (byte) next_piece_idx#76 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 + ldy.z play_spawn_current.piece_idx // [35] call render_next // [107] phi from main::@16 to render_next [phi:main::@16->render_next] render_next_from___b16: // [107] phi (byte) next_piece_idx#12 = (byte) next_piece_idx#76 [phi:main::@16->render_next#0] -- register_copy - // [107] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 - lda #$20 + // [107] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuxx=vbuc1 + ldx #$20 jsr render_next jmp __b17 // main::@17 @@ -17229,7 +17226,8 @@ main: { jmp __b20 // main::@20 __b20: - // [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + // [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuxx=vbuaa + tax // [48] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 lda.z game_over cmp #0 @@ -17299,10 +17297,10 @@ main: { jmp __b23 // main::@23 __b23: - // [63] (byte) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 - lda.z render_screen_render - // [64] (byte) next_piece_idx#77 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 - ldx.z next_piece_idx + // [63] (byte) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + ldx.z render_screen_render + // [64] (byte) next_piece_idx#77 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 + ldy.z next_piece_idx // [65] call render_next // [107] phi from main::@23 to render_next [phi:main::@23->render_next] render_next_from___b23: @@ -17435,8 +17433,7 @@ render_score: { // render_score::@5 __b5: // [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 - lda.z lines_bcd+1 - tax + ldx.z lines_bcd+1 // [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 // [87] call render_bcd // [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] @@ -17455,8 +17452,7 @@ render_score: { // render_score::@6 __b6: // [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 - lda.z lines_bcd - tax + ldx.z lines_bcd // [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3 // [90] call render_bcd // [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] @@ -17570,8 +17566,8 @@ render_next: { .label next_piece_gfx = 7 .label screen_next_area = $a .label l = 5 - // [108] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 - cmp #0 + // [108] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuxx_eq_0_then_la1 + cpx #0 beq __b1_from_render_next // [110] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] __b2_from_render_next: @@ -17596,17 +17592,17 @@ render_next: { jmp __b2 // render_next::@2 __b2: - // [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 - txa + // [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuxx=vbuyy_rol_1 + tya asl - tay - // [112] (byte) render_next::next_piece_char#0 ← *((const byte*) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx - lda PIECES_NEXT_CHARS,x + tax + // [112] (byte) render_next::next_piece_char#0 ← *((const byte*) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy + lda PIECES_NEXT_CHARS,y sta.z next_piece_char - // [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuyy - lda PIECES,y + // [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx + lda PIECES,x sta.z next_piece_gfx - lda PIECES+1,y + lda PIECES+1,x sta.z next_piece_gfx+1 // [114] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] __b3_from___b2: @@ -17704,9 +17700,9 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label ypos = $1b + .label ypos = $c .label screen_line = $30 - .label xpos = $20 + .label xpos = $21 .label i = $1d .label l = $1c // [129] (byte) render_moving::ypos#0 ← (byte) current_ypos#13 -- vbuz1=vbuxx @@ -17826,7 +17822,7 @@ render_playfield: { // Do not render the top 2 lines. .label i = $1c .label c = $1d - .label l = $1b + .label l = $c // [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] __b1_from_render_playfield: // [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 @@ -17910,8 +17906,8 @@ render_playfield: { // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) // play_movement(byte zp($2f) key_event) play_movement: { - .label render = $20 - .label return = $20 + .label render = $21 + .label return = $21 .label key_event = $2f // [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda.z key_event @@ -17976,7 +17972,7 @@ play_movement: { // play_move_rotate(byte register(A) key_event) play_move_rotate: { // Handle keyboard events - .label orientation = $1b + .label orientation = $c // [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq __b1 @@ -18065,12 +18061,13 @@ play_move_rotate: { jmp __breturn // play_move_rotate::@1 __b1: - // [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 - lax.z current_orientation - axs #$10 - // [199] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 - lda #$3f - sax.z orientation + // [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuaa=vbuz1_minus_vbuc1 + lda.z current_orientation + sec + sbc #$10 + // [199] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuaa_band_vbuc1 + and #$3f + sta.z orientation jmp __b3_from___b1 } // play_collision @@ -18086,7 +18083,7 @@ play_collision: { .label i = $3b .label xp = $3c .label l = $1e - .label i_1 = $21 + .label i_1 = $1f // [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc @@ -18353,6 +18350,7 @@ play_move_leftright: { // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { + .label movedown = $c // [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc.z current_movedown_counter // [247] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 @@ -18365,22 +18363,23 @@ play_move_down: { __b4: // [249] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] __b1_from___b4: - // [249] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #1 + // [249] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z movedown jmp __b1 // [249] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] __b1_from_play_move_down: - // [249] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [249] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z movedown jmp __b1 // play_move_down::@1 __b1: // [250] call keyboard_event_pressed // [379] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from___b1: - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_SPACE - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_SPACE jsr keyboard_event_pressed // [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 jmp __b12 @@ -18400,8 +18399,8 @@ play_move_down: { jmp __b6 // play_move_down::@6 __b6: - // [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx + // [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + inc.z movedown // [256] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] __b2_from___b12: __b2_from___b5: @@ -18417,8 +18416,8 @@ play_move_down: { jmp __b7 // play_move_down::@7 __b7: - // [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx + // [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + inc.z movedown // [259] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] __b3_from___b2: __b3_from___b7: @@ -18426,8 +18425,9 @@ play_move_down: { jmp __b3 // play_move_down::@3 __b3: - // [260] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 - cpx #0 + // [260] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + lda.z movedown + cmp #0 beq __breturn_from___b3 jmp __b8 // play_move_down::@8 @@ -18605,7 +18605,7 @@ play_spawn_current: { .label __7 = $34 // Spawn a new next piece // Pick a random piece (0-6) - .label piece_idx = $19 + .label piece_idx = $1a // [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current ldx.z next_piece_idx @@ -18893,10 +18893,10 @@ play_increase_level: { // Returns the number of lines removed play_remove_lines: { .label c = $3b - .label x = $1d - .label y = $1b - .label removed = $1c - .label full = $1e + .label x = $1e + .label y = $1c + .label removed = $1d + .label full = $1f // [339] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] __b1_from_play_remove_lines: // [339] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 @@ -19034,12 +19034,12 @@ play_remove_lines: { // play_lock_current // Lock the current piece onto the playfield play_lock_current: { - .label yp = $c + .label yp = $d .label playfield_line = $39 - .label xp = $1e + .label xp = $1f .label i = $3b - .label l = $21 - .label i_1 = $3c + .label l = $3c + .label i_1 = $1e // [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 // [362] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] __b1_from_play_lock_current: @@ -19142,26 +19142,23 @@ play_lock_current: { // keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zp($1e) keycode) +// keyboard_event_pressed(byte register(X) keycode) keyboard_event_pressed: { - .label row_bits = $3c - .label keycode = $1e - // [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 - lda.z keycode + // [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuyy=vbuxx_ror_3 + txa lsr lsr lsr - // [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte*) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay + // [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte*) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) -- vbuyy=pbuc1_derefidx_vbuyy lda keyboard_scan_values,y - sta.z row_bits - // [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 - lda #7 - and.z keycode - // [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay - lda keyboard_matrix_col_bitmask,y - and.z row_bits + // [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuxx=vbuxx_band_vbuc1 + lda #7 + axs #0 + // [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuxx + tya + and keyboard_matrix_col_bitmask,x jmp __breturn // keyboard_event_pressed::@return __breturn: @@ -19182,9 +19179,9 @@ keyboard_event_get: { __b1: // [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec.z keyboard_events_size - // [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + // [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy.z keyboard_events_size - ldx keyboard_events,y + lda keyboard_events,y // [388] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] __breturn_from___b1: // [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy @@ -19193,8 +19190,8 @@ keyboard_event_get: { // [388] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] __breturn_from_keyboard_event_get: // [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - // [388] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 - ldx #$ff + // [388] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + lda #$ff jmp __breturn // keyboard_event_get::@return __breturn: @@ -19208,8 +19205,8 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $3c - .label keycode = $21 - .label row = $20 + .label keycode = $1f + .label row = $1e // [391] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] __b7_from_keyboard_event_scan: // [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy @@ -19272,9 +19269,8 @@ keyboard_event_scan: { // [402] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] keyboard_event_pressed_from___b17: - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_LSHIFT - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_LSHIFT jsr keyboard_event_pressed // [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 jmp __b20 @@ -19298,9 +19294,8 @@ keyboard_event_scan: { // [408] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] keyboard_event_pressed_from___b1: - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_RSHIFT - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_RSHIFT jsr keyboard_event_pressed // [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 jmp __b21 @@ -19324,9 +19319,8 @@ keyboard_event_scan: { // [414] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] keyboard_event_pressed_from___b2: - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_CTRL - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_CTRL jsr keyboard_event_pressed // [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 jmp __b22 @@ -19350,9 +19344,8 @@ keyboard_event_scan: { // [420] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] keyboard_event_pressed_from___b3: - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_COMMODORE - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_COMMODORE jsr keyboard_event_pressed // [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 jmp __b23 @@ -19536,7 +19529,7 @@ render_show: { play_init: { .label pli = $22 // Initialize the playfield line pointers; - .label idx = $20 + .label idx = $21 // [456] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] __b1_from_play_init: // [456] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 @@ -21080,84 +21073,84 @@ FINAL SYMBOL TABLE (const byte) VIC_ECM = (byte) $40 (const byte) VIC_RSEL = (byte) 8 (byte) current_movedown_counter -(byte) current_movedown_counter#12 current_movedown_counter zp[1]:4 0.5333333333333333 -(byte) current_movedown_counter#14 current_movedown_counter zp[1]:4 3.081081081081081 -(byte) current_movedown_counter#16 current_movedown_counter zp[1]:4 8.769230769230768 +(byte) current_movedown_counter#12 current_movedown_counter zp[1]:4 26666.933333333334 +(byte) current_movedown_counter#14 current_movedown_counter zp[1]:4 2732.5135135135133 +(byte) current_movedown_counter#16 current_movedown_counter zp[1]:4 7777.153846153846 (const byte) current_movedown_fast = (byte) $a (byte) current_movedown_slow -(byte) current_movedown_slow#1 current_movedown_slow zp[1]:16 0.17391304347826086 -(byte) current_movedown_slow#10 current_movedown_slow zp[1]:16 4.0 -(byte) current_movedown_slow#14 current_movedown_slow zp[1]:16 2.214285714285714 -(byte) current_movedown_slow#21 current_movedown_slow zp[1]:16 3.135135135135135 -(byte) current_movedown_slow#23 current_movedown_slow zp[1]:16 1.1428571428571428 -(byte) current_movedown_slow#37 current_movedown_slow zp[1]:16 6.0 -(byte) current_movedown_slow#65 current_movedown_slow zp[1]:16 0.26666666666666666 +(byte) current_movedown_slow#1 current_movedown_slow zp[1]:17 4.869565217391305 +(byte) current_movedown_slow#10 current_movedown_slow zp[1]:17 2.0000002E7 +(byte) current_movedown_slow#14 current_movedown_slow zp[1]:17 41091.392857142855 +(byte) current_movedown_slow#21 current_movedown_slow zp[1]:17 5435.243243243243 +(byte) current_movedown_slow#23 current_movedown_slow zp[1]:17 442857.7142857142 +(byte) current_movedown_slow#37 current_movedown_slow zp[1]:17 300003.0 +(byte) current_movedown_slow#65 current_movedown_slow zp[1]:17 733333.4666666666 (byte) current_orientation -(byte) current_orientation#13 current_orientation zp[1]:21 3.189189189189189 -(byte) current_orientation#17 current_orientation zp[1]:21 5.523809523809523 -(byte) current_orientation#20 current_orientation zp[1]:21 0.36734693877551017 -(byte) current_orientation#25 current_orientation zp[1]:21 1.3333333333333333 -(byte) current_orientation#37 current_orientation zp[1]:21 4.0 -(byte) current_orientation#7 current_orientation zp[1]:21 3.0 +(byte) current_orientation#13 current_orientation zp[1]:22 8137.972972972973 +(byte) current_orientation#17 current_orientation zp[1]:22 1004.952380952381 +(byte) current_orientation#20 current_orientation zp[1]:22 16530.79591836735 +(byte) current_orientation#25 current_orientation zp[1]:22 51667.33333333333 +(byte) current_orientation#37 current_orientation zp[1]:22 200002.0 +(byte) current_orientation#7 current_orientation zp[1]:22 150001.5 (byte*) current_piece -(byte*) current_piece#10 current_piece zp[2]:18 3.243243243243243 -(byte*) current_piece#101 current_piece zp[2]:18 2.0 -(byte*) current_piece#15 current_piece zp[2]:18 1.5897435897435892 -(byte*) current_piece#17 current_piece_1 zp[2]:10 12.0 -(byte*) current_piece#28 current_piece zp[2]:18 6.0 -(byte*) current_piece#92 current_piece zp[2]:18 2.0 -(byte*) current_piece#95 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#96 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#97 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#98 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#99 current_piece_1 zp[2]:10 4.0 +(byte*) current_piece#10 current_piece zp[2]:19 8138.27027027027 +(byte*) current_piece#101 current_piece zp[2]:19 11.0 +(byte*) current_piece#15 current_piece zp[2]:19 7706.51282051282 +(byte*) current_piece#17 current_piece_1 zp[2]:10 1.1400006E7 +(byte*) current_piece#28 current_piece zp[2]:19 300003.0 +(byte*) current_piece#92 current_piece zp[2]:19 100001.0 +(byte*) current_piece#95 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#96 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#97 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#98 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#99 current_piece_1 zp[2]:10 2000002.0 (byte) current_piece_char -(byte) current_piece_char#10 current_piece_char zp[1]:20 183.9818181818182 -(byte) current_piece_char#100 current_piece_char_1 zp[1]:9 22.0 -(byte) current_piece_char#16 current_piece_char zp[1]:20 3.4324324324324325 -(byte) current_piece_char#29 current_piece_char zp[1]:20 6.0 -(byte) current_piece_char#5 current_piece_char zp[1]:20 0.25 -(byte) current_piece_char#68 current_piece_char_1 zp[1]:9 48.285714285714285 -(byte) current_piece_char#99 current_piece_char_1 zp[1]:9 4.0 +(byte) current_piece_char#10 current_piece_char zp[1]:21 1.8182183847272727E8 +(byte) current_piece_char#100 current_piece_char_1 zp[1]:9 202.0 +(byte) current_piece_char#16 current_piece_char zp[1]:21 5437.9729729729725 +(byte) current_piece_char#29 current_piece_char zp[1]:21 300003.0 +(byte) current_piece_char#5 current_piece_char zp[1]:21 34375.75 +(byte) current_piece_char#68 current_piece_char_1 zp[1]:9 47624.42857142857 +(byte) current_piece_char#99 current_piece_char_1 zp[1]:9 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#111 current_piece_gfx_1 zp[2]:7 2.0 -(byte*) current_piece_gfx#112 current_piece_gfx_1 zp[2]:7 11.0 -(byte*) current_piece_gfx#116 current_piece_gfx zp[2]:22 4.0 -(byte*) current_piece_gfx#123 current_piece_gfx zp[2]:22 4.0 -(byte*) current_piece_gfx#13 current_piece_gfx zp[2]:22 183.9818181818182 -(byte*) current_piece_gfx#18 current_piece_gfx zp[2]:22 6.047619047619047 -(byte*) current_piece_gfx#20 current_piece_gfx zp[2]:22 0.37037037037037035 -(byte*) current_piece_gfx#21 current_piece_gfx zp[2]:22 1.3333333333333333 -(byte*) current_piece_gfx#35 current_piece_gfx zp[2]:22 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx_1 zp[2]:7 48.285714285714285 -(byte*) current_piece_gfx#7 current_piece_gfx zp[2]:22 4.0 +(byte*) current_piece_gfx#111 current_piece_gfx_1 zp[2]:7 11.0 +(byte*) current_piece_gfx#112 current_piece_gfx_1 zp[2]:7 101.0 +(byte*) current_piece_gfx#116 current_piece_gfx zp[2]:23 200002.0 +(byte*) current_piece_gfx#123 current_piece_gfx zp[2]:23 22.0 +(byte*) current_piece_gfx#13 current_piece_gfx zp[2]:23 1.8182183847272727E8 +(byte*) current_piece_gfx#18 current_piece_gfx zp[2]:23 1009.7619047619048 +(byte*) current_piece_gfx#20 current_piece_gfx zp[2]:23 15185.37037037037 +(byte*) current_piece_gfx#21 current_piece_gfx zp[2]:23 51667.33333333333 +(byte*) current_piece_gfx#35 current_piece_gfx zp[2]:23 300003.0 +(byte*) current_piece_gfx#64 current_piece_gfx_1 zp[2]:7 47624.42857142857 +(byte*) current_piece_gfx#7 current_piece_gfx zp[2]:23 200002.0 (byte) current_xpos -(byte) current_xpos#100 current_xpos zp[1]:24 0.3225806451612903 -(byte) current_xpos#118 current_xpos_1 zp[1]:6 1.3333333333333333 -(byte) current_xpos#119 current_xpos_1 zp[1]:6 7.333333333333333 -(byte) current_xpos#14 current_xpos zp[1]:24 20.38181818181818 -(byte) current_xpos#19 current_xpos zp[1]:24 6.047619047619047 -(byte) current_xpos#22 current_xpos zp[1]:24 0.7999999999999999 -(byte) current_xpos#26 current_xpos zp[1]:24 0.4666666666666666 -(byte) current_xpos#43 current_xpos zp[1]:24 6.0 -(byte) current_xpos#59 current_xpos_1 zp[1]:6 5.428571428571429 -(byte) current_xpos#6 current_xpos zp[1]:24 4.0 -(byte) current_xpos#8 current_xpos zp[1]:24 4.0 +(byte) current_xpos#100 current_xpos zp[1]:25 67742.74193548388 +(byte) current_xpos#118 current_xpos_1 zp[1]:6 7.333333333333333 +(byte) current_xpos#119 current_xpos_1 zp[1]:6 67.33333333333333 +(byte) current_xpos#14 current_xpos zp[1]:25 1.8187293036363635E7 +(byte) current_xpos#19 current_xpos zp[1]:25 1009.7619047619048 +(byte) current_xpos#22 current_xpos zp[1]:25 36400.4 +(byte) current_xpos#26 current_xpos zp[1]:25 20333.566666666666 +(byte) current_xpos#43 current_xpos zp[1]:25 300003.0 +(byte) current_xpos#59 current_xpos_1 zp[1]:6 4767.285714285714 +(byte) current_xpos#6 current_xpos zp[1]:25 200002.0 +(byte) current_xpos#8 current_xpos zp[1]:25 200002.0 (byte) current_ypos -(byte) current_ypos#11 current_ypos zp[1]:12 3.297297297297297 -(byte) current_ypos#13 reg byte x 15.0 -(byte) current_ypos#19 current_ypos zp[1]:12 1.7051282051282046 -(byte) current_ypos#3 current_ypos zp[1]:12 4.0 -(byte) current_ypos#38 current_ypos zp[1]:12 6.0 -(byte) current_ypos#6 current_ypos zp[1]:12 0.3333333333333333 -(byte) current_ypos#97 reg byte x 1.0 -(byte) current_ypos#98 reg byte x 4.4 +(byte) current_ypos#11 current_ypos zp[1]:13 35165.32432432432 +(byte) current_ypos#13 reg byte x 1113.0 +(byte) current_ypos#19 current_ypos zp[1]:13 6425.74358974359 +(byte) current_ypos#3 current_ypos zp[1]:13 200002.0 +(byte) current_ypos#38 current_ypos zp[1]:13 300003.0 +(byte) current_ypos#6 current_ypos zp[1]:13 70000.83333333334 +(byte) current_ypos#97 reg byte x 5.5 +(byte) current_ypos#98 reg byte x 40.4 (byte) game_over -(byte) game_over#10 game_over zp[1]:26 4.804347826086958 -(byte) game_over#15 game_over zp[1]:26 3.189189189189189 -(byte) game_over#27 game_over zp[1]:26 6.0 -(byte) game_over#52 game_over zp[1]:26 0.34782608695652173 -(byte) game_over#65 game_over zp[1]:26 0.42857142857142855 +(byte) game_over#10 game_over zp[1]:27 6567.760869565218 +(byte) game_over#15 game_over zp[1]:27 5705.54054054054 +(byte) game_over#27 game_over zp[1]:27 300003.0 +(byte) game_over#52 game_over zp[1]:27 47827.13043478261 +(byte) game_over#65 game_over zp[1]:27 78572.35714285714 (byte) irq_cnt loadstore zp[1]:46 0.48000000000000004 (byte) irq_raster_next loadstore zp[1]:43 0.44444444444444453 (byte) irq_sprite_ptr loadstore zp[1]:45 0.45161290322580644 @@ -21166,32 +21159,32 @@ FINAL SYMBOL TABLE (label) keyboard_event_get::@1 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte x 4.0 -(byte) keyboard_event_get::return#2 reg byte x 34.33333333333333 -(byte) keyboard_event_get::return#3 reg byte x 202.0 +(byte) keyboard_event_get::return#1 reg byte a 20002.0 +(byte) keyboard_event_get::return#2 reg byte a 3667.333333333333 +(byte) keyboard_event_get::return#3 reg byte a 2002.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 reg byte a 4.0 -(byte~) keyboard_event_pressed::$1 reg byte a 4.0 +(byte~) keyboard_event_pressed::$0 reg byte y 2000002.0 +(byte~) keyboard_event_pressed::$1 reg byte x 2000002.0 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#5 keycode zp[1]:30 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#5 reg byte x 666667.3333333334 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 reg byte a 4.0 -(byte) keyboard_event_pressed::return#1 reg byte a 4.0 -(byte) keyboard_event_pressed::return#10 reg byte a 4.0 -(byte) keyboard_event_pressed::return#11 reg byte a 1.714285714285714 -(byte) keyboard_event_pressed::return#12 reg byte a 4.0 -(byte) keyboard_event_pressed::return#2 reg byte a 4.0 +(byte) keyboard_event_pressed::return#0 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#1 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#10 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#11 reg byte a 162858.0 +(byte) keyboard_event_pressed::return#12 reg byte a 200002.0 +(byte) keyboard_event_pressed::return#2 reg byte a 20002.0 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:60 2.0 +(byte) keyboard_event_pressed::row_bits#0 reg byte y 1000001.0 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 reg byte a 4.0 -(byte~) keyboard_event_scan::$15 reg byte a 20002.0 -(byte~) keyboard_event_scan::$16 reg byte a 20002.0 -(byte~) keyboard_event_scan::$23 reg byte a 20002.0 -(byte~) keyboard_event_scan::$3 reg byte a 4.0 -(byte~) keyboard_event_scan::$6 reg byte a 4.0 -(byte~) keyboard_event_scan::$9 reg byte a 4.0 +(byte~) keyboard_event_scan::$0 reg byte a 20002.0 +(byte~) keyboard_event_scan::$15 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$16 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$23 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$3 reg byte a 20002.0 +(byte~) keyboard_event_scan::$6 reg byte a 20002.0 +(byte~) keyboard_event_scan::$9 reg byte a 20002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -21217,64 +21210,64 @@ FINAL SYMBOL TABLE (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 15001.5 -(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 +(byte) keyboard_event_scan::col#1 reg byte x 1.500000015E8 +(byte) keyboard_event_scan::col#2 reg byte x 2.857142885714286E7 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2.00000002E8 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp[1]:33 2002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp[1]:33 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 keycode zp[1]:33 500.5 -(byte) keyboard_event_scan::keycode#13 keycode zp[1]:33 1001.0 -(byte) keyboard_event_scan::keycode#14 keycode zp[1]:33 5250.75 +(byte) keyboard_event_scan::keycode#1 keycode zp[1]:31 2.0000002E7 +(byte) keyboard_event_scan::keycode#10 keycode zp[1]:31 3.153846192307692E7 +(byte) keyboard_event_scan::keycode#11 keycode zp[1]:31 5000000.5 +(byte) keyboard_event_scan::keycode#13 keycode zp[1]:31 1.0000001E7 +(byte) keyboard_event_scan::keycode#14 keycode zp[1]:31 5.250000075E7 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp[1]:32 1501.5 -(byte) keyboard_event_scan::row#2 row zp[1]:32 600.24 +(byte) keyboard_event_scan::row#1 row zp[1]:30 1.50000015E7 +(byte) keyboard_event_scan::row#2 row zp[1]:30 6000000.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:60 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:60 1.2777778055555556E7 (const byte*) keyboard_events[(number) 8] = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp[1]:31 20002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp[1]:31 8100.9000000000015 -(byte) keyboard_events_size#13 keyboard_events_size zp[1]:31 97.06451612903226 -(byte) keyboard_events_size#16 keyboard_events_size zp[1]:31 4.461538461538461 -(byte) keyboard_events_size#19 keyboard_events_size zp[1]:31 18.999999999999996 -(byte) keyboard_events_size#2 keyboard_events_size zp[1]:31 20002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp[1]:31 10201.2 -(byte) keyboard_events_size#30 keyboard_events_size zp[1]:31 429.2857142857143 -(byte) keyboard_events_size#4 keyboard_events_size zp[1]:31 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp[1]:32 2.00000002E8 +(byte) keyboard_events_size#10 keyboard_events_size zp[1]:32 8.100000089999999E7 +(byte) keyboard_events_size#13 keyboard_events_size zp[1]:32 968709.870967742 +(byte) keyboard_events_size#16 keyboard_events_size zp[1]:32 811.6923076923076 +(byte) keyboard_events_size#19 keyboard_events_size zp[1]:32 1850.5 +(byte) keyboard_events_size#2 keyboard_events_size zp[1]:32 2.00000002E8 +(byte) keyboard_events_size#29 keyboard_events_size zp[1]:32 1.020000012E8 +(byte) keyboard_events_size#30 keyboard_events_size zp[1]:32 4287143.428571429 +(byte) keyboard_events_size#4 keyboard_events_size zp[1]:32 15001.5 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 -(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 reg byte a 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.10000002E8 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (byte) keyboard_modifiers (const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) } (byte) level -(byte) level#10 level zp[1]:15 1.909090909090909 -(byte) level#17 level zp[1]:15 3.135135135135135 -(byte) level#19 level zp[1]:15 1.1428571428571428 -(byte) level#21 level zp[1]:15 0.4444444444444444 -(byte) level#33 level zp[1]:15 6.0 +(byte) level#10 level zp[1]:16 185168.31818181818 +(byte) level#17 level zp[1]:16 5435.243243243243 +(byte) level#19 level zp[1]:16 442857.7142857142 +(byte) level#21 level zp[1]:16 1722222.4444444445 +(byte) level#33 level zp[1]:16 300003.0 (byte) level_bcd -(byte) level_bcd#11 level_bcd zp[1]:17 2.0 -(byte) level_bcd#17 level_bcd zp[1]:17 1.9999999999999998 -(byte) level_bcd#19 level_bcd zp[1]:17 1.1428571428571428 -(byte) level_bcd#21 level_bcd zp[1]:17 2.6666666666666665 -(byte) level_bcd#31 level_bcd zp[1]:17 6.0 -(byte) level_bcd#62 level_bcd zp[1]:17 0.6000000000000001 -(byte) level_bcd#8 level_bcd zp[1]:17 4.0 +(byte) level_bcd#11 level_bcd zp[1]:18 200018.1475409836 +(byte) level_bcd#17 level_bcd zp[1]:18 3425.508474576271 +(byte) level_bcd#19 level_bcd zp[1]:18 442857.7142857142 +(byte) level_bcd#21 level_bcd zp[1]:18 1.3333334666666666E7 +(byte) level_bcd#31 level_bcd zp[1]:18 300003.0 +(byte) level_bcd#62 level_bcd zp[1]:18 2100000.3 +(byte) level_bcd#8 level_bcd zp[1]:18 2.0000002E7 (word) lines_bcd -(word) lines_bcd#15 lines_bcd zp[2]:13 2.0338983050847457 -(word) lines_bcd#17 lines_bcd zp[2]:13 1.1428571428571428 -(word) lines_bcd#19 lines_bcd zp[2]:13 2.4400000000000004 -(word) lines_bcd#26 lines_bcd zp[2]:13 6.0 -(word) lines_bcd#29 lines_bcd zp[2]:13 1.0 +(word) lines_bcd#15 lines_bcd zp[2]:14 3442.4745762711864 +(word) lines_bcd#17 lines_bcd zp[2]:14 442857.7142857142 +(word) lines_bcd#19 lines_bcd zp[2]:14 64022.14 +(word) lines_bcd#26 lines_bcd zp[2]:14 300003.0 +(word) lines_bcd#29 lines_bcd zp[2]:14 500000.5 (void()) main() (label) main::@1 (label) main::@10 @@ -21302,20 +21295,20 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 reg byte x 101.0 +(byte) main::key_event#0 reg byte x 1001.0 (byte) main::render -(byte) main::render#1 reg byte a 202.0 +(byte) main::render#1 reg byte a 2002.0 (byte) next_piece_idx -(byte) next_piece_idx#10 next_piece_idx zp[1]:25 2.608695652173914 -(byte) next_piece_idx#12 reg byte x 3.4 -(byte) next_piece_idx#16 next_piece_idx zp[1]:25 3.4324324324324325 -(byte) next_piece_idx#17 next_piece_idx zp[1]:25 6.0 -(byte) next_piece_idx#30 next_piece_idx zp[1]:25 6.0 -(byte) next_piece_idx#76 reg byte x 4.0 -(byte) next_piece_idx#77 reg byte x 22.0 +(byte) next_piece_idx#10 next_piece_idx zp[1]:26 6546.0 +(byte) next_piece_idx#12 reg byte y 422.79999999999995 +(byte) next_piece_idx#16 next_piece_idx zp[1]:26 5437.9729729729725 +(byte) next_piece_idx#17 next_piece_idx zp[1]:26 1100013.0 +(byte) next_piece_idx#30 next_piece_idx zp[1]:26 300003.0 +(byte) next_piece_idx#76 reg byte y 22.0 +(byte) next_piece_idx#77 reg byte y 202.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$14 reg byte a 2002.0 -(byte~) play_collision::$5 reg byte a 20002.0 +(byte~) play_collision::$14 reg byte a 2.0000000002E10 +(byte~) play_collision::$5 reg byte a 2.00000000002E11 (label) play_collision::@1 (label) play_collision::@10 (label) play_collision::@2 @@ -21328,58 +21321,58 @@ FINAL SYMBOL TABLE (label) play_collision::@9 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 10001.0 -(byte) play_collision::c#2 reg byte x 2222.4444444444443 +(byte) play_collision::c#1 reg byte x 1.00000000001E11 +(byte) play_collision::c#2 reg byte x 2.2222222222444443E10 (byte) play_collision::i -(byte) play_collision::i#1 i zp[1]:59 1615.6153846153845 -(byte) play_collision::i#10 i_1 zp[1]:33 2002.0 -(byte) play_collision::i#12 i_1 zp[1]:33 20002.0 -(byte) play_collision::i#2 i_1 zp[1]:33 15502.0 -(byte) play_collision::i#3 i_1 zp[1]:33 500.5 +(byte) play_collision::i#1 i zp[1]:59 1.6153846154076923E10 +(byte) play_collision::i#10 i_1 zp[1]:31 2.0000000002E10 +(byte) play_collision::i#12 i_1 zp[1]:31 2.00000000002E11 +(byte) play_collision::i#2 i_1 zp[1]:31 1.55000000002E11 +(byte) play_collision::i#3 i_1 zp[1]:31 5.0000000005E9 (byte) play_collision::l -(byte) play_collision::l#1 l zp[1]:30 1001.0 -(byte) play_collision::l#6 l zp[1]:30 117.76470588235294 +(byte) play_collision::l#1 l zp[1]:30 1.0000000001E10 +(byte) play_collision::l#6 l zp[1]:30 1.1764705883529413E9 (byte) play_collision::orientation -(byte) play_collision::orientation#0 reg byte x 2.0 -(byte) play_collision::orientation#1 reg byte x 2.0 -(byte) play_collision::orientation#2 reg byte x 2.0 -(byte) play_collision::orientation#3 reg byte x 2.0 -(byte) play_collision::orientation#5 reg byte x 10.0 +(byte) play_collision::orientation#0 reg byte x 100001.0 +(byte) play_collision::orientation#1 reg byte x 100001.0 +(byte) play_collision::orientation#2 reg byte x 100001.0 +(byte) play_collision::orientation#3 reg byte x 100001.0 +(byte) play_collision::orientation#5 reg byte x 1.0400005E7 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp[2]:10 476.3333333333333 +(byte*) play_collision::piece_gfx#0 piece_gfx zp[2]:10 4.762380952476191E9 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp[2]:50 785.8571428571429 +(byte*) play_collision::playfield_line#0 playfield_line zp[2]:50 7.857142857285714E9 (byte) play_collision::return -(byte) play_collision::return#0 reg byte a 4.0 -(byte) play_collision::return#1 reg byte a 4.0 -(byte) play_collision::return#10 reg byte a 4.0 -(byte) play_collision::return#13 reg byte a 4.0 -(byte) play_collision::return#14 reg byte a 4.0 -(byte) play_collision::return#15 reg byte a 1.4285714285714284 +(byte) play_collision::return#0 reg byte a 200002.0 +(byte) play_collision::return#1 reg byte a 200002.0 +(byte) play_collision::return#10 reg byte a 2000002.0 +(byte) play_collision::return#13 reg byte a 200002.0 +(byte) play_collision::return#14 reg byte a 200002.0 +(byte) play_collision::return#15 reg byte a 200000.7142857143 (byte) play_collision::xp -(byte) play_collision::xp#1 xp zp[1]:60 5000.5 -(byte) play_collision::xp#2 xp zp[1]:60 6375.75 -(byte) play_collision::xp#8 xp zp[1]:60 2002.0 +(byte) play_collision::xp#1 xp zp[1]:60 5.00000000005E10 +(byte) play_collision::xp#2 xp zp[1]:60 6.375000000075E10 +(byte) play_collision::xp#8 xp zp[1]:60 2.0000000002E10 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp[1]:28 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#2 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#3 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#4 xpos zp[1]:28 1.3333333333333333 -(byte) play_collision::xpos#6 xpos zp[1]:28 45.95454545454545 +(byte) play_collision::xpos#0 xpos zp[1]:28 66667.33333333333 +(byte) play_collision::xpos#1 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#2 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#3 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#4 xpos zp[1]:28 666667.3333333334 +(byte) play_collision::xpos#6 xpos zp[1]:28 4.546090911818181E8 (byte) play_collision::yp -(byte) play_collision::yp#0 yp zp[1]:29 6.0 -(byte) play_collision::yp#1 yp zp[1]:29 500.5 -(byte) play_collision::yp#2 yp zp[1]:29 812.875 +(byte) play_collision::yp#0 yp zp[1]:29 5700003.0 +(byte) play_collision::yp#1 yp zp[1]:29 5.0000000005E9 +(byte) play_collision::yp#2 yp zp[1]:29 8.1256250003125E9 (byte) play_collision::ypos -(byte) play_collision::ypos#0 ypos zp[1]:29 1.0 -(byte) play_collision::ypos#1 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#2 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#3 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#4 ypos zp[1]:29 2.0 +(byte) play_collision::ypos#0 ypos zp[1]:29 50000.5 +(byte) play_collision::ypos#1 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#2 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#3 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#4 ypos zp[1]:29 1000001.0 (void()) play_increase_level() -(byte~) play_increase_level::$1 reg byte a 4.0 -(byte~) play_increase_level::$5 reg byte a 4004.0 +(byte~) play_increase_level::$1 reg byte a 2.0000002E7 +(byte~) play_increase_level::$5 reg byte a 4.0000000004E10 (label) play_increase_level::@1 (label) play_increase_level::@2 (label) play_increase_level::@3 @@ -21388,29 +21381,29 @@ FINAL SYMBOL TABLE (label) play_increase_level::@6 (label) play_increase_level::@return (byte) play_increase_level::b -(byte) play_increase_level::b#1 reg byte x 1501.5 -(byte) play_increase_level::b#2 reg byte x 1001.0 +(byte) play_increase_level::b#1 reg byte x 1.50000000015E10 +(byte) play_increase_level::b#2 reg byte x 1.0000000001E10 (void()) play_init() -(byte~) play_init::$2 reg byte x 22.0 -(byte~) play_init::$3 reg byte a 33.0 +(byte~) play_init::$2 reg byte x 2002.0 +(byte~) play_init::$3 reg byte a 3003.0 (label) play_init::@1 (label) play_init::@2 (label) play_init::@3 (label) play_init::@return (byte) play_init::b -(byte) play_init::b#1 reg byte x 16.5 -(byte) play_init::b#2 reg byte x 11.0 +(byte) play_init::b#1 reg byte x 1501.5 +(byte) play_init::b#2 reg byte x 1001.0 (byte) play_init::idx -(byte) play_init::idx#1 idx zp[1]:32 7.333333333333333 -(byte) play_init::idx#2 idx zp[1]:32 6.6000000000000005 +(byte) play_init::idx#1 idx zp[1]:33 667.3333333333334 +(byte) play_init::idx#2 idx zp[1]:33 600.5999999999999 (byte) play_init::j -(byte) play_init::j#1 reg byte y 16.5 -(byte) play_init::j#2 reg byte y 7.333333333333333 +(byte) play_init::j#1 reg byte y 1501.5 +(byte) play_init::j#2 reg byte y 667.3333333333334 (byte*) play_init::pli -(byte*) play_init::pli#1 pli zp[2]:34 5.5 -(byte*) play_init::pli#2 pli zp[2]:34 8.25 +(byte*) play_init::pli#1 pli zp[2]:34 500.5 +(byte*) play_init::pli#2 pli zp[2]:34 750.75 (void()) play_lock_current() -(byte~) play_lock_current::$4 reg byte a 2002.0 +(byte~) play_lock_current::$4 reg byte a 2.000000002E9 (label) play_lock_current::@1 (label) play_lock_current::@2 (label) play_lock_current::@3 @@ -21420,30 +21413,30 @@ FINAL SYMBOL TABLE (label) play_lock_current::@7 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 10001.0 -(byte) play_lock_current::c#2 reg byte x 4000.4 +(byte) play_lock_current::c#1 reg byte x 1.0000000001E10 +(byte) play_lock_current::c#2 reg byte x 4.0000000004E9 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp[1]:59 2333.6666666666665 -(byte) play_lock_current::i#2 i_1 zp[1]:60 15502.0 -(byte) play_lock_current::i#3 i_1 zp[1]:60 500.5 -(byte) play_lock_current::i#7 i_1 zp[1]:60 2002.0 -(byte) play_lock_current::i#9 i_1 zp[1]:60 20002.0 +(byte) play_lock_current::i#1 i zp[1]:59 2.333333333666667E9 +(byte) play_lock_current::i#2 i_1 zp[1]:30 1.5500000002E10 +(byte) play_lock_current::i#3 i_1 zp[1]:30 5.000000005E8 +(byte) play_lock_current::i#7 i_1 zp[1]:30 2.000000002E9 +(byte) play_lock_current::i#9 i_1 zp[1]:30 2.0000000002E10 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp[1]:33 1001.0 -(byte) play_lock_current::l#6 l zp[1]:33 154.0 +(byte) play_lock_current::l#1 l zp[1]:60 1.000000001E9 +(byte) play_lock_current::l#6 l zp[1]:60 1.53846154E8 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp[2]:57 1100.2 +(byte*) play_lock_current::playfield_line#0 playfield_line zp[2]:57 1.1000000002E9 (byte) play_lock_current::xp -(byte) play_lock_current::xp#0 xp zp[1]:30 2002.0 -(byte) play_lock_current::xp#1 xp zp[1]:30 5000.5 -(byte) play_lock_current::xp#2 xp zp[1]:30 7751.0 +(byte) play_lock_current::xp#0 xp zp[1]:31 2.000000002E9 +(byte) play_lock_current::xp#1 xp zp[1]:31 5.0000000005E9 +(byte) play_lock_current::xp#2 xp zp[1]:31 7.750000001E9 (byte) play_lock_current::yp -(byte) play_lock_current::yp#0 yp zp[1]:12 4.0 -(byte) play_lock_current::yp#1 yp zp[1]:12 500.5 -(byte) play_lock_current::yp#2 yp zp[1]:12 250.41666666666669 +(byte) play_lock_current::yp#0 yp zp[1]:13 2000002.0 +(byte) play_lock_current::yp#1 yp zp[1]:13 5.000000005E8 +(byte) play_lock_current::yp#2 yp zp[1]:13 2.500833336666667E8 (byte()) play_move_down((byte) play_move_down::key_event) -(byte~) play_move_down::$12 reg byte a 4.0 -(byte~) play_move_down::$2 reg byte a 4.0 +(byte~) play_move_down::$12 reg byte a 200002.0 +(byte~) play_move_down::$2 reg byte a 200002.0 (label) play_move_down::@1 (label) play_move_down::@10 (label) play_move_down::@11 @@ -21463,21 +21456,21 @@ FINAL SYMBOL TABLE (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 2.0 +(byte) play_move_down::key_event#0 reg byte a 55001.0 (byte) play_move_down::movedown -(byte) play_move_down::movedown#10 reg byte x 1.0 -(byte) play_move_down::movedown#2 reg byte x 4.0 -(byte) play_move_down::movedown#3 reg byte x 4.0 -(byte) play_move_down::movedown#6 reg byte x 6.0 -(byte) play_move_down::movedown#7 reg byte x 5.0 +(byte) play_move_down::movedown#10 movedown zp[1]:12 50000.5 +(byte) play_move_down::movedown#2 movedown zp[1]:12 200002.0 +(byte) play_move_down::movedown#3 movedown zp[1]:12 200002.0 +(byte) play_move_down::movedown#6 movedown zp[1]:12 300003.0 +(byte) play_move_down::movedown#7 movedown zp[1]:12 250002.5 (byte) play_move_down::removed -(byte) play_move_down::removed#0 reg byte a 4.0 +(byte) play_move_down::removed#0 reg byte a 200002.0 (byte) play_move_down::return -(byte) play_move_down::return#0 reg byte a 4.0 -(byte) play_move_down::return#3 reg byte x 0.6666666666666666 +(byte) play_move_down::return#0 reg byte a 20002.0 +(byte) play_move_down::return#3 reg byte x 3333.6666666666665 (byte()) play_move_leftright((byte) play_move_leftright::key_event) -(byte~) play_move_leftright::$4 reg byte a 4.0 -(byte~) play_move_leftright::$8 reg byte a 4.0 +(byte~) play_move_leftright::$4 reg byte a 200002.0 +(byte~) play_move_leftright::$8 reg byte a 200002.0 (label) play_move_leftright::@1 (label) play_move_leftright::@2 (label) play_move_leftright::@3 @@ -21487,14 +21480,14 @@ FINAL SYMBOL TABLE (label) play_move_leftright::@7 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 3.0 +(byte) play_move_leftright::key_event#0 reg byte a 105001.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 reg byte a 4.0 -(byte) play_move_leftright::return#2 reg byte a 0.6666666666666666 +(byte) play_move_leftright::return#0 reg byte a 20002.0 +(byte) play_move_leftright::return#2 reg byte a 3333.6666666666665 (byte()) play_move_rotate((byte) play_move_rotate::key_event) -(byte~) play_move_rotate::$2 reg byte a 4.0 -(byte~) play_move_rotate::$5 reg byte x 4.0 -(byte~) play_move_rotate::$7 reg byte x 4.0 +(byte~) play_move_rotate::$2 reg byte a 200002.0 +(byte~) play_move_rotate::$5 reg byte x 200002.0 +(byte~) play_move_rotate::$7 reg byte a 200002.0 (label) play_move_rotate::@1 (label) play_move_rotate::@2 (label) play_move_rotate::@3 @@ -21503,31 +21496,31 @@ FINAL SYMBOL TABLE (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 3.0 +(byte) play_move_rotate::key_event#0 reg byte a 105001.5 (byte) play_move_rotate::orientation -(byte) play_move_rotate::orientation#1 orientation zp[1]:27 4.0 -(byte) play_move_rotate::orientation#2 orientation zp[1]:27 4.0 -(byte) play_move_rotate::orientation#3 orientation zp[1]:27 0.8888888888888888 +(byte) play_move_rotate::orientation#1 orientation zp[1]:12 200002.0 +(byte) play_move_rotate::orientation#2 orientation zp[1]:12 200002.0 +(byte) play_move_rotate::orientation#3 orientation zp[1]:12 44444.88888888889 (byte) play_move_rotate::return -(byte) play_move_rotate::return#0 reg byte a 4.0 -(byte) play_move_rotate::return#2 reg byte a 0.6666666666666666 +(byte) play_move_rotate::return#0 reg byte a 20002.0 +(byte) play_move_rotate::return#2 reg byte a 3333.6666666666665 (byte()) play_movement((byte) play_movement::key_event) -(byte~) play_movement::$3 reg byte a 4.0 -(byte~) play_movement::$4 reg byte a 4.0 +(byte~) play_movement::$3 reg byte a 20002.0 +(byte~) play_movement::$4 reg byte a 20002.0 (label) play_movement::@1 (label) play_movement::@2 (label) play_movement::@3 (label) play_movement::@4 (label) play_movement::@return (byte) play_movement::key_event -(byte) play_movement::key_event#0 key_event zp[1]:47 9.727272727272727 +(byte) play_movement::key_event#0 key_event zp[1]:47 2818.5454545454545 (byte) play_movement::render -(byte) play_movement::render#1 render zp[1]:32 1.0 -(byte) play_movement::render#2 render zp[1]:32 0.8 +(byte) play_movement::render#1 render zp[1]:33 5000.5 +(byte) play_movement::render#2 render zp[1]:33 4000.4 (byte) play_movement::return -(byte) play_movement::return#0 return zp[1]:32 4.0 -(byte) play_movement::return#2 return zp[1]:32 34.99999999999999 -(byte) play_movement::return#3 reg byte a 202.0 +(byte) play_movement::return#0 return zp[1]:33 20002.0 +(byte) play_movement::return#2 return zp[1]:33 7001.0 +(byte) play_movement::return#3 reg byte a 2002.0 (byte()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@2 @@ -21540,37 +21533,37 @@ FINAL SYMBOL TABLE (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp[1]:59 6000.6 +(byte) play_remove_lines::c#0 c zp[1]:59 6.0000000006E9 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp[1]:30 4200.6 -(byte) play_remove_lines::full#4 full zp[1]:30 4000.4 +(byte) play_remove_lines::full#2 full zp[1]:31 4.2000000006E9 +(byte) play_remove_lines::full#4 full zp[1]:31 4.0000000004E9 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 1500.2142857142858 -(byte) play_remove_lines::r#2 reg byte y 15502.0 -(byte) play_remove_lines::r#3 reg byte y 2002.0 +(byte) play_remove_lines::r#1 reg byte y 1.5000000002142856E9 +(byte) play_remove_lines::r#2 reg byte y 1.5500000002E10 +(byte) play_remove_lines::r#3 reg byte y 2.000000002E9 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 removed zp[1]:28 2002.0 -(byte) play_remove_lines::removed#11 removed zp[1]:28 231.0 -(byte) play_remove_lines::removed#8 removed zp[1]:28 333.8888888888889 +(byte) play_remove_lines::removed#1 removed zp[1]:29 2.000000002E9 +(byte) play_remove_lines::removed#11 removed zp[1]:29 2.30769231E8 +(byte) play_remove_lines::removed#8 removed zp[1]:29 3.333444448888889E8 (byte) play_remove_lines::return -(byte) play_remove_lines::return#0 reg byte a 4.0 +(byte) play_remove_lines::return#0 reg byte a 200002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 5501.0 -(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 -(byte) play_remove_lines::w#12 reg byte x 2002.0 -(byte) play_remove_lines::w#2 reg byte x 1001.0 -(byte) play_remove_lines::w#3 reg byte x 2002.0 -(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 -(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 +(byte) play_remove_lines::w#1 reg byte x 5.500000001E9 +(byte) play_remove_lines::w#11 reg byte x 1.3333333346666667E9 +(byte) play_remove_lines::w#12 reg byte x 2.000000002E9 +(byte) play_remove_lines::w#2 reg byte x 1.000000001E9 +(byte) play_remove_lines::w#3 reg byte x 2.000000002E9 +(byte) play_remove_lines::w#4 reg byte x 4.428571429142857E9 +(byte) play_remove_lines::w#6 reg byte x 1.6666666683333335E9 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp[1]:29 15001.5 -(byte) play_remove_lines::x#2 x zp[1]:29 2500.25 +(byte) play_remove_lines::x#1 x zp[1]:30 1.50000000015E10 +(byte) play_remove_lines::x#2 x zp[1]:30 2.50000000025E9 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp[1]:27 1501.5 -(byte) play_remove_lines::y#8 y zp[1]:27 133.46666666666667 +(byte) play_remove_lines::y#1 y zp[1]:28 1.5000000015E9 +(byte) play_remove_lines::y#8 y zp[1]:28 1.3333333346666667E8 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 4.0 -(byte~) play_spawn_current::$7 zp[1]:52 0.06451612903225806 +(byte~) play_spawn_current::$1 reg byte a 2000002.0 +(byte~) play_spawn_current::$7 zp[1]:52 32258.09677419355 (label) play_spawn_current::@1 (label) play_spawn_current::@2 (label) play_spawn_current::@3 @@ -21578,79 +21571,79 @@ FINAL SYMBOL TABLE (label) play_spawn_current::@5 (label) play_spawn_current::@return (byte) play_spawn_current::current_piece_idx -(byte) play_spawn_current::current_piece_idx#0 reg byte x 2.5 +(byte) play_spawn_current::current_piece_idx#0 reg byte x 1250001.25 (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 piece_idx zp[1]:25 2002.0 -(byte) play_spawn_current::piece_idx#2 piece_idx zp[1]:25 100.5 +(byte) play_spawn_current::piece_idx#1 piece_idx zp[1]:26 2.000000002E9 +(byte) play_spawn_current::piece_idx#2 piece_idx zp[1]:26 1.000050018E8 (label) play_spawn_current::sid_rnd1 (byte) play_spawn_current::sid_rnd1_return -(byte) play_spawn_current::sid_rnd1_return#0 reg byte a 2002.0 +(byte) play_spawn_current::sid_rnd1_return#0 reg byte a 2.000000002E9 (void()) play_update_score((byte) play_update_score::removed) -(byte~) play_update_score::$2 reg byte a 4.0 -(byte~) play_update_score::$4 reg byte a 4.0 -(byte~) play_update_score::$9 reg byte a 4.0 +(byte~) play_update_score::$2 reg byte a 2000002.0 +(byte~) play_update_score::$4 reg byte a 2000002.0 +(byte~) play_update_score::$9 reg byte a 2000002.0 (label) play_update_score::@1 (label) play_update_score::@2 (label) play_update_score::@return (dword) play_update_score::add_bcd -(dword) play_update_score::add_bcd#0 add_bcd zp[4]:53 1.3333333333333333 +(dword) play_update_score::add_bcd#0 add_bcd zp[4]:53 666667.3333333334 (byte) play_update_score::lines_after -(byte) play_update_score::lines_after#0 reg byte a 4.0 +(byte) play_update_score::lines_after#0 reg byte a 2000002.0 (byte) play_update_score::lines_before -(byte) play_update_score::lines_before#0 lines_before zp[1]:52 0.4444444444444444 +(byte) play_update_score::lines_before#0 lines_before zp[1]:52 222222.44444444444 (byte) play_update_score::removed -(byte) play_update_score::removed#0 reg byte x 1.1428571428571428 +(byte) play_update_score::removed#0 reg byte x 442857.7142857142 (const byte*) playfield[(const byte) PLAYFIELD_LINES*(const byte) PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) } (const byte**) playfield_lines[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (const byte*) playfield_lines_idx[(const byte) PLAYFIELD_LINES+(byte) 1] = { fill( PLAYFIELD_LINES+1, 0) } (void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low) -(byte~) render_bcd::$3 reg byte a 4.0 -(byte~) render_bcd::$4 reg byte a 4.0 -(byte~) render_bcd::$5 reg byte a 4.0 -(byte~) render_bcd::$6 reg byte a 4.0 +(byte~) render_bcd::$3 reg byte a 20002.0 +(byte~) render_bcd::$4 reg byte a 20002.0 +(byte~) render_bcd::$5 reg byte a 20002.0 +(byte~) render_bcd::$6 reg byte a 20002.0 (label) render_bcd::@1 (label) render_bcd::@2 (label) render_bcd::@return (const byte) render_bcd::ZERO_CHAR = (byte) $35 (byte) render_bcd::bcd -(byte) render_bcd::bcd#0 reg byte x 4.0 -(byte) render_bcd::bcd#1 reg byte x 4.0 -(byte) render_bcd::bcd#2 reg byte x 4.0 -(byte) render_bcd::bcd#3 reg byte x 2.0 -(byte) render_bcd::bcd#4 reg byte x 2.0 -(byte) render_bcd::bcd#5 reg byte x 4.0 -(byte) render_bcd::bcd#6 reg byte x 2.0 +(byte) render_bcd::bcd#0 reg byte x 2002.0 +(byte) render_bcd::bcd#1 reg byte x 2002.0 +(byte) render_bcd::bcd#2 reg byte x 2002.0 +(byte) render_bcd::bcd#3 reg byte x 1001.0 +(byte) render_bcd::bcd#4 reg byte x 1001.0 +(byte) render_bcd::bcd#5 reg byte x 2002.0 +(byte) render_bcd::bcd#6 reg byte x 3251.0 (word) render_bcd::offset -(word) render_bcd::offset#6 offset zp[2]:10 2.0 +(word) render_bcd::offset#6 offset zp[2]:10 10001.0 (byte) render_bcd::only_low -(byte) render_bcd::only_low#6 reg byte y 1.0 +(byte) render_bcd::only_low#6 reg byte y 5000.5 (byte*) render_bcd::screen -(byte*) render_bcd::screen#0 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#1 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#2 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#3 screen zp[2]:7 4.0 -(byte*) render_bcd::screen#4 screen zp[2]:7 4.0 -(byte*) render_bcd::screen#5 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#6 screen zp[2]:7 14.0 +(byte*) render_bcd::screen#0 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#1 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#2 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#3 screen zp[2]:7 2002.0 +(byte*) render_bcd::screen#4 screen zp[2]:7 2002.0 +(byte*) render_bcd::screen#5 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#6 screen zp[2]:7 16007.0 (byte*) render_bcd::screen_pos -(byte*) render_bcd::screen_pos#0 screen_pos zp[2]:10 1.6 -(byte*) render_bcd::screen_pos#2 screen_pos zp[2]:10 4.0 -(byte*) render_bcd::screen_pos#3 screen_pos zp[2]:10 2.0 +(byte*) render_bcd::screen_pos#0 screen_pos zp[2]:10 8000.8 +(byte*) render_bcd::screen_pos#2 screen_pos zp[2]:10 20002.0 +(byte*) render_bcd::screen_pos#3 screen_pos zp[2]:10 10001.0 (void()) render_init() -(byte~) render_init::$5 reg byte x 16.5 +(byte~) render_init::$5 reg byte x 1501.5 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 (label) render_init::@return (byte) render_init::i -(byte) render_init::i#1 reg byte y 16.5 -(byte) render_init::i#2 reg byte y 5.5 +(byte) render_init::i#1 reg byte y 1501.5 +(byte) render_init::i#2 reg byte y 500.5 (byte*) render_init::li_1 -(byte*) render_init::li_1#1 li_1 zp[2]:34 5.5 -(byte*) render_init::li_1#2 li_1 zp[2]:34 8.25 +(byte*) render_init::li_1#1 li_1 zp[2]:34 500.5 +(byte*) render_init::li_1#2 li_1 zp[2]:34 750.75 (byte*) render_init::li_2 -(byte*) render_init::li_2#1 li_2 zp[2]:48 7.333333333333333 -(byte*) render_init::li_2#2 li_2 zp[2]:48 6.6000000000000005 +(byte*) render_init::li_2#1 li_2 zp[2]:48 667.3333333333334 +(byte*) render_init::li_2#2 li_2 zp[2]:48 600.5999999999999 (label) render_init::vicSelectGfxBank1 (label) render_init::vicSelectGfxBank1_@1 (byte*) render_init::vicSelectGfxBank1_gfx @@ -21659,8 +21652,8 @@ FINAL SYMBOL TABLE (byte) render_init::vicSelectGfxBank1_toDd001_return (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3 (void()) render_moving() -(byte~) render_moving::$1 reg byte a 202.0 -(byte~) render_moving::$6 reg byte a 202.0 +(byte~) render_moving::$1 reg byte a 200002.0 +(byte~) render_moving::$6 reg byte a 200002.0 (label) render_moving::@1 (label) render_moving::@2 (label) render_moving::@3 @@ -21670,31 +21663,31 @@ FINAL SYMBOL TABLE (label) render_moving::@7 (label) render_moving::@return (byte) render_moving::c -(byte) render_moving::c#1 reg byte x 1501.5 -(byte) render_moving::c#2 reg byte x 333.6666666666667 +(byte) render_moving::c#1 reg byte x 1500001.5 +(byte) render_moving::c#2 reg byte x 333333.6666666667 (byte) render_moving::current_cell -(byte) render_moving::current_cell#0 reg byte a 1001.0 +(byte) render_moving::current_cell#0 reg byte a 1000001.0 (byte) render_moving::i -(byte) render_moving::i#1 i zp[1]:29 202.0 -(byte) render_moving::i#2 i zp[1]:29 500.5 -(byte) render_moving::i#3 i zp[1]:29 50.5 -(byte) render_moving::i#4 i zp[1]:29 1552.0 -(byte) render_moving::i#8 i zp[1]:29 300.75 +(byte) render_moving::i#1 i zp[1]:29 200002.0 +(byte) render_moving::i#2 i zp[1]:29 500000.5 +(byte) render_moving::i#3 i zp[1]:29 50000.5 +(byte) render_moving::i#4 i zp[1]:29 1550002.0 +(byte) render_moving::i#8 i zp[1]:29 300000.75 (byte) render_moving::l -(byte) render_moving::l#1 l zp[1]:28 151.5 -(byte) render_moving::l#4 l zp[1]:28 11.882352941176471 +(byte) render_moving::l#1 l zp[1]:28 150001.5 +(byte) render_moving::l#4 l zp[1]:28 11764.823529411764 (byte*) render_moving::screen_line -(byte*) render_moving::screen_line#0 screen_line zp[2]:48 110.19999999999999 +(byte*) render_moving::screen_line#0 screen_line zp[2]:48 110000.20000000001 (byte) render_moving::xpos -(byte) render_moving::xpos#0 xpos zp[1]:32 202.0 -(byte) render_moving::xpos#1 xpos zp[1]:32 667.3333333333334 -(byte) render_moving::xpos#2 xpos zp[1]:32 620.8 +(byte) render_moving::xpos#0 xpos zp[1]:33 200002.0 +(byte) render_moving::xpos#1 xpos zp[1]:33 666667.3333333334 +(byte) render_moving::xpos#2 xpos zp[1]:33 620000.8 (byte) render_moving::ypos -(byte) render_moving::ypos#0 ypos zp[1]:27 4.0 -(byte) render_moving::ypos#1 ypos zp[1]:27 67.33333333333333 -(byte) render_moving::ypos#2 ypos zp[1]:27 25.375 +(byte) render_moving::ypos#0 ypos zp[1]:12 2002.0 +(byte) render_moving::ypos#1 ypos zp[1]:12 66667.33333333333 +(byte) render_moving::ypos#2 ypos zp[1]:12 25062.8125 (void()) render_next() -(byte~) render_next::$6 reg byte y 1.0 +(byte~) render_next::$6 reg byte x 500.5 (label) render_next::@1 (label) render_next::@2 (label) render_next::@3 @@ -21705,48 +21698,48 @@ FINAL SYMBOL TABLE (label) render_next::@8 (label) render_next::@return (byte) render_next::c -(byte) render_next::c#1 reg byte x 1501.5 -(byte) render_next::c#2 reg byte x 286.0 +(byte) render_next::c#1 reg byte x 1500001.5 +(byte) render_next::c#2 reg byte x 285714.5714285714 (byte) render_next::cell -(byte) render_next::cell#0 reg byte a 1001.0 +(byte) render_next::cell#0 reg byte a 1000001.0 (byte) render_next::l -(byte) render_next::l#1 l zp[1]:5 151.5 -(byte) render_next::l#7 l zp[1]:5 18.363636363636363 +(byte) render_next::l#1 l zp[1]:5 150001.5 +(byte) render_next::l#7 l zp[1]:5 18182.0 (const word) render_next::next_area_offset = (word)(number) $28*(number) $c+(number) $18+(number) 4 (byte) render_next::next_piece_char -(byte) render_next::next_piece_char#0 next_piece_char zp[1]:59 66.86666666666667 +(byte) render_next::next_piece_char#0 next_piece_char zp[1]:59 66733.46666666667 (byte*) render_next::next_piece_gfx -(byte*) render_next::next_piece_gfx#1 next_piece_gfx zp[2]:7 210.29999999999998 -(byte*) render_next::next_piece_gfx#2 next_piece_gfx zp[2]:7 1552.0 -(byte*) render_next::next_piece_gfx#3 next_piece_gfx zp[2]:7 204.0 -(byte*) render_next::next_piece_gfx#9 next_piece_gfx zp[2]:7 4.0 +(byte*) render_next::next_piece_gfx#1 next_piece_gfx zp[2]:7 210000.30000000002 +(byte*) render_next::next_piece_gfx#2 next_piece_gfx zp[2]:7 1550002.0 +(byte*) render_next::next_piece_gfx#3 next_piece_gfx zp[2]:7 201003.0 +(byte*) render_next::next_piece_gfx#9 next_piece_gfx zp[2]:7 2002.0 (byte*) render_next::screen_next_area -(byte*) render_next::screen_next_area#10 screen_next_area zp[2]:10 204.0 -(byte*) render_next::screen_next_area#11 screen_next_area zp[2]:10 0.5 -(byte*) render_next::screen_next_area#3 screen_next_area zp[2]:10 701.0 -(byte*) render_next::screen_next_area#4 screen_next_area zp[2]:10 67.33333333333333 -(byte*) render_next::screen_next_area#5 screen_next_area zp[2]:10 684.1666666666667 +(byte*) render_next::screen_next_area#10 screen_next_area zp[2]:10 201003.0 +(byte*) render_next::screen_next_area#11 screen_next_area zp[2]:10 250.25 +(byte*) render_next::screen_next_area#3 screen_next_area zp[2]:10 700001.0 +(byte*) render_next::screen_next_area#4 screen_next_area zp[2]:10 66667.33333333333 +(byte*) render_next::screen_next_area#5 screen_next_area zp[2]:10 683334.1666666667 (void()) render_playfield() -(byte~) render_playfield::$0 reg byte a 202.0 -(byte~) render_playfield::$3 reg byte a 202.0 +(byte~) render_playfield::$0 reg byte a 200002.0 +(byte~) render_playfield::$3 reg byte a 200002.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 (label) render_playfield::@return (byte) render_playfield::c -(byte) render_playfield::c#1 c zp[1]:29 1501.5 -(byte) render_playfield::c#2 c zp[1]:29 500.5 +(byte) render_playfield::c#1 c zp[1]:29 1500001.5 +(byte) render_playfield::c#2 c zp[1]:29 500000.5 (byte) render_playfield::i -(byte) render_playfield::i#1 i zp[1]:28 420.59999999999997 -(byte) render_playfield::i#2 i zp[1]:28 1034.6666666666667 -(byte) render_playfield::i#3 i zp[1]:28 50.5 +(byte) render_playfield::i#1 i zp[1]:28 420000.60000000003 +(byte) render_playfield::i#2 i zp[1]:28 1033334.6666666667 +(byte) render_playfield::i#3 i zp[1]:28 50000.5 (byte) render_playfield::l -(byte) render_playfield::l#1 l zp[1]:27 151.5 -(byte) render_playfield::l#2 l zp[1]:27 30.299999999999997 +(byte) render_playfield::l#1 l zp[1]:12 150001.5 +(byte) render_playfield::l#2 l zp[1]:12 30000.300000000003 (byte*) render_playfield::screen_line -(byte*) render_playfield::screen_line#0 screen_line zp[2]:10 202.0 -(byte*) render_playfield::screen_line#1 screen_line zp[2]:10 500.5 -(byte*) render_playfield::screen_line#2 screen_line zp[2]:10 1552.0 +(byte*) render_playfield::screen_line#0 screen_line zp[2]:10 200002.0 +(byte*) render_playfield::screen_line#1 screen_line zp[2]:10 500000.5 +(byte*) render_playfield::screen_line#2 screen_line zp[2]:10 1550002.0 (void()) render_score() (label) render_score::@1 (label) render_score::@2 @@ -21761,7 +21754,7 @@ FINAL SYMBOL TABLE (const byte*) render_score::score_bytes = (byte*)&(dword) score_bcd (const word) render_score::score_offset = (word)(number) $28*(number) 5+(number) $1c (byte*) render_score::screen -(byte*) render_score::screen#3 screen zp[2]:7 0.75 +(byte*) render_score::screen#3 screen zp[2]:7 375.375 (void()) render_screen_original((byte*) render_screen_original::screen) (label) render_screen_original::@1 (label) render_screen_original::@2 @@ -21771,60 +21764,60 @@ FINAL SYMBOL TABLE (label) render_screen_original::@return (const byte) render_screen_original::SPACE = (byte) 0 (byte*) render_screen_original::cols -(byte*) render_screen_original::cols#1 cols zp[2]:36 101.0 -(byte*) render_screen_original::cols#2 cols zp[2]:36 75.75 -(byte*) render_screen_original::cols#3 cols zp[2]:36 42.599999999999994 -(byte*) render_screen_original::cols#4 cols zp[2]:36 78.5 -(byte*) render_screen_original::cols#5 cols zp[2]:36 80.8 -(byte*) render_screen_original::cols#6 cols zp[2]:36 101.0 -(byte*) render_screen_original::cols#7 cols zp[2]:36 22.0 +(byte*) render_screen_original::cols#1 cols zp[2]:36 100001.0 +(byte*) render_screen_original::cols#2 cols zp[2]:36 75000.75 +(byte*) render_screen_original::cols#3 cols zp[2]:36 42000.600000000006 +(byte*) render_screen_original::cols#4 cols zp[2]:36 77501.0 +(byte*) render_screen_original::cols#5 cols zp[2]:36 80000.8 +(byte*) render_screen_original::cols#6 cols zp[2]:36 100001.0 +(byte*) render_screen_original::cols#7 cols zp[2]:36 20002.0 (byte*) render_screen_original::ocols -(byte*) render_screen_original::ocols#1 ocols zp[2]:57 17.75 -(byte*) render_screen_original::ocols#2 ocols zp[2]:57 67.33333333333333 -(byte*) render_screen_original::ocols#4 ocols zp[2]:57 14.0 +(byte*) render_screen_original::ocols#1 ocols zp[2]:57 17500.25 +(byte*) render_screen_original::ocols#2 ocols zp[2]:57 66667.33333333333 +(byte*) render_screen_original::ocols#4 ocols zp[2]:57 13750.25 (byte*) render_screen_original::oscr -(byte*) render_screen_original::oscr#1 oscr zp[2]:50 14.2 -(byte*) render_screen_original::oscr#2 oscr zp[2]:50 134.66666666666666 -(byte*) render_screen_original::oscr#4 oscr zp[2]:50 14.0 +(byte*) render_screen_original::oscr#1 oscr zp[2]:50 14000.2 +(byte*) render_screen_original::oscr#2 oscr zp[2]:50 133334.66666666666 +(byte*) render_screen_original::oscr#4 oscr zp[2]:50 13750.25 (byte*) render_screen_original::screen -(byte*) render_screen_original::screen#10 screen zp[2]:48 30.42857142857143 -(byte*) render_screen_original::screen#2 screen zp[2]:48 60.599999999999994 -(byte*) render_screen_original::screen#3 screen zp[2]:48 43.285714285714285 -(byte*) render_screen_original::screen#5 screen zp[2]:48 157.0 -(byte*) render_screen_original::screen#6 screen zp[2]:48 202.0 -(byte*) render_screen_original::screen#7 screen zp[2]:48 202.0 -(byte*) render_screen_original::screen#8 screen zp[2]:48 24.0 -(byte*) render_screen_original::screen#9 screen zp[2]:48 2.0 +(byte*) render_screen_original::screen#10 screen zp[2]:48 30000.428571428572 +(byte*) render_screen_original::screen#2 screen zp[2]:48 60000.600000000006 +(byte*) render_screen_original::screen#3 screen zp[2]:48 42857.57142857143 +(byte*) render_screen_original::screen#5 screen zp[2]:48 155002.0 +(byte*) render_screen_original::screen#6 screen zp[2]:48 200002.0 +(byte*) render_screen_original::screen#7 screen zp[2]:48 200002.0 +(byte*) render_screen_original::screen#8 screen zp[2]:48 21003.0 +(byte*) render_screen_original::screen#9 screen zp[2]:48 1001.0 (byte) render_screen_original::x -(byte) render_screen_original::x#1 reg byte x 202.0 -(byte) render_screen_original::x#2 reg byte x 202.0 -(byte) render_screen_original::x#3 reg byte x 151.5 -(byte) render_screen_original::x#4 reg byte x 40.4 -(byte) render_screen_original::x#5 reg byte x 43.285714285714285 -(byte) render_screen_original::x#6 reg byte x 60.599999999999994 +(byte) render_screen_original::x#1 reg byte x 200002.0 +(byte) render_screen_original::x#2 reg byte x 200002.0 +(byte) render_screen_original::x#3 reg byte x 150001.5 +(byte) render_screen_original::x#4 reg byte x 40000.4 +(byte) render_screen_original::x#5 reg byte x 42857.57142857143 +(byte) render_screen_original::x#6 reg byte x 60000.600000000006 (byte) render_screen_original::y -(byte) render_screen_original::y#1 y zp[1]:47 16.5 -(byte) render_screen_original::y#6 y zp[1]:47 0.9166666666666666 +(byte) render_screen_original::y#1 y zp[1]:47 15001.5 +(byte) render_screen_original::y#6 y zp[1]:47 833.4166666666666 (byte) render_screen_render -(byte) render_screen_render#11 render_screen_render zp[1]:3 3.25 -(byte) render_screen_render#15 reg byte a 13.0 -(byte) render_screen_render#18 render_screen_render zp[1]:3 4.8076923076923075 -(byte) render_screen_render#22 reg byte x 8.615384615384615 -(byte) render_screen_render#33 render_screen_render_1 zp[1]:5 5.333333333333333 -(byte) render_screen_render#63 reg byte x 22.0 -(byte) render_screen_render#64 render_screen_render_1 zp[1]:5 5.5 -(byte) render_screen_render#65 reg byte a 11.0 +(byte) render_screen_render#11 render_screen_render zp[1]:3 275.5 +(byte) render_screen_render#15 reg byte x 1102.0 +(byte) render_screen_render#18 render_screen_render zp[1]:3 84.76923076923077 +(byte) render_screen_render#22 reg byte x 7700.153846153846 +(byte) render_screen_render#33 render_screen_render_1 zp[1]:5 4766.761904761905 +(byte) render_screen_render#63 reg byte x 202.0 +(byte) render_screen_render#64 render_screen_render_1 zp[1]:5 50.5 +(byte) render_screen_render#65 reg byte x 101.0 (byte) render_screen_show -(byte) render_screen_show#13 render_screen_show zp[1]:2 4.333333333333333 -(byte) render_screen_show#16 render_screen_show zp[1]:2 5.474999999999999 -(byte) render_screen_showing loadstore zp[1]:38 0.6000000000000001 +(byte) render_screen_show#13 render_screen_show zp[1]:2 367.33333333333337 +(byte) render_screen_show#16 render_screen_show zp[1]:2 577.65 +(byte) render_screen_showing loadstore zp[1]:38 1000.5000000000001 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() (label) render_show::@1 (label) render_show::@return (byte) render_show::d018val -(byte) render_show::d018val#3 reg byte a 2.0 +(byte) render_show::d018val#3 reg byte a 10001.0 (label) render_show::toD0181 (byte*) render_show::toD0181_gfx (byte) render_show::toD0181_return @@ -21836,7 +21829,7 @@ FINAL SYMBOL TABLE (const byte) render_show::toD0182_return#0 toD0182_return = >(word)(const byte*) PLAYFIELD_SCREEN_2&(word) $3fff*(byte) 4|>(word)(const byte*) PLAYFIELD_CHARSET/(byte) 4&(byte) $f (byte*) render_show::toD0182_screen (const dword*) score_add_bcd[(number) 5] = { fill( 5, 0) } -(dword) score_bcd loadstore zp[4]:39 0.043795620437956206 +(dword) score_bcd loadstore zp[4]:39 14598.569343065694 (const byte**) screen_lines_1[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (const byte**) screen_lines_2[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (void()) sid_rnd_init() @@ -21845,13 +21838,13 @@ FINAL SYMBOL TABLE (label) sprites_init::@1 (label) sprites_init::@return (byte) sprites_init::s -(byte) sprites_init::s#1 reg byte y 16.5 -(byte) sprites_init::s#2 reg byte y 8.8 +(byte) sprites_init::s#1 reg byte y 1501.5 +(byte) sprites_init::s#2 reg byte y 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 reg byte x 22.0 +(byte) sprites_init::s2#0 reg byte x 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 xpos zp[1]:33 7.333333333333333 -(byte) sprites_init::xpos#2 xpos zp[1]:33 8.25 +(byte) sprites_init::xpos#1 xpos zp[1]:33 667.3333333333334 +(byte) sprites_init::xpos#2 xpos zp[1]:33 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 @@ -21891,8 +21884,8 @@ zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] reg byte y [ render_bcd::only_low#6 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -reg byte a [ render_screen_render#15 render_screen_render#65 ] -reg byte x [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] +reg byte x [ render_screen_render#15 render_screen_render#65 ] +reg byte y [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] reg byte x [ render_next::c#2 render_next::c#1 ] reg byte x [ current_ypos#13 current_ypos#97 current_ypos#98 ] zp[1]:5 [ render_screen_render#33 render_screen_render#64 render_next::l#7 render_next::l#1 ] @@ -21907,37 +21900,37 @@ reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_co reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#15 ] reg byte a [ play_move_leftright::return#2 ] -reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -zp[1]:12 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -zp[2]:13 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -zp[1]:15 [ level#33 level#10 level#17 level#19 level#21 ] -zp[1]:16 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -zp[1]:17 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -zp[2]:18 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] -zp[1]:20 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -zp[1]:21 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -zp[2]:22 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] -zp[1]:24 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +zp[1]:12 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +zp[1]:13 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +zp[2]:14 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] +zp[1]:16 [ level#33 level#10 level#17 level#19 level#21 ] +zp[1]:17 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] +zp[1]:18 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] +zp[2]:19 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] +zp[1]:21 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +zp[1]:22 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +zp[2]:23 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] +zp[1]:25 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] reg byte x [ play_move_down::return#3 ] -zp[1]:25 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -zp[1]:26 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +zp[1]:26 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +zp[1]:27 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] -zp[1]:27 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -zp[1]:28 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] +zp[1]:28 [ play_remove_lines::y#8 play_remove_lines::y#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] +zp[1]:29 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -zp[1]:29 [ play_remove_lines::x#2 play_remove_lines::x#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] -zp[1]:30 [ keyboard_event_pressed::keycode#5 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::l#6 play_collision::l#1 ] -reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_event_pressed::keycode#5 ] +reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +zp[1]:30 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_remove_lines::x#2 play_remove_lines::x#1 play_collision::l#6 play_collision::l#1 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -zp[1]:31 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +zp[1]:31 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +zp[1]:32 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] reg byte a [ render_show::d018val#3 ] reg byte y [ play_init::j#2 play_init::j#1 ] -zp[1]:32 [ play_init::idx#2 play_init::idx#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte y [ sprites_init::s#2 sprites_init::s#1 ] -zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::l#6 play_lock_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 play_init::idx#2 play_init::idx#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte y [ render_init::i#2 render_init::i#1 ] zp[2]:34 [ render_init::li_1#2 render_init::li_1#1 play_init::pli#2 play_init::pli#1 ] zp[2]:36 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] @@ -21948,7 +21941,7 @@ zp[1]:43 [ irq_raster_next ] zp[1]:44 [ irq_sprite_ypos ] zp[1]:45 [ irq_sprite_ptr ] zp[1]:46 [ irq_cnt ] -reg byte x [ keyboard_event_get::return#3 ] +reg byte a [ keyboard_event_get::return#3 ] reg byte x [ main::key_event#0 ] zp[1]:47 [ play_movement::key_event#0 render_screen_original::y#6 render_screen_original::y#1 ] reg byte a [ play_movement::return#3 ] @@ -21957,7 +21950,7 @@ reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] -reg byte y [ render_next::$6 ] +reg byte x [ render_next::$6 ] reg byte a [ render_next::cell#0 ] reg byte a [ render_moving::$1 ] reg byte a [ render_moving::$6 ] @@ -21976,7 +21969,7 @@ reg byte a [ play_movement::$4 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$2 ] -reg byte x [ play_move_rotate::$7 ] +reg byte a [ play_move_rotate::$7 ] reg byte a [ play_collision::$14 ] zp[2]:50 [ play_collision::playfield_line#0 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] reg byte a [ play_collision::$5 ] @@ -22006,12 +21999,13 @@ reg byte a [ play_increase_level::$5 ] reg byte a [ play_lock_current::$4 ] zp[2]:57 [ play_lock_current::playfield_line#0 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp[1]:59 [ play_lock_current::i#1 play_remove_lines::c#0 play_collision::i#1 render_next::next_piece_char#0 ] -reg byte a [ keyboard_event_pressed::$0 ] -reg byte a [ keyboard_event_pressed::$1 ] +reg byte y [ keyboard_event_pressed::$0 ] +reg byte y [ keyboard_event_pressed::row_bits#0 ] +reg byte x [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] -zp[1]:60 [ keyboard_event_scan::row_scan#0 keyboard_event_pressed::row_bits#0 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] +zp[1]:60 [ keyboard_event_scan::row_scan#0 play_lock_current::l#6 play_lock_current::l#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_scan::$0 ] reg byte a [ keyboard_event_pressed::return#1 ] @@ -22040,7 +22034,7 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 3348735 +Score: 3348927 // File Comments // Tetris Game for the Commodore 64 @@ -22168,29 +22162,29 @@ Score: 3348735 .label irq_sprite_ptr = $2d .label irq_cnt = $2e // Keyboard event buffer size. The number of events currently in the event buffer - .label keyboard_events_size = $1f + .label keyboard_events_size = $20 // The rate of moving down the current piece (number of frames between moves if movedown is not forced) - .label current_movedown_slow = $10 - .label current_ypos = $c + .label current_movedown_slow = $11 + .label current_ypos = $d // Position of top left corner of current moving piece on the playfield - .label current_xpos = $18 + .label current_xpos = $19 // The curent piece orientation - each piece have 4 orientations (00/0x10/0x20/0x30). // The orientation chooses one of the 4 sub-graphics of the piece. - .label current_orientation = $15 + .label current_orientation = $16 // Pointer to the current piece in the current orientation. Updated each time current_orientation is updated. - .label current_piece_gfx = $16 + .label current_piece_gfx = $17 // The char of the current piece - .label current_piece_char = $14 + .label current_piece_char = $15 // Current level BCD-format - .label level_bcd = $11 + .label level_bcd = $12 // The current moving piece. Points to the start of the piece definition. - .label current_piece = $12 + .label current_piece = $13 // Is the game over? - .label game_over = $1a + .label game_over = $1b // The index of the next moving piece. (0-6) - .label next_piece_idx = $19 + .label next_piece_idx = $1a // Current level in normal (non-BCD) format - .label level = $f + .label level = $10 // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. .label render_screen_render = 3 // The screen currently to show next to the user. 0x00 for screen 1 / 0x20 for screen 2. @@ -22199,7 +22193,7 @@ Score: 3348735 // Counts up to the next movedown of current piece .label current_movedown_counter = 4 // Current number of cleared lines in BCD-format - .label lines_bcd = $d + .label lines_bcd = $e // The current moving piece. Points to the start of the piece definition. .label current_piece_1 = $a // The screen currently being rendered to. 0x00 for screen 1 / 0x20 for screen 2. @@ -22347,14 +22341,14 @@ main: { // [128] phi (byte) current_ypos#13 = (byte) current_ypos#97 [phi:main::@15->render_moving#4] -- register_copy jsr render_moving // main::@16 - // [34] (byte) next_piece_idx#76 ← (byte) play_spawn_current::piece_idx#2 -- vbuxx=vbuz1 - ldx.z play_spawn_current.piece_idx + // [34] (byte) next_piece_idx#76 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 + ldy.z play_spawn_current.piece_idx // render_next() // [35] call render_next // [107] phi from main::@16 to render_next [phi:main::@16->render_next] // [107] phi (byte) next_piece_idx#12 = (byte) next_piece_idx#76 [phi:main::@16->render_next#0] -- register_copy - // [107] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuaa=vbuc1 - lda #$20 + // [107] phi (byte) render_screen_render#15 = (byte) $20 [phi:main::@16->render_next#1] -- vbuxx=vbuc1 + ldx #$20 jsr render_next // main::@17 // [36] (byte*) current_piece#101 ← (byte*)*((const word*) PIECES + (byte~) play_spawn_current::$7) -- pbuz1=pptc1_derefidx_vbuz2 @@ -22446,7 +22440,8 @@ main: { // [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 // main::@20 // key_event = keyboard_event_get() - // [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + // [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuxx=vbuaa + tax // if(game_over==0) // [48] if((byte) game_over#10==(byte) 0) goto main::@4 -- vbuz1_eq_0_then_la1 lda.z game_over @@ -22510,10 +22505,10 @@ main: { // [128] phi (byte) current_ypos#13 = (byte) current_ypos#98 [phi:main::@22->render_moving#4] -- register_copy jsr render_moving // main::@23 - // [63] (byte) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 - lda.z render_screen_render - // [64] (byte) next_piece_idx#77 ← (byte) next_piece_idx#16 -- vbuxx=vbuz1 - ldx.z next_piece_idx + // [63] (byte) render_screen_render#65 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + ldx.z render_screen_render + // [64] (byte) next_piece_idx#77 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 + ldy.z next_piece_idx // render_next() // [65] call render_next // [107] phi from main::@23 to render_next [phi:main::@23->render_next] @@ -22634,8 +22629,7 @@ render_score: { // render_score::@5 // render_bcd( screen, lines_offset, >lines_bcd, 1) // [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 - lda.z lines_bcd+1 - tax + ldx.z lines_bcd+1 // [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3 // [87] call render_bcd // [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] @@ -22652,8 +22646,7 @@ render_score: { // render_score::@6 // render_bcd( screen, lines_offset+1, render_bcd] @@ -22767,8 +22760,8 @@ render_next: { .label screen_next_area = $a .label l = 5 // if(render_screen_render==0) - // [108] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuaa_eq_0_then_la1 - cmp #0 + // [108] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -- vbuxx_eq_0_then_la1 + cpx #0 beq __b1 // [110] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] // [110] phi (byte*) render_next::screen_next_area#11 = (const byte*) PLAYFIELD_SCREEN_2+(const word) render_next::next_area_offset [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 @@ -22789,18 +22782,18 @@ render_next: { // render_next::@2 __b2: // next_piece_gfx = PIECES[next_piece_idx] - // [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuyy=vbuxx_rol_1 - txa + // [111] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1 -- vbuxx=vbuyy_rol_1 + tya asl - tay + tax // next_piece_char = PIECES_NEXT_CHARS[next_piece_idx] - // [112] (byte) render_next::next_piece_char#0 ← *((const byte*) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuxx - lda PIECES_NEXT_CHARS,x + // [112] (byte) render_next::next_piece_char#0 ← *((const byte*) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy + lda PIECES_NEXT_CHARS,y sta.z next_piece_char - // [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuyy - lda PIECES,y + // [113] (byte*) render_next::next_piece_gfx#9 ← (byte*)*((const word*) PIECES + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx + lda PIECES,x sta.z next_piece_gfx - lda PIECES+1,y + lda PIECES+1,x sta.z next_piece_gfx+1 // [114] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] // [114] phi (byte) render_next::l#7 = (byte) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 @@ -22892,9 +22885,9 @@ render_next: { // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { - .label ypos = $1b + .label ypos = $c .label screen_line = $30 - .label xpos = $20 + .label xpos = $21 .label i = $1d .label l = $1c // ypos = current_ypos @@ -23009,7 +23002,7 @@ render_playfield: { // Do not render the top 2 lines. .label i = $1c .label c = $1d - .label l = $1b + .label l = $c // [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] // [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS*(byte) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 @@ -23088,8 +23081,8 @@ render_playfield: { // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) // play_movement(byte zp($2f) key_event) play_movement: { - .label render = $20 - .label return = $20 + .label render = $21 + .label return = $21 .label key_event = $2f // play_move_down(key_event) // [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 @@ -23152,7 +23145,7 @@ play_movement: { // play_move_rotate(byte register(A) key_event) play_move_rotate: { // Handle keyboard events - .label orientation = $1b + .label orientation = $c // if(key_event==KEY_Z) // [181] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z @@ -23238,13 +23231,14 @@ play_move_rotate: { // play_move_rotate::@1 __b1: // current_orientation-0x10 - // [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuxx=vbuz1_minus_vbuc1 - lax.z current_orientation - axs #$10 + // [198] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10 -- vbuaa=vbuz1_minus_vbuc1 + lda.z current_orientation + sec + sbc #$10 // orientation = (current_orientation-0x10)&0x3f - // [199] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuxx_band_vbuc1 - lda #$3f - sax.z orientation + // [199] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f -- vbuz1=vbuaa_band_vbuc1 + and #$3f + sta.z orientation jmp __b3 } // play_collision @@ -23260,7 +23254,7 @@ play_collision: { .label i = $3b .label xp = $3c .label l = $1e - .label i_1 = $21 + .label i_1 = $1f // piece_gfx = current_piece + orientation // [201] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa @@ -23516,6 +23510,7 @@ play_move_leftright: { // Return non-zero if a render is needed // play_move_down(byte register(A) key_event) play_move_down: { + .label movedown = $c // ++current_movedown_counter; // [246] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc.z current_movedown_counter @@ -23526,21 +23521,22 @@ play_move_down: { // [248] phi from play_move_down to play_move_down::@4 [phi:play_move_down->play_move_down::@4] // play_move_down::@4 // [249] phi from play_move_down::@4 to play_move_down::@1 [phi:play_move_down::@4->play_move_down::@1] - // [249] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #1 + // [249] phi (byte) play_move_down::movedown#10 = (byte) 1 [phi:play_move_down::@4->play_move_down::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z movedown jmp __b1 // [249] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1: - // [249] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [249] phi (byte) play_move_down::movedown#10 = (byte) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z movedown // play_move_down::@1 __b1: // keyboard_event_pressed(KEY_SPACE) // [250] call keyboard_event_pressed // [379] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_SPACE - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_SPACE jsr keyboard_event_pressed // keyboard_event_pressed(KEY_SPACE) // [251] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 @@ -23558,8 +23554,8 @@ play_move_down: { bcc __b2 // play_move_down::@6 // movedown++; - // [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx + // [255] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + inc.z movedown // [256] phi from play_move_down::@12 play_move_down::@5 play_move_down::@6 to play_move_down::@2 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2] // [256] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#10 [phi:play_move_down::@12/play_move_down::@5/play_move_down::@6->play_move_down::@2#0] -- register_copy // play_move_down::@2 @@ -23571,15 +23567,16 @@ play_move_down: { bcc __b3 // play_move_down::@7 // movedown++; - // [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx + // [258] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + inc.z movedown // [259] phi from play_move_down::@2 play_move_down::@7 to play_move_down::@3 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3] // [259] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#7 [phi:play_move_down::@2/play_move_down::@7->play_move_down::@3#0] -- register_copy // play_move_down::@3 __b3: // if(movedown!=0) - // [260] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 - cpx #0 + // [260] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + lda.z movedown + cmp #0 beq b2 // play_move_down::@8 // play_collision(current_xpos,current_ypos+1,current_orientation) @@ -23742,7 +23739,7 @@ play_spawn_current: { .label __7 = $34 // Spawn a new next piece // Pick a random piece (0-6) - .label piece_idx = $19 + .label piece_idx = $1a // current_piece_idx = next_piece_idx // [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 // Move next piece into current @@ -24025,10 +24022,10 @@ play_increase_level: { // Returns the number of lines removed play_remove_lines: { .label c = $3b - .label x = $1d - .label y = $1b - .label removed = $1c - .label full = $1e + .label x = $1e + .label y = $1c + .label removed = $1d + .label full = $1f // [339] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] // [339] phi (byte) play_remove_lines::removed#11 = (byte) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 @@ -24150,12 +24147,12 @@ play_remove_lines: { // play_lock_current // Lock the current piece onto the playfield play_lock_current: { - .label yp = $c + .label yp = $d .label playfield_line = $39 - .label xp = $1e + .label xp = $1f .label i = $3b - .label l = $21 - .label i_1 = $3c + .label l = $3c + .label i_1 = $1e // yp = current_ypos // [361] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11 // [362] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] @@ -24254,30 +24251,27 @@ play_lock_current: { // keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zp($1e) keycode) +// keyboard_event_pressed(byte register(X) keycode) keyboard_event_pressed: { - .label row_bits = $3c - .label keycode = $1e // keycode>>3 - // [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuaa=vbuz1_ror_3 - lda.z keycode + // [380] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3 -- vbuyy=vbuxx_ror_3 + txa lsr lsr lsr + tay // row_bits = keyboard_scan_values[keycode>>3] - // [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte*) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa - tay + // [381] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte*) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) -- vbuyy=pbuc1_derefidx_vbuyy lda keyboard_scan_values,y - sta.z row_bits - // keycode&7 - // [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuaa=vbuz1_band_vbuc1 - lda #7 - and.z keycode - // row_bits & keyboard_matrix_col_bitmask[keycode&7] - // [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay - lda keyboard_matrix_col_bitmask,y - and.z row_bits + // keycode&7 + // [382] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7 -- vbuxx=vbuxx_band_vbuc1 + lda #7 + axs #0 + // row_bits & keyboard_matrix_col_bitmask[keycode&7] + // [383] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte*) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuxx + tya + and keyboard_matrix_col_bitmask,x // keyboard_event_pressed::@return // } // [384] return @@ -24297,9 +24291,9 @@ keyboard_event_get: { // return keyboard_events[--keyboard_events_size]; // [386] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec.z keyboard_events_size - // [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + // [387] (byte) keyboard_event_get::return#1 ← *((const byte*) keyboard_events + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy.z keyboard_events_size - ldx keyboard_events,y + lda keyboard_events,y // [388] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return] // [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy // [388] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy @@ -24307,8 +24301,8 @@ keyboard_event_get: { // [388] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: // [388] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - // [388] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 - ldx #$ff + // [388] phi (byte) keyboard_event_get::return#2 = (byte) $ff [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + lda #$ff // keyboard_event_get::@return // } // [389] return @@ -24321,8 +24315,8 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $3c - .label keycode = $21 - .label row = $20 + .label keycode = $1f + .label row = $1e // [391] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] // [391] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy // [391] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 @@ -24374,9 +24368,8 @@ keyboard_event_scan: { // keyboard_event_pressed(KEY_LSHIFT) // [402] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@17 to keyboard_event_pressed [phi:keyboard_event_scan::@17->keyboard_event_pressed] - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_LSHIFT - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT [phi:keyboard_event_scan::@17->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_LSHIFT jsr keyboard_event_pressed // keyboard_event_pressed(KEY_LSHIFT) // [403] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 @@ -24392,9 +24385,8 @@ keyboard_event_scan: { // keyboard_event_pressed(KEY_RSHIFT) // [408] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@1 to keyboard_event_pressed [phi:keyboard_event_scan::@1->keyboard_event_pressed] - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_RSHIFT - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT [phi:keyboard_event_scan::@1->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_RSHIFT jsr keyboard_event_pressed // keyboard_event_pressed(KEY_RSHIFT) // [409] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 @@ -24410,9 +24402,8 @@ keyboard_event_scan: { // keyboard_event_pressed(KEY_CTRL) // [414] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@2 to keyboard_event_pressed [phi:keyboard_event_scan::@2->keyboard_event_pressed] - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_CTRL - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL [phi:keyboard_event_scan::@2->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_CTRL jsr keyboard_event_pressed // keyboard_event_pressed(KEY_CTRL) // [415] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 @@ -24428,9 +24419,8 @@ keyboard_event_scan: { // keyboard_event_pressed(KEY_COMMODORE) // [420] call keyboard_event_pressed // [379] phi from keyboard_event_scan::@3 to keyboard_event_pressed [phi:keyboard_event_scan::@3->keyboard_event_pressed] - // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_COMMODORE - sta.z keyboard_event_pressed.keycode + // [379] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE [phi:keyboard_event_scan::@3->keyboard_event_pressed#0] -- vbuxx=vbuc1 + ldx #KEY_COMMODORE jsr keyboard_event_pressed // keyboard_event_pressed(KEY_COMMODORE) // [421] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 @@ -24603,7 +24593,7 @@ render_show: { play_init: { .label pli = $22 // Initialize the playfield line pointers; - .label idx = $20 + .label idx = $21 // [456] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] // [456] phi (byte) play_init::idx#2 = (byte) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 diff --git a/src/test/ref/complex/tetris/tetris.sym b/src/test/ref/complex/tetris/tetris.sym index 942461adb..e1d8630a1 100644 --- a/src/test/ref/complex/tetris/tetris.sym +++ b/src/test/ref/complex/tetris/tetris.sym @@ -108,84 +108,84 @@ (const byte) VIC_ECM = (byte) $40 (const byte) VIC_RSEL = (byte) 8 (byte) current_movedown_counter -(byte) current_movedown_counter#12 current_movedown_counter zp[1]:4 0.5333333333333333 -(byte) current_movedown_counter#14 current_movedown_counter zp[1]:4 3.081081081081081 -(byte) current_movedown_counter#16 current_movedown_counter zp[1]:4 8.769230769230768 +(byte) current_movedown_counter#12 current_movedown_counter zp[1]:4 26666.933333333334 +(byte) current_movedown_counter#14 current_movedown_counter zp[1]:4 2732.5135135135133 +(byte) current_movedown_counter#16 current_movedown_counter zp[1]:4 7777.153846153846 (const byte) current_movedown_fast = (byte) $a (byte) current_movedown_slow -(byte) current_movedown_slow#1 current_movedown_slow zp[1]:16 0.17391304347826086 -(byte) current_movedown_slow#10 current_movedown_slow zp[1]:16 4.0 -(byte) current_movedown_slow#14 current_movedown_slow zp[1]:16 2.214285714285714 -(byte) current_movedown_slow#21 current_movedown_slow zp[1]:16 3.135135135135135 -(byte) current_movedown_slow#23 current_movedown_slow zp[1]:16 1.1428571428571428 -(byte) current_movedown_slow#37 current_movedown_slow zp[1]:16 6.0 -(byte) current_movedown_slow#65 current_movedown_slow zp[1]:16 0.26666666666666666 +(byte) current_movedown_slow#1 current_movedown_slow zp[1]:17 4.869565217391305 +(byte) current_movedown_slow#10 current_movedown_slow zp[1]:17 2.0000002E7 +(byte) current_movedown_slow#14 current_movedown_slow zp[1]:17 41091.392857142855 +(byte) current_movedown_slow#21 current_movedown_slow zp[1]:17 5435.243243243243 +(byte) current_movedown_slow#23 current_movedown_slow zp[1]:17 442857.7142857142 +(byte) current_movedown_slow#37 current_movedown_slow zp[1]:17 300003.0 +(byte) current_movedown_slow#65 current_movedown_slow zp[1]:17 733333.4666666666 (byte) current_orientation -(byte) current_orientation#13 current_orientation zp[1]:21 3.189189189189189 -(byte) current_orientation#17 current_orientation zp[1]:21 5.523809523809523 -(byte) current_orientation#20 current_orientation zp[1]:21 0.36734693877551017 -(byte) current_orientation#25 current_orientation zp[1]:21 1.3333333333333333 -(byte) current_orientation#37 current_orientation zp[1]:21 4.0 -(byte) current_orientation#7 current_orientation zp[1]:21 3.0 +(byte) current_orientation#13 current_orientation zp[1]:22 8137.972972972973 +(byte) current_orientation#17 current_orientation zp[1]:22 1004.952380952381 +(byte) current_orientation#20 current_orientation zp[1]:22 16530.79591836735 +(byte) current_orientation#25 current_orientation zp[1]:22 51667.33333333333 +(byte) current_orientation#37 current_orientation zp[1]:22 200002.0 +(byte) current_orientation#7 current_orientation zp[1]:22 150001.5 (byte*) current_piece -(byte*) current_piece#10 current_piece zp[2]:18 3.243243243243243 -(byte*) current_piece#101 current_piece zp[2]:18 2.0 -(byte*) current_piece#15 current_piece zp[2]:18 1.5897435897435892 -(byte*) current_piece#17 current_piece_1 zp[2]:10 12.0 -(byte*) current_piece#28 current_piece zp[2]:18 6.0 -(byte*) current_piece#92 current_piece zp[2]:18 2.0 -(byte*) current_piece#95 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#96 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#97 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#98 current_piece_1 zp[2]:10 4.0 -(byte*) current_piece#99 current_piece_1 zp[2]:10 4.0 +(byte*) current_piece#10 current_piece zp[2]:19 8138.27027027027 +(byte*) current_piece#101 current_piece zp[2]:19 11.0 +(byte*) current_piece#15 current_piece zp[2]:19 7706.51282051282 +(byte*) current_piece#17 current_piece_1 zp[2]:10 1.1400006E7 +(byte*) current_piece#28 current_piece zp[2]:19 300003.0 +(byte*) current_piece#92 current_piece zp[2]:19 100001.0 +(byte*) current_piece#95 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#96 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#97 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#98 current_piece_1 zp[2]:10 200002.0 +(byte*) current_piece#99 current_piece_1 zp[2]:10 2000002.0 (byte) current_piece_char -(byte) current_piece_char#10 current_piece_char zp[1]:20 183.9818181818182 -(byte) current_piece_char#100 current_piece_char_1 zp[1]:9 22.0 -(byte) current_piece_char#16 current_piece_char zp[1]:20 3.4324324324324325 -(byte) current_piece_char#29 current_piece_char zp[1]:20 6.0 -(byte) current_piece_char#5 current_piece_char zp[1]:20 0.25 -(byte) current_piece_char#68 current_piece_char_1 zp[1]:9 48.285714285714285 -(byte) current_piece_char#99 current_piece_char_1 zp[1]:9 4.0 +(byte) current_piece_char#10 current_piece_char zp[1]:21 1.8182183847272727E8 +(byte) current_piece_char#100 current_piece_char_1 zp[1]:9 202.0 +(byte) current_piece_char#16 current_piece_char zp[1]:21 5437.9729729729725 +(byte) current_piece_char#29 current_piece_char zp[1]:21 300003.0 +(byte) current_piece_char#5 current_piece_char zp[1]:21 34375.75 +(byte) current_piece_char#68 current_piece_char_1 zp[1]:9 47624.42857142857 +(byte) current_piece_char#99 current_piece_char_1 zp[1]:9 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#111 current_piece_gfx_1 zp[2]:7 2.0 -(byte*) current_piece_gfx#112 current_piece_gfx_1 zp[2]:7 11.0 -(byte*) current_piece_gfx#116 current_piece_gfx zp[2]:22 4.0 -(byte*) current_piece_gfx#123 current_piece_gfx zp[2]:22 4.0 -(byte*) current_piece_gfx#13 current_piece_gfx zp[2]:22 183.9818181818182 -(byte*) current_piece_gfx#18 current_piece_gfx zp[2]:22 6.047619047619047 -(byte*) current_piece_gfx#20 current_piece_gfx zp[2]:22 0.37037037037037035 -(byte*) current_piece_gfx#21 current_piece_gfx zp[2]:22 1.3333333333333333 -(byte*) current_piece_gfx#35 current_piece_gfx zp[2]:22 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx_1 zp[2]:7 48.285714285714285 -(byte*) current_piece_gfx#7 current_piece_gfx zp[2]:22 4.0 +(byte*) current_piece_gfx#111 current_piece_gfx_1 zp[2]:7 11.0 +(byte*) current_piece_gfx#112 current_piece_gfx_1 zp[2]:7 101.0 +(byte*) current_piece_gfx#116 current_piece_gfx zp[2]:23 200002.0 +(byte*) current_piece_gfx#123 current_piece_gfx zp[2]:23 22.0 +(byte*) current_piece_gfx#13 current_piece_gfx zp[2]:23 1.8182183847272727E8 +(byte*) current_piece_gfx#18 current_piece_gfx zp[2]:23 1009.7619047619048 +(byte*) current_piece_gfx#20 current_piece_gfx zp[2]:23 15185.37037037037 +(byte*) current_piece_gfx#21 current_piece_gfx zp[2]:23 51667.33333333333 +(byte*) current_piece_gfx#35 current_piece_gfx zp[2]:23 300003.0 +(byte*) current_piece_gfx#64 current_piece_gfx_1 zp[2]:7 47624.42857142857 +(byte*) current_piece_gfx#7 current_piece_gfx zp[2]:23 200002.0 (byte) current_xpos -(byte) current_xpos#100 current_xpos zp[1]:24 0.3225806451612903 -(byte) current_xpos#118 current_xpos_1 zp[1]:6 1.3333333333333333 -(byte) current_xpos#119 current_xpos_1 zp[1]:6 7.333333333333333 -(byte) current_xpos#14 current_xpos zp[1]:24 20.38181818181818 -(byte) current_xpos#19 current_xpos zp[1]:24 6.047619047619047 -(byte) current_xpos#22 current_xpos zp[1]:24 0.7999999999999999 -(byte) current_xpos#26 current_xpos zp[1]:24 0.4666666666666666 -(byte) current_xpos#43 current_xpos zp[1]:24 6.0 -(byte) current_xpos#59 current_xpos_1 zp[1]:6 5.428571428571429 -(byte) current_xpos#6 current_xpos zp[1]:24 4.0 -(byte) current_xpos#8 current_xpos zp[1]:24 4.0 +(byte) current_xpos#100 current_xpos zp[1]:25 67742.74193548388 +(byte) current_xpos#118 current_xpos_1 zp[1]:6 7.333333333333333 +(byte) current_xpos#119 current_xpos_1 zp[1]:6 67.33333333333333 +(byte) current_xpos#14 current_xpos zp[1]:25 1.8187293036363635E7 +(byte) current_xpos#19 current_xpos zp[1]:25 1009.7619047619048 +(byte) current_xpos#22 current_xpos zp[1]:25 36400.4 +(byte) current_xpos#26 current_xpos zp[1]:25 20333.566666666666 +(byte) current_xpos#43 current_xpos zp[1]:25 300003.0 +(byte) current_xpos#59 current_xpos_1 zp[1]:6 4767.285714285714 +(byte) current_xpos#6 current_xpos zp[1]:25 200002.0 +(byte) current_xpos#8 current_xpos zp[1]:25 200002.0 (byte) current_ypos -(byte) current_ypos#11 current_ypos zp[1]:12 3.297297297297297 -(byte) current_ypos#13 reg byte x 15.0 -(byte) current_ypos#19 current_ypos zp[1]:12 1.7051282051282046 -(byte) current_ypos#3 current_ypos zp[1]:12 4.0 -(byte) current_ypos#38 current_ypos zp[1]:12 6.0 -(byte) current_ypos#6 current_ypos zp[1]:12 0.3333333333333333 -(byte) current_ypos#97 reg byte x 1.0 -(byte) current_ypos#98 reg byte x 4.4 +(byte) current_ypos#11 current_ypos zp[1]:13 35165.32432432432 +(byte) current_ypos#13 reg byte x 1113.0 +(byte) current_ypos#19 current_ypos zp[1]:13 6425.74358974359 +(byte) current_ypos#3 current_ypos zp[1]:13 200002.0 +(byte) current_ypos#38 current_ypos zp[1]:13 300003.0 +(byte) current_ypos#6 current_ypos zp[1]:13 70000.83333333334 +(byte) current_ypos#97 reg byte x 5.5 +(byte) current_ypos#98 reg byte x 40.4 (byte) game_over -(byte) game_over#10 game_over zp[1]:26 4.804347826086958 -(byte) game_over#15 game_over zp[1]:26 3.189189189189189 -(byte) game_over#27 game_over zp[1]:26 6.0 -(byte) game_over#52 game_over zp[1]:26 0.34782608695652173 -(byte) game_over#65 game_over zp[1]:26 0.42857142857142855 +(byte) game_over#10 game_over zp[1]:27 6567.760869565218 +(byte) game_over#15 game_over zp[1]:27 5705.54054054054 +(byte) game_over#27 game_over zp[1]:27 300003.0 +(byte) game_over#52 game_over zp[1]:27 47827.13043478261 +(byte) game_over#65 game_over zp[1]:27 78572.35714285714 (byte) irq_cnt loadstore zp[1]:46 0.48000000000000004 (byte) irq_raster_next loadstore zp[1]:43 0.44444444444444453 (byte) irq_sprite_ptr loadstore zp[1]:45 0.45161290322580644 @@ -194,32 +194,32 @@ (label) keyboard_event_get::@1 (label) keyboard_event_get::@return (byte) keyboard_event_get::return -(byte) keyboard_event_get::return#1 reg byte x 4.0 -(byte) keyboard_event_get::return#2 reg byte x 34.33333333333333 -(byte) keyboard_event_get::return#3 reg byte x 202.0 +(byte) keyboard_event_get::return#1 reg byte a 20002.0 +(byte) keyboard_event_get::return#2 reg byte a 3667.333333333333 +(byte) keyboard_event_get::return#3 reg byte a 2002.0 (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode) -(byte~) keyboard_event_pressed::$0 reg byte a 4.0 -(byte~) keyboard_event_pressed::$1 reg byte a 4.0 +(byte~) keyboard_event_pressed::$0 reg byte y 2000002.0 +(byte~) keyboard_event_pressed::$1 reg byte x 2000002.0 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#5 keycode zp[1]:30 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#5 reg byte x 666667.3333333334 (byte) keyboard_event_pressed::return -(byte) keyboard_event_pressed::return#0 reg byte a 4.0 -(byte) keyboard_event_pressed::return#1 reg byte a 4.0 -(byte) keyboard_event_pressed::return#10 reg byte a 4.0 -(byte) keyboard_event_pressed::return#11 reg byte a 1.714285714285714 -(byte) keyboard_event_pressed::return#12 reg byte a 4.0 -(byte) keyboard_event_pressed::return#2 reg byte a 4.0 +(byte) keyboard_event_pressed::return#0 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#1 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#10 reg byte a 20002.0 +(byte) keyboard_event_pressed::return#11 reg byte a 162858.0 +(byte) keyboard_event_pressed::return#12 reg byte a 200002.0 +(byte) keyboard_event_pressed::return#2 reg byte a 20002.0 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:60 2.0 +(byte) keyboard_event_pressed::row_bits#0 reg byte y 1000001.0 (void()) keyboard_event_scan() -(byte~) keyboard_event_scan::$0 reg byte a 4.0 -(byte~) keyboard_event_scan::$15 reg byte a 20002.0 -(byte~) keyboard_event_scan::$16 reg byte a 20002.0 -(byte~) keyboard_event_scan::$23 reg byte a 20002.0 -(byte~) keyboard_event_scan::$3 reg byte a 4.0 -(byte~) keyboard_event_scan::$6 reg byte a 4.0 -(byte~) keyboard_event_scan::$9 reg byte a 4.0 +(byte~) keyboard_event_scan::$0 reg byte a 20002.0 +(byte~) keyboard_event_scan::$15 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$16 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$23 reg byte a 2.00000002E8 +(byte~) keyboard_event_scan::$3 reg byte a 20002.0 +(byte~) keyboard_event_scan::$6 reg byte a 20002.0 +(byte~) keyboard_event_scan::$9 reg byte a 20002.0 (label) keyboard_event_scan::@1 (label) keyboard_event_scan::@10 (label) keyboard_event_scan::@11 @@ -245,64 +245,64 @@ (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 reg byte x 15001.5 -(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716 +(byte) keyboard_event_scan::col#1 reg byte x 1.500000015E8 +(byte) keyboard_event_scan::col#2 reg byte x 2.857142885714286E7 (byte) keyboard_event_scan::event_type -(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0 +(byte) keyboard_event_scan::event_type#0 reg byte a 2.00000002E8 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp[1]:33 2002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp[1]:33 3154.230769230769 -(byte) keyboard_event_scan::keycode#11 keycode zp[1]:33 500.5 -(byte) keyboard_event_scan::keycode#13 keycode zp[1]:33 1001.0 -(byte) keyboard_event_scan::keycode#14 keycode zp[1]:33 5250.75 +(byte) keyboard_event_scan::keycode#1 keycode zp[1]:31 2.0000002E7 +(byte) keyboard_event_scan::keycode#10 keycode zp[1]:31 3.153846192307692E7 +(byte) keyboard_event_scan::keycode#11 keycode zp[1]:31 5000000.5 +(byte) keyboard_event_scan::keycode#13 keycode zp[1]:31 1.0000001E7 +(byte) keyboard_event_scan::keycode#14 keycode zp[1]:31 5.250000075E7 (byte) keyboard_event_scan::row -(byte) keyboard_event_scan::row#1 row zp[1]:32 1501.5 -(byte) keyboard_event_scan::row#2 row zp[1]:32 600.24 +(byte) keyboard_event_scan::row#1 row zp[1]:30 1.50000015E7 +(byte) keyboard_event_scan::row#2 row zp[1]:30 6000000.24 (byte) keyboard_event_scan::row_scan -(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:60 1278.0555555555554 +(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:60 1.2777778055555556E7 (const byte*) keyboard_events[(number) 8] = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp[1]:31 20002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp[1]:31 8100.9000000000015 -(byte) keyboard_events_size#13 keyboard_events_size zp[1]:31 97.06451612903226 -(byte) keyboard_events_size#16 keyboard_events_size zp[1]:31 4.461538461538461 -(byte) keyboard_events_size#19 keyboard_events_size zp[1]:31 18.999999999999996 -(byte) keyboard_events_size#2 keyboard_events_size zp[1]:31 20002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp[1]:31 10201.2 -(byte) keyboard_events_size#30 keyboard_events_size zp[1]:31 429.2857142857143 -(byte) keyboard_events_size#4 keyboard_events_size zp[1]:31 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp[1]:32 2.00000002E8 +(byte) keyboard_events_size#10 keyboard_events_size zp[1]:32 8.100000089999999E7 +(byte) keyboard_events_size#13 keyboard_events_size zp[1]:32 968709.870967742 +(byte) keyboard_events_size#16 keyboard_events_size zp[1]:32 811.6923076923076 +(byte) keyboard_events_size#19 keyboard_events_size zp[1]:32 1850.5 +(byte) keyboard_events_size#2 keyboard_events_size zp[1]:32 2.00000002E8 +(byte) keyboard_events_size#29 keyboard_events_size zp[1]:32 1.020000012E8 +(byte) keyboard_events_size#30 keyboard_events_size zp[1]:32 4287143.428571429 +(byte) keyboard_events_size#4 keyboard_events_size zp[1]:32 15001.5 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337 -(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 reg byte a 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.10000002E8 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (byte) keyboard_modifiers (const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) } (byte) level -(byte) level#10 level zp[1]:15 1.909090909090909 -(byte) level#17 level zp[1]:15 3.135135135135135 -(byte) level#19 level zp[1]:15 1.1428571428571428 -(byte) level#21 level zp[1]:15 0.4444444444444444 -(byte) level#33 level zp[1]:15 6.0 +(byte) level#10 level zp[1]:16 185168.31818181818 +(byte) level#17 level zp[1]:16 5435.243243243243 +(byte) level#19 level zp[1]:16 442857.7142857142 +(byte) level#21 level zp[1]:16 1722222.4444444445 +(byte) level#33 level zp[1]:16 300003.0 (byte) level_bcd -(byte) level_bcd#11 level_bcd zp[1]:17 2.0 -(byte) level_bcd#17 level_bcd zp[1]:17 1.9999999999999998 -(byte) level_bcd#19 level_bcd zp[1]:17 1.1428571428571428 -(byte) level_bcd#21 level_bcd zp[1]:17 2.6666666666666665 -(byte) level_bcd#31 level_bcd zp[1]:17 6.0 -(byte) level_bcd#62 level_bcd zp[1]:17 0.6000000000000001 -(byte) level_bcd#8 level_bcd zp[1]:17 4.0 +(byte) level_bcd#11 level_bcd zp[1]:18 200018.1475409836 +(byte) level_bcd#17 level_bcd zp[1]:18 3425.508474576271 +(byte) level_bcd#19 level_bcd zp[1]:18 442857.7142857142 +(byte) level_bcd#21 level_bcd zp[1]:18 1.3333334666666666E7 +(byte) level_bcd#31 level_bcd zp[1]:18 300003.0 +(byte) level_bcd#62 level_bcd zp[1]:18 2100000.3 +(byte) level_bcd#8 level_bcd zp[1]:18 2.0000002E7 (word) lines_bcd -(word) lines_bcd#15 lines_bcd zp[2]:13 2.0338983050847457 -(word) lines_bcd#17 lines_bcd zp[2]:13 1.1428571428571428 -(word) lines_bcd#19 lines_bcd zp[2]:13 2.4400000000000004 -(word) lines_bcd#26 lines_bcd zp[2]:13 6.0 -(word) lines_bcd#29 lines_bcd zp[2]:13 1.0 +(word) lines_bcd#15 lines_bcd zp[2]:14 3442.4745762711864 +(word) lines_bcd#17 lines_bcd zp[2]:14 442857.7142857142 +(word) lines_bcd#19 lines_bcd zp[2]:14 64022.14 +(word) lines_bcd#26 lines_bcd zp[2]:14 300003.0 +(word) lines_bcd#29 lines_bcd zp[2]:14 500000.5 (void()) main() (label) main::@1 (label) main::@10 @@ -330,20 +330,20 @@ (label) main::@8 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 reg byte x 101.0 +(byte) main::key_event#0 reg byte x 1001.0 (byte) main::render -(byte) main::render#1 reg byte a 202.0 +(byte) main::render#1 reg byte a 2002.0 (byte) next_piece_idx -(byte) next_piece_idx#10 next_piece_idx zp[1]:25 2.608695652173914 -(byte) next_piece_idx#12 reg byte x 3.4 -(byte) next_piece_idx#16 next_piece_idx zp[1]:25 3.4324324324324325 -(byte) next_piece_idx#17 next_piece_idx zp[1]:25 6.0 -(byte) next_piece_idx#30 next_piece_idx zp[1]:25 6.0 -(byte) next_piece_idx#76 reg byte x 4.0 -(byte) next_piece_idx#77 reg byte x 22.0 +(byte) next_piece_idx#10 next_piece_idx zp[1]:26 6546.0 +(byte) next_piece_idx#12 reg byte y 422.79999999999995 +(byte) next_piece_idx#16 next_piece_idx zp[1]:26 5437.9729729729725 +(byte) next_piece_idx#17 next_piece_idx zp[1]:26 1100013.0 +(byte) next_piece_idx#30 next_piece_idx zp[1]:26 300003.0 +(byte) next_piece_idx#76 reg byte y 22.0 +(byte) next_piece_idx#77 reg byte y 202.0 (byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) -(byte~) play_collision::$14 reg byte a 2002.0 -(byte~) play_collision::$5 reg byte a 20002.0 +(byte~) play_collision::$14 reg byte a 2.0000000002E10 +(byte~) play_collision::$5 reg byte a 2.00000000002E11 (label) play_collision::@1 (label) play_collision::@10 (label) play_collision::@2 @@ -356,58 +356,58 @@ (label) play_collision::@9 (label) play_collision::@return (byte) play_collision::c -(byte) play_collision::c#1 reg byte x 10001.0 -(byte) play_collision::c#2 reg byte x 2222.4444444444443 +(byte) play_collision::c#1 reg byte x 1.00000000001E11 +(byte) play_collision::c#2 reg byte x 2.2222222222444443E10 (byte) play_collision::i -(byte) play_collision::i#1 i zp[1]:59 1615.6153846153845 -(byte) play_collision::i#10 i_1 zp[1]:33 2002.0 -(byte) play_collision::i#12 i_1 zp[1]:33 20002.0 -(byte) play_collision::i#2 i_1 zp[1]:33 15502.0 -(byte) play_collision::i#3 i_1 zp[1]:33 500.5 +(byte) play_collision::i#1 i zp[1]:59 1.6153846154076923E10 +(byte) play_collision::i#10 i_1 zp[1]:31 2.0000000002E10 +(byte) play_collision::i#12 i_1 zp[1]:31 2.00000000002E11 +(byte) play_collision::i#2 i_1 zp[1]:31 1.55000000002E11 +(byte) play_collision::i#3 i_1 zp[1]:31 5.0000000005E9 (byte) play_collision::l -(byte) play_collision::l#1 l zp[1]:30 1001.0 -(byte) play_collision::l#6 l zp[1]:30 117.76470588235294 +(byte) play_collision::l#1 l zp[1]:30 1.0000000001E10 +(byte) play_collision::l#6 l zp[1]:30 1.1764705883529413E9 (byte) play_collision::orientation -(byte) play_collision::orientation#0 reg byte x 2.0 -(byte) play_collision::orientation#1 reg byte x 2.0 -(byte) play_collision::orientation#2 reg byte x 2.0 -(byte) play_collision::orientation#3 reg byte x 2.0 -(byte) play_collision::orientation#5 reg byte x 10.0 +(byte) play_collision::orientation#0 reg byte x 100001.0 +(byte) play_collision::orientation#1 reg byte x 100001.0 +(byte) play_collision::orientation#2 reg byte x 100001.0 +(byte) play_collision::orientation#3 reg byte x 100001.0 +(byte) play_collision::orientation#5 reg byte x 1.0400005E7 (byte*) play_collision::piece_gfx -(byte*) play_collision::piece_gfx#0 piece_gfx zp[2]:10 476.3333333333333 +(byte*) play_collision::piece_gfx#0 piece_gfx zp[2]:10 4.762380952476191E9 (byte*) play_collision::playfield_line -(byte*) play_collision::playfield_line#0 playfield_line zp[2]:50 785.8571428571429 +(byte*) play_collision::playfield_line#0 playfield_line zp[2]:50 7.857142857285714E9 (byte) play_collision::return -(byte) play_collision::return#0 reg byte a 4.0 -(byte) play_collision::return#1 reg byte a 4.0 -(byte) play_collision::return#10 reg byte a 4.0 -(byte) play_collision::return#13 reg byte a 4.0 -(byte) play_collision::return#14 reg byte a 4.0 -(byte) play_collision::return#15 reg byte a 1.4285714285714284 +(byte) play_collision::return#0 reg byte a 200002.0 +(byte) play_collision::return#1 reg byte a 200002.0 +(byte) play_collision::return#10 reg byte a 2000002.0 +(byte) play_collision::return#13 reg byte a 200002.0 +(byte) play_collision::return#14 reg byte a 200002.0 +(byte) play_collision::return#15 reg byte a 200000.7142857143 (byte) play_collision::xp -(byte) play_collision::xp#1 xp zp[1]:60 5000.5 -(byte) play_collision::xp#2 xp zp[1]:60 6375.75 -(byte) play_collision::xp#8 xp zp[1]:60 2002.0 +(byte) play_collision::xp#1 xp zp[1]:60 5.00000000005E10 +(byte) play_collision::xp#2 xp zp[1]:60 6.375000000075E10 +(byte) play_collision::xp#8 xp zp[1]:60 2.0000000002E10 (byte) play_collision::xpos -(byte) play_collision::xpos#0 xpos zp[1]:28 1.3333333333333333 -(byte) play_collision::xpos#1 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#2 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#3 xpos zp[1]:28 1.0 -(byte) play_collision::xpos#4 xpos zp[1]:28 1.3333333333333333 -(byte) play_collision::xpos#6 xpos zp[1]:28 45.95454545454545 +(byte) play_collision::xpos#0 xpos zp[1]:28 66667.33333333333 +(byte) play_collision::xpos#1 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#2 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#3 xpos zp[1]:28 50000.5 +(byte) play_collision::xpos#4 xpos zp[1]:28 666667.3333333334 +(byte) play_collision::xpos#6 xpos zp[1]:28 4.546090911818181E8 (byte) play_collision::yp -(byte) play_collision::yp#0 yp zp[1]:29 6.0 -(byte) play_collision::yp#1 yp zp[1]:29 500.5 -(byte) play_collision::yp#2 yp zp[1]:29 812.875 +(byte) play_collision::yp#0 yp zp[1]:29 5700003.0 +(byte) play_collision::yp#1 yp zp[1]:29 5.0000000005E9 +(byte) play_collision::yp#2 yp zp[1]:29 8.1256250003125E9 (byte) play_collision::ypos -(byte) play_collision::ypos#0 ypos zp[1]:29 1.0 -(byte) play_collision::ypos#1 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#2 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#3 ypos zp[1]:29 1.3333333333333333 -(byte) play_collision::ypos#4 ypos zp[1]:29 2.0 +(byte) play_collision::ypos#0 ypos zp[1]:29 50000.5 +(byte) play_collision::ypos#1 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#2 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#3 ypos zp[1]:29 66667.33333333333 +(byte) play_collision::ypos#4 ypos zp[1]:29 1000001.0 (void()) play_increase_level() -(byte~) play_increase_level::$1 reg byte a 4.0 -(byte~) play_increase_level::$5 reg byte a 4004.0 +(byte~) play_increase_level::$1 reg byte a 2.0000002E7 +(byte~) play_increase_level::$5 reg byte a 4.0000000004E10 (label) play_increase_level::@1 (label) play_increase_level::@2 (label) play_increase_level::@3 @@ -416,29 +416,29 @@ (label) play_increase_level::@6 (label) play_increase_level::@return (byte) play_increase_level::b -(byte) play_increase_level::b#1 reg byte x 1501.5 -(byte) play_increase_level::b#2 reg byte x 1001.0 +(byte) play_increase_level::b#1 reg byte x 1.50000000015E10 +(byte) play_increase_level::b#2 reg byte x 1.0000000001E10 (void()) play_init() -(byte~) play_init::$2 reg byte x 22.0 -(byte~) play_init::$3 reg byte a 33.0 +(byte~) play_init::$2 reg byte x 2002.0 +(byte~) play_init::$3 reg byte a 3003.0 (label) play_init::@1 (label) play_init::@2 (label) play_init::@3 (label) play_init::@return (byte) play_init::b -(byte) play_init::b#1 reg byte x 16.5 -(byte) play_init::b#2 reg byte x 11.0 +(byte) play_init::b#1 reg byte x 1501.5 +(byte) play_init::b#2 reg byte x 1001.0 (byte) play_init::idx -(byte) play_init::idx#1 idx zp[1]:32 7.333333333333333 -(byte) play_init::idx#2 idx zp[1]:32 6.6000000000000005 +(byte) play_init::idx#1 idx zp[1]:33 667.3333333333334 +(byte) play_init::idx#2 idx zp[1]:33 600.5999999999999 (byte) play_init::j -(byte) play_init::j#1 reg byte y 16.5 -(byte) play_init::j#2 reg byte y 7.333333333333333 +(byte) play_init::j#1 reg byte y 1501.5 +(byte) play_init::j#2 reg byte y 667.3333333333334 (byte*) play_init::pli -(byte*) play_init::pli#1 pli zp[2]:34 5.5 -(byte*) play_init::pli#2 pli zp[2]:34 8.25 +(byte*) play_init::pli#1 pli zp[2]:34 500.5 +(byte*) play_init::pli#2 pli zp[2]:34 750.75 (void()) play_lock_current() -(byte~) play_lock_current::$4 reg byte a 2002.0 +(byte~) play_lock_current::$4 reg byte a 2.000000002E9 (label) play_lock_current::@1 (label) play_lock_current::@2 (label) play_lock_current::@3 @@ -448,30 +448,30 @@ (label) play_lock_current::@7 (label) play_lock_current::@return (byte) play_lock_current::c -(byte) play_lock_current::c#1 reg byte x 10001.0 -(byte) play_lock_current::c#2 reg byte x 4000.4 +(byte) play_lock_current::c#1 reg byte x 1.0000000001E10 +(byte) play_lock_current::c#2 reg byte x 4.0000000004E9 (byte) play_lock_current::i -(byte) play_lock_current::i#1 i zp[1]:59 2333.6666666666665 -(byte) play_lock_current::i#2 i_1 zp[1]:60 15502.0 -(byte) play_lock_current::i#3 i_1 zp[1]:60 500.5 -(byte) play_lock_current::i#7 i_1 zp[1]:60 2002.0 -(byte) play_lock_current::i#9 i_1 zp[1]:60 20002.0 +(byte) play_lock_current::i#1 i zp[1]:59 2.333333333666667E9 +(byte) play_lock_current::i#2 i_1 zp[1]:30 1.5500000002E10 +(byte) play_lock_current::i#3 i_1 zp[1]:30 5.000000005E8 +(byte) play_lock_current::i#7 i_1 zp[1]:30 2.000000002E9 +(byte) play_lock_current::i#9 i_1 zp[1]:30 2.0000000002E10 (byte) play_lock_current::l -(byte) play_lock_current::l#1 l zp[1]:33 1001.0 -(byte) play_lock_current::l#6 l zp[1]:33 154.0 +(byte) play_lock_current::l#1 l zp[1]:60 1.000000001E9 +(byte) play_lock_current::l#6 l zp[1]:60 1.53846154E8 (byte*) play_lock_current::playfield_line -(byte*) play_lock_current::playfield_line#0 playfield_line zp[2]:57 1100.2 +(byte*) play_lock_current::playfield_line#0 playfield_line zp[2]:57 1.1000000002E9 (byte) play_lock_current::xp -(byte) play_lock_current::xp#0 xp zp[1]:30 2002.0 -(byte) play_lock_current::xp#1 xp zp[1]:30 5000.5 -(byte) play_lock_current::xp#2 xp zp[1]:30 7751.0 +(byte) play_lock_current::xp#0 xp zp[1]:31 2.000000002E9 +(byte) play_lock_current::xp#1 xp zp[1]:31 5.0000000005E9 +(byte) play_lock_current::xp#2 xp zp[1]:31 7.750000001E9 (byte) play_lock_current::yp -(byte) play_lock_current::yp#0 yp zp[1]:12 4.0 -(byte) play_lock_current::yp#1 yp zp[1]:12 500.5 -(byte) play_lock_current::yp#2 yp zp[1]:12 250.41666666666669 +(byte) play_lock_current::yp#0 yp zp[1]:13 2000002.0 +(byte) play_lock_current::yp#1 yp zp[1]:13 5.000000005E8 +(byte) play_lock_current::yp#2 yp zp[1]:13 2.500833336666667E8 (byte()) play_move_down((byte) play_move_down::key_event) -(byte~) play_move_down::$12 reg byte a 4.0 -(byte~) play_move_down::$2 reg byte a 4.0 +(byte~) play_move_down::$12 reg byte a 200002.0 +(byte~) play_move_down::$2 reg byte a 200002.0 (label) play_move_down::@1 (label) play_move_down::@10 (label) play_move_down::@11 @@ -491,21 +491,21 @@ (label) play_move_down::@9 (label) play_move_down::@return (byte) play_move_down::key_event -(byte) play_move_down::key_event#0 reg byte a 2.0 +(byte) play_move_down::key_event#0 reg byte a 55001.0 (byte) play_move_down::movedown -(byte) play_move_down::movedown#10 reg byte x 1.0 -(byte) play_move_down::movedown#2 reg byte x 4.0 -(byte) play_move_down::movedown#3 reg byte x 4.0 -(byte) play_move_down::movedown#6 reg byte x 6.0 -(byte) play_move_down::movedown#7 reg byte x 5.0 +(byte) play_move_down::movedown#10 movedown zp[1]:12 50000.5 +(byte) play_move_down::movedown#2 movedown zp[1]:12 200002.0 +(byte) play_move_down::movedown#3 movedown zp[1]:12 200002.0 +(byte) play_move_down::movedown#6 movedown zp[1]:12 300003.0 +(byte) play_move_down::movedown#7 movedown zp[1]:12 250002.5 (byte) play_move_down::removed -(byte) play_move_down::removed#0 reg byte a 4.0 +(byte) play_move_down::removed#0 reg byte a 200002.0 (byte) play_move_down::return -(byte) play_move_down::return#0 reg byte a 4.0 -(byte) play_move_down::return#3 reg byte x 0.6666666666666666 +(byte) play_move_down::return#0 reg byte a 20002.0 +(byte) play_move_down::return#3 reg byte x 3333.6666666666665 (byte()) play_move_leftright((byte) play_move_leftright::key_event) -(byte~) play_move_leftright::$4 reg byte a 4.0 -(byte~) play_move_leftright::$8 reg byte a 4.0 +(byte~) play_move_leftright::$4 reg byte a 200002.0 +(byte~) play_move_leftright::$8 reg byte a 200002.0 (label) play_move_leftright::@1 (label) play_move_leftright::@2 (label) play_move_leftright::@3 @@ -515,14 +515,14 @@ (label) play_move_leftright::@7 (label) play_move_leftright::@return (byte) play_move_leftright::key_event -(byte) play_move_leftright::key_event#0 reg byte a 3.0 +(byte) play_move_leftright::key_event#0 reg byte a 105001.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 reg byte a 4.0 -(byte) play_move_leftright::return#2 reg byte a 0.6666666666666666 +(byte) play_move_leftright::return#0 reg byte a 20002.0 +(byte) play_move_leftright::return#2 reg byte a 3333.6666666666665 (byte()) play_move_rotate((byte) play_move_rotate::key_event) -(byte~) play_move_rotate::$2 reg byte a 4.0 -(byte~) play_move_rotate::$5 reg byte x 4.0 -(byte~) play_move_rotate::$7 reg byte x 4.0 +(byte~) play_move_rotate::$2 reg byte a 200002.0 +(byte~) play_move_rotate::$5 reg byte x 200002.0 +(byte~) play_move_rotate::$7 reg byte a 200002.0 (label) play_move_rotate::@1 (label) play_move_rotate::@2 (label) play_move_rotate::@3 @@ -531,31 +531,31 @@ (label) play_move_rotate::@6 (label) play_move_rotate::@return (byte) play_move_rotate::key_event -(byte) play_move_rotate::key_event#0 reg byte a 3.0 +(byte) play_move_rotate::key_event#0 reg byte a 105001.5 (byte) play_move_rotate::orientation -(byte) play_move_rotate::orientation#1 orientation zp[1]:27 4.0 -(byte) play_move_rotate::orientation#2 orientation zp[1]:27 4.0 -(byte) play_move_rotate::orientation#3 orientation zp[1]:27 0.8888888888888888 +(byte) play_move_rotate::orientation#1 orientation zp[1]:12 200002.0 +(byte) play_move_rotate::orientation#2 orientation zp[1]:12 200002.0 +(byte) play_move_rotate::orientation#3 orientation zp[1]:12 44444.88888888889 (byte) play_move_rotate::return -(byte) play_move_rotate::return#0 reg byte a 4.0 -(byte) play_move_rotate::return#2 reg byte a 0.6666666666666666 +(byte) play_move_rotate::return#0 reg byte a 20002.0 +(byte) play_move_rotate::return#2 reg byte a 3333.6666666666665 (byte()) play_movement((byte) play_movement::key_event) -(byte~) play_movement::$3 reg byte a 4.0 -(byte~) play_movement::$4 reg byte a 4.0 +(byte~) play_movement::$3 reg byte a 20002.0 +(byte~) play_movement::$4 reg byte a 20002.0 (label) play_movement::@1 (label) play_movement::@2 (label) play_movement::@3 (label) play_movement::@4 (label) play_movement::@return (byte) play_movement::key_event -(byte) play_movement::key_event#0 key_event zp[1]:47 9.727272727272727 +(byte) play_movement::key_event#0 key_event zp[1]:47 2818.5454545454545 (byte) play_movement::render -(byte) play_movement::render#1 render zp[1]:32 1.0 -(byte) play_movement::render#2 render zp[1]:32 0.8 +(byte) play_movement::render#1 render zp[1]:33 5000.5 +(byte) play_movement::render#2 render zp[1]:33 4000.4 (byte) play_movement::return -(byte) play_movement::return#0 return zp[1]:32 4.0 -(byte) play_movement::return#2 return zp[1]:32 34.99999999999999 -(byte) play_movement::return#3 reg byte a 202.0 +(byte) play_movement::return#0 return zp[1]:33 20002.0 +(byte) play_movement::return#2 return zp[1]:33 7001.0 +(byte) play_movement::return#3 reg byte a 2002.0 (byte()) play_remove_lines() (label) play_remove_lines::@1 (label) play_remove_lines::@2 @@ -568,37 +568,37 @@ (label) play_remove_lines::@9 (label) play_remove_lines::@return (byte) play_remove_lines::c -(byte) play_remove_lines::c#0 c zp[1]:59 6000.6 +(byte) play_remove_lines::c#0 c zp[1]:59 6.0000000006E9 (byte) play_remove_lines::full -(byte) play_remove_lines::full#2 full zp[1]:30 4200.6 -(byte) play_remove_lines::full#4 full zp[1]:30 4000.4 +(byte) play_remove_lines::full#2 full zp[1]:31 4.2000000006E9 +(byte) play_remove_lines::full#4 full zp[1]:31 4.0000000004E9 (byte) play_remove_lines::r -(byte) play_remove_lines::r#1 reg byte y 1500.2142857142858 -(byte) play_remove_lines::r#2 reg byte y 15502.0 -(byte) play_remove_lines::r#3 reg byte y 2002.0 +(byte) play_remove_lines::r#1 reg byte y 1.5000000002142856E9 +(byte) play_remove_lines::r#2 reg byte y 1.5500000002E10 +(byte) play_remove_lines::r#3 reg byte y 2.000000002E9 (byte) play_remove_lines::removed -(byte) play_remove_lines::removed#1 removed zp[1]:28 2002.0 -(byte) play_remove_lines::removed#11 removed zp[1]:28 231.0 -(byte) play_remove_lines::removed#8 removed zp[1]:28 333.8888888888889 +(byte) play_remove_lines::removed#1 removed zp[1]:29 2.000000002E9 +(byte) play_remove_lines::removed#11 removed zp[1]:29 2.30769231E8 +(byte) play_remove_lines::removed#8 removed zp[1]:29 3.333444448888889E8 (byte) play_remove_lines::return -(byte) play_remove_lines::return#0 reg byte a 4.0 +(byte) play_remove_lines::return#0 reg byte a 200002.0 (byte) play_remove_lines::w -(byte) play_remove_lines::w#1 reg byte x 5501.0 -(byte) play_remove_lines::w#11 reg byte x 1334.6666666666667 -(byte) play_remove_lines::w#12 reg byte x 2002.0 -(byte) play_remove_lines::w#2 reg byte x 1001.0 -(byte) play_remove_lines::w#3 reg byte x 2002.0 -(byte) play_remove_lines::w#4 reg byte x 4429.142857142857 -(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335 +(byte) play_remove_lines::w#1 reg byte x 5.500000001E9 +(byte) play_remove_lines::w#11 reg byte x 1.3333333346666667E9 +(byte) play_remove_lines::w#12 reg byte x 2.000000002E9 +(byte) play_remove_lines::w#2 reg byte x 1.000000001E9 +(byte) play_remove_lines::w#3 reg byte x 2.000000002E9 +(byte) play_remove_lines::w#4 reg byte x 4.428571429142857E9 +(byte) play_remove_lines::w#6 reg byte x 1.6666666683333335E9 (byte) play_remove_lines::x -(byte) play_remove_lines::x#1 x zp[1]:29 15001.5 -(byte) play_remove_lines::x#2 x zp[1]:29 2500.25 +(byte) play_remove_lines::x#1 x zp[1]:30 1.50000000015E10 +(byte) play_remove_lines::x#2 x zp[1]:30 2.50000000025E9 (byte) play_remove_lines::y -(byte) play_remove_lines::y#1 y zp[1]:27 1501.5 -(byte) play_remove_lines::y#8 y zp[1]:27 133.46666666666667 +(byte) play_remove_lines::y#1 y zp[1]:28 1.5000000015E9 +(byte) play_remove_lines::y#8 y zp[1]:28 1.3333333346666667E8 (void()) play_spawn_current() -(byte~) play_spawn_current::$1 reg byte a 4.0 -(byte~) play_spawn_current::$7 zp[1]:52 0.06451612903225806 +(byte~) play_spawn_current::$1 reg byte a 2000002.0 +(byte~) play_spawn_current::$7 zp[1]:52 32258.09677419355 (label) play_spawn_current::@1 (label) play_spawn_current::@2 (label) play_spawn_current::@3 @@ -606,79 +606,79 @@ (label) play_spawn_current::@5 (label) play_spawn_current::@return (byte) play_spawn_current::current_piece_idx -(byte) play_spawn_current::current_piece_idx#0 reg byte x 2.5 +(byte) play_spawn_current::current_piece_idx#0 reg byte x 1250001.25 (byte) play_spawn_current::piece_idx -(byte) play_spawn_current::piece_idx#1 piece_idx zp[1]:25 2002.0 -(byte) play_spawn_current::piece_idx#2 piece_idx zp[1]:25 100.5 +(byte) play_spawn_current::piece_idx#1 piece_idx zp[1]:26 2.000000002E9 +(byte) play_spawn_current::piece_idx#2 piece_idx zp[1]:26 1.000050018E8 (label) play_spawn_current::sid_rnd1 (byte) play_spawn_current::sid_rnd1_return -(byte) play_spawn_current::sid_rnd1_return#0 reg byte a 2002.0 +(byte) play_spawn_current::sid_rnd1_return#0 reg byte a 2.000000002E9 (void()) play_update_score((byte) play_update_score::removed) -(byte~) play_update_score::$2 reg byte a 4.0 -(byte~) play_update_score::$4 reg byte a 4.0 -(byte~) play_update_score::$9 reg byte a 4.0 +(byte~) play_update_score::$2 reg byte a 2000002.0 +(byte~) play_update_score::$4 reg byte a 2000002.0 +(byte~) play_update_score::$9 reg byte a 2000002.0 (label) play_update_score::@1 (label) play_update_score::@2 (label) play_update_score::@return (dword) play_update_score::add_bcd -(dword) play_update_score::add_bcd#0 add_bcd zp[4]:53 1.3333333333333333 +(dword) play_update_score::add_bcd#0 add_bcd zp[4]:53 666667.3333333334 (byte) play_update_score::lines_after -(byte) play_update_score::lines_after#0 reg byte a 4.0 +(byte) play_update_score::lines_after#0 reg byte a 2000002.0 (byte) play_update_score::lines_before -(byte) play_update_score::lines_before#0 lines_before zp[1]:52 0.4444444444444444 +(byte) play_update_score::lines_before#0 lines_before zp[1]:52 222222.44444444444 (byte) play_update_score::removed -(byte) play_update_score::removed#0 reg byte x 1.1428571428571428 +(byte) play_update_score::removed#0 reg byte x 442857.7142857142 (const byte*) playfield[(const byte) PLAYFIELD_LINES*(const byte) PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) } (const byte**) playfield_lines[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (const byte*) playfield_lines_idx[(const byte) PLAYFIELD_LINES+(byte) 1] = { fill( PLAYFIELD_LINES+1, 0) } (void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low) -(byte~) render_bcd::$3 reg byte a 4.0 -(byte~) render_bcd::$4 reg byte a 4.0 -(byte~) render_bcd::$5 reg byte a 4.0 -(byte~) render_bcd::$6 reg byte a 4.0 +(byte~) render_bcd::$3 reg byte a 20002.0 +(byte~) render_bcd::$4 reg byte a 20002.0 +(byte~) render_bcd::$5 reg byte a 20002.0 +(byte~) render_bcd::$6 reg byte a 20002.0 (label) render_bcd::@1 (label) render_bcd::@2 (label) render_bcd::@return (const byte) render_bcd::ZERO_CHAR = (byte) $35 (byte) render_bcd::bcd -(byte) render_bcd::bcd#0 reg byte x 4.0 -(byte) render_bcd::bcd#1 reg byte x 4.0 -(byte) render_bcd::bcd#2 reg byte x 4.0 -(byte) render_bcd::bcd#3 reg byte x 2.0 -(byte) render_bcd::bcd#4 reg byte x 2.0 -(byte) render_bcd::bcd#5 reg byte x 4.0 -(byte) render_bcd::bcd#6 reg byte x 2.0 +(byte) render_bcd::bcd#0 reg byte x 2002.0 +(byte) render_bcd::bcd#1 reg byte x 2002.0 +(byte) render_bcd::bcd#2 reg byte x 2002.0 +(byte) render_bcd::bcd#3 reg byte x 1001.0 +(byte) render_bcd::bcd#4 reg byte x 1001.0 +(byte) render_bcd::bcd#5 reg byte x 2002.0 +(byte) render_bcd::bcd#6 reg byte x 3251.0 (word) render_bcd::offset -(word) render_bcd::offset#6 offset zp[2]:10 2.0 +(word) render_bcd::offset#6 offset zp[2]:10 10001.0 (byte) render_bcd::only_low -(byte) render_bcd::only_low#6 reg byte y 1.0 +(byte) render_bcd::only_low#6 reg byte y 5000.5 (byte*) render_bcd::screen -(byte*) render_bcd::screen#0 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#1 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#2 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#3 screen zp[2]:7 4.0 -(byte*) render_bcd::screen#4 screen zp[2]:7 4.0 -(byte*) render_bcd::screen#5 screen zp[2]:7 2.0 -(byte*) render_bcd::screen#6 screen zp[2]:7 14.0 +(byte*) render_bcd::screen#0 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#1 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#2 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#3 screen zp[2]:7 2002.0 +(byte*) render_bcd::screen#4 screen zp[2]:7 2002.0 +(byte*) render_bcd::screen#5 screen zp[2]:7 1001.0 +(byte*) render_bcd::screen#6 screen zp[2]:7 16007.0 (byte*) render_bcd::screen_pos -(byte*) render_bcd::screen_pos#0 screen_pos zp[2]:10 1.6 -(byte*) render_bcd::screen_pos#2 screen_pos zp[2]:10 4.0 -(byte*) render_bcd::screen_pos#3 screen_pos zp[2]:10 2.0 +(byte*) render_bcd::screen_pos#0 screen_pos zp[2]:10 8000.8 +(byte*) render_bcd::screen_pos#2 screen_pos zp[2]:10 20002.0 +(byte*) render_bcd::screen_pos#3 screen_pos zp[2]:10 10001.0 (void()) render_init() -(byte~) render_init::$5 reg byte x 16.5 +(byte~) render_init::$5 reg byte x 1501.5 (label) render_init::@1 (label) render_init::@2 (label) render_init::@3 (label) render_init::@return (byte) render_init::i -(byte) render_init::i#1 reg byte y 16.5 -(byte) render_init::i#2 reg byte y 5.5 +(byte) render_init::i#1 reg byte y 1501.5 +(byte) render_init::i#2 reg byte y 500.5 (byte*) render_init::li_1 -(byte*) render_init::li_1#1 li_1 zp[2]:34 5.5 -(byte*) render_init::li_1#2 li_1 zp[2]:34 8.25 +(byte*) render_init::li_1#1 li_1 zp[2]:34 500.5 +(byte*) render_init::li_1#2 li_1 zp[2]:34 750.75 (byte*) render_init::li_2 -(byte*) render_init::li_2#1 li_2 zp[2]:48 7.333333333333333 -(byte*) render_init::li_2#2 li_2 zp[2]:48 6.6000000000000005 +(byte*) render_init::li_2#1 li_2 zp[2]:48 667.3333333333334 +(byte*) render_init::li_2#2 li_2 zp[2]:48 600.5999999999999 (label) render_init::vicSelectGfxBank1 (label) render_init::vicSelectGfxBank1_@1 (byte*) render_init::vicSelectGfxBank1_gfx @@ -687,8 +687,8 @@ (byte) render_init::vicSelectGfxBank1_toDd001_return (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3 (void()) render_moving() -(byte~) render_moving::$1 reg byte a 202.0 -(byte~) render_moving::$6 reg byte a 202.0 +(byte~) render_moving::$1 reg byte a 200002.0 +(byte~) render_moving::$6 reg byte a 200002.0 (label) render_moving::@1 (label) render_moving::@2 (label) render_moving::@3 @@ -698,31 +698,31 @@ (label) render_moving::@7 (label) render_moving::@return (byte) render_moving::c -(byte) render_moving::c#1 reg byte x 1501.5 -(byte) render_moving::c#2 reg byte x 333.6666666666667 +(byte) render_moving::c#1 reg byte x 1500001.5 +(byte) render_moving::c#2 reg byte x 333333.6666666667 (byte) render_moving::current_cell -(byte) render_moving::current_cell#0 reg byte a 1001.0 +(byte) render_moving::current_cell#0 reg byte a 1000001.0 (byte) render_moving::i -(byte) render_moving::i#1 i zp[1]:29 202.0 -(byte) render_moving::i#2 i zp[1]:29 500.5 -(byte) render_moving::i#3 i zp[1]:29 50.5 -(byte) render_moving::i#4 i zp[1]:29 1552.0 -(byte) render_moving::i#8 i zp[1]:29 300.75 +(byte) render_moving::i#1 i zp[1]:29 200002.0 +(byte) render_moving::i#2 i zp[1]:29 500000.5 +(byte) render_moving::i#3 i zp[1]:29 50000.5 +(byte) render_moving::i#4 i zp[1]:29 1550002.0 +(byte) render_moving::i#8 i zp[1]:29 300000.75 (byte) render_moving::l -(byte) render_moving::l#1 l zp[1]:28 151.5 -(byte) render_moving::l#4 l zp[1]:28 11.882352941176471 +(byte) render_moving::l#1 l zp[1]:28 150001.5 +(byte) render_moving::l#4 l zp[1]:28 11764.823529411764 (byte*) render_moving::screen_line -(byte*) render_moving::screen_line#0 screen_line zp[2]:48 110.19999999999999 +(byte*) render_moving::screen_line#0 screen_line zp[2]:48 110000.20000000001 (byte) render_moving::xpos -(byte) render_moving::xpos#0 xpos zp[1]:32 202.0 -(byte) render_moving::xpos#1 xpos zp[1]:32 667.3333333333334 -(byte) render_moving::xpos#2 xpos zp[1]:32 620.8 +(byte) render_moving::xpos#0 xpos zp[1]:33 200002.0 +(byte) render_moving::xpos#1 xpos zp[1]:33 666667.3333333334 +(byte) render_moving::xpos#2 xpos zp[1]:33 620000.8 (byte) render_moving::ypos -(byte) render_moving::ypos#0 ypos zp[1]:27 4.0 -(byte) render_moving::ypos#1 ypos zp[1]:27 67.33333333333333 -(byte) render_moving::ypos#2 ypos zp[1]:27 25.375 +(byte) render_moving::ypos#0 ypos zp[1]:12 2002.0 +(byte) render_moving::ypos#1 ypos zp[1]:12 66667.33333333333 +(byte) render_moving::ypos#2 ypos zp[1]:12 25062.8125 (void()) render_next() -(byte~) render_next::$6 reg byte y 1.0 +(byte~) render_next::$6 reg byte x 500.5 (label) render_next::@1 (label) render_next::@2 (label) render_next::@3 @@ -733,48 +733,48 @@ (label) render_next::@8 (label) render_next::@return (byte) render_next::c -(byte) render_next::c#1 reg byte x 1501.5 -(byte) render_next::c#2 reg byte x 286.0 +(byte) render_next::c#1 reg byte x 1500001.5 +(byte) render_next::c#2 reg byte x 285714.5714285714 (byte) render_next::cell -(byte) render_next::cell#0 reg byte a 1001.0 +(byte) render_next::cell#0 reg byte a 1000001.0 (byte) render_next::l -(byte) render_next::l#1 l zp[1]:5 151.5 -(byte) render_next::l#7 l zp[1]:5 18.363636363636363 +(byte) render_next::l#1 l zp[1]:5 150001.5 +(byte) render_next::l#7 l zp[1]:5 18182.0 (const word) render_next::next_area_offset = (word)(number) $28*(number) $c+(number) $18+(number) 4 (byte) render_next::next_piece_char -(byte) render_next::next_piece_char#0 next_piece_char zp[1]:59 66.86666666666667 +(byte) render_next::next_piece_char#0 next_piece_char zp[1]:59 66733.46666666667 (byte*) render_next::next_piece_gfx -(byte*) render_next::next_piece_gfx#1 next_piece_gfx zp[2]:7 210.29999999999998 -(byte*) render_next::next_piece_gfx#2 next_piece_gfx zp[2]:7 1552.0 -(byte*) render_next::next_piece_gfx#3 next_piece_gfx zp[2]:7 204.0 -(byte*) render_next::next_piece_gfx#9 next_piece_gfx zp[2]:7 4.0 +(byte*) render_next::next_piece_gfx#1 next_piece_gfx zp[2]:7 210000.30000000002 +(byte*) render_next::next_piece_gfx#2 next_piece_gfx zp[2]:7 1550002.0 +(byte*) render_next::next_piece_gfx#3 next_piece_gfx zp[2]:7 201003.0 +(byte*) render_next::next_piece_gfx#9 next_piece_gfx zp[2]:7 2002.0 (byte*) render_next::screen_next_area -(byte*) render_next::screen_next_area#10 screen_next_area zp[2]:10 204.0 -(byte*) render_next::screen_next_area#11 screen_next_area zp[2]:10 0.5 -(byte*) render_next::screen_next_area#3 screen_next_area zp[2]:10 701.0 -(byte*) render_next::screen_next_area#4 screen_next_area zp[2]:10 67.33333333333333 -(byte*) render_next::screen_next_area#5 screen_next_area zp[2]:10 684.1666666666667 +(byte*) render_next::screen_next_area#10 screen_next_area zp[2]:10 201003.0 +(byte*) render_next::screen_next_area#11 screen_next_area zp[2]:10 250.25 +(byte*) render_next::screen_next_area#3 screen_next_area zp[2]:10 700001.0 +(byte*) render_next::screen_next_area#4 screen_next_area zp[2]:10 66667.33333333333 +(byte*) render_next::screen_next_area#5 screen_next_area zp[2]:10 683334.1666666667 (void()) render_playfield() -(byte~) render_playfield::$0 reg byte a 202.0 -(byte~) render_playfield::$3 reg byte a 202.0 +(byte~) render_playfield::$0 reg byte a 200002.0 +(byte~) render_playfield::$3 reg byte a 200002.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 (label) render_playfield::@return (byte) render_playfield::c -(byte) render_playfield::c#1 c zp[1]:29 1501.5 -(byte) render_playfield::c#2 c zp[1]:29 500.5 +(byte) render_playfield::c#1 c zp[1]:29 1500001.5 +(byte) render_playfield::c#2 c zp[1]:29 500000.5 (byte) render_playfield::i -(byte) render_playfield::i#1 i zp[1]:28 420.59999999999997 -(byte) render_playfield::i#2 i zp[1]:28 1034.6666666666667 -(byte) render_playfield::i#3 i zp[1]:28 50.5 +(byte) render_playfield::i#1 i zp[1]:28 420000.60000000003 +(byte) render_playfield::i#2 i zp[1]:28 1033334.6666666667 +(byte) render_playfield::i#3 i zp[1]:28 50000.5 (byte) render_playfield::l -(byte) render_playfield::l#1 l zp[1]:27 151.5 -(byte) render_playfield::l#2 l zp[1]:27 30.299999999999997 +(byte) render_playfield::l#1 l zp[1]:12 150001.5 +(byte) render_playfield::l#2 l zp[1]:12 30000.300000000003 (byte*) render_playfield::screen_line -(byte*) render_playfield::screen_line#0 screen_line zp[2]:10 202.0 -(byte*) render_playfield::screen_line#1 screen_line zp[2]:10 500.5 -(byte*) render_playfield::screen_line#2 screen_line zp[2]:10 1552.0 +(byte*) render_playfield::screen_line#0 screen_line zp[2]:10 200002.0 +(byte*) render_playfield::screen_line#1 screen_line zp[2]:10 500000.5 +(byte*) render_playfield::screen_line#2 screen_line zp[2]:10 1550002.0 (void()) render_score() (label) render_score::@1 (label) render_score::@2 @@ -789,7 +789,7 @@ (const byte*) render_score::score_bytes = (byte*)&(dword) score_bcd (const word) render_score::score_offset = (word)(number) $28*(number) 5+(number) $1c (byte*) render_score::screen -(byte*) render_score::screen#3 screen zp[2]:7 0.75 +(byte*) render_score::screen#3 screen zp[2]:7 375.375 (void()) render_screen_original((byte*) render_screen_original::screen) (label) render_screen_original::@1 (label) render_screen_original::@2 @@ -799,60 +799,60 @@ (label) render_screen_original::@return (const byte) render_screen_original::SPACE = (byte) 0 (byte*) render_screen_original::cols -(byte*) render_screen_original::cols#1 cols zp[2]:36 101.0 -(byte*) render_screen_original::cols#2 cols zp[2]:36 75.75 -(byte*) render_screen_original::cols#3 cols zp[2]:36 42.599999999999994 -(byte*) render_screen_original::cols#4 cols zp[2]:36 78.5 -(byte*) render_screen_original::cols#5 cols zp[2]:36 80.8 -(byte*) render_screen_original::cols#6 cols zp[2]:36 101.0 -(byte*) render_screen_original::cols#7 cols zp[2]:36 22.0 +(byte*) render_screen_original::cols#1 cols zp[2]:36 100001.0 +(byte*) render_screen_original::cols#2 cols zp[2]:36 75000.75 +(byte*) render_screen_original::cols#3 cols zp[2]:36 42000.600000000006 +(byte*) render_screen_original::cols#4 cols zp[2]:36 77501.0 +(byte*) render_screen_original::cols#5 cols zp[2]:36 80000.8 +(byte*) render_screen_original::cols#6 cols zp[2]:36 100001.0 +(byte*) render_screen_original::cols#7 cols zp[2]:36 20002.0 (byte*) render_screen_original::ocols -(byte*) render_screen_original::ocols#1 ocols zp[2]:57 17.75 -(byte*) render_screen_original::ocols#2 ocols zp[2]:57 67.33333333333333 -(byte*) render_screen_original::ocols#4 ocols zp[2]:57 14.0 +(byte*) render_screen_original::ocols#1 ocols zp[2]:57 17500.25 +(byte*) render_screen_original::ocols#2 ocols zp[2]:57 66667.33333333333 +(byte*) render_screen_original::ocols#4 ocols zp[2]:57 13750.25 (byte*) render_screen_original::oscr -(byte*) render_screen_original::oscr#1 oscr zp[2]:50 14.2 -(byte*) render_screen_original::oscr#2 oscr zp[2]:50 134.66666666666666 -(byte*) render_screen_original::oscr#4 oscr zp[2]:50 14.0 +(byte*) render_screen_original::oscr#1 oscr zp[2]:50 14000.2 +(byte*) render_screen_original::oscr#2 oscr zp[2]:50 133334.66666666666 +(byte*) render_screen_original::oscr#4 oscr zp[2]:50 13750.25 (byte*) render_screen_original::screen -(byte*) render_screen_original::screen#10 screen zp[2]:48 30.42857142857143 -(byte*) render_screen_original::screen#2 screen zp[2]:48 60.599999999999994 -(byte*) render_screen_original::screen#3 screen zp[2]:48 43.285714285714285 -(byte*) render_screen_original::screen#5 screen zp[2]:48 157.0 -(byte*) render_screen_original::screen#6 screen zp[2]:48 202.0 -(byte*) render_screen_original::screen#7 screen zp[2]:48 202.0 -(byte*) render_screen_original::screen#8 screen zp[2]:48 24.0 -(byte*) render_screen_original::screen#9 screen zp[2]:48 2.0 +(byte*) render_screen_original::screen#10 screen zp[2]:48 30000.428571428572 +(byte*) render_screen_original::screen#2 screen zp[2]:48 60000.600000000006 +(byte*) render_screen_original::screen#3 screen zp[2]:48 42857.57142857143 +(byte*) render_screen_original::screen#5 screen zp[2]:48 155002.0 +(byte*) render_screen_original::screen#6 screen zp[2]:48 200002.0 +(byte*) render_screen_original::screen#7 screen zp[2]:48 200002.0 +(byte*) render_screen_original::screen#8 screen zp[2]:48 21003.0 +(byte*) render_screen_original::screen#9 screen zp[2]:48 1001.0 (byte) render_screen_original::x -(byte) render_screen_original::x#1 reg byte x 202.0 -(byte) render_screen_original::x#2 reg byte x 202.0 -(byte) render_screen_original::x#3 reg byte x 151.5 -(byte) render_screen_original::x#4 reg byte x 40.4 -(byte) render_screen_original::x#5 reg byte x 43.285714285714285 -(byte) render_screen_original::x#6 reg byte x 60.599999999999994 +(byte) render_screen_original::x#1 reg byte x 200002.0 +(byte) render_screen_original::x#2 reg byte x 200002.0 +(byte) render_screen_original::x#3 reg byte x 150001.5 +(byte) render_screen_original::x#4 reg byte x 40000.4 +(byte) render_screen_original::x#5 reg byte x 42857.57142857143 +(byte) render_screen_original::x#6 reg byte x 60000.600000000006 (byte) render_screen_original::y -(byte) render_screen_original::y#1 y zp[1]:47 16.5 -(byte) render_screen_original::y#6 y zp[1]:47 0.9166666666666666 +(byte) render_screen_original::y#1 y zp[1]:47 15001.5 +(byte) render_screen_original::y#6 y zp[1]:47 833.4166666666666 (byte) render_screen_render -(byte) render_screen_render#11 render_screen_render zp[1]:3 3.25 -(byte) render_screen_render#15 reg byte a 13.0 -(byte) render_screen_render#18 render_screen_render zp[1]:3 4.8076923076923075 -(byte) render_screen_render#22 reg byte x 8.615384615384615 -(byte) render_screen_render#33 render_screen_render_1 zp[1]:5 5.333333333333333 -(byte) render_screen_render#63 reg byte x 22.0 -(byte) render_screen_render#64 render_screen_render_1 zp[1]:5 5.5 -(byte) render_screen_render#65 reg byte a 11.0 +(byte) render_screen_render#11 render_screen_render zp[1]:3 275.5 +(byte) render_screen_render#15 reg byte x 1102.0 +(byte) render_screen_render#18 render_screen_render zp[1]:3 84.76923076923077 +(byte) render_screen_render#22 reg byte x 7700.153846153846 +(byte) render_screen_render#33 render_screen_render_1 zp[1]:5 4766.761904761905 +(byte) render_screen_render#63 reg byte x 202.0 +(byte) render_screen_render#64 render_screen_render_1 zp[1]:5 50.5 +(byte) render_screen_render#65 reg byte x 101.0 (byte) render_screen_show -(byte) render_screen_show#13 render_screen_show zp[1]:2 4.333333333333333 -(byte) render_screen_show#16 render_screen_show zp[1]:2 5.474999999999999 -(byte) render_screen_showing loadstore zp[1]:38 0.6000000000000001 +(byte) render_screen_show#13 render_screen_show zp[1]:2 367.33333333333337 +(byte) render_screen_show#16 render_screen_show zp[1]:2 577.65 +(byte) render_screen_showing loadstore zp[1]:38 1000.5000000000001 (void()) render_screen_swap() (label) render_screen_swap::@return (void()) render_show() (label) render_show::@1 (label) render_show::@return (byte) render_show::d018val -(byte) render_show::d018val#3 reg byte a 2.0 +(byte) render_show::d018val#3 reg byte a 10001.0 (label) render_show::toD0181 (byte*) render_show::toD0181_gfx (byte) render_show::toD0181_return @@ -864,7 +864,7 @@ (const byte) render_show::toD0182_return#0 toD0182_return = >(word)(const byte*) PLAYFIELD_SCREEN_2&(word) $3fff*(byte) 4|>(word)(const byte*) PLAYFIELD_CHARSET/(byte) 4&(byte) $f (byte*) render_show::toD0182_screen (const dword*) score_add_bcd[(number) 5] = { fill( 5, 0) } -(dword) score_bcd loadstore zp[4]:39 0.043795620437956206 +(dword) score_bcd loadstore zp[4]:39 14598.569343065694 (const byte**) screen_lines_1[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (const byte**) screen_lines_2[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) } (void()) sid_rnd_init() @@ -873,13 +873,13 @@ (label) sprites_init::@1 (label) sprites_init::@return (byte) sprites_init::s -(byte) sprites_init::s#1 reg byte y 16.5 -(byte) sprites_init::s#2 reg byte y 8.8 +(byte) sprites_init::s#1 reg byte y 1501.5 +(byte) sprites_init::s#2 reg byte y 800.8 (byte) sprites_init::s2 -(byte) sprites_init::s2#0 reg byte x 22.0 +(byte) sprites_init::s2#0 reg byte x 2002.0 (byte) sprites_init::xpos -(byte) sprites_init::xpos#1 xpos zp[1]:33 7.333333333333333 -(byte) sprites_init::xpos#2 xpos zp[1]:33 8.25 +(byte) sprites_init::xpos#1 xpos zp[1]:33 667.3333333333334 +(byte) sprites_init::xpos#2 xpos zp[1]:33 750.75 interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() (byte~) sprites_irq::$0 reg byte x 4.0 (label) sprites_irq::@1 @@ -919,8 +919,8 @@ zp[1]:3 [ render_screen_render#18 render_screen_render#11 ] zp[1]:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] reg byte y [ render_bcd::only_low#6 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] -reg byte a [ render_screen_render#15 render_screen_render#65 ] -reg byte x [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] +reg byte x [ render_screen_render#15 render_screen_render#65 ] +reg byte y [ next_piece_idx#12 next_piece_idx#76 next_piece_idx#77 ] reg byte x [ render_next::c#2 render_next::c#1 ] reg byte x [ current_ypos#13 current_ypos#97 current_ypos#98 ] zp[1]:5 [ render_screen_render#33 render_screen_render#64 render_next::l#7 render_next::l#1 ] @@ -935,37 +935,37 @@ reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_co reg byte x [ play_collision::c#2 play_collision::c#1 ] reg byte a [ play_collision::return#15 ] reg byte a [ play_move_leftright::return#2 ] -reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] -zp[1]:12 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] -zp[2]:13 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] -zp[1]:15 [ level#33 level#10 level#17 level#19 level#21 ] -zp[1]:16 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] -zp[1]:17 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] -zp[2]:18 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] -zp[1]:20 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] -zp[1]:21 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] -zp[2]:22 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] -zp[1]:24 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] +zp[1]:12 [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] +zp[1]:13 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ] +zp[2]:14 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] +zp[1]:16 [ level#33 level#10 level#17 level#19 level#21 ] +zp[1]:17 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#65 current_movedown_slow#10 ] +zp[1]:18 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] +zp[2]:19 [ current_piece#28 current_piece#10 current_piece#15 current_piece#101 current_piece#92 ] +zp[1]:21 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] +zp[1]:22 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] +zp[2]:23 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#123 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#116 ] +zp[1]:25 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] reg byte x [ play_move_down::return#3 ] -zp[1]:25 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] -zp[1]:26 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] +zp[1]:26 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +zp[1]:27 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] -zp[1]:27 [ play_remove_lines::y#8 play_remove_lines::y#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 render_playfield::l#2 render_playfield::l#1 render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ] -zp[1]:28 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] +zp[1]:28 [ play_remove_lines::y#8 play_remove_lines::y#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 render_moving::l#4 render_moving::l#1 ] +zp[1]:29 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] -zp[1]:29 [ play_remove_lines::x#2 play_remove_lines::x#1 play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 render_playfield::c#2 render_playfield::c#1 render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] -zp[1]:30 [ keyboard_event_pressed::keycode#5 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::l#6 play_collision::l#1 ] -reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_event_pressed::keycode#5 ] +reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +zp[1]:30 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_remove_lines::x#2 play_remove_lines::x#1 play_collision::l#6 play_collision::l#1 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -zp[1]:31 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] +zp[1]:31 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 play_remove_lines::full#4 play_remove_lines::full#2 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +zp[1]:32 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] reg byte a [ render_show::d018val#3 ] reg byte y [ play_init::j#2 play_init::j#1 ] -zp[1]:32 [ play_init::idx#2 play_init::idx#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte x [ play_init::b#2 play_init::b#1 ] reg byte y [ sprites_init::s#2 sprites_init::s#1 ] -zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 play_lock_current::l#6 play_lock_current::l#1 play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] +zp[1]:33 [ sprites_init::xpos#2 sprites_init::xpos#1 play_init::idx#2 play_init::idx#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte y [ render_init::i#2 render_init::i#1 ] zp[2]:34 [ render_init::li_1#2 render_init::li_1#1 play_init::pli#2 play_init::pli#1 ] zp[2]:36 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] @@ -976,7 +976,7 @@ zp[1]:43 [ irq_raster_next ] zp[1]:44 [ irq_sprite_ypos ] zp[1]:45 [ irq_sprite_ptr ] zp[1]:46 [ irq_cnt ] -reg byte x [ keyboard_event_get::return#3 ] +reg byte a [ keyboard_event_get::return#3 ] reg byte x [ main::key_event#0 ] zp[1]:47 [ play_movement::key_event#0 render_screen_original::y#6 render_screen_original::y#1 ] reg byte a [ play_movement::return#3 ] @@ -985,7 +985,7 @@ reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] reg byte a [ render_bcd::$4 ] -reg byte y [ render_next::$6 ] +reg byte x [ render_next::$6 ] reg byte a [ render_next::cell#0 ] reg byte a [ render_moving::$1 ] reg byte a [ render_moving::$6 ] @@ -1004,7 +1004,7 @@ reg byte a [ play_movement::$4 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_collision::return#14 ] reg byte a [ play_move_rotate::$2 ] -reg byte x [ play_move_rotate::$7 ] +reg byte a [ play_move_rotate::$7 ] reg byte a [ play_collision::$14 ] zp[2]:50 [ play_collision::playfield_line#0 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] reg byte a [ play_collision::$5 ] @@ -1034,12 +1034,13 @@ reg byte a [ play_increase_level::$5 ] reg byte a [ play_lock_current::$4 ] zp[2]:57 [ play_lock_current::playfield_line#0 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp[1]:59 [ play_lock_current::i#1 play_remove_lines::c#0 play_collision::i#1 render_next::next_piece_char#0 ] -reg byte a [ keyboard_event_pressed::$0 ] -reg byte a [ keyboard_event_pressed::$1 ] +reg byte y [ keyboard_event_pressed::$0 ] +reg byte y [ keyboard_event_pressed::row_bits#0 ] +reg byte x [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] -zp[1]:60 [ keyboard_event_scan::row_scan#0 keyboard_event_pressed::row_bits#0 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] +zp[1]:60 [ keyboard_event_scan::row_scan#0 play_lock_current::l#6 play_lock_current::l#1 play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_scan::$0 ] reg byte a [ keyboard_event_pressed::return#1 ] diff --git a/src/test/ref/complex/xmega65/xmega65.log b/src/test/ref/complex/xmega65/xmega65.log index 77773c5d7..335240dd6 100644 --- a/src/test/ref/complex/xmega65/xmega65.log +++ b/src/test/ref/complex/xmega65/xmega65.log @@ -284,17 +284,17 @@ Finalized unsigned number type (byte) $4e Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte*) main::msg#2 = (byte*) main::msg#3 -Alias (byte*) main::sc#2 = (byte*) main::sc#3 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias main::msg#2 = main::msg#3 +Alias main::sc#2 = main::sc#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -474,22 +474,22 @@ VARIABLE REGISTER WEIGHTS (byte) SysCall::xnop (void()) main() (byte*) main::msg -(byte*) main::msg#1 22.0 -(byte*) main::msg#2 11.0 +(byte*) main::msg#1 202.0 +(byte*) main::msg#2 101.0 (byte*) main::sc -(byte*) main::sc#1 11.0 -(byte*) main::sc#2 11.0 +(byte*) main::sc#1 101.0 +(byte*) main::sc#2 101.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 125.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1368.3333333333335 +(byte*) memset::dst#4 202.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 183.66666666666669 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 @@ -779,36 +779,36 @@ syscall1: { .byte NOP REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) VIC_MEMORY) ← (byte) $14 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [9] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2 [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] main:2 [ main::msg#2 main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if(*((const byte*) RASTER)==(byte) $36) goto main::@4 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [11] if(*((const byte*) RASTER)==(byte) $42) goto main::@4 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [14] *((byte*) main::sc#2) ← *((byte*) main::msg#2) [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] main:2 [ main::msg#2 main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [18] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [4] *((const byte*) VIC_MEMORY) ← (byte) $14 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [9] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2 [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] { } main:2 [ main::msg#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if(*((const byte*) RASTER)==(byte) $36) goto main::@4 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if(*((const byte*) RASTER)==(byte) $42) goto main::@4 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((byte*) main::sc#2) ← *((byte*) main::msg#2) [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] { } main:2 [ main::msg#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [18] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] { } memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ memset::c#4 ] -Statement [19] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [20] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [22] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [24] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [19] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] { } memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [20] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [22] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [24] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ memset::c#4 ] -Statement [26] *((const byte*) SCREEN+(byte) $4e) ← (byte) '<' [ ] ( [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN+(byte) $4f) ← (byte) '>' [ ] ( [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) VIC_MEMORY) ← (byte) $14 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [9] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2 [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] main:2 [ main::msg#2 main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if(*((const byte*) RASTER)==(byte) $36) goto main::@4 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [11] if(*((const byte*) RASTER)==(byte) $42) goto main::@4 [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] main:2 [ ] ) always clobbers reg byte a -Statement [14] *((byte*) main::sc#2) ← *((byte*) main::msg#2) [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] main:2 [ main::msg#2 main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [18] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [19] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [20] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [22] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [24] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [26] *((const byte*) SCREEN+(byte) $4e) ← (byte) '<' [ ] ( [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN+(byte) $4f) ← (byte) '>' [ ] ( [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) SCREEN+(byte) $4e) ← (byte) '<' [ ] ( [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN+(byte) $4f) ← (byte) '>' [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) VIC_MEMORY) ← (byte) $14 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [9] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2 [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] { } main:2 [ main::msg#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if(*((const byte*) RASTER)==(byte) $36) goto main::@4 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if(*((const byte*) RASTER)==(byte) $42) goto main::@4 [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((byte*) main::sc#2) ← *((byte*) main::msg#2) [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] { } main:2 [ main::msg#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [18] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::memset:5 [ memset::num#2 memset::str#3 memset::c#4 ] { } memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::memset:7 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [19] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] { } memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [20] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [22] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [24] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [26] *((const byte*) SCREEN+(byte) $4e) ← (byte) '<' [ ] ( [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN+(byte) $4f) ← (byte) '>' [ ] ( [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::msg#2 main::msg#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sc#2 main::sc#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ memset::num#2 ] : zp[2]:6 , @@ -818,15 +818,15 @@ Potential registers zp[2]:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[ Potential registers zp[2]:13 [ memset::end#0 ] : zp[2]:13 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[2]:2 [ main::msg#2 main::msg#1 ] 22: zp[2]:4 [ main::sc#2 main::sc#1 ] -Uplift Scope [memset] 41.33: zp[2]:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:13 [ memset::end#0 ] 2: zp[2]:6 [ memset::num#2 ] 1.38: zp[1]:10 [ memset::c#4 ] 0: zp[2]:8 [ memset::str#3 ] +Uplift Scope [memset] 3,572.33: zp[2]:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:13 [ memset::end#0 ] 125.12: zp[1]:10 [ memset::c#4 ] 101: zp[2]:6 [ memset::num#2 ] 0: zp[2]:8 [ memset::str#3 ] +Uplift Scope [main] 303: zp[2]:2 [ main::msg#2 main::msg#1 ] 202: zp[2]:4 [ main::sc#2 main::sc#1 ] Uplift Scope [syscall1] Uplift Scope [syscall2] Uplift Scope [SysCall] Uplift Scope [] -Uplifting [main] best 1885 combination zp[2]:2 [ main::msg#2 main::msg#1 ] zp[2]:4 [ main::sc#2 main::sc#1 ] -Uplifting [memset] best 1869 combination zp[2]:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:13 [ memset::end#0 ] zp[2]:6 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:8 [ memset::str#3 ] +Uplifting [memset] best 1869 combination zp[2]:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:13 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:6 [ memset::num#2 ] zp[2]:8 [ memset::str#3 ] +Uplifting [main] best 1869 combination zp[2]:2 [ main::msg#2 main::msg#1 ] zp[2]:4 [ main::sc#2 main::sc#1 ] Uplifting [syscall1] best 1869 combination Uplifting [syscall2] best 1869 combination Uplifting [SysCall] best 1869 combination @@ -1151,26 +1151,26 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@7 (byte*) main::msg -(byte*) main::msg#1 msg zp[2]:2 22.0 -(byte*) main::msg#2 msg zp[2]:2 11.0 +(byte*) main::msg#1 msg zp[2]:2 202.0 +(byte*) main::msg#2 msg zp[2]:2 101.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:4 11.0 -(byte*) main::sc#2 sc zp[2]:4 11.0 +(byte*) main::sc#1 sc zp[2]:4 101.0 +(byte*) main::sc#2 sc zp[2]:4 101.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 125.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:8 4.0 +(byte*) memset::dst#1 dst zp[2]:8 2002.0 +(byte*) memset::dst#2 dst zp[2]:8 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:8 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:6 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:6 183.66666666666669 (word) memset::num -(word) memset::num#2 num zp[2]:6 2.0 +(word) memset::num#2 num zp[2]:6 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:8 diff --git a/src/test/ref/complex/xmega65/xmega65.sym b/src/test/ref/complex/xmega65/xmega65.sym index f597cdf5e..709109ae2 100644 --- a/src/test/ref/complex/xmega65/xmega65.sym +++ b/src/test/ref/complex/xmega65/xmega65.sym @@ -25,26 +25,26 @@ (label) main::@6 (label) main::@7 (byte*) main::msg -(byte*) main::msg#1 msg zp[2]:2 22.0 -(byte*) main::msg#2 msg zp[2]:2 11.0 +(byte*) main::msg#1 msg zp[2]:2 202.0 +(byte*) main::msg#2 msg zp[2]:2 101.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:4 11.0 -(byte*) main::sc#2 sc zp[2]:4 11.0 +(byte*) main::sc#1 sc zp[2]:4 101.0 +(byte*) main::sc#2 sc zp[2]:4 101.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 125.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:8 4.0 +(byte*) memset::dst#1 dst zp[2]:8 2002.0 +(byte*) memset::dst#2 dst zp[2]:8 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:8 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:6 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:6 183.66666666666669 (word) memset::num -(word) memset::num#2 num zp[2]:6 2.0 +(word) memset::num#2 num zp[2]:6 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:8 diff --git a/src/test/ref/complex/xmega65/xmega65logo.log b/src/test/ref/complex/xmega65/xmega65logo.log index f93e1167a..1aaefeb0c 100644 --- a/src/test/ref/complex/xmega65/xmega65logo.log +++ b/src/test/ref/complex/xmega65/xmega65logo.log @@ -92,8 +92,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $100 Finalized unsigned number type (word) $100 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) LOGO256_GREEN#0 = (byte*~) $0 -Alias (byte*) LOGO256_BLUE#0 = (byte*~) $1 +Alias LOGO256_GREEN#0 = $0 +Alias LOGO256_BLUE#0 = $1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) LOGO256_GREEN#2 (byte*) LOGO256_GREEN#0 Identical Phi Values (byte*) LOGO256_BLUE#2 (byte*) LOGO256_BLUE#0 @@ -178,8 +178,8 @@ VARIABLE REGISTER WEIGHTS (byte*) LOGO256_GREEN (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -275,17 +275,17 @@ LOGO256: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) LOGO256_RED + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) LOGO256_RED + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) main::SCREEN+(word)(number) $28*(number) 8 + (byte) main::i#2) ← *((const byte*) LOGO256_GREEN#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(word)(number) $28*(number) $10 + (byte) main::i#2) ← *((const byte*) LOGO256_BLUE#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) LOGO256_RED + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(word)(number) $28*(number) 8 + (byte) main::i#2) ← *((const byte*) LOGO256_GREEN#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(word)(number) $28*(number) $10 + (byte) main::i#2) ← *((const byte*) LOGO256_BLUE#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(word)(number) $28*(number) 8 + (byte) main::i#2) ← *((const byte*) LOGO256_GREEN#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(word)(number) $28*(number) $10 + (byte) main::i#2) ← *((const byte*) LOGO256_BLUE#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) LOGO256_RED + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(word)(number) $28*(number) 8 + (byte) main::i#2) ← *((const byte*) LOGO256_GREEN#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(word)(number) $28*(number) $10 + (byte) main::i#2) ← *((const byte*) LOGO256_BLUE#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 478 combination reg byte x [ main::i#2 main::i#1 ] @@ -423,8 +423,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/complex/xmega65/xmega65logo.sym b/src/test/ref/complex/xmega65/xmega65logo.sym index 16c4ab337..88f7a33e3 100644 --- a/src/test/ref/complex/xmega65/xmega65logo.sym +++ b/src/test/ref/complex/xmega65/xmega65logo.sym @@ -24,7 +24,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/condition-integer-0.log b/src/test/ref/condition-integer-0.log index 426f41d75..337e409f5 100644 --- a/src/test/ref/condition-integer-0.log +++ b/src/test/ref/condition-integer-0.log @@ -163,16 +163,16 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [18] (bool~) main::$2 ← (byte) 0 == (byte) main::i#2 from [17] (bool~) main::$6 ← (byte) 0 != (byte) main::i#2 Inversing boolean not [33] (bool~) main::$4 ← (byte) 0 == (word) main::i1#2 from [32] (bool~) main::$7 ← (byte) 0 != (word) main::i1#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::idx#0 = (byte) main::idx#7 -Alias (byte) main::idx#13 = (byte) main::idx#9 -Alias (byte) main::idx#10 = (byte) main::idx#14 -Alias (byte) main::i#2 = (byte) main::i#4 -Alias (byte) main::idx#11 = (byte) main::idx#15 -Alias (byte) main::idx#12 = (byte) main::idx#16 -Alias (word) main::i1#2 = (word) main::i1#4 +Alias main::idx#0 = main::idx#7 +Alias main::idx#13 = main::idx#9 +Alias main::idx#10 = main::idx#14 +Alias main::i#2 = main::i#4 +Alias main::idx#11 = main::idx#15 +Alias main::idx#12 = main::idx#16 +Alias main::i1#2 = main::i1#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (word) main::i1#2 = (word) main::i1#3 +Alias main::i#2 = main::i#3 +Alias main::i1#2 = main::i1#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [16] if((byte) 0==(byte) main::i#2) goto main::@6 Simple Condition (bool~) main::$3 [20] if((byte) main::i#1!=rangelast(0,2)) goto main::@5 @@ -209,7 +209,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::idx#3 = (byte) main::idx#8 +Alias main::idx#3 = main::idx#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::idx#13 (const byte) main::idx#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -346,19 +346,19 @@ main::@return: scope:[main] from main::@8 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.6000000000000005 +(byte) main::i#1 151.5 +(byte) main::i#2 60.599999999999994 (word) main::i1 -(word) main::i1#1 16.5 -(word) main::i1#2 6.6000000000000005 +(word) main::i1#1 151.5 +(word) main::i1#2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 14.666666666666666 -(byte) main::idx#11 9.25 -(byte) main::idx#12 15.333333333333332 -(byte) main::idx#17 11.0 -(byte) main::idx#4 22.0 -(byte) main::idx#5 4.0 -(byte) main::idx#6 22.0 +(byte) main::idx#10 134.66666666666666 +(byte) main::idx#11 81.25 +(byte) main::idx#12 138.33333333333331 +(byte) main::idx#17 101.0 +(byte) main::idx#4 202.0 +(byte) main::idx#5 22.0 +(byte) main::idx#6 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -536,30 +536,30 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) SCREEN) ← (byte) '+' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← (byte) '+' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] -Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] ) always clobbers reg byte a -Statement [17] if((byte) 0==(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] { } ) always clobbers reg byte a +Statement [17] if((byte) 0==(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] -Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '+' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN) ← (byte) '+' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] ) always clobbers reg byte a -Statement [17] if((byte) 0==(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '+' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '+' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← (byte) '+' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] { } ) always clobbers reg byte a +Statement [17] if((byte) 0==(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '+' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[2]:4 [ main::i1#2 main::i1#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:6 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 52.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 23.1: zp[2]:4 [ main::i1#2 main::i1#1 ] +Uplift Scope [main] 463.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 417.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 212.1: zp[2]:4 [ main::i1#2 main::i1#1 ] Uplift Scope [] Uplifting [main] best 1227 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:4 [ main::i1#2 main::i1#1 ] @@ -781,19 +781,19 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.599999999999994 (word) main::i1 -(word) main::i1#1 i1 zp[2]:2 16.5 -(word) main::i1#2 i1 zp[2]:2 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:2 151.5 +(word) main::i1#2 i1 zp[2]:2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 reg byte y 14.666666666666666 -(byte) main::idx#11 reg byte y 9.25 -(byte) main::idx#12 reg byte y 15.333333333333332 -(byte) main::idx#17 reg byte y 11.0 -(byte) main::idx#4 reg byte y 22.0 -(byte) main::idx#5 reg byte y 4.0 -(byte) main::idx#6 reg byte y 22.0 +(byte) main::idx#10 reg byte y 134.66666666666666 +(byte) main::idx#11 reg byte y 81.25 +(byte) main::idx#12 reg byte y 138.33333333333331 +(byte) main::idx#17 reg byte y 101.0 +(byte) main::idx#4 reg byte y 202.0 +(byte) main::idx#5 reg byte y 22.0 +(byte) main::idx#6 reg byte y 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] diff --git a/src/test/ref/condition-integer-0.sym b/src/test/ref/condition-integer-0.sym index 74a3e6db1..0f58e9299 100644 --- a/src/test/ref/condition-integer-0.sym +++ b/src/test/ref/condition-integer-0.sym @@ -14,19 +14,19 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.599999999999994 (word) main::i1 -(word) main::i1#1 i1 zp[2]:2 16.5 -(word) main::i1#2 i1 zp[2]:2 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:2 151.5 +(word) main::i1#2 i1 zp[2]:2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 reg byte y 14.666666666666666 -(byte) main::idx#11 reg byte y 9.25 -(byte) main::idx#12 reg byte y 15.333333333333332 -(byte) main::idx#17 reg byte y 11.0 -(byte) main::idx#4 reg byte y 22.0 -(byte) main::idx#5 reg byte y 4.0 -(byte) main::idx#6 reg byte y 22.0 +(byte) main::idx#10 reg byte y 134.66666666666666 +(byte) main::idx#11 reg byte y 81.25 +(byte) main::idx#12 reg byte y 138.33333333333331 +(byte) main::idx#17 reg byte y 101.0 +(byte) main::idx#4 reg byte y 202.0 +(byte) main::idx#5 reg byte y 22.0 +(byte) main::idx#6 reg byte y 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] diff --git a/src/test/ref/condition-integer-1.log b/src/test/ref/condition-integer-1.log index 310005a9f..565326924 100644 --- a/src/test/ref/condition-integer-1.log +++ b/src/test/ref/condition-integer-1.log @@ -169,16 +169,16 @@ Inversing boolean not [19] (bool~) main::$3 ← (byte) 0 != (byte) main::i#2 fro Inversing boolean not [34] (bool~) main::$5 ← (byte) 0 == (word) main::i1#2 from [33] (bool~) main::$9 ← (byte) 0 != (word) main::i1#2 Inversing boolean not [35] (bool~) main::$6 ← (byte) 0 != (word) main::i1#2 from [34] (bool~) main::$5 ← (byte) 0 == (word) main::i1#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::idx#0 = (byte) main::idx#7 -Alias (byte) main::idx#13 = (byte) main::idx#9 -Alias (byte) main::idx#10 = (byte) main::idx#14 -Alias (byte) main::i#2 = (byte) main::i#4 -Alias (byte) main::idx#11 = (byte) main::idx#15 -Alias (byte) main::idx#12 = (byte) main::idx#16 -Alias (word) main::i1#2 = (word) main::i1#4 +Alias main::idx#0 = main::idx#7 +Alias main::idx#13 = main::idx#9 +Alias main::idx#10 = main::idx#14 +Alias main::i#2 = main::i#4 +Alias main::idx#11 = main::idx#15 +Alias main::idx#12 = main::idx#16 +Alias main::i1#2 = main::i1#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (word) main::i1#2 = (word) main::i1#3 +Alias main::i#2 = main::i#3 +Alias main::i1#2 = main::i1#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 [16] if((byte) 0!=(byte) main::i#2) goto main::@6 Simple Condition (bool~) main::$4 [20] if((byte) main::i#1!=rangelast(0,2)) goto main::@5 @@ -215,7 +215,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::idx#1 = (byte) main::idx#13 (byte) main::idx#8 +Alias main::idx#1 = main::idx#13 main::idx#8 Successful SSA optimization Pass2AliasElimination Constant right-side identified [1] (byte) main::idx#1 ← ++ (const byte) main::idx#0 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -348,19 +348,19 @@ main::@return: scope:[main] from main::@8 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.6000000000000005 +(byte) main::i#1 151.5 +(byte) main::i#2 60.599999999999994 (word) main::i1 -(word) main::i1#1 16.5 -(word) main::i1#2 6.6000000000000005 +(word) main::i1#1 151.5 +(word) main::i1#2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 14.666666666666666 -(byte) main::idx#11 9.25 -(byte) main::idx#12 15.333333333333332 -(byte) main::idx#17 11.0 -(byte) main::idx#4 22.0 -(byte) main::idx#5 4.0 -(byte) main::idx#6 22.0 +(byte) main::idx#10 134.66666666666666 +(byte) main::idx#11 81.25 +(byte) main::idx#12 138.33333333333331 +(byte) main::idx#17 101.0 +(byte) main::idx#4 202.0 +(byte) main::idx#5 22.0 +(byte) main::idx#6 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -537,30 +537,30 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '0' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '0' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] -Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] ) always clobbers reg byte a -Statement [17] if((byte) 0!=(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] { } ) always clobbers reg byte a +Statement [17] if((byte) 0!=(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] -Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '0' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '0' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] ) always clobbers reg byte a -Statement [17] if((byte) 0!=(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '0' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] ) always clobbers reg byte a -Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '0' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← (byte) ' ' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '0' [ main::i#2 main::idx#10 ] ( main:2 [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) main::idx#11) ← (byte) ' ' [ main::idx#11 ] ( main:2 [ main::idx#11 ] { } ) always clobbers reg byte a +Statement [17] if((byte) 0!=(word) main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN + (byte) main::idx#12) ← (byte) '0' [ main::i1#2 main::idx#12 ] ( main:2 [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a +Statement [22] if((word) main::i1#1!=(byte) 3) goto main::@7 [ main::i1#1 main::idx#17 ] ( main:2 [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[2]:4 [ main::i1#2 main::i1#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:6 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 52.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 23.1: zp[2]:4 [ main::i1#2 main::i1#1 ] +Uplift Scope [main] 463.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 417.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 212.1: zp[2]:4 [ main::i1#2 main::i1#1 ] Uplift Scope [] Uplifting [main] best 1227 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:4 [ main::i1#2 main::i1#1 ] @@ -782,19 +782,19 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.599999999999994 (word) main::i1 -(word) main::i1#1 i1 zp[2]:2 16.5 -(word) main::i1#2 i1 zp[2]:2 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:2 151.5 +(word) main::i1#2 i1 zp[2]:2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 reg byte y 14.666666666666666 -(byte) main::idx#11 reg byte y 9.25 -(byte) main::idx#12 reg byte y 15.333333333333332 -(byte) main::idx#17 reg byte y 11.0 -(byte) main::idx#4 reg byte y 22.0 -(byte) main::idx#5 reg byte y 4.0 -(byte) main::idx#6 reg byte y 22.0 +(byte) main::idx#10 reg byte y 134.66666666666666 +(byte) main::idx#11 reg byte y 81.25 +(byte) main::idx#12 reg byte y 138.33333333333331 +(byte) main::idx#17 reg byte y 101.0 +(byte) main::idx#4 reg byte y 202.0 +(byte) main::idx#5 reg byte y 22.0 +(byte) main::idx#6 reg byte y 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] diff --git a/src/test/ref/condition-integer-1.sym b/src/test/ref/condition-integer-1.sym index 74a3e6db1..0f58e9299 100644 --- a/src/test/ref/condition-integer-1.sym +++ b/src/test/ref/condition-integer-1.sym @@ -14,19 +14,19 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 60.599999999999994 (word) main::i1 -(word) main::i1#1 i1 zp[2]:2 16.5 -(word) main::i1#2 i1 zp[2]:2 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:2 151.5 +(word) main::i1#2 i1 zp[2]:2 60.599999999999994 (byte) main::idx -(byte) main::idx#10 reg byte y 14.666666666666666 -(byte) main::idx#11 reg byte y 9.25 -(byte) main::idx#12 reg byte y 15.333333333333332 -(byte) main::idx#17 reg byte y 11.0 -(byte) main::idx#4 reg byte y 22.0 -(byte) main::idx#5 reg byte y 4.0 -(byte) main::idx#6 reg byte y 22.0 +(byte) main::idx#10 reg byte y 134.66666666666666 +(byte) main::idx#11 reg byte y 81.25 +(byte) main::idx#12 reg byte y 138.33333333333331 +(byte) main::idx#17 reg byte y 101.0 +(byte) main::idx#4 reg byte y 202.0 +(byte) main::idx#5 reg byte y 22.0 +(byte) main::idx#6 reg byte y 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] diff --git a/src/test/ref/condition-integer-2.log b/src/test/ref/condition-integer-2.log index 29fcf2777..99a34f075 100644 --- a/src/test/ref/condition-integer-2.log +++ b/src/test/ref/condition-integer-2.log @@ -147,13 +147,13 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) idx#15 = (byte) idx#8 (byte) idx#9 -Alias (byte) main::j#1 = (byte) main::j#3 -Alias (byte) idx#10 = (byte) idx#16 (byte) idx#11 -Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#0 = (byte) idx#17 -Alias (byte) idx#14 = (byte) idx#7 +Alias main::i#2 = main::i#3 +Alias idx#15 = idx#8 idx#9 +Alias main::j#1 = main::j#3 +Alias idx#10 = idx#16 idx#11 +Alias idx#13 = idx#5 idx#6 +Alias idx#0 = idx#17 +Alias idx#14 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#18 (byte) idx#0 Identical Phi Values (byte) idx#14 (byte) idx#13 @@ -264,24 +264,24 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#1 11.0 -(byte) idx#10 7.8 -(byte) idx#12 17.5 -(byte) idx#13 7.333333333333333 -(byte) idx#15 9.25 -(byte) idx#2 4.0 -(byte) idx#3 22.0 -(byte) idx#4 4.0 +(byte) idx#1 101.0 +(byte) idx#10 67.2 +(byte) idx#12 157.0 +(byte) idx#13 67.33333333333333 +(byte) idx#15 81.25 +(byte) idx#2 22.0 +(byte) idx#3 202.0 +(byte) idx#4 22.0 (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 11.0 +(byte) main::i#1 202.0 +(byte) main::i#2 101.0 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#2 22.0 +(byte) main::j#1 101.0 +(byte) main::j#2 202.0 (byte) main::k -(byte) main::k#1 16.5 -(byte) main::k#2 11.0 +(byte) main::k#1 151.5 +(byte) main::k#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -457,12 +457,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) SCREEN + (byte) idx#15) ← (byte) ' ' [ idx#15 ] ( main:2 [ idx#15 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) idx#15) ← (byte) ' ' [ idx#15 ] ( main:2 [ idx#15 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#15 idx#1 ] -Statement [12] *((const byte*) SCREEN + (byte) idx#10) ← (byte) ' ' [ idx#10 ] ( main:2 [ idx#10 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#10) ← (byte) ' ' [ idx#10 ] ( main:2 [ idx#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ idx#10 idx#2 idx#3 ] -Statement [7] *((const byte*) SCREEN + (byte) idx#15) ← (byte) ' ' [ idx#15 ] ( main:2 [ idx#15 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte) idx#10) ← (byte) ' ' [ idx#10 ] ( main:2 [ idx#10 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) idx#15) ← (byte) ' ' [ idx#15 ] ( main:2 [ idx#15 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#10) ← (byte) ' ' [ idx#10 ] ( main:2 [ idx#10 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#15 idx#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::j#2 main::j#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -471,8 +471,8 @@ Potential registers zp[1]:6 [ main::k#2 main::k#1 ] : zp[1]:6 , reg byte a , reg Potential registers zp[1]:7 [ idx#12 idx#13 idx#4 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] 33: zp[1]:4 [ main::j#2 main::j#1 ] 27.5: zp[1]:6 [ main::k#2 main::k#1 ] -Uplift Scope [] 33.8: zp[1]:5 [ idx#10 idx#2 idx#3 ] 28.83: zp[1]:7 [ idx#12 idx#13 idx#4 ] 20.25: zp[1]:3 [ idx#15 idx#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] 303: zp[1]:4 [ main::j#2 main::j#1 ] 252.5: zp[1]:6 [ main::k#2 main::k#1 ] +Uplift Scope [] 291.2: zp[1]:5 [ idx#10 idx#2 idx#3 ] 246.33: zp[1]:7 [ idx#12 idx#13 idx#4 ] 182.25: zp[1]:3 [ idx#15 idx#1 ] Uplifting [main] best 1079 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] reg byte a [ main::k#2 main::k#1 ] Uplifting [] best 851 combination reg byte y [ idx#10 idx#2 idx#3 ] reg byte y [ idx#12 idx#13 idx#4 ] reg byte y [ idx#15 idx#1 ] @@ -645,14 +645,14 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#1 reg byte y 11.0 -(byte) idx#10 reg byte y 7.8 -(byte) idx#12 reg byte y 17.5 -(byte) idx#13 reg byte y 7.333333333333333 -(byte) idx#15 reg byte y 9.25 -(byte) idx#2 reg byte y 4.0 -(byte) idx#3 reg byte y 22.0 -(byte) idx#4 reg byte y 4.0 +(byte) idx#1 reg byte y 101.0 +(byte) idx#10 reg byte y 67.2 +(byte) idx#12 reg byte y 157.0 +(byte) idx#13 reg byte y 67.33333333333333 +(byte) idx#15 reg byte y 81.25 +(byte) idx#2 reg byte y 22.0 +(byte) idx#3 reg byte y 202.0 +(byte) idx#4 reg byte y 22.0 (void()) main() (label) main::@1 (label) main::@2 @@ -663,14 +663,14 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte a 11.0 -(byte) main::j#2 reg byte a 22.0 +(byte) main::j#1 reg byte a 101.0 +(byte) main::j#2 reg byte a 202.0 (byte) main::k -(byte) main::k#1 reg byte a 16.5 -(byte) main::k#2 reg byte a 11.0 +(byte) main::k#1 reg byte a 151.5 +(byte) main::k#2 reg byte a 101.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ idx#15 idx#1 ] diff --git a/src/test/ref/condition-integer-2.sym b/src/test/ref/condition-integer-2.sym index 9108e6556..de0b83586 100644 --- a/src/test/ref/condition-integer-2.sym +++ b/src/test/ref/condition-integer-2.sym @@ -3,14 +3,14 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#1 reg byte y 11.0 -(byte) idx#10 reg byte y 7.8 -(byte) idx#12 reg byte y 17.5 -(byte) idx#13 reg byte y 7.333333333333333 -(byte) idx#15 reg byte y 9.25 -(byte) idx#2 reg byte y 4.0 -(byte) idx#3 reg byte y 22.0 -(byte) idx#4 reg byte y 4.0 +(byte) idx#1 reg byte y 101.0 +(byte) idx#10 reg byte y 67.2 +(byte) idx#12 reg byte y 157.0 +(byte) idx#13 reg byte y 67.33333333333333 +(byte) idx#15 reg byte y 81.25 +(byte) idx#2 reg byte y 22.0 +(byte) idx#3 reg byte y 202.0 +(byte) idx#4 reg byte y 22.0 (void()) main() (label) main::@1 (label) main::@2 @@ -21,14 +21,14 @@ (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte a 11.0 -(byte) main::j#2 reg byte a 22.0 +(byte) main::j#1 reg byte a 101.0 +(byte) main::j#2 reg byte a 202.0 (byte) main::k -(byte) main::k#1 reg byte a 16.5 -(byte) main::k#2 reg byte a 11.0 +(byte) main::k#1 reg byte a 151.5 +(byte) main::k#2 reg byte a 101.0 reg byte x [ main::i#2 main::i#1 ] reg byte y [ idx#15 idx#1 ] diff --git a/src/test/ref/condition-integer-3.log b/src/test/ref/condition-integer-3.log index 240445b03..d912d6c39 100644 --- a/src/test/ref/condition-integer-3.log +++ b/src/test/ref/condition-integer-3.log @@ -90,12 +90,12 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized signed number type (signed byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::idx#3 = (byte) main::idx#5 (byte) main::idx#4 -Alias (signed byte) main::i#2 = (signed byte) main::i#4 (signed byte) main::i#5 -Alias (byte) main::j#0 = (byte~) main::$2 +Alias main::idx#3 = main::idx#5 main::idx#4 +Alias main::i#2 = main::i#4 main::i#5 +Alias main::j#0 = main::$2 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::idx#2 = (byte) main::idx#3 -Alias (signed byte) main::i#2 = (signed byte) main::i#3 +Alias main::idx#2 = main::idx#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$4 [4] if((signed byte) 0!=(signed byte) main::i#2) goto main::@2 Simple Condition (bool~) main::$3 [12] if((signed byte) main::i#1!=rangelast(-2,2)) goto main::@1 @@ -183,13 +183,13 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (signed byte) main::i -(signed byte) main::i#1 16.5 -(signed byte) main::i#2 5.5 +(signed byte) main::i#1 151.5 +(signed byte) main::i#2 50.5 (byte) main::idx -(byte) main::idx#1 7.333333333333333 -(byte) main::idx#2 6.6000000000000005 +(byte) main::idx#1 67.33333333333333 +(byte) main::idx#2 60.599999999999994 (byte) main::j -(byte) main::j#0 11.0 +(byte) main::j#0 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -300,7 +300,7 @@ Potential registers zp[1]:3 [ main::idx#2 main::idx#1 ] : zp[1]:3 , reg byte a , Potential registers zp[1]:4 [ main::j#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 13.93: zp[1]:3 [ main::idx#2 main::idx#1 ] 11: zp[1]:4 [ main::j#0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 127.93: zp[1]:3 [ main::idx#2 main::idx#1 ] 101: zp[1]:4 [ main::j#0 ] Uplift Scope [] Uplifting [main] best 458 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::j#0 ] @@ -427,13 +427,13 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 reg byte y 16.5 -(signed byte) main::i#2 reg byte y 5.5 +(signed byte) main::i#1 reg byte y 151.5 +(signed byte) main::i#2 reg byte y 50.5 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 6.6000000000000005 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 60.599999999999994 (byte) main::j -(byte) main::j#0 reg byte a 11.0 +(byte) main::j#0 reg byte a 101.0 reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] diff --git a/src/test/ref/condition-integer-3.sym b/src/test/ref/condition-integer-3.sym index efaedb69f..a094a6bed 100644 --- a/src/test/ref/condition-integer-3.sym +++ b/src/test/ref/condition-integer-3.sym @@ -8,13 +8,13 @@ (label) main::@3 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 reg byte y 16.5 -(signed byte) main::i#2 reg byte y 5.5 +(signed byte) main::i#1 reg byte y 151.5 +(signed byte) main::i#2 reg byte y 50.5 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 6.6000000000000005 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 60.599999999999994 (byte) main::j -(byte) main::j#0 reg byte a 11.0 +(byte) main::j#0 reg byte a 101.0 reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] diff --git a/src/test/ref/condition-integer-4.log b/src/test/ref/condition-integer-4.log index 11e09657d..c4ecfbbee 100644 --- a/src/test/ref/condition-integer-4.log +++ b/src/test/ref/condition-integer-4.log @@ -187,17 +187,17 @@ Inferred type updated to byte in (unumber~) main::$9 ← (byte) main::i#5 & (byt Inversing boolean not [5] (bool~) main::$1 ← (byte) 0 == (byte~) main::$0 from [4] (bool~) main::$13 ← (byte) 0 != (byte~) main::$0 Inversing boolean not [10] (bool~) main::$3 ← (byte) 0 == (byte~) main::$2 from [9] (bool~) main::$14 ← (byte) 0 != (byte~) main::$2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::idx#2 = (byte) main::idx#7 -Alias (byte) main::i#2 = (byte) main::i#7 -Alias (byte) main::idx#3 = (byte) main::idx#8 -Alias (byte) main::i#3 = (byte) main::i#8 -Alias (byte) main::idx#4 = (byte) main::idx#9 -Alias (byte) main::i#4 = (byte) main::i#9 -Alias (byte) main::idx#10 = (byte) main::idx#6 -Alias (byte) main::i#10 = (byte) main::i#5 +Alias main::idx#2 = main::idx#7 +Alias main::i#2 = main::i#7 +Alias main::idx#3 = main::idx#8 +Alias main::i#3 = main::i#8 +Alias main::idx#4 = main::idx#9 +Alias main::i#4 = main::i#9 +Alias main::idx#10 = main::idx#6 +Alias main::i#10 = main::i#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#10 = (byte) main::i#3 (byte) main::i#2 (byte) main::i#4 (byte) main::i#6 -Alias (byte) main::idx#10 = (byte) main::idx#3 (byte) main::idx#2 (byte) main::idx#4 (byte) main::idx#5 +Alias main::i#10 = main::i#3 main::i#2 main::i#4 main::i#6 +Alias main::idx#10 = main::idx#3 main::idx#2 main::idx#4 main::idx#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [5] if((byte) 0==(byte~) main::$0) goto main::@2 Simple Condition (bool~) main::$3 [8] if((byte) 0==(byte~) main::$2) goto main::@3 @@ -340,18 +340,18 @@ main::@return: scope:[main] from main::@5 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$2 22.0 -(byte~) main::$4 11.0 -(byte~) main::$5 11.0 -(byte~) main::$8 11.0 -(byte~) main::$9 11.0 +(byte~) main::$0 202.0 +(byte~) main::$2 202.0 +(byte~) main::$4 101.0 +(byte~) main::$5 101.0 +(byte~) main::$8 101.0 +(byte~) main::$9 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#10 4.888888888888889 +(byte) main::i#1 151.5 +(byte) main::i#10 44.888888888888886 (byte) main::idx -(byte) main::idx#1 7.333333333333333 -(byte) main::idx#10 3.8823529411764706 +(byte) main::idx#1 67.33333333333333 +(byte) main::idx#10 35.64705882352941 Initial phi equivalence classes [ main::i#10 main::i#1 ] @@ -544,29 +544,29 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#1 ] -Statement [9] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( main:2 [ main::i#10 main::idx#10 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( main:2 [ main::i#10 main::idx#10 main::$4 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( main:2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( main:2 [ main::i#10 main::idx#10 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( main:2 [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( main:2 [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$4 ] -Statement [16] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( main:2 [ main::i#10 main::idx#10 main::$8 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( main:2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( main:2 [ main::i#10 main::idx#10 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( main:2 [ main::i#10 main::idx#10 main::$8 main::$9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$8 ] -Statement [21] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$0 ] ( main:2 [ main::i#10 main::idx#10 main::$0 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( main:2 [ main::i#10 main::idx#10 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( main:2 [ main::i#10 main::idx#10 main::$4 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( main:2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( main:2 [ main::i#10 main::idx#10 main::$8 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( main:2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$0 ] ( main:2 [ main::i#10 main::idx#10 main::$0 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( main:2 [ main::i#10 main::idx#10 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( main:2 [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( main:2 [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( main:2 [ main::i#10 main::idx#10 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( main:2 [ main::i#10 main::idx#10 main::$8 main::$9 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#10 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -577,7 +577,7 @@ Potential registers zp[1]:8 [ main::$8 ] : zp[1]:8 , reg byte x , reg byte y , Potential registers zp[1]:9 [ main::$9 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$2 ] 21.39: zp[1]:2 [ main::i#10 main::i#1 ] 11.22: zp[1]:3 [ main::idx#10 main::idx#1 ] 11: zp[1]:6 [ main::$4 ] 11: zp[1]:7 [ main::$5 ] 11: zp[1]:8 [ main::$8 ] 11: zp[1]:9 [ main::$9 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$0 ] 202: zp[1]:5 [ main::$2 ] 196.39: zp[1]:2 [ main::i#10 main::i#1 ] 102.98: zp[1]:3 [ main::idx#10 main::idx#1 ] 101: zp[1]:6 [ main::$4 ] 101: zp[1]:7 [ main::$5 ] 101: zp[1]:8 [ main::$8 ] 101: zp[1]:9 [ main::$9 ] Uplift Scope [] Uplifting [main] best 1563 combination reg byte a [ main::$0 ] reg byte a [ main::$2 ] reg byte y [ main::i#10 main::i#1 ] reg byte x [ main::idx#10 main::idx#1 ] zp[1]:6 [ main::$4 ] zp[1]:7 [ main::$5 ] zp[1]:8 [ main::$8 ] zp[1]:9 [ main::$9 ] @@ -792,12 +792,12 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$5 zp[1]:3 11.0 -(byte~) main::$8 zp[1]:4 11.0 -(byte~) main::$9 zp[1]:5 11.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 zp[1]:2 101.0 +(byte~) main::$5 zp[1]:3 101.0 +(byte~) main::$8 zp[1]:4 101.0 +(byte~) main::$9 zp[1]:5 101.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -811,11 +811,11 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#10 reg byte y 4.888888888888889 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#10 reg byte y 44.888888888888886 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#10 reg byte x 3.8823529411764706 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#10 reg byte x 35.64705882352941 reg byte y [ main::i#10 main::i#1 ] reg byte x [ main::idx#10 main::idx#1 ] diff --git a/src/test/ref/condition-integer-4.sym b/src/test/ref/condition-integer-4.sym index 854488951..e39726846 100644 --- a/src/test/ref/condition-integer-4.sym +++ b/src/test/ref/condition-integer-4.sym @@ -3,12 +3,12 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$5 zp[1]:3 11.0 -(byte~) main::$8 zp[1]:4 11.0 -(byte~) main::$9 zp[1]:5 11.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 zp[1]:2 101.0 +(byte~) main::$5 zp[1]:3 101.0 +(byte~) main::$8 zp[1]:4 101.0 +(byte~) main::$9 zp[1]:5 101.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -22,11 +22,11 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#10 reg byte y 4.888888888888889 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#10 reg byte y 44.888888888888886 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#10 reg byte x 3.8823529411764706 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#10 reg byte x 35.64705882352941 reg byte y [ main::i#10 main::i#1 ] reg byte x [ main::idx#10 main::idx#1 ] diff --git a/src/test/ref/condition-type-mismatch.log b/src/test/ref/condition-type-mismatch.log index c48f7f049..7a268b2be 100644 --- a/src/test/ref/condition-type-mismatch.log +++ b/src/test/ref/condition-type-mismatch.log @@ -143,7 +143,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::screen) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::screen) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/consolidate-array-index-problem.log b/src/test/ref/consolidate-array-index-problem.log index efffab075..c5857da1d 100644 --- a/src/test/ref/consolidate-array-index-problem.log +++ b/src/test/ref/consolidate-array-index-problem.log @@ -61,7 +61,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $c Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::x#2 + (byte) $c -Alias (byte) main::y#0 = (byte~) main::$0 +Alias main::y#0 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [7] if((byte) main::x#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -128,10 +128,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#2 8.25 +(byte) main::x#1 151.5 +(byte) main::x#2 75.75 (byte) main::y -(byte) main::y#0 16.5 +(byte) main::y#0 151.5 Initial phi equivalence classes [ main::x#2 main::x#1 ] @@ -212,18 +212,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) main::screen + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::screen + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::y#0 ] -Statement [8] *((const byte*) main::cols + (byte) main::y#0) ← (const byte) main::BLACK [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [6] (byte) main::y#0 ← (byte) main::x#2 + (byte) $c [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::screen + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::cols + (byte) main::y#0) ← (const byte) main::BLACK [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::cols + (byte) main::y#0) ← (const byte) main::BLACK [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [6] (byte) main::y#0 ← (byte) main::x#2 + (byte) $c [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::screen + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::cols + (byte) main::y#0) ← (const byte) main::BLACK [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::x#2 main::x#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::y#0 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.75: zp[1]:2 [ main::x#2 main::x#1 ] 16.5: zp[1]:3 [ main::y#0 ] +Uplift Scope [main] 227.25: zp[1]:2 [ main::x#2 main::x#1 ] 151.5: zp[1]:3 [ main::y#0 ] Uplift Scope [] Uplifting [main] best 393 combination reg byte y [ main::x#2 main::x#1 ] reg byte x [ main::y#0 ] @@ -327,10 +327,10 @@ FINAL SYMBOL TABLE (const byte*) main::cols = (byte*) 55296 (const byte*) main::screen = (byte*) 1024 (byte) main::x -(byte) main::x#1 reg byte y 16.5 -(byte) main::x#2 reg byte y 8.25 +(byte) main::x#1 reg byte y 151.5 +(byte) main::x#2 reg byte y 75.75 (byte) main::y -(byte) main::y#0 reg byte x 16.5 +(byte) main::y#0 reg byte x 151.5 reg byte y [ main::x#2 main::x#1 ] reg byte x [ main::y#0 ] diff --git a/src/test/ref/consolidate-array-index-problem.sym b/src/test/ref/consolidate-array-index-problem.sym index e71043c0b..407bb8dfe 100644 --- a/src/test/ref/consolidate-array-index-problem.sym +++ b/src/test/ref/consolidate-array-index-problem.sym @@ -8,10 +8,10 @@ (const byte*) main::cols = (byte*) 55296 (const byte*) main::screen = (byte*) 1024 (byte) main::x -(byte) main::x#1 reg byte y 16.5 -(byte) main::x#2 reg byte y 8.25 +(byte) main::x#1 reg byte y 151.5 +(byte) main::x#2 reg byte y 75.75 (byte) main::y -(byte) main::y#0 reg byte x 16.5 +(byte) main::y#0 reg byte x 151.5 reg byte y [ main::x#2 main::x#1 ] reg byte x [ main::y#0 ] diff --git a/src/test/ref/consolidate-constant-problem.log b/src/test/ref/consolidate-constant-problem.log index f43002096..72f9314c6 100644 --- a/src/test/ref/consolidate-constant-problem.log +++ b/src/test/ref/consolidate-constant-problem.log @@ -100,7 +100,7 @@ Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$3 = (byte~) main::$0 +Alias main::$3 = main::$0 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1 tails: main::@1 blocks: main::@1 Successful SSA optimization Pass2LoopUnroll @@ -278,10 +278,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) screen+(byte) $27) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) screen+(byte) $25) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) screen+(byte) $28*(byte) 1+(byte) $27) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) screen+(byte) $28*(byte) 1+(byte) $25) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) screen+(byte) $27) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) screen+(byte) $25) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) screen+(byte) $28*(byte) 1+(byte) $27) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) screen+(byte) $28*(byte) 1+(byte) $25) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-condition.log b/src/test/ref/const-condition.log index 74de13527..8ac8207ce 100644 --- a/src/test/ref/const-condition.log +++ b/src/test/ref/const-condition.log @@ -142,7 +142,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (byte) '!' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) '!' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-declaration.log b/src/test/ref/const-declaration.log index e8405a86a..9870d7c42 100644 --- a/src/test/ref/const-declaration.log +++ b/src/test/ref/const-declaration.log @@ -123,8 +123,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BODY1) ← (byte) '*' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BODY2) ← (byte) '*' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) BODY1) ← (byte) '*' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BODY2) ← (byte) '*' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-early-identification.log b/src/test/ref/const-early-identification.log index 15768721e..970217f15 100644 --- a/src/test/ref/const-early-identification.log +++ b/src/test/ref/const-early-identification.log @@ -83,7 +83,7 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) sub::$0 ← (byte) A + (byte) 1 -Alias (byte) sub::D#0 = (byte~) sub::$0 +Alias sub::D#0 = sub::$0 Successful SSA optimization Pass2AliasElimination Simplifying expression containing zero SCREEN in [1] *((const byte*) SCREEN + (byte) 0) ← (byte) A Successful SSA optimization PassNSimplifyExpressionWithZero @@ -142,11 +142,11 @@ sub::@return: scope:[sub] from sub VARIABLE REGISTER WEIGHTS -(byte) A loadstore 1.0 +(byte) A loadstore 19.0 (void()) main() (void()) sub() (byte) sub::D -(byte) sub::D#0 4.0 +(byte) sub::D#0 202.0 Initial phi equivalence classes Added variable A to live range equivalence class [ A ] @@ -230,17 +230,17 @@ sub: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) A ← (byte) 'a' [ A ] ( [ A ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN) ← (byte) A [ A ] ( main:2 [ A ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::B [ A ] ( main:2 [ A ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) main::addrA) [ A ] ( main:2 [ A ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN+(byte) 3) ← (const byte) sub::C [ A ] ( main:2::sub:7 [ A ] ) always clobbers reg byte a +Statement [0] (byte) A ← (byte) 'a' [ A ] ( [ A ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) A [ A ] ( main:2 [ A ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::B [ A ] ( main:2 [ A ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) main::addrA) [ A ] ( main:2 [ A ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN+(byte) 3) ← (const byte) sub::C [ A ] ( main:2::sub:7 [ A ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ A ] : zp[1]:2 , Potential registers zp[1]:3 [ sub::D#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sub] 4: zp[1]:3 [ sub::D#0 ] -Uplift Scope [] 1: zp[1]:2 [ A ] +Uplift Scope [sub] 202: zp[1]:3 [ sub::D#0 ] +Uplift Scope [] 19: zp[1]:2 [ A ] Uplift Scope [main] Uplifting [sub] best 76 combination reg byte x [ sub::D#0 ] @@ -338,7 +338,7 @@ FINAL SYMBOL TABLE (label) @1 (label) @begin (label) @end -(byte) A loadstore zp[1]:2 1.0 +(byte) A loadstore zp[1]:2 19.0 (const byte*) SCREEN = (byte*) 1024 (void()) main() (label) main::@return @@ -348,7 +348,7 @@ FINAL SYMBOL TABLE (label) sub::@return (const byte) sub::C = (byte) 'c' (byte) sub::D -(byte) sub::D#0 reg byte x 4.0 +(byte) sub::D#0 reg byte x 202.0 zp[1]:2 [ A ] reg byte x [ sub::D#0 ] diff --git a/src/test/ref/const-early-identification.sym b/src/test/ref/const-early-identification.sym index 4e799ce5c..231db55ad 100644 --- a/src/test/ref/const-early-identification.sym +++ b/src/test/ref/const-early-identification.sym @@ -1,7 +1,7 @@ (label) @1 (label) @begin (label) @end -(byte) A loadstore zp[1]:2 1.0 +(byte) A loadstore zp[1]:2 19.0 (const byte*) SCREEN = (byte*) 1024 (void()) main() (label) main::@return @@ -11,7 +11,7 @@ (label) sub::@return (const byte) sub::C = (byte) 'c' (byte) sub::D -(byte) sub::D#0 reg byte x 4.0 +(byte) sub::D#0 reg byte x 202.0 zp[1]:2 [ A ] reg byte x [ sub::D#0 ] diff --git a/src/test/ref/const-identification.asm b/src/test/ref/const-identification.asm index 68b3a6657..5c43c4501 100644 --- a/src/test/ref/const-identification.asm +++ b/src/test/ref/const-identification.asm @@ -24,10 +24,10 @@ main: { line: { .const x0 = 0 .const x1 = $a - ldy #x0 + ldx #x0 __b1: // for(byte x = x0; x<=x1; x++) - cpy #x1+1 + cpx #x1+1 bcc __b2 // } rts @@ -35,19 +35,19 @@ line: { // plot(x) jsr plot // for(byte x = x0; x<=x1; x++) - iny + inx jmp __b1 } -// plot(byte register(Y) x) +// plot(byte register(X) x) plot: { // idx = plots[x] - ldx plots,y + ldy plots,x // SCREEN[idx]+1 - lda SCREEN,x + lda SCREEN,y clc adc #1 // SCREEN[idx] = SCREEN[idx]+1 - sta SCREEN,x + sta SCREEN,y // } rts } diff --git a/src/test/ref/const-identification.log b/src/test/ref/const-identification.log index b563011e7..129224d23 100644 --- a/src/test/ref/const-identification.log +++ b/src/test/ref/const-identification.log @@ -172,10 +172,10 @@ Finalized unsigned number type (byte) $a Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) plot::$0 ← *((const byte*) SCREEN + (byte) plot::idx#0) + (byte) 1 -Alias (byte) line::x0#1 = (byte) line::x0#2 (byte) line::x#0 (byte) line::x0#3 -Alias (byte) line::x1#1 = (byte) line::x1#3 -Alias (byte) line::x#2 = (byte) line::x#3 (byte) line::x#4 -Alias (byte) line::x1#2 = (byte) line::x1#5 (byte) line::x1#4 +Alias line::x0#1 = line::x0#2 line::x#0 line::x0#3 +Alias line::x1#1 = line::x1#3 +Alias line::x#2 = line::x#3 line::x#4 +Alias line::x1#2 = line::x1#5 line::x1#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) line::x0#1 (byte) line::x0#0 Identical Phi Values (byte) line::x1#1 (byte) line::x1#0 @@ -315,20 +315,20 @@ plot::@return: scope:[plot] from plot VARIABLE REGISTER WEIGHTS (void()) line((byte) line::x0 , (byte) line::x1) (byte) line::x -(byte) line::x#1 202.0 -(byte) line::x#2 101.0 +(byte) line::x#1 200002.0 +(byte) line::x#2 100001.0 (byte) line::x0 (byte) line::x1 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 151.5 +(byte) main::i#2 168.33333333333331 (void()) plot((byte) plot::x) -(byte~) plot::$0 4.0 +(byte~) plot::$0 2000002.0 (byte) plot::idx -(byte) plot::idx#0 3.0 +(byte) plot::idx#0 1500001.5 (byte) plot::x -(byte) plot::x#1 103.0 +(byte) plot::x#1 1100002.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -482,10 +482,10 @@ plot: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) plots + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) plots + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ line::x#2 line::x#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ plot::x#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -493,17 +493,15 @@ Potential registers zp[1]:5 [ plot::idx#0 ] : zp[1]:5 , reg byte a , reg byte x Potential registers zp[1]:6 [ plot::$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [line] 303: zp[1]:3 [ line::x#2 line::x#1 ] -Uplift Scope [plot] 103: zp[1]:4 [ plot::x#1 ] 4: zp[1]:6 [ plot::$0 ] 3: zp[1]:5 [ plot::idx#0 ] -Uplift Scope [main] 34.83: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [plot] 2,000,002: zp[1]:6 [ plot::$0 ] 1,500,001.5: zp[1]:5 [ plot::idx#0 ] 1,100,002: zp[1]:4 [ plot::x#1 ] +Uplift Scope [line] 300,003: zp[1]:3 [ line::x#2 line::x#1 ] +Uplift Scope [main] 319.83: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [line] best 4684 combination zp[1]:3 [ line::x#2 line::x#1 ] -Uplifting [plot] best 4368 combination reg byte y [ plot::x#1 ] reg byte a [ plot::$0 ] reg byte x [ plot::idx#0 ] -Uplifting [main] best 4218 combination reg byte x [ main::i#2 main::i#1 ] -Uplifting [] best 4218 combination -Attempting to uplift remaining variables inzp[1]:3 [ line::x#2 line::x#1 ] -Uplifting [line] best 3018 combination reg byte y [ line::x#2 line::x#1 ] +Uplifting [plot] best 4368 combination reg byte a [ plot::$0 ] reg byte y [ plot::idx#0 ] reg byte x [ plot::x#1 ] +Uplifting [line] best 3168 combination reg byte x [ line::x#2 line::x#1 ] +Uplifting [main] best 3018 combination reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 3018 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -572,13 +570,13 @@ line: { .const x1 = $a // [13] phi from line to line::@1 [phi:line->line::@1] __b1_from_line: - // [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@1#0] -- vbuyy=vbuc1 - ldy #x0 + // [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@1#0] -- vbuxx=vbuc1 + ldx #x0 jmp __b1 // line::@1 __b1: - // [14] if((byte) line::x#2<(const byte) line::x1#0+(byte) 1) goto line::@2 -- vbuyy_lt_vbuc1_then_la1 - cpy #x1+1 + // [14] if((byte) line::x#2<(const byte) line::x1#0+(byte) 1) goto line::@2 -- vbuxx_lt_vbuc1_then_la1 + cpx #x1+1 bcc __b2 jmp __breturn // line::@return @@ -593,24 +591,24 @@ line: { jmp __b3 // line::@3 __b3: - // [18] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuyy=_inc_vbuyy - iny + // [18] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + inx // [13] phi from line::@3 to line::@1 [phi:line::@3->line::@1] __b1_from___b3: // [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@3->line::@1#0] -- register_copy jmp __b1 } // plot -// plot(byte register(Y) x) +// plot(byte register(X) x) plot: { - // [19] (byte) plot::idx#0 ← *((const byte*) plots + (byte) plot::x#1) -- vbuxx=pbuc1_derefidx_vbuyy - ldx plots,y - // [20] (byte~) plot::$0 ← *((const byte*) SCREEN + (byte) plot::idx#0) + (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 - lda SCREEN,x + // [19] (byte) plot::idx#0 ← *((const byte*) plots + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx + ldy plots,x + // [20] (byte~) plot::$0 ← *((const byte*) SCREEN + (byte) plot::idx#0) + (byte) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + lda SCREEN,y clc adc #1 - // [21] *((const byte*) SCREEN + (byte) plot::idx#0) ← (byte~) plot::$0 -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN,x + // [21] *((const byte*) SCREEN + (byte) plot::idx#0) ← (byte~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa + sta SCREEN,y jmp __breturn // plot::@return __breturn: @@ -667,8 +665,8 @@ FINAL SYMBOL TABLE (label) line::@3 (label) line::@return (byte) line::x -(byte) line::x#1 reg byte y 202.0 -(byte) line::x#2 reg byte y 101.0 +(byte) line::x#1 reg byte x 200002.0 +(byte) line::x#2 reg byte x 100001.0 (byte) line::x0 (const byte) line::x0#0 x0 = (byte) 0 (byte) line::x1 @@ -677,21 +675,21 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 168.33333333333331 (void()) plot((byte) plot::x) -(byte~) plot::$0 reg byte a 4.0 +(byte~) plot::$0 reg byte a 2000002.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 3.0 +(byte) plot::idx#0 reg byte y 1500001.5 (byte) plot::x -(byte) plot::x#1 reg byte y 103.0 +(byte) plot::x#1 reg byte x 1100002.0 (const byte*) plots = (byte*) 4096 reg byte x [ main::i#2 main::i#1 ] -reg byte y [ line::x#2 line::x#1 ] -reg byte y [ plot::x#1 ] -reg byte x [ plot::idx#0 ] +reg byte x [ line::x#2 line::x#1 ] +reg byte x [ plot::x#1 ] +reg byte y [ plot::idx#0 ] reg byte a [ plot::$0 ] @@ -750,13 +748,13 @@ line: { .const x0 = 0 .const x1 = $a // [13] phi from line to line::@1 [phi:line->line::@1] - // [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@1#0] -- vbuyy=vbuc1 - ldy #x0 + // [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@1#0] -- vbuxx=vbuc1 + ldx #x0 // line::@1 __b1: // for(byte x = x0; x<=x1; x++) - // [14] if((byte) line::x#2<(const byte) line::x1#0+(byte) 1) goto line::@2 -- vbuyy_lt_vbuc1_then_la1 - cpy #x1+1 + // [14] if((byte) line::x#2<(const byte) line::x1#0+(byte) 1) goto line::@2 -- vbuxx_lt_vbuc1_then_la1 + cpx #x1+1 bcc __b2 // line::@return // } @@ -770,26 +768,26 @@ line: { jsr plot // line::@3 // for(byte x = x0; x<=x1; x++) - // [18] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuyy=_inc_vbuyy - iny + // [18] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + inx // [13] phi from line::@3 to line::@1 [phi:line::@3->line::@1] // [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@3->line::@1#0] -- register_copy jmp __b1 } // plot -// plot(byte register(Y) x) +// plot(byte register(X) x) plot: { // idx = plots[x] - // [19] (byte) plot::idx#0 ← *((const byte*) plots + (byte) plot::x#1) -- vbuxx=pbuc1_derefidx_vbuyy - ldx plots,y + // [19] (byte) plot::idx#0 ← *((const byte*) plots + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx + ldy plots,x // SCREEN[idx]+1 - // [20] (byte~) plot::$0 ← *((const byte*) SCREEN + (byte) plot::idx#0) + (byte) 1 -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 - lda SCREEN,x + // [20] (byte~) plot::$0 ← *((const byte*) SCREEN + (byte) plot::idx#0) + (byte) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + lda SCREEN,y clc adc #1 // SCREEN[idx] = SCREEN[idx]+1 - // [21] *((const byte*) SCREEN + (byte) plot::idx#0) ← (byte~) plot::$0 -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN,x + // [21] *((const byte*) SCREEN + (byte) plot::idx#0) ← (byte~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa + sta SCREEN,y // plot::@return // } // [22] return diff --git a/src/test/ref/const-identification.sym b/src/test/ref/const-identification.sym index 2d94b8afc..c8c6c21bb 100644 --- a/src/test/ref/const-identification.sym +++ b/src/test/ref/const-identification.sym @@ -8,8 +8,8 @@ (label) line::@3 (label) line::@return (byte) line::x -(byte) line::x#1 reg byte y 202.0 -(byte) line::x#2 reg byte y 101.0 +(byte) line::x#1 reg byte x 200002.0 +(byte) line::x#2 reg byte x 100001.0 (byte) line::x0 (const byte) line::x0#0 x0 = (byte) 0 (byte) line::x1 @@ -18,19 +18,19 @@ (label) main::@1 (label) main::@2 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 168.33333333333331 (void()) plot((byte) plot::x) -(byte~) plot::$0 reg byte a 4.0 +(byte~) plot::$0 reg byte a 2000002.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 3.0 +(byte) plot::idx#0 reg byte y 1500001.5 (byte) plot::x -(byte) plot::x#1 reg byte y 103.0 +(byte) plot::x#1 reg byte x 1100002.0 (const byte*) plots = (byte*) 4096 reg byte x [ main::i#2 main::i#1 ] -reg byte y [ line::x#2 line::x#1 ] -reg byte y [ plot::x#1 ] -reg byte x [ plot::idx#0 ] +reg byte x [ line::x#2 line::x#1 ] +reg byte x [ plot::x#1 ] +reg byte y [ plot::idx#0 ] reg byte a [ plot::$0 ] diff --git a/src/test/ref/const-if-problem.log b/src/test/ref/const-if-problem.log index ee6f7de0a..6ae3cdcae 100644 --- a/src/test/ref/const-if-problem.log +++ b/src/test/ref/const-if-problem.log @@ -186,7 +186,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-int-cast-problem.log b/src/test/ref/const-int-cast-problem.log index b4e3e63bd..6d8cebd89 100644 --- a/src/test/ref/const-int-cast-problem.log +++ b/src/test/ref/const-int-cast-problem.log @@ -112,10 +112,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -194,14 +194,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$0 ← (byte) main::i#2 >> (byte) 4 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) main::i#2 >> (byte) 4 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] (byte~) main::$0 ← (byte) main::i#2 >> (byte) 4 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) main::i#2 >> (byte) 4 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 343 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] @@ -297,12 +297,12 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/const-int-cast-problem.sym b/src/test/ref/const-int-cast-problem.sym index a10f841e0..ff0682ea8 100644 --- a/src/test/ref/const-int-cast-problem.sym +++ b/src/test/ref/const-int-cast-problem.sym @@ -3,12 +3,12 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/const-mult-div.log b/src/test/ref/const-mult-div.log index e3775cef7..85e934ce5 100644 --- a/src/test/ref/const-mult-div.log +++ b/src/test/ref/const-mult-div.log @@ -117,7 +117,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (const byte) main::b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (const byte) main::b [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-param.log b/src/test/ref/const-param.log index da26a6501..3b710854d 100644 --- a/src/test/ref/const-param.log +++ b/src/test/ref/const-param.log @@ -111,10 +111,10 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) sum::return#0 = (byte) sum::return#5 -Alias (byte) sum::return#1 = (byte) sum::return#6 -Alias (byte) sum::return#2 = (byte) sum::return#7 -Alias (byte) sum::return#3 = (byte~) sum::$0 (byte) sum::return#8 (byte) sum::return#4 +Alias sum::return#0 = sum::return#5 +Alias sum::return#1 = sum::return#6 +Alias sum::return#2 = sum::return#7 +Alias sum::return#3 = sum::$0 sum::return#8 sum::return#4 Successful SSA optimization Pass2AliasElimination Constant (const byte) sum::a#0 = main::reverse Constant (const byte) sum::b#0 = 'c' @@ -210,18 +210,18 @@ sum::@return: scope:[sum] from sum VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 (byte()) sum((byte) sum::a , (byte) sum::b) (byte) sum::a (byte) sum::b -(byte) sum::b#3 2.0 +(byte) sum::b#3 101.0 (byte) sum::return -(byte) sum::return#0 4.0 -(byte) sum::return#1 4.0 -(byte) sum::return#2 4.0 -(byte) sum::return#3 1.6 +(byte) sum::return#0 22.0 +(byte) sum::return#1 22.0 +(byte) sum::return#2 22.0 +(byte) sum::return#3 26.8 Initial phi equivalence classes [ sum::b#3 ] @@ -376,16 +376,16 @@ Potential registers zp[1]:8 [ main::$2 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ sum::return#3 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sum] 4: zp[1]:3 [ sum::return#0 ] 4: zp[1]:5 [ sum::return#1 ] 4: zp[1]:7 [ sum::return#2 ] 2: zp[1]:2 [ sum::b#3 ] 1.6: zp[1]:9 [ sum::return#3 ] -Uplift Scope [main] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:6 [ main::$1 ] 4: zp[1]:8 [ main::$2 ] +Uplift Scope [sum] 101: zp[1]:2 [ sum::b#3 ] 26.8: zp[1]:9 [ sum::return#3 ] 22: zp[1]:3 [ sum::return#0 ] 22: zp[1]:5 [ sum::return#1 ] 22: zp[1]:7 [ sum::return#2 ] +Uplift Scope [main] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:6 [ main::$1 ] 22: zp[1]:8 [ main::$2 ] Uplift Scope [] -Uplifting [sum] best 109 combination reg byte a [ sum::return#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#2 ] reg byte a [ sum::b#3 ] zp[1]:9 [ sum::return#3 ] +Uplifting [sum] best 103 combination reg byte a [ sum::b#3 ] reg byte a [ sum::return#3 ] reg byte a [ sum::return#0 ] reg byte a [ sum::return#1 ] zp[1]:7 [ sum::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [main] best 91 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] -Uplifting [] best 91 combination -Attempting to uplift remaining variables inzp[1]:9 [ sum::return#3 ] -Uplifting [sum] best 79 combination reg byte a [ sum::return#3 ] +Uplifting [main] best 85 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] +Uplifting [] best 85 combination +Attempting to uplift remaining variables inzp[1]:7 [ sum::return#2 ] +Uplifting [sum] best 79 combination reg byte a [ sum::return#2 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -509,9 +509,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -522,12 +522,12 @@ FINAL SYMBOL TABLE (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#3 reg byte a 2.0 +(byte) sum::b#3 reg byte a 101.0 (byte) sum::return -(byte) sum::return#0 reg byte a 4.0 -(byte) sum::return#1 reg byte a 4.0 -(byte) sum::return#2 reg byte a 4.0 -(byte) sum::return#3 reg byte a 1.6 +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 22.0 +(byte) sum::return#2 reg byte a 22.0 +(byte) sum::return#3 reg byte a 26.8 reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] diff --git a/src/test/ref/const-param.sym b/src/test/ref/const-param.sym index 2b8a3a5cb..c9f01ff8d 100644 --- a/src/test/ref/const-param.sym +++ b/src/test/ref/const-param.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -15,12 +15,12 @@ (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#3 reg byte a 2.0 +(byte) sum::b#3 reg byte a 101.0 (byte) sum::return -(byte) sum::return#0 reg byte a 4.0 -(byte) sum::return#1 reg byte a 4.0 -(byte) sum::return#2 reg byte a 4.0 -(byte) sum::return#3 reg byte a 1.6 +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 22.0 +(byte) sum::return#2 reg byte a 22.0 +(byte) sum::return#3 reg byte a 26.8 reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] diff --git a/src/test/ref/const-pointer.log b/src/test/ref/const-pointer.log index 7584c5659..7e7c8e42e 100644 --- a/src/test/ref/const-pointer.log +++ b/src/test/ref/const-pointer.log @@ -155,7 +155,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::screen) ← (byte) '*' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::screen) ← (byte) '*' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/const-signed-promotion.log b/src/test/ref/const-signed-promotion.log index 279744d2c..ad76d0d5f 100644 --- a/src/test/ref/const-signed-promotion.log +++ b/src/test/ref/const-signed-promotion.log @@ -145,10 +145,10 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -235,18 +235,18 @@ main: { world: .fill 2*3, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const signed word*) world + (byte~) main::$1) ← (signed word) $190 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [10] *((const signed word*) main::screen) ← *((const signed word*) world) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [7] *((const signed word*) world + (byte~) main::$1) ← (signed word) $190 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [10] *((const signed word*) main::screen) ← *((const signed word*) world) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const signed word*) world + (byte~) main::$1) ← (signed word) $190 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [10] *((const signed word*) main::screen) ← *((const signed word*) world) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [7] *((const signed word*) world + (byte~) main::$1) ← (signed word) $190 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [10] *((const signed word*) main::screen) ← *((const signed word*) world) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 412 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -353,13 +353,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const signed word*) main::screen = (signed word*) 1024 (const signed word*) world[(number) 3] = { fill( 3, 0) } diff --git a/src/test/ref/const-signed-promotion.sym b/src/test/ref/const-signed-promotion.sym index ab9547cda..fef89d07f 100644 --- a/src/test/ref/const-signed-promotion.sym +++ b/src/test/ref/const-signed-promotion.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const signed word*) main::screen = (signed word*) 1024 (const signed word*) world[(number) 3] = { fill( 3, 0) } diff --git a/src/test/ref/const-word-pointer.log b/src/test/ref/const-word-pointer.log index 99a5f3a45..abb2ecd97 100644 --- a/src/test/ref/const-word-pointer.log +++ b/src/test/ref/const-word-pointer.log @@ -116,11 +116,11 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 -(word) main::w loadstore 20.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 +(word) main::w loadstore 110.0 Initial phi equivalence classes Added variable main::w to live range equivalence class [ main::w ] @@ -216,8 +216,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::w ← (word) $d03 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const word*) main::wp) ← (word) $210c [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (word) main::w ← (word) $d03 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const word*) main::wp) ← (word) $210c [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w ] : zp[2]:2 , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -225,7 +225,7 @@ Potential registers zp[1]:6 [ main::$2 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ main::$3 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:2 [ main::w ] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:5 [ main::$1 ] 4: zp[1]:6 [ main::$2 ] 4: zp[1]:7 [ main::$3 ] +Uplift Scope [main] 110: zp[2]:2 [ main::w ] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$1 ] 22: zp[1]:6 [ main::$2 ] 22: zp[1]:7 [ main::$3 ] Uplift Scope [] Uplifting [main] best 69 combination zp[2]:2 [ main::w ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] @@ -317,13 +317,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@return (const byte*) main::screen = (byte*) 1024 -(word) main::w loadstore zp[2]:2 20.0 +(word) main::w loadstore zp[2]:2 110.0 (const word*) main::wp = &(word) main::w zp[2]:2 [ main::w ] diff --git a/src/test/ref/const-word-pointer.sym b/src/test/ref/const-word-pointer.sym index e3f2f4fd8..09cc25344 100644 --- a/src/test/ref/const-word-pointer.sym +++ b/src/test/ref/const-word-pointer.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@return (const byte*) main::screen = (byte*) 1024 -(word) main::w loadstore zp[2]:2 20.0 +(word) main::w loadstore zp[2]:2 110.0 (const word*) main::wp = &(word) main::w zp[2]:2 [ main::w ] diff --git a/src/test/ref/constabsmin.log b/src/test/ref/constabsmin.log index 77ce9bfbf..9133bed4d 100644 --- a/src/test/ref/constabsmin.log +++ b/src/test/ref/constabsmin.log @@ -112,7 +112,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/constant-string-concat-0.log b/src/test/ref/constant-string-concat-0.log index 7452e7468..773b9ceaf 100644 --- a/src/test/ref/constant-string-concat-0.log +++ b/src/test/ref/constant-string-concat-0.log @@ -57,7 +57,7 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -114,8 +114,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -188,15 +188,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 333 combination reg byte x [ main::i#2 main::i#1 ] @@ -293,8 +293,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::msg[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constant-string-concat-0.sym b/src/test/ref/constant-string-concat-0.sym index 25e4a89b9..db1cce188 100644 --- a/src/test/ref/constant-string-concat-0.sym +++ b/src/test/ref/constant-string-concat-0.sym @@ -7,8 +7,8 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::msg[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constant-string-concat.log b/src/test/ref/constant-string-concat.log index 883efe572..7bcb9af83 100644 --- a/src/test/ref/constant-string-concat.log +++ b/src/test/ref/constant-string-concat.log @@ -107,8 +107,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -178,13 +178,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::s + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::s + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::s + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::s + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 288 combination reg byte x [ main::i#2 main::i#1 ] @@ -280,8 +280,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (const byte*) main::s[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constant-string-concat.sym b/src/test/ref/constant-string-concat.sym index 6d0102781..d794e02d2 100644 --- a/src/test/ref/constant-string-concat.sym +++ b/src/test/ref/constant-string-concat.sym @@ -6,8 +6,8 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (const byte*) main::s[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constantmin.log b/src/test/ref/constantmin.log index 2d69b3d1c..5b2522603 100644 --- a/src/test/ref/constantmin.log +++ b/src/test/ref/constantmin.log @@ -74,7 +74,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) BGCOL#0 = (byte*~) $1 (byte*) BGCOL#2 +Alias BGCOL#0 = $1 BGCOL#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) BGCOL#1 (byte*) BGCOL#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -151,8 +151,8 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 16.5 +(byte) main::i#1 151.5 +(byte) main::i#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -226,17 +226,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) STAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) VIC+(byte)(number) $10*(number) 2+(byte) 1) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (const byte) STAR+(byte) 1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) STAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) VIC+(byte)(number) $10*(number) 2+(byte) 1) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (const byte) STAR+(byte) 1 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [4] *((const byte*) SCREEN) ← (const byte) STAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) VIC+(byte)(number) $10*(number) 2+(byte) 1) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (const byte) STAR+(byte) 1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) STAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) VIC+(byte)(number) $10*(number) 2+(byte) 1) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (const byte) STAR+(byte) 1 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 275 combination reg byte x [ main::i#2 main::i#1 ] @@ -339,8 +339,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constantmin.sym b/src/test/ref/constantmin.sym index 1e2128300..512f8f23c 100644 --- a/src/test/ref/constantmin.sym +++ b/src/test/ref/constantmin.sym @@ -10,7 +10,7 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/constants.log b/src/test/ref/constants.log index c5d4e89a5..9b9be25bf 100644 --- a/src/test/ref/constants.log +++ b/src/test/ref/constants.log @@ -937,70 +937,70 @@ Inferred type updated to signed byte in (snumber~) test_sbytes::$1 ← (const si Inferred type updated to signed byte in (snumber~) test_sbytes::$3 ← (signed byte) test_sbytes::bc#1 - (signed byte) 4 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#4 -Alias (byte*) print_str::str#10 = (byte*) print_str::str#9 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#66 (byte*) print_char_cursor#35 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#3 (byte*) print_line_cursor#26 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_line_cursor#27 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#5 (byte*) print_char_cursor#38 (byte*) print_line_cursor#4 (byte*) print_char_cursor#6 -Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#8 -Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 -Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#31 (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#43 -Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#9 -Alias (byte) test_bytes::bc#0 = (byte~) test_bytes::$1 (byte) test_bytes::bc#1 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#33 -Alias (byte) test_bytes::bd#0 = (byte~) test_bytes::$5 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#46 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#12 -Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5 -Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5 -Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#66 (byte*) print_line_cursor#62 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#71 (byte*) print_char_cursor#72 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#50 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#52 (byte*) print_char_cursor#20 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#53 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#38 -Alias (signed byte) test_sbytes::bc#0 = (signed byte~) test_sbytes::$1 (signed byte) test_sbytes::bc#1 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#54 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#39 -Alias (signed byte) test_sbytes::bd#0 = (signed byte~) test_sbytes::$3 (signed byte) test_sbytes::bd#1 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#55 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#40 -Alias (signed byte) test_sbytes::be#0 = (signed byte~) test_sbytes::$5 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#56 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#41 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#57 (byte*) print_char_cursor#58 (byte*) print_char_cursor#26 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#20 -Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7 -Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7 -Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#67 (byte*) print_line_cursor#63 (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#57 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#60 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#44 (byte*) print_line_cursor#45 (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#64 (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#65 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#53 print_char_cursor#79 print_screen#4 +Alias print_str::str#10 = print_str::str#9 +Alias print_char_cursor#2 = print_char_cursor#34 print_char_cursor#66 print_char_cursor#35 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#25 print_char_cursor#3 print_line_cursor#26 print_char_cursor#37 print_line_cursor#2 print_char_cursor#4 +Alias print_line_cursor#27 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#5 print_char_cursor#38 print_line_cursor#4 print_char_cursor#6 +Alias print_line_cursor#28 = print_line_cursor#5 +Alias print_char_cursor#39 = print_char_cursor#7 +Alias print_char_cursor#40 = print_char_cursor#8 +Alias print_line_cursor#29 = print_line_cursor#6 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#41 print_char_cursor#42 +Alias print_line_cursor#30 = print_line_cursor#7 print_line_cursor#31 print_line_cursor#8 +Alias print_char_cursor#11 = print_char_cursor#43 +Alias print_line_cursor#32 = print_line_cursor#9 +Alias test_bytes::bc#0 = test_bytes::$1 test_bytes::bc#1 +Alias print_char_cursor#12 = print_char_cursor#44 +Alias print_line_cursor#10 = print_line_cursor#33 +Alias test_bytes::bd#0 = test_bytes::$5 +Alias print_char_cursor#13 = print_char_cursor#45 print_char_cursor#46 print_char_cursor#14 +Alias print_line_cursor#11 = print_line_cursor#34 print_line_cursor#35 print_line_cursor#12 +Alias assert_byte::b#3 = assert_byte::b#4 assert_byte::b#5 +Alias assert_byte::c#3 = assert_byte::c#4 assert_byte::c#5 +Alias print_line_cursor#54 = print_line_cursor#64 print_line_cursor#66 print_line_cursor#62 print_line_cursor#58 print_line_cursor#59 print_line_cursor#55 +Alias print_char_cursor#15 = print_char_cursor#47 +Alias print_char_cursor#16 = print_char_cursor#48 print_char_cursor#71 print_char_cursor#72 +Alias print_char_cursor#17 = print_char_cursor#49 +Alias print_char_cursor#18 = print_char_cursor#50 +Alias print_line_cursor#13 = print_line_cursor#36 print_line_cursor#37 print_line_cursor#14 +Alias print_char_cursor#19 = print_char_cursor#51 print_char_cursor#52 print_char_cursor#20 +Alias print_char_cursor#21 = print_char_cursor#53 +Alias print_line_cursor#15 = print_line_cursor#38 +Alias test_sbytes::bc#0 = test_sbytes::$1 test_sbytes::bc#1 +Alias print_char_cursor#22 = print_char_cursor#54 +Alias print_line_cursor#16 = print_line_cursor#39 +Alias test_sbytes::bd#0 = test_sbytes::$3 test_sbytes::bd#1 +Alias print_char_cursor#23 = print_char_cursor#55 +Alias print_line_cursor#17 = print_line_cursor#40 +Alias test_sbytes::be#0 = test_sbytes::$5 +Alias print_char_cursor#24 = print_char_cursor#56 +Alias print_line_cursor#18 = print_line_cursor#41 +Alias print_char_cursor#25 = print_char_cursor#57 print_char_cursor#58 print_char_cursor#26 +Alias print_line_cursor#19 = print_line_cursor#42 print_line_cursor#43 print_line_cursor#20 +Alias assert_sbyte::b#5 = assert_sbyte::b#6 assert_sbyte::b#7 +Alias assert_sbyte::c#5 = assert_sbyte::c#6 assert_sbyte::c#7 +Alias print_line_cursor#56 = print_line_cursor#65 print_line_cursor#67 print_line_cursor#63 print_line_cursor#60 print_line_cursor#61 print_line_cursor#57 +Alias print_char_cursor#27 = print_char_cursor#59 +Alias print_char_cursor#28 = print_char_cursor#60 print_char_cursor#76 print_char_cursor#77 +Alias print_char_cursor#29 = print_char_cursor#61 +Alias print_char_cursor#30 = print_char_cursor#62 +Alias print_line_cursor#21 = print_line_cursor#44 print_line_cursor#45 print_line_cursor#22 +Alias print_char_cursor#31 = print_char_cursor#63 print_char_cursor#64 print_char_cursor#32 +Alias print_line_cursor#23 = print_line_cursor#46 +Alias print_char_cursor#33 = print_char_cursor#65 Successful SSA optimization Pass2AliasElimination -Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#54 -Alias (byte*) print_line_cursor#52 = (byte*) print_line_cursor#56 +Alias print_line_cursor#50 = print_line_cursor#54 +Alias print_line_cursor#52 = print_line_cursor#56 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1524,51 +1524,51 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) (byte) assert_byte::b -(byte) assert_byte::b#3 0.4 +(byte) assert_byte::b#3 200.2 (byte) assert_byte::c -(byte) assert_byte::c#3 0.4 +(byte) assert_byte::c#3 200.2 (byte*) assert_byte::msg -(byte*) assert_byte::msg#3 2.0 +(byte*) assert_byte::msg#3 1001.0 (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) (signed byte) assert_sbyte::b -(signed byte) assert_sbyte::b#5 0.3333333333333333 +(signed byte) assert_sbyte::b#5 166.83333333333334 (signed byte) assert_sbyte::c -(signed byte) assert_sbyte::c#5 0.3333333333333333 +(signed byte) assert_sbyte::c#5 166.83333333333334 (byte*) assert_sbyte::msg -(byte*) assert_sbyte::msg#5 2.0 +(byte*) assert_sbyte::msg#5 1001.0 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#2 2.230769230769231 -(byte*) print_char_cursor#70 3.0 -(byte*) print_char_cursor#80 18.0 -(byte*) print_char_cursor#85 4.0 -(byte*) print_char_cursor#91 4.0 -(byte*) print_char_cursor#92 4.0 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#2 16000.423076923078 +(byte*) print_char_cursor#70 601.5 +(byte*) print_char_cursor#80 18009.0 +(byte*) print_char_cursor#85 2002.0 +(byte*) print_char_cursor#91 202.0 +(byte*) print_char_cursor#92 202.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 1.2500000000000002 -(byte*) print_line_cursor#24 24.0 -(byte*) print_line_cursor#47 6.0 -(byte*) print_line_cursor#50 0.5454545454545454 +(byte*) print_line_cursor#1 8400.249999999996 +(byte*) print_line_cursor#24 210003.0 +(byte*) print_line_cursor#47 12003.0 +(byte*) print_line_cursor#50 109.36363636363637 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#1 4.0 -(byte*) print_str::str#10 11.5 -(byte*) print_str::str#11 6.0 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#1 2002.0 +(byte*) print_str::str#10 102501.25 +(byte*) print_str::str#11 12003.0 +(byte*) print_str::str#5 1001.0 (void()) test_bytes() (byte) test_bytes::bc (byte) test_bytes::bd @@ -2200,42 +2200,42 @@ memset: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ assert_sbyte::b#5 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ assert_sbyte::c#5 ] -Statement [24] (byte*) print_char_cursor#85 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [34] *((const byte*) BGCOL) ← (const byte) RED [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [38] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Statement [24] (byte*) print_char_cursor#85 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } ) always clobbers reg byte a +Statement [34] *((const byte*) BGCOL) ← (const byte) RED [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a +Statement [38] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ assert_sbyte::b#5 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ assert_sbyte::c#5 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ assert_byte::b#3 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ assert_byte::b#3 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ assert_byte::c#3 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ assert_byte::c#3 ] -Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [50] (byte*) print_char_cursor#91 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#91 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#91 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a -Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a -Statement [66] *((const byte*) BGCOL) ← (const byte) RED [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a -Statement [73] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [75] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [6] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [24] (byte*) print_char_cursor#85 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [34] *((const byte*) BGCOL) ← (const byte) RED [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [38] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [50] (byte*) print_char_cursor#91 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#91 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#91 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a -Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a -Statement [66] *((const byte*) BGCOL) ← (const byte) RED [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a -Statement [73] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [75] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a reg byte y +Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#47 = print_line_cursor#50 } } main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } ) always clobbers reg byte a +Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#47 = print_line_cursor#50 } } main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } ) always clobbers reg byte a +Statement [50] (byte*) print_char_cursor#91 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#91 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#91 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } } ) always clobbers reg byte a +Statement [52] (byte*) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } } ) always clobbers reg byte a +Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } ) always clobbers reg byte a +Statement [66] *((const byte*) BGCOL) ← (const byte) RED [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a +Statement [73] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [75] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } ) always clobbers reg byte a +Statement [24] (byte*) print_char_cursor#85 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#85 print_line_cursor#1 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } ) always clobbers reg byte a +Statement [34] *((const byte*) BGCOL) ← (const byte) RED [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a +Statement [38] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a reg byte y +Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_str::str#11 = print_str::str#5 assert_sbyte::msg#5 } { print_char_cursor#80 = print_char_cursor#85 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a reg byte y +Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#47 = print_line_cursor#50 } } main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } ) always clobbers reg byte a +Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#47 = print_line_cursor#50 } } main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 print_line_cursor#47 } } ) always clobbers reg byte a +Statement [50] (byte*) print_char_cursor#91 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#91 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#91 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } } ) always clobbers reg byte a +Statement [52] (byte*) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } } ) always clobbers reg byte a +Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } { print_char_cursor#70 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_char_cursor#70 = print_char_cursor#91 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] { { print_char_cursor#70 = print_char_cursor#92 print_char_cursor#80 } { print_line_cursor#1 = print_line_cursor#50 } { print_str::str#1 = print_str::str#11 assert_byte::msg#3 } } ) always clobbers reg byte a +Statement [66] *((const byte*) BGCOL) ← (const byte) RED [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#70 = print_char_cursor#91 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] { { print_char_cursor#70 = print_char_cursor#92 } { print_line_cursor#1 = print_line_cursor#50 } { print_char_cursor#2 = print_char_cursor#80 } } ) always clobbers reg byte a +Statement [73] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [75] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:69 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ assert_sbyte::msg#5 ] : zp[2]:2 , Potential registers zp[1]:4 [ assert_sbyte::b#5 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ assert_sbyte::c#5 ] : zp[1]:5 , reg byte x , @@ -2248,11 +2248,11 @@ Potential registers zp[1]:15 [ assert_byte::c#3 ] : zp[1]:15 , reg byte x , Potential registers zp[2]:16 [ memset::dst#2 memset::dst#1 ] : zp[2]:16 , REGISTER UPLIFT SCOPES -Uplift Scope [] 46.23: zp[2]:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ] 31.8: zp[2]:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] -Uplift Scope [print_str] 45.5: zp[2]:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] -Uplift Scope [memset] 36.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [assert_byte] 2: zp[2]:12 [ assert_byte::msg#3 ] 0.4: zp[1]:14 [ assert_byte::b#3 ] 0.4: zp[1]:15 [ assert_byte::c#3 ] -Uplift Scope [assert_sbyte] 2: zp[2]:2 [ assert_sbyte::msg#5 ] 0.33: zp[1]:4 [ assert_sbyte::b#5 ] 0.33: zp[1]:5 [ assert_sbyte::c#5 ] +Uplift Scope [] 230,515.61: zp[2]:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] 137,017.92: zp[2]:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ] +Uplift Scope [print_str] 317,509.25: zp[2]:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [assert_byte] 1,001: zp[2]:12 [ assert_byte::msg#3 ] 200.2: zp[1]:14 [ assert_byte::b#3 ] 200.2: zp[1]:15 [ assert_byte::c#3 ] +Uplift Scope [assert_sbyte] 1,001: zp[2]:2 [ assert_sbyte::msg#5 ] 166.83: zp[1]:4 [ assert_sbyte::b#5 ] 166.83: zp[1]:5 [ assert_sbyte::c#5 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -2260,7 +2260,7 @@ Uplift Scope [main] Uplift Scope [test_bytes] Uplift Scope [test_sbytes] -Uplifting [] best 2214 combination zp[2]:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ] zp[2]:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] +Uplifting [] best 2214 combination zp[2]:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] zp[2]:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ] Uplifting [print_str] best 2214 combination zp[2]:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] Uplifting [memset] best 2214 combination zp[2]:16 [ memset::dst#2 memset::dst#1 ] Uplifting [assert_byte] best 2202 combination zp[2]:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp[1]:15 [ assert_byte::c#3 ] @@ -2987,11 +2987,11 @@ FINAL SYMBOL TABLE (label) assert_byte::@5 (label) assert_byte::@return (byte) assert_byte::b -(byte) assert_byte::b#3 reg byte x 0.4 +(byte) assert_byte::b#3 reg byte x 200.2 (byte) assert_byte::c -(byte) assert_byte::c#3 c zp[1]:6 0.4 +(byte) assert_byte::c#3 c zp[1]:6 200.2 (byte*) assert_byte::msg -(byte*) assert_byte::msg#3 msg zp[2]:7 2.0 +(byte*) assert_byte::msg#3 msg zp[2]:7 1001.0 (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) (label) assert_sbyte::@1 (label) assert_sbyte::@2 @@ -3000,11 +3000,11 @@ FINAL SYMBOL TABLE (label) assert_sbyte::@5 (label) assert_sbyte::@return (signed byte) assert_sbyte::b -(signed byte) assert_sbyte::b#5 reg byte x 0.3333333333333333 +(signed byte) assert_sbyte::b#5 reg byte x 166.83333333333334 (signed byte) assert_sbyte::c -(signed byte) assert_sbyte::c#5 c zp[1]:6 0.3333333333333333 +(signed byte) assert_sbyte::c#5 c zp[1]:6 166.83333333333334 (byte*) assert_sbyte::msg -(byte*) assert_sbyte::msg#5 msg zp[2]:7 2.0 +(byte*) assert_sbyte::msg#5 msg zp[2]:7 1001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -3016,8 +3016,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -3028,20 +3028,20 @@ FINAL SYMBOL TABLE (const byte*) msg[(byte) 4] = (byte*) "0=0" (const byte*) msg1[(byte) 6] = (byte*) "0+2=2" (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 11.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 2.230769230769231 -(byte*) print_char_cursor#70 print_char_cursor zp[2]:2 3.0 -(byte*) print_char_cursor#80 print_char_cursor zp[2]:2 18.0 -(byte*) print_char_cursor#85 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#91 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#92 print_char_cursor zp[2]:2 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 100001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 16000.423076923078 +(byte*) print_char_cursor#70 print_char_cursor zp[2]:2 601.5 +(byte*) print_char_cursor#80 print_char_cursor zp[2]:2 18009.0 +(byte*) print_char_cursor#85 print_char_cursor zp[2]:2 2002.0 +(byte*) print_char_cursor#91 print_char_cursor zp[2]:2 202.0 +(byte*) print_char_cursor#92 print_char_cursor zp[2]:2 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 1.2500000000000002 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#47 print_line_cursor zp[2]:4 6.0 -(byte*) print_line_cursor#50 print_line_cursor zp[2]:4 0.5454545454545454 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 8400.249999999996 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:4 210003.0 +(byte*) print_line_cursor#47 print_line_cursor zp[2]:4 12003.0 +(byte*) print_line_cursor#50 print_line_cursor zp[2]:4 109.36363636363637 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -3051,11 +3051,11 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 22.0 -(byte*) print_str::str#1 str zp[2]:7 4.0 -(byte*) print_str::str#10 str zp[2]:7 11.5 -(byte*) print_str::str#11 str zp[2]:7 6.0 -(byte*) print_str::str#5 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 200002.0 +(byte*) print_str::str#1 str zp[2]:7 2002.0 +(byte*) print_str::str#10 str zp[2]:7 102501.25 +(byte*) print_str::str#11 str zp[2]:7 12003.0 +(byte*) print_str::str#5 str zp[2]:7 1001.0 (const byte*) str[(byte) 2] = (byte*) " " (const byte*) str1[(byte) 6] = (byte*) "fail!" (const byte*) str2[(byte) 3] = (byte*) "ok" diff --git a/src/test/ref/constants.sym b/src/test/ref/constants.sym index 467ba754b..53c1c81ca 100644 --- a/src/test/ref/constants.sym +++ b/src/test/ref/constants.sym @@ -16,11 +16,11 @@ (label) assert_byte::@5 (label) assert_byte::@return (byte) assert_byte::b -(byte) assert_byte::b#3 reg byte x 0.4 +(byte) assert_byte::b#3 reg byte x 200.2 (byte) assert_byte::c -(byte) assert_byte::c#3 c zp[1]:6 0.4 +(byte) assert_byte::c#3 c zp[1]:6 200.2 (byte*) assert_byte::msg -(byte*) assert_byte::msg#3 msg zp[2]:7 2.0 +(byte*) assert_byte::msg#3 msg zp[2]:7 1001.0 (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) (label) assert_sbyte::@1 (label) assert_sbyte::@2 @@ -29,11 +29,11 @@ (label) assert_sbyte::@5 (label) assert_sbyte::@return (signed byte) assert_sbyte::b -(signed byte) assert_sbyte::b#5 reg byte x 0.3333333333333333 +(signed byte) assert_sbyte::b#5 reg byte x 166.83333333333334 (signed byte) assert_sbyte::c -(signed byte) assert_sbyte::c#5 c zp[1]:6 0.3333333333333333 +(signed byte) assert_sbyte::c#5 c zp[1]:6 166.83333333333334 (byte*) assert_sbyte::msg -(byte*) assert_sbyte::msg#5 msg zp[2]:7 2.0 +(byte*) assert_sbyte::msg#5 msg zp[2]:7 1001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -45,8 +45,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -57,20 +57,20 @@ (const byte*) msg[(byte) 4] = (byte*) "0=0" (const byte*) msg1[(byte) 6] = (byte*) "0+2=2" (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 11.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 2.230769230769231 -(byte*) print_char_cursor#70 print_char_cursor zp[2]:2 3.0 -(byte*) print_char_cursor#80 print_char_cursor zp[2]:2 18.0 -(byte*) print_char_cursor#85 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#91 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#92 print_char_cursor zp[2]:2 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 100001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 16000.423076923078 +(byte*) print_char_cursor#70 print_char_cursor zp[2]:2 601.5 +(byte*) print_char_cursor#80 print_char_cursor zp[2]:2 18009.0 +(byte*) print_char_cursor#85 print_char_cursor zp[2]:2 2002.0 +(byte*) print_char_cursor#91 print_char_cursor zp[2]:2 202.0 +(byte*) print_char_cursor#92 print_char_cursor zp[2]:2 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 1.2500000000000002 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#47 print_line_cursor zp[2]:4 6.0 -(byte*) print_line_cursor#50 print_line_cursor zp[2]:4 0.5454545454545454 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 8400.249999999996 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:4 210003.0 +(byte*) print_line_cursor#47 print_line_cursor zp[2]:4 12003.0 +(byte*) print_line_cursor#50 print_line_cursor zp[2]:4 109.36363636363637 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -80,11 +80,11 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 22.0 -(byte*) print_str::str#1 str zp[2]:7 4.0 -(byte*) print_str::str#10 str zp[2]:7 11.5 -(byte*) print_str::str#11 str zp[2]:7 6.0 -(byte*) print_str::str#5 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 200002.0 +(byte*) print_str::str#1 str zp[2]:7 2002.0 +(byte*) print_str::str#10 str zp[2]:7 102501.25 +(byte*) print_str::str#11 str zp[2]:7 12003.0 +(byte*) print_str::str#5 str zp[2]:7 1001.0 (const byte*) str[(byte) 2] = (byte*) " " (const byte*) str1[(byte) 6] = (byte*) "fail!" (const byte*) str2[(byte) 3] = (byte*) "ok" diff --git a/src/test/ref/cordic-atan2-16-ref.asm b/src/test/ref/cordic-atan2-16-ref.asm index 1e8161f3d..6671de4ce 100644 --- a/src/test/ref/cordic-atan2-16-ref.asm +++ b/src/test/ref/cordic-atan2-16-ref.asm @@ -66,8 +66,7 @@ main: { inc.z __10+1 !: // ang_w = >(angle_w+0x0080) - lda.z __10+1 - tax + ldx.z __10+1 // diff(ang_w, *screen_ref) ldy #0 lda (screen_ref),y @@ -120,16 +119,14 @@ main: { print_word: { .label w = 4 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 lda #<$400 sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 jsr print_byte // print_byte(= (signed byte) 0 from [102] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#27 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#2 (byte*) print_char_cursor#14 (byte*) print_char_cursor#3 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#17 (byte*) print_char_cursor#6 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#38 (byte*) print_char_cursor#36 (byte*) print_char_cursor#35 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (word~) main::$4 = (word~) main::$17 -Alias (signed word) main::xw#0 = (signed word~) main::$5 -Alias (word~) main::$7 = (word~) main::$18 -Alias (signed word) main::yw#0 = (signed word~) main::$8 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (byte*) main::screen_ref#2 = (byte*) main::screen_ref#4 (byte*) main::screen_ref#3 -Alias (word) main::diff_sum#2 = (word) main::diff_sum#4 (word) main::diff_sum#6 -Alias (byte*) main::screen#2 = (byte*) main::screen#3 (byte*) main::screen#4 -Alias (signed byte) main::x#2 = (signed byte) main::x#4 (signed byte) main::x#3 -Alias (signed byte) main::y#2 = (signed byte) main::y#6 (signed byte) main::y#5 (signed byte) main::y#3 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#30 (byte*) print_char_cursor#28 -Alias (word) main::angle_w#0 = (word~) main::$9 -Alias (byte) main::ang_w#0 = (byte~) main::$11 (byte) main::ang_w#1 -Alias (byte) diff::return#0 = (byte) diff::return#3 -Alias (word) main::diff_sum#1 = (word) main::diff_sum#5 (word) main::diff_sum#3 -Alias (byte*) main::screen_ref#1 = (byte*) main::screen_ref#6 -Alias (byte*) main::screen#1 = (byte*) main::screen#6 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#26 (byte*) print_char_cursor#21 -Alias (byte) diff::bb2#1 = (byte) diff::bb2#2 (byte) diff::bb2#3 -Alias (byte) diff::bb1#1 = (byte) diff::bb1#2 (byte) diff::bb1#3 -Alias (byte~) diff::$4 = (byte~) diff::$3 -Alias (byte~) diff::$2 = (byte~) diff::$1 -Alias (byte) diff::return#1 = (byte~) diff::$5 (byte) diff::return#4 (byte) diff::return#2 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#22 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#27 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#1 = print_char_cursor#12 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#13 = print_char_cursor#2 print_char_cursor#14 print_char_cursor#3 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#15 = print_char_cursor#4 +Alias print_char_cursor#16 = print_char_cursor#5 print_char_cursor#17 print_char_cursor#6 +Alias print_char_cursor#19 = print_char_cursor#7 print_char_cursor#8 +Alias print_char_cursor#34 = print_char_cursor#37 print_char_cursor#38 print_char_cursor#36 print_char_cursor#35 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias main::$4 = main::$17 +Alias main::xw#0 = main::$5 +Alias main::$7 = main::$18 +Alias main::yw#0 = main::$8 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias main::screen_ref#2 = main::screen_ref#4 main::screen_ref#3 +Alias main::diff_sum#2 = main::diff_sum#4 main::diff_sum#6 +Alias main::screen#2 = main::screen#3 main::screen#4 +Alias main::x#2 = main::x#4 main::x#3 +Alias main::y#2 = main::y#6 main::y#5 main::y#3 +Alias print_char_cursor#25 = print_char_cursor#31 print_char_cursor#32 print_char_cursor#30 print_char_cursor#28 +Alias main::angle_w#0 = main::$9 +Alias main::ang_w#0 = main::$11 main::ang_w#1 +Alias diff::return#0 = diff::return#3 +Alias main::diff_sum#1 = main::diff_sum#5 main::diff_sum#3 +Alias main::screen_ref#1 = main::screen_ref#6 +Alias main::screen#1 = main::screen#6 +Alias print_char_cursor#20 = print_char_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#29 print_char_cursor#26 print_char_cursor#21 +Alias diff::bb2#1 = diff::bb2#2 diff::bb2#3 +Alias diff::bb1#1 = diff::bb1#2 diff::bb1#3 +Alias diff::$4 = diff::$3 +Alias diff::$2 = diff::$1 +Alias diff::return#1 = diff::$5 diff::return#4 diff::return#2 +Alias print_char_cursor#11 = print_char_cursor#22 Successful SSA optimization Pass2AliasElimination -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -1948,151 +1948,151 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 20002.0 +(byte~) atan2_16::$22 2.0000002E7 +(byte~) atan2_16::$23 2.0000002E7 +(signed word~) atan2_16::$7 20002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 15001.5 +(word) atan2_16::angle#11 20002.0 +(word) atan2_16::angle#12 1904762.0952380951 +(word) atan2_16::angle#13 1.3333334666666666E7 +(word) atan2_16::angle#2 2.0000002E7 +(word) atan2_16::angle#3 2.0000002E7 +(word) atan2_16::angle#4 20002.0 +(word) atan2_16::angle#5 20002.0 +(word) atan2_16::angle#6 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.50000015E7 +(byte) atan2_16::i#2 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 7001.0 +(word) atan2_16::return#2 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.00000002E8 +(byte) atan2_16::shift#2 8.000000125E7 +(byte) atan2_16::shift#5 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.6666667333333336E7 +(signed word) atan2_16::xd#10 1.0000001E7 +(signed word) atan2_16::xd#2 1.0000001E7 +(signed word) atan2_16::xd#3 7.666666833333333E7 +(signed word) atan2_16::xd#5 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 30003.0 +(signed word) atan2_16::xi#1 5000000.5 +(signed word) atan2_16::xi#13 20002.0 +(signed word) atan2_16::xi#2 5000000.5 +(signed word) atan2_16::xi#3 2667333.6666666665 +(signed word) atan2_16::xi#8 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.00000001E8 +(signed word) atan2_16::yd#10 2.0000002E7 +(signed word) atan2_16::yd#2 2.0000002E7 +(signed word) atan2_16::yd#3 4.6000001E7 +(signed word) atan2_16::yd#5 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 6000.6 +(signed word) atan2_16::yi#1 6666667.333333333 +(signed word) atan2_16::yi#16 20002.0 +(signed word) atan2_16::yi#2 6666667.333333333 +(signed word) atan2_16::yi#3 3530000.4117647056 +(signed word) atan2_16::yi#8 1.0000001E7 (byte()) diff((byte) diff::bb1 , (byte) diff::bb2) -(byte~) diff::$2 4.0 -(byte~) diff::$4 4.0 +(byte~) diff::$2 20002.0 +(byte~) diff::$4 20002.0 (byte) diff::bb1 -(byte) diff::bb1#0 35.66666666666666 +(byte) diff::bb1#0 10334.666666666666 (byte) diff::bb2 -(byte) diff::bb2#0 53.5 +(byte) diff::bb2#0 15502.0 (byte) diff::return -(byte) diff::return#0 202.0 -(byte) diff::return#1 34.99999999999999 +(byte) diff::return#0 2002.0 +(byte) diff::return#1 7001.0 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() -(word~) main::$10 202.0 -(byte~) main::$12 202.0 -(byte~) main::$13 202.0 +(word~) main::$10 2002.0 +(byte~) main::$12 2002.0 +(byte~) main::$13 2002.0 (byte) main::ang_w -(byte) main::ang_w#0 43.285714285714285 +(byte) main::ang_w#0 429.0 (word) main::angle_w -(word) main::angle_w#0 202.0 +(word) main::angle_w#0 2002.0 (word) main::diff_sum -(word) main::diff_sum#1 23.888888888888886 -(word) main::diff_sum#2 14.2 -(word) main::diff_sum#7 22.0 +(word) main::diff_sum#1 234.8888888888889 +(word) main::diff_sum#2 140.2 +(word) main::diff_sum#7 202.0 (byte*) main::screen -(byte*) main::screen#1 35.5 -(byte*) main::screen#2 17.444444444444443 -(byte*) main::screen#5 22.0 +(byte*) main::screen#1 350.5 +(byte*) main::screen#2 172.44444444444446 +(byte*) main::screen#5 202.0 (byte*) main::screen_ref -(byte*) main::screen_ref#1 42.599999999999994 -(byte*) main::screen_ref#2 21.842105263157897 -(byte*) main::screen_ref#5 22.0 +(byte*) main::screen_ref#1 420.59999999999997 +(byte*) main::screen_ref#2 216.05263157894734 +(byte*) main::screen_ref#5 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 151.5 -(signed byte) main::x#2 10.1 +(signed byte) main::x#1 1501.5 +(signed byte) main::x#2 100.1 (signed word) main::xw -(word) main::xw#0 50.5 +(word) main::xw#0 500.5 (signed byte) main::y -(signed byte) main::y#1 16.5 -(signed byte) main::y#4 0.9565217391304348 +(signed byte) main::y#1 151.5 +(signed byte) main::y#4 8.782608695652174 (signed word) main::yw -(word) main::yw#0 50.5 +(word) main::yw#0 500.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2002.0 +(byte~) print_byte::$2 2002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 202.0 +(byte) print_byte::b#1 202.0 +(byte) print_byte::b#2 551.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 2002.0 +(byte) print_char::ch#1 2002.0 +(byte) print_char::ch#2 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#18 4.0 -(byte*) print_char_cursor#19 0.6666666666666666 -(byte*) print_char_cursor#24 1.3333333333333333 +(byte*) print_char_cursor#18 11002.0 +(byte*) print_char_cursor#19 1233.6666666666665 +(byte*) print_char_cursor#24 367.33333333333337 (byte*) print_line_cursor (byte*) print_screen (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 71.0 Initial phi equivalence classes [ main::y#4 main::y#1 ] @@ -3135,137 +3135,131 @@ SCREEN_REF: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ) always clobbers reg byte y +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ] -Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ) always clobbers reg byte y -Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a +Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ] -Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$10 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ) always clobbers reg byte a -Statement [18] (byte) main::ang_w#0 ← > (word~) main::$10 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ) always clobbers reg byte a reg byte y +Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [17] (word~) main::$10 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:53 [ main::ang_w#0 ] Removing always clobbered register reg byte y as potential for zp[1]:53 [ main::ang_w#0 ] Removing always clobbered register reg byte a as potential for zp[1]:54 [ diff::bb1#0 ] Removing always clobbered register reg byte y as potential for zp[1]:54 [ diff::bb1#0 ] -Statement [24] (word) main::diff_sum#1 ← (word) main::diff_sum#2 + (byte~) main::$12 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$13 ← (byte) main::ang_w#0 - *((byte*) main::screen_ref#2) [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ) always clobbers reg byte a reg byte y -Statement [26] *((byte*) main::screen#2) ← (byte~) main::$13 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ) always clobbers reg byte y -Statement [33] (word) print_word::w#0 ← (word) main::diff_sum#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:2::print_word:34 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_byte::b#1 print_char_cursor#19 ] ( main:2::print_word:34 [ print_byte::b#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] main:2::print_word:34::print_byte:39 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ) always clobbers reg byte a +Statement [24] (word) main::diff_sum#1 ← (word) main::diff_sum#2 + (byte~) main::$12 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a +Statement [25] (byte~) main::$13 ← (byte) main::ang_w#0 - *((byte*) main::screen_ref#2) [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] { } ) always clobbers reg byte a reg byte y +Statement [26] *((byte*) main::screen#2) ← (byte~) main::$13 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y +Statement [33] (word) print_word::w#0 ← (word) main::diff_sum#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] { { print_word::w#0 = main::diff_sum#1 } } ) always clobbers reg byte a +Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:34::print_byte:39 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] main:2::print_word:34::print_byte:39 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:34::print_byte:37::print_char:44 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] main:2::print_word:34::print_byte:39::print_char:44 [ print_byte::b#2 print_char_cursor#18 ] main:2::print_word:34::print_byte:37::print_char:47 [ print_word::w#0 print_char_cursor#18 ] main:2::print_word:34::print_byte:39::print_char:47 [ print_char_cursor#18 ] ) always clobbers reg byte y +Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:34::print_byte:39 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [50] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:34::print_byte:37::print_char:44 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:34::print_byte:39::print_char:44 [ print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:34::print_byte:37::print_char:47 [ print_word::w#0 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:34::print_byte:39::print_char:47 [ print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [54] (byte~) diff::$2 ← (byte) diff::bb1#0 - (byte) diff::bb2#0 [ diff::$2 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$2 ] ) always clobbers reg byte a -Statement [57] (byte~) diff::$4 ← (byte) diff::bb2#0 - (byte) diff::bb1#0 [ diff::$4 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$4 ] ) always clobbers reg byte a -Statement [58] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [59] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [61] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [62] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [65] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [54] (byte~) diff::$2 ← (byte) diff::bb1#0 - (byte) diff::bb2#0 [ diff::$2 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$2 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [57] (byte~) diff::$4 ← (byte) diff::bb2#0 - (byte) diff::bb1#0 [ diff::$4 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$4 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [58] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [59] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [61] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [67] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [68] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [69] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [71] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [72] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [76] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [67] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [69] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [76] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [77] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [81] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [82] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [87] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [88] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [92] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [93] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [94] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [95] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [96] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [99] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [100] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [104] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [77] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [87] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [93] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [94] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [95] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [96] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [99] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [100] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [104] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [106] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [106] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [107] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [107] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:65 [ init_font_hex::$0 ] -Statement [113] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [115] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [116] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [117] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [120] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ) always clobbers reg byte a reg byte y -Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$10 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ) always clobbers reg byte a -Statement [18] (byte) main::ang_w#0 ← > (word~) main::$10 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ) always clobbers reg byte a reg byte y -Statement [24] (word) main::diff_sum#1 ← (word) main::diff_sum#2 + (byte~) main::$12 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$13 ← (byte) main::ang_w#0 - *((byte*) main::screen_ref#2) [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ) always clobbers reg byte a reg byte y -Statement [26] *((byte*) main::screen#2) ← (byte~) main::$13 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ) always clobbers reg byte y -Statement [33] (word) print_word::w#0 ← (word) main::diff_sum#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:2::print_word:34 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_byte::b#1 print_char_cursor#19 ] ( main:2::print_word:34 [ print_byte::b#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] main:2::print_word:34::print_byte:39 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] main:2::print_word:34::print_byte:39 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:34::print_byte:37::print_char:44 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] main:2::print_word:34::print_byte:39::print_char:44 [ print_byte::b#2 print_char_cursor#18 ] main:2::print_word:34::print_byte:37::print_char:47 [ print_word::w#0 print_char_cursor#18 ] main:2::print_word:34::print_byte:39::print_char:47 [ print_char_cursor#18 ] ) always clobbers reg byte y -Statement [54] (byte~) diff::$2 ← (byte) diff::bb1#0 - (byte) diff::bb2#0 [ diff::$2 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$2 ] ) always clobbers reg byte a -Statement [57] (byte~) diff::$4 ← (byte) diff::bb2#0 - (byte) diff::bb1#0 [ diff::$4 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$4 ] ) always clobbers reg byte a -Statement [58] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [59] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [61] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [62] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [65] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [67] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [68] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [69] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [71] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [72] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [76] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [77] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [81] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [82] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [87] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [88] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [92] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [93] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [94] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [95] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [96] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [99] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [100] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [104] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [106] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [107] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [113] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [115] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [116] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [117] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [120] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [113] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [115] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [116] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [117] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [120] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y +Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y +Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::angle_w#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [17] (word~) main::$10 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::$10 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] ( main:2 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::bb1#0 diff::bb2#0 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a reg byte y +Statement [24] (word) main::diff_sum#1 ← (word) main::diff_sum#2 + (byte~) main::$12 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::ang_w#0 ] { } ) always clobbers reg byte a +Statement [25] (byte~) main::$13 ← (byte) main::ang_w#0 - *((byte*) main::screen_ref#2) [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 main::$13 ] { } ) always clobbers reg byte a reg byte y +Statement [26] *((byte*) main::screen#2) ← (byte~) main::$13 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] ( main:2 [ main::y#4 main::diff_sum#1 main::x#2 main::screen_ref#2 main::screen#2 ] { } ) always clobbers reg byte y +Statement [33] (word) print_word::w#0 ← (word) main::diff_sum#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] { { print_word::w#0 = main::diff_sum#1 } } ) always clobbers reg byte a +Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:34::print_byte:39 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:34::print_byte:37 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:34::print_byte:39 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [50] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:34::print_byte:37::print_char:44 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:34::print_byte:39::print_char:44 [ print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:34::print_byte:37::print_char:47 [ print_word::w#0 print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:34::print_byte:39::print_char:47 [ print_char_cursor#18 ] { { print_word::w#0 = main::diff_sum#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y +Statement [54] (byte~) diff::$2 ← (byte) diff::bb1#0 - (byte) diff::bb2#0 [ diff::$2 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$2 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [57] (byte~) diff::$4 ← (byte) diff::bb2#0 - (byte) diff::bb1#0 [ diff::$4 ] ( main:2::diff:21 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 main::ang_w#0 diff::$4 ] { { diff::bb1#0 = main::ang_w#0 } { diff::return#0 = diff::return#1 } } ) always clobbers reg byte a +Statement [58] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [59] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [61] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [69] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [76] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [77] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [87] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [93] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [94] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [95] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [96] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [99] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [100] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen_ref#2 main::diff_sum#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [104] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [106] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [107] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [113] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [115] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [116] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [117] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [120] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::y#4 main::y#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] : zp[2]:4 , @@ -3314,43 +3308,43 @@ Potential registers zp[1]:67 [ init_font_hex::$2 ] : zp[1]:67 , reg byte a , reg Potential registers zp[1]:68 [ init_font_hex::idx#3 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:24 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:25 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:27 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:20 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:15 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:17 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:63 [ atan2_16::$23 ] 2,002: zp[1]:64 [ atan2_16::$22 ] 1,710.04: zp[1]:19 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:47 [ atan2_16::return#2 ] 50: zp[2]:22 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:43 [ atan2_16::x#0 ] 2.72: zp[2]:45 [ atan2_16::y#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:37 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:66 [ init_font_hex::$1 ] 2,002: zp[1]:67 [ init_font_hex::$2 ] 1,151.6: zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:65 [ init_font_hex::$0 ] 202: zp[1]:68 [ init_font_hex::idx#3 ] 165.86: zp[2]:32 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:34 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [main] 202: zp[2]:49 [ main::angle_w#0 ] 202: zp[2]:51 [ main::$10 ] 202: zp[1]:57 [ main::$12 ] 202: zp[1]:58 [ main::$13 ] 161.6: zp[1]:3 [ main::x#2 main::x#1 ] 86.44: zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] 74.94: zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] 60.09: zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] 50.5: zp[2]:39 [ main::xw#0 ] 50.5: zp[2]:41 [ main::yw#0 ] 43.29: zp[1]:53 [ main::ang_w#0 ] 17.46: zp[1]:2 [ main::y#4 main::y#1 ] -Uplift Scope [diff] 202: zp[1]:56 [ diff::return#0 ] 53.5: zp[1]:55 [ diff::bb2#0 ] 43: zp[1]:14 [ diff::return#1 diff::$4 diff::$2 ] 35.67: zp[1]:54 [ diff::bb1#0 ] -Uplift Scope [print_byte] 10: zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:61 [ print_byte::$0 ] 4: zp[1]:62 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [] 6: zp[2]:12 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] -Uplift Scope [print_word] 2: zp[2]:59 [ print_word::w#0 ] +Uplift Scope [atan2_16] 286,666,670.58: zp[1]:24 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 206,000,008: zp[2]:25 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 173,333,338.67: zp[2]:27 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 75,248,103.76: zp[2]:20 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 26,909,340.68: zp[2]:15 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 22,737,342.67: zp[2]:17 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 20,000,002: zp[1]:63 [ atan2_16::$23 ] 20,000,002: zp[1]:64 [ atan2_16::$22 ] 17,083,335.04: zp[1]:19 [ atan2_16::i#2 atan2_16::i#1 ] 82,008.5: zp[2]:22 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2,002: zp[2]:47 [ atan2_16::return#2 ] 1,079.08: zp[2]:43 [ atan2_16::x#0 ] 1,025.12: zp[2]:45 [ atan2_16::y#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:37 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:66 [ init_font_hex::$1 ] 200,002: zp[1]:67 [ init_font_hex::$2 ] 115,001.6: zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:65 [ init_font_hex::$0 ] 20,002: zp[1]:68 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:32 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:34 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [diff] 47,005: zp[1]:14 [ diff::return#1 diff::$4 diff::$2 ] 15,502: zp[1]:55 [ diff::bb2#0 ] 10,334.67: zp[1]:54 [ diff::bb1#0 ] 2,002: zp[1]:56 [ diff::return#0 ] +Uplift Scope [print_char] 16,007: zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [main] 2,002: zp[2]:49 [ main::angle_w#0 ] 2,002: zp[2]:51 [ main::$10 ] 2,002: zp[1]:57 [ main::$12 ] 2,002: zp[1]:58 [ main::$13 ] 1,601.6: zp[1]:3 [ main::x#2 main::x#1 ] 838.65: zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] 724.94: zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] 577.09: zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] 500.5: zp[2]:39 [ main::xw#0 ] 500.5: zp[2]:41 [ main::yw#0 ] 429: zp[1]:53 [ main::ang_w#0 ] 160.28: zp[1]:2 [ main::y#4 main::y#1 ] +Uplift Scope [] 12,603: zp[2]:12 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] +Uplift Scope [print_byte] 2,002: zp[1]:61 [ print_byte::$0 ] 2,002: zp[1]:62 [ print_byte::$2 ] 955: zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 71: zp[2]:59 [ print_word::w#0 ] Uplift Scope [RADIX] -Uplifting [atan2_16] best 1158649 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:25 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:27 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:20 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:15 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:17 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:47 [ atan2_16::return#2 ] zp[2]:22 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:43 [ atan2_16::x#0 ] zp[2]:45 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1158649 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:25 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:27 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:20 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:15 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:17 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:22 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:47 [ atan2_16::return#2 ] zp[2]:43 [ atan2_16::x#0 ] zp[2]:45 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [init_font_hex] best 1139649 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:65 [ init_font_hex::$0 ] zp[1]:68 [ init_font_hex::idx#3 ] zp[2]:32 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:34 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 1139649 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:65 [ init_font_hex::$0 ] zp[1]:68 [ init_font_hex::idx#3 ] zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:32 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:34 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [main] best 1137949 combination zp[2]:49 [ main::angle_w#0 ] zp[2]:51 [ main::$10 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] zp[2]:39 [ main::xw#0 ] zp[2]:41 [ main::yw#0 ] reg byte x [ main::ang_w#0 ] zp[1]:2 [ main::y#4 main::y#1 ] +Uplifting [diff] best 1138145 combination reg byte a [ diff::return#1 diff::$4 diff::$2 ] reg byte a [ diff::bb2#0 ] reg byte x [ diff::bb1#0 ] reg byte a [ diff::return#0 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [diff] best 1136445 combination reg byte a [ diff::return#0 ] reg byte a [ diff::bb2#0 ] reg byte a [ diff::return#1 diff::$4 diff::$2 ] reg byte x [ diff::bb1#0 ] +Uplifting [print_char] best 1138136 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [main] best 1136236 combination zp[2]:49 [ main::angle_w#0 ] zp[2]:51 [ main::$10 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen_ref#2 main::screen_ref#5 main::screen_ref#1 ] zp[2]:8 [ main::screen#2 main::screen#5 main::screen#1 ] zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] zp[2]:39 [ main::xw#0 ] zp[2]:41 [ main::yw#0 ] reg byte x [ main::ang_w#0 ] zp[1]:2 [ main::y#4 main::y#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [print_byte] best 1136431 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 1136422 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [] best 1136422 combination zp[2]:12 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] -Uplifting [print_word] best 1136422 combination zp[2]:59 [ print_word::w#0 ] -Uplifting [RADIX] best 1136422 combination +Uplifting [] best 1136236 combination zp[2]:12 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] +Uplifting [print_byte] best 1136218 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 1136218 combination zp[2]:59 [ print_word::w#0 ] +Uplifting [RADIX] best 1136218 combination Attempting to uplift remaining variables inzp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Uplifting [init_font_hex] best 1136422 combination zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] +Uplifting [init_font_hex] best 1136218 combination zp[1]:38 [ init_font_hex::idx#5 init_font_hex::idx#2 ] Attempting to uplift remaining variables inzp[1]:65 [ init_font_hex::$0 ] -Uplifting [init_font_hex] best 1136422 combination zp[1]:65 [ init_font_hex::$0 ] +Uplifting [init_font_hex] best 1136218 combination zp[1]:65 [ init_font_hex::$0 ] Attempting to uplift remaining variables inzp[1]:68 [ init_font_hex::idx#3 ] -Uplifting [init_font_hex] best 1135822 combination reg byte y [ init_font_hex::idx#3 ] +Uplifting [init_font_hex] best 1135618 combination reg byte y [ init_font_hex::idx#3 ] Attempting to uplift remaining variables inzp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Uplifting [init_font_hex] best 1135822 combination zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] -Uplifting [main] best 1135822 combination zp[1]:3 [ main::x#2 main::x#1 ] +Uplifting [init_font_hex] best 1135618 combination zp[1]:36 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Attempting to uplift remaining variables inzp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplifting [init_font_hex] best 1135822 combination zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 1135618 combination zp[1]:31 [ init_font_hex::c#6 init_font_hex::c#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] +Uplifting [main] best 1135618 combination zp[1]:3 [ main::x#2 main::x#1 ] Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ] -Uplifting [main] best 1135822 combination zp[1]:2 [ main::y#4 main::y#1 ] +Uplifting [main] best 1135618 combination zp[1]:2 [ main::y#4 main::y#1 ] Coalescing zero page register [ zp[2]:6 [ main::diff_sum#2 main::diff_sum#7 main::diff_sum#1 ] ] with [ zp[2]:59 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:22 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] - score: 1 Coalescing zero page register [ zp[2]:39 [ main::xw#0 ] ] with [ zp[2]:43 [ atan2_16::x#0 ] ] - score: 1 @@ -3514,8 +3508,7 @@ main: { inc.z __10+1 !: // [18] (byte) main::ang_w#0 ← > (word~) main::$10 -- vbuxx=_hi_vwuz1 - lda.z __10+1 - tax + ldx.z __10+1 // [19] (byte) diff::bb1#0 ← (byte) main::ang_w#0 // [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) -- vbuaa=_deref_pbuz1 ldy #0 @@ -3588,8 +3581,7 @@ main: { print_word: { .label w = 4 // [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [37] call print_byte // [41] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3604,8 +3596,7 @@ print_word: { // print_word::@1 __b1: // [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [39] call print_byte // [41] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -4347,9 +4338,9 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction __bbegin: Removing instruction __b3: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [282] beq __b12 to bne -Fixing long branch [176] bpl __b1 to bmi -Fixing long branch [188] bpl __b4 to bmi +Fixing long branch [279] beq __b12 to bne +Fixing long branch [173] bpl __b1 to bmi +Fixing long branch [185] bpl __b4 to bmi FINAL SYMBOL TABLE (label) @1 @@ -4373,10 +4364,10 @@ FINAL SYMBOL TABLE .byte round(256*atan2(y, x)/PI/2) }} (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:14 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:17 4.0 +(signed word~) atan2_16::$2 zp[2]:14 20002.0 +(byte~) atan2_16::$22 reg byte a 2.0000002E7 +(byte~) atan2_16::$23 reg byte a 2.0000002E7 +(signed word~) atan2_16::$7 zp[2]:17 20002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -4400,73 +4391,73 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:10 3.0 -(word) atan2_16::angle#11 angle zp[2]:10 4.0 -(word) atan2_16::angle#12 angle zp[2]:10 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:10 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:10 2002.0 -(word) atan2_16::angle#3 angle zp[2]:10 2002.0 -(word) atan2_16::angle#4 angle zp[2]:10 4.0 -(word) atan2_16::angle#5 angle zp[2]:10 4.0 -(word) atan2_16::angle#6 angle zp[2]:10 2004.0 +(word) atan2_16::angle#1 angle zp[2]:10 15001.5 +(word) atan2_16::angle#11 angle zp[2]:10 20002.0 +(word) atan2_16::angle#12 angle zp[2]:10 1904762.0952380951 +(word) atan2_16::angle#13 angle zp[2]:10 1.3333334666666666E7 +(word) atan2_16::angle#2 angle zp[2]:10 2.0000002E7 +(word) atan2_16::angle#3 angle zp[2]:10 2.0000002E7 +(word) atan2_16::angle#4 angle zp[2]:10 20002.0 +(word) atan2_16::angle#5 angle zp[2]:10 20002.0 +(word) atan2_16::angle#6 angle zp[2]:10 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.50000015E7 +(byte) atan2_16::i#2 reg byte x 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:10 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:10 202.0 +(word) atan2_16::return#0 return zp[2]:10 7001.0 +(word) atan2_16::return#2 return zp[2]:10 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.00000002E8 +(byte) atan2_16::shift#2 reg byte y 8.000000125E7 +(byte) atan2_16::shift#5 reg byte y 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:23 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:23 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:12 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:12 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:12 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:12 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:12 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:12 6.6666667333333336E7 +(signed word) atan2_16::xd#10 xd zp[2]:12 1.0000001E7 +(signed word) atan2_16::xd#2 xd zp[2]:12 1.0000001E7 +(signed word) atan2_16::xd#3 xd zp[2]:12 7.666666833333333E7 +(signed word) atan2_16::xd#5 xd zp[2]:12 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:17 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:17 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:17 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:17 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:17 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:17 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:17 30003.0 +(signed word) atan2_16::xi#1 xi zp[2]:17 5000000.5 +(signed word) atan2_16::xi#13 xi zp[2]:17 20002.0 +(signed word) atan2_16::xi#2 xi zp[2]:17 5000000.5 +(signed word) atan2_16::xi#3 xi zp[2]:17 2667333.6666666665 +(signed word) atan2_16::xi#8 xi zp[2]:17 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:25 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:25 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:19 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:19 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:19 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:19 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:19 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:19 1.00000001E8 +(signed word) atan2_16::yd#10 yd zp[2]:19 2.0000002E7 +(signed word) atan2_16::yd#2 yd zp[2]:19 2.0000002E7 +(signed word) atan2_16::yd#3 yd zp[2]:19 4.6000001E7 +(signed word) atan2_16::yd#5 yd zp[2]:19 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:14 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:14 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:14 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:14 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:14 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:14 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:14 6000.6 +(signed word) atan2_16::yi#1 yi zp[2]:14 6666667.333333333 +(signed word) atan2_16::yi#16 yi zp[2]:14 20002.0 +(signed word) atan2_16::yi#2 yi zp[2]:14 6666667.333333333 +(signed word) atan2_16::yi#3 yi zp[2]:14 3530000.4117647056 +(signed word) atan2_16::yi#8 yi zp[2]:14 1.0000001E7 (byte()) diff((byte) diff::bb1 , (byte) diff::bb2) -(byte~) diff::$2 reg byte a 4.0 -(byte~) diff::$4 reg byte a 4.0 +(byte~) diff::$2 reg byte a 20002.0 +(byte~) diff::$4 reg byte a 20002.0 (label) diff::@1 (label) diff::@2 (label) diff::@3 (label) diff::@return (byte) diff::bb1 -(byte) diff::bb1#0 reg byte x 35.66666666666666 +(byte) diff::bb1#0 reg byte x 10334.666666666666 (byte) diff::bb2 -(byte) diff::bb2#0 reg byte a 53.5 +(byte) diff::bb2#0 reg byte a 15502.0 (byte) diff::return -(byte) diff::return#0 reg byte a 202.0 -(byte) diff::return#1 reg byte a 34.99999999999999 +(byte) diff::return#0 reg byte a 2002.0 +(byte) diff::return#1 reg byte a 7001.0 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:27 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:27 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -4474,32 +4465,32 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:16 16.5 -(byte) init_font_hex::c#6 c zp[1]:16 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:16 1501.5 +(byte) init_font_hex::c#6 c zp[1]:16 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:21 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:21 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:21 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:21 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:17 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:17 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:17 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:17 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:17 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:17 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:22 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:22 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:22 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:22 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:14 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:14 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:14 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:14 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:19 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:19 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:19 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:19 9230.999999999998 (void()) main() -(word~) main::$10 zp[2]:10 202.0 -(byte~) main::$12 reg byte a 202.0 -(byte~) main::$13 reg byte a 202.0 +(word~) main::$10 zp[2]:10 2002.0 +(byte~) main::$12 reg byte a 2002.0 +(byte~) main::$13 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -4509,56 +4500,56 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@8 (byte) main::ang_w -(byte) main::ang_w#0 reg byte x 43.285714285714285 +(byte) main::ang_w#0 reg byte x 429.0 (word) main::angle_w -(word) main::angle_w#0 angle_w zp[2]:10 202.0 +(word) main::angle_w#0 angle_w zp[2]:10 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (word) main::diff_sum -(word) main::diff_sum#1 diff_sum zp[2]:4 23.888888888888886 -(word) main::diff_sum#2 diff_sum zp[2]:4 14.2 -(word) main::diff_sum#7 diff_sum zp[2]:4 22.0 +(word) main::diff_sum#1 diff_sum zp[2]:4 234.8888888888889 +(word) main::diff_sum#2 diff_sum zp[2]:4 140.2 +(word) main::diff_sum#7 diff_sum zp[2]:4 202.0 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:6 35.5 -(byte*) main::screen#2 screen zp[2]:6 17.444444444444443 -(byte*) main::screen#5 screen zp[2]:6 22.0 +(byte*) main::screen#1 screen zp[2]:6 350.5 +(byte*) main::screen#2 screen zp[2]:6 172.44444444444446 +(byte*) main::screen#5 screen zp[2]:6 202.0 (byte*) main::screen_ref -(byte*) main::screen_ref#1 screen_ref zp[2]:8 42.599999999999994 -(byte*) main::screen_ref#2 screen_ref zp[2]:8 21.842105263157897 -(byte*) main::screen_ref#5 screen_ref zp[2]:8 22.0 +(byte*) main::screen_ref#1 screen_ref zp[2]:8 420.59999999999997 +(byte*) main::screen_ref#2 screen_ref zp[2]:8 216.05263157894734 +(byte*) main::screen_ref#5 screen_ref zp[2]:8 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 10.1 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 100.1 (signed word) main::xw -(word) main::xw#0 xw zp[2]:23 50.5 +(word) main::xw#0 xw zp[2]:23 500.5 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 0.9565217391304348 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 8.782608695652174 (signed word) main::yw -(word) main::yw#0 yw zp[2]:25 50.5 +(word) main::yw#0 yw zp[2]:25 500.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 551.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#18 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 0.6666666666666666 -(byte*) print_char_cursor#24 print_char_cursor zp[2]:8 1.3333333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:8 11002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 1233.6666666666665 +(byte*) print_char_cursor#24 print_char_cursor zp[2]:8 367.33333333333337 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -4566,7 +4557,7 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 71.0 zp[1]:2 [ main::y#4 main::y#1 ] zp[1]:3 [ main::x#2 main::x#1 ] @@ -4606,7 +4597,7 @@ reg byte y [ init_font_hex::idx#3 ] FINAL ASSEMBLER -Score: 1044307 +Score: 1044103 // File Comments // Find atan2(x, y) using the CORDIC method @@ -4725,8 +4716,7 @@ main: { !: // ang_w = >(angle_w+0x0080) // [18] (byte) main::ang_w#0 ← > (word~) main::$10 -- vbuxx=_hi_vwuz1 - lda.z __10+1 - tax + ldx.z __10+1 // diff(ang_w, *screen_ref) // [19] (byte) diff::bb1#0 ← (byte) main::ang_w#0 // [20] (byte) diff::bb2#0 ← *((byte*) main::screen_ref#2) -- vbuaa=_deref_pbuz1 @@ -4802,8 +4792,7 @@ print_word: { .label w = 4 // print_byte(>w) // [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [37] call print_byte // [41] phi from print_word to print_byte [phi:print_word->print_byte] // [41] phi (byte*) print_char_cursor#24 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1 @@ -4816,8 +4805,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [41] phi (byte*) print_char_cursor#24 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/cordic-atan2-16-ref.sym b/src/test/ref/cordic-atan2-16-ref.sym index 9134de764..175f13de9 100644 --- a/src/test/ref/cordic-atan2-16-ref.sym +++ b/src/test/ref/cordic-atan2-16-ref.sym @@ -19,10 +19,10 @@ .byte round(256*atan2(y, x)/PI/2) }} (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:14 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:17 4.0 +(signed word~) atan2_16::$2 zp[2]:14 20002.0 +(byte~) atan2_16::$22 reg byte a 2.0000002E7 +(byte~) atan2_16::$23 reg byte a 2.0000002E7 +(signed word~) atan2_16::$7 zp[2]:17 20002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -46,73 +46,73 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:10 3.0 -(word) atan2_16::angle#11 angle zp[2]:10 4.0 -(word) atan2_16::angle#12 angle zp[2]:10 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:10 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:10 2002.0 -(word) atan2_16::angle#3 angle zp[2]:10 2002.0 -(word) atan2_16::angle#4 angle zp[2]:10 4.0 -(word) atan2_16::angle#5 angle zp[2]:10 4.0 -(word) atan2_16::angle#6 angle zp[2]:10 2004.0 +(word) atan2_16::angle#1 angle zp[2]:10 15001.5 +(word) atan2_16::angle#11 angle zp[2]:10 20002.0 +(word) atan2_16::angle#12 angle zp[2]:10 1904762.0952380951 +(word) atan2_16::angle#13 angle zp[2]:10 1.3333334666666666E7 +(word) atan2_16::angle#2 angle zp[2]:10 2.0000002E7 +(word) atan2_16::angle#3 angle zp[2]:10 2.0000002E7 +(word) atan2_16::angle#4 angle zp[2]:10 20002.0 +(word) atan2_16::angle#5 angle zp[2]:10 20002.0 +(word) atan2_16::angle#6 angle zp[2]:10 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.50000015E7 +(byte) atan2_16::i#2 reg byte x 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:10 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:10 202.0 +(word) atan2_16::return#0 return zp[2]:10 7001.0 +(word) atan2_16::return#2 return zp[2]:10 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.00000002E8 +(byte) atan2_16::shift#2 reg byte y 8.000000125E7 +(byte) atan2_16::shift#5 reg byte y 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:23 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:23 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:12 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:12 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:12 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:12 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:12 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:12 6.6666667333333336E7 +(signed word) atan2_16::xd#10 xd zp[2]:12 1.0000001E7 +(signed word) atan2_16::xd#2 xd zp[2]:12 1.0000001E7 +(signed word) atan2_16::xd#3 xd zp[2]:12 7.666666833333333E7 +(signed word) atan2_16::xd#5 xd zp[2]:12 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:17 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:17 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:17 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:17 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:17 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:17 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:17 30003.0 +(signed word) atan2_16::xi#1 xi zp[2]:17 5000000.5 +(signed word) atan2_16::xi#13 xi zp[2]:17 20002.0 +(signed word) atan2_16::xi#2 xi zp[2]:17 5000000.5 +(signed word) atan2_16::xi#3 xi zp[2]:17 2667333.6666666665 +(signed word) atan2_16::xi#8 xi zp[2]:17 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:25 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:25 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:19 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:19 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:19 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:19 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:19 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:19 1.00000001E8 +(signed word) atan2_16::yd#10 yd zp[2]:19 2.0000002E7 +(signed word) atan2_16::yd#2 yd zp[2]:19 2.0000002E7 +(signed word) atan2_16::yd#3 yd zp[2]:19 4.6000001E7 +(signed word) atan2_16::yd#5 yd zp[2]:19 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:14 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:14 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:14 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:14 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:14 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:14 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:14 6000.6 +(signed word) atan2_16::yi#1 yi zp[2]:14 6666667.333333333 +(signed word) atan2_16::yi#16 yi zp[2]:14 20002.0 +(signed word) atan2_16::yi#2 yi zp[2]:14 6666667.333333333 +(signed word) atan2_16::yi#3 yi zp[2]:14 3530000.4117647056 +(signed word) atan2_16::yi#8 yi zp[2]:14 1.0000001E7 (byte()) diff((byte) diff::bb1 , (byte) diff::bb2) -(byte~) diff::$2 reg byte a 4.0 -(byte~) diff::$4 reg byte a 4.0 +(byte~) diff::$2 reg byte a 20002.0 +(byte~) diff::$4 reg byte a 20002.0 (label) diff::@1 (label) diff::@2 (label) diff::@3 (label) diff::@return (byte) diff::bb1 -(byte) diff::bb1#0 reg byte x 35.66666666666666 +(byte) diff::bb1#0 reg byte x 10334.666666666666 (byte) diff::bb2 -(byte) diff::bb2#0 reg byte a 53.5 +(byte) diff::bb2#0 reg byte a 15502.0 (byte) diff::return -(byte) diff::return#0 reg byte a 202.0 -(byte) diff::return#1 reg byte a 34.99999999999999 +(byte) diff::return#0 reg byte a 2002.0 +(byte) diff::return#1 reg byte a 7001.0 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:27 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:27 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -120,32 +120,32 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:16 16.5 -(byte) init_font_hex::c#6 c zp[1]:16 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:16 1501.5 +(byte) init_font_hex::c#6 c zp[1]:16 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:21 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:21 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:21 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:21 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:17 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:17 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:17 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:17 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:17 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:17 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:22 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:22 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:22 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:22 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:14 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:14 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:14 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:14 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:19 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:19 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:19 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:19 9230.999999999998 (void()) main() -(word~) main::$10 zp[2]:10 202.0 -(byte~) main::$12 reg byte a 202.0 -(byte~) main::$13 reg byte a 202.0 +(word~) main::$10 zp[2]:10 2002.0 +(byte~) main::$12 reg byte a 2002.0 +(byte~) main::$13 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -155,56 +155,56 @@ (label) main::@7 (label) main::@8 (byte) main::ang_w -(byte) main::ang_w#0 reg byte x 43.285714285714285 +(byte) main::ang_w#0 reg byte x 429.0 (word) main::angle_w -(word) main::angle_w#0 angle_w zp[2]:10 202.0 +(word) main::angle_w#0 angle_w zp[2]:10 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (word) main::diff_sum -(word) main::diff_sum#1 diff_sum zp[2]:4 23.888888888888886 -(word) main::diff_sum#2 diff_sum zp[2]:4 14.2 -(word) main::diff_sum#7 diff_sum zp[2]:4 22.0 +(word) main::diff_sum#1 diff_sum zp[2]:4 234.8888888888889 +(word) main::diff_sum#2 diff_sum zp[2]:4 140.2 +(word) main::diff_sum#7 diff_sum zp[2]:4 202.0 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:6 35.5 -(byte*) main::screen#2 screen zp[2]:6 17.444444444444443 -(byte*) main::screen#5 screen zp[2]:6 22.0 +(byte*) main::screen#1 screen zp[2]:6 350.5 +(byte*) main::screen#2 screen zp[2]:6 172.44444444444446 +(byte*) main::screen#5 screen zp[2]:6 202.0 (byte*) main::screen_ref -(byte*) main::screen_ref#1 screen_ref zp[2]:8 42.599999999999994 -(byte*) main::screen_ref#2 screen_ref zp[2]:8 21.842105263157897 -(byte*) main::screen_ref#5 screen_ref zp[2]:8 22.0 +(byte*) main::screen_ref#1 screen_ref zp[2]:8 420.59999999999997 +(byte*) main::screen_ref#2 screen_ref zp[2]:8 216.05263157894734 +(byte*) main::screen_ref#5 screen_ref zp[2]:8 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 10.1 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 100.1 (signed word) main::xw -(word) main::xw#0 xw zp[2]:23 50.5 +(word) main::xw#0 xw zp[2]:23 500.5 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 0.9565217391304348 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 8.782608695652174 (signed word) main::yw -(word) main::yw#0 yw zp[2]:25 50.5 +(word) main::yw#0 yw zp[2]:25 500.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 551.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#18 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 0.6666666666666666 -(byte*) print_char_cursor#24 print_char_cursor zp[2]:8 1.3333333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:8 11002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 1233.6666666666665 +(byte*) print_char_cursor#24 print_char_cursor zp[2]:8 367.33333333333337 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -212,7 +212,7 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 71.0 zp[1]:2 [ main::y#4 main::y#1 ] zp[1]:3 [ main::x#2 main::x#1 ] diff --git a/src/test/ref/cordic-atan2-16.log b/src/test/ref/cordic-atan2-16.log index f22d15d66..f4342c245 100644 --- a/src/test/ref/cordic-atan2-16.log +++ b/src/test/ref/cordic-atan2-16.log @@ -892,75 +892,75 @@ Inversing boolean not [68] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 Inversing boolean not [79] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [78] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 Inversing boolean not [103] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [102] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (word~) main::$3 = (word~) main::$14 -Alias (signed word) main::xw#0 = (signed word~) main::$4 -Alias (word~) main::$6 = (word~) main::$15 -Alias (signed word) main::yw#0 = (signed word~) main::$7 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (byte*) main::screen#2 = (byte*) main::screen#3 -Alias (signed byte) main::x#2 = (signed byte) main::x#3 -Alias (signed byte) main::y#2 = (signed byte) main::y#5 (signed byte) main::y#3 -Alias (word) main::angle_w#0 = (word~) main::$8 -Alias (byte) main::ang_w#0 = (byte~) main::$10 -Alias (byte*) main::screen#1 = (byte*) main::screen#5 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias main::$3 = main::$14 +Alias main::xw#0 = main::$4 +Alias main::$6 = main::$15 +Alias main::yw#0 = main::$7 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias main::screen#2 = main::screen#3 +Alias main::x#2 = main::x#3 +Alias main::y#2 = main::y#5 main::y#3 +Alias main::angle_w#0 = main::$8 +Alias main::ang_w#0 = main::$10 +Alias main::screen#1 = main::screen#5 Successful SSA optimization Pass2AliasElimination -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -1449,110 +1449,110 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 20002.0 +(byte~) atan2_16::$22 2.0000002E7 +(byte~) atan2_16::$23 2.0000002E7 +(signed word~) atan2_16::$7 20002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 15001.5 +(word) atan2_16::angle#11 20002.0 +(word) atan2_16::angle#12 1904762.0952380951 +(word) atan2_16::angle#13 1.3333334666666666E7 +(word) atan2_16::angle#2 2.0000002E7 +(word) atan2_16::angle#3 2.0000002E7 +(word) atan2_16::angle#4 20002.0 +(word) atan2_16::angle#5 20002.0 +(word) atan2_16::angle#6 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.50000015E7 +(byte) atan2_16::i#2 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 7001.0 +(word) atan2_16::return#2 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.00000002E8 +(byte) atan2_16::shift#2 8.000000125E7 +(byte) atan2_16::shift#5 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.6666667333333336E7 +(signed word) atan2_16::xd#10 1.0000001E7 +(signed word) atan2_16::xd#2 1.0000001E7 +(signed word) atan2_16::xd#3 7.666666833333333E7 +(signed word) atan2_16::xd#5 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 30003.0 +(signed word) atan2_16::xi#1 5000000.5 +(signed word) atan2_16::xi#13 20002.0 +(signed word) atan2_16::xi#2 5000000.5 +(signed word) atan2_16::xi#3 2667333.6666666665 +(signed word) atan2_16::xi#8 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.00000001E8 +(signed word) atan2_16::yd#10 2.0000002E7 +(signed word) atan2_16::yd#2 2.0000002E7 +(signed word) atan2_16::yd#3 4.6000001E7 +(signed word) atan2_16::yd#5 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 6000.6 +(signed word) atan2_16::yi#1 6666667.333333333 +(signed word) atan2_16::yi#16 20002.0 +(signed word) atan2_16::yi#2 6666667.333333333 +(signed word) atan2_16::yi#3 3530000.4117647056 +(signed word) atan2_16::yi#8 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() -(word~) main::$9 202.0 +(word~) main::$9 2002.0 (byte) main::ang_w -(byte) main::ang_w#0 202.0 +(byte) main::ang_w#0 2002.0 (word) main::angle_w -(word) main::angle_w#0 202.0 +(word) main::angle_w#0 2002.0 (byte*) main::screen -(byte*) main::screen#1 42.599999999999994 -(byte*) main::screen#2 28.545454545454547 -(byte*) main::screen#4 22.0 +(byte*) main::screen#1 420.59999999999997 +(byte*) main::screen#2 282.1818181818182 +(byte*) main::screen#4 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 151.5 -(signed byte) main::x#2 16.833333333333332 +(signed byte) main::x#1 1501.5 +(signed byte) main::x#2 166.83333333333334 (signed word) main::xw -(word) main::xw#0 50.5 +(word) main::xw#0 500.5 (signed byte) main::y -(signed byte) main::y#1 16.5 -(signed byte) main::y#4 1.4666666666666666 +(signed byte) main::y#1 151.5 +(signed byte) main::y#4 13.466666666666667 (signed word) main::yw -(word) main::yw#0 50.5 +(word) main::yw#0 500.5 Initial phi equivalence classes [ main::y#4 main::y#1 ] @@ -2331,109 +2331,107 @@ CORDIC_ATAN2_ANGLES_16: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ) always clobbers reg byte y +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ] -Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ) always clobbers reg byte y -Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a +Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ] -Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$9 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ) always clobbers reg byte a -Statement [18] (byte) main::ang_w#0 ← > (word~) main::$9 [ main::y#4 main::x#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [19] *((byte*) main::screen#2) ← (byte) main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] ) always clobbers reg byte y -Statement [26] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [27] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [29] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [30] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [33] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$9 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::$9 ] { } ) always clobbers reg byte a +Statement [19] *((byte*) main::screen#2) ← (byte) main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y +Statement [26] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [29] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [30] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [33] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [35] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [36] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [37] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [40] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [44] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [35] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [36] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [37] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [40] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [44] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [45] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [49] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [50] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [52] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [53] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [54] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [55] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [56] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [60] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [61] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [62] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [63] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [64] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [65] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [67] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [68] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [72] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [45] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [49] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [50] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [52] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [53] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [54] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [55] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [56] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [60] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [61] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [64] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [74] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [74] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:29 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [75] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [75] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:47 [ init_font_hex::$0 ] -Statement [81] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [83] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [84] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [85] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [88] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ) always clobbers reg byte a reg byte y -Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ) always clobbers reg byte a -Statement [17] (word~) main::$9 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ) always clobbers reg byte a -Statement [18] (byte) main::ang_w#0 ← > (word~) main::$9 [ main::y#4 main::x#2 main::screen#2 main::ang_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::ang_w#0 ] ) always clobbers reg byte a -Statement [19] *((byte*) main::screen#2) ← (byte) main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] ) always clobbers reg byte y -Statement [26] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [27] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [29] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [30] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [33] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [35] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [36] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [37] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [40] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [44] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [45] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [49] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [50] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [52] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [53] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [54] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [55] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [56] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [60] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [61] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [62] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [63] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [64] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [65] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [67] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [68] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [72] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [75] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [81] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [83] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [84] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [85] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [88] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [81] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [83] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [84] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [85] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [88] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] (word) main::xw#0 ← (byte)(signed byte) main::x#2 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y +Statement [11] (word) main::yw#0 ← (byte)(signed byte) main::y#4 w= (byte) 0 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::xw#0 main::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a reg byte y +Statement [12] (signed word) atan2_16::x#0 ← (signed word)(word) main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [13] (signed word) atan2_16::y#0 ← (signed word)(word) main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [15] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [16] (word) main::angle_w#0 ← (word) atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$9 ← (word) main::angle_w#0 + (byte) $80 [ main::y#4 main::x#2 main::screen#2 main::$9 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 main::$9 ] { } ) always clobbers reg byte a +Statement [19] *((byte*) main::screen#2) ← (byte) main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y +Statement [26] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [29] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [30] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [33] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [35] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [36] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [37] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [40] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [44] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [49] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [50] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [52] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [53] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [54] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [55] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [56] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [60] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [61] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [64] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::atan2_16:14 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [75] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [81] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [83] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [84] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [85] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [88] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::y#4 main::y#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] : zp[2]:4 , @@ -2468,14 +2466,14 @@ Potential registers zp[1]:49 [ init_font_hex::$2 ] : zp[1]:49 , reg byte a , reg Potential registers zp[1]:50 [ init_font_hex::idx#3 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:15 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:16 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:18 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:11 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:6 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:8 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:45 [ atan2_16::$23 ] 2,002: zp[1]:46 [ atan2_16::$22 ] 1,710.04: zp[1]:10 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:38 [ atan2_16::return#2 ] 50: zp[2]:13 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:34 [ atan2_16::x#0 ] 2.72: zp[2]:36 [ atan2_16::y#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:28 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:48 [ init_font_hex::$1 ] 2,002: zp[1]:49 [ init_font_hex::$2 ] 1,151.6: zp[1]:29 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:47 [ init_font_hex::$0 ] 202: zp[1]:50 [ init_font_hex::idx#3 ] 165.86: zp[2]:23 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:25 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:20 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [main] 202: zp[2]:40 [ main::angle_w#0 ] 202: zp[2]:42 [ main::$9 ] 202: zp[1]:44 [ main::ang_w#0 ] 168.33: zp[1]:3 [ main::x#2 main::x#1 ] 93.15: zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] 50.5: zp[2]:30 [ main::xw#0 ] 50.5: zp[2]:32 [ main::yw#0 ] 17.97: zp[1]:2 [ main::y#4 main::y#1 ] +Uplift Scope [atan2_16] 286,666,670.58: zp[1]:15 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 206,000,008: zp[2]:16 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 173,333,338.67: zp[2]:18 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 75,248,103.76: zp[2]:11 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 26,909,340.68: zp[2]:6 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 22,737,342.67: zp[2]:8 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 20,000,002: zp[1]:45 [ atan2_16::$23 ] 20,000,002: zp[1]:46 [ atan2_16::$22 ] 17,083,335.04: zp[1]:10 [ atan2_16::i#2 atan2_16::i#1 ] 82,008.5: zp[2]:13 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2,002: zp[2]:38 [ atan2_16::return#2 ] 1,079.08: zp[2]:34 [ atan2_16::x#0 ] 1,025.12: zp[2]:36 [ atan2_16::y#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:28 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:48 [ init_font_hex::$1 ] 200,002: zp[1]:49 [ init_font_hex::$2 ] 115,001.6: zp[1]:29 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:47 [ init_font_hex::$0 ] 20,002: zp[1]:50 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:23 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:25 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:20 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [main] 2,002: zp[2]:40 [ main::angle_w#0 ] 2,002: zp[2]:42 [ main::$9 ] 2,002: zp[1]:44 [ main::ang_w#0 ] 1,668.33: zp[1]:3 [ main::x#2 main::x#1 ] 904.78: zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] 500.5: zp[2]:30 [ main::xw#0 ] 500.5: zp[2]:32 [ main::yw#0 ] 164.97: zp[1]:2 [ main::y#4 main::y#1 ] Uplift Scope [] -Uplifting [atan2_16] best 1149809 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:16 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:18 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:11 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:6 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:8 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:38 [ atan2_16::return#2 ] zp[2]:13 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:34 [ atan2_16::x#0 ] zp[2]:36 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1149809 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:16 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:18 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:11 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:6 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:8 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:13 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:38 [ atan2_16::return#2 ] zp[2]:34 [ atan2_16::x#0 ] zp[2]:36 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [init_font_hex] best 1130809 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:29 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:47 [ init_font_hex::$0 ] zp[1]:50 [ init_font_hex::idx#3 ] zp[2]:23 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:25 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:20 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 1130809 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:29 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:47 [ init_font_hex::$0 ] zp[1]:50 [ init_font_hex::idx#3 ] zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:23 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:25 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:20 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. Uplifting [main] best 1130209 combination zp[2]:40 [ main::angle_w#0 ] zp[2]:42 [ main::$9 ] reg byte a [ main::ang_w#0 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] zp[2]:30 [ main::xw#0 ] zp[2]:32 [ main::yw#0 ] zp[1]:2 [ main::y#4 main::y#1 ] Uplifting [] best 1130209 combination @@ -2485,14 +2483,14 @@ Attempting to uplift remaining variables inzp[1]:47 [ init_font_hex::$0 ] Uplifting [init_font_hex] best 1130209 combination zp[1]:47 [ init_font_hex::$0 ] Attempting to uplift remaining variables inzp[1]:50 [ init_font_hex::idx#3 ] Uplifting [init_font_hex] best 1129609 combination reg byte y [ init_font_hex::idx#3 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] -Uplifting [main] best 1129609 combination zp[1]:3 [ main::x#2 main::x#1 ] Attempting to uplift remaining variables inzp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Uplifting [init_font_hex] best 1129609 combination zp[1]:27 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ] -Uplifting [main] best 1129609 combination zp[1]:2 [ main::y#4 main::y#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] +Uplifting [main] best 1129609 combination zp[1]:3 [ main::x#2 main::x#1 ] Attempting to uplift remaining variables inzp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] Uplifting [init_font_hex] best 1129609 combination zp[1]:22 [ init_font_hex::c#6 init_font_hex::c#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ] +Uplifting [main] best 1129609 combination zp[1]:2 [ main::y#4 main::y#1 ] Coalescing zero page register [ zp[2]:11 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:13 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] - score: 1 Coalescing zero page register [ zp[2]:30 [ main::xw#0 ] ] with [ zp[2]:34 [ atan2_16::x#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:32 [ main::yw#0 ] ] with [ zp[2]:36 [ atan2_16::y#0 ] ] - score: 1 @@ -3280,10 +3278,10 @@ FINAL SYMBOL TABLE (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:10 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:13 4.0 +(signed word~) atan2_16::$2 zp[2]:10 20002.0 +(byte~) atan2_16::$22 reg byte a 2.0000002E7 +(byte~) atan2_16::$23 reg byte a 2.0000002E7 +(signed word~) atan2_16::$7 zp[2]:13 20002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -3307,59 +3305,59 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:6 3.0 -(word) atan2_16::angle#11 angle zp[2]:6 4.0 -(word) atan2_16::angle#12 angle zp[2]:6 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:6 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:6 2002.0 -(word) atan2_16::angle#3 angle zp[2]:6 2002.0 -(word) atan2_16::angle#4 angle zp[2]:6 4.0 -(word) atan2_16::angle#5 angle zp[2]:6 4.0 -(word) atan2_16::angle#6 angle zp[2]:6 2004.0 +(word) atan2_16::angle#1 angle zp[2]:6 15001.5 +(word) atan2_16::angle#11 angle zp[2]:6 20002.0 +(word) atan2_16::angle#12 angle zp[2]:6 1904762.0952380951 +(word) atan2_16::angle#13 angle zp[2]:6 1.3333334666666666E7 +(word) atan2_16::angle#2 angle zp[2]:6 2.0000002E7 +(word) atan2_16::angle#3 angle zp[2]:6 2.0000002E7 +(word) atan2_16::angle#4 angle zp[2]:6 20002.0 +(word) atan2_16::angle#5 angle zp[2]:6 20002.0 +(word) atan2_16::angle#6 angle zp[2]:6 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.50000015E7 +(byte) atan2_16::i#2 reg byte x 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:6 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:6 202.0 +(word) atan2_16::return#0 return zp[2]:6 7001.0 +(word) atan2_16::return#2 return zp[2]:6 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.00000002E8 +(byte) atan2_16::shift#2 reg byte y 8.000000125E7 +(byte) atan2_16::shift#5 reg byte y 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:19 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:19 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:8 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:8 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:8 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:8 6.6666667333333336E7 +(signed word) atan2_16::xd#10 xd zp[2]:8 1.0000001E7 +(signed word) atan2_16::xd#2 xd zp[2]:8 1.0000001E7 +(signed word) atan2_16::xd#3 xd zp[2]:8 7.666666833333333E7 +(signed word) atan2_16::xd#5 xd zp[2]:8 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:13 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:13 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:13 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:13 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:13 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:13 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:13 30003.0 +(signed word) atan2_16::xi#1 xi zp[2]:13 5000000.5 +(signed word) atan2_16::xi#13 xi zp[2]:13 20002.0 +(signed word) atan2_16::xi#2 xi zp[2]:13 5000000.5 +(signed word) atan2_16::xi#3 xi zp[2]:13 2667333.6666666665 +(signed word) atan2_16::xi#8 xi zp[2]:13 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:21 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:21 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:15 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:15 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:15 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:15 1.00000001E8 +(signed word) atan2_16::yd#10 yd zp[2]:15 2.0000002E7 +(signed word) atan2_16::yd#2 yd zp[2]:15 2.0000002E7 +(signed word) atan2_16::yd#3 yd zp[2]:15 4.6000001E7 +(signed word) atan2_16::yd#5 yd zp[2]:15 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:10 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:10 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:10 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:10 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:10 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:10 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:10 6000.6 +(signed word) atan2_16::yi#1 yi zp[2]:10 6666667.333333333 +(signed word) atan2_16::yi#16 yi zp[2]:10 20002.0 +(signed word) atan2_16::yi#2 yi zp[2]:10 6666667.333333333 +(signed word) atan2_16::yi#3 yi zp[2]:10 3530000.4117647056 +(signed word) atan2_16::yi#8 yi zp[2]:10 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:23 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:23 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -3367,30 +3365,30 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:12 16.5 -(byte) init_font_hex::c#6 c zp[1]:12 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:12 1501.5 +(byte) init_font_hex::c#6 c zp[1]:12 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:17 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:17 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:17 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:17 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:13 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:13 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:13 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:13 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:13 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:13 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:18 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:18 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:18 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:18 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 9230.999999999998 (void()) main() -(word~) main::$9 zp[2]:6 202.0 +(word~) main::$9 zp[2]:6 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -3398,29 +3396,29 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::ang_w -(byte) main::ang_w#0 reg byte a 202.0 +(byte) main::ang_w#0 reg byte a 2002.0 (word) main::angle_w -(word) main::angle_w#0 angle_w zp[2]:6 202.0 +(word) main::angle_w#0 angle_w zp[2]:6 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 42.599999999999994 -(byte*) main::screen#2 screen zp[2]:4 28.545454545454547 -(byte*) main::screen#4 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 420.59999999999997 +(byte*) main::screen#2 screen zp[2]:4 282.1818181818182 +(byte*) main::screen#4 screen zp[2]:4 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 16.833333333333332 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 166.83333333333334 (signed word) main::xw -(word) main::xw#0 xw zp[2]:19 50.5 +(word) main::xw#0 xw zp[2]:19 500.5 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 1.4666666666666666 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 13.466666666666667 (signed word) main::yw -(word) main::yw#0 yw zp[2]:21 50.5 +(word) main::yw#0 yw zp[2]:21 500.5 zp[1]:2 [ main::y#4 main::y#1 ] zp[1]:3 [ main::x#2 main::x#1 ] diff --git a/src/test/ref/cordic-atan2-16.sym b/src/test/ref/cordic-atan2-16.sym index acd900e88..d722e7f7c 100644 --- a/src/test/ref/cordic-atan2-16.sym +++ b/src/test/ref/cordic-atan2-16.sym @@ -11,10 +11,10 @@ (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:10 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:13 4.0 +(signed word~) atan2_16::$2 zp[2]:10 20002.0 +(byte~) atan2_16::$22 reg byte a 2.0000002E7 +(byte~) atan2_16::$23 reg byte a 2.0000002E7 +(signed word~) atan2_16::$7 zp[2]:13 20002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -38,59 +38,59 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:6 3.0 -(word) atan2_16::angle#11 angle zp[2]:6 4.0 -(word) atan2_16::angle#12 angle zp[2]:6 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:6 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:6 2002.0 -(word) atan2_16::angle#3 angle zp[2]:6 2002.0 -(word) atan2_16::angle#4 angle zp[2]:6 4.0 -(word) atan2_16::angle#5 angle zp[2]:6 4.0 -(word) atan2_16::angle#6 angle zp[2]:6 2004.0 +(word) atan2_16::angle#1 angle zp[2]:6 15001.5 +(word) atan2_16::angle#11 angle zp[2]:6 20002.0 +(word) atan2_16::angle#12 angle zp[2]:6 1904762.0952380951 +(word) atan2_16::angle#13 angle zp[2]:6 1.3333334666666666E7 +(word) atan2_16::angle#2 angle zp[2]:6 2.0000002E7 +(word) atan2_16::angle#3 angle zp[2]:6 2.0000002E7 +(word) atan2_16::angle#4 angle zp[2]:6 20002.0 +(word) atan2_16::angle#5 angle zp[2]:6 20002.0 +(word) atan2_16::angle#6 angle zp[2]:6 2.0010003E7 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.50000015E7 +(byte) atan2_16::i#2 reg byte x 2083333.5416666665 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:6 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:6 202.0 +(word) atan2_16::return#0 return zp[2]:6 7001.0 +(word) atan2_16::return#2 return zp[2]:6 2002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.00000002E8 +(byte) atan2_16::shift#2 reg byte y 8.000000125E7 +(byte) atan2_16::shift#5 reg byte y 6666667.333333333 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:19 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:19 1079.078947368421 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:8 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:8 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:8 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:8 6.6666667333333336E7 +(signed word) atan2_16::xd#10 xd zp[2]:8 1.0000001E7 +(signed word) atan2_16::xd#2 xd zp[2]:8 1.0000001E7 +(signed word) atan2_16::xd#3 xd zp[2]:8 7.666666833333333E7 +(signed word) atan2_16::xd#5 xd zp[2]:8 1.0000001E7 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:13 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:13 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:13 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:13 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:13 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:13 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:13 30003.0 +(signed word) atan2_16::xi#1 xi zp[2]:13 5000000.5 +(signed word) atan2_16::xi#13 xi zp[2]:13 20002.0 +(signed word) atan2_16::xi#2 xi zp[2]:13 5000000.5 +(signed word) atan2_16::xi#3 xi zp[2]:13 2667333.6666666665 +(signed word) atan2_16::xi#8 xi zp[2]:13 1.0000001E7 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:21 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:21 1025.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:15 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:15 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:15 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:15 1.00000001E8 +(signed word) atan2_16::yd#10 yd zp[2]:15 2.0000002E7 +(signed word) atan2_16::yd#2 yd zp[2]:15 2.0000002E7 +(signed word) atan2_16::yd#3 yd zp[2]:15 4.6000001E7 +(signed word) atan2_16::yd#5 yd zp[2]:15 2.0000002E7 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:10 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:10 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:10 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:10 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:10 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:10 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:10 6000.6 +(signed word) atan2_16::yi#1 yi zp[2]:10 6666667.333333333 +(signed word) atan2_16::yi#16 yi zp[2]:10 20002.0 +(signed word) atan2_16::yi#2 yi zp[2]:10 6666667.333333333 +(signed word) atan2_16::yi#3 yi zp[2]:10 3530000.4117647056 +(signed word) atan2_16::yi#8 yi zp[2]:10 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:23 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:23 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -98,30 +98,30 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:12 16.5 -(byte) init_font_hex::c#6 c zp[1]:12 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:12 1501.5 +(byte) init_font_hex::c#6 c zp[1]:12 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:17 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:17 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:17 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:17 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:13 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:13 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:13 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:13 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:13 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:13 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:18 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:18 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:18 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:18 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 9230.999999999998 (void()) main() -(word~) main::$9 zp[2]:6 202.0 +(word~) main::$9 zp[2]:6 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -129,29 +129,29 @@ (label) main::@5 (label) main::@6 (byte) main::ang_w -(byte) main::ang_w#0 reg byte a 202.0 +(byte) main::ang_w#0 reg byte a 2002.0 (word) main::angle_w -(word) main::angle_w#0 angle_w zp[2]:6 202.0 +(word) main::angle_w#0 angle_w zp[2]:6 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 42.599999999999994 -(byte*) main::screen#2 screen zp[2]:4 28.545454545454547 -(byte*) main::screen#4 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 420.59999999999997 +(byte*) main::screen#2 screen zp[2]:4 282.1818181818182 +(byte*) main::screen#4 screen zp[2]:4 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 16.833333333333332 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 166.83333333333334 (signed word) main::xw -(word) main::xw#0 xw zp[2]:19 50.5 +(word) main::xw#0 xw zp[2]:19 500.5 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 1.4666666666666666 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 13.466666666666667 (signed word) main::yw -(word) main::yw#0 yw zp[2]:21 50.5 +(word) main::yw#0 yw zp[2]:21 500.5 zp[1]:2 [ main::y#4 main::y#1 ] zp[1]:3 [ main::x#2 main::x#1 ] diff --git a/src/test/ref/cordic-atan2-clear.log b/src/test/ref/cordic-atan2-clear.log index 8053facd7..17044f902 100644 --- a/src/test/ref/cordic-atan2-clear.log +++ b/src/test/ref/cordic-atan2-clear.log @@ -1030,79 +1030,79 @@ Inversing boolean not [79] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16 Inversing boolean not [103] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [102] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Inversing boolean not [146] (bool~) main::$5 ← (byte*) main::clear_char#2 >= (const byte*) CHARSET+(word) $800 from [145] (bool~) main::$4 ← (byte*) main::clear_char#2 < (const byte*) CHARSET+(word) $800 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte*) main::clear_char#2 = (byte*) main::clear_char#4 (byte*) main::clear_char#3 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias main::clear_char#2 = main::clear_char#4 main::clear_char#3 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 Successful SSA optimization Pass2AliasElimination -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -1652,123 +1652,123 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 72.14285714285714 +(byte) init_angle_screen::ang_w#0 7143.571428571429 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 8.96 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() (byte*) main::clear_char -(byte*) main::clear_char#1 22.0 -(byte*) main::clear_char#5 84.0 +(byte*) main::clear_char#1 202.0 +(byte*) main::clear_char#5 826.5 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -2703,140 +2703,138 @@ CORDIC_ATAN2_ANGLES_16: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a -Statement [11] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::clear_char#5) ← (byte) 0 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a reg byte y -Statement [18] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a +Statement [11] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::clear_char#5) ← (byte) 0 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a reg byte y +Statement [18] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [19] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [23] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [19] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [23] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [24] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [25] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [24] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [25] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [26] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [27] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [28] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [29] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [31] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [32] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [33] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [34] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [36] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [26] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [27] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [28] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [29] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [31] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [32] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [33] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [36] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:52 [ init_angle_screen::ang_w#0 ] -Statement [37] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a +Statement [37] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ init_angle_screen::ang_w#0 ] -Statement [38] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [39] (byte~) init_angle_screen::$15 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [40] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [41] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte a reg byte y -Statement [44] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [45] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [47] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [48] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [51] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [38] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [39] (byte~) init_angle_screen::$15 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [40] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [41] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a reg byte y +Statement [44] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [47] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [48] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [51] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [53] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [54] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [55] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [57] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [58] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [62] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [53] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [54] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [55] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [57] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [58] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [63] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [67] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [68] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [70] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [71] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [72] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [73] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [74] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [78] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [79] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [80] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [81] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [82] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [83] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [90] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [63] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [70] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [73] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [74] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [78] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [79] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [83] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [92] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [92] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [93] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [93] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:58 [ init_font_hex::$0 ] -Statement [99] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [101] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [102] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [103] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [106] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a -Statement [11] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::clear_char#5) ← (byte) 0 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] ) always clobbers reg byte a reg byte y -Statement [18] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [19] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [23] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [24] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [25] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [26] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [27] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [28] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [29] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [31] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [32] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [33] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [34] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [35] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [36] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [37] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [38] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [39] (byte~) init_angle_screen::$15 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [40] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [41] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte a reg byte y -Statement [44] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [45] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [47] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [48] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [51] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [53] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [54] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [55] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [57] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [58] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [62] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [63] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [67] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [68] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [70] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [71] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [72] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [73] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [74] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [78] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [79] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [80] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [81] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [82] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [83] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [90] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [92] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [93] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [99] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [101] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [102] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [103] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [106] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [99] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [103] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [106] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a +Statement [11] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::clear_char#5) ← (byte) 0 [ main::clear_char#5 ] ( main:2 [ main::clear_char#5 ] { } ) always clobbers reg byte a reg byte y +Statement [18] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [19] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [23] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [24] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [25] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [26] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [27] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [28] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [29] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [31] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [32] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [33] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [35] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [36] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [37] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [38] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [39] (byte~) init_angle_screen::$15 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [40] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [41] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:8 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte a reg byte y +Statement [44] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [47] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [48] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [51] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [53] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [54] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [55] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [57] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [58] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [68] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [70] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [73] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [74] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [78] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [79] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [83] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:8::atan2_16:30 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [92] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [93] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [103] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [106] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::clear_char#5 main::clear_char#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:4 , reg byte x , Potential registers zp[2]:5 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] : zp[2]:5 , @@ -2880,15 +2878,15 @@ Potential registers zp[1]:60 [ init_font_hex::$2 ] : zp[1]:60 , reg byte a , reg Potential registers zp[1]:61 [ init_font_hex::idx#3 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:20 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:21 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:23 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:56 [ atan2_16::$23 ] 2,002: zp[1]:57 [ atan2_16::$22 ] 1,710.04: zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:46 [ atan2_16::return#2 ] 50: zp[2]:18 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:42 [ atan2_16::x#0 ] 2.72: zp[2]:44 [ atan2_16::y#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:33 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:59 [ init_font_hex::$1 ] 2,002: zp[1]:60 [ init_font_hex::$2 ] 1,151.6: zp[1]:34 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:58 [ init_font_hex::$0 ] 202: zp[1]:61 [ init_font_hex::idx#3 ] 165.86: zp[2]:28 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:30 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:25 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:10 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:35 [ init_angle_screen::$3 ] 202: zp[1]:36 [ init_angle_screen::$4 ] 202: zp[1]:39 [ init_angle_screen::$7 ] 202: zp[2]:48 [ init_angle_screen::angle_w#0 ] 202: zp[2]:50 [ init_angle_screen::$11 ] 202: zp[1]:53 [ init_angle_screen::$13 ] 202: zp[1]:54 [ init_angle_screen::$14 ] 202: zp[1]:55 [ init_angle_screen::$15 ] 129.86: zp[1]:9 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 72.14: zp[1]:52 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:40 [ init_angle_screen::yw#0 ] 33.67: zp[2]:37 [ init_angle_screen::xw#0 ] 21.23: zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 16.29: zp[2]:7 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 14.83: zp[2]:5 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] -Uplift Scope [main] 106: zp[2]:2 [ main::clear_char#5 main::clear_char#1 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:20 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:21 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:23 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:56 [ atan2_16::$23 ] 200,000,002: zp[1]:57 [ atan2_16::$22 ] 170,833,335.04: zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:18 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:46 [ atan2_16::return#2 ] 10,789.61: zp[2]:42 [ atan2_16::x#0 ] 10,250.12: zp[2]:44 [ atan2_16::y#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:33 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:59 [ init_font_hex::$1 ] 200,002: zp[1]:60 [ init_font_hex::$2 ] 115,001.6: zp[1]:34 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:58 [ init_font_hex::$0 ] 20,002: zp[1]:61 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:28 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:30 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:25 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:10 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:35 [ init_angle_screen::$3 ] 20,002: zp[1]:36 [ init_angle_screen::$4 ] 20,002: zp[1]:39 [ init_angle_screen::$7 ] 20,002: zp[2]:48 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:50 [ init_angle_screen::$11 ] 20,002: zp[1]:53 [ init_angle_screen::$13 ] 20,002: zp[1]:54 [ init_angle_screen::$14 ] 20,002: zp[1]:55 [ init_angle_screen::$15 ] 12,858.43: zp[1]:9 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 7,143.57: zp[1]:52 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:40 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:37 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,547.49: zp[2]:7 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 1,417.33: zp[2]:5 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] +Uplift Scope [main] 1,028.5: zp[2]:2 [ main::clear_char#5 main::clear_char#1 ] Uplift Scope [] -Uplifting [atan2_16] best 1174671 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:21 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:23 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:46 [ atan2_16::return#2 ] zp[2]:18 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:42 [ atan2_16::x#0 ] zp[2]:44 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1174671 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:21 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:23 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:16 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:11 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:13 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:18 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:46 [ atan2_16::return#2 ] zp[2]:42 [ atan2_16::x#0 ] zp[2]:44 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [init_font_hex] best 1155671 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:34 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:58 [ init_font_hex::$0 ] zp[1]:61 [ init_font_hex::idx#3 ] zp[2]:28 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:30 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:25 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 1155671 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:34 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:58 [ init_font_hex::$0 ] zp[1]:61 [ init_font_hex::idx#3 ] zp[1]:32 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:28 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:30 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:25 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:27 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. Uplifting [init_angle_screen] best 1154071 combination zp[1]:10 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:48 [ init_angle_screen::angle_w#0 ] zp[2]:50 [ init_angle_screen::$11 ] zp[1]:53 [ init_angle_screen::$13 ] zp[1]:54 [ init_angle_screen::$14 ] zp[1]:55 [ init_angle_screen::$15 ] zp[1]:9 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:52 [ init_angle_screen::ang_w#0 ] zp[2]:40 [ init_angle_screen::yw#0 ] zp[2]:37 [ init_angle_screen::xw#0 ] zp[1]:4 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:7 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:5 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] Limited combination testing to 100 combinations of 65536 possible. @@ -3842,10 +3840,10 @@ FINAL SYMBOL TABLE (const byte*) RASTER = (byte*) 53266 (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:17 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:4 4.0 +(signed word~) atan2_16::$2 zp[2]:17 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:4 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -3869,63 +3867,63 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:6 3.0 -(word) atan2_16::angle#11 angle zp[2]:6 4.0 -(word) atan2_16::angle#12 angle zp[2]:6 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:6 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:6 2002.0 -(word) atan2_16::angle#3 angle zp[2]:6 2002.0 -(word) atan2_16::angle#4 angle zp[2]:6 4.0 -(word) atan2_16::angle#5 angle zp[2]:6 4.0 -(word) atan2_16::angle#6 angle zp[2]:6 2004.0 +(word) atan2_16::angle#1 angle zp[2]:6 150001.5 +(word) atan2_16::angle#11 angle zp[2]:6 200002.0 +(word) atan2_16::angle#12 angle zp[2]:6 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:6 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:6 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:6 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:6 200002.0 +(word) atan2_16::angle#5 angle zp[2]:6 200002.0 +(word) atan2_16::angle#6 angle zp[2]:6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:6 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:6 202.0 +(word) atan2_16::return#0 return zp[2]:6 70001.0 +(word) atan2_16::return#2 return zp[2]:6 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:21 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:21 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:10 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:10 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:10 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:10 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:10 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:10 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:4 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:4 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:4 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:4 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:4 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:4 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:4 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:4 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:4 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:4 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:4 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:4 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:23 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:23 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:8 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:8 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:8 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:8 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:8 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:8 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:17 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:17 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:17 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:17 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:17 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:17 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:17 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:17 1.00000001E8 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:6 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:6 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -3933,33 +3931,33 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:25 72.14285714285714 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:25 7143.571428571429 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:6 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:6 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:15 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:15 8.96 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:15 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:15 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:12 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:12 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:12 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:12 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:19 101.0 -(byte) init_angle_screen::x#2 x zp[1]:19 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:19 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:19 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:20 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:20 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:20 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:20 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:21 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:21 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:14 16.5 -(byte) init_angle_screen::y#5 y zp[1]:14 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:14 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:14 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:23 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:23 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:25 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:25 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -3967,28 +3965,28 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:14 16.5 -(byte) init_font_hex::c#6 c zp[1]:14 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:14 1501.5 +(byte) init_font_hex::c#6 c zp[1]:14 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:19 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:19 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:19 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:19 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:15 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:15 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:15 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:15 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:15 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:15 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:20 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:20 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:20 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:20 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:12 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:12 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:12 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:12 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:17 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:17 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:17 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:17 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 @@ -3996,8 +3994,8 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@5 (byte*) main::clear_char -(byte*) main::clear_char#1 clear_char zp[2]:2 22.0 -(byte*) main::clear_char#5 clear_char zp[2]:2 84.0 +(byte*) main::clear_char#1 clear_char zp[2]:2 202.0 +(byte*) main::clear_char#5 clear_char zp[2]:2 826.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return diff --git a/src/test/ref/cordic-atan2-clear.sym b/src/test/ref/cordic-atan2-clear.sym index d59b1f0d7..7f71e2154 100644 --- a/src/test/ref/cordic-atan2-clear.sym +++ b/src/test/ref/cordic-atan2-clear.sym @@ -11,10 +11,10 @@ (const byte*) RASTER = (byte*) 53266 (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:17 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:4 4.0 +(signed word~) atan2_16::$2 zp[2]:17 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:4 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -38,63 +38,63 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:6 3.0 -(word) atan2_16::angle#11 angle zp[2]:6 4.0 -(word) atan2_16::angle#12 angle zp[2]:6 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:6 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:6 2002.0 -(word) atan2_16::angle#3 angle zp[2]:6 2002.0 -(word) atan2_16::angle#4 angle zp[2]:6 4.0 -(word) atan2_16::angle#5 angle zp[2]:6 4.0 -(word) atan2_16::angle#6 angle zp[2]:6 2004.0 +(word) atan2_16::angle#1 angle zp[2]:6 150001.5 +(word) atan2_16::angle#11 angle zp[2]:6 200002.0 +(word) atan2_16::angle#12 angle zp[2]:6 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:6 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:6 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:6 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:6 200002.0 +(word) atan2_16::angle#5 angle zp[2]:6 200002.0 +(word) atan2_16::angle#6 angle zp[2]:6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:6 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:6 202.0 +(word) atan2_16::return#0 return zp[2]:6 70001.0 +(word) atan2_16::return#2 return zp[2]:6 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:21 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:21 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:10 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:10 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:10 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:10 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:10 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:10 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:4 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:4 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:4 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:4 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:4 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:4 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:4 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:4 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:4 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:4 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:4 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:4 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:23 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:23 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:8 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:8 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:8 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:8 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:8 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:8 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:17 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:17 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:17 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:17 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:17 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:17 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:17 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:17 1.00000001E8 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:6 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:6 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -102,33 +102,33 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:25 72.14285714285714 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:25 7143.571428571429 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:6 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:6 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:15 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:15 8.96 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:15 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:15 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:12 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:12 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:12 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:12 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:19 101.0 -(byte) init_angle_screen::x#2 x zp[1]:19 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:19 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:19 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:20 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:20 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:20 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:20 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:21 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:21 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:14 16.5 -(byte) init_angle_screen::y#5 y zp[1]:14 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:14 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:14 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:23 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:23 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:25 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:25 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -136,28 +136,28 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:14 16.5 -(byte) init_font_hex::c#6 c zp[1]:14 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:14 1501.5 +(byte) init_font_hex::c#6 c zp[1]:14 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:19 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:19 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:19 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:19 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:15 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:15 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:15 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:15 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:15 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:15 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:20 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:20 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:20 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:20 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:12 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:12 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:12 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:12 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:17 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:17 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:17 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:17 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 @@ -165,8 +165,8 @@ (label) main::@4 (label) main::@5 (byte*) main::clear_char -(byte*) main::clear_char#1 clear_char zp[2]:2 22.0 -(byte*) main::clear_char#5 clear_char zp[2]:2 84.0 +(byte*) main::clear_char#1 clear_char zp[2]:2 202.0 +(byte*) main::clear_char#5 clear_char zp[2]:2 826.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return diff --git a/src/test/ref/cordic-atan2.log b/src/test/ref/cordic-atan2.log index 73d4b8a1b..b409b3636 100644 --- a/src/test/ref/cordic-atan2.log +++ b/src/test/ref/cordic-atan2.log @@ -704,55 +704,55 @@ Inversing boolean not [59] (bool~) atan2_8::$18 ← (signed byte) atan2_8::yi#3 Inversing boolean not [72] (bool~) atan2_8::$12 ← (signed byte) atan2_8::x#4 >= (signed byte) 0 from [71] (bool~) atan2_8::$11 ← (signed byte) atan2_8::x#4 < (signed byte) 0 Inversing boolean not [88] (bool~) atan2_8::$15 ← (signed byte) atan2_8::y#4 >= (signed byte) 0 from [87] (bool~) atan2_8::$14 ← (signed byte) atan2_8::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (signed byte) atan2_8::y#1 = (signed byte) atan2_8::y#2 (signed byte~) atan2_8::$3 (signed byte) atan2_8::y#3 -Alias (signed byte) atan2_8::x#5 = (signed byte) atan2_8::x#9 (signed byte) atan2_8::x#6 -Alias (signed byte~) atan2_8::$2 = (signed byte~) atan2_8::$1 -Alias (signed byte) atan2_8::yi#0 = (signed byte~) atan2_8::$4 (signed byte) atan2_8::yi#9 (signed byte) atan2_8::yi#10 -Alias (signed byte) atan2_8::x#1 = (signed byte) atan2_8::x#2 (signed byte~) atan2_8::$8 (signed byte) atan2_8::x#3 -Alias (signed byte) atan2_8::y#12 = (signed byte) atan2_8::y#15 (signed byte) atan2_8::y#13 -Alias (signed byte~) atan2_8::$7 = (signed byte~) atan2_8::$6 -Alias (signed byte) atan2_8::xi#0 = (signed byte~) atan2_8::$9 -Alias (signed byte) atan2_8::xi#3 = (signed byte) atan2_8::xi#6 (signed byte) atan2_8::xi#4 (signed byte) atan2_8::xi#5 -Alias (byte) atan2_8::i#2 = (byte) atan2_8::i#6 (byte) atan2_8::i#3 (byte) atan2_8::i#4 -Alias (signed byte) atan2_8::yi#3 = (signed byte) atan2_8::yi#4 (signed byte) atan2_8::yi#5 (signed byte) atan2_8::yi#6 -Alias (byte) atan2_8::angle#12 = (byte) atan2_8::angle#14 (byte) atan2_8::angle#7 (byte) atan2_8::angle#8 -Alias (signed byte) atan2_8::x#11 = (signed byte) atan2_8::x#13 (signed byte) atan2_8::x#7 (signed byte) atan2_8::x#12 -Alias (signed byte) atan2_8::y#10 = (signed byte) atan2_8::y#14 (signed byte) atan2_8::y#7 (signed byte) atan2_8::y#11 -Alias (signed byte) atan2_8::xd#0 = (signed byte~) atan2_8::$19 (signed byte) atan2_8::xd#1 (signed byte) atan2_8::xd#2 -Alias (signed byte) atan2_8::yd#0 = (signed byte~) atan2_8::$20 (signed byte) atan2_8::yd#1 (signed byte) atan2_8::yd#2 -Alias (byte) atan2_8::angle#1 = (byte~) atan2_8::$10 (byte) atan2_8::angle#9 -Alias (signed byte) atan2_8::y#5 = (signed byte) atan2_8::y#6 -Alias (byte) atan2_8::angle#4 = (byte~) atan2_8::$13 -Alias (byte) atan2_8::return#0 = (byte) atan2_8::angle#10 (byte) atan2_8::return#3 (byte) atan2_8::return#1 -Alias (byte) atan2_8::angle#11 = (byte) atan2_8::angle#15 -Alias (byte) atan2_8::angle#5 = (byte~) atan2_8::$16 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte) atan2_8::return#2 = (byte) atan2_8::return#4 -Alias (byte*) main::screen#2 = (byte*) main::screen#3 -Alias (signed byte) main::x#2 = (signed byte) main::x#3 -Alias (signed byte) main::y#2 = (signed byte) main::y#5 (signed byte) main::y#3 -Alias (byte) main::angle#0 = (byte~) main::$2 -Alias (byte*) main::screen#1 = (byte*) main::screen#5 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias atan2_8::y#1 = atan2_8::y#2 atan2_8::$3 atan2_8::y#3 +Alias atan2_8::x#5 = atan2_8::x#9 atan2_8::x#6 +Alias atan2_8::$2 = atan2_8::$1 +Alias atan2_8::yi#0 = atan2_8::$4 atan2_8::yi#9 atan2_8::yi#10 +Alias atan2_8::x#1 = atan2_8::x#2 atan2_8::$8 atan2_8::x#3 +Alias atan2_8::y#12 = atan2_8::y#15 atan2_8::y#13 +Alias atan2_8::$7 = atan2_8::$6 +Alias atan2_8::xi#0 = atan2_8::$9 +Alias atan2_8::xi#3 = atan2_8::xi#6 atan2_8::xi#4 atan2_8::xi#5 +Alias atan2_8::i#2 = atan2_8::i#6 atan2_8::i#3 atan2_8::i#4 +Alias atan2_8::yi#3 = atan2_8::yi#4 atan2_8::yi#5 atan2_8::yi#6 +Alias atan2_8::angle#12 = atan2_8::angle#14 atan2_8::angle#7 atan2_8::angle#8 +Alias atan2_8::x#11 = atan2_8::x#13 atan2_8::x#7 atan2_8::x#12 +Alias atan2_8::y#10 = atan2_8::y#14 atan2_8::y#7 atan2_8::y#11 +Alias atan2_8::xd#0 = atan2_8::$19 atan2_8::xd#1 atan2_8::xd#2 +Alias atan2_8::yd#0 = atan2_8::$20 atan2_8::yd#1 atan2_8::yd#2 +Alias atan2_8::angle#1 = atan2_8::$10 atan2_8::angle#9 +Alias atan2_8::y#5 = atan2_8::y#6 +Alias atan2_8::angle#4 = atan2_8::$13 +Alias atan2_8::return#0 = atan2_8::angle#10 atan2_8::return#3 atan2_8::return#1 +Alias atan2_8::angle#11 = atan2_8::angle#15 +Alias atan2_8::angle#5 = atan2_8::$16 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias atan2_8::return#2 = atan2_8::return#4 +Alias main::screen#2 = main::screen#3 +Alias main::x#2 = main::x#3 +Alias main::y#2 = main::y#5 main::y#3 +Alias main::angle#0 = main::$2 +Alias main::screen#1 = main::screen#5 Successful SSA optimization Pass2AliasElimination -Alias (signed byte) atan2_8::x#1 = (signed byte) atan2_8::x#5 (signed byte) atan2_8::x#10 -Alias (signed byte) atan2_8::y#1 = (signed byte) atan2_8::y#12 (signed byte) atan2_8::y#9 -Alias (signed byte) atan2_8::yi#0 = (signed byte) atan2_8::yi#8 -Alias (byte) atan2_8::i#2 = (byte) atan2_8::i#5 -Alias (signed byte) atan2_8::x#11 = (signed byte) atan2_8::x#8 -Alias (signed byte) atan2_8::y#10 = (signed byte) atan2_8::y#8 -Alias (signed byte) atan2_8::y#4 = (signed byte) atan2_8::y#5 +Alias atan2_8::x#1 = atan2_8::x#5 atan2_8::x#10 +Alias atan2_8::y#1 = atan2_8::y#12 atan2_8::y#9 +Alias atan2_8::yi#0 = atan2_8::yi#8 +Alias atan2_8::i#2 = atan2_8::i#5 +Alias atan2_8::x#11 = atan2_8::x#8 +Alias atan2_8::y#10 = atan2_8::y#8 +Alias atan2_8::y#4 = atan2_8::y#5 Successful SSA optimization Pass2AliasElimination -Alias (signed byte) atan2_8::x#11 = (signed byte) atan2_8::x#4 -Alias (signed byte) atan2_8::y#10 = (signed byte) atan2_8::y#4 +Alias atan2_8::x#11 = atan2_8::x#4 +Alias atan2_8::y#10 = atan2_8::y#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -1175,89 +1175,89 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (byte()) atan2_8((signed byte) atan2_8::x , (signed byte) atan2_8::y) -(signed byte~) atan2_8::$2 4.0 -(signed byte~) atan2_8::$7 4.0 +(signed byte~) atan2_8::$2 20002.0 +(signed byte~) atan2_8::$7 20002.0 (byte) atan2_8::angle -(byte) atan2_8::angle#1 3.0 -(byte) atan2_8::angle#11 4.0 -(byte) atan2_8::angle#12 444.8888888888889 -(byte) atan2_8::angle#13 1334.6666666666667 -(byte) atan2_8::angle#2 2002.0 -(byte) atan2_8::angle#3 2002.0 -(byte) atan2_8::angle#4 4.0 -(byte) atan2_8::angle#5 4.0 -(byte) atan2_8::angle#6 2004.0 +(byte) atan2_8::angle#1 15001.5 +(byte) atan2_8::angle#11 20002.0 +(byte) atan2_8::angle#12 4444444.888888889 +(byte) atan2_8::angle#13 1.3333334666666666E7 +(byte) atan2_8::angle#2 2.0000002E7 +(byte) atan2_8::angle#3 2.0000002E7 +(byte) atan2_8::angle#4 20002.0 +(byte) atan2_8::angle#5 20002.0 +(byte) atan2_8::angle#6 2.0010003E7 (byte) atan2_8::i -(byte) atan2_8::i#1 1501.5 -(byte) atan2_8::i#2 500.50000000000006 +(byte) atan2_8::i#1 1.50000015E7 +(byte) atan2_8::i#2 5000000.5 (byte) atan2_8::return -(byte) atan2_8::return#0 34.99999999999999 -(byte) atan2_8::return#2 202.0 +(byte) atan2_8::return#0 7001.0 +(byte) atan2_8::return#2 2002.0 (signed byte) atan2_8::x -(signed byte) atan2_8::x#0 4.192307692307692 +(signed byte) atan2_8::x#0 1577.1153846153845 (signed byte) atan2_8::xd -(signed byte) atan2_8::xd#0 600.5999999999999 +(signed byte) atan2_8::xd#0 6000000.6 (signed byte) atan2_8::xi -(signed byte) atan2_8::xi#0 6.0 -(signed byte) atan2_8::xi#1 667.3333333333334 -(signed byte) atan2_8::xi#2 667.3333333333334 -(signed byte) atan2_8::xi#3 801.2 -(signed byte) atan2_8::xi#7 1001.0 -(signed byte) atan2_8::xi#8 4.0 +(signed byte) atan2_8::xi#0 30003.0 +(signed byte) atan2_8::xi#1 6666667.333333333 +(signed byte) atan2_8::xi#2 6666667.333333333 +(signed byte) atan2_8::xi#3 8002001.0 +(signed byte) atan2_8::xi#7 1.0000001E7 +(signed byte) atan2_8::xi#8 20002.0 (signed byte) atan2_8::y -(signed byte) atan2_8::y#0 3.8928571428571437 +(signed byte) atan2_8::y#0 1464.4642857142858 (signed byte) atan2_8::yd -(signed byte) atan2_8::yd#0 1501.5 +(signed byte) atan2_8::yd#0 1.50000015E7 (signed byte) atan2_8::yi -(signed byte) atan2_8::yi#0 1.2000000000000002 -(signed byte) atan2_8::yi#1 1001.0 -(signed byte) atan2_8::yi#11 4.0 -(signed byte) atan2_8::yi#2 1001.0 -(signed byte) atan2_8::yi#3 858.2857142857142 -(signed byte) atan2_8::yi#7 1001.0 +(signed byte) atan2_8::yi#0 6000.6 +(signed byte) atan2_8::yi#1 1.0000001E7 +(signed byte) atan2_8::yi#11 20002.0 +(signed byte) atan2_8::yi#2 1.0000001E7 +(signed byte) atan2_8::yi#3 8572858.142857142 +(signed byte) atan2_8::yi#7 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() (byte) main::angle -(byte) main::angle#0 202.0 +(byte) main::angle#0 2002.0 (byte*) main::screen -(byte*) main::screen#1 42.599999999999994 -(byte*) main::screen#2 44.85714285714286 -(byte*) main::screen#4 22.0 +(byte*) main::screen#1 420.59999999999997 +(byte*) main::screen#2 443.42857142857144 +(byte*) main::screen#4 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 151.5 -(signed byte) main::x#2 37.875 +(signed byte) main::x#1 1501.5 +(signed byte) main::x#2 375.375 (signed byte) main::y -(signed byte) main::y#1 16.5 -(signed byte) main::y#4 11.181818181818182 +(signed byte) main::y#1 151.5 +(signed byte) main::y#4 109.36363636363637 Initial phi equivalence classes [ main::y#4 main::y#1 ] @@ -1890,78 +1890,78 @@ CORDIC_ATAN2_ANGLES_8: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((byte*) main::screen#2) ← (byte) main::angle#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] ) always clobbers reg byte y +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((byte*) main::screen#2) ← (byte) main::angle#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ] -Statement [23] (signed byte~) atan2_8::$2 ← - (signed byte) atan2_8::y#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ) always clobbers reg byte a +Statement [23] (signed byte~) atan2_8::$2 ← - (signed byte) atan2_8::y#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ atan2_8::x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ atan2_8::y#0 ] -Statement [25] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ) always clobbers reg byte a +Statement [25] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ atan2_8::yi#3 atan2_8::yi#7 atan2_8::yi#0 atan2_8::yi#11 atan2_8::$2 atan2_8::yi#1 atan2_8::yi#2 ] -Statement [26] (signed byte~) atan2_8::$7 ← - (signed byte) atan2_8::x#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ) always clobbers reg byte a -Statement [29] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@11 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ) always clobbers reg byte a +Statement [26] (signed byte~) atan2_8::$7 ← - (signed byte) atan2_8::x#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [29] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@11 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ atan2_8::angle#6 atan2_8::angle#12 atan2_8::angle#13 atan2_8::angle#2 atan2_8::angle#3 ] -Statement [31] (byte) atan2_8::angle#1 ← (byte) atan2_8::angle#6 >> (byte) 1 [ atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ) always clobbers reg byte a -Statement [33] (byte) atan2_8::angle#4 ← (byte) $80 - (byte) atan2_8::angle#1 [ atan2_8::y#0 atan2_8::angle#4 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::y#0 atan2_8::angle#4 ] ) always clobbers reg byte a -Statement [36] (byte) atan2_8::angle#5 ← - (byte) atan2_8::angle#11 [ atan2_8::angle#5 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::angle#5 ] ) always clobbers reg byte a -Statement [39] (signed byte) atan2_8::xd#0 ← (signed byte) atan2_8::xi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ) always clobbers reg byte a -Statement [40] (signed byte) atan2_8::yd#0 ← (signed byte) atan2_8::yi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ) always clobbers reg byte a +Statement [31] (byte) atan2_8::angle#1 ← (byte) atan2_8::angle#6 >> (byte) 1 [ atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [33] (byte) atan2_8::angle#4 ← (byte) $80 - (byte) atan2_8::angle#1 [ atan2_8::y#0 atan2_8::angle#4 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::y#0 atan2_8::angle#4 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [36] (byte) atan2_8::angle#5 ← - (byte) atan2_8::angle#11 [ atan2_8::angle#5 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::angle#5 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [39] (signed byte) atan2_8::xd#0 ← (signed byte) atan2_8::xi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [40] (signed byte) atan2_8::yd#0 ← (signed byte) atan2_8::yi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ atan2_8::xd#0 ] -Statement [41] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@13 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ) always clobbers reg byte a +Statement [41] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@13 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ atan2_8::yd#0 ] -Statement [42] (signed byte) atan2_8::xi#2 ← (signed byte) atan2_8::xi#3 - (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ) always clobbers reg byte a -Statement [43] (signed byte) atan2_8::yi#2 ← (signed byte) atan2_8::yi#3 + (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ) always clobbers reg byte a -Statement [44] (byte) atan2_8::angle#3 ← (byte) atan2_8::angle#12 - *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ) always clobbers reg byte a -Statement [48] (signed byte) atan2_8::xi#1 ← (signed byte) atan2_8::xi#3 + (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [49] (signed byte) atan2_8::yi#1 ← (signed byte) atan2_8::yi#3 - (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [50] (byte) atan2_8::angle#2 ← (byte) atan2_8::angle#12 + *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [56] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [42] (signed byte) atan2_8::xi#2 ← (signed byte) atan2_8::xi#3 - (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [43] (signed byte) atan2_8::yi#2 ← (signed byte) atan2_8::yi#3 + (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [44] (byte) atan2_8::angle#3 ← (byte) atan2_8::angle#12 - *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [48] (signed byte) atan2_8::xi#1 ← (signed byte) atan2_8::xi#3 + (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [49] (signed byte) atan2_8::yi#1 ← (signed byte) atan2_8::yi#3 - (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [50] (byte) atan2_8::angle#2 ← (byte) atan2_8::angle#12 + *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [56] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [58] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [58] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [59] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [59] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_font_hex::$0 ] -Statement [65] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [68] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [69] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [72] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((byte*) main::screen#2) ← (byte) main::angle#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] ) always clobbers reg byte y -Statement [22] if((signed byte) atan2_8::y#0>(signed byte) 0) goto atan2_8::@1 [ atan2_8::x#0 atan2_8::y#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 ] ) always clobbers reg byte a -Statement [23] (signed byte~) atan2_8::$2 ← - (signed byte) atan2_8::y#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ) always clobbers reg byte a -Statement [25] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ) always clobbers reg byte a -Statement [26] (signed byte~) atan2_8::$7 ← - (signed byte) atan2_8::x#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ) always clobbers reg byte a -Statement [29] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@11 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ) always clobbers reg byte a -Statement [31] (byte) atan2_8::angle#1 ← (byte) atan2_8::angle#6 >> (byte) 1 [ atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ) always clobbers reg byte a -Statement [33] (byte) atan2_8::angle#4 ← (byte) $80 - (byte) atan2_8::angle#1 [ atan2_8::y#0 atan2_8::angle#4 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::y#0 atan2_8::angle#4 ] ) always clobbers reg byte a -Statement [36] (byte) atan2_8::angle#5 ← - (byte) atan2_8::angle#11 [ atan2_8::angle#5 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::angle#5 ] ) always clobbers reg byte a -Statement [39] (signed byte) atan2_8::xd#0 ← (signed byte) atan2_8::xi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ) always clobbers reg byte a -Statement [40] (signed byte) atan2_8::yd#0 ← (signed byte) atan2_8::yi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ) always clobbers reg byte a -Statement [41] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@13 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ) always clobbers reg byte a -Statement [42] (signed byte) atan2_8::xi#2 ← (signed byte) atan2_8::xi#3 - (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ) always clobbers reg byte a -Statement [43] (signed byte) atan2_8::yi#2 ← (signed byte) atan2_8::yi#3 + (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ) always clobbers reg byte a -Statement [44] (byte) atan2_8::angle#3 ← (byte) atan2_8::angle#12 - *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ) always clobbers reg byte a -Statement [48] (signed byte) atan2_8::xi#1 ← (signed byte) atan2_8::xi#3 + (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [49] (signed byte) atan2_8::yi#1 ← (signed byte) atan2_8::yi#3 - (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [50] (byte) atan2_8::angle#2 ← (byte) atan2_8::angle#12 + *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ) always clobbers reg byte a -Statement [56] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [58] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [59] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [65] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [68] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [69] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [72] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [65] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [67] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [68] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [69] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [72] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((byte*) main::screen#2) ← (byte) main::angle#0 [ main::y#4 main::x#2 main::screen#2 ] ( main:2 [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y +Statement [22] if((signed byte) atan2_8::y#0>(signed byte) 0) goto atan2_8::@1 [ atan2_8::x#0 atan2_8::y#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [23] (signed byte~) atan2_8::$2 ← - (signed byte) atan2_8::y#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::$2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [25] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [26] (signed byte~) atan2_8::$7 ← - (signed byte) atan2_8::x#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#0 atan2_8::$7 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [29] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@11 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [31] (byte) atan2_8::angle#1 ← (byte) atan2_8::angle#6 >> (byte) 1 [ atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::angle#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [33] (byte) atan2_8::angle#4 ← (byte) $80 - (byte) atan2_8::angle#1 [ atan2_8::y#0 atan2_8::angle#4 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::y#0 atan2_8::angle#4 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [36] (byte) atan2_8::angle#5 ← - (byte) atan2_8::angle#11 [ atan2_8::angle#5 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::angle#5 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [39] (signed byte) atan2_8::xd#0 ← (signed byte) atan2_8::xi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [40] (signed byte) atan2_8::yd#0 ← (signed byte) atan2_8::yi#3 >> (byte) atan2_8::i#2 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [41] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@13 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::xi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::yd#0 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [42] (signed byte) atan2_8::xi#2 ← (signed byte) atan2_8::xi#3 - (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [43] (signed byte) atan2_8::yi#2 ← (signed byte) atan2_8::yi#3 + (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::xi#2 atan2_8::yi#2 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [44] (byte) atan2_8::angle#3 ← (byte) atan2_8::angle#12 - *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::xi#2 atan2_8::yi#2 atan2_8::angle#3 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [48] (signed byte) atan2_8::xi#1 ← (signed byte) atan2_8::xi#3 + (signed byte) atan2_8::yd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::yi#3 atan2_8::i#2 atan2_8::angle#12 atan2_8::xd#0 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [49] (signed byte) atan2_8::yi#1 ← (signed byte) atan2_8::yi#3 - (signed byte) atan2_8::xd#0 [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::angle#12 atan2_8::yi#1 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [50] (byte) atan2_8::angle#2 ← (byte) atan2_8::angle#12 + *((const byte*) CORDIC_ATAN2_ANGLES_8 + (byte) atan2_8::i#2) [ atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] ( main:2::atan2_8:12 [ main::y#4 main::x#2 main::screen#2 atan2_8::x#0 atan2_8::y#0 atan2_8::i#2 atan2_8::yi#1 atan2_8::angle#2 atan2_8::xi#1 ] { { atan2_8::x#0 = main::x#2 } { atan2_8::y#0 = main::y#4 } { atan2_8::return#0 = atan2_8::return#2 } } ) always clobbers reg byte a +Statement [56] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [58] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [59] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [65] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [67] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [68] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [69] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [72] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::y#4 main::y#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] : zp[2]:4 , @@ -1989,14 +1989,14 @@ Potential registers zp[1]:29 [ init_font_hex::$2 ] : zp[1]:29 , reg byte a , reg Potential registers zp[1]:30 [ init_font_hex::idx#3 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_8] 7,787.56: zp[1]:9 [ atan2_8::angle#6 atan2_8::angle#12 atan2_8::angle#13 atan2_8::angle#2 atan2_8::angle#3 ] 3,870.49: zp[1]:6 [ atan2_8::yi#3 atan2_8::yi#7 atan2_8::yi#0 atan2_8::yi#11 atan2_8::$2 atan2_8::yi#1 atan2_8::yi#2 ] 3,150.87: zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] 2,002: zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] 1,501.5: zp[1]:26 [ atan2_8::yd#0 ] 600.6: zp[1]:25 [ atan2_8::xd#0 ] 202: zp[1]:23 [ atan2_8::return#2 ] 50: zp[1]:10 [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] 4.19: zp[1]:21 [ atan2_8::x#0 ] 3.89: zp[1]:22 [ atan2_8::y#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:19 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:28 [ init_font_hex::$1 ] 2,002: zp[1]:29 [ init_font_hex::$2 ] 1,151.6: zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:27 [ init_font_hex::$0 ] 202: zp[1]:30 [ init_font_hex::idx#3 ] 165.86: zp[2]:14 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:16 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:11 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [main] 202: zp[1]:24 [ main::angle#0 ] 189.38: zp[1]:3 [ main::x#2 main::x#1 ] 109.46: zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] 27.68: zp[1]:2 [ main::y#4 main::y#1 ] +Uplift Scope [atan2_8] 77,787,786.56: zp[1]:9 [ atan2_8::angle#6 atan2_8::angle#12 atan2_8::angle#13 atan2_8::angle#2 atan2_8::angle#3 ] 38,618,865.74: zp[1]:6 [ atan2_8::yi#3 atan2_8::yi#7 atan2_8::yi#0 atan2_8::yi#11 atan2_8::$2 atan2_8::yi#1 atan2_8::yi#2 ] 31,405,343.67: zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] 20,000,002: zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] 15,000,001.5: zp[1]:26 [ atan2_8::yd#0 ] 6,000,000.6: zp[1]:25 [ atan2_8::xd#0 ] 82,008.5: zp[1]:10 [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] 2,002: zp[1]:23 [ atan2_8::return#2 ] 1,577.12: zp[1]:21 [ atan2_8::x#0 ] 1,464.46: zp[1]:22 [ atan2_8::y#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:19 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:28 [ init_font_hex::$1 ] 200,002: zp[1]:29 [ init_font_hex::$2 ] 115,001.6: zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:27 [ init_font_hex::$0 ] 20,002: zp[1]:30 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:14 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:16 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:11 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [main] 2,002: zp[1]:24 [ main::angle#0 ] 1,876.88: zp[1]:3 [ main::x#2 main::x#1 ] 1,066.03: zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] 260.86: zp[1]:2 [ main::y#4 main::y#1 ] Uplift Scope [] -Uplifting [atan2_8] best 278273 combination zp[1]:9 [ atan2_8::angle#6 atan2_8::angle#12 atan2_8::angle#13 atan2_8::angle#2 atan2_8::angle#3 ] reg byte x [ atan2_8::yi#3 atan2_8::yi#7 atan2_8::yi#0 atan2_8::yi#11 atan2_8::$2 atan2_8::yi#1 atan2_8::yi#2 ] zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] zp[1]:26 [ atan2_8::yd#0 ] zp[1]:25 [ atan2_8::xd#0 ] zp[1]:23 [ atan2_8::return#2 ] zp[1]:10 [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] zp[1]:21 [ atan2_8::x#0 ] zp[1]:22 [ atan2_8::y#0 ] +Uplifting [atan2_8] best 278273 combination zp[1]:9 [ atan2_8::angle#6 atan2_8::angle#12 atan2_8::angle#13 atan2_8::angle#2 atan2_8::angle#3 ] reg byte x [ atan2_8::yi#3 atan2_8::yi#7 atan2_8::yi#0 atan2_8::yi#11 atan2_8::$2 atan2_8::yi#1 atan2_8::yi#2 ] zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] zp[1]:26 [ atan2_8::yd#0 ] zp[1]:25 [ atan2_8::xd#0 ] zp[1]:10 [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] zp[1]:23 [ atan2_8::return#2 ] zp[1]:21 [ atan2_8::x#0 ] zp[1]:22 [ atan2_8::y#0 ] Limited combination testing to 100 combinations of 104976 possible. -Uplifting [init_font_hex] best 259273 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:27 [ init_font_hex::$0 ] zp[1]:30 [ init_font_hex::idx#3 ] zp[2]:14 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:16 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:11 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 259273 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:27 [ init_font_hex::$0 ] zp[1]:30 [ init_font_hex::idx#3 ] zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:14 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:16 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:11 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. Uplifting [main] best 258673 combination reg byte a [ main::angle#0 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] zp[1]:2 [ main::y#4 main::y#1 ] Uplifting [] best 258673 combination @@ -2008,30 +2008,30 @@ Attempting to uplift remaining variables inzp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] Uplifting [atan2_8] best 258673 combination zp[1]:8 [ atan2_8::i#2 atan2_8::i#1 ] Attempting to uplift remaining variables inzp[1]:26 [ atan2_8::yd#0 ] Uplifting [atan2_8] best 257673 combination reg byte y [ atan2_8::yd#0 ] +Attempting to uplift remaining variables inzp[1]:25 [ atan2_8::xd#0 ] +Uplifting [atan2_8] best 257673 combination zp[1]:25 [ atan2_8::xd#0 ] Attempting to uplift remaining variables inzp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] Uplifting [init_font_hex] best 257673 combination zp[1]:20 [ init_font_hex::idx#5 init_font_hex::idx#2 ] Attempting to uplift remaining variables inzp[1]:27 [ init_font_hex::$0 ] Uplifting [init_font_hex] best 257673 combination zp[1]:27 [ init_font_hex::$0 ] -Attempting to uplift remaining variables inzp[1]:25 [ atan2_8::xd#0 ] -Uplifting [atan2_8] best 257673 combination zp[1]:25 [ atan2_8::xd#0 ] -Attempting to uplift remaining variables inzp[1]:23 [ atan2_8::return#2 ] -Uplifting [atan2_8] best 257073 combination reg byte a [ atan2_8::return#2 ] -Attempting to uplift remaining variables inzp[1]:30 [ init_font_hex::idx#3 ] -Uplifting [init_font_hex] best 256473 combination reg byte y [ init_font_hex::idx#3 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] -Uplifting [main] best 256473 combination zp[1]:3 [ main::x#2 main::x#1 ] -Attempting to uplift remaining variables inzp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Uplifting [init_font_hex] best 256473 combination zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Attempting to uplift remaining variables inzp[1]:10 [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] -Uplifting [atan2_8] best 256366 combination reg byte x [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ] -Uplifting [main] best 256366 combination zp[1]:2 [ main::y#4 main::y#1 ] +Uplifting [atan2_8] best 257366 combination reg byte x [ atan2_8::return#0 atan2_8::angle#5 atan2_8::angle#11 atan2_8::angle#1 atan2_8::angle#4 ] +Attempting to uplift remaining variables inzp[1]:30 [ init_font_hex::idx#3 ] +Uplifting [init_font_hex] best 256766 combination reg byte y [ init_font_hex::idx#3 ] +Attempting to uplift remaining variables inzp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] +Uplifting [init_font_hex] best 256766 combination zp[1]:18 [ init_font_hex::c1#4 init_font_hex::c1#1 ] +Attempting to uplift remaining variables inzp[1]:23 [ atan2_8::return#2 ] +Uplifting [atan2_8] best 256366 combination reg byte a [ atan2_8::return#2 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ] +Uplifting [main] best 256366 combination zp[1]:3 [ main::x#2 main::x#1 ] Attempting to uplift remaining variables inzp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] Uplifting [init_font_hex] best 256366 combination zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] Attempting to uplift remaining variables inzp[1]:21 [ atan2_8::x#0 ] Uplifting [atan2_8] best 256366 combination zp[1]:21 [ atan2_8::x#0 ] Attempting to uplift remaining variables inzp[1]:22 [ atan2_8::y#0 ] Uplifting [atan2_8] best 256366 combination zp[1]:22 [ atan2_8::y#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ] +Uplifting [main] best 256366 combination zp[1]:2 [ main::y#4 main::y#1 ] Coalescing zero page register [ zp[1]:2 [ main::y#4 main::y#1 ] ] with [ zp[1]:22 [ atan2_8::y#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:3 [ main::x#2 main::x#1 ] ] with [ zp[1]:21 [ atan2_8::x#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:13 [ init_font_hex::c#6 init_font_hex::c#1 ] ] with [ zp[1]:7 [ atan2_8::xi#3 atan2_8::xi#7 atan2_8::xi#0 atan2_8::xi#8 atan2_8::$7 atan2_8::xi#1 atan2_8::xi#2 ] ] @@ -2690,8 +2690,8 @@ FINAL SYMBOL TABLE (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 10240 (byte()) atan2_8((signed byte) atan2_8::x , (signed byte) atan2_8::y) -(signed byte~) atan2_8::$2 reg byte x 4.0 -(signed byte~) atan2_8::$7 zp[1]:8 4.0 +(signed byte~) atan2_8::$2 reg byte x 20002.0 +(signed byte~) atan2_8::$7 zp[1]:8 20002.0 (label) atan2_8::@1 (label) atan2_8::@10 (label) atan2_8::@11 @@ -2710,47 +2710,47 @@ FINAL SYMBOL TABLE (label) atan2_8::@9 (label) atan2_8::@return (byte) atan2_8::angle -(byte) atan2_8::angle#1 reg byte x 3.0 -(byte) atan2_8::angle#11 reg byte x 4.0 -(byte) atan2_8::angle#12 angle zp[1]:14 444.8888888888889 -(byte) atan2_8::angle#13 angle zp[1]:14 1334.6666666666667 -(byte) atan2_8::angle#2 angle zp[1]:14 2002.0 -(byte) atan2_8::angle#3 angle zp[1]:14 2002.0 -(byte) atan2_8::angle#4 reg byte x 4.0 -(byte) atan2_8::angle#5 reg byte x 4.0 -(byte) atan2_8::angle#6 angle zp[1]:14 2004.0 +(byte) atan2_8::angle#1 reg byte x 15001.5 +(byte) atan2_8::angle#11 reg byte x 20002.0 +(byte) atan2_8::angle#12 angle zp[1]:14 4444444.888888889 +(byte) atan2_8::angle#13 angle zp[1]:14 1.3333334666666666E7 +(byte) atan2_8::angle#2 angle zp[1]:14 2.0000002E7 +(byte) atan2_8::angle#3 angle zp[1]:14 2.0000002E7 +(byte) atan2_8::angle#4 reg byte x 20002.0 +(byte) atan2_8::angle#5 reg byte x 20002.0 +(byte) atan2_8::angle#6 angle zp[1]:14 2.0010003E7 (byte) atan2_8::i -(byte) atan2_8::i#1 i zp[1]:13 1501.5 -(byte) atan2_8::i#2 i zp[1]:13 500.50000000000006 +(byte) atan2_8::i#1 i zp[1]:13 1.50000015E7 +(byte) atan2_8::i#2 i zp[1]:13 5000000.5 (byte) atan2_8::return -(byte) atan2_8::return#0 reg byte x 34.99999999999999 -(byte) atan2_8::return#2 reg byte a 202.0 +(byte) atan2_8::return#0 reg byte x 7001.0 +(byte) atan2_8::return#2 reg byte a 2002.0 (signed byte) atan2_8::x -(signed byte) atan2_8::x#0 x zp[1]:3 4.192307692307692 +(signed byte) atan2_8::x#0 x zp[1]:3 1577.1153846153845 (signed byte) atan2_8::xd -(signed byte) atan2_8::xd#0 xd zp[1]:15 600.5999999999999 +(signed byte) atan2_8::xd#0 xd zp[1]:15 6000000.6 (signed byte) atan2_8::xi -(signed byte) atan2_8::xi#0 xi zp[1]:8 6.0 -(signed byte) atan2_8::xi#1 xi zp[1]:8 667.3333333333334 -(signed byte) atan2_8::xi#2 xi zp[1]:8 667.3333333333334 -(signed byte) atan2_8::xi#3 xi zp[1]:8 801.2 -(signed byte) atan2_8::xi#7 xi zp[1]:8 1001.0 -(signed byte) atan2_8::xi#8 xi zp[1]:8 4.0 +(signed byte) atan2_8::xi#0 xi zp[1]:8 30003.0 +(signed byte) atan2_8::xi#1 xi zp[1]:8 6666667.333333333 +(signed byte) atan2_8::xi#2 xi zp[1]:8 6666667.333333333 +(signed byte) atan2_8::xi#3 xi zp[1]:8 8002001.0 +(signed byte) atan2_8::xi#7 xi zp[1]:8 1.0000001E7 +(signed byte) atan2_8::xi#8 xi zp[1]:8 20002.0 (signed byte) atan2_8::y -(signed byte) atan2_8::y#0 y zp[1]:2 3.8928571428571437 +(signed byte) atan2_8::y#0 y zp[1]:2 1464.4642857142858 (signed byte) atan2_8::yd -(signed byte) atan2_8::yd#0 reg byte y 1501.5 +(signed byte) atan2_8::yd#0 reg byte y 1.50000015E7 (signed byte) atan2_8::yi -(signed byte) atan2_8::yi#0 reg byte x 1.2000000000000002 -(signed byte) atan2_8::yi#1 reg byte x 1001.0 -(signed byte) atan2_8::yi#11 reg byte x 4.0 -(signed byte) atan2_8::yi#2 reg byte x 1001.0 -(signed byte) atan2_8::yi#3 reg byte x 858.2857142857142 -(signed byte) atan2_8::yi#7 reg byte x 1001.0 +(signed byte) atan2_8::yi#0 reg byte x 6000.6 +(signed byte) atan2_8::yi#1 reg byte x 1.0000001E7 +(signed byte) atan2_8::yi#11 reg byte x 20002.0 +(signed byte) atan2_8::yi#2 reg byte x 1.0000001E7 +(signed byte) atan2_8::yi#3 reg byte x 8572858.142857142 +(signed byte) atan2_8::yi#7 reg byte x 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:15 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:15 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -2758,28 +2758,28 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:8 16.5 -(byte) init_font_hex::c#6 c zp[1]:8 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:8 1501.5 +(byte) init_font_hex::c#6 c zp[1]:8 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:13 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:13 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:13 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:13 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:9 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:9 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:9 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:9 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:9 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:9 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:14 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:14 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:14 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:14 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:11 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:11 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:11 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:11 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 @@ -2788,23 +2788,23 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::angle -(byte) main::angle#0 reg byte a 202.0 +(byte) main::angle#0 reg byte a 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 42.599999999999994 -(byte*) main::screen#2 screen zp[2]:4 44.85714285714286 -(byte*) main::screen#4 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 420.59999999999997 +(byte*) main::screen#2 screen zp[2]:4 443.42857142857144 +(byte*) main::screen#4 screen zp[2]:4 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 37.875 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 375.375 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 11.181818181818182 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 109.36363636363637 zp[1]:2 [ main::y#4 main::y#1 atan2_8::y#0 ] zp[1]:3 [ main::x#2 main::x#1 atan2_8::x#0 ] diff --git a/src/test/ref/cordic-atan2.sym b/src/test/ref/cordic-atan2.sym index 1140a043c..2ab69ccd8 100644 --- a/src/test/ref/cordic-atan2.sym +++ b/src/test/ref/cordic-atan2.sym @@ -10,8 +10,8 @@ (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 10240 (byte()) atan2_8((signed byte) atan2_8::x , (signed byte) atan2_8::y) -(signed byte~) atan2_8::$2 reg byte x 4.0 -(signed byte~) atan2_8::$7 zp[1]:8 4.0 +(signed byte~) atan2_8::$2 reg byte x 20002.0 +(signed byte~) atan2_8::$7 zp[1]:8 20002.0 (label) atan2_8::@1 (label) atan2_8::@10 (label) atan2_8::@11 @@ -30,47 +30,47 @@ (label) atan2_8::@9 (label) atan2_8::@return (byte) atan2_8::angle -(byte) atan2_8::angle#1 reg byte x 3.0 -(byte) atan2_8::angle#11 reg byte x 4.0 -(byte) atan2_8::angle#12 angle zp[1]:14 444.8888888888889 -(byte) atan2_8::angle#13 angle zp[1]:14 1334.6666666666667 -(byte) atan2_8::angle#2 angle zp[1]:14 2002.0 -(byte) atan2_8::angle#3 angle zp[1]:14 2002.0 -(byte) atan2_8::angle#4 reg byte x 4.0 -(byte) atan2_8::angle#5 reg byte x 4.0 -(byte) atan2_8::angle#6 angle zp[1]:14 2004.0 +(byte) atan2_8::angle#1 reg byte x 15001.5 +(byte) atan2_8::angle#11 reg byte x 20002.0 +(byte) atan2_8::angle#12 angle zp[1]:14 4444444.888888889 +(byte) atan2_8::angle#13 angle zp[1]:14 1.3333334666666666E7 +(byte) atan2_8::angle#2 angle zp[1]:14 2.0000002E7 +(byte) atan2_8::angle#3 angle zp[1]:14 2.0000002E7 +(byte) atan2_8::angle#4 reg byte x 20002.0 +(byte) atan2_8::angle#5 reg byte x 20002.0 +(byte) atan2_8::angle#6 angle zp[1]:14 2.0010003E7 (byte) atan2_8::i -(byte) atan2_8::i#1 i zp[1]:13 1501.5 -(byte) atan2_8::i#2 i zp[1]:13 500.50000000000006 +(byte) atan2_8::i#1 i zp[1]:13 1.50000015E7 +(byte) atan2_8::i#2 i zp[1]:13 5000000.5 (byte) atan2_8::return -(byte) atan2_8::return#0 reg byte x 34.99999999999999 -(byte) atan2_8::return#2 reg byte a 202.0 +(byte) atan2_8::return#0 reg byte x 7001.0 +(byte) atan2_8::return#2 reg byte a 2002.0 (signed byte) atan2_8::x -(signed byte) atan2_8::x#0 x zp[1]:3 4.192307692307692 +(signed byte) atan2_8::x#0 x zp[1]:3 1577.1153846153845 (signed byte) atan2_8::xd -(signed byte) atan2_8::xd#0 xd zp[1]:15 600.5999999999999 +(signed byte) atan2_8::xd#0 xd zp[1]:15 6000000.6 (signed byte) atan2_8::xi -(signed byte) atan2_8::xi#0 xi zp[1]:8 6.0 -(signed byte) atan2_8::xi#1 xi zp[1]:8 667.3333333333334 -(signed byte) atan2_8::xi#2 xi zp[1]:8 667.3333333333334 -(signed byte) atan2_8::xi#3 xi zp[1]:8 801.2 -(signed byte) atan2_8::xi#7 xi zp[1]:8 1001.0 -(signed byte) atan2_8::xi#8 xi zp[1]:8 4.0 +(signed byte) atan2_8::xi#0 xi zp[1]:8 30003.0 +(signed byte) atan2_8::xi#1 xi zp[1]:8 6666667.333333333 +(signed byte) atan2_8::xi#2 xi zp[1]:8 6666667.333333333 +(signed byte) atan2_8::xi#3 xi zp[1]:8 8002001.0 +(signed byte) atan2_8::xi#7 xi zp[1]:8 1.0000001E7 +(signed byte) atan2_8::xi#8 xi zp[1]:8 20002.0 (signed byte) atan2_8::y -(signed byte) atan2_8::y#0 y zp[1]:2 3.8928571428571437 +(signed byte) atan2_8::y#0 y zp[1]:2 1464.4642857142858 (signed byte) atan2_8::yd -(signed byte) atan2_8::yd#0 reg byte y 1501.5 +(signed byte) atan2_8::yd#0 reg byte y 1.50000015E7 (signed byte) atan2_8::yi -(signed byte) atan2_8::yi#0 reg byte x 1.2000000000000002 -(signed byte) atan2_8::yi#1 reg byte x 1001.0 -(signed byte) atan2_8::yi#11 reg byte x 4.0 -(signed byte) atan2_8::yi#2 reg byte x 1001.0 -(signed byte) atan2_8::yi#3 reg byte x 858.2857142857142 -(signed byte) atan2_8::yi#7 reg byte x 1001.0 +(signed byte) atan2_8::yi#0 reg byte x 6000.6 +(signed byte) atan2_8::yi#1 reg byte x 1.0000001E7 +(signed byte) atan2_8::yi#11 reg byte x 20002.0 +(signed byte) atan2_8::yi#2 reg byte x 1.0000001E7 +(signed byte) atan2_8::yi#3 reg byte x 8572858.142857142 +(signed byte) atan2_8::yi#7 reg byte x 1.0000001E7 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:15 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:15 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -78,28 +78,28 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:8 16.5 -(byte) init_font_hex::c#6 c zp[1]:8 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:8 1501.5 +(byte) init_font_hex::c#6 c zp[1]:8 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:13 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:13 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:13 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:13 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:9 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:9 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:9 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:9 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:9 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:9 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:14 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:14 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:14 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:14 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:11 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:11 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:11 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:11 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 @@ -108,23 +108,23 @@ (label) main::@5 (label) main::@6 (byte) main::angle -(byte) main::angle#0 reg byte a 202.0 +(byte) main::angle#0 reg byte a 2002.0 (const byte*) main::col00 = (const byte*) COLS+(word)(number) $c*(number) $28+(byte) $13 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 42.599999999999994 -(byte*) main::screen#2 screen zp[2]:4 44.85714285714286 -(byte*) main::screen#4 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 420.59999999999997 +(byte*) main::screen#2 screen zp[2]:4 443.42857142857144 +(byte*) main::screen#4 screen zp[2]:4 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (signed byte) main::x -(signed byte) main::x#1 x zp[1]:3 151.5 -(signed byte) main::x#2 x zp[1]:3 37.875 +(signed byte) main::x#1 x zp[1]:3 1501.5 +(signed byte) main::x#2 x zp[1]:3 375.375 (signed byte) main::y -(signed byte) main::y#1 y zp[1]:2 16.5 -(signed byte) main::y#4 y zp[1]:2 11.181818181818182 +(signed byte) main::y#1 y zp[1]:2 151.5 +(signed byte) main::y#4 y zp[1]:2 109.36363636363637 zp[1]:2 [ main::y#4 main::y#1 atan2_8::y#0 ] zp[1]:3 [ main::x#2 main::x#1 atan2_8::x#0 ] diff --git a/src/test/ref/cpu-6502.log b/src/test/ref/cpu-6502.log index 858dfee67..61c5b7450 100644 --- a/src/test/ref/cpu-6502.log +++ b/src/test/ref/cpu-6502.log @@ -87,7 +87,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::c#4 & (byte) 4 Inversing boolean not [8] (bool~) main::$3 ← (byte~) main::$1 != (byte) 0 from [7] (bool~) main::$2 ← (byte~) main::$1 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::c#3 = (byte) main::c#4 (byte) main::c#6 +Alias main::c#3 = main::c#4 main::c#6 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::c#3<(byte) $64) goto main::@2 Simple Condition (bool~) main::$3 [7] if((byte~) main::$1!=(byte) 0) goto main::@4 @@ -158,12 +158,12 @@ main::@3: scope:[main] from main::@2 main::@4 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::c -(byte) main::c#1 22.0 -(byte) main::c#2 22.0 -(byte) main::c#3 13.2 -(byte) main::c#5 33.0 +(byte) main::c#1 202.0 +(byte) main::c#2 202.0 +(byte) main::c#3 121.2 +(byte) main::c#5 303.0 Initial phi equivalence classes [ main::c#5 main::c#3 main::c#1 main::c#2 ] @@ -261,18 +261,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) main::screen + (byte) main::c#3) ← (byte) '*' [ main::c#3 ] ( main:2 [ main::c#3 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::c#3) ← (byte) '*' [ main::c#3 ] ( main:2 [ main::c#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#5 main::c#3 main::c#1 main::c#2 ] -Statement [9] (byte~) main::$1 ← (byte) main::c#3 & (byte) 4 [ main::c#3 main::$1 ] ( main:2 [ main::c#3 main::$1 ] ) always clobbers reg byte a -Statement [11] (byte) main::c#2 ← (byte) main::c#3 + (byte) 5 [ main::c#2 ] ( main:2 [ main::c#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::screen + (byte) main::c#3) ← (byte) '*' [ main::c#3 ] ( main:2 [ main::c#3 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$1 ← (byte) main::c#3 & (byte) 4 [ main::c#3 main::$1 ] ( main:2 [ main::c#3 main::$1 ] ) always clobbers reg byte a -Statement [11] (byte) main::c#2 ← (byte) main::c#3 + (byte) 5 [ main::c#2 ] ( main:2 [ main::c#2 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) main::c#3 & (byte) 4 [ main::c#3 main::$1 ] ( main:2 [ main::c#3 main::$1 ] { } ) always clobbers reg byte a +Statement [11] (byte) main::c#2 ← (byte) main::c#3 + (byte) 5 [ main::c#2 ] ( main:2 [ main::c#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::c#3) ← (byte) '*' [ main::c#3 ] ( main:2 [ main::c#3 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) main::c#3 & (byte) 4 [ main::c#3 main::$1 ] ( main:2 [ main::c#3 main::$1 ] { } ) always clobbers reg byte a +Statement [11] (byte) main::c#2 ← (byte) main::c#3 + (byte) 5 [ main::c#2 ] ( main:2 [ main::c#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::c#5 main::c#3 main::c#1 main::c#2 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 90.2: zp[1]:2 [ main::c#5 main::c#3 main::c#1 main::c#2 ] 22: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 828.2: zp[1]:2 [ main::c#5 main::c#3 main::c#1 main::c#2 ] 202: zp[1]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 488 combination reg byte x [ main::c#5 main::c#3 main::c#1 main::c#2 ] reg byte a [ main::$1 ] @@ -389,17 +389,17 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 22.0 -(byte) main::c#2 reg byte x 22.0 -(byte) main::c#3 reg byte x 13.2 -(byte) main::c#5 reg byte x 33.0 +(byte) main::c#1 reg byte x 202.0 +(byte) main::c#2 reg byte x 202.0 +(byte) main::c#3 reg byte x 121.2 +(byte) main::c#5 reg byte x 303.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::c#5 main::c#3 main::c#1 main::c#2 ] diff --git a/src/test/ref/cpu-6502.sym b/src/test/ref/cpu-6502.sym index 19160ba30..5a50df22b 100644 --- a/src/test/ref/cpu-6502.sym +++ b/src/test/ref/cpu-6502.sym @@ -2,17 +2,17 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 22.0 -(byte) main::c#2 reg byte x 22.0 -(byte) main::c#3 reg byte x 13.2 -(byte) main::c#5 reg byte x 33.0 +(byte) main::c#1 reg byte x 202.0 +(byte) main::c#2 reg byte x 202.0 +(byte) main::c#3 reg byte x 121.2 +(byte) main::c#5 reg byte x 303.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::c#5 main::c#3 main::c#1 main::c#2 ] diff --git a/src/test/ref/danny-joystick-problem.log b/src/test/ref/danny-joystick-problem.log index e9ccbc151..0a57c7012 100644 --- a/src/test/ref/danny-joystick-problem.log +++ b/src/test/ref/danny-joystick-problem.log @@ -86,7 +86,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::port4Value -(byte) main::port4Value#0 4.0 +(byte) main::port4Value#0 22.0 Initial phi equivalence classes Added variable main::port4Value#0 to live range equivalence class [ main::port4Value#0 ] @@ -145,12 +145,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) CIA2_PORT_B) ← *((const byte*) CIA2_PORT_B) & (byte) $7f [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) CIA2_PORT_B) ← *((const byte*) CIA2_PORT_B) & (byte) $7f [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { lda#0 } always clobbers reg byte a Potential registers zp[1]:2 [ main::port4Value#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:2 [ main::port4Value#0 ] +Uplift Scope [main] 22: zp[1]:2 [ main::port4Value#0 ] Uplift Scope [] Uplifting [main] best 41 combination reg byte a [ main::port4Value#0 ] @@ -229,7 +229,7 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (byte) main::port4Value -(byte) main::port4Value#0 reg byte a 4.0 +(byte) main::port4Value#0 reg byte a 22.0 reg byte a [ main::port4Value#0 ] diff --git a/src/test/ref/danny-joystick-problem.sym b/src/test/ref/danny-joystick-problem.sym index 5781693f5..03190dc62 100644 --- a/src/test/ref/danny-joystick-problem.sym +++ b/src/test/ref/danny-joystick-problem.sym @@ -6,6 +6,6 @@ (void()) main() (label) main::@return (byte) main::port4Value -(byte) main::port4Value#0 reg byte a 4.0 +(byte) main::port4Value#0 reg byte a 22.0 reg byte a [ main::port4Value#0 ] diff --git a/src/test/ref/declared-memory-var-0.log b/src/test/ref/declared-memory-var-0.log index 134ba4a79..d3c286512 100644 --- a/src/test/ref/declared-memory-var-0.log +++ b/src/test/ref/declared-memory-var-0.log @@ -106,11 +106,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) idx loadstore 4.125 = (byte) 0 +(byte) idx loadstore 37.875 = (byte) 0 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -187,17 +187,17 @@ main: { idx: .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] ) always clobbers reg byte a -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] { } ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ main::i#2 idx ] ( main:2 [ main::i#2 idx ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers mem[1] [ idx ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [] 4.12: mem[1] [ idx ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 37.88: mem[1] [ idx ] Uplifting [main] best 403 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 403 combination mem[1] [ idx ] @@ -294,13 +294,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore mem[1] 4.125 = (byte) 0 +(byte) idx loadstore mem[1] 37.875 = (byte) 0 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1] [ idx ] diff --git a/src/test/ref/declared-memory-var-0.sym b/src/test/ref/declared-memory-var-0.sym index 619e7f6e6..9b0969037 100644 --- a/src/test/ref/declared-memory-var-0.sym +++ b/src/test/ref/declared-memory-var-0.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore mem[1] 4.125 = (byte) 0 +(byte) idx loadstore mem[1] 37.875 = (byte) 0 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1] [ idx ] diff --git a/src/test/ref/declared-memory-var-1.log b/src/test/ref/declared-memory-var-1.log index 522679e44..84c40d765 100644 --- a/src/test/ref/declared-memory-var-1.log +++ b/src/test/ref/declared-memory-var-1.log @@ -112,8 +112,8 @@ VARIABLE REGISTER WEIGHTS (byte) idx loadstore = (byte) 0 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -192,16 +192,16 @@ main: { idx: .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) idx_p) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) idx_p) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) idx_p) ← *((const byte*) idx_p) + (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) idx_p) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) idx_p) ← *((const byte*) idx_p) + (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) idx_p) ← *((const byte*) idx_p) + (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) idx_p) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) idx_p) ← *((const byte*) idx_p) + (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers mem[1] [ idx ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] 0: mem[1] [ idx ] Uplifting [main] best 403 combination reg byte x [ main::i#2 main::i#1 ] @@ -307,8 +307,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1] [ idx ] diff --git a/src/test/ref/declared-memory-var-1.sym b/src/test/ref/declared-memory-var-1.sym index bd4f80580..eda0e6abd 100644 --- a/src/test/ref/declared-memory-var-1.sym +++ b/src/test/ref/declared-memory-var-1.sym @@ -8,8 +8,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1] [ idx ] diff --git a/src/test/ref/declared-memory-var-2.log b/src/test/ref/declared-memory-var-2.log index 75f6ce85a..3ecf9cbb6 100644 --- a/src/test/ref/declared-memory-var-2.log +++ b/src/test/ref/declared-memory-var-2.log @@ -111,11 +111,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte*) cursor loadstore 4.125 = (const byte*) SCREEN +(byte*) cursor loadstore 37.875 = (const byte*) SCREEN (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.333333333333333 +(byte) main::i#1 151.5 +(byte) main::i#2 67.33333333333333 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -200,18 +200,18 @@ main: { cursor: .word SCREEN REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) cursor) ← (byte) '*' [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) cursor) ← (byte) '*' [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte*) cursor ← (byte*) cursor + (byte) $29 [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] ) always clobbers reg byte a -Statement [6] *((byte*) cursor) ← (byte) '*' [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] ) always clobbers reg byte a reg byte y -Statement [7] (byte*) cursor ← (byte*) cursor + (byte) $29 [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] ) always clobbers reg byte a +Statement [7] (byte*) cursor ← (byte*) cursor + (byte) $29 [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] { } ) always clobbers reg byte a +Statement [6] *((byte*) cursor) ← (byte) '*' [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte*) cursor ← (byte*) cursor + (byte) $29 [ main::i#2 cursor ] ( main:2 [ main::i#2 cursor ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers mem[2] [ cursor ] : mem[2] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [] 4.12: mem[2] [ cursor ] +Uplift Scope [main] 218.83: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 37.88: mem[2] [ cursor ] Uplifting [main] best 638 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 638 combination mem[2] [ cursor ] @@ -315,13 +315,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte*) cursor loadstore mem[2] 4.125 = (const byte*) SCREEN +(byte*) cursor loadstore mem[2] 37.875 = (const byte*) SCREEN (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 7.333333333333333 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] mem[2] [ cursor ] diff --git a/src/test/ref/declared-memory-var-2.sym b/src/test/ref/declared-memory-var-2.sym index b4cb72393..a694e823c 100644 --- a/src/test/ref/declared-memory-var-2.sym +++ b/src/test/ref/declared-memory-var-2.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte*) cursor loadstore mem[2] 4.125 = (const byte*) SCREEN +(byte*) cursor loadstore mem[2] 37.875 = (const byte*) SCREEN (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 7.333333333333333 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] mem[2] [ cursor ] diff --git a/src/test/ref/declared-memory-var-3.log b/src/test/ref/declared-memory-var-3.log index 600ebe304..27bd7dd6d 100644 --- a/src/test/ref/declared-memory-var-3.log +++ b/src/test/ref/declared-memory-var-3.log @@ -171,8 +171,8 @@ main: { bar: .byte 'a', 'b' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[2] [ bar ] : mem[2] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/declared-memory-var-4.log b/src/test/ref/declared-memory-var-4.log index 15838c83d..e7a8f091f 100644 --- a/src/test/ref/declared-memory-var-4.log +++ b/src/test/ref/declared-memory-var-4.log @@ -183,11 +183,11 @@ VARIABLE REGISTER WEIGHTS (byte) foo::thing2 (void()) main() (byte) main::i -(byte) main::i#3 7.333333333333333 -(byte) main::i#4 16.5 +(byte) main::i#3 67.33333333333333 +(byte) main::i#4 151.5 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 11.0 +(byte) main::j#1 151.5 +(byte) main::j#2 101.0 Initial phi equivalence classes [ main::j#2 main::j#1 ] @@ -281,20 +281,20 @@ main: { .fill 8, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN + (byte) main::i#4) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING3 + (byte) main::j#2) [ main::j#2 main::i#4 ] ( main:2 [ main::j#2 main::i#4 ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN + (byte) main::i#4) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING3 + (byte) main::j#2) [ main::j#2 main::i#4 ] ( main:2 [ main::j#2 main::i#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#4 main::i#3 ] -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN + (byte) main::i#4) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING3 + (byte) main::j#2) [ main::j#2 main::i#4 ] ( main:2 [ main::j#2 main::i#4 ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct foo*) main::barp) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN + (byte) main::i#4) ← *((byte*)(const struct foo*) main::barp+(const byte) OFFSET_STRUCT_FOO_THING3 + (byte) main::j#2) [ main::j#2 main::i#4 ] ( main:2 [ main::j#2 main::i#4 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#4 main::i#3 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers mem[14] [ bar ] : mem[14] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::j#2 main::j#1 ] 23.83: zp[1]:3 [ main::i#4 main::i#3 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::j#2 main::j#1 ] 218.83: zp[1]:3 [ main::i#4 main::i#3 ] Uplift Scope [foo] Uplift Scope [] 0: mem[14] [ bar ] @@ -413,11 +413,11 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (const struct foo*) main::barp = &(struct foo) bar (byte) main::i -(byte) main::i#3 reg byte x 7.333333333333333 -(byte) main::i#4 reg byte x 16.5 +(byte) main::i#3 reg byte x 67.33333333333333 +(byte) main::i#4 reg byte x 151.5 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 reg byte y 11.0 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 reg byte y 101.0 reg byte y [ main::j#2 main::j#1 ] reg byte x [ main::i#4 main::i#3 ] diff --git a/src/test/ref/declared-memory-var-4.sym b/src/test/ref/declared-memory-var-4.sym index 022a7e341..a0c932df1 100644 --- a/src/test/ref/declared-memory-var-4.sym +++ b/src/test/ref/declared-memory-var-4.sym @@ -13,11 +13,11 @@ (const byte*) main::SCREEN = (byte*) 1024 (const struct foo*) main::barp = &(struct foo) bar (byte) main::i -(byte) main::i#3 reg byte x 7.333333333333333 -(byte) main::i#4 reg byte x 16.5 +(byte) main::i#3 reg byte x 67.33333333333333 +(byte) main::i#4 reg byte x 151.5 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 reg byte y 11.0 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 reg byte y 101.0 reg byte y [ main::j#2 main::j#1 ] reg byte x [ main::i#4 main::i#3 ] diff --git a/src/test/ref/declared-memory-var-5.log b/src/test/ref/declared-memory-var-5.log index a1f2e1b58..726dfcb8b 100644 --- a/src/test/ref/declared-memory-var-5.log +++ b/src/test/ref/declared-memory-var-5.log @@ -156,8 +156,8 @@ main: { bar: .byte 'a', 'b' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)&(struct foo) bar) [ bar ] ( main:2 [ bar ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)&(struct foo) bar+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)&(struct foo) bar) [ bar ] ( main:2 [ bar ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)&(struct foo) bar+(const byte) OFFSET_STRUCT_FOO_THING2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[2] [ bar ] : mem[2] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/declared-memory-var-6.log b/src/test/ref/declared-memory-var-6.log index 0e87b67ef..c68d2a266 100644 --- a/src/test/ref/declared-memory-var-6.log +++ b/src/test/ref/declared-memory-var-6.log @@ -184,19 +184,19 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) i#1 = (byte) i#15 -Alias (byte) i#16 = (byte) i#2 -Alias (byte) i#17 = (byte) i#3 -Alias (byte) i#18 = (byte) i#4 -Alias (byte) i#19 = (byte) i#5 -Alias (byte) i#20 = (byte) i#6 -Alias (byte) i#21 = (byte) i#7 -Alias (byte) i#22 = (byte) i#8 -Alias (byte) i#23 = (byte) i#9 -Alias (byte) i#10 = (byte) i#24 (byte) i#25 (byte) i#11 -Alias (byte) i#12 = (byte) i#27 (byte) i#13 -Alias (byte) i#0 = (byte) i#30 -Alias (byte) i#14 = (byte) i#28 +Alias i#1 = i#15 +Alias i#16 = i#2 +Alias i#17 = i#3 +Alias i#18 = i#4 +Alias i#19 = i#5 +Alias i#20 = i#6 +Alias i#21 = i#7 +Alias i#22 = i#8 +Alias i#23 = i#9 +Alias i#10 = i#24 i#25 i#11 +Alias i#12 = i#27 i#13 +Alias i#0 = i#30 +Alias i#14 = i#28 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) i#29 (byte) i#0 Identical Phi Values (byte) i#1 (byte) i#12 @@ -354,12 +354,12 @@ out::@return: scope:[out] from out VARIABLE REGISTER WEIGHTS (byte) i -(byte) i#12 0.9999999999999999 -(byte) i#26 11.0 +(byte) i#12 10.0 +(byte) i#26 150.5 (void()) main() (void()) out((byte) out::c) (byte) out::c -(byte) out::c#10 2.0 +(byte) out::c#10 101.0 Initial phi equivalence classes [ out::c#10 ] @@ -565,8 +565,8 @@ Potential registers zp[1]:2 [ out::c#10 ] : zp[1]:2 , reg byte a , reg byte x , Potential registers zp[1]:3 [ i#26 i#12 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 12: zp[1]:3 [ i#26 i#12 ] -Uplift Scope [out] 2: zp[1]:2 [ out::c#10 ] +Uplift Scope [] 160.5: zp[1]:3 [ i#26 i#12 ] +Uplift Scope [out] 101: zp[1]:2 [ out::c#10 ] Uplift Scope [main] Uplifting [] best 179 combination reg byte x [ i#26 i#12 ] @@ -811,8 +811,8 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) i -(byte) i#12 reg byte x 0.9999999999999999 -(byte) i#26 reg byte x 11.0 +(byte) i#12 reg byte x 10.0 +(byte) i#26 reg byte x 150.5 (void()) main() (label) main::@1 (label) main::@2 @@ -837,7 +837,7 @@ FINAL SYMBOL TABLE (void()) out((byte) out::c) (label) out::@return (byte) out::c -(byte) out::c#10 reg byte a 2.0 +(byte) out::c#10 reg byte a 101.0 reg byte a [ out::c#10 ] reg byte x [ i#26 i#12 ] diff --git a/src/test/ref/declared-memory-var-6.sym b/src/test/ref/declared-memory-var-6.sym index c38a0284b..f608eb96c 100644 --- a/src/test/ref/declared-memory-var-6.sym +++ b/src/test/ref/declared-memory-var-6.sym @@ -3,8 +3,8 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) i -(byte) i#12 reg byte x 0.9999999999999999 -(byte) i#26 reg byte x 11.0 +(byte) i#12 reg byte x 10.0 +(byte) i#26 reg byte x 150.5 (void()) main() (label) main::@1 (label) main::@2 @@ -29,7 +29,7 @@ (void()) out((byte) out::c) (label) out::@return (byte) out::c -(byte) out::c#10 reg byte a 2.0 +(byte) out::c#10 reg byte a 101.0 reg byte a [ out::c#10 ] reg byte x [ i#26 i#12 ] diff --git a/src/test/ref/declared-memory-var-7.log b/src/test/ref/declared-memory-var-7.log index 75ae8d545..f67d068eb 100644 --- a/src/test/ref/declared-memory-var-7.log +++ b/src/test/ref/declared-memory-var-7.log @@ -105,11 +105,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) idx loadstore 4.375 +(byte) idx loadstore 38.125 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -190,19 +190,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx ] : zp[1]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [] 4.38: zp[1]:3 [ idx ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 38.12: zp[1]:3 [ idx ] Uplifting [main] best 378 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 378 combination zp[1]:3 [ idx ] @@ -301,13 +301,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore zp[1]:2 4.375 +(byte) idx loadstore zp[1]:2 38.125 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ idx ] diff --git a/src/test/ref/declared-memory-var-7.sym b/src/test/ref/declared-memory-var-7.sym index a58071fd8..549bb0cad 100644 --- a/src/test/ref/declared-memory-var-7.sym +++ b/src/test/ref/declared-memory-var-7.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore zp[1]:2 4.375 +(byte) idx loadstore zp[1]:2 38.125 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ idx ] diff --git a/src/test/ref/declared-memory-var-8.log b/src/test/ref/declared-memory-var-8.log index e70fefda0..d5f0eea25 100644 --- a/src/test/ref/declared-memory-var-8.log +++ b/src/test/ref/declared-memory-var-8.log @@ -105,11 +105,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) idx loadstore !mem[-1]:4096 4.375 +(byte) idx loadstore !mem[-1]:4096 38.125 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -189,19 +189,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) idx [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [7] (byte) idx ← (byte) idx + (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers mem[1]:4096 [ idx ] : mem[1]:4096 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [] 4.38: mem[1]:4096 [ idx ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 38.12: mem[1]:4096 [ idx ] Uplifting [main] best 409 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 409 combination mem[1]:4096 [ idx ] @@ -299,13 +299,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore !mem[-1]:4096 mem[1]:4096 4.375 +(byte) idx loadstore !mem[-1]:4096 mem[1]:4096 38.125 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1]:4096 [ idx ] diff --git a/src/test/ref/declared-memory-var-8.sym b/src/test/ref/declared-memory-var-8.sym index 3eb5aa02f..d77b8227d 100644 --- a/src/test/ref/declared-memory-var-8.sym +++ b/src/test/ref/declared-memory-var-8.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) idx loadstore !mem[-1]:4096 mem[1]:4096 4.375 +(byte) idx loadstore !mem[-1]:4096 mem[1]:4096 38.125 (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] mem[1]:4096 [ idx ] diff --git a/src/test/ref/declared-ssa-var-0.log b/src/test/ref/declared-ssa-var-0.log index a8ad7ea74..8568d93a2 100644 --- a/src/test/ref/declared-ssa-var-0.log +++ b/src/test/ref/declared-ssa-var-0.log @@ -174,15 +174,15 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) idx_ssa_g#2 = (byte) idx_ssa_g#8 -Alias (byte) main::idx_ssa_l#8 = (byte) main::idx_ssa_l#9 -Alias (byte) main::idx_ssa_l#4 = (byte) main::idx_ssa_l#7 -Alias (byte) idx_ssa_g#16 = (byte) idx_ssa_g#17 -Alias (byte) main::idx_ssa_l#2 = (byte) main::idx_ssa_l#6 -Alias (byte) idx_ssa_g#14 = (byte) idx_ssa_g#15 -Alias (byte) idx_ssa_g#12 = (byte) idx_ssa_g#13 (byte) idx_ssa_g#9 (byte) idx_ssa_g#4 -Alias (byte) idx_ssa_g#0 = (byte) idx_ssa_g#11 -Alias (byte) idx_ssa_g#10 = (byte) idx_ssa_g#5 +Alias idx_ssa_g#2 = idx_ssa_g#8 +Alias main::idx_ssa_l#8 = main::idx_ssa_l#9 +Alias main::idx_ssa_l#4 = main::idx_ssa_l#7 +Alias idx_ssa_g#16 = idx_ssa_g#17 +Alias main::idx_ssa_l#2 = main::idx_ssa_l#6 +Alias idx_ssa_g#14 = idx_ssa_g#15 +Alias idx_ssa_g#12 = idx_ssa_g#13 idx_ssa_g#9 idx_ssa_g#4 +Alias idx_ssa_g#0 = idx_ssa_g#11 +Alias idx_ssa_g#10 = idx_ssa_g#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx_ssa_g#6 (byte) idx_ssa_g#0 Identical Phi Values (byte) main::idx_ssa_l#8 (byte) main::idx_ssa_l#0 @@ -364,27 +364,27 @@ main::@return: scope:[main] from main::@8 VARIABLE REGISTER WEIGHTS -(byte) idx_nssa_g loadstore 2.611111111111111 +(byte) idx_nssa_g loadstore 20.61111111111111 (byte) idx_ssa_g -(byte) idx_ssa_g#2 8.0 -(byte) idx_ssa_g#7 16.5 +(byte) idx_ssa_g#2 71.0 +(byte) idx_ssa_g#7 151.5 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 11.0 +(byte) main::i1#1 151.5 +(byte) main::i1#2 101.0 (byte) main::i2 -(byte) main::i2#1 16.5 -(byte) main::i2#2 11.0 +(byte) main::i2#1 151.5 +(byte) main::i2#2 101.0 (byte) main::i3 -(byte) main::i3#1 16.5 -(byte) main::i3#2 11.0 -(byte) main::idx_nssa_l loadstore 1.46875 +(byte) main::i3#1 151.5 +(byte) main::i3#2 101.0 +(byte) main::idx_nssa_l loadstore 11.875 (byte) main::idx_ssa_l -(byte) main::idx_ssa_l#2 8.0 -(byte) main::idx_ssa_l#5 16.5 +(byte) main::idx_ssa_l#2 71.0 +(byte) main::idx_ssa_l#5 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -619,32 +619,32 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx_nssa_g ← (byte) 0 [ idx_nssa_g ] ( [ idx_nssa_g ] ) always clobbers reg byte a -Statement [4] (byte) main::idx_nssa_l ← (byte) 0 [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN1) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN1 + (byte) idx_ssa_g#2) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [15] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) main::i1#2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ( main:2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ) always clobbers reg byte y +Statement [0] (byte) idx_nssa_g ← (byte) 0 [ idx_nssa_g ] ( [ idx_nssa_g ] { } ) always clobbers reg byte a +Statement [4] (byte) main::idx_nssa_l ← (byte) 0 [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN1) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN1 + (byte) idx_ssa_g#2) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [15] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) main::i1#2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ( main:2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i1#2 main::i1#1 ] -Statement [19] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [21] *((const byte*) SCREEN3) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a -Statement [27] *((const byte*) SCREEN3 + (byte) main::idx_ssa_l#2) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [31] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) main::i3#2 [ main::idx_nssa_l main::i3#2 ] ( main:2 [ main::idx_nssa_l main::i3#2 ] ) always clobbers reg byte y +Statement [19] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [21] *((const byte*) SCREEN3) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) SCREEN3 + (byte) main::idx_ssa_l#2) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [31] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) main::i3#2 [ main::idx_nssa_l main::i3#2 ] ( main:2 [ main::idx_nssa_l main::i3#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::i3#2 main::i3#1 ] -Statement [35] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [0] (byte) idx_nssa_g ← (byte) 0 [ idx_nssa_g ] ( [ idx_nssa_g ] ) always clobbers reg byte a -Statement [4] (byte) main::idx_nssa_l ← (byte) 0 [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN1) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN1 + (byte) idx_ssa_g#2) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [15] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) main::i1#2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ( main:2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ) always clobbers reg byte y -Statement [19] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [21] *((const byte*) SCREEN3) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a -Statement [27] *((const byte*) SCREEN3 + (byte) main::idx_ssa_l#2) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a reg byte y -Statement [31] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) main::i3#2 [ main::idx_nssa_l main::i3#2 ] ( main:2 [ main::idx_nssa_l main::i3#2 ] ) always clobbers reg byte y -Statement [35] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] ) always clobbers reg byte a reg byte y +Statement [35] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [0] (byte) idx_nssa_g ← (byte) 0 [ idx_nssa_g ] ( [ idx_nssa_g ] { } ) always clobbers reg byte a +Statement [4] (byte) main::idx_nssa_l ← (byte) 0 [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN1) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN1 + (byte) idx_ssa_g#2) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) 'C' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [15] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) main::i1#2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] ( main:2 [ idx_nssa_g main::idx_nssa_l main::i1#2 ] { } ) always clobbers reg byte y +Statement [19] *((const byte*) SCREEN2 + (byte) idx_nssa_g) ← (byte) '!' [ idx_nssa_g main::idx_nssa_l ] ( main:2 [ idx_nssa_g main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [21] *((const byte*) SCREEN3) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) SCREEN3 + (byte) main::idx_ssa_l#2) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) 'C' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y +Statement [31] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) main::i3#2 [ main::idx_nssa_l main::i3#2 ] ( main:2 [ main::idx_nssa_l main::i3#2 ] { } ) always clobbers reg byte y +Statement [35] *((const byte*) SCREEN4 + (byte) main::idx_nssa_l) ← (byte) '!' [ main::idx_nssa_l ] ( main:2 [ main::idx_nssa_l ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx_ssa_g#7 idx_ssa_g#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::i1#2 main::i1#1 ] : zp[1]:4 , reg byte a , reg byte x , @@ -655,8 +655,8 @@ Potential registers zp[1]:8 [ idx_nssa_g ] : zp[1]:8 , Potential registers zp[1]:9 [ main::idx_nssa_l ] : zp[1]:9 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 27.5: zp[1]:4 [ main::i1#2 main::i1#1 ] 27.5: zp[1]:5 [ main::i2#2 main::i2#1 ] 27.5: zp[1]:7 [ main::i3#2 main::i3#1 ] 24.5: zp[1]:6 [ main::idx_ssa_l#5 main::idx_ssa_l#2 ] 1.47: zp[1]:9 [ main::idx_nssa_l ] -Uplift Scope [] 24.5: zp[1]:3 [ idx_ssa_g#7 idx_ssa_g#2 ] 2.61: zp[1]:8 [ idx_nssa_g ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 252.5: zp[1]:4 [ main::i1#2 main::i1#1 ] 252.5: zp[1]:5 [ main::i2#2 main::i2#1 ] 252.5: zp[1]:7 [ main::i3#2 main::i3#1 ] 222.5: zp[1]:6 [ main::idx_ssa_l#5 main::idx_ssa_l#2 ] 11.88: zp[1]:9 [ main::idx_nssa_l ] +Uplift Scope [] 222.5: zp[1]:3 [ idx_ssa_g#7 idx_ssa_g#2 ] 20.61: zp[1]:8 [ idx_nssa_g ] Uplifting [main] best 1523 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::i1#2 main::i1#1 ] reg byte x [ main::i2#2 main::i2#1 ] reg byte a [ main::i3#2 main::i3#1 ] zp[1]:6 [ main::idx_ssa_l#5 main::idx_ssa_l#2 ] zp[1]:9 [ main::idx_nssa_l ] Limited combination testing to 100 combinations of 576 possible. @@ -906,10 +906,10 @@ FINAL SYMBOL TABLE (const byte*) SCREEN2 = (byte*)(number) $400+(number) $28 (const byte*) SCREEN3 = (byte*)(number) $400+(number) $50 (const byte*) SCREEN4 = (byte*)(number) $400+(number) $78 -(byte) idx_nssa_g loadstore zp[1]:2 2.611111111111111 +(byte) idx_nssa_g loadstore zp[1]:2 20.61111111111111 (byte) idx_ssa_g -(byte) idx_ssa_g#2 reg byte y 8.0 -(byte) idx_ssa_g#7 reg byte y 16.5 +(byte) idx_ssa_g#2 reg byte y 71.0 +(byte) idx_ssa_g#7 reg byte y 151.5 (void()) main() (label) main::@1 (label) main::@2 @@ -921,21 +921,21 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte a 16.5 -(byte) main::i1#2 reg byte a 11.0 +(byte) main::i1#1 reg byte a 151.5 +(byte) main::i1#2 reg byte a 101.0 (byte) main::i2 -(byte) main::i2#1 reg byte x 16.5 -(byte) main::i2#2 reg byte x 11.0 +(byte) main::i2#1 reg byte x 151.5 +(byte) main::i2#2 reg byte x 101.0 (byte) main::i3 -(byte) main::i3#1 reg byte a 16.5 -(byte) main::i3#2 reg byte a 11.0 -(byte) main::idx_nssa_l loadstore zp[1]:3 1.46875 +(byte) main::i3#1 reg byte a 151.5 +(byte) main::i3#2 reg byte a 101.0 +(byte) main::idx_nssa_l loadstore zp[1]:3 11.875 (byte) main::idx_ssa_l -(byte) main::idx_ssa_l#2 reg byte y 8.0 -(byte) main::idx_ssa_l#5 reg byte y 16.5 +(byte) main::idx_ssa_l#2 reg byte y 71.0 +(byte) main::idx_ssa_l#5 reg byte y 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte y [ idx_ssa_g#7 idx_ssa_g#2 ] diff --git a/src/test/ref/declared-ssa-var-0.sym b/src/test/ref/declared-ssa-var-0.sym index 9e704a576..defd6b313 100644 --- a/src/test/ref/declared-ssa-var-0.sym +++ b/src/test/ref/declared-ssa-var-0.sym @@ -5,10 +5,10 @@ (const byte*) SCREEN2 = (byte*)(number) $400+(number) $28 (const byte*) SCREEN3 = (byte*)(number) $400+(number) $50 (const byte*) SCREEN4 = (byte*)(number) $400+(number) $78 -(byte) idx_nssa_g loadstore zp[1]:2 2.611111111111111 +(byte) idx_nssa_g loadstore zp[1]:2 20.61111111111111 (byte) idx_ssa_g -(byte) idx_ssa_g#2 reg byte y 8.0 -(byte) idx_ssa_g#7 reg byte y 16.5 +(byte) idx_ssa_g#2 reg byte y 71.0 +(byte) idx_ssa_g#7 reg byte y 151.5 (void()) main() (label) main::@1 (label) main::@2 @@ -20,21 +20,21 @@ (label) main::@8 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte a 16.5 -(byte) main::i1#2 reg byte a 11.0 +(byte) main::i1#1 reg byte a 151.5 +(byte) main::i1#2 reg byte a 101.0 (byte) main::i2 -(byte) main::i2#1 reg byte x 16.5 -(byte) main::i2#2 reg byte x 11.0 +(byte) main::i2#1 reg byte x 151.5 +(byte) main::i2#2 reg byte x 101.0 (byte) main::i3 -(byte) main::i3#1 reg byte a 16.5 -(byte) main::i3#2 reg byte a 11.0 -(byte) main::idx_nssa_l loadstore zp[1]:3 1.46875 +(byte) main::i3#1 reg byte a 151.5 +(byte) main::i3#2 reg byte a 101.0 +(byte) main::idx_nssa_l loadstore zp[1]:3 11.875 (byte) main::idx_ssa_l -(byte) main::idx_ssa_l#2 reg byte y 8.0 -(byte) main::idx_ssa_l#5 reg byte y 16.5 +(byte) main::idx_ssa_l#2 reg byte y 71.0 +(byte) main::idx_ssa_l#5 reg byte y 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte y [ idx_ssa_g#7 idx_ssa_g#2 ] diff --git a/src/test/ref/deep-nesting.log b/src/test/ref/deep-nesting.log index eceb37061..b060a16d0 100644 --- a/src/test/ref/deep-nesting.log +++ b/src/test/ref/deep-nesting.log @@ -4032,206 +4032,206 @@ Inferred type updated to byte in (unumber~) f96::$1 ← (byte~) f96::$0 + (byte) Inferred type updated to byte in (unumber~) f97::$1 ← (byte~) f97::$0 + (byte) 1 Inferred type updated to byte in (unumber~) f98::$1 ← (byte~) f98::$0 + (byte) 1 Inferred type updated to byte in (unumber~) f99::$1 ← (byte~) f99::$0 + (byte) 1 -Alias (byte) f1::return#0 = (byte) f1::return#3 -Alias (byte) f2::return#0 = (byte) f2::return#3 -Alias (byte) f1::return#1 = (byte~) f1::$1 (byte) f1::return#4 (byte) f1::return#2 -Alias (byte) f3::return#0 = (byte) f3::return#3 -Alias (byte) f2::return#1 = (byte~) f2::$1 (byte) f2::return#4 (byte) f2::return#2 -Alias (byte) f4::return#0 = (byte) f4::return#3 -Alias (byte) f3::return#1 = (byte~) f3::$1 (byte) f3::return#4 (byte) f3::return#2 -Alias (byte) f5::return#0 = (byte) f5::return#3 -Alias (byte) f4::return#1 = (byte~) f4::$1 (byte) f4::return#4 (byte) f4::return#2 -Alias (byte) f6::return#0 = (byte) f6::return#3 -Alias (byte) f5::return#1 = (byte~) f5::$1 (byte) f5::return#4 (byte) f5::return#2 -Alias (byte) f7::return#0 = (byte) f7::return#3 -Alias (byte) f6::return#1 = (byte~) f6::$1 (byte) f6::return#4 (byte) f6::return#2 -Alias (byte) f8::return#0 = (byte) f8::return#3 -Alias (byte) f7::return#1 = (byte~) f7::$1 (byte) f7::return#4 (byte) f7::return#2 -Alias (byte) f9::return#0 = (byte) f9::return#3 -Alias (byte) f8::return#1 = (byte~) f8::$1 (byte) f8::return#4 (byte) f8::return#2 -Alias (byte) f10::return#0 = (byte) f10::return#3 -Alias (byte) f9::return#1 = (byte~) f9::$1 (byte) f9::return#4 (byte) f9::return#2 -Alias (byte) f11::return#0 = (byte) f11::return#3 -Alias (byte) f10::return#1 = (byte~) f10::$1 (byte) f10::return#4 (byte) f10::return#2 -Alias (byte) f12::return#0 = (byte) f12::return#3 -Alias (byte) f11::return#1 = (byte~) f11::$1 (byte) f11::return#4 (byte) f11::return#2 -Alias (byte) f13::return#0 = (byte) f13::return#3 -Alias (byte) f12::return#1 = (byte~) f12::$1 (byte) f12::return#4 (byte) f12::return#2 -Alias (byte) f14::return#0 = (byte) f14::return#3 -Alias (byte) f13::return#1 = (byte~) f13::$1 (byte) f13::return#4 (byte) f13::return#2 -Alias (byte) f15::return#0 = (byte) f15::return#3 -Alias (byte) f14::return#1 = (byte~) f14::$1 (byte) f14::return#4 (byte) f14::return#2 -Alias (byte) f16::return#0 = (byte) f16::return#3 -Alias (byte) f15::return#1 = (byte~) f15::$1 (byte) f15::return#4 (byte) f15::return#2 -Alias (byte) f17::return#0 = (byte) f17::return#3 -Alias (byte) f16::return#1 = (byte~) f16::$1 (byte) f16::return#4 (byte) f16::return#2 -Alias (byte) f18::return#0 = (byte) f18::return#3 -Alias (byte) f17::return#1 = (byte~) f17::$1 (byte) f17::return#4 (byte) f17::return#2 -Alias (byte) f19::return#0 = (byte) f19::return#3 -Alias (byte) f18::return#1 = (byte~) f18::$1 (byte) f18::return#4 (byte) f18::return#2 -Alias (byte) f20::return#0 = (byte) f20::return#3 -Alias (byte) f19::return#1 = (byte~) f19::$1 (byte) f19::return#4 (byte) f19::return#2 -Alias (byte) f21::return#0 = (byte) f21::return#3 -Alias (byte) f20::return#1 = (byte~) f20::$1 (byte) f20::return#4 (byte) f20::return#2 -Alias (byte) f22::return#0 = (byte) f22::return#3 -Alias (byte) f21::return#1 = (byte~) f21::$1 (byte) f21::return#4 (byte) f21::return#2 -Alias (byte) f23::return#0 = (byte) f23::return#3 -Alias (byte) f22::return#1 = (byte~) f22::$1 (byte) f22::return#4 (byte) f22::return#2 -Alias (byte) f24::return#0 = (byte) f24::return#3 -Alias (byte) f23::return#1 = (byte~) f23::$1 (byte) f23::return#4 (byte) f23::return#2 -Alias (byte) f25::return#0 = (byte) f25::return#3 -Alias (byte) f24::return#1 = (byte~) f24::$1 (byte) f24::return#4 (byte) f24::return#2 -Alias (byte) f26::return#0 = (byte) f26::return#3 -Alias (byte) f25::return#1 = (byte~) f25::$1 (byte) f25::return#4 (byte) f25::return#2 -Alias (byte) f27::return#0 = (byte) f27::return#3 -Alias (byte) f26::return#1 = (byte~) f26::$1 (byte) f26::return#4 (byte) f26::return#2 -Alias (byte) f28::return#0 = (byte) f28::return#3 -Alias (byte) f27::return#1 = (byte~) f27::$1 (byte) f27::return#4 (byte) f27::return#2 -Alias (byte) f29::return#0 = (byte) f29::return#3 -Alias (byte) f28::return#1 = (byte~) f28::$1 (byte) f28::return#4 (byte) f28::return#2 -Alias (byte) f30::return#0 = (byte) f30::return#3 -Alias (byte) f29::return#1 = (byte~) f29::$1 (byte) f29::return#4 (byte) f29::return#2 -Alias (byte) f31::return#0 = (byte) f31::return#3 -Alias (byte) f30::return#1 = (byte~) f30::$1 (byte) f30::return#4 (byte) f30::return#2 -Alias (byte) f32::return#0 = (byte) f32::return#3 -Alias (byte) f31::return#1 = (byte~) f31::$1 (byte) f31::return#4 (byte) f31::return#2 -Alias (byte) f33::return#0 = (byte) f33::return#3 -Alias (byte) f32::return#1 = (byte~) f32::$1 (byte) f32::return#4 (byte) f32::return#2 -Alias (byte) f34::return#0 = (byte) f34::return#3 -Alias (byte) f33::return#1 = (byte~) f33::$1 (byte) f33::return#4 (byte) f33::return#2 -Alias (byte) f35::return#0 = (byte) f35::return#3 -Alias (byte) f34::return#1 = (byte~) f34::$1 (byte) f34::return#4 (byte) f34::return#2 -Alias (byte) f36::return#0 = (byte) f36::return#3 -Alias (byte) f35::return#1 = (byte~) f35::$1 (byte) f35::return#4 (byte) f35::return#2 -Alias (byte) f37::return#0 = (byte) f37::return#3 -Alias (byte) f36::return#1 = (byte~) f36::$1 (byte) f36::return#4 (byte) f36::return#2 -Alias (byte) f38::return#0 = (byte) f38::return#3 -Alias (byte) f37::return#1 = (byte~) f37::$1 (byte) f37::return#4 (byte) f37::return#2 -Alias (byte) f39::return#0 = (byte) f39::return#3 -Alias (byte) f38::return#1 = (byte~) f38::$1 (byte) f38::return#4 (byte) f38::return#2 -Alias (byte) f40::return#0 = (byte) f40::return#3 -Alias (byte) f39::return#1 = (byte~) f39::$1 (byte) f39::return#4 (byte) f39::return#2 -Alias (byte) f41::return#0 = (byte) f41::return#3 -Alias (byte) f40::return#1 = (byte~) f40::$1 (byte) f40::return#4 (byte) f40::return#2 -Alias (byte) f42::return#0 = (byte) f42::return#3 -Alias (byte) f41::return#1 = (byte~) f41::$1 (byte) f41::return#4 (byte) f41::return#2 -Alias (byte) f43::return#0 = (byte) f43::return#3 -Alias (byte) f42::return#1 = (byte~) f42::$1 (byte) f42::return#4 (byte) f42::return#2 -Alias (byte) f44::return#0 = (byte) f44::return#3 -Alias (byte) f43::return#1 = (byte~) f43::$1 (byte) f43::return#4 (byte) f43::return#2 -Alias (byte) f45::return#0 = (byte) f45::return#3 -Alias (byte) f44::return#1 = (byte~) f44::$1 (byte) f44::return#4 (byte) f44::return#2 -Alias (byte) f46::return#0 = (byte) f46::return#3 -Alias (byte) f45::return#1 = (byte~) f45::$1 (byte) f45::return#4 (byte) f45::return#2 -Alias (byte) f47::return#0 = (byte) f47::return#3 -Alias (byte) f46::return#1 = (byte~) f46::$1 (byte) f46::return#4 (byte) f46::return#2 -Alias (byte) f48::return#0 = (byte) f48::return#3 -Alias (byte) f47::return#1 = (byte~) f47::$1 (byte) f47::return#4 (byte) f47::return#2 -Alias (byte) f49::return#0 = (byte) f49::return#3 -Alias (byte) f48::return#1 = (byte~) f48::$1 (byte) f48::return#4 (byte) f48::return#2 -Alias (byte) f50::return#0 = (byte) f50::return#3 -Alias (byte) f49::return#1 = (byte~) f49::$1 (byte) f49::return#4 (byte) f49::return#2 -Alias (byte) f51::return#0 = (byte) f51::return#3 -Alias (byte) f50::return#1 = (byte~) f50::$1 (byte) f50::return#4 (byte) f50::return#2 -Alias (byte) f52::return#0 = (byte) f52::return#3 -Alias (byte) f51::return#1 = (byte~) f51::$1 (byte) f51::return#4 (byte) f51::return#2 -Alias (byte) f53::return#0 = (byte) f53::return#3 -Alias (byte) f52::return#1 = (byte~) f52::$1 (byte) f52::return#4 (byte) f52::return#2 -Alias (byte) f54::return#0 = (byte) f54::return#3 -Alias (byte) f53::return#1 = (byte~) f53::$1 (byte) f53::return#4 (byte) f53::return#2 -Alias (byte) f55::return#0 = (byte) f55::return#3 -Alias (byte) f54::return#1 = (byte~) f54::$1 (byte) f54::return#4 (byte) f54::return#2 -Alias (byte) f56::return#0 = (byte) f56::return#3 -Alias (byte) f55::return#1 = (byte~) f55::$1 (byte) f55::return#4 (byte) f55::return#2 -Alias (byte) f57::return#0 = (byte) f57::return#3 -Alias (byte) f56::return#1 = (byte~) f56::$1 (byte) f56::return#4 (byte) f56::return#2 -Alias (byte) f58::return#0 = (byte) f58::return#3 -Alias (byte) f57::return#1 = (byte~) f57::$1 (byte) f57::return#4 (byte) f57::return#2 -Alias (byte) f59::return#0 = (byte) f59::return#3 -Alias (byte) f58::return#1 = (byte~) f58::$1 (byte) f58::return#4 (byte) f58::return#2 -Alias (byte) f60::return#0 = (byte) f60::return#3 -Alias (byte) f59::return#1 = (byte~) f59::$1 (byte) f59::return#4 (byte) f59::return#2 -Alias (byte) f61::return#0 = (byte) f61::return#3 -Alias (byte) f60::return#1 = (byte~) f60::$1 (byte) f60::return#4 (byte) f60::return#2 -Alias (byte) f62::return#0 = (byte) f62::return#3 -Alias (byte) f61::return#1 = (byte~) f61::$1 (byte) f61::return#4 (byte) f61::return#2 -Alias (byte) f63::return#0 = (byte) f63::return#3 -Alias (byte) f62::return#1 = (byte~) f62::$1 (byte) f62::return#4 (byte) f62::return#2 -Alias (byte) f64::return#0 = (byte) f64::return#3 -Alias (byte) f63::return#1 = (byte~) f63::$1 (byte) f63::return#4 (byte) f63::return#2 -Alias (byte) f65::return#0 = (byte) f65::return#3 -Alias (byte) f64::return#1 = (byte~) f64::$1 (byte) f64::return#4 (byte) f64::return#2 -Alias (byte) f66::return#0 = (byte) f66::return#3 -Alias (byte) f65::return#1 = (byte~) f65::$1 (byte) f65::return#4 (byte) f65::return#2 -Alias (byte) f67::return#0 = (byte) f67::return#3 -Alias (byte) f66::return#1 = (byte~) f66::$1 (byte) f66::return#4 (byte) f66::return#2 -Alias (byte) f68::return#0 = (byte) f68::return#3 -Alias (byte) f67::return#1 = (byte~) f67::$1 (byte) f67::return#4 (byte) f67::return#2 -Alias (byte) f69::return#0 = (byte) f69::return#3 -Alias (byte) f68::return#1 = (byte~) f68::$1 (byte) f68::return#4 (byte) f68::return#2 -Alias (byte) f70::return#0 = (byte) f70::return#3 -Alias (byte) f69::return#1 = (byte~) f69::$1 (byte) f69::return#4 (byte) f69::return#2 -Alias (byte) f71::return#0 = (byte) f71::return#3 -Alias (byte) f70::return#1 = (byte~) f70::$1 (byte) f70::return#4 (byte) f70::return#2 -Alias (byte) f72::return#0 = (byte) f72::return#3 -Alias (byte) f71::return#1 = (byte~) f71::$1 (byte) f71::return#4 (byte) f71::return#2 -Alias (byte) f73::return#0 = (byte) f73::return#3 -Alias (byte) f72::return#1 = (byte~) f72::$1 (byte) f72::return#4 (byte) f72::return#2 -Alias (byte) f74::return#0 = (byte) f74::return#3 -Alias (byte) f73::return#1 = (byte~) f73::$1 (byte) f73::return#4 (byte) f73::return#2 -Alias (byte) f75::return#0 = (byte) f75::return#3 -Alias (byte) f74::return#1 = (byte~) f74::$1 (byte) f74::return#4 (byte) f74::return#2 -Alias (byte) f76::return#0 = (byte) f76::return#3 -Alias (byte) f75::return#1 = (byte~) f75::$1 (byte) f75::return#4 (byte) f75::return#2 -Alias (byte) f77::return#0 = (byte) f77::return#3 -Alias (byte) f76::return#1 = (byte~) f76::$1 (byte) f76::return#4 (byte) f76::return#2 -Alias (byte) f78::return#0 = (byte) f78::return#3 -Alias (byte) f77::return#1 = (byte~) f77::$1 (byte) f77::return#4 (byte) f77::return#2 -Alias (byte) f79::return#0 = (byte) f79::return#3 -Alias (byte) f78::return#1 = (byte~) f78::$1 (byte) f78::return#4 (byte) f78::return#2 -Alias (byte) f80::return#0 = (byte) f80::return#3 -Alias (byte) f79::return#1 = (byte~) f79::$1 (byte) f79::return#4 (byte) f79::return#2 -Alias (byte) f81::return#0 = (byte) f81::return#3 -Alias (byte) f80::return#1 = (byte~) f80::$1 (byte) f80::return#4 (byte) f80::return#2 -Alias (byte) f82::return#0 = (byte) f82::return#3 -Alias (byte) f81::return#1 = (byte~) f81::$1 (byte) f81::return#4 (byte) f81::return#2 -Alias (byte) f83::return#0 = (byte) f83::return#3 -Alias (byte) f82::return#1 = (byte~) f82::$1 (byte) f82::return#4 (byte) f82::return#2 -Alias (byte) f84::return#0 = (byte) f84::return#3 -Alias (byte) f83::return#1 = (byte~) f83::$1 (byte) f83::return#4 (byte) f83::return#2 -Alias (byte) f85::return#0 = (byte) f85::return#3 -Alias (byte) f84::return#1 = (byte~) f84::$1 (byte) f84::return#4 (byte) f84::return#2 -Alias (byte) f86::return#0 = (byte) f86::return#3 -Alias (byte) f85::return#1 = (byte~) f85::$1 (byte) f85::return#4 (byte) f85::return#2 -Alias (byte) f87::return#0 = (byte) f87::return#3 -Alias (byte) f86::return#1 = (byte~) f86::$1 (byte) f86::return#4 (byte) f86::return#2 -Alias (byte) f88::return#0 = (byte) f88::return#3 -Alias (byte) f87::return#1 = (byte~) f87::$1 (byte) f87::return#4 (byte) f87::return#2 -Alias (byte) f89::return#0 = (byte) f89::return#3 -Alias (byte) f88::return#1 = (byte~) f88::$1 (byte) f88::return#4 (byte) f88::return#2 -Alias (byte) f90::return#0 = (byte) f90::return#3 -Alias (byte) f89::return#1 = (byte~) f89::$1 (byte) f89::return#4 (byte) f89::return#2 -Alias (byte) f91::return#0 = (byte) f91::return#3 -Alias (byte) f90::return#1 = (byte~) f90::$1 (byte) f90::return#4 (byte) f90::return#2 -Alias (byte) f92::return#0 = (byte) f92::return#3 -Alias (byte) f91::return#1 = (byte~) f91::$1 (byte) f91::return#4 (byte) f91::return#2 -Alias (byte) f93::return#0 = (byte) f93::return#3 -Alias (byte) f92::return#1 = (byte~) f92::$1 (byte) f92::return#4 (byte) f92::return#2 -Alias (byte) f94::return#0 = (byte) f94::return#3 -Alias (byte) f93::return#1 = (byte~) f93::$1 (byte) f93::return#4 (byte) f93::return#2 -Alias (byte) f95::return#0 = (byte) f95::return#3 -Alias (byte) f94::return#1 = (byte~) f94::$1 (byte) f94::return#4 (byte) f94::return#2 -Alias (byte) f96::return#0 = (byte) f96::return#3 -Alias (byte) f95::return#1 = (byte~) f95::$1 (byte) f95::return#4 (byte) f95::return#2 -Alias (byte) f97::return#0 = (byte) f97::return#3 -Alias (byte) f96::return#1 = (byte~) f96::$1 (byte) f96::return#4 (byte) f96::return#2 -Alias (byte) f98::return#0 = (byte) f98::return#3 -Alias (byte) f97::return#1 = (byte~) f97::$1 (byte) f97::return#4 (byte) f97::return#2 -Alias (byte) f99::return#0 = (byte) f99::return#3 -Alias (byte) f98::return#1 = (byte~) f98::$1 (byte) f98::return#4 (byte) f98::return#2 -Alias (byte) f100::return#0 = (byte) f100::return#3 -Alias (byte) f99::return#1 = (byte~) f99::$1 (byte) f99::return#4 (byte) f99::return#2 -Alias (byte) f100::return#1 = (byte) f100::x#1 (byte) f100::return#4 (byte) f100::return#2 +Alias f1::return#0 = f1::return#3 +Alias f2::return#0 = f2::return#3 +Alias f1::return#1 = f1::$1 f1::return#4 f1::return#2 +Alias f3::return#0 = f3::return#3 +Alias f2::return#1 = f2::$1 f2::return#4 f2::return#2 +Alias f4::return#0 = f4::return#3 +Alias f3::return#1 = f3::$1 f3::return#4 f3::return#2 +Alias f5::return#0 = f5::return#3 +Alias f4::return#1 = f4::$1 f4::return#4 f4::return#2 +Alias f6::return#0 = f6::return#3 +Alias f5::return#1 = f5::$1 f5::return#4 f5::return#2 +Alias f7::return#0 = f7::return#3 +Alias f6::return#1 = f6::$1 f6::return#4 f6::return#2 +Alias f8::return#0 = f8::return#3 +Alias f7::return#1 = f7::$1 f7::return#4 f7::return#2 +Alias f9::return#0 = f9::return#3 +Alias f8::return#1 = f8::$1 f8::return#4 f8::return#2 +Alias f10::return#0 = f10::return#3 +Alias f9::return#1 = f9::$1 f9::return#4 f9::return#2 +Alias f11::return#0 = f11::return#3 +Alias f10::return#1 = f10::$1 f10::return#4 f10::return#2 +Alias f12::return#0 = f12::return#3 +Alias f11::return#1 = f11::$1 f11::return#4 f11::return#2 +Alias f13::return#0 = f13::return#3 +Alias f12::return#1 = f12::$1 f12::return#4 f12::return#2 +Alias f14::return#0 = f14::return#3 +Alias f13::return#1 = f13::$1 f13::return#4 f13::return#2 +Alias f15::return#0 = f15::return#3 +Alias f14::return#1 = f14::$1 f14::return#4 f14::return#2 +Alias f16::return#0 = f16::return#3 +Alias f15::return#1 = f15::$1 f15::return#4 f15::return#2 +Alias f17::return#0 = f17::return#3 +Alias f16::return#1 = f16::$1 f16::return#4 f16::return#2 +Alias f18::return#0 = f18::return#3 +Alias f17::return#1 = f17::$1 f17::return#4 f17::return#2 +Alias f19::return#0 = f19::return#3 +Alias f18::return#1 = f18::$1 f18::return#4 f18::return#2 +Alias f20::return#0 = f20::return#3 +Alias f19::return#1 = f19::$1 f19::return#4 f19::return#2 +Alias f21::return#0 = f21::return#3 +Alias f20::return#1 = f20::$1 f20::return#4 f20::return#2 +Alias f22::return#0 = f22::return#3 +Alias f21::return#1 = f21::$1 f21::return#4 f21::return#2 +Alias f23::return#0 = f23::return#3 +Alias f22::return#1 = f22::$1 f22::return#4 f22::return#2 +Alias f24::return#0 = f24::return#3 +Alias f23::return#1 = f23::$1 f23::return#4 f23::return#2 +Alias f25::return#0 = f25::return#3 +Alias f24::return#1 = f24::$1 f24::return#4 f24::return#2 +Alias f26::return#0 = f26::return#3 +Alias f25::return#1 = f25::$1 f25::return#4 f25::return#2 +Alias f27::return#0 = f27::return#3 +Alias f26::return#1 = f26::$1 f26::return#4 f26::return#2 +Alias f28::return#0 = f28::return#3 +Alias f27::return#1 = f27::$1 f27::return#4 f27::return#2 +Alias f29::return#0 = f29::return#3 +Alias f28::return#1 = f28::$1 f28::return#4 f28::return#2 +Alias f30::return#0 = f30::return#3 +Alias f29::return#1 = f29::$1 f29::return#4 f29::return#2 +Alias f31::return#0 = f31::return#3 +Alias f30::return#1 = f30::$1 f30::return#4 f30::return#2 +Alias f32::return#0 = f32::return#3 +Alias f31::return#1 = f31::$1 f31::return#4 f31::return#2 +Alias f33::return#0 = f33::return#3 +Alias f32::return#1 = f32::$1 f32::return#4 f32::return#2 +Alias f34::return#0 = f34::return#3 +Alias f33::return#1 = f33::$1 f33::return#4 f33::return#2 +Alias f35::return#0 = f35::return#3 +Alias f34::return#1 = f34::$1 f34::return#4 f34::return#2 +Alias f36::return#0 = f36::return#3 +Alias f35::return#1 = f35::$1 f35::return#4 f35::return#2 +Alias f37::return#0 = f37::return#3 +Alias f36::return#1 = f36::$1 f36::return#4 f36::return#2 +Alias f38::return#0 = f38::return#3 +Alias f37::return#1 = f37::$1 f37::return#4 f37::return#2 +Alias f39::return#0 = f39::return#3 +Alias f38::return#1 = f38::$1 f38::return#4 f38::return#2 +Alias f40::return#0 = f40::return#3 +Alias f39::return#1 = f39::$1 f39::return#4 f39::return#2 +Alias f41::return#0 = f41::return#3 +Alias f40::return#1 = f40::$1 f40::return#4 f40::return#2 +Alias f42::return#0 = f42::return#3 +Alias f41::return#1 = f41::$1 f41::return#4 f41::return#2 +Alias f43::return#0 = f43::return#3 +Alias f42::return#1 = f42::$1 f42::return#4 f42::return#2 +Alias f44::return#0 = f44::return#3 +Alias f43::return#1 = f43::$1 f43::return#4 f43::return#2 +Alias f45::return#0 = f45::return#3 +Alias f44::return#1 = f44::$1 f44::return#4 f44::return#2 +Alias f46::return#0 = f46::return#3 +Alias f45::return#1 = f45::$1 f45::return#4 f45::return#2 +Alias f47::return#0 = f47::return#3 +Alias f46::return#1 = f46::$1 f46::return#4 f46::return#2 +Alias f48::return#0 = f48::return#3 +Alias f47::return#1 = f47::$1 f47::return#4 f47::return#2 +Alias f49::return#0 = f49::return#3 +Alias f48::return#1 = f48::$1 f48::return#4 f48::return#2 +Alias f50::return#0 = f50::return#3 +Alias f49::return#1 = f49::$1 f49::return#4 f49::return#2 +Alias f51::return#0 = f51::return#3 +Alias f50::return#1 = f50::$1 f50::return#4 f50::return#2 +Alias f52::return#0 = f52::return#3 +Alias f51::return#1 = f51::$1 f51::return#4 f51::return#2 +Alias f53::return#0 = f53::return#3 +Alias f52::return#1 = f52::$1 f52::return#4 f52::return#2 +Alias f54::return#0 = f54::return#3 +Alias f53::return#1 = f53::$1 f53::return#4 f53::return#2 +Alias f55::return#0 = f55::return#3 +Alias f54::return#1 = f54::$1 f54::return#4 f54::return#2 +Alias f56::return#0 = f56::return#3 +Alias f55::return#1 = f55::$1 f55::return#4 f55::return#2 +Alias f57::return#0 = f57::return#3 +Alias f56::return#1 = f56::$1 f56::return#4 f56::return#2 +Alias f58::return#0 = f58::return#3 +Alias f57::return#1 = f57::$1 f57::return#4 f57::return#2 +Alias f59::return#0 = f59::return#3 +Alias f58::return#1 = f58::$1 f58::return#4 f58::return#2 +Alias f60::return#0 = f60::return#3 +Alias f59::return#1 = f59::$1 f59::return#4 f59::return#2 +Alias f61::return#0 = f61::return#3 +Alias f60::return#1 = f60::$1 f60::return#4 f60::return#2 +Alias f62::return#0 = f62::return#3 +Alias f61::return#1 = f61::$1 f61::return#4 f61::return#2 +Alias f63::return#0 = f63::return#3 +Alias f62::return#1 = f62::$1 f62::return#4 f62::return#2 +Alias f64::return#0 = f64::return#3 +Alias f63::return#1 = f63::$1 f63::return#4 f63::return#2 +Alias f65::return#0 = f65::return#3 +Alias f64::return#1 = f64::$1 f64::return#4 f64::return#2 +Alias f66::return#0 = f66::return#3 +Alias f65::return#1 = f65::$1 f65::return#4 f65::return#2 +Alias f67::return#0 = f67::return#3 +Alias f66::return#1 = f66::$1 f66::return#4 f66::return#2 +Alias f68::return#0 = f68::return#3 +Alias f67::return#1 = f67::$1 f67::return#4 f67::return#2 +Alias f69::return#0 = f69::return#3 +Alias f68::return#1 = f68::$1 f68::return#4 f68::return#2 +Alias f70::return#0 = f70::return#3 +Alias f69::return#1 = f69::$1 f69::return#4 f69::return#2 +Alias f71::return#0 = f71::return#3 +Alias f70::return#1 = f70::$1 f70::return#4 f70::return#2 +Alias f72::return#0 = f72::return#3 +Alias f71::return#1 = f71::$1 f71::return#4 f71::return#2 +Alias f73::return#0 = f73::return#3 +Alias f72::return#1 = f72::$1 f72::return#4 f72::return#2 +Alias f74::return#0 = f74::return#3 +Alias f73::return#1 = f73::$1 f73::return#4 f73::return#2 +Alias f75::return#0 = f75::return#3 +Alias f74::return#1 = f74::$1 f74::return#4 f74::return#2 +Alias f76::return#0 = f76::return#3 +Alias f75::return#1 = f75::$1 f75::return#4 f75::return#2 +Alias f77::return#0 = f77::return#3 +Alias f76::return#1 = f76::$1 f76::return#4 f76::return#2 +Alias f78::return#0 = f78::return#3 +Alias f77::return#1 = f77::$1 f77::return#4 f77::return#2 +Alias f79::return#0 = f79::return#3 +Alias f78::return#1 = f78::$1 f78::return#4 f78::return#2 +Alias f80::return#0 = f80::return#3 +Alias f79::return#1 = f79::$1 f79::return#4 f79::return#2 +Alias f81::return#0 = f81::return#3 +Alias f80::return#1 = f80::$1 f80::return#4 f80::return#2 +Alias f82::return#0 = f82::return#3 +Alias f81::return#1 = f81::$1 f81::return#4 f81::return#2 +Alias f83::return#0 = f83::return#3 +Alias f82::return#1 = f82::$1 f82::return#4 f82::return#2 +Alias f84::return#0 = f84::return#3 +Alias f83::return#1 = f83::$1 f83::return#4 f83::return#2 +Alias f85::return#0 = f85::return#3 +Alias f84::return#1 = f84::$1 f84::return#4 f84::return#2 +Alias f86::return#0 = f86::return#3 +Alias f85::return#1 = f85::$1 f85::return#4 f85::return#2 +Alias f87::return#0 = f87::return#3 +Alias f86::return#1 = f86::$1 f86::return#4 f86::return#2 +Alias f88::return#0 = f88::return#3 +Alias f87::return#1 = f87::$1 f87::return#4 f87::return#2 +Alias f89::return#0 = f89::return#3 +Alias f88::return#1 = f88::$1 f88::return#4 f88::return#2 +Alias f90::return#0 = f90::return#3 +Alias f89::return#1 = f89::$1 f89::return#4 f89::return#2 +Alias f91::return#0 = f91::return#3 +Alias f90::return#1 = f90::$1 f90::return#4 f90::return#2 +Alias f92::return#0 = f92::return#3 +Alias f91::return#1 = f91::$1 f91::return#4 f91::return#2 +Alias f93::return#0 = f93::return#3 +Alias f92::return#1 = f92::$1 f92::return#4 f92::return#2 +Alias f94::return#0 = f94::return#3 +Alias f93::return#1 = f93::$1 f93::return#4 f93::return#2 +Alias f95::return#0 = f95::return#3 +Alias f94::return#1 = f94::$1 f94::return#4 f94::return#2 +Alias f96::return#0 = f96::return#3 +Alias f95::return#1 = f95::$1 f95::return#4 f95::return#2 +Alias f97::return#0 = f97::return#3 +Alias f96::return#1 = f96::$1 f96::return#4 f96::return#2 +Alias f98::return#0 = f98::return#3 +Alias f97::return#1 = f97::$1 f97::return#4 f97::return#2 +Alias f99::return#0 = f99::return#3 +Alias f98::return#1 = f98::$1 f98::return#4 f98::return#2 +Alias f100::return#0 = f100::return#3 +Alias f99::return#1 = f99::$1 f99::return#4 f99::return#2 +Alias f100::return#1 = f100::x#1 f100::return#4 f100::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) f1::x#1 (byte) f1::x#0 Identical Phi Values (byte) f2::x#1 (byte) f2::x#0 @@ -8919,7 +8919,7 @@ f100: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::screen) ← (const byte) f1::return#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen) ← (const byte) f1::return#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/default-font.log b/src/test/ref/default-font.log index dc0eaaa4a..50be8a88e 100644 --- a/src/test/ref/default-font.log +++ b/src/test/ref/default-font.log @@ -218,19 +218,19 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) main::screen#0 = (byte*~) main::$2 -Alias (byte*) main::screen#1 = (byte*) main::screen#4 -Alias (byte) main::x#2 = (byte) main::x#3 -Alias (byte) main::ch#1 = (byte) main::ch#4 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias main::screen#0 = main::$2 +Alias main::screen#1 = main::screen#4 +Alias main::x#2 = main::x#3 +Alias main::ch#1 = main::ch#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -399,25 +399,25 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::ch -(byte) main::ch#1 35.5 -(byte) main::ch#2 104.66666666666666 -(byte) main::ch#3 22.0 +(byte) main::ch#1 350.5 +(byte) main::ch#2 1034.6666666666667 +(byte) main::ch#3 202.0 (byte*) main::screen -(byte*) main::screen#1 53.25 -(byte*) main::screen#2 7.333333333333333 -(byte*) main::screen#3 157.0 -(byte*) main::screen#5 22.0 +(byte*) main::screen#1 525.75 +(byte*) main::screen#2 67.33333333333333 +(byte*) main::screen#3 1552.0 +(byte*) main::screen#5 202.0 (byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#4 2.75 +(byte) main::x#1 151.5 +(byte) main::x#4 25.25 (byte) main::y -(byte) main::y#1 151.5 -(byte) main::y#2 50.5 +(byte) main::y#1 1501.5 +(byte) main::y#2 500.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1334.6666666666667 (byte*) memset::end (word) memset::num (void*) memset::return @@ -604,24 +604,24 @@ memset: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ) always clobbers reg byte y +Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::x#4 main::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::y#2 main::y#1 ] -Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] ) always clobbers reg byte a +Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#4 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] -Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ) always clobbers reg byte a reg byte y +Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::y#2 main::y#1 ] -Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] ) always clobbers reg byte a -Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ) always clobbers reg byte a reg byte y -Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] ) always clobbers reg byte a -Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] { } ) always clobbers reg byte a +Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((byte*) main::screen#3) ← (byte) main::ch#2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] ( main:2 [ main::x#4 main::ch#2 main::screen#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y +Statement [13] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte)(number) $28-(number) $10 [ main::x#4 main::ch#1 main::screen#2 ] ( main:2 [ main::x#4 main::ch#1 main::screen#2 ] { } ) always clobbers reg byte a +Statement [19] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [21] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::x#4 main::x#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::screen#3 main::screen#5 main::screen#2 main::screen#1 ] : zp[2]:4 , @@ -629,8 +629,8 @@ Potential registers zp[1]:6 [ main::y#2 main::y#1 ] : zp[1]:6 , reg byte x , Potential registers zp[2]:7 [ memset::dst#2 memset::dst#1 ] : zp[2]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 239.58: zp[2]:4 [ main::screen#3 main::screen#5 main::screen#2 main::screen#1 ] 202: zp[1]:6 [ main::y#2 main::y#1 ] 162.17: zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] 19.25: zp[1]:2 [ main::x#4 main::x#1 ] -Uplift Scope [memset] 36.67: zp[2]:7 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [main] 2,347.08: zp[2]:4 [ main::screen#3 main::screen#5 main::screen#2 main::screen#1 ] 2,002: zp[1]:6 [ main::y#2 main::y#1 ] 1,587.17: zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] 176.75: zp[1]:2 [ main::x#4 main::x#1 ] +Uplift Scope [memset] 3,336.67: zp[2]:7 [ memset::dst#2 memset::dst#1 ] Uplift Scope [] Uplifting [main] best 5785 combination zp[2]:4 [ main::screen#3 main::screen#5 main::screen#2 main::screen#1 ] reg byte x [ main::y#2 main::y#1 ] zp[1]:3 [ main::ch#2 main::ch#3 main::ch#1 ] zp[1]:2 [ main::x#4 main::x#1 ] @@ -849,20 +849,20 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::ch -(byte) main::ch#1 ch zp[1]:3 35.5 -(byte) main::ch#2 ch zp[1]:3 104.66666666666666 -(byte) main::ch#3 ch zp[1]:3 22.0 +(byte) main::ch#1 ch zp[1]:3 350.5 +(byte) main::ch#2 ch zp[1]:3 1034.6666666666667 +(byte) main::ch#3 ch zp[1]:3 202.0 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 53.25 -(byte*) main::screen#2 screen zp[2]:4 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:4 157.0 -(byte*) main::screen#5 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 525.75 +(byte*) main::screen#2 screen zp[2]:4 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:4 1552.0 +(byte*) main::screen#5 screen zp[2]:4 202.0 (byte) main::x -(byte) main::x#1 x zp[1]:2 16.5 -(byte) main::x#4 x zp[1]:2 2.75 +(byte) main::x#1 x zp[1]:2 151.5 +(byte) main::x#4 x zp[1]:2 25.25 (byte) main::y -(byte) main::y#1 reg byte x 151.5 -(byte) main::y#2 reg byte x 50.5 +(byte) main::y#1 reg byte x 1501.5 +(byte) main::y#2 reg byte x 500.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -870,8 +870,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 2002.0 +(byte*) memset::dst#2 dst zp[2]:6 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num diff --git a/src/test/ref/default-font.sym b/src/test/ref/default-font.sym index 913d95006..50763bc04 100644 --- a/src/test/ref/default-font.sym +++ b/src/test/ref/default-font.sym @@ -8,20 +8,20 @@ (label) main::@3 (label) main::@return (byte) main::ch -(byte) main::ch#1 ch zp[1]:3 35.5 -(byte) main::ch#2 ch zp[1]:3 104.66666666666666 -(byte) main::ch#3 ch zp[1]:3 22.0 +(byte) main::ch#1 ch zp[1]:3 350.5 +(byte) main::ch#2 ch zp[1]:3 1034.6666666666667 +(byte) main::ch#3 ch zp[1]:3 202.0 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:4 53.25 -(byte*) main::screen#2 screen zp[2]:4 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:4 157.0 -(byte*) main::screen#5 screen zp[2]:4 22.0 +(byte*) main::screen#1 screen zp[2]:4 525.75 +(byte*) main::screen#2 screen zp[2]:4 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:4 1552.0 +(byte*) main::screen#5 screen zp[2]:4 202.0 (byte) main::x -(byte) main::x#1 x zp[1]:2 16.5 -(byte) main::x#4 x zp[1]:2 2.75 +(byte) main::x#1 x zp[1]:2 151.5 +(byte) main::x#4 x zp[1]:2 25.25 (byte) main::y -(byte) main::y#1 reg byte x 151.5 -(byte) main::y#2 reg byte x 50.5 +(byte) main::y#1 reg byte x 1501.5 +(byte) main::y#2 reg byte x 500.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -29,8 +29,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 2002.0 +(byte*) memset::dst#2 dst zp[2]:6 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num diff --git a/src/test/ref/deref-to-derefidx-2.log b/src/test/ref/deref-to-derefidx-2.log index f4ad5aa89..e2c80ec0b 100644 --- a/src/test/ref/deref-to-derefidx-2.log +++ b/src/test/ref/deref-to-derefidx-2.log @@ -103,11 +103,11 @@ Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) screen_idx#0 = (byte) screen_idx#7 -Alias (byte) screen_idx#1 = (byte) screen_idx#8 (byte) screen_idx#9 (byte) screen_idx#2 -Alias (byte) screen_idx#11 = (byte) screen_idx#4 (byte) screen_idx#5 -Alias (byte) screen_idx#14 = (byte) screen_idx#3 -Alias (byte) screen_idx#12 = (byte) screen_idx#6 +Alias screen_idx#0 = screen_idx#7 +Alias screen_idx#1 = screen_idx#8 screen_idx#9 screen_idx#2 +Alias screen_idx#11 = screen_idx#4 screen_idx#5 +Alias screen_idx#14 = screen_idx#3 +Alias screen_idx#12 = screen_idx#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) screen_idx#13 (byte) screen_idx#14 Identical Phi Values (byte) screen_idx#0 (byte) screen_idx#11 @@ -199,12 +199,12 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (void()) main() (void()) print((byte*) print::m) -(byte~) print::$2 4.0 +(byte~) print::$2 202.0 (byte*) print::m (byte*) print::m#2 (byte) screen_idx -(byte) screen_idx#10 2.0 -(byte) screen_idx#11 1.0 +(byte) screen_idx#10 71.0 +(byte) screen_idx#11 28.0 Initial phi equivalence classes [ print::m#2 ] @@ -310,19 +310,19 @@ print: { msg2: .byte '1', '2', '3', '4' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] (byte~) print::$2 ← (byte) screen_idx#10 << (byte) 1 [ print::m#2 screen_idx#10 print::$2 ] ( main:2::print:5 [ print::m#2 screen_idx#10 print::$2 ] main:2::print:7 [ print::m#2 screen_idx#10 print::$2 ] ) always clobbers reg byte a +Statement [10] (byte~) print::$2 ← (byte) screen_idx#10 << (byte) 1 [ print::m#2 screen_idx#10 print::$2 ] ( main:2::print:5 [ print::m#2 screen_idx#10 print::$2 ] { } main:2::print:7 [ print::m#2 screen_idx#10 print::$2 ] { { screen_idx#10 = screen_idx#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ screen_idx#10 screen_idx#11 ] -Statement [11] *((const word*) SCREEN + (byte~) print::$2) ← *((word*)(byte*) print::m#2 + (byte) 2) [ screen_idx#10 ] ( main:2::print:5 [ screen_idx#10 ] main:2::print:7 [ screen_idx#10 ] ) always clobbers reg byte a reg byte y +Statement [11] *((const word*) SCREEN + (byte~) print::$2) ← *((word*)(byte*) print::m#2 + (byte) 2) [ screen_idx#10 ] ( main:2::print:5 [ screen_idx#10 ] { } main:2::print:7 [ screen_idx#10 ] { { screen_idx#10 = screen_idx#11 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ screen_idx#10 screen_idx#11 ] -Statement [10] (byte~) print::$2 ← (byte) screen_idx#10 << (byte) 1 [ print::m#2 screen_idx#10 print::$2 ] ( main:2::print:5 [ print::m#2 screen_idx#10 print::$2 ] main:2::print:7 [ print::m#2 screen_idx#10 print::$2 ] ) always clobbers reg byte a -Statement [11] *((const word*) SCREEN + (byte~) print::$2) ← *((word*)(byte*) print::m#2 + (byte) 2) [ screen_idx#10 ] ( main:2::print:5 [ screen_idx#10 ] main:2::print:7 [ screen_idx#10 ] ) always clobbers reg byte a reg byte y +Statement [10] (byte~) print::$2 ← (byte) screen_idx#10 << (byte) 1 [ print::m#2 screen_idx#10 print::$2 ] ( main:2::print:5 [ print::m#2 screen_idx#10 print::$2 ] { } main:2::print:7 [ print::m#2 screen_idx#10 print::$2 ] { { screen_idx#10 = screen_idx#11 } } ) always clobbers reg byte a +Statement [11] *((const word*) SCREEN + (byte~) print::$2) ← *((word*)(byte*) print::m#2 + (byte) 2) [ screen_idx#10 ] ( main:2::print:5 [ screen_idx#10 ] { } main:2::print:7 [ screen_idx#10 ] { { screen_idx#10 = screen_idx#11 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print::m#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ screen_idx#10 screen_idx#11 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print] 4: zp[1]:5 [ print::$2 ] 0: zp[2]:2 [ print::m#2 ] -Uplift Scope [] 3: zp[1]:4 [ screen_idx#10 screen_idx#11 ] +Uplift Scope [print] 202: zp[1]:5 [ print::$2 ] 0: zp[2]:2 [ print::m#2 ] +Uplift Scope [] 99: zp[1]:4 [ screen_idx#10 screen_idx#11 ] Uplift Scope [main] Uplifting [print] best 107 combination reg byte a [ print::$2 ] zp[2]:2 [ print::m#2 ] @@ -456,13 +456,13 @@ FINAL SYMBOL TABLE (const byte*) msg1[] = { (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd' } (const byte*) msg2[] = { (byte) '1', (byte) '2', (byte) '3', (byte) '4' } (void()) print((byte*) print::m) -(byte~) print::$2 reg byte a 4.0 +(byte~) print::$2 reg byte a 202.0 (label) print::@return (byte*) print::m (byte*) print::m#2 m zp[2]:2 (byte) screen_idx -(byte) screen_idx#10 screen_idx zp[1]:4 2.0 -(byte) screen_idx#11 screen_idx zp[1]:4 1.0 +(byte) screen_idx#10 screen_idx zp[1]:4 71.0 +(byte) screen_idx#11 screen_idx zp[1]:4 28.0 zp[2]:2 [ print::m#2 ] zp[1]:4 [ screen_idx#10 screen_idx#11 ] diff --git a/src/test/ref/deref-to-derefidx-2.sym b/src/test/ref/deref-to-derefidx-2.sym index 8ed0fa357..a8db5ce61 100644 --- a/src/test/ref/deref-to-derefidx-2.sym +++ b/src/test/ref/deref-to-derefidx-2.sym @@ -8,13 +8,13 @@ (const byte*) msg1[] = { (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd' } (const byte*) msg2[] = { (byte) '1', (byte) '2', (byte) '3', (byte) '4' } (void()) print((byte*) print::m) -(byte~) print::$2 reg byte a 4.0 +(byte~) print::$2 reg byte a 202.0 (label) print::@return (byte*) print::m (byte*) print::m#2 m zp[2]:2 (byte) screen_idx -(byte) screen_idx#10 screen_idx zp[1]:4 2.0 -(byte) screen_idx#11 screen_idx zp[1]:4 1.0 +(byte) screen_idx#10 screen_idx zp[1]:4 71.0 +(byte) screen_idx#11 screen_idx zp[1]:4 28.0 zp[2]:2 [ print::m#2 ] zp[1]:4 [ screen_idx#10 screen_idx#11 ] diff --git a/src/test/ref/deref-to-derefidx.log b/src/test/ref/deref-to-derefidx.log index f753d7998..bafc690d6 100644 --- a/src/test/ref/deref-to-derefidx.log +++ b/src/test/ref/deref-to-derefidx.log @@ -95,11 +95,11 @@ Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) idx#0 = (byte) idx#7 -Alias (byte) idx#1 = (byte) idx#8 (byte) idx#9 (byte) idx#2 -Alias (byte) idx#11 = (byte) idx#4 (byte) idx#5 -Alias (byte) idx#14 = (byte) idx#3 -Alias (byte) idx#12 = (byte) idx#6 +Alias idx#0 = idx#7 +Alias idx#1 = idx#8 idx#9 idx#2 +Alias idx#11 = idx#4 idx#5 +Alias idx#14 = idx#3 +Alias idx#12 = idx#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#13 (byte) idx#14 Identical Phi Values (byte) idx#0 (byte) idx#11 @@ -183,12 +183,12 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#10 3.0 -(byte) idx#11 1.0 +(byte) idx#10 106.5 +(byte) idx#11 28.0 (void()) main() (void()) print((byte*) print::m) (byte*) print::m -(byte*) print::m#2 2.0 +(byte*) print::m#2 101.0 Initial phi equivalence classes [ print::m#2 ] @@ -283,16 +283,16 @@ print: { msg2: .byte '1', '2', '3', '4' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) SCREEN + (byte) idx#10) ← *((byte*) print::m#2 + (byte) 2) [ idx#10 ] ( main:2::print:5 [ idx#10 ] main:2::print:7 [ idx#10 ] ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx#10) ← *((byte*) print::m#2 + (byte) 2) [ idx#10 ] ( main:2::print:5 [ idx#10 ] { } main:2::print:7 [ idx#10 ] { { idx#10 = idx#11 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#10 idx#11 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#10 idx#11 ] -Statement [10] *((const byte*) SCREEN + (byte) idx#10) ← *((byte*) print::m#2 + (byte) 2) [ idx#10 ] ( main:2::print:5 [ idx#10 ] main:2::print:7 [ idx#10 ] ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx#10) ← *((byte*) print::m#2 + (byte) 2) [ idx#10 ] ( main:2::print:5 [ idx#10 ] { } main:2::print:7 [ idx#10 ] { { idx#10 = idx#11 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print::m#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#10 idx#11 ] : zp[1]:4 , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [] 4: zp[1]:4 [ idx#10 idx#11 ] -Uplift Scope [print] 2: zp[2]:2 [ print::m#2 ] +Uplift Scope [] 134.5: zp[1]:4 [ idx#10 idx#11 ] +Uplift Scope [print] 101: zp[2]:2 [ print::m#2 ] Uplift Scope [main] Uplifting [] best 81 combination reg byte x [ idx#10 idx#11 ] @@ -410,8 +410,8 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#10 reg byte x 3.0 -(byte) idx#11 reg byte x 1.0 +(byte) idx#10 reg byte x 106.5 +(byte) idx#11 reg byte x 28.0 (void()) main() (label) main::@1 (label) main::@return @@ -420,7 +420,7 @@ FINAL SYMBOL TABLE (void()) print((byte*) print::m) (label) print::@return (byte*) print::m -(byte*) print::m#2 m zp[2]:2 2.0 +(byte*) print::m#2 m zp[2]:2 101.0 zp[2]:2 [ print::m#2 ] reg byte x [ idx#10 idx#11 ] diff --git a/src/test/ref/deref-to-derefidx.sym b/src/test/ref/deref-to-derefidx.sym index e8b852266..4cca09353 100644 --- a/src/test/ref/deref-to-derefidx.sym +++ b/src/test/ref/deref-to-derefidx.sym @@ -3,8 +3,8 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#10 reg byte x 3.0 -(byte) idx#11 reg byte x 1.0 +(byte) idx#10 reg byte x 106.5 +(byte) idx#11 reg byte x 28.0 (void()) main() (label) main::@1 (label) main::@return @@ -13,7 +13,7 @@ (void()) print((byte*) print::m) (label) print::@return (byte*) print::m -(byte*) print::m#2 m zp[2]:2 2.0 +(byte*) print::m#2 m zp[2]:2 101.0 zp[2]:2 [ print::m#2 ] reg byte x [ idx#10 idx#11 ] diff --git a/src/test/ref/derefidx-word-0.log b/src/test/ref/derefidx-word-0.log index ccd571aa5..5bd91cde6 100644 --- a/src/test/ref/derefidx-word-0.log +++ b/src/test/ref/derefidx-word-0.log @@ -58,7 +58,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $3e8 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word) main::i#2 = (word) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((word) main::i#2<(word) $3e8) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -117,10 +117,10 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte*~) main::$1 22.0 +(byte*~) main::$1 202.0 (word) main::i -(word) main::i#1 22.0 -(word) main::i#2 11.0 +(word) main::i#1 202.0 +(word) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -215,15 +215,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((word) main::i#2<(word) $3e8) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] (byte*~) main::$1 ← (const byte*) main::screen + (word) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((byte*~) main::$1) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [10] (word) main::i#1 ← (word) main::i#2 + (byte) $28 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [6] if((word) main::i#2<(word) $3e8) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] (byte*~) main::$1 ← (const byte*) main::screen + (word) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] *((byte*~) main::$1) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (word) main::i#1 ← (word) main::i#2 + (byte) $28 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::$1 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[2]:2 [ main::i#2 main::i#1 ] 22: zp[2]:4 [ main::$1 ] +Uplift Scope [main] 303: zp[2]:2 [ main::i#2 main::i#1 ] 202: zp[2]:4 [ main::$1 ] Uplift Scope [] Uplifting [main] best 838 combination zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ main::$1 ] @@ -340,13 +340,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte*~) main::$1 zp[2]:4 22.0 +(byte*~) main::$1 zp[2]:4 202.0 (label) main::@1 (label) main::@2 (label) main::@return (word) main::i -(word) main::i#1 i zp[2]:2 22.0 -(word) main::i#2 i zp[2]:2 11.0 +(word) main::i#1 i zp[2]:2 202.0 +(word) main::i#2 i zp[2]:2 101.0 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/derefidx-word-0.sym b/src/test/ref/derefidx-word-0.sym index c0470e57f..a98bc0b90 100644 --- a/src/test/ref/derefidx-word-0.sym +++ b/src/test/ref/derefidx-word-0.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte*~) main::$1 zp[2]:4 22.0 +(byte*~) main::$1 zp[2]:4 202.0 (label) main::@1 (label) main::@2 (label) main::@return (word) main::i -(word) main::i#1 i zp[2]:2 22.0 -(word) main::i#2 i zp[2]:2 11.0 +(word) main::i#1 i zp[2]:2 202.0 +(word) main::i#2 i zp[2]:2 101.0 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/derefidx-word-1.log b/src/test/ref/derefidx-word-1.log index c8fc14ef7..b3a2917b1 100644 --- a/src/test/ref/derefidx-word-1.log +++ b/src/test/ref/derefidx-word-1.log @@ -116,7 +116,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen+(word)(number) $28*(number) $a) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen+(word)(number) $28*(number) $a) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/derefidx-word-2.log b/src/test/ref/derefidx-word-2.log index a73417aec..2cf0cadce 100644 --- a/src/test/ref/derefidx-word-2.log +++ b/src/test/ref/derefidx-word-2.log @@ -67,7 +67,7 @@ Constant inlined main::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment main::$2 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i#2 = (word~) main::$0 +Alias main::i#2 = main::$0 Successful SSA optimization Pass2AliasElimination Converting *(pointer+n) to pointer[n] [2] *((byte*~) main::$2) ← (byte) 'a' -- *(main::screen+(word)$28*$a + main::i#2) Successful SSA optimization Pass2InlineDerefIdx @@ -121,8 +121,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 16.5 +(byte) main::i#1 151.5 +(byte) main::i#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -190,13 +190,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::screen+(word)(number) $28*(number) $a + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen+(word)(number) $28*(number) $a + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) main::screen+(word)(number) $28*(number) $a + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen+(word)(number) $28*(number) $a + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -289,8 +289,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/derefidx-word-2.sym b/src/test/ref/derefidx-word-2.sym index 32c9d1eba..c0186634b 100644 --- a/src/test/ref/derefidx-word-2.sym +++ b/src/test/ref/derefidx-word-2.sym @@ -5,8 +5,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/divide-2s.log b/src/test/ref/divide-2s.log index b8e5d7c25..bf3869bf0 100644 --- a/src/test/ref/divide-2s.log +++ b/src/test/ref/divide-2s.log @@ -100,7 +100,7 @@ Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#2 / (byt Inferred type updated to byte in (unumber~) main::$2 ← (byte) main::i#2 / (byte) 4 Inferred type updated to byte in (unumber~) main::$3 ← (byte) main::i#2 / (byte) 8 Inferred type updated to signed byte in (snumber~) main::$6 ← (signed byte) main::sb#0 / (signed byte) 2 -Alias (signed byte) main::sb#0 = (signed byte~) main::$5 +Alias main::sb#0 = main::$5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$8 [17] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -131,7 +131,7 @@ Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte) main::i#2 = (byte~) main::$0 +Alias main::i#2 = main::$0 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -189,15 +189,15 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 -(signed byte~) main::$7 11.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(signed byte~) main::$7 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 22.0 +(signed byte) main::sb#0 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -327,18 +327,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$1 ← (byte) main::i#2 >> (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte) main::i#2 >> (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte~) main::$2 ← (byte) main::i#2 >> (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 >> (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a -Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] ) always clobbers reg byte a -Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 >> (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte) main::i#2 >> (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte) main::i#2 >> (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 >> (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a -Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] ) always clobbers reg byte a -Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 >> (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#2 >> (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 >> (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a +Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] { } ) always clobbers reg byte a +Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 >> (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte) main::i#2 >> (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#2 >> (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 >> (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a +Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] { } ) always clobbers reg byte a +Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 >> (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -347,7 +347,7 @@ Potential registers zp[1]:6 [ main::sb#0 ] : zp[1]:6 , reg byte a , reg byte x , Potential registers zp[1]:7 [ main::$7 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] 22: zp[1]:4 [ main::$2 ] 22: zp[1]:5 [ main::$3 ] 22: zp[1]:6 [ main::sb#0 ] 11: zp[1]:7 [ main::$7 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] 202: zp[1]:4 [ main::$2 ] 202: zp[1]:5 [ main::$3 ] 202: zp[1]:6 [ main::sb#0 ] 101: zp[1]:7 [ main::$7 ] Uplift Scope [] Uplifting [main] best 883 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] zp[1]:6 [ main::sb#0 ] zp[1]:7 [ main::$7 ] @@ -470,18 +470,18 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(signed byte~) main::$7 reg byte a 11.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(signed byte~) main::$7 reg byte a 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/divide-2s.sym b/src/test/ref/divide-2s.sym index c18100d7a..87c2675fd 100644 --- a/src/test/ref/divide-2s.sym +++ b/src/test/ref/divide-2s.sym @@ -2,18 +2,18 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(signed byte~) main::$7 reg byte a 11.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(signed byte~) main::$7 reg byte a 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/double-assignment.log b/src/test/ref/double-assignment.log index 44d42ed7a..52256a726 100644 --- a/src/test/ref/double-assignment.log +++ b/src/test/ref/double-assignment.log @@ -53,7 +53,7 @@ Finalized unsigned number type (byte) $c Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::a#1 = (byte) main::b#1 +Alias main::a#1 = main::b#1 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::a#0 = 0 Constant (const byte) main::b#0 = 0 @@ -151,8 +151,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (const byte) main::a#1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::screen+(byte) 1) ← (const byte) main::a#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (const byte) main::a#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::screen+(byte) 1) ← (const byte) main::a#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/double-import.log b/src/test/ref/double-import.log index b01310530..f0ae05231 100644 --- a/src/test/ref/double-import.log +++ b/src/test/ref/double-import.log @@ -107,7 +107,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BGCOL) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) BGCOL) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/double-indexing-arrays.log b/src/test/ref/double-indexing-arrays.log index 67c1baabd..04d97fe35 100644 --- a/src/test/ref/double-indexing-arrays.log +++ b/src/test/ref/double-indexing-arrays.log @@ -217,7 +217,7 @@ Consolidated constant in assignment main::$26 Consolidated constant in assignment main::$27 Consolidated constant in assignment main::$28 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::x#2 = (byte~) main::$0 (byte~) main::$1 (byte~) main::$2 (byte~) main::$3 (word~) main::$4 (word~) main::$5 (word~) main::$6 (word~) main::$7 (word~) main::$8 (word~) main::$9 (word~) main::$10 (word~) main::$11 (word~) main::$12 (word~) main::$13 (word~) main::$14 (word~) main::$15 +Alias main::x#2 = main::$0 main::$1 main::$2 main::$3 main::$4 main::$5 main::$6 main::$7 main::$8 main::$9 main::$10 main::$11 main::$12 main::$13 main::$14 main::$15 Successful SSA optimization Pass2AliasElimination Converting *(pointer+n) to pointer[n] [7] *((byte*~) main::$18) ← *((byte*~) main::$17) -- *(MAPDATA+$190 + main::x#2) Converting *(pointer+n) to pointer[n] [7] *((byte*~) main::$18) ← *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2) -- *(SCREEN+$190 + main::x#2) @@ -302,8 +302,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#2 22.0 +(byte) main::x#1 151.5 +(byte) main::x#2 202.00000000000006 Initial phi equivalence classes [ main::x#2 main::x#1 ] @@ -416,31 +416,31 @@ main: { COLORMAP2: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::x#2) ← *((const byte*) MAPDATA + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::x#2) ← *((const byte*) MAPDATA + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#2 main::x#1 ] -Statement [7] *((const byte*) COLS + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(byte) $c8 + (byte) main::x#2) ← *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) COLS+(byte) $c8 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(word) $190 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) COLS+(word) $190 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN+(word) $258 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) COLS+(word) $258 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN+(word) $320 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) COLS+(word) $320 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::x#2) ← *((const byte*) MAPDATA + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) COLS + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(byte) $c8 + (byte) main::x#2) ← *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) COLS+(byte) $c8 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(word) $190 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) COLS+(word) $190 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN+(word) $258 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) COLS+(word) $258 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN+(word) $320 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) COLS+(word) $320 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) COLS + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) $c8 + (byte) main::x#2) ← *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) COLS+(byte) $c8 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(word) $190 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) COLS+(word) $190 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(word) $258 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) COLS+(word) $258 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN+(word) $320 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) COLS+(word) $320 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::x#2) ← *((const byte*) MAPDATA + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) COLS + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) $c8 + (byte) main::x#2) ← *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) COLS+(byte) $c8 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(byte) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(word) $190 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) COLS+(word) $190 + (byte) main::x#2) ← *((const byte*) COLORMAP1 + *((const byte*) MAPDATA+(word) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(word) $258 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) COLS+(word) $258 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN+(word) $320 + (byte) main::x#2) ← *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) COLS+(word) $320 + (byte) main::x#2) ← *((const byte*) COLORMAP2 + *((const byte*) MAPDATA+(word) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::x#2 main::x#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::x#2 main::x#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::x#2 main::x#1 ] Uplift Scope [] Uplifting [main] best 1368 combination reg byte x [ main::x#2 main::x#1 ] @@ -574,8 +574,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#2 reg byte x 22.0 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#2 reg byte x 202.00000000000006 reg byte x [ main::x#2 main::x#1 ] diff --git a/src/test/ref/double-indexing-arrays.sym b/src/test/ref/double-indexing-arrays.sym index 8965baa2f..c85473240 100644 --- a/src/test/ref/double-indexing-arrays.sym +++ b/src/test/ref/double-indexing-arrays.sym @@ -10,7 +10,7 @@ (label) main::@1 (label) main::@return (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#2 reg byte x 22.0 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#2 reg byte x 202.00000000000006 reg byte x [ main::x#2 main::x#1 ] diff --git a/src/test/ref/duplicate-loop-problem.log b/src/test/ref/duplicate-loop-problem.log index 7afc1f05f..0186f955c 100644 --- a/src/test/ref/duplicate-loop-problem.log +++ b/src/test/ref/duplicate-loop-problem.log @@ -75,9 +75,9 @@ Finalized unsigned number type (byte) $1f Finalized unsigned number type (byte) $1f Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) key#1 & (byte) $1f -Alias (byte) key#1 = (byte) key#6 (byte) key#4 (byte) key#2 -Alias (byte) key#0 = (byte) key#7 -Alias (byte) key#3 = (byte) key#5 +Alias key#1 = key#6 key#4 key#2 +Alias key#0 = key#7 +Alias key#3 = key#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) key#3 (byte) key#1 Successful SSA optimization Pass2IdenticalPhiElimination @@ -147,9 +147,9 @@ main::@2: scope:[main] from main::@1 main::@3 VARIABLE REGISTER WEIGHTS (byte) key -(byte) key#1 151.5 +(byte) key#1 1501.5 (void()) main() -(byte~) main::$1 101.0 +(byte~) main::$1 1001.0 Initial phi equivalence classes Added variable key#1 to live range equivalence class [ key#1 ] @@ -227,8 +227,8 @@ Potential registers zp[1]:2 [ key#1 ] : zp[1]:2 , reg byte a , reg byte x , reg Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 151.5: zp[1]:2 [ key#1 ] -Uplift Scope [main] 101: zp[1]:3 [ main::$1 ] +Uplift Scope [] 1,501.5: zp[1]:2 [ key#1 ] +Uplift Scope [main] 1,001: zp[1]:3 [ main::$1 ] Uplifting [] best 2502 combination reg byte x [ key#1 ] Uplifting [main] best 2102 combination reg byte a [ main::$1 ] @@ -321,9 +321,9 @@ FINAL SYMBOL TABLE (label) @end (const byte*) DC00 = (byte*) 56320 (byte) key -(byte) key#1 reg byte x 151.5 +(byte) key#1 reg byte x 1501.5 (void()) main() -(byte~) main::$1 reg byte a 101.0 +(byte~) main::$1 reg byte a 1001.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/duplicate-loop-problem.sym b/src/test/ref/duplicate-loop-problem.sym index 143b384c2..88ca82e61 100644 --- a/src/test/ref/duplicate-loop-problem.sym +++ b/src/test/ref/duplicate-loop-problem.sym @@ -3,9 +3,9 @@ (label) @end (const byte*) DC00 = (byte*) 56320 (byte) key -(byte) key#1 reg byte x 151.5 +(byte) key#1 reg byte x 1501.5 (void()) main() -(byte~) main::$1 reg byte a 101.0 +(byte~) main::$1 reg byte a 1001.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/dword.log b/src/test/ref/dword.log index 72e35526b..ea46aa263 100644 --- a/src/test/ref/dword.log +++ b/src/test/ref/dword.log @@ -56,8 +56,8 @@ Inlining cast (byte~) main::$1 ← (byte)(dword) main::b#0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (dword) main::b#0 = (dword~) main::$0 -Alias (byte) main::c#0 = (byte~) main::$1 +Alias main::b#0 = main::$0 +Alias main::c#0 = main::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [7] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -124,12 +124,12 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (dword) main::b -(dword) main::b#0 11.0 +(dword) main::b#0 101.0 (byte) main::c -(byte) main::c#0 22.0 +(byte) main::c#0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -222,17 +222,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (dword) main::b#0 ← (const dword) main::a + (byte) main::i#2 [ main::i#2 main::b#0 ] ( main:2 [ main::i#2 main::b#0 ] ) always clobbers reg byte a +Statement [6] (dword) main::b#0 ← (const dword) main::a + (byte) main::i#2 [ main::i#2 main::b#0 ] ( main:2 [ main::i#2 main::b#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte) main::c#0 ← (byte)(dword) main::b#0 [ main::i#2 main::c#0 ] ( main:2 [ main::i#2 main::c#0 ] ) always clobbers reg byte a -Statement [6] (dword) main::b#0 ← (const dword) main::a + (byte) main::i#2 [ main::i#2 main::b#0 ] ( main:2 [ main::i#2 main::b#0 ] ) always clobbers reg byte a -Statement [7] (byte) main::c#0 ← (byte)(dword) main::b#0 [ main::i#2 main::c#0 ] ( main:2 [ main::i#2 main::c#0 ] ) always clobbers reg byte a +Statement [7] (byte) main::c#0 ← (byte)(dword) main::b#0 [ main::i#2 main::c#0 ] ( main:2 [ main::i#2 main::c#0 ] { } ) always clobbers reg byte a +Statement [6] (dword) main::b#0 ← (const dword) main::a + (byte) main::i#2 [ main::i#2 main::b#0 ] ( main:2 [ main::i#2 main::b#0 ] { } ) always clobbers reg byte a +Statement [7] (byte) main::c#0 ← (byte)(dword) main::b#0 [ main::i#2 main::c#0 ] ( main:2 [ main::i#2 main::c#0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[4]:3 [ main::b#0 ] : zp[4]:3 , Potential registers zp[1]:7 [ main::c#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::c#0 ] 11: zp[4]:3 [ main::b#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::c#0 ] 101: zp[4]:3 [ main::b#0 ] Uplift Scope [] Uplifting [main] best 573 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::c#0 ] zp[4]:3 [ main::b#0 ] @@ -344,12 +344,12 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (const dword) main::a = (dword) $ee6b2800 (dword) main::b -(dword) main::b#0 b zp[4]:2 11.0 +(dword) main::b#0 b zp[4]:2 101.0 (byte) main::c -(byte) main::c#0 reg byte a 22.0 +(byte) main::c#0 reg byte a 202.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] zp[4]:2 [ main::b#0 ] diff --git a/src/test/ref/dword.sym b/src/test/ref/dword.sym index ff053a631..f82ad9ae0 100644 --- a/src/test/ref/dword.sym +++ b/src/test/ref/dword.sym @@ -7,12 +7,12 @@ (const byte*) main::SCREEN = (byte*) 1024 (const dword) main::a = (dword) $ee6b2800 (dword) main::b -(dword) main::b#0 b zp[4]:2 11.0 +(dword) main::b#0 b zp[4]:2 101.0 (byte) main::c -(byte) main::c#0 reg byte a 22.0 +(byte) main::c#0 reg byte a 202.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] zp[4]:2 [ main::b#0 ] diff --git a/src/test/ref/emptyblock-error.log b/src/test/ref/emptyblock-error.log index 64b65bf8b..d73c8a97c 100644 --- a/src/test/ref/emptyblock-error.log +++ b/src/test/ref/emptyblock-error.log @@ -286,7 +286,7 @@ mode: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] if(*((const byte*) B)!=(byte) 0) goto mode::@1 [ ] ( main:2::menu:6::mode:9 [ ] ) always clobbers reg byte a +Statement [12] if(*((const byte*) B)!=(byte) 0) goto mode::@1 [ ] ( main:2::menu:6::mode:9 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/encoding-literal-char.log b/src/test/ref/encoding-literal-char.log index 5353f68ca..ad65a969c 100644 --- a/src/test/ref/encoding-literal-char.log +++ b/src/test/ref/encoding-literal-char.log @@ -277,14 +277,14 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen) ← (const byte) cpm [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) screen+(byte) 1) ← (const byte) ccpu [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) screen+(byte) 2) ← (const byte) csm [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) screen+(byte) 3) ← (const byte) csu [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) screen+(byte) $28) ← *((const byte*) spm) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) screen+(byte) $29) ← *((const byte*) spu) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) screen+(byte) $2a) ← *((const byte*) ssm) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) screen+(byte) $2b) ← *((const byte*) ssu) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen) ← (const byte) cpm [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) screen+(byte) 1) ← (const byte) ccpu [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) screen+(byte) 2) ← (const byte) csm [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) screen+(byte) 3) ← (const byte) csu [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) screen+(byte) $28) ← *((const byte*) spm) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) screen+(byte) $29) ← *((const byte*) spu) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) screen+(byte) $2a) ← *((const byte*) ssm) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) screen+(byte) $2b) ← *((const byte*) ssu) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/enum-0.log b/src/test/ref/enum-0.log index add8f5138..d30969aeb 100644 --- a/src/test/ref/enum-0.log +++ b/src/test/ref/enum-0.log @@ -114,7 +114,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) ON [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) ON [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [State] diff --git a/src/test/ref/enum-1.log b/src/test/ref/enum-1.log index 28840b47b..5e4e68f19 100644 --- a/src/test/ref/enum-1.log +++ b/src/test/ref/enum-1.log @@ -115,7 +115,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) BROKEN [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) BROKEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [State] diff --git a/src/test/ref/enum-2.log b/src/test/ref/enum-2.log index ab6d4840b..8eae54ed2 100644 --- a/src/test/ref/enum-2.log +++ b/src/test/ref/enum-2.log @@ -115,7 +115,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) B [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) B [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Letter] diff --git a/src/test/ref/enum-3.log b/src/test/ref/enum-3.log index ef13c14c3..79ca7f753 100644 --- a/src/test/ref/enum-3.log +++ b/src/test/ref/enum-3.log @@ -117,7 +117,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) BROKEN [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) BROKEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [State] diff --git a/src/test/ref/enum-4.log b/src/test/ref/enum-4.log index eeff3ed41..a12e22fd9 100644 --- a/src/test/ref/enum-4.log +++ b/src/test/ref/enum-4.log @@ -112,7 +112,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/enum-5.log b/src/test/ref/enum-5.log index 872a14401..5417c4b3a 100644 --- a/src/test/ref/enum-5.log +++ b/src/test/ref/enum-5.log @@ -162,8 +162,8 @@ test: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) test::SCREEN) ← (const byte) test::ON [ ] ( main:2::test:5 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) test::SCREEN) ← (const byte) test::ON [ ] ( main:2::test:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/enum-6.log b/src/test/ref/enum-6.log index b4bd66fe4..d20960447 100644 --- a/src/test/ref/enum-6.log +++ b/src/test/ref/enum-6.log @@ -139,8 +139,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::OFF [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::ON [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::OFF [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/enum-7.log b/src/test/ref/enum-7.log index b04fd7104..49bf4a63c 100644 --- a/src/test/ref/enum-7.log +++ b/src/test/ref/enum-7.log @@ -146,8 +146,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::button_size [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::button_size [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Color] diff --git a/src/test/ref/enum-8.log b/src/test/ref/enum-8.log index 3470211c3..2996551b3 100644 --- a/src/test/ref/enum-8.log +++ b/src/test/ref/enum-8.log @@ -148,8 +148,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::button_size [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::button_size [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Button] diff --git a/src/test/ref/euclid-3.log b/src/test/ref/euclid-3.log index e0b3bb8cb..177de7d8f 100644 --- a/src/test/ref/euclid-3.log +++ b/src/test/ref/euclid-3.log @@ -742,54 +742,54 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#34 (byte*) print_char_cursor#55 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#17 (byte*) print_char_cursor#1 (byte*) print_line_cursor#18 (byte*) print_char_cursor#27 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte) print_byte::b#3 = (byte) print_byte::b#4 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#3 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#4 (byte*) print_char_cursor#30 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 -Alias (byte*) print_line_cursor#19 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#8 (byte*) print_char_cursor#33 (byte*) print_line_cursor#4 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#34 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#35 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#36 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#37 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#38 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#39 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#25 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#41 (byte*) print_char_cursor#17 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#27 (byte*) print_line_cursor#12 -Alias (byte) print_euclid::b#10 = (byte) print_euclid::b#8 (byte) print_euclid::b#6 (byte) print_euclid::b#9 (byte) print_euclid::b#7 -Alias (byte) print_euclid::a#10 = (byte) print_euclid::a#6 (byte) print_euclid::a#9 (byte) print_euclid::a#8 (byte) print_euclid::a#7 -Alias (byte*) print_line_cursor#33 = (byte*) print_line_cursor#39 (byte*) print_line_cursor#40 (byte*) print_line_cursor#38 (byte*) print_line_cursor#37 (byte*) print_line_cursor#36 (byte*) print_line_cursor#35 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#54 -Alias (byte) euclid::return#0 = (byte) euclid::return#3 -Alias (byte) print_byte::b#2 = (byte~) print_euclid::$4 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#46 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#48 (byte*) print_char_cursor#24 -Alias (byte) euclid::a#2 = (byte) euclid::a#3 (byte) euclid::a#4 (byte) euclid::return#1 (byte) euclid::a#5 (byte) euclid::a#6 (byte) euclid::return#4 (byte) euclid::return#2 -Alias (byte) euclid::b#2 = (byte) euclid::b#3 (byte) euclid::b#4 (byte) euclid::b#5 -Alias (byte) euclid::a#1 = (byte~) euclid::$3 -Alias (byte) euclid::b#1 = (byte~) euclid::$2 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#30 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#49 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#34 print_char_cursor#55 print_screen#4 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#17 print_char_cursor#1 print_line_cursor#18 print_char_cursor#27 print_line_cursor#2 print_char_cursor#2 +Alias print_byte::b#3 = print_byte::b#4 +Alias print_char_cursor#28 = print_char_cursor#3 +Alias print_char_cursor#29 = print_char_cursor#4 print_char_cursor#30 print_char_cursor#5 +Alias print_char_cursor#32 = print_char_cursor#6 print_char_cursor#7 +Alias print_line_cursor#19 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#8 print_char_cursor#33 print_line_cursor#4 print_char_cursor#9 +Alias print_line_cursor#20 = print_line_cursor#5 +Alias print_char_cursor#10 = print_char_cursor#34 +Alias print_char_cursor#11 = print_char_cursor#35 +Alias print_line_cursor#21 = print_line_cursor#6 +Alias print_char_cursor#12 = print_char_cursor#36 +Alias print_line_cursor#22 = print_line_cursor#7 +Alias print_char_cursor#13 = print_char_cursor#37 +Alias print_line_cursor#23 = print_line_cursor#8 +Alias print_char_cursor#14 = print_char_cursor#38 +Alias print_line_cursor#24 = print_line_cursor#9 +Alias print_char_cursor#15 = print_char_cursor#39 +Alias print_line_cursor#10 = print_line_cursor#25 +Alias print_char_cursor#16 = print_char_cursor#40 print_char_cursor#41 print_char_cursor#17 +Alias print_line_cursor#11 = print_line_cursor#26 print_line_cursor#27 print_line_cursor#12 +Alias print_euclid::b#10 = print_euclid::b#8 print_euclid::b#6 print_euclid::b#9 print_euclid::b#7 +Alias print_euclid::a#10 = print_euclid::a#6 print_euclid::a#9 print_euclid::a#8 print_euclid::a#7 +Alias print_line_cursor#33 = print_line_cursor#39 print_line_cursor#40 print_line_cursor#38 print_line_cursor#37 print_line_cursor#36 print_line_cursor#35 +Alias print_char_cursor#18 = print_char_cursor#42 +Alias print_char_cursor#19 = print_char_cursor#43 +Alias print_char_cursor#20 = print_char_cursor#44 +Alias print_char_cursor#21 = print_char_cursor#45 print_char_cursor#54 +Alias euclid::return#0 = euclid::return#3 +Alias print_byte::b#2 = print_euclid::$4 +Alias print_char_cursor#22 = print_char_cursor#46 +Alias print_line_cursor#13 = print_line_cursor#28 print_line_cursor#29 print_line_cursor#14 +Alias print_char_cursor#23 = print_char_cursor#47 print_char_cursor#48 print_char_cursor#24 +Alias euclid::a#2 = euclid::a#3 euclid::a#4 euclid::return#1 euclid::a#5 euclid::a#6 euclid::return#4 euclid::return#2 +Alias euclid::b#2 = euclid::b#3 euclid::b#4 euclid::b#5 +Alias euclid::a#1 = euclid::$3 +Alias euclid::b#1 = euclid::$2 +Alias print_line_cursor#15 = print_line_cursor#30 +Alias print_char_cursor#25 = print_char_cursor#49 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1169,58 +1169,58 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (byte()) euclid((byte) euclid::a , (byte) euclid::b) (byte) euclid::a -(byte) euclid::a#0 1.3333333333333333 -(byte) euclid::a#1 22.0 -(byte) euclid::a#2 13.5 +(byte) euclid::a#0 367.33333333333337 +(byte) euclid::a#1 20002.0 +(byte) euclid::a#2 11851.5 (byte) euclid::b -(byte) euclid::b#0 2.0 -(byte) euclid::b#1 22.0 -(byte) euclid::b#2 19.75 +(byte) euclid::b#0 551.0 +(byte) euclid::b#1 20002.0 +(byte) euclid::b#2 17752.0 (byte) euclid::return -(byte) euclid::return#0 4.0 +(byte) euclid::return#0 202.0 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2002.0 +(byte~) print_byte::$2 2002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#3 2.5 +(byte) print_byte::b#0 202.0 +(byte) print_byte::b#1 202.0 +(byte) print_byte::b#2 202.0 +(byte) print_byte::b#3 576.25 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#0 2002.0 +(byte) print_char::ch#1 2002.0 +(byte) print_char::ch#4 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#31 6.0 -(byte*) print_char_cursor#32 0.9199999999999998 -(byte*) print_char_cursor#51 2.6666666666666665 -(byte*) print_char_cursor#53 6.0 -(byte*) print_char_cursor#63 4.0 -(byte*) print_char_cursor#64 4.0 -(byte*) print_char_cursor#65 4.0 -(byte*) print_char_cursor#66 4.0 -(byte*) print_char_cursor#67 4.0 +(byte*) print_char_cursor#31 11103.0 +(byte*) print_char_cursor#32 856.2800000000002 +(byte*) print_char_cursor#51 434.6666666666667 +(byte*) print_char_cursor#53 78.0 +(byte*) print_char_cursor#63 22.0 +(byte*) print_char_cursor#64 22.0 +(byte*) print_char_cursor#65 22.0 +(byte*) print_char_cursor#66 22.0 +(byte*) print_char_cursor#67 22.0 (void()) print_cls() (void()) print_euclid((byte) print_euclid::a , (byte) print_euclid::b) (byte) print_euclid::a -(byte) print_euclid::a#10 0.4444444444444444 +(byte) print_euclid::a#10 22.444444444444443 (byte) print_euclid::b -(byte) print_euclid::b#10 0.4 +(byte) print_euclid::b#10 20.2 (byte*) print_line_cursor -(byte*) print_line_cursor#1 3.533333333333333 -(byte*) print_line_cursor#16 24.0 -(byte*) print_line_cursor#33 0.7058823529411765 +(byte*) print_line_cursor#1 2007.5333333333335 +(byte*) print_line_cursor#16 21003.0 +(byte*) print_line_cursor#33 62.11764705882353 (void()) print_ln() (byte*) print_screen @@ -1738,42 +1738,42 @@ memset: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ print_char_cursor#63 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [10] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#64 ] ( main:2 [ print_line_cursor#1 print_char_cursor#64 ] ) always clobbers reg byte a -Statement [12] (byte*) print_char_cursor#65 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#65 ] ( main:2 [ print_line_cursor#1 print_char_cursor#65 ] ) always clobbers reg byte a -Statement [14] (byte*) print_char_cursor#66 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#66 ] ( main:2 [ print_line_cursor#1 print_char_cursor#66 ] ) always clobbers reg byte a -Statement [16] (byte*) print_char_cursor#67 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#67 ] ( main:2 [ print_line_cursor#1 print_char_cursor#67 ] ) always clobbers reg byte a -Statement [39] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#16 + (byte) $28 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [40] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [43] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ) always clobbers reg byte a +Statement [8] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ print_char_cursor#63 print_line_cursor#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [10] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#64 ] ( main:2 [ print_line_cursor#1 print_char_cursor#64 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [12] (byte*) print_char_cursor#65 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#65 ] ( main:2 [ print_line_cursor#1 print_char_cursor#65 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [14] (byte*) print_char_cursor#66 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#66 ] ( main:2 [ print_line_cursor#1 print_char_cursor#66 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [16] (byte*) print_char_cursor#67 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#67 ] ( main:2 [ print_line_cursor#1 print_char_cursor#67 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [39] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#16 + (byte) $28 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { } main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [40] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { } main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [43] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#53 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#63 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#64 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#65 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#66 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#67 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_euclid::a#10 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ print_euclid::b#10 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Statement [46] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#32 print_byte::$2 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] ) always clobbers reg byte a -Statement [51] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_euclid:7::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] ) always clobbers reg byte y +Statement [46] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#32 print_byte::$2 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#51 = print_char_cursor#53 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [51] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_euclid:7::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#53 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#63 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#64 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#65 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#66 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#67 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#51 = print_char_cursor#53 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ print_euclid::a#10 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ print_euclid::b#10 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Statement [59] (byte) euclid::b#1 ← (byte) euclid::b#2 - (byte) euclid::a#2 [ euclid::a#2 euclid::b#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] ) always clobbers reg byte a +Statement [59] (byte) euclid::b#1 ← (byte) euclid::b#2 - (byte) euclid::a#2 [ euclid::a#2 euclid::b#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ euclid::a#2 euclid::a#0 euclid::a#1 ] -Statement [60] (byte) euclid::a#1 ← (byte) euclid::a#2 - (byte) euclid::b#2 [ euclid::b#2 euclid::a#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] ) always clobbers reg byte a +Statement [60] (byte) euclid::a#1 ← (byte) euclid::a#2 - (byte) euclid::b#2 [ euclid::b#2 euclid::a#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ euclid::b#2 euclid::b#0 euclid::b#1 ] -Statement [66] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [68] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ print_char_cursor#63 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [10] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#64 ] ( main:2 [ print_line_cursor#1 print_char_cursor#64 ] ) always clobbers reg byte a -Statement [12] (byte*) print_char_cursor#65 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#65 ] ( main:2 [ print_line_cursor#1 print_char_cursor#65 ] ) always clobbers reg byte a -Statement [14] (byte*) print_char_cursor#66 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#66 ] ( main:2 [ print_line_cursor#1 print_char_cursor#66 ] ) always clobbers reg byte a -Statement [16] (byte*) print_char_cursor#67 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#67 ] ( main:2 [ print_line_cursor#1 print_char_cursor#67 ] ) always clobbers reg byte a -Statement [39] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#16 + (byte) $28 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [40] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] ) always clobbers reg byte a -Statement [43] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ) always clobbers reg byte a -Statement [46] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#32 print_byte::$2 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] ) always clobbers reg byte a -Statement [51] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_euclid:7::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:7::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:9::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:11::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:13::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:15::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] main:2::print_euclid:17::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] ) always clobbers reg byte y -Statement [59] (byte) euclid::b#1 ← (byte) euclid::b#2 - (byte) euclid::a#2 [ euclid::a#2 euclid::b#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] ) always clobbers reg byte a -Statement [60] (byte) euclid::a#1 ← (byte) euclid::a#2 - (byte) euclid::b#2 [ euclid::b#2 euclid::a#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] ) always clobbers reg byte a -Statement [66] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [68] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [66] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [68] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ print_char_cursor#63 print_line_cursor#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [10] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#64 ] ( main:2 [ print_line_cursor#1 print_char_cursor#64 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [12] (byte*) print_char_cursor#65 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#65 ] ( main:2 [ print_line_cursor#1 print_char_cursor#65 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [14] (byte*) print_char_cursor#66 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#66 ] ( main:2 [ print_line_cursor#1 print_char_cursor#66 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [16] (byte*) print_char_cursor#67 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#67 ] ( main:2 [ print_line_cursor#1 print_char_cursor#67 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [39] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#16 + (byte) $28 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { } main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [40] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#32 ] ( main:2::print_euclid:7::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { } main:2::print_euclid:9::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:11::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:13::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:15::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } } main:2::print_euclid:17::print_ln:35 [ print_line_cursor#1 print_char_cursor#32 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } } ) always clobbers reg byte a +Statement [43] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#51 print_byte::$0 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#53 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#63 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#64 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#65 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#66 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#67 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#51 print_byte::$0 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [46] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#32 print_byte::$2 ] ( main:2::print_euclid:7::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#51 = print_char_cursor#53 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_byte:21 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33 [ print_line_cursor#33 print_char_cursor#32 print_byte::$2 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [51] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_euclid:7::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_char:23 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_char:27 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#53 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#63 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#64 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#65 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#66 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:21::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#31 = print_char_cursor#53 print_char_cursor#67 print_char_cursor#51 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25::print_char:45 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33::print_char:45 [ print_line_cursor#33 print_byte::b#3 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char_cursor#51 = print_char_cursor#53 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:9::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:11::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:13::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:15::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:17::print_byte:21::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#51 = print_char_cursor#53 print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#0 = print_byte::b#3 print_euclid::a#10 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#31 = print_char_cursor#32 } } main:2::print_euclid:7::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:25::print_char:48 [ print_euclid::a#10 print_euclid::b#10 print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#1 = print_byte::b#3 print_euclid::b#10 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:7::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:9::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:11::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:13::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:15::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } main:2::print_euclid:17::print_byte:33::print_char:48 [ print_line_cursor#33 print_char_cursor#31 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { print_byte::b#2 = print_byte::b#3 euclid::return#0 } { print_char_cursor#31 = print_char_cursor#51 print_char_cursor#32 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte y +Statement [59] (byte) euclid::b#1 ← (byte) euclid::b#2 - (byte) euclid::a#2 [ euclid::a#2 euclid::b#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::a#2 euclid::b#1 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } ) always clobbers reg byte a +Statement [60] (byte) euclid::a#1 ← (byte) euclid::a#2 - (byte) euclid::b#2 [ euclid::b#2 euclid::a#1 ] ( main:2::print_euclid:7::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:9::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#63 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:11::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#64 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:13::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#65 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:15::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#66 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } main:2::print_euclid:17::euclid:30 [ print_line_cursor#33 print_char_cursor#32 euclid::b#2 euclid::a#1 ] { { print_char_cursor#53 = print_char_cursor#67 } { print_line_cursor#1 = print_line_cursor#33 } { euclid::a#0 = print_euclid::a#10 } { euclid::b#0 = print_euclid::b#10 } { euclid::return#0 = euclid::a#2 } } ) always clobbers reg byte a +Statement [66] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [68] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:62 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ print_euclid::a#10 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ print_euclid::b#10 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ print_line_cursor#16 print_line_cursor#33 print_line_cursor#1 ] : zp[2]:4 , @@ -1788,22 +1788,22 @@ Potential registers zp[1]:15 [ print_byte::$0 ] : zp[1]:15 , reg byte a , reg by Potential registers zp[1]:16 [ print_byte::$2 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [euclid] 43.75: zp[1]:11 [ euclid::b#2 euclid::b#0 euclid::b#1 ] 36.83: zp[1]:10 [ euclid::a#2 euclid::a#0 euclid::a#1 ] 4: zp[1]:14 [ euclid::return#0 ] -Uplift Scope [] 35.59: zp[2]:8 [ print_char_cursor#31 print_char_cursor#51 print_char_cursor#53 print_char_cursor#63 print_char_cursor#64 print_char_cursor#65 print_char_cursor#66 print_char_cursor#67 print_char_cursor#32 ] 28.24: zp[2]:4 [ print_line_cursor#16 print_line_cursor#33 print_line_cursor#1 ] -Uplift Scope [memset] 36.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_byte] 14.5: zp[1]:6 [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:15 [ print_byte::$0 ] 4: zp[1]:16 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:7 [ print_char::ch#4 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_euclid] 0.44: zp[1]:2 [ print_euclid::a#10 ] 0.4: zp[1]:3 [ print_euclid::b#10 ] +Uplift Scope [euclid] 38,305: zp[1]:11 [ euclid::b#2 euclid::b#0 euclid::b#1 ] 32,220.83: zp[1]:10 [ euclid::a#2 euclid::a#0 euclid::a#1 ] 202: zp[1]:14 [ euclid::return#0 ] +Uplift Scope [] 23,072.65: zp[2]:4 [ print_line_cursor#16 print_line_cursor#33 print_line_cursor#1 ] 12,581.95: zp[2]:8 [ print_char_cursor#31 print_char_cursor#51 print_char_cursor#53 print_char_cursor#63 print_char_cursor#64 print_char_cursor#65 print_char_cursor#66 print_char_cursor#67 print_char_cursor#32 ] +Uplift Scope [memset] 33,336.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_char] 16,007: zp[1]:7 [ print_char::ch#4 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 2,002: zp[1]:15 [ print_byte::$0 ] 2,002: zp[1]:16 [ print_byte::$2 ] 1,182.25: zp[1]:6 [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Uplift Scope [print_euclid] 22.44: zp[1]:2 [ print_euclid::a#10 ] 20.2: zp[1]:3 [ print_euclid::b#10 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] Uplifting [euclid] best 1923 combination reg byte x [ euclid::b#2 euclid::b#0 euclid::b#1 ] zp[1]:10 [ euclid::a#2 euclid::a#0 euclid::a#1 ] reg byte a [ euclid::return#0 ] -Uplifting [] best 1923 combination zp[2]:8 [ print_char_cursor#31 print_char_cursor#51 print_char_cursor#53 print_char_cursor#63 print_char_cursor#64 print_char_cursor#65 print_char_cursor#66 print_char_cursor#67 print_char_cursor#32 ] zp[2]:4 [ print_line_cursor#16 print_line_cursor#33 print_line_cursor#1 ] +Uplifting [] best 1923 combination zp[2]:4 [ print_line_cursor#16 print_line_cursor#33 print_line_cursor#1 ] zp[2]:8 [ print_char_cursor#31 print_char_cursor#51 print_char_cursor#53 print_char_cursor#63 print_char_cursor#64 print_char_cursor#65 print_char_cursor#66 print_char_cursor#67 print_char_cursor#32 ] Uplifting [memset] best 1923 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_byte] best 1904 combination reg byte x [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 1889 combination reg byte a [ print_char::ch#4 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_char] best 1908 combination reg byte a [ print_char::ch#4 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 1889 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Uplifting [print_euclid] best 1889 combination zp[1]:2 [ print_euclid::a#10 ] zp[1]:3 [ print_euclid::b#10 ] Uplifting [RADIX] best 1889 combination Uplifting [print_ln] best 1889 combination @@ -2381,15 +2381,15 @@ FINAL SYMBOL TABLE (label) euclid::@4 (label) euclid::@return (byte) euclid::a -(byte) euclid::a#0 a zp[1]:2 1.3333333333333333 -(byte) euclid::a#1 a zp[1]:2 22.0 -(byte) euclid::a#2 a zp[1]:2 13.5 +(byte) euclid::a#0 a zp[1]:2 367.33333333333337 +(byte) euclid::a#1 a zp[1]:2 20002.0 +(byte) euclid::a#2 a zp[1]:2 11851.5 (byte) euclid::b -(byte) euclid::b#0 reg byte x 2.0 -(byte) euclid::b#1 reg byte x 22.0 -(byte) euclid::b#2 reg byte x 19.75 +(byte) euclid::b#0 reg byte x 551.0 +(byte) euclid::b#1 reg byte x 20002.0 +(byte) euclid::b#2 reg byte x 17752.0 (byte) euclid::return -(byte) euclid::return#0 reg byte a 4.0 +(byte) euclid::return#0 reg byte a 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -2405,8 +2405,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2415,31 +2415,31 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 2.5 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 576.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#4 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#32 print_char_cursor zp[2]:6 0.9199999999999998 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 2.6666666666666665 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 11103.0 +(byte*) print_char_cursor#32 print_char_cursor zp[2]:6 856.2800000000002 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 434.6666666666667 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 78.0 +(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:6 22.0 (void()) print_cls() (label) print_cls::@return (void()) print_euclid((byte) print_euclid::a , (byte) print_euclid::b) @@ -2451,14 +2451,14 @@ FINAL SYMBOL TABLE (label) print_euclid::@6 (label) print_euclid::@return (byte) print_euclid::a -(byte) print_euclid::a#10 a zp[1]:2 0.4444444444444444 +(byte) print_euclid::a#10 a zp[1]:2 22.444444444444443 (byte) print_euclid::b -(byte) print_euclid::b#10 b zp[1]:3 0.4 +(byte) print_euclid::b#10 b zp[1]:3 20.2 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 3.533333333333333 -(byte*) print_line_cursor#16 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#33 print_line_cursor zp[2]:4 0.7058823529411765 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 2007.5333333333335 +(byte*) print_line_cursor#16 print_line_cursor zp[2]:4 21003.0 +(byte*) print_line_cursor#33 print_line_cursor zp[2]:4 62.11764705882353 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return diff --git a/src/test/ref/euclid-3.sym b/src/test/ref/euclid-3.sym index c83688578..e81971561 100644 --- a/src/test/ref/euclid-3.sym +++ b/src/test/ref/euclid-3.sym @@ -12,15 +12,15 @@ (label) euclid::@4 (label) euclid::@return (byte) euclid::a -(byte) euclid::a#0 a zp[1]:2 1.3333333333333333 -(byte) euclid::a#1 a zp[1]:2 22.0 -(byte) euclid::a#2 a zp[1]:2 13.5 +(byte) euclid::a#0 a zp[1]:2 367.33333333333337 +(byte) euclid::a#1 a zp[1]:2 20002.0 +(byte) euclid::a#2 a zp[1]:2 11851.5 (byte) euclid::b -(byte) euclid::b#0 reg byte x 2.0 -(byte) euclid::b#1 reg byte x 22.0 -(byte) euclid::b#2 reg byte x 19.75 +(byte) euclid::b#0 reg byte x 551.0 +(byte) euclid::b#1 reg byte x 20002.0 +(byte) euclid::b#2 reg byte x 17752.0 (byte) euclid::return -(byte) euclid::return#0 reg byte a 4.0 +(byte) euclid::return#0 reg byte a 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -36,8 +36,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -46,31 +46,31 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 2.5 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 576.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#4 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#32 print_char_cursor zp[2]:6 0.9199999999999998 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 2.6666666666666665 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 11103.0 +(byte*) print_char_cursor#32 print_char_cursor zp[2]:6 856.2800000000002 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 434.6666666666667 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 78.0 +(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:6 22.0 (void()) print_cls() (label) print_cls::@return (void()) print_euclid((byte) print_euclid::a , (byte) print_euclid::b) @@ -82,14 +82,14 @@ (label) print_euclid::@6 (label) print_euclid::@return (byte) print_euclid::a -(byte) print_euclid::a#10 a zp[1]:2 0.4444444444444444 +(byte) print_euclid::a#10 a zp[1]:2 22.444444444444443 (byte) print_euclid::b -(byte) print_euclid::b#10 b zp[1]:3 0.4 +(byte) print_euclid::b#10 b zp[1]:3 20.2 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 3.533333333333333 -(byte*) print_line_cursor#16 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#33 print_line_cursor zp[2]:4 0.7058823529411765 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 2007.5333333333335 +(byte*) print_line_cursor#16 print_line_cursor zp[2]:4 21003.0 +(byte*) print_line_cursor#33 print_line_cursor zp[2]:4 62.11764705882353 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return diff --git a/src/test/ref/euclid-problem-2.log b/src/test/ref/euclid-problem-2.log index 270544631..c5a4767ce 100644 --- a/src/test/ref/euclid-problem-2.log +++ b/src/test/ref/euclid-problem-2.log @@ -229,21 +229,21 @@ Finalized unsigned number type (byte) $9b Finalized unsigned number type (byte) $63 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) euclid::return#0 = (byte) euclid::return#6 -Alias (byte) idx#13 = (byte) idx#7 -Alias (byte) euclid::return#1 = (byte) euclid::return#7 -Alias (byte) idx#1 = (byte) idx#8 -Alias (byte) euclid::return#2 = (byte) euclid::return#8 -Alias (byte) idx#2 = (byte) idx#9 -Alias (byte) euclid::return#3 = (byte) euclid::return#9 -Alias (byte) idx#10 = (byte) idx#3 -Alias (byte) idx#11 = (byte) idx#4 (byte) idx#5 -Alias (byte) euclid::a#5 = (byte) euclid::a#6 (byte) euclid::a#7 (byte) euclid::return#4 (byte) euclid::a#8 (byte) euclid::a#9 (byte) euclid::return#10 (byte) euclid::return#5 -Alias (byte) euclid::b#5 = (byte) euclid::b#6 (byte) euclid::b#7 (byte) euclid::b#8 -Alias (byte) euclid::a#4 = (byte~) euclid::$3 -Alias (byte) euclid::b#4 = (byte~) euclid::$2 -Alias (byte) idx#0 = (byte) idx#14 -Alias (byte) idx#12 = (byte) idx#6 +Alias euclid::return#0 = euclid::return#6 +Alias idx#13 = idx#7 +Alias euclid::return#1 = euclid::return#7 +Alias idx#1 = idx#8 +Alias euclid::return#2 = euclid::return#8 +Alias idx#2 = idx#9 +Alias euclid::return#3 = euclid::return#9 +Alias idx#10 = idx#3 +Alias idx#11 = idx#4 idx#5 +Alias euclid::a#5 = euclid::a#6 euclid::a#7 euclid::return#4 euclid::a#8 euclid::a#9 euclid::return#10 euclid::return#5 +Alias euclid::b#5 = euclid::b#6 euclid::b#7 euclid::b#8 +Alias euclid::a#4 = euclid::$3 +Alias euclid::b#4 = euclid::$2 +Alias idx#0 = idx#14 +Alias idx#12 = idx#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#13 (byte) idx#0 Identical Phi Values (byte) idx#12 (byte) idx#11 @@ -411,24 +411,24 @@ euclid::@3: scope:[euclid] from euclid::@2 VARIABLE REGISTER WEIGHTS (byte()) euclid((byte) euclid::a , (byte) euclid::b) (byte) euclid::a -(byte) euclid::a#10 2.0 -(byte) euclid::a#4 22.0 -(byte) euclid::a#5 9.666666666666668 +(byte) euclid::a#10 101.0 +(byte) euclid::a#4 2002.0 +(byte) euclid::a#5 794.6666666666667 (byte) euclid::b -(byte) euclid::b#4 22.0 -(byte) euclid::b#5 19.75 -(byte) euclid::b#9 2.0 +(byte) euclid::b#4 2002.0 +(byte) euclid::b#5 1777.0 +(byte) euclid::b#9 101.0 (byte) euclid::return -(byte) euclid::return#0 4.0 -(byte) euclid::return#1 4.0 -(byte) euclid::return#2 4.0 -(byte) euclid::return#3 4.0 +(byte) euclid::return#0 22.0 +(byte) euclid::return#1 22.0 +(byte) euclid::return#2 22.0 +(byte) euclid::return#3 22.0 (byte) idx (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 Initial phi equivalence classes [ euclid::a#5 euclid::a#10 euclid::a#4 ] @@ -645,12 +645,12 @@ euclid: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [27] (byte) euclid::b#4 ← (byte) euclid::b#5 - (byte) euclid::a#5 [ euclid::a#5 euclid::b#4 ] ( main:2::euclid:5 [ euclid::a#5 euclid::b#4 ] main:2::euclid:9 [ euclid::a#5 euclid::b#4 ] main:2::euclid:13 [ euclid::a#5 euclid::b#4 ] main:2::euclid:17 [ euclid::a#5 euclid::b#4 ] ) always clobbers reg byte a +Statement [27] (byte) euclid::b#4 ← (byte) euclid::b#5 - (byte) euclid::a#5 [ euclid::a#5 euclid::b#4 ] ( main:2::euclid:5 [ euclid::a#5 euclid::b#4 ] { { euclid::return#0 = euclid::a#5 } } main:2::euclid:9 [ euclid::a#5 euclid::b#4 ] { { euclid::return#1 = euclid::a#5 } } main:2::euclid:13 [ euclid::a#5 euclid::b#4 ] { { euclid::return#2 = euclid::a#5 } } main:2::euclid:17 [ euclid::a#5 euclid::b#4 ] { { euclid::return#3 = euclid::a#5 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ euclid::a#5 euclid::a#10 euclid::a#4 ] -Statement [28] (byte) euclid::a#4 ← (byte) euclid::a#5 - (byte) euclid::b#5 [ euclid::b#5 euclid::a#4 ] ( main:2::euclid:5 [ euclid::b#5 euclid::a#4 ] main:2::euclid:9 [ euclid::b#5 euclid::a#4 ] main:2::euclid:13 [ euclid::b#5 euclid::a#4 ] main:2::euclid:17 [ euclid::b#5 euclid::a#4 ] ) always clobbers reg byte a +Statement [28] (byte) euclid::a#4 ← (byte) euclid::a#5 - (byte) euclid::b#5 [ euclid::b#5 euclid::a#4 ] ( main:2::euclid:5 [ euclid::b#5 euclid::a#4 ] { { euclid::return#0 = euclid::a#5 } } main:2::euclid:9 [ euclid::b#5 euclid::a#4 ] { { euclid::return#1 = euclid::a#5 } } main:2::euclid:13 [ euclid::b#5 euclid::a#4 ] { { euclid::return#2 = euclid::a#5 } } main:2::euclid:17 [ euclid::b#5 euclid::a#4 ] { { euclid::return#3 = euclid::a#5 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ euclid::b#5 euclid::b#9 euclid::b#4 ] -Statement [27] (byte) euclid::b#4 ← (byte) euclid::b#5 - (byte) euclid::a#5 [ euclid::a#5 euclid::b#4 ] ( main:2::euclid:5 [ euclid::a#5 euclid::b#4 ] main:2::euclid:9 [ euclid::a#5 euclid::b#4 ] main:2::euclid:13 [ euclid::a#5 euclid::b#4 ] main:2::euclid:17 [ euclid::a#5 euclid::b#4 ] ) always clobbers reg byte a -Statement [28] (byte) euclid::a#4 ← (byte) euclid::a#5 - (byte) euclid::b#5 [ euclid::b#5 euclid::a#4 ] ( main:2::euclid:5 [ euclid::b#5 euclid::a#4 ] main:2::euclid:9 [ euclid::b#5 euclid::a#4 ] main:2::euclid:13 [ euclid::b#5 euclid::a#4 ] main:2::euclid:17 [ euclid::b#5 euclid::a#4 ] ) always clobbers reg byte a +Statement [27] (byte) euclid::b#4 ← (byte) euclid::b#5 - (byte) euclid::a#5 [ euclid::a#5 euclid::b#4 ] ( main:2::euclid:5 [ euclid::a#5 euclid::b#4 ] { { euclid::return#0 = euclid::a#5 } } main:2::euclid:9 [ euclid::a#5 euclid::b#4 ] { { euclid::return#1 = euclid::a#5 } } main:2::euclid:13 [ euclid::a#5 euclid::b#4 ] { { euclid::return#2 = euclid::a#5 } } main:2::euclid:17 [ euclid::a#5 euclid::b#4 ] { { euclid::return#3 = euclid::a#5 } } ) always clobbers reg byte a +Statement [28] (byte) euclid::a#4 ← (byte) euclid::a#5 - (byte) euclid::b#5 [ euclid::b#5 euclid::a#4 ] ( main:2::euclid:5 [ euclid::b#5 euclid::a#4 ] { { euclid::return#0 = euclid::a#5 } } main:2::euclid:9 [ euclid::b#5 euclid::a#4 ] { { euclid::return#1 = euclid::a#5 } } main:2::euclid:13 [ euclid::b#5 euclid::a#4 ] { { euclid::return#2 = euclid::a#5 } } main:2::euclid:17 [ euclid::b#5 euclid::a#4 ] { { euclid::return#3 = euclid::a#5 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ euclid::a#5 euclid::a#10 euclid::a#4 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ euclid::b#5 euclid::b#9 euclid::b#4 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ euclid::return#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -663,8 +663,8 @@ Potential registers zp[1]:10 [ euclid::return#3 ] : zp[1]:10 , reg byte a , reg Potential registers zp[1]:11 [ main::$3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [euclid] 43.75: zp[1]:3 [ euclid::b#5 euclid::b#9 euclid::b#4 ] 33.67: zp[1]:2 [ euclid::a#5 euclid::a#10 euclid::a#4 ] 4: zp[1]:4 [ euclid::return#0 ] 4: zp[1]:6 [ euclid::return#1 ] 4: zp[1]:8 [ euclid::return#2 ] 4: zp[1]:10 [ euclid::return#3 ] -Uplift Scope [main] 4: zp[1]:5 [ main::$0 ] 4: zp[1]:7 [ main::$1 ] 4: zp[1]:9 [ main::$2 ] 4: zp[1]:11 [ main::$3 ] +Uplift Scope [euclid] 3,880: zp[1]:3 [ euclid::b#5 euclid::b#9 euclid::b#4 ] 2,897.67: zp[1]:2 [ euclid::a#5 euclid::a#10 euclid::a#4 ] 22: zp[1]:4 [ euclid::return#0 ] 22: zp[1]:6 [ euclid::return#1 ] 22: zp[1]:8 [ euclid::return#2 ] 22: zp[1]:10 [ euclid::return#3 ] +Uplift Scope [main] 22: zp[1]:5 [ main::$0 ] 22: zp[1]:7 [ main::$1 ] 22: zp[1]:9 [ main::$2 ] 22: zp[1]:11 [ main::$3 ] Uplift Scope [] Uplifting [euclid] best 625 combination reg byte x [ euclid::b#5 euclid::b#9 euclid::b#4 ] zp[1]:2 [ euclid::a#5 euclid::a#10 euclid::a#4 ] reg byte a [ euclid::return#0 ] reg byte a [ euclid::return#1 ] zp[1]:8 [ euclid::return#2 ] zp[1]:10 [ euclid::return#3 ] @@ -882,24 +882,24 @@ FINAL SYMBOL TABLE (label) euclid::@4 (label) euclid::@return (byte) euclid::a -(byte) euclid::a#10 a zp[1]:2 2.0 -(byte) euclid::a#4 a zp[1]:2 22.0 -(byte) euclid::a#5 a zp[1]:2 9.666666666666668 +(byte) euclid::a#10 a zp[1]:2 101.0 +(byte) euclid::a#4 a zp[1]:2 2002.0 +(byte) euclid::a#5 a zp[1]:2 794.6666666666667 (byte) euclid::b -(byte) euclid::b#4 reg byte x 22.0 -(byte) euclid::b#5 reg byte x 19.75 -(byte) euclid::b#9 reg byte x 2.0 +(byte) euclid::b#4 reg byte x 2002.0 +(byte) euclid::b#5 reg byte x 1777.0 +(byte) euclid::b#9 reg byte x 101.0 (byte) euclid::return -(byte) euclid::return#0 reg byte a 4.0 -(byte) euclid::return#1 reg byte a 4.0 -(byte) euclid::return#2 reg byte a 4.0 -(byte) euclid::return#3 reg byte a 4.0 +(byte) euclid::return#0 reg byte a 22.0 +(byte) euclid::return#1 reg byte a 22.0 +(byte) euclid::return#2 reg byte a 22.0 +(byte) euclid::return#3 reg byte a 22.0 (byte) idx (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/euclid-problem-2.sym b/src/test/ref/euclid-problem-2.sym index 015c160fa..cb13926b7 100644 --- a/src/test/ref/euclid-problem-2.sym +++ b/src/test/ref/euclid-problem-2.sym @@ -9,24 +9,24 @@ (label) euclid::@4 (label) euclid::@return (byte) euclid::a -(byte) euclid::a#10 a zp[1]:2 2.0 -(byte) euclid::a#4 a zp[1]:2 22.0 -(byte) euclid::a#5 a zp[1]:2 9.666666666666668 +(byte) euclid::a#10 a zp[1]:2 101.0 +(byte) euclid::a#4 a zp[1]:2 2002.0 +(byte) euclid::a#5 a zp[1]:2 794.6666666666667 (byte) euclid::b -(byte) euclid::b#4 reg byte x 22.0 -(byte) euclid::b#5 reg byte x 19.75 -(byte) euclid::b#9 reg byte x 2.0 +(byte) euclid::b#4 reg byte x 2002.0 +(byte) euclid::b#5 reg byte x 1777.0 +(byte) euclid::b#9 reg byte x 101.0 (byte) euclid::return -(byte) euclid::return#0 reg byte a 4.0 -(byte) euclid::return#1 reg byte a 4.0 -(byte) euclid::return#2 reg byte a 4.0 -(byte) euclid::return#3 reg byte a 4.0 +(byte) euclid::return#0 reg byte a 22.0 +(byte) euclid::return#1 reg byte a 22.0 +(byte) euclid::return#2 reg byte a 22.0 +(byte) euclid::return#3 reg byte a 22.0 (byte) idx (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/euclid-problem.log b/src/test/ref/euclid-problem.log index 803f5742e..1c69d16a9 100644 --- a/src/test/ref/euclid-problem.log +++ b/src/test/ref/euclid-problem.log @@ -87,10 +87,10 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::a#2 = (byte) main::a#3 (byte) main::a#4 (byte) main::a#5 (byte) main::a#6 -Alias (byte) main::b#2 = (byte) main::b#3 (byte) main::b#4 (byte) main::b#5 -Alias (byte) main::a#1 = (byte~) main::$3 -Alias (byte) main::b#1 = (byte~) main::$2 +Alias main::a#2 = main::a#3 main::a#4 main::a#5 main::a#6 +Alias main::b#2 = main::b#3 main::b#4 main::b#5 +Alias main::a#1 = main::$3 +Alias main::b#1 = main::$2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::a#2!=(byte) main::b#2) goto main::@2 Simple Condition (bool~) main::$1 [6] if((byte) main::a#2>(byte) main::b#2) goto main::@4 @@ -164,11 +164,11 @@ main::@4: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#1 22.0 -(byte) main::a#2 19.75 +(byte) main::a#1 202.0 +(byte) main::a#2 179.5 (byte) main::b -(byte) main::b#1 22.0 -(byte) main::b#2 19.25 +(byte) main::b#1 202.0 +(byte) main::b#2 176.75 Initial phi equivalence classes [ main::a#2 main::a#1 ] @@ -268,17 +268,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] (byte) main::b#1 ← (byte) main::b#2 - (byte) main::a#2 [ main::a#2 main::b#1 ] ( main:2 [ main::a#2 main::b#1 ] ) always clobbers reg byte a +Statement [10] (byte) main::b#1 ← (byte) main::b#2 - (byte) main::a#2 [ main::a#2 main::b#1 ] ( main:2 [ main::a#2 main::b#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#2 main::a#1 ] -Statement [11] (byte) main::a#1 ← (byte) main::a#2 - (byte) main::b#2 [ main::b#2 main::a#1 ] ( main:2 [ main::b#2 main::a#1 ] ) always clobbers reg byte a +Statement [11] (byte) main::a#1 ← (byte) main::a#2 - (byte) main::b#2 [ main::b#2 main::a#1 ] ( main:2 [ main::b#2 main::a#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#2 main::b#1 ] -Statement [10] (byte) main::b#1 ← (byte) main::b#2 - (byte) main::a#2 [ main::a#2 main::b#1 ] ( main:2 [ main::a#2 main::b#1 ] ) always clobbers reg byte a -Statement [11] (byte) main::a#1 ← (byte) main::a#2 - (byte) main::b#2 [ main::b#2 main::a#1 ] ( main:2 [ main::b#2 main::a#1 ] ) always clobbers reg byte a +Statement [10] (byte) main::b#1 ← (byte) main::b#2 - (byte) main::a#2 [ main::a#2 main::b#1 ] ( main:2 [ main::a#2 main::b#1 ] { } ) always clobbers reg byte a +Statement [11] (byte) main::a#1 ← (byte) main::a#2 - (byte) main::b#2 [ main::b#2 main::a#1 ] ( main:2 [ main::b#2 main::a#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::a#2 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::b#2 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 41.75: zp[1]:2 [ main::a#2 main::a#1 ] 41.25: zp[1]:3 [ main::b#2 main::b#1 ] +Uplift Scope [main] 381.5: zp[1]:2 [ main::a#2 main::a#1 ] 378.75: zp[1]:3 [ main::b#2 main::b#1 ] Uplift Scope [] Uplifting [main] best 568 combination zp[1]:2 [ main::a#2 main::a#1 ] reg byte x [ main::b#2 main::b#1 ] @@ -415,11 +415,11 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 22.0 -(byte) main::a#2 a zp[1]:2 19.75 +(byte) main::a#1 a zp[1]:2 202.0 +(byte) main::a#2 a zp[1]:2 179.5 (byte) main::b -(byte) main::b#1 reg byte x 22.0 -(byte) main::b#2 reg byte x 19.25 +(byte) main::b#1 reg byte x 202.0 +(byte) main::b#2 reg byte x 176.75 zp[1]:2 [ main::a#2 main::a#1 ] reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/euclid-problem.sym b/src/test/ref/euclid-problem.sym index aeecfc446..8a0c4ade3 100644 --- a/src/test/ref/euclid-problem.sym +++ b/src/test/ref/euclid-problem.sym @@ -10,11 +10,11 @@ (label) main::@5 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 22.0 -(byte) main::a#2 a zp[1]:2 19.75 +(byte) main::a#1 a zp[1]:2 202.0 +(byte) main::a#2 a zp[1]:2 179.5 (byte) main::b -(byte) main::b#1 reg byte x 22.0 -(byte) main::b#2 reg byte x 19.25 +(byte) main::b#1 reg byte x 202.0 +(byte) main::b#2 reg byte x 176.75 zp[1]:2 [ main::a#2 main::a#1 ] reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/examples/3d/3d.asm b/src/test/ref/examples/3d/3d.asm index 97e1fe70b..dfe553621 100644 --- a/src/test/ref/examples/3d/3d.asm +++ b/src/test/ref/examples/3d/3d.asm @@ -190,16 +190,18 @@ debug_print: { .label c = 5 .label i = 6 // print_sbyte_pos(sx, 0, 37) - ldx.z sx + lda.z sx // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos1_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(sy, 1, 37) - ldx.z sy + lda.z sy // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col @@ -210,75 +212,85 @@ debug_print: { sta.z print_sbyte_at.at lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta.z print_sbyte_at.at+1 - ldx #sz + lda #sz + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[0], 4, 29) - ldx rotation_matrix + lda rotation_matrix // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[1], 4, 33) - ldx rotation_matrix+1 + lda rotation_matrix+1 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[2], 4, 37) - ldx rotation_matrix+2 + lda rotation_matrix+2 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[3], 5, 29) - ldx rotation_matrix+3 + lda rotation_matrix+3 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[4], 5, 33) - ldx rotation_matrix+4 + lda rotation_matrix+4 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[5], 5, 37) - ldx rotation_matrix+5 + lda rotation_matrix+5 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[6], 6, 29) - ldx rotation_matrix+6 + lda rotation_matrix+6 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[7], 6, 33) - ldx rotation_matrix+7 + lda rotation_matrix+7 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta.z print_sbyte_at.at+1 jsr print_sbyte_at // print_sbyte_pos(rotation_matrix[8], 6, 37) - ldx rotation_matrix+8 + lda rotation_matrix+8 // print_sbyte_at(sb, print_screen+row*40+col) + sta.z print_sbyte_at.b lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col @@ -298,7 +310,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx xrs,y + lda xrs,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(yrs[i], at_line+40*1+c) lda.z c @@ -309,7 +322,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx yrs,y + lda yrs,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(zrs[i], at_line+40*2+c) lda.z c @@ -320,7 +334,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx zrs,y + lda zrs,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(pps[i], at_line+40*3+c) lda.z c @@ -331,7 +346,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx pps,y + lda pps,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(xps[i], at_line+40*4+c) lda.z c @@ -342,7 +358,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx xps,y + lda xps,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(yps[i], at_line+40*5+c) lda.z c @@ -353,7 +370,8 @@ debug_print: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx yps,y + lda yps,y + sta.z print_sbyte_at.b jsr print_sbyte_at // c += 4 lax.z c @@ -370,14 +388,15 @@ debug_print: { rts } // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte register(X) b, byte* zp($e) at) +// print_sbyte_at(signed byte zp(7) b, byte* zp($e) at) print_sbyte_at: { + .label b = 7 .label at = $e // if(b<0) - cpx #0 + lda.z b bmi __b1 // print_char_at(' ', at) - ldy #' ' + ldx #' ' jsr print_char_at __b2: // print_byte_at((byte)b, at+1) @@ -390,52 +409,53 @@ print_sbyte_at: { rts __b1: // print_char_at('-', at) - ldy #'-' + ldx #'-' jsr print_char_at // b = -b - txa + lda.z b eor #$ff clc adc #1 - tax + sta.z b jmp __b2 } // Print a single char -// print_char_at(byte register(Y) ch, byte* zp($e) at) +// print_char_at(byte register(X) ch, byte* zp($e) at) print_char_at: { .label at = $e // *(at) = ch - tya + txa ldy #0 sta (at),y // } rts } // Print a byte as HEX at a specific position -// print_byte_at(byte register(X) b, byte* zp($e) at) +// print_byte_at(byte zp(7) b, byte* zp($e) at) print_byte_at: { + .label b = 7 .label at = $e // b>>4 - txa + lda.z b lsr lsr lsr lsr - tay // print_char_at(print_hextab[b>>4], at) - lda print_hextab,y tay + ldx print_hextab,y // Table of hexadecimal digits jsr print_char_at // b&$f lda #$f - axs #0 + and.z b + tay // print_char_at(print_hextab[b&$f], at+1) inc.z print_char_at.at bne !+ inc.z print_char_at.at+1 !: - ldy print_hextab,x + ldx print_hextab,y jsr print_char_at // } rts @@ -444,10 +464,10 @@ print_byte_at: { // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. // Implemented in assembler to utilize seriously fast multiplication -// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(5) z) +// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(7) z) rotate_matrix: { .label y = 6 - .label z = 5 + .label z = 7 // *xr = x txa sta xr @@ -935,7 +955,8 @@ debug_print_init: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx xs,y + lda xs,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(ys[i], at_line+40*1+c) lda.z c @@ -946,7 +967,8 @@ debug_print_init: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx ys,y + lda ys,y + sta.z print_sbyte_at.b jsr print_sbyte_at // print_sbyte_at(zs[i], at_line+40*2+c) lda.z c @@ -957,7 +979,8 @@ debug_print_init: { adc #0 sta.z print_sbyte_at.at+1 ldy.z i - ldx zs,y + lda zs,y + sta.z print_sbyte_at.b jsr print_sbyte_at ldy #0 __b2: diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log index 7c008bd24..3f14ddab0 100644 --- a/src/test/ref/examples/3d/3d.log +++ b/src/test/ref/examples/3d/3d.log @@ -2447,144 +2447,144 @@ Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos11_$0 Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos12_$0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (byte) $28 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_str_at::str#13 = (byte*) print_str_at::str#14 -Alias (byte*) print_str_at::at#13 = (byte*) print_str_at::at#14 -Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#24 (byte*) print_sbyte_at::at#25 (byte*) print_sbyte_at::at#22 (byte*) print_sbyte_at::at#26 -Alias (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#25 (signed byte) print_sbyte_at::b#23 (signed byte) print_sbyte_at::b#27 (signed byte) print_sbyte_at::b#26 -Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$6 -Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$1 -Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$2 -Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2 -Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2 -Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3 -Alias (signed byte) sx#13 = (signed byte) sx#18 (signed byte) sx#22 -Alias (signed byte) sy#13 = (signed byte) sy#19 (signed byte) sy#24 -Alias (byte*) print_screen#27 = (byte*) print_screen#40 (byte*) print_screen#54 -Alias (signed byte) sx#0 = (signed byte) sx#6 (signed byte) sx#7 (signed byte) sx#1 -Alias (signed byte) sy#0 = (signed byte) sy#6 (signed byte) sy#7 (signed byte) sy#1 -Alias (byte*) print_screen#0 = (byte*) print_screen#45 (byte*) print_screen#42 -Alias (signed byte) sx#14 = (signed byte) sx#8 (signed byte) sx#26 (signed byte) sx#25 -Alias (signed byte) sy#14 = (signed byte) sy#8 (signed byte) sy#29 (signed byte) sy#28 -Alias (byte*) print_screen#44 = (byte*) print_screen#47 (byte*) print_screen#48 (byte*) print_screen#46 -Alias (byte) anim::i#2 = (byte) anim::i#3 -Alias (signed byte) sx#15 = (signed byte) sx#21 (signed byte) sx#24 (signed byte) sx#9 -Alias (signed byte) sy#15 = (signed byte) sy#22 (signed byte) sy#26 (signed byte) sy#9 -Alias (byte*) print_screen#28 = (byte*) print_screen#41 (byte*) print_screen#43 (byte*) print_screen#53 -Alias (byte) anim::i2#0 = (byte~) anim::$8 -Alias (signed byte) sx#10 = (signed byte) sx#16 (signed byte) sx#4 -Alias (signed byte) sy#10 = (signed byte) sy#16 (signed byte) sy#4 -Alias (byte*) print_str_at::at#1 = (byte*~) debug_print_init::$2 -Alias (byte*) print_str_at::at#2 = (byte*~) debug_print_init::$5 -Alias (byte*) print_str_at::at#3 = (byte*~) debug_print_init::$8 -Alias (byte*) print_str_at::at#4 = (byte*~) debug_print_init::$10 -Alias (byte*) print_str_at::at#5 = (byte*~) debug_print_init::$12 -Alias (byte*) print_str_at::at#6 = (byte*~) debug_print_init::$14 -Alias (byte*) print_str_at::at#7 = (byte*~) debug_print_init::$16 -Alias (byte*) print_str_at::at#8 = (byte*~) debug_print_init::$18 -Alias (byte*) print_str_at::at#9 = (byte*~) debug_print_init::$20 -Alias (byte*) print_str_at::at#10 = (byte*~) debug_print_init::$22 -Alias (byte*) print_str_at::at#11 = (byte*~) debug_print_init::$24 -Alias (byte*) print_str_at::at#12 = (byte*~) debug_print_init::$26 -Alias (byte*) debug_print_init::at_line#0 = (byte*~) debug_print_init::$28 -Alias (byte*) debug_print_init::at_cols#0 = (byte*~) debug_print_init::$29 -Alias (byte*) print_sbyte_at::at#0 = (byte*~) debug_print_init::$31 -Alias (byte*) debug_print_init::at_line#1 = (byte*) debug_print_init::at_line#2 (byte*) debug_print_init::at_line#3 (byte*) debug_print_init::at_line#6 -Alias (byte) debug_print_init::c#2 = (byte) debug_print_init::c#3 (byte) debug_print_init::c#4 (byte) debug_print_init::c#7 -Alias (byte) debug_print_init::i#2 = (byte) debug_print_init::i#3 (byte) debug_print_init::i#4 (byte) debug_print_init::i#7 -Alias (byte*) debug_print_init::at_cols#2 = (byte*) debug_print_init::at_cols#4 (byte*) debug_print_init::at_cols#5 (byte*) debug_print_init::at_cols#3 -Alias (byte*) print_sbyte_at::at#1 = (byte*~) debug_print_init::$34 -Alias (byte*) print_sbyte_at::at#2 = (byte*~) debug_print_init::$37 -Alias (byte) debug_print_init::col#0 = (byte~) debug_print_init::$39 -Alias (byte) debug_print_init::c#5 = (byte) debug_print_init::c#6 -Alias (byte) debug_print_init::i#5 = (byte) debug_print_init::i#6 -Alias (byte*) debug_print_init::at_line#4 = (byte*) debug_print_init::at_line#5 -Alias (byte*) debug_print_init::at_cols#1 = (byte*) debug_print_init::at_cols#6 -Alias (byte) debug_print::print_sbyte_pos1_row#0 = (byte) debug_print::print_sbyte_pos1_row#1 -Alias (byte*) print_screen#10 = (byte*) print_screen#2 (byte*) print_screen#15 (byte*) print_screen#29 (byte*) print_screen#16 (byte*) print_screen#3 (byte*) print_screen#30 (byte*) print_screen#17 (byte*) print_screen#4 (byte*) print_screen#31 (byte*) print_screen#18 (byte*) print_screen#5 (byte*) print_screen#32 (byte*) print_screen#19 (byte*) print_screen#6 (byte*) print_screen#33 (byte*) print_screen#20 (byte*) print_screen#7 (byte*) print_screen#34 (byte*) print_screen#21 (byte*) print_screen#8 (byte*) print_screen#35 (byte*) print_screen#22 (byte*) print_screen#9 (byte*) print_screen#36 (byte*) print_screen#23 (byte*) print_screen#37 (byte*) print_screen#24 (byte*) print_screen#11 (byte*) print_screen#38 (byte*) print_screen#25 (byte*) print_screen#12 (byte*) print_screen#39 (byte*) print_screen#26 (byte*) print_screen#13 -Alias (byte) debug_print::print_sbyte_pos1_col#0 = (byte) debug_print::print_sbyte_pos1_col#1 -Alias (signed byte) debug_print::print_sbyte_pos1_sb#0 = (signed byte) debug_print::print_sbyte_pos1_sb#1 -Alias (signed byte) sy#11 = (signed byte) sy#23 (signed byte) sy#27 (signed byte) sy#17 -Alias (byte*) print_sbyte_at::at#3 = (byte*~) debug_print::print_sbyte_pos1_$2 -Alias (byte) debug_print::print_sbyte_pos2_row#0 = (byte) debug_print::print_sbyte_pos2_row#1 -Alias (byte) debug_print::print_sbyte_pos2_col#0 = (byte) debug_print::print_sbyte_pos2_col#1 -Alias (signed byte) debug_print::print_sbyte_pos2_sb#0 = (signed byte) debug_print::print_sbyte_pos2_sb#1 -Alias (byte*) print_sbyte_at::at#4 = (byte*~) debug_print::print_sbyte_pos2_$2 -Alias (byte) debug_print::print_sbyte_pos3_row#0 = (byte) debug_print::print_sbyte_pos3_row#1 -Alias (byte) debug_print::print_sbyte_pos3_col#0 = (byte) debug_print::print_sbyte_pos3_col#1 -Alias (signed byte) debug_print::print_sbyte_pos3_sb#0 = (signed byte) debug_print::print_sbyte_pos3_sb#1 -Alias (byte*) print_sbyte_at::at#5 = (byte*~) debug_print::print_sbyte_pos3_$2 -Alias (byte) debug_print::print_sbyte_pos4_row#0 = (byte) debug_print::print_sbyte_pos4_row#1 -Alias (byte) debug_print::print_sbyte_pos4_col#0 = (byte) debug_print::print_sbyte_pos4_col#1 -Alias (signed byte) debug_print::print_sbyte_pos4_sb#0 = (signed byte) debug_print::print_sbyte_pos4_sb#1 -Alias (byte*) print_sbyte_at::at#6 = (byte*~) debug_print::print_sbyte_pos4_$2 -Alias (byte) debug_print::print_sbyte_pos5_row#0 = (byte) debug_print::print_sbyte_pos5_row#1 -Alias (byte) debug_print::print_sbyte_pos5_col#0 = (byte) debug_print::print_sbyte_pos5_col#1 -Alias (signed byte) debug_print::print_sbyte_pos5_sb#0 = (signed byte) debug_print::print_sbyte_pos5_sb#1 -Alias (byte*) print_sbyte_at::at#7 = (byte*~) debug_print::print_sbyte_pos5_$2 -Alias (byte) debug_print::print_sbyte_pos6_row#0 = (byte) debug_print::print_sbyte_pos6_row#1 -Alias (byte) debug_print::print_sbyte_pos6_col#0 = (byte) debug_print::print_sbyte_pos6_col#1 -Alias (signed byte) debug_print::print_sbyte_pos6_sb#0 = (signed byte) debug_print::print_sbyte_pos6_sb#1 -Alias (byte*) print_sbyte_at::at#8 = (byte*~) debug_print::print_sbyte_pos6_$2 -Alias (byte) debug_print::print_sbyte_pos7_row#0 = (byte) debug_print::print_sbyte_pos7_row#1 -Alias (byte) debug_print::print_sbyte_pos7_col#0 = (byte) debug_print::print_sbyte_pos7_col#1 -Alias (signed byte) debug_print::print_sbyte_pos7_sb#0 = (signed byte) debug_print::print_sbyte_pos7_sb#1 -Alias (byte*) print_sbyte_at::at#9 = (byte*~) debug_print::print_sbyte_pos7_$2 -Alias (byte) debug_print::print_sbyte_pos8_row#0 = (byte) debug_print::print_sbyte_pos8_row#1 -Alias (byte) debug_print::print_sbyte_pos8_col#0 = (byte) debug_print::print_sbyte_pos8_col#1 -Alias (signed byte) debug_print::print_sbyte_pos8_sb#0 = (signed byte) debug_print::print_sbyte_pos8_sb#1 -Alias (byte*) print_sbyte_at::at#10 = (byte*~) debug_print::print_sbyte_pos8_$2 -Alias (byte) debug_print::print_sbyte_pos9_row#0 = (byte) debug_print::print_sbyte_pos9_row#1 -Alias (byte) debug_print::print_sbyte_pos9_col#0 = (byte) debug_print::print_sbyte_pos9_col#1 -Alias (signed byte) debug_print::print_sbyte_pos9_sb#0 = (signed byte) debug_print::print_sbyte_pos9_sb#1 -Alias (byte*) print_sbyte_at::at#11 = (byte*~) debug_print::print_sbyte_pos9_$2 -Alias (byte) debug_print::print_sbyte_pos10_row#0 = (byte) debug_print::print_sbyte_pos10_row#1 -Alias (byte) debug_print::print_sbyte_pos10_col#0 = (byte) debug_print::print_sbyte_pos10_col#1 -Alias (signed byte) debug_print::print_sbyte_pos10_sb#0 = (signed byte) debug_print::print_sbyte_pos10_sb#1 -Alias (byte*) print_sbyte_at::at#12 = (byte*~) debug_print::print_sbyte_pos10_$2 -Alias (byte) debug_print::print_sbyte_pos11_row#0 = (byte) debug_print::print_sbyte_pos11_row#1 -Alias (byte) debug_print::print_sbyte_pos11_col#0 = (byte) debug_print::print_sbyte_pos11_col#1 -Alias (signed byte) debug_print::print_sbyte_pos11_sb#0 = (signed byte) debug_print::print_sbyte_pos11_sb#1 -Alias (byte*) print_sbyte_at::at#13 = (byte*~) debug_print::print_sbyte_pos11_$2 -Alias (byte) debug_print::print_sbyte_pos12_row#0 = (byte) debug_print::print_sbyte_pos12_row#1 -Alias (byte) debug_print::print_sbyte_pos12_col#0 = (byte) debug_print::print_sbyte_pos12_col#1 -Alias (signed byte) debug_print::print_sbyte_pos12_sb#0 = (signed byte) debug_print::print_sbyte_pos12_sb#1 -Alias (byte*) print_sbyte_at::at#14 = (byte*~) debug_print::print_sbyte_pos12_$2 -Alias (byte*) debug_print::at_line#0 = (byte*~) debug_print::$12 -Alias (byte*) print_sbyte_at::at#15 = (byte*~) debug_print::$14 -Alias (byte*) debug_print::at_line#1 = (byte*) debug_print::at_line#2 (byte*) debug_print::at_line#3 (byte*) debug_print::at_line#4 (byte*) debug_print::at_line#5 (byte*) debug_print::at_line#6 (byte*) debug_print::at_line#7 -Alias (byte) debug_print::c#2 = (byte) debug_print::c#3 (byte) debug_print::c#4 (byte) debug_print::c#5 (byte) debug_print::c#6 (byte) debug_print::c#7 (byte) debug_print::c#8 -Alias (byte) debug_print::i#2 = (byte) debug_print::i#3 (byte) debug_print::i#4 (byte) debug_print::i#5 (byte) debug_print::i#6 (byte) debug_print::i#7 (byte) debug_print::i#8 -Alias (byte*) print_sbyte_at::at#16 = (byte*~) debug_print::$17 -Alias (byte*) print_sbyte_at::at#17 = (byte*~) debug_print::$20 -Alias (byte*) print_sbyte_at::at#18 = (byte*~) debug_print::$23 -Alias (byte*) print_sbyte_at::at#19 = (byte*~) debug_print::$26 -Alias (byte*) print_sbyte_at::at#20 = (byte*~) debug_print::$29 -Alias (byte*) sprites_init::sprites_ptr#0 = (byte*~) sprites_init::$0 -Alias (signed byte) calculate_matrix::t1#0 = (signed byte~) calculate_matrix::$0 -Alias (signed byte) calculate_matrix::t2#0 = (signed byte~) calculate_matrix::$1 -Alias (signed byte) calculate_matrix::t3#0 = (signed byte~) calculate_matrix::$2 -Alias (signed byte) calculate_matrix::t4#0 = (signed byte~) calculate_matrix::$3 -Alias (signed byte) calculate_matrix::t5#0 = (signed byte~) calculate_matrix::$4 -Alias (signed byte) calculate_matrix::t6#0 = (signed byte~) calculate_matrix::$5 -Alias (signed byte) calculate_matrix::t7#0 = (signed byte~) calculate_matrix::$6 -Alias (signed byte) calculate_matrix::t8#0 = (signed byte~) calculate_matrix::$7 -Alias (signed byte) calculate_matrix::t9#0 = (signed byte~) calculate_matrix::$8 -Alias (signed byte) calculate_matrix::t10#0 = (signed byte~) calculate_matrix::$9 -Alias (signed byte) sx#17 = (signed byte) sx#2 -Alias (signed byte) sy#18 = (signed byte) sy#2 -Alias (signed byte) sx#12 = (signed byte) sx#5 -Alias (signed byte) sy#12 = (signed byte) sy#5 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_str_at::str#13 = print_str_at::str#14 +Alias print_str_at::at#13 = print_str_at::at#14 +Alias print_sbyte_at::at#21 = print_sbyte_at::at#24 print_sbyte_at::at#25 print_sbyte_at::at#22 print_sbyte_at::at#26 +Alias print_sbyte_at::b#22 = print_sbyte_at::b#25 print_sbyte_at::b#23 print_sbyte_at::b#27 print_sbyte_at::b#26 +Alias print_sbyte_at::b#0 = print_sbyte_at::$6 +Alias print_byte_at::b#0 = print_sbyte_at::$1 +Alias print_byte_at::at#0 = print_sbyte_at::$2 +Alias print_byte_at::b#1 = print_byte_at::b#2 +Alias print_byte_at::at#1 = print_byte_at::at#2 +Alias print_char_at::at#3 = print_byte_at::$3 +Alias sx#13 = sx#18 sx#22 +Alias sy#13 = sy#19 sy#24 +Alias print_screen#27 = print_screen#40 print_screen#54 +Alias sx#0 = sx#6 sx#7 sx#1 +Alias sy#0 = sy#6 sy#7 sy#1 +Alias print_screen#0 = print_screen#45 print_screen#42 +Alias sx#14 = sx#8 sx#26 sx#25 +Alias sy#14 = sy#8 sy#29 sy#28 +Alias print_screen#44 = print_screen#47 print_screen#48 print_screen#46 +Alias anim::i#2 = anim::i#3 +Alias sx#15 = sx#21 sx#24 sx#9 +Alias sy#15 = sy#22 sy#26 sy#9 +Alias print_screen#28 = print_screen#41 print_screen#43 print_screen#53 +Alias anim::i2#0 = anim::$8 +Alias sx#10 = sx#16 sx#4 +Alias sy#10 = sy#16 sy#4 +Alias print_str_at::at#1 = debug_print_init::$2 +Alias print_str_at::at#2 = debug_print_init::$5 +Alias print_str_at::at#3 = debug_print_init::$8 +Alias print_str_at::at#4 = debug_print_init::$10 +Alias print_str_at::at#5 = debug_print_init::$12 +Alias print_str_at::at#6 = debug_print_init::$14 +Alias print_str_at::at#7 = debug_print_init::$16 +Alias print_str_at::at#8 = debug_print_init::$18 +Alias print_str_at::at#9 = debug_print_init::$20 +Alias print_str_at::at#10 = debug_print_init::$22 +Alias print_str_at::at#11 = debug_print_init::$24 +Alias print_str_at::at#12 = debug_print_init::$26 +Alias debug_print_init::at_line#0 = debug_print_init::$28 +Alias debug_print_init::at_cols#0 = debug_print_init::$29 +Alias print_sbyte_at::at#0 = debug_print_init::$31 +Alias debug_print_init::at_line#1 = debug_print_init::at_line#2 debug_print_init::at_line#3 debug_print_init::at_line#6 +Alias debug_print_init::c#2 = debug_print_init::c#3 debug_print_init::c#4 debug_print_init::c#7 +Alias debug_print_init::i#2 = debug_print_init::i#3 debug_print_init::i#4 debug_print_init::i#7 +Alias debug_print_init::at_cols#2 = debug_print_init::at_cols#4 debug_print_init::at_cols#5 debug_print_init::at_cols#3 +Alias print_sbyte_at::at#1 = debug_print_init::$34 +Alias print_sbyte_at::at#2 = debug_print_init::$37 +Alias debug_print_init::col#0 = debug_print_init::$39 +Alias debug_print_init::c#5 = debug_print_init::c#6 +Alias debug_print_init::i#5 = debug_print_init::i#6 +Alias debug_print_init::at_line#4 = debug_print_init::at_line#5 +Alias debug_print_init::at_cols#1 = debug_print_init::at_cols#6 +Alias debug_print::print_sbyte_pos1_row#0 = debug_print::print_sbyte_pos1_row#1 +Alias print_screen#10 = print_screen#2 print_screen#15 print_screen#29 print_screen#16 print_screen#3 print_screen#30 print_screen#17 print_screen#4 print_screen#31 print_screen#18 print_screen#5 print_screen#32 print_screen#19 print_screen#6 print_screen#33 print_screen#20 print_screen#7 print_screen#34 print_screen#21 print_screen#8 print_screen#35 print_screen#22 print_screen#9 print_screen#36 print_screen#23 print_screen#37 print_screen#24 print_screen#11 print_screen#38 print_screen#25 print_screen#12 print_screen#39 print_screen#26 print_screen#13 +Alias debug_print::print_sbyte_pos1_col#0 = debug_print::print_sbyte_pos1_col#1 +Alias debug_print::print_sbyte_pos1_sb#0 = debug_print::print_sbyte_pos1_sb#1 +Alias sy#11 = sy#23 sy#27 sy#17 +Alias print_sbyte_at::at#3 = debug_print::print_sbyte_pos1_$2 +Alias debug_print::print_sbyte_pos2_row#0 = debug_print::print_sbyte_pos2_row#1 +Alias debug_print::print_sbyte_pos2_col#0 = debug_print::print_sbyte_pos2_col#1 +Alias debug_print::print_sbyte_pos2_sb#0 = debug_print::print_sbyte_pos2_sb#1 +Alias print_sbyte_at::at#4 = debug_print::print_sbyte_pos2_$2 +Alias debug_print::print_sbyte_pos3_row#0 = debug_print::print_sbyte_pos3_row#1 +Alias debug_print::print_sbyte_pos3_col#0 = debug_print::print_sbyte_pos3_col#1 +Alias debug_print::print_sbyte_pos3_sb#0 = debug_print::print_sbyte_pos3_sb#1 +Alias print_sbyte_at::at#5 = debug_print::print_sbyte_pos3_$2 +Alias debug_print::print_sbyte_pos4_row#0 = debug_print::print_sbyte_pos4_row#1 +Alias debug_print::print_sbyte_pos4_col#0 = debug_print::print_sbyte_pos4_col#1 +Alias debug_print::print_sbyte_pos4_sb#0 = debug_print::print_sbyte_pos4_sb#1 +Alias print_sbyte_at::at#6 = debug_print::print_sbyte_pos4_$2 +Alias debug_print::print_sbyte_pos5_row#0 = debug_print::print_sbyte_pos5_row#1 +Alias debug_print::print_sbyte_pos5_col#0 = debug_print::print_sbyte_pos5_col#1 +Alias debug_print::print_sbyte_pos5_sb#0 = debug_print::print_sbyte_pos5_sb#1 +Alias print_sbyte_at::at#7 = debug_print::print_sbyte_pos5_$2 +Alias debug_print::print_sbyte_pos6_row#0 = debug_print::print_sbyte_pos6_row#1 +Alias debug_print::print_sbyte_pos6_col#0 = debug_print::print_sbyte_pos6_col#1 +Alias debug_print::print_sbyte_pos6_sb#0 = debug_print::print_sbyte_pos6_sb#1 +Alias print_sbyte_at::at#8 = debug_print::print_sbyte_pos6_$2 +Alias debug_print::print_sbyte_pos7_row#0 = debug_print::print_sbyte_pos7_row#1 +Alias debug_print::print_sbyte_pos7_col#0 = debug_print::print_sbyte_pos7_col#1 +Alias debug_print::print_sbyte_pos7_sb#0 = debug_print::print_sbyte_pos7_sb#1 +Alias print_sbyte_at::at#9 = debug_print::print_sbyte_pos7_$2 +Alias debug_print::print_sbyte_pos8_row#0 = debug_print::print_sbyte_pos8_row#1 +Alias debug_print::print_sbyte_pos8_col#0 = debug_print::print_sbyte_pos8_col#1 +Alias debug_print::print_sbyte_pos8_sb#0 = debug_print::print_sbyte_pos8_sb#1 +Alias print_sbyte_at::at#10 = debug_print::print_sbyte_pos8_$2 +Alias debug_print::print_sbyte_pos9_row#0 = debug_print::print_sbyte_pos9_row#1 +Alias debug_print::print_sbyte_pos9_col#0 = debug_print::print_sbyte_pos9_col#1 +Alias debug_print::print_sbyte_pos9_sb#0 = debug_print::print_sbyte_pos9_sb#1 +Alias print_sbyte_at::at#11 = debug_print::print_sbyte_pos9_$2 +Alias debug_print::print_sbyte_pos10_row#0 = debug_print::print_sbyte_pos10_row#1 +Alias debug_print::print_sbyte_pos10_col#0 = debug_print::print_sbyte_pos10_col#1 +Alias debug_print::print_sbyte_pos10_sb#0 = debug_print::print_sbyte_pos10_sb#1 +Alias print_sbyte_at::at#12 = debug_print::print_sbyte_pos10_$2 +Alias debug_print::print_sbyte_pos11_row#0 = debug_print::print_sbyte_pos11_row#1 +Alias debug_print::print_sbyte_pos11_col#0 = debug_print::print_sbyte_pos11_col#1 +Alias debug_print::print_sbyte_pos11_sb#0 = debug_print::print_sbyte_pos11_sb#1 +Alias print_sbyte_at::at#13 = debug_print::print_sbyte_pos11_$2 +Alias debug_print::print_sbyte_pos12_row#0 = debug_print::print_sbyte_pos12_row#1 +Alias debug_print::print_sbyte_pos12_col#0 = debug_print::print_sbyte_pos12_col#1 +Alias debug_print::print_sbyte_pos12_sb#0 = debug_print::print_sbyte_pos12_sb#1 +Alias print_sbyte_at::at#14 = debug_print::print_sbyte_pos12_$2 +Alias debug_print::at_line#0 = debug_print::$12 +Alias print_sbyte_at::at#15 = debug_print::$14 +Alias debug_print::at_line#1 = debug_print::at_line#2 debug_print::at_line#3 debug_print::at_line#4 debug_print::at_line#5 debug_print::at_line#6 debug_print::at_line#7 +Alias debug_print::c#2 = debug_print::c#3 debug_print::c#4 debug_print::c#5 debug_print::c#6 debug_print::c#7 debug_print::c#8 +Alias debug_print::i#2 = debug_print::i#3 debug_print::i#4 debug_print::i#5 debug_print::i#6 debug_print::i#7 debug_print::i#8 +Alias print_sbyte_at::at#16 = debug_print::$17 +Alias print_sbyte_at::at#17 = debug_print::$20 +Alias print_sbyte_at::at#18 = debug_print::$23 +Alias print_sbyte_at::at#19 = debug_print::$26 +Alias print_sbyte_at::at#20 = debug_print::$29 +Alias sprites_init::sprites_ptr#0 = sprites_init::$0 +Alias calculate_matrix::t1#0 = calculate_matrix::$0 +Alias calculate_matrix::t2#0 = calculate_matrix::$1 +Alias calculate_matrix::t3#0 = calculate_matrix::$2 +Alias calculate_matrix::t4#0 = calculate_matrix::$3 +Alias calculate_matrix::t5#0 = calculate_matrix::$4 +Alias calculate_matrix::t6#0 = calculate_matrix::$5 +Alias calculate_matrix::t7#0 = calculate_matrix::$6 +Alias calculate_matrix::t8#0 = calculate_matrix::$7 +Alias calculate_matrix::t9#0 = calculate_matrix::$8 +Alias calculate_matrix::t10#0 = calculate_matrix::$9 +Alias sx#17 = sx#2 +Alias sy#18 = sy#2 +Alias sx#12 = sx#5 +Alias sy#12 = sy#5 Successful SSA optimization Pass2AliasElimination -Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#23 +Alias print_sbyte_at::at#21 = print_sbyte_at::at#23 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -3842,236 +3842,236 @@ null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 bl VARIABLE REGISTER WEIGHTS (void()) anim() -(byte~) anim::$10 202.0 -(byte~) anim::$12 202.0 +(byte~) anim::$10 20002.0 +(byte~) anim::$12 20002.0 (byte) anim::i -(byte) anim::i#1 151.5 -(byte) anim::i#2 71.29411764705881 +(byte) anim::i#1 15001.5 +(byte) anim::i#2 7059.529411764704 (byte) anim::i2 -(byte) anim::i2#0 75.75 +(byte) anim::i2#0 7500.75 (void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz) -(signed byte~) calculate_matrix::$10 4.0 -(signed byte~) calculate_matrix::$11 4.0 -(signed byte~) calculate_matrix::$12 4.0 -(signed byte~) calculate_matrix::$13 4.0 -(signed byte~) calculate_matrix::$14 4.0 -(signed byte~) calculate_matrix::$15 4.0 -(signed byte~) calculate_matrix::$16 4.0 -(signed byte~) calculate_matrix::$17 4.0 -(signed byte~) calculate_matrix::$18 4.0 -(signed byte~) calculate_matrix::$19 4.0 -(signed byte~) calculate_matrix::$20 4.0 -(signed byte~) calculate_matrix::$21 4.0 -(signed byte~) calculate_matrix::$22 4.0 -(signed byte~) calculate_matrix::$23 4.0 -(signed byte~) calculate_matrix::$24 4.0 -(signed byte~) calculate_matrix::$25 4.0 -(signed byte~) calculate_matrix::$26 4.0 -(signed byte~) calculate_matrix::$27 4.0 -(signed byte~) calculate_matrix::$28 4.0 -(signed byte~) calculate_matrix::$29 4.0 -(signed byte~) calculate_matrix::$30 4.0 -(signed byte~) calculate_matrix::$31 4.0 -(signed byte~) calculate_matrix::$32 4.0 -(signed byte~) calculate_matrix::$33 4.0 -(signed byte~) calculate_matrix::$34 4.0 +(signed byte~) calculate_matrix::$10 20002.0 +(signed byte~) calculate_matrix::$11 20002.0 +(signed byte~) calculate_matrix::$12 20002.0 +(signed byte~) calculate_matrix::$13 20002.0 +(signed byte~) calculate_matrix::$14 20002.0 +(signed byte~) calculate_matrix::$15 20002.0 +(signed byte~) calculate_matrix::$16 20002.0 +(signed byte~) calculate_matrix::$17 20002.0 +(signed byte~) calculate_matrix::$18 20002.0 +(signed byte~) calculate_matrix::$19 20002.0 +(signed byte~) calculate_matrix::$20 20002.0 +(signed byte~) calculate_matrix::$21 20002.0 +(signed byte~) calculate_matrix::$22 20002.0 +(signed byte~) calculate_matrix::$23 20002.0 +(signed byte~) calculate_matrix::$24 20002.0 +(signed byte~) calculate_matrix::$25 20002.0 +(signed byte~) calculate_matrix::$26 20002.0 +(signed byte~) calculate_matrix::$27 20002.0 +(signed byte~) calculate_matrix::$28 20002.0 +(signed byte~) calculate_matrix::$29 20002.0 +(signed byte~) calculate_matrix::$30 20002.0 +(signed byte~) calculate_matrix::$31 20002.0 +(signed byte~) calculate_matrix::$32 20002.0 +(signed byte~) calculate_matrix::$33 20002.0 +(signed byte~) calculate_matrix::$34 20002.0 (signed byte) calculate_matrix::sx -(signed byte) calculate_matrix::sx#0 2.4545454545454546 +(signed byte) calculate_matrix::sx#0 7364.454545454545 (signed byte) calculate_matrix::sy -(signed byte) calculate_matrix::sy#0 1.5333333333333332 +(signed byte) calculate_matrix::sy#0 4067.133333333334 (signed byte) calculate_matrix::sz (signed byte) calculate_matrix::t1 -(signed byte) calculate_matrix::t1#0 0.8333333333333333 +(signed byte) calculate_matrix::t1#0 4167.083333333333 (signed byte) calculate_matrix::t10 -(signed byte) calculate_matrix::t10#0 0.18181818181818182 +(signed byte) calculate_matrix::t10#0 909.1818181818182 (signed byte) calculate_matrix::t2 -(signed byte) calculate_matrix::t2#0 0.9090909090909092 +(signed byte) calculate_matrix::t2#0 4545.909090909091 (signed byte) calculate_matrix::t3 -(signed byte) calculate_matrix::t3#0 0.29411764705882354 +(signed byte) calculate_matrix::t3#0 1470.7352941176468 (signed byte) calculate_matrix::t4 -(signed byte) calculate_matrix::t4#0 0.30303030303030304 +(signed byte) calculate_matrix::t4#0 1515.3030303030303 (signed byte) calculate_matrix::t5 -(signed byte) calculate_matrix::t5#0 0.29411764705882354 +(signed byte) calculate_matrix::t5#0 1470.7352941176468 (signed byte) calculate_matrix::t6 -(signed byte) calculate_matrix::t6#0 0.3125 +(signed byte) calculate_matrix::t6#0 1562.65625 (signed byte) calculate_matrix::t7 -(signed byte) calculate_matrix::t7#0 0.30303030303030304 +(signed byte) calculate_matrix::t7#0 1515.3030303030303 (signed byte) calculate_matrix::t8 -(signed byte) calculate_matrix::t8#0 0.30303030303030304 +(signed byte) calculate_matrix::t8#0 1515.3030303030303 (signed byte) calculate_matrix::t9 -(signed byte) calculate_matrix::t9#0 0.1764705882352941 +(signed byte) calculate_matrix::t9#0 882.4411764705882 (void()) debug_print() (byte*) debug_print::at_line (byte) debug_print::c -(byte) debug_print::c#1 67.33333333333333 -(byte) debug_print::c#2 42.52631578947369 +(byte) debug_print::c#1 666667.3333333334 +(byte) debug_print::c#2 421053.05263157893 (byte) debug_print::i -(byte) debug_print::i#1 151.5 -(byte) debug_print::i#2 40.4 +(byte) debug_print::i#1 1500001.5 +(byte) debug_print::i#2 400000.39999999997 (byte) debug_print::print_sbyte_pos10_col (byte) debug_print::print_sbyte_pos10_row (signed byte) debug_print::print_sbyte_pos10_sb -(signed byte) debug_print::print_sbyte_pos10_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos10_sb#0 20002.0 (byte) debug_print::print_sbyte_pos11_col (byte) debug_print::print_sbyte_pos11_row (signed byte) debug_print::print_sbyte_pos11_sb -(signed byte) debug_print::print_sbyte_pos11_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos11_sb#0 20002.0 (byte) debug_print::print_sbyte_pos12_col (byte) debug_print::print_sbyte_pos12_row (signed byte) debug_print::print_sbyte_pos12_sb -(signed byte) debug_print::print_sbyte_pos12_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos12_sb#0 20002.0 (byte) debug_print::print_sbyte_pos1_col (byte) debug_print::print_sbyte_pos1_row (signed byte) debug_print::print_sbyte_pos1_sb -(signed byte) debug_print::print_sbyte_pos1_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos1_sb#0 20002.0 (byte) debug_print::print_sbyte_pos2_col (byte) debug_print::print_sbyte_pos2_row (signed byte) debug_print::print_sbyte_pos2_sb -(signed byte) debug_print::print_sbyte_pos2_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos2_sb#0 20002.0 (byte) debug_print::print_sbyte_pos3_col (byte) debug_print::print_sbyte_pos3_row (signed byte) debug_print::print_sbyte_pos3_sb (byte) debug_print::print_sbyte_pos4_col (byte) debug_print::print_sbyte_pos4_row (signed byte) debug_print::print_sbyte_pos4_sb -(signed byte) debug_print::print_sbyte_pos4_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos4_sb#0 20002.0 (byte) debug_print::print_sbyte_pos5_col (byte) debug_print::print_sbyte_pos5_row (signed byte) debug_print::print_sbyte_pos5_sb -(signed byte) debug_print::print_sbyte_pos5_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos5_sb#0 20002.0 (byte) debug_print::print_sbyte_pos6_col (byte) debug_print::print_sbyte_pos6_row (signed byte) debug_print::print_sbyte_pos6_sb -(signed byte) debug_print::print_sbyte_pos6_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos6_sb#0 20002.0 (byte) debug_print::print_sbyte_pos7_col (byte) debug_print::print_sbyte_pos7_row (signed byte) debug_print::print_sbyte_pos7_sb -(signed byte) debug_print::print_sbyte_pos7_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos7_sb#0 20002.0 (byte) debug_print::print_sbyte_pos8_col (byte) debug_print::print_sbyte_pos8_row (signed byte) debug_print::print_sbyte_pos8_sb -(signed byte) debug_print::print_sbyte_pos8_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos8_sb#0 20002.0 (byte) debug_print::print_sbyte_pos9_col (byte) debug_print::print_sbyte_pos9_row (signed byte) debug_print::print_sbyte_pos9_sb -(signed byte) debug_print::print_sbyte_pos9_sb#0 4.0 +(signed byte) debug_print::print_sbyte_pos9_sb#0 20002.0 (void()) debug_print_init() -(byte*~) debug_print_init::$41 202.0 -(byte*~) debug_print_init::$44 202.0 -(byte*~) debug_print_init::$47 202.0 -(byte*~) debug_print_init::$50 202.0 -(byte*~) debug_print_init::$53 202.0 -(byte*~) debug_print_init::$56 202.0 -(byte*~) debug_print_init::$59 202.0 -(byte*~) debug_print_init::$62 202.0 -(byte*~) debug_print_init::$65 202.0 +(byte*~) debug_print_init::$41 20002.0 +(byte*~) debug_print_init::$44 20002.0 +(byte*~) debug_print_init::$47 20002.0 +(byte*~) debug_print_init::$50 20002.0 +(byte*~) debug_print_init::$53 20002.0 +(byte*~) debug_print_init::$56 20002.0 +(byte*~) debug_print_init::$59 20002.0 +(byte*~) debug_print_init::$62 20002.0 +(byte*~) debug_print_init::$65 20002.0 (byte*) debug_print_init::at_cols (byte*) debug_print_init::at_line (byte) debug_print_init::c -(byte) debug_print_init::c#1 7.333333333333333 -(byte) debug_print_init::c#2 30.125 +(byte) debug_print_init::c#1 667.3333333333334 +(byte) debug_print_init::c#2 2969.1875 (byte) debug_print_init::col -(byte) debug_print_init::col#0 56.111111111111114 +(byte) debug_print_init::col#0 5556.111111111112 (byte) debug_print_init::i -(byte) debug_print_init::i#1 16.5 -(byte) debug_print_init::i#2 4.727272727272727 +(byte) debug_print_init::i#1 1501.5 +(byte) debug_print_init::i#2 454.7272727272727 (byte) debug_print_init::j -(byte) debug_print_init::j#1 151.5 -(byte) debug_print_init::j#2 55.54999999999999 +(byte) debug_print_init::j#1 15001.5 +(byte) debug_print_init::j#2 5500.550000000001 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 133334.66666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 2.00000002E8 +(byte~) print_byte_at::$2 1.00000001E8 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 1.0 +(byte*) print_byte_at::at#0 3.50000005E7 (byte) print_byte_at::b -(byte) print_byte_at::b#0 1.0 +(byte) print_byte_at::b#0 3.50000005E7 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 4.0 -(byte*) print_char_at::at#2 4.0 -(byte*) print_char_at::at#3 2.0 -(byte*) print_char_at::at#4 10.0 +(byte*) print_char_at::at#0 2.0000002E7 +(byte*) print_char_at::at#1 2.0000002E7 +(byte*) print_char_at::at#2 2.00000002E8 +(byte*) print_char_at::at#3 1.00000001E8 +(byte*) print_char_at::at#4 1.220000005E9 (byte) print_char_at::ch -(byte) print_char_at::ch#2 2.0 -(byte) print_char_at::ch#3 4.0 -(byte) print_char_at::ch#4 6.0 +(byte) print_char_at::ch#2 1.00000001E8 +(byte) print_char_at::ch#3 2.00000002E8 +(byte) print_char_at::ch#4 1.200000003E9 (void()) print_cls() (void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at) (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 11.0 -(byte*) print_sbyte_at::at#1 11.0 -(byte*) print_sbyte_at::at#15 101.0 -(byte*) print_sbyte_at::at#16 101.0 -(byte*) print_sbyte_at::at#17 101.0 -(byte*) print_sbyte_at::at#18 101.0 -(byte*) print_sbyte_at::at#19 101.0 -(byte*) print_sbyte_at::at#2 11.0 -(byte*) print_sbyte_at::at#20 101.0 -(byte*) print_sbyte_at::at#21 71.6666666666667 +(byte*) print_sbyte_at::at#0 1001.0 +(byte*) print_sbyte_at::at#1 1001.0 +(byte*) print_sbyte_at::at#15 1000001.0 +(byte*) print_sbyte_at::at#16 1000001.0 +(byte*) print_sbyte_at::at#17 1000001.0 +(byte*) print_sbyte_at::at#18 1000001.0 +(byte*) print_sbyte_at::at#19 1000001.0 +(byte*) print_sbyte_at::at#2 1001.0 +(byte*) print_sbyte_at::at#20 1000001.0 +(byte*) print_sbyte_at::at#21 4000334.666666667 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 4.0 -(signed byte) print_sbyte_at::b#1 22.0 -(signed byte) print_sbyte_at::b#10 4.0 -(signed byte) print_sbyte_at::b#11 4.0 -(signed byte) print_sbyte_at::b#12 4.0 -(signed byte) print_sbyte_at::b#13 4.0 -(signed byte) print_sbyte_at::b#14 4.0 -(signed byte) print_sbyte_at::b#15 4.0 -(signed byte) print_sbyte_at::b#16 202.0 -(signed byte) print_sbyte_at::b#17 202.0 -(signed byte) print_sbyte_at::b#18 202.0 -(signed byte) print_sbyte_at::b#19 202.0 -(signed byte) print_sbyte_at::b#2 22.0 -(signed byte) print_sbyte_at::b#20 202.0 -(signed byte) print_sbyte_at::b#21 202.0 -(signed byte) print_sbyte_at::b#22 111.16666666666657 -(signed byte) print_sbyte_at::b#24 4.0 -(signed byte) print_sbyte_at::b#3 22.0 -(signed byte) print_sbyte_at::b#4 4.0 -(signed byte) print_sbyte_at::b#5 4.0 -(signed byte) print_sbyte_at::b#7 4.0 -(signed byte) print_sbyte_at::b#8 4.0 -(signed byte) print_sbyte_at::b#9 4.0 +(signed byte) print_sbyte_at::b#0 2.0000002E7 +(signed byte) print_sbyte_at::b#1 2002.0 +(signed byte) print_sbyte_at::b#10 20002.0 +(signed byte) print_sbyte_at::b#11 20002.0 +(signed byte) print_sbyte_at::b#12 20002.0 +(signed byte) print_sbyte_at::b#13 20002.0 +(signed byte) print_sbyte_at::b#14 20002.0 +(signed byte) print_sbyte_at::b#15 20002.0 +(signed byte) print_sbyte_at::b#16 2000002.0 +(signed byte) print_sbyte_at::b#17 2000002.0 +(signed byte) print_sbyte_at::b#18 2000002.0 +(signed byte) print_sbyte_at::b#19 2000002.0 +(signed byte) print_sbyte_at::b#2 2002.0 +(signed byte) print_sbyte_at::b#20 2000002.0 +(signed byte) print_sbyte_at::b#21 2000002.0 +(signed byte) print_sbyte_at::b#22 6018837.166666667 +(signed byte) print_sbyte_at::b#24 2.0000002E7 +(signed byte) print_sbyte_at::b#3 2002.0 +(signed byte) print_sbyte_at::b#4 20002.0 +(signed byte) print_sbyte_at::b#5 20002.0 +(signed byte) print_sbyte_at::b#7 20002.0 +(signed byte) print_sbyte_at::b#8 20002.0 +(signed byte) print_sbyte_at::b#9 20002.0 (byte*) print_screen (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (byte*) print_str_at::at -(byte*) print_str_at::at#0 11.0 -(byte*) print_str_at::at#13 11.666666666666666 -(byte*) print_str_at::at#15 2.0 +(byte*) print_str_at::at#0 10001.0 +(byte*) print_str_at::at#13 10334.666666666666 +(byte*) print_str_at::at#15 1001.0 (byte*) print_str_at::str -(byte*) print_str_at::str#0 22.0 -(byte*) print_str_at::str#13 11.5 -(byte*) print_str_at::str#15 2.0 +(byte*) print_str_at::str#0 20002.0 +(byte*) print_str_at::str#13 10251.25 +(byte*) print_str_at::str#15 1001.0 (void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z) (signed byte) rotate_matrix::x -(signed byte) rotate_matrix::x#0 34.33333333333333 +(signed byte) rotate_matrix::x#0 36667.33333333333 (signed byte) rotate_matrix::y -(signed byte) rotate_matrix::y#0 34.33333333333333 +(signed byte) rotate_matrix::y#0 36667.33333333333 (signed byte) rotate_matrix::z -(signed byte) rotate_matrix::z#0 34.33333333333333 +(signed byte) rotate_matrix::z#0 36667.33333333333 (void()) sprites_init() (byte) sprites_init::i -(byte) sprites_init::i#1 16.5 -(byte) sprites_init::i#2 14.666666666666666 +(byte) sprites_init::i#1 1501.5 +(byte) sprites_init::i#2 1334.6666666666667 (byte*) sprites_init::sprites_ptr (void()) store_matrix() (signed byte) sx -(signed byte) sx#10 0.38888888888888884 -(signed byte) sx#3 11.0 +(signed byte) sx#10 144.48888888888888 +(signed byte) sx#3 1001.0 (signed byte) sy -(signed byte) sy#10 0.3846153846153846 -(signed byte) sy#3 22.0 +(signed byte) sy#10 142.90109890109892 +(signed byte) sy#3 2002.0 Initial phi equivalence classes [ sx#10 sx#3 ] @@ -6369,45 +6369,45 @@ SINQ: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ sx#10 sx#3 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ sy#10 sy#3 ] -Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ anim::i#2 anim::i#1 ] -Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a +Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a +Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a +Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a +Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a +Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] { } ) always clobbers reg byte a +Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ anim::i2#0 ] -Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) always clobbers reg byte a -Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a -Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a +Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] { } ) always clobbers reg byte a +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] -Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a -Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] { } ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:42 [ print_byte_at::b#0 ] -Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ sx#10 sx#3 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ sy#10 sy#3 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] @@ -6416,11 +6416,11 @@ Removing always clobbered register reg byte y as potential for zp[1]:6 [ debug_p Removing always clobbered register reg byte y as potential for zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:42 [ print_byte_at::b#0 ] -Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ print_byte_at::$2 ] Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ sx#10 sx#3 ] @@ -6428,303 +6428,303 @@ Removing always clobbered register reg byte x as potential for zp[1]:3 [ sy#10 s Removing always clobbered register reg byte x as potential for zp[1]:4 [ anim::i#2 anim::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ anim::i#2 anim::i#1 ] Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ calculate_matrix::sx#0 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ calculate_matrix::sy#0 ] Removing always clobbered register reg byte a as potential for zp[1]:47 [ calculate_matrix::t1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:48 [ calculate_matrix::t2#0 ] Removing always clobbered register reg byte a as potential for zp[1]:49 [ calculate_matrix::t3#0 ] Removing always clobbered register reg byte a as potential for zp[1]:50 [ calculate_matrix::t4#0 ] -Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ calculate_matrix::t5#0 ] -Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ calculate_matrix::t6#0 ] -Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:53 [ calculate_matrix::t7#0 ] -Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:54 [ calculate_matrix::t8#0 ] -Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:55 [ calculate_matrix::t9#0 ] -Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ calculate_matrix::t10#0 ] -Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ debug_print_init::j#2 debug_print_init::j#1 ] -Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:82 [ debug_print_init::col#0 ] -Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] { } ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] { } ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] { } ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] { } ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] { } ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] { } ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] { } ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] { } ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] { } ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a -Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] { } ) always clobbers reg byte a +Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] { } ) always clobbers reg byte a +Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ sprites_init::i#2 sprites_init::i#1 ] -Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y -Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y +Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] { } ) always clobbers reg byte y +Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ rotate_matrix::x#0 ] -Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y +Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:26 [ rotate_matrix::y#0 ] -Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a -Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) always clobbers reg byte a -Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a -Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x -Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a -Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x +Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] { } ) always clobbers reg byte a +Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] { } ) always clobbers reg byte a +Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] { } ) always clobbers reg byte a +Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] { } ) always clobbers reg byte a reg byte x +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] -Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a -Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y -Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] { } ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a reg byte y +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a -Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a -Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a -Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a -Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a -Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a -Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a -Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a -Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x -Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a -Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y -Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y -Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y -Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a -Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) always clobbers reg byte a -Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a -Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x -Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a -Statement [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ) always clobbers reg byte y -Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ) always clobbers reg byte y -Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ) always clobbers reg byte y -Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ) always clobbers reg byte y -Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ) always clobbers reg byte y -Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ) always clobbers reg byte y -Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x -Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a -Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y -Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] { } ) always clobbers reg byte a +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] { } ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] { } ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] { } ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] { } ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] { } ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] { } ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] { } ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] { } ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] { } ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] { } ) always clobbers reg byte a reg byte x +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] { } ) always clobbers reg byte a +Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] { } ) always clobbers reg byte a +Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a +Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] { } ) always clobbers reg byte y +Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] { } ) always clobbers reg byte y +Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] { } ) always clobbers reg byte y +Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] { } ) always clobbers reg byte a +Statement [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] { } ) always clobbers reg byte a +Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] { } ) always clobbers reg byte a +Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] { } ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] { } ) always clobbers reg byte a reg byte x +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] { } ) always clobbers reg byte a reg byte x +Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] { } ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { } main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#15 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#16 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#17 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#18 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#19 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#20 } } main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#1 } } main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#21 print_sbyte_at::at#2 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a reg byte y +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#4 debug_print::print_sbyte_pos1_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#5 debug_print::print_sbyte_pos2_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#7 debug_print::print_sbyte_pos4_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#8 debug_print::print_sbyte_pos5_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#9 debug_print::print_sbyte_pos6_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#10 = print_sbyte_at::b#22 debug_print::print_sbyte_pos7_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#11 = print_sbyte_at::b#22 debug_print::print_sbyte_pos8_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#12 = print_sbyte_at::b#22 debug_print::print_sbyte_pos9_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#13 = print_sbyte_at::b#22 debug_print::print_sbyte_pos10_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#14 = print_sbyte_at::b#22 debug_print::print_sbyte_pos11_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#15 = print_sbyte_at::b#22 debug_print::print_sbyte_pos12_sb#0 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#16 = print_sbyte_at::b#22 } { print_sbyte_at::at#15 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#17 = print_sbyte_at::b#22 } { print_sbyte_at::at#16 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#18 = print_sbyte_at::b#22 } { print_sbyte_at::at#17 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#19 = print_sbyte_at::b#22 } { print_sbyte_at::at#18 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#20 = print_sbyte_at::b#22 } { print_sbyte_at::at#19 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#21 = print_sbyte_at::b#22 } { print_sbyte_at::at#20 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a -Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a -Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a -Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a -Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a -Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a -Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a -Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a -Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x -Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a -Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] { { sx#10 = calculate_matrix::sx#0 } { sy#10 = calculate_matrix::sy#0 } } ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#22 } { print_sbyte_at::at#0 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#22 } { print_sbyte_at::at#1 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte a +Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] { { print_sbyte_at::b#22 = print_sbyte_at::b#3 } { print_sbyte_at::at#2 = print_sbyte_at::at#21 } } ) always clobbers reg byte y +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] { } ) always clobbers reg byte a +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] { } ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] { } ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] { } ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] { } ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] { } ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] { } ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] { } ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] { } ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] { } ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] { } ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] { } ) always clobbers reg byte a reg byte x +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] { } ) always clobbers reg byte a +Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] { } main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] { } ) always clobbers reg byte a reg byte y +Statement [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] { } ) always clobbers reg byte a +Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a +Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ sx#10 sx#3 ] : zp[1]:2 , Potential registers zp[1]:3 [ sy#10 sy#3 ] : zp[1]:3 , Potential registers zp[1]:4 [ anim::i#2 anim::i#1 ] : zp[1]:4 , @@ -6811,164 +6811,170 @@ Potential registers zp[2]:97 [ debug_print_init::$62 ] : zp[2]:97 , Potential registers zp[2]:99 [ debug_print_init::$65 ] : zp[2]:99 , REGISTER UPLIFT SCOPES -Uplift Scope [print_sbyte_at] 1,441.17: zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] 710.67: zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] -Uplift Scope [debug_print_init] 207.05: zp[1]:15 [ debug_print_init::j#2 debug_print_init::j#1 ] 202: zp[2]:83 [ debug_print_init::$41 ] 202: zp[2]:85 [ debug_print_init::$44 ] 202: zp[2]:87 [ debug_print_init::$47 ] 202: zp[2]:89 [ debug_print_init::$50 ] 202: zp[2]:91 [ debug_print_init::$53 ] 202: zp[2]:93 [ debug_print_init::$56 ] 202: zp[2]:95 [ debug_print_init::$59 ] 202: zp[2]:97 [ debug_print_init::$62 ] 202: zp[2]:99 [ debug_print_init::$65 ] 56.11: zp[1]:82 [ debug_print_init::col#0 ] 37.46: zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 21.23: zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Uplift Scope [anim] 222.79: zp[1]:4 [ anim::i#2 anim::i#1 ] 202: zp[1]:29 [ anim::$10 ] 202: zp[1]:30 [ anim::$12 ] 75.75: zp[1]:28 [ anim::i2#0 ] -Uplift Scope [debug_print] 191.9: zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] 109.86: zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] 4: zp[1]:31 [ debug_print::print_sbyte_pos1_sb#0 ] 4: zp[1]:32 [ debug_print::print_sbyte_pos2_sb#0 ] 4: zp[1]:33 [ debug_print::print_sbyte_pos4_sb#0 ] 4: zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] 4: zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] 4: zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] 4: zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] 4: zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] 4: zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] 4: zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] 4: zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] -Uplift Scope [calculate_matrix] 4: zp[1]:57 [ calculate_matrix::$10 ] 4: zp[1]:58 [ calculate_matrix::$11 ] 4: zp[1]:59 [ calculate_matrix::$12 ] 4: zp[1]:60 [ calculate_matrix::$13 ] 4: zp[1]:61 [ calculate_matrix::$14 ] 4: zp[1]:62 [ calculate_matrix::$15 ] 4: zp[1]:63 [ calculate_matrix::$16 ] 4: zp[1]:64 [ calculate_matrix::$17 ] 4: zp[1]:65 [ calculate_matrix::$18 ] 4: zp[1]:66 [ calculate_matrix::$19 ] 4: zp[1]:67 [ calculate_matrix::$20 ] 4: zp[1]:68 [ calculate_matrix::$21 ] 4: zp[1]:69 [ calculate_matrix::$22 ] 4: zp[1]:70 [ calculate_matrix::$23 ] 4: zp[1]:71 [ calculate_matrix::$24 ] 4: zp[1]:72 [ calculate_matrix::$25 ] 4: zp[1]:73 [ calculate_matrix::$26 ] 4: zp[1]:74 [ calculate_matrix::$27 ] 4: zp[1]:75 [ calculate_matrix::$28 ] 4: zp[1]:76 [ calculate_matrix::$29 ] 4: zp[1]:77 [ calculate_matrix::$30 ] 4: zp[1]:78 [ calculate_matrix::$31 ] 4: zp[1]:79 [ calculate_matrix::$32 ] 4: zp[1]:80 [ calculate_matrix::$33 ] 4: zp[1]:81 [ calculate_matrix::$34 ] 2.45: zp[1]:23 [ calculate_matrix::sx#0 ] 1.53: zp[1]:24 [ calculate_matrix::sy#0 ] 0.91: zp[1]:48 [ calculate_matrix::t2#0 ] 0.83: zp[1]:47 [ calculate_matrix::t1#0 ] 0.31: zp[1]:52 [ calculate_matrix::t6#0 ] 0.3: zp[1]:50 [ calculate_matrix::t4#0 ] 0.3: zp[1]:53 [ calculate_matrix::t7#0 ] 0.3: zp[1]:54 [ calculate_matrix::t8#0 ] 0.29: zp[1]:49 [ calculate_matrix::t3#0 ] 0.29: zp[1]:51 [ calculate_matrix::t5#0 ] 0.18: zp[1]:56 [ calculate_matrix::t10#0 ] 0.18: zp[1]:55 [ calculate_matrix::t9#0 ] -Uplift Scope [rotate_matrix] 34.33: zp[1]:25 [ rotate_matrix::x#0 ] 34.33: zp[1]:26 [ rotate_matrix::y#0 ] 34.33: zp[1]:27 [ rotate_matrix::z#0 ] -Uplift Scope [print_str_at] 35.5: zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] 24.67: zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] -Uplift Scope [memset] 36.67: zp[2]:20 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char_at] 24: zp[2]:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] 12: zp[1]:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplift Scope [] 22.38: zp[1]:3 [ sy#10 sy#3 ] 11.39: zp[1]:2 [ sx#10 sx#3 ] -Uplift Scope [sprites_init] 31.17: zp[1]:22 [ sprites_init::i#2 sprites_init::i#1 ] -Uplift Scope [print_byte_at] 4: zp[1]:45 [ print_byte_at::$0 ] 2: zp[1]:46 [ print_byte_at::$2 ] 1: zp[1]:42 [ print_byte_at::b#0 ] 1: zp[2]:43 [ print_byte_at::at#0 ] +Uplift Scope [print_char_at] 1,560,000,012: zp[2]:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] 1,500,000,006: zp[1]:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplift Scope [print_byte_at] 200,000,002: zp[1]:45 [ print_byte_at::$0 ] 100,000,001: zp[1]:46 [ print_byte_at::$2 ] 35,000,000.5: zp[1]:42 [ print_byte_at::b#0 ] 35,000,000.5: zp[2]:43 [ print_byte_at::at#0 ] +Uplift Scope [print_sbyte_at] 58,244,881.17: zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] 10,003,343.67: zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] +Uplift Scope [debug_print] 1,900,001.9: zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] 1,087,720.39: zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] 20,002: zp[1]:31 [ debug_print::print_sbyte_pos1_sb#0 ] 20,002: zp[1]:32 [ debug_print::print_sbyte_pos2_sb#0 ] 20,002: zp[1]:33 [ debug_print::print_sbyte_pos4_sb#0 ] 20,002: zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] 20,002: zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] 20,002: zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] 20,002: zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] 20,002: zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] 20,002: zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] 20,002: zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] 20,002: zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] +Uplift Scope [calculate_matrix] 20,002: zp[1]:57 [ calculate_matrix::$10 ] 20,002: zp[1]:58 [ calculate_matrix::$11 ] 20,002: zp[1]:59 [ calculate_matrix::$12 ] 20,002: zp[1]:60 [ calculate_matrix::$13 ] 20,002: zp[1]:61 [ calculate_matrix::$14 ] 20,002: zp[1]:62 [ calculate_matrix::$15 ] 20,002: zp[1]:63 [ calculate_matrix::$16 ] 20,002: zp[1]:64 [ calculate_matrix::$17 ] 20,002: zp[1]:65 [ calculate_matrix::$18 ] 20,002: zp[1]:66 [ calculate_matrix::$19 ] 20,002: zp[1]:67 [ calculate_matrix::$20 ] 20,002: zp[1]:68 [ calculate_matrix::$21 ] 20,002: zp[1]:69 [ calculate_matrix::$22 ] 20,002: zp[1]:70 [ calculate_matrix::$23 ] 20,002: zp[1]:71 [ calculate_matrix::$24 ] 20,002: zp[1]:72 [ calculate_matrix::$25 ] 20,002: zp[1]:73 [ calculate_matrix::$26 ] 20,002: zp[1]:74 [ calculate_matrix::$27 ] 20,002: zp[1]:75 [ calculate_matrix::$28 ] 20,002: zp[1]:76 [ calculate_matrix::$29 ] 20,002: zp[1]:77 [ calculate_matrix::$30 ] 20,002: zp[1]:78 [ calculate_matrix::$31 ] 20,002: zp[1]:79 [ calculate_matrix::$32 ] 20,002: zp[1]:80 [ calculate_matrix::$33 ] 20,002: zp[1]:81 [ calculate_matrix::$34 ] 7,364.45: zp[1]:23 [ calculate_matrix::sx#0 ] 4,545.91: zp[1]:48 [ calculate_matrix::t2#0 ] 4,167.08: zp[1]:47 [ calculate_matrix::t1#0 ] 4,067.13: zp[1]:24 [ calculate_matrix::sy#0 ] 1,562.66: zp[1]:52 [ calculate_matrix::t6#0 ] 1,515.3: zp[1]:50 [ calculate_matrix::t4#0 ] 1,515.3: zp[1]:53 [ calculate_matrix::t7#0 ] 1,515.3: zp[1]:54 [ calculate_matrix::t8#0 ] 1,470.74: zp[1]:49 [ calculate_matrix::t3#0 ] 1,470.74: zp[1]:51 [ calculate_matrix::t5#0 ] 909.18: zp[1]:56 [ calculate_matrix::t10#0 ] 882.44: zp[1]:55 [ calculate_matrix::t9#0 ] +Uplift Scope [memset] 333,336.67: zp[2]:20 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [debug_print_init] 20,502.05: zp[1]:15 [ debug_print_init::j#2 debug_print_init::j#1 ] 20,002: zp[2]:83 [ debug_print_init::$41 ] 20,002: zp[2]:85 [ debug_print_init::$44 ] 20,002: zp[2]:87 [ debug_print_init::$47 ] 20,002: zp[2]:89 [ debug_print_init::$50 ] 20,002: zp[2]:91 [ debug_print_init::$53 ] 20,002: zp[2]:93 [ debug_print_init::$56 ] 20,002: zp[2]:95 [ debug_print_init::$59 ] 20,002: zp[2]:97 [ debug_print_init::$62 ] 20,002: zp[2]:99 [ debug_print_init::$65 ] 5,556.11: zp[1]:82 [ debug_print_init::col#0 ] 3,636.52: zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 1,956.23: zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] +Uplift Scope [rotate_matrix] 36,667.33: zp[1]:25 [ rotate_matrix::x#0 ] 36,667.33: zp[1]:26 [ rotate_matrix::y#0 ] 36,667.33: zp[1]:27 [ rotate_matrix::z#0 ] +Uplift Scope [anim] 22,061.03: zp[1]:4 [ anim::i#2 anim::i#1 ] 20,002: zp[1]:29 [ anim::$10 ] 20,002: zp[1]:30 [ anim::$12 ] 7,500.75: zp[1]:28 [ anim::i2#0 ] +Uplift Scope [print_str_at] 31,254.25: zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] 21,336.67: zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] +Uplift Scope [] 2,144.9: zp[1]:3 [ sy#10 sy#3 ] 1,145.49: zp[1]:2 [ sx#10 sx#3 ] +Uplift Scope [sprites_init] 2,836.17: zp[1]:22 [ sprites_init::i#2 sprites_init::i#1 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplift Scope [main] Uplift Scope [store_matrix] -Uplifting [print_sbyte_at] best 79731 combination reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] -Uplifting [debug_print_init] best 74931 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp[2]:83 [ debug_print_init::$41 ] zp[2]:85 [ debug_print_init::$44 ] zp[2]:87 [ debug_print_init::$47 ] zp[2]:89 [ debug_print_init::$50 ] zp[2]:91 [ debug_print_init::$53 ] zp[2]:93 [ debug_print_init::$56 ] zp[2]:95 [ debug_print_init::$59 ] zp[2]:97 [ debug_print_init::$62 ] zp[2]:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Uplifting [anim] best 73031 combination zp[1]:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$10 ] reg byte a [ anim::$12 ] reg byte x [ anim::i2#0 ] -Uplifting [debug_print] best 73013 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] +Uplifting [print_char_at] best 81650 combination zp[2]:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [print_byte_at] best 81642 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[1]:42 [ print_byte_at::b#0 ] zp[2]:43 [ print_byte_at::at#0 ] +Uplifting [print_sbyte_at] best 81642 combination zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] +Uplifting [debug_print] best 81624 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] reg byte a [ debug_print::print_sbyte_pos1_sb#0 ] reg byte a [ debug_print::print_sbyte_pos2_sb#0 ] reg byte a [ debug_print::print_sbyte_pos4_sb#0 ] zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] Limited combination testing to 100 combinations of 8388608 possible. -Uplifting [rotate_matrix] best 72712 combination reg byte x [ rotate_matrix::x#0 ] zp[1]:26 [ rotate_matrix::y#0 ] zp[1]:27 [ rotate_matrix::z#0 ] -Uplifting [print_str_at] best 72712 combination zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] -Uplifting [memset] best 72712 combination zp[2]:20 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char_at] best 72699 combination zp[2]:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [] best 72699 combination zp[1]:3 [ sy#10 sy#3 ] zp[1]:2 [ sx#10 sx#3 ] -Uplifting [sprites_init] best 72549 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] -Uplifting [print_byte_at] best 72536 combination reg byte y [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] reg byte x [ print_byte_at::b#0 ] zp[2]:43 [ print_byte_at::at#0 ] -Uplifting [RADIX] best 72536 combination -Uplifting [print_cls] best 72536 combination -Uplifting [main] best 72536 combination -Uplifting [store_matrix] best 72536 combination -Attempting to uplift remaining variables inzp[1]:4 [ anim::i#2 anim::i#1 ] -Uplifting [anim] best 72536 combination zp[1]:4 [ anim::i#2 anim::i#1 ] +Uplifting [memset] best 81624 combination zp[2]:20 [ memset::dst#2 memset::dst#1 ] +Uplifting [debug_print_init] best 76824 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp[2]:83 [ debug_print_init::$41 ] zp[2]:85 [ debug_print_init::$44 ] zp[2]:87 [ debug_print_init::$47 ] zp[2]:89 [ debug_print_init::$50 ] zp[2]:91 [ debug_print_init::$53 ] zp[2]:93 [ debug_print_init::$56 ] zp[2]:95 [ debug_print_init::$59 ] zp[2]:97 [ debug_print_init::$62 ] zp[2]:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] +Uplifting [rotate_matrix] best 76523 combination reg byte x [ rotate_matrix::x#0 ] zp[1]:26 [ rotate_matrix::y#0 ] zp[1]:27 [ rotate_matrix::z#0 ] +Uplifting [anim] best 74623 combination zp[1]:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$10 ] reg byte a [ anim::$12 ] reg byte x [ anim::i2#0 ] +Uplifting [print_str_at] best 74623 combination zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] +Uplifting [] best 74623 combination zp[1]:3 [ sy#10 sy#3 ] zp[1]:2 [ sx#10 sx#3 ] +Uplifting [sprites_init] best 74473 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] +Uplifting [RADIX] best 74473 combination +Uplifting [print_cls] best 74473 combination +Uplifting [main] best 74473 combination +Uplifting [store_matrix] best 74473 combination +Attempting to uplift remaining variables inzp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] +Uplifting [print_sbyte_at] best 74473 combination zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] +Attempting to uplift remaining variables inzp[1]:42 [ print_byte_at::b#0 ] +Uplifting [print_byte_at] best 74473 combination zp[1]:42 [ print_byte_at::b#0 ] Attempting to uplift remaining variables inzp[1]:6 [ debug_print::i#2 debug_print::i#1 ] -Uplifting [debug_print] best 72536 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] +Uplifting [debug_print] best 74473 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] Attempting to uplift remaining variables inzp[1]:5 [ debug_print::c#2 debug_print::c#1 ] -Uplifting [debug_print] best 72536 combination zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] -Attempting to uplift remaining variables inzp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] -Uplifting [debug_print_init] best 72536 combination zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] +Uplifting [debug_print] best 74473 combination zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] Attempting to uplift remaining variables inzp[1]:26 [ rotate_matrix::y#0 ] -Uplifting [rotate_matrix] best 72536 combination zp[1]:26 [ rotate_matrix::y#0 ] +Uplifting [rotate_matrix] best 74473 combination zp[1]:26 [ rotate_matrix::y#0 ] Attempting to uplift remaining variables inzp[1]:27 [ rotate_matrix::z#0 ] -Uplifting [rotate_matrix] best 72536 combination zp[1]:27 [ rotate_matrix::z#0 ] -Attempting to uplift remaining variables inzp[1]:3 [ sy#10 sy#3 ] -Uplifting [] best 72536 combination zp[1]:3 [ sy#10 sy#3 ] -Attempting to uplift remaining variables inzp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Uplifting [debug_print_init] best 72536 combination zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ sx#10 sx#3 ] -Uplifting [] best 72536 combination zp[1]:2 [ sx#10 sx#3 ] +Uplifting [rotate_matrix] best 74473 combination zp[1]:27 [ rotate_matrix::z#0 ] +Attempting to uplift remaining variables inzp[1]:4 [ anim::i#2 anim::i#1 ] +Uplifting [anim] best 74473 combination zp[1]:4 [ anim::i#2 anim::i#1 ] Attempting to uplift remaining variables inzp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] -Uplifting [debug_print] best 72530 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] +Uplifting [debug_print] best 74467 combination reg byte a [ debug_print::print_sbyte_pos5_sb#0 ] Attempting to uplift remaining variables inzp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] -Uplifting [debug_print] best 72524 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] +Uplifting [debug_print] best 74461 combination reg byte a [ debug_print::print_sbyte_pos6_sb#0 ] Attempting to uplift remaining variables inzp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] -Uplifting [debug_print] best 72518 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] +Uplifting [debug_print] best 74455 combination reg byte a [ debug_print::print_sbyte_pos7_sb#0 ] Attempting to uplift remaining variables inzp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] -Uplifting [debug_print] best 72512 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] +Uplifting [debug_print] best 74449 combination reg byte a [ debug_print::print_sbyte_pos8_sb#0 ] Attempting to uplift remaining variables inzp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] -Uplifting [debug_print] best 72506 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] +Uplifting [debug_print] best 74443 combination reg byte a [ debug_print::print_sbyte_pos9_sb#0 ] Attempting to uplift remaining variables inzp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] -Uplifting [debug_print] best 72500 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] +Uplifting [debug_print] best 74437 combination reg byte a [ debug_print::print_sbyte_pos10_sb#0 ] Attempting to uplift remaining variables inzp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] -Uplifting [debug_print] best 72494 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] +Uplifting [debug_print] best 74431 combination reg byte a [ debug_print::print_sbyte_pos11_sb#0 ] Attempting to uplift remaining variables inzp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] -Uplifting [debug_print] best 72488 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] +Uplifting [debug_print] best 74425 combination reg byte a [ debug_print::print_sbyte_pos12_sb#0 ] Attempting to uplift remaining variables inzp[1]:57 [ calculate_matrix::$10 ] -Uplifting [calculate_matrix] best 72482 combination reg byte a [ calculate_matrix::$10 ] +Uplifting [calculate_matrix] best 74419 combination reg byte a [ calculate_matrix::$10 ] Attempting to uplift remaining variables inzp[1]:58 [ calculate_matrix::$11 ] -Uplifting [calculate_matrix] best 72476 combination reg byte a [ calculate_matrix::$11 ] +Uplifting [calculate_matrix] best 74413 combination reg byte a [ calculate_matrix::$11 ] Attempting to uplift remaining variables inzp[1]:59 [ calculate_matrix::$12 ] -Uplifting [calculate_matrix] best 72470 combination reg byte a [ calculate_matrix::$12 ] +Uplifting [calculate_matrix] best 74407 combination reg byte a [ calculate_matrix::$12 ] Attempting to uplift remaining variables inzp[1]:60 [ calculate_matrix::$13 ] -Uplifting [calculate_matrix] best 72464 combination reg byte a [ calculate_matrix::$13 ] +Uplifting [calculate_matrix] best 74401 combination reg byte a [ calculate_matrix::$13 ] Attempting to uplift remaining variables inzp[1]:61 [ calculate_matrix::$14 ] -Uplifting [calculate_matrix] best 72458 combination reg byte a [ calculate_matrix::$14 ] +Uplifting [calculate_matrix] best 74395 combination reg byte a [ calculate_matrix::$14 ] Attempting to uplift remaining variables inzp[1]:62 [ calculate_matrix::$15 ] -Uplifting [calculate_matrix] best 72452 combination reg byte a [ calculate_matrix::$15 ] +Uplifting [calculate_matrix] best 74389 combination reg byte a [ calculate_matrix::$15 ] Attempting to uplift remaining variables inzp[1]:63 [ calculate_matrix::$16 ] -Uplifting [calculate_matrix] best 72446 combination reg byte a [ calculate_matrix::$16 ] +Uplifting [calculate_matrix] best 74383 combination reg byte a [ calculate_matrix::$16 ] Attempting to uplift remaining variables inzp[1]:64 [ calculate_matrix::$17 ] -Uplifting [calculate_matrix] best 72440 combination reg byte a [ calculate_matrix::$17 ] +Uplifting [calculate_matrix] best 74377 combination reg byte a [ calculate_matrix::$17 ] Attempting to uplift remaining variables inzp[1]:65 [ calculate_matrix::$18 ] -Uplifting [calculate_matrix] best 72434 combination reg byte a [ calculate_matrix::$18 ] +Uplifting [calculate_matrix] best 74371 combination reg byte a [ calculate_matrix::$18 ] Attempting to uplift remaining variables inzp[1]:66 [ calculate_matrix::$19 ] -Uplifting [calculate_matrix] best 72428 combination reg byte a [ calculate_matrix::$19 ] +Uplifting [calculate_matrix] best 74365 combination reg byte a [ calculate_matrix::$19 ] Attempting to uplift remaining variables inzp[1]:67 [ calculate_matrix::$20 ] -Uplifting [calculate_matrix] best 72422 combination reg byte a [ calculate_matrix::$20 ] +Uplifting [calculate_matrix] best 74359 combination reg byte a [ calculate_matrix::$20 ] Attempting to uplift remaining variables inzp[1]:68 [ calculate_matrix::$21 ] -Uplifting [calculate_matrix] best 72416 combination reg byte a [ calculate_matrix::$21 ] +Uplifting [calculate_matrix] best 74353 combination reg byte a [ calculate_matrix::$21 ] Attempting to uplift remaining variables inzp[1]:69 [ calculate_matrix::$22 ] -Uplifting [calculate_matrix] best 72410 combination reg byte a [ calculate_matrix::$22 ] +Uplifting [calculate_matrix] best 74347 combination reg byte a [ calculate_matrix::$22 ] Attempting to uplift remaining variables inzp[1]:70 [ calculate_matrix::$23 ] -Uplifting [calculate_matrix] best 72404 combination reg byte a [ calculate_matrix::$23 ] +Uplifting [calculate_matrix] best 74341 combination reg byte a [ calculate_matrix::$23 ] Attempting to uplift remaining variables inzp[1]:71 [ calculate_matrix::$24 ] -Uplifting [calculate_matrix] best 72398 combination reg byte a [ calculate_matrix::$24 ] +Uplifting [calculate_matrix] best 74335 combination reg byte a [ calculate_matrix::$24 ] Attempting to uplift remaining variables inzp[1]:72 [ calculate_matrix::$25 ] -Uplifting [calculate_matrix] best 72392 combination reg byte a [ calculate_matrix::$25 ] +Uplifting [calculate_matrix] best 74329 combination reg byte a [ calculate_matrix::$25 ] Attempting to uplift remaining variables inzp[1]:73 [ calculate_matrix::$26 ] -Uplifting [calculate_matrix] best 72386 combination reg byte a [ calculate_matrix::$26 ] +Uplifting [calculate_matrix] best 74323 combination reg byte a [ calculate_matrix::$26 ] Attempting to uplift remaining variables inzp[1]:74 [ calculate_matrix::$27 ] -Uplifting [calculate_matrix] best 72380 combination reg byte a [ calculate_matrix::$27 ] +Uplifting [calculate_matrix] best 74317 combination reg byte a [ calculate_matrix::$27 ] Attempting to uplift remaining variables inzp[1]:75 [ calculate_matrix::$28 ] -Uplifting [calculate_matrix] best 72374 combination reg byte a [ calculate_matrix::$28 ] +Uplifting [calculate_matrix] best 74311 combination reg byte a [ calculate_matrix::$28 ] Attempting to uplift remaining variables inzp[1]:76 [ calculate_matrix::$29 ] -Uplifting [calculate_matrix] best 72368 combination reg byte a [ calculate_matrix::$29 ] +Uplifting [calculate_matrix] best 74305 combination reg byte a [ calculate_matrix::$29 ] Attempting to uplift remaining variables inzp[1]:77 [ calculate_matrix::$30 ] -Uplifting [calculate_matrix] best 72362 combination reg byte a [ calculate_matrix::$30 ] +Uplifting [calculate_matrix] best 74299 combination reg byte a [ calculate_matrix::$30 ] Attempting to uplift remaining variables inzp[1]:78 [ calculate_matrix::$31 ] -Uplifting [calculate_matrix] best 72356 combination reg byte a [ calculate_matrix::$31 ] +Uplifting [calculate_matrix] best 74293 combination reg byte a [ calculate_matrix::$31 ] Attempting to uplift remaining variables inzp[1]:79 [ calculate_matrix::$32 ] -Uplifting [calculate_matrix] best 72350 combination reg byte a [ calculate_matrix::$32 ] +Uplifting [calculate_matrix] best 74287 combination reg byte a [ calculate_matrix::$32 ] Attempting to uplift remaining variables inzp[1]:80 [ calculate_matrix::$33 ] -Uplifting [calculate_matrix] best 72344 combination reg byte a [ calculate_matrix::$33 ] +Uplifting [calculate_matrix] best 74281 combination reg byte a [ calculate_matrix::$33 ] Attempting to uplift remaining variables inzp[1]:81 [ calculate_matrix::$34 ] -Uplifting [calculate_matrix] best 72338 combination reg byte a [ calculate_matrix::$34 ] +Uplifting [calculate_matrix] best 74275 combination reg byte a [ calculate_matrix::$34 ] Attempting to uplift remaining variables inzp[1]:23 [ calculate_matrix::sx#0 ] -Uplifting [calculate_matrix] best 72300 combination reg byte x [ calculate_matrix::sx#0 ] -Attempting to uplift remaining variables inzp[1]:24 [ calculate_matrix::sy#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:24 [ calculate_matrix::sy#0 ] +Uplifting [calculate_matrix] best 74237 combination reg byte x [ calculate_matrix::sx#0 ] Attempting to uplift remaining variables inzp[1]:48 [ calculate_matrix::t2#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:48 [ calculate_matrix::t2#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:48 [ calculate_matrix::t2#0 ] Attempting to uplift remaining variables inzp[1]:47 [ calculate_matrix::t1#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:47 [ calculate_matrix::t1#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:47 [ calculate_matrix::t1#0 ] +Attempting to uplift remaining variables inzp[1]:24 [ calculate_matrix::sy#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:24 [ calculate_matrix::sy#0 ] +Attempting to uplift remaining variables inzp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] +Uplifting [debug_print_init] best 74237 combination zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ sy#10 sy#3 ] +Uplifting [] best 74237 combination zp[1]:3 [ sy#10 sy#3 ] +Attempting to uplift remaining variables inzp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] +Uplifting [debug_print_init] best 74237 combination zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] Attempting to uplift remaining variables inzp[1]:52 [ calculate_matrix::t6#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:52 [ calculate_matrix::t6#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:52 [ calculate_matrix::t6#0 ] Attempting to uplift remaining variables inzp[1]:50 [ calculate_matrix::t4#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:50 [ calculate_matrix::t4#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:50 [ calculate_matrix::t4#0 ] Attempting to uplift remaining variables inzp[1]:53 [ calculate_matrix::t7#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:53 [ calculate_matrix::t7#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:53 [ calculate_matrix::t7#0 ] Attempting to uplift remaining variables inzp[1]:54 [ calculate_matrix::t8#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:54 [ calculate_matrix::t8#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:54 [ calculate_matrix::t8#0 ] Attempting to uplift remaining variables inzp[1]:49 [ calculate_matrix::t3#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:49 [ calculate_matrix::t3#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:49 [ calculate_matrix::t3#0 ] Attempting to uplift remaining variables inzp[1]:51 [ calculate_matrix::t5#0 ] -Uplifting [calculate_matrix] best 72300 combination zp[1]:51 [ calculate_matrix::t5#0 ] +Uplifting [calculate_matrix] best 74237 combination zp[1]:51 [ calculate_matrix::t5#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ sx#10 sx#3 ] +Uplifting [] best 74237 combination zp[1]:2 [ sx#10 sx#3 ] Attempting to uplift remaining variables inzp[1]:56 [ calculate_matrix::t10#0 ] -Uplifting [calculate_matrix] best 72293 combination reg byte x [ calculate_matrix::t10#0 ] +Uplifting [calculate_matrix] best 74230 combination reg byte x [ calculate_matrix::t10#0 ] Attempting to uplift remaining variables inzp[1]:55 [ calculate_matrix::t9#0 ] -Uplifting [calculate_matrix] best 72293 combination zp[1]:55 [ calculate_matrix::t9#0 ] +Uplifting [calculate_matrix] best 74230 combination zp[1]:55 [ calculate_matrix::t9#0 ] Coalescing zero page register [ zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] ] with [ zp[2]:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2 Coalescing zero page register [ zp[1]:3 [ sy#10 sy#3 ] ] with [ zp[1]:24 [ calculate_matrix::sy#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp[2]:43 [ print_byte_at::at#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] ] with [ zp[1]:42 [ print_byte_at::b#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] ] with [ zp[1]:4 [ anim::i#2 anim::i#1 ] ] Coalescing zero page register [ zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] ] with [ zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] ] Coalescing zero page register [ zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] ] with [ zp[2]:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] ] Coalescing zero page register [ zp[2]:20 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ] Coalescing zero page register [ zp[1]:26 [ rotate_matrix::y#0 ] ] with [ zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] ] -Coalescing zero page register [ zp[1]:47 [ calculate_matrix::t1#0 ] ] with [ zp[1]:27 [ rotate_matrix::z#0 ] ] -Coalescing zero page register [ zp[1]:47 [ calculate_matrix::t1#0 rotate_matrix::z#0 ] ] with [ zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] ] +Coalescing zero page register [ zp[1]:27 [ rotate_matrix::z#0 ] ] with [ zp[1]:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 print_byte_at::b#0 ] ] +Coalescing zero page register [ zp[1]:47 [ calculate_matrix::t1#0 ] ] with [ zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] ] Coalescing zero page register [ zp[1]:48 [ calculate_matrix::t2#0 ] ] with [ zp[1]:26 [ rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] ] +Coalescing zero page register [ zp[1]:49 [ calculate_matrix::t3#0 ] ] with [ zp[1]:27 [ rotate_matrix::z#0 print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 print_byte_at::b#0 ] ] Coalescing zero page register [ zp[2]:83 [ debug_print_init::$41 ] ] with [ zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] ] Coalescing zero page register [ zp[2]:85 [ debug_print_init::$44 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ] Allocated (was zp[1]:13) zp[1]:4 [ debug_print_init::c#2 debug_print_init::c#1 anim::i#2 anim::i#1 ] -Allocated (was zp[1]:47) zp[1]:5 [ calculate_matrix::t1#0 rotate_matrix::z#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] +Allocated (was zp[1]:47) zp[1]:5 [ calculate_matrix::t1#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] Allocated (was zp[1]:48) zp[1]:6 [ calculate_matrix::t2#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] -Allocated (was zp[1]:49) zp[1]:7 [ calculate_matrix::t3#0 ] +Allocated (was zp[1]:49) zp[1]:7 [ calculate_matrix::t3#0 rotate_matrix::z#0 print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 print_byte_at::b#0 ] Allocated (was zp[1]:50) zp[1]:8 [ calculate_matrix::t4#0 ] Allocated (was zp[1]:51) zp[1]:9 [ calculate_matrix::t5#0 ] Allocated (was zp[1]:52) zp[1]:10 [ calculate_matrix::t6#0 ] @@ -7267,12 +7273,13 @@ debug_print: { .label at_line = SCREEN+$13*$28 .label c = 5 .label i = 6 - // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 - ldx.z sx + // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsaa=vbsz1 + lda.z sx jmp print_sbyte_pos1 // debug_print::print_sbyte_pos1 print_sbyte_pos1: - // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [49] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos1: @@ -7286,12 +7293,13 @@ debug_print: { jmp __b2 // debug_print::@2 __b2: - // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 - ldx.z sy + // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 + lda.z sy jmp print_sbyte_pos2 // debug_print::print_sbyte_pos2 print_sbyte_pos2: - // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [52] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos2: @@ -7315,18 +7323,20 @@ debug_print: { sta.z print_sbyte_at.at lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta.z print_sbyte_at.at+1 - // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 - ldx #sz + // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 + lda #sz + sta.z print_sbyte_at.b jsr print_sbyte_at jmp __b3 // debug_print::@3 __b3: - // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix + // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix) -- vbsaa=_deref_pbsc1 + lda rotation_matrix jmp print_sbyte_pos4 // debug_print::print_sbyte_pos4 print_sbyte_pos4: - // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [57] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos4: @@ -7340,12 +7350,13 @@ debug_print: { jmp __b4 // debug_print::@4 __b4: - // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 1) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+1 + // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 1) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+1 jmp print_sbyte_pos5 // debug_print::print_sbyte_pos5 print_sbyte_pos5: - // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [60] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos5: @@ -7359,12 +7370,13 @@ debug_print: { jmp __b5 // debug_print::@5 __b5: - // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 2) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+2 + // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 2) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+2 jmp print_sbyte_pos6 // debug_print::print_sbyte_pos6 print_sbyte_pos6: - // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [63] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos6: @@ -7378,12 +7390,13 @@ debug_print: { jmp __b6 // debug_print::@6 __b6: - // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 3) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+3 + // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 3) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+3 jmp print_sbyte_pos7 // debug_print::print_sbyte_pos7 print_sbyte_pos7: - // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [66] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos7: @@ -7397,12 +7410,13 @@ debug_print: { jmp __b7 // debug_print::@7 __b7: - // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 4) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+4 + // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 4) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+4 jmp print_sbyte_pos8 // debug_print::print_sbyte_pos8 print_sbyte_pos8: - // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [69] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos8: @@ -7416,12 +7430,13 @@ debug_print: { jmp __b8 // debug_print::@8 __b8: - // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 5) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+5 + // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 5) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+5 jmp print_sbyte_pos9 // debug_print::print_sbyte_pos9 print_sbyte_pos9: - // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [72] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos9: @@ -7435,12 +7450,13 @@ debug_print: { jmp __b9 // debug_print::@9 __b9: - // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 6) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+6 + // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 6) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+6 jmp print_sbyte_pos10 // debug_print::print_sbyte_pos10 print_sbyte_pos10: - // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [75] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos10: @@ -7454,12 +7470,13 @@ debug_print: { jmp __b10 // debug_print::@10 __b10: - // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 7) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+7 + // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 7) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+7 jmp print_sbyte_pos11 // debug_print::print_sbyte_pos11 print_sbyte_pos11: - // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [78] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos11: @@ -7473,12 +7490,13 @@ debug_print: { jmp __b11 // debug_print::@11 __b11: - // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 8) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+8 + // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 8) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+8 jmp print_sbyte_pos12 // debug_print::print_sbyte_pos12 print_sbyte_pos12: - // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [81] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos12: @@ -7513,9 +7531,10 @@ debug_print: { lda #>at_line adc #0 sta.z print_sbyte_at.at+1 - // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xrs,y + lda xrs,y + sta.z print_sbyte_at.b // [85] call print_sbyte_at // [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] print_sbyte_at_from___b1: @@ -7533,9 +7552,10 @@ debug_print: { lda #>at_line+$28*1 adc #0 sta.z print_sbyte_at.at+1 - // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx yrs,y + lda yrs,y + sta.z print_sbyte_at.b // [88] call print_sbyte_at // [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] print_sbyte_at_from___b12: @@ -7553,9 +7573,10 @@ debug_print: { lda #>at_line+$28*2 adc #0 sta.z print_sbyte_at.at+1 - // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx zrs,y + lda zrs,y + sta.z print_sbyte_at.b // [91] call print_sbyte_at // [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] print_sbyte_at_from___b13: @@ -7573,9 +7594,10 @@ debug_print: { lda #>at_line+$28*3 adc #0 sta.z print_sbyte_at.at+1 - // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx pps,y + lda pps,y + sta.z print_sbyte_at.b // [94] call print_sbyte_at // [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] print_sbyte_at_from___b14: @@ -7593,9 +7615,10 @@ debug_print: { lda #>at_line+$28*4 adc #0 sta.z print_sbyte_at.at+1 - // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xps,y + lda xps,y + sta.z print_sbyte_at.b // [97] call print_sbyte_at // [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] print_sbyte_at_from___b15: @@ -7613,9 +7636,10 @@ debug_print: { lda #>at_line+$28*5 adc #0 sta.z print_sbyte_at.at+1 - // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx yps,y + lda yps,y + sta.z print_sbyte_at.b // [100] call print_sbyte_at // [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] print_sbyte_at_from___b16: @@ -7643,11 +7667,12 @@ debug_print: { } // print_sbyte_at // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte register(X) b, byte* zp($e) at) +// print_sbyte_at(signed byte zp(7) b, byte* zp($e) at) print_sbyte_at: { + .label b = 7 .label at = $e - // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 - cpx #0 + // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + lda.z b bmi __b1 jmp __b3 // print_sbyte_at::@3 @@ -7657,8 +7682,8 @@ print_sbyte_at: { // [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from___b3: // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 - ldy #' ' + // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuxx=vbuc1 + ldx #' ' jsr print_char_at // [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] __b2_from___b3: @@ -7687,27 +7712,27 @@ print_sbyte_at: { // [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from___b1: // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 - ldy #'-' + // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuxx=vbuc1 + ldx #'-' jsr print_char_at jmp __b4 // print_sbyte_at::@4 __b4: - // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx - txa + // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 + lda.z b eor #$ff clc adc #1 - tax + sta.z b jmp __b2_from___b4 } // print_char_at // Print a single char -// print_char_at(byte register(Y) ch, byte* zp($e) at) +// print_char_at(byte register(X) ch, byte* zp($e) at) print_char_at: { .label at = $e - // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy - tya + // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (at),y jmp __breturn @@ -7718,19 +7743,19 @@ print_char_at: { } // print_byte_at // Print a byte as HEX at a specific position -// print_byte_at(byte register(X) b, byte* zp($e) at) +// print_byte_at(byte zp(7) b, byte* zp($e) at) print_byte_at: { + .label b = 7 .label at = $e - // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 - txa + // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda.z b lsr lsr lsr lsr + // [121] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa tay - // [121] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy - lda print_hextab,y - tay + ldx print_hextab,y // [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 // [123] call print_char_at // Table of hexadecimal digits @@ -7742,16 +7767,17 @@ print_byte_at: { jmp __b1 // print_byte_at::@1 __b1: - // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 lda #$f - axs #0 + and.z b + tay // [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc.z print_char_at.at bne !+ inc.z print_char_at.at+1 !: - // [126] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx - ldy print_hextab,x + // [126] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y // [127] call print_char_at // [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from___b1: @@ -7769,10 +7795,10 @@ print_byte_at: { // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. // Implemented in assembler to utilize seriously fast multiplication -// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(5) z) +// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(7) z) rotate_matrix: { .label y = 6 - .label z = 5 + .label z = 7 // [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx txa sta xr @@ -8392,9 +8418,10 @@ debug_print_init: { lda #>at_line adc #0 sta.z print_sbyte_at.at+1 - // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xs,y + lda xs,y + sta.z print_sbyte_at.b // [210] call print_sbyte_at // [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] print_sbyte_at_from___b1: @@ -8412,9 +8439,10 @@ debug_print_init: { lda #>at_line+$28*1 adc #0 sta.z print_sbyte_at.at+1 - // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx ys,y + lda ys,y + sta.z print_sbyte_at.b // [213] call print_sbyte_at // [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] print_sbyte_at_from___b16: @@ -8432,9 +8460,10 @@ debug_print_init: { lda #>at_line+$28*2 adc #0 sta.z print_sbyte_at.at+1 - // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx zs,y + lda zs,y + sta.z print_sbyte_at.b // [216] call print_sbyte_at // [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] print_sbyte_at_from___b17: @@ -8935,19 +8964,8 @@ Removing instruction __b2_from___b1: Removing instruction __b1: Removing instruction __b8_from___b5: Removing instruction __b6_from___b9: -Removing instruction print_sbyte_at_from_print_sbyte_pos1: -Removing instruction print_sbyte_at_from_print_sbyte_pos2: Removing instruction print_sbyte_pos3_from_print_sbyte_pos2: Removing instruction print_sbyte_at_from_print_sbyte_pos3: -Removing instruction print_sbyte_at_from_print_sbyte_pos4: -Removing instruction print_sbyte_at_from_print_sbyte_pos5: -Removing instruction print_sbyte_at_from_print_sbyte_pos6: -Removing instruction print_sbyte_at_from_print_sbyte_pos7: -Removing instruction print_sbyte_at_from_print_sbyte_pos8: -Removing instruction print_sbyte_at_from_print_sbyte_pos9: -Removing instruction print_sbyte_at_from_print_sbyte_pos10: -Removing instruction print_sbyte_at_from_print_sbyte_pos11: -Removing instruction print_sbyte_at_from_print_sbyte_pos12: Removing instruction __b1_from___b17: Removing instruction print_char_at_from___b3: Removing instruction __b2_from___b3: @@ -8998,27 +9016,38 @@ Removing instruction __b7: Removing instruction __b10: Removing instruction __b1_from___b10: Removing instruction print_sbyte_pos1: +Removing instruction print_sbyte_at_from_print_sbyte_pos1: Removing instruction __b2: Removing instruction print_sbyte_pos2: +Removing instruction print_sbyte_at_from_print_sbyte_pos2: Removing instruction print_sbyte_pos3: Removing instruction __b3: Removing instruction print_sbyte_pos4: +Removing instruction print_sbyte_at_from_print_sbyte_pos4: Removing instruction __b4: Removing instruction print_sbyte_pos5: +Removing instruction print_sbyte_at_from_print_sbyte_pos5: Removing instruction __b5: Removing instruction print_sbyte_pos6: +Removing instruction print_sbyte_at_from_print_sbyte_pos6: Removing instruction __b6: Removing instruction print_sbyte_pos7: +Removing instruction print_sbyte_at_from_print_sbyte_pos7: Removing instruction __b7: Removing instruction print_sbyte_pos8: +Removing instruction print_sbyte_at_from_print_sbyte_pos8: Removing instruction __b8: Removing instruction print_sbyte_pos9: +Removing instruction print_sbyte_at_from_print_sbyte_pos9: Removing instruction __b9: Removing instruction print_sbyte_pos10: +Removing instruction print_sbyte_at_from_print_sbyte_pos10: Removing instruction __b10: Removing instruction print_sbyte_pos11: +Removing instruction print_sbyte_at_from_print_sbyte_pos11: Removing instruction __b11: Removing instruction print_sbyte_pos12: +Removing instruction print_sbyte_at_from_print_sbyte_pos12: Removing instruction __b1_from_print_sbyte_pos12: Removing instruction print_sbyte_at_from___b1: Removing instruction __b12: @@ -9086,9 +9115,9 @@ Removing instruction jmp __b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction __bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [301] bne __b1 to beq -Fixing long branch [902] bne __b2 to beq -Fixing long branch [911] bne __b1 to beq +Fixing long branch [319] bne __b1 to beq +Fixing long branch [925] bne __b2 to beq +Fixing long branch [934] bne __b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -9145,8 +9174,8 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_XPOS = (byte*) 53248 (const byte*) SPRITES_YPOS = (byte*) 53249 (void()) anim() -(byte~) anim::$10 reg byte a 202.0 -(byte~) anim::$12 reg byte a 202.0 +(byte~) anim::$10 reg byte a 20002.0 +(byte~) anim::$12 reg byte a 20002.0 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -9158,62 +9187,62 @@ FINAL SYMBOL TABLE (label) anim::@8 (label) anim::@9 (byte) anim::i -(byte) anim::i#1 i zp[1]:4 151.5 -(byte) anim::i#2 i zp[1]:4 71.29411764705881 +(byte) anim::i#1 i zp[1]:4 15001.5 +(byte) anim::i#2 i zp[1]:4 7059.529411764704 (byte) anim::i2 -(byte) anim::i2#0 reg byte x 75.75 +(byte) anim::i2#0 reg byte x 7500.75 (void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz) -(signed byte~) calculate_matrix::$10 reg byte a 4.0 -(signed byte~) calculate_matrix::$11 reg byte a 4.0 -(signed byte~) calculate_matrix::$12 reg byte a 4.0 -(signed byte~) calculate_matrix::$13 reg byte a 4.0 -(signed byte~) calculate_matrix::$14 reg byte a 4.0 -(signed byte~) calculate_matrix::$15 reg byte a 4.0 -(signed byte~) calculate_matrix::$16 reg byte a 4.0 -(signed byte~) calculate_matrix::$17 reg byte a 4.0 -(signed byte~) calculate_matrix::$18 reg byte a 4.0 -(signed byte~) calculate_matrix::$19 reg byte a 4.0 -(signed byte~) calculate_matrix::$20 reg byte a 4.0 -(signed byte~) calculate_matrix::$21 reg byte a 4.0 -(signed byte~) calculate_matrix::$22 reg byte a 4.0 -(signed byte~) calculate_matrix::$23 reg byte a 4.0 -(signed byte~) calculate_matrix::$24 reg byte a 4.0 -(signed byte~) calculate_matrix::$25 reg byte a 4.0 -(signed byte~) calculate_matrix::$26 reg byte a 4.0 -(signed byte~) calculate_matrix::$27 reg byte a 4.0 -(signed byte~) calculate_matrix::$28 reg byte a 4.0 -(signed byte~) calculate_matrix::$29 reg byte a 4.0 -(signed byte~) calculate_matrix::$30 reg byte a 4.0 -(signed byte~) calculate_matrix::$31 reg byte a 4.0 -(signed byte~) calculate_matrix::$32 reg byte a 4.0 -(signed byte~) calculate_matrix::$33 reg byte a 4.0 -(signed byte~) calculate_matrix::$34 reg byte a 4.0 +(signed byte~) calculate_matrix::$10 reg byte a 20002.0 +(signed byte~) calculate_matrix::$11 reg byte a 20002.0 +(signed byte~) calculate_matrix::$12 reg byte a 20002.0 +(signed byte~) calculate_matrix::$13 reg byte a 20002.0 +(signed byte~) calculate_matrix::$14 reg byte a 20002.0 +(signed byte~) calculate_matrix::$15 reg byte a 20002.0 +(signed byte~) calculate_matrix::$16 reg byte a 20002.0 +(signed byte~) calculate_matrix::$17 reg byte a 20002.0 +(signed byte~) calculate_matrix::$18 reg byte a 20002.0 +(signed byte~) calculate_matrix::$19 reg byte a 20002.0 +(signed byte~) calculate_matrix::$20 reg byte a 20002.0 +(signed byte~) calculate_matrix::$21 reg byte a 20002.0 +(signed byte~) calculate_matrix::$22 reg byte a 20002.0 +(signed byte~) calculate_matrix::$23 reg byte a 20002.0 +(signed byte~) calculate_matrix::$24 reg byte a 20002.0 +(signed byte~) calculate_matrix::$25 reg byte a 20002.0 +(signed byte~) calculate_matrix::$26 reg byte a 20002.0 +(signed byte~) calculate_matrix::$27 reg byte a 20002.0 +(signed byte~) calculate_matrix::$28 reg byte a 20002.0 +(signed byte~) calculate_matrix::$29 reg byte a 20002.0 +(signed byte~) calculate_matrix::$30 reg byte a 20002.0 +(signed byte~) calculate_matrix::$31 reg byte a 20002.0 +(signed byte~) calculate_matrix::$32 reg byte a 20002.0 +(signed byte~) calculate_matrix::$33 reg byte a 20002.0 +(signed byte~) calculate_matrix::$34 reg byte a 20002.0 (label) calculate_matrix::@return (signed byte) calculate_matrix::sx -(signed byte) calculate_matrix::sx#0 reg byte x 2.4545454545454546 +(signed byte) calculate_matrix::sx#0 reg byte x 7364.454545454545 (signed byte) calculate_matrix::sy -(signed byte) calculate_matrix::sy#0 sy zp[1]:3 1.5333333333333332 +(signed byte) calculate_matrix::sy#0 sy zp[1]:3 4067.133333333334 (signed byte) calculate_matrix::sz (signed byte) calculate_matrix::t1 -(signed byte) calculate_matrix::t1#0 t1 zp[1]:5 0.8333333333333333 +(signed byte) calculate_matrix::t1#0 t1 zp[1]:5 4167.083333333333 (signed byte) calculate_matrix::t10 -(signed byte) calculate_matrix::t10#0 reg byte x 0.18181818181818182 +(signed byte) calculate_matrix::t10#0 reg byte x 909.1818181818182 (signed byte) calculate_matrix::t2 -(signed byte) calculate_matrix::t2#0 t2 zp[1]:6 0.9090909090909092 +(signed byte) calculate_matrix::t2#0 t2 zp[1]:6 4545.909090909091 (signed byte) calculate_matrix::t3 -(signed byte) calculate_matrix::t3#0 t3 zp[1]:7 0.29411764705882354 +(signed byte) calculate_matrix::t3#0 t3 zp[1]:7 1470.7352941176468 (signed byte) calculate_matrix::t4 -(signed byte) calculate_matrix::t4#0 t4 zp[1]:8 0.30303030303030304 +(signed byte) calculate_matrix::t4#0 t4 zp[1]:8 1515.3030303030303 (signed byte) calculate_matrix::t5 -(signed byte) calculate_matrix::t5#0 t5 zp[1]:9 0.29411764705882354 +(signed byte) calculate_matrix::t5#0 t5 zp[1]:9 1470.7352941176468 (signed byte) calculate_matrix::t6 -(signed byte) calculate_matrix::t6#0 t6 zp[1]:10 0.3125 +(signed byte) calculate_matrix::t6#0 t6 zp[1]:10 1562.65625 (signed byte) calculate_matrix::t7 -(signed byte) calculate_matrix::t7#0 t7 zp[1]:11 0.30303030303030304 +(signed byte) calculate_matrix::t7#0 t7 zp[1]:11 1515.3030303030303 (signed byte) calculate_matrix::t8 -(signed byte) calculate_matrix::t8#0 t8 zp[1]:12 0.30303030303030304 +(signed byte) calculate_matrix::t8#0 t8 zp[1]:12 1515.3030303030303 (signed byte) calculate_matrix::t9 -(signed byte) calculate_matrix::t9#0 t9 zp[1]:13 0.1764705882352941 +(signed byte) calculate_matrix::t9#0 t9 zp[1]:13 882.4411764705882 (void()) debug_print() (label) debug_print::@1 (label) debug_print::@10 @@ -9236,11 +9265,11 @@ FINAL SYMBOL TABLE (byte*) debug_print::at_line (const byte*) debug_print::at_line#0 at_line = (const byte*) SCREEN+(word)(number) $13*(number) $28 (byte) debug_print::c -(byte) debug_print::c#1 c zp[1]:5 67.33333333333333 -(byte) debug_print::c#2 c zp[1]:5 42.52631578947369 +(byte) debug_print::c#1 c zp[1]:5 666667.3333333334 +(byte) debug_print::c#2 c zp[1]:5 421053.05263157893 (byte) debug_print::i -(byte) debug_print::i#1 i zp[1]:6 151.5 -(byte) debug_print::i#2 i zp[1]:6 40.4 +(byte) debug_print::i#1 i zp[1]:6 1500001.5 +(byte) debug_print::i#2 i zp[1]:6 400000.39999999997 (label) debug_print::print_sbyte_pos1 (label) debug_print::print_sbyte_pos10 (byte) debug_print::print_sbyte_pos10_col @@ -9248,33 +9277,33 @@ FINAL SYMBOL TABLE (byte) debug_print::print_sbyte_pos10_row (const byte) debug_print::print_sbyte_pos10_row#0 print_sbyte_pos10_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos10_sb -(signed byte) debug_print::print_sbyte_pos10_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos10_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos11 (byte) debug_print::print_sbyte_pos11_col (const byte) debug_print::print_sbyte_pos11_col#0 print_sbyte_pos11_col = (byte) $21 (byte) debug_print::print_sbyte_pos11_row (const byte) debug_print::print_sbyte_pos11_row#0 print_sbyte_pos11_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos11_sb -(signed byte) debug_print::print_sbyte_pos11_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos11_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos12 (byte) debug_print::print_sbyte_pos12_col (const byte) debug_print::print_sbyte_pos12_col#0 print_sbyte_pos12_col = (byte) $25 (byte) debug_print::print_sbyte_pos12_row (const byte) debug_print::print_sbyte_pos12_row#0 print_sbyte_pos12_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos12_sb -(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte a 20002.0 (byte) debug_print::print_sbyte_pos1_col (const byte) debug_print::print_sbyte_pos1_col#0 print_sbyte_pos1_col = (byte) $25 (byte) debug_print::print_sbyte_pos1_row (signed byte) debug_print::print_sbyte_pos1_sb -(signed byte) debug_print::print_sbyte_pos1_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos1_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos2 (byte) debug_print::print_sbyte_pos2_col (const byte) debug_print::print_sbyte_pos2_col#0 print_sbyte_pos2_col = (byte) $25 (byte) debug_print::print_sbyte_pos2_row (const byte) debug_print::print_sbyte_pos2_row#0 print_sbyte_pos2_row = (byte) 1 (signed byte) debug_print::print_sbyte_pos2_sb -(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos3 (byte) debug_print::print_sbyte_pos3_col (const byte) debug_print::print_sbyte_pos3_col#0 print_sbyte_pos3_col = (byte) $25 @@ -9287,52 +9316,52 @@ FINAL SYMBOL TABLE (byte) debug_print::print_sbyte_pos4_row (const byte) debug_print::print_sbyte_pos4_row#0 print_sbyte_pos4_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos4_sb -(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos5 (byte) debug_print::print_sbyte_pos5_col (const byte) debug_print::print_sbyte_pos5_col#0 print_sbyte_pos5_col = (byte) $21 (byte) debug_print::print_sbyte_pos5_row (const byte) debug_print::print_sbyte_pos5_row#0 print_sbyte_pos5_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos5_sb -(signed byte) debug_print::print_sbyte_pos5_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos5_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos6 (byte) debug_print::print_sbyte_pos6_col (const byte) debug_print::print_sbyte_pos6_col#0 print_sbyte_pos6_col = (byte) $25 (byte) debug_print::print_sbyte_pos6_row (const byte) debug_print::print_sbyte_pos6_row#0 print_sbyte_pos6_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos6_sb -(signed byte) debug_print::print_sbyte_pos6_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos6_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos7 (byte) debug_print::print_sbyte_pos7_col (const byte) debug_print::print_sbyte_pos7_col#0 print_sbyte_pos7_col = (byte) $1d (byte) debug_print::print_sbyte_pos7_row (const byte) debug_print::print_sbyte_pos7_row#0 print_sbyte_pos7_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos7_sb -(signed byte) debug_print::print_sbyte_pos7_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos7_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos8 (byte) debug_print::print_sbyte_pos8_col (const byte) debug_print::print_sbyte_pos8_col#0 print_sbyte_pos8_col = (byte) $21 (byte) debug_print::print_sbyte_pos8_row (const byte) debug_print::print_sbyte_pos8_row#0 print_sbyte_pos8_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos8_sb -(signed byte) debug_print::print_sbyte_pos8_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos8_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos9 (byte) debug_print::print_sbyte_pos9_col (const byte) debug_print::print_sbyte_pos9_col#0 print_sbyte_pos9_col = (byte) $25 (byte) debug_print::print_sbyte_pos9_row (const byte) debug_print::print_sbyte_pos9_row#0 print_sbyte_pos9_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos9_sb -(signed byte) debug_print::print_sbyte_pos9_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos9_sb#0 reg byte a 20002.0 (void()) debug_print_init() -(byte*~) debug_print_init::$41 zp[2]:14 202.0 -(byte*~) debug_print_init::$44 zp[2]:16 202.0 -(byte*~) debug_print_init::$47 zp[2]:18 202.0 -(byte*~) debug_print_init::$50 zp[2]:20 202.0 -(byte*~) debug_print_init::$53 zp[2]:22 202.0 -(byte*~) debug_print_init::$56 zp[2]:24 202.0 -(byte*~) debug_print_init::$59 zp[2]:26 202.0 -(byte*~) debug_print_init::$62 zp[2]:28 202.0 -(byte*~) debug_print_init::$65 zp[2]:30 202.0 +(byte*~) debug_print_init::$41 zp[2]:14 20002.0 +(byte*~) debug_print_init::$44 zp[2]:16 20002.0 +(byte*~) debug_print_init::$47 zp[2]:18 20002.0 +(byte*~) debug_print_init::$50 zp[2]:20 20002.0 +(byte*~) debug_print_init::$53 zp[2]:22 20002.0 +(byte*~) debug_print_init::$56 zp[2]:24 20002.0 +(byte*~) debug_print_init::$59 zp[2]:26 20002.0 +(byte*~) debug_print_init::$62 zp[2]:28 20002.0 +(byte*~) debug_print_init::$65 zp[2]:30 20002.0 (label) debug_print_init::@1 (label) debug_print_init::@10 (label) debug_print_init::@11 @@ -9357,16 +9386,16 @@ FINAL SYMBOL TABLE (byte*) debug_print_init::at_line (const byte*) debug_print_init::at_line#0 at_line = (const byte*) SCREEN+(word)(number) $10*(number) $28 (byte) debug_print_init::c -(byte) debug_print_init::c#1 c zp[1]:4 7.333333333333333 -(byte) debug_print_init::c#2 c zp[1]:4 30.125 +(byte) debug_print_init::c#1 c zp[1]:4 667.3333333333334 +(byte) debug_print_init::c#2 c zp[1]:4 2969.1875 (byte) debug_print_init::col -(byte) debug_print_init::col#0 reg byte x 56.111111111111114 +(byte) debug_print_init::col#0 reg byte x 5556.111111111112 (byte) debug_print_init::i -(byte) debug_print_init::i#1 i zp[1]:5 16.5 -(byte) debug_print_init::i#2 i zp[1]:5 4.727272727272727 +(byte) debug_print_init::i#1 i zp[1]:5 1501.5 +(byte) debug_print_init::i#2 i zp[1]:5 454.7272727272727 (byte) debug_print_init::j -(byte) debug_print_init::j#1 reg byte y 151.5 -(byte) debug_print_init::j#2 reg byte y 55.54999999999999 +(byte) debug_print_init::j#1 reg byte y 15001.5 +(byte) debug_print_init::j#2 reg byte y 5500.550000000001 (const byte*) debug_print_init::str[(byte) 3] = (byte*) "sx" (const byte*) debug_print_init::str1[(byte) 3] = (byte*) "sy" (const byte*) debug_print_init::str10[(byte) 3] = (byte*) "xp" @@ -9390,8 +9419,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 200002.0 +(byte*) memset::dst#2 dst zp[2]:16 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -9414,26 +9443,26 @@ FINAL SYMBOL TABLE (const signed byte*) pp = (signed byte*) 243 (const signed byte*) pps[(number) 8] = { fill( 8, 0) } (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte y 4.0 -(byte~) print_byte_at::$2 reg byte x 2.0 +(byte~) print_byte_at::$0 reg byte a 2.00000002E8 +(byte~) print_byte_at::$2 reg byte y 1.00000001E8 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:14 1.0 +(byte*) print_byte_at::at#0 at zp[2]:14 3.50000005E7 (byte) print_byte_at::b -(byte) print_byte_at::b#0 reg byte x 1.0 +(byte) print_byte_at::b#0 b zp[1]:7 3.50000005E7 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:14 4.0 -(byte*) print_char_at::at#1 at zp[2]:14 4.0 -(byte*) print_char_at::at#2 at zp[2]:14 4.0 -(byte*) print_char_at::at#3 at zp[2]:14 2.0 -(byte*) print_char_at::at#4 at zp[2]:14 10.0 +(byte*) print_char_at::at#0 at zp[2]:14 2.0000002E7 +(byte*) print_char_at::at#1 at zp[2]:14 2.0000002E7 +(byte*) print_char_at::at#2 at zp[2]:14 2.00000002E8 +(byte*) print_char_at::at#3 at zp[2]:14 1.00000001E8 +(byte*) print_char_at::at#4 at zp[2]:14 1.220000005E9 (byte) print_char_at::ch -(byte) print_char_at::ch#2 reg byte y 2.0 -(byte) print_char_at::ch#3 reg byte y 4.0 -(byte) print_char_at::ch#4 reg byte y 6.0 +(byte) print_char_at::ch#2 reg byte x 1.00000001E8 +(byte) print_char_at::ch#3 reg byte x 2.00000002E8 +(byte) print_char_at::ch#4 reg byte x 1.200000003E9 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -9444,40 +9473,40 @@ FINAL SYMBOL TABLE (label) print_sbyte_at::@4 (label) print_sbyte_at::@return (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#1 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#15 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#16 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#17 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#18 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#19 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#2 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#20 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#21 at zp[2]:14 71.6666666666667 +(byte*) print_sbyte_at::at#0 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#1 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#15 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#16 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#17 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#18 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#19 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#2 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#20 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#21 at zp[2]:14 4000334.666666667 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 reg byte x 4.0 -(signed byte) print_sbyte_at::b#1 reg byte x 22.0 -(signed byte) print_sbyte_at::b#10 reg byte x 4.0 -(signed byte) print_sbyte_at::b#11 reg byte x 4.0 -(signed byte) print_sbyte_at::b#12 reg byte x 4.0 -(signed byte) print_sbyte_at::b#13 reg byte x 4.0 -(signed byte) print_sbyte_at::b#14 reg byte x 4.0 -(signed byte) print_sbyte_at::b#15 reg byte x 4.0 -(signed byte) print_sbyte_at::b#16 reg byte x 202.0 -(signed byte) print_sbyte_at::b#17 reg byte x 202.0 -(signed byte) print_sbyte_at::b#18 reg byte x 202.0 -(signed byte) print_sbyte_at::b#19 reg byte x 202.0 -(signed byte) print_sbyte_at::b#2 reg byte x 22.0 -(signed byte) print_sbyte_at::b#20 reg byte x 202.0 -(signed byte) print_sbyte_at::b#21 reg byte x 202.0 -(signed byte) print_sbyte_at::b#22 reg byte x 111.16666666666657 -(signed byte) print_sbyte_at::b#24 reg byte x 4.0 -(signed byte) print_sbyte_at::b#3 reg byte x 22.0 -(signed byte) print_sbyte_at::b#4 reg byte x 4.0 -(signed byte) print_sbyte_at::b#5 reg byte x 4.0 -(signed byte) print_sbyte_at::b#7 reg byte x 4.0 -(signed byte) print_sbyte_at::b#8 reg byte x 4.0 -(signed byte) print_sbyte_at::b#9 reg byte x 4.0 +(signed byte) print_sbyte_at::b#0 b zp[1]:7 2.0000002E7 +(signed byte) print_sbyte_at::b#1 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#10 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#11 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#12 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#13 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#14 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#15 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#16 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#17 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#18 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#19 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#2 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#20 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#21 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#22 b zp[1]:7 6018837.166666667 +(signed byte) print_sbyte_at::b#24 b zp[1]:7 2.0000002E7 +(signed byte) print_sbyte_at::b#3 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#4 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#5 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#7 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#8 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#9 b zp[1]:7 20002.0 (byte*) print_screen (const byte*) print_screen#0 print_screen = (byte*) 1024 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) @@ -9485,41 +9514,41 @@ FINAL SYMBOL TABLE (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#0 at zp[2]:16 11.0 -(byte*) print_str_at::at#13 at zp[2]:16 11.666666666666666 -(byte*) print_str_at::at#15 at zp[2]:16 2.0 +(byte*) print_str_at::at#0 at zp[2]:16 10001.0 +(byte*) print_str_at::at#13 at zp[2]:16 10334.666666666666 +(byte*) print_str_at::at#15 at zp[2]:16 1001.0 (byte*) print_str_at::str -(byte*) print_str_at::str#0 str zp[2]:14 22.0 -(byte*) print_str_at::str#13 str zp[2]:14 11.5 -(byte*) print_str_at::str#15 str zp[2]:14 2.0 +(byte*) print_str_at::str#0 str zp[2]:14 20002.0 +(byte*) print_str_at::str#13 str zp[2]:14 10251.25 +(byte*) print_str_at::str#15 str zp[2]:14 1001.0 (const word*) psp1 = (word*) 246 (const word*) psp2 = (word*) 248 (void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z) (label) rotate_matrix::@return (signed byte) rotate_matrix::x -(signed byte) rotate_matrix::x#0 reg byte x 34.33333333333333 +(signed byte) rotate_matrix::x#0 reg byte x 36667.33333333333 (signed byte) rotate_matrix::y -(signed byte) rotate_matrix::y#0 y zp[1]:6 34.33333333333333 +(signed byte) rotate_matrix::y#0 y zp[1]:6 36667.33333333333 (signed byte) rotate_matrix::z -(signed byte) rotate_matrix::z#0 z zp[1]:5 34.33333333333333 +(signed byte) rotate_matrix::z#0 z zp[1]:7 36667.33333333333 (const signed byte*) rotation_matrix[(number) 9] = { fill( 9, 0) } (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return (const byte*) sprites_init::SCREEN = (byte*) 1024 (byte) sprites_init::i -(byte) sprites_init::i#1 reg byte x 16.5 -(byte) sprites_init::i#2 reg byte x 14.666666666666666 +(byte) sprites_init::i#1 reg byte x 1501.5 +(byte) sprites_init::i#2 reg byte x 1334.6666666666667 (byte*) sprites_init::sprites_ptr (const byte*) sprites_init::sprites_ptr#0 sprites_ptr = (const byte*) sprites_init::SCREEN+(word) $3f8 (void()) store_matrix() (label) store_matrix::@return (signed byte) sx -(signed byte) sx#10 sx zp[1]:2 0.38888888888888884 -(signed byte) sx#3 sx zp[1]:2 11.0 +(signed byte) sx#10 sx zp[1]:2 144.48888888888888 +(signed byte) sx#3 sx zp[1]:2 1001.0 (signed byte) sy -(signed byte) sy#10 sy zp[1]:3 0.3846153846153846 -(signed byte) sy#3 sy zp[1]:3 22.0 +(signed byte) sy#10 sy zp[1]:3 142.90109890109892 +(signed byte) sy#3 sy zp[1]:3 2002.0 (const signed byte) sz = (signed byte) 0 (const signed byte*) xp = (signed byte*) 244 (const signed byte*) xps[(number) 8] = { fill( 8, 0) } @@ -9537,8 +9566,7 @@ FINAL SYMBOL TABLE zp[1]:2 [ sx#10 sx#3 ] zp[1]:3 [ sy#10 sy#3 calculate_matrix::sy#0 ] -reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] -reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] zp[1]:4 [ debug_print_init::c#2 debug_print_init::c#1 anim::i#2 anim::i#1 ] reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] reg byte x [ sprites_init::i#2 sprites_init::i#1 ] @@ -9547,23 +9575,22 @@ reg byte x [ rotate_matrix::x#0 ] reg byte x [ anim::i2#0 ] reg byte a [ anim::$10 ] reg byte a [ anim::$12 ] -reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] -reg byte x [ print_byte_at::b#0 ] -reg byte y [ print_byte_at::$0 ] -reg byte x [ print_byte_at::$2 ] -zp[1]:5 [ calculate_matrix::t1#0 rotate_matrix::z#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] +reg byte a [ debug_print::print_sbyte_pos1_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos2_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos4_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos5_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos6_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos7_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos8_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos9_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos10_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos11_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos12_sb#0 ] +reg byte a [ print_byte_at::$0 ] +reg byte y [ print_byte_at::$2 ] +zp[1]:5 [ calculate_matrix::t1#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] zp[1]:6 [ calculate_matrix::t2#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] -zp[1]:7 [ calculate_matrix::t3#0 ] +zp[1]:7 [ calculate_matrix::t3#0 rotate_matrix::z#0 print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 print_byte_at::b#0 ] zp[1]:8 [ calculate_matrix::t4#0 ] zp[1]:9 [ calculate_matrix::t5#0 ] zp[1]:10 [ calculate_matrix::t6#0 ] @@ -9609,7 +9636,7 @@ zp[2]:30 [ debug_print_init::$65 ] FINAL ASSEMBLER -Score: 66046 +Score: 67977 // File Comments // 3D Rotation using a Rotation Matrix @@ -9880,11 +9907,12 @@ debug_print: { .label c = 5 .label i = 6 // print_sbyte_pos(sx, 0, 37) - // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 - ldx.z sx + // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsaa=vbsz1 + lda.z sx // debug_print::print_sbyte_pos1 // print_sbyte_at(sb, print_screen+row*40+col) - // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [49] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9896,11 +9924,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@2 // print_sbyte_pos(sy, 1, 37) - // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 - ldx.z sy + // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 + lda.z sy // debug_print::print_sbyte_pos2 // print_sbyte_at(sb, print_screen+row*40+col) - // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [52] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9920,16 +9949,18 @@ debug_print: { sta.z print_sbyte_at.at lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta.z print_sbyte_at.at+1 - // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 - ldx #sz + // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 + lda #sz + sta.z print_sbyte_at.b jsr print_sbyte_at // debug_print::@3 // print_sbyte_pos(rotation_matrix[0], 4, 29) - // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix + // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix) -- vbsaa=_deref_pbsc1 + lda rotation_matrix // debug_print::print_sbyte_pos4 // print_sbyte_at(sb, print_screen+row*40+col) - // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [57] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9941,11 +9972,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@4 // print_sbyte_pos(rotation_matrix[1], 4, 33) - // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 1) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+1 + // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 1) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+1 // debug_print::print_sbyte_pos5 // print_sbyte_at(sb, print_screen+row*40+col) - // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [60] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9957,11 +9989,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@5 // print_sbyte_pos(rotation_matrix[2], 4, 37) - // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 2) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+2 + // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 2) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+2 // debug_print::print_sbyte_pos6 // print_sbyte_at(sb, print_screen+row*40+col) - // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [63] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9973,11 +10006,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@6 // print_sbyte_pos(rotation_matrix[3], 5, 29) - // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 3) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+3 + // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 3) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+3 // debug_print::print_sbyte_pos7 // print_sbyte_at(sb, print_screen+row*40+col) - // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [66] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -9989,11 +10023,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@7 // print_sbyte_pos(rotation_matrix[4], 5, 33) - // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 4) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+4 + // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 4) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+4 // debug_print::print_sbyte_pos8 // print_sbyte_at(sb, print_screen+row*40+col) - // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [69] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -10005,11 +10040,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@8 // print_sbyte_pos(rotation_matrix[5], 5, 37) - // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 5) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+5 + // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 5) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+5 // debug_print::print_sbyte_pos9 // print_sbyte_at(sb, print_screen+row*40+col) - // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [72] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -10021,11 +10057,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@9 // print_sbyte_pos(rotation_matrix[6], 6, 29) - // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 6) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+6 + // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 6) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+6 // debug_print::print_sbyte_pos10 // print_sbyte_at(sb, print_screen+row*40+col) - // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [75] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -10037,11 +10074,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@10 // print_sbyte_pos(rotation_matrix[7], 6, 33) - // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 7) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+7 + // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 7) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+7 // debug_print::print_sbyte_pos11 // print_sbyte_at(sb, print_screen+row*40+col) - // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [78] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -10053,11 +10091,12 @@ debug_print: { jsr print_sbyte_at // debug_print::@11 // print_sbyte_pos(rotation_matrix[8], 6, 37) - // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 8) -- vbsxx=_deref_pbsc1 - ldx rotation_matrix+8 + // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 8) -- vbsaa=_deref_pbsc1 + lda rotation_matrix+8 // debug_print::print_sbyte_pos12 // print_sbyte_at(sb, print_screen+row*40+col) - // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsaa + sta.z print_sbyte_at.b // [81] call print_sbyte_at // [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 @@ -10088,9 +10127,10 @@ debug_print: { lda #>at_line adc #0 sta.z print_sbyte_at.at+1 - // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xrs,y + lda xrs,y + sta.z print_sbyte_at.b // [85] call print_sbyte_at // [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy @@ -10106,9 +10146,10 @@ debug_print: { lda #>at_line+$28*1 adc #0 sta.z print_sbyte_at.at+1 - // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx yrs,y + lda yrs,y + sta.z print_sbyte_at.b // [88] call print_sbyte_at // [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy @@ -10124,9 +10165,10 @@ debug_print: { lda #>at_line+$28*2 adc #0 sta.z print_sbyte_at.at+1 - // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx zrs,y + lda zrs,y + sta.z print_sbyte_at.b // [91] call print_sbyte_at // [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy @@ -10142,9 +10184,10 @@ debug_print: { lda #>at_line+$28*3 adc #0 sta.z print_sbyte_at.at+1 - // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx pps,y + lda pps,y + sta.z print_sbyte_at.b // [94] call print_sbyte_at // [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy @@ -10160,9 +10203,10 @@ debug_print: { lda #>at_line+$28*4 adc #0 sta.z print_sbyte_at.at+1 - // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xps,y + lda xps,y + sta.z print_sbyte_at.b // [97] call print_sbyte_at // [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy @@ -10178,9 +10222,10 @@ debug_print: { lda #>at_line+$28*5 adc #0 sta.z print_sbyte_at.at+1 - // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx yps,y + lda yps,y + sta.z print_sbyte_at.b // [100] call print_sbyte_at // [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy @@ -10208,12 +10253,13 @@ debug_print: { } // print_sbyte_at // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte register(X) b, byte* zp($e) at) +// print_sbyte_at(signed byte zp(7) b, byte* zp($e) at) print_sbyte_at: { + .label b = 7 .label at = $e // if(b<0) - // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 - cpx #0 + // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + lda.z b bmi __b1 // print_sbyte_at::@3 // print_char_at(' ', at) @@ -10221,8 +10267,8 @@ print_sbyte_at: { // [108] call print_char_at // [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 - ldy #' ' + // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuxx=vbuc1 + ldx #' ' jsr print_char_at // [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] // [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy @@ -10248,27 +10294,27 @@ print_sbyte_at: { // [115] call print_char_at // [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 - ldy #'-' + // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuxx=vbuc1 + ldx #'-' jsr print_char_at // print_sbyte_at::@4 // b = -b - // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx - txa + // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 + lda.z b eor #$ff clc adc #1 - tax + sta.z b jmp __b2 } // print_char_at // Print a single char -// print_char_at(byte register(Y) ch, byte* zp($e) at) +// print_char_at(byte register(X) ch, byte* zp($e) at) print_char_at: { .label at = $e // *(at) = ch - // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy - tya + // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (at),y // print_char_at::@return @@ -10278,21 +10324,21 @@ print_char_at: { } // print_byte_at // Print a byte as HEX at a specific position -// print_byte_at(byte register(X) b, byte* zp($e) at) +// print_byte_at(byte zp(7) b, byte* zp($e) at) print_byte_at: { + .label b = 7 .label at = $e // b>>4 - // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 - txa + // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda.z b lsr lsr lsr lsr - tay // print_char_at(print_hextab[b>>4], at) - // [121] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy - lda print_hextab,y + // [121] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa tay + ldx print_hextab,y // [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 // [123] call print_char_at // Table of hexadecimal digits @@ -10302,17 +10348,18 @@ print_byte_at: { jsr print_char_at // print_byte_at::@1 // b&$f - // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 lda #$f - axs #0 + and.z b + tay // print_char_at(print_hextab[b&$f], at+1) // [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc.z print_char_at.at bne !+ inc.z print_char_at.at+1 !: - // [126] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx - ldy print_hextab,x + // [126] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y // [127] call print_char_at // [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy @@ -10328,10 +10375,10 @@ print_byte_at: { // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. // Implemented in assembler to utilize seriously fast multiplication -// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(5) z) +// rotate_matrix(signed byte register(X) x, signed byte zp(6) y, signed byte zp(7) z) rotate_matrix: { .label y = 6 - .label z = 5 + .label z = 7 // *xr = x // [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx txa @@ -10958,9 +11005,10 @@ debug_print_init: { lda #>at_line adc #0 sta.z print_sbyte_at.at+1 - // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx xs,y + lda xs,y + sta.z print_sbyte_at.b // [210] call print_sbyte_at // [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy @@ -10976,9 +11024,10 @@ debug_print_init: { lda #>at_line+$28*1 adc #0 sta.z print_sbyte_at.at+1 - // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx ys,y + lda ys,y + sta.z print_sbyte_at.b // [213] call print_sbyte_at // [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy @@ -10994,9 +11043,10 @@ debug_print_init: { lda #>at_line+$28*2 adc #0 sta.z print_sbyte_at.at+1 - // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy.z i - ldx zs,y + lda zs,y + sta.z print_sbyte_at.b // [216] call print_sbyte_at // [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy diff --git a/src/test/ref/examples/3d/3d.sym b/src/test/ref/examples/3d/3d.sym index eb9d65442..1776018ff 100644 --- a/src/test/ref/examples/3d/3d.sym +++ b/src/test/ref/examples/3d/3d.sym @@ -52,8 +52,8 @@ (const byte*) SPRITES_XPOS = (byte*) 53248 (const byte*) SPRITES_YPOS = (byte*) 53249 (void()) anim() -(byte~) anim::$10 reg byte a 202.0 -(byte~) anim::$12 reg byte a 202.0 +(byte~) anim::$10 reg byte a 20002.0 +(byte~) anim::$12 reg byte a 20002.0 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -65,62 +65,62 @@ (label) anim::@8 (label) anim::@9 (byte) anim::i -(byte) anim::i#1 i zp[1]:4 151.5 -(byte) anim::i#2 i zp[1]:4 71.29411764705881 +(byte) anim::i#1 i zp[1]:4 15001.5 +(byte) anim::i#2 i zp[1]:4 7059.529411764704 (byte) anim::i2 -(byte) anim::i2#0 reg byte x 75.75 +(byte) anim::i2#0 reg byte x 7500.75 (void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz) -(signed byte~) calculate_matrix::$10 reg byte a 4.0 -(signed byte~) calculate_matrix::$11 reg byte a 4.0 -(signed byte~) calculate_matrix::$12 reg byte a 4.0 -(signed byte~) calculate_matrix::$13 reg byte a 4.0 -(signed byte~) calculate_matrix::$14 reg byte a 4.0 -(signed byte~) calculate_matrix::$15 reg byte a 4.0 -(signed byte~) calculate_matrix::$16 reg byte a 4.0 -(signed byte~) calculate_matrix::$17 reg byte a 4.0 -(signed byte~) calculate_matrix::$18 reg byte a 4.0 -(signed byte~) calculate_matrix::$19 reg byte a 4.0 -(signed byte~) calculate_matrix::$20 reg byte a 4.0 -(signed byte~) calculate_matrix::$21 reg byte a 4.0 -(signed byte~) calculate_matrix::$22 reg byte a 4.0 -(signed byte~) calculate_matrix::$23 reg byte a 4.0 -(signed byte~) calculate_matrix::$24 reg byte a 4.0 -(signed byte~) calculate_matrix::$25 reg byte a 4.0 -(signed byte~) calculate_matrix::$26 reg byte a 4.0 -(signed byte~) calculate_matrix::$27 reg byte a 4.0 -(signed byte~) calculate_matrix::$28 reg byte a 4.0 -(signed byte~) calculate_matrix::$29 reg byte a 4.0 -(signed byte~) calculate_matrix::$30 reg byte a 4.0 -(signed byte~) calculate_matrix::$31 reg byte a 4.0 -(signed byte~) calculate_matrix::$32 reg byte a 4.0 -(signed byte~) calculate_matrix::$33 reg byte a 4.0 -(signed byte~) calculate_matrix::$34 reg byte a 4.0 +(signed byte~) calculate_matrix::$10 reg byte a 20002.0 +(signed byte~) calculate_matrix::$11 reg byte a 20002.0 +(signed byte~) calculate_matrix::$12 reg byte a 20002.0 +(signed byte~) calculate_matrix::$13 reg byte a 20002.0 +(signed byte~) calculate_matrix::$14 reg byte a 20002.0 +(signed byte~) calculate_matrix::$15 reg byte a 20002.0 +(signed byte~) calculate_matrix::$16 reg byte a 20002.0 +(signed byte~) calculate_matrix::$17 reg byte a 20002.0 +(signed byte~) calculate_matrix::$18 reg byte a 20002.0 +(signed byte~) calculate_matrix::$19 reg byte a 20002.0 +(signed byte~) calculate_matrix::$20 reg byte a 20002.0 +(signed byte~) calculate_matrix::$21 reg byte a 20002.0 +(signed byte~) calculate_matrix::$22 reg byte a 20002.0 +(signed byte~) calculate_matrix::$23 reg byte a 20002.0 +(signed byte~) calculate_matrix::$24 reg byte a 20002.0 +(signed byte~) calculate_matrix::$25 reg byte a 20002.0 +(signed byte~) calculate_matrix::$26 reg byte a 20002.0 +(signed byte~) calculate_matrix::$27 reg byte a 20002.0 +(signed byte~) calculate_matrix::$28 reg byte a 20002.0 +(signed byte~) calculate_matrix::$29 reg byte a 20002.0 +(signed byte~) calculate_matrix::$30 reg byte a 20002.0 +(signed byte~) calculate_matrix::$31 reg byte a 20002.0 +(signed byte~) calculate_matrix::$32 reg byte a 20002.0 +(signed byte~) calculate_matrix::$33 reg byte a 20002.0 +(signed byte~) calculate_matrix::$34 reg byte a 20002.0 (label) calculate_matrix::@return (signed byte) calculate_matrix::sx -(signed byte) calculate_matrix::sx#0 reg byte x 2.4545454545454546 +(signed byte) calculate_matrix::sx#0 reg byte x 7364.454545454545 (signed byte) calculate_matrix::sy -(signed byte) calculate_matrix::sy#0 sy zp[1]:3 1.5333333333333332 +(signed byte) calculate_matrix::sy#0 sy zp[1]:3 4067.133333333334 (signed byte) calculate_matrix::sz (signed byte) calculate_matrix::t1 -(signed byte) calculate_matrix::t1#0 t1 zp[1]:5 0.8333333333333333 +(signed byte) calculate_matrix::t1#0 t1 zp[1]:5 4167.083333333333 (signed byte) calculate_matrix::t10 -(signed byte) calculate_matrix::t10#0 reg byte x 0.18181818181818182 +(signed byte) calculate_matrix::t10#0 reg byte x 909.1818181818182 (signed byte) calculate_matrix::t2 -(signed byte) calculate_matrix::t2#0 t2 zp[1]:6 0.9090909090909092 +(signed byte) calculate_matrix::t2#0 t2 zp[1]:6 4545.909090909091 (signed byte) calculate_matrix::t3 -(signed byte) calculate_matrix::t3#0 t3 zp[1]:7 0.29411764705882354 +(signed byte) calculate_matrix::t3#0 t3 zp[1]:7 1470.7352941176468 (signed byte) calculate_matrix::t4 -(signed byte) calculate_matrix::t4#0 t4 zp[1]:8 0.30303030303030304 +(signed byte) calculate_matrix::t4#0 t4 zp[1]:8 1515.3030303030303 (signed byte) calculate_matrix::t5 -(signed byte) calculate_matrix::t5#0 t5 zp[1]:9 0.29411764705882354 +(signed byte) calculate_matrix::t5#0 t5 zp[1]:9 1470.7352941176468 (signed byte) calculate_matrix::t6 -(signed byte) calculate_matrix::t6#0 t6 zp[1]:10 0.3125 +(signed byte) calculate_matrix::t6#0 t6 zp[1]:10 1562.65625 (signed byte) calculate_matrix::t7 -(signed byte) calculate_matrix::t7#0 t7 zp[1]:11 0.30303030303030304 +(signed byte) calculate_matrix::t7#0 t7 zp[1]:11 1515.3030303030303 (signed byte) calculate_matrix::t8 -(signed byte) calculate_matrix::t8#0 t8 zp[1]:12 0.30303030303030304 +(signed byte) calculate_matrix::t8#0 t8 zp[1]:12 1515.3030303030303 (signed byte) calculate_matrix::t9 -(signed byte) calculate_matrix::t9#0 t9 zp[1]:13 0.1764705882352941 +(signed byte) calculate_matrix::t9#0 t9 zp[1]:13 882.4411764705882 (void()) debug_print() (label) debug_print::@1 (label) debug_print::@10 @@ -143,11 +143,11 @@ (byte*) debug_print::at_line (const byte*) debug_print::at_line#0 at_line = (const byte*) SCREEN+(word)(number) $13*(number) $28 (byte) debug_print::c -(byte) debug_print::c#1 c zp[1]:5 67.33333333333333 -(byte) debug_print::c#2 c zp[1]:5 42.52631578947369 +(byte) debug_print::c#1 c zp[1]:5 666667.3333333334 +(byte) debug_print::c#2 c zp[1]:5 421053.05263157893 (byte) debug_print::i -(byte) debug_print::i#1 i zp[1]:6 151.5 -(byte) debug_print::i#2 i zp[1]:6 40.4 +(byte) debug_print::i#1 i zp[1]:6 1500001.5 +(byte) debug_print::i#2 i zp[1]:6 400000.39999999997 (label) debug_print::print_sbyte_pos1 (label) debug_print::print_sbyte_pos10 (byte) debug_print::print_sbyte_pos10_col @@ -155,33 +155,33 @@ (byte) debug_print::print_sbyte_pos10_row (const byte) debug_print::print_sbyte_pos10_row#0 print_sbyte_pos10_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos10_sb -(signed byte) debug_print::print_sbyte_pos10_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos10_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos11 (byte) debug_print::print_sbyte_pos11_col (const byte) debug_print::print_sbyte_pos11_col#0 print_sbyte_pos11_col = (byte) $21 (byte) debug_print::print_sbyte_pos11_row (const byte) debug_print::print_sbyte_pos11_row#0 print_sbyte_pos11_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos11_sb -(signed byte) debug_print::print_sbyte_pos11_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos11_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos12 (byte) debug_print::print_sbyte_pos12_col (const byte) debug_print::print_sbyte_pos12_col#0 print_sbyte_pos12_col = (byte) $25 (byte) debug_print::print_sbyte_pos12_row (const byte) debug_print::print_sbyte_pos12_row#0 print_sbyte_pos12_row = (byte) 6 (signed byte) debug_print::print_sbyte_pos12_sb -(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte a 20002.0 (byte) debug_print::print_sbyte_pos1_col (const byte) debug_print::print_sbyte_pos1_col#0 print_sbyte_pos1_col = (byte) $25 (byte) debug_print::print_sbyte_pos1_row (signed byte) debug_print::print_sbyte_pos1_sb -(signed byte) debug_print::print_sbyte_pos1_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos1_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos2 (byte) debug_print::print_sbyte_pos2_col (const byte) debug_print::print_sbyte_pos2_col#0 print_sbyte_pos2_col = (byte) $25 (byte) debug_print::print_sbyte_pos2_row (const byte) debug_print::print_sbyte_pos2_row#0 print_sbyte_pos2_row = (byte) 1 (signed byte) debug_print::print_sbyte_pos2_sb -(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos3 (byte) debug_print::print_sbyte_pos3_col (const byte) debug_print::print_sbyte_pos3_col#0 print_sbyte_pos3_col = (byte) $25 @@ -194,52 +194,52 @@ (byte) debug_print::print_sbyte_pos4_row (const byte) debug_print::print_sbyte_pos4_row#0 print_sbyte_pos4_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos4_sb -(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos5 (byte) debug_print::print_sbyte_pos5_col (const byte) debug_print::print_sbyte_pos5_col#0 print_sbyte_pos5_col = (byte) $21 (byte) debug_print::print_sbyte_pos5_row (const byte) debug_print::print_sbyte_pos5_row#0 print_sbyte_pos5_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos5_sb -(signed byte) debug_print::print_sbyte_pos5_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos5_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos6 (byte) debug_print::print_sbyte_pos6_col (const byte) debug_print::print_sbyte_pos6_col#0 print_sbyte_pos6_col = (byte) $25 (byte) debug_print::print_sbyte_pos6_row (const byte) debug_print::print_sbyte_pos6_row#0 print_sbyte_pos6_row = (byte) 4 (signed byte) debug_print::print_sbyte_pos6_sb -(signed byte) debug_print::print_sbyte_pos6_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos6_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos7 (byte) debug_print::print_sbyte_pos7_col (const byte) debug_print::print_sbyte_pos7_col#0 print_sbyte_pos7_col = (byte) $1d (byte) debug_print::print_sbyte_pos7_row (const byte) debug_print::print_sbyte_pos7_row#0 print_sbyte_pos7_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos7_sb -(signed byte) debug_print::print_sbyte_pos7_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos7_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos8 (byte) debug_print::print_sbyte_pos8_col (const byte) debug_print::print_sbyte_pos8_col#0 print_sbyte_pos8_col = (byte) $21 (byte) debug_print::print_sbyte_pos8_row (const byte) debug_print::print_sbyte_pos8_row#0 print_sbyte_pos8_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos8_sb -(signed byte) debug_print::print_sbyte_pos8_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos8_sb#0 reg byte a 20002.0 (label) debug_print::print_sbyte_pos9 (byte) debug_print::print_sbyte_pos9_col (const byte) debug_print::print_sbyte_pos9_col#0 print_sbyte_pos9_col = (byte) $25 (byte) debug_print::print_sbyte_pos9_row (const byte) debug_print::print_sbyte_pos9_row#0 print_sbyte_pos9_row = (byte) 5 (signed byte) debug_print::print_sbyte_pos9_sb -(signed byte) debug_print::print_sbyte_pos9_sb#0 reg byte x 4.0 +(signed byte) debug_print::print_sbyte_pos9_sb#0 reg byte a 20002.0 (void()) debug_print_init() -(byte*~) debug_print_init::$41 zp[2]:14 202.0 -(byte*~) debug_print_init::$44 zp[2]:16 202.0 -(byte*~) debug_print_init::$47 zp[2]:18 202.0 -(byte*~) debug_print_init::$50 zp[2]:20 202.0 -(byte*~) debug_print_init::$53 zp[2]:22 202.0 -(byte*~) debug_print_init::$56 zp[2]:24 202.0 -(byte*~) debug_print_init::$59 zp[2]:26 202.0 -(byte*~) debug_print_init::$62 zp[2]:28 202.0 -(byte*~) debug_print_init::$65 zp[2]:30 202.0 +(byte*~) debug_print_init::$41 zp[2]:14 20002.0 +(byte*~) debug_print_init::$44 zp[2]:16 20002.0 +(byte*~) debug_print_init::$47 zp[2]:18 20002.0 +(byte*~) debug_print_init::$50 zp[2]:20 20002.0 +(byte*~) debug_print_init::$53 zp[2]:22 20002.0 +(byte*~) debug_print_init::$56 zp[2]:24 20002.0 +(byte*~) debug_print_init::$59 zp[2]:26 20002.0 +(byte*~) debug_print_init::$62 zp[2]:28 20002.0 +(byte*~) debug_print_init::$65 zp[2]:30 20002.0 (label) debug_print_init::@1 (label) debug_print_init::@10 (label) debug_print_init::@11 @@ -264,16 +264,16 @@ (byte*) debug_print_init::at_line (const byte*) debug_print_init::at_line#0 at_line = (const byte*) SCREEN+(word)(number) $10*(number) $28 (byte) debug_print_init::c -(byte) debug_print_init::c#1 c zp[1]:4 7.333333333333333 -(byte) debug_print_init::c#2 c zp[1]:4 30.125 +(byte) debug_print_init::c#1 c zp[1]:4 667.3333333333334 +(byte) debug_print_init::c#2 c zp[1]:4 2969.1875 (byte) debug_print_init::col -(byte) debug_print_init::col#0 reg byte x 56.111111111111114 +(byte) debug_print_init::col#0 reg byte x 5556.111111111112 (byte) debug_print_init::i -(byte) debug_print_init::i#1 i zp[1]:5 16.5 -(byte) debug_print_init::i#2 i zp[1]:5 4.727272727272727 +(byte) debug_print_init::i#1 i zp[1]:5 1501.5 +(byte) debug_print_init::i#2 i zp[1]:5 454.7272727272727 (byte) debug_print_init::j -(byte) debug_print_init::j#1 reg byte y 151.5 -(byte) debug_print_init::j#2 reg byte y 55.54999999999999 +(byte) debug_print_init::j#1 reg byte y 15001.5 +(byte) debug_print_init::j#2 reg byte y 5500.550000000001 (const byte*) debug_print_init::str[(byte) 3] = (byte*) "sx" (const byte*) debug_print_init::str1[(byte) 3] = (byte*) "sy" (const byte*) debug_print_init::str10[(byte) 3] = (byte*) "xp" @@ -297,8 +297,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 200002.0 +(byte*) memset::dst#2 dst zp[2]:16 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -321,26 +321,26 @@ (const signed byte*) pp = (signed byte*) 243 (const signed byte*) pps[(number) 8] = { fill( 8, 0) } (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte y 4.0 -(byte~) print_byte_at::$2 reg byte x 2.0 +(byte~) print_byte_at::$0 reg byte a 2.00000002E8 +(byte~) print_byte_at::$2 reg byte y 1.00000001E8 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:14 1.0 +(byte*) print_byte_at::at#0 at zp[2]:14 3.50000005E7 (byte) print_byte_at::b -(byte) print_byte_at::b#0 reg byte x 1.0 +(byte) print_byte_at::b#0 b zp[1]:7 3.50000005E7 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:14 4.0 -(byte*) print_char_at::at#1 at zp[2]:14 4.0 -(byte*) print_char_at::at#2 at zp[2]:14 4.0 -(byte*) print_char_at::at#3 at zp[2]:14 2.0 -(byte*) print_char_at::at#4 at zp[2]:14 10.0 +(byte*) print_char_at::at#0 at zp[2]:14 2.0000002E7 +(byte*) print_char_at::at#1 at zp[2]:14 2.0000002E7 +(byte*) print_char_at::at#2 at zp[2]:14 2.00000002E8 +(byte*) print_char_at::at#3 at zp[2]:14 1.00000001E8 +(byte*) print_char_at::at#4 at zp[2]:14 1.220000005E9 (byte) print_char_at::ch -(byte) print_char_at::ch#2 reg byte y 2.0 -(byte) print_char_at::ch#3 reg byte y 4.0 -(byte) print_char_at::ch#4 reg byte y 6.0 +(byte) print_char_at::ch#2 reg byte x 1.00000001E8 +(byte) print_char_at::ch#3 reg byte x 2.00000002E8 +(byte) print_char_at::ch#4 reg byte x 1.200000003E9 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -351,40 +351,40 @@ (label) print_sbyte_at::@4 (label) print_sbyte_at::@return (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#1 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#15 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#16 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#17 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#18 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#19 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#2 at zp[2]:14 11.0 -(byte*) print_sbyte_at::at#20 at zp[2]:14 101.0 -(byte*) print_sbyte_at::at#21 at zp[2]:14 71.6666666666667 +(byte*) print_sbyte_at::at#0 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#1 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#15 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#16 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#17 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#18 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#19 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#2 at zp[2]:14 1001.0 +(byte*) print_sbyte_at::at#20 at zp[2]:14 1000001.0 +(byte*) print_sbyte_at::at#21 at zp[2]:14 4000334.666666667 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 reg byte x 4.0 -(signed byte) print_sbyte_at::b#1 reg byte x 22.0 -(signed byte) print_sbyte_at::b#10 reg byte x 4.0 -(signed byte) print_sbyte_at::b#11 reg byte x 4.0 -(signed byte) print_sbyte_at::b#12 reg byte x 4.0 -(signed byte) print_sbyte_at::b#13 reg byte x 4.0 -(signed byte) print_sbyte_at::b#14 reg byte x 4.0 -(signed byte) print_sbyte_at::b#15 reg byte x 4.0 -(signed byte) print_sbyte_at::b#16 reg byte x 202.0 -(signed byte) print_sbyte_at::b#17 reg byte x 202.0 -(signed byte) print_sbyte_at::b#18 reg byte x 202.0 -(signed byte) print_sbyte_at::b#19 reg byte x 202.0 -(signed byte) print_sbyte_at::b#2 reg byte x 22.0 -(signed byte) print_sbyte_at::b#20 reg byte x 202.0 -(signed byte) print_sbyte_at::b#21 reg byte x 202.0 -(signed byte) print_sbyte_at::b#22 reg byte x 111.16666666666657 -(signed byte) print_sbyte_at::b#24 reg byte x 4.0 -(signed byte) print_sbyte_at::b#3 reg byte x 22.0 -(signed byte) print_sbyte_at::b#4 reg byte x 4.0 -(signed byte) print_sbyte_at::b#5 reg byte x 4.0 -(signed byte) print_sbyte_at::b#7 reg byte x 4.0 -(signed byte) print_sbyte_at::b#8 reg byte x 4.0 -(signed byte) print_sbyte_at::b#9 reg byte x 4.0 +(signed byte) print_sbyte_at::b#0 b zp[1]:7 2.0000002E7 +(signed byte) print_sbyte_at::b#1 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#10 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#11 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#12 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#13 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#14 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#15 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#16 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#17 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#18 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#19 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#2 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#20 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#21 b zp[1]:7 2000002.0 +(signed byte) print_sbyte_at::b#22 b zp[1]:7 6018837.166666667 +(signed byte) print_sbyte_at::b#24 b zp[1]:7 2.0000002E7 +(signed byte) print_sbyte_at::b#3 b zp[1]:7 2002.0 +(signed byte) print_sbyte_at::b#4 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#5 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#7 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#8 b zp[1]:7 20002.0 +(signed byte) print_sbyte_at::b#9 b zp[1]:7 20002.0 (byte*) print_screen (const byte*) print_screen#0 print_screen = (byte*) 1024 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) @@ -392,41 +392,41 @@ (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#0 at zp[2]:16 11.0 -(byte*) print_str_at::at#13 at zp[2]:16 11.666666666666666 -(byte*) print_str_at::at#15 at zp[2]:16 2.0 +(byte*) print_str_at::at#0 at zp[2]:16 10001.0 +(byte*) print_str_at::at#13 at zp[2]:16 10334.666666666666 +(byte*) print_str_at::at#15 at zp[2]:16 1001.0 (byte*) print_str_at::str -(byte*) print_str_at::str#0 str zp[2]:14 22.0 -(byte*) print_str_at::str#13 str zp[2]:14 11.5 -(byte*) print_str_at::str#15 str zp[2]:14 2.0 +(byte*) print_str_at::str#0 str zp[2]:14 20002.0 +(byte*) print_str_at::str#13 str zp[2]:14 10251.25 +(byte*) print_str_at::str#15 str zp[2]:14 1001.0 (const word*) psp1 = (word*) 246 (const word*) psp2 = (word*) 248 (void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z) (label) rotate_matrix::@return (signed byte) rotate_matrix::x -(signed byte) rotate_matrix::x#0 reg byte x 34.33333333333333 +(signed byte) rotate_matrix::x#0 reg byte x 36667.33333333333 (signed byte) rotate_matrix::y -(signed byte) rotate_matrix::y#0 y zp[1]:6 34.33333333333333 +(signed byte) rotate_matrix::y#0 y zp[1]:6 36667.33333333333 (signed byte) rotate_matrix::z -(signed byte) rotate_matrix::z#0 z zp[1]:5 34.33333333333333 +(signed byte) rotate_matrix::z#0 z zp[1]:7 36667.33333333333 (const signed byte*) rotation_matrix[(number) 9] = { fill( 9, 0) } (void()) sprites_init() (label) sprites_init::@1 (label) sprites_init::@return (const byte*) sprites_init::SCREEN = (byte*) 1024 (byte) sprites_init::i -(byte) sprites_init::i#1 reg byte x 16.5 -(byte) sprites_init::i#2 reg byte x 14.666666666666666 +(byte) sprites_init::i#1 reg byte x 1501.5 +(byte) sprites_init::i#2 reg byte x 1334.6666666666667 (byte*) sprites_init::sprites_ptr (const byte*) sprites_init::sprites_ptr#0 sprites_ptr = (const byte*) sprites_init::SCREEN+(word) $3f8 (void()) store_matrix() (label) store_matrix::@return (signed byte) sx -(signed byte) sx#10 sx zp[1]:2 0.38888888888888884 -(signed byte) sx#3 sx zp[1]:2 11.0 +(signed byte) sx#10 sx zp[1]:2 144.48888888888888 +(signed byte) sx#3 sx zp[1]:2 1001.0 (signed byte) sy -(signed byte) sy#10 sy zp[1]:3 0.3846153846153846 -(signed byte) sy#3 sy zp[1]:3 22.0 +(signed byte) sy#10 sy zp[1]:3 142.90109890109892 +(signed byte) sy#3 sy zp[1]:3 2002.0 (const signed byte) sz = (signed byte) 0 (const signed byte*) xp = (signed byte*) 244 (const signed byte*) xps[(number) 8] = { fill( 8, 0) } @@ -444,8 +444,7 @@ zp[1]:2 [ sx#10 sx#3 ] zp[1]:3 [ sy#10 sy#3 calculate_matrix::sy#0 ] -reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] -reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] zp[1]:4 [ debug_print_init::c#2 debug_print_init::c#1 anim::i#2 anim::i#1 ] reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] reg byte x [ sprites_init::i#2 sprites_init::i#1 ] @@ -454,23 +453,22 @@ reg byte x [ rotate_matrix::x#0 ] reg byte x [ anim::i2#0 ] reg byte a [ anim::$10 ] reg byte a [ anim::$12 ] -reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] -reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] -reg byte x [ print_byte_at::b#0 ] -reg byte y [ print_byte_at::$0 ] -reg byte x [ print_byte_at::$2 ] -zp[1]:5 [ calculate_matrix::t1#0 rotate_matrix::z#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] +reg byte a [ debug_print::print_sbyte_pos1_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos2_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos4_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos5_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos6_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos7_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos8_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos9_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos10_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos11_sb#0 ] +reg byte a [ debug_print::print_sbyte_pos12_sb#0 ] +reg byte a [ print_byte_at::$0 ] +reg byte y [ print_byte_at::$2 ] +zp[1]:5 [ calculate_matrix::t1#0 debug_print_init::i#2 debug_print_init::i#1 debug_print::c#2 debug_print::c#1 ] zp[1]:6 [ calculate_matrix::t2#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] -zp[1]:7 [ calculate_matrix::t3#0 ] +zp[1]:7 [ calculate_matrix::t3#0 rotate_matrix::z#0 print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 print_byte_at::b#0 ] zp[1]:8 [ calculate_matrix::t4#0 ] zp[1]:9 [ calculate_matrix::t5#0 ] zp[1]:10 [ calculate_matrix::t6#0 ] diff --git a/src/test/ref/examples/3d/perspective.log b/src/test/ref/examples/3d/perspective.log index ceebaed32..14ecb8fe4 100644 --- a/src/test/ref/examples/3d/perspective.log +++ b/src/test/ref/examples/3d/perspective.log @@ -972,60 +972,60 @@ Inferred type updated to byte in (unumber~) mulf_init::$5 ← (byte) 1 - (byte) Inferred type updated to byte in (unumber~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#73 (byte*) print_screen#5 -Alias (byte*) print_str::str#7 = (byte*) print_str::str#8 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#64 (byte*) print_char_cursor#34 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#3 (byte*) print_line_cursor#13 (byte*) print_char_cursor#36 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#66 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#67 -Alias (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#9 (signed byte) print_sbyte::b#8 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#5 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#40 (byte*) print_char_cursor#8 -Alias (byte) print_byte::b#3 = (byte) print_byte::b#4 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#43 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#14 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#46 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#25 -Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#76 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#49 (byte*) print_char_cursor#18 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#17 (byte*) print_line_cursor#7 -Alias (signed byte) do_perspective::x#1 = (signed byte) do_perspective::x#3 (signed byte) do_perspective::x#8 (signed byte) do_perspective::x#7 (signed byte) do_perspective::x#6 (signed byte) do_perspective::x#5 (signed byte) do_perspective::x#4 (signed byte) do_perspective::x#2 -Alias (signed byte) do_perspective::y#1 = (signed byte) do_perspective::y#5 (signed byte) do_perspective::y#7 (signed byte) do_perspective::y#3 (signed byte) do_perspective::y#8 (signed byte) do_perspective::y#6 (signed byte) do_perspective::y#4 (signed byte) do_perspective::y#2 -Alias (signed byte) do_perspective::z#1 = (signed byte) do_perspective::z#7 (signed byte) do_perspective::z#8 (signed byte) do_perspective::z#6 (signed byte) do_perspective::z#5 (signed byte) do_perspective::z#3 (signed byte) do_perspective::z#4 (signed byte) do_perspective::z#2 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#35 (byte*) print_line_cursor#34 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#30 (byte*) print_line_cursor#29 (byte*) print_line_cursor#28 (byte*) print_line_cursor#27 (byte*) print_line_cursor#26 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#72 -Alias (byte) print_byte::b#1 = (byte~) do_perspective::$8 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#58 -Alias (byte) print_byte::b#2 = (byte~) do_perspective::$11 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#60 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#19 (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#62 (byte*) print_char_cursor#31 -Alias (byte) mulf_init::val#0 = (byte~) mulf_init::$0 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#63 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#24 print_char_cursor#73 print_screen#5 +Alias print_str::str#7 = print_str::str#8 +Alias print_char_cursor#2 = print_char_cursor#33 print_char_cursor#64 print_char_cursor#34 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#12 print_char_cursor#3 print_line_cursor#13 print_char_cursor#36 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#66 = print_char_cursor#75 print_char_cursor#67 +Alias print_sbyte::b#4 = print_sbyte::b#7 print_sbyte::b#5 print_sbyte::b#9 print_sbyte::b#8 +Alias print_char_cursor#37 = print_char_cursor#5 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#38 = print_char_cursor#6 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#39 = print_char_cursor#7 print_char_cursor#40 print_char_cursor#8 +Alias print_byte::b#3 = print_byte::b#4 +Alias print_char_cursor#41 = print_char_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#42 print_char_cursor#43 print_char_cursor#11 +Alias print_char_cursor#12 = print_char_cursor#45 print_char_cursor#13 +Alias print_line_cursor#14 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#14 print_char_cursor#46 print_line_cursor#4 print_char_cursor#15 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#22 = print_line_cursor#25 +Alias print_char_cursor#70 = print_char_cursor#76 +Alias print_line_cursor#15 = print_line_cursor#5 +Alias print_char_cursor#16 = print_char_cursor#47 +Alias print_char_cursor#17 = print_char_cursor#48 print_char_cursor#49 print_char_cursor#18 +Alias print_line_cursor#16 = print_line_cursor#6 print_line_cursor#17 print_line_cursor#7 +Alias do_perspective::x#1 = do_perspective::x#3 do_perspective::x#8 do_perspective::x#7 do_perspective::x#6 do_perspective::x#5 do_perspective::x#4 do_perspective::x#2 +Alias do_perspective::y#1 = do_perspective::y#5 do_perspective::y#7 do_perspective::y#3 do_perspective::y#8 do_perspective::y#6 do_perspective::y#4 do_perspective::y#2 +Alias do_perspective::z#1 = do_perspective::z#7 do_perspective::z#8 do_perspective::z#6 do_perspective::z#5 do_perspective::z#3 do_perspective::z#4 do_perspective::z#2 +Alias print_line_cursor#23 = print_line_cursor#36 print_line_cursor#37 print_line_cursor#35 print_line_cursor#34 print_line_cursor#33 print_line_cursor#32 print_line_cursor#31 print_line_cursor#30 print_line_cursor#29 print_line_cursor#28 print_line_cursor#27 print_line_cursor#26 +Alias print_char_cursor#19 = print_char_cursor#50 +Alias print_char_cursor#20 = print_char_cursor#51 +Alias print_char_cursor#21 = print_char_cursor#52 +Alias print_char_cursor#22 = print_char_cursor#53 +Alias print_char_cursor#23 = print_char_cursor#54 +Alias print_char_cursor#24 = print_char_cursor#55 +Alias print_char_cursor#25 = print_char_cursor#56 print_char_cursor#72 +Alias print_byte::b#1 = do_perspective::$8 +Alias print_char_cursor#26 = print_char_cursor#57 +Alias print_char_cursor#27 = print_char_cursor#58 +Alias print_byte::b#2 = do_perspective::$11 +Alias print_char_cursor#28 = print_char_cursor#59 +Alias print_char_cursor#29 = print_char_cursor#60 +Alias print_line_cursor#18 = print_line_cursor#8 print_line_cursor#19 print_line_cursor#9 +Alias print_char_cursor#30 = print_char_cursor#61 print_char_cursor#62 print_char_cursor#31 +Alias mulf_init::val#0 = mulf_init::$0 +Alias print_line_cursor#10 = print_line_cursor#20 +Alias print_char_cursor#32 = print_char_cursor#63 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1135,7 +1135,7 @@ Simplifying constant integer cast $81 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $81 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) mulf_init::$2 = (byte~) mulf_init::$1 +Alias mulf_init::$2 = mulf_init::$1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -1188,7 +1188,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(mulf_sqr2+1 + mulf_init::$3) Consolidated array index constant in assignment *(mulf_sqr2+$100+1 + mulf_init::$4) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) mulf_init::i#2 = (byte~) mulf_init::$3 (byte~) mulf_init::$4 +Alias mulf_init::i#2 = mulf_init::$3 mulf_init::$4 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting mulf_init::@3(between mulf_init::@1 and mulf_init::@1) @@ -1537,67 +1537,67 @@ VARIABLE REGISTER WEIGHTS (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) mulf_init() -(byte~) mulf_init::$2 16.5 -(byte~) mulf_init::$5 22.0 -(byte~) mulf_init::$6 22.0 +(byte~) mulf_init::$2 1501.5 +(byte~) mulf_init::$5 2002.0 +(byte~) mulf_init::$6 2002.0 (signed word) mulf_init::add -(signed word) mulf_init::add#1 7.333333333333333 -(signed word) mulf_init::add#2 2.357142857142857 +(signed word) mulf_init::add#1 667.3333333333334 +(signed word) mulf_init::add#2 214.5 (byte) mulf_init::i -(byte) mulf_init::i#1 16.5 -(byte) mulf_init::i#2 6.6 +(byte) mulf_init::i#1 1501.5 +(byte) mulf_init::i#2 600.6 (signed word) mulf_init::sqr -(signed word) mulf_init::sqr#1 5.5 -(signed word) mulf_init::sqr#2 2.5384615384615383 +(signed word) mulf_init::sqr#1 500.5 +(signed word) mulf_init::sqr#2 231.0 (byte) mulf_init::val -(byte) mulf_init::val#0 9.0 +(byte) mulf_init::val#0 819.0 (void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z) (signed byte) perspective::x (signed byte) perspective::y (signed byte) perspective::z (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#3 2.5 -(byte) print_byte::b#5 4.0 -(byte) print_byte::b#6 4.0 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#3 5301.25 +(byte) print_byte::b#5 202.0 +(byte) print_byte::b#6 202.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 20002.0 +(byte) print_char::ch#3 20002.0 +(byte) print_char::ch#4 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#12 0.6666666666666666 -(byte*) print_char_cursor#2 2.076923076923077 -(byte*) print_char_cursor#44 6.0 -(byte*) print_char_cursor#69 2.6666666666666665 -(byte*) print_char_cursor#74 12.0 +(byte*) print_char_cursor#1 10001.0 +(byte*) print_char_cursor#12 4646.166666666666 +(byte*) print_char_cursor#2 1661.8846153846155 +(byte*) print_char_cursor#44 111003.0 +(byte*) print_char_cursor#69 3734.6666666666665 +(byte*) print_char_cursor#74 1506.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 16.5 -(byte*) print_line_cursor#11 22.0 +(byte*) print_line_cursor#1 15001.5 +(byte*) print_line_cursor#11 20002.0 (void()) print_ln() (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#4 1.0 -(signed byte) print_sbyte::b#6 4.0 +(signed byte) print_sbyte::b#0 2002.0 +(signed byte) print_sbyte::b#4 500.5 +(signed byte) print_sbyte::b#6 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#7 11.5 -(byte*) print_str::str#9 2.0 +(byte*) print_str::str#0 20002.0 +(byte*) print_str::str#7 10251.25 +(byte*) print_str::str#9 1001.0 Initial phi equivalence classes [ print_line_cursor#11 print_line_cursor#1 ] @@ -2370,70 +2370,68 @@ PERSP_Z: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [46] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2 [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ( main:2::do_perspective:10::print_byte:29 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_byte:33 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ) always clobbers reg byte a +Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [46] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2 [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] { } main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } ) always clobbers reg byte a reg byte y +Statement [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] { } main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } ) always clobbers reg byte a reg byte y +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ( main:2::do_perspective:10::print_byte:29 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:33 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] -Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::do_perspective:10::print_byte:29 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_byte:33 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 [ print_char_cursor#44 ] ( main:2::do_perspective:10::print_byte:29::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_byte:33::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_byte:29::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_byte:33::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::do_perspective:10::print_byte:29 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_byte:33 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 [ print_char_cursor#44 ] ( main:2::do_perspective:10::print_byte:29::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:33::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:29::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_byte:33::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:19::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:23::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:19::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:23::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ] -Statement [63] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a -Statement [64] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a -Statement [65] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a +Statement [63] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [64] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [65] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a Statement asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } always clobbers reg byte a reg byte y -Statement [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 [ print_char_cursor#12 print_sbyte::b#0 ] ( main:2::do_perspective:10::print_sbyte:15 [ print_char_cursor#12 print_sbyte::b#0 ] main:2::do_perspective:10::print_sbyte:19 [ print_char_cursor#12 print_sbyte::b#0 ] main:2::do_perspective:10::print_sbyte:23 [ print_char_cursor#12 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [90] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a +Statement [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 [ print_char_cursor#12 print_sbyte::b#0 ] ( main:2::do_perspective:10::print_sbyte:15 [ print_char_cursor#12 print_sbyte::b#0 ] { } main:2::do_perspective:10::print_sbyte:19 [ print_char_cursor#12 print_sbyte::b#0 ] { } main:2::do_perspective:10::print_sbyte:23 [ print_char_cursor#12 print_sbyte::b#0 ] { } ) always clobbers reg byte a +Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [93] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ mulf_init::i#2 mulf_init::i#1 ] -Statement [93] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ mulf_init::val#0 ] -Statement [94] *((const byte*) mulf_sqr1 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ) always clobbers reg byte a +Statement [94] *((const byte*) mulf_sqr1 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ mulf_init::$2 ] -Statement [95] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [96] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [97] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [98] (byte~) mulf_init::$5 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ) always clobbers reg byte a -Statement [99] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$5) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [100] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ) always clobbers reg byte a -Statement [101] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ) always clobbers reg byte a -Statement [102] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ) always clobbers reg byte a -Statement [103] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ) always clobbers reg byte a -Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [46] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2 [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ( main:2::do_perspective:10::print_byte:29 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_byte:33 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ) always clobbers reg byte a -Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::do_perspective:10::print_byte:29 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_byte:33 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 [ print_char_cursor#44 ] ( main:2::do_perspective:10::print_byte:29::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_byte:33::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] main:2::do_perspective:10::print_byte:29::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_byte:33::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:57 [ print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:15::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:19::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] main:2::do_perspective:10::print_sbyte:23::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] ) always clobbers reg byte y -Statement [63] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a -Statement [64] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a -Statement [65] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] ) always clobbers reg byte a +Statement [95] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [97] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [98] (byte~) mulf_init::$5 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] { } ) always clobbers reg byte a +Statement [99] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$5) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [100] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] { } ) always clobbers reg byte a +Statement [101] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] { } ) always clobbers reg byte a +Statement [102] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] { } ) always clobbers reg byte a +Statement [103] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] { } ) always clobbers reg byte a +Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::do_perspective:10::print_ln:37 [ print_line_cursor#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [46] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2 [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] { } main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } ) always clobbers reg byte a reg byte y +Statement [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) [ print_char_cursor#2 print_str::str#7 ] ( main:2::do_perspective:10::print_str:13 [ print_char_cursor#2 print_str::str#7 ] { } main:2::do_perspective:10::print_str:17 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:21 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:25 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:31 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } main:2::do_perspective:10::print_str:35 [ print_char_cursor#2 print_str::str#7 ] { { print_char_cursor#12 = print_char_cursor#74 } } ) always clobbers reg byte a reg byte y +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] ( main:2::do_perspective:10::print_byte:29 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:33 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_byte::b#3 print_char_cursor#69 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::do_perspective:10::print_byte:29 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_byte:33 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74 [ print_char_cursor#12 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 [ print_char_cursor#44 ] ( main:2::do_perspective:10::print_byte:29::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:33::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:54 [ print_byte::b#3 print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#2 = print_char::ch#4 } } main:2::do_perspective:10::print_byte:29::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_byte:33::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#5 } { print_char_cursor#2 = print_char_cursor#69 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:19::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:23::print_byte:74::print_char:57 [ print_char_cursor#44 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#12 = print_char_cursor#69 print_char_cursor#44 } { print_char::ch#3 = print_char::ch#4 } } main:2::do_perspective:10::print_sbyte:15::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:19::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:23::print_char:71 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:15::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:19::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } main:2::do_perspective:10::print_sbyte:23::print_char:77 [ print_sbyte::b#4 print_char_cursor#44 ] { { print_char_cursor#2 = print_char_cursor#44 } } ) always clobbers reg byte y +Statement [63] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [64] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [65] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0 [ ] ( main:2::do_perspective:10::perspective:27 [ print_char_cursor#2 ] { } ) always clobbers reg byte a Statement asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } always clobbers reg byte a reg byte y -Statement [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 [ print_char_cursor#12 print_sbyte::b#0 ] ( main:2::do_perspective:10::print_sbyte:15 [ print_char_cursor#12 print_sbyte::b#0 ] main:2::do_perspective:10::print_sbyte:19 [ print_char_cursor#12 print_sbyte::b#0 ] main:2::do_perspective:10::print_sbyte:23 [ print_char_cursor#12 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [90] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [91] *((const byte*) mulf_sqr1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [92] *((const byte*) mulf_sqr1+(word) $100 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [93] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ) always clobbers reg byte a -Statement [94] *((const byte*) mulf_sqr1 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ) always clobbers reg byte a -Statement [95] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [96] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [97] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [98] (byte~) mulf_init::$5 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ) always clobbers reg byte a -Statement [99] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$5) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ) always clobbers reg byte a -Statement [100] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ) always clobbers reg byte a -Statement [101] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ) always clobbers reg byte a -Statement [102] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ) always clobbers reg byte a -Statement [103] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ) always clobbers reg byte a +Statement [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 [ print_char_cursor#12 print_sbyte::b#0 ] ( main:2::do_perspective:10::print_sbyte:15 [ print_char_cursor#12 print_sbyte::b#0 ] { } main:2::do_perspective:10::print_sbyte:19 [ print_char_cursor#12 print_sbyte::b#0 ] { } main:2::do_perspective:10::print_sbyte:23 [ print_char_cursor#12 print_sbyte::b#0 ] { } ) always clobbers reg byte a +Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [91] *((const byte*) mulf_sqr1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [92] *((const byte*) mulf_sqr1+(word) $100 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [93] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) mulf_sqr1 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$2 ] { } ) always clobbers reg byte a +Statement [95] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [97] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [98] (byte~) mulf_init::$5 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$5 ] { } ) always clobbers reg byte a +Statement [99] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$5) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 ] { } ) always clobbers reg byte a +Statement [100] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 mulf_init::val#0 mulf_init::$6 ] { } ) always clobbers reg byte a +Statement [101] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr#2 mulf_init::i#2 mulf_init::add#2 ] { } ) always clobbers reg byte a +Statement [102] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::add#2 mulf_init::sqr#1 ] { } ) always clobbers reg byte a +Statement [103] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] ( main:2::mulf_init:5 [ mulf_init::i#2 mulf_init::sqr#1 mulf_init::add#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_line_cursor#11 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] : zp[2]:4 , Potential registers zp[1]:6 [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] : zp[1]:6 , reg byte x , @@ -2452,13 +2450,13 @@ Potential registers zp[1]:22 [ mulf_init::$5 ] : zp[1]:22 , reg byte a , reg byt Potential registers zp[1]:23 [ mulf_init::$6 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mulf_init] 23.1: zp[1]:15 [ mulf_init::i#2 mulf_init::i#1 ] 22: zp[1]:22 [ mulf_init::$5 ] 22: zp[1]:23 [ mulf_init::$6 ] 16.5: zp[1]:21 [ mulf_init::$2 ] 9.69: zp[2]:16 [ mulf_init::add#2 mulf_init::add#1 ] 9: zp[1]:20 [ mulf_init::val#0 ] 8.04: zp[2]:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ] -Uplift Scope [] 38.5: zp[2]:2 [ print_line_cursor#11 print_line_cursor#1 ] 34.41: zp[2]:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ] -Uplift Scope [memset] 36.67: zp[2]:11 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Uplift Scope [print_byte] 14.5: zp[1]:6 [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] 4: zp[1]:18 [ print_byte::$0 ] 4: zp[1]:19 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:7 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sbyte] 9: zp[1]:10 [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ] +Uplift Scope [] 132,552.72: zp[2]:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ] 35,003.5: zp[2]:2 [ print_line_cursor#11 print_line_cursor#1 ] +Uplift Scope [print_char] 160,007: zp[1]:7 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_byte] 20,002: zp[1]:18 [ print_byte::$0 ] 20,002: zp[1]:19 [ print_byte::$2 ] 7,707.25: zp[1]:6 [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:11 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_str] 31,254.25: zp[2]:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplift Scope [mulf_init] 2,102.1: zp[1]:15 [ mulf_init::i#2 mulf_init::i#1 ] 2,002: zp[1]:22 [ mulf_init::$5 ] 2,002: zp[1]:23 [ mulf_init::$6 ] 1,501.5: zp[1]:21 [ mulf_init::$2 ] 881.83: zp[2]:16 [ mulf_init::add#2 mulf_init::add#1 ] 819: zp[1]:20 [ mulf_init::val#0 ] 731.5: zp[2]:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ] +Uplift Scope [print_sbyte] 4,504.5: zp[1]:10 [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -2466,13 +2464,13 @@ Uplift Scope [main] Uplift Scope [do_perspective] Uplift Scope [perspective] -Uplifting [mulf_init] best 4035 combination reg byte y [ mulf_init::i#2 mulf_init::i#1 ] reg byte x [ mulf_init::$5 ] reg byte x [ mulf_init::$6 ] reg byte x [ mulf_init::$2 ] zp[2]:16 [ mulf_init::add#2 mulf_init::add#1 ] zp[1]:20 [ mulf_init::val#0 ] zp[2]:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ] +Uplifting [] best 4445 combination zp[2]:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ] zp[2]:2 [ print_line_cursor#11 print_line_cursor#1 ] +Uplifting [print_char] best 4430 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 4409 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] +Uplifting [memset] best 4409 combination zp[2]:11 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_str] best 4409 combination zp[2]:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplifting [mulf_init] best 3999 combination reg byte y [ mulf_init::i#2 mulf_init::i#1 ] reg byte x [ mulf_init::$5 ] reg byte x [ mulf_init::$6 ] reg byte x [ mulf_init::$2 ] zp[2]:16 [ mulf_init::add#2 mulf_init::add#1 ] zp[1]:20 [ mulf_init::val#0 ] zp[2]:13 [ mulf_init::sqr#2 mulf_init::sqr#1 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [] best 4035 combination zp[2]:2 [ print_line_cursor#11 print_line_cursor#1 ] zp[2]:8 [ print_char_cursor#44 print_char_cursor#69 print_char_cursor#2 print_char_cursor#74 print_char_cursor#12 print_char_cursor#1 ] -Uplifting [memset] best 4035 combination zp[2]:11 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 4035 combination zp[2]:4 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Uplifting [print_byte] best 4014 combination reg byte x [ print_byte::b#3 print_byte::b#5 print_byte::b#6 print_byte::b#0 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 3999 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] Uplifting [print_sbyte] best 3984 combination reg byte x [ print_sbyte::b#6 print_sbyte::b#0 print_sbyte::b#4 ] Uplifting [RADIX] best 3984 combination Uplifting [print_ln] best 3984 combination @@ -3369,8 +3367,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -3379,22 +3377,22 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) mulf_init() -(byte~) mulf_init::$2 reg byte x 16.5 -(byte~) mulf_init::$5 reg byte x 22.0 -(byte~) mulf_init::$6 reg byte x 22.0 +(byte~) mulf_init::$2 reg byte x 1501.5 +(byte~) mulf_init::$5 reg byte x 2002.0 +(byte~) mulf_init::$6 reg byte x 2002.0 (label) mulf_init::@1 (label) mulf_init::@return (signed word) mulf_init::add -(signed word) mulf_init::add#1 add zp[2]:8 7.333333333333333 -(signed word) mulf_init::add#2 add zp[2]:8 2.357142857142857 +(signed word) mulf_init::add#1 add zp[2]:8 667.3333333333334 +(signed word) mulf_init::add#2 add zp[2]:8 214.5 (byte) mulf_init::i -(byte) mulf_init::i#1 reg byte y 16.5 -(byte) mulf_init::i#2 reg byte y 6.6 +(byte) mulf_init::i#1 reg byte y 1501.5 +(byte) mulf_init::i#2 reg byte y 600.6 (signed word) mulf_init::sqr -(signed word) mulf_init::sqr#1 sqr zp[2]:6 5.5 -(signed word) mulf_init::sqr#2 sqr zp[2]:6 2.5384615384615383 +(signed word) mulf_init::sqr#1 sqr zp[2]:6 500.5 +(signed word) mulf_init::sqr#2 sqr zp[2]:6 231.0 (byte) mulf_init::val -(byte) mulf_init::val#0 val zp[1]:10 9.0 +(byte) mulf_init::val#0 val zp[1]:10 819.0 (const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) } (void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z) @@ -3403,34 +3401,34 @@ FINAL SYMBOL TABLE (signed byte) perspective::y (signed byte) perspective::z (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 2.5 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#3 reg byte x 5301.25 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 0.6666666666666666 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 2.076923076923077 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:4 6.0 -(byte*) print_char_cursor#69 print_char_cursor zp[2]:4 2.6666666666666665 -(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 12.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 10001.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 4646.166666666666 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 1661.8846153846155 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:4 111003.0 +(byte*) print_char_cursor#69 print_char_cursor zp[2]:4 3734.6666666666665 +(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 1506.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 15001.5 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -3441,18 +3439,18 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 reg byte x 4.0 -(signed byte) print_sbyte::b#4 reg byte x 1.0 -(signed byte) print_sbyte::b#6 reg byte x 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#4 reg byte x 500.5 +(signed byte) print_sbyte::b#6 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 22.0 -(byte*) print_str::str#7 str zp[2]:6 11.5 -(byte*) print_str::str#9 str zp[2]:6 2.0 +(byte*) print_str::str#0 str zp[2]:6 20002.0 +(byte*) print_str::str#7 str zp[2]:6 10251.25 +(byte*) print_str::str#9 str zp[2]:6 1001.0 (const word*) psp1 = (word*) 243 (const word*) psp2 = (word*) 245 (const signed byte*) xr = (signed byte*) 240 diff --git a/src/test/ref/examples/3d/perspective.sym b/src/test/ref/examples/3d/perspective.sym index 892696377..81518735a 100644 --- a/src/test/ref/examples/3d/perspective.sym +++ b/src/test/ref/examples/3d/perspective.sym @@ -52,8 +52,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -62,22 +62,22 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) mulf_init() -(byte~) mulf_init::$2 reg byte x 16.5 -(byte~) mulf_init::$5 reg byte x 22.0 -(byte~) mulf_init::$6 reg byte x 22.0 +(byte~) mulf_init::$2 reg byte x 1501.5 +(byte~) mulf_init::$5 reg byte x 2002.0 +(byte~) mulf_init::$6 reg byte x 2002.0 (label) mulf_init::@1 (label) mulf_init::@return (signed word) mulf_init::add -(signed word) mulf_init::add#1 add zp[2]:8 7.333333333333333 -(signed word) mulf_init::add#2 add zp[2]:8 2.357142857142857 +(signed word) mulf_init::add#1 add zp[2]:8 667.3333333333334 +(signed word) mulf_init::add#2 add zp[2]:8 214.5 (byte) mulf_init::i -(byte) mulf_init::i#1 reg byte y 16.5 -(byte) mulf_init::i#2 reg byte y 6.6 +(byte) mulf_init::i#1 reg byte y 1501.5 +(byte) mulf_init::i#2 reg byte y 600.6 (signed word) mulf_init::sqr -(signed word) mulf_init::sqr#1 sqr zp[2]:6 5.5 -(signed word) mulf_init::sqr#2 sqr zp[2]:6 2.5384615384615383 +(signed word) mulf_init::sqr#1 sqr zp[2]:6 500.5 +(signed word) mulf_init::sqr#2 sqr zp[2]:6 231.0 (byte) mulf_init::val -(byte) mulf_init::val#0 val zp[1]:10 9.0 +(byte) mulf_init::val#0 val zp[1]:10 819.0 (const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) } (void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z) @@ -86,34 +86,34 @@ (signed byte) perspective::y (signed byte) perspective::z (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 2.5 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#3 reg byte x 5301.25 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 0.6666666666666666 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 2.076923076923077 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:4 6.0 -(byte*) print_char_cursor#69 print_char_cursor zp[2]:4 2.6666666666666665 -(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 12.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 10001.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 4646.166666666666 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 1661.8846153846155 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:4 111003.0 +(byte*) print_char_cursor#69 print_char_cursor zp[2]:4 3734.6666666666665 +(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 1506.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 15001.5 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -124,18 +124,18 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 reg byte x 4.0 -(signed byte) print_sbyte::b#4 reg byte x 1.0 -(signed byte) print_sbyte::b#6 reg byte x 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#4 reg byte x 500.5 +(signed byte) print_sbyte::b#6 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 22.0 -(byte*) print_str::str#7 str zp[2]:6 11.5 -(byte*) print_str::str#9 str zp[2]:6 2.0 +(byte*) print_str::str#0 str zp[2]:6 20002.0 +(byte*) print_str::str#7 str zp[2]:6 10251.25 +(byte*) print_str::str#9 str zp[2]:6 1001.0 (const word*) psp1 = (word*) 243 (const word*) psp2 = (word*) 245 (const signed byte*) xr = (signed byte*) 240 diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log index aa50851be..404399b09 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.log +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log @@ -1368,89 +1368,89 @@ Inversing boolean not [195] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_ Inversing boolean not [218] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [217] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 Inversing boolean not [242] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [241] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 -Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 -Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$13 -Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 -Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 -Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 -Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 -Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 -Alias (byte) bitmap_line::x1#1 = (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 -Alias (byte) bitmap_line::x0#1 = (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 -Alias (byte) bitmap_line::y0#1 = (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 -Alias (byte) bitmap_line::y1#1 = (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 -Alias (byte) bitmap_line::xd#1 = (byte~) bitmap_line::$11 (byte) bitmap_line::xd#9 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 -Alias (byte) bitmap_line::xd#2 = (byte~) bitmap_line::$1 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 -Alias (byte) bitmap_line::yd#1 = (byte~) bitmap_line::$7 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 -Alias (byte) bitmap_line::yd#2 = (byte~) bitmap_line::$3 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 -Alias (byte) bitmap_line::yd#11 = (byte) bitmap_line::yd#3 (byte~) bitmap_line::$17 (byte) bitmap_line::yd#12 -Alias (byte) bitmap_line::yd#10 = (byte) bitmap_line::yd#4 (byte~) bitmap_line::$13 (byte) bitmap_line::yd#9 -Alias (byte) bitmap_line_xdyi::e#0 = (byte~) bitmap_line_xdyi::$0 -Alias (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#4 -Alias (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#6 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#3 -Alias (byte) bitmap_line_xdyi::x1#3 = (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 -Alias (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::y#4 -Alias (byte) bitmap_line_xdyi::e#1 = (byte~) bitmap_line_xdyi::$2 (byte) bitmap_line_xdyi::e#4 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#7 -Alias (byte) bitmap_line_xdyi::e#2 = (byte~) bitmap_line_xdyi::$5 -Alias (byte) bitmap_line_xdyd::e#0 = (byte~) bitmap_line_xdyd::$0 -Alias (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#4 -Alias (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#6 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#3 -Alias (byte) bitmap_line_xdyd::x1#3 = (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 -Alias (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::y#4 -Alias (byte) bitmap_line_xdyd::e#1 = (byte~) bitmap_line_xdyd::$2 (byte) bitmap_line_xdyd::e#4 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#7 -Alias (byte) bitmap_line_xdyd::e#2 = (byte~) bitmap_line_xdyd::$5 -Alias (byte) bitmap_line_ydxi::e#0 = (byte~) bitmap_line_ydxi::$0 -Alias (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#4 -Alias (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#6 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#3 -Alias (byte) bitmap_line_ydxi::y1#3 = (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 -Alias (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::x#4 -Alias (byte) bitmap_line_ydxi::e#1 = (byte~) bitmap_line_ydxi::$2 (byte) bitmap_line_ydxi::e#4 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#7 -Alias (byte) bitmap_line_ydxi::e#2 = (byte~) bitmap_line_ydxi::$5 -Alias (byte) bitmap_line_ydxd::e#0 = (byte~) bitmap_line_ydxd::$0 -Alias (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#4 -Alias (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#5 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#6 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#3 -Alias (byte) bitmap_line_ydxd::y1#3 = (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 -Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::x#4 -Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8 -Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5 -Alias (byte) lines::l#2 = (byte) lines::l#3 (byte) lines::l#4 -Alias (byte*) init_screen::c#2 = (byte*) init_screen::c#3 +Alias bitmap_init::bits#1 = bitmap_init::$2 +Alias bitmap_init::x#2 = bitmap_init::x#4 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 +Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 +Alias bitmap_init::y#2 = bitmap_init::y#4 +Alias bitmap_init::yoffs#1 = bitmap_init::$13 +Alias bitmap_clear::bitmap#0 = bitmap_clear::$0 +Alias bitmap_clear::y#2 = bitmap_clear::y#3 +Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 +Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 +Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 +Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 +Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 +Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 +Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 +Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 +Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 +Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 +Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 +Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 +Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 +Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 +Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 +Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 +Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 +Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 +Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 +Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 +Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 +Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 +Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 +Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 +Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 +Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 +Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 +Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 +Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 +Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 +Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 +Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 +Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 +Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 +Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 +Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 +Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 +Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 +Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 +Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 +Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 +Alias lines::l#2 = lines::l#3 lines::l#4 +Alias init_screen::c#2 = init_screen::c#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 -Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 -Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 -Alias (byte) bitmap_line_xdyi::x1#2 = (byte) bitmap_line_xdyi::x1#3 -Alias (byte) bitmap_line_xdyi::x#2 = (byte) bitmap_line_xdyi::x#5 -Alias (byte) bitmap_line_xdyi::yd#3 = (byte) bitmap_line_xdyi::yd#5 -Alias (byte) bitmap_line_xdyi::xd#2 = (byte) bitmap_line_xdyi::xd#6 -Alias (byte) bitmap_line_xdyd::x1#2 = (byte) bitmap_line_xdyd::x1#3 -Alias (byte) bitmap_line_xdyd::x#2 = (byte) bitmap_line_xdyd::x#5 -Alias (byte) bitmap_line_xdyd::yd#3 = (byte) bitmap_line_xdyd::yd#5 -Alias (byte) bitmap_line_xdyd::xd#2 = (byte) bitmap_line_xdyd::xd#6 -Alias (byte) bitmap_line_ydxi::y1#2 = (byte) bitmap_line_ydxi::y1#3 -Alias (byte) bitmap_line_ydxi::y#2 = (byte) bitmap_line_ydxi::y#5 -Alias (byte) bitmap_line_ydxi::xd#3 = (byte) bitmap_line_ydxi::xd#5 -Alias (byte) bitmap_line_ydxi::yd#2 = (byte) bitmap_line_ydxi::yd#6 -Alias (byte) bitmap_line_ydxd::y1#2 = (byte) bitmap_line_ydxd::y1#3 -Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#6 -Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#5 -Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#6 +Alias bitmap_init::x#2 = bitmap_init::x#3 +Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 +Alias bitmap_init::y#2 = bitmap_init::y#3 +Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 +Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 +Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 +Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 +Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 +Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 +Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 +Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 +Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 +Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 +Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 +Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 +Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 +Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 +Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 +Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0 Identical Phi Values (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2 @@ -1546,7 +1546,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $c8 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) bitmap_init::$10 = (byte~) bitmap_init::$6 +Alias bitmap_init::$10 = bitmap_init::$6 Successful SSA optimization Pass2AliasElimination Constant right-side identified [3] (byte~) bitmap_init::$1 ← > (const byte*) bitmap_init::bitmap#0 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -1579,7 +1579,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(lines_x+1 + lines::$1) Consolidated array index constant in assignment *(lines_y+1 + lines::$2) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) lines::l#2 = (byte~) lines::$1 (byte~) lines::$2 +Alias lines::l#2 = lines::$1 lines::$2 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1) Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) @@ -2191,215 +2191,215 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 VARIABLE REGISTER WEIGHTS (void()) bitmap_clear() (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 2.0 -(byte*) bitmap_clear::bitmap#1 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 157.0 -(byte*) bitmap_clear::bitmap#3 24.0 -(byte*) bitmap_clear::bitmap#5 4.0 +(word) bitmap_clear::bitmap#0 101.0 +(byte*) bitmap_clear::bitmap#1 4200.6 +(byte*) bitmap_clear::bitmap#2 15502.0 +(byte*) bitmap_clear::bitmap#3 2103.0 +(byte*) bitmap_clear::bitmap#5 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 151.5 -(byte) bitmap_clear::x#2 67.33333333333333 +(byte) bitmap_clear::x#1 15001.5 +(byte) bitmap_clear::x#2 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 16.5 -(byte) bitmap_clear::y#4 3.6666666666666665 +(byte) bitmap_clear::y#1 1501.5 +(byte) bitmap_clear::y#4 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 22.0 -(byte~) bitmap_init::$10 5.5 -(byte~) bitmap_init::$7 22.0 -(byte~) bitmap_init::$8 22.0 -(byte~) bitmap_init::$9 22.0 +(byte~) bitmap_init::$0 2002.0 +(byte~) bitmap_init::$10 500.5 +(byte~) bitmap_init::$7 2002.0 +(byte~) bitmap_init::$8 2002.0 +(byte~) bitmap_init::$9 2002.0 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 6.6000000000000005 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 600.5999999999999 +(byte) bitmap_init::bits#4 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 7.333333333333334 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 5.173913043478264 +(byte) bitmap_line::x0#0 395652.6086956522 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 5.409090909090908 +(byte) bitmap_line::x1#0 413636.81818181823 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 0.7 -(byte) bitmap_line::xd#2 0.7 +(byte) bitmap_line::xd#1 350000.35 +(byte) bitmap_line::xd#2 350000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 5.952380952380948 +(byte) bitmap_line::y0#0 576191.0952380954 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 6.249999999999996 +(byte) bitmap_line::y1#0 605000.65 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 0.8888888888888888 -(byte) bitmap_line::yd#10 0.8888888888888888 -(byte) bitmap_line::yd#11 0.8888888888888888 -(byte) bitmap_line::yd#2 0.8888888888888888 +(byte) bitmap_line::yd#1 444444.8888888889 +(byte) bitmap_line::yd#10 444444.8888888889 +(byte) bitmap_line::yd#11 444444.8888888889 +(byte) bitmap_line::yd#2 444444.8888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 2002.0 +(byte~) bitmap_line_xdyd::$6 2.0000000002E10 (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 4.0 -(byte) bitmap_line_xdyd::e#1 1334.6666666666667 -(byte) bitmap_line_xdyd::e#2 2002.0 -(byte) bitmap_line_xdyd::e#3 400.79999999999995 -(byte) bitmap_line_xdyd::e#6 1001.0 +(byte) bitmap_line_xdyd::e#0 2.0000002E7 +(byte) bitmap_line_xdyd::e#1 1.3333333334666666E10 +(byte) bitmap_line_xdyd::e#2 2.0000000002E10 +(byte) bitmap_line_xdyd::e#3 4.0020000006000004E9 +(byte) bitmap_line_xdyd::e#6 1.0000000001E10 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 0.8 -(byte) bitmap_line_xdyd::x#1 0.8 -(byte) bitmap_line_xdyd::x#2 375.375 -(byte) bitmap_line_xdyd::x#3 751.25 -(byte) bitmap_line_xdyd::x#6 3.0 +(byte) bitmap_line_xdyd::x#0 400000.4 +(byte) bitmap_line_xdyd::x#1 400000.4 +(byte) bitmap_line_xdyd::x#2 3.750000000375E9 +(byte) bitmap_line_xdyd::x#3 7.502500001E9 +(byte) bitmap_line_xdyd::x#6 6000001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 71.78571428571429 +(byte) bitmap_line_xdyd::x1#0 666667.3333333334 +(byte) bitmap_line_xdyd::x1#1 666667.3333333334 +(byte) bitmap_line_xdyd::x1#6 7.144285716428571E8 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 2.0 -(byte) bitmap_line_xdyd::xd#1 2.0 -(byte) bitmap_line_xdyd::xd#5 143.28571428571428 +(byte) bitmap_line_xdyd::xd#0 1000001.0 +(byte) bitmap_line_xdyd::xd#1 1000001.0 +(byte) bitmap_line_xdyd::xd#5 1.428714286E9 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 1.0 -(byte) bitmap_line_xdyd::y#1 1.0 -(byte) bitmap_line_xdyd::y#2 1001.0 -(byte) bitmap_line_xdyd::y#3 572.2857142857142 -(byte) bitmap_line_xdyd::y#5 3.0 -(byte) bitmap_line_xdyd::y#6 1001.0 +(byte) bitmap_line_xdyd::y#0 500000.5 +(byte) bitmap_line_xdyd::y#1 500000.5 +(byte) bitmap_line_xdyd::y#2 1.0000000001E10 +(byte) bitmap_line_xdyd::y#3 5.715714286428572E9 +(byte) bitmap_line_xdyd::y#5 6000001.5 +(byte) bitmap_line_xdyd::y#6 1.0000000001E10 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 4.0 -(byte) bitmap_line_xdyd::yd#1 4.0 -(byte) bitmap_line_xdyd::yd#2 71.92857142857143 +(byte) bitmap_line_xdyd::yd#0 2000002.0 +(byte) bitmap_line_xdyd::yd#1 2000002.0 +(byte) bitmap_line_xdyd::yd#2 7.151428574285713E8 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 2002.0 +(byte~) bitmap_line_xdyi::$6 2.0000000002E10 (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 4.0 -(byte) bitmap_line_xdyi::e#1 1334.6666666666667 -(byte) bitmap_line_xdyi::e#2 2002.0 -(byte) bitmap_line_xdyi::e#3 400.79999999999995 -(byte) bitmap_line_xdyi::e#6 1001.0 +(byte) bitmap_line_xdyi::e#0 2.0000002E7 +(byte) bitmap_line_xdyi::e#1 1.3333333334666666E10 +(byte) bitmap_line_xdyi::e#2 2.0000000002E10 +(byte) bitmap_line_xdyi::e#3 4.0020000006000004E9 +(byte) bitmap_line_xdyi::e#6 1.0000000001E10 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 0.8 -(byte) bitmap_line_xdyi::x#1 0.8 -(byte) bitmap_line_xdyi::x#2 375.375 -(byte) bitmap_line_xdyi::x#3 751.25 -(byte) bitmap_line_xdyi::x#6 3.0 +(byte) bitmap_line_xdyi::x#0 400000.4 +(byte) bitmap_line_xdyi::x#1 400000.4 +(byte) bitmap_line_xdyi::x#2 3.750000000375E9 +(byte) bitmap_line_xdyi::x#3 7.502500001E9 +(byte) bitmap_line_xdyi::x#6 6000001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 71.78571428571429 +(byte) bitmap_line_xdyi::x1#0 666667.3333333334 +(byte) bitmap_line_xdyi::x1#1 666667.3333333334 +(byte) bitmap_line_xdyi::x1#6 7.144285716428571E8 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 2.0 -(byte) bitmap_line_xdyi::xd#1 2.0 -(byte) bitmap_line_xdyi::xd#5 143.28571428571428 +(byte) bitmap_line_xdyi::xd#0 1000001.0 +(byte) bitmap_line_xdyi::xd#1 1000001.0 +(byte) bitmap_line_xdyi::xd#5 1.428714286E9 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 1.0 -(byte) bitmap_line_xdyi::y#1 1.0 -(byte) bitmap_line_xdyi::y#2 1001.0 -(byte) bitmap_line_xdyi::y#3 572.2857142857142 -(byte) bitmap_line_xdyi::y#5 3.0 -(byte) bitmap_line_xdyi::y#6 1001.0 +(byte) bitmap_line_xdyi::y#0 500000.5 +(byte) bitmap_line_xdyi::y#1 500000.5 +(byte) bitmap_line_xdyi::y#2 1.0000000001E10 +(byte) bitmap_line_xdyi::y#3 5.715714286428572E9 +(byte) bitmap_line_xdyi::y#5 6000001.5 +(byte) bitmap_line_xdyi::y#6 1.0000000001E10 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 4.0 -(byte) bitmap_line_xdyi::yd#1 4.0 -(byte) bitmap_line_xdyi::yd#2 71.92857142857143 +(byte) bitmap_line_xdyi::yd#0 2000002.0 +(byte) bitmap_line_xdyi::yd#1 2000002.0 +(byte) bitmap_line_xdyi::yd#2 7.151428574285713E8 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 2002.0 +(byte~) bitmap_line_ydxd::$6 2.0000000002E10 (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 4.0 -(byte) bitmap_line_ydxd::e#1 1334.6666666666667 -(byte) bitmap_line_ydxd::e#2 2002.0 -(byte) bitmap_line_ydxd::e#3 400.79999999999995 -(byte) bitmap_line_ydxd::e#6 1001.0 +(byte) bitmap_line_ydxd::e#0 2.0000002E7 +(byte) bitmap_line_ydxd::e#1 1.3333333334666666E10 +(byte) bitmap_line_ydxd::e#2 2.0000000002E10 +(byte) bitmap_line_ydxd::e#3 4.0020000006000004E9 +(byte) bitmap_line_ydxd::e#6 1.0000000001E10 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 1.0 -(byte) bitmap_line_ydxd::x#1 1.0 -(byte) bitmap_line_ydxd::x#2 1001.0 -(byte) bitmap_line_ydxd::x#3 572.2857142857142 -(byte) bitmap_line_ydxd::x#5 3.0 -(byte) bitmap_line_ydxd::x#6 1001.0 +(byte) bitmap_line_ydxd::x#0 500000.5 +(byte) bitmap_line_ydxd::x#1 500000.5 +(byte) bitmap_line_ydxd::x#2 1.0000000001E10 +(byte) bitmap_line_ydxd::x#3 5.715714286428572E9 +(byte) bitmap_line_ydxd::x#5 6000001.5 +(byte) bitmap_line_ydxd::x#6 1.0000000001E10 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 4.0 -(byte) bitmap_line_ydxd::xd#1 4.0 -(byte) bitmap_line_ydxd::xd#2 71.92857142857143 +(byte) bitmap_line_ydxd::xd#0 2000002.0 +(byte) bitmap_line_ydxd::xd#1 2000002.0 +(byte) bitmap_line_ydxd::xd#2 7.151428574285713E8 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 0.8 -(byte) bitmap_line_ydxd::y#1 0.8 -(byte) bitmap_line_ydxd::y#2 751.25 -(byte) bitmap_line_ydxd::y#3 375.375 -(byte) bitmap_line_ydxd::y#7 3.0 +(byte) bitmap_line_ydxd::y#0 400000.4 +(byte) bitmap_line_ydxd::y#1 400000.4 +(byte) bitmap_line_ydxd::y#2 7.502500001E9 +(byte) bitmap_line_ydxd::y#3 3.750000000375E9 +(byte) bitmap_line_ydxd::y#7 6000001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 71.78571428571429 +(byte) bitmap_line_ydxd::y1#0 666667.3333333334 +(byte) bitmap_line_ydxd::y1#1 666667.3333333334 +(byte) bitmap_line_ydxd::y1#6 7.144285716428571E8 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 2.0 -(byte) bitmap_line_ydxd::yd#1 2.0 -(byte) bitmap_line_ydxd::yd#5 143.28571428571428 +(byte) bitmap_line_ydxd::yd#0 1000001.0 +(byte) bitmap_line_ydxd::yd#1 1000001.0 +(byte) bitmap_line_ydxd::yd#5 1.428714286E9 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 2002.0 +(byte~) bitmap_line_ydxi::$6 2.0000000002E10 (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 4.0 -(byte) bitmap_line_ydxi::e#1 1334.6666666666667 -(byte) bitmap_line_ydxi::e#2 2002.0 -(byte) bitmap_line_ydxi::e#3 400.79999999999995 -(byte) bitmap_line_ydxi::e#6 1001.0 +(byte) bitmap_line_ydxi::e#0 2.0000002E7 +(byte) bitmap_line_ydxi::e#1 1.3333333334666666E10 +(byte) bitmap_line_ydxi::e#2 2.0000000002E10 +(byte) bitmap_line_ydxi::e#3 4.0020000006000004E9 +(byte) bitmap_line_ydxi::e#6 1.0000000001E10 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 1.0 -(byte) bitmap_line_ydxi::x#1 1.0 -(byte) bitmap_line_ydxi::x#2 1001.0 -(byte) bitmap_line_ydxi::x#3 572.2857142857142 -(byte) bitmap_line_ydxi::x#5 3.0 -(byte) bitmap_line_ydxi::x#6 1001.0 +(byte) bitmap_line_ydxi::x#0 500000.5 +(byte) bitmap_line_ydxi::x#1 500000.5 +(byte) bitmap_line_ydxi::x#2 1.0000000001E10 +(byte) bitmap_line_ydxi::x#3 5.715714286428572E9 +(byte) bitmap_line_ydxi::x#5 6000001.5 +(byte) bitmap_line_ydxi::x#6 1.0000000001E10 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 4.0 -(byte) bitmap_line_ydxi::xd#1 4.0 -(byte) bitmap_line_ydxi::xd#2 71.92857142857143 +(byte) bitmap_line_ydxi::xd#0 2000002.0 +(byte) bitmap_line_ydxi::xd#1 2000002.0 +(byte) bitmap_line_ydxi::xd#2 7.151428574285713E8 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 0.8 -(byte) bitmap_line_ydxi::y#1 0.8 -(byte) bitmap_line_ydxi::y#2 375.375 -(byte) bitmap_line_ydxi::y#3 751.25 -(byte) bitmap_line_ydxi::y#6 3.0 +(byte) bitmap_line_ydxi::y#0 400000.4 +(byte) bitmap_line_ydxi::y#1 400000.4 +(byte) bitmap_line_ydxi::y#2 3.750000000375E9 +(byte) bitmap_line_ydxi::y#3 7.502500001E9 +(byte) bitmap_line_ydxi::y#6 6000001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 71.78571428571429 +(byte) bitmap_line_ydxi::y1#0 666667.3333333334 +(byte) bitmap_line_ydxi::y1#1 666667.3333333334 +(byte) bitmap_line_ydxi::y1#6 7.144285716428571E8 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 2.0 -(byte) bitmap_line_ydxi::yd#1 2.0 -(byte) bitmap_line_ydxi::yd#5 143.28571428571428 +(byte) bitmap_line_ydxi::yd#0 1000001.0 +(byte) bitmap_line_ydxi::yd#1 1000001.0 +(byte) bitmap_line_ydxi::yd#5 1.428714286E9 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$1 2.00000000002E11 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 +(word) bitmap_plot::plotter#0 5.00000000005E10 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 2.0 +(word) bitmap_plot::plotter_x#0 1.00000000001E11 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 4.0 +(word) bitmap_plot::plotter_y#0 2.00000000002E11 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 1001.0 -(byte) bitmap_plot::x#1 1001.0 -(byte) bitmap_plot::x#2 1001.0 -(byte) bitmap_plot::x#3 1001.0 -(byte) bitmap_plot::x#4 1002.5 +(byte) bitmap_plot::x#0 1.0000000001E10 +(byte) bitmap_plot::x#1 1.0000000001E10 +(byte) bitmap_plot::x#2 1.0000000001E10 +(byte) bitmap_plot::x#3 1.0000000001E10 +(byte) bitmap_plot::x#4 8.500000000175E10 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 2002.0 -(byte) bitmap_plot::y#1 2002.0 -(byte) bitmap_plot::y#2 2002.0 -(byte) bitmap_plot::y#3 2002.0 -(byte) bitmap_plot::y#4 2004.0 +(byte) bitmap_plot::y#0 2.0000000002E10 +(byte) bitmap_plot::y#1 2.0000000002E10 +(byte) bitmap_plot::y#2 2.0000000002E10 +(byte) bitmap_plot::y#3 2.0000000002E10 +(byte) bitmap_plot::y#4 1.20000000003E11 (void()) init_screen() (byte*) init_screen::c -(byte*) init_screen::c#1 22.0 -(byte*) init_screen::c#2 14.666666666666666 +(byte*) init_screen::c#1 2002.0 +(byte*) init_screen::c#2 1334.6666666666667 (void()) lines() (byte) lines::l -(byte) lines::l#1 202.0 -(byte) lines::l#2 101.0 +(byte) lines::l#1 200002.0 +(byte) lines::l#2 100001.0 (void()) main() Initial phi equivalence classes @@ -3666,32 +3666,32 @@ bitmap_init: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:65 [ bitmap_init::$7 ] has ALU potential. -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ lines::l#2 lines::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:40 [ bitmap_line::x0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:41 [ bitmap_line::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:42 [ bitmap_line::y0#0 ] Removing always clobbered register reg byte a as potential for zp[1]:43 [ bitmap_line::y1#0 ] -Statement [28] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a +Statement [28] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:44 [ bitmap_line::xd#2 ] -Statement [43] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [57] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [59] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a +Statement [43] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [57] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [59] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:47 [ bitmap_line::xd#1 ] -Statement [73] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [88] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [73] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [88] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Statement [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [103] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [103] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] @@ -3713,9 +3713,9 @@ Removing always clobbered register reg byte a as potential for zp[1]:25 [ bitmap Removing always clobbered register reg byte a as potential for zp[1]:26 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [104] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [105] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [106] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [104] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [105] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [106] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ lines::l#2 lines::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] @@ -3741,68 +3741,68 @@ Removing always clobbered register reg byte y as potential for zp[1]:25 [ bitmap Removing always clobbered register reg byte y as potential for zp[1]:26 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [107] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [110] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [125] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [140] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [156] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [158] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [160] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [161] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [164] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [107] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [110] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [125] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [140] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [156] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [158] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [160] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [161] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [164] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ 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[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [175] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [175] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Statement [176] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [191] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [176] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [191] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ) always clobbers reg byte a -Statement [28] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ) always clobbers reg byte a -Statement [43] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [57] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [59] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ) always clobbers reg byte a -Statement [73] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ) always clobbers reg byte a -Statement [88] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [103] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [104] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [105] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [106] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [107] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [110] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [125] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [140] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [156] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a -Statement [158] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [160] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [161] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [164] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [175] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [176] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [184] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [191] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 ] { } ) always clobbers reg byte a +Statement [28] (byte) bitmap_line::yd#2 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#2 ] { } ) always clobbers reg byte a +Statement [43] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#2 bitmap_line::yd#1 ] { } ) always clobbers reg byte a +Statement [57] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] { } ) always clobbers reg byte a +Statement [59] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#10 ] { } ) always clobbers reg byte a +Statement [73] (byte) bitmap_line::yd#11 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] ( main:2::lines:14::bitmap_line:23 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#11 ] { } ) always clobbers reg byte a +Statement [88] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [103] (word) bitmap_plot::plotter_x#0 ← *((const byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [104] (word) bitmap_plot::plotter_y#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [105] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a +Statement [106] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y +Statement [107] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#0 = bitmap_line_xdyi::yd#2 bitmap_line::yd#2 } { bitmap_line_xdyi::x#0 = bitmap_line_xdyi::x#6 bitmap_line::x1#0 } { bitmap_line_xdyi::y#0 = bitmap_line_xdyi::y#5 bitmap_line::y1#0 } { bitmap_line_xdyi::xd#0 = bitmap_line_xdyi::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyi::x1#0 = bitmap_line_xdyi::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { bitmap_line_xdyi::yd#1 = bitmap_line_xdyi::yd#2 bitmap_line::yd#11 } { bitmap_line_xdyi::x#1 = bitmap_line_xdyi::x#6 bitmap_line::x0#0 } { bitmap_line_xdyi::y#1 = bitmap_line_xdyi::y#5 bitmap_line::y0#0 } { bitmap_line_xdyi::xd#1 = bitmap_line_xdyi::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyi::x1#1 = bitmap_line_xdyi::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y +Statement [110] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:35 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#0 = bitmap_line_ydxi::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxi::x#0 = bitmap_line_ydxi::x#5 bitmap_line::x1#0 } { bitmap_line_ydxi::y#0 = bitmap_line_ydxi::y#6 bitmap_line::y1#0 } { bitmap_line_ydxi::yd#0 = bitmap_line_ydxi::yd#5 bitmap_line::yd#2 } { bitmap_line_ydxi::y1#0 = bitmap_line_ydxi::y1#6 bitmap_line::y0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxi:80 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { bitmap_line_ydxi::xd#1 = bitmap_line_ydxi::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxi::x#1 = bitmap_line_ydxi::x#5 bitmap_line::x0#0 } { bitmap_line_ydxi::y#1 = bitmap_line_ydxi::y#6 bitmap_line::y0#0 } { bitmap_line_ydxi::yd#1 = bitmap_line_ydxi::yd#5 bitmap_line::yd#11 } { bitmap_line_ydxi::y1#1 = bitmap_line_ydxi::y1#6 bitmap_line::y1#0 } } ) always clobbers reg byte a +Statement [125] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:56 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#0 = bitmap_line_xdyd::yd#2 bitmap_line::yd#1 } { bitmap_line_xdyd::x#0 = bitmap_line_xdyd::x#6 bitmap_line::x1#0 } { bitmap_line_xdyd::y#0 = bitmap_line_xdyd::y#5 bitmap_line::y1#0 } { bitmap_line_xdyd::xd#0 = bitmap_line_xdyd::xd#5 bitmap_line::xd#2 } { bitmap_line_xdyd::x1#0 = bitmap_line_xdyd::x1#6 bitmap_line::x0#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_xdyd:72 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { bitmap_line_xdyd::yd#1 = bitmap_line_xdyd::yd#2 bitmap_line::yd#10 } { bitmap_line_xdyd::x#1 = bitmap_line_xdyd::x#6 bitmap_line::x0#0 } { bitmap_line_xdyd::y#1 = bitmap_line_xdyd::y#5 bitmap_line::y0#0 } { bitmap_line_xdyd::xd#1 = bitmap_line_xdyd::xd#5 bitmap_line::xd#1 } { bitmap_line_xdyd::x1#1 = bitmap_line_xdyd::x1#6 bitmap_line::x1#0 } } ) always clobbers reg byte a +Statement [140] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:50 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#0 = bitmap_line_ydxd::xd#2 bitmap_line::xd#2 } { bitmap_line_ydxd::x#0 = bitmap_line_ydxd::x#5 bitmap_line::x0#0 } { bitmap_line_ydxd::y#0 = bitmap_line_ydxd::y#7 bitmap_line::y0#0 } { bitmap_line_ydxd::yd#0 = bitmap_line_ydxd::yd#5 bitmap_line::yd#1 } { bitmap_line_ydxd::y1#0 = bitmap_line_ydxd::y1#6 bitmap_line::y1#0 } } main:2::lines:14::bitmap_line:23::bitmap_line_ydxd:66 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { bitmap_line_ydxd::xd#1 = bitmap_line_ydxd::xd#2 bitmap_line::xd#1 } { bitmap_line_ydxd::x#1 = bitmap_line_ydxd::x#5 bitmap_line::x1#0 } { bitmap_line_ydxd::y#1 = bitmap_line_ydxd::y#7 bitmap_line::y1#0 } { bitmap_line_ydxd::yd#1 = bitmap_line_ydxd::yd#5 bitmap_line::yd#10 } { bitmap_line_ydxd::y1#1 = bitmap_line_ydxd::y1#6 bitmap_line::y0#0 } } ) always clobbers reg byte a +Statement [156] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a +Statement [158] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [160] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_xhi) w= *((const byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [161] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [164] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a +Statement [175] *((const byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [176] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a +Statement [184] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a +Statement [191] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ lines::l#2 lines::l#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] : zp[1]:4 , reg byte x , @@ -3864,20 +3864,20 @@ Potential registers zp[1]:66 [ bitmap_init::$8 ] : zp[1]:66 , reg byte a , reg b Potential registers zp[1]:67 [ bitmap_init::$9 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_plot] 10,012: zp[1]:10 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 5,006.5: zp[1]:9 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp[2]:53 [ bitmap_plot::plotter_y#0 ] 4: zp[1]:57 [ bitmap_plot::$1 ] 2: zp[2]:51 [ bitmap_plot::plotter_x#0 ] 1: zp[2]:55 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_line_xdyi] 4,742.47: zp[1]:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 2,579.29: zp[1]:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 2,002: zp[1]:50 [ bitmap_line_xdyi::$6 ] 1,131.22: zp[1]:6 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 147.29: zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 79.93: zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 74.45: zp[1]:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] -Uplift Scope [bitmap_line_xdyd] 4,742.47: zp[1]:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 2,579.29: zp[1]:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 2,002: zp[1]:59 [ bitmap_line_xdyd::$6 ] 1,131.22: zp[1]:20 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 147.29: zp[1]:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 79.93: zp[1]:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 74.45: zp[1]:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] -Uplift Scope [bitmap_line_ydxi] 4,742.47: zp[1]:16 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 2,579.29: zp[1]:14 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 2,002: zp[1]:58 [ bitmap_line_ydxi::$6 ] 1,131.22: zp[1]:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 147.29: zp[1]:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 79.93: zp[1]:11 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 74.45: zp[1]:13 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] -Uplift Scope [bitmap_line_ydxd] 4,742.47: zp[1]:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 2,579.29: zp[1]:26 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 2,002: zp[1]:60 [ bitmap_line_ydxd::$6 ] 1,131.22: zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 147.29: zp[1]:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 79.93: zp[1]:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 74.45: zp[1]:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplift Scope [bitmap_clear] 227.6: zp[2]:32 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp[1]:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:61 [ bitmap_clear::bitmap#0 ] -Uplift Scope [lines] 303: zp[1]:2 [ lines::l#2 lines::l#1 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 24.93: zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 23.83: zp[1]:35 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:37 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:63 [ bitmap_init::$0 ] 22: zp[1]:65 [ bitmap_init::$7 ] 22: zp[1]:66 [ bitmap_init::$8 ] 22: zp[1]:67 [ bitmap_init::$9 ] 5.5: zp[1]:64 [ bitmap_init::$10 ] -Uplift Scope [init_screen] 36.67: zp[2]:29 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [bitmap_line] 6.25: zp[1]:43 [ bitmap_line::y1#0 ] 5.95: zp[1]:42 [ bitmap_line::y0#0 ] 5.41: zp[1]:41 [ bitmap_line::x1#0 ] 5.17: zp[1]:40 [ bitmap_line::x0#0 ] 0.89: zp[1]:45 [ bitmap_line::yd#2 ] 0.89: zp[1]:46 [ bitmap_line::yd#1 ] 0.89: zp[1]:48 [ bitmap_line::yd#10 ] 0.89: zp[1]:49 [ bitmap_line::yd#11 ] 0.7: zp[1]:44 [ bitmap_line::xd#2 ] 0.7: zp[1]:47 [ bitmap_line::xd#1 ] +Uplift Scope [bitmap_plot] 200,000,000,011: zp[1]:10 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 200,000,000,002: zp[2]:53 [ bitmap_plot::plotter_y#0 ] 200,000,000,002: zp[1]:57 [ bitmap_plot::$1 ] 125,000,000,005.75: zp[1]:9 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 100,000,000,001: zp[2]:51 [ bitmap_plot::plotter_x#0 ] 50,000,000,000.5: zp[2]:55 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line_xdyi] 47,355,333,340.27: zp[1]:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 25,722,714,290.93: zp[1]:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 20,000,000,002: zp[1]:50 [ bitmap_line_xdyi::$6 ] 11,259,300,003.67: zp[1]:6 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] 1,430,714,288: zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] 719,142,861.43: zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] 715,761,906.31: zp[1]:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] +Uplift Scope [bitmap_line_xdyd] 47,355,333,340.27: zp[1]:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 25,722,714,290.93: zp[1]:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 20,000,000,002: zp[1]:59 [ bitmap_line_xdyd::$6 ] 11,259,300,003.67: zp[1]:20 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] 1,430,714,288: zp[1]:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] 719,142,861.43: zp[1]:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] 715,761,906.31: zp[1]:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] +Uplift Scope [bitmap_line_ydxi] 47,355,333,340.27: zp[1]:16 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 25,722,714,290.93: zp[1]:14 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 20,000,000,002: zp[1]:58 [ bitmap_line_ydxi::$6 ] 11,259,300,003.67: zp[1]:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] 1,430,714,288: zp[1]:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] 719,142,861.43: zp[1]:11 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] 715,761,906.31: zp[1]:13 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ] +Uplift Scope [bitmap_line_ydxd] 47,355,333,340.27: zp[1]:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 25,722,714,290.93: zp[1]:26 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 20,000,000,002: zp[1]:60 [ bitmap_line_ydxd::$6 ] 11,259,300,003.67: zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 1,430,714,288: zp[1]:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 719,142,861.43: zp[1]:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 715,761,906.31: zp[1]:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplift Scope [bitmap_line] 605,000.65: zp[1]:43 [ bitmap_line::y1#0 ] 576,191.1: zp[1]:42 [ bitmap_line::y0#0 ] 444,444.89: zp[1]:45 [ bitmap_line::yd#2 ] 444,444.89: zp[1]:46 [ bitmap_line::yd#1 ] 444,444.89: zp[1]:48 [ bitmap_line::yd#10 ] 444,444.89: zp[1]:49 [ bitmap_line::yd#11 ] 413,636.82: zp[1]:41 [ bitmap_line::x1#0 ] 395,652.61: zp[1]:40 [ bitmap_line::x0#0 ] 350,000.35: zp[1]:44 [ bitmap_line::xd#2 ] 350,000.35: zp[1]:47 [ bitmap_line::xd#1 ] +Uplift Scope [lines] 300,003: zp[1]:2 [ lines::l#2 lines::l#1 ] +Uplift Scope [bitmap_clear] 22,007.6: zp[2]:32 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 21,668.83: zp[1]:34 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 1,835.17: zp[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 101: zp[2]:61 [ bitmap_clear::bitmap#0 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 2,268.93: zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,168.83: zp[1]:35 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:37 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:63 [ bitmap_init::$0 ] 2,002: zp[1]:65 [ bitmap_init::$7 ] 2,002: zp[1]:66 [ bitmap_init::$8 ] 2,002: zp[1]:67 [ bitmap_init::$9 ] 500.5: zp[1]:64 [ bitmap_init::$10 ] +Uplift Scope [init_screen] 3,336.67: zp[2]:29 [ init_screen::c#2 init_screen::c#1 ] Uplift Scope [main] Uplift Scope [] -Uplifting [bitmap_plot] best 316401 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:53 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] zp[2]:51 [ bitmap_plot::plotter_x#0 ] zp[2]:55 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_plot] best 316401 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:53 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:51 [ bitmap_plot::plotter_x#0 ] zp[2]:55 [ bitmap_plot::plotter#0 ] Uplifting [bitmap_line_xdyi] best 307395 combination zp[1]:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] zp[1]:50 [ bitmap_line_xdyi::$6 ] reg byte x [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 ] zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] zp[1]:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 ] Limited combination testing to 100 combinations of 256 possible. Uplifting [bitmap_line_xdyd] best 298389 combination zp[1]:22 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:21 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:59 [ bitmap_line_xdyd::$6 ] reg byte x [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] zp[1]:18 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 ] zp[1]:17 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ] zp[1]:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] @@ -3886,13 +3886,13 @@ Uplifting [bitmap_line_ydxi] best 286383 combination zp[1]:16 [ bitmap_line_ydxi Limited combination testing to 100 combinations of 256 possible. Uplifting [bitmap_line_ydxd] best 274377 combination zp[1]:28 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte y [ bitmap_line_ydxd::$6 ] zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:24 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:23 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [bitmap_clear] best 273477 combination zp[2]:32 [ 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[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:61 [ bitmap_clear::bitmap#0 ] -Uplifting [lines] best 273477 combination zp[1]:2 [ lines::l#2 lines::l#1 ] -Uplifting [bitmap_init] best 272957 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:65 [ bitmap_init::$7 ] zp[1]:66 [ bitmap_init::$8 ] zp[1]:67 [ bitmap_init::$9 ] zp[1]:64 [ bitmap_init::$10 ] -Limited combination testing to 100 combinations of 34560 possible. -Uplifting [init_screen] best 272957 combination zp[2]:29 [ init_screen::c#2 init_screen::c#1 ] -Uplifting [bitmap_line] best 272643 combination reg byte y [ bitmap_line::y1#0 ] zp[1]:42 [ bitmap_line::y0#0 ] zp[1]:41 [ bitmap_line::x1#0 ] zp[1]:40 [ bitmap_line::x0#0 ] zp[1]:45 [ bitmap_line::yd#2 ] zp[1]:46 [ bitmap_line::yd#1 ] zp[1]:48 [ bitmap_line::yd#10 ] zp[1]:49 [ bitmap_line::yd#11 ] zp[1]:44 [ bitmap_line::xd#2 ] zp[1]:47 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 274063 combination reg byte y [ bitmap_line::y1#0 ] zp[1]:42 [ bitmap_line::y0#0 ] zp[1]:45 [ bitmap_line::yd#2 ] zp[1]:46 [ bitmap_line::yd#1 ] zp[1]:48 [ bitmap_line::yd#10 ] zp[1]:49 [ bitmap_line::yd#11 ] zp[1]:41 [ bitmap_line::x1#0 ] zp[1]:40 [ bitmap_line::x0#0 ] zp[1]:44 [ bitmap_line::xd#2 ] zp[1]:47 [ bitmap_line::xd#1 ] Limited combination testing to 100 combinations of 186624 possible. +Uplifting [lines] best 274063 combination zp[1]:2 [ lines::l#2 lines::l#1 ] +Uplifting [bitmap_clear] best 273163 combination zp[2]:32 [ 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[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:61 [ bitmap_clear::bitmap#0 ] +Uplifting [bitmap_init] best 272643 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:65 [ bitmap_init::$7 ] zp[1]:66 [ bitmap_init::$8 ] zp[1]:67 [ bitmap_init::$9 ] zp[1]:64 [ bitmap_init::$10 ] +Limited combination testing to 100 combinations of 34560 possible. +Uplifting [init_screen] best 272643 combination zp[2]:29 [ init_screen::c#2 init_screen::c#1 ] Uplifting [main] best 272643 combination Uplifting [] best 272643 combination Attempting to uplift remaining variables inzp[1]:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] @@ -3915,8 +3915,6 @@ Attempting to uplift remaining variables inzp[1]:15 [ bitmap_line_ydxi::y#3 bitm Uplifting [bitmap_line_ydxi] best 272643 combination zp[1]:15 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Uplifting [bitmap_line_ydxd] best 272643 combination zp[1]:27 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Attempting to uplift remaining variables inzp[1]:2 [ lines::l#2 lines::l#1 ] -Uplifting [lines] best 272643 combination zp[1]:2 [ lines::l#2 lines::l#1 ] Attempting to uplift remaining variables inzp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Uplifting [bitmap_line_xdyi] best 272643 combination zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp[1]:12 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ] @@ -3941,6 +3939,26 @@ Attempting to uplift remaining variables inzp[1]:19 [ bitmap_line_xdyd::x1#6 bit Uplifting [bitmap_line_xdyd] best 272643 combination zp[1]:19 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 ] Attempting to uplift remaining variables inzp[1]:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Uplifting [bitmap_line_ydxd] best 272643 combination zp[1]:25 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Attempting to uplift remaining variables inzp[1]:42 [ bitmap_line::y0#0 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:42 [ bitmap_line::y0#0 ] +Attempting to uplift remaining variables inzp[1]:45 [ bitmap_line::yd#2 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:45 [ bitmap_line::yd#2 ] +Attempting to uplift remaining variables inzp[1]:46 [ bitmap_line::yd#1 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:46 [ bitmap_line::yd#1 ] +Attempting to uplift remaining variables inzp[1]:48 [ bitmap_line::yd#10 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:48 [ bitmap_line::yd#10 ] +Attempting to uplift remaining variables inzp[1]:49 [ bitmap_line::yd#11 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:49 [ bitmap_line::yd#11 ] +Attempting to uplift remaining variables inzp[1]:41 [ bitmap_line::x1#0 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:41 [ bitmap_line::x1#0 ] +Attempting to uplift remaining variables inzp[1]:40 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:40 [ bitmap_line::x0#0 ] +Attempting to uplift remaining variables inzp[1]:44 [ bitmap_line::xd#2 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:44 [ bitmap_line::xd#2 ] +Attempting to uplift remaining variables inzp[1]:47 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 272643 combination zp[1]:47 [ bitmap_line::xd#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ lines::l#2 lines::l#1 ] +Uplifting [lines] best 272643 combination zp[1]:2 [ lines::l#2 lines::l#1 ] Attempting to uplift remaining variables inzp[1]:65 [ bitmap_init::$7 ] Uplifting [bitmap_init] best 272583 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:66 [ bitmap_init::$8 ] @@ -3949,26 +3967,8 @@ Attempting to uplift remaining variables inzp[1]:67 [ bitmap_init::$9 ] Uplifting [bitmap_init] best 272463 combination reg byte a [ bitmap_init::$9 ] Attempting to uplift remaining variables inzp[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Uplifting [bitmap_clear] best 272463 combination zp[1]:31 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp[1]:42 [ bitmap_line::y0#0 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:42 [ bitmap_line::y0#0 ] Attempting to uplift remaining variables inzp[1]:64 [ bitmap_init::$10 ] Uplifting [bitmap_init] best 272463 combination zp[1]:64 [ bitmap_init::$10 ] -Attempting to uplift remaining variables inzp[1]:41 [ bitmap_line::x1#0 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:41 [ bitmap_line::x1#0 ] -Attempting to uplift remaining variables inzp[1]:40 [ bitmap_line::x0#0 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:40 [ bitmap_line::x0#0 ] -Attempting to uplift remaining variables inzp[1]:45 [ bitmap_line::yd#2 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:45 [ bitmap_line::yd#2 ] -Attempting to uplift remaining variables inzp[1]:46 [ bitmap_line::yd#1 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:46 [ bitmap_line::yd#1 ] -Attempting to uplift remaining variables inzp[1]:48 [ bitmap_line::yd#10 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:48 [ bitmap_line::yd#10 ] -Attempting to uplift remaining variables inzp[1]:49 [ bitmap_line::yd#11 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:49 [ bitmap_line::yd#11 ] -Attempting to uplift remaining variables inzp[1]:44 [ bitmap_line::xd#2 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:44 [ bitmap_line::xd#2 ] -Attempting to uplift remaining variables inzp[1]:47 [ bitmap_line::xd#1 ] -Uplifting [bitmap_line] best 272463 combination zp[1]:47 [ bitmap_line::xd#1 ] Coalescing zero page register [ zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 ] ] with [ zp[1]:45 [ bitmap_line::yd#2 ] ] - score: 1 Coalescing zero page register [ zp[1]:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 bitmap_line::yd#2 ] ] with [ zp[1]:49 [ bitmap_line::yd#11 ] ] - score: 1 Coalescing zero page register [ zp[1]:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 ] ] with [ zp[1]:44 [ bitmap_line::xd#2 ] ] - score: 1 @@ -5178,23 +5178,23 @@ FINAL SYMBOL TABLE (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:9 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:9 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:9 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:9 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:9 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:9 101.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:9 4200.6 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:9 15502.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:9 2103.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:9 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 15001.5 +(byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:8 16.5 -(byte) bitmap_clear::y#4 y zp[1]:8 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:8 1501.5 +(byte) bitmap_clear::y#4 y zp[1]:8 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:14 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 2002.0 +(byte~) bitmap_init::$10 zp[1]:14 500.5 +(byte~) bitmap_init::$7 reg byte a 2002.0 +(byte~) bitmap_init::$8 reg byte a 2002.0 +(byte~) bitmap_init::$9 reg byte a 2002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -5204,19 +5204,19 @@ FINAL SYMBOL TABLE (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 1001.0 +(byte) bitmap_init::bits#3 reg byte y 600.5999999999999 +(byte) bitmap_init::bits#4 reg byte y 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:9 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:9 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:9 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:9 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:9 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:9 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -5234,194 +5234,194 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp[1]:3 5.173913043478264 +(byte) bitmap_line::x0#0 x0 zp[1]:3 395652.6086956522 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 x1 zp[1]:6 5.409090909090908 +(byte) bitmap_line::x1#0 x1 zp[1]:6 413636.81818181823 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 xd zp[1]:2 0.7 -(byte) bitmap_line::xd#2 xd zp[1]:2 0.7 +(byte) bitmap_line::xd#1 xd zp[1]:2 350000.35 +(byte) bitmap_line::xd#2 xd zp[1]:2 350000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 y0 zp[1]:4 5.952380952380948 +(byte) bitmap_line::y0#0 y0 zp[1]:4 576191.0952380954 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 reg byte y 6.249999999999996 +(byte) bitmap_line::y1#0 reg byte y 605000.65 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 yd zp[1]:5 0.8888888888888888 -(byte) bitmap_line::yd#10 yd zp[1]:5 0.8888888888888888 -(byte) bitmap_line::yd#11 yd_1 zp[1]:14 0.8888888888888888 -(byte) bitmap_line::yd#2 yd_1 zp[1]:14 0.8888888888888888 +(byte) bitmap_line::yd#1 yd zp[1]:5 444444.8888888889 +(byte) bitmap_line::yd#10 yd zp[1]:5 444444.8888888889 +(byte) bitmap_line::yd#11 yd_1 zp[1]:14 444444.8888888889 +(byte) bitmap_line::yd#2 yd_1 zp[1]:14 444444.8888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 zp[1]:13 2002.0 +(byte~) bitmap_line_xdyd::$6 zp[1]:13 2.0000000002E10 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 e zp[1]:7 4.0 -(byte) bitmap_line_xdyd::e#1 e zp[1]:7 1334.6666666666667 -(byte) bitmap_line_xdyd::e#2 e zp[1]:7 2002.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:7 400.79999999999995 -(byte) bitmap_line_xdyd::e#6 e zp[1]:7 1001.0 +(byte) bitmap_line_xdyd::e#0 e zp[1]:7 2.0000002E7 +(byte) bitmap_line_xdyd::e#1 e zp[1]:7 1.3333333334666666E10 +(byte) bitmap_line_xdyd::e#2 e zp[1]:7 2.0000000002E10 +(byte) bitmap_line_xdyd::e#3 e zp[1]:7 4.0020000006000004E9 +(byte) bitmap_line_xdyd::e#6 e zp[1]:7 1.0000000001E10 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 reg byte x 0.8 -(byte) bitmap_line_xdyd::x#1 reg byte x 0.8 -(byte) bitmap_line_xdyd::x#2 reg byte x 375.375 -(byte) bitmap_line_xdyd::x#3 reg byte x 751.25 -(byte) bitmap_line_xdyd::x#6 reg byte x 3.0 +(byte) bitmap_line_xdyd::x#0 reg byte x 400000.4 +(byte) bitmap_line_xdyd::x#1 reg byte x 400000.4 +(byte) bitmap_line_xdyd::x#2 reg byte x 3.750000000375E9 +(byte) bitmap_line_xdyd::x#3 reg byte x 7.502500001E9 +(byte) bitmap_line_xdyd::x#6 reg byte x 6000001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:6 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:6 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:6 71.78571428571429 +(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:6 666667.3333333334 +(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:6 666667.3333333334 +(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:6 7.144285716428571E8 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyd::xd#1 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyd::xd#5 xd zp[1]:2 143.28571428571428 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyd::xd#1 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyd::xd#5 xd zp[1]:2 1.428714286E9 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 y zp[1]:4 1.0 -(byte) bitmap_line_xdyd::y#1 y zp[1]:4 1.0 -(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1001.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:4 572.2857142857142 -(byte) bitmap_line_xdyd::y#5 y zp[1]:4 3.0 -(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1001.0 +(byte) bitmap_line_xdyd::y#0 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyd::y#1 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1.0000000001E10 +(byte) bitmap_line_xdyd::y#3 y zp[1]:4 5.715714286428572E9 +(byte) bitmap_line_xdyd::y#5 y zp[1]:4 6000001.5 +(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1.0000000001E10 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 yd zp[1]:5 4.0 -(byte) bitmap_line_xdyd::yd#1 yd zp[1]:5 4.0 -(byte) bitmap_line_xdyd::yd#2 yd zp[1]:5 71.92857142857143 +(byte) bitmap_line_xdyd::yd#0 yd zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::yd#1 yd zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::yd#2 yd zp[1]:5 7.151428574285713E8 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 zp[1]:13 2002.0 +(byte~) bitmap_line_xdyi::$6 zp[1]:13 2.0000000002E10 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 e zp[1]:7 4.0 -(byte) bitmap_line_xdyi::e#1 e zp[1]:7 1334.6666666666667 -(byte) bitmap_line_xdyi::e#2 e zp[1]:7 2002.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:7 400.79999999999995 -(byte) bitmap_line_xdyi::e#6 e zp[1]:7 1001.0 +(byte) bitmap_line_xdyi::e#0 e zp[1]:7 2.0000002E7 +(byte) bitmap_line_xdyi::e#1 e zp[1]:7 1.3333333334666666E10 +(byte) bitmap_line_xdyi::e#2 e zp[1]:7 2.0000000002E10 +(byte) bitmap_line_xdyi::e#3 e zp[1]:7 4.0020000006000004E9 +(byte) bitmap_line_xdyi::e#6 e zp[1]:7 1.0000000001E10 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 reg byte x 0.8 -(byte) bitmap_line_xdyi::x#1 reg byte x 0.8 -(byte) bitmap_line_xdyi::x#2 reg byte x 375.375 -(byte) bitmap_line_xdyi::x#3 reg byte x 751.25 -(byte) bitmap_line_xdyi::x#6 reg byte x 3.0 +(byte) bitmap_line_xdyi::x#0 reg byte x 400000.4 +(byte) bitmap_line_xdyi::x#1 reg byte x 400000.4 +(byte) bitmap_line_xdyi::x#2 reg byte x 3.750000000375E9 +(byte) bitmap_line_xdyi::x#3 reg byte x 7.502500001E9 +(byte) bitmap_line_xdyi::x#6 reg byte x 6000001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:3 71.78571428571429 +(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:3 666667.3333333334 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:3 666667.3333333334 +(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:3 7.144285716428571E8 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyi::xd#5 xd zp[1]:2 143.28571428571428 +(byte) bitmap_line_xdyi::xd#0 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyi::xd#5 xd zp[1]:2 1.428714286E9 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 y zp[1]:4 1.0 -(byte) bitmap_line_xdyi::y#1 y zp[1]:4 1.0 -(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1001.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:4 572.2857142857142 -(byte) bitmap_line_xdyi::y#5 y zp[1]:4 3.0 -(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1001.0 +(byte) bitmap_line_xdyi::y#0 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyi::y#1 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1.0000000001E10 +(byte) bitmap_line_xdyi::y#3 y zp[1]:4 5.715714286428572E9 +(byte) bitmap_line_xdyi::y#5 y zp[1]:4 6000001.5 +(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1.0000000001E10 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyi::yd#1 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyi::yd#2 yd zp[1]:14 71.92857142857143 +(byte) bitmap_line_xdyi::yd#0 yd zp[1]:14 2000002.0 +(byte) bitmap_line_xdyi::yd#1 yd zp[1]:14 2000002.0 +(byte) bitmap_line_xdyi::yd#2 yd zp[1]:14 7.151428574285713E8 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 reg byte y 2002.0 +(byte~) bitmap_line_ydxd::$6 reg byte y 2.0000000002E10 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:13 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:13 1334.6666666666667 -(byte) bitmap_line_ydxd::e#2 e zp[1]:13 2002.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:13 400.79999999999995 -(byte) bitmap_line_ydxd::e#6 e zp[1]:13 1001.0 +(byte) bitmap_line_ydxd::e#0 e zp[1]:13 2.0000002E7 +(byte) bitmap_line_ydxd::e#1 e zp[1]:13 1.3333333334666666E10 +(byte) bitmap_line_ydxd::e#2 e zp[1]:13 2.0000000002E10 +(byte) bitmap_line_ydxd::e#3 e zp[1]:13 4.0020000006000004E9 +(byte) bitmap_line_ydxd::e#6 e zp[1]:13 1.0000000001E10 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxd::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxd::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxd::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxd::x#0 reg byte x 500000.5 +(byte) bitmap_line_ydxd::x#1 reg byte x 500000.5 +(byte) bitmap_line_ydxd::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_line_ydxd::x#3 reg byte x 5.715714286428572E9 +(byte) bitmap_line_ydxd::x#5 reg byte x 6000001.5 +(byte) bitmap_line_ydxd::x#6 reg byte x 1.0000000001E10 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxd::xd#1 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxd::xd#2 xd zp[1]:2 71.92857142857143 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxd::xd#1 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxd::xd#2 xd zp[1]:2 7.151428574285713E8 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 y zp[1]:7 0.8 -(byte) bitmap_line_ydxd::y#1 y zp[1]:7 0.8 -(byte) bitmap_line_ydxd::y#2 y zp[1]:7 751.25 -(byte) bitmap_line_ydxd::y#3 y zp[1]:7 375.375 -(byte) bitmap_line_ydxd::y#7 y zp[1]:7 3.0 +(byte) bitmap_line_ydxd::y#0 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxd::y#1 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxd::y#2 y zp[1]:7 7.502500001E9 +(byte) bitmap_line_ydxd::y#3 y zp[1]:7 3.750000000375E9 +(byte) bitmap_line_ydxd::y#7 y zp[1]:7 6000001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:4 71.78571428571429 +(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:4 7.144285716428571E8 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 yd zp[1]:5 2.0 -(byte) bitmap_line_ydxd::yd#1 yd zp[1]:5 2.0 -(byte) bitmap_line_ydxd::yd#5 yd zp[1]:5 143.28571428571428 +(byte) bitmap_line_ydxd::yd#0 yd zp[1]:5 1000001.0 +(byte) bitmap_line_ydxd::yd#1 yd zp[1]:5 1000001.0 +(byte) bitmap_line_ydxd::yd#5 yd zp[1]:5 1.428714286E9 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 reg byte y 2002.0 +(byte~) bitmap_line_ydxi::$6 reg byte y 2.0000000002E10 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1334.6666666666667 -(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2002.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:5 400.79999999999995 -(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1001.0 +(byte) bitmap_line_ydxi::e#0 e zp[1]:5 2.0000002E7 +(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1.3333333334666666E10 +(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2.0000000002E10 +(byte) bitmap_line_ydxi::e#3 e zp[1]:5 4.0020000006000004E9 +(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1.0000000001E10 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxi::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxi::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxi::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxi::x#0 reg byte x 500000.5 +(byte) bitmap_line_ydxi::x#1 reg byte x 500000.5 +(byte) bitmap_line_ydxi::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_line_ydxi::x#3 reg byte x 5.715714286428572E9 +(byte) bitmap_line_ydxi::x#5 reg byte x 6000001.5 +(byte) bitmap_line_ydxi::x#6 reg byte x 1.0000000001E10 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxi::xd#2 xd zp[1]:2 71.92857142857143 +(byte) bitmap_line_ydxi::xd#0 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxi::xd#2 xd zp[1]:2 7.151428574285713E8 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 y zp[1]:7 0.8 -(byte) bitmap_line_ydxi::y#1 y zp[1]:7 0.8 -(byte) bitmap_line_ydxi::y#2 y zp[1]:7 375.375 -(byte) bitmap_line_ydxi::y#3 y zp[1]:7 751.25 -(byte) bitmap_line_ydxi::y#6 y zp[1]:7 3.0 +(byte) bitmap_line_ydxi::y#0 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxi::y#1 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxi::y#2 y zp[1]:7 3.750000000375E9 +(byte) bitmap_line_ydxi::y#3 y zp[1]:7 7.502500001E9 +(byte) bitmap_line_ydxi::y#6 y zp[1]:7 6000001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:4 71.78571428571429 +(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:4 7.144285716428571E8 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 yd zp[1]:14 2.0 -(byte) bitmap_line_ydxi::yd#1 yd zp[1]:14 2.0 -(byte) bitmap_line_ydxi::yd#5 yd zp[1]:14 143.28571428571428 +(byte) bitmap_line_ydxi::yd#0 yd zp[1]:14 1000001.0 +(byte) bitmap_line_ydxi::yd#1 yd zp[1]:14 1000001.0 +(byte) bitmap_line_ydxi::yd#5 yd zp[1]:14 1.428714286E9 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.00000000002E11 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:9 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:9 5.00000000005E10 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:9 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:9 1.00000000001E11 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:11 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:11 2.00000000002E11 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 1001.0 -(byte) bitmap_plot::x#1 reg byte x 1001.0 -(byte) bitmap_plot::x#2 reg byte x 1001.0 -(byte) bitmap_plot::x#3 reg byte x 1001.0 -(byte) bitmap_plot::x#4 reg byte x 1002.5 +(byte) bitmap_plot::x#0 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#1 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#3 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#4 reg byte x 8.500000000175E10 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 2002.0 -(byte) bitmap_plot::y#1 reg byte y 2002.0 -(byte) bitmap_plot::y#2 reg byte y 2002.0 -(byte) bitmap_plot::y#3 reg byte y 2002.0 -(byte) bitmap_plot::y#4 reg byte y 2004.0 +(byte) bitmap_plot::y#0 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#1 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#2 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#3 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#4 reg byte y 1.20000000003E11 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -5432,16 +5432,16 @@ FINAL SYMBOL TABLE (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:9 22.0 -(byte*) init_screen::c#2 c zp[2]:9 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:9 2002.0 +(byte*) init_screen::c#2 c zp[2]:9 1334.6666666666667 (void()) lines() (label) lines::@1 (label) lines::@2 (label) lines::@3 (label) lines::@return (byte) lines::l -(byte) lines::l#1 l zp[1]:8 202.0 -(byte) lines::l#2 l zp[1]:8 101.0 +(byte) lines::l#1 l zp[1]:8 200002.0 +(byte) lines::l#2 l zp[1]:8 100001.0 (const byte) lines_cnt = (byte) 8 (const byte*) lines_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c } (const byte*) lines_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a } diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.sym b/src/test/ref/examples/bresenham/bitmap-bresenham.sym index 5e4b59e85..90e631ed7 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.sym +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.sym @@ -16,23 +16,23 @@ (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:9 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:9 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:9 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:9 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:9 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:9 101.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:9 4200.6 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:9 15502.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:9 2103.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:9 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 15001.5 +(byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:8 16.5 -(byte) bitmap_clear::y#4 y zp[1]:8 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:8 1501.5 +(byte) bitmap_clear::y#4 y zp[1]:8 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$0 reg byte a 22.0 -(byte~) bitmap_init::$10 zp[1]:14 5.5 -(byte~) bitmap_init::$7 reg byte a 22.0 -(byte~) bitmap_init::$8 reg byte a 22.0 -(byte~) bitmap_init::$9 reg byte a 22.0 +(byte~) bitmap_init::$0 reg byte a 2002.0 +(byte~) bitmap_init::$10 zp[1]:14 500.5 +(byte~) bitmap_init::$7 reg byte a 2002.0 +(byte~) bitmap_init::$8 reg byte a 2002.0 +(byte~) bitmap_init::$9 reg byte a 2002.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -42,19 +42,19 @@ (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte y 11.0 -(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005 -(byte) bitmap_init::bits#4 reg byte y 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte y 1001.0 +(byte) bitmap_init::bits#3 reg byte y 600.5999999999999 +(byte) bitmap_init::bits#4 reg byte y 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 7.333333333333334 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 667.3333333333333 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:9 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:9 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:9 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:9 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:9 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:9 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -72,194 +72,194 @@ (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp[1]:3 5.173913043478264 +(byte) bitmap_line::x0#0 x0 zp[1]:3 395652.6086956522 (byte) bitmap_line::x1 -(byte) bitmap_line::x1#0 x1 zp[1]:6 5.409090909090908 +(byte) bitmap_line::x1#0 x1 zp[1]:6 413636.81818181823 (byte) bitmap_line::xd -(byte) bitmap_line::xd#1 xd zp[1]:2 0.7 -(byte) bitmap_line::xd#2 xd zp[1]:2 0.7 +(byte) bitmap_line::xd#1 xd zp[1]:2 350000.35 +(byte) bitmap_line::xd#2 xd zp[1]:2 350000.35 (byte) bitmap_line::y0 -(byte) bitmap_line::y0#0 y0 zp[1]:4 5.952380952380948 +(byte) bitmap_line::y0#0 y0 zp[1]:4 576191.0952380954 (byte) bitmap_line::y1 -(byte) bitmap_line::y1#0 reg byte y 6.249999999999996 +(byte) bitmap_line::y1#0 reg byte y 605000.65 (byte) bitmap_line::yd -(byte) bitmap_line::yd#1 yd zp[1]:5 0.8888888888888888 -(byte) bitmap_line::yd#10 yd zp[1]:5 0.8888888888888888 -(byte) bitmap_line::yd#11 yd_1 zp[1]:14 0.8888888888888888 -(byte) bitmap_line::yd#2 yd_1 zp[1]:14 0.8888888888888888 +(byte) bitmap_line::yd#1 yd zp[1]:5 444444.8888888889 +(byte) bitmap_line::yd#10 yd zp[1]:5 444444.8888888889 +(byte) bitmap_line::yd#11 yd_1 zp[1]:14 444444.8888888889 +(byte) bitmap_line::yd#2 yd_1 zp[1]:14 444444.8888888889 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) -(byte~) bitmap_line_xdyd::$6 zp[1]:13 2002.0 +(byte~) bitmap_line_xdyd::$6 zp[1]:13 2.0000000002E10 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e -(byte) bitmap_line_xdyd::e#0 e zp[1]:7 4.0 -(byte) bitmap_line_xdyd::e#1 e zp[1]:7 1334.6666666666667 -(byte) bitmap_line_xdyd::e#2 e zp[1]:7 2002.0 -(byte) bitmap_line_xdyd::e#3 e zp[1]:7 400.79999999999995 -(byte) bitmap_line_xdyd::e#6 e zp[1]:7 1001.0 +(byte) bitmap_line_xdyd::e#0 e zp[1]:7 2.0000002E7 +(byte) bitmap_line_xdyd::e#1 e zp[1]:7 1.3333333334666666E10 +(byte) bitmap_line_xdyd::e#2 e zp[1]:7 2.0000000002E10 +(byte) bitmap_line_xdyd::e#3 e zp[1]:7 4.0020000006000004E9 +(byte) bitmap_line_xdyd::e#6 e zp[1]:7 1.0000000001E10 (byte) bitmap_line_xdyd::x -(byte) bitmap_line_xdyd::x#0 reg byte x 0.8 -(byte) bitmap_line_xdyd::x#1 reg byte x 0.8 -(byte) bitmap_line_xdyd::x#2 reg byte x 375.375 -(byte) bitmap_line_xdyd::x#3 reg byte x 751.25 -(byte) bitmap_line_xdyd::x#6 reg byte x 3.0 +(byte) bitmap_line_xdyd::x#0 reg byte x 400000.4 +(byte) bitmap_line_xdyd::x#1 reg byte x 400000.4 +(byte) bitmap_line_xdyd::x#2 reg byte x 3.750000000375E9 +(byte) bitmap_line_xdyd::x#3 reg byte x 7.502500001E9 +(byte) bitmap_line_xdyd::x#6 reg byte x 6000001.5 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:6 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:6 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:6 71.78571428571429 +(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:6 666667.3333333334 +(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:6 666667.3333333334 +(byte) bitmap_line_xdyd::x1#6 x1 zp[1]:6 7.144285716428571E8 (byte) bitmap_line_xdyd::xd -(byte) bitmap_line_xdyd::xd#0 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyd::xd#1 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyd::xd#5 xd zp[1]:2 143.28571428571428 +(byte) bitmap_line_xdyd::xd#0 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyd::xd#1 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyd::xd#5 xd zp[1]:2 1.428714286E9 (byte) bitmap_line_xdyd::y -(byte) bitmap_line_xdyd::y#0 y zp[1]:4 1.0 -(byte) bitmap_line_xdyd::y#1 y zp[1]:4 1.0 -(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1001.0 -(byte) bitmap_line_xdyd::y#3 y zp[1]:4 572.2857142857142 -(byte) bitmap_line_xdyd::y#5 y zp[1]:4 3.0 -(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1001.0 +(byte) bitmap_line_xdyd::y#0 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyd::y#1 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyd::y#2 y zp[1]:4 1.0000000001E10 +(byte) bitmap_line_xdyd::y#3 y zp[1]:4 5.715714286428572E9 +(byte) bitmap_line_xdyd::y#5 y zp[1]:4 6000001.5 +(byte) bitmap_line_xdyd::y#6 y zp[1]:4 1.0000000001E10 (byte) bitmap_line_xdyd::yd -(byte) bitmap_line_xdyd::yd#0 yd zp[1]:5 4.0 -(byte) bitmap_line_xdyd::yd#1 yd zp[1]:5 4.0 -(byte) bitmap_line_xdyd::yd#2 yd zp[1]:5 71.92857142857143 +(byte) bitmap_line_xdyd::yd#0 yd zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::yd#1 yd zp[1]:5 2000002.0 +(byte) bitmap_line_xdyd::yd#2 yd zp[1]:5 7.151428574285713E8 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) -(byte~) bitmap_line_xdyi::$6 zp[1]:13 2002.0 +(byte~) bitmap_line_xdyi::$6 zp[1]:13 2.0000000002E10 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e -(byte) bitmap_line_xdyi::e#0 e zp[1]:7 4.0 -(byte) bitmap_line_xdyi::e#1 e zp[1]:7 1334.6666666666667 -(byte) bitmap_line_xdyi::e#2 e zp[1]:7 2002.0 -(byte) bitmap_line_xdyi::e#3 e zp[1]:7 400.79999999999995 -(byte) bitmap_line_xdyi::e#6 e zp[1]:7 1001.0 +(byte) bitmap_line_xdyi::e#0 e zp[1]:7 2.0000002E7 +(byte) bitmap_line_xdyi::e#1 e zp[1]:7 1.3333333334666666E10 +(byte) bitmap_line_xdyi::e#2 e zp[1]:7 2.0000000002E10 +(byte) bitmap_line_xdyi::e#3 e zp[1]:7 4.0020000006000004E9 +(byte) bitmap_line_xdyi::e#6 e zp[1]:7 1.0000000001E10 (byte) bitmap_line_xdyi::x -(byte) bitmap_line_xdyi::x#0 reg byte x 0.8 -(byte) bitmap_line_xdyi::x#1 reg byte x 0.8 -(byte) bitmap_line_xdyi::x#2 reg byte x 375.375 -(byte) bitmap_line_xdyi::x#3 reg byte x 751.25 -(byte) bitmap_line_xdyi::x#6 reg byte x 3.0 +(byte) bitmap_line_xdyi::x#0 reg byte x 400000.4 +(byte) bitmap_line_xdyi::x#1 reg byte x 400000.4 +(byte) bitmap_line_xdyi::x#2 reg byte x 3.750000000375E9 +(byte) bitmap_line_xdyi::x#3 reg byte x 7.502500001E9 +(byte) bitmap_line_xdyi::x#6 reg byte x 6000001.5 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:3 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:3 71.78571428571429 +(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:3 666667.3333333334 +(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:3 666667.3333333334 +(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:3 7.144285716428571E8 (byte) bitmap_line_xdyi::xd -(byte) bitmap_line_xdyi::xd#0 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyi::xd#1 xd zp[1]:2 2.0 -(byte) bitmap_line_xdyi::xd#5 xd zp[1]:2 143.28571428571428 +(byte) bitmap_line_xdyi::xd#0 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyi::xd#1 xd zp[1]:2 1000001.0 +(byte) bitmap_line_xdyi::xd#5 xd zp[1]:2 1.428714286E9 (byte) bitmap_line_xdyi::y -(byte) bitmap_line_xdyi::y#0 y zp[1]:4 1.0 -(byte) bitmap_line_xdyi::y#1 y zp[1]:4 1.0 -(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1001.0 -(byte) bitmap_line_xdyi::y#3 y zp[1]:4 572.2857142857142 -(byte) bitmap_line_xdyi::y#5 y zp[1]:4 3.0 -(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1001.0 +(byte) bitmap_line_xdyi::y#0 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyi::y#1 y zp[1]:4 500000.5 +(byte) bitmap_line_xdyi::y#2 y zp[1]:4 1.0000000001E10 +(byte) bitmap_line_xdyi::y#3 y zp[1]:4 5.715714286428572E9 +(byte) bitmap_line_xdyi::y#5 y zp[1]:4 6000001.5 +(byte) bitmap_line_xdyi::y#6 y zp[1]:4 1.0000000001E10 (byte) bitmap_line_xdyi::yd -(byte) bitmap_line_xdyi::yd#0 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyi::yd#1 yd zp[1]:14 4.0 -(byte) bitmap_line_xdyi::yd#2 yd zp[1]:14 71.92857142857143 +(byte) bitmap_line_xdyi::yd#0 yd zp[1]:14 2000002.0 +(byte) bitmap_line_xdyi::yd#1 yd zp[1]:14 2000002.0 +(byte) bitmap_line_xdyi::yd#2 yd zp[1]:14 7.151428574285713E8 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) -(byte~) bitmap_line_ydxd::$6 reg byte y 2002.0 +(byte~) bitmap_line_ydxd::$6 reg byte y 2.0000000002E10 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp[1]:13 4.0 -(byte) bitmap_line_ydxd::e#1 e zp[1]:13 1334.6666666666667 -(byte) bitmap_line_ydxd::e#2 e zp[1]:13 2002.0 -(byte) bitmap_line_ydxd::e#3 e zp[1]:13 400.79999999999995 -(byte) bitmap_line_ydxd::e#6 e zp[1]:13 1001.0 +(byte) bitmap_line_ydxd::e#0 e zp[1]:13 2.0000002E7 +(byte) bitmap_line_ydxd::e#1 e zp[1]:13 1.3333333334666666E10 +(byte) bitmap_line_ydxd::e#2 e zp[1]:13 2.0000000002E10 +(byte) bitmap_line_ydxd::e#3 e zp[1]:13 4.0020000006000004E9 +(byte) bitmap_line_ydxd::e#6 e zp[1]:13 1.0000000001E10 (byte) bitmap_line_ydxd::x -(byte) bitmap_line_ydxd::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxd::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxd::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxd::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxd::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxd::x#0 reg byte x 500000.5 +(byte) bitmap_line_ydxd::x#1 reg byte x 500000.5 +(byte) bitmap_line_ydxd::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_line_ydxd::x#3 reg byte x 5.715714286428572E9 +(byte) bitmap_line_ydxd::x#5 reg byte x 6000001.5 +(byte) bitmap_line_ydxd::x#6 reg byte x 1.0000000001E10 (byte) bitmap_line_ydxd::xd -(byte) bitmap_line_ydxd::xd#0 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxd::xd#1 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxd::xd#2 xd zp[1]:2 71.92857142857143 +(byte) bitmap_line_ydxd::xd#0 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxd::xd#1 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxd::xd#2 xd zp[1]:2 7.151428574285713E8 (byte) bitmap_line_ydxd::y -(byte) bitmap_line_ydxd::y#0 y zp[1]:7 0.8 -(byte) bitmap_line_ydxd::y#1 y zp[1]:7 0.8 -(byte) bitmap_line_ydxd::y#2 y zp[1]:7 751.25 -(byte) bitmap_line_ydxd::y#3 y zp[1]:7 375.375 -(byte) bitmap_line_ydxd::y#7 y zp[1]:7 3.0 +(byte) bitmap_line_ydxd::y#0 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxd::y#1 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxd::y#2 y zp[1]:7 7.502500001E9 +(byte) bitmap_line_ydxd::y#3 y zp[1]:7 3.750000000375E9 +(byte) bitmap_line_ydxd::y#7 y zp[1]:7 6000001.5 (byte) bitmap_line_ydxd::y1 -(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:4 71.78571428571429 +(byte) bitmap_line_ydxd::y1#0 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxd::y1#1 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxd::y1#6 y1 zp[1]:4 7.144285716428571E8 (byte) bitmap_line_ydxd::yd -(byte) bitmap_line_ydxd::yd#0 yd zp[1]:5 2.0 -(byte) bitmap_line_ydxd::yd#1 yd zp[1]:5 2.0 -(byte) bitmap_line_ydxd::yd#5 yd zp[1]:5 143.28571428571428 +(byte) bitmap_line_ydxd::yd#0 yd zp[1]:5 1000001.0 +(byte) bitmap_line_ydxd::yd#1 yd zp[1]:5 1000001.0 +(byte) bitmap_line_ydxd::yd#5 yd zp[1]:5 1.428714286E9 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) -(byte~) bitmap_line_ydxi::$6 reg byte y 2002.0 +(byte~) bitmap_line_ydxi::$6 reg byte y 2.0000000002E10 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp[1]:5 4.0 -(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1334.6666666666667 -(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2002.0 -(byte) bitmap_line_ydxi::e#3 e zp[1]:5 400.79999999999995 -(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1001.0 +(byte) bitmap_line_ydxi::e#0 e zp[1]:5 2.0000002E7 +(byte) bitmap_line_ydxi::e#1 e zp[1]:5 1.3333333334666666E10 +(byte) bitmap_line_ydxi::e#2 e zp[1]:5 2.0000000002E10 +(byte) bitmap_line_ydxi::e#3 e zp[1]:5 4.0020000006000004E9 +(byte) bitmap_line_ydxi::e#6 e zp[1]:5 1.0000000001E10 (byte) bitmap_line_ydxi::x -(byte) bitmap_line_ydxi::x#0 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#1 reg byte x 1.0 -(byte) bitmap_line_ydxi::x#2 reg byte x 1001.0 -(byte) bitmap_line_ydxi::x#3 reg byte x 572.2857142857142 -(byte) bitmap_line_ydxi::x#5 reg byte x 3.0 -(byte) bitmap_line_ydxi::x#6 reg byte x 1001.0 +(byte) bitmap_line_ydxi::x#0 reg byte x 500000.5 +(byte) bitmap_line_ydxi::x#1 reg byte x 500000.5 +(byte) bitmap_line_ydxi::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_line_ydxi::x#3 reg byte x 5.715714286428572E9 +(byte) bitmap_line_ydxi::x#5 reg byte x 6000001.5 +(byte) bitmap_line_ydxi::x#6 reg byte x 1.0000000001E10 (byte) bitmap_line_ydxi::xd -(byte) bitmap_line_ydxi::xd#0 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxi::xd#1 xd zp[1]:2 4.0 -(byte) bitmap_line_ydxi::xd#2 xd zp[1]:2 71.92857142857143 +(byte) bitmap_line_ydxi::xd#0 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxi::xd#1 xd zp[1]:2 2000002.0 +(byte) bitmap_line_ydxi::xd#2 xd zp[1]:2 7.151428574285713E8 (byte) bitmap_line_ydxi::y -(byte) bitmap_line_ydxi::y#0 y zp[1]:7 0.8 -(byte) bitmap_line_ydxi::y#1 y zp[1]:7 0.8 -(byte) bitmap_line_ydxi::y#2 y zp[1]:7 375.375 -(byte) bitmap_line_ydxi::y#3 y zp[1]:7 751.25 -(byte) bitmap_line_ydxi::y#6 y zp[1]:7 3.0 +(byte) bitmap_line_ydxi::y#0 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxi::y#1 y zp[1]:7 400000.4 +(byte) bitmap_line_ydxi::y#2 y zp[1]:7 3.750000000375E9 +(byte) bitmap_line_ydxi::y#3 y zp[1]:7 7.502500001E9 +(byte) bitmap_line_ydxi::y#6 y zp[1]:7 6000001.5 (byte) bitmap_line_ydxi::y1 -(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:4 1.3333333333333333 -(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:4 71.78571428571429 +(byte) bitmap_line_ydxi::y1#0 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxi::y1#1 y1 zp[1]:4 666667.3333333334 +(byte) bitmap_line_ydxi::y1#6 y1 zp[1]:4 7.144285716428571E8 (byte) bitmap_line_ydxi::yd -(byte) bitmap_line_ydxi::yd#0 yd zp[1]:14 2.0 -(byte) bitmap_line_ydxi::yd#1 yd zp[1]:14 2.0 -(byte) bitmap_line_ydxi::yd#5 yd zp[1]:14 143.28571428571428 +(byte) bitmap_line_ydxi::yd#0 yd zp[1]:14 1000001.0 +(byte) bitmap_line_ydxi::yd#1 yd zp[1]:14 1000001.0 +(byte) bitmap_line_ydxi::yd#5 yd zp[1]:14 1.428714286E9 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) -(byte~) bitmap_plot::$1 reg byte a 4.0 +(byte~) bitmap_plot::$1 reg byte a 2.00000000002E11 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:9 1.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:9 5.00000000005E10 (word) bitmap_plot::plotter_x -(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:9 2.0 +(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:9 1.00000000001E11 (word) bitmap_plot::plotter_y -(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:11 4.0 +(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:11 2.00000000002E11 (byte) bitmap_plot::x -(byte) bitmap_plot::x#0 reg byte x 1001.0 -(byte) bitmap_plot::x#1 reg byte x 1001.0 -(byte) bitmap_plot::x#2 reg byte x 1001.0 -(byte) bitmap_plot::x#3 reg byte x 1001.0 -(byte) bitmap_plot::x#4 reg byte x 1002.5 +(byte) bitmap_plot::x#0 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#1 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#2 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#3 reg byte x 1.0000000001E10 +(byte) bitmap_plot::x#4 reg byte x 8.500000000175E10 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte y 2002.0 -(byte) bitmap_plot::y#1 reg byte y 2002.0 -(byte) bitmap_plot::y#2 reg byte y 2002.0 -(byte) bitmap_plot::y#3 reg byte y 2002.0 -(byte) bitmap_plot::y#4 reg byte y 2004.0 +(byte) bitmap_plot::y#0 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#1 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#2 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#3 reg byte y 2.0000000002E10 +(byte) bitmap_plot::y#4 reg byte y 1.20000000003E11 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } @@ -270,16 +270,16 @@ (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c -(byte*) init_screen::c#1 c zp[2]:9 22.0 -(byte*) init_screen::c#2 c zp[2]:9 14.666666666666666 +(byte*) init_screen::c#1 c zp[2]:9 2002.0 +(byte*) init_screen::c#2 c zp[2]:9 1334.6666666666667 (void()) lines() (label) lines::@1 (label) lines::@2 (label) lines::@3 (label) lines::@return (byte) lines::l -(byte) lines::l#1 l zp[1]:8 202.0 -(byte) lines::l#2 l zp[1]:8 101.0 +(byte) lines::l#1 l zp[1]:8 200002.0 +(byte) lines::l#2 l zp[1]:8 100001.0 (const byte) lines_cnt = (byte) 8 (const byte*) lines_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c } (const byte*) lines_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a } diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log index 6b66d2cc0..7417f09ca 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.log +++ b/src/test/ref/examples/chargen/chargen-analysis.log @@ -1096,77 +1096,77 @@ Inversing boolean not [158] (bool~) main::$34 ← (byte) main::pressed#2 == (byt Inversing boolean not [196] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte) 0 from [195] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte) 0 Inversing boolean not [221] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte) 0 from [220] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#8 (byte) keyboard_key_pressed::return#1 -Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1 -Alias (byte*) main::sc#2 = (byte*) main::sc#3 -Alias (byte*) print_str_at::at#0 = (byte*~) main::$0 -Alias (byte*) print_str_at::at#1 = (byte*~) main::$3 -Alias (byte*) print_str_at::at#2 = (byte*~) main::$6 -Alias (byte*) print_str_at::at#3 = (byte*~) main::$9 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#9 -Alias (byte) main::cur_pos#24 = (byte) main::cur_pos#25 -Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#3 -Alias (byte) main::cur_pos#22 = (byte) main::cur_pos#23 -Alias (byte) keyboard_key_pressed::return#11 = (byte) keyboard_key_pressed::return#4 -Alias (byte) main::cur_pos#20 = (byte) main::cur_pos#21 -Alias (byte) keyboard_key_pressed::return#12 = (byte) keyboard_key_pressed::return#5 -Alias (byte) main::cur_pos#18 = (byte) main::cur_pos#19 -Alias (byte) keyboard_key_pressed::return#13 = (byte) keyboard_key_pressed::return#6 -Alias (byte) main::cur_pos#13 = (byte) main::cur_pos#16 (byte) main::cur_pos#17 (byte) main::cur_pos#14 -Alias (byte) keyboard_get_keycode::return#2 = (byte) keyboard_get_keycode::return#4 -Alias (byte) main::pressed#0 = (byte) main::pressed#3 -Alias (byte) main::ch#2 = (byte) main::ch#7 (byte) main::ch#9 (byte) main::ch#8 -Alias (byte) main::cur_pos#10 = (byte) main::cur_pos#7 (byte) main::cur_pos#9 (byte) main::cur_pos#8 -Alias (byte) main::shift#5 = (byte) main::shift#7 (byte) main::shift#8 (byte) main::shift#6 -Alias (byte) main::key#0 = (byte~) main::$29 (byte) main::key#1 -Alias (byte) keyboard_key_pressed::return#14 = (byte) keyboard_key_pressed::return#7 -Alias (byte) main::pressed#1 = (byte~) main::$32 -Alias (byte) main::cur_pos#15 = (byte) main::cur_pos#5 (byte) main::cur_pos#6 -Alias (byte) main::ch#4 = (byte) main::ch#5 (byte) main::ch#6 -Alias (byte) main::shift#11 = (byte) main::shift#3 (byte) main::shift#4 -Alias (byte) main::cur_pos#12 = (byte) main::cur_pos#26 -Alias (byte*) print_str_at::str#5 = (byte*) print_str_at::str#6 -Alias (byte*) print_str_at::at#5 = (byte*) print_str_at::at#6 -Alias (byte*) plot_chargen::chargen#0 = (byte*~) plot_chargen::$2 (byte*) plot_chargen::chargen#2 -Alias (word) mul8u::return#2 = (word) mul8u::return#4 -Alias (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#6 -Alias (byte*) plot_chargen::sc#0 = (byte*~) plot_chargen::$8 -Alias (byte) plot_chargen::pos#3 = (byte) plot_chargen::pos#4 -Alias (byte*) plot_chargen::chargen#1 = (byte*~) plot_chargen::$9 -Alias (byte) plot_chargen::bits#1 = (byte~) plot_chargen::$13 -Alias (byte*) plot_chargen::sc#5 = (byte*) plot_chargen::sc#6 -Alias (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#4 -Alias (byte) plot_chargen::x#3 = (byte) plot_chargen::x#4 -Alias (byte) plot_chargen::y#5 = (byte) plot_chargen::y#6 -Alias (byte*) plot_chargen::chargen#8 = (byte*) plot_chargen::chargen#9 -Alias (byte*) plot_chargen::sc#1 = (byte*) plot_chargen::sc#4 -Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#4 -Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#7 -Alias (byte*) plot_chargen::sc#2 = (byte*~) plot_chargen::$15 +Alias mul8u::a#2 = mul8u::a#3 mul8u::a#6 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#3 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#8 keyboard_key_pressed::return#1 +Alias keyboard_get_keycode::return#0 = keyboard_get_keycode::return#3 keyboard_get_keycode::return#1 +Alias main::sc#2 = main::sc#3 +Alias print_str_at::at#0 = main::$0 +Alias print_str_at::at#1 = main::$3 +Alias print_str_at::at#2 = main::$6 +Alias print_str_at::at#3 = main::$9 +Alias main::i#2 = main::i#3 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#9 +Alias main::cur_pos#24 = main::cur_pos#25 +Alias keyboard_key_pressed::return#10 = keyboard_key_pressed::return#3 +Alias main::cur_pos#22 = main::cur_pos#23 +Alias keyboard_key_pressed::return#11 = keyboard_key_pressed::return#4 +Alias main::cur_pos#20 = main::cur_pos#21 +Alias keyboard_key_pressed::return#12 = keyboard_key_pressed::return#5 +Alias main::cur_pos#18 = main::cur_pos#19 +Alias keyboard_key_pressed::return#13 = keyboard_key_pressed::return#6 +Alias main::cur_pos#13 = main::cur_pos#16 main::cur_pos#17 main::cur_pos#14 +Alias keyboard_get_keycode::return#2 = keyboard_get_keycode::return#4 +Alias main::pressed#0 = main::pressed#3 +Alias main::ch#2 = main::ch#7 main::ch#9 main::ch#8 +Alias main::cur_pos#10 = main::cur_pos#7 main::cur_pos#9 main::cur_pos#8 +Alias main::shift#5 = main::shift#7 main::shift#8 main::shift#6 +Alias main::key#0 = main::$29 main::key#1 +Alias keyboard_key_pressed::return#14 = keyboard_key_pressed::return#7 +Alias main::pressed#1 = main::$32 +Alias main::cur_pos#15 = main::cur_pos#5 main::cur_pos#6 +Alias main::ch#4 = main::ch#5 main::ch#6 +Alias main::shift#11 = main::shift#3 main::shift#4 +Alias main::cur_pos#12 = main::cur_pos#26 +Alias print_str_at::str#5 = print_str_at::str#6 +Alias print_str_at::at#5 = print_str_at::at#6 +Alias plot_chargen::chargen#0 = plot_chargen::$2 plot_chargen::chargen#2 +Alias mul8u::return#2 = mul8u::return#4 +Alias plot_chargen::chargen#5 = plot_chargen::chargen#6 +Alias plot_chargen::sc#0 = plot_chargen::$8 +Alias plot_chargen::pos#3 = plot_chargen::pos#4 +Alias plot_chargen::chargen#1 = plot_chargen::$9 +Alias plot_chargen::bits#1 = plot_chargen::$13 +Alias plot_chargen::sc#5 = plot_chargen::sc#6 +Alias plot_chargen::bits#2 = plot_chargen::bits#4 +Alias plot_chargen::x#3 = plot_chargen::x#4 +Alias plot_chargen::y#5 = plot_chargen::y#6 +Alias plot_chargen::chargen#8 = plot_chargen::chargen#9 +Alias plot_chargen::sc#1 = plot_chargen::sc#4 +Alias plot_chargen::y#3 = plot_chargen::y#4 +Alias plot_chargen::chargen#4 = plot_chargen::chargen#7 +Alias plot_chargen::sc#2 = plot_chargen::$15 Successful SSA optimization Pass2AliasElimination -Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 -Alias (byte) main::cur_pos#11 = (byte) main::cur_pos#13 -Alias (byte) main::ch#2 = (byte) main::ch#4 (byte) main::ch#3 -Alias (byte) main::cur_pos#10 = (byte) main::cur_pos#15 (byte) main::cur_pos#12 -Alias (byte) main::shift#10 = (byte) main::shift#11 (byte) main::shift#5 -Alias (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#3 -Alias (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#5 -Alias (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#3 -Alias (byte) plot_chargen::x#2 = (byte) plot_chargen::x#3 -Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#5 -Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#8 +Alias mul8u::a#2 = mul8u::a#4 +Alias mul8u::mb#2 = mul8u::mb#3 +Alias main::cur_pos#11 = main::cur_pos#13 +Alias main::ch#2 = main::ch#4 main::ch#3 +Alias main::cur_pos#10 = main::cur_pos#15 main::cur_pos#12 +Alias main::shift#10 = main::shift#11 main::shift#5 +Alias plot_chargen::pos#2 = plot_chargen::pos#3 +Alias plot_chargen::sc#3 = plot_chargen::sc#5 +Alias plot_chargen::bits#2 = plot_chargen::bits#3 +Alias plot_chargen::x#2 = plot_chargen::x#3 +Alias plot_chargen::y#3 = plot_chargen::y#5 +Alias plot_chargen::chargen#4 = plot_chargen::chargen#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) mul8u::b#1 (byte) mul8u::b#0 Identical Phi Values (byte) mul8u::a#5 (byte) mul8u::a#1 @@ -1780,124 +1780,124 @@ print_str_at::@2: scope:[print_str_at] from print_str_at::@1 VARIABLE REGISTER WEIGHTS (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 103.0 +(byte) keyboard_get_keycode::ch#0 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 34.33333333333333 -(byte) keyboard_get_keycode::return#2 202.0 +(byte) keyboard_get_keycode::return#0 3667.333333333333 +(byte) keyboard_get_keycode::return#2 2002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 20002.0 (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#5 202.0 -(byte) keyboard_key_pressed::key#6 52.5 +(byte) keyboard_key_pressed::key#5 2002.0 +(byte) keyboard_key_pressed::key#6 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 19.75 -(byte) keyboard_key_pressed::return#10 22.0 -(byte) keyboard_key_pressed::return#11 22.0 -(byte) keyboard_key_pressed::return#12 22.0 -(byte) keyboard_key_pressed::return#13 22.0 -(byte) keyboard_key_pressed::return#14 202.0 -(byte) keyboard_key_pressed::return#2 22.0 +(byte) keyboard_key_pressed::return#0 1438.375 +(byte) keyboard_key_pressed::return#10 202.0 +(byte) keyboard_key_pressed::return#11 202.0 +(byte) keyboard_key_pressed::return#12 202.0 +(byte) keyboard_key_pressed::return#13 202.0 +(byte) keyboard_key_pressed::return#14 2002.0 +(byte) keyboard_key_pressed::return#2 202.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 4.0 +(byte) keyboard_key_pressed::rowidx#0 20002.0 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 36667.33333333333 +(byte) keyboard_matrix_read::return#2 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 4.0 +(byte) keyboard_matrix_read::rowid#0 110002.0 (void()) main() -(byte~) main::$15 22.0 -(byte~) main::$18 22.0 -(byte~) main::$21 22.0 -(byte~) main::$24 22.0 -(byte~) main::$27 22.0 +(byte~) main::$15 202.0 +(byte~) main::$18 202.0 +(byte~) main::$21 202.0 +(byte~) main::$24 202.0 +(byte~) main::$27 202.0 (byte) main::ch -(byte) main::ch#1 151.5 -(byte) main::ch#2 25.25 +(byte) main::ch#1 1501.5 +(byte) main::ch#2 250.25 (byte) main::cur_pos -(byte) main::cur_pos#11 8.52 -(byte) main::cur_pos#18 3.6666666666666665 -(byte) main::cur_pos#20 3.6666666666666665 -(byte) main::cur_pos#22 3.6666666666666665 -(byte) main::cur_pos#24 18.666666666666664 +(byte) main::cur_pos#11 84.12 +(byte) main::cur_pos#18 33.666666666666664 +(byte) main::cur_pos#20 33.666666666666664 +(byte) main::cur_pos#22 33.666666666666664 +(byte) main::cur_pos#24 183.66666666666669 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::key -(byte) main::key#0 151.5 +(byte) main::key#0 1501.5 (byte) main::pressed -(byte) main::pressed#1 202.0 -(byte) main::pressed#2 202.0 +(byte) main::pressed#1 2002.0 +(byte) main::pressed#2 2002.0 (byte*) main::sc -(byte*) main::sc#1 22.0 -(byte*) main::sc#2 14.666666666666666 +(byte*) main::sc#1 202.0 +(byte*) main::sc#2 134.66666666666666 (byte) main::shift -(byte) main::shift#9 5.315789473684211 +(byte) main::shift#9 52.68421052631579 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 2002.0 +(byte~) mul8u::$1 2.00000002E8 (byte) mul8u::a -(byte) mul8u::a#0 1001.0 -(byte) mul8u::a#1 2.0 -(byte) mul8u::a#2 667.6666666666667 +(byte) mul8u::a#0 1.00000001E8 +(byte) mul8u::a#1 55001.0 +(byte) mul8u::a#2 6.668333416666667E7 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 2002.0 -(word) mul8u::mb#2 429.0 +(word) mul8u::mb#1 2.00000002E8 +(word) mul8u::mb#2 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 2002.0 -(word) mul8u::res#2 500.83333333333337 -(word) mul8u::res#6 1001.0 +(word) mul8u::res#1 2.00000002E8 +(word) mul8u::res#2 5.0001667333333336E7 +(word) mul8u::res#6 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 4.0 +(word) mul8u::return#2 20002.0 (void()) plot_chargen((byte) plot_chargen::pos , (byte) plot_chargen::ch , (byte) plot_chargen::shift) -(word~) plot_chargen::$0 4.0 -(word~) plot_chargen::$1 4.0 -(byte~) plot_chargen::$10 20002.0 -(word~) plot_chargen::$7 4.0 +(word~) plot_chargen::$0 20002.0 +(word~) plot_chargen::$1 20002.0 +(byte~) plot_chargen::$10 2.00000002E8 +(word~) plot_chargen::$7 20002.0 (byte) plot_chargen::bits -(byte) plot_chargen::bits#0 2002.0 -(byte) plot_chargen::bits#1 6667.333333333333 -(byte) plot_chargen::bits#2 4429.142857142857 +(byte) plot_chargen::bits#0 2.0000002E7 +(byte) plot_chargen::bits#1 6.6666667333333336E7 +(byte) plot_chargen::bits#2 4.428571485714286E7 (byte) plot_chargen::c -(byte) plot_chargen::c#2 10001.0 +(byte) plot_chargen::c#2 1.00000001E8 (byte) plot_chargen::ch -(byte) plot_chargen::ch#1 101.0 -(byte) plot_chargen::ch#2 50.5 +(byte) plot_chargen::ch#1 1001.0 +(byte) plot_chargen::ch#2 500.5 (byte*) plot_chargen::chargen -(byte*) plot_chargen::chargen#0 3.0 -(byte*) plot_chargen::chargen#1 4.0 -(byte*) plot_chargen::chargen#5 45.68181818181818 +(byte*) plot_chargen::chargen#0 15001.5 +(byte*) plot_chargen::chargen#1 20002.0 +(byte*) plot_chargen::chargen#5 455454.6818181818 (byte) plot_chargen::pos -(byte) plot_chargen::pos#0 22.0 -(byte) plot_chargen::pos#1 67.33333333333333 -(byte) plot_chargen::pos#2 12.666666666666664 +(byte) plot_chargen::pos#0 202.0 +(byte) plot_chargen::pos#1 667.3333333333334 +(byte) plot_chargen::pos#2 1233.6666666666665 (byte*) plot_chargen::sc -(byte*) plot_chargen::sc#0 4.0 -(byte*) plot_chargen::sc#1 5250.75 -(byte*) plot_chargen::sc#2 667.3333333333334 -(byte*) plot_chargen::sc#3 5167.333333333333 -(byte*) plot_chargen::sc#7 1002.0 +(byte*) plot_chargen::sc#0 20002.0 +(byte*) plot_chargen::sc#1 5.250000075E7 +(byte*) plot_chargen::sc#2 6666667.333333333 +(byte*) plot_chargen::sc#3 5.1666667333333336E7 +(byte*) plot_chargen::sc#7 1.00050015E7 (byte) plot_chargen::shift -(byte) plot_chargen::shift#1 202.0 -(byte) plot_chargen::shift#2 20.599999999999998 +(byte) plot_chargen::shift#1 2002.0 +(byte) plot_chargen::shift#2 2200.4 (byte) plot_chargen::x -(byte) plot_chargen::x#1 15001.5 -(byte) plot_chargen::x#2 2500.25 +(byte) plot_chargen::x#1 1.500000015E8 +(byte) plot_chargen::x#2 2.500000025E7 (byte) plot_chargen::y -(byte) plot_chargen::y#1 1501.5 -(byte) plot_chargen::y#2 231.0 +(byte) plot_chargen::y#1 1.50000015E7 +(byte) plot_chargen::y#2 2307692.5384615385 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (byte*) print_str_at::at -(byte*) print_str_at::at#4 11.0 -(byte*) print_str_at::at#5 11.666666666666666 -(byte*) print_str_at::at#7 2.0 +(byte*) print_str_at::at#4 1001.0 +(byte*) print_str_at::at#5 1034.6666666666667 +(byte*) print_str_at::at#7 101.0 (byte*) print_str_at::str -(byte*) print_str_at::str#4 22.0 -(byte*) print_str_at::str#5 11.5 -(byte*) print_str_at::str#7 2.0 +(byte*) print_str_at::str#4 2002.0 +(byte*) print_str_at::str#5 1026.25 +(byte*) print_str_at::str#7 101.0 Initial phi equivalence classes [ main::sc#2 main::sc#1 ] @@ -3035,25 +3035,25 @@ print_str_at: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::sc#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [69] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [73] (word~) plot_chargen::$0 ← (word)(byte) plot_chargen::ch#2 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ) always clobbers reg byte a +Statement [6] if((byte*) main::sc#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [73] (word~) plot_chargen::$0 ← (word)(byte) plot_chargen::ch#2 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::shift#9 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::ch#2 main::ch#1 ] -Statement [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte) 3 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ) always clobbers reg byte a -Statement [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN + (word~) plot_chargen::$1 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ) always clobbers reg byte a -Statement [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word) $800 [ plot_chargen::pos#2 plot_chargen::chargen#1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] ) always clobbers reg byte a -Statement [79] *((const byte*) PROCPORT) ← (byte) $32 [ plot_chargen::pos#2 plot_chargen::chargen#5 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] ) always clobbers reg byte a -Statement [82] (word) mul8u::return#2 ← (word) mul8u::res#2 [ plot_chargen::chargen#5 mul8u::return#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 mul8u::return#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::return#2 ] ) always clobbers reg byte a -Statement [83] (word~) plot_chargen::$7 ← (word) mul8u::return#2 [ plot_chargen::chargen#5 plot_chargen::$7 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::$7 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::$7 ] ) always clobbers reg byte a -Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN+(byte) $28+(byte) 1 + (word~) plot_chargen::$7 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] ) always clobbers reg byte a -Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ) always clobbers reg byte a +Statement [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte) 3 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN + (word~) plot_chargen::$1 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word) $800 [ plot_chargen::pos#2 plot_chargen::chargen#1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [79] *((const byte*) PROCPORT) ← (byte) $32 [ plot_chargen::pos#2 plot_chargen::chargen#5 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [82] (word) mul8u::return#2 ← (word) mul8u::res#2 [ plot_chargen::chargen#5 mul8u::return#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 mul8u::return#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::return#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [83] (word~) plot_chargen::$7 ← (word) mul8u::return#2 [ plot_chargen::chargen#5 plot_chargen::$7 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::$7 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::$7 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN+(byte) $28+(byte) 1 + (word~) plot_chargen::$7 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] -Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ) always clobbers reg byte y +Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] @@ -3061,37 +3061,37 @@ Removing always clobbered register reg byte y as potential for zp[1]:18 [ plot_c Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::shift#9 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::ch#2 main::ch#1 ] -Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ) always clobbers reg byte a -Statement [100] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::plot_chargen:17 [ main::i#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 ] ) always clobbers reg byte a -Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [100] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::plot_chargen:17 [ main::i#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:21 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:27 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:39 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:45 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:58 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a +Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:21 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:54 [ keyboard_key_pressed::colidx#0 ] -Statement [122] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [129] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y -Statement [6] if((byte*) main::sc#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [69] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [73] (word~) plot_chargen::$0 ← (word)(byte) plot_chargen::ch#2 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ) always clobbers reg byte a -Statement [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte) 3 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ) always clobbers reg byte a -Statement [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN + (word~) plot_chargen::$1 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ) always clobbers reg byte a -Statement [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word) $800 [ plot_chargen::pos#2 plot_chargen::chargen#1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] ) always clobbers reg byte a -Statement [79] *((const byte*) PROCPORT) ← (byte) $32 [ plot_chargen::pos#2 plot_chargen::chargen#5 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] ) always clobbers reg byte a -Statement [82] (word) mul8u::return#2 ← (word) mul8u::res#2 [ plot_chargen::chargen#5 mul8u::return#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 mul8u::return#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::return#2 ] ) always clobbers reg byte a -Statement [83] (word~) plot_chargen::$7 ← (word) mul8u::return#2 [ plot_chargen::chargen#5 plot_chargen::$7 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::$7 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::$7 ] ) always clobbers reg byte a -Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN+(byte) $28+(byte) 1 + (word~) plot_chargen::$7 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] ) always clobbers reg byte a -Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ) always clobbers reg byte y -Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ) always clobbers reg byte a -Statement [100] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::plot_chargen:17 [ main::i#2 ] main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 ] ) always clobbers reg byte a -Statement [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:21 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:27 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:39 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:45 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:58 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a -Statement [122] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [129] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y -Statement [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y +Statement [122] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [129] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] { } ) always clobbers reg byte a reg byte y +Statement [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] { } ) always clobbers reg byte a reg byte y +Statement [6] if((byte*) main::sc#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [73] (word~) plot_chargen::$0 ← (word)(byte) plot_chargen::ch#2 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte) 3 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::$1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN + (word~) plot_chargen::$1 [ plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::shift#2 plot_chargen::pos#2 plot_chargen::chargen#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word) $800 [ plot_chargen::pos#2 plot_chargen::chargen#1 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [79] *((const byte*) PROCPORT) ← (byte) $32 [ plot_chargen::pos#2 plot_chargen::chargen#5 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::pos#2 plot_chargen::chargen#5 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [82] (word) mul8u::return#2 ← (word) mul8u::res#2 [ plot_chargen::chargen#5 mul8u::return#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 mul8u::return#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::return#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [83] (word~) plot_chargen::$7 ← (word) mul8u::return#2 [ plot_chargen::chargen#5 plot_chargen::$7 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::$7 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::$7 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN+(byte) $28+(byte) 1 + (word~) plot_chargen::$7 [ plot_chargen::chargen#5 plot_chargen::sc#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::sc#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#7 plot_chargen::bits#0 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a reg byte y +Statement [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::bits#2 plot_chargen::sc#3 plot_chargen::x#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte y +Statement [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte) $20 [ plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] ( main:2::plot_chargen:17 [ main::i#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 plot_chargen::y#2 plot_chargen::sc#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [100] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::plot_chargen:17 [ main::i#2 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 } } main:2::plot_chargen:66 [ main::cur_pos#11 main::shift#9 main::ch#2 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 } } ) always clobbers reg byte a +Statement [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:17::mul8u:81 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { plot_chargen::pos#0 = plot_chargen::pos#2 main::i#2 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } main:2::plot_chargen:66::mul8u:81 [ main::cur_pos#11 main::shift#9 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { plot_chargen::ch#1 = plot_chargen::ch#2 main::ch#2 } { plot_chargen::shift#1 = plot_chargen::shift#2 main::shift#9 } { plot_chargen::pos#1 = plot_chargen::pos#2 main::cur_pos#11 mul8u::a#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:21 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [122] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:21::keyboard_matrix_read:117 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:27::keyboard_matrix_read:117 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:117 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#11 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:39::keyboard_matrix_read:117 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#12 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:45::keyboard_matrix_read:117 [ main::cur_pos#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#13 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:117 [ main::cur_pos#11 main::shift#9 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::key#5 = keyboard_key_pressed::key#6 main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#14 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [129] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] { } ) always clobbers reg byte a reg byte y +Statement [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:8 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] { } main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] : zp[1]:5 , reg byte x , @@ -3143,68 +3143,70 @@ Potential registers zp[1]:60 [ keyboard_matrix_read::return#0 ] : zp[1]:60 , reg Potential registers zp[1]:61 [ keyboard_get_keycode::return#0 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plot_chargen] 20,002: zp[1]:52 [ plot_chargen::$10 ] 17,501.75: zp[1]:18 [ plot_chargen::x#2 plot_chargen::x#1 ] 13,098.48: zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] 12,091.42: zp[2]:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] 10,001: zp[1]:19 [ plot_chargen::c#2 ] 1,732.5: zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] 222.6: zp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] 151.5: zp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] 102: zp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] 52.68: zp[2]:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] 4: zp[2]:44 [ plot_chargen::$0 ] 4: zp[2]:46 [ plot_chargen::$1 ] 4: zp[2]:50 [ plot_chargen::$7 ] -Uplift Scope [mul8u] 3,503.83: zp[2]:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,431: zp[2]:23 [ mul8u::mb#2 mul8u::mb#1 ] 2,002: zp[1]:53 [ mul8u::$1 ] 1,670.67: zp[1]:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp[2]:48 [ mul8u::return#2 ] -Uplift Scope [main] 404: zp[1]:8 [ main::pressed#2 main::pressed#1 ] 176.75: zp[1]:7 [ main::ch#2 main::ch#1 ] 151.5: zp[1]:42 [ main::key#0 ] 38.19: zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] 36.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 27.5: zp[1]:4 [ main::i#2 main::i#1 ] 22: zp[1]:31 [ main::$15 ] 22: zp[1]:33 [ main::$18 ] 22: zp[1]:35 [ main::$21 ] 22: zp[1]:37 [ main::$24 ] 22: zp[1]:39 [ main::$27 ] 5.32: zp[1]:6 [ main::shift#9 ] -Uplift Scope [keyboard_key_pressed] 254.5: zp[1]:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] 202: zp[1]:43 [ keyboard_key_pressed::return#14 ] 22: zp[1]:30 [ keyboard_key_pressed::return#2 ] 22: zp[1]:32 [ keyboard_key_pressed::return#10 ] 22: zp[1]:34 [ keyboard_key_pressed::return#11 ] 22: zp[1]:36 [ keyboard_key_pressed::return#12 ] 22: zp[1]:38 [ keyboard_key_pressed::return#13 ] 19.75: zp[1]:59 [ keyboard_key_pressed::return#0 ] 4: zp[1]:55 [ keyboard_key_pressed::rowidx#0 ] 4: zp[1]:58 [ keyboard_key_pressed::$2 ] 0.67: zp[1]:54 [ keyboard_key_pressed::colidx#0 ] -Uplift Scope [keyboard_get_keycode] 202: zp[1]:41 [ keyboard_get_keycode::return#2 ] 103: zp[1]:40 [ keyboard_get_keycode::ch#0 ] 34.33: zp[1]:61 [ keyboard_get_keycode::return#0 ] -Uplift Scope [print_str_at] 35.5: zp[2]:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] 24.67: zp[2]:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:56 [ keyboard_matrix_read::rowid#0 ] 4: zp[1]:57 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:60 [ keyboard_matrix_read::return#0 ] +Uplift Scope [mul8u] 350,001,670.33: zp[2]:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 242,857,145.29: zp[2]:23 [ mul8u::mb#2 mul8u::mb#1 ] 200,000,002: zp[1]:53 [ mul8u::$1 ] 166,738,336.17: zp[1]:20 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 20,002: zp[2]:48 [ mul8u::return#2 ] +Uplift Scope [plot_chargen] 200,000,002: zp[1]:52 [ plot_chargen::$10 ] 175,000,001.75: zp[1]:18 [ plot_chargen::x#2 plot_chargen::x#1 ] 130,952,384.19: zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] 120,858,338.92: zp[2]:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] 100,000,001: zp[1]:19 [ plot_chargen::c#2 ] 17,307,694.04: zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] 490,458.18: zp[2]:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] 20,002: zp[2]:44 [ plot_chargen::$0 ] 20,002: zp[2]:46 [ plot_chargen::$1 ] 20,002: zp[2]:50 [ plot_chargen::$7 ] 4,202.4: zp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] 2,103: zp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] 1,501.5: zp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] +Uplift Scope [keyboard_matrix_read] 110,002: zp[1]:56 [ keyboard_matrix_read::rowid#0 ] 36,667.33: zp[1]:60 [ keyboard_matrix_read::return#0 ] 20,002: zp[1]:57 [ keyboard_matrix_read::return#2 ] +Uplift Scope [keyboard_key_pressed] 20,002: zp[1]:55 [ keyboard_key_pressed::rowidx#0 ] 20,002: zp[1]:58 [ keyboard_key_pressed::$2 ] 12,503.5: zp[1]:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] 3,333.67: zp[1]:54 [ keyboard_key_pressed::colidx#0 ] 2,002: zp[1]:43 [ keyboard_key_pressed::return#14 ] 1,438.38: zp[1]:59 [ keyboard_key_pressed::return#0 ] 202: zp[1]:30 [ keyboard_key_pressed::return#2 ] 202: zp[1]:32 [ keyboard_key_pressed::return#10 ] 202: zp[1]:34 [ keyboard_key_pressed::return#11 ] 202: zp[1]:36 [ keyboard_key_pressed::return#12 ] 202: zp[1]:38 [ keyboard_key_pressed::return#13 ] +Uplift Scope [keyboard_get_keycode] 11,002: zp[1]:40 [ keyboard_get_keycode::ch#0 ] 3,667.33: zp[1]:61 [ keyboard_get_keycode::return#0 ] 2,002: zp[1]:41 [ keyboard_get_keycode::return#2 ] +Uplift Scope [main] 4,004: zp[1]:8 [ main::pressed#2 main::pressed#1 ] 1,751.75: zp[1]:7 [ main::ch#2 main::ch#1 ] 1,501.5: zp[1]:42 [ main::key#0 ] 368.79: zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] 336.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 252.5: zp[1]:4 [ main::i#2 main::i#1 ] 202: zp[1]:31 [ main::$15 ] 202: zp[1]:33 [ main::$18 ] 202: zp[1]:35 [ main::$21 ] 202: zp[1]:37 [ main::$24 ] 202: zp[1]:39 [ main::$27 ] 52.68: zp[1]:6 [ main::shift#9 ] +Uplift Scope [print_str_at] 3,129.25: zp[2]:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] 2,136.67: zp[2]:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ] Uplift Scope [] -Uplifting [plot_chargen] best 819629 combination reg byte a [ plot_chargen::$10 ] reg byte x [ plot_chargen::x#2 plot_chargen::x#1 ] zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] zp[2]:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] reg byte a [ plot_chargen::c#2 ] zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] zp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] zp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] zp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] zp[2]:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] zp[2]:44 [ plot_chargen::$0 ] zp[2]:46 [ plot_chargen::$1 ] zp[2]:50 [ plot_chargen::$7 ] +Uplifting [mul8u] best 1050626 combination zp[2]:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:23 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:48 [ mul8u::return#2 ] +Uplifting [plot_chargen] best 810626 combination reg byte a [ plot_chargen::$10 ] reg byte x [ plot_chargen::x#2 plot_chargen::x#1 ] zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] zp[2]:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] reg byte a [ plot_chargen::c#2 ] zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] zp[2]:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] zp[2]:44 [ plot_chargen::$0 ] zp[2]:46 [ plot_chargen::$1 ] zp[2]:50 [ plot_chargen::$7 ] zp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] zp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] zp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] Limited combination testing to 100 combinations of 10368 possible. -Uplifting [mul8u] best 810626 combination zp[2]:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:23 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:48 [ mul8u::return#2 ] -Uplifting [main] best 808826 combination reg byte a [ main::pressed#2 main::pressed#1 ] zp[1]:7 [ main::ch#2 main::ch#1 ] reg byte a [ main::key#0 ] zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::i#2 main::i#1 ] zp[1]:31 [ main::$15 ] zp[1]:33 [ main::$18 ] zp[1]:35 [ main::$21 ] zp[1]:37 [ main::$24 ] zp[1]:39 [ main::$27 ] zp[1]:6 [ main::shift#9 ] -Limited combination testing to 100 combinations of 262144 possible. -Uplifting [keyboard_key_pressed] best 807987 combination reg byte x [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] reg byte a [ keyboard_key_pressed::return#14 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#10 ] zp[1]:34 [ keyboard_key_pressed::return#11 ] zp[1]:36 [ keyboard_key_pressed::return#12 ] zp[1]:38 [ keyboard_key_pressed::return#13 ] zp[1]:59 [ keyboard_key_pressed::return#0 ] zp[1]:55 [ keyboard_key_pressed::rowidx#0 ] zp[1]:58 [ keyboard_key_pressed::$2 ] zp[1]:54 [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_matrix_read] best 810608 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_key_pressed] best 810279 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte x [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ] zp[1]:54 [ keyboard_key_pressed::colidx#0 ] zp[1]:43 [ keyboard_key_pressed::return#14 ] zp[1]:59 [ keyboard_key_pressed::return#0 ] zp[1]:30 [ keyboard_key_pressed::return#2 ] zp[1]:32 [ keyboard_key_pressed::return#10 ] zp[1]:34 [ keyboard_key_pressed::return#11 ] zp[1]:36 [ keyboard_key_pressed::return#12 ] zp[1]:38 [ keyboard_key_pressed::return#13 ] Limited combination testing to 100 combinations of 3145728 possible. -Uplifting [keyboard_get_keycode] best 806781 combination reg byte a [ keyboard_get_keycode::return#2 ] reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ] -Uplifting [print_str_at] best 806781 combination zp[2]:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] zp[2]:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ] -Uplifting [keyboard_matrix_read] best 806763 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [] best 806763 combination +Uplifting [keyboard_get_keycode] best 809073 combination reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ] reg byte a [ keyboard_get_keycode::return#2 ] +Uplifting [main] best 807473 combination reg byte a [ main::pressed#2 main::pressed#1 ] zp[1]:7 [ main::ch#2 main::ch#1 ] reg byte a [ main::key#0 ] zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::i#2 main::i#1 ] zp[1]:31 [ main::$15 ] zp[1]:33 [ main::$18 ] zp[1]:35 [ main::$21 ] zp[1]:37 [ main::$24 ] zp[1]:39 [ main::$27 ] zp[1]:6 [ main::shift#9 ] +Limited combination testing to 100 combinations of 262144 possible. +Uplifting [print_str_at] best 807473 combination zp[2]:26 [ print_str_at::str#5 print_str_at::str#7 print_str_at::str#4 ] zp[2]:28 [ print_str_at::at#5 print_str_at::at#7 print_str_at::at#4 ] +Uplifting [] best 807473 combination Attempting to uplift remaining variables inzp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] -Uplifting [plot_chargen] best 806763 combination zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] +Uplifting [plot_chargen] best 807473 combination zp[1]:15 [ plot_chargen::bits#2 plot_chargen::bits#0 plot_chargen::bits#1 ] Attempting to uplift remaining variables inzp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] -Uplifting [plot_chargen] best 806763 combination zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] +Uplifting [plot_chargen] best 807473 combination zp[1]:14 [ plot_chargen::y#2 plot_chargen::y#1 ] Attempting to uplift remaining variables inzp[1]:10 [ plot_chargen::shift#2 plot_chargen::shift#1 ] -Uplifting [plot_chargen] best 806457 combination reg byte x [ plot_chargen::shift#2 plot_chargen::shift#1 ] -Attempting to uplift remaining variables inzp[1]:7 [ main::ch#2 main::ch#1 ] -Uplifting [main] best 806457 combination zp[1]:7 [ main::ch#2 main::ch#1 ] -Attempting to uplift remaining variables inzp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] -Uplifting [plot_chargen] best 806151 combination reg byte a [ plot_chargen::ch#2 plot_chargen::ch#1 ] -Attempting to uplift remaining variables inzp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] -Uplifting [plot_chargen] best 805822 combination reg byte y [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] -Attempting to uplift remaining variables inzp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] -Uplifting [main] best 805822 combination zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] -Attempting to uplift remaining variables inzp[1]:4 [ main::i#2 main::i#1 ] -Uplifting [main] best 805822 combination zp[1]:4 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:31 [ main::$15 ] -Uplifting [main] best 805762 combination reg byte a [ main::$15 ] -Attempting to uplift remaining variables inzp[1]:33 [ main::$18 ] -Uplifting [main] best 805702 combination reg byte a [ main::$18 ] -Attempting to uplift remaining variables inzp[1]:34 [ keyboard_key_pressed::return#11 ] -Uplifting [keyboard_key_pressed] best 805642 combination reg byte a [ keyboard_key_pressed::return#11 ] -Attempting to uplift remaining variables inzp[1]:35 [ main::$21 ] -Uplifting [main] best 805582 combination reg byte a [ main::$21 ] -Attempting to uplift remaining variables inzp[1]:36 [ keyboard_key_pressed::return#12 ] -Uplifting [keyboard_key_pressed] best 805522 combination reg byte a [ keyboard_key_pressed::return#12 ] -Attempting to uplift remaining variables inzp[1]:37 [ main::$24 ] -Uplifting [main] best 805462 combination reg byte a [ main::$24 ] -Attempting to uplift remaining variables inzp[1]:38 [ keyboard_key_pressed::return#13 ] -Uplifting [keyboard_key_pressed] best 805402 combination reg byte a [ keyboard_key_pressed::return#13 ] -Attempting to uplift remaining variables inzp[1]:39 [ main::$27 ] -Uplifting [main] best 805342 combination reg byte a [ main::$27 ] -Attempting to uplift remaining variables inzp[1]:59 [ keyboard_key_pressed::return#0 ] -Uplifting [keyboard_key_pressed] best 804889 combination reg byte a [ keyboard_key_pressed::return#0 ] -Attempting to uplift remaining variables inzp[1]:6 [ main::shift#9 ] -Uplifting [main] best 804889 combination zp[1]:6 [ main::shift#9 ] -Attempting to uplift remaining variables inzp[1]:55 [ keyboard_key_pressed::rowidx#0 ] -Uplifting [keyboard_key_pressed] best 804885 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] -Attempting to uplift remaining variables inzp[1]:58 [ keyboard_key_pressed::$2 ] -Uplifting [keyboard_key_pressed] best 804879 combination reg byte a [ keyboard_key_pressed::$2 ] +Uplifting [plot_chargen] best 807167 combination reg byte x [ plot_chargen::shift#2 plot_chargen::shift#1 ] Attempting to uplift remaining variables inzp[1]:54 [ keyboard_key_pressed::colidx#0 ] -Uplifting [keyboard_key_pressed] best 804877 combination reg byte y [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_key_pressed] best 807165 combination reg byte y [ keyboard_key_pressed::colidx#0 ] +Attempting to uplift remaining variables inzp[1]:11 [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] +Uplifting [plot_chargen] best 806836 combination reg byte y [ plot_chargen::pos#2 plot_chargen::pos#1 plot_chargen::pos#0 ] +Attempting to uplift remaining variables inzp[1]:43 [ keyboard_key_pressed::return#14 ] +Uplifting [keyboard_key_pressed] best 806236 combination reg byte a [ keyboard_key_pressed::return#14 ] +Attempting to uplift remaining variables inzp[1]:7 [ main::ch#2 main::ch#1 ] +Uplifting [main] best 806236 combination zp[1]:7 [ main::ch#2 main::ch#1 ] +Attempting to uplift remaining variables inzp[1]:9 [ plot_chargen::ch#2 plot_chargen::ch#1 ] +Uplifting [plot_chargen] best 805930 combination reg byte a [ plot_chargen::ch#2 plot_chargen::ch#1 ] +Attempting to uplift remaining variables inzp[1]:59 [ keyboard_key_pressed::return#0 ] +Uplifting [keyboard_key_pressed] best 805477 combination reg byte a [ keyboard_key_pressed::return#0 ] +Attempting to uplift remaining variables inzp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] +Uplifting [main] best 805477 combination zp[1]:5 [ main::cur_pos#18 main::cur_pos#20 main::cur_pos#22 main::cur_pos#24 main::cur_pos#11 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::i#2 main::i#1 ] +Uplifting [main] best 805477 combination zp[1]:4 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:30 [ keyboard_key_pressed::return#2 ] +Uplifting [keyboard_key_pressed] best 805417 combination reg byte a [ keyboard_key_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:31 [ main::$15 ] +Uplifting [main] best 805357 combination reg byte a [ main::$15 ] +Attempting to uplift remaining variables inzp[1]:32 [ keyboard_key_pressed::return#10 ] +Uplifting [keyboard_key_pressed] best 805297 combination reg byte a [ keyboard_key_pressed::return#10 ] +Attempting to uplift remaining variables inzp[1]:33 [ main::$18 ] +Uplifting [main] best 805237 combination reg byte a [ main::$18 ] +Attempting to uplift remaining variables inzp[1]:34 [ keyboard_key_pressed::return#11 ] +Uplifting [keyboard_key_pressed] best 805177 combination reg byte a [ keyboard_key_pressed::return#11 ] +Attempting to uplift remaining variables inzp[1]:35 [ main::$21 ] +Uplifting [main] best 805117 combination reg byte a [ main::$21 ] +Attempting to uplift remaining variables inzp[1]:36 [ keyboard_key_pressed::return#12 ] +Uplifting [keyboard_key_pressed] best 805057 combination reg byte a [ keyboard_key_pressed::return#12 ] +Attempting to uplift remaining variables inzp[1]:37 [ main::$24 ] +Uplifting [main] best 804997 combination reg byte a [ main::$24 ] +Attempting to uplift remaining variables inzp[1]:38 [ keyboard_key_pressed::return#13 ] +Uplifting [keyboard_key_pressed] best 804937 combination reg byte a [ keyboard_key_pressed::return#13 ] +Attempting to uplift remaining variables inzp[1]:39 [ main::$27 ] +Uplifting [main] best 804877 combination reg byte a [ main::$27 ] +Attempting to uplift remaining variables inzp[1]:6 [ main::shift#9 ] +Uplifting [main] best 804877 combination zp[1]:6 [ main::shift#9 ] Coalescing zero page register [ zp[2]:12 [ plot_chargen::chargen#5 plot_chargen::chargen#0 plot_chargen::chargen#1 ] ] with [ zp[2]:46 [ plot_chargen::$1 ] ] - score: 1 Coalescing zero page register [ zp[2]:16 [ plot_chargen::sc#3 plot_chargen::sc#7 plot_chargen::sc#2 plot_chargen::sc#0 plot_chargen::sc#1 ] ] with [ zp[2]:50 [ plot_chargen::$7 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp[2]:48 [ mul8u::return#2 ] ] - score: 1 @@ -4336,45 +4338,45 @@ FINAL SYMBOL TABLE (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 reg byte x 103.0 +(byte) keyboard_get_keycode::ch#0 reg byte x 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 reg byte a 34.33333333333333 -(byte) keyboard_get_keycode::return#2 reg byte a 202.0 +(byte) keyboard_get_keycode::return#0 reg byte a 3667.333333333333 +(byte) keyboard_get_keycode::return#2 reg byte a 2002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#5 reg byte x 202.0 -(byte) keyboard_key_pressed::key#6 reg byte x 52.5 +(byte) keyboard_key_pressed::key#5 reg byte x 2002.0 +(byte) keyboard_key_pressed::key#6 reg byte x 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 19.75 -(byte) keyboard_key_pressed::return#10 reg byte a 22.0 -(byte) keyboard_key_pressed::return#11 reg byte a 22.0 -(byte) keyboard_key_pressed::return#12 reg byte a 22.0 -(byte) keyboard_key_pressed::return#13 reg byte a 22.0 -(byte) keyboard_key_pressed::return#14 reg byte a 202.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 1438.375 +(byte) keyboard_key_pressed::return#10 reg byte a 202.0 +(byte) keyboard_key_pressed::return#11 reg byte a 202.0 +(byte) keyboard_key_pressed::return#12 reg byte a 202.0 +(byte) keyboard_key_pressed::return#13 reg byte a 202.0 +(byte) keyboard_key_pressed::return#14 reg byte a 2002.0 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 20002.0 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 36667.33333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 110002.0 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$18 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$27 reg byte a 22.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$18 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$27 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -4407,58 +4409,58 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::ch -(byte) main::ch#1 ch zp[1]:7 151.5 -(byte) main::ch#2 ch zp[1]:7 25.25 +(byte) main::ch#1 ch zp[1]:7 1501.5 +(byte) main::ch#2 ch zp[1]:7 250.25 (byte) main::cur_pos -(byte) main::cur_pos#11 cur_pos zp[1]:5 8.52 -(byte) main::cur_pos#18 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#20 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#22 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#24 cur_pos zp[1]:5 18.666666666666664 +(byte) main::cur_pos#11 cur_pos zp[1]:5 84.12 +(byte) main::cur_pos#18 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#20 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#22 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#24 cur_pos zp[1]:5 183.66666666666669 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 11.0 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 101.0 (byte) main::key -(byte) main::key#0 reg byte a 151.5 +(byte) main::key#0 reg byte a 1501.5 (byte) main::pressed -(byte) main::pressed#1 reg byte a 202.0 -(byte) main::pressed#2 reg byte a 202.0 +(byte) main::pressed#1 reg byte a 2002.0 +(byte) main::pressed#2 reg byte a 2002.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (byte) main::shift -(byte) main::shift#9 shift zp[1]:6 5.315789473684211 +(byte) main::shift#9 shift zp[1]:6 52.68421052631579 (const byte*) main::str[(byte) 3] = (byte*) "f1" (const byte*) main::str1[(byte) 3] = (byte*) "f3" (const byte*) main::str2[(byte) 3] = (byte*) "f5" (const byte*) main::str3[(byte) 3] = (byte*) "f7" (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 55001.0 +(byte) mul8u::a#2 reg byte x 6.668333416666667E7 (byte) mul8u::b (const byte) mul8u::b#0 b = (byte) $a (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:10 2002.0 -(word) mul8u::mb#2 mb zp[2]:10 429.0 +(word) mul8u::mb#1 mb zp[2]:10 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:10 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 2002.0 -(word) mul8u::res#2 res zp[2]:14 500.83333333333337 -(word) mul8u::res#6 res zp[2]:14 1001.0 +(word) mul8u::res#1 res zp[2]:14 2.00000002E8 +(word) mul8u::res#2 res zp[2]:14 5.0001667333333336E7 +(word) mul8u::res#6 res zp[2]:14 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 +(word) mul8u::return#2 return zp[2]:14 20002.0 (void()) plot_chargen((byte) plot_chargen::pos , (byte) plot_chargen::ch , (byte) plot_chargen::shift) -(word~) plot_chargen::$0 zp[2]:12 4.0 -(word~) plot_chargen::$1 zp[2]:12 4.0 -(byte~) plot_chargen::$10 reg byte a 20002.0 -(word~) plot_chargen::$7 zp[2]:14 4.0 +(word~) plot_chargen::$0 zp[2]:12 20002.0 +(word~) plot_chargen::$1 zp[2]:12 20002.0 +(byte~) plot_chargen::$10 reg byte a 2.00000002E8 +(word~) plot_chargen::$7 zp[2]:14 20002.0 (label) plot_chargen::@1 (label) plot_chargen::@2 (label) plot_chargen::@3 @@ -4470,49 +4472,49 @@ FINAL SYMBOL TABLE (label) plot_chargen::@9 (label) plot_chargen::@return (byte) plot_chargen::bits -(byte) plot_chargen::bits#0 bits zp[1]:9 2002.0 -(byte) plot_chargen::bits#1 bits zp[1]:9 6667.333333333333 -(byte) plot_chargen::bits#2 bits zp[1]:9 4429.142857142857 +(byte) plot_chargen::bits#0 bits zp[1]:9 2.0000002E7 +(byte) plot_chargen::bits#1 bits zp[1]:9 6.6666667333333336E7 +(byte) plot_chargen::bits#2 bits zp[1]:9 4.428571485714286E7 (byte) plot_chargen::c -(byte) plot_chargen::c#2 reg byte a 10001.0 +(byte) plot_chargen::c#2 reg byte a 1.00000001E8 (byte) plot_chargen::ch -(byte) plot_chargen::ch#1 reg byte a 101.0 -(byte) plot_chargen::ch#2 reg byte a 50.5 +(byte) plot_chargen::ch#1 reg byte a 1001.0 +(byte) plot_chargen::ch#2 reg byte a 500.5 (byte*) plot_chargen::chargen -(byte*) plot_chargen::chargen#0 chargen zp[2]:12 3.0 -(byte*) plot_chargen::chargen#1 chargen zp[2]:12 4.0 -(byte*) plot_chargen::chargen#5 chargen zp[2]:12 45.68181818181818 +(byte*) plot_chargen::chargen#0 chargen zp[2]:12 15001.5 +(byte*) plot_chargen::chargen#1 chargen zp[2]:12 20002.0 +(byte*) plot_chargen::chargen#5 chargen zp[2]:12 455454.6818181818 (byte) plot_chargen::pos -(byte) plot_chargen::pos#0 reg byte y 22.0 -(byte) plot_chargen::pos#1 reg byte y 67.33333333333333 -(byte) plot_chargen::pos#2 reg byte y 12.666666666666664 +(byte) plot_chargen::pos#0 reg byte y 202.0 +(byte) plot_chargen::pos#1 reg byte y 667.3333333333334 +(byte) plot_chargen::pos#2 reg byte y 1233.6666666666665 (byte*) plot_chargen::sc -(byte*) plot_chargen::sc#0 sc zp[2]:14 4.0 -(byte*) plot_chargen::sc#1 sc zp[2]:14 5250.75 -(byte*) plot_chargen::sc#2 sc zp[2]:14 667.3333333333334 -(byte*) plot_chargen::sc#3 sc zp[2]:14 5167.333333333333 -(byte*) plot_chargen::sc#7 sc zp[2]:14 1002.0 +(byte*) plot_chargen::sc#0 sc zp[2]:14 20002.0 +(byte*) plot_chargen::sc#1 sc zp[2]:14 5.250000075E7 +(byte*) plot_chargen::sc#2 sc zp[2]:14 6666667.333333333 +(byte*) plot_chargen::sc#3 sc zp[2]:14 5.1666667333333336E7 +(byte*) plot_chargen::sc#7 sc zp[2]:14 1.00050015E7 (byte) plot_chargen::shift -(byte) plot_chargen::shift#1 reg byte x 202.0 -(byte) plot_chargen::shift#2 reg byte x 20.599999999999998 +(byte) plot_chargen::shift#1 reg byte x 2002.0 +(byte) plot_chargen::shift#2 reg byte x 2200.4 (byte) plot_chargen::x -(byte) plot_chargen::x#1 reg byte x 15001.5 -(byte) plot_chargen::x#2 reg byte x 2500.25 +(byte) plot_chargen::x#1 reg byte x 1.500000015E8 +(byte) plot_chargen::x#2 reg byte x 2.500000025E7 (byte) plot_chargen::y -(byte) plot_chargen::y#1 y zp[1]:8 1501.5 -(byte) plot_chargen::y#2 y zp[1]:8 231.0 +(byte) plot_chargen::y#1 y zp[1]:8 1.50000015E7 +(byte) plot_chargen::y#2 y zp[1]:8 2307692.5384615385 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (label) print_str_at::@1 (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#4 at zp[2]:14 11.0 -(byte*) print_str_at::at#5 at zp[2]:14 11.666666666666666 -(byte*) print_str_at::at#7 at zp[2]:14 2.0 +(byte*) print_str_at::at#4 at zp[2]:14 1001.0 +(byte*) print_str_at::at#5 at zp[2]:14 1034.6666666666667 +(byte*) print_str_at::at#7 at zp[2]:14 101.0 (byte*) print_str_at::str -(byte*) print_str_at::str#4 str zp[2]:12 22.0 -(byte*) print_str_at::str#5 str zp[2]:12 11.5 -(byte*) print_str_at::str#7 str zp[2]:12 2.0 +(byte*) print_str_at::str#4 str zp[2]:12 2002.0 +(byte*) print_str_at::str#5 str zp[2]:12 1026.25 +(byte*) print_str_at::str#7 str zp[2]:12 101.0 zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/examples/chargen/chargen-analysis.sym b/src/test/ref/examples/chargen/chargen-analysis.sym index 45d2a7f8e..5bc63a9dd 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.sym +++ b/src/test/ref/examples/chargen/chargen-analysis.sym @@ -65,45 +65,45 @@ (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 reg byte x 103.0 +(byte) keyboard_get_keycode::ch#0 reg byte x 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 reg byte a 34.33333333333333 -(byte) keyboard_get_keycode::return#2 reg byte a 202.0 +(byte) keyboard_get_keycode::return#0 reg byte a 3667.333333333333 +(byte) keyboard_get_keycode::return#2 reg byte a 2002.0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#5 reg byte x 202.0 -(byte) keyboard_key_pressed::key#6 reg byte x 52.5 +(byte) keyboard_key_pressed::key#5 reg byte x 2002.0 +(byte) keyboard_key_pressed::key#6 reg byte x 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 19.75 -(byte) keyboard_key_pressed::return#10 reg byte a 22.0 -(byte) keyboard_key_pressed::return#11 reg byte a 22.0 -(byte) keyboard_key_pressed::return#12 reg byte a 22.0 -(byte) keyboard_key_pressed::return#13 reg byte a 22.0 -(byte) keyboard_key_pressed::return#14 reg byte a 202.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 1438.375 +(byte) keyboard_key_pressed::return#10 reg byte a 202.0 +(byte) keyboard_key_pressed::return#11 reg byte a 202.0 +(byte) keyboard_key_pressed::return#12 reg byte a 202.0 +(byte) keyboard_key_pressed::return#13 reg byte a 202.0 +(byte) keyboard_key_pressed::return#14 reg byte a 2002.0 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 20002.0 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 36667.33333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 110002.0 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$18 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$27 reg byte a 22.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$18 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$27 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -136,58 +136,58 @@ (label) main::@8 (label) main::@9 (byte) main::ch -(byte) main::ch#1 ch zp[1]:7 151.5 -(byte) main::ch#2 ch zp[1]:7 25.25 +(byte) main::ch#1 ch zp[1]:7 1501.5 +(byte) main::ch#2 ch zp[1]:7 250.25 (byte) main::cur_pos -(byte) main::cur_pos#11 cur_pos zp[1]:5 8.52 -(byte) main::cur_pos#18 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#20 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#22 cur_pos zp[1]:5 3.6666666666666665 -(byte) main::cur_pos#24 cur_pos zp[1]:5 18.666666666666664 +(byte) main::cur_pos#11 cur_pos zp[1]:5 84.12 +(byte) main::cur_pos#18 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#20 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#22 cur_pos zp[1]:5 33.666666666666664 +(byte) main::cur_pos#24 cur_pos zp[1]:5 183.66666666666669 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 11.0 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 101.0 (byte) main::key -(byte) main::key#0 reg byte a 151.5 +(byte) main::key#0 reg byte a 1501.5 (byte) main::pressed -(byte) main::pressed#1 reg byte a 202.0 -(byte) main::pressed#2 reg byte a 202.0 +(byte) main::pressed#1 reg byte a 2002.0 +(byte) main::pressed#2 reg byte a 2002.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (byte) main::shift -(byte) main::shift#9 shift zp[1]:6 5.315789473684211 +(byte) main::shift#9 shift zp[1]:6 52.68421052631579 (const byte*) main::str[(byte) 3] = (byte*) "f1" (const byte*) main::str1[(byte) 3] = (byte*) "f3" (const byte*) main::str2[(byte) 3] = (byte*) "f5" (const byte*) main::str3[(byte) 3] = (byte*) "f7" (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 55001.0 +(byte) mul8u::a#2 reg byte x 6.668333416666667E7 (byte) mul8u::b (const byte) mul8u::b#0 b = (byte) $a (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:10 2002.0 -(word) mul8u::mb#2 mb zp[2]:10 429.0 +(word) mul8u::mb#1 mb zp[2]:10 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:10 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 2002.0 -(word) mul8u::res#2 res zp[2]:14 500.83333333333337 -(word) mul8u::res#6 res zp[2]:14 1001.0 +(word) mul8u::res#1 res zp[2]:14 2.00000002E8 +(word) mul8u::res#2 res zp[2]:14 5.0001667333333336E7 +(word) mul8u::res#6 res zp[2]:14 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 +(word) mul8u::return#2 return zp[2]:14 20002.0 (void()) plot_chargen((byte) plot_chargen::pos , (byte) plot_chargen::ch , (byte) plot_chargen::shift) -(word~) plot_chargen::$0 zp[2]:12 4.0 -(word~) plot_chargen::$1 zp[2]:12 4.0 -(byte~) plot_chargen::$10 reg byte a 20002.0 -(word~) plot_chargen::$7 zp[2]:14 4.0 +(word~) plot_chargen::$0 zp[2]:12 20002.0 +(word~) plot_chargen::$1 zp[2]:12 20002.0 +(byte~) plot_chargen::$10 reg byte a 2.00000002E8 +(word~) plot_chargen::$7 zp[2]:14 20002.0 (label) plot_chargen::@1 (label) plot_chargen::@2 (label) plot_chargen::@3 @@ -199,49 +199,49 @@ (label) plot_chargen::@9 (label) plot_chargen::@return (byte) plot_chargen::bits -(byte) plot_chargen::bits#0 bits zp[1]:9 2002.0 -(byte) plot_chargen::bits#1 bits zp[1]:9 6667.333333333333 -(byte) plot_chargen::bits#2 bits zp[1]:9 4429.142857142857 +(byte) plot_chargen::bits#0 bits zp[1]:9 2.0000002E7 +(byte) plot_chargen::bits#1 bits zp[1]:9 6.6666667333333336E7 +(byte) plot_chargen::bits#2 bits zp[1]:9 4.428571485714286E7 (byte) plot_chargen::c -(byte) plot_chargen::c#2 reg byte a 10001.0 +(byte) plot_chargen::c#2 reg byte a 1.00000001E8 (byte) plot_chargen::ch -(byte) plot_chargen::ch#1 reg byte a 101.0 -(byte) plot_chargen::ch#2 reg byte a 50.5 +(byte) plot_chargen::ch#1 reg byte a 1001.0 +(byte) plot_chargen::ch#2 reg byte a 500.5 (byte*) plot_chargen::chargen -(byte*) plot_chargen::chargen#0 chargen zp[2]:12 3.0 -(byte*) plot_chargen::chargen#1 chargen zp[2]:12 4.0 -(byte*) plot_chargen::chargen#5 chargen zp[2]:12 45.68181818181818 +(byte*) plot_chargen::chargen#0 chargen zp[2]:12 15001.5 +(byte*) plot_chargen::chargen#1 chargen zp[2]:12 20002.0 +(byte*) plot_chargen::chargen#5 chargen zp[2]:12 455454.6818181818 (byte) plot_chargen::pos -(byte) plot_chargen::pos#0 reg byte y 22.0 -(byte) plot_chargen::pos#1 reg byte y 67.33333333333333 -(byte) plot_chargen::pos#2 reg byte y 12.666666666666664 +(byte) plot_chargen::pos#0 reg byte y 202.0 +(byte) plot_chargen::pos#1 reg byte y 667.3333333333334 +(byte) plot_chargen::pos#2 reg byte y 1233.6666666666665 (byte*) plot_chargen::sc -(byte*) plot_chargen::sc#0 sc zp[2]:14 4.0 -(byte*) plot_chargen::sc#1 sc zp[2]:14 5250.75 -(byte*) plot_chargen::sc#2 sc zp[2]:14 667.3333333333334 -(byte*) plot_chargen::sc#3 sc zp[2]:14 5167.333333333333 -(byte*) plot_chargen::sc#7 sc zp[2]:14 1002.0 +(byte*) plot_chargen::sc#0 sc zp[2]:14 20002.0 +(byte*) plot_chargen::sc#1 sc zp[2]:14 5.250000075E7 +(byte*) plot_chargen::sc#2 sc zp[2]:14 6666667.333333333 +(byte*) plot_chargen::sc#3 sc zp[2]:14 5.1666667333333336E7 +(byte*) plot_chargen::sc#7 sc zp[2]:14 1.00050015E7 (byte) plot_chargen::shift -(byte) plot_chargen::shift#1 reg byte x 202.0 -(byte) plot_chargen::shift#2 reg byte x 20.599999999999998 +(byte) plot_chargen::shift#1 reg byte x 2002.0 +(byte) plot_chargen::shift#2 reg byte x 2200.4 (byte) plot_chargen::x -(byte) plot_chargen::x#1 reg byte x 15001.5 -(byte) plot_chargen::x#2 reg byte x 2500.25 +(byte) plot_chargen::x#1 reg byte x 1.500000015E8 +(byte) plot_chargen::x#2 reg byte x 2.500000025E7 (byte) plot_chargen::y -(byte) plot_chargen::y#1 y zp[1]:8 1501.5 -(byte) plot_chargen::y#2 y zp[1]:8 231.0 +(byte) plot_chargen::y#1 y zp[1]:8 1.50000015E7 +(byte) plot_chargen::y#2 y zp[1]:8 2307692.5384615385 (void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at) (label) print_str_at::@1 (label) print_str_at::@2 (label) print_str_at::@return (byte*) print_str_at::at -(byte*) print_str_at::at#4 at zp[2]:14 11.0 -(byte*) print_str_at::at#5 at zp[2]:14 11.666666666666666 -(byte*) print_str_at::at#7 at zp[2]:14 2.0 +(byte*) print_str_at::at#4 at zp[2]:14 1001.0 +(byte*) print_str_at::at#5 at zp[2]:14 1034.6666666666667 +(byte*) print_str_at::at#7 at zp[2]:14 101.0 (byte*) print_str_at::str -(byte*) print_str_at::str#4 str zp[2]:12 22.0 -(byte*) print_str_at::str#5 str zp[2]:12 11.5 -(byte*) print_str_at::str#7 str zp[2]:12 2.0 +(byte*) print_str_at::str#4 str zp[2]:12 2002.0 +(byte*) print_str_at::str#5 str zp[2]:12 1026.25 +(byte*) print_str_at::str#7 str zp[2]:12 101.0 zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.asm b/src/test/ref/examples/fastmultiply/fastmultiply8.asm index 8d54ab67a..ff0a0f49c 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.asm +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.asm @@ -14,22 +14,25 @@ .label cp = $ff .label print_screen = $400 main: { - .label at = 2 - .label at_1 = 4 - .label at_2 = 7 - .label j = 9 - .label i = 6 - .label at_line = 4 + .label at = 3 + .label k = 2 + .label at_1 = 5 + .label at_2 = 8 + .label j = $a + .label i = 7 + .label at_line = 5 // init_screen() jsr init_screen lda #<$400+4 sta.z at lda #>$400+4 sta.z at+1 - ldx #0 + lda #0 + sta.z k __b1: // print_sbyte_at(vals[k], at) - lda vals,x + ldy.z k + lda vals,y sta.z print_sbyte_at.b lda.z at sta.z print_sbyte_at.at @@ -45,8 +48,9 @@ main: { inc.z at+1 !: // for(byte k: 0..8) - inx - cpx #9 + inc.z k + lda #9 + cmp.z k bne __b1 lda #0 sta.z i @@ -114,16 +118,15 @@ main: { rts } // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte zp($a) b, byte* zp($c) at) +// print_sbyte_at(signed byte zp($b) b, byte* zp($c) at) print_sbyte_at: { - .label b = $a + .label b = $b .label at = $c // if(b<0) lda.z b bmi __b1 // print_char_at(' ', at) - lda #' ' - sta.z print_char_at.ch + ldx #' ' jsr print_char_at __b2: // print_byte_at((byte)b, at+1) @@ -136,8 +139,7 @@ print_sbyte_at: { rts __b1: // print_char_at('-', at) - lda #'-' - sta.z print_char_at.ch + ldx #'-' jsr print_char_at // b = -b lda.z b @@ -148,21 +150,20 @@ print_sbyte_at: { jmp __b2 } // Print a single char -// print_char_at(byte zp($b) ch, byte* zp($c) at) +// print_char_at(byte register(X) ch, byte* zp($c) at) print_char_at: { .label at = $c - .label ch = $b // *(at) = ch - lda.z ch + txa ldy #0 sta (at),y // } rts } // Print a byte as HEX at a specific position -// print_byte_at(byte zp($a) b, byte* zp($c) at) +// print_byte_at(byte zp($b) b, byte* zp($c) at) print_byte_at: { - .label b = $a + .label b = $b .label at = $c // b>>4 lda.z b @@ -172,8 +173,7 @@ print_byte_at: { lsr // print_char_at(print_hextab[b>>4], at) tay - lda print_hextab,y - sta.z print_char_at.ch + ldx print_hextab,y // Table of hexadecimal digits jsr print_char_at // b&$f @@ -185,8 +185,7 @@ print_byte_at: { bne !+ inc.z print_char_at.at+1 !: - lda print_hextab,y - sta.z print_char_at.ch + ldx print_hextab,y jsr print_char_at // } rts diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log index a99f04d38..2b922ec8a 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.log +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log @@ -666,40 +666,40 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#6 (byte*) print_sbyte_at::at#7 (byte*) print_sbyte_at::at#4 (byte*) print_sbyte_at::at#8 -Alias (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#7 (signed byte) print_sbyte_at::b#5 (signed byte) print_sbyte_at::b#9 (signed byte) print_sbyte_at::b#8 -Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$6 -Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$1 -Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$2 -Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2 -Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2 -Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3 -Alias (byte*) main::at#0 = (byte*~) main::$1 -Alias (byte*) main::at#4 = (byte*) main::at#5 -Alias (byte) main::k#2 = (byte) main::k#3 -Alias (byte*) main::at_line#3 = (byte*) main::at_line#5 (byte*) main::at_line#7 -Alias (byte*) main::at#2 = (byte*) main::at_line#1 (byte*) main::at#9 (byte*) main::at_line#10 -Alias (byte) main::i#2 = (byte) main::i#6 -Alias (signed byte) fmul8::return#0 = (signed byte) fmul8::return#3 -Alias (byte*) main::at#3 = (byte*) main::at#7 (byte*) main::at#8 -Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3 -Alias (byte) main::i#3 = (byte) main::i#7 (byte) main::i#5 (byte) main::i#4 -Alias (byte*) main::at_line#4 = (byte*) main::at_line#8 (byte*) main::at_line#9 (byte*) main::at_line#6 -Alias (signed byte) main::r#0 = (signed byte~) main::$5 -Alias (byte*) init_screen::COLS#2 = (byte*) init_screen::COLS#4 -Alias (signed byte) fmul8::return#1 = (signed byte) fmul8::return#4 (signed byte) fmul8::return#2 -Alias (byte*) print_screen#0 = (byte*) print_screen#4 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_sbyte_at::at#3 = print_sbyte_at::at#6 print_sbyte_at::at#7 print_sbyte_at::at#4 print_sbyte_at::at#8 +Alias print_sbyte_at::b#4 = print_sbyte_at::b#7 print_sbyte_at::b#5 print_sbyte_at::b#9 print_sbyte_at::b#8 +Alias print_sbyte_at::b#0 = print_sbyte_at::$6 +Alias print_byte_at::b#0 = print_sbyte_at::$1 +Alias print_byte_at::at#0 = print_sbyte_at::$2 +Alias print_byte_at::b#1 = print_byte_at::b#2 +Alias print_byte_at::at#1 = print_byte_at::at#2 +Alias print_char_at::at#3 = print_byte_at::$3 +Alias main::at#0 = main::$1 +Alias main::at#4 = main::at#5 +Alias main::k#2 = main::k#3 +Alias main::at_line#3 = main::at_line#5 main::at_line#7 +Alias main::at#2 = main::at_line#1 main::at#9 main::at_line#10 +Alias main::i#2 = main::i#6 +Alias fmul8::return#0 = fmul8::return#3 +Alias main::at#3 = main::at#7 main::at#8 +Alias main::j#2 = main::j#4 main::j#3 +Alias main::i#3 = main::i#7 main::i#5 main::i#4 +Alias main::at_line#4 = main::at_line#8 main::at_line#9 main::at_line#6 +Alias main::r#0 = main::$5 +Alias init_screen::COLS#2 = init_screen::COLS#4 +Alias fmul8::return#1 = fmul8::return#4 fmul8::return#2 +Alias print_screen#0 = print_screen#4 Successful SSA optimization Pass2AliasElimination -Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#5 +Alias print_sbyte_at::at#3 = print_sbyte_at::at#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1094,84 +1094,84 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b) (signed byte) fmul8::a -(signed byte) fmul8::a#0 51.5 +(signed byte) fmul8::a#0 5501.0 (signed byte) fmul8::b -(signed byte) fmul8::b#0 51.5 +(signed byte) fmul8::b#0 5501.0 (signed byte) fmul8::return -(signed byte) fmul8::return#0 202.0 -(signed byte) fmul8::return#1 34.33333333333333 +(signed byte) fmul8::return#0 2002.0 +(signed byte) fmul8::return#1 3667.333333333333 (void()) init_screen() (byte*) init_screen::COLS -(byte*) init_screen::COLS#1 7.333333333333333 -(byte*) init_screen::COLS#3 13.2 +(byte*) init_screen::COLS#1 667.3333333333334 +(byte*) init_screen::COLS#3 1201.2 (byte) init_screen::l -(byte) init_screen::l#1 16.5 -(byte) init_screen::l#2 16.5 +(byte) init_screen::l#1 1501.5 +(byte) init_screen::l#2 1501.5 (byte) init_screen::m -(byte) init_screen::m#1 16.5 -(byte) init_screen::m#2 3.6666666666666665 +(byte) init_screen::m#1 1501.5 +(byte) init_screen::m#2 333.6666666666667 (void()) main() (byte*) main::at -(byte*) main::at#1 7.333333333333333 -(byte*) main::at#12 22.0 -(byte*) main::at#2 2.3157894736842106 -(byte*) main::at#3 27.545454545454547 -(byte*) main::at#4 8.25 -(byte*) main::at#6 213.0 +(byte*) main::at#1 67.33333333333333 +(byte*) main::at#12 202.0 +(byte*) main::at#2 21.263157894736842 +(byte*) main::at#3 273.0 +(byte*) main::at#4 75.75 +(byte*) main::at#6 2103.0 (byte*) main::at_line -(byte*) main::at_line#2 22.0 +(byte*) main::at_line#2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.444444444444445 +(byte) main::i#1 151.5 +(byte) main::i#2 72.44444444444446 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#2 30.299999999999997 +(byte) main::j#1 1501.5 +(byte) main::j#2 300.29999999999995 (byte) main::k -(byte) main::k#1 16.5 -(byte) main::k#2 6.6000000000000005 +(byte) main::k#1 151.5 +(byte) main::k#2 60.599999999999994 (signed byte) main::r -(signed byte) main::r#0 202.0 +(signed byte) main::r#0 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 133334.66666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 200002.0 +(byte~) print_byte_at::$2 100001.0 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 1.0 +(byte*) print_byte_at::at#0 35000.5 (byte) print_byte_at::b -(byte) print_byte_at::b#0 1.0 +(byte) print_byte_at::b#0 35000.5 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 4.0 -(byte*) print_char_at::at#2 4.0 -(byte*) print_char_at::at#3 2.0 -(byte*) print_char_at::at#4 10.0 +(byte*) print_char_at::at#0 20002.0 +(byte*) print_char_at::at#1 20002.0 +(byte*) print_char_at::at#2 200002.0 +(byte*) print_char_at::at#3 100001.0 +(byte*) print_char_at::at#4 1220005.0 (byte) print_char_at::ch -(byte) print_char_at::ch#2 2.0 -(byte) print_char_at::ch#3 4.0 -(byte) print_char_at::ch#4 6.0 +(byte) print_char_at::ch#2 100001.0 +(byte) print_char_at::ch#3 200002.0 +(byte) print_char_at::ch#4 1200003.0 (void()) print_cls() (void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at) (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 22.0 -(byte*) print_sbyte_at::at#1 22.0 -(byte*) print_sbyte_at::at#2 202.0 -(byte*) print_sbyte_at::at#3 14.333333333333329 +(byte*) print_sbyte_at::at#0 202.0 +(byte*) print_sbyte_at::at#1 202.0 +(byte*) print_sbyte_at::at#2 2002.0 +(byte*) print_sbyte_at::at#3 3467.3333333333335 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 4.0 -(signed byte) print_sbyte_at::b#1 11.0 -(signed byte) print_sbyte_at::b#2 11.0 -(signed byte) print_sbyte_at::b#3 101.0 -(signed byte) print_sbyte_at::b#4 21.499999999999993 -(signed byte) print_sbyte_at::b#6 4.0 +(signed byte) print_sbyte_at::b#0 20002.0 +(signed byte) print_sbyte_at::b#1 101.0 +(signed byte) print_sbyte_at::b#2 101.0 +(signed byte) print_sbyte_at::b#3 1001.0 +(signed byte) print_sbyte_at::b#4 5201.0 +(signed byte) print_sbyte_at::b#6 20002.0 (byte*) print_screen Initial phi equivalence classes @@ -1831,109 +1831,109 @@ mulf_sqr2: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ] -Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a +Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] { } ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::j#2 main::j#1 ] -Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:27 [ print_byte_at::b#0 ] -Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte y +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ print_byte_at::b#0 ] -Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ print_byte_at::$2 ] Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:10 [ main::j#2 main::j#1 ] -Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ init_screen::l#2 init_screen::l#1 ] -Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_screen::m#2 init_screen::m#1 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_screen::m#2 init_screen::m#1 ] -Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a -Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y -Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a -Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y -Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] { } ) always clobbers reg byte a +Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a +Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte y +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a +Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] { } ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte a +Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte y +Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:23 [ fmul8::a#0 ] -Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a -Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] ) always clobbers reg byte a -Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y -Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] { } ) always clobbers reg byte a +Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] { } ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a reg byte y +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x -Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a -Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y -Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a -Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y -Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y -Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a -Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] ) always clobbers reg byte a -Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y -Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] { } ) always clobbers reg byte a +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] { } ) always clobbers reg byte a +Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a +Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte y +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } ) always clobbers reg byte a +Statement [18] (byte*) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] { } ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte a +Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte y +Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] { { fmul8::return#0 = fmul8::return#1 } } ) always clobbers reg byte y +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] { } ) always clobbers reg byte a +Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] { } ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } } main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } } main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } } ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#1 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#0 main::at#4 } } main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#1 main::at#2 } } main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_char_at::at#0 = print_char_at::at#4 print_sbyte_at::at#3 print_sbyte_at::at#2 main::at#3 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a reg byte y +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#2 = print_char_at::ch#4 } { print_char_at::at#2 = print_char_at::at#4 print_byte_at::at#0 } } ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#1 = print_sbyte_at::b#4 } { print_sbyte_at::at#0 = print_sbyte_at::at#3 main::at#4 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#2 = print_sbyte_at::b#4 } { print_sbyte_at::at#1 = print_sbyte_at::at#3 main::at#2 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] { { print_sbyte_at::b#3 = print_sbyte_at::b#4 main::r#0 } { print_sbyte_at::at#2 = print_sbyte_at::at#3 main::at#3 } { print_char_at::ch#3 = print_char_at::ch#4 } { print_char_at::at#3 = print_char_at::at#4 } } ) always clobbers reg byte a Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x -Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] { } ) always clobbers reg byte a +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] { } ) always clobbers reg byte a +Statement [83] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [85] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::init_screen:5::print_cls:64::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::k#2 main::k#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::at#4 main::at#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ main::at_line#2 main::at#2 ] : zp[2]:5 , @@ -1959,49 +1959,43 @@ Potential registers zp[1]:31 [ print_byte_at::$2 ] : zp[1]:31 , reg byte x , reg Potential registers zp[1]:32 [ fmul8::return#1 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 262.55: zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] 202: zp[1]:26 [ main::r#0 ] 181.8: zp[1]:10 [ main::j#2 main::j#1 ] 24.32: zp[2]:5 [ main::at_line#2 main::at#2 ] 23.94: zp[1]:7 [ main::i#2 main::i#1 ] 23.1: zp[1]:2 [ main::k#2 main::k#1 ] 15.58: zp[2]:3 [ main::at#4 main::at#1 ] -Uplift Scope [print_sbyte_at] 260.33: zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] 152.5: zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Uplift Scope [fmul8] 202: zp[1]:25 [ fmul8::return#0 ] 51.5: zp[1]:23 [ fmul8::a#0 ] 51.5: zp[1]:24 [ fmul8::b#0 ] 34.33: zp[1]:32 [ fmul8::return#1 ] -Uplift Scope [init_screen] 33: zp[1]:17 [ init_screen::l#2 init_screen::l#1 ] 20.53: zp[2]:18 [ init_screen::COLS#3 init_screen::COLS#1 ] 20.17: zp[1]:20 [ init_screen::m#2 init_screen::m#1 ] -Uplift Scope [memset] 36.67: zp[2]:21 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char_at] 24: zp[2]:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] 12: zp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplift Scope [print_byte_at] 4: zp[1]:30 [ print_byte_at::$0 ] 2: zp[1]:31 [ print_byte_at::$2 ] 1: zp[1]:27 [ print_byte_at::b#0 ] 1: zp[2]:28 [ print_byte_at::at#0 ] +Uplift Scope [print_char_at] 1,560,012: zp[2]:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] 1,500,006: zp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplift Scope [print_byte_at] 200,002: zp[1]:30 [ print_byte_at::$0 ] 100,001: zp[1]:31 [ print_byte_at::$2 ] 35,000.5: zp[1]:27 [ print_byte_at::b#0 ] 35,000.5: zp[2]:28 [ print_byte_at::at#0 ] +Uplift Scope [memset] 333,336.67: zp[2]:21 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_sbyte_at] 46,408: zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] 5,873.33: zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] +Uplift Scope [fmul8] 5,501: zp[1]:23 [ fmul8::a#0 ] 5,501: zp[1]:24 [ fmul8::b#0 ] 3,667.33: zp[1]:32 [ fmul8::return#1 ] 2,002: zp[1]:25 [ fmul8::return#0 ] +Uplift Scope [main] 2,578: zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] 2,002: zp[1]:26 [ main::r#0 ] 1,801.8: zp[1]:10 [ main::j#2 main::j#1 ] 223.94: zp[1]:7 [ main::i#2 main::i#1 ] 223.26: zp[2]:5 [ main::at_line#2 main::at#2 ] 212.1: zp[1]:2 [ main::k#2 main::k#1 ] 143.08: zp[2]:3 [ main::at#4 main::at#1 ] +Uplift Scope [init_screen] 3,003: zp[1]:17 [ init_screen::l#2 init_screen::l#1 ] 1,868.53: zp[2]:18 [ init_screen::COLS#3 init_screen::COLS#1 ] 1,835.17: zp[1]:20 [ init_screen::m#2 init_screen::m#1 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplift Scope [] -Uplifting [main] best 13517 combination zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp[1]:10 [ main::j#2 main::j#1 ] zp[2]:5 [ main::at_line#2 main::at#2 ] zp[1]:7 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#1 ] zp[2]:3 [ main::at#4 main::at#1 ] -Uplifting [print_sbyte_at] best 13517 combination zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Uplifting [fmul8] best 12010 combination reg byte a [ fmul8::return#0 ] reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] +Uplifting [print_char_at] best 14224 combination zp[2]:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [print_byte_at] best 14216 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[1]:27 [ print_byte_at::b#0 ] zp[2]:28 [ print_byte_at::at#0 ] +Uplifting [memset] best 14216 combination zp[2]:21 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_sbyte_at] best 14216 combination zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] +Uplifting [fmul8] best 12709 combination reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] reg byte a [ fmul8::return#0 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [init_screen] best 11800 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] -Uplifting [memset] best 11800 combination zp[2]:21 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char_at] best 11800 combination zp[2]:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [print_byte_at] best 11792 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[1]:27 [ print_byte_at::b#0 ] zp[2]:28 [ print_byte_at::at#0 ] -Uplifting [RADIX] best 11792 combination -Uplifting [print_cls] best 11792 combination -Uplifting [] best 11792 combination -Attempting to uplift remaining variables inzp[1]:10 [ main::j#2 main::j#1 ] -Uplifting [main] best 11792 combination zp[1]:10 [ main::j#2 main::j#1 ] +Uplifting [main] best 12109 combination zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp[1]:10 [ main::j#2 main::j#1 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[2]:5 [ main::at_line#2 main::at#2 ] zp[1]:2 [ main::k#2 main::k#1 ] zp[2]:3 [ main::at#4 main::at#1 ] +Uplifting [init_screen] best 11899 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] +Uplifting [RADIX] best 11899 combination +Uplifting [print_cls] best 11899 combination +Uplifting [] best 11899 combination Attempting to uplift remaining variables inzp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Uplifting [print_sbyte_at] best 11792 combination zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ] -Uplifting [main] best 11792 combination zp[1]:7 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [print_char_at] best 11792 combination zp[1]:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [print_sbyte_at] best 11899 combination zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] Attempting to uplift remaining variables inzp[1]:27 [ print_byte_at::b#0 ] -Uplifting [print_byte_at] best 11792 combination zp[1]:27 [ print_byte_at::b#0 ] +Uplifting [print_byte_at] best 11899 combination zp[1]:27 [ print_byte_at::b#0 ] +Attempting to uplift remaining variables inzp[1]:10 [ main::j#2 main::j#1 ] +Uplifting [main] best 11899 combination zp[1]:10 [ main::j#2 main::j#1 ] +Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ] +Uplifting [main] best 11899 combination zp[1]:7 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::k#2 main::k#1 ] +Uplifting [main] best 11899 combination zp[1]:2 [ main::k#2 main::k#1 ] Coalescing zero page register [ zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] ] with [ zp[2]:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp[2]:28 [ print_byte_at::at#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] ] with [ zp[1]:27 [ print_byte_at::b#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ init_screen::COLS#3 init_screen::COLS#1 ] ] with [ zp[2]:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] ] -Allocated (was zp[2]:3) zp[2]:2 [ main::at#4 main::at#1 ] -Allocated (was zp[2]:5) zp[2]:4 [ main::at_line#2 main::at#2 ] -Allocated (was zp[1]:7) zp[1]:6 [ main::i#2 main::i#1 ] -Allocated (was zp[2]:8) zp[2]:7 [ main::at#6 main::at#3 main::at#12 ] -Allocated (was zp[1]:10) zp[1]:9 [ main::j#2 main::j#1 ] -Allocated (was zp[1]:13) zp[1]:10 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] -Allocated (was zp[1]:14) zp[1]:11 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Allocated (was zp[1]:13) zp[1]:11 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] Allocated (was zp[2]:18) zp[2]:12 [ init_screen::COLS#3 init_screen::COLS#1 print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] Allocated (was zp[2]:21) zp[2]:14 [ memset::dst#2 memset::dst#1 ] @@ -2042,12 +2036,13 @@ __bend_from___b1: __bend: // main main: { - .label at = 2 - .label at_1 = 4 - .label at_2 = 7 - .label j = 9 - .label i = 6 - .label at_line = 4 + .label at = 3 + .label k = 2 + .label at_1 = 5 + .label at_2 = 8 + .label j = $a + .label i = 7 + .label at_line = 5 // [5] call init_screen // [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: @@ -2059,8 +2054,9 @@ main: { sta.z at lda #>$400+4 sta.z at+1 - // [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z k jmp __b1 // [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] __b1_from___b5: @@ -2069,8 +2065,9 @@ main: { jmp __b1 // main::@1 __b1: - // [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) vals + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx - lda vals,x + // [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) vals + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 + ldy.z k + lda vals,y sta.z print_sbyte_at.b // [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda.z at @@ -2094,10 +2091,11 @@ main: { bcc !+ inc.z at+1 !: - // [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #9 + // [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + inc.z k + // [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp.z k bne __b1_from___b5 // [13] phi from main::@5 to main::@2 [phi:main::@5->main::@2] __b2_from___b5: @@ -2222,9 +2220,9 @@ main: { } // print_sbyte_at // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte zp($a) b, byte* zp($c) at) +// print_sbyte_at(signed byte zp($b) b, byte* zp($c) at) print_sbyte_at: { - .label b = $a + .label b = $b .label at = $c // [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda.z b @@ -2237,9 +2235,8 @@ print_sbyte_at: { // [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from___b3: // [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - // [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 - lda #' ' - sta.z print_char_at.ch + // [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuxx=vbuc1 + ldx #' ' jsr print_char_at // [38] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] __b2_from___b3: @@ -2268,9 +2265,8 @@ print_sbyte_at: { // [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from___b1: // [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - // [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 - lda #'-' - sta.z print_char_at.ch + // [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuxx=vbuc1 + ldx #'-' jsr print_char_at jmp __b4 // print_sbyte_at::@4 @@ -2285,12 +2281,11 @@ print_sbyte_at: { } // print_char_at // Print a single char -// print_char_at(byte zp($b) ch, byte* zp($c) at) +// print_char_at(byte register(X) ch, byte* zp($c) at) print_char_at: { .label at = $c - .label ch = $b - // [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 - lda.z ch + // [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (at),y jmp __breturn @@ -2301,9 +2296,9 @@ print_char_at: { } // print_byte_at // Print a byte as HEX at a specific position -// print_byte_at(byte zp($a) b, byte* zp($c) at) +// print_byte_at(byte zp($b) b, byte* zp($c) at) print_byte_at: { - .label b = $a + .label b = $b .label at = $c // [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda.z b @@ -2311,10 +2306,9 @@ print_byte_at: { lsr lsr lsr - // [50] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + // [50] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa tay - lda print_hextab,y - sta.z print_char_at.ch + ldx print_hextab,y // [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 // [52] call print_char_at // Table of hexadecimal digits @@ -2335,9 +2329,8 @@ print_byte_at: { bne !+ inc.z print_char_at.at+1 !: - // [55] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy - lda print_hextab,y - sta.z print_char_at.ch + // [55] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y // [56] call print_char_at // [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from___b1: @@ -2652,26 +2645,26 @@ FINAL SYMBOL TABLE (signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b) (label) fmul8::@return (signed byte) fmul8::a -(signed byte) fmul8::a#0 reg byte a 51.5 +(signed byte) fmul8::a#0 reg byte a 5501.0 (signed byte) fmul8::b -(signed byte) fmul8::b#0 reg byte x 51.5 +(signed byte) fmul8::b#0 reg byte x 5501.0 (signed byte) fmul8::return -(signed byte) fmul8::return#0 reg byte a 202.0 -(signed byte) fmul8::return#1 reg byte a 34.33333333333333 +(signed byte) fmul8::return#0 reg byte a 2002.0 +(signed byte) fmul8::return#1 reg byte a 3667.333333333333 (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::COLS -(byte*) init_screen::COLS#1 COLS zp[2]:12 7.333333333333333 -(byte*) init_screen::COLS#3 COLS zp[2]:12 13.2 +(byte*) init_screen::COLS#1 COLS zp[2]:12 667.3333333333334 +(byte*) init_screen::COLS#3 COLS zp[2]:12 1201.2 (const byte) init_screen::WHITE = (byte) 1 (byte) init_screen::l -(byte) init_screen::l#1 reg byte x 16.5 -(byte) init_screen::l#2 reg byte x 16.5 +(byte) init_screen::l#1 reg byte x 1501.5 +(byte) init_screen::l#2 reg byte x 1501.5 (byte) init_screen::m -(byte) init_screen::m#1 reg byte x 16.5 -(byte) init_screen::m#2 reg byte x 3.6666666666666665 +(byte) init_screen::m#1 reg byte x 1501.5 +(byte) init_screen::m#2 reg byte x 333.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -2683,25 +2676,25 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@return (byte*) main::at -(byte*) main::at#1 at zp[2]:2 7.333333333333333 -(byte*) main::at#12 at_2 zp[2]:7 22.0 -(byte*) main::at#2 at_1 zp[2]:4 2.3157894736842106 -(byte*) main::at#3 at_2 zp[2]:7 27.545454545454547 -(byte*) main::at#4 at zp[2]:2 8.25 -(byte*) main::at#6 at_2 zp[2]:7 213.0 +(byte*) main::at#1 at zp[2]:3 67.33333333333333 +(byte*) main::at#12 at_2 zp[2]:8 202.0 +(byte*) main::at#2 at_1 zp[2]:5 21.263157894736842 +(byte*) main::at#3 at_2 zp[2]:8 273.0 +(byte*) main::at#4 at zp[2]:3 75.75 +(byte*) main::at#6 at_2 zp[2]:8 2103.0 (byte*) main::at_line -(byte*) main::at_line#2 at_line zp[2]:4 22.0 +(byte*) main::at_line#2 at_line zp[2]:5 202.0 (byte) main::i -(byte) main::i#1 i zp[1]:6 16.5 -(byte) main::i#2 i zp[1]:6 7.444444444444445 +(byte) main::i#1 i zp[1]:7 151.5 +(byte) main::i#2 i zp[1]:7 72.44444444444446 (byte) main::j -(byte) main::j#1 j zp[1]:9 151.5 -(byte) main::j#2 j zp[1]:9 30.299999999999997 +(byte) main::j#1 j zp[1]:10 1501.5 +(byte) main::j#2 j zp[1]:10 300.29999999999995 (byte) main::k -(byte) main::k#1 reg byte x 16.5 -(byte) main::k#2 reg byte x 6.6000000000000005 +(byte) main::k#1 k zp[1]:2 151.5 +(byte) main::k#2 k zp[1]:2 60.599999999999994 (signed byte) main::r -(signed byte) main::r#0 reg byte a 202.0 +(signed byte) main::r#0 reg byte a 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -2709,8 +2702,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:14 22.0 -(byte*) memset::dst#2 dst zp[2]:14 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:14 200002.0 +(byte*) memset::dst#2 dst zp[2]:14 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2731,26 +2724,26 @@ FINAL SYMBOL TABLE } }} (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:12 1.0 +(byte*) print_byte_at::at#0 at zp[2]:12 35000.5 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:10 1.0 +(byte) print_byte_at::b#0 b zp[1]:11 35000.5 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:12 4.0 -(byte*) print_char_at::at#1 at zp[2]:12 4.0 -(byte*) print_char_at::at#2 at zp[2]:12 4.0 -(byte*) print_char_at::at#3 at zp[2]:12 2.0 -(byte*) print_char_at::at#4 at zp[2]:12 10.0 +(byte*) print_char_at::at#0 at zp[2]:12 20002.0 +(byte*) print_char_at::at#1 at zp[2]:12 20002.0 +(byte*) print_char_at::at#2 at zp[2]:12 200002.0 +(byte*) print_char_at::at#3 at zp[2]:12 100001.0 +(byte*) print_char_at::at#4 at zp[2]:12 1220005.0 (byte) print_char_at::ch -(byte) print_char_at::ch#2 ch zp[1]:11 2.0 -(byte) print_char_at::ch#3 ch zp[1]:11 4.0 -(byte) print_char_at::ch#4 ch zp[1]:11 6.0 +(byte) print_char_at::ch#2 reg byte x 100001.0 +(byte) print_char_at::ch#3 reg byte x 200002.0 +(byte) print_char_at::ch#4 reg byte x 1200003.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -2761,29 +2754,29 @@ FINAL SYMBOL TABLE (label) print_sbyte_at::@4 (label) print_sbyte_at::@return (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 at zp[2]:12 22.0 -(byte*) print_sbyte_at::at#1 at zp[2]:12 22.0 -(byte*) print_sbyte_at::at#2 at zp[2]:12 202.0 -(byte*) print_sbyte_at::at#3 at zp[2]:12 14.333333333333329 +(byte*) print_sbyte_at::at#0 at zp[2]:12 202.0 +(byte*) print_sbyte_at::at#1 at zp[2]:12 202.0 +(byte*) print_sbyte_at::at#2 at zp[2]:12 2002.0 +(byte*) print_sbyte_at::at#3 at zp[2]:12 3467.3333333333335 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 b zp[1]:10 4.0 -(signed byte) print_sbyte_at::b#1 b zp[1]:10 11.0 -(signed byte) print_sbyte_at::b#2 b zp[1]:10 11.0 -(signed byte) print_sbyte_at::b#3 b zp[1]:10 101.0 -(signed byte) print_sbyte_at::b#4 b zp[1]:10 21.499999999999993 -(signed byte) print_sbyte_at::b#6 b zp[1]:10 4.0 +(signed byte) print_sbyte_at::b#0 b zp[1]:11 20002.0 +(signed byte) print_sbyte_at::b#1 b zp[1]:11 101.0 +(signed byte) print_sbyte_at::b#2 b zp[1]:11 101.0 +(signed byte) print_sbyte_at::b#3 b zp[1]:11 1001.0 +(signed byte) print_sbyte_at::b#4 b zp[1]:11 5201.0 +(signed byte) print_sbyte_at::b#6 b zp[1]:11 20002.0 (byte*) print_screen (const byte*) print_screen#0 print_screen = (byte*) 1024 (const signed byte*) vals[] = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f } -reg byte x [ main::k#2 main::k#1 ] -zp[2]:2 [ main::at#4 main::at#1 ] -zp[2]:4 [ main::at_line#2 main::at#2 ] -zp[1]:6 [ main::i#2 main::i#1 ] -zp[2]:7 [ main::at#6 main::at#3 main::at#12 ] -zp[1]:9 [ main::j#2 main::j#1 ] -zp[1]:10 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] -zp[1]:11 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +zp[1]:2 [ main::k#2 main::k#1 ] +zp[2]:3 [ main::at#4 main::at#1 ] +zp[2]:5 [ main::at_line#2 main::at#2 ] +zp[1]:7 [ main::i#2 main::i#1 ] +zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] +zp[1]:10 [ main::j#2 main::j#1 ] +zp[1]:11 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] +reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:12 [ init_screen::COLS#3 init_screen::COLS#1 print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] @@ -2798,7 +2791,7 @@ reg byte a [ fmul8::return#1 ] FINAL ASSEMBLER -Score: 10046 +Score: 10153 // File Comments // Seriously fast multiply 8-bit version (8bit*8bit=8bit) @@ -2827,12 +2820,13 @@ Score: 10046 // @end // main main: { - .label at = 2 - .label at_1 = 4 - .label at_2 = 7 - .label j = 9 - .label i = 6 - .label at_line = 4 + .label at = 3 + .label k = 2 + .label at_1 = 5 + .label at_2 = 8 + .label j = $a + .label i = 7 + .label at_line = 5 // init_screen() // [5] call init_screen // [63] phi from main to init_screen [phi:main->init_screen] @@ -2843,16 +2837,18 @@ main: { sta.z at lda #>$400+4 sta.z at+1 - // [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z k // [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] // [6] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy // [6] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy // main::@1 __b1: // print_sbyte_at(vals[k], at) - // [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) vals + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx - lda vals,x + // [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) vals + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 + ldy.z k + lda vals,y sta.z print_sbyte_at.b // [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda.z at @@ -2875,10 +2871,11 @@ main: { inc.z at+1 !: // for(byte k: 0..8) - // [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #9 + // [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + inc.z k + // [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp.z k bne __b1 // [13] phi from main::@5 to main::@2 [phi:main::@5->main::@2] // [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 @@ -2991,9 +2988,9 @@ main: { } // print_sbyte_at // Print a signed byte as hex at a specific screen position -// print_sbyte_at(signed byte zp($a) b, byte* zp($c) at) +// print_sbyte_at(signed byte zp($b) b, byte* zp($c) at) print_sbyte_at: { - .label b = $a + .label b = $b .label at = $c // if(b<0) // [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 @@ -3005,9 +3002,8 @@ print_sbyte_at: { // [37] call print_char_at // [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] // [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - // [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 - lda #' ' - sta.z print_char_at.ch + // [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuxx=vbuc1 + ldx #' ' jsr print_char_at // [38] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] // [38] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy @@ -3033,9 +3029,8 @@ print_sbyte_at: { // [44] call print_char_at // [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] // [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - // [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 - lda #'-' - sta.z print_char_at.ch + // [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuxx=vbuc1 + ldx #'-' jsr print_char_at // print_sbyte_at::@4 // b = -b @@ -3049,13 +3044,12 @@ print_sbyte_at: { } // print_char_at // Print a single char -// print_char_at(byte zp($b) ch, byte* zp($c) at) +// print_char_at(byte register(X) ch, byte* zp($c) at) print_char_at: { .label at = $c - .label ch = $b // *(at) = ch - // [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 - lda.z ch + // [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (at),y // print_char_at::@return @@ -3065,9 +3059,9 @@ print_char_at: { } // print_byte_at // Print a byte as HEX at a specific position -// print_byte_at(byte zp($a) b, byte* zp($c) at) +// print_byte_at(byte zp($b) b, byte* zp($c) at) print_byte_at: { - .label b = $a + .label b = $b .label at = $c // b>>4 // [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 @@ -3077,10 +3071,9 @@ print_byte_at: { lsr lsr // print_char_at(print_hextab[b>>4], at) - // [50] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + // [50] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa tay - lda print_hextab,y - sta.z print_char_at.ch + ldx print_hextab,y // [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 // [52] call print_char_at // Table of hexadecimal digits @@ -3100,9 +3093,8 @@ print_byte_at: { bne !+ inc.z print_char_at.at+1 !: - // [55] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy - lda print_hextab,y - sta.z print_char_at.ch + // [55] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y // [56] call print_char_at // [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] // [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.sym b/src/test/ref/examples/fastmultiply/fastmultiply8.sym index 8348fe1a2..c4e8def2b 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.sym +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.sym @@ -11,26 +11,26 @@ (signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b) (label) fmul8::@return (signed byte) fmul8::a -(signed byte) fmul8::a#0 reg byte a 51.5 +(signed byte) fmul8::a#0 reg byte a 5501.0 (signed byte) fmul8::b -(signed byte) fmul8::b#0 reg byte x 51.5 +(signed byte) fmul8::b#0 reg byte x 5501.0 (signed byte) fmul8::return -(signed byte) fmul8::return#0 reg byte a 202.0 -(signed byte) fmul8::return#1 reg byte a 34.33333333333333 +(signed byte) fmul8::return#0 reg byte a 2002.0 +(signed byte) fmul8::return#1 reg byte a 3667.333333333333 (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::COLS -(byte*) init_screen::COLS#1 COLS zp[2]:12 7.333333333333333 -(byte*) init_screen::COLS#3 COLS zp[2]:12 13.2 +(byte*) init_screen::COLS#1 COLS zp[2]:12 667.3333333333334 +(byte*) init_screen::COLS#3 COLS zp[2]:12 1201.2 (const byte) init_screen::WHITE = (byte) 1 (byte) init_screen::l -(byte) init_screen::l#1 reg byte x 16.5 -(byte) init_screen::l#2 reg byte x 16.5 +(byte) init_screen::l#1 reg byte x 1501.5 +(byte) init_screen::l#2 reg byte x 1501.5 (byte) init_screen::m -(byte) init_screen::m#1 reg byte x 16.5 -(byte) init_screen::m#2 reg byte x 3.6666666666666665 +(byte) init_screen::m#1 reg byte x 1501.5 +(byte) init_screen::m#2 reg byte x 333.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -42,25 +42,25 @@ (label) main::@8 (label) main::@return (byte*) main::at -(byte*) main::at#1 at zp[2]:2 7.333333333333333 -(byte*) main::at#12 at_2 zp[2]:7 22.0 -(byte*) main::at#2 at_1 zp[2]:4 2.3157894736842106 -(byte*) main::at#3 at_2 zp[2]:7 27.545454545454547 -(byte*) main::at#4 at zp[2]:2 8.25 -(byte*) main::at#6 at_2 zp[2]:7 213.0 +(byte*) main::at#1 at zp[2]:3 67.33333333333333 +(byte*) main::at#12 at_2 zp[2]:8 202.0 +(byte*) main::at#2 at_1 zp[2]:5 21.263157894736842 +(byte*) main::at#3 at_2 zp[2]:8 273.0 +(byte*) main::at#4 at zp[2]:3 75.75 +(byte*) main::at#6 at_2 zp[2]:8 2103.0 (byte*) main::at_line -(byte*) main::at_line#2 at_line zp[2]:4 22.0 +(byte*) main::at_line#2 at_line zp[2]:5 202.0 (byte) main::i -(byte) main::i#1 i zp[1]:6 16.5 -(byte) main::i#2 i zp[1]:6 7.444444444444445 +(byte) main::i#1 i zp[1]:7 151.5 +(byte) main::i#2 i zp[1]:7 72.44444444444446 (byte) main::j -(byte) main::j#1 j zp[1]:9 151.5 -(byte) main::j#2 j zp[1]:9 30.299999999999997 +(byte) main::j#1 j zp[1]:10 1501.5 +(byte) main::j#2 j zp[1]:10 300.29999999999995 (byte) main::k -(byte) main::k#1 reg byte x 16.5 -(byte) main::k#2 reg byte x 6.6000000000000005 +(byte) main::k#1 k zp[1]:2 151.5 +(byte) main::k#2 k zp[1]:2 60.599999999999994 (signed byte) main::r -(signed byte) main::r#0 reg byte a 202.0 +(signed byte) main::r#0 reg byte a 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -68,8 +68,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:14 22.0 -(byte*) memset::dst#2 dst zp[2]:14 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:14 200002.0 +(byte*) memset::dst#2 dst zp[2]:14 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -90,26 +90,26 @@ } }} (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 200002.0 +(byte~) print_byte_at::$2 reg byte y 100001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:12 1.0 +(byte*) print_byte_at::at#0 at zp[2]:12 35000.5 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:10 1.0 +(byte) print_byte_at::b#0 b zp[1]:11 35000.5 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:12 4.0 -(byte*) print_char_at::at#1 at zp[2]:12 4.0 -(byte*) print_char_at::at#2 at zp[2]:12 4.0 -(byte*) print_char_at::at#3 at zp[2]:12 2.0 -(byte*) print_char_at::at#4 at zp[2]:12 10.0 +(byte*) print_char_at::at#0 at zp[2]:12 20002.0 +(byte*) print_char_at::at#1 at zp[2]:12 20002.0 +(byte*) print_char_at::at#2 at zp[2]:12 200002.0 +(byte*) print_char_at::at#3 at zp[2]:12 100001.0 +(byte*) print_char_at::at#4 at zp[2]:12 1220005.0 (byte) print_char_at::ch -(byte) print_char_at::ch#2 ch zp[1]:11 2.0 -(byte) print_char_at::ch#3 ch zp[1]:11 4.0 -(byte) print_char_at::ch#4 ch zp[1]:11 6.0 +(byte) print_char_at::ch#2 reg byte x 100001.0 +(byte) print_char_at::ch#3 reg byte x 200002.0 +(byte) print_char_at::ch#4 reg byte x 1200003.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -120,29 +120,29 @@ (label) print_sbyte_at::@4 (label) print_sbyte_at::@return (byte*) print_sbyte_at::at -(byte*) print_sbyte_at::at#0 at zp[2]:12 22.0 -(byte*) print_sbyte_at::at#1 at zp[2]:12 22.0 -(byte*) print_sbyte_at::at#2 at zp[2]:12 202.0 -(byte*) print_sbyte_at::at#3 at zp[2]:12 14.333333333333329 +(byte*) print_sbyte_at::at#0 at zp[2]:12 202.0 +(byte*) print_sbyte_at::at#1 at zp[2]:12 202.0 +(byte*) print_sbyte_at::at#2 at zp[2]:12 2002.0 +(byte*) print_sbyte_at::at#3 at zp[2]:12 3467.3333333333335 (signed byte) print_sbyte_at::b -(signed byte) print_sbyte_at::b#0 b zp[1]:10 4.0 -(signed byte) print_sbyte_at::b#1 b zp[1]:10 11.0 -(signed byte) print_sbyte_at::b#2 b zp[1]:10 11.0 -(signed byte) print_sbyte_at::b#3 b zp[1]:10 101.0 -(signed byte) print_sbyte_at::b#4 b zp[1]:10 21.499999999999993 -(signed byte) print_sbyte_at::b#6 b zp[1]:10 4.0 +(signed byte) print_sbyte_at::b#0 b zp[1]:11 20002.0 +(signed byte) print_sbyte_at::b#1 b zp[1]:11 101.0 +(signed byte) print_sbyte_at::b#2 b zp[1]:11 101.0 +(signed byte) print_sbyte_at::b#3 b zp[1]:11 1001.0 +(signed byte) print_sbyte_at::b#4 b zp[1]:11 5201.0 +(signed byte) print_sbyte_at::b#6 b zp[1]:11 20002.0 (byte*) print_screen (const byte*) print_screen#0 print_screen = (byte*) 1024 (const signed byte*) vals[] = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f } -reg byte x [ main::k#2 main::k#1 ] -zp[2]:2 [ main::at#4 main::at#1 ] -zp[2]:4 [ main::at_line#2 main::at#2 ] -zp[1]:6 [ main::i#2 main::i#1 ] -zp[2]:7 [ main::at#6 main::at#3 main::at#12 ] -zp[1]:9 [ main::j#2 main::j#1 ] -zp[1]:10 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] -zp[1]:11 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +zp[1]:2 [ main::k#2 main::k#1 ] +zp[2]:3 [ main::at#4 main::at#1 ] +zp[2]:5 [ main::at_line#2 main::at#2 ] +zp[1]:7 [ main::i#2 main::i#1 ] +zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] +zp[1]:10 [ main::j#2 main::j#1 ] +zp[1]:11 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 print_byte_at::b#0 ] +reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:12 [ init_screen::COLS#3 init_screen::COLS#1 print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] diff --git a/src/test/ref/examples/fire/fire.log b/src/test/ref/examples/fire/fire.log index 45fd9a027..3e5836696 100644 --- a/src/test/ref/examples/fire/fire.log +++ b/src/test/ref/examples/fire/fire.log @@ -865,51 +865,51 @@ Inferred type updated to byte in (unumber~) makecharset::$13 ← (byte~) makecha Inversing boolean not [81] (bool~) fire::$9 ← (byte) fire::c#0 <= (byte) 2 from [80] (bool~) fire::$8 ← (byte) fire::c#0 > (byte) 2 Inversing boolean not [152] (bool~) makecharset::$9 ← (byte) makecharset::bc#1 <= (byte) $3f from [151] (bool~) makecharset::$8 ← (byte) makecharset::bc#1 > (byte) $3f Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$7 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$9 -Alias (byte*) fire::screen#0 = (byte*) fire::screenbase#2 -Alias (byte*) fire::buffer#4 = (byte*) fire::buffer#5 (byte*) fire::buffer#9 -Alias (byte*) fire::screen#6 = (byte*) fire::screen#9 (byte*) fire::screen#7 -Alias (byte*) fire::screenbase#3 = (byte*) fire::screenbase#6 (byte*) fire::screenbase#4 (byte*) fire::screenbase#7 -Alias (byte) fire::c#0 = (byte~) fire::$7 (byte) fire::c#3 -Alias (byte*) fire::screen#1 = (byte*~) fire::$0 -Alias (byte*) fire::buffer#1 = (byte*~) fire::$1 -Alias (byte*) fire::buffer#10 = (byte*) fire::buffer#7 (byte*) fire::buffer#8 -Alias (byte*) fire::screen#10 = (byte*) fire::screen#8 (byte*) fire::screen#5 -Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 -Alias (byte*) makecharset::font#0 = (byte*) makecharset::charset#1 -Alias (byte*) makecharset::font#2 = (byte*) makecharset::font#3 -Alias (byte*) makecharset::charset#2 = (byte*) makecharset::charset#6 (byte*) makecharset::charset#3 -Alias (byte*) makecharset::font1#0 = (byte*~) makecharset::$2 -Alias (byte*) makecharset::font1#2 = (byte*) makecharset::font1#3 -Alias (byte*) makecharset::charset#17 = (byte*) makecharset::charset#7 (byte*) makecharset::charset#4 -Alias (byte) makecharset::c#2 = (byte) makecharset::c#8 -Alias (byte*) makecharset::charset#14 = (byte*) makecharset::charset#15 -Alias (byte) makecharset::bc#6 = (byte) makecharset::bc#8 -Alias (byte) makecharset::c#3 = (byte) makecharset::c#9 (byte) makecharset::c#6 -Alias (byte*) makecharset::charset#11 = (byte*) makecharset::charset#9 (byte*) makecharset::charset#16 -Alias (byte) makecharset::i#2 = (byte) makecharset::i#7 -Alias (byte) makecharset::bc#3 = (byte) makecharset::bc#5 (byte) makecharset::bc#9 -Alias (byte) makecharset::c#11 = (byte) makecharset::c#4 (byte) makecharset::c#7 (byte) makecharset::c#5 -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#5 (byte) makecharset::ii#4 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#6 (byte) makecharset::i#5 (byte) makecharset::i#4 -Alias (byte) makecharset::b#2 = (byte) makecharset::b#5 (byte) makecharset::b#4 (byte) makecharset::b#3 -Alias (byte*) makecharset::charset#12 = (byte*) makecharset::charset#8 (byte*) makecharset::charset#5 (byte*) makecharset::charset#13 -Alias (byte) makecharset::bc#1 = (byte) makecharset::bc#4 -Alias (byte) makecharset::bc#2 = (byte~) makecharset::$10 +Alias sid_rnd::return#0 = sid_rnd::return#3 sid_rnd::return#1 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$7 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$9 +Alias fire::screen#0 = fire::screenbase#2 +Alias fire::buffer#4 = fire::buffer#5 fire::buffer#9 +Alias fire::screen#6 = fire::screen#9 fire::screen#7 +Alias fire::screenbase#3 = fire::screenbase#6 fire::screenbase#4 fire::screenbase#7 +Alias fire::c#0 = fire::$7 fire::c#3 +Alias fire::screen#1 = fire::$0 +Alias fire::buffer#1 = fire::$1 +Alias fire::buffer#10 = fire::buffer#7 fire::buffer#8 +Alias fire::screen#10 = fire::screen#8 fire::screen#5 +Alias sid_rnd::return#2 = sid_rnd::return#4 +Alias makecharset::font#0 = makecharset::charset#1 +Alias makecharset::font#2 = makecharset::font#3 +Alias makecharset::charset#2 = makecharset::charset#6 makecharset::charset#3 +Alias makecharset::font1#0 = makecharset::$2 +Alias makecharset::font1#2 = makecharset::font1#3 +Alias makecharset::charset#17 = makecharset::charset#7 makecharset::charset#4 +Alias makecharset::c#2 = makecharset::c#8 +Alias makecharset::charset#14 = makecharset::charset#15 +Alias makecharset::bc#6 = makecharset::bc#8 +Alias makecharset::c#3 = makecharset::c#9 makecharset::c#6 +Alias makecharset::charset#11 = makecharset::charset#9 makecharset::charset#16 +Alias makecharset::i#2 = makecharset::i#7 +Alias makecharset::bc#3 = makecharset::bc#5 makecharset::bc#9 +Alias makecharset::c#11 = makecharset::c#4 makecharset::c#7 makecharset::c#5 +Alias makecharset::ii#2 = makecharset::ii#5 makecharset::ii#4 +Alias makecharset::i#3 = makecharset::i#6 makecharset::i#5 makecharset::i#4 +Alias makecharset::b#2 = makecharset::b#5 makecharset::b#4 makecharset::b#3 +Alias makecharset::charset#12 = makecharset::charset#8 makecharset::charset#5 makecharset::charset#13 +Alias makecharset::bc#1 = makecharset::bc#4 +Alias makecharset::bc#2 = makecharset::$10 Successful SSA optimization Pass2AliasElimination -Alias (byte*) fire::buffer#4 = (byte*) fire::buffer#6 -Alias (byte*) fire::screen#4 = (byte*) fire::screen#6 -Alias (byte*) fire::screenbase#3 = (byte*) fire::screenbase#5 -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#3 -Alias (byte) makecharset::c#10 = (byte) makecharset::c#11 -Alias (byte*) makecharset::charset#10 = (byte*) makecharset::charset#12 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#8 +Alias fire::buffer#4 = fire::buffer#6 +Alias fire::screen#4 = fire::screen#6 +Alias fire::screenbase#3 = fire::screenbase#5 +Alias makecharset::ii#2 = makecharset::ii#3 +Alias makecharset::c#10 = makecharset::c#11 +Alias makecharset::charset#10 = makecharset::charset#12 +Alias makecharset::i#3 = makecharset::i#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) fire::screenbase#3 (byte*) fire::screen#0 Identical Phi Values (byte*) makecharset::font#0 (byte*) makecharset::charset#0 @@ -1428,38 +1428,38 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 VARIABLE REGISTER WEIGHTS (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (byte) fillscreen::fill -(byte) fillscreen::fill#5 1.8333333333333333 +(byte) fillscreen::fill#5 166.83333333333334 (word) fillscreen::i -(word) fillscreen::i#1 16.5 -(word) fillscreen::i#2 7.333333333333333 +(word) fillscreen::i#1 1501.5 +(word) fillscreen::i#2 667.3333333333334 (byte*) fillscreen::screen -(byte*) fillscreen::screen#4 7.333333333333333 -(byte*) fillscreen::screen#5 17.5 -(byte*) fillscreen::screen#6 2.0 +(byte*) fillscreen::screen#4 667.3333333333334 +(byte*) fillscreen::screen#5 1552.0 +(byte*) fillscreen::screen#6 101.0 (void()) fire((byte*) fire::screenbase) -(byte~) fire::$12 202.0 -(byte~) fire::$13 202.0 -(byte~) fire::$14 202.0 -(byte~) fire::$4 202.0 -(byte~) fire::$5 202.0 -(byte~) fire::$6 202.0 +(byte~) fire::$12 200002.0 +(byte~) fire::$13 200002.0 +(byte~) fire::$14 200002.0 +(byte~) fire::$4 200002.0 +(byte~) fire::$5 200002.0 +(byte~) fire::$6 200002.0 (byte*) fire::buffer -(byte*) fire::buffer#10 45.90909090909091 -(byte*) fire::buffer#2 202.0 -(byte*) fire::buffer#3 202.0 -(byte*) fire::buffer#4 75.75 +(byte*) fire::buffer#10 45455.0 +(byte*) fire::buffer#2 200002.0 +(byte*) fire::buffer#3 200002.0 +(byte*) fire::buffer#4 75000.75 (byte) fire::c -(byte) fire::c#0 202.0 -(byte) fire::c#1 202.0 -(byte) fire::c#2 303.0 +(byte) fire::c#0 200002.0 +(byte) fire::c#1 200002.0 +(byte) fire::c#2 300003.0 (byte*) fire::screen -(byte*) fire::screen#0 0.26666666666666666 -(byte*) fire::screen#1 4.0 -(byte*) fire::screen#10 30.5 -(byte*) fire::screen#11 4.0 -(byte*) fire::screen#2 101.0 -(byte*) fire::screen#3 101.0 -(byte*) fire::screen#4 27.727272727272727 +(byte*) fire::screen#0 133.46666666666667 +(byte*) fire::screen#1 2002.0 +(byte*) fire::screen#10 30100.4 +(byte*) fire::screen#11 2002.0 +(byte*) fire::screen#2 100001.0 +(byte*) fire::screen#3 100001.0 +(byte*) fire::screen#4 27364.0 (byte*) fire::screenbase (void()) main() (byte*) main::toD0181_gfx @@ -1469,43 +1469,43 @@ VARIABLE REGISTER WEIGHTS (byte) main::toD0182_return (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(byte~) makecharset::$11 2002.0 -(byte~) makecharset::$12 2002.0 -(byte~) makecharset::$13 2002.0 -(word~) makecharset::$15 202.0 -(word~) makecharset::$16 202.0 -(word~) makecharset::$17 202.0 -(byte*~) makecharset::$18 202.0 +(byte~) makecharset::$11 200002.0 +(byte~) makecharset::$12 200002.0 +(byte~) makecharset::$13 200002.0 +(word~) makecharset::$15 20002.0 +(word~) makecharset::$16 20002.0 +(word~) makecharset::$17 20002.0 +(byte*~) makecharset::$18 20002.0 (byte) makecharset::b -(byte) makecharset::b#1 2002.0 -(byte) makecharset::b#2 258.6666666666667 -(byte) makecharset::b#6 1501.5 +(byte) makecharset::b#1 200002.0 +(byte) makecharset::b#2 25833.666666666664 +(byte) makecharset::b#6 150001.5 (byte) makecharset::bc -(byte) makecharset::bc#1 2002.0 -(byte) makecharset::bc#2 400.4 -(byte) makecharset::bc#3 275.5 -(byte) makecharset::bc#6 101.0 -(byte) makecharset::bc#7 1501.5 +(byte) makecharset::bc#1 200002.0 +(byte) makecharset::bc#2 40000.4 +(byte) makecharset::bc#3 27500.5 +(byte) makecharset::bc#6 10001.0 +(byte) makecharset::bc#7 150001.5 (byte) makecharset::c -(byte) makecharset::c#1 22.0 -(byte) makecharset::c#2 49.238095238095234 +(byte) makecharset::c#1 2002.0 +(byte) makecharset::c#2 4904.952380952381 (byte*) makecharset::charset (byte*) makecharset::font -(byte*) makecharset::font#1 22.0 -(byte*) makecharset::font#2 14.666666666666666 +(byte*) makecharset::font#1 2002.0 +(byte*) makecharset::font#2 1334.6666666666667 (byte*) makecharset::font1 -(byte*) makecharset::font1#1 22.0 -(byte*) makecharset::font1#2 14.666666666666666 +(byte*) makecharset::font1#1 2002.0 +(byte*) makecharset::font1#2 1334.6666666666667 (byte) makecharset::i -(byte) makecharset::i#1 202.0 -(byte) makecharset::i#2 78.05555555555556 +(byte) makecharset::i#1 20002.0 +(byte) makecharset::i#2 7778.055555555556 (byte) makecharset::ii -(byte) makecharset::ii#1 2002.0 -(byte) makecharset::ii#2 400.4 +(byte) makecharset::ii#1 200002.0 +(byte) makecharset::ii#2 40000.4 (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 34.33333333333333 -(byte) sid_rnd::return#2 202.0 +(byte) sid_rnd::return#0 366667.3333333334 +(byte) sid_rnd::return#2 200002.0 (void()) sid_rnd_init() Initial phi equivalence classes @@ -2303,94 +2303,94 @@ fillscreen: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte*) fire::screen#11 ← (byte*) fire::screen#0 [ fire::screen#0 fire::screen#11 ] ( main:2::fire:19 [ fire::screen#0 fire::screen#11 ] main:2::fire:22 [ fire::screen#0 fire::screen#11 ] ) always clobbers reg byte a -Statement [28] if((byte*) fire::buffer#4!=(const byte*) BUFFER+(word)(number) $18*(number) $28) goto fire::@2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte a -Statement [29] (byte*) fire::screen#1 ← (byte*) fire::screen#0 + (word)(number) $18*(number) $28 [ fire::screen#1 ] ( main:2::fire:19 [ fire::screen#1 ] main:2::fire:22 [ fire::screen#1 ] ) always clobbers reg byte a -Statement [31] if((byte*) fire::buffer#10!=(const byte*) BUFFER+(word)(number) $19*(number) $28) goto fire::@7 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte a -Statement [37] (byte~) fire::$13 ← (byte~) fire::$12 >> (byte) 4 [ fire::buffer#10 fire::screen#10 fire::$13 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 fire::$13 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 fire::$13 ] ) always clobbers reg byte a -Statement [39] *((byte*) fire::buffer#10) ← (byte~) fire::$14 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte y -Statement [40] *((byte*) fire::screen#10) ← *((byte*) fire::buffer#10) [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte a reg byte y -Statement [43] (byte~) fire::$4 ← *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) + *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte~) fire::$5 ← (byte~) fire::$4 + *((byte*) fire::buffer#4 + (byte) $28) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte~) fire::$6 ← (byte~) fire::$5 + *((byte*) fire::buffer#4 + (byte) $29) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte) fire::c#0 ← (byte~) fire::$6 >> (byte) 2 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ) always clobbers reg byte a -Statement [48] (byte) fire::c#1 ← (byte) fire::c#0 - (byte) 3 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ) always clobbers reg byte a -Statement [50] *((byte*) fire::buffer#4) ← (byte) fire::c#2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte y -Statement [51] *((byte*) fire::screen#4) ← *((byte*) fire::buffer#4) [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte a reg byte y -Statement [58] if((byte*) makecharset::font#2!=(const byte*) CHARSET+(byte)(number) 1*(number) 8) goto makecharset::@2 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] ) always clobbers reg byte a -Statement [60] if((byte*) makecharset::font1#2!=(const byte*) CHARSET+(word)(number) $100*(number) 8) goto makecharset::@4 [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] ) always clobbers reg byte a -Statement [69] (word~) makecharset::$15 ← (word)(byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] (byte*) fire::screen#11 ← (byte*) fire::screen#0 [ fire::screen#0 fire::screen#11 ] ( main:2::fire:19 [ fire::screen#0 fire::screen#11 ] { } main:2::fire:22 [ fire::screen#0 fire::screen#11 ] { } ) always clobbers reg byte a +Statement [28] if((byte*) fire::buffer#4!=(const byte*) BUFFER+(word)(number) $18*(number) $28) goto fire::@2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte a +Statement [29] (byte*) fire::screen#1 ← (byte*) fire::screen#0 + (word)(number) $18*(number) $28 [ fire::screen#1 ] ( main:2::fire:19 [ fire::screen#1 ] { } main:2::fire:22 [ fire::screen#1 ] { } ) always clobbers reg byte a +Statement [31] if((byte*) fire::buffer#10!=(const byte*) BUFFER+(word)(number) $19*(number) $28) goto fire::@7 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte a +Statement [37] (byte~) fire::$13 ← (byte~) fire::$12 >> (byte) 4 [ fire::buffer#10 fire::screen#10 fire::$13 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 fire::$13 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 fire::$13 ] { } ) always clobbers reg byte a +Statement [39] *((byte*) fire::buffer#10) ← (byte~) fire::$14 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte y +Statement [40] *((byte*) fire::screen#10) ← *((byte*) fire::buffer#10) [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte a reg byte y +Statement [43] (byte~) fire::$4 ← *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) + *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] { } ) always clobbers reg byte a reg byte y +Statement [44] (byte~) fire::$5 ← (byte~) fire::$4 + *((byte*) fire::buffer#4 + (byte) $28) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] { } ) always clobbers reg byte a reg byte y +Statement [45] (byte~) fire::$6 ← (byte~) fire::$5 + *((byte*) fire::buffer#4 + (byte) $29) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] { } ) always clobbers reg byte a reg byte y +Statement [46] (byte) fire::c#0 ← (byte~) fire::$6 >> (byte) 2 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] { } ) always clobbers reg byte a +Statement [48] (byte) fire::c#1 ← (byte) fire::c#0 - (byte) 3 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) fire::buffer#4) ← (byte) fire::c#2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte y +Statement [51] *((byte*) fire::screen#4) ← *((byte*) fire::buffer#4) [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte a reg byte y +Statement [58] if((byte*) makecharset::font#2!=(const byte*) CHARSET+(byte)(number) 1*(number) 8) goto makecharset::@2 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] { } ) always clobbers reg byte a +Statement [60] if((byte*) makecharset::font1#2!=(const byte*) CHARSET+(word)(number) $100*(number) 8) goto makecharset::@4 [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] { } ) always clobbers reg byte a +Statement [69] (word~) makecharset::$15 ← (word)(byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:19 [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] -Statement [70] (word~) makecharset::$16 ← (word~) makecharset::$15 << (byte) 3 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [71] (word~) makecharset::$17 ← (word~) makecharset::$16 + (byte) makecharset::i#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ) always clobbers reg byte a -Statement [72] (byte*~) makecharset::$18 ← (const byte*) CHARSET+(byte)(number) 1*(number) 8 + (word~) makecharset::$17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ) always clobbers reg byte a -Statement [73] *((byte*~) makecharset::$18) ← (byte) makecharset::b#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ) always clobbers reg byte a reg byte y +Statement [70] (word~) makecharset::$16 ← (word~) makecharset::$15 << (byte) 3 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [71] (word~) makecharset::$17 ← (word~) makecharset::$16 + (byte) makecharset::i#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] { } ) always clobbers reg byte a +Statement [72] (byte*~) makecharset::$18 ← (const byte*) CHARSET+(byte)(number) 1*(number) 8 + (word~) makecharset::$17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] { } ) always clobbers reg byte a +Statement [73] *((byte*~) makecharset::$18) ← (byte) makecharset::b#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] -Statement [75] (byte) makecharset::bc#1 ← (byte) makecharset::bc#3 + (byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ) always clobbers reg byte a +Statement [75] (byte) makecharset::bc#1 ← (byte) makecharset::bc#3 + (byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] -Statement [77] (byte) makecharset::bc#2 ← (byte) makecharset::bc#1 - (byte) $40 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ) always clobbers reg byte a reg byte x +Statement [77] (byte) makecharset::bc#2 ← (byte) makecharset::bc#1 - (byte) $40 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] Removing always clobbered register reg byte x as potential for zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] Removing always clobbered register reg byte x as potential for zp[1]:21 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] -Statement [78] (byte~) makecharset::$11 ← (byte) makecharset::i#2 & (byte) 1 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [79] (byte~) makecharset::$12 ← (byte) makecharset::ii#2 + (byte~) makecharset::$11 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ) always clobbers reg byte a -Statement [81] (byte) makecharset::b#1 ← (byte) makecharset::b#2 + *((const byte*) makecharset::bittab + (byte~) makecharset::$13) [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ) always clobbers reg byte a -Statement [84] *((byte*) makecharset::font1#2) ← (byte) $ff [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) makecharset::font#2) ← (byte) 0 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] ) always clobbers reg byte a reg byte y -Statement [88] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [89] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [93] *((byte*) fillscreen::screen#5) ← (byte) fillscreen::fill#5 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ) always clobbers reg byte y +Statement [78] (byte~) makecharset::$11 ← (byte) makecharset::i#2 & (byte) 1 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [79] (byte~) makecharset::$12 ← (byte) makecharset::ii#2 + (byte~) makecharset::$11 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [81] (byte) makecharset::b#1 ← (byte) makecharset::b#2 + *((const byte*) makecharset::bittab + (byte~) makecharset::$13) [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] { } ) always clobbers reg byte a +Statement [84] *((byte*) makecharset::font1#2) ← (byte) $ff [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((byte*) makecharset::font#2) ← (byte) 0 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] { } ) always clobbers reg byte a reg byte y +Statement [88] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::sid_rnd_init:15 [ ] { } ) always clobbers reg byte a +Statement [89] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::sid_rnd_init:15 [ ] { } ) always clobbers reg byte a +Statement [93] *((byte*) fillscreen::screen#5) ← (byte) fillscreen::fill#5 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:22 [ fillscreen::fill#5 ] -Statement [96] if((word) fillscreen::i#1!=(word) $3e8) goto fillscreen::@1 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ) always clobbers reg byte a +Statement [96] if((word) fillscreen::i#1!=(word) $3e8) goto fillscreen::@1 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ fillscreen::fill#5 ] -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte*) fire::screen#11 ← (byte*) fire::screen#0 [ fire::screen#0 fire::screen#11 ] ( main:2::fire:19 [ fire::screen#0 fire::screen#11 ] main:2::fire:22 [ fire::screen#0 fire::screen#11 ] ) always clobbers reg byte a -Statement [28] if((byte*) fire::buffer#4!=(const byte*) BUFFER+(word)(number) $18*(number) $28) goto fire::@2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte a -Statement [29] (byte*) fire::screen#1 ← (byte*) fire::screen#0 + (word)(number) $18*(number) $28 [ fire::screen#1 ] ( main:2::fire:19 [ fire::screen#1 ] main:2::fire:22 [ fire::screen#1 ] ) always clobbers reg byte a -Statement [31] if((byte*) fire::buffer#10!=(const byte*) BUFFER+(word)(number) $19*(number) $28) goto fire::@7 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte a -Statement [37] (byte~) fire::$13 ← (byte~) fire::$12 >> (byte) 4 [ fire::buffer#10 fire::screen#10 fire::$13 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 fire::$13 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 fire::$13 ] ) always clobbers reg byte a -Statement [39] *((byte*) fire::buffer#10) ← (byte~) fire::$14 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte y -Statement [40] *((byte*) fire::screen#10) ← *((byte*) fire::buffer#10) [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] ) always clobbers reg byte a reg byte y -Statement [43] (byte~) fire::$4 ← *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) + *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte~) fire::$5 ← (byte~) fire::$4 + *((byte*) fire::buffer#4 + (byte) $28) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ) always clobbers reg byte a reg byte y -Statement [45] (byte~) fire::$6 ← (byte~) fire::$5 + *((byte*) fire::buffer#4 + (byte) $29) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte) fire::c#0 ← (byte~) fire::$6 >> (byte) 2 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ) always clobbers reg byte a -Statement [48] (byte) fire::c#1 ← (byte) fire::c#0 - (byte) 3 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ) always clobbers reg byte a -Statement [50] *((byte*) fire::buffer#4) ← (byte) fire::c#2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte y -Statement [51] *((byte*) fire::screen#4) ← *((byte*) fire::buffer#4) [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ) always clobbers reg byte a reg byte y -Statement [58] if((byte*) makecharset::font#2!=(const byte*) CHARSET+(byte)(number) 1*(number) 8) goto makecharset::@2 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] ) always clobbers reg byte a -Statement [60] if((byte*) makecharset::font1#2!=(const byte*) CHARSET+(word)(number) $100*(number) 8) goto makecharset::@4 [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] ) always clobbers reg byte a -Statement [62] if((byte) makecharset::c#2<(byte) $40) goto makecharset::@6 [ makecharset::c#2 ] ( main:2::makecharset:17 [ makecharset::c#2 ] ) always clobbers reg byte a -Statement [65] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@8 [ makecharset::c#2 makecharset::i#2 makecharset::bc#6 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#6 ] ) always clobbers reg byte a -Statement [69] (word~) makecharset::$15 ← (word)(byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ) always clobbers reg byte a -Statement [70] (word~) makecharset::$16 ← (word~) makecharset::$15 << (byte) 3 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [71] (word~) makecharset::$17 ← (word~) makecharset::$16 + (byte) makecharset::i#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ) always clobbers reg byte a -Statement [72] (byte*~) makecharset::$18 ← (const byte*) CHARSET+(byte)(number) 1*(number) 8 + (word~) makecharset::$17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ) always clobbers reg byte a -Statement [73] *((byte*~) makecharset::$18) ← (byte) makecharset::b#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte) makecharset::bc#1 ← (byte) makecharset::bc#3 + (byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ) always clobbers reg byte a -Statement [77] (byte) makecharset::bc#2 ← (byte) makecharset::bc#1 - (byte) $40 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ) always clobbers reg byte a reg byte x -Statement [78] (byte~) makecharset::$11 ← (byte) makecharset::i#2 & (byte) 1 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [79] (byte~) makecharset::$12 ← (byte) makecharset::ii#2 + (byte~) makecharset::$11 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ) always clobbers reg byte a -Statement [81] (byte) makecharset::b#1 ← (byte) makecharset::b#2 + *((const byte*) makecharset::bittab + (byte~) makecharset::$13) [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ) always clobbers reg byte a -Statement [84] *((byte*) makecharset::font1#2) ← (byte) $ff [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] ) always clobbers reg byte a reg byte y -Statement [86] *((byte*) makecharset::font#2) ← (byte) 0 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] ) always clobbers reg byte a reg byte y -Statement [88] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [89] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::sid_rnd_init:15 [ ] ) always clobbers reg byte a -Statement [93] *((byte*) fillscreen::screen#5) ← (byte) fillscreen::fill#5 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [96] if((word) fillscreen::i#1!=(word) $3e8) goto fillscreen::@1 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] (byte*) fire::screen#11 ← (byte*) fire::screen#0 [ fire::screen#0 fire::screen#11 ] ( main:2::fire:19 [ fire::screen#0 fire::screen#11 ] { } main:2::fire:22 [ fire::screen#0 fire::screen#11 ] { } ) always clobbers reg byte a +Statement [28] if((byte*) fire::buffer#4!=(const byte*) BUFFER+(word)(number) $18*(number) $28) goto fire::@2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte a +Statement [29] (byte*) fire::screen#1 ← (byte*) fire::screen#0 + (word)(number) $18*(number) $28 [ fire::screen#1 ] ( main:2::fire:19 [ fire::screen#1 ] { } main:2::fire:22 [ fire::screen#1 ] { } ) always clobbers reg byte a +Statement [31] if((byte*) fire::buffer#10!=(const byte*) BUFFER+(word)(number) $19*(number) $28) goto fire::@7 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte a +Statement [37] (byte~) fire::$13 ← (byte~) fire::$12 >> (byte) 4 [ fire::buffer#10 fire::screen#10 fire::$13 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 fire::$13 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 fire::$13 ] { } ) always clobbers reg byte a +Statement [39] *((byte*) fire::buffer#10) ← (byte~) fire::$14 [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte y +Statement [40] *((byte*) fire::screen#10) ← *((byte*) fire::buffer#10) [ fire::buffer#10 fire::screen#10 ] ( main:2::fire:19 [ fire::buffer#10 fire::screen#10 ] { } main:2::fire:22 [ fire::buffer#10 fire::screen#10 ] { } ) always clobbers reg byte a reg byte y +Statement [43] (byte~) fire::$4 ← *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) + *((byte*) fire::buffer#4 + (byte)(number) $28-(number) 1) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$4 ] { } ) always clobbers reg byte a reg byte y +Statement [44] (byte~) fire::$5 ← (byte~) fire::$4 + *((byte*) fire::buffer#4 + (byte) $28) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$5 ] { } ) always clobbers reg byte a reg byte y +Statement [45] (byte~) fire::$6 ← (byte~) fire::$5 + *((byte*) fire::buffer#4 + (byte) $29) [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::$6 ] { } ) always clobbers reg byte a reg byte y +Statement [46] (byte) fire::c#0 ← (byte~) fire::$6 >> (byte) 2 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#0 ] { } ) always clobbers reg byte a +Statement [48] (byte) fire::c#1 ← (byte) fire::c#0 - (byte) 3 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 fire::c#1 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) fire::buffer#4) ← (byte) fire::c#2 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte y +Statement [51] *((byte*) fire::screen#4) ← *((byte*) fire::buffer#4) [ fire::screen#0 fire::buffer#4 fire::screen#4 ] ( main:2::fire:19 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } main:2::fire:22 [ fire::screen#0 fire::buffer#4 fire::screen#4 ] { } ) always clobbers reg byte a reg byte y +Statement [58] if((byte*) makecharset::font#2!=(const byte*) CHARSET+(byte)(number) 1*(number) 8) goto makecharset::@2 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] { } ) always clobbers reg byte a +Statement [60] if((byte*) makecharset::font1#2!=(const byte*) CHARSET+(word)(number) $100*(number) 8) goto makecharset::@4 [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] { } ) always clobbers reg byte a +Statement [62] if((byte) makecharset::c#2<(byte) $40) goto makecharset::@6 [ makecharset::c#2 ] ( main:2::makecharset:17 [ makecharset::c#2 ] { } ) always clobbers reg byte a +Statement [65] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@8 [ makecharset::c#2 makecharset::i#2 makecharset::bc#6 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#6 ] { } ) always clobbers reg byte a +Statement [69] (word~) makecharset::$15 ← (word)(byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$15 ] { } ) always clobbers reg byte a +Statement [70] (word~) makecharset::$16 ← (word~) makecharset::$15 << (byte) 3 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [71] (word~) makecharset::$17 ← (word~) makecharset::$16 + (byte) makecharset::i#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$17 ] { } ) always clobbers reg byte a +Statement [72] (byte*~) makecharset::$18 ← (const byte*) CHARSET+(byte)(number) 1*(number) 8 + (word~) makecharset::$17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 makecharset::b#2 makecharset::$18 ] { } ) always clobbers reg byte a +Statement [73] *((byte*~) makecharset::$18) ← (byte) makecharset::b#2 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::bc#3 ] { } ) always clobbers reg byte a reg byte y +Statement [75] (byte) makecharset::bc#1 ← (byte) makecharset::bc#3 + (byte) makecharset::c#2 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#1 ] { } ) always clobbers reg byte a +Statement [77] (byte) makecharset::bc#2 ← (byte) makecharset::bc#1 - (byte) $40 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 ] { } ) always clobbers reg byte a reg byte x +Statement [78] (byte~) makecharset::$11 ← (byte) makecharset::i#2 & (byte) 1 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [79] (byte~) makecharset::$12 ← (byte) makecharset::ii#2 + (byte~) makecharset::$11 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::b#2 makecharset::bc#2 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [81] (byte) makecharset::b#1 ← (byte) makecharset::b#2 + *((const byte*) makecharset::bittab + (byte~) makecharset::$13) [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] ( main:2::makecharset:17 [ makecharset::c#2 makecharset::i#2 makecharset::ii#2 makecharset::bc#2 makecharset::b#1 ] { } ) always clobbers reg byte a +Statement [84] *((byte*) makecharset::font1#2) ← (byte) $ff [ makecharset::font1#2 ] ( main:2::makecharset:17 [ makecharset::font1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((byte*) makecharset::font#2) ← (byte) 0 [ makecharset::font#2 ] ( main:2::makecharset:17 [ makecharset::font#2 ] { } ) always clobbers reg byte a reg byte y +Statement [88] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::sid_rnd_init:15 [ ] { } ) always clobbers reg byte a +Statement [89] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::sid_rnd_init:15 [ ] { } ) always clobbers reg byte a +Statement [93] *((byte*) fillscreen::screen#5) ← (byte) fillscreen::fill#5 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#5 fillscreen::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [96] if((word) fillscreen::i#1!=(word) $3e8) goto fillscreen::@1 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] ( main:2::fillscreen:7 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:9 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:11 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } main:2::fillscreen:13 [ fillscreen::fill#5 fillscreen::screen#4 fillscreen::i#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ fire::screen#0 ] : zp[2]:2 , Potential registers zp[2]:4 [ fire::buffer#4 fire::buffer#2 ] : zp[2]:4 , Potential registers zp[2]:6 [ fire::screen#4 fire::screen#11 fire::screen#2 ] : zp[2]:6 , @@ -2424,35 +2424,35 @@ Potential registers zp[1]:44 [ makecharset::$12 ] : zp[1]:44 , reg byte a , reg Potential registers zp[1]:45 [ makecharset::$13 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makecharset] 4,280.4: zp[1]:19 [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] 3,762.17: zp[1]:21 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 2,402.4: zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] 2,002: zp[1]:43 [ makecharset::$11 ] 2,002: zp[1]:44 [ makecharset::$12 ] 2,002: zp[1]:45 [ makecharset::$13 ] 280.06: zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] 202: zp[2]:35 [ makecharset::$15 ] 202: zp[2]:37 [ makecharset::$16 ] 202: zp[2]:39 [ makecharset::$17 ] 202: zp[2]:41 [ makecharset::$18 ] 71.24: zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] 36.67: zp[2]:13 [ makecharset::font#2 makecharset::font#1 ] 36.67: zp[2]:15 [ makecharset::font1#2 makecharset::font1#1 ] -Uplift Scope [fire] 707: zp[1]:12 [ fire::c#2 fire::c#0 fire::c#1 ] 277.75: zp[2]:4 [ fire::buffer#4 fire::buffer#2 ] 247.91: zp[2]:8 [ fire::buffer#10 fire::buffer#3 ] 202: zp[1]:28 [ fire::$12 ] 202: zp[1]:29 [ fire::$13 ] 202: zp[1]:30 [ fire::$14 ] 202: zp[1]:31 [ fire::$4 ] 202: zp[1]:32 [ fire::$5 ] 202: zp[1]:33 [ fire::$6 ] 135.5: zp[2]:10 [ fire::screen#10 fire::screen#3 fire::screen#1 ] 132.73: zp[2]:6 [ fire::screen#4 fire::screen#11 fire::screen#2 ] 0.27: zp[2]:2 [ fire::screen#0 ] -Uplift Scope [sid_rnd] 202: zp[1]:27 [ sid_rnd::return#2 ] 34.33: zp[1]:34 [ sid_rnd::return#0 ] -Uplift Scope [fillscreen] 26.83: zp[2]:23 [ fillscreen::screen#5 fillscreen::screen#6 fillscreen::screen#4 ] 23.83: zp[2]:25 [ fillscreen::i#2 fillscreen::i#1 ] 1.83: zp[1]:22 [ fillscreen::fill#5 ] +Uplift Scope [fire] 700,007: zp[1]:12 [ fire::c#2 fire::c#0 fire::c#1 ] 275,002.75: zp[2]:4 [ fire::buffer#4 fire::buffer#2 ] 245,457: zp[2]:8 [ fire::buffer#10 fire::buffer#3 ] 200,002: zp[1]:28 [ fire::$12 ] 200,002: zp[1]:29 [ fire::$13 ] 200,002: zp[1]:30 [ fire::$14 ] 200,002: zp[1]:31 [ fire::$4 ] 200,002: zp[1]:32 [ fire::$5 ] 200,002: zp[1]:33 [ fire::$6 ] 132,103.4: zp[2]:10 [ fire::screen#10 fire::screen#3 fire::screen#1 ] 129,367: zp[2]:6 [ fire::screen#4 fire::screen#11 fire::screen#2 ] 133.47: zp[2]:2 [ fire::screen#0 ] +Uplift Scope [makecharset] 427,505.4: zp[1]:19 [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] 375,837.17: zp[1]:21 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 240,002.4: zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] 200,002: zp[1]:43 [ makecharset::$11 ] 200,002: zp[1]:44 [ makecharset::$12 ] 200,002: zp[1]:45 [ makecharset::$13 ] 27,780.06: zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] 20,002: zp[2]:35 [ makecharset::$15 ] 20,002: zp[2]:37 [ makecharset::$16 ] 20,002: zp[2]:39 [ makecharset::$17 ] 20,002: zp[2]:41 [ makecharset::$18 ] 6,906.95: zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] 3,336.67: zp[2]:13 [ makecharset::font#2 makecharset::font#1 ] 3,336.67: zp[2]:15 [ makecharset::font1#2 makecharset::font1#1 ] +Uplift Scope [sid_rnd] 366,667.33: zp[1]:34 [ sid_rnd::return#0 ] 200,002: zp[1]:27 [ sid_rnd::return#2 ] +Uplift Scope [fillscreen] 2,320.33: zp[2]:23 [ fillscreen::screen#5 fillscreen::screen#6 fillscreen::screen#4 ] 2,168.83: zp[2]:25 [ fillscreen::i#2 fillscreen::i#1 ] 166.83: zp[1]:22 [ fillscreen::fill#5 ] Uplift Scope [sid_rnd_init] Uplift Scope [main] Uplift Scope [] -Uplifting [makecharset] best 125295 combination reg byte x [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$11 ] reg byte a [ makecharset::$12 ] zp[1]:45 [ makecharset::$13 ] zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] zp[2]:35 [ makecharset::$15 ] zp[2]:37 [ makecharset::$16 ] zp[2]:39 [ makecharset::$17 ] zp[2]:41 [ makecharset::$18 ] zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] zp[2]:13 [ makecharset::font#2 makecharset::font#1 ] zp[2]:15 [ makecharset::font1#2 makecharset::font1#1 ] -Limited combination testing to 100 combinations of 512 possible. -Uplifting [fire] best 122395 combination reg byte a [ fire::c#2 fire::c#0 fire::c#1 ] zp[2]:4 [ fire::buffer#4 fire::buffer#2 ] zp[2]:8 [ fire::buffer#10 fire::buffer#3 ] reg byte a [ fire::$12 ] reg byte a [ fire::$13 ] reg byte a [ fire::$14 ] zp[1]:31 [ fire::$4 ] zp[1]:32 [ fire::$5 ] zp[1]:33 [ fire::$6 ] zp[2]:10 [ fire::screen#10 fire::screen#3 fire::screen#1 ] zp[2]:6 [ fire::screen#4 fire::screen#11 fire::screen#2 ] zp[2]:2 [ fire::screen#0 ] +Uplifting [fire] best 148795 combination reg byte a [ fire::c#2 fire::c#0 fire::c#1 ] zp[2]:4 [ fire::buffer#4 fire::buffer#2 ] zp[2]:8 [ fire::buffer#10 fire::buffer#3 ] reg byte a [ fire::$12 ] reg byte a [ fire::$13 ] reg byte a [ fire::$14 ] zp[1]:31 [ fire::$4 ] zp[1]:32 [ fire::$5 ] zp[1]:33 [ fire::$6 ] zp[2]:10 [ fire::screen#10 fire::screen#3 fire::screen#1 ] zp[2]:6 [ fire::screen#4 fire::screen#11 fire::screen#2 ] zp[2]:2 [ fire::screen#0 ] Limited combination testing to 100 combinations of 16384 possible. -Uplifting [sid_rnd] best 121492 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [makecharset] best 122395 combination reg byte x [ makecharset::bc#6 makecharset::bc#3 makecharset::bc#7 makecharset::bc#1 makecharset::bc#2 ] reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$11 ] reg byte a [ makecharset::$12 ] zp[1]:45 [ makecharset::$13 ] zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] zp[2]:35 [ makecharset::$15 ] zp[2]:37 [ makecharset::$16 ] zp[2]:39 [ makecharset::$17 ] zp[2]:41 [ makecharset::$18 ] zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] zp[2]:13 [ makecharset::font#2 makecharset::font#1 ] zp[2]:15 [ makecharset::font1#2 makecharset::font1#1 ] +Limited combination testing to 100 combinations of 512 possible. +Uplifting [sid_rnd] best 121492 combination reg byte a [ sid_rnd::return#0 ] reg byte a [ sid_rnd::return#2 ] Uplifting [fillscreen] best 121470 combination zp[2]:23 [ fillscreen::screen#5 fillscreen::screen#6 fillscreen::screen#4 ] zp[2]:25 [ fillscreen::i#2 fillscreen::i#1 ] reg byte x [ fillscreen::fill#5 ] Uplifting [sid_rnd_init] best 121470 combination Uplifting [main] best 121470 combination Uplifting [] best 121470 combination Attempting to uplift remaining variables inzp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] Uplifting [makecharset] best 121470 combination zp[1]:20 [ makecharset::ii#2 makecharset::ii#1 ] -Attempting to uplift remaining variables inzp[1]:45 [ makecharset::$13 ] -Uplifting [makecharset] best 121470 combination zp[1]:45 [ makecharset::$13 ] -Attempting to uplift remaining variables inzp[1]:18 [ makecharset::i#2 makecharset::i#1 ] -Uplifting [makecharset] best 121470 combination zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] Attempting to uplift remaining variables inzp[1]:31 [ fire::$4 ] Uplifting [fire] best 120870 combination reg byte a [ fire::$4 ] Attempting to uplift remaining variables inzp[1]:32 [ fire::$5 ] Uplifting [fire] best 120270 combination reg byte a [ fire::$5 ] Attempting to uplift remaining variables inzp[1]:33 [ fire::$6 ] Uplifting [fire] best 119670 combination reg byte a [ fire::$6 ] +Attempting to uplift remaining variables inzp[1]:45 [ makecharset::$13 ] +Uplifting [makecharset] best 119670 combination zp[1]:45 [ makecharset::$13 ] +Attempting to uplift remaining variables inzp[1]:18 [ makecharset::i#2 makecharset::i#1 ] +Uplifting [makecharset] best 119670 combination zp[1]:18 [ makecharset::i#2 makecharset::i#1 ] Attempting to uplift remaining variables inzp[1]:17 [ makecharset::c#2 makecharset::c#1 ] Uplifting [makecharset] best 119670 combination zp[1]:17 [ makecharset::c#2 makecharset::c#1 ] Coalescing zero page register [ zp[2]:2 [ fire::screen#0 ] ] with [ zp[2]:10 [ fire::screen#10 fire::screen#3 fire::screen#1 ] ] - score: 1 @@ -3272,21 +3272,21 @@ FINAL SYMBOL TABLE (label) fillscreen::@1 (label) fillscreen::@return (byte) fillscreen::fill -(byte) fillscreen::fill#5 reg byte x 1.8333333333333333 +(byte) fillscreen::fill#5 reg byte x 166.83333333333334 (word) fillscreen::i -(word) fillscreen::i#1 i zp[2]:9 16.5 -(word) fillscreen::i#2 i zp[2]:9 7.333333333333333 +(word) fillscreen::i#1 i zp[2]:9 1501.5 +(word) fillscreen::i#2 i zp[2]:9 667.3333333333334 (byte*) fillscreen::screen -(byte*) fillscreen::screen#4 screen zp[2]:11 7.333333333333333 -(byte*) fillscreen::screen#5 screen zp[2]:11 17.5 -(byte*) fillscreen::screen#6 screen zp[2]:11 2.0 +(byte*) fillscreen::screen#4 screen zp[2]:11 667.3333333333334 +(byte*) fillscreen::screen#5 screen zp[2]:11 1552.0 +(byte*) fillscreen::screen#6 screen zp[2]:11 101.0 (void()) fire((byte*) fire::screenbase) -(byte~) fire::$12 reg byte a 202.0 -(byte~) fire::$13 reg byte a 202.0 -(byte~) fire::$14 reg byte a 202.0 -(byte~) fire::$4 reg byte a 202.0 -(byte~) fire::$5 reg byte a 202.0 -(byte~) fire::$6 reg byte a 202.0 +(byte~) fire::$12 reg byte a 200002.0 +(byte~) fire::$13 reg byte a 200002.0 +(byte~) fire::$14 reg byte a 200002.0 +(byte~) fire::$4 reg byte a 200002.0 +(byte~) fire::$5 reg byte a 200002.0 +(byte~) fire::$6 reg byte a 200002.0 (label) fire::@1 (label) fire::@2 (label) fire::@3 @@ -3297,22 +3297,22 @@ FINAL SYMBOL TABLE (label) fire::@8 (label) fire::@return (byte*) fire::buffer -(byte*) fire::buffer#10 buffer_1 zp[2]:9 45.90909090909091 -(byte*) fire::buffer#2 buffer zp[2]:4 202.0 -(byte*) fire::buffer#3 buffer_1 zp[2]:9 202.0 -(byte*) fire::buffer#4 buffer zp[2]:4 75.75 +(byte*) fire::buffer#10 buffer_1 zp[2]:9 45455.0 +(byte*) fire::buffer#2 buffer zp[2]:4 200002.0 +(byte*) fire::buffer#3 buffer_1 zp[2]:9 200002.0 +(byte*) fire::buffer#4 buffer zp[2]:4 75000.75 (byte) fire::c -(byte) fire::c#0 reg byte a 202.0 -(byte) fire::c#1 reg byte a 202.0 -(byte) fire::c#2 reg byte a 303.0 +(byte) fire::c#0 reg byte a 200002.0 +(byte) fire::c#1 reg byte a 200002.0 +(byte) fire::c#2 reg byte a 300003.0 (byte*) fire::screen -(byte*) fire::screen#0 screen zp[2]:2 0.26666666666666666 -(byte*) fire::screen#1 screen zp[2]:2 4.0 -(byte*) fire::screen#10 screen zp[2]:2 30.5 -(byte*) fire::screen#11 screen_1 zp[2]:11 4.0 -(byte*) fire::screen#2 screen_1 zp[2]:11 101.0 -(byte*) fire::screen#3 screen zp[2]:2 101.0 -(byte*) fire::screen#4 screen_1 zp[2]:11 27.727272727272727 +(byte*) fire::screen#0 screen zp[2]:2 133.46666666666667 +(byte*) fire::screen#1 screen zp[2]:2 2002.0 +(byte*) fire::screen#10 screen zp[2]:2 30100.4 +(byte*) fire::screen#11 screen_1 zp[2]:11 2002.0 +(byte*) fire::screen#2 screen_1 zp[2]:11 100001.0 +(byte*) fire::screen#3 screen zp[2]:2 100001.0 +(byte*) fire::screen#4 screen_1 zp[2]:11 27364.0 (byte*) fire::screenbase (void()) main() (label) main::@1 @@ -3334,13 +3334,13 @@ FINAL SYMBOL TABLE (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(byte~) makecharset::$11 reg byte a 2002.0 -(byte~) makecharset::$12 reg byte a 2002.0 -(byte~) makecharset::$13 zp[1]:13 2002.0 -(word~) makecharset::$15 zp[2]:11 202.0 -(word~) makecharset::$16 zp[2]:11 202.0 -(word~) makecharset::$17 zp[2]:11 202.0 -(byte*~) makecharset::$18 zp[2]:11 202.0 +(byte~) makecharset::$11 reg byte a 200002.0 +(byte~) makecharset::$12 reg byte a 200002.0 +(byte~) makecharset::$13 zp[1]:13 200002.0 +(word~) makecharset::$15 zp[2]:11 20002.0 +(word~) makecharset::$16 zp[2]:11 20002.0 +(word~) makecharset::$17 zp[2]:11 20002.0 +(byte*~) makecharset::$18 zp[2]:11 20002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -3355,37 +3355,37 @@ FINAL SYMBOL TABLE (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 258.6666666666667 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 25833.666666666664 +(byte) makecharset::b#6 reg byte y 150001.5 (byte) makecharset::bc -(byte) makecharset::bc#1 reg byte x 2002.0 -(byte) makecharset::bc#2 reg byte x 400.4 -(byte) makecharset::bc#3 reg byte x 275.5 -(byte) makecharset::bc#6 reg byte x 101.0 -(byte) makecharset::bc#7 reg byte x 1501.5 +(byte) makecharset::bc#1 reg byte x 200002.0 +(byte) makecharset::bc#2 reg byte x 40000.4 +(byte) makecharset::bc#3 reg byte x 27500.5 +(byte) makecharset::bc#6 reg byte x 10001.0 +(byte) makecharset::bc#7 reg byte x 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte) makecharset::c -(byte) makecharset::c#1 c zp[1]:6 22.0 -(byte) makecharset::c#2 c zp[1]:6 49.238095238095234 +(byte) makecharset::c#1 c zp[1]:6 2002.0 +(byte) makecharset::c#2 c zp[1]:6 4904.952380952381 (byte*) makecharset::charset (byte*) makecharset::font -(byte*) makecharset::font#1 font zp[2]:2 22.0 -(byte*) makecharset::font#2 font zp[2]:2 14.666666666666666 +(byte*) makecharset::font#1 font zp[2]:2 2002.0 +(byte*) makecharset::font#2 font zp[2]:2 1334.6666666666667 (byte*) makecharset::font1 -(byte*) makecharset::font1#1 font1 zp[2]:4 22.0 -(byte*) makecharset::font1#2 font1 zp[2]:4 14.666666666666666 +(byte*) makecharset::font1#1 font1 zp[2]:4 2002.0 +(byte*) makecharset::font1#2 font1 zp[2]:4 1334.6666666666667 (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:7 202.0 -(byte) makecharset::i#2 i zp[1]:7 78.05555555555556 +(byte) makecharset::i#1 i zp[1]:7 20002.0 +(byte) makecharset::i#2 i zp[1]:7 7778.055555555556 (byte) makecharset::ii -(byte) makecharset::ii#1 ii zp[1]:8 2002.0 -(byte) makecharset::ii#2 ii zp[1]:8 400.4 +(byte) makecharset::ii#1 ii zp[1]:8 200002.0 +(byte) makecharset::ii#2 ii zp[1]:8 40000.4 (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 34.33333333333333 -(byte) sid_rnd::return#2 reg byte a 202.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return diff --git a/src/test/ref/examples/fire/fire.sym b/src/test/ref/examples/fire/fire.sym index 2ceb2059c..f79bc61bd 100644 --- a/src/test/ref/examples/fire/fire.sym +++ b/src/test/ref/examples/fire/fire.sym @@ -19,21 +19,21 @@ (label) fillscreen::@1 (label) fillscreen::@return (byte) fillscreen::fill -(byte) fillscreen::fill#5 reg byte x 1.8333333333333333 +(byte) fillscreen::fill#5 reg byte x 166.83333333333334 (word) fillscreen::i -(word) fillscreen::i#1 i zp[2]:9 16.5 -(word) fillscreen::i#2 i zp[2]:9 7.333333333333333 +(word) fillscreen::i#1 i zp[2]:9 1501.5 +(word) fillscreen::i#2 i zp[2]:9 667.3333333333334 (byte*) fillscreen::screen -(byte*) fillscreen::screen#4 screen zp[2]:11 7.333333333333333 -(byte*) fillscreen::screen#5 screen zp[2]:11 17.5 -(byte*) fillscreen::screen#6 screen zp[2]:11 2.0 +(byte*) fillscreen::screen#4 screen zp[2]:11 667.3333333333334 +(byte*) fillscreen::screen#5 screen zp[2]:11 1552.0 +(byte*) fillscreen::screen#6 screen zp[2]:11 101.0 (void()) fire((byte*) fire::screenbase) -(byte~) fire::$12 reg byte a 202.0 -(byte~) fire::$13 reg byte a 202.0 -(byte~) fire::$14 reg byte a 202.0 -(byte~) fire::$4 reg byte a 202.0 -(byte~) fire::$5 reg byte a 202.0 -(byte~) fire::$6 reg byte a 202.0 +(byte~) fire::$12 reg byte a 200002.0 +(byte~) fire::$13 reg byte a 200002.0 +(byte~) fire::$14 reg byte a 200002.0 +(byte~) fire::$4 reg byte a 200002.0 +(byte~) fire::$5 reg byte a 200002.0 +(byte~) fire::$6 reg byte a 200002.0 (label) fire::@1 (label) fire::@2 (label) fire::@3 @@ -44,22 +44,22 @@ (label) fire::@8 (label) fire::@return (byte*) fire::buffer -(byte*) fire::buffer#10 buffer_1 zp[2]:9 45.90909090909091 -(byte*) fire::buffer#2 buffer zp[2]:4 202.0 -(byte*) fire::buffer#3 buffer_1 zp[2]:9 202.0 -(byte*) fire::buffer#4 buffer zp[2]:4 75.75 +(byte*) fire::buffer#10 buffer_1 zp[2]:9 45455.0 +(byte*) fire::buffer#2 buffer zp[2]:4 200002.0 +(byte*) fire::buffer#3 buffer_1 zp[2]:9 200002.0 +(byte*) fire::buffer#4 buffer zp[2]:4 75000.75 (byte) fire::c -(byte) fire::c#0 reg byte a 202.0 -(byte) fire::c#1 reg byte a 202.0 -(byte) fire::c#2 reg byte a 303.0 +(byte) fire::c#0 reg byte a 200002.0 +(byte) fire::c#1 reg byte a 200002.0 +(byte) fire::c#2 reg byte a 300003.0 (byte*) fire::screen -(byte*) fire::screen#0 screen zp[2]:2 0.26666666666666666 -(byte*) fire::screen#1 screen zp[2]:2 4.0 -(byte*) fire::screen#10 screen zp[2]:2 30.5 -(byte*) fire::screen#11 screen_1 zp[2]:11 4.0 -(byte*) fire::screen#2 screen_1 zp[2]:11 101.0 -(byte*) fire::screen#3 screen zp[2]:2 101.0 -(byte*) fire::screen#4 screen_1 zp[2]:11 27.727272727272727 +(byte*) fire::screen#0 screen zp[2]:2 133.46666666666667 +(byte*) fire::screen#1 screen zp[2]:2 2002.0 +(byte*) fire::screen#10 screen zp[2]:2 30100.4 +(byte*) fire::screen#11 screen_1 zp[2]:11 2002.0 +(byte*) fire::screen#2 screen_1 zp[2]:11 100001.0 +(byte*) fire::screen#3 screen zp[2]:2 100001.0 +(byte*) fire::screen#4 screen_1 zp[2]:11 27364.0 (byte*) fire::screenbase (void()) main() (label) main::@1 @@ -81,13 +81,13 @@ (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(byte~) makecharset::$11 reg byte a 2002.0 -(byte~) makecharset::$12 reg byte a 2002.0 -(byte~) makecharset::$13 zp[1]:13 2002.0 -(word~) makecharset::$15 zp[2]:11 202.0 -(word~) makecharset::$16 zp[2]:11 202.0 -(word~) makecharset::$17 zp[2]:11 202.0 -(byte*~) makecharset::$18 zp[2]:11 202.0 +(byte~) makecharset::$11 reg byte a 200002.0 +(byte~) makecharset::$12 reg byte a 200002.0 +(byte~) makecharset::$13 zp[1]:13 200002.0 +(word~) makecharset::$15 zp[2]:11 20002.0 +(word~) makecharset::$16 zp[2]:11 20002.0 +(word~) makecharset::$17 zp[2]:11 20002.0 +(byte*~) makecharset::$18 zp[2]:11 20002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -102,37 +102,37 @@ (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 258.6666666666667 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 25833.666666666664 +(byte) makecharset::b#6 reg byte y 150001.5 (byte) makecharset::bc -(byte) makecharset::bc#1 reg byte x 2002.0 -(byte) makecharset::bc#2 reg byte x 400.4 -(byte) makecharset::bc#3 reg byte x 275.5 -(byte) makecharset::bc#6 reg byte x 101.0 -(byte) makecharset::bc#7 reg byte x 1501.5 +(byte) makecharset::bc#1 reg byte x 200002.0 +(byte) makecharset::bc#2 reg byte x 40000.4 +(byte) makecharset::bc#3 reg byte x 27500.5 +(byte) makecharset::bc#6 reg byte x 10001.0 +(byte) makecharset::bc#7 reg byte x 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte) makecharset::c -(byte) makecharset::c#1 c zp[1]:6 22.0 -(byte) makecharset::c#2 c zp[1]:6 49.238095238095234 +(byte) makecharset::c#1 c zp[1]:6 2002.0 +(byte) makecharset::c#2 c zp[1]:6 4904.952380952381 (byte*) makecharset::charset (byte*) makecharset::font -(byte*) makecharset::font#1 font zp[2]:2 22.0 -(byte*) makecharset::font#2 font zp[2]:2 14.666666666666666 +(byte*) makecharset::font#1 font zp[2]:2 2002.0 +(byte*) makecharset::font#2 font zp[2]:2 1334.6666666666667 (byte*) makecharset::font1 -(byte*) makecharset::font1#1 font1 zp[2]:4 22.0 -(byte*) makecharset::font1#2 font1 zp[2]:4 14.666666666666666 +(byte*) makecharset::font1#1 font1 zp[2]:4 2002.0 +(byte*) makecharset::font1#2 font1 zp[2]:4 1334.6666666666667 (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:7 202.0 -(byte) makecharset::i#2 i zp[1]:7 78.05555555555556 +(byte) makecharset::i#1 i zp[1]:7 20002.0 +(byte) makecharset::i#2 i zp[1]:7 7778.055555555556 (byte) makecharset::ii -(byte) makecharset::ii#1 ii zp[1]:8 2002.0 -(byte) makecharset::ii#2 ii zp[1]:8 400.4 +(byte) makecharset::ii#1 ii zp[1]:8 200002.0 +(byte) makecharset::ii#2 ii zp[1]:8 40000.4 (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 34.33333333333333 -(byte) sid_rnd::return#2 reg byte a 202.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return diff --git a/src/test/ref/examples/helloworld/helloworld.log b/src/test/ref/examples/helloworld/helloworld.log index 160ef5ceb..7f6dfaf2d 100644 --- a/src/test/ref/examples/helloworld/helloworld.log +++ b/src/test/ref/examples/helloworld/helloworld.log @@ -234,16 +234,16 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#20 (byte*) print_line_cursor#14 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#17 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#12 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#15 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#5 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#15 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#8 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#20 print_line_cursor#14 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#17 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#7 print_char_cursor#3 print_line_cursor#8 print_char_cursor#12 print_line_cursor#2 print_char_cursor#4 +Alias print_line_cursor#13 = print_line_cursor#15 +Alias print_char_cursor#13 = print_char_cursor#5 +Alias print_line_cursor#10 = print_line_cursor#3 print_line_cursor#9 print_line_cursor#4 +Alias print_char_cursor#14 = print_char_cursor#6 print_char_cursor#15 print_char_cursor#7 +Alias print_char_cursor#16 = print_char_cursor#8 +Alias print_line_cursor#11 = print_line_cursor#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print_str::str#4 (byte*) print_str::str#1 Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#19 @@ -363,17 +363,17 @@ print_str::@2: scope:[print_str] from print_str::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#10 4.4 +(byte*) print_char_cursor#1 1001.0 +(byte*) print_char_cursor#10 400.4 (byte*) print_line_cursor -(byte*) print_line_cursor#1 16.5 -(byte*) print_line_cursor#6 22.0 +(byte*) print_line_cursor#1 1501.5 +(byte*) print_line_cursor#6 2002.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#2 11.0 +(byte*) print_str::str#0 2002.0 +(byte*) print_str::str#2 1001.0 Initial phi equivalence classes [ print_line_cursor#6 print_line_cursor#1 ] @@ -532,17 +532,17 @@ print_str: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [16] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#10 print_str::str#2 ] ( main:2::print_str:5 [ print_char_cursor#10 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) [ print_char_cursor#10 print_str::str#2 ] ( main:2::print_str:5 [ print_char_cursor#10 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [16] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#10 print_str::str#2 ] ( main:2::print_str:5 [ print_char_cursor#10 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) [ print_char_cursor#10 print_str::str#2 ] ( main:2::print_str:5 [ print_char_cursor#10 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print_line_cursor#6 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#2 print_str::str#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ print_char_cursor#10 print_char_cursor#1 ] : zp[2]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [] 38.5: zp[2]:2 [ print_line_cursor#6 print_line_cursor#1 ] 15.4: zp[2]:6 [ print_char_cursor#10 print_char_cursor#1 ] -Uplift Scope [print_str] 33: zp[2]:4 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [] 3,503.5: zp[2]:2 [ print_line_cursor#6 print_line_cursor#1 ] 1,401.4: zp[2]:6 [ print_char_cursor#10 print_char_cursor#1 ] +Uplift Scope [print_str] 3,003: zp[2]:4 [ print_str::str#2 print_str::str#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [main] @@ -749,11 +749,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::str[(byte) $d] = (byte*) "hello world!" (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 4.4 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 1001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 400.4 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 1501.5 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:2 2002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -763,8 +763,8 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 22.0 -(byte*) print_str::str#2 str zp[2]:4 11.0 +(byte*) print_str::str#0 str zp[2]:4 2002.0 +(byte*) print_str::str#2 str zp[2]:4 1001.0 zp[2]:2 [ print_line_cursor#6 print_line_cursor#1 ] zp[2]:4 [ print_str::str#2 print_str::str#0 ] diff --git a/src/test/ref/examples/helloworld/helloworld.sym b/src/test/ref/examples/helloworld/helloworld.sym index 93369ee18..1feb84a3b 100644 --- a/src/test/ref/examples/helloworld/helloworld.sym +++ b/src/test/ref/examples/helloworld/helloworld.sym @@ -10,11 +10,11 @@ (label) main::@return (const byte*) main::str[(byte) $d] = (byte*) "hello world!" (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 4.4 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 1001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 400.4 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 1501.5 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:2 2002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -24,8 +24,8 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 22.0 -(byte*) print_str::str#2 str zp[2]:4 11.0 +(byte*) print_str::str#0 str zp[2]:4 2002.0 +(byte*) print_str::str#2 str zp[2]:4 1001.0 zp[2]:2 [ print_line_cursor#6 print_line_cursor#1 ] zp[2]:4 [ print_str::str#2 print_str::str#0 ] diff --git a/src/test/ref/examples/irq/irq-hyperscreen.log b/src/test/ref/examples/irq/irq-hyperscreen.log index a0655bbfd..c922a64ba 100644 --- a/src/test/ref/examples/irq/irq-hyperscreen.log +++ b/src/test/ref/examples/irq/irq-hyperscreen.log @@ -346,24 +346,24 @@ irq_bottom_1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) GHOST_BYTE) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) RASTER) ← (byte) $fa [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (const byte) VIC_RSEL [ ] ( [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) RASTER) ← (byte) $fa [ ] ( [ ] ) always clobbers reg byte a -Statement [17] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [ ] ( [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $ff^(const byte) VIC_RSEL [ ] ( [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) RASTER) ← (byte) $fd [ ] ( [ ] ) always clobbers reg byte a -Statement [24] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() [ ] ( [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) GHOST_BYTE) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) RASTER) ← (byte) $fa [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (const byte) VIC_RSEL [ ] ( [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) RASTER) ← (byte) $fa [ ] ( [ ] { } ) always clobbers reg byte a +Statement [17] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $ff^(const byte) VIC_RSEL [ ] ( [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) RASTER) ← (byte) $fd [ ] ( [ ] { } ) always clobbers reg byte a +Statement [24] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/examples/kernalload/kernalload.log b/src/test/ref/examples/kernalload/kernalload.log index 6da309108..2990d744e 100644 --- a/src/test/ref/examples/kernalload/kernalload.log +++ b/src/test/ref/examples/kernalload/kernalload.log @@ -409,19 +409,19 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to word in (unumber~) main::toSpritePtr1_$1 ← (word~) main::toSpritePtr1_$0 / (byte) $40 Inversing boolean not [22] (bool~) main::$2 ← (byte) main::status#0 == (byte) $ff from [21] (bool~) main::$1 ← (byte) main::status#0 != (byte) $ff Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) strlen::len#2 = (word) strlen::len#4 (word) strlen::len#3 (word) strlen::return#0 (word) strlen::return#3 (word) strlen::return#1 -Alias (byte*) strlen::str#2 = (byte*) strlen::str#3 -Alias (byte) loadFileToMemory::return#0 = (byte) loadFileToMemory::return#3 -Alias (byte) main::status#0 = (byte~) main::$0 (byte) main::status#1 -Alias (byte*) main::toSpritePtr1_sprite#0 = (byte*) main::toSpritePtr1_sprite#1 -Alias (byte) main::toSpritePtr1_return#0 = (byte~) main::toSpritePtr1_$2 (byte) main::toSpritePtr1_return#2 (byte) main::toSpritePtr1_return#1 (byte) main::toSpritePtr1_return#3 (byte~) main::$3 -Alias (byte) loadFileToMemory::device#1 = (byte) loadFileToMemory::device#2 -Alias (byte*) loadFileToMemory::address#1 = (byte*) loadFileToMemory::address#2 (byte*) loadFileToMemory::address#3 -Alias (byte) load::return#0 = (byte) load::return#3 -Alias (byte) loadFileToMemory::return#1 = (byte~) loadFileToMemory::$2 (byte) loadFileToMemory::return#4 (byte) loadFileToMemory::return#2 -Alias (word) strlen::return#2 = (word) strlen::return#4 -Alias (byte*) setnam::filename#1 = (byte*) setnam::filename#2 -Alias (byte) load::return#1 = (byte) load::return#4 (byte) load::return#2 +Alias strlen::len#2 = strlen::len#4 strlen::len#3 strlen::return#0 strlen::return#3 strlen::return#1 +Alias strlen::str#2 = strlen::str#3 +Alias loadFileToMemory::return#0 = loadFileToMemory::return#3 +Alias main::status#0 = main::$0 main::status#1 +Alias main::toSpritePtr1_sprite#0 = main::toSpritePtr1_sprite#1 +Alias main::toSpritePtr1_return#0 = main::toSpritePtr1_$2 main::toSpritePtr1_return#2 main::toSpritePtr1_return#1 main::toSpritePtr1_return#3 main::$3 +Alias loadFileToMemory::device#1 = loadFileToMemory::device#2 +Alias loadFileToMemory::address#1 = loadFileToMemory::address#2 loadFileToMemory::address#3 +Alias load::return#0 = load::return#3 +Alias loadFileToMemory::return#1 = loadFileToMemory::$2 loadFileToMemory::return#4 loadFileToMemory::return#2 +Alias strlen::return#2 = strlen::return#4 +Alias setnam::filename#1 = setnam::filename#2 +Alias load::return#1 = load::return#4 load::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) strlen::str#4 (byte*) strlen::str#1 Identical Phi Values (byte*) loadFileToMemory::filename#1 (byte*) loadFileToMemory::filename#0 @@ -653,40 +653,40 @@ strlen::@2: scope:[strlen] from strlen::@1 VARIABLE REGISTER WEIGHTS (void()) error((byte) error::err) (byte) error::err -(byte) error::err#0 4.0 +(byte) error::err#0 112.0 (byte()) load((byte*) load::address , (bool) load::verify) (byte*) load::address (byte) load::return -(byte) load::return#0 4.0 -(byte) load::return#1 1.3333333333333333 +(byte) load::return#0 202.0 +(byte) load::return#1 367.33333333333337 (bool) load::verify (byte()) loadFileToMemory((byte) loadFileToMemory::device , (byte*) loadFileToMemory::filename , (byte*) loadFileToMemory::address) (byte*) loadFileToMemory::address (byte) loadFileToMemory::device (byte*) loadFileToMemory::filename (byte) loadFileToMemory::return -(byte) loadFileToMemory::return#0 4.0 -(byte) loadFileToMemory::return#1 1.3333333333333333 +(byte) loadFileToMemory::return#0 22.0 +(byte) loadFileToMemory::return#1 37.33333333333333 (void()) main() (byte) main::status -(byte) main::status#0 2.0 +(byte) main::status#0 11.0 (byte) main::toSpritePtr1_return (byte*) main::toSpritePtr1_sprite (void()) setlfs((byte) setlfs::device) (byte) setlfs::device (void()) setnam((byte*) setnam::filename) -(word~) setnam::$0 2.0 -(byte~) setnam::$1 4.0 +(word~) setnam::$0 1001.0 +(byte~) setnam::$1 2002.0 (byte*) setnam::filename (word()) strlen((byte*) strlen::str) (word) strlen::len -(word) strlen::len#1 11.0 -(word) strlen::len#2 6.0 +(word) strlen::len#1 100001.0 +(word) strlen::len#2 50250.75 (word) strlen::return -(word) strlen::return#2 4.0 +(word) strlen::return#2 2002.0 (byte*) strlen::str -(byte*) strlen::str#0 22.0 -(byte*) strlen::str#2 11.0 +(byte*) strlen::str#0 200002.0 +(byte*) strlen::str#2 100001.0 Initial phi equivalence classes [ strlen::str#2 strlen::str#0 ] @@ -1065,43 +1065,43 @@ SPRITE: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] *((const byte*) BORDERCOL) ← (byte) 2 [ main::status#0 ] ( main:2 [ main::status#0 ] ) always clobbers reg byte a +Statement [9] *((const byte*) BORDERCOL) ← (byte) 2 [ main::status#0 ] ( main:2 [ main::status#0 ] { { error::err#0 = main::status#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::status#0 ] -Statement [12] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SPRITES_PTR) ← (const byte) main::toSpritePtr1_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) SPRITES_COLS) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) SPRITES_XPOS) ← (byte) $15 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) SPRITES_YPOS) ← (byte) $33 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SPRITES_PTR) ← (const byte) main::toSpritePtr1_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SPRITES_COLS) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SPRITES_XPOS) ← (byte) $15 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) SPRITES_YPOS) ← (byte) $33 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldxerrCode jsr$a437 } always clobbers reg byte a reg byte x reg byte y -Statement [31] *((const byte*) load::loadOrVerify) ← (byte) 0 [ ] ( main:2::loadFileToMemory:5::load:27 [ ] ) always clobbers reg byte a -Statement [32] *((const byte**) load::loadAddress) ← (const byte*) LOAD_SPRITE [ ] ( main:2::loadFileToMemory:5::load:27 [ ] ) always clobbers reg byte a +Statement [31] *((const byte*) load::loadOrVerify) ← (byte) 0 [ ] ( main:2::loadFileToMemory:5::load:27 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { load::return#0 = load::return#1 } } ) always clobbers reg byte a +Statement [32] *((const byte**) load::loadAddress) ← (const byte*) LOAD_SPRITE [ ] ( main:2::loadFileToMemory:5::load:27 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { load::return#0 = load::return#1 } } ) always clobbers reg byte a Statement asm { ldxloadAddress ldyloadAddress+1 ldaloadOrVerify jsr$ffd5 bcserror lda#$ff error: stastatus } always clobbers reg byte a reg byte x reg byte y -Statement [36] *((const byte*) setlfs::deviceNum) ← (const byte) loadFileToMemory::device#0 [ ] ( main:2::loadFileToMemory:5::setlfs:25 [ ] ) always clobbers reg byte a +Statement [36] *((const byte*) setlfs::deviceNum) ← (const byte) loadFileToMemory::device#0 [ ] ( main:2::loadFileToMemory:5::setlfs:25 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a Statement asm { ldxdeviceNum lda#1 ldy#0 jsr$ffba } always clobbers reg byte a reg byte x reg byte y -Statement [41] (word) strlen::return#2 ← (word) strlen::len#2 [ strlen::return#2 ] ( main:2::loadFileToMemory:5::setnam:23 [ strlen::return#2 ] ) always clobbers reg byte a -Statement [42] (word~) setnam::$0 ← (word) strlen::return#2 [ setnam::$0 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$0 ] ) always clobbers reg byte a -Statement [43] (byte~) setnam::$1 ← (byte)(word~) setnam::$0 [ setnam::$1 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$1 ] ) always clobbers reg byte a -Statement [45] *((const byte**) setnam::filename_ptr) ← (const byte*) main::filename [ ] ( main:2::loadFileToMemory:5::setnam:23 [ ] ) always clobbers reg byte a +Statement [41] (word) strlen::return#2 ← (word) strlen::len#2 [ strlen::return#2 ] ( main:2::loadFileToMemory:5::setnam:23 [ strlen::return#2 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [42] (word~) setnam::$0 ← (word) strlen::return#2 [ setnam::$0 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$0 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a +Statement [43] (byte~) setnam::$1 ← (byte)(word~) setnam::$0 [ setnam::$1 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$1 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a +Statement [45] *((const byte**) setnam::filename_ptr) ← (const byte*) main::filename [ ] ( main:2::loadFileToMemory:5::setnam:23 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a Statement asm { ldafilename_len ldxfilename_ptr ldyfilename_ptr+1 jsr$ffbd } always clobbers reg byte a reg byte x reg byte y -Statement [50] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:2::loadFileToMemory:5::setnam:23::strlen:40 [ strlen::len#2 strlen::str#2 ] ) always clobbers reg byte a reg byte y -Statement [9] *((const byte*) BORDERCOL) ← (byte) 2 [ main::status#0 ] ( main:2 [ main::status#0 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SPRITES_PTR) ← (const byte) main::toSpritePtr1_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) SPRITES_COLS) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) SPRITES_XPOS) ← (byte) $15 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) SPRITES_YPOS) ← (byte) $33 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [50] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:2::loadFileToMemory:5::setnam:23::strlen:40 [ strlen::len#2 strlen::str#2 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y +Statement [9] *((const byte*) BORDERCOL) ← (byte) 2 [ main::status#0 ] ( main:2 [ main::status#0 ] { { error::err#0 = main::status#0 } } ) always clobbers reg byte a +Statement [12] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SPRITES_PTR) ← (const byte) main::toSpritePtr1_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SPRITES_COLS) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SPRITES_XPOS) ← (byte) $15 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) SPRITES_YPOS) ← (byte) $33 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldxerrCode jsr$a437 } always clobbers reg byte a reg byte x reg byte y -Statement [31] *((const byte*) load::loadOrVerify) ← (byte) 0 [ ] ( main:2::loadFileToMemory:5::load:27 [ ] ) always clobbers reg byte a -Statement [32] *((const byte**) load::loadAddress) ← (const byte*) LOAD_SPRITE [ ] ( main:2::loadFileToMemory:5::load:27 [ ] ) always clobbers reg byte a +Statement [31] *((const byte*) load::loadOrVerify) ← (byte) 0 [ ] ( main:2::loadFileToMemory:5::load:27 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { load::return#0 = load::return#1 } } ) always clobbers reg byte a +Statement [32] *((const byte**) load::loadAddress) ← (const byte*) LOAD_SPRITE [ ] ( main:2::loadFileToMemory:5::load:27 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { load::return#0 = load::return#1 } } ) always clobbers reg byte a Statement asm { ldxloadAddress ldyloadAddress+1 ldaloadOrVerify jsr$ffd5 bcserror lda#$ff error: stastatus } always clobbers reg byte a reg byte x reg byte y -Statement [36] *((const byte*) setlfs::deviceNum) ← (const byte) loadFileToMemory::device#0 [ ] ( main:2::loadFileToMemory:5::setlfs:25 [ ] ) always clobbers reg byte a +Statement [36] *((const byte*) setlfs::deviceNum) ← (const byte) loadFileToMemory::device#0 [ ] ( main:2::loadFileToMemory:5::setlfs:25 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a Statement asm { ldxdeviceNum lda#1 ldy#0 jsr$ffba } always clobbers reg byte a reg byte x reg byte y -Statement [41] (word) strlen::return#2 ← (word) strlen::len#2 [ strlen::return#2 ] ( main:2::loadFileToMemory:5::setnam:23 [ strlen::return#2 ] ) always clobbers reg byte a -Statement [42] (word~) setnam::$0 ← (word) strlen::return#2 [ setnam::$0 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$0 ] ) always clobbers reg byte a -Statement [43] (byte~) setnam::$1 ← (byte)(word~) setnam::$0 [ setnam::$1 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$1 ] ) always clobbers reg byte a -Statement [45] *((const byte**) setnam::filename_ptr) ← (const byte*) main::filename [ ] ( main:2::loadFileToMemory:5::setnam:23 [ ] ) always clobbers reg byte a +Statement [41] (word) strlen::return#2 ← (word) strlen::len#2 [ strlen::return#2 ] ( main:2::loadFileToMemory:5::setnam:23 [ strlen::return#2 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [42] (word~) setnam::$0 ← (word) strlen::return#2 [ setnam::$0 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$0 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a +Statement [43] (byte~) setnam::$1 ← (byte)(word~) setnam::$0 [ setnam::$1 ] ( main:2::loadFileToMemory:5::setnam:23 [ setnam::$1 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a +Statement [45] *((const byte**) setnam::filename_ptr) ← (const byte*) main::filename [ ] ( main:2::loadFileToMemory:5::setnam:23 [ ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } } ) always clobbers reg byte a Statement asm { ldafilename_len ldxfilename_ptr ldyfilename_ptr+1 jsr$ffbd } always clobbers reg byte a reg byte x reg byte y -Statement [50] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:2::loadFileToMemory:5::setnam:23::strlen:40 [ strlen::len#2 strlen::str#2 ] ) always clobbers reg byte a reg byte y +Statement [50] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:2::loadFileToMemory:5::setnam:23::strlen:40 [ strlen::len#2 strlen::str#2 ] { { loadFileToMemory::return#0 = loadFileToMemory::return#1 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ strlen::str#2 strlen::str#0 ] : zp[2]:2 , Potential registers zp[2]:4 [ strlen::len#2 strlen::len#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ loadFileToMemory::return#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , @@ -1115,20 +1115,20 @@ Potential registers zp[2]:14 [ setnam::$0 ] : zp[2]:14 , Potential registers zp[1]:16 [ setnam::$1 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [strlen] 33: zp[2]:2 [ strlen::str#2 strlen::str#0 ] 17: zp[2]:4 [ strlen::len#2 strlen::len#1 ] 4: zp[2]:12 [ strlen::return#2 ] -Uplift Scope [setnam] 4: zp[1]:16 [ setnam::$1 ] 2: zp[2]:14 [ setnam::$0 ] -Uplift Scope [loadFileToMemory] 4: zp[1]:6 [ loadFileToMemory::return#0 ] 1.33: zp[1]:10 [ loadFileToMemory::return#1 ] -Uplift Scope [load] 4: zp[1]:9 [ load::return#0 ] 1.33: zp[1]:11 [ load::return#1 ] -Uplift Scope [error] 4: zp[1]:8 [ error::err#0 ] -Uplift Scope [main] 2: zp[1]:7 [ main::status#0 ] +Uplift Scope [strlen] 300,003: zp[2]:2 [ strlen::str#2 strlen::str#0 ] 150,251.75: zp[2]:4 [ strlen::len#2 strlen::len#1 ] 2,002: zp[2]:12 [ strlen::return#2 ] +Uplift Scope [setnam] 2,002: zp[1]:16 [ setnam::$1 ] 1,001: zp[2]:14 [ setnam::$0 ] +Uplift Scope [load] 367.33: zp[1]:11 [ load::return#1 ] 202: zp[1]:9 [ load::return#0 ] +Uplift Scope [error] 112: zp[1]:8 [ error::err#0 ] +Uplift Scope [loadFileToMemory] 37.33: zp[1]:10 [ loadFileToMemory::return#1 ] 22: zp[1]:6 [ loadFileToMemory::return#0 ] +Uplift Scope [main] 11: zp[1]:7 [ main::status#0 ] Uplift Scope [setlfs] Uplift Scope [] Uplifting [strlen] best 1050 combination zp[2]:2 [ strlen::str#2 strlen::str#0 ] zp[2]:4 [ strlen::len#2 strlen::len#1 ] zp[2]:12 [ strlen::return#2 ] Uplifting [setnam] best 1044 combination reg byte a [ setnam::$1 ] zp[2]:14 [ setnam::$0 ] -Uplifting [loadFileToMemory] best 1032 combination reg byte a [ loadFileToMemory::return#0 ] reg byte a [ loadFileToMemory::return#1 ] -Uplifting [load] best 1020 combination reg byte a [ load::return#0 ] reg byte a [ load::return#1 ] -Uplifting [error] best 1014 combination reg byte a [ error::err#0 ] +Uplifting [load] best 1032 combination reg byte a [ load::return#1 ] reg byte a [ load::return#0 ] +Uplifting [error] best 1026 combination reg byte a [ error::err#0 ] +Uplifting [loadFileToMemory] best 1014 combination reg byte a [ loadFileToMemory::return#1 ] reg byte a [ loadFileToMemory::return#0 ] Uplifting [main] best 1009 combination reg byte x [ main::status#0 ] Uplifting [setlfs] best 1009 combination Uplifting [] best 1009 combination @@ -1528,7 +1528,7 @@ FINAL SYMBOL TABLE (void()) error((byte) error::err) (label) error::@return (byte) error::err -(byte) error::err#0 reg byte a 4.0 +(byte) error::err#0 reg byte a 112.0 (const byte*) error::errCode = (byte*) 255 (byte()) load((byte*) load::address , (bool) load::verify) (label) load::@return @@ -1536,8 +1536,8 @@ FINAL SYMBOL TABLE (const byte**) load::loadAddress = (byte**) 254 (const byte*) load::loadOrVerify = (byte*) 253 (byte) load::return -(byte) load::return#0 reg byte a 4.0 -(byte) load::return#1 reg byte a 1.3333333333333333 +(byte) load::return#0 reg byte a 202.0 +(byte) load::return#1 reg byte a 367.33333333333337 (const byte*) load::status = (byte*) 253 (bool) load::verify (byte()) loadFileToMemory((byte) loadFileToMemory::device , (byte*) loadFileToMemory::filename , (byte*) loadFileToMemory::address) @@ -1550,8 +1550,8 @@ FINAL SYMBOL TABLE (const byte) loadFileToMemory::device#0 device = (byte) 8 (byte*) loadFileToMemory::filename (byte) loadFileToMemory::return -(byte) loadFileToMemory::return#0 reg byte a 4.0 -(byte) loadFileToMemory::return#1 reg byte a 1.3333333333333333 +(byte) loadFileToMemory::return#0 reg byte a 22.0 +(byte) loadFileToMemory::return#1 reg byte a 37.33333333333333 (void()) main() (label) main::@1 (label) main::@2 @@ -1560,7 +1560,7 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::filename[(byte) 7] = (byte*) "SPRITE" (byte) main::status -(byte) main::status#0 reg byte x 2.0 +(byte) main::status#0 reg byte x 11.0 (label) main::toSpritePtr1 (byte) main::toSpritePtr1_return (const byte) main::toSpritePtr1_return#0 toSpritePtr1_return = (byte)(word)(const byte*) LOAD_SPRITE/(byte) $40 @@ -1570,8 +1570,8 @@ FINAL SYMBOL TABLE (byte) setlfs::device (const byte*) setlfs::deviceNum = (byte*) 255 (void()) setnam((byte*) setnam::filename) -(word~) setnam::$0 zp[2]:4 2.0 -(byte~) setnam::$1 reg byte a 4.0 +(word~) setnam::$0 zp[2]:4 1001.0 +(byte~) setnam::$1 reg byte a 2002.0 (label) setnam::@1 (label) setnam::@return (byte*) setnam::filename @@ -1582,13 +1582,13 @@ FINAL SYMBOL TABLE (label) strlen::@2 (label) strlen::@return (word) strlen::len -(word) strlen::len#1 len zp[2]:4 11.0 -(word) strlen::len#2 len zp[2]:4 6.0 +(word) strlen::len#1 len zp[2]:4 100001.0 +(word) strlen::len#2 len zp[2]:4 50250.75 (word) strlen::return -(word) strlen::return#2 return zp[2]:4 4.0 +(word) strlen::return#2 return zp[2]:4 2002.0 (byte*) strlen::str -(byte*) strlen::str#0 str zp[2]:2 22.0 -(byte*) strlen::str#2 str zp[2]:2 11.0 +(byte*) strlen::str#0 str zp[2]:2 200002.0 +(byte*) strlen::str#2 str zp[2]:2 100001.0 zp[2]:2 [ strlen::str#2 strlen::str#0 ] zp[2]:4 [ strlen::len#2 strlen::len#1 strlen::return#2 setnam::$0 ] diff --git a/src/test/ref/examples/kernalload/kernalload.sym b/src/test/ref/examples/kernalload/kernalload.sym index 4a5203dc0..56da76a12 100644 --- a/src/test/ref/examples/kernalload/kernalload.sym +++ b/src/test/ref/examples/kernalload/kernalload.sym @@ -19,7 +19,7 @@ (void()) error((byte) error::err) (label) error::@return (byte) error::err -(byte) error::err#0 reg byte a 4.0 +(byte) error::err#0 reg byte a 112.0 (const byte*) error::errCode = (byte*) 255 (byte()) load((byte*) load::address , (bool) load::verify) (label) load::@return @@ -27,8 +27,8 @@ (const byte**) load::loadAddress = (byte**) 254 (const byte*) load::loadOrVerify = (byte*) 253 (byte) load::return -(byte) load::return#0 reg byte a 4.0 -(byte) load::return#1 reg byte a 1.3333333333333333 +(byte) load::return#0 reg byte a 202.0 +(byte) load::return#1 reg byte a 367.33333333333337 (const byte*) load::status = (byte*) 253 (bool) load::verify (byte()) loadFileToMemory((byte) loadFileToMemory::device , (byte*) loadFileToMemory::filename , (byte*) loadFileToMemory::address) @@ -41,8 +41,8 @@ (const byte) loadFileToMemory::device#0 device = (byte) 8 (byte*) loadFileToMemory::filename (byte) loadFileToMemory::return -(byte) loadFileToMemory::return#0 reg byte a 4.0 -(byte) loadFileToMemory::return#1 reg byte a 1.3333333333333333 +(byte) loadFileToMemory::return#0 reg byte a 22.0 +(byte) loadFileToMemory::return#1 reg byte a 37.33333333333333 (void()) main() (label) main::@1 (label) main::@2 @@ -51,7 +51,7 @@ (label) main::@return (const byte*) main::filename[(byte) 7] = (byte*) "SPRITE" (byte) main::status -(byte) main::status#0 reg byte x 2.0 +(byte) main::status#0 reg byte x 11.0 (label) main::toSpritePtr1 (byte) main::toSpritePtr1_return (const byte) main::toSpritePtr1_return#0 toSpritePtr1_return = (byte)(word)(const byte*) LOAD_SPRITE/(byte) $40 @@ -61,8 +61,8 @@ (byte) setlfs::device (const byte*) setlfs::deviceNum = (byte*) 255 (void()) setnam((byte*) setnam::filename) -(word~) setnam::$0 zp[2]:4 2.0 -(byte~) setnam::$1 reg byte a 4.0 +(word~) setnam::$0 zp[2]:4 1001.0 +(byte~) setnam::$1 reg byte a 2002.0 (label) setnam::@1 (label) setnam::@return (byte*) setnam::filename @@ -73,13 +73,13 @@ (label) strlen::@2 (label) strlen::@return (word) strlen::len -(word) strlen::len#1 len zp[2]:4 11.0 -(word) strlen::len#2 len zp[2]:4 6.0 +(word) strlen::len#1 len zp[2]:4 100001.0 +(word) strlen::len#2 len zp[2]:4 50250.75 (word) strlen::return -(word) strlen::return#2 return zp[2]:4 4.0 +(word) strlen::return#2 return zp[2]:4 2002.0 (byte*) strlen::str -(byte*) strlen::str#0 str zp[2]:2 22.0 -(byte*) strlen::str#2 str zp[2]:2 11.0 +(byte*) strlen::str#0 str zp[2]:2 200002.0 +(byte*) strlen::str#2 str zp[2]:2 100001.0 zp[2]:2 [ strlen::str#2 strlen::str#0 ] zp[2]:4 [ strlen::len#2 strlen::len#1 strlen::return#2 setnam::$0 ] diff --git a/src/test/ref/examples/linking/linking.log b/src/test/ref/examples/linking/linking.log index 9bf07a0ea..1b8679c85 100644 --- a/src/test/ref/examples/linking/linking.log +++ b/src/test/ref/examples/linking/linking.log @@ -126,9 +126,9 @@ Simplifying constant integer cast $3e8 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $3e8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) fillscreen::c#1 = (byte) fillscreen::c#2 -Alias (byte) fillscreen::i#2 = (byte) fillscreen::i#3 -Alias (byte*) fillscreen::screen#2 = (byte*) fillscreen::screen#3 +Alias fillscreen::c#1 = fillscreen::c#2 +Alias fillscreen::i#2 = fillscreen::i#3 +Alias fillscreen::screen#2 = fillscreen::screen#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) fillscreen::c#3 (byte) fillscreen::c#0 Identical Phi Values (byte) fillscreen::c#1 (byte) fillscreen::c#3 @@ -243,19 +243,19 @@ fillscreen::@2: scope:[fillscreen] from fillscreen::@1 VARIABLE REGISTER WEIGHTS (void()) fillscreen((byte) fillscreen::c) -(byte~) fillscreen::$2 202.0 +(byte~) fillscreen::$2 200002.0 (byte) fillscreen::c -(byte) fillscreen::c#0 14.0 +(byte) fillscreen::c#0 12512.75 (byte) fillscreen::i -(byte) fillscreen::i#1 101.0 -(byte) fillscreen::i#2 75.75 +(byte) fillscreen::i#1 100001.0 +(byte) fillscreen::i#2 75000.75 (byte*) fillscreen::screen -(byte*) fillscreen::screen#1 202.0 -(byte*) fillscreen::screen#2 80.8 +(byte*) fillscreen::screen#1 200002.0 +(byte*) fillscreen::screen#2 80000.8 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -423,16 +423,16 @@ fillscreen: { base: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [14] if((byte*) fillscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ) always clobbers reg byte a +Statement [14] if((byte*) fillscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ fillscreen::c#0 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ fillscreen::i#2 fillscreen::i#1 ] -Statement [16] (byte~) fillscreen::$2 ← (byte) fillscreen::c#0 + *((const byte*) base + (byte) fillscreen::i#2) [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ) always clobbers reg byte a -Statement [17] *((byte*) fillscreen::screen#2) ← (byte~) fillscreen::$2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ) always clobbers reg byte y +Statement [16] (byte~) fillscreen::$2 ← (byte) fillscreen::c#0 + *((const byte*) base + (byte) fillscreen::i#2) [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] { } ) always clobbers reg byte a +Statement [17] *((byte*) fillscreen::screen#2) ← (byte~) fillscreen::$2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ fillscreen::c#0 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ fillscreen::i#2 fillscreen::i#1 ] -Statement [14] if((byte*) fillscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ) always clobbers reg byte a -Statement [16] (byte~) fillscreen::$2 ← (byte) fillscreen::c#0 + *((const byte*) base + (byte) fillscreen::i#2) [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ) always clobbers reg byte a -Statement [17] *((byte*) fillscreen::screen#2) ← (byte~) fillscreen::$2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ) always clobbers reg byte y +Statement [14] if((byte*) fillscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] { } ) always clobbers reg byte a +Statement [16] (byte~) fillscreen::$2 ← (byte) fillscreen::c#0 + *((const byte*) base + (byte) fillscreen::i#2) [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 fillscreen::$2 ] { } ) always clobbers reg byte a +Statement [17] *((byte*) fillscreen::screen#2) ← (byte~) fillscreen::$2 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] ( main:2::fillscreen:10 [ fillscreen::c#0 fillscreen::screen#2 fillscreen::i#2 ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ fillscreen::screen#2 fillscreen::screen#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ fillscreen::i#2 fillscreen::i#1 ] : zp[1]:5 , reg byte x , @@ -440,8 +440,8 @@ Potential registers zp[1]:6 [ fillscreen::c#0 ] : zp[1]:6 , reg byte x , Potential registers zp[1]:7 [ fillscreen::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [fillscreen] 282.8: zp[2]:3 [ fillscreen::screen#2 fillscreen::screen#1 ] 202: zp[1]:7 [ fillscreen::$2 ] 176.75: zp[1]:5 [ fillscreen::i#2 fillscreen::i#1 ] 14: zp[1]:6 [ fillscreen::c#0 ] -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [fillscreen] 280,002.8: zp[2]:3 [ fillscreen::screen#2 fillscreen::screen#1 ] 200,002: zp[1]:7 [ fillscreen::$2 ] 175,001.75: zp[1]:5 [ fillscreen::i#2 fillscreen::i#1 ] 12,512.75: zp[1]:6 [ fillscreen::c#0 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [fillscreen] best 7602 combination zp[2]:3 [ fillscreen::screen#2 fillscreen::screen#1 ] reg byte a [ fillscreen::$2 ] reg byte x [ fillscreen::i#2 fillscreen::i#1 ] zp[1]:6 [ fillscreen::c#0 ] @@ -625,25 +625,25 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte*) base[(number) $100] = { fill( $100, 0) } (void()) fillscreen((byte) fillscreen::c) -(byte~) fillscreen::$2 reg byte a 202.0 +(byte~) fillscreen::$2 reg byte a 200002.0 (label) fillscreen::@1 (label) fillscreen::@2 (label) fillscreen::@return (byte) fillscreen::c -(byte) fillscreen::c#0 c zp[1]:4 14.0 +(byte) fillscreen::c#0 c zp[1]:4 12512.75 (byte) fillscreen::i -(byte) fillscreen::i#1 reg byte x 101.0 -(byte) fillscreen::i#2 reg byte x 75.75 +(byte) fillscreen::i#1 reg byte x 100001.0 +(byte) fillscreen::i#2 reg byte x 75000.75 (byte*) fillscreen::screen -(byte*) fillscreen::screen#1 screen zp[2]:2 202.0 -(byte*) fillscreen::screen#2 screen zp[2]:2 80.8 +(byte*) fillscreen::screen#1 screen zp[2]:2 200002.0 +(byte*) fillscreen::screen#2 screen zp[2]:2 80000.8 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ fillscreen::screen#2 fillscreen::screen#1 ] diff --git a/src/test/ref/examples/linking/linking.sym b/src/test/ref/examples/linking/linking.sym index 1fc0e85c6..a12998dee 100644 --- a/src/test/ref/examples/linking/linking.sym +++ b/src/test/ref/examples/linking/linking.sym @@ -5,25 +5,25 @@ (const byte*) SCREEN = (byte*) 1024 (const byte*) base[(number) $100] = { fill( $100, 0) } (void()) fillscreen((byte) fillscreen::c) -(byte~) fillscreen::$2 reg byte a 202.0 +(byte~) fillscreen::$2 reg byte a 200002.0 (label) fillscreen::@1 (label) fillscreen::@2 (label) fillscreen::@return (byte) fillscreen::c -(byte) fillscreen::c#0 c zp[1]:4 14.0 +(byte) fillscreen::c#0 c zp[1]:4 12512.75 (byte) fillscreen::i -(byte) fillscreen::i#1 reg byte x 101.0 -(byte) fillscreen::i#2 reg byte x 75.75 +(byte) fillscreen::i#1 reg byte x 100001.0 +(byte) fillscreen::i#2 reg byte x 75000.75 (byte*) fillscreen::screen -(byte*) fillscreen::screen#1 screen zp[2]:2 202.0 -(byte*) fillscreen::screen#2 screen zp[2]:2 80.8 +(byte*) fillscreen::screen#1 screen zp[2]:2 200002.0 +(byte*) fillscreen::screen#2 screen zp[2]:2 80000.8 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ fillscreen::screen#2 fillscreen::screen#1 ] diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index 84ac35072..71096fb35 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -1208,112 +1208,112 @@ Inferred type updated to byte in (unumber~) plexShowSprite::$6 ← (byte~) plexS Inversing boolean not [25] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 >= *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2)) from [24] (bool~) plexSort::$2 ← (byte) plexSort::nxt_y#0 < *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2)) Inversing boolean not [96] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 != (byte) 0 from [95] (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb#3 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 -Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*~) plexInit::plexSetScreen1_$0 (byte*) PLEX_SCREEN_PTR#22 -Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 -Alias (byte) plexSort::m#2 = (byte) plexSort::m#4 (byte) plexSort::s#0 -Alias (byte) plexSort::nxt_y#0 = (byte) plexSort::nxt_y#2 -Alias (byte) plexSort::nxt_idx#0 = (byte) plexSort::nxt_idx#3 -Alias (byte) plexSort::s#1 = (byte) plexSort::s#4 -Alias (byte) plexSort::nxt_idx#1 = (byte) plexSort::nxt_idx#2 -Alias (byte) plexSort::m#5 = (byte) plexSort::m#6 -Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#39 -Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#39 -Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#38 -Alias (byte) plex_show_idx#11 = (byte) plex_show_idx#22 (byte) plex_show_idx#32 (byte) plex_show_idx#2 -Alias (byte) plex_sprite_idx#11 = (byte) plex_sprite_idx#22 (byte) plex_sprite_idx#32 (byte) plex_sprite_idx#2 -Alias (byte) plex_sprite_msb#12 = (byte) plex_sprite_msb#23 (byte) plex_sprite_msb#30 (byte) plex_sprite_msb#2 -Alias (byte) plex_free_next#0 = (byte) plex_free_next#11 (byte) plex_free_next#1 -Alias (byte) plexShowSprite::plex_sprite_idx2#0 = (byte~) plexShowSprite::$0 (byte) plexShowSprite::plex_sprite_idx2#2 (byte) plexShowSprite::plex_sprite_idx2#1 -Alias (byte) plexShowSprite::plexFreeAdd1_ypos#0 = (byte) plexShowSprite::ypos#0 (byte) plexShowSprite::plexFreeAdd1_ypos#1 -Alias (byte) plex_free_next#12 = (byte) plex_free_next#21 -Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#24 (byte) plex_show_idx#13 (byte) plex_show_idx#25 (byte) plex_show_idx#26 -Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#9 -Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#24 (byte) plex_sprite_idx#13 (byte) plex_sprite_idx#25 (byte) plex_sprite_idx#26 -Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#31 (byte) plex_sprite_msb#39 (byte) plex_sprite_msb#24 (byte) plex_sprite_msb#14 -Alias (byte) plex_free_next#2 = (byte~) plexShowSprite::plexFreeAdd1_$2 (byte) plex_free_next#39 (byte) plex_free_next#30 (byte) plex_free_next#31 -Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte~) plexShowSprite::$6 -Alias (byte) plex_free_next#22 = (byte) plex_free_next#23 -Alias (byte) plex_show_idx#27 = (byte) plex_show_idx#3 -Alias (byte) plex_free_next#13 = (byte) plex_free_next#3 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#4 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#4 -Alias (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#5 -Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#27 (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#21 -Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#40 (byte) plex_show_idx#38 (byte) plex_show_idx#31 -Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#40 (byte) plex_sprite_idx#38 (byte) plex_sprite_idx#31 -Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#40 (byte) plex_sprite_msb#37 (byte) plex_sprite_msb#29 -Alias (byte) plex_free_next#29 = (byte) plex_free_next#38 (byte) plex_free_next#4 -Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#33 -Alias (byte) plex_sprite_idx#28 = (byte) plex_sprite_idx#33 -Alias (byte) plex_sprite_msb#25 = (byte) plex_sprite_msb#32 -Alias (byte) plex_free_next#24 = (byte) plex_free_next#32 -Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 -Alias (byte) plex_show_idx#16 = (byte) plex_show_idx#5 (byte) plex_show_idx#17 (byte) plex_show_idx#6 -Alias (byte) plex_sprite_idx#16 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#6 -Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#7 -Alias (byte) plex_free_next#14 = (byte) plex_free_next#5 (byte) plex_free_next#15 (byte) plex_free_next#6 -Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5 -Alias (byte*) PLEX_SCREEN_PTR#24 = (byte*) PLEX_SCREEN_PTR#28 -Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#6 -Alias (byte) loop::sin_idx#2 = (byte) loop::sin_idx#4 (byte) loop::y_idx#0 -Alias (byte) plex_show_idx#41 = (byte) plex_show_idx#43 -Alias (byte) plex_sprite_idx#41 = (byte) plex_sprite_idx#43 -Alias (byte) plex_sprite_msb#41 = (byte) plex_sprite_msb#43 -Alias (byte) plex_free_next#40 = (byte) plex_free_next#43 -Alias (byte*) PLEX_SCREEN_PTR#40 = (byte*) PLEX_SCREEN_PTR#41 -Alias (byte) loop::sin_idx#3 = (byte) loop::sin_idx#5 -Alias (byte) plex_show_idx#29 = (byte) plex_show_idx#36 -Alias (byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#36 -Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#35 -Alias (byte) plex_free_next#25 = (byte) plex_free_next#35 -Alias (byte*) PLEX_SCREEN_PTR#37 = (byte*) PLEX_SCREEN_PTR#38 (byte*) PLEX_SCREEN_PTR#39 -Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#17 -Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#7 -Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#7 -Alias (byte) plex_sprite_msb#19 = (byte) plex_sprite_msb#8 -Alias (byte) plex_free_next#16 = (byte) plex_free_next#7 -Alias (byte) plex_free_next#36 = (byte) plex_free_next#41 -Alias (byte) plex_sprite_idx#47 = (byte) plex_sprite_idx#48 -Alias (byte) plex_show_idx#47 = (byte) plex_show_idx#48 -Alias (byte) plex_sprite_msb#47 = (byte) plex_sprite_msb#48 -Alias (byte*) PLEX_SCREEN_PTR#34 = (byte*) PLEX_SCREEN_PTR#36 -Alias (byte) loop::sin_idx#15 = (byte) loop::sin_idx#16 -Alias (byte) plex_free_next#17 = (byte) plex_free_next#26 (byte) plex_free_next#44 (byte) plex_free_next#42 -Alias (byte) plex_sprite_idx#42 = (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#46 (byte) plex_sprite_idx#44 -Alias (byte) plex_show_idx#42 = (byte) plex_show_idx#45 (byte) plex_show_idx#46 (byte) plex_show_idx#44 -Alias (byte) plex_sprite_msb#42 = (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#46 (byte) plex_sprite_msb#44 -Alias (byte) loop::ss#5 = (byte) loop::ss#7 (byte) loop::ss#8 (byte) loop::ss#6 -Alias (byte*) PLEX_SCREEN_PTR#30 = (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#33 (byte*) PLEX_SCREEN_PTR#31 -Alias (byte) loop::sin_idx#11 = (byte) loop::sin_idx#13 (byte) loop::sin_idx#14 (byte) loop::sin_idx#12 -Alias (byte) loop::plexFreeNextYpos1_return#0 = (byte) loop::plexFreeNextYpos1_return#2 (byte) loop::plexFreeNextYpos1_return#1 (byte) loop::plexFreeNextYpos1_return#3 (byte~) loop::$7 (byte) loop::rasterY#0 -Alias (byte) plex_sprite_idx#23 = (byte) plex_sprite_idx#37 -Alias (byte) plex_show_idx#23 = (byte) plex_show_idx#37 -Alias (byte) plex_free_next#27 = (byte) plex_free_next#37 -Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#36 -Alias (byte) loop::ss#2 = (byte) loop::ss#3 (byte) loop::ss#4 -Alias (byte*) PLEX_SCREEN_PTR#26 = (byte*) PLEX_SCREEN_PTR#29 (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#44 -Alias (byte) loop::sin_idx#10 = (byte) loop::sin_idx#9 (byte) loop::sin_idx#8 (byte) loop::sin_idx#7 -Alias (byte) plex_free_next#18 = (byte) plex_free_next#8 (byte) plex_free_next#34 -Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#35 -Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#35 -Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#34 -Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#30 (byte) plex_show_idx#9 -Alias (byte) plex_sprite_idx#20 = (byte) plex_sprite_idx#30 (byte) plex_sprite_idx#9 -Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#21 (byte) plex_sprite_msb#28 -Alias (byte) plex_free_next#19 = (byte) plex_free_next#28 (byte) plex_free_next#9 -Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7 -Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#21 -Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#21 -Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#22 -Alias (byte) plex_free_next#10 = (byte) plex_free_next#20 +Alias plexInit::plexSetScreen1_screen#0 = plexInit::screen#1 plexInit::plexSetScreen1_screen#1 +Alias PLEX_SCREEN_PTR#1 = plexInit::plexSetScreen1_$0 PLEX_SCREEN_PTR#22 +Alias PLEX_SCREEN_PTR#15 = PLEX_SCREEN_PTR#8 PLEX_SCREEN_PTR#2 +Alias plexSort::m#2 = plexSort::m#4 plexSort::s#0 +Alias plexSort::nxt_y#0 = plexSort::nxt_y#2 +Alias plexSort::nxt_idx#0 = plexSort::nxt_idx#3 +Alias plexSort::s#1 = plexSort::s#4 +Alias plexSort::nxt_idx#1 = plexSort::nxt_idx#2 +Alias plexSort::m#5 = plexSort::m#6 +Alias plex_show_idx#1 = plex_show_idx#39 +Alias plex_sprite_idx#1 = plex_sprite_idx#39 +Alias plex_sprite_msb#1 = plex_sprite_msb#38 +Alias plex_show_idx#11 = plex_show_idx#22 plex_show_idx#32 plex_show_idx#2 +Alias plex_sprite_idx#11 = plex_sprite_idx#22 plex_sprite_idx#32 plex_sprite_idx#2 +Alias plex_sprite_msb#12 = plex_sprite_msb#23 plex_sprite_msb#30 plex_sprite_msb#2 +Alias plex_free_next#0 = plex_free_next#11 plex_free_next#1 +Alias plexShowSprite::plex_sprite_idx2#0 = plexShowSprite::$0 plexShowSprite::plex_sprite_idx2#2 plexShowSprite::plex_sprite_idx2#1 +Alias plexShowSprite::plexFreeAdd1_ypos#0 = plexShowSprite::ypos#0 plexShowSprite::plexFreeAdd1_ypos#1 +Alias plex_free_next#12 = plex_free_next#21 +Alias plex_show_idx#12 = plex_show_idx#24 plex_show_idx#13 plex_show_idx#25 plex_show_idx#26 +Alias PLEX_SCREEN_PTR#16 = PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#9 +Alias plex_sprite_idx#12 = plex_sprite_idx#24 plex_sprite_idx#13 plex_sprite_idx#25 plex_sprite_idx#26 +Alias plex_sprite_msb#13 = plex_sprite_msb#31 plex_sprite_msb#39 plex_sprite_msb#24 plex_sprite_msb#14 +Alias plex_free_next#2 = plexShowSprite::plexFreeAdd1_$2 plex_free_next#39 plex_free_next#30 plex_free_next#31 +Alias plex_sprite_idx#27 = plex_sprite_idx#3 plexShowSprite::$6 +Alias plex_free_next#22 = plex_free_next#23 +Alias plex_show_idx#27 = plex_show_idx#3 +Alias plex_free_next#13 = plex_free_next#3 +Alias plex_sprite_idx#15 = plex_sprite_idx#4 +Alias plex_show_idx#15 = plex_show_idx#4 +Alias plex_sprite_msb#16 = plex_sprite_msb#5 +Alias PLEX_SCREEN_PTR#0 = PLEX_SCREEN_PTR#27 PLEX_SCREEN_PTR#25 PLEX_SCREEN_PTR#21 +Alias plex_show_idx#0 = plex_show_idx#40 plex_show_idx#38 plex_show_idx#31 +Alias plex_sprite_idx#0 = plex_sprite_idx#40 plex_sprite_idx#38 plex_sprite_idx#31 +Alias plex_sprite_msb#0 = plex_sprite_msb#40 plex_sprite_msb#37 plex_sprite_msb#29 +Alias plex_free_next#29 = plex_free_next#38 plex_free_next#4 +Alias plex_show_idx#28 = plex_show_idx#33 +Alias plex_sprite_idx#28 = plex_sprite_idx#33 +Alias plex_sprite_msb#25 = plex_sprite_msb#32 +Alias plex_free_next#24 = plex_free_next#32 +Alias PLEX_SCREEN_PTR#10 = PLEX_SCREEN_PTR#3 PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#11 PLEX_SCREEN_PTR#4 +Alias plex_show_idx#16 = plex_show_idx#5 plex_show_idx#17 plex_show_idx#6 +Alias plex_sprite_idx#16 = plex_sprite_idx#5 plex_sprite_idx#17 plex_sprite_idx#6 +Alias plex_sprite_msb#17 = plex_sprite_msb#6 plex_sprite_msb#18 plex_sprite_msb#7 +Alias plex_free_next#14 = plex_free_next#5 plex_free_next#15 plex_free_next#6 +Alias PLEX_SCREEN_PTR#12 = PLEX_SCREEN_PTR#5 +Alias PLEX_SCREEN_PTR#24 = PLEX_SCREEN_PTR#28 +Alias PLEX_SCREEN_PTR#13 = PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#6 +Alias loop::sin_idx#2 = loop::sin_idx#4 loop::y_idx#0 +Alias plex_show_idx#41 = plex_show_idx#43 +Alias plex_sprite_idx#41 = plex_sprite_idx#43 +Alias plex_sprite_msb#41 = plex_sprite_msb#43 +Alias plex_free_next#40 = plex_free_next#43 +Alias PLEX_SCREEN_PTR#40 = PLEX_SCREEN_PTR#41 +Alias loop::sin_idx#3 = loop::sin_idx#5 +Alias plex_show_idx#29 = plex_show_idx#36 +Alias plex_sprite_idx#29 = plex_sprite_idx#36 +Alias plex_sprite_msb#26 = plex_sprite_msb#35 +Alias plex_free_next#25 = plex_free_next#35 +Alias PLEX_SCREEN_PTR#37 = PLEX_SCREEN_PTR#38 PLEX_SCREEN_PTR#39 +Alias loop::sin_idx#1 = loop::sin_idx#17 +Alias plex_show_idx#18 = plex_show_idx#7 +Alias plex_sprite_idx#18 = plex_sprite_idx#7 +Alias plex_sprite_msb#19 = plex_sprite_msb#8 +Alias plex_free_next#16 = plex_free_next#7 +Alias plex_free_next#36 = plex_free_next#41 +Alias plex_sprite_idx#47 = plex_sprite_idx#48 +Alias plex_show_idx#47 = plex_show_idx#48 +Alias plex_sprite_msb#47 = plex_sprite_msb#48 +Alias PLEX_SCREEN_PTR#34 = PLEX_SCREEN_PTR#36 +Alias loop::sin_idx#15 = loop::sin_idx#16 +Alias plex_free_next#17 = plex_free_next#26 plex_free_next#44 plex_free_next#42 +Alias plex_sprite_idx#42 = plex_sprite_idx#45 plex_sprite_idx#46 plex_sprite_idx#44 +Alias plex_show_idx#42 = plex_show_idx#45 plex_show_idx#46 plex_show_idx#44 +Alias plex_sprite_msb#42 = plex_sprite_msb#45 plex_sprite_msb#46 plex_sprite_msb#44 +Alias loop::ss#5 = loop::ss#7 loop::ss#8 loop::ss#6 +Alias PLEX_SCREEN_PTR#30 = PLEX_SCREEN_PTR#32 PLEX_SCREEN_PTR#33 PLEX_SCREEN_PTR#31 +Alias loop::sin_idx#11 = loop::sin_idx#13 loop::sin_idx#14 loop::sin_idx#12 +Alias loop::plexFreeNextYpos1_return#0 = loop::plexFreeNextYpos1_return#2 loop::plexFreeNextYpos1_return#1 loop::plexFreeNextYpos1_return#3 loop::$7 loop::rasterY#0 +Alias plex_sprite_idx#23 = plex_sprite_idx#37 +Alias plex_show_idx#23 = plex_show_idx#37 +Alias plex_free_next#27 = plex_free_next#37 +Alias plex_sprite_msb#27 = plex_sprite_msb#36 +Alias loop::ss#2 = loop::ss#3 loop::ss#4 +Alias PLEX_SCREEN_PTR#26 = PLEX_SCREEN_PTR#29 PLEX_SCREEN_PTR#35 PLEX_SCREEN_PTR#44 +Alias loop::sin_idx#10 = loop::sin_idx#9 loop::sin_idx#8 loop::sin_idx#7 +Alias plex_free_next#18 = plex_free_next#8 plex_free_next#34 +Alias plex_sprite_idx#19 = plex_sprite_idx#8 plex_sprite_idx#35 +Alias plex_show_idx#19 = plex_show_idx#8 plex_show_idx#35 +Alias plex_sprite_msb#20 = plex_sprite_msb#9 plex_sprite_msb#34 +Alias plex_show_idx#20 = plex_show_idx#30 plex_show_idx#9 +Alias plex_sprite_idx#20 = plex_sprite_idx#30 plex_sprite_idx#9 +Alias plex_sprite_msb#10 = plex_sprite_msb#21 plex_sprite_msb#28 +Alias plex_free_next#19 = plex_free_next#28 plex_free_next#9 +Alias PLEX_SCREEN_PTR#14 = PLEX_SCREEN_PTR#7 +Alias plex_show_idx#10 = plex_show_idx#21 +Alias plex_sprite_idx#10 = plex_sprite_idx#21 +Alias plex_sprite_msb#11 = plex_sprite_msb#22 +Alias plex_free_next#10 = plex_free_next#20 Successful SSA optimization Pass2AliasElimination -Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#14 -Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#14 -Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#15 -Alias (byte) plex_free_next#13 = (byte) plex_free_next#22 (byte) plex_free_next#2 -Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#27 -Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#27 +Alias plex_sprite_idx#12 = plex_sprite_idx#14 +Alias plex_show_idx#12 = plex_show_idx#14 +Alias plex_sprite_msb#13 = plex_sprite_msb#15 +Alias plex_free_next#13 = plex_free_next#22 plex_free_next#2 +Alias plex_sprite_idx#15 = plex_sprite_idx#27 +Alias plex_show_idx#15 = plex_show_idx#27 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) plexInit::plexSetScreen1_screen#0 (byte*) plexInit::screen#0 Identical Phi Values (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1 @@ -1500,7 +1500,7 @@ Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) plexShowSprite::$11 = (byte~) plexShowSprite::$10 +Alias plexShowSprite::$11 = plexShowSprite::$10 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) plexSort::$5 [19] if((byte) plexSort::s#1!=(byte) $ff) goto plexSort::@8 Simple Condition (bool~) plexSort::$6 [95] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 @@ -1551,8 +1551,8 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$1) Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$4) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 -Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 +Alias plexSort::m#2 = plexSort::$1 +Alias plexSort::s#3 = plexSort::$4 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_WORD Successful SSA optimization PassNEliminateUnusedVars @@ -1886,85 +1886,85 @@ plexInit::@return: scope:[plexInit] from plexInit::@1 VARIABLE REGISTER WEIGHTS (byte*) PLEX_SCREEN_PTR (void()) init() -(byte~) init::$5 22.0 +(byte~) init::$5 2002.0 (byte) init::ss -(byte) init::ss#1 16.5 -(byte) init::ss#2 16.5 +(byte) init::ss#1 1501.5 +(byte) init::ss#2 1501.5 (byte) init::sx -(byte) init::sx#1 16.5 -(byte) init::sx#2 8.8 +(byte) init::sx#1 1501.5 +(byte) init::sx#2 800.8 (word) init::xp -(word) init::xp#1 7.333333333333333 -(word) init::xp#2 8.25 +(word) init::xp#1 667.3333333333334 +(word) init::xp#2 750.75 (void()) loop() -(byte~) loop::$5 202.0 +(byte~) loop::$5 20002.0 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 551.0 +(byte) loop::plexFreeNextYpos1_return#0 55001.0 (byte) loop::rasterY (byte) loop::sin_idx -(byte) loop::sin_idx#1 1.4666666666666666 -(byte) loop::sin_idx#6 3.666666666666667 +(byte) loop::sin_idx#1 133.46666666666667 +(byte) loop::sin_idx#6 333.6666666666667 (byte) loop::ss -(byte) loop::ss#1 151.5 -(byte) loop::ss#5 33.666666666666664 +(byte) loop::ss#1 15001.5 +(byte) loop::ss#5 3333.6666666666665 (byte) loop::sy -(byte) loop::sy#1 151.5 -(byte) loop::sy#2 101.0 +(byte) loop::sy#1 15001.5 +(byte) loop::sy#2 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 67.33333333333333 -(byte) loop::y_idx#2 157.0 -(byte) loop::y_idx#4 22.0 +(byte) loop::y_idx#1 6667.333333333333 +(byte) loop::y_idx#2 15502.0 +(byte) loop::y_idx#4 2002.0 (void()) main() (void()) plexInit((byte*) plexInit::screen) (byte) plexInit::i -(byte) plexInit::i#1 16.5 -(byte) plexInit::i#2 22.0 +(byte) plexInit::i#1 15001.5 +(byte) plexInit::i#2 20002.0 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 2.0 -(byte~) plexShowSprite::$2 4.0 -(byte~) plexShowSprite::$3 4.0 -(byte~) plexShowSprite::$5 4.0 -(byte~) plexShowSprite::$9 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$0 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 4.0 +(byte~) plexShowSprite::$11 100001.0 +(byte~) plexShowSprite::$2 200002.0 +(byte~) plexShowSprite::$3 200002.0 +(byte~) plexShowSprite::$5 200002.0 +(byte~) plexShowSprite::$9 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 4.0 +(byte) plexShowSprite::xpos_idx#0 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (byte) plexSort::m -(byte) plexSort::m#1 151.5 -(byte) plexSort::m#2 42.08333333333333 +(byte) plexSort::m#1 1500001.5 +(byte) plexSort::m#2 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 30.299999999999997 +(byte) plexSort::nxt_idx#0 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 150.375 +(byte) plexSort::nxt_y#0 1500000.375 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 151.5 -(byte) plexSort::plexFreePrepare1_s#2 151.5 +(byte) plexSort::plexFreePrepare1_s#1 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 1368.3333333333335 -(byte) plexSort::s#2 202.0 -(byte) plexSort::s#3 2052.5 -(byte) plexSort::s#6 202.0 +(byte) plexSort::s#1 1.3666668333333332E7 +(byte) plexSort::s#2 2000002.0 +(byte) plexSort::s#3 2.05000025E7 +(byte) plexSort::s#6 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 4.681818181818182 -(byte) plex_free_next#17 20.599999999999998 +(byte) plex_free_next#13 5000.090909090909 +(byte) plex_free_next#17 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 11.444444444444443 -(byte) plex_show_idx#42 4.541666666666665 +(byte) plex_show_idx#15 12222.444444444445 +(byte) plex_show_idx#42 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 10.299999999999999 -(byte) plex_sprite_idx#42 4.863636363636363 +(byte) plex_sprite_idx#15 11000.2 +(byte) plex_sprite_idx#42 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 20.599999999999998 -(byte) plex_sprite_msb#3 2.0 -(byte) plex_sprite_msb#42 4.28 +(byte) plex_sprite_msb#16 22000.4 +(byte) plex_sprite_msb#3 100001.0 +(byte) plex_sprite_msb#42 12400.16 Initial phi equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] @@ -2728,76 +2728,76 @@ YSIN: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ loop::sin_idx#6 ] ( main:3::loop:8 [ loop::sin_idx#6 ] ) always clobbers reg byte a +Statement [12] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ loop::sin_idx#6 ] ( main:3::loop:8 [ loop::sin_idx#6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Statement [16] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a +Statement [16] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ loop::sy#2 loop::sy#1 ] -Statement [17] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a -Statement [23] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [24] (byte~) loop::$5 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::sin_idx#1 loop::$5 ] ( main:3::loop:8 [ loop::sin_idx#1 loop::$5 ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ( main:3::loop:8 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ) always clobbers reg byte a +Statement [17] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [24] (byte~) loop::$5 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::sin_idx#1 loop::$5 ] ( main:3::loop:8 [ loop::sin_idx#1 loop::$5 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ( main:3::loop:8 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ loop::ss#5 loop::ss#1 ] -Statement [34] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [35] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#42 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#42)) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a +Statement [34] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [35] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#42 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#42)) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [44] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [45] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [44] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [45] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ plexShowSprite::$11 ] -Statement [47] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [49] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ) always clobbers reg byte a -Statement [59] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ) always clobbers reg byte a -Statement [67] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a +Statement [47] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [49] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [50] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ plexSort::nxt_idx#0 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ plexSort::nxt_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Statement [70] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [72] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [77] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a +Statement [70] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [77] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] -Statement [81] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [84] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [81] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:3::init:6 [ ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ init::sx#2 init::sx#1 ] -Statement [85] (byte~) init::$5 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$5 ] ( main:3::init:6 [ init::sx#2 init::xp#2 init::$5 ] ) always clobbers reg byte a -Statement [86] *((const word*) PLEX_XPOS + (byte~) init::$5) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:3::init:6 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [92] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:3::init:6 [ init::ss#2 ] ) always clobbers reg byte a +Statement [85] (byte~) init::$5 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$5 ] ( main:3::init:6 [ init::sx#2 init::xp#2 init::$5 ] { } ) always clobbers reg byte a +Statement [86] *((const word*) PLEX_XPOS + (byte~) init::$5) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:3::init:6 [ init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a +Statement [90] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:3::init:6 [ ] { } ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:3::init:6 [ init::ss#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ init::ss#2 init::ss#1 ] -Statement [12] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ loop::sin_idx#6 ] ( main:3::loop:8 [ loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [16] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a -Statement [17] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a -Statement [23] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [24] (byte~) loop::$5 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::sin_idx#1 loop::$5 ] ( main:3::loop:8 [ loop::sin_idx#1 loop::$5 ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ( main:3::loop:8 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ) always clobbers reg byte a -Statement [34] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [35] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#42 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#42)) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [44] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [45] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a -Statement [47] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [49] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ) always clobbers reg byte a -Statement [59] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ) always clobbers reg byte a -Statement [64] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a -Statement [67] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a -Statement [70] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [72] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [77] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a -Statement [81] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [84] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [85] (byte~) init::$5 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$5 ] ( main:3::init:6 [ init::sx#2 init::xp#2 init::$5 ] ) always clobbers reg byte a -Statement [86] *((const word*) PLEX_XPOS + (byte~) init::$5) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:3::init:6 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [92] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:3::init:6 [ init::ss#2 ] ) always clobbers reg byte a +Statement [12] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ loop::sin_idx#6 ] ( main:3::loop:8 [ loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] { } ) always clobbers reg byte a +Statement [17] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [24] (byte~) loop::$5 ← *((const byte*) D011) & (const byte) VIC_RST8 [ loop::sin_idx#1 loop::$5 ] ( main:3::loop:8 [ loop::sin_idx#1 loop::$5 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] ( main:3::loop:8 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 loop::ss#5 ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) BORDERCOL) ← (const byte) BLACK [ loop::sin_idx#1 ] ( main:3::loop:8 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [35] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#42 << (byte) 1 [ plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_free_next#17 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx#42)) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [44] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [45] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a +Statement [47] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [49] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [50] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb#42 [ plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] ( main:3::loop:8::plexShowSprite:31 [ loop::sin_idx#1 loop::ss#5 plex_sprite_idx#42 plex_show_idx#42 plex_sprite_msb#42 plex_free_next#13 ] { } ) always clobbers reg byte a +Statement [64] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a +Statement [70] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [77] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:3::loop:8::plexSort:22 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a +Statement [81] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:3::init:6 [ ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [85] (byte~) init::$5 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$5 ] ( main:3::init:6 [ init::sx#2 init::xp#2 init::$5 ] { } ) always clobbers reg byte a +Statement [86] *((const word*) PLEX_XPOS + (byte~) init::$5) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:3::init:6 [ init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:3::init:6 [ init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a +Statement [90] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:3::init:6 [ ] { } ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:3::init:6 [ init::ss#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ loop::sy#2 loop::sy#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -2831,70 +2831,70 @@ Potential registers zp[1]:32 [ plexSort::s#2 ] : zp[1]:32 , reg byte a , reg byt Potential registers zp[1]:33 [ init::$5 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plexSort] 3,622.83: zp[1]:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp[1]:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp[1]:32 [ plexSort::s#2 ] 193.58: zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp[1]:31 [ plexSort::nxt_y#0 ] 30.3: zp[1]:30 [ plexSort::nxt_idx#0 ] -Uplift Scope [loop] 551: zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] 252.5: zp[1]:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 202: zp[1]:18 [ loop::$5 ] 185.17: zp[1]:9 [ loop::ss#5 loop::ss#1 ] 5.13: zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplift Scope [init] 33: zp[1]:16 [ init::ss#2 init::ss#1 ] 25.3: zp[1]:13 [ init::sx#2 init::sx#1 ] 22: zp[1]:33 [ init::$5 ] 15.58: zp[2]:14 [ init::xp#2 init::xp#1 ] -Uplift Scope [] 26.88: zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] 25.28: zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] 15.99: zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] 15.16: zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] -Uplift Scope [plexInit] 38.5: zp[1]:17 [ plexInit::i#2 plexInit::i#1 ] -Uplift Scope [plexShowSprite] 4: zp[1]:22 [ plexShowSprite::plexFreeAdd1_$0 ] 4: zp[1]:23 [ plexShowSprite::plexFreeAdd1_$1 ] 4: zp[1]:24 [ plexShowSprite::xpos_idx#0 ] 4: zp[1]:26 [ plexShowSprite::$2 ] 4: zp[1]:27 [ plexShowSprite::$3 ] 4: zp[1]:28 [ plexShowSprite::$9 ] 4: zp[1]:29 [ plexShowSprite::$5 ] 3: zp[1]:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp[1]:25 [ plexShowSprite::$11 ] 0.55: zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplift Scope [plexSort] 36,166,672.83: zp[1]:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 3,000,003: zp[1]:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 2,000,002: zp[1]:32 [ plexSort::s#2 ] 1,916,668.58: zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] 1,500,000.38: zp[1]:31 [ plexSort::nxt_y#0 ] 300,000.3: zp[1]:30 [ plexSort::nxt_idx#0 ] +Uplift Scope [plexShowSprite] 200,002: zp[1]:22 [ plexShowSprite::plexFreeAdd1_$0 ] 200,002: zp[1]:23 [ plexShowSprite::plexFreeAdd1_$1 ] 200,002: zp[1]:24 [ plexShowSprite::xpos_idx#0 ] 200,002: zp[1]:26 [ plexShowSprite::$2 ] 200,002: zp[1]:27 [ plexShowSprite::$3 ] 200,002: zp[1]:28 [ plexShowSprite::$9 ] 200,002: zp[1]:29 [ plexShowSprite::$5 ] 150,001.5: zp[1]:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 100,001: zp[1]:25 [ plexShowSprite::$11 ] 27,273: zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplift Scope [] 134,401.56: zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] 29,305.99: zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] 27,000.49: zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] 25,091.29: zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] +Uplift Scope [loop] 55,001: zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] 25,002.5: zp[1]:4 [ loop::sy#2 loop::sy#1 ] 24,171.33: zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 20,002: zp[1]:18 [ loop::$5 ] 18,335.17: zp[1]:9 [ loop::ss#5 loop::ss#1 ] 467.13: zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplift Scope [plexInit] 35,003.5: zp[1]:17 [ plexInit::i#2 plexInit::i#1 ] +Uplift Scope [init] 3,003: zp[1]:16 [ init::ss#2 init::ss#1 ] 2,302.3: zp[1]:13 [ init::sx#2 init::sx#1 ] 2,002: zp[1]:33 [ init::$5 ] 1,418.08: zp[2]:14 [ init::xp#2 init::xp#1 ] Uplift Scope [main] Uplifting [plexSort] best 84432 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp[1]:32 [ plexSort::s#2 ] zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] zp[1]:31 [ plexSort::nxt_y#0 ] zp[1]:30 [ plexSort::nxt_idx#0 ] Limited combination testing to 10 combinations of 972 possible. -Uplifting [loop] best 83232 combination zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp[1]:18 [ loop::$5 ] zp[1]:9 [ loop::ss#5 loop::ss#1 ] zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Limited combination testing to 10 combinations of 1296 possible. -Uplifting [init] best 82982 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp[1]:33 [ init::$5 ] zp[2]:14 [ init::xp#2 init::xp#1 ] -Limited combination testing to 10 combinations of 36 possible. -Uplifting [] best 82982 combination zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] -Limited combination testing to 10 combinations of 81 possible. -Uplifting [plexInit] best 82862 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [plexShowSprite] best 82852 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] zp[1]:24 [ plexShowSprite::xpos_idx#0 ] zp[1]:26 [ plexShowSprite::$2 ] zp[1]:27 [ plexShowSprite::$3 ] zp[1]:28 [ plexShowSprite::$9 ] zp[1]:29 [ plexShowSprite::$5 ] zp[1]:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:25 [ plexShowSprite::$11 ] zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 84422 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] zp[1]:24 [ plexShowSprite::xpos_idx#0 ] zp[1]:26 [ plexShowSprite::$2 ] zp[1]:27 [ plexShowSprite::$3 ] zp[1]:28 [ plexShowSprite::$9 ] zp[1]:29 [ plexShowSprite::$5 ] zp[1]:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:25 [ plexShowSprite::$11 ] zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] Limited combination testing to 10 combinations of 589824 possible. +Uplifting [] best 84422 combination zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] +Limited combination testing to 10 combinations of 81 possible. +Uplifting [loop] best 83222 combination zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp[1]:18 [ loop::$5 ] zp[1]:9 [ loop::ss#5 loop::ss#1 ] zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Limited combination testing to 10 combinations of 1296 possible. +Uplifting [plexInit] best 83102 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [init] best 82852 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp[1]:33 [ init::$5 ] zp[2]:14 [ init::xp#2 init::xp#1 ] +Limited combination testing to 10 combinations of 36 possible. Uplifting [main] best 82852 combination -Attempting to uplift remaining variables inzp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] -Uplifting [loop] best 82852 combination zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] -Attempting to uplift remaining variables inzp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] -Uplifting [loop] best 82122 combination reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] -Attempting to uplift remaining variables inzp[1]:18 [ loop::$5 ] -Uplifting [loop] best 81522 combination reg byte a [ loop::$5 ] Attempting to uplift remaining variables inzp[1]:32 [ plexSort::s#2 ] -Uplifting [plexSort] best 80922 combination reg byte x [ plexSort::s#2 ] +Uplifting [plexSort] best 82252 combination reg byte x [ plexSort::s#2 ] Attempting to uplift remaining variables inzp[1]:10 [ plexSort::m#2 plexSort::m#1 ] -Uplifting [plexSort] best 80922 combination zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] -Attempting to uplift remaining variables inzp[1]:9 [ loop::ss#5 loop::ss#1 ] -Uplifting [loop] best 80922 combination zp[1]:9 [ loop::ss#5 loop::ss#1 ] +Uplifting [plexSort] best 82252 combination zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] Attempting to uplift remaining variables inzp[1]:31 [ plexSort::nxt_y#0 ] -Uplifting [plexSort] best 80922 combination zp[1]:31 [ plexSort::nxt_y#0 ] +Uplifting [plexSort] best 82252 combination zp[1]:31 [ plexSort::nxt_y#0 ] Attempting to uplift remaining variables inzp[1]:30 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 80922 combination zp[1]:30 [ plexSort::nxt_idx#0 ] -Attempting to uplift remaining variables inzp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] -Uplifting [] best 80922 combination zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] -Attempting to uplift remaining variables inzp[1]:5 [ plex_free_next#17 plex_free_next#13 ] -Uplifting [] best 80922 combination zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] -Attempting to uplift remaining variables inzp[1]:33 [ init::$5 ] -Uplifting [init] best 80882 combination reg byte a [ init::$5 ] -Attempting to uplift remaining variables inzp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] -Uplifting [] best 80882 combination zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] -Attempting to uplift remaining variables inzp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] -Uplifting [] best 80882 combination zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] -Attempting to uplift remaining variables inzp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplifting [loop] best 80882 combination zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [plexSort] best 82252 combination zp[1]:30 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp[1]:24 [ plexShowSprite::xpos_idx#0 ] -Uplifting [plexShowSprite] best 80876 combination reg byte a [ plexShowSprite::xpos_idx#0 ] +Uplifting [plexShowSprite] best 82246 combination reg byte a [ plexShowSprite::xpos_idx#0 ] Attempting to uplift remaining variables inzp[1]:26 [ plexShowSprite::$2 ] -Uplifting [plexShowSprite] best 80870 combination reg byte a [ plexShowSprite::$2 ] +Uplifting [plexShowSprite] best 82240 combination reg byte a [ plexShowSprite::$2 ] Attempting to uplift remaining variables inzp[1]:27 [ plexShowSprite::$3 ] -Uplifting [plexShowSprite] best 80864 combination reg byte a [ plexShowSprite::$3 ] +Uplifting [plexShowSprite] best 82234 combination reg byte a [ plexShowSprite::$3 ] Attempting to uplift remaining variables inzp[1]:28 [ plexShowSprite::$9 ] -Uplifting [plexShowSprite] best 80858 combination reg byte a [ plexShowSprite::$9 ] +Uplifting [plexShowSprite] best 82228 combination reg byte a [ plexShowSprite::$9 ] Attempting to uplift remaining variables inzp[1]:29 [ plexShowSprite::$5 ] -Uplifting [plexShowSprite] best 80852 combination reg byte x [ plexShowSprite::$5 ] +Uplifting [plexShowSprite] best 82222 combination reg byte x [ plexShowSprite::$5 ] Attempting to uplift remaining variables inzp[1]:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Uplifting [plexShowSprite] best 80843 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Uplifting [plexShowSprite] best 82213 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Attempting to uplift remaining variables inzp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] +Uplifting [] best 82213 combination zp[1]:8 [ plex_sprite_msb#42 plex_sprite_msb#16 plex_sprite_msb#3 ] Attempting to uplift remaining variables inzp[1]:25 [ plexShowSprite::$11 ] -Uplifting [plexShowSprite] best 80836 combination reg byte x [ plexShowSprite::$11 ] +Uplifting [plexShowSprite] best 82206 combination reg byte x [ plexShowSprite::$11 ] +Attempting to uplift remaining variables inzp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] +Uplifting [loop] best 82206 combination zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] +Attempting to uplift remaining variables inzp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] +Uplifting [] best 82206 combination zp[1]:7 [ plex_show_idx#42 plex_show_idx#15 ] Attempting to uplift remaining variables inzp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 80836 combination zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 82206 combination zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Attempting to uplift remaining variables inzp[1]:5 [ plex_free_next#17 plex_free_next#13 ] +Uplifting [] best 82206 combination zp[1]:5 [ plex_free_next#17 plex_free_next#13 ] +Attempting to uplift remaining variables inzp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] +Uplifting [] best 82206 combination zp[1]:6 [ plex_sprite_idx#42 plex_sprite_idx#15 ] +Attempting to uplift remaining variables inzp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] +Uplifting [loop] best 81476 combination reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] +Attempting to uplift remaining variables inzp[1]:18 [ loop::$5 ] +Uplifting [loop] best 80876 combination reg byte a [ loop::$5 ] +Attempting to uplift remaining variables inzp[1]:9 [ loop::ss#5 loop::ss#1 ] +Uplifting [loop] best 80876 combination zp[1]:9 [ loop::ss#5 loop::ss#1 ] +Attempting to uplift remaining variables inzp[1]:33 [ init::$5 ] +Uplifting [init] best 80836 combination reg byte a [ init::$5 ] +Attempting to uplift remaining variables inzp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [loop] best 80836 combination zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Coalescing zero page register [ zp[1]:19 [ loop::plexFreeNextYpos1_return#0 ] ] with [ zp[1]:10 [ plexSort::m#2 plexSort::m#1 ] ] Coalescing zero page register [ zp[1]:30 [ plexSort::nxt_idx#0 ] ] with [ zp[1]:20 [ plexShowSprite::plex_sprite_idx2#0 ] ] Allocated (was zp[1]:5) zp[1]:3 [ plex_free_next#17 plex_free_next#13 ] @@ -3673,22 +3673,22 @@ FINAL SYMBOL TABLE .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} (void()) init() -(byte~) init::$5 reg byte a 22.0 +(byte~) init::$5 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 (label) init::@return (byte) init::ss -(byte) init::ss#1 reg byte x 16.5 -(byte) init::ss#2 reg byte x 16.5 +(byte) init::ss#1 reg byte x 1501.5 +(byte) init::ss#2 reg byte x 1501.5 (byte) init::sx -(byte) init::sx#1 reg byte x 16.5 -(byte) init::sx#2 reg byte x 8.8 +(byte) init::sx#1 reg byte x 1501.5 +(byte) init::sx#2 reg byte x 800.8 (word) init::xp -(word) init::xp#1 xp zp[2]:8 7.333333333333333 -(word) init::xp#2 xp zp[2]:8 8.25 +(word) init::xp#1 xp zp[2]:8 667.3333333333334 +(word) init::xp#2 xp zp[2]:8 750.75 (void()) loop() -(byte~) loop::$5 reg byte a 202.0 +(byte~) loop::$5 reg byte a 20002.0 (label) loop::@1 (label) loop::@10 (label) loop::@11 @@ -3703,21 +3703,21 @@ FINAL SYMBOL TABLE (label) loop::@9 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:10 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:10 55001.0 (byte) loop::rasterY (byte) loop::sin_idx -(byte) loop::sin_idx#1 sin_idx zp[1]:2 1.4666666666666666 -(byte) loop::sin_idx#6 sin_idx zp[1]:2 3.666666666666667 +(byte) loop::sin_idx#1 sin_idx zp[1]:2 133.46666666666667 +(byte) loop::sin_idx#6 sin_idx zp[1]:2 333.6666666666667 (byte) loop::ss -(byte) loop::ss#1 ss zp[1]:7 151.5 -(byte) loop::ss#5 ss zp[1]:7 33.666666666666664 +(byte) loop::ss#1 ss zp[1]:7 15001.5 +(byte) loop::ss#5 ss zp[1]:7 3333.6666666666665 (byte) loop::sy -(byte) loop::sy#1 reg byte y 151.5 -(byte) loop::sy#2 reg byte y 101.0 +(byte) loop::sy#1 reg byte y 15001.5 +(byte) loop::sy#2 reg byte y 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 reg byte x 67.33333333333333 -(byte) loop::y_idx#2 reg byte x 157.0 -(byte) loop::y_idx#4 reg byte x 22.0 +(byte) loop::y_idx#1 reg byte x 6667.333333333333 +(byte) loop::y_idx#2 reg byte x 15502.0 +(byte) loop::y_idx#4 reg byte x 2002.0 (void()) main() (label) main::@1 (label) main::@return @@ -3725,17 +3725,17 @@ FINAL SYMBOL TABLE (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 100001.0 +(byte~) plexShowSprite::$2 reg byte a 200002.0 +(byte~) plexShowSprite::$3 reg byte a 200002.0 +(byte~) plexShowSprite::$5 reg byte x 200002.0 +(byte~) plexShowSprite::$9 reg byte a 200002.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -3743,14 +3743,14 @@ FINAL SYMBOL TABLE (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:11 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:11 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -3761,35 +3761,35 @@ FINAL SYMBOL TABLE (label) plexSort::@6 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:10 151.5 -(byte) plexSort::m#2 m zp[1]:10 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:10 1500001.5 +(byte) plexSort::m#2 m zp[1]:10 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp[1]:3 4.681818181818182 -(byte) plex_free_next#17 plex_free_next zp[1]:3 20.599999999999998 +(byte) plex_free_next#13 plex_free_next zp[1]:3 5000.090909090909 +(byte) plex_free_next#17 plex_free_next zp[1]:3 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp[1]:5 11.444444444444443 -(byte) plex_show_idx#42 plex_show_idx zp[1]:5 4.541666666666665 +(byte) plex_show_idx#15 plex_show_idx zp[1]:5 12222.444444444445 +(byte) plex_show_idx#42 plex_show_idx zp[1]:5 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:4 10.299999999999999 -(byte) plex_sprite_idx#42 plex_sprite_idx zp[1]:4 4.863636363636363 +(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:4 11000.2 +(byte) plex_sprite_idx#42 plex_sprite_idx zp[1]:4 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:6 20.599999999999998 -(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:6 2.0 -(byte) plex_sprite_msb#42 plex_sprite_msb zp[1]:6 4.28 +(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:6 22000.4 +(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:6 100001.0 +(byte) plex_sprite_msb#42 plex_sprite_msb zp[1]:6 12400.16 zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.sym b/src/test/ref/examples/multiplexer/simple-multiplexer.sym index 1daeb5467..60bd7de3a 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.sym +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.sym @@ -32,22 +32,22 @@ .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} (void()) init() -(byte~) init::$5 reg byte a 22.0 +(byte~) init::$5 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 (label) init::@return (byte) init::ss -(byte) init::ss#1 reg byte x 16.5 -(byte) init::ss#2 reg byte x 16.5 +(byte) init::ss#1 reg byte x 1501.5 +(byte) init::ss#2 reg byte x 1501.5 (byte) init::sx -(byte) init::sx#1 reg byte x 16.5 -(byte) init::sx#2 reg byte x 8.8 +(byte) init::sx#1 reg byte x 1501.5 +(byte) init::sx#2 reg byte x 800.8 (word) init::xp -(word) init::xp#1 xp zp[2]:8 7.333333333333333 -(word) init::xp#2 xp zp[2]:8 8.25 +(word) init::xp#1 xp zp[2]:8 667.3333333333334 +(word) init::xp#2 xp zp[2]:8 750.75 (void()) loop() -(byte~) loop::$5 reg byte a 202.0 +(byte~) loop::$5 reg byte a 20002.0 (label) loop::@1 (label) loop::@10 (label) loop::@11 @@ -62,21 +62,21 @@ (label) loop::@9 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:10 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp[1]:10 55001.0 (byte) loop::rasterY (byte) loop::sin_idx -(byte) loop::sin_idx#1 sin_idx zp[1]:2 1.4666666666666666 -(byte) loop::sin_idx#6 sin_idx zp[1]:2 3.666666666666667 +(byte) loop::sin_idx#1 sin_idx zp[1]:2 133.46666666666667 +(byte) loop::sin_idx#6 sin_idx zp[1]:2 333.6666666666667 (byte) loop::ss -(byte) loop::ss#1 ss zp[1]:7 151.5 -(byte) loop::ss#5 ss zp[1]:7 33.666666666666664 +(byte) loop::ss#1 ss zp[1]:7 15001.5 +(byte) loop::ss#5 ss zp[1]:7 3333.6666666666665 (byte) loop::sy -(byte) loop::sy#1 reg byte y 151.5 -(byte) loop::sy#2 reg byte y 101.0 +(byte) loop::sy#1 reg byte y 15001.5 +(byte) loop::sy#2 reg byte y 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 reg byte x 67.33333333333333 -(byte) loop::y_idx#2 reg byte x 157.0 -(byte) loop::y_idx#4 reg byte x 22.0 +(byte) loop::y_idx#1 reg byte x 6667.333333333333 +(byte) loop::y_idx#2 reg byte x 15502.0 +(byte) loop::y_idx#4 reg byte x 2002.0 (void()) main() (label) main::@1 (label) main::@return @@ -84,17 +84,17 @@ (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 100001.0 +(byte~) plexShowSprite::$2 reg byte a 200002.0 +(byte~) plexShowSprite::$3 reg byte a 200002.0 +(byte~) plexShowSprite::$5 reg byte x 200002.0 +(byte~) plexShowSprite::$9 reg byte a 200002.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -102,14 +102,14 @@ (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 200002.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 200002.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 150001.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:11 0.5454545454545454 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:11 27273.0 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 200002.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -120,35 +120,35 @@ (label) plexSort::@6 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:10 151.5 -(byte) plexSort::m#2 m zp[1]:10 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:10 1500001.5 +(byte) plexSort::m#2 m zp[1]:10 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 (byte) plex_free_next -(byte) plex_free_next#13 plex_free_next zp[1]:3 4.681818181818182 -(byte) plex_free_next#17 plex_free_next zp[1]:3 20.599999999999998 +(byte) plex_free_next#13 plex_free_next zp[1]:3 5000.090909090909 +(byte) plex_free_next#17 plex_free_next zp[1]:3 22000.4 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp[1]:5 11.444444444444443 -(byte) plex_show_idx#42 plex_show_idx zp[1]:5 4.541666666666665 +(byte) plex_show_idx#15 plex_show_idx zp[1]:5 12222.444444444445 +(byte) plex_show_idx#42 plex_show_idx zp[1]:5 17083.541666666664 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:4 10.299999999999999 -(byte) plex_sprite_idx#42 plex_sprite_idx zp[1]:4 4.863636363636363 +(byte) plex_sprite_idx#15 plex_sprite_idx zp[1]:4 11000.2 +(byte) plex_sprite_idx#42 plex_sprite_idx zp[1]:4 14091.090909090908 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:6 20.599999999999998 -(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:6 2.0 -(byte) plex_sprite_msb#42 plex_sprite_msb zp[1]:6 4.28 +(byte) plex_sprite_msb#16 plex_sprite_msb zp[1]:6 22000.4 +(byte) plex_sprite_msb#3 plex_sprite_msb zp[1]:6 100001.0 +(byte) plex_sprite_msb#42 plex_sprite_msb zp[1]:6 12400.16 zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] diff --git a/src/test/ref/examples/music/music.log b/src/test/ref/examples/music/music.log index 2981d6c65..cf5192e24 100644 --- a/src/test/ref/examples/music/music.log +++ b/src/test/ref/examples/music/music.log @@ -192,7 +192,7 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement asm { jsrmusic.init } always clobbers reg byte a reg byte x reg byte y -Statement [7] if(*((const byte*) RASTER)!=(byte) $fd) goto main::@1 [ ] ( main:4 [ ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $fd) goto main::@1 [ ] ( main:4 [ ] { } ) always clobbers reg byte a Statement asm { jsrmusic.play } always clobbers reg byte a reg byte x reg byte y REGISTER UPLIFT SCOPES diff --git a/src/test/ref/examples/music/music_irq.log b/src/test/ref/examples/music/music_irq.log index cad2c3be8..a0f482904 100644 --- a/src/test/ref/examples/music/music_irq.log +++ b/src/test/ref/examples/music/music_irq.log @@ -264,13 +264,13 @@ irq_play: { REGISTER UPLIFT POTENTIAL REGISTERS Statement asm { sei jsrmusic.init } always clobbers reg byte a reg byte x reg byte y -Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_play() [ ] ( main:4 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:4 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:4 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:4 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:4 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_play() [ ] ( main:4 [ ] { } ) always clobbers reg byte a Statement asm { jsrmusic.play } always clobbers reg byte a reg byte x reg byte y -Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/examples/nmisamples/nmisamples.log b/src/test/ref/examples/nmisamples/nmisamples.log index be0423029..e2b428da9 100644 --- a/src/test/ref/examples/nmisamples/nmisamples.log +++ b/src/test/ref/examples/nmisamples/nmisamples.log @@ -441,22 +441,22 @@ SAMPLE: .import binary "moments_sample.bin" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte*) sample ← (const byte*) SAMPLE [ ] ( [ ] ) always clobbers reg byte a +Statement [1] (byte*) sample ← (const byte*) SAMPLE [ ] ( [ ] { } ) always clobbers reg byte a Statement asm { lda#$ff sta$d406 sta$d40d sta$d414 lda#$49 sta$d404 sta$d40b sta$d412 } always clobbers reg byte a -Statement [7] *((const byte*) CIA2_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi() [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const word*) CIA2_TIMER_A) ← (byte) $88 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) CIA2_INTERRUPT) ← (byte) $81 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 1 [ ] ( main:3 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) CIA2_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi() [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [9] *((const word*) CIA2_TIMER_A) ← (byte) $88 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_INTERRUPT) ← (byte) $81 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 1 [ ] ( main:3 [ ] { } ) always clobbers reg byte a Statement asm { ldaCIA2_INTERRUPT } always clobbers reg byte a -Statement [16] (byte~) nmi2::$1 ← *((byte*) sample) >> (byte) 4 [ sample nmi2::$1 ] ( [ sample nmi2::$1 ] ) always clobbers reg byte a reg byte y -Statement [21] (byte*) sample ← (const byte*) SAMPLE [ ] ( [ ] ) always clobbers reg byte a -Statement [22] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi() [ ] ( [ ] ) always clobbers reg byte a -Statement [24] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [16] (byte~) nmi2::$1 ← *((byte*) sample) >> (byte) 4 [ sample nmi2::$1 ] ( [ sample nmi2::$1 ] { } ) always clobbers reg byte a reg byte y +Statement [21] (byte*) sample ← (const byte*) SAMPLE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [22] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [24] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Statement asm { ldaCIA2_INTERRUPT } always clobbers reg byte a -Statement [27] (byte~) nmi::$1 ← *((byte*) sample) & (byte) $f [ nmi::$1 ] ( [ nmi::$1 ] ) always clobbers reg byte a reg byte y -Statement [29] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi2() [ ] ( [ ] ) always clobbers reg byte a -Statement [31] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [27] (byte~) nmi::$1 ← *((byte*) sample) & (byte) $f [ nmi::$1 ] ( [ nmi::$1 ] { } ) always clobbers reg byte a reg byte y +Statement [29] *((const void()**) KERNEL_NMI) ← &interrupt(HARDWARE_ALL)(void()) nmi2() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [31] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[2]:2 [ sample ] : zp[2]:2 , Potential registers zp[1]:4 [ nmi2::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ nmi2::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , diff --git a/src/test/ref/examples/plasma/plasma-unroll.asm b/src/test/ref/examples/plasma/plasma-unroll.asm index 9031da5a8..5a841b50d 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.asm +++ b/src/test/ref/examples/plasma/plasma-unroll.asm @@ -359,10 +359,9 @@ makecharset: { rts __b2: // (byte) makecharset::s#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#32 (byte*) print_screen#9 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#8 -Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#13 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#26 -Alias (byte*) print_screen#5 = (byte*) print_screen#6 -Alias (byte) c1A#17 = (byte) c1A#29 (byte) c1A#30 (byte) c1A#28 (byte) c1A#24 (byte) c1A#21 -Alias (byte) c1B#17 = (byte) c1B#29 (byte) c1B#30 (byte) c1B#28 (byte) c1B#24 (byte) c1B#21 -Alias (byte) c2A#18 = (byte) c2A#29 (byte) c2A#30 (byte) c2A#28 (byte) c2A#25 (byte) c2A#23 -Alias (byte) c2B#18 = (byte) c2B#29 (byte) c2B#30 (byte) c2B#28 (byte) c2B#25 (byte) c2B#23 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#30 (byte*) print_line_cursor#26 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#37 (byte*) print_char_cursor#34 (byte*) print_char_cursor#28 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte) c1A#1 = (byte) c1A#12 (byte) c1A#13 (byte) c1A#7 -Alias (byte) c1B#1 = (byte) c1B#12 (byte) c1B#13 (byte) c1B#7 -Alias (byte) c2A#1 = (byte) c2A#12 (byte) c2A#13 (byte) c2A#7 -Alias (byte) c2B#1 = (byte) c2B#12 (byte) c2B#13 (byte) c2B#7 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#15 (byte*) print_line_cursor#20 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#22 (byte*) print_char_cursor#27 (byte*) print_char_cursor#6 -Alias (byte) c1A#0 = (byte) c1A#6 -Alias (byte) c1B#0 = (byte) c1B#6 -Alias (byte) c2A#0 = (byte) c2A#6 -Alias (byte) c2B#0 = (byte) c2B#6 -Alias (byte) doplasma::c1a#2 = (byte) doplasma::c1a#3 -Alias (byte) doplasma::c1b#2 = (byte) doplasma::c1b#3 -Alias (byte) doplasma::yprev#2 = (byte) doplasma::yprev#3 -Alias (byte) doplasma::i#2 = (byte) doplasma::i#3 -Alias (byte) c1A#14 = (byte) c1A#18 (byte) c1A#9 -Alias (byte) c1B#14 = (byte) c1B#18 (byte) c1B#9 -Alias (byte) c2A#14 = (byte) c2A#20 (byte) c2A#8 -Alias (byte) c2B#14 = (byte) c2B#20 (byte) c2B#8 -Alias (byte*) doplasma::screen#10 = (byte*) doplasma::screen#12 (byte*) doplasma::screen#8 -Alias (byte) doplasma::yval#0 = (byte~) doplasma::$1 (byte) doplasma::yprev#1 -Alias (byte) doplasma::c2a#2 = (byte) doplasma::c2a#3 -Alias (byte) doplasma::c2b#2 = (byte) doplasma::c2b#3 -Alias (byte) doplasma::i1#2 = (byte) doplasma::i1#3 -Alias (byte) c2A#15 = (byte) c2A#21 (byte) c2A#9 -Alias (byte) c2B#15 = (byte) c2B#21 (byte) c2B#9 -Alias (byte) c1A#20 = (byte) c1A#25 (byte) c1A#22 -Alias (byte) c1B#20 = (byte) c1B#25 (byte) c1B#22 -Alias (byte*) doplasma::screen#6 = (byte*) doplasma::screen#9 (byte*) doplasma::screen#7 -Alias (byte) doplasma::i2#2 = (byte) doplasma::i2#3 -Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#4 -Alias (byte) c1A#10 = (byte) c1A#26 (byte) c1A#15 (byte) c1A#4 -Alias (byte) c1B#10 = (byte) c1B#26 (byte) c1B#15 (byte) c1B#4 -Alias (byte) c2A#10 = (byte) c2A#26 (byte) c2A#16 (byte) c2A#4 -Alias (byte) c2B#10 = (byte) c2B#26 (byte) c2B#16 (byte) c2B#4 -Alias (byte) doplasma::val#2 = (byte) doplasma::val#3 -Alias (byte) doplasma::ii#2 = (byte) doplasma::ii#3 -Alias (byte*) doplasma::screen#1 = (byte*) doplasma::screen#2 (byte*) doplasma::screen#5 -Alias (byte) doplasma::i2#4 = (byte) doplasma::i2#6 (byte) doplasma::i2#5 -Alias (byte) c1A#19 = (byte) c1A#27 (byte) c1A#23 -Alias (byte) c1B#19 = (byte) c1B#27 (byte) c1B#23 -Alias (byte) c2A#22 = (byte) c2A#27 (byte) c2A#24 -Alias (byte) c2B#22 = (byte) c2B#27 (byte) c2B#24 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#29 -Alias (byte*) makecharset::charset#12 = (byte*) makecharset::charset#13 (byte*) makecharset::charset#16 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#7 -Alias (word) makecharset::c#2 = (word) makecharset::c#3 -Alias (byte*) makecharset::charset#10 = (byte*) makecharset::charset#8 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#24 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#17 (byte*) print_line_cursor#6 -Alias (word) makecharset::c#11 = (word) makecharset::c#7 (word) makecharset::c#4 (word) makecharset::c#12 (word) makecharset::c#9 -Alias (byte) makecharset::i#2 = (byte) makecharset::i#6 -Alias (byte*) makecharset::charset#14 = (byte*) makecharset::charset#4 (byte*) makecharset::charset#5 (byte*) makecharset::charset#15 (byte*) makecharset::charset#17 -Alias (byte) makecharset::s#5 = (byte) makecharset::s#6 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#36 (byte*) print_char_cursor#31 -Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#37 (byte*) print_line_cursor#31 (byte*) print_line_cursor#29 (byte*) print_line_cursor#32 -Alias (byte) makecharset::s#1 = (byte) makecharset::s#2 (byte) makecharset::s#3 (byte) makecharset::s#8 (byte) makecharset::s#7 -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#6 (byte) makecharset::ii#5 (byte) makecharset::ii#4 -Alias (byte) makecharset::b#2 = (byte) makecharset::b#7 (byte) makecharset::b#4 (byte) makecharset::b#5 (byte) makecharset::b#3 -Alias (word) makecharset::c#13 = (word) makecharset::c#15 (word) makecharset::c#8 (word) makecharset::c#14 (word) makecharset::c#5 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#9 (byte) makecharset::i#4 (byte) makecharset::i#8 (byte) makecharset::i#7 -Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#9 (byte*) makecharset::charset#2 (byte*) makecharset::charset#7 (byte*) makecharset::charset#6 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#40 (byte*) print_char_cursor#44 (byte*) print_char_cursor#43 -Alias (byte*) print_line_cursor#34 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#35 (byte*) print_line_cursor#39 (byte*) print_line_cursor#38 -Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#8 -Alias (byte) c1A#16 = (byte) c1A#2 -Alias (byte) c1B#16 = (byte) c1B#2 -Alias (byte) c2A#17 = (byte) c2A#2 -Alias (byte) c2B#17 = (byte) c2B#2 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#19 -Alias (byte) c1A#11 = (byte) c1A#5 -Alias (byte) c1B#11 = (byte) c1B#5 -Alias (byte) c2A#11 = (byte) c2A#5 -Alias (byte) c2B#11 = (byte) c2B#5 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#24 print_char_cursor#32 print_screen#9 print_line_cursor#18 print_char_cursor#25 print_screen#8 +Alias print_char_cursor#1 = print_char_cursor#12 print_char_cursor#2 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#3 print_line_cursor#8 print_char_cursor#13 print_line_cursor#2 print_char_cursor#4 +Alias sid_rnd::return#0 = sid_rnd::return#3 sid_rnd::return#1 +Alias print_line_cursor#14 = print_line_cursor#19 +Alias print_char_cursor#21 = print_char_cursor#26 +Alias print_screen#5 = print_screen#6 +Alias c1A#17 = c1A#29 c1A#30 c1A#28 c1A#24 c1A#21 +Alias c1B#17 = c1B#29 c1B#30 c1B#28 c1B#24 c1B#21 +Alias c2A#18 = c2A#29 c2A#30 c2A#28 c2A#25 c2A#23 +Alias c2B#18 = c2B#29 c2B#30 c2B#28 c2B#25 c2B#23 +Alias print_line_cursor#21 = print_line_cursor#3 print_line_cursor#9 print_line_cursor#30 print_line_cursor#26 +Alias print_char_cursor#14 = print_char_cursor#5 print_char_cursor#37 print_char_cursor#34 print_char_cursor#28 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias c1A#1 = c1A#12 c1A#13 c1A#7 +Alias c1B#1 = c1B#12 c1B#13 c1B#7 +Alias c2A#1 = c2A#12 c2A#13 c2A#7 +Alias c2B#1 = c2B#12 c2B#13 c2B#7 +Alias print_line_cursor#10 = print_line_cursor#27 print_line_cursor#15 print_line_cursor#20 print_line_cursor#4 +Alias print_char_cursor#15 = print_char_cursor#35 print_char_cursor#22 print_char_cursor#27 print_char_cursor#6 +Alias c1A#0 = c1A#6 +Alias c1B#0 = c1B#6 +Alias c2A#0 = c2A#6 +Alias c2B#0 = c2B#6 +Alias doplasma::c1a#2 = doplasma::c1a#3 +Alias doplasma::c1b#2 = doplasma::c1b#3 +Alias doplasma::yprev#2 = doplasma::yprev#3 +Alias doplasma::i#2 = doplasma::i#3 +Alias c1A#14 = c1A#18 c1A#9 +Alias c1B#14 = c1B#18 c1B#9 +Alias c2A#14 = c2A#20 c2A#8 +Alias c2B#14 = c2B#20 c2B#8 +Alias doplasma::screen#10 = doplasma::screen#12 doplasma::screen#8 +Alias doplasma::yval#0 = doplasma::$1 doplasma::yprev#1 +Alias doplasma::c2a#2 = doplasma::c2a#3 +Alias doplasma::c2b#2 = doplasma::c2b#3 +Alias doplasma::i1#2 = doplasma::i1#3 +Alias c2A#15 = c2A#21 c2A#9 +Alias c2B#15 = c2B#21 c2B#9 +Alias c1A#20 = c1A#25 c1A#22 +Alias c1B#20 = c1B#25 c1B#22 +Alias doplasma::screen#6 = doplasma::screen#9 doplasma::screen#7 +Alias doplasma::i2#2 = doplasma::i2#3 +Alias doplasma::screen#3 = doplasma::screen#4 +Alias c1A#10 = c1A#26 c1A#15 c1A#4 +Alias c1B#10 = c1B#26 c1B#15 c1B#4 +Alias c2A#10 = c2A#26 c2A#16 c2A#4 +Alias c2B#10 = c2B#26 c2B#16 c2B#4 +Alias doplasma::val#2 = doplasma::val#3 +Alias doplasma::ii#2 = doplasma::ii#3 +Alias doplasma::screen#1 = doplasma::screen#2 doplasma::screen#5 +Alias doplasma::i2#4 = doplasma::i2#6 doplasma::i2#5 +Alias c1A#19 = c1A#27 c1A#23 +Alias c1B#19 = c1B#27 c1B#23 +Alias c2A#22 = c2A#27 c2A#24 +Alias c2B#22 = c2B#27 c2B#24 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#16 = print_line_cursor#22 +Alias print_char_cursor#23 = print_char_cursor#29 +Alias makecharset::charset#12 = makecharset::charset#13 makecharset::charset#16 +Alias print_line_cursor#11 = print_line_cursor#5 +Alias print_char_cursor#16 = print_char_cursor#7 +Alias makecharset::c#2 = makecharset::c#3 +Alias makecharset::charset#10 = makecharset::charset#8 +Alias print_char_cursor#18 = print_char_cursor#38 print_char_cursor#24 print_char_cursor#9 +Alias print_line_cursor#12 = print_line_cursor#33 print_line_cursor#17 print_line_cursor#6 +Alias makecharset::c#11 = makecharset::c#7 makecharset::c#4 makecharset::c#12 makecharset::c#9 +Alias makecharset::i#2 = makecharset::i#6 +Alias makecharset::charset#14 = makecharset::charset#4 makecharset::charset#5 makecharset::charset#15 makecharset::charset#17 +Alias makecharset::s#5 = makecharset::s#6 +Alias print_char_cursor#20 = print_char_cursor#42 print_char_cursor#36 print_char_cursor#31 +Alias print_line_cursor#28 = print_line_cursor#37 print_line_cursor#31 print_line_cursor#29 print_line_cursor#32 +Alias makecharset::s#1 = makecharset::s#2 makecharset::s#3 makecharset::s#8 makecharset::s#7 +Alias makecharset::ii#2 = makecharset::ii#6 makecharset::ii#5 makecharset::ii#4 +Alias makecharset::b#2 = makecharset::b#7 makecharset::b#4 makecharset::b#5 makecharset::b#3 +Alias makecharset::c#13 = makecharset::c#15 makecharset::c#8 makecharset::c#14 makecharset::c#5 +Alias makecharset::i#3 = makecharset::i#9 makecharset::i#4 makecharset::i#8 makecharset::i#7 +Alias makecharset::charset#1 = makecharset::charset#9 makecharset::charset#2 makecharset::charset#7 makecharset::charset#6 +Alias print_char_cursor#39 = print_char_cursor#45 print_char_cursor#40 print_char_cursor#44 print_char_cursor#43 +Alias print_line_cursor#34 = print_line_cursor#40 print_line_cursor#35 print_line_cursor#39 print_line_cursor#38 +Alias sid_rnd::return#2 = sid_rnd::return#4 +Alias print_char_cursor#17 = print_char_cursor#8 +Alias c1A#16 = c1A#2 +Alias c1B#16 = c1B#2 +Alias c2A#17 = c2A#2 +Alias c2B#17 = c2B#2 +Alias print_line_cursor#13 = print_line_cursor#7 +Alias print_char_cursor#10 = print_char_cursor#19 +Alias c1A#11 = c1A#5 +Alias c1B#11 = c1B#5 +Alias c2A#11 = c2A#5 +Alias c2B#11 = c2B#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#3 -Alias (word) makecharset::c#10 = (word) makecharset::c#13 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#5 -Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#3 -Alias (byte) makecharset::s#1 = (byte) makecharset::s#4 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#34 = (byte*) print_line_cursor#36 -Alias (word) makecharset::c#11 = (word) makecharset::c#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#28 -Alias (byte*) makecharset::charset#11 = (byte*) makecharset::charset#14 +Alias makecharset::ii#2 = makecharset::ii#3 +Alias makecharset::c#10 = makecharset::c#13 +Alias makecharset::i#3 = makecharset::i#5 +Alias makecharset::charset#1 = makecharset::charset#3 +Alias makecharset::s#1 = makecharset::s#4 +Alias print_char_cursor#39 = print_char_cursor#41 +Alias print_line_cursor#34 = print_line_cursor#36 +Alias makecharset::c#11 = makecharset::c#6 +Alias print_line_cursor#23 = print_line_cursor#28 +Alias makecharset::charset#11 = makecharset::charset#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1682,7 +1682,7 @@ Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16 tails: doplasma::@17 blocks: doplasma::@17 doplasma::@16 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#0 = (byte) doplasma::val#2 +Alias doplasma::val#0 = doplasma::val#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#2 (const byte) doplasma::ii#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1705,7 +1705,7 @@ Constant (const byte*) doplasma::$8 = doplasma::screen#0 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_1 tails: doplasma::@17_1 blocks: doplasma::@17_1 doplasma::@16_1 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#1 = (byte) doplasma::val#4 +Alias doplasma::val#1 = doplasma::val#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#4 (const byte) doplasma::ii#1 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1723,7 +1723,7 @@ Constant (const byte*) doplasma::$10 = doplasma::screen#0+doplasma::$9 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_2 tails: doplasma::@17_2 blocks: doplasma::@17_2 doplasma::@16_2 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#5 = (byte) doplasma::val#6 +Alias doplasma::val#5 = doplasma::val#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#6 (const byte) doplasma::ii#5 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1741,7 +1741,7 @@ Constant (const byte*) doplasma::$12 = doplasma::screen#0+doplasma::$11 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_3 tails: doplasma::@17_3 blocks: doplasma::@17_3 doplasma::@16_3 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#7 = (byte) doplasma::val#8 +Alias doplasma::val#7 = doplasma::val#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#8 (const byte) doplasma::ii#7 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1759,7 +1759,7 @@ Constant (const byte*) doplasma::$14 = doplasma::screen#0+doplasma::$13 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_4 tails: doplasma::@17_4 blocks: doplasma::@17_4 doplasma::@16_4 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#10 = (byte) doplasma::val#9 +Alias doplasma::val#10 = doplasma::val#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#10 (const byte) doplasma::ii#9 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1777,7 +1777,7 @@ Constant (const byte*) doplasma::$16 = doplasma::screen#0+doplasma::$15 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_5 tails: doplasma::@17_5 blocks: doplasma::@17_5 doplasma::@16_5 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#11 = (byte) doplasma::val#12 +Alias doplasma::val#11 = doplasma::val#12 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#12 (const byte) doplasma::ii#11 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1795,7 +1795,7 @@ Constant (const byte*) doplasma::$18 = doplasma::screen#0+doplasma::$17 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_6 tails: doplasma::@17_6 blocks: doplasma::@17_6 doplasma::@16_6 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#13 = (byte) doplasma::val#14 +Alias doplasma::val#13 = doplasma::val#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#14 (const byte) doplasma::ii#13 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1813,7 +1813,7 @@ Constant (const byte*) doplasma::$20 = doplasma::screen#0+doplasma::$19 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_7 tails: doplasma::@17_7 blocks: doplasma::@17_7 doplasma::@16_7 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#15 = (byte) doplasma::val#16 +Alias doplasma::val#15 = doplasma::val#16 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#16 (const byte) doplasma::ii#15 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1831,7 +1831,7 @@ Constant (const byte*) doplasma::$22 = doplasma::screen#0+doplasma::$21 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_8 tails: doplasma::@17_8 blocks: doplasma::@17_8 doplasma::@16_8 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#17 = (byte) doplasma::val#18 +Alias doplasma::val#17 = doplasma::val#18 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#18 (const byte) doplasma::ii#17 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1849,7 +1849,7 @@ Constant (const byte*) doplasma::$24 = doplasma::screen#0+doplasma::$23 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_9 tails: doplasma::@17_9 blocks: doplasma::@17_9 doplasma::@16_9 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#19 = (byte) doplasma::val#20 +Alias doplasma::val#19 = doplasma::val#20 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#20 (const byte) doplasma::ii#19 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1867,7 +1867,7 @@ Constant (const byte*) doplasma::$26 = doplasma::screen#0+doplasma::$25 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_10 tails: doplasma::@17_10 blocks: doplasma::@17_10 doplasma::@16_10 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#21 = (byte) doplasma::val#22 +Alias doplasma::val#21 = doplasma::val#22 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#22 (const byte) doplasma::ii#21 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1885,7 +1885,7 @@ Constant (const byte*) doplasma::$28 = doplasma::screen#0+doplasma::$27 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_11 tails: doplasma::@17_11 blocks: doplasma::@17_11 doplasma::@16_11 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#23 = (byte) doplasma::val#24 +Alias doplasma::val#23 = doplasma::val#24 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#24 (const byte) doplasma::ii#23 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1903,7 +1903,7 @@ Constant (const byte*) doplasma::$30 = doplasma::screen#0+doplasma::$29 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_12 tails: doplasma::@17_12 blocks: doplasma::@17_12 doplasma::@16_12 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#25 = (byte) doplasma::val#26 +Alias doplasma::val#25 = doplasma::val#26 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#26 (const byte) doplasma::ii#25 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1921,7 +1921,7 @@ Constant (const byte*) doplasma::$32 = doplasma::screen#0+doplasma::$31 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_13 tails: doplasma::@17_13 blocks: doplasma::@17_13 doplasma::@16_13 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#27 = (byte) doplasma::val#28 +Alias doplasma::val#27 = doplasma::val#28 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#28 (const byte) doplasma::ii#27 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1939,7 +1939,7 @@ Constant (const byte*) doplasma::$34 = doplasma::screen#0+doplasma::$33 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_14 tails: doplasma::@17_14 blocks: doplasma::@17_14 doplasma::@16_14 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#29 = (byte) doplasma::val#30 +Alias doplasma::val#29 = doplasma::val#30 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#30 (const byte) doplasma::ii#29 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1957,7 +1957,7 @@ Constant (const byte*) doplasma::$36 = doplasma::screen#0+doplasma::$35 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_15 tails: doplasma::@17_15 blocks: doplasma::@17_15 doplasma::@16_15 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#31 = (byte) doplasma::val#32 +Alias doplasma::val#31 = doplasma::val#32 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#32 (const byte) doplasma::ii#31 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1975,7 +1975,7 @@ Constant (const byte*) doplasma::$38 = doplasma::screen#0+doplasma::$37 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_16 tails: doplasma::@17_16 blocks: doplasma::@17_16 doplasma::@16_16 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#33 = (byte) doplasma::val#34 +Alias doplasma::val#33 = doplasma::val#34 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#34 (const byte) doplasma::ii#33 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1993,7 +1993,7 @@ Constant (const byte*) doplasma::$40 = doplasma::screen#0+doplasma::$39 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_17 tails: doplasma::@17_17 blocks: doplasma::@17_17 doplasma::@16_17 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#35 = (byte) doplasma::val#36 +Alias doplasma::val#35 = doplasma::val#36 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#36 (const byte) doplasma::ii#35 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2011,7 +2011,7 @@ Constant (const byte*) doplasma::$42 = doplasma::screen#0+doplasma::$41 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_18 tails: doplasma::@17_18 blocks: doplasma::@17_18 doplasma::@16_18 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#37 = (byte) doplasma::val#38 +Alias doplasma::val#37 = doplasma::val#38 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#38 (const byte) doplasma::ii#37 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2029,7 +2029,7 @@ Constant (const byte*) doplasma::$44 = doplasma::screen#0+doplasma::$43 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_19 tails: doplasma::@17_19 blocks: doplasma::@17_19 doplasma::@16_19 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#39 = (byte) doplasma::val#40 +Alias doplasma::val#39 = doplasma::val#40 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#40 (const byte) doplasma::ii#39 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2047,7 +2047,7 @@ Constant (const byte*) doplasma::$46 = doplasma::screen#0+doplasma::$45 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_20 tails: doplasma::@17_20 blocks: doplasma::@17_20 doplasma::@16_20 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#41 = (byte) doplasma::val#42 +Alias doplasma::val#41 = doplasma::val#42 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#42 (const byte) doplasma::ii#41 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2065,7 +2065,7 @@ Constant (const byte*) doplasma::$48 = doplasma::screen#0+doplasma::$47 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_21 tails: doplasma::@17_21 blocks: doplasma::@17_21 doplasma::@16_21 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#43 = (byte) doplasma::val#44 +Alias doplasma::val#43 = doplasma::val#44 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#44 (const byte) doplasma::ii#43 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2083,7 +2083,7 @@ Constant (const byte*) doplasma::$50 = doplasma::screen#0+doplasma::$49 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_22 tails: doplasma::@17_22 blocks: doplasma::@17_22 doplasma::@16_22 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#45 = (byte) doplasma::val#46 +Alias doplasma::val#45 = doplasma::val#46 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#46 (const byte) doplasma::ii#45 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2101,7 +2101,7 @@ Constant (const byte*) doplasma::$52 = doplasma::screen#0+doplasma::$51 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_23 tails: doplasma::@17_23 blocks: doplasma::@17_23 doplasma::@16_23 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#47 = (byte) doplasma::val#48 +Alias doplasma::val#47 = doplasma::val#48 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#48 (const byte) doplasma::ii#47 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2119,7 +2119,7 @@ Constant (const byte*) doplasma::$54 = doplasma::screen#0+doplasma::$53 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_24 tails: doplasma::@17_24 blocks: doplasma::@17_24 doplasma::@16_24 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#49 = (byte) doplasma::val#50 +Alias doplasma::val#49 = doplasma::val#50 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#50 (const byte) doplasma::ii#49 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2137,7 +2137,7 @@ Constant (const byte*) doplasma::$56 = doplasma::screen#0+doplasma::$55 Successful SSA optimization Pass2ConstantIdentification Unrolling loop Loop head: doplasma::@16_25 tails: doplasma::@17_25 blocks: doplasma::@17_25 doplasma::@16_25 Successful SSA optimization Pass2LoopUnroll -Alias (byte) doplasma::val#51 = (byte) doplasma::val#52 +Alias doplasma::val#51 = doplasma::val#52 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) doplasma::ii#52 (const byte) doplasma::ii#51 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2894,115 +2894,115 @@ sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init VARIABLE REGISTER WEIGHTS (byte) c1A -(byte) c1A#1 1.1538461538461537 -(byte) c1A#3 0.18840579710144925 +(byte) c1A#1 161.76923076923077 +(byte) c1A#3 15.971014492753623 (byte) c1B -(byte) c1B#1 1.0714285714285714 -(byte) c1B#3 0.1911764705882353 +(byte) c1B#1 150.21428571428572 +(byte) c1B#3 16.205882352941178 (byte) c2A -(byte) c2A#1 0.625 -(byte) c2A#3 0.22413793103448276 +(byte) c2A#1 87.625 +(byte) c2A#3 19.0 (byte) c2B -(byte) c2B#1 0.6 -(byte) c2B#3 0.22807017543859648 +(byte) c2B#1 84.12 +(byte) c2B#3 19.333333333333336 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 202.0 -(byte~) doplasma::$4 202.0 +(byte~) doplasma::$2 200002.0 +(byte~) doplasma::$4 200002.0 (byte) doplasma::c1a -(byte) doplasma::c1a#0 2.0 -(byte) doplasma::c1a#1 50.5 -(byte) doplasma::c1a#2 61.0 +(byte) doplasma::c1a#0 1001.0 +(byte) doplasma::c1a#1 50000.5 +(byte) doplasma::c1a#2 60200.8 (byte) doplasma::c1b -(byte) doplasma::c1b#0 4.0 -(byte) doplasma::c1b#1 67.33333333333333 -(byte) doplasma::c1b#2 50.83333333333333 +(byte) doplasma::c1b#0 2002.0 +(byte) doplasma::c1b#1 66667.33333333333 +(byte) doplasma::c1b#2 50167.33333333333 (byte) doplasma::c2a -(byte) doplasma::c2a#0 2.0 -(byte) doplasma::c2a#1 67.33333333333333 -(byte) doplasma::c2a#2 76.25 +(byte) doplasma::c2a#0 1001.0 +(byte) doplasma::c2a#1 66667.33333333333 +(byte) doplasma::c2a#2 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 4.0 -(byte) doplasma::c2b#1 101.0 -(byte) doplasma::c2b#2 61.0 +(byte) doplasma::c2b#0 2002.0 +(byte) doplasma::c2b#1 100001.0 +(byte) doplasma::c2b#2 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 101.0 -(byte) doplasma::i#2 57.714285714285715 +(byte) doplasma::i#1 100001.0 +(byte) doplasma::i#2 57143.42857142857 (byte) doplasma::i1 -(byte) doplasma::i1#1 202.0 -(byte) doplasma::i1#2 67.33333333333333 +(byte) doplasma::i1#1 200002.0 +(byte) doplasma::i1#2 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 202.0 -(byte) doplasma::i2#2 55.26415094339627 +(byte) doplasma::i2#1 200002.0 +(byte) doplasma::i2#2 54717.52830188676 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 202.0 -(byte) doplasma::val#1 151.5 -(byte) doplasma::val#10 151.5 -(byte) doplasma::val#11 151.5 -(byte) doplasma::val#13 151.5 -(byte) doplasma::val#15 151.5 -(byte) doplasma::val#17 151.5 -(byte) doplasma::val#19 151.5 -(byte) doplasma::val#21 151.5 -(byte) doplasma::val#23 151.5 -(byte) doplasma::val#25 151.5 -(byte) doplasma::val#27 151.5 -(byte) doplasma::val#29 151.5 -(byte) doplasma::val#31 151.5 -(byte) doplasma::val#33 151.5 -(byte) doplasma::val#35 151.5 -(byte) doplasma::val#37 151.5 -(byte) doplasma::val#39 151.5 -(byte) doplasma::val#41 151.5 -(byte) doplasma::val#43 151.5 -(byte) doplasma::val#45 151.5 -(byte) doplasma::val#47 151.5 -(byte) doplasma::val#49 151.5 -(byte) doplasma::val#5 151.5 -(byte) doplasma::val#51 202.0 -(byte) doplasma::val#7 151.5 +(byte) doplasma::val#0 200002.0 +(byte) doplasma::val#1 150001.5 +(byte) doplasma::val#10 150001.5 +(byte) doplasma::val#11 150001.5 +(byte) doplasma::val#13 150001.5 +(byte) doplasma::val#15 150001.5 +(byte) doplasma::val#17 150001.5 +(byte) doplasma::val#19 150001.5 +(byte) doplasma::val#21 150001.5 +(byte) doplasma::val#23 150001.5 +(byte) doplasma::val#25 150001.5 +(byte) doplasma::val#27 150001.5 +(byte) doplasma::val#29 150001.5 +(byte) doplasma::val#31 150001.5 +(byte) doplasma::val#33 150001.5 +(byte) doplasma::val#35 150001.5 +(byte) doplasma::val#37 150001.5 +(byte) doplasma::val#39 150001.5 +(byte) doplasma::val#41 150001.5 +(byte) doplasma::val#43 150001.5 +(byte) doplasma::val#45 150001.5 +(byte) doplasma::val#47 150001.5 +(byte) doplasma::val#49 150001.5 +(byte) doplasma::val#5 150001.5 +(byte) doplasma::val#51 200002.0 +(byte) doplasma::val#7 150001.5 (byte) doplasma::yprev -(byte) doplasma::yprev#2 67.33333333333333 -(byte) doplasma::yprev#4 202.0 +(byte) doplasma::yprev#2 66667.33333333333 +(byte) doplasma::yprev#4 200002.0 (byte) doplasma::yval -(byte) doplasma::yval#0 50.5 +(byte) doplasma::yval#0 50000.5 (void()) main() (byte*) main::col -(byte*) main::col#1 16.5 -(byte*) main::col#2 16.5 +(byte*) main::col#1 151.5 +(byte*) main::col#2 151.5 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 202.0 -(word~) makecharset::$11 202.0 -(byte~) makecharset::$12 22.0 -(byte*~) makecharset::$16 202.0 -(byte~) makecharset::$3 22.0 -(byte~) makecharset::$6 2002.0 -(byte~) makecharset::$7 2002.0 +(word~) makecharset::$10 20002.0 +(word~) makecharset::$11 20002.0 +(byte~) makecharset::$12 2002.0 +(byte*~) makecharset::$16 20002.0 +(byte~) makecharset::$3 2002.0 +(byte~) makecharset::$6 200002.0 +(byte~) makecharset::$7 200002.0 (byte) makecharset::b -(byte) makecharset::b#1 2002.0 -(byte) makecharset::b#2 282.1818181818182 -(byte) makecharset::b#6 1501.5 +(byte) makecharset::b#1 200002.0 +(byte) makecharset::b#2 28182.181818181816 +(byte) makecharset::b#6 150001.5 (word) makecharset::c -(word) makecharset::c#1 22.0 -(word) makecharset::c#2 5.777777777777778 +(word) makecharset::c#1 2002.0 +(word) makecharset::c#2 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 202.0 -(byte) makecharset::i#2 23.764705882352942 +(byte) makecharset::i#1 20002.0 +(byte) makecharset::i#2 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 2002.0 -(byte) makecharset::ii#2 400.4 +(byte) makecharset::ii#1 200002.0 +(byte) makecharset::ii#2 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 53.26315789473684 +(byte) makecharset::s#0 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 133334.66666666666 (byte*) memset::end (word) memset::num (void*) memset::return @@ -3010,16 +3010,16 @@ VARIABLE REGISTER WEIGHTS (void()) print_char((byte) print_char::ch) (byte) print_char::ch (byte*) print_char_cursor -(byte*) print_char_cursor#1 4.333333333333333 -(byte*) print_char_cursor#18 1.0 -(byte*) print_char_cursor#30 16.5 +(byte*) print_char_cursor#1 3667.333333333333 +(byte*) print_char_cursor#18 846.3076923076923 +(byte*) print_char_cursor#30 1501.5 (void()) print_cls() (byte*) print_line_cursor (byte*) print_screen (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 334.33333333333337 -(byte) sid_rnd::return#2 2002.0 +(byte) sid_rnd::return#0 366667.3333333334 +(byte) sid_rnd::return#2 200002.0 (void()) sid_rnd_init() Initial phi equivalence classes @@ -4187,131 +4187,129 @@ SINTABLE: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ c1B#1 c1B#3 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ c2A#1 c2A#3 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ c2B#1 c2B#3 ] -Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a +Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ c1A#1 c1A#3 ] -Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a +Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] { } ) always clobbers reg byte a +Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] -Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ) always clobbers reg byte a -Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ) always clobbers reg byte a -Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a -Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ) always clobbers reg byte a -Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ) always clobbers reg byte a -Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ) always clobbers reg byte a -Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ) always clobbers reg byte a -Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ) always clobbers reg byte a -Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ) always clobbers reg byte a -Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ) always clobbers reg byte a -Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ) always clobbers reg byte a -Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ) always clobbers reg byte a -Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ) always clobbers reg byte a -Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ) always clobbers reg byte a -Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ) always clobbers reg byte a -Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ) always clobbers reg byte a -Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ) always clobbers reg byte a -Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ) always clobbers reg byte a -Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ) always clobbers reg byte a -Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ) always clobbers reg byte a -Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ) always clobbers reg byte a -Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ) always clobbers reg byte a -Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ) always clobbers reg byte a -Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ) always clobbers reg byte a -Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ) always clobbers reg byte a +Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] { } ) always clobbers reg byte a +Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] { } ) always clobbers reg byte a +Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] { } ) always clobbers reg byte a +Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] { } ) always clobbers reg byte a +Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] { } ) always clobbers reg byte a +Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] { } ) always clobbers reg byte a +Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] { } ) always clobbers reg byte a +Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] { } ) always clobbers reg byte a +Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] { } ) always clobbers reg byte a +Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] { } ) always clobbers reg byte a +Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] { } ) always clobbers reg byte a +Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] { } ) always clobbers reg byte a +Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] { } ) always clobbers reg byte a +Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] { } ) always clobbers reg byte a +Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] { } ) always clobbers reg byte a +Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] { } ) always clobbers reg byte a +Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] { } ) always clobbers reg byte a +Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] { } ) always clobbers reg byte a +Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] { } ) always clobbers reg byte a +Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] { } ) always clobbers reg byte a +Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] { } ) always clobbers reg byte a +Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] { } ) always clobbers reg byte a +Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] { } ) always clobbers reg byte a +Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] { } ) always clobbers reg byte a +Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { } ) always clobbers reg byte a +Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { } ) always clobbers reg byte a +Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] -Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ) always clobbers reg byte a +Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ doplasma::yval#0 ] -Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a -Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a -Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a -Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a -Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a +Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] { } ) always clobbers reg byte a +Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] { } ) always clobbers reg byte a +Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:55 [ makecharset::s#0 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] -Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y +Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:55 [ makecharset::s#0 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] -Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a +Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ] -Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a -Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a -Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a -Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a -Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ) always clobbers reg byte a -Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ) always clobbers reg byte a -Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a -Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ) always clobbers reg byte a -Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ) always clobbers reg byte a -Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ) always clobbers reg byte a -Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ) always clobbers reg byte a -Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ) always clobbers reg byte a -Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ) always clobbers reg byte a -Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ) always clobbers reg byte a -Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ) always clobbers reg byte a -Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ) always clobbers reg byte a -Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ) always clobbers reg byte a -Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ) always clobbers reg byte a -Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ) always clobbers reg byte a -Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ) always clobbers reg byte a -Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ) always clobbers reg byte a -Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ) always clobbers reg byte a -Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ) always clobbers reg byte a -Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ) always clobbers reg byte a -Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ) always clobbers reg byte a -Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ) always clobbers reg byte a -Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ) always clobbers reg byte a -Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ) always clobbers reg byte a -Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ) always clobbers reg byte a -Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ) always clobbers reg byte a -Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ) always clobbers reg byte a -Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a -Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a -Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a -Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a -Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a -Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y -Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a -Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a -Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a +Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] { } ) always clobbers reg byte a +Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] { } ) always clobbers reg byte a +Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] { } ) always clobbers reg byte a +Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] { } ) always clobbers reg byte a +Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] { } ) always clobbers reg byte a +Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] { } ) always clobbers reg byte a +Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] { } ) always clobbers reg byte a +Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] { } ) always clobbers reg byte a +Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] { } ) always clobbers reg byte a +Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] { } ) always clobbers reg byte a +Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] { } ) always clobbers reg byte a +Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] { } ) always clobbers reg byte a +Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] { } ) always clobbers reg byte a +Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] { } ) always clobbers reg byte a +Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] { } ) always clobbers reg byte a +Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] { } ) always clobbers reg byte a +Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] { } ) always clobbers reg byte a +Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] { } ) always clobbers reg byte a +Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] { } ) always clobbers reg byte a +Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] { } ) always clobbers reg byte a +Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] { } ) always clobbers reg byte a +Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] { } ) always clobbers reg byte a +Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] { } ) always clobbers reg byte a +Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] { } ) always clobbers reg byte a +Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] { } ) always clobbers reg byte a +Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] { } ) always clobbers reg byte a +Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] { } ) always clobbers reg byte a +Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] { } ) always clobbers reg byte a +Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] { } ) always clobbers reg byte a +Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] { } ) always clobbers reg byte a +Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { } ) always clobbers reg byte a +Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { } ) always clobbers reg byte a +Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] { } ) always clobbers reg byte a +Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] { } ) always clobbers reg byte a +Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] { } ) always clobbers reg byte a +Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] { } ) always clobbers reg byte a +Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] { } ) always clobbers reg byte a +Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] { } ) always clobbers reg byte a +Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] { } ) always clobbers reg byte a +Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::col#2 main::col#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ c1A#1 c1A#3 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ c1B#1 c1B#3 ] : zp[1]:5 , reg byte x , reg byte y , @@ -4372,12 +4370,12 @@ Potential registers zp[1]:65 [ makecharset::$7 ] : zp[1]:65 , reg byte a , reg b Potential registers zp[1]:66 [ sid_rnd::return#0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makecharset] 3,785.68: zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 2,402.4: zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ] 2,002: zp[1]:64 [ makecharset::$6 ] 2,002: zp[1]:65 [ makecharset::$7 ] 225.76: zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] 202: zp[2]:57 [ makecharset::$10 ] 202: zp[2]:59 [ makecharset::$11 ] 202: zp[2]:61 [ makecharset::$16 ] 53.26: zp[1]:55 [ makecharset::s#0 ] 27.78: zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] 22: zp[1]:54 [ makecharset::$3 ] 22: zp[1]:56 [ makecharset::$12 ] -Uplift Scope [doplasma] 269.33: zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] 269.33: zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] 257.26: zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] 202: zp[1]:25 [ doplasma::val#0 ] 202: zp[1]:50 [ doplasma::val#51 ] 202: zp[1]:51 [ doplasma::$4 ] 202: zp[1]:53 [ doplasma::$2 ] 166: zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 158.71: zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 151.5: zp[1]:26 [ doplasma::val#1 ] 151.5: zp[1]:27 [ doplasma::val#5 ] 151.5: zp[1]:28 [ doplasma::val#7 ] 151.5: zp[1]:29 [ doplasma::val#10 ] 151.5: zp[1]:30 [ doplasma::val#11 ] 151.5: zp[1]:31 [ doplasma::val#13 ] 151.5: zp[1]:32 [ doplasma::val#15 ] 151.5: zp[1]:33 [ doplasma::val#17 ] 151.5: zp[1]:34 [ doplasma::val#19 ] 151.5: zp[1]:35 [ doplasma::val#21 ] 151.5: zp[1]:36 [ doplasma::val#23 ] 151.5: zp[1]:37 [ doplasma::val#25 ] 151.5: zp[1]:38 [ doplasma::val#27 ] 151.5: zp[1]:39 [ doplasma::val#29 ] 151.5: zp[1]:40 [ doplasma::val#31 ] 151.5: zp[1]:41 [ doplasma::val#33 ] 151.5: zp[1]:42 [ doplasma::val#35 ] 151.5: zp[1]:43 [ doplasma::val#37 ] 151.5: zp[1]:44 [ doplasma::val#39 ] 151.5: zp[1]:45 [ doplasma::val#41 ] 151.5: zp[1]:46 [ doplasma::val#43 ] 151.5: zp[1]:47 [ doplasma::val#45 ] 151.5: zp[1]:48 [ doplasma::val#47 ] 151.5: zp[1]:49 [ doplasma::val#49 ] 145.58: zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 122.17: zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 113.5: zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 50.5: zp[1]:52 [ doplasma::yval#0 ] -Uplift Scope [sid_rnd] 2,002: zp[1]:63 [ sid_rnd::return#2 ] 334.33: zp[1]:66 [ sid_rnd::return#0 ] -Uplift Scope [memset] 36.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [main] 33: zp[2]:2 [ main::col#2 main::col#1 ] -Uplift Scope [] 21.83: zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] 1.34: zp[1]:4 [ c1A#1 c1A#3 ] 1.26: zp[1]:5 [ c1B#1 c1B#3 ] 0.85: zp[1]:6 [ c2A#1 c2A#3 ] 0.83: zp[1]:7 [ c2B#1 c2B#3 ] +Uplift Scope [doplasma] 266,669.33: zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] 266,669.33: zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] 254,719.53: zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] 200,002: zp[1]:25 [ doplasma::val#0 ] 200,002: zp[1]:50 [ doplasma::val#51 ] 200,002: zp[1]:51 [ doplasma::$4 ] 200,002: zp[1]:53 [ doplasma::$2 ] 162,203.8: zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 157,144.43: zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 150,001.5: zp[1]:26 [ doplasma::val#1 ] 150,001.5: zp[1]:27 [ doplasma::val#5 ] 150,001.5: zp[1]:28 [ doplasma::val#7 ] 150,001.5: zp[1]:29 [ doplasma::val#10 ] 150,001.5: zp[1]:30 [ doplasma::val#11 ] 150,001.5: zp[1]:31 [ doplasma::val#13 ] 150,001.5: zp[1]:32 [ doplasma::val#15 ] 150,001.5: zp[1]:33 [ doplasma::val#17 ] 150,001.5: zp[1]:34 [ doplasma::val#19 ] 150,001.5: zp[1]:35 [ doplasma::val#21 ] 150,001.5: zp[1]:36 [ doplasma::val#23 ] 150,001.5: zp[1]:37 [ doplasma::val#25 ] 150,001.5: zp[1]:38 [ doplasma::val#27 ] 150,001.5: zp[1]:39 [ doplasma::val#29 ] 150,001.5: zp[1]:40 [ doplasma::val#31 ] 150,001.5: zp[1]:41 [ doplasma::val#33 ] 150,001.5: zp[1]:42 [ doplasma::val#35 ] 150,001.5: zp[1]:43 [ doplasma::val#37 ] 150,001.5: zp[1]:44 [ doplasma::val#39 ] 150,001.5: zp[1]:45 [ doplasma::val#41 ] 150,001.5: zp[1]:46 [ doplasma::val#43 ] 150,001.5: zp[1]:47 [ doplasma::val#45 ] 150,001.5: zp[1]:48 [ doplasma::val#47 ] 150,001.5: zp[1]:49 [ doplasma::val#49 ] 142,919.33: zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 118,836.67: zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 111,202.3: zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 50,000.5: zp[1]:52 [ doplasma::yval#0 ] +Uplift Scope [makecharset] 378,185.68: zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 240,002.4: zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ] 200,002: zp[1]:64 [ makecharset::$6 ] 200,002: zp[1]:65 [ makecharset::$7 ] 22,355.18: zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] 20,002: zp[2]:57 [ makecharset::$10 ] 20,002: zp[2]:59 [ makecharset::$11 ] 20,002: zp[2]:61 [ makecharset::$16 ] 5,315.89: zp[1]:55 [ makecharset::s#0 ] 2,557.78: zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] 2,002: zp[1]:54 [ makecharset::$3 ] 2,002: zp[1]:56 [ makecharset::$12 ] +Uplift Scope [sid_rnd] 366,667.33: zp[1]:66 [ sid_rnd::return#0 ] 200,002: zp[1]:63 [ sid_rnd::return#2 ] +Uplift Scope [memset] 333,336.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [] 6,015.14: zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] 177.74: zp[1]:4 [ c1A#1 c1A#3 ] 166.42: zp[1]:5 [ c1B#1 c1B#3 ] 106.62: zp[1]:6 [ c2A#1 c2A#3 ] 103.45: zp[1]:7 [ c2B#1 c2B#3 ] +Uplift Scope [main] 303: zp[2]:2 [ main::col#2 main::col#1 ] Uplift Scope [RADIX] Uplift Scope [print_char] Uplift Scope [print_cls] @@ -4385,24 +4383,20 @@ Uplift Scope [sid_rnd_init] Uplifting [makecharset] best 168084 combination reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$6 ] zp[1]:65 [ makecharset::$7 ] zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] zp[2]:57 [ makecharset::$10 ] zp[2]:59 [ makecharset::$11 ] zp[2]:61 [ makecharset::$16 ] zp[1]:55 [ makecharset::s#0 ] zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] zp[1]:54 [ makecharset::$3 ] zp[1]:56 [ makecharset::$12 ] Limited combination testing to 100 combinations of 9216 possible. -Uplifting [sid_rnd] best 159081 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [sid_rnd] best 159081 combination reg byte a [ sid_rnd::return#0 ] reg byte a [ sid_rnd::return#2 ] Uplifting [memset] best 159081 combination zp[2]:23 [ memset::dst#2 memset::dst#1 ] -Uplifting [main] best 159081 combination zp[2]:2 [ main::col#2 main::col#1 ] Uplifting [] best 159081 combination zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] zp[1]:4 [ c1A#1 c1A#3 ] zp[1]:5 [ c1B#1 c1B#3 ] zp[1]:6 [ c2A#1 c2A#3 ] zp[1]:7 [ c2B#1 c2B#3 ] +Uplifting [main] best 159081 combination zp[2]:2 [ main::col#2 main::col#1 ] Uplifting [RADIX] best 159081 combination Uplifting [print_char] best 159081 combination Uplifting [print_cls] best 159081 combination Uplifting [sid_rnd_init] best 159081 combination -Attempting to uplift remaining variables inzp[1]:65 [ makecharset::$7 ] -Uplifting [makecharset] best 159081 combination zp[1]:65 [ makecharset::$7 ] Attempting to uplift remaining variables inzp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] Uplifting [doplasma] best 158581 combination reg byte x [ doplasma::yprev#2 doplasma::yprev#4 ] Attempting to uplift remaining variables inzp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] Uplifting [doplasma] best 158581 combination zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] Attempting to uplift remaining variables inzp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] Uplifting [doplasma] best 149881 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] -Attempting to uplift remaining variables inzp[1]:20 [ makecharset::i#2 makecharset::i#1 ] -Uplifting [makecharset] best 149881 combination zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] Attempting to uplift remaining variables inzp[1]:25 [ doplasma::val#0 ] Uplifting [doplasma] best 149281 combination reg byte a [ doplasma::val#0 ] Attempting to uplift remaining variables inzp[1]:50 [ doplasma::val#51 ] @@ -4411,6 +4405,8 @@ Attempting to uplift remaining variables inzp[1]:51 [ doplasma::$4 ] Uplifting [doplasma] best 148081 combination reg byte a [ doplasma::$4 ] Attempting to uplift remaining variables inzp[1]:53 [ doplasma::$2 ] Uplifting [doplasma] best 147481 combination reg byte a [ doplasma::$2 ] +Attempting to uplift remaining variables inzp[1]:65 [ makecharset::$7 ] +Uplifting [makecharset] best 147481 combination zp[1]:65 [ makecharset::$7 ] Attempting to uplift remaining variables inzp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] Uplifting [doplasma] best 147481 combination zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] Attempting to uplift remaining variables inzp[1]:8 [ doplasma::i#2 doplasma::i#1 ] @@ -4469,22 +4465,24 @@ Attempting to uplift remaining variables inzp[1]:10 [ doplasma::c1b#2 doplasma:: Uplifting [doplasma] best 125881 combination zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] Attempting to uplift remaining variables inzp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Uplifting [doplasma] best 125881 combination zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] -Attempting to uplift remaining variables inzp[1]:55 [ makecharset::s#0 ] -Uplifting [makecharset] best 125881 combination zp[1]:55 [ makecharset::s#0 ] Attempting to uplift remaining variables inzp[1]:52 [ doplasma::yval#0 ] Uplifting [doplasma] best 125881 combination zp[1]:52 [ doplasma::yval#0 ] +Attempting to uplift remaining variables inzp[1]:20 [ makecharset::i#2 makecharset::i#1 ] +Uplifting [makecharset] best 125881 combination zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] +Attempting to uplift remaining variables inzp[1]:55 [ makecharset::s#0 ] +Uplifting [makecharset] best 125881 combination zp[1]:55 [ makecharset::s#0 ] Attempting to uplift remaining variables inzp[1]:54 [ makecharset::$3 ] -Uplifting [makecharset] best 125841 combination reg byte a [ makecharset::$3 ] +Uplifting [makecharset] best 125821 combination reg byte x [ makecharset::$3 ] Attempting to uplift remaining variables inzp[1]:56 [ makecharset::$12 ] -Uplifting [makecharset] best 125781 combination reg byte a [ makecharset::$12 ] +Uplifting [makecharset] best 125761 combination reg byte a [ makecharset::$12 ] Attempting to uplift remaining variables inzp[1]:4 [ c1A#1 c1A#3 ] -Uplifting [] best 125781 combination zp[1]:4 [ c1A#1 c1A#3 ] +Uplifting [] best 125761 combination zp[1]:4 [ c1A#1 c1A#3 ] Attempting to uplift remaining variables inzp[1]:5 [ c1B#1 c1B#3 ] -Uplifting [] best 125781 combination zp[1]:5 [ c1B#1 c1B#3 ] +Uplifting [] best 125761 combination zp[1]:5 [ c1B#1 c1B#3 ] Attempting to uplift remaining variables inzp[1]:6 [ c2A#1 c2A#3 ] -Uplifting [] best 125781 combination zp[1]:6 [ c2A#1 c2A#3 ] +Uplifting [] best 125761 combination zp[1]:6 [ c2A#1 c2A#3 ] Attempting to uplift remaining variables inzp[1]:7 [ c2B#1 c2B#3 ] -Uplifting [] best 125781 combination zp[1]:7 [ c2B#1 c2B#3 ] +Uplifting [] best 125761 combination zp[1]:7 [ c2B#1 c2B#3 ] Coalescing zero page register [ zp[2]:57 [ makecharset::$10 ] ] with [ zp[2]:59 [ makecharset::$11 ] ] - score: 1 Coalescing zero page register [ zp[2]:57 [ makecharset::$10 makecharset::$11 ] ] with [ zp[2]:61 [ makecharset::$16 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] ] with [ zp[2]:2 [ main::col#2 main::col#1 ] ] @@ -5075,11 +5073,10 @@ makecharset: { rts // makecharset::@2 __b2: - // [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 - lda.z c - // [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuaa - tay - lda SINTABLE,y + // [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuxx=_lo_vwuz1 + ldx.z c + // [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuxx + lda SINTABLE,x sta.z s // [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] __b3_from___b2: @@ -5525,20 +5522,20 @@ FINAL SYMBOL TABLE .byte round(127.5+127.5*sin(toRadians(360*i/256))) }} (byte) c1A -(byte) c1A#1 c1A zp[1]:2 1.1538461538461537 -(byte) c1A#3 c1A zp[1]:2 0.18840579710144925 +(byte) c1A#1 c1A zp[1]:2 161.76923076923077 +(byte) c1A#3 c1A zp[1]:2 15.971014492753623 (byte) c1B -(byte) c1B#1 c1B zp[1]:3 1.0714285714285714 -(byte) c1B#3 c1B zp[1]:3 0.1911764705882353 +(byte) c1B#1 c1B zp[1]:3 150.21428571428572 +(byte) c1B#3 c1B zp[1]:3 16.205882352941178 (byte) c2A -(byte) c2A#1 c2A zp[1]:4 0.625 -(byte) c2A#3 c2A zp[1]:4 0.22413793103448276 +(byte) c2A#1 c2A zp[1]:4 87.625 +(byte) c2A#3 c2A zp[1]:4 19.0 (byte) c2B -(byte) c2B#1 c2B zp[1]:5 0.6 -(byte) c2B#3 c2B zp[1]:5 0.22807017543859648 +(byte) c2B#1 c2B zp[1]:5 84.12 +(byte) c2B#3 c2B zp[1]:5 19.333333333333336 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 reg byte a 202.0 -(byte~) doplasma::$4 reg byte a 202.0 +(byte~) doplasma::$2 reg byte a 200002.0 +(byte~) doplasma::$4 reg byte a 200002.0 (label) doplasma::@1 (label) doplasma::@10 (label) doplasma::@17_1 @@ -5575,66 +5572,66 @@ FINAL SYMBOL TABLE (label) doplasma::@9 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp[1]:15 2.0 -(byte) doplasma::c1a#1 c1a zp[1]:15 50.5 -(byte) doplasma::c1a#2 c1a zp[1]:15 61.0 +(byte) doplasma::c1a#0 c1a zp[1]:15 1001.0 +(byte) doplasma::c1a#1 c1a zp[1]:15 50000.5 +(byte) doplasma::c1a#2 c1a zp[1]:15 60200.8 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp[1]:18 4.0 -(byte) doplasma::c1b#1 c1b zp[1]:18 67.33333333333333 -(byte) doplasma::c1b#2 c1b zp[1]:18 50.83333333333333 +(byte) doplasma::c1b#0 c1b zp[1]:18 2002.0 +(byte) doplasma::c1b#1 c1b zp[1]:18 66667.33333333333 +(byte) doplasma::c1b#2 c1b zp[1]:18 50167.33333333333 (byte) doplasma::c2a -(byte) doplasma::c2a#0 c2a zp[1]:7 2.0 -(byte) doplasma::c2a#1 c2a zp[1]:7 67.33333333333333 -(byte) doplasma::c2a#2 c2a zp[1]:7 76.25 +(byte) doplasma::c2a#0 c2a zp[1]:7 1001.0 +(byte) doplasma::c2a#1 c2a zp[1]:7 66667.33333333333 +(byte) doplasma::c2a#2 c2a zp[1]:7 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 c2b zp[1]:8 4.0 -(byte) doplasma::c2b#1 c2b zp[1]:8 101.0 -(byte) doplasma::c2b#2 c2b zp[1]:8 61.0 +(byte) doplasma::c2b#0 c2b zp[1]:8 2002.0 +(byte) doplasma::c2b#1 c2b zp[1]:8 100001.0 +(byte) doplasma::c2b#2 c2b zp[1]:8 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 i zp[1]:13 101.0 -(byte) doplasma::i#2 i zp[1]:13 57.714285714285715 +(byte) doplasma::i#1 i zp[1]:13 100001.0 +(byte) doplasma::i#2 i zp[1]:13 57143.42857142857 (byte) doplasma::i1 -(byte) doplasma::i1#1 i1 zp[1]:6 202.0 -(byte) doplasma::i1#2 i1 zp[1]:6 67.33333333333333 +(byte) doplasma::i1#1 i1 zp[1]:6 200002.0 +(byte) doplasma::i1#2 i1 zp[1]:6 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 reg byte x 202.0 -(byte) doplasma::i2#2 reg byte x 55.26415094339627 +(byte) doplasma::i2#1 reg byte x 200002.0 +(byte) doplasma::i2#2 reg byte x 54717.52830188676 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 reg byte a 202.0 -(byte) doplasma::val#1 reg byte a 151.5 -(byte) doplasma::val#10 reg byte a 151.5 -(byte) doplasma::val#11 reg byte a 151.5 -(byte) doplasma::val#13 reg byte a 151.5 -(byte) doplasma::val#15 reg byte a 151.5 -(byte) doplasma::val#17 reg byte a 151.5 -(byte) doplasma::val#19 reg byte a 151.5 -(byte) doplasma::val#21 reg byte a 151.5 -(byte) doplasma::val#23 reg byte a 151.5 -(byte) doplasma::val#25 reg byte a 151.5 -(byte) doplasma::val#27 reg byte a 151.5 -(byte) doplasma::val#29 reg byte a 151.5 -(byte) doplasma::val#31 reg byte a 151.5 -(byte) doplasma::val#33 reg byte a 151.5 -(byte) doplasma::val#35 reg byte a 151.5 -(byte) doplasma::val#37 reg byte a 151.5 -(byte) doplasma::val#39 reg byte a 151.5 -(byte) doplasma::val#41 reg byte a 151.5 -(byte) doplasma::val#43 reg byte a 151.5 -(byte) doplasma::val#45 reg byte a 151.5 -(byte) doplasma::val#47 reg byte a 151.5 -(byte) doplasma::val#49 reg byte a 151.5 -(byte) doplasma::val#5 reg byte a 151.5 -(byte) doplasma::val#51 reg byte a 202.0 -(byte) doplasma::val#7 reg byte a 151.5 +(byte) doplasma::val#0 reg byte a 200002.0 +(byte) doplasma::val#1 reg byte a 150001.5 +(byte) doplasma::val#10 reg byte a 150001.5 +(byte) doplasma::val#11 reg byte a 150001.5 +(byte) doplasma::val#13 reg byte a 150001.5 +(byte) doplasma::val#15 reg byte a 150001.5 +(byte) doplasma::val#17 reg byte a 150001.5 +(byte) doplasma::val#19 reg byte a 150001.5 +(byte) doplasma::val#21 reg byte a 150001.5 +(byte) doplasma::val#23 reg byte a 150001.5 +(byte) doplasma::val#25 reg byte a 150001.5 +(byte) doplasma::val#27 reg byte a 150001.5 +(byte) doplasma::val#29 reg byte a 150001.5 +(byte) doplasma::val#31 reg byte a 150001.5 +(byte) doplasma::val#33 reg byte a 150001.5 +(byte) doplasma::val#35 reg byte a 150001.5 +(byte) doplasma::val#37 reg byte a 150001.5 +(byte) doplasma::val#39 reg byte a 150001.5 +(byte) doplasma::val#41 reg byte a 150001.5 +(byte) doplasma::val#43 reg byte a 150001.5 +(byte) doplasma::val#45 reg byte a 150001.5 +(byte) doplasma::val#47 reg byte a 150001.5 +(byte) doplasma::val#49 reg byte a 150001.5 +(byte) doplasma::val#5 reg byte a 150001.5 +(byte) doplasma::val#51 reg byte a 200002.0 +(byte) doplasma::val#7 reg byte a 150001.5 (const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) } (const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) } (byte) doplasma::yprev -(byte) doplasma::yprev#2 reg byte x 67.33333333333333 -(byte) doplasma::yprev#4 reg byte x 202.0 +(byte) doplasma::yprev#2 reg byte x 66667.33333333333 +(byte) doplasma::yprev#4 reg byte x 200002.0 (byte) doplasma::yval -(byte) doplasma::yval#0 yval zp[1]:14 50.5 +(byte) doplasma::yval#0 yval zp[1]:14 50000.5 (void()) main() (label) main::@1 (label) main::@2 @@ -5642,21 +5639,21 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@5 (byte*) main::col -(byte*) main::col#1 col zp[2]:11 16.5 -(byte*) main::col#2 col zp[2]:11 16.5 +(byte*) main::col#1 col zp[2]:11 151.5 +(byte*) main::col#2 col zp[2]:11 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN1&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 zp[2]:16 202.0 -(word~) makecharset::$11 zp[2]:16 202.0 -(byte~) makecharset::$12 reg byte a 22.0 -(byte*~) makecharset::$16 zp[2]:16 202.0 -(byte~) makecharset::$3 reg byte a 22.0 -(byte~) makecharset::$6 reg byte a 2002.0 -(byte~) makecharset::$7 zp[1]:18 2002.0 +(word~) makecharset::$10 zp[2]:16 20002.0 +(word~) makecharset::$11 zp[2]:16 20002.0 +(byte~) makecharset::$12 reg byte a 2002.0 +(byte*~) makecharset::$16 zp[2]:16 20002.0 +(byte~) makecharset::$3 reg byte x 2002.0 +(byte~) makecharset::$6 reg byte a 200002.0 +(byte~) makecharset::$7 zp[1]:18 200002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -5672,22 +5669,22 @@ FINAL SYMBOL TABLE (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 282.1818181818182 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 28182.181818181816 +(byte) makecharset::b#6 reg byte y 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) makecharset::c -(word) makecharset::c#1 c zp[2]:9 22.0 -(word) makecharset::c#2 c zp[2]:9 5.777777777777778 +(word) makecharset::c#1 c zp[2]:9 2002.0 +(word) makecharset::c#2 c zp[2]:9 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:13 202.0 -(byte) makecharset::i#2 i zp[1]:13 23.764705882352942 +(byte) makecharset::i#1 i zp[1]:13 20002.0 +(byte) makecharset::i#2 i zp[1]:13 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 reg byte x 2002.0 -(byte) makecharset::ii#2 reg byte x 400.4 +(byte) makecharset::ii#1 reg byte x 200002.0 +(byte) makecharset::ii#2 reg byte x 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 s zp[1]:15 53.26315789473684 +(byte) makecharset::s#0 s zp[1]:15 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -5695,8 +5692,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 200002.0 +(byte*) memset::dst#2 dst zp[2]:16 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -5709,9 +5706,9 @@ FINAL SYMBOL TABLE (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 1.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:11 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 846.3076923076923 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:11 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -5720,8 +5717,8 @@ FINAL SYMBOL TABLE (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return @@ -5768,7 +5765,7 @@ reg byte a [ doplasma::val#51 ] reg byte a [ doplasma::$4 ] zp[1]:14 [ doplasma::yval#0 ] reg byte a [ doplasma::$2 ] -reg byte a [ makecharset::$3 ] +reg byte x [ makecharset::$3 ] zp[1]:15 [ makecharset::s#0 doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] reg byte a [ makecharset::$12 ] zp[2]:16 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ] @@ -5779,7 +5776,7 @@ reg byte a [ sid_rnd::return#0 ] FINAL ASSEMBLER -Score: 97686 +Score: 97666 // File Comments // A KickC version of the plasma routine from the CC65 samples @@ -6333,12 +6330,11 @@ makecharset: { // makecharset::@2 __b2: // makecharset::@3] // [106] phi (byte) makecharset::i#2 = (byte) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 diff --git a/src/test/ref/examples/plasma/plasma-unroll.sym b/src/test/ref/examples/plasma/plasma-unroll.sym index 194acd302..9d6f8a4e6 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.sym +++ b/src/test/ref/examples/plasma/plasma-unroll.sym @@ -21,20 +21,20 @@ .byte round(127.5+127.5*sin(toRadians(360*i/256))) }} (byte) c1A -(byte) c1A#1 c1A zp[1]:2 1.1538461538461537 -(byte) c1A#3 c1A zp[1]:2 0.18840579710144925 +(byte) c1A#1 c1A zp[1]:2 161.76923076923077 +(byte) c1A#3 c1A zp[1]:2 15.971014492753623 (byte) c1B -(byte) c1B#1 c1B zp[1]:3 1.0714285714285714 -(byte) c1B#3 c1B zp[1]:3 0.1911764705882353 +(byte) c1B#1 c1B zp[1]:3 150.21428571428572 +(byte) c1B#3 c1B zp[1]:3 16.205882352941178 (byte) c2A -(byte) c2A#1 c2A zp[1]:4 0.625 -(byte) c2A#3 c2A zp[1]:4 0.22413793103448276 +(byte) c2A#1 c2A zp[1]:4 87.625 +(byte) c2A#3 c2A zp[1]:4 19.0 (byte) c2B -(byte) c2B#1 c2B zp[1]:5 0.6 -(byte) c2B#3 c2B zp[1]:5 0.22807017543859648 +(byte) c2B#1 c2B zp[1]:5 84.12 +(byte) c2B#3 c2B zp[1]:5 19.333333333333336 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 reg byte a 202.0 -(byte~) doplasma::$4 reg byte a 202.0 +(byte~) doplasma::$2 reg byte a 200002.0 +(byte~) doplasma::$4 reg byte a 200002.0 (label) doplasma::@1 (label) doplasma::@10 (label) doplasma::@17_1 @@ -71,66 +71,66 @@ (label) doplasma::@9 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp[1]:15 2.0 -(byte) doplasma::c1a#1 c1a zp[1]:15 50.5 -(byte) doplasma::c1a#2 c1a zp[1]:15 61.0 +(byte) doplasma::c1a#0 c1a zp[1]:15 1001.0 +(byte) doplasma::c1a#1 c1a zp[1]:15 50000.5 +(byte) doplasma::c1a#2 c1a zp[1]:15 60200.8 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp[1]:18 4.0 -(byte) doplasma::c1b#1 c1b zp[1]:18 67.33333333333333 -(byte) doplasma::c1b#2 c1b zp[1]:18 50.83333333333333 +(byte) doplasma::c1b#0 c1b zp[1]:18 2002.0 +(byte) doplasma::c1b#1 c1b zp[1]:18 66667.33333333333 +(byte) doplasma::c1b#2 c1b zp[1]:18 50167.33333333333 (byte) doplasma::c2a -(byte) doplasma::c2a#0 c2a zp[1]:7 2.0 -(byte) doplasma::c2a#1 c2a zp[1]:7 67.33333333333333 -(byte) doplasma::c2a#2 c2a zp[1]:7 76.25 +(byte) doplasma::c2a#0 c2a zp[1]:7 1001.0 +(byte) doplasma::c2a#1 c2a zp[1]:7 66667.33333333333 +(byte) doplasma::c2a#2 c2a zp[1]:7 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 c2b zp[1]:8 4.0 -(byte) doplasma::c2b#1 c2b zp[1]:8 101.0 -(byte) doplasma::c2b#2 c2b zp[1]:8 61.0 +(byte) doplasma::c2b#0 c2b zp[1]:8 2002.0 +(byte) doplasma::c2b#1 c2b zp[1]:8 100001.0 +(byte) doplasma::c2b#2 c2b zp[1]:8 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 i zp[1]:13 101.0 -(byte) doplasma::i#2 i zp[1]:13 57.714285714285715 +(byte) doplasma::i#1 i zp[1]:13 100001.0 +(byte) doplasma::i#2 i zp[1]:13 57143.42857142857 (byte) doplasma::i1 -(byte) doplasma::i1#1 i1 zp[1]:6 202.0 -(byte) doplasma::i1#2 i1 zp[1]:6 67.33333333333333 +(byte) doplasma::i1#1 i1 zp[1]:6 200002.0 +(byte) doplasma::i1#2 i1 zp[1]:6 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 reg byte x 202.0 -(byte) doplasma::i2#2 reg byte x 55.26415094339627 +(byte) doplasma::i2#1 reg byte x 200002.0 +(byte) doplasma::i2#2 reg byte x 54717.52830188676 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 reg byte a 202.0 -(byte) doplasma::val#1 reg byte a 151.5 -(byte) doplasma::val#10 reg byte a 151.5 -(byte) doplasma::val#11 reg byte a 151.5 -(byte) doplasma::val#13 reg byte a 151.5 -(byte) doplasma::val#15 reg byte a 151.5 -(byte) doplasma::val#17 reg byte a 151.5 -(byte) doplasma::val#19 reg byte a 151.5 -(byte) doplasma::val#21 reg byte a 151.5 -(byte) doplasma::val#23 reg byte a 151.5 -(byte) doplasma::val#25 reg byte a 151.5 -(byte) doplasma::val#27 reg byte a 151.5 -(byte) doplasma::val#29 reg byte a 151.5 -(byte) doplasma::val#31 reg byte a 151.5 -(byte) doplasma::val#33 reg byte a 151.5 -(byte) doplasma::val#35 reg byte a 151.5 -(byte) doplasma::val#37 reg byte a 151.5 -(byte) doplasma::val#39 reg byte a 151.5 -(byte) doplasma::val#41 reg byte a 151.5 -(byte) doplasma::val#43 reg byte a 151.5 -(byte) doplasma::val#45 reg byte a 151.5 -(byte) doplasma::val#47 reg byte a 151.5 -(byte) doplasma::val#49 reg byte a 151.5 -(byte) doplasma::val#5 reg byte a 151.5 -(byte) doplasma::val#51 reg byte a 202.0 -(byte) doplasma::val#7 reg byte a 151.5 +(byte) doplasma::val#0 reg byte a 200002.0 +(byte) doplasma::val#1 reg byte a 150001.5 +(byte) doplasma::val#10 reg byte a 150001.5 +(byte) doplasma::val#11 reg byte a 150001.5 +(byte) doplasma::val#13 reg byte a 150001.5 +(byte) doplasma::val#15 reg byte a 150001.5 +(byte) doplasma::val#17 reg byte a 150001.5 +(byte) doplasma::val#19 reg byte a 150001.5 +(byte) doplasma::val#21 reg byte a 150001.5 +(byte) doplasma::val#23 reg byte a 150001.5 +(byte) doplasma::val#25 reg byte a 150001.5 +(byte) doplasma::val#27 reg byte a 150001.5 +(byte) doplasma::val#29 reg byte a 150001.5 +(byte) doplasma::val#31 reg byte a 150001.5 +(byte) doplasma::val#33 reg byte a 150001.5 +(byte) doplasma::val#35 reg byte a 150001.5 +(byte) doplasma::val#37 reg byte a 150001.5 +(byte) doplasma::val#39 reg byte a 150001.5 +(byte) doplasma::val#41 reg byte a 150001.5 +(byte) doplasma::val#43 reg byte a 150001.5 +(byte) doplasma::val#45 reg byte a 150001.5 +(byte) doplasma::val#47 reg byte a 150001.5 +(byte) doplasma::val#49 reg byte a 150001.5 +(byte) doplasma::val#5 reg byte a 150001.5 +(byte) doplasma::val#51 reg byte a 200002.0 +(byte) doplasma::val#7 reg byte a 150001.5 (const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) } (const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) } (byte) doplasma::yprev -(byte) doplasma::yprev#2 reg byte x 67.33333333333333 -(byte) doplasma::yprev#4 reg byte x 202.0 +(byte) doplasma::yprev#2 reg byte x 66667.33333333333 +(byte) doplasma::yprev#4 reg byte x 200002.0 (byte) doplasma::yval -(byte) doplasma::yval#0 yval zp[1]:14 50.5 +(byte) doplasma::yval#0 yval zp[1]:14 50000.5 (void()) main() (label) main::@1 (label) main::@2 @@ -138,21 +138,21 @@ (label) main::@4 (label) main::@5 (byte*) main::col -(byte*) main::col#1 col zp[2]:11 16.5 -(byte*) main::col#2 col zp[2]:11 16.5 +(byte*) main::col#1 col zp[2]:11 151.5 +(byte*) main::col#2 col zp[2]:11 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN1&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0181_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 zp[2]:16 202.0 -(word~) makecharset::$11 zp[2]:16 202.0 -(byte~) makecharset::$12 reg byte a 22.0 -(byte*~) makecharset::$16 zp[2]:16 202.0 -(byte~) makecharset::$3 reg byte a 22.0 -(byte~) makecharset::$6 reg byte a 2002.0 -(byte~) makecharset::$7 zp[1]:18 2002.0 +(word~) makecharset::$10 zp[2]:16 20002.0 +(word~) makecharset::$11 zp[2]:16 20002.0 +(byte~) makecharset::$12 reg byte a 2002.0 +(byte*~) makecharset::$16 zp[2]:16 20002.0 +(byte~) makecharset::$3 reg byte x 2002.0 +(byte~) makecharset::$6 reg byte a 200002.0 +(byte~) makecharset::$7 zp[1]:18 200002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -168,22 +168,22 @@ (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 282.1818181818182 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 28182.181818181816 +(byte) makecharset::b#6 reg byte y 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) makecharset::c -(word) makecharset::c#1 c zp[2]:9 22.0 -(word) makecharset::c#2 c zp[2]:9 5.777777777777778 +(word) makecharset::c#1 c zp[2]:9 2002.0 +(word) makecharset::c#2 c zp[2]:9 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:13 202.0 -(byte) makecharset::i#2 i zp[1]:13 23.764705882352942 +(byte) makecharset::i#1 i zp[1]:13 20002.0 +(byte) makecharset::i#2 i zp[1]:13 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 reg byte x 2002.0 -(byte) makecharset::ii#2 reg byte x 400.4 +(byte) makecharset::ii#1 reg byte x 200002.0 +(byte) makecharset::ii#2 reg byte x 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 s zp[1]:15 53.26315789473684 +(byte) makecharset::s#0 s zp[1]:15 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -191,8 +191,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 200002.0 +(byte*) memset::dst#2 dst zp[2]:16 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -205,9 +205,9 @@ (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 1.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:11 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 846.3076923076923 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:11 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -216,8 +216,8 @@ (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return @@ -264,7 +264,7 @@ reg byte a [ doplasma::val#51 ] reg byte a [ doplasma::$4 ] zp[1]:14 [ doplasma::yval#0 ] reg byte a [ doplasma::$2 ] -reg byte a [ makecharset::$3 ] +reg byte x [ makecharset::$3 ] zp[1]:15 [ makecharset::s#0 doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] reg byte a [ makecharset::$12 ] zp[2]:16 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ] diff --git a/src/test/ref/examples/plasma/plasma.asm b/src/test/ref/examples/plasma/plasma.asm index 91a24bb83..8286f7a15 100644 --- a/src/test/ref/examples/plasma/plasma.asm +++ b/src/test/ref/examples/plasma/plasma.asm @@ -255,10 +255,9 @@ makecharset: { rts __b2: // (byte) makecharset::s#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#31 (byte*) print_screen#9 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#8 -Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#13 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#26 -Alias (byte) c1A#21 = (byte) c1A#26 (byte) c1A#31 -Alias (byte) c1B#21 = (byte) c1B#26 (byte) c1B#31 -Alias (byte) c2A#22 = (byte) c2A#28 (byte) c2A#32 -Alias (byte) c2B#22 = (byte) c2B#28 (byte) c2B#32 -Alias (byte*) print_screen#5 = (byte*) print_screen#6 -Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#5 -Alias (byte) c1A#14 = (byte) c1A#16 (byte) c1A#9 (byte) c1A#2 -Alias (byte) c1B#14 = (byte) c1B#16 (byte) c1B#9 (byte) c1B#2 -Alias (byte) c2A#14 = (byte) c2A#16 (byte) c2A#9 (byte) c2A#2 -Alias (byte) c2B#14 = (byte) c2B#16 (byte) c2B#9 (byte) c2B#2 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#44 (byte*) print_line_cursor#15 (byte*) print_line_cursor#42 (byte*) print_line_cursor#39 (byte*) print_line_cursor#36 (byte*) print_line_cursor#34 (byte*) print_line_cursor#31 (byte*) print_line_cursor#28 (byte*) print_line_cursor#25 (byte*) print_line_cursor#20 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#22 (byte*) print_char_cursor#48 (byte*) print_char_cursor#46 (byte*) print_char_cursor#43 (byte*) print_char_cursor#40 (byte*) print_char_cursor#38 (byte*) print_char_cursor#35 (byte*) print_char_cursor#33 (byte*) print_char_cursor#27 (byte*) print_char_cursor#6 -Alias (byte) c1A#0 = (byte) c1A#7 (byte) c1A#27 (byte) c1A#22 (byte) c1A#15 -Alias (byte) c1B#0 = (byte) c1B#7 (byte) c1B#27 (byte) c1B#22 (byte) c1B#15 -Alias (byte) c2A#0 = (byte) c2A#7 (byte) c2A#29 (byte) c2A#23 (byte) c2A#15 -Alias (byte) c2B#0 = (byte) c2B#7 (byte) c2B#29 (byte) c2B#23 (byte) c2B#15 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$3 -Alias (byte) c1A#1 = (byte) c1A#8 (byte) c1A#32 (byte) c1A#28 (byte) c1A#20 -Alias (byte) c1B#1 = (byte) c1B#8 (byte) c1B#32 (byte) c1B#28 (byte) c1B#20 -Alias (byte) c2A#1 = (byte) c2A#8 (byte) c2A#33 (byte) c2A#30 (byte) c2A#21 -Alias (byte) c2B#1 = (byte) c2B#8 (byte) c2B#33 (byte) c2B#30 (byte) c2B#21 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$5 -Alias (byte) doplasma::c1a#2 = (byte) doplasma::c1a#3 -Alias (byte) doplasma::c1b#2 = (byte) doplasma::c1b#3 -Alias (byte) doplasma::i#2 = (byte) doplasma::i#3 -Alias (byte) c1A#11 = (byte) c1A#23 (byte) c1A#17 -Alias (byte) c1B#11 = (byte) c1B#23 (byte) c1B#17 -Alias (byte) c2A#10 = (byte) c2A#25 (byte) c2A#17 -Alias (byte) c2B#10 = (byte) c2B#25 (byte) c2B#17 -Alias (byte*) doplasma::screen#10 = (byte*) doplasma::screen#14 (byte*) doplasma::screen#12 -Alias (byte) doplasma::c2a#2 = (byte) doplasma::c2a#3 -Alias (byte) doplasma::c2b#2 = (byte) doplasma::c2b#3 -Alias (byte) doplasma::i1#2 = (byte) doplasma::i1#3 -Alias (byte) c2A#11 = (byte) c2A#26 (byte) c2A#18 -Alias (byte) c2B#11 = (byte) c2B#26 (byte) c2B#18 -Alias (byte) c1A#25 = (byte) c1A#33 (byte) c1A#29 -Alias (byte) c1B#25 = (byte) c1B#33 (byte) c1B#29 -Alias (byte*) doplasma::screen#11 = (byte*) doplasma::screen#9 (byte*) doplasma::screen#8 -Alias (byte) doplasma::ii#2 = (byte) doplasma::ii#6 -Alias (byte*) doplasma::screen#6 = (byte*) doplasma::screen#7 -Alias (byte) c1A#12 = (byte) c1A#34 (byte) c1A#18 (byte) c1A#5 -Alias (byte) c1B#12 = (byte) c1B#34 (byte) c1B#18 (byte) c1B#5 -Alias (byte) c2A#12 = (byte) c2A#34 (byte) c2A#19 (byte) c2A#5 -Alias (byte) c2B#12 = (byte) c2B#34 (byte) c2B#19 (byte) c2B#5 -Alias (byte) doplasma::i2#2 = (byte) doplasma::i2#3 -Alias (byte) doplasma::ii#3 = (byte) doplasma::ii#5 (byte) doplasma::ii#4 -Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#5 (byte*) doplasma::screen#4 -Alias (byte) c1A#24 = (byte) c1A#35 (byte) c1A#30 -Alias (byte) c1B#24 = (byte) c1B#35 (byte) c1B#30 -Alias (byte) c2A#27 = (byte) c2A#35 (byte) c2A#31 -Alias (byte) c2B#27 = (byte) c2B#35 (byte) c2B#31 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#28 -Alias (byte*) makecharset::charset#12 = (byte*) makecharset::charset#13 (byte*) makecharset::charset#16 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#7 -Alias (word) makecharset::c#2 = (word) makecharset::c#3 -Alias (byte*) makecharset::charset#10 = (byte*) makecharset::charset#8 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#24 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#17 (byte*) print_line_cursor#6 -Alias (word) makecharset::c#11 = (word) makecharset::c#7 (word) makecharset::c#4 (word) makecharset::c#12 (word) makecharset::c#9 -Alias (byte) makecharset::i#2 = (byte) makecharset::i#6 -Alias (byte*) makecharset::charset#14 = (byte*) makecharset::charset#4 (byte*) makecharset::charset#5 (byte*) makecharset::charset#15 (byte*) makecharset::charset#17 -Alias (byte) makecharset::s#5 = (byte) makecharset::s#6 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#34 (byte*) print_char_cursor#30 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#38 (byte*) print_line_cursor#29 (byte*) print_line_cursor#27 (byte*) print_line_cursor#30 -Alias (byte) makecharset::s#1 = (byte) makecharset::s#2 (byte) makecharset::s#3 (byte) makecharset::s#8 (byte) makecharset::s#7 -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#6 (byte) makecharset::ii#5 (byte) makecharset::ii#4 -Alias (byte) makecharset::b#2 = (byte) makecharset::b#7 (byte) makecharset::b#4 (byte) makecharset::b#5 (byte) makecharset::b#3 -Alias (word) makecharset::c#13 = (word) makecharset::c#15 (word) makecharset::c#8 (word) makecharset::c#14 (word) makecharset::c#5 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#9 (byte) makecharset::i#4 (byte) makecharset::i#8 (byte) makecharset::i#7 -Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#9 (byte*) makecharset::charset#2 (byte*) makecharset::charset#7 (byte*) makecharset::charset#6 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#39 (byte*) print_char_cursor#45 (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#33 = (byte*) print_line_cursor#43 (byte*) print_line_cursor#35 (byte*) print_line_cursor#41 (byte*) print_line_cursor#40 -Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#8 -Alias (byte) c1A#19 = (byte) c1A#3 -Alias (byte) c1B#19 = (byte) c1B#3 -Alias (byte) c2A#20 = (byte) c2A#3 -Alias (byte) c2B#20 = (byte) c2B#3 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#19 -Alias (byte) c1A#13 = (byte) c1A#6 -Alias (byte) c1B#13 = (byte) c1B#6 -Alias (byte) c2A#13 = (byte) c2A#6 -Alias (byte) c2B#13 = (byte) c2B#6 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#23 print_char_cursor#31 print_screen#9 print_line_cursor#18 print_char_cursor#25 print_screen#8 +Alias print_char_cursor#1 = print_char_cursor#12 print_char_cursor#2 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#3 print_line_cursor#8 print_char_cursor#13 print_line_cursor#2 print_char_cursor#4 +Alias sid_rnd::return#0 = sid_rnd::return#3 sid_rnd::return#1 +Alias print_line_cursor#14 = print_line_cursor#19 +Alias print_char_cursor#21 = print_char_cursor#26 +Alias c1A#21 = c1A#26 c1A#31 +Alias c1B#21 = c1B#26 c1B#31 +Alias c2A#22 = c2A#28 c2A#32 +Alias c2B#22 = c2B#28 c2B#32 +Alias print_screen#5 = print_screen#6 +Alias print_line_cursor#3 = print_line_cursor#9 +Alias print_char_cursor#14 = print_char_cursor#5 +Alias c1A#14 = c1A#16 c1A#9 c1A#2 +Alias c1B#14 = c1B#16 c1B#9 c1B#2 +Alias c2A#14 = c2A#16 c2A#9 c2A#2 +Alias c2B#14 = c2B#16 c2B#9 c2B#2 +Alias print_line_cursor#10 = print_line_cursor#44 print_line_cursor#15 print_line_cursor#42 print_line_cursor#39 print_line_cursor#36 print_line_cursor#34 print_line_cursor#31 print_line_cursor#28 print_line_cursor#25 print_line_cursor#20 print_line_cursor#4 +Alias print_char_cursor#15 = print_char_cursor#49 print_char_cursor#22 print_char_cursor#48 print_char_cursor#46 print_char_cursor#43 print_char_cursor#40 print_char_cursor#38 print_char_cursor#35 print_char_cursor#33 print_char_cursor#27 print_char_cursor#6 +Alias c1A#0 = c1A#7 c1A#27 c1A#22 c1A#15 +Alias c1B#0 = c1B#7 c1B#27 c1B#22 c1B#15 +Alias c2A#0 = c2A#7 c2A#29 c2A#23 c2A#15 +Alias c2B#0 = c2B#7 c2B#29 c2B#23 c2B#15 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$3 +Alias c1A#1 = c1A#8 c1A#32 c1A#28 c1A#20 +Alias c1B#1 = c1B#8 c1B#32 c1B#28 c1B#20 +Alias c2A#1 = c2A#8 c2A#33 c2A#30 c2A#21 +Alias c2B#1 = c2B#8 c2B#33 c2B#30 c2B#21 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$5 +Alias doplasma::c1a#2 = doplasma::c1a#3 +Alias doplasma::c1b#2 = doplasma::c1b#3 +Alias doplasma::i#2 = doplasma::i#3 +Alias c1A#11 = c1A#23 c1A#17 +Alias c1B#11 = c1B#23 c1B#17 +Alias c2A#10 = c2A#25 c2A#17 +Alias c2B#10 = c2B#25 c2B#17 +Alias doplasma::screen#10 = doplasma::screen#14 doplasma::screen#12 +Alias doplasma::c2a#2 = doplasma::c2a#3 +Alias doplasma::c2b#2 = doplasma::c2b#3 +Alias doplasma::i1#2 = doplasma::i1#3 +Alias c2A#11 = c2A#26 c2A#18 +Alias c2B#11 = c2B#26 c2B#18 +Alias c1A#25 = c1A#33 c1A#29 +Alias c1B#25 = c1B#33 c1B#29 +Alias doplasma::screen#11 = doplasma::screen#9 doplasma::screen#8 +Alias doplasma::ii#2 = doplasma::ii#6 +Alias doplasma::screen#6 = doplasma::screen#7 +Alias c1A#12 = c1A#34 c1A#18 c1A#5 +Alias c1B#12 = c1B#34 c1B#18 c1B#5 +Alias c2A#12 = c2A#34 c2A#19 c2A#5 +Alias c2B#12 = c2B#34 c2B#19 c2B#5 +Alias doplasma::i2#2 = doplasma::i2#3 +Alias doplasma::ii#3 = doplasma::ii#5 doplasma::ii#4 +Alias doplasma::screen#3 = doplasma::screen#5 doplasma::screen#4 +Alias c1A#24 = c1A#35 c1A#30 +Alias c1B#24 = c1B#35 c1B#30 +Alias c2A#27 = c2A#35 c2A#31 +Alias c2B#27 = c2B#35 c2B#31 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#16 = print_line_cursor#21 +Alias print_char_cursor#23 = print_char_cursor#28 +Alias makecharset::charset#12 = makecharset::charset#13 makecharset::charset#16 +Alias print_line_cursor#11 = print_line_cursor#5 +Alias print_char_cursor#16 = print_char_cursor#7 +Alias makecharset::c#2 = makecharset::c#3 +Alias makecharset::charset#10 = makecharset::charset#8 +Alias print_char_cursor#18 = print_char_cursor#36 print_char_cursor#24 print_char_cursor#9 +Alias print_line_cursor#12 = print_line_cursor#32 print_line_cursor#17 print_line_cursor#6 +Alias makecharset::c#11 = makecharset::c#7 makecharset::c#4 makecharset::c#12 makecharset::c#9 +Alias makecharset::i#2 = makecharset::i#6 +Alias makecharset::charset#14 = makecharset::charset#4 makecharset::charset#5 makecharset::charset#15 makecharset::charset#17 +Alias makecharset::s#5 = makecharset::s#6 +Alias print_char_cursor#20 = print_char_cursor#42 print_char_cursor#34 print_char_cursor#30 +Alias print_line_cursor#26 = print_line_cursor#38 print_line_cursor#29 print_line_cursor#27 print_line_cursor#30 +Alias makecharset::s#1 = makecharset::s#2 makecharset::s#3 makecharset::s#8 makecharset::s#7 +Alias makecharset::ii#2 = makecharset::ii#6 makecharset::ii#5 makecharset::ii#4 +Alias makecharset::b#2 = makecharset::b#7 makecharset::b#4 makecharset::b#5 makecharset::b#3 +Alias makecharset::c#13 = makecharset::c#15 makecharset::c#8 makecharset::c#14 makecharset::c#5 +Alias makecharset::i#3 = makecharset::i#9 makecharset::i#4 makecharset::i#8 makecharset::i#7 +Alias makecharset::charset#1 = makecharset::charset#9 makecharset::charset#2 makecharset::charset#7 makecharset::charset#6 +Alias print_char_cursor#37 = print_char_cursor#47 print_char_cursor#39 print_char_cursor#45 print_char_cursor#44 +Alias print_line_cursor#33 = print_line_cursor#43 print_line_cursor#35 print_line_cursor#41 print_line_cursor#40 +Alias sid_rnd::return#2 = sid_rnd::return#4 +Alias print_char_cursor#17 = print_char_cursor#8 +Alias c1A#19 = c1A#3 +Alias c1B#19 = c1B#3 +Alias c2A#20 = c2A#3 +Alias c2B#20 = c2B#3 +Alias print_line_cursor#13 = print_line_cursor#7 +Alias print_char_cursor#10 = print_char_cursor#19 +Alias c1A#13 = c1A#6 +Alias c1B#13 = c1B#6 +Alias c2A#13 = c2A#6 +Alias c2B#13 = c2B#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#3 -Alias (word) makecharset::c#10 = (word) makecharset::c#13 -Alias (byte) makecharset::i#3 = (byte) makecharset::i#5 -Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#3 -Alias (byte) makecharset::s#1 = (byte) makecharset::s#4 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#33 = (byte*) print_line_cursor#37 -Alias (word) makecharset::c#11 = (word) makecharset::c#6 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#26 -Alias (byte*) makecharset::charset#11 = (byte*) makecharset::charset#14 +Alias makecharset::ii#2 = makecharset::ii#3 +Alias makecharset::c#10 = makecharset::c#13 +Alias makecharset::i#3 = makecharset::i#5 +Alias makecharset::charset#1 = makecharset::charset#3 +Alias makecharset::s#1 = makecharset::s#4 +Alias print_char_cursor#37 = print_char_cursor#41 +Alias print_line_cursor#33 = print_line_cursor#37 +Alias makecharset::c#11 = makecharset::c#6 +Alias print_line_cursor#22 = print_line_cursor#26 +Alias makecharset::charset#11 = makecharset::charset#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -2242,61 +2242,61 @@ sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init VARIABLE REGISTER WEIGHTS (byte) c1A -(byte) c1A#10 2.6000000000000005 -(byte) c1A#14 11.0 -(byte) c1A#4 0.8275862068965517 +(byte) c1A#10 220.39999999999998 +(byte) c1A#14 101.0 +(byte) c1A#4 41.48275862068965 (byte) c1B -(byte) c1B#10 2.3636363636363633 -(byte) c1B#14 11.0 -(byte) c1B#4 0.8571428571428571 +(byte) c1B#10 200.36363636363637 +(byte) c1B#14 101.0 +(byte) c1B#4 42.964285714285715 (byte) c2A -(byte) c2A#14 11.0 -(byte) c2A#24 1.2380952380952381 -(byte) c2A#4 1.3333333333333335 +(byte) c2A#14 101.0 +(byte) c2A#24 104.95238095238095 +(byte) c2A#4 66.83333333333334 (byte) c2B -(byte) c2B#14 11.0 -(byte) c2B#24 1.1818181818181817 -(byte) c2B#4 1.411764705882353 +(byte) c2B#14 101.0 +(byte) c2B#24 100.18181818181819 +(byte) c2B#4 70.76470588235294 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$1 202.0 -(byte~) doplasma::$3 202.0 -(byte~) doplasma::$6 2002.0 +(byte~) doplasma::$1 200002.0 +(byte~) doplasma::$3 200002.0 +(byte~) doplasma::$6 2000002.0 (byte) doplasma::c1a -(byte) doplasma::c1a#0 2.0 -(byte) doplasma::c1a#1 67.33333333333333 -(byte) doplasma::c1a#2 76.25 +(byte) doplasma::c1a#0 1001.0 +(byte) doplasma::c1a#1 66667.33333333333 +(byte) doplasma::c1a#2 75251.0 (byte) doplasma::c1b -(byte) doplasma::c1b#0 4.0 -(byte) doplasma::c1b#1 101.0 -(byte) doplasma::c1b#2 61.0 +(byte) doplasma::c1b#0 2002.0 +(byte) doplasma::c1b#1 100001.0 +(byte) doplasma::c1b#2 60200.8 (byte) doplasma::c2a -(byte) doplasma::c2a#0 2.0 -(byte) doplasma::c2a#1 67.33333333333333 -(byte) doplasma::c2a#2 76.25 +(byte) doplasma::c2a#0 1001.0 +(byte) doplasma::c2a#1 66667.33333333333 +(byte) doplasma::c2a#2 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 4.0 -(byte) doplasma::c2b#1 101.0 -(byte) doplasma::c2b#2 61.0 +(byte) doplasma::c2b#0 2002.0 +(byte) doplasma::c2b#1 100001.0 +(byte) doplasma::c2b#2 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 202.0 -(byte) doplasma::i#2 67.33333333333333 +(byte) doplasma::i#1 200002.0 +(byte) doplasma::i#2 66667.33333333333 (byte) doplasma::i1 -(byte) doplasma::i1#1 202.0 -(byte) doplasma::i1#2 67.33333333333333 +(byte) doplasma::i1#1 200002.0 +(byte) doplasma::i1#2 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 2002.0 -(byte) doplasma::i2#2 1251.25 +(byte) doplasma::i2#1 2000002.0 +(byte) doplasma::i2#2 1250001.25 (byte) doplasma::ii -(byte) doplasma::ii#1 202.0 -(byte) doplasma::ii#2 163.0 +(byte) doplasma::ii#1 200002.0 +(byte) doplasma::ii#2 162500.5 (byte*) doplasma::screen -(byte*) doplasma::screen#13 0.08695652173913043 -(byte*) doplasma::screen#2 101.0 -(byte*) doplasma::screen#6 172.14285714285714 +(byte*) doplasma::screen#13 43.52173913043478 +(byte*) doplasma::screen#2 100001.0 +(byte*) doplasma::screen#6 171572.0 (void()) main() (byte*) main::col -(byte*) main::col#1 16.5 -(byte*) main::col#2 16.5 +(byte*) main::col#1 151.5 +(byte*) main::col#2 151.5 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -2304,34 +2304,34 @@ VARIABLE REGISTER WEIGHTS (byte) main::toD0182_return (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 202.0 -(word~) makecharset::$11 202.0 -(byte~) makecharset::$12 22.0 -(byte*~) makecharset::$16 202.0 -(byte~) makecharset::$3 22.0 -(byte~) makecharset::$6 2002.0 -(byte~) makecharset::$7 2002.0 +(word~) makecharset::$10 20002.0 +(word~) makecharset::$11 20002.0 +(byte~) makecharset::$12 2002.0 +(byte*~) makecharset::$16 20002.0 +(byte~) makecharset::$3 2002.0 +(byte~) makecharset::$6 200002.0 +(byte~) makecharset::$7 200002.0 (byte) makecharset::b -(byte) makecharset::b#1 2002.0 -(byte) makecharset::b#2 282.1818181818182 -(byte) makecharset::b#6 1501.5 +(byte) makecharset::b#1 200002.0 +(byte) makecharset::b#2 28182.181818181816 +(byte) makecharset::b#6 150001.5 (word) makecharset::c -(word) makecharset::c#1 22.0 -(word) makecharset::c#2 5.777777777777778 +(word) makecharset::c#1 2002.0 +(word) makecharset::c#2 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 202.0 -(byte) makecharset::i#2 23.764705882352942 +(byte) makecharset::i#1 20002.0 +(byte) makecharset::i#2 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 2002.0 -(byte) makecharset::ii#2 400.4 +(byte) makecharset::ii#1 200002.0 +(byte) makecharset::ii#2 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 53.26315789473684 +(byte) makecharset::s#0 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 133334.66666666666 (byte*) memset::end (word) memset::num (void*) memset::return @@ -2339,16 +2339,16 @@ VARIABLE REGISTER WEIGHTS (void()) print_char((byte) print_char::ch) (byte) print_char::ch (byte*) print_char_cursor -(byte*) print_char_cursor#1 4.333333333333333 -(byte*) print_char_cursor#18 1.0 -(byte*) print_char_cursor#29 16.5 +(byte*) print_char_cursor#1 3667.333333333333 +(byte*) print_char_cursor#18 846.3076923076923 +(byte*) print_char_cursor#29 1501.5 (void()) print_cls() (byte*) print_line_cursor (byte*) print_screen (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 334.33333333333337 -(byte) sid_rnd::return#2 2002.0 +(byte) sid_rnd::return#0 366667.3333333334 +(byte) sid_rnd::return#2 200002.0 (void()) sid_rnd_init() Initial phi equivalence classes @@ -3173,84 +3173,82 @@ SINTABLE: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a -Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] -Statement [20] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ) always clobbers reg byte a -Statement [26] (byte) c1A#4 ← (byte) c1A#10 + (byte) 3 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [27] (byte) c1B#4 ← (byte) c1B#10 - (byte) 5 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [33] (byte) c2B#4 ← (byte) c2B#24 - (byte) 3 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [39] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#6 + (byte) $28 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ) always clobbers reg byte a +Statement [20] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] { } ) always clobbers reg byte a +Statement [26] (byte) c1A#4 ← (byte) c1A#10 + (byte) 3 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [27] (byte) c1B#4 ← (byte) c1B#10 - (byte) 5 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [33] (byte) c2B#4 ← (byte) c2B#24 - (byte) 3 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [39] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#6 + (byte) $28 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ doplasma::ii#2 doplasma::ii#1 ] -Statement [41] (byte~) doplasma::$6 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#2) [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ) always clobbers reg byte a +Statement [41] (byte~) doplasma::$6 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#2) [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ doplasma::i2#2 doplasma::i2#1 ] -Statement [44] (byte~) doplasma::$3 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ) always clobbers reg byte a +Statement [44] (byte~) doplasma::$3 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Statement [46] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [47] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [49] (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ) always clobbers reg byte a +Statement [46] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [47] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [49] (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Statement [51] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ) always clobbers reg byte a -Statement [52] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ) always clobbers reg byte a -Statement [59] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [61] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a -Statement [65] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a -Statement [73] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a +Statement [51] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [52] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [59] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [65] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [73] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ makecharset::s#0 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] -Statement [74] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [75] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [76] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y +Statement [74] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [75] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [76] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:31 [ makecharset::s#0 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] -Statement [84] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a +Statement [84] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ makecharset::ii#2 makecharset::ii#1 ] -Statement [89] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:68 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [97] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [99] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [101] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] ) always clobbers reg byte a -Statement [102] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a -Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ) always clobbers reg byte a -Statement [20] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ) always clobbers reg byte a -Statement [26] (byte) c1A#4 ← (byte) c1A#10 + (byte) 3 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [27] (byte) c1B#4 ← (byte) c1B#10 - (byte) 5 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [33] (byte) c2B#4 ← (byte) c2B#24 - (byte) 3 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ) always clobbers reg byte a -Statement [39] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#6 + (byte) $28 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [41] (byte~) doplasma::$6 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#2) [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ) always clobbers reg byte a -Statement [44] (byte~) doplasma::$3 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ) always clobbers reg byte a -Statement [46] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [47] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [49] (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ) always clobbers reg byte a -Statement [51] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ) always clobbers reg byte a -Statement [52] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ) always clobbers reg byte a -Statement [59] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [61] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a -Statement [65] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a -Statement [73] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a -Statement [74] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a -Statement [75] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a -Statement [76] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y -Statement [84] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a -Statement [89] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:68 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [97] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [99] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [101] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] ) always clobbers reg byte a -Statement [102] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] ) always clobbers reg byte a +Statement [89] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:68 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [97] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [101] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] { } ) always clobbers reg byte a +Statement [102] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [20] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ c1A#4 c1B#4 c2A#4 c2B#4 ] ( main:2 [ c1A#4 c1B#4 c2A#4 c2B#4 ] { } ) always clobbers reg byte a +Statement [26] (byte) c1A#4 ← (byte) c1A#10 + (byte) 3 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#10 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [27] (byte) c1B#4 ← (byte) c1B#10 - (byte) 5 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [33] (byte) c2B#4 ← (byte) c2B#24 - (byte) 3 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::screen#13 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [39] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#6 + (byte) $28 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#2 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [41] (byte~) doplasma::$6 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#2) [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#4 c2B#4 doplasma::ii#2 doplasma::screen#6 doplasma::i2#2 doplasma::$6 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [44] (byte~) doplasma::$3 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$3 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [46] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [47] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:15 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#4 c1B#4 c2A#24 c2B#24 doplasma::screen#13 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [49] (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::$1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [51] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [52] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:2::doplasma:15 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] { { c1A#10 = c1A#14 } { c1B#10 = c1B#14 } { c2A#14 = c2A#24 } { c2B#14 = c2B#24 } } main:2::doplasma:18 [ c1A#10 c1B#10 c2A#24 c2B#24 doplasma::screen#13 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] { { c1A#10 = c1A#4 } { c1B#10 = c1B#4 } { c2A#24 = c2A#4 } { c2B#24 = c2B#4 } } ) always clobbers reg byte a +Statement [59] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [65] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] { } ) always clobbers reg byte a +Statement [73] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] { } ) always clobbers reg byte a +Statement [74] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { } ) always clobbers reg byte a +Statement [75] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { } ) always clobbers reg byte a +Statement [76] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [84] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] { } ) always clobbers reg byte a +Statement [89] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:68 [ makecharset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [97] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:57::memset:93 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [101] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] { } ) always clobbers reg byte a +Statement [102] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:55 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::col#2 main::col#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] : zp[1]:5 , reg byte x , reg byte y , @@ -3286,41 +3284,39 @@ Potential registers zp[1]:41 [ makecharset::$7 ] : zp[1]:41 , reg byte a , reg b Potential registers zp[1]:42 [ sid_rnd::return#0 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makecharset] 3,785.68: zp[1]:24 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 2,402.4: zp[1]:23 [ makecharset::ii#2 makecharset::ii#1 ] 2,002: zp[1]:40 [ makecharset::$6 ] 2,002: zp[1]:41 [ makecharset::$7 ] 225.76: zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] 202: zp[2]:33 [ makecharset::$10 ] 202: zp[2]:35 [ makecharset::$11 ] 202: zp[2]:37 [ makecharset::$16 ] 53.26: zp[1]:31 [ makecharset::s#0 ] 27.78: zp[2]:18 [ makecharset::c#2 makecharset::c#1 ] 22: zp[1]:30 [ makecharset::$3 ] 22: zp[1]:32 [ makecharset::$12 ] -Uplift Scope [doplasma] 3,253.25: zp[1]:17 [ doplasma::i2#2 doplasma::i2#1 ] 2,002: zp[1]:27 [ doplasma::$6 ] 365: zp[1]:14 [ doplasma::ii#2 doplasma::ii#1 ] 273.23: zp[2]:15 [ doplasma::screen#6 doplasma::screen#2 doplasma::screen#13 ] 269.33: zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 269.33: zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] 202: zp[1]:28 [ doplasma::$3 ] 202: zp[1]:29 [ doplasma::$1 ] 166: zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 166: zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 145.58: zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 145.58: zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] -Uplift Scope [sid_rnd] 2,002: zp[1]:39 [ sid_rnd::return#2 ] 334.33: zp[1]:42 [ sid_rnd::return#0 ] -Uplift Scope [] 21.83: zp[2]:20 [ print_char_cursor#18 print_char_cursor#29 print_char_cursor#1 ] 14.43: zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] 14.22: zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] 13.59: zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] 13.57: zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] -Uplift Scope [memset] 36.67: zp[2]:25 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [main] 33: zp[2]:2 [ main::col#2 main::col#1 ] +Uplift Scope [doplasma] 3,250,003.25: zp[1]:17 [ doplasma::i2#2 doplasma::i2#1 ] 2,000,002: zp[1]:27 [ doplasma::$6 ] 362,502.5: zp[1]:14 [ doplasma::ii#2 doplasma::ii#1 ] 271,616.52: zp[2]:15 [ doplasma::screen#6 doplasma::screen#2 doplasma::screen#13 ] 266,669.33: zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 266,669.33: zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] 200,002: zp[1]:28 [ doplasma::$3 ] 200,002: zp[1]:29 [ doplasma::$1 ] 162,203.8: zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 162,203.8: zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 142,919.33: zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 142,919.33: zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Uplift Scope [makecharset] 378,185.68: zp[1]:24 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 240,002.4: zp[1]:23 [ makecharset::ii#2 makecharset::ii#1 ] 200,002: zp[1]:40 [ makecharset::$6 ] 200,002: zp[1]:41 [ makecharset::$7 ] 22,355.18: zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] 20,002: zp[2]:33 [ makecharset::$10 ] 20,002: zp[2]:35 [ makecharset::$11 ] 20,002: zp[2]:37 [ makecharset::$16 ] 5,315.89: zp[1]:31 [ makecharset::s#0 ] 2,557.78: zp[2]:18 [ makecharset::c#2 makecharset::c#1 ] 2,002: zp[1]:30 [ makecharset::$3 ] 2,002: zp[1]:32 [ makecharset::$12 ] +Uplift Scope [sid_rnd] 366,667.33: zp[1]:42 [ sid_rnd::return#0 ] 200,002: zp[1]:39 [ sid_rnd::return#2 ] +Uplift Scope [memset] 333,336.67: zp[2]:25 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [] 6,015.14: zp[2]:20 [ print_char_cursor#18 print_char_cursor#29 print_char_cursor#1 ] 362.88: zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] 344.33: zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] 272.79: zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] 271.95: zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] +Uplift Scope [main] 303: zp[2]:2 [ main::col#2 main::col#1 ] Uplift Scope [RADIX] Uplift Scope [print_char] Uplift Scope [print_cls] Uplift Scope [sid_rnd_init] -Uplifting [makecharset] best 159957 combination reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$6 ] zp[1]:41 [ makecharset::$7 ] zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] zp[2]:33 [ makecharset::$10 ] zp[2]:35 [ makecharset::$11 ] zp[2]:37 [ makecharset::$16 ] zp[1]:31 [ makecharset::s#0 ] zp[2]:18 [ makecharset::c#2 makecharset::c#1 ] zp[1]:30 [ makecharset::$3 ] zp[1]:32 [ makecharset::$12 ] -Limited combination testing to 100 combinations of 9216 possible. -Uplifting [doplasma] best 135057 combination reg byte y [ doplasma::i2#2 doplasma::i2#1 ] reg byte a [ doplasma::$6 ] reg byte x [ doplasma::ii#2 doplasma::ii#1 ] zp[2]:15 [ doplasma::screen#6 doplasma::screen#2 doplasma::screen#13 ] zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] zp[1]:28 [ doplasma::$3 ] zp[1]:29 [ doplasma::$1 ] zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Uplifting [doplasma] best 158157 combination reg byte y [ doplasma::i2#2 doplasma::i2#1 ] reg byte a [ doplasma::$6 ] reg byte x [ doplasma::ii#2 doplasma::ii#1 ] zp[2]:15 [ doplasma::screen#6 doplasma::screen#2 doplasma::screen#13 ] zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] zp[1]:28 [ doplasma::$3 ] zp[1]:29 [ doplasma::$1 ] zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Limited combination testing to 100 combinations of 419904 possible. -Uplifting [sid_rnd] best 126054 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [] best 126054 combination zp[2]:20 [ print_char_cursor#18 print_char_cursor#29 print_char_cursor#1 ] zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] +Uplifting [makecharset] best 135057 combination reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$6 ] zp[1]:41 [ makecharset::$7 ] zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] zp[2]:33 [ makecharset::$10 ] zp[2]:35 [ makecharset::$11 ] zp[2]:37 [ makecharset::$16 ] zp[1]:31 [ makecharset::s#0 ] zp[2]:18 [ makecharset::c#2 makecharset::c#1 ] zp[1]:30 [ makecharset::$3 ] zp[1]:32 [ makecharset::$12 ] +Limited combination testing to 100 combinations of 9216 possible. +Uplifting [sid_rnd] best 126054 combination reg byte a [ sid_rnd::return#0 ] reg byte a [ sid_rnd::return#2 ] Uplifting [memset] best 126054 combination zp[2]:25 [ memset::dst#2 memset::dst#1 ] +Uplifting [] best 126054 combination zp[2]:20 [ print_char_cursor#18 print_char_cursor#29 print_char_cursor#1 ] zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] Uplifting [main] best 126054 combination zp[2]:2 [ main::col#2 main::col#1 ] Uplifting [RADIX] best 126054 combination Uplifting [print_char] best 126054 combination Uplifting [print_cls] best 126054 combination Uplifting [sid_rnd_init] best 126054 combination -Attempting to uplift remaining variables inzp[1]:41 [ makecharset::$7 ] -Uplifting [makecharset] best 126054 combination zp[1]:41 [ makecharset::$7 ] Attempting to uplift remaining variables inzp[1]:8 [ doplasma::i#2 doplasma::i#1 ] Uplifting [doplasma] best 126054 combination zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] Attempting to uplift remaining variables inzp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] Uplifting [doplasma] best 126054 combination zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ] -Attempting to uplift remaining variables inzp[1]:22 [ makecharset::i#2 makecharset::i#1 ] -Uplifting [makecharset] best 126054 combination zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] Attempting to uplift remaining variables inzp[1]:28 [ doplasma::$3 ] Uplifting [doplasma] best 125454 combination reg byte a [ doplasma::$3 ] Attempting to uplift remaining variables inzp[1]:29 [ doplasma::$1 ] Uplifting [doplasma] best 124854 combination reg byte a [ doplasma::$1 ] +Attempting to uplift remaining variables inzp[1]:41 [ makecharset::$7 ] +Uplifting [makecharset] best 124854 combination zp[1]:41 [ makecharset::$7 ] Attempting to uplift remaining variables inzp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] Uplifting [doplasma] best 124854 combination zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] Attempting to uplift remaining variables inzp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] @@ -3329,20 +3325,22 @@ Attempting to uplift remaining variables inzp[1]:9 [ doplasma::c1a#2 doplasma::c Uplifting [doplasma] best 124854 combination zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Attempting to uplift remaining variables inzp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Uplifting [doplasma] best 124854 combination zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Attempting to uplift remaining variables inzp[1]:22 [ makecharset::i#2 makecharset::i#1 ] +Uplifting [makecharset] best 124854 combination zp[1]:22 [ makecharset::i#2 makecharset::i#1 ] Attempting to uplift remaining variables inzp[1]:31 [ makecharset::s#0 ] Uplifting [makecharset] best 124854 combination zp[1]:31 [ makecharset::s#0 ] Attempting to uplift remaining variables inzp[1]:30 [ makecharset::$3 ] -Uplifting [makecharset] best 124814 combination reg byte a [ makecharset::$3 ] +Uplifting [makecharset] best 124794 combination reg byte x [ makecharset::$3 ] Attempting to uplift remaining variables inzp[1]:32 [ makecharset::$12 ] -Uplifting [makecharset] best 124754 combination reg byte a [ makecharset::$12 ] +Uplifting [makecharset] best 124734 combination reg byte a [ makecharset::$12 ] Attempting to uplift remaining variables inzp[1]:4 [ c1A#10 c1A#14 c1A#4 ] -Uplifting [] best 124754 combination zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] +Uplifting [] best 124734 combination zp[1]:4 [ c1A#10 c1A#14 c1A#4 ] Attempting to uplift remaining variables inzp[1]:5 [ c1B#10 c1B#14 c1B#4 ] -Uplifting [] best 124754 combination zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] -Attempting to uplift remaining variables inzp[1]:7 [ c2B#24 c2B#14 c2B#4 ] -Uplifting [] best 124754 combination zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] +Uplifting [] best 124734 combination zp[1]:5 [ c1B#10 c1B#14 c1B#4 ] Attempting to uplift remaining variables inzp[1]:6 [ c2A#24 c2A#14 c2A#4 ] -Uplifting [] best 124754 combination zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] +Uplifting [] best 124734 combination zp[1]:6 [ c2A#24 c2A#14 c2A#4 ] +Attempting to uplift remaining variables inzp[1]:7 [ c2B#24 c2B#14 c2B#4 ] +Uplifting [] best 124734 combination zp[1]:7 [ c2B#24 c2B#14 c2B#4 ] Coalescing zero page register [ zp[2]:33 [ makecharset::$10 ] ] with [ zp[2]:35 [ makecharset::$11 ] ] - score: 1 Coalescing zero page register [ zp[2]:33 [ makecharset::$10 makecharset::$11 ] ] with [ zp[2]:37 [ makecharset::$16 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ makecharset::c#2 makecharset::c#1 ] ] with [ zp[2]:15 [ doplasma::screen#6 doplasma::screen#2 doplasma::screen#13 ] ] @@ -3786,11 +3784,10 @@ makecharset: { rts // makecharset::@2 __b2: - // [61] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 - lda.z c - // [62] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuaa - tay - lda SINTABLE,y + // [61] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuxx=_lo_vwuz1 + ldx.z c + // [62] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuxx + lda SINTABLE,x sta.z s // [63] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] __b3_from___b2: @@ -4194,25 +4191,25 @@ FINAL SYMBOL TABLE .byte round(127.5+127.5*sin(2*PI*i/256)) }} (byte) c1A -(byte) c1A#10 c1A zp[1]:2 2.6000000000000005 -(byte) c1A#14 c1A zp[1]:2 11.0 -(byte) c1A#4 c1A zp[1]:2 0.8275862068965517 +(byte) c1A#10 c1A zp[1]:2 220.39999999999998 +(byte) c1A#14 c1A zp[1]:2 101.0 +(byte) c1A#4 c1A zp[1]:2 41.48275862068965 (byte) c1B -(byte) c1B#10 c1B zp[1]:3 2.3636363636363633 -(byte) c1B#14 c1B zp[1]:3 11.0 -(byte) c1B#4 c1B zp[1]:3 0.8571428571428571 +(byte) c1B#10 c1B zp[1]:3 200.36363636363637 +(byte) c1B#14 c1B zp[1]:3 101.0 +(byte) c1B#4 c1B zp[1]:3 42.964285714285715 (byte) c2A -(byte) c2A#14 c2A zp[1]:4 11.0 -(byte) c2A#24 c2A zp[1]:4 1.2380952380952381 -(byte) c2A#4 c2A zp[1]:4 1.3333333333333335 +(byte) c2A#14 c2A zp[1]:4 101.0 +(byte) c2A#24 c2A zp[1]:4 104.95238095238095 +(byte) c2A#4 c2A zp[1]:4 66.83333333333334 (byte) c2B -(byte) c2B#14 c2B zp[1]:5 11.0 -(byte) c2B#24 c2B zp[1]:5 1.1818181818181817 -(byte) c2B#4 c2B zp[1]:5 1.411764705882353 +(byte) c2B#14 c2B zp[1]:5 101.0 +(byte) c2B#24 c2B zp[1]:5 100.18181818181819 +(byte) c2B#4 c2B zp[1]:5 70.76470588235294 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$1 reg byte a 202.0 -(byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$6 reg byte a 2002.0 +(byte~) doplasma::$1 reg byte a 200002.0 +(byte~) doplasma::$3 reg byte a 200002.0 +(byte~) doplasma::$6 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@10 (label) doplasma::@2 @@ -4225,37 +4222,37 @@ FINAL SYMBOL TABLE (label) doplasma::@9 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp[1]:14 2.0 -(byte) doplasma::c1a#1 c1a zp[1]:14 67.33333333333333 -(byte) doplasma::c1a#2 c1a zp[1]:14 76.25 +(byte) doplasma::c1a#0 c1a zp[1]:14 1001.0 +(byte) doplasma::c1a#1 c1a zp[1]:14 66667.33333333333 +(byte) doplasma::c1a#2 c1a zp[1]:14 75251.0 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp[1]:17 4.0 -(byte) doplasma::c1b#1 c1b zp[1]:17 101.0 -(byte) doplasma::c1b#2 c1b zp[1]:17 61.0 +(byte) doplasma::c1b#0 c1b zp[1]:17 2002.0 +(byte) doplasma::c1b#1 c1b zp[1]:17 100001.0 +(byte) doplasma::c1b#2 c1b zp[1]:17 60200.8 (byte) doplasma::c2a -(byte) doplasma::c2a#0 c2a zp[1]:7 2.0 -(byte) doplasma::c2a#1 c2a zp[1]:7 67.33333333333333 -(byte) doplasma::c2a#2 c2a zp[1]:7 76.25 +(byte) doplasma::c2a#0 c2a zp[1]:7 1001.0 +(byte) doplasma::c2a#1 c2a zp[1]:7 66667.33333333333 +(byte) doplasma::c2a#2 c2a zp[1]:7 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 c2b zp[1]:8 4.0 -(byte) doplasma::c2b#1 c2b zp[1]:8 101.0 -(byte) doplasma::c2b#2 c2b zp[1]:8 61.0 +(byte) doplasma::c2b#0 c2b zp[1]:8 2002.0 +(byte) doplasma::c2b#1 c2b zp[1]:8 100001.0 +(byte) doplasma::c2b#2 c2b zp[1]:8 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 i zp[1]:13 202.0 -(byte) doplasma::i#2 i zp[1]:13 67.33333333333333 +(byte) doplasma::i#1 i zp[1]:13 200002.0 +(byte) doplasma::i#2 i zp[1]:13 66667.33333333333 (byte) doplasma::i1 -(byte) doplasma::i1#1 i1 zp[1]:6 202.0 -(byte) doplasma::i1#2 i1 zp[1]:6 67.33333333333333 +(byte) doplasma::i1#1 i1 zp[1]:6 200002.0 +(byte) doplasma::i1#2 i1 zp[1]:6 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 reg byte y 2002.0 -(byte) doplasma::i2#2 reg byte y 1251.25 +(byte) doplasma::i2#1 reg byte y 2000002.0 +(byte) doplasma::i2#2 reg byte y 1250001.25 (byte) doplasma::ii -(byte) doplasma::ii#1 reg byte x 202.0 -(byte) doplasma::ii#2 reg byte x 163.0 +(byte) doplasma::ii#1 reg byte x 200002.0 +(byte) doplasma::ii#2 reg byte x 162500.5 (byte*) doplasma::screen -(byte*) doplasma::screen#13 screen zp[2]:9 0.08695652173913043 -(byte*) doplasma::screen#2 screen zp[2]:9 101.0 -(byte*) doplasma::screen#6 screen zp[2]:9 172.14285714285714 +(byte*) doplasma::screen#13 screen zp[2]:9 43.52173913043478 +(byte*) doplasma::screen#2 screen zp[2]:9 100001.0 +(byte*) doplasma::screen#6 screen zp[2]:9 171572.0 (const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) } (const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) } (void()) main() @@ -4266,8 +4263,8 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte*) main::col -(byte*) main::col#1 col zp[2]:11 16.5 -(byte*) main::col#2 col zp[2]:11 16.5 +(byte*) main::col#1 col zp[2]:11 151.5 +(byte*) main::col#2 col zp[2]:11 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -4279,13 +4276,13 @@ FINAL SYMBOL TABLE (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 zp[2]:15 202.0 -(word~) makecharset::$11 zp[2]:15 202.0 -(byte~) makecharset::$12 reg byte a 22.0 -(byte*~) makecharset::$16 zp[2]:15 202.0 -(byte~) makecharset::$3 reg byte a 22.0 -(byte~) makecharset::$6 reg byte a 2002.0 -(byte~) makecharset::$7 zp[1]:17 2002.0 +(word~) makecharset::$10 zp[2]:15 20002.0 +(word~) makecharset::$11 zp[2]:15 20002.0 +(byte~) makecharset::$12 reg byte a 2002.0 +(byte*~) makecharset::$16 zp[2]:15 20002.0 +(byte~) makecharset::$3 reg byte x 2002.0 +(byte~) makecharset::$6 reg byte a 200002.0 +(byte~) makecharset::$7 zp[1]:17 200002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -4301,22 +4298,22 @@ FINAL SYMBOL TABLE (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 282.1818181818182 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 28182.181818181816 +(byte) makecharset::b#6 reg byte y 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) makecharset::c -(word) makecharset::c#1 c zp[2]:9 22.0 -(word) makecharset::c#2 c zp[2]:9 5.777777777777778 +(word) makecharset::c#1 c zp[2]:9 2002.0 +(word) makecharset::c#2 c zp[2]:9 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:13 202.0 -(byte) makecharset::i#2 i zp[1]:13 23.764705882352942 +(byte) makecharset::i#1 i zp[1]:13 20002.0 +(byte) makecharset::i#2 i zp[1]:13 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 reg byte x 2002.0 -(byte) makecharset::ii#2 reg byte x 400.4 +(byte) makecharset::ii#1 reg byte x 200002.0 +(byte) makecharset::ii#2 reg byte x 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 s zp[1]:14 53.26315789473684 +(byte) makecharset::s#0 s zp[1]:14 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -4324,8 +4321,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:15 22.0 -(byte*) memset::dst#2 dst zp[2]:15 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:15 200002.0 +(byte*) memset::dst#2 dst zp[2]:15 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4338,9 +4335,9 @@ FINAL SYMBOL TABLE (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 1.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:11 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 846.3076923076923 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:11 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -4349,8 +4346,8 @@ FINAL SYMBOL TABLE (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return @@ -4371,7 +4368,7 @@ reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte a [ doplasma::$6 ] reg byte a [ doplasma::$3 ] reg byte a [ doplasma::$1 ] -reg byte a [ makecharset::$3 ] +reg byte x [ makecharset::$3 ] zp[1]:14 [ makecharset::s#0 doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] reg byte a [ makecharset::$12 ] zp[2]:15 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ] @@ -4382,7 +4379,7 @@ reg byte a [ sid_rnd::return#0 ] FINAL ASSEMBLER -Score: 97772 +Score: 97752 // File Comments // A KickC version of the plasma routine from the CC65 samples @@ -4781,12 +4778,11 @@ makecharset: { // makecharset::@2 __b2: // makecharset::@3] // [63] phi (byte) makecharset::i#2 = (byte) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 diff --git a/src/test/ref/examples/plasma/plasma.sym b/src/test/ref/examples/plasma/plasma.sym index 4a943f104..56d8a98f7 100644 --- a/src/test/ref/examples/plasma/plasma.sym +++ b/src/test/ref/examples/plasma/plasma.sym @@ -22,25 +22,25 @@ .byte round(127.5+127.5*sin(2*PI*i/256)) }} (byte) c1A -(byte) c1A#10 c1A zp[1]:2 2.6000000000000005 -(byte) c1A#14 c1A zp[1]:2 11.0 -(byte) c1A#4 c1A zp[1]:2 0.8275862068965517 +(byte) c1A#10 c1A zp[1]:2 220.39999999999998 +(byte) c1A#14 c1A zp[1]:2 101.0 +(byte) c1A#4 c1A zp[1]:2 41.48275862068965 (byte) c1B -(byte) c1B#10 c1B zp[1]:3 2.3636363636363633 -(byte) c1B#14 c1B zp[1]:3 11.0 -(byte) c1B#4 c1B zp[1]:3 0.8571428571428571 +(byte) c1B#10 c1B zp[1]:3 200.36363636363637 +(byte) c1B#14 c1B zp[1]:3 101.0 +(byte) c1B#4 c1B zp[1]:3 42.964285714285715 (byte) c2A -(byte) c2A#14 c2A zp[1]:4 11.0 -(byte) c2A#24 c2A zp[1]:4 1.2380952380952381 -(byte) c2A#4 c2A zp[1]:4 1.3333333333333335 +(byte) c2A#14 c2A zp[1]:4 101.0 +(byte) c2A#24 c2A zp[1]:4 104.95238095238095 +(byte) c2A#4 c2A zp[1]:4 66.83333333333334 (byte) c2B -(byte) c2B#14 c2B zp[1]:5 11.0 -(byte) c2B#24 c2B zp[1]:5 1.1818181818181817 -(byte) c2B#4 c2B zp[1]:5 1.411764705882353 +(byte) c2B#14 c2B zp[1]:5 101.0 +(byte) c2B#24 c2B zp[1]:5 100.18181818181819 +(byte) c2B#4 c2B zp[1]:5 70.76470588235294 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$1 reg byte a 202.0 -(byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$6 reg byte a 2002.0 +(byte~) doplasma::$1 reg byte a 200002.0 +(byte~) doplasma::$3 reg byte a 200002.0 +(byte~) doplasma::$6 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@10 (label) doplasma::@2 @@ -53,37 +53,37 @@ (label) doplasma::@9 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp[1]:14 2.0 -(byte) doplasma::c1a#1 c1a zp[1]:14 67.33333333333333 -(byte) doplasma::c1a#2 c1a zp[1]:14 76.25 +(byte) doplasma::c1a#0 c1a zp[1]:14 1001.0 +(byte) doplasma::c1a#1 c1a zp[1]:14 66667.33333333333 +(byte) doplasma::c1a#2 c1a zp[1]:14 75251.0 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp[1]:17 4.0 -(byte) doplasma::c1b#1 c1b zp[1]:17 101.0 -(byte) doplasma::c1b#2 c1b zp[1]:17 61.0 +(byte) doplasma::c1b#0 c1b zp[1]:17 2002.0 +(byte) doplasma::c1b#1 c1b zp[1]:17 100001.0 +(byte) doplasma::c1b#2 c1b zp[1]:17 60200.8 (byte) doplasma::c2a -(byte) doplasma::c2a#0 c2a zp[1]:7 2.0 -(byte) doplasma::c2a#1 c2a zp[1]:7 67.33333333333333 -(byte) doplasma::c2a#2 c2a zp[1]:7 76.25 +(byte) doplasma::c2a#0 c2a zp[1]:7 1001.0 +(byte) doplasma::c2a#1 c2a zp[1]:7 66667.33333333333 +(byte) doplasma::c2a#2 c2a zp[1]:7 75251.0 (byte) doplasma::c2b -(byte) doplasma::c2b#0 c2b zp[1]:8 4.0 -(byte) doplasma::c2b#1 c2b zp[1]:8 101.0 -(byte) doplasma::c2b#2 c2b zp[1]:8 61.0 +(byte) doplasma::c2b#0 c2b zp[1]:8 2002.0 +(byte) doplasma::c2b#1 c2b zp[1]:8 100001.0 +(byte) doplasma::c2b#2 c2b zp[1]:8 60200.8 (byte) doplasma::i -(byte) doplasma::i#1 i zp[1]:13 202.0 -(byte) doplasma::i#2 i zp[1]:13 67.33333333333333 +(byte) doplasma::i#1 i zp[1]:13 200002.0 +(byte) doplasma::i#2 i zp[1]:13 66667.33333333333 (byte) doplasma::i1 -(byte) doplasma::i1#1 i1 zp[1]:6 202.0 -(byte) doplasma::i1#2 i1 zp[1]:6 67.33333333333333 +(byte) doplasma::i1#1 i1 zp[1]:6 200002.0 +(byte) doplasma::i1#2 i1 zp[1]:6 66667.33333333333 (byte) doplasma::i2 -(byte) doplasma::i2#1 reg byte y 2002.0 -(byte) doplasma::i2#2 reg byte y 1251.25 +(byte) doplasma::i2#1 reg byte y 2000002.0 +(byte) doplasma::i2#2 reg byte y 1250001.25 (byte) doplasma::ii -(byte) doplasma::ii#1 reg byte x 202.0 -(byte) doplasma::ii#2 reg byte x 163.0 +(byte) doplasma::ii#1 reg byte x 200002.0 +(byte) doplasma::ii#2 reg byte x 162500.5 (byte*) doplasma::screen -(byte*) doplasma::screen#13 screen zp[2]:9 0.08695652173913043 -(byte*) doplasma::screen#2 screen zp[2]:9 101.0 -(byte*) doplasma::screen#6 screen zp[2]:9 172.14285714285714 +(byte*) doplasma::screen#13 screen zp[2]:9 43.52173913043478 +(byte*) doplasma::screen#2 screen zp[2]:9 100001.0 +(byte*) doplasma::screen#6 screen zp[2]:9 171572.0 (const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) } (const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) } (void()) main() @@ -94,8 +94,8 @@ (label) main::@5 (label) main::@6 (byte*) main::col -(byte*) main::col#1 col zp[2]:11 16.5 -(byte*) main::col#2 col zp[2]:11 16.5 +(byte*) main::col#1 col zp[2]:11 151.5 +(byte*) main::col#2 col zp[2]:11 151.5 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -107,13 +107,13 @@ (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) makecharset((byte*) makecharset::charset) -(word~) makecharset::$10 zp[2]:15 202.0 -(word~) makecharset::$11 zp[2]:15 202.0 -(byte~) makecharset::$12 reg byte a 22.0 -(byte*~) makecharset::$16 zp[2]:15 202.0 -(byte~) makecharset::$3 reg byte a 22.0 -(byte~) makecharset::$6 reg byte a 2002.0 -(byte~) makecharset::$7 zp[1]:17 2002.0 +(word~) makecharset::$10 zp[2]:15 20002.0 +(word~) makecharset::$11 zp[2]:15 20002.0 +(byte~) makecharset::$12 reg byte a 2002.0 +(byte*~) makecharset::$16 zp[2]:15 20002.0 +(byte~) makecharset::$3 reg byte x 2002.0 +(byte~) makecharset::$6 reg byte a 200002.0 +(byte~) makecharset::$7 zp[1]:17 200002.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -129,22 +129,22 @@ (label) makecharset::@9 (label) makecharset::@return (byte) makecharset::b -(byte) makecharset::b#1 reg byte y 2002.0 -(byte) makecharset::b#2 reg byte y 282.1818181818182 -(byte) makecharset::b#6 reg byte y 1501.5 +(byte) makecharset::b#1 reg byte y 200002.0 +(byte) makecharset::b#2 reg byte y 28182.181818181816 +(byte) makecharset::b#6 reg byte y 150001.5 (const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) makecharset::c -(word) makecharset::c#1 c zp[2]:9 22.0 -(word) makecharset::c#2 c zp[2]:9 5.777777777777778 +(word) makecharset::c#1 c zp[2]:9 2002.0 +(word) makecharset::c#2 c zp[2]:9 555.7777777777778 (byte*) makecharset::charset (byte) makecharset::i -(byte) makecharset::i#1 i zp[1]:13 202.0 -(byte) makecharset::i#2 i zp[1]:13 23.764705882352942 +(byte) makecharset::i#1 i zp[1]:13 20002.0 +(byte) makecharset::i#2 i zp[1]:13 2353.176470588235 (byte) makecharset::ii -(byte) makecharset::ii#1 reg byte x 2002.0 -(byte) makecharset::ii#2 reg byte x 400.4 +(byte) makecharset::ii#1 reg byte x 200002.0 +(byte) makecharset::ii#2 reg byte x 40000.4 (byte) makecharset::s -(byte) makecharset::s#0 s zp[1]:14 53.26315789473684 +(byte) makecharset::s#0 s zp[1]:14 5315.894736842105 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -152,8 +152,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:15 22.0 -(byte*) memset::dst#2 dst zp[2]:15 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:15 200002.0 +(byte*) memset::dst#2 dst zp[2]:15 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -166,9 +166,9 @@ (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 1.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:11 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:11 846.3076923076923 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:11 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -177,8 +177,8 @@ (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return @@ -199,7 +199,7 @@ reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte a [ doplasma::$6 ] reg byte a [ doplasma::$3 ] reg byte a [ doplasma::$1 ] -reg byte a [ makecharset::$3 ] +reg byte x [ makecharset::$3 ] zp[1]:14 [ makecharset::s#0 doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] reg byte a [ makecharset::$12 ] zp[2]:15 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ] diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log index 7c176b023..d64f8a919 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.log +++ b/src/test/ref/examples/rasterbars/raster-bars.log @@ -200,12 +200,12 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) raster() (byte) raster::col -(byte) raster::col#0 4.0 -(byte) raster::col#1 101.0 -(byte) raster::col#2 152.5 +(byte) raster::col#0 2002.0 +(byte) raster::col#1 100001.0 +(byte) raster::col#2 150502.0 (byte) raster::i -(byte) raster::i#1 75.75 -(byte) raster::i#2 67.33333333333333 +(byte) raster::i#1 75000.75 +(byte) raster::i#2 66667.33333333333 Initial phi equivalence classes [ raster::col#2 raster::col#0 raster::col#1 ] @@ -358,13 +358,13 @@ raster: { rastercols: .byte $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] if(*((const byte*) RASTER)!=(byte) $a) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] if(*((const byte*) RASTER)!=(byte) $b) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER)!=(byte) $a) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] if(*((const byte*) RASTER)!=(byte) $b) goto main::@2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ raster::col#2 raster::col#0 raster::col#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ raster::i#2 raster::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [raster] 257.5: zp[1]:2 [ raster::col#2 raster::col#0 raster::col#1 ] 143.08: zp[1]:3 [ raster::i#2 raster::i#1 ] +Uplift Scope [raster] 252,505: zp[1]:2 [ raster::col#2 raster::col#0 raster::col#1 ] 141,668.08: zp[1]:3 [ raster::i#2 raster::i#1 ] Uplift Scope [main] Uplift Scope [] @@ -547,12 +547,12 @@ FINAL SYMBOL TABLE (label) raster::@1 (label) raster::@return (byte) raster::col -(byte) raster::col#0 reg byte a 4.0 -(byte) raster::col#1 reg byte a 101.0 -(byte) raster::col#2 reg byte a 152.5 +(byte) raster::col#0 reg byte a 2002.0 +(byte) raster::col#1 reg byte a 100001.0 +(byte) raster::col#2 reg byte a 150502.0 (byte) raster::i -(byte) raster::i#1 reg byte x 75.75 -(byte) raster::i#2 reg byte x 67.33333333333333 +(byte) raster::i#1 reg byte x 75000.75 +(byte) raster::i#2 reg byte x 66667.33333333333 (const byte*) rastercols[] = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff } reg byte a [ raster::col#2 raster::col#0 raster::col#1 ] diff --git a/src/test/ref/examples/rasterbars/raster-bars.sym b/src/test/ref/examples/rasterbars/raster-bars.sym index d02cfc82e..c1c8c024d 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.sym +++ b/src/test/ref/examples/rasterbars/raster-bars.sym @@ -12,12 +12,12 @@ (label) raster::@1 (label) raster::@return (byte) raster::col -(byte) raster::col#0 reg byte a 4.0 -(byte) raster::col#1 reg byte a 101.0 -(byte) raster::col#2 reg byte a 152.5 +(byte) raster::col#0 reg byte a 2002.0 +(byte) raster::col#1 reg byte a 100001.0 +(byte) raster::col#2 reg byte a 150502.0 (byte) raster::i -(byte) raster::i#1 reg byte x 75.75 -(byte) raster::i#2 reg byte x 67.33333333333333 +(byte) raster::i#1 reg byte x 75000.75 +(byte) raster::i#2 reg byte x 66667.33333333333 (const byte*) rastercols[] = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff } reg byte a [ raster::col#2 raster::col#0 raster::col#1 ] diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log index f10c05d11..5b73dd86c 100644 --- a/src/test/ref/examples/rotate/rotate.log +++ b/src/test/ref/examples/rotate/rotate.log @@ -1337,86 +1337,86 @@ Inversing boolean not [70] (bool~) mulf8s_prepared::$3 ← *((const signed byte* Inversing boolean not [74] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#5 >= (signed byte) 0 from [73] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#5 < (signed byte) 0 Inversing boolean not [232] (bool~) anim::$22 ← (byte~) anim::$20 == (byte) 0 from [231] (bool~) anim::$21 ← (byte~) anim::$20 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 -Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 -Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 -Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 -Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$6 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 -Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 -Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 -Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 -Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$8 (byte) mulf_init::x_255#5 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 -Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 (word) mulf8u_prepared::return#3 (word) mulf8u_prepared::return#1 -Alias (byte) mulf8u_prepared::b#0 = (byte~) mulf8s_prepared::$0 -Alias (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#4 -Alias (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#7 (signed byte) mulf8s_prepared::b#6 -Alias (word) mulf8s_prepared::m#0 = (word~) mulf8s_prepared::$1 (word) mulf8s_prepared::m#3 -Alias (byte~) mulf8s_prepared::$15 = (byte~) mulf8s_prepared::$10 -Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$6 (signed word) mulf8s_prepared::return#6 (signed word) mulf8s_prepared::return#1 -Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6 -Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$14 -Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 -Alias (byte) print_byte_at::b#0 = (byte~) print_word_at::$0 -Alias (word) print_word_at::w#2 = (word) print_word_at::w#3 -Alias (byte*) print_word_at::at#2 = (byte*) print_word_at::at#3 -Alias (byte) print_byte_at::b#1 = (byte~) print_word_at::$2 -Alias (byte*) print_byte_at::at#1 = (byte*~) print_word_at::$3 -Alias (word) print_word_at::w#0 = (word~) print_dword_at::$0 -Alias (dword) print_dword_at::dw#1 = (dword) print_dword_at::dw#2 -Alias (byte*) print_dword_at::at#1 = (byte*) print_dword_at::at#2 -Alias (word) print_word_at::w#1 = (word~) print_dword_at::$2 -Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 -Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 -Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 -Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 -Alias (byte*) init::sprites_ptr#0 = (byte*~) init::$1 -Alias (byte) anim::angle#2 = (byte) anim::angle#4 (byte) anim::angle#6 -Alias (signed byte) anim::cos_a#0 = (signed byte~) anim::$3 -Alias (signed byte) anim::sin_a#0 = (signed byte~) anim::$4 -Alias (signed byte) anim::cos_a#1 = (signed byte) anim::mulf8s_prepare1_a#0 (signed byte) anim::mulf8s_prepare1_a#1 (signed byte) anim::cos_a#13 (signed byte) anim::cos_a#12 (signed byte) anim::cos_a#11 (signed byte) anim::cos_a#10 (signed byte) anim::cos_a#9 (signed byte) anim::cos_a#8 (signed byte) anim::cos_a#7 (signed byte) anim::cos_a#6 (signed byte) anim::cos_a#5 (signed byte) anim::cos_a#4 (signed byte) anim::cos_a#3 -Alias (signed byte) anim::x#0 = (signed byte) anim::x#5 (signed byte) anim::x#3 (signed byte) anim::x#1 (signed byte) anim::x#9 (signed byte) anim::x#8 (signed byte) anim::x#7 (signed byte) anim::x#6 (signed byte) anim::x#4 (signed byte) anim::x#2 -Alias (signed byte) anim::y#0 = (signed byte) anim::y#7 (signed byte) anim::y#5 (signed byte) anim::y#3 (signed byte) anim::y#1 (signed byte) anim::y#8 (signed byte) anim::y#6 (signed byte) anim::y#4 (signed byte) anim::y#2 -Alias (signed byte) anim::sin_a#1 = (signed byte) anim::sin_a#5 (signed byte) anim::sin_a#6 (signed byte) anim::sin_a#4 (signed byte) anim::sin_a#3 (signed byte) anim::sin_a#2 (signed byte) anim::mulf8s_prepare2_a#0 (signed byte) anim::mulf8s_prepare2_a#1 (signed byte) anim::sin_a#13 (signed byte) anim::sin_a#12 (signed byte) anim::sin_a#11 (signed byte) anim::sin_a#10 (signed byte) anim::sin_a#9 (signed byte) anim::sin_a#8 -Alias (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#15 (byte) anim::sprite_msb#16 (byte) anim::sprite_msb#14 (byte) anim::sprite_msb#13 (byte) anim::sprite_msb#12 (byte) anim::sprite_msb#11 (byte) anim::sprite_msb#9 (byte) anim::sprite_msb#8 (byte) anim::sprite_msb#6 (byte) anim::sprite_msb#3 -Alias (byte) anim::i#10 = (byte) anim::i#14 (byte) anim::i#2 (byte) anim::i#13 (byte) anim::i#12 (byte) anim::i#11 (byte) anim::i#9 (byte) anim::i#8 (byte) anim::i#7 (byte) anim::i#6 (byte) anim::i#5 (byte) anim::i#4 -Alias (byte) anim::angle#10 = (byte) anim::angle#20 (byte) anim::angle#21 (byte) anim::angle#19 (byte) anim::angle#18 (byte) anim::angle#17 (byte) anim::angle#16 (byte) anim::angle#15 (byte) anim::angle#13 (byte) anim::angle#12 (byte) anim::angle#8 (byte) anim::angle#7 -Alias (byte) mulf8u_prepare::a#0 = (byte~) anim::mulf8s_prepare1_$0 -Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#7 -Alias (signed word) anim::xr#0 = (signed word~) anim::$7 (signed word) anim::xr#7 (signed word) anim::xr#6 (signed word) anim::xr#5 (signed word) anim::xr#4 (signed word) anim::xr#2 -Alias (signed word) mulf8s_prepared::return#3 = (signed word) mulf8s_prepared::return#8 -Alias (signed word) anim::yr#0 = (signed word~) anim::$9 (signed word) anim::yr#8 (signed word) anim::yr#7 (signed word) anim::yr#6 (signed word) anim::yr#4 (signed word) anim::yr#2 -Alias (byte) mulf8u_prepare::a#1 = (byte~) anim::mulf8s_prepare2_$0 -Alias (signed word) mulf8s_prepared::return#4 = (signed word) mulf8s_prepared::return#9 -Alias (signed word) mulf8s_prepared::return#10 = (signed word) mulf8s_prepared::return#5 -Alias (signed word) anim::xr#1 = (signed word) anim::xr#3 -Alias (signed word) anim::xpos#0 = (signed word~) anim::$18 (signed word) anim::xpos#2 -Alias (byte) anim::sprite_msb#1 = (byte~) anim::$19 (byte) anim::sprite_msb#4 -Alias (byte) anim::ypos#0 = (byte~) anim::$25 -Alias (byte) anim::i2#0 = (byte~) anim::$26 -Alias (signed word) anim::yr#1 = (signed word) anim::yr#5 -Alias (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#7 -Alias (byte) anim::angle#3 = (byte) anim::angle#5 -Alias (dword) clock::return#2 = (dword) clock::return#4 -Alias (byte) anim::angle#1 = (byte) anim::angle#14 (byte) anim::angle#11 -Alias (dword) anim::cyclecount#0 = (dword~) anim::$30 +Alias mulf_init::c#2 = mulf_init::c#3 +Alias mulf_init::sqr#4 = mulf_init::sqr#5 mulf_init::sqr#6 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#4 mulf_init::sqr1_lo#5 +Alias mulf_init::sqr1_hi#3 = mulf_init::sqr1_hi#5 mulf_init::sqr1_hi#4 +Alias mulf_init::x_2#3 = mulf_init::x_2#4 mulf_init::x_2#5 +Alias mulf_init::sqr#1 = mulf_init::$6 +Alias mulf_init::c#1 = mulf_init::c#5 +Alias mulf_init::x_255#2 = mulf_init::x_255#3 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#3 mulf_init::sqr2_lo#5 +Alias mulf_init::sqr2_hi#2 = mulf_init::sqr2_hi#3 +Alias mulf_init::dir#2 = mulf_init::dir#3 +Alias mulf_init::x_255#1 = mulf_init::$8 mulf_init::x_255#5 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#5 +Alias mulf8u_prepared::return#0 = mulf8u_prepared::$0 mulf8u_prepared::return#3 mulf8u_prepared::return#1 +Alias mulf8u_prepared::b#0 = mulf8s_prepared::$0 +Alias mulf8u_prepared::return#2 = mulf8u_prepared::return#4 +Alias mulf8s_prepared::b#4 = mulf8s_prepared::b#7 mulf8s_prepared::b#6 +Alias mulf8s_prepared::m#0 = mulf8s_prepared::$1 mulf8s_prepared::m#3 +Alias mulf8s_prepared::$15 = mulf8s_prepared::$10 +Alias mulf8s_prepared::return#0 = mulf8s_prepared::$6 mulf8s_prepared::return#6 mulf8s_prepared::return#1 +Alias mulf8s_prepared::m#5 = mulf8s_prepared::m#6 +Alias mulf8s_prepared::$16 = mulf8s_prepared::$14 +Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1 +Alias print_byte_at::b#0 = print_word_at::$0 +Alias print_word_at::w#2 = print_word_at::w#3 +Alias print_word_at::at#2 = print_word_at::at#3 +Alias print_byte_at::b#1 = print_word_at::$2 +Alias print_byte_at::at#1 = print_word_at::$3 +Alias print_word_at::w#0 = print_dword_at::$0 +Alias print_dword_at::dw#1 = print_dword_at::dw#2 +Alias print_dword_at::at#1 = print_dword_at::at#2 +Alias print_word_at::w#1 = print_dword_at::$2 +Alias print_word_at::at#1 = print_dword_at::$3 +Alias print_byte_at::b#2 = print_byte_at::b#3 +Alias print_byte_at::at#2 = print_byte_at::at#3 +Alias print_char_at::at#1 = print_byte_at::$3 +Alias init::sprites_ptr#0 = init::$1 +Alias anim::angle#2 = anim::angle#4 anim::angle#6 +Alias anim::cos_a#0 = anim::$3 +Alias anim::sin_a#0 = anim::$4 +Alias anim::cos_a#1 = anim::mulf8s_prepare1_a#0 anim::mulf8s_prepare1_a#1 anim::cos_a#13 anim::cos_a#12 anim::cos_a#11 anim::cos_a#10 anim::cos_a#9 anim::cos_a#8 anim::cos_a#7 anim::cos_a#6 anim::cos_a#5 anim::cos_a#4 anim::cos_a#3 +Alias anim::x#0 = anim::x#5 anim::x#3 anim::x#1 anim::x#9 anim::x#8 anim::x#7 anim::x#6 anim::x#4 anim::x#2 +Alias anim::y#0 = anim::y#7 anim::y#5 anim::y#3 anim::y#1 anim::y#8 anim::y#6 anim::y#4 anim::y#2 +Alias anim::sin_a#1 = anim::sin_a#5 anim::sin_a#6 anim::sin_a#4 anim::sin_a#3 anim::sin_a#2 anim::mulf8s_prepare2_a#0 anim::mulf8s_prepare2_a#1 anim::sin_a#13 anim::sin_a#12 anim::sin_a#11 anim::sin_a#10 anim::sin_a#9 anim::sin_a#8 +Alias anim::sprite_msb#10 = anim::sprite_msb#15 anim::sprite_msb#16 anim::sprite_msb#14 anim::sprite_msb#13 anim::sprite_msb#12 anim::sprite_msb#11 anim::sprite_msb#9 anim::sprite_msb#8 anim::sprite_msb#6 anim::sprite_msb#3 +Alias anim::i#10 = anim::i#14 anim::i#2 anim::i#13 anim::i#12 anim::i#11 anim::i#9 anim::i#8 anim::i#7 anim::i#6 anim::i#5 anim::i#4 +Alias anim::angle#10 = anim::angle#20 anim::angle#21 anim::angle#19 anim::angle#18 anim::angle#17 anim::angle#16 anim::angle#15 anim::angle#13 anim::angle#12 anim::angle#8 anim::angle#7 +Alias mulf8u_prepare::a#0 = anim::mulf8s_prepare1_$0 +Alias mulf8s_prepared::return#2 = mulf8s_prepared::return#7 +Alias anim::xr#0 = anim::$7 anim::xr#7 anim::xr#6 anim::xr#5 anim::xr#4 anim::xr#2 +Alias mulf8s_prepared::return#3 = mulf8s_prepared::return#8 +Alias anim::yr#0 = anim::$9 anim::yr#8 anim::yr#7 anim::yr#6 anim::yr#4 anim::yr#2 +Alias mulf8u_prepare::a#1 = anim::mulf8s_prepare2_$0 +Alias mulf8s_prepared::return#4 = mulf8s_prepared::return#9 +Alias mulf8s_prepared::return#10 = mulf8s_prepared::return#5 +Alias anim::xr#1 = anim::xr#3 +Alias anim::xpos#0 = anim::$18 anim::xpos#2 +Alias anim::sprite_msb#1 = anim::$19 anim::sprite_msb#4 +Alias anim::ypos#0 = anim::$25 +Alias anim::i2#0 = anim::$26 +Alias anim::yr#1 = anim::yr#5 +Alias anim::sprite_msb#5 = anim::sprite_msb#7 +Alias anim::angle#3 = anim::angle#5 +Alias clock::return#2 = clock::return#4 +Alias anim::angle#1 = anim::angle#14 anim::angle#11 +Alias anim::cyclecount#0 = anim::$30 Successful SSA optimization Pass2AliasElimination -Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 -Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 -Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 -Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 -Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 -Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 -Alias (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#5 -Alias (signed word) anim::yr#1 = (signed word) anim::yr#3 -Alias (byte) anim::i#10 = (byte) anim::i#3 -Alias (signed word) anim::xpos#0 = (signed word) anim::xpos#1 -Alias (signed byte) anim::cos_a#1 = (signed byte) anim::cos_a#2 -Alias (byte) anim::angle#10 = (byte) anim::angle#3 -Alias (signed byte) anim::sin_a#1 = (signed byte) anim::sin_a#7 +Alias mulf_init::sqr1_lo#2 = mulf_init::sqr1_lo#3 +Alias mulf_init::sqr1_hi#2 = mulf_init::sqr1_hi#3 +Alias mulf_init::c#1 = mulf_init::c#4 +Alias mulf_init::sqr2_lo#2 = mulf_init::sqr2_lo#4 +Alias mulf_init::x_255#1 = mulf_init::x_255#4 +Alias mulf_init::sqr2_hi#1 = mulf_init::sqr2_hi#4 +Alias mulf8s_prepared::b#4 = mulf8s_prepared::b#5 +Alias anim::yr#1 = anim::yr#3 +Alias anim::i#10 = anim::i#3 +Alias anim::xpos#0 = anim::xpos#1 +Alias anim::cos_a#1 = anim::cos_a#2 +Alias anim::angle#10 = anim::angle#3 +Alias anim::sin_a#1 = anim::sin_a#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) mulf8u_prepared::b#1 (byte) mulf8u_prepared::b#0 Identical Phi Values (dword) print_dword_at::dw#1 (dword) print_dword_at::dw#0 @@ -1557,7 +1557,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment anim::xpos#0 Consolidated constant in assignment anim::ypos#0 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte~) anim::$24 = (byte~) anim::$23 +Alias anim::$24 = anim::$23 Successful SSA optimization Pass2AliasElimination Inlining Noop Cast [125] (signed byte~) anim::$17 ← (signed byte)(byte~) anim::$16 keeping anim::$17 Successful SSA optimization Pass2NopCastInlining @@ -2017,155 +2017,155 @@ mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 VARIABLE REGISTER WEIGHTS (void()) anim() -(signed word~) anim::$11 202.0 -(signed word~) anim::$12 202.0 -(signed word~) anim::$13 202.0 -(signed word~) anim::$14 202.0 -(byte~) anim::$17 101.0 -(byte~) anim::$20 202.0 -(byte~) anim::$24 202.0 -(byte~) anim::$27 202.0 -(dword~) anim::$29 22.0 -(signed word~) anim::$6 202.0 -(signed word~) anim::$8 202.0 +(signed word~) anim::$11 20002.0 +(signed word~) anim::$12 20002.0 +(signed word~) anim::$13 20002.0 +(signed word~) anim::$14 20002.0 +(byte~) anim::$17 10001.0 +(byte~) anim::$20 20002.0 +(byte~) anim::$24 20002.0 +(byte~) anim::$27 20002.0 +(dword~) anim::$29 2002.0 +(signed word~) anim::$6 20002.0 +(signed word~) anim::$8 20002.0 (byte) anim::angle -(byte) anim::angle#1 2.75 -(byte) anim::angle#9 0.4888888888888889 +(byte) anim::angle#1 250.25 +(byte) anim::angle#9 44.48888888888889 (signed byte) anim::cos_a (dword) anim::cyclecount -(dword) anim::cyclecount#0 22.0 +(dword) anim::cyclecount#0 2002.0 (byte) anim::i -(byte) anim::i#1 151.5 -(byte) anim::i#10 13.289473684210527 +(byte) anim::i#1 15001.5 +(byte) anim::i#10 1315.921052631579 (byte) anim::i2 -(byte) anim::i2#0 101.0 +(byte) anim::i2#0 10001.0 (signed byte) anim::mulf8s_prepare1_a (signed byte) anim::mulf8s_prepare2_a (signed byte) anim::sin_a (byte) anim::sprite_msb -(byte) anim::sprite_msb#1 101.0 -(byte) anim::sprite_msb#10 7.481481481481482 -(byte) anim::sprite_msb#2 202.0 -(byte) anim::sprite_msb#5 34.888888888888886 +(byte) anim::sprite_msb#1 10001.0 +(byte) anim::sprite_msb#10 740.8148148148148 +(byte) anim::sprite_msb#2 20002.0 +(byte) anim::sprite_msb#5 3444.8888888888887 (signed byte) anim::x -(signed byte) anim::x#0 15.947368421052632 +(signed byte) anim::x#0 1579.1052631578946 (signed word) anim::xpos -(signed word) anim::xpos#0 33.666666666666664 +(signed word) anim::xpos#0 3333.6666666666665 (signed word) anim::xr -(signed word) anim::xr#0 18.363636363636363 -(signed word) anim::xr#1 33.666666666666664 +(signed word) anim::xr#0 1818.3636363636363 +(signed word) anim::xr#1 3333.6666666666665 (signed byte) anim::y -(signed byte) anim::y#0 23.307692307692307 +(signed byte) anim::y#0 2307.9230769230767 (byte) anim::ypos -(byte) anim::ypos#0 50.5 +(byte) anim::ypos#0 5000.5 (signed word) anim::yr -(signed word) anim::yr#0 16.833333333333332 -(signed word) anim::yr#1 25.25 +(signed word) anim::yr#0 1666.8333333333333 +(signed word) anim::yr#1 2500.25 (dword()) clock() (dword) clock::return -(dword) clock::return#0 4.333333333333333 -(dword) clock::return#2 22.0 +(dword) clock::return#0 3667.333333333333 +(dword) clock::return#2 2002.0 (void()) clock_start() (void()) init() (byte) init::i -(byte) init::i#1 16.5 -(byte) init::i#2 14.666666666666666 +(byte) init::i#1 1501.5 +(byte) init::i#2 1334.6666666666667 (byte*) init::sprites_ptr (void()) main() (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 4.0 -(byte~) mulf8s_prepared::$15 4.0 -(byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$8 4.0 +(byte~) mulf8s_prepared::$12 200002.0 +(byte~) mulf8s_prepared::$15 200002.0 +(byte~) mulf8s_prepared::$16 200002.0 +(byte~) mulf8s_prepared::$8 200002.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 40.6 +(signed byte) mulf8s_prepared::b#0 20002.0 +(signed byte) mulf8s_prepared::b#1 20002.0 +(signed byte) mulf8s_prepared::b#2 20002.0 +(signed byte) mulf8s_prepared::b#3 20002.0 +(signed byte) mulf8s_prepared::b#4 14000.5 (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.5 +(word) mulf8s_prepared::m#0 100001.0 +(word) mulf8s_prepared::m#1 200002.0 +(word) mulf8s_prepared::m#2 200002.0 +(word) mulf8s_prepared::m#4 33333.666666666664 +(word) mulf8s_prepared::m#5 125001.25 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#2 204.0 -(byte) mulf8u_prepare::a#3 202.0 -(byte) mulf8u_prepare::a#4 202.0 +(byte) mulf8u_prepare::a#2 120003.0 +(byte) mulf8u_prepare::a#3 20002.0 +(byte) mulf8u_prepare::a#4 20002.0 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 4.0 +(byte) mulf8u_prepared::b#0 1100002.0 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 1.3333333333333333 -(word) mulf8u_prepared::return#2 4.0 +(word) mulf8u_prepared::return#0 366667.3333333334 +(word) mulf8u_prepared::return#2 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 22.0 -(byte~) mulf_init::$4 22.0 -(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$1 20002.0 +(byte~) mulf_init::$4 20002.0 +(byte~) mulf_init::$5 20002.0 (byte) mulf_init::c -(byte) mulf_init::c#1 2.5384615384615383 -(byte) mulf_init::c#2 11.0 +(byte) mulf_init::c#1 2307.9230769230767 +(byte) mulf_init::c#2 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 4.125 -(byte) mulf_init::dir#4 11.0 +(byte) mulf_init::dir#2 3750.375 +(byte) mulf_init::dir#4 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 11.0 -(word) mulf_init::sqr#2 22.0 -(word) mulf_init::sqr#3 9.166666666666666 -(word) mulf_init::sqr#4 5.5 +(word) mulf_init::sqr#1 10001.0 +(word) mulf_init::sqr#2 20002.0 +(word) mulf_init::sqr#3 8334.166666666666 +(word) mulf_init::sqr#4 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 2.75 +(byte*) mulf_init::sqr1_hi#1 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 22.0 -(byte*) mulf_init::sqr1_lo#2 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 20002.0 +(byte*) mulf_init::sqr1_lo#2 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 8.25 +(byte*) mulf_init::sqr2_hi#1 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 22.0 -(byte*) mulf_init::sqr2_lo#2 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 20002.0 +(byte*) mulf_init::sqr2_lo#2 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 11.0 -(byte) mulf_init::x_2#2 5.5 -(byte) mulf_init::x_2#3 6.6000000000000005 +(byte) mulf_init::x_2#1 10001.0 +(byte) mulf_init::x_2#2 5000.5 +(byte) mulf_init::x_2#3 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 6.6000000000000005 -(byte) mulf_init::x_255#2 8.8 +(byte) mulf_init::x_255#1 6000.6 +(byte) mulf_init::x_255#2 8000.8 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 2000002.0 +(byte~) print_byte_at::$2 1000001.0 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 4.0 -(byte*) print_byte_at::at#1 4.0 -(byte*) print_byte_at::at#2 1.3333333333333333 +(byte*) print_byte_at::at#0 200002.0 +(byte*) print_byte_at::at#1 200002.0 +(byte*) print_byte_at::at#2 366667.3333333334 (byte) print_byte_at::b -(byte) print_byte_at::b#0 2.0 -(byte) print_byte_at::b#1 2.0 -(byte) print_byte_at::b#2 1.6 +(byte) print_byte_at::b#0 100001.0 +(byte) print_byte_at::b#1 100001.0 +(byte) print_byte_at::b#2 440000.80000000005 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 2.0 -(byte*) print_char_at::at#2 6.0 +(byte*) print_char_at::at#0 2000002.0 +(byte*) print_char_at::at#1 1000001.0 +(byte*) print_char_at::at#2 1.2000003E7 (byte) print_char_at::ch -(byte) print_char_at::ch#0 2.0 -(byte) print_char_at::ch#1 4.0 -(byte) print_char_at::ch#2 6.0 +(byte) print_char_at::ch#0 1000001.0 +(byte) print_char_at::ch#1 2000002.0 +(byte) print_char_at::ch#2 1.2000003E7 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 5.0 +(dword) print_dword_at::dw#0 7001.0 (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (byte*) print_word_at::at -(byte*) print_word_at::at#2 0.8 +(byte*) print_word_at::at#2 40000.4 (word) print_word_at::w -(word) print_word_at::w#0 4.0 -(word) print_word_at::w#1 4.0 -(word) print_word_at::w#2 2.0 +(word) print_word_at::w#0 20002.0 +(word) print_word_at::w#1 20002.0 +(word) print_word_at::w#2 55001.0 Initial phi equivalence classes [ anim::angle#9 anim::angle#1 ] @@ -3441,246 +3441,218 @@ SIN: REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:60 [ anim::$24 ] has ALU potential. -Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] ) always clobbers reg byte a +Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ anim::angle#9 anim::angle#1 ] -Statement [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ) always clobbers reg byte a +Statement [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ anim::i#10 anim::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ anim::x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ anim::y#0 ] -Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ) always clobbers reg byte a -Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ) always clobbers reg byte a -Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ) always clobbers reg byte a -Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ) always clobbers reg byte a -Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ) always clobbers reg byte a -Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ) always clobbers reg byte a -Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ) always clobbers reg byte a -Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ) always clobbers reg byte a -Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) always clobbers reg byte a -Statement [39] (byte~) anim::$17 ← > (signed word) anim::xr#1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ) always clobbers reg byte a -Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a reg byte x +Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a +Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] { } ) always clobbers reg byte a +Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] { } ) always clobbers reg byte a +Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] { } ) always clobbers reg byte a +Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] { } ) always clobbers reg byte a +Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] { } ) always clobbers reg byte a +Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ anim::angle#9 anim::angle#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ anim::i#10 anim::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Statement [42] (byte~) anim::$20 ← > (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ) always clobbers reg byte a -Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) always clobbers reg byte a -Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) always clobbers reg byte a +Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] { } ) always clobbers reg byte a +Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:61 [ anim::ypos#0 ] -Statement [49] (byte~) anim::$27 ← < (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:62 [ anim::i2#0 ] -Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ) always clobbers reg byte a -Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] ) always clobbers reg byte a -Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] ) always clobbers reg byte a -Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] ) always clobbers reg byte a -Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] ) always clobbers reg byte a -Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] ) always clobbers reg byte a -Statement [69] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] { } ) always clobbers reg byte a +Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] { } ) always clobbers reg byte a +Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [72] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] -Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:81 [ print_byte_at::$2 ] -Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ anim::angle#9 anim::angle#1 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] ) always clobbers reg byte a -Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] -Statement [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [97] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [102] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) 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[1]:34 [ anim::x#0 ] Removing always clobbered register reg byte x as potential for zp[1]:35 [ anim::y#0 ] Removing always clobbered register reg byte x as potential for zp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] -Statement [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 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 [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ init::i#2 init::i#1 ] -Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:25 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [152] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::init:5::mulf_init:122 [ 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::$4 ] ) always clobbers reg byte a -Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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 [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:25 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [154] (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::init:5::mulf_init:122 [ 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 [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [17] (byte) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ) always clobbers reg byte y +Statement [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [17] (byte) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] { { mulf8u_prepare::a#2 = mulf8u_prepare::a#3 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ anim::i#10 anim::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ anim::x#0 ] Removing always clobbered register reg byte y as potential for zp[1]:35 [ anim::y#0 ] -Statement [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ) always clobbers reg byte a -Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ) always clobbers reg byte a -Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ) always clobbers reg byte a -Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ) always clobbers reg byte a -Statement [27] (byte) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ) always clobbers reg byte y -Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ) always clobbers reg byte a -Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ) always clobbers reg byte a -Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ) always clobbers reg byte a -Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ) always clobbers reg byte a -Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ) always clobbers reg byte a -Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) always clobbers reg byte a -Statement [39] (byte~) anim::$17 ← > (signed word) anim::xr#1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ) always clobbers reg byte a -Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a reg byte x -Statement [42] (byte~) anim::$20 ← > (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ) always clobbers reg byte a -Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) always clobbers reg byte a -Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) always clobbers reg byte a -Statement [49] (byte~) anim::$27 ← < (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ) always clobbers reg byte a -Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ) always clobbers reg byte a -Statement [53] if((byte) anim::i#1!=(byte) 8) goto anim::@4 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ) always clobbers reg byte a -Statement [54] *((const byte*) SPRITES_XMSB) ← (byte) anim::sprite_msb#5 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] ) always clobbers reg byte a -Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] ) always clobbers reg byte a -Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] ) always clobbers reg byte a -Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] ) always clobbers reg byte a -Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] ) always clobbers reg byte a -Statement [69] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [72] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] ) always clobbers reg byte a reg byte y -Statement [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] ) always clobbers reg byte a -Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [97] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [102] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a +Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a +Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] { } ) always clobbers reg byte a +Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] { } ) always clobbers reg byte a +Statement [27] (byte) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] { { mulf8u_prepare::a#2 = mulf8u_prepare::a#4 } } ) always clobbers reg byte y +Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] { } ) always clobbers reg byte a +Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] { } ) always clobbers reg byte a +Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] { } ) always clobbers reg byte a +Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] { } ) always clobbers reg byte a reg byte x +Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] { } ) always clobbers reg byte a +Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] { } ) always clobbers reg byte a +Statement [53] if((byte) anim::i#1!=(byte) 8) goto anim::@4 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) SPRITES_XMSB) ← (byte) anim::sprite_msb#5 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] { } ) always clobbers reg byte a +Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a +Statement [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) 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 [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 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 [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [152] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::init:5::mulf_init:122 [ 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::$4 ] ) always clobbers reg byte a -Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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 [154] (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::init:5::mulf_init:122 [ 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 [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [15] (signed byte) anim::x#0 ← *((const signed byte*) xs + (byte) anim::i#10) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 ] ) always clobbers reg byte a reg byte y -Statement [16] (signed byte) anim::y#0 ← *((const signed byte*) ys + (byte) anim::i#10) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 ] ) always clobbers reg byte a reg byte y -Statement [17] (byte) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ) always clobbers reg byte y -Statement [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ) always clobbers reg byte a -Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ) always clobbers reg byte a -Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ) always clobbers reg byte a -Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ) always clobbers reg byte a -Statement [27] (byte) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ) always clobbers reg byte y -Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ) always clobbers reg byte a -Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ) always clobbers reg byte a -Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ) always clobbers reg byte a -Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ) always clobbers reg byte a -Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ) always clobbers reg byte a -Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ) always clobbers reg byte a -Statement [39] (byte~) anim::$17 ← > (signed word) anim::xr#1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::$17 ] ) always clobbers reg byte a -Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ) always clobbers reg byte a reg byte x -Statement [42] (byte~) anim::$20 ← > (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#1 anim::$20 ] ) always clobbers reg byte a -Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ) always clobbers reg byte a -Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ) always clobbers reg byte a -Statement [49] (byte~) anim::$27 ← < (signed word) anim::xpos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::ypos#0 anim::i2#0 anim::$27 ] ) always clobbers reg byte a -Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ) always clobbers reg byte a -Statement [53] if((byte) anim::i#1!=(byte) 8) goto anim::@4 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ) always clobbers reg byte a -Statement [54] *((const byte*) SPRITES_XMSB) ← (byte) anim::sprite_msb#5 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] ) always clobbers reg byte a -Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] ) always clobbers reg byte a -Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] ) always clobbers reg byte a -Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] ) always clobbers reg byte a -Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] ) always clobbers reg byte a -Statement [69] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [72] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] ) always clobbers reg byte a reg byte y -Statement [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] ) always clobbers reg byte a -Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [97] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::$8 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [102] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 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 [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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 [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 [11] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [15] (signed byte) anim::x#0 ← *((const signed byte*) xs + (byte) anim::i#10) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (signed byte) anim::y#0 ← *((const signed byte*) ys + (byte) anim::i#10) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (byte) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] { { mulf8u_prepare::a#2 = mulf8u_prepare::a#3 } } ) always clobbers reg byte y +Statement [21] (signed word~) anim::$6 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::$6 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a +Statement [22] (signed word) anim::xr#0 ← (signed word~) anim::$6 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } ) always clobbers reg byte a +Statement [25] (signed word~) anim::$8 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::$8 ] { } ) always clobbers reg byte a +Statement [26] (signed word) anim::yr#0 ← (signed word~) anim::$8 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 ] { } ) always clobbers reg byte a +Statement [27] (byte) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN + (byte) anim::angle#9) [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 anim::yr#0 mulf8u_prepare::a#4 ] { { mulf8u_prepare::a#2 = mulf8u_prepare::a#4 } } ) always clobbers reg byte y +Statement [31] (signed word~) anim::$11 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$11 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [32] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 anim::$12 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [33] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$12 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::yr#0 anim::xr#1 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [36] (signed word~) anim::$13 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$13 ] { } ) always clobbers reg byte a +Statement [37] (signed word~) anim::$14 ← (signed word~) anim::$13 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 anim::$14 ] { } ) always clobbers reg byte a +Statement [38] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$14 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::xr#1 anim::yr#1 ] { } ) always clobbers reg byte a +Statement [40] (signed word) anim::xpos#0 ← (signed byte)(byte~) anim::$17 + (signed byte) $18+(signed word) $95 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#1 anim::xpos#0 ] { } ) always clobbers reg byte a reg byte x +Statement [44] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte) $80 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::yr#1 anim::xpos#0 anim::sprite_msb#2 ] { } ) always clobbers reg byte a +Statement [48] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte) 1 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 anim::xpos#0 anim::ypos#0 anim::i2#0 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte) anim::ypos#0 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#10 anim::sprite_msb#5 ] { } ) always clobbers reg byte a +Statement [53] if((byte) anim::i#1!=(byte) 8) goto anim::@4 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] ( main:2::anim:7 [ anim::angle#9 anim::i#1 anim::sprite_msb#5 ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) SPRITES_XMSB) ← (byte) anim::sprite_msb#5 [ anim::angle#9 ] ( main:2::anim:7 [ anim::angle#9 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [57] (dword) clock::return#2 ← (dword) clock::return#0 [ anim::angle#1 clock::return#2 ] ( main:2::anim:7 [ anim::angle#1 clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [58] (dword~) anim::$29 ← (dword) clock::return#2 [ anim::angle#1 anim::$29 ] ( main:2::anim:7 [ anim::angle#1 anim::$29 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [59] (dword) anim::cyclecount#0 ← (dword~) anim::$29 - (const dword) CLOCKS_PER_INIT [ anim::angle#1 anim::cyclecount#0 ] ( main:2::anim:7 [ anim::angle#1 anim::cyclecount#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [60] (dword) print_dword_at::dw#0 ← (dword) anim::cyclecount#0 [ anim::angle#1 print_dword_at::dw#0 ] ( main:2::anim:7 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } } ) always clobbers reg byte a +Statement [62] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ anim::angle#1 ] ( main:2::anim:7 [ anim::angle#1 ] { } ) always clobbers reg byte a +Statement [63] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [65] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::anim:7::print_dword_at:61 [ anim::angle#1 print_word_at::w#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [70] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [73] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66 [ anim::angle#1 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [77] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [79] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [81] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [82] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74 [ anim::angle#1 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:80 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:80 [ anim::angle#1 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:71::print_char_at:84 [ anim::angle#1 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:64::print_byte_at:74::print_char_at:84 [ anim::angle#1 print_dword_at::dw#0 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::anim:7::print_dword_at:61::print_word_at:66::print_byte_at:74::print_char_at:84 [ anim::angle#1 ] { { print_dword_at::dw#0 = anim::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [89] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::anim:7::clock:56 [ anim::angle#1 clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [94] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) always clobbers reg byte a +Statement [95] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [96] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [98] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 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 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 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 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) always clobbers reg byte a +Statement [103] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::anim:7::mulf8s_prepared:20 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } } main:2::anim:7::mulf8s_prepared:24 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:30 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } } main:2::anim:7::mulf8s_prepared:35 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } } ) 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 [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 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:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 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 [109] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::anim:7::mulf8s_prepared:20::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#0 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:24::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#1 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:30::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#2 = mulf8s_prepared::b#4 anim::y#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } main:2::anim:7::mulf8s_prepared:35::mulf8u_prepared:93 [ anim::angle#9 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] { { mulf8s_prepared::b#3 = mulf8s_prepared::b#4 anim::x#0 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] ) always clobbers reg byte a -Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] ) always clobbers reg byte a -Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [152] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::init:5::mulf_init:122 [ 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::$4 ] ) always clobbers reg byte a -Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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 [154] (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::init:5::mulf_init:122 [ 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 [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 [115] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [116] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [117] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [118] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [119] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::anim:7::clock_start:13 [ anim::angle#9 ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) SPRITES_COLS + (byte) init::i#2) ← (const byte) GREEN [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [132] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [134] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [135] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::init:5::mulf_init:122 [ ] { } ) always clobbers reg byte a +Statement [138] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [139] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [141] (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::init:5::mulf_init:122 [ 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 [147] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::init:5::mulf_init:122 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [153] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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::init:5::mulf_init:122 [ 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 [155] *((byte*) mulf_init::sqr1_hi#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::init:5::mulf_init:122 [ 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 [157] (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::init:5::mulf_init:122 [ 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 Potential registers zp[1]:2 [ anim::angle#9 anim::angle#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ anim::i#10 anim::i#1 ] : zp[1]:3 , Potential registers zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] : zp[1]:4 , @@ -3720,7 +3692,7 @@ Potential registers zp[2]:57 [ anim::xpos#0 ] : zp[2]:57 , Potential registers zp[1]:59 [ anim::$20 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:60 [ anim::$24 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp[1]:61 [ anim::ypos#0 ] : zp[1]:61 , reg byte x , reg byte y , -Potential registers zp[1]:62 [ anim::i2#0 ] : zp[1]:62 , reg byte x , reg byte y , +Potential registers zp[1]:62 [ anim::i2#0 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:63 [ anim::$27 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , Potential registers zp[4]:64 [ clock::return#2 ] : zp[4]:64 , Potential registers zp[4]:68 [ anim::$29 ] : zp[4]:68 , @@ -3741,64 +3713,64 @@ Potential registers zp[1]:96 [ mulf_init::$4 ] : zp[1]:96 , reg byte a , reg byt Potential registers zp[1]:97 [ mulf_init::$5 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [anim] 345.37: zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 202: zp[2]:36 [ anim::$6 ] 202: zp[2]:40 [ anim::$8 ] 202: zp[2]:44 [ anim::$11 ] 202: zp[2]:46 [ anim::$12 ] 202: zp[2]:50 [ anim::$13 ] 202: zp[2]:52 [ anim::$14 ] 202: zp[1]:59 [ anim::$20 ] 202: zp[1]:60 [ anim::$24 ] 202: zp[1]:63 [ anim::$27 ] 164.79: zp[1]:3 [ anim::i#10 anim::i#1 ] 101: zp[1]:56 [ anim::$17 ] 101: zp[1]:62 [ anim::i2#0 ] 50.5: zp[1]:61 [ anim::ypos#0 ] 33.67: zp[2]:48 [ anim::xr#1 ] 33.67: zp[2]:57 [ anim::xpos#0 ] 25.25: zp[2]:54 [ anim::yr#1 ] 23.31: zp[1]:35 [ anim::y#0 ] 22: zp[4]:68 [ anim::$29 ] 22: zp[4]:72 [ anim::cyclecount#0 ] 18.36: zp[2]:38 [ anim::xr#0 ] 16.83: zp[2]:42 [ anim::yr#0 ] 15.95: zp[1]:34 [ anim::x#0 ] 3.24: zp[1]:2 [ anim::angle#9 anim::angle#1 ] -Uplift Scope [mulf8s_prepared] 848.6: zp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 13.17: zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:89 [ mulf8s_prepared::$8 ] 4: zp[1]:90 [ mulf8s_prepared::$15 ] 4: zp[1]:91 [ mulf8s_prepared::$12 ] 4: zp[1]:92 [ mulf8s_prepared::$16 ] -Uplift Scope [mulf8u_prepare] 608: zp[1]:18 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplift Scope [mulf_init] 47.67: zp[2]:32 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:26 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:20 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:25 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:95 [ mulf_init::$1 ] 22: zp[1]:96 [ mulf_init::$4 ] 22: zp[1]:97 [ mulf_init::$5 ] 15.4: zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:29 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:23 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [init] 31.17: zp[1]:19 [ init::i#2 init::i#1 ] -Uplift Scope [clock] 22: zp[4]:64 [ clock::return#2 ] 4.33: zp[4]:82 [ clock::return#0 ] -Uplift Scope [print_char_at] 12: zp[1]:12 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp[2]:13 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplift Scope [print_byte_at] 9.33: zp[2]:10 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp[1]:80 [ print_byte_at::$0 ] 2: zp[1]:81 [ print_byte_at::$2 ] -Uplift Scope [print_word_at] 10: zp[2]:5 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp[2]:7 [ print_word_at::at#2 ] -Uplift Scope [mulf8u_prepared] 4: zp[1]:86 [ mulf8u_prepared::b#0 ] 4: zp[2]:87 [ mulf8u_prepared::return#2 ] 1.33: zp[2]:93 [ mulf8u_prepared::return#0 ] -Uplift Scope [print_dword_at] 5: zp[4]:76 [ print_dword_at::dw#0 ] +Uplift Scope [print_char_at] 15,000,006: zp[1]:12 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 15,000,006: zp[2]:13 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [print_byte_at] 2,000,002: zp[1]:80 [ print_byte_at::$0 ] 1,000,001: zp[1]:81 [ print_byte_at::$2 ] 766,671.33: zp[2]:10 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 640,002.8: zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplift Scope [mulf8u_prepared] 1,100,002: zp[1]:86 [ mulf8u_prepared::b#0 ] 366,667.33: zp[2]:93 [ mulf8u_prepared::return#0 ] 200,002: zp[2]:87 [ mulf8u_prepared::return#2 ] +Uplift Scope [mulf8s_prepared] 658,339.92: zp[2]:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 200,002: zp[1]:89 [ mulf8s_prepared::$8 ] 200,002: zp[1]:90 [ mulf8s_prepared::$15 ] 200,002: zp[1]:91 [ mulf8s_prepared::$12 ] 200,002: zp[1]:92 [ mulf8s_prepared::$16 ] 94,008.5: zp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] +Uplift Scope [anim] 34,188.7: zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 20,002: zp[2]:36 [ anim::$6 ] 20,002: zp[2]:40 [ anim::$8 ] 20,002: zp[2]:44 [ anim::$11 ] 20,002: zp[2]:46 [ anim::$12 ] 20,002: zp[2]:50 [ anim::$13 ] 20,002: zp[2]:52 [ anim::$14 ] 20,002: zp[1]:59 [ anim::$20 ] 20,002: zp[1]:60 [ anim::$24 ] 20,002: zp[1]:63 [ anim::$27 ] 16,317.42: zp[1]:3 [ anim::i#10 anim::i#1 ] 10,001: zp[1]:56 [ anim::$17 ] 10,001: zp[1]:62 [ anim::i2#0 ] 5,000.5: zp[1]:61 [ anim::ypos#0 ] 3,333.67: zp[2]:48 [ anim::xr#1 ] 3,333.67: zp[2]:57 [ anim::xpos#0 ] 2,500.25: zp[2]:54 [ anim::yr#1 ] 2,307.92: zp[1]:35 [ anim::y#0 ] 2,002: zp[4]:68 [ anim::$29 ] 2,002: zp[4]:72 [ anim::cyclecount#0 ] 1,818.36: zp[2]:38 [ anim::xr#0 ] 1,666.83: zp[2]:42 [ anim::yr#0 ] 1,579.11: zp[1]:34 [ anim::x#0 ] 294.74: zp[1]:2 [ anim::angle#9 anim::angle#1 ] +Uplift Scope [mulf_init] 43,337.67: zp[2]:32 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24,446.89: zp[2]:26 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 22,859.43: zp[2]:20 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 21,002.1: zp[1]:25 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 20,002: zp[1]:95 [ mulf_init::$1 ] 20,002: zp[1]:96 [ mulf_init::$4 ] 20,002: zp[1]:97 [ mulf_init::$5 ] 14,001.4: zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 13,751.38: zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] 12,308.92: zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] 10,834.42: zp[2]:29 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 9,167.58: zp[2]:23 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf8u_prepare] 160,007: zp[1]:18 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] +Uplift Scope [print_word_at] 95,005: zp[2]:5 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 40,000.4: zp[2]:7 [ print_word_at::at#2 ] +Uplift Scope [print_dword_at] 7,001: zp[4]:76 [ print_dword_at::dw#0 ] +Uplift Scope [clock] 3,667.33: zp[4]:82 [ clock::return#0 ] 2,002: zp[4]:64 [ clock::return#2 ] +Uplift Scope [init] 2,836.17: zp[1]:19 [ init::i#2 init::i#1 ] Uplift Scope [clock_start] Uplift Scope [RADIX] Uplift Scope [main] Uplift Scope [] -Uplifting [anim] best 45223 combination zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp[2]:36 [ anim::$6 ] zp[2]:40 [ anim::$8 ] zp[2]:44 [ anim::$11 ] zp[2]:46 [ anim::$12 ] zp[2]:50 [ anim::$13 ] zp[2]:52 [ anim::$14 ] reg byte a [ anim::$20 ] reg byte a [ anim::$24 ] reg byte a [ anim::$27 ] zp[1]:3 [ anim::i#10 anim::i#1 ] zp[1]:56 [ anim::$17 ] zp[1]:62 [ anim::i2#0 ] zp[1]:61 [ anim::ypos#0 ] zp[2]:48 [ anim::xr#1 ] zp[2]:57 [ anim::xpos#0 ] zp[2]:54 [ anim::yr#1 ] zp[1]:35 [ anim::y#0 ] zp[4]:68 [ anim::$29 ] zp[4]:72 [ anim::cyclecount#0 ] zp[2]:38 [ anim::xr#0 ] zp[2]:42 [ anim::yr#0 ] zp[1]:34 [ anim::x#0 ] zp[1]:2 [ anim::angle#9 anim::angle#1 ] -Limited combination testing to 100 combinations of 2880 possible. -Uplifting [mulf8s_prepared] best 44002 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[2]:16 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] zp[1]:92 [ mulf8s_prepared::$16 ] +Uplifting [print_char_at] best 46816 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:13 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplifting [print_byte_at] best 46808 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[2]:10 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplifting [mulf8u_prepared] best 46802 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:93 [ mulf8u_prepared::return#0 ] zp[2]:87 [ mulf8u_prepared::return#2 ] +Uplifting [mulf8s_prepared] best 46778 combination zp[2]:16 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] Limited combination testing to 100 combinations of 512 possible. -Uplifting [mulf8u_prepare] best 43399 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplifting [mulf_init] best 43149 combination zp[2]:32 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:26 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:20 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:29 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:23 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [anim] best 45178 combination zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp[2]:36 [ anim::$6 ] zp[2]:40 [ anim::$8 ] zp[2]:44 [ anim::$11 ] zp[2]:46 [ anim::$12 ] zp[2]:50 [ anim::$13 ] zp[2]:52 [ anim::$14 ] reg byte a [ anim::$20 ] reg byte a [ anim::$24 ] reg byte a [ anim::$27 ] zp[1]:3 [ anim::i#10 anim::i#1 ] zp[1]:56 [ anim::$17 ] zp[1]:62 [ anim::i2#0 ] zp[1]:61 [ anim::ypos#0 ] zp[2]:48 [ anim::xr#1 ] zp[2]:57 [ anim::xpos#0 ] zp[2]:54 [ anim::yr#1 ] zp[1]:35 [ anim::y#0 ] zp[4]:68 [ anim::$29 ] zp[4]:72 [ anim::cyclecount#0 ] zp[2]:38 [ anim::xr#0 ] zp[2]:42 [ anim::yr#0 ] zp[1]:34 [ anim::x#0 ] zp[1]:2 [ anim::angle#9 anim::angle#1 ] +Limited combination testing to 100 combinations of 3840 possible. +Uplifting [mulf_init] best 44928 combination zp[2]:32 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:26 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:20 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:29 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:23 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [init] best 42999 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [clock] best 42999 combination zp[4]:64 [ clock::return#2 ] zp[4]:82 [ clock::return#0 ] -Uplifting [print_char_at] best 42992 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:13 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplifting [print_byte_at] best 42984 combination zp[2]:10 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] -Uplifting [print_word_at] best 42984 combination zp[2]:5 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:7 [ print_word_at::at#2 ] -Uplifting [mulf8u_prepared] best 42980 combination reg byte a [ mulf8u_prepared::b#0 ] zp[2]:87 [ mulf8u_prepared::return#2 ] zp[2]:93 [ mulf8u_prepared::return#0 ] -Uplifting [print_dword_at] best 42980 combination zp[4]:76 [ print_dword_at::dw#0 ] -Uplifting [clock_start] best 42980 combination -Uplifting [RADIX] best 42980 combination -Uplifting [main] best 42980 combination -Uplifting [] best 42980 combination -Attempting to uplift remaining variables inzp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Uplifting [anim] best 42980 combination zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ anim::i#10 anim::i#1 ] -Uplifting [anim] best 42980 combination zp[1]:3 [ anim::i#10 anim::i#1 ] -Attempting to uplift remaining variables inzp[1]:56 [ anim::$17 ] -Uplifting [anim] best 42380 combination reg byte a [ anim::$17 ] -Attempting to uplift remaining variables inzp[1]:62 [ anim::i2#0 ] -Uplifting [anim] best 41680 combination reg byte x [ anim::i2#0 ] -Attempting to uplift remaining variables inzp[1]:61 [ anim::ypos#0 ] -Uplifting [anim] best 41480 combination reg byte y [ anim::ypos#0 ] -Attempting to uplift remaining variables inzp[1]:35 [ anim::y#0 ] -Uplifting [anim] best 41480 combination zp[1]:35 [ anim::y#0 ] -Attempting to uplift remaining variables inzp[1]:34 [ anim::x#0 ] -Uplifting [anim] best 41480 combination zp[1]:34 [ anim::x#0 ] -Attempting to uplift remaining variables inzp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 41340 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 41340 combination zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 41340 combination zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf8u_prepare] best 44325 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] +Uplifting [print_word_at] best 44325 combination zp[2]:5 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:7 [ print_word_at::at#2 ] +Uplifting [print_dword_at] best 44325 combination zp[4]:76 [ print_dword_at::dw#0 ] +Uplifting [clock] best 44325 combination zp[4]:82 [ clock::return#0 ] zp[4]:64 [ clock::return#2 ] +Uplifting [init] best 44175 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [clock_start] best 44175 combination +Uplifting [RADIX] best 44175 combination +Uplifting [main] best 44175 combination +Uplifting [] best 44175 combination Attempting to uplift remaining variables inzp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Uplifting [print_byte_at] best 41340 combination zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Attempting to uplift remaining variables inzp[1]:92 [ mulf8s_prepared::$16 ] -Uplifting [mulf8s_prepared] best 41334 combination reg byte a [ mulf8s_prepared::$16 ] +Uplifting [print_byte_at] best 44175 combination zp[1]:9 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Attempting to uplift remaining variables inzp[1]:15 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] +Uplifting [mulf8s_prepared] best 42974 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] +Attempting to uplift remaining variables inzp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] +Uplifting [anim] best 42974 combination zp[1]:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ anim::i#10 anim::i#1 ] +Uplifting [anim] best 42974 combination zp[1]:3 [ anim::i#10 anim::i#1 ] +Attempting to uplift remaining variables inzp[1]:28 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 42834 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 42834 combination zp[1]:31 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 42834 combination zp[1]:22 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:56 [ anim::$17 ] +Uplifting [anim] best 42234 combination reg byte a [ anim::$17 ] +Attempting to uplift remaining variables inzp[1]:62 [ anim::i2#0 ] +Uplifting [anim] best 41534 combination reg byte x [ anim::i2#0 ] +Attempting to uplift remaining variables inzp[1]:61 [ anim::ypos#0 ] +Uplifting [anim] best 41334 combination reg byte y [ anim::ypos#0 ] +Attempting to uplift remaining variables inzp[1]:35 [ anim::y#0 ] +Uplifting [anim] best 41334 combination zp[1]:35 [ anim::y#0 ] +Attempting to uplift remaining variables inzp[1]:34 [ anim::x#0 ] +Uplifting [anim] best 41334 combination zp[1]:34 [ anim::x#0 ] Attempting to uplift remaining variables inzp[1]:2 [ anim::angle#9 anim::angle#1 ] Uplifting [anim] best 41334 combination zp[1]:2 [ anim::angle#9 anim::angle#1 ] Coalescing zero page register [ zp[2]:7 [ print_word_at::at#2 ] ] with [ zp[2]:10 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] ] - score: 2 @@ -4988,17 +4960,17 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_XPOS = (byte*) 53248 (const byte*) SPRITES_YPOS = (byte*) 53249 (void()) anim() -(signed word~) anim::$11 zp[2]:3 202.0 -(signed word~) anim::$12 zp[2]:3 202.0 -(signed word~) anim::$13 zp[2]:3 202.0 -(signed word~) anim::$14 zp[2]:3 202.0 -(byte~) anim::$17 reg byte a 101.0 -(byte~) anim::$20 reg byte a 202.0 -(byte~) anim::$24 reg byte a 202.0 -(byte~) anim::$27 reg byte a 202.0 -(dword~) anim::$29 zp[4]:19 22.0 -(signed word~) anim::$6 zp[2]:3 202.0 -(signed word~) anim::$8 zp[2]:3 202.0 +(signed word~) anim::$11 zp[2]:3 20002.0 +(signed word~) anim::$12 zp[2]:3 20002.0 +(signed word~) anim::$13 zp[2]:3 20002.0 +(signed word~) anim::$14 zp[2]:3 20002.0 +(byte~) anim::$17 reg byte a 10001.0 +(byte~) anim::$20 reg byte a 20002.0 +(byte~) anim::$24 reg byte a 20002.0 +(byte~) anim::$27 reg byte a 20002.0 +(dword~) anim::$29 zp[4]:19 2002.0 +(signed word~) anim::$6 zp[2]:3 20002.0 +(signed word~) anim::$8 zp[2]:3 20002.0 (label) anim::@1 (label) anim::@10 (label) anim::@11 @@ -5015,45 +4987,45 @@ FINAL SYMBOL TABLE (label) anim::@8 (label) anim::@9 (byte) anim::angle -(byte) anim::angle#1 angle zp[1]:7 2.75 -(byte) anim::angle#9 angle zp[1]:7 0.4888888888888889 +(byte) anim::angle#1 angle zp[1]:7 250.25 +(byte) anim::angle#9 angle zp[1]:7 44.48888888888889 (signed byte) anim::cos_a (dword) anim::cyclecount -(dword) anim::cyclecount#0 cyclecount zp[4]:19 22.0 +(dword) anim::cyclecount#0 cyclecount zp[4]:19 2002.0 (byte) anim::i -(byte) anim::i#1 i zp[1]:10 151.5 -(byte) anim::i#10 i zp[1]:10 13.289473684210527 +(byte) anim::i#1 i zp[1]:10 15001.5 +(byte) anim::i#10 i zp[1]:10 1315.921052631579 (byte) anim::i2 -(byte) anim::i2#0 reg byte x 101.0 +(byte) anim::i2#0 reg byte x 10001.0 (label) anim::mulf8s_prepare1 (signed byte) anim::mulf8s_prepare1_a (label) anim::mulf8s_prepare2 (signed byte) anim::mulf8s_prepare2_a (signed byte) anim::sin_a (byte) anim::sprite_msb -(byte) anim::sprite_msb#1 sprite_msb zp[1]:2 101.0 -(byte) anim::sprite_msb#10 sprite_msb zp[1]:2 7.481481481481482 -(byte) anim::sprite_msb#2 sprite_msb zp[1]:2 202.0 -(byte) anim::sprite_msb#5 sprite_msb zp[1]:2 34.888888888888886 +(byte) anim::sprite_msb#1 sprite_msb zp[1]:2 10001.0 +(byte) anim::sprite_msb#10 sprite_msb zp[1]:2 740.8148148148148 +(byte) anim::sprite_msb#2 sprite_msb zp[1]:2 20002.0 +(byte) anim::sprite_msb#5 sprite_msb zp[1]:2 3444.8888888888887 (signed byte) anim::x -(signed byte) anim::x#0 x zp[1]:11 15.947368421052632 +(signed byte) anim::x#0 x zp[1]:11 1579.1052631578946 (signed word) anim::xpos -(signed word) anim::xpos#0 xpos zp[2]:17 33.666666666666664 +(signed word) anim::xpos#0 xpos zp[2]:17 3333.6666666666665 (signed word) anim::xr -(signed word) anim::xr#0 xr zp[2]:13 18.363636363636363 -(signed word) anim::xr#1 xr zp[2]:13 33.666666666666664 +(signed word) anim::xr#0 xr zp[2]:13 1818.3636363636363 +(signed word) anim::xr#1 xr zp[2]:13 3333.6666666666665 (signed byte) anim::y -(signed byte) anim::y#0 y zp[1]:12 23.307692307692307 +(signed byte) anim::y#0 y zp[1]:12 2307.9230769230767 (byte) anim::ypos -(byte) anim::ypos#0 reg byte y 50.5 +(byte) anim::ypos#0 reg byte y 5000.5 (signed word) anim::yr -(signed word) anim::yr#0 yr zp[2]:15 16.833333333333332 -(signed word) anim::yr#1 yr zp[2]:15 25.25 +(signed word) anim::yr#0 yr zp[2]:15 1666.8333333333333 +(signed word) anim::yr#1 yr zp[2]:15 2500.25 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:19 4.333333333333333 -(dword) clock::return#2 return zp[4]:19 22.0 +(dword) clock::return#0 return zp[4]:19 3667.333333333333 +(dword) clock::return#2 return zp[4]:19 2002.0 (void()) clock_start() (label) clock_start::@return (void()) init() @@ -5061,18 +5033,18 @@ FINAL SYMBOL TABLE (label) init::@2 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 14.666666666666666 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1334.6666666666667 (byte*) init::sprites_ptr (const byte*) init::sprites_ptr#0 sprites_ptr = (const byte*) SCREEN+(word) $3f8 (void()) main() (label) main::@1 (label) main::@return (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 200002.0 +(byte~) mulf8s_prepared::$15 reg byte a 200002.0 +(byte~) mulf8s_prepared::$16 reg byte a 200002.0 +(byte~) mulf8s_prepared::$8 reg byte a 200002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -5080,39 +5052,39 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 reg byte y 202.0 -(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 40.6 +(signed byte) mulf8s_prepared::b#0 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#1 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#2 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#3 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#4 reg byte y 14000.5 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:3 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:3 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:3 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:3 0.6666666666666666 -(word) mulf8s_prepared::m#5 m zp[2]:3 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:3 100001.0 +(word) mulf8s_prepared::m#1 m zp[2]:3 200002.0 +(word) mulf8s_prepared::m#2 m zp[2]:3 200002.0 +(word) mulf8s_prepared::m#4 m zp[2]:3 33333.666666666664 +(word) mulf8s_prepared::m#5 m zp[2]:3 125001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#2 reg byte a 204.0 -(byte) mulf8u_prepare::a#3 reg byte a 202.0 -(byte) mulf8u_prepare::a#4 reg byte a 202.0 +(byte) mulf8u_prepare::a#2 reg byte a 120003.0 +(byte) mulf8u_prepare::a#3 reg byte a 20002.0 +(byte) mulf8u_prepare::a#4 reg byte a 20002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1100002.0 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:3 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:3 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:3 366667.3333333334 +(word) mulf8u_prepared::return#2 return zp[2]:3 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 20002.0 +(byte~) mulf_init::$4 reg byte a 20002.0 +(byte~) mulf_init::$5 reg byte a 20002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -5124,78 +5096,78 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:7 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:7 11.0 +(byte) mulf_init::c#1 c zp[1]:7 2307.9230769230767 +(byte) mulf_init::c#2 c zp[1]:7 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:10 4.125 -(byte) mulf_init::dir#4 dir zp[1]:10 11.0 +(byte) mulf_init::dir#2 dir zp[1]:10 3750.375 +(byte) mulf_init::dir#4 dir zp[1]:10 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:17 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:17 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:17 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:17 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:17 10001.0 +(word) mulf_init::sqr#2 sqr zp[2]:17 20002.0 +(word) mulf_init::sqr#3 sqr zp[2]:17 8334.166666666666 +(word) mulf_init::sqr#4 sqr zp[2]:17 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:8 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:8 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:8 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:8 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:5 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:5 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:5 20002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:5 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:15 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:15 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:15 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:15 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:13 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:13 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:13 20002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:13 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 10001.0 +(byte) mulf_init::x_2#2 reg byte x 5000.5 +(byte) mulf_init::x_2#3 reg byte x 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 6000.6 +(byte) mulf_init::x_255#2 reg byte x 8000.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 2000002.0 +(byte~) print_byte_at::$2 reg byte y 1000001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:5 4.0 -(byte*) print_byte_at::at#1 at zp[2]:5 4.0 -(byte*) print_byte_at::at#2 at zp[2]:5 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:5 200002.0 +(byte*) print_byte_at::at#1 at zp[2]:5 200002.0 +(byte*) print_byte_at::at#2 at zp[2]:5 366667.3333333334 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:11 2.0 -(byte) print_byte_at::b#1 b zp[1]:11 2.0 -(byte) print_byte_at::b#2 b zp[1]:11 1.6 +(byte) print_byte_at::b#0 b zp[1]:11 100001.0 +(byte) print_byte_at::b#1 b zp[1]:11 100001.0 +(byte) print_byte_at::b#2 b zp[1]:11 440000.80000000005 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:8 4.0 -(byte*) print_char_at::at#1 at zp[2]:8 2.0 -(byte*) print_char_at::at#2 at zp[2]:8 6.0 +(byte*) print_char_at::at#0 at zp[2]:8 2000002.0 +(byte*) print_char_at::at#1 at zp[2]:8 1000001.0 +(byte*) print_char_at::at#2 at zp[2]:8 1.2000003E7 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 1000001.0 +(byte) print_char_at::ch#1 reg byte x 2000002.0 +(byte) print_char_at::ch#2 reg byte x 1.2000003E7 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:19 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:19 7001.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:5 0.8 +(byte*) print_word_at::at#2 at zp[2]:5 40000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:3 4.0 -(word) print_word_at::w#1 w zp[2]:3 4.0 -(word) print_word_at::w#2 w zp[2]:3 2.0 +(word) print_word_at::w#0 w zp[2]:3 20002.0 +(word) print_word_at::w#1 w zp[2]:3 20002.0 +(word) print_word_at::w#2 w zp[2]:3 55001.0 (const signed byte*) xs[(number) 8] = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 } (const signed byte*) ys[(number) 8] = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 } diff --git a/src/test/ref/examples/rotate/rotate.sym b/src/test/ref/examples/rotate/rotate.sym index 0b9f67beb..b0a7e48ad 100644 --- a/src/test/ref/examples/rotate/rotate.sym +++ b/src/test/ref/examples/rotate/rotate.sym @@ -27,17 +27,17 @@ (const byte*) SPRITES_XPOS = (byte*) 53248 (const byte*) SPRITES_YPOS = (byte*) 53249 (void()) anim() -(signed word~) anim::$11 zp[2]:3 202.0 -(signed word~) anim::$12 zp[2]:3 202.0 -(signed word~) anim::$13 zp[2]:3 202.0 -(signed word~) anim::$14 zp[2]:3 202.0 -(byte~) anim::$17 reg byte a 101.0 -(byte~) anim::$20 reg byte a 202.0 -(byte~) anim::$24 reg byte a 202.0 -(byte~) anim::$27 reg byte a 202.0 -(dword~) anim::$29 zp[4]:19 22.0 -(signed word~) anim::$6 zp[2]:3 202.0 -(signed word~) anim::$8 zp[2]:3 202.0 +(signed word~) anim::$11 zp[2]:3 20002.0 +(signed word~) anim::$12 zp[2]:3 20002.0 +(signed word~) anim::$13 zp[2]:3 20002.0 +(signed word~) anim::$14 zp[2]:3 20002.0 +(byte~) anim::$17 reg byte a 10001.0 +(byte~) anim::$20 reg byte a 20002.0 +(byte~) anim::$24 reg byte a 20002.0 +(byte~) anim::$27 reg byte a 20002.0 +(dword~) anim::$29 zp[4]:19 2002.0 +(signed word~) anim::$6 zp[2]:3 20002.0 +(signed word~) anim::$8 zp[2]:3 20002.0 (label) anim::@1 (label) anim::@10 (label) anim::@11 @@ -54,45 +54,45 @@ (label) anim::@8 (label) anim::@9 (byte) anim::angle -(byte) anim::angle#1 angle zp[1]:7 2.75 -(byte) anim::angle#9 angle zp[1]:7 0.4888888888888889 +(byte) anim::angle#1 angle zp[1]:7 250.25 +(byte) anim::angle#9 angle zp[1]:7 44.48888888888889 (signed byte) anim::cos_a (dword) anim::cyclecount -(dword) anim::cyclecount#0 cyclecount zp[4]:19 22.0 +(dword) anim::cyclecount#0 cyclecount zp[4]:19 2002.0 (byte) anim::i -(byte) anim::i#1 i zp[1]:10 151.5 -(byte) anim::i#10 i zp[1]:10 13.289473684210527 +(byte) anim::i#1 i zp[1]:10 15001.5 +(byte) anim::i#10 i zp[1]:10 1315.921052631579 (byte) anim::i2 -(byte) anim::i2#0 reg byte x 101.0 +(byte) anim::i2#0 reg byte x 10001.0 (label) anim::mulf8s_prepare1 (signed byte) anim::mulf8s_prepare1_a (label) anim::mulf8s_prepare2 (signed byte) anim::mulf8s_prepare2_a (signed byte) anim::sin_a (byte) anim::sprite_msb -(byte) anim::sprite_msb#1 sprite_msb zp[1]:2 101.0 -(byte) anim::sprite_msb#10 sprite_msb zp[1]:2 7.481481481481482 -(byte) anim::sprite_msb#2 sprite_msb zp[1]:2 202.0 -(byte) anim::sprite_msb#5 sprite_msb zp[1]:2 34.888888888888886 +(byte) anim::sprite_msb#1 sprite_msb zp[1]:2 10001.0 +(byte) anim::sprite_msb#10 sprite_msb zp[1]:2 740.8148148148148 +(byte) anim::sprite_msb#2 sprite_msb zp[1]:2 20002.0 +(byte) anim::sprite_msb#5 sprite_msb zp[1]:2 3444.8888888888887 (signed byte) anim::x -(signed byte) anim::x#0 x zp[1]:11 15.947368421052632 +(signed byte) anim::x#0 x zp[1]:11 1579.1052631578946 (signed word) anim::xpos -(signed word) anim::xpos#0 xpos zp[2]:17 33.666666666666664 +(signed word) anim::xpos#0 xpos zp[2]:17 3333.6666666666665 (signed word) anim::xr -(signed word) anim::xr#0 xr zp[2]:13 18.363636363636363 -(signed word) anim::xr#1 xr zp[2]:13 33.666666666666664 +(signed word) anim::xr#0 xr zp[2]:13 1818.3636363636363 +(signed word) anim::xr#1 xr zp[2]:13 3333.6666666666665 (signed byte) anim::y -(signed byte) anim::y#0 y zp[1]:12 23.307692307692307 +(signed byte) anim::y#0 y zp[1]:12 2307.9230769230767 (byte) anim::ypos -(byte) anim::ypos#0 reg byte y 50.5 +(byte) anim::ypos#0 reg byte y 5000.5 (signed word) anim::yr -(signed word) anim::yr#0 yr zp[2]:15 16.833333333333332 -(signed word) anim::yr#1 yr zp[2]:15 25.25 +(signed word) anim::yr#0 yr zp[2]:15 1666.8333333333333 +(signed word) anim::yr#1 yr zp[2]:15 2500.25 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:19 4.333333333333333 -(dword) clock::return#2 return zp[4]:19 22.0 +(dword) clock::return#0 return zp[4]:19 3667.333333333333 +(dword) clock::return#2 return zp[4]:19 2002.0 (void()) clock_start() (label) clock_start::@return (void()) init() @@ -100,18 +100,18 @@ (label) init::@2 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 14.666666666666666 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1334.6666666666667 (byte*) init::sprites_ptr (const byte*) init::sprites_ptr#0 sprites_ptr = (const byte*) SCREEN+(word) $3f8 (void()) main() (label) main::@1 (label) main::@return (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 200002.0 +(byte~) mulf8s_prepared::$15 reg byte a 200002.0 +(byte~) mulf8s_prepared::$16 reg byte a 200002.0 +(byte~) mulf8s_prepared::$8 reg byte a 200002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -119,39 +119,39 @@ (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 reg byte y 202.0 -(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 40.6 +(signed byte) mulf8s_prepared::b#0 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#1 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#2 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#3 reg byte y 20002.0 +(signed byte) mulf8s_prepared::b#4 reg byte y 14000.5 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:3 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:3 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:3 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:3 0.6666666666666666 -(word) mulf8s_prepared::m#5 m zp[2]:3 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:3 100001.0 +(word) mulf8s_prepared::m#1 m zp[2]:3 200002.0 +(word) mulf8s_prepared::m#2 m zp[2]:3 200002.0 +(word) mulf8s_prepared::m#4 m zp[2]:3 33333.666666666664 +(word) mulf8s_prepared::m#5 m zp[2]:3 125001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#2 reg byte a 204.0 -(byte) mulf8u_prepare::a#3 reg byte a 202.0 -(byte) mulf8u_prepare::a#4 reg byte a 202.0 +(byte) mulf8u_prepare::a#2 reg byte a 120003.0 +(byte) mulf8u_prepare::a#3 reg byte a 20002.0 +(byte) mulf8u_prepare::a#4 reg byte a 20002.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte a 4.0 +(byte) mulf8u_prepared::b#0 reg byte a 1100002.0 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:3 1.3333333333333333 -(word) mulf8u_prepared::return#2 return zp[2]:3 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:3 366667.3333333334 +(word) mulf8u_prepared::return#2 return zp[2]:3 200002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 20002.0 +(byte~) mulf_init::$4 reg byte a 20002.0 +(byte~) mulf_init::$5 reg byte a 20002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -163,78 +163,78 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:7 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:7 11.0 +(byte) mulf_init::c#1 c zp[1]:7 2307.9230769230767 +(byte) mulf_init::c#2 c zp[1]:7 10001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:10 4.125 -(byte) mulf_init::dir#4 dir zp[1]:10 11.0 +(byte) mulf_init::dir#2 dir zp[1]:10 3750.375 +(byte) mulf_init::dir#4 dir zp[1]:10 10001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:17 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:17 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:17 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:17 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:17 10001.0 +(word) mulf_init::sqr#2 sqr zp[2]:17 20002.0 +(word) mulf_init::sqr#3 sqr zp[2]:17 8334.166666666666 +(word) mulf_init::sqr#4 sqr zp[2]:17 5000.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:8 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:8 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:8 6667.333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:8 2500.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:5 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:5 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:5 20002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:5 2857.4285714285716 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:15 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:15 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:15 3333.6666666666665 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:15 7500.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:13 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:13 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:13 20002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:13 4444.888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 10001.0 +(byte) mulf_init::x_2#2 reg byte x 5000.5 +(byte) mulf_init::x_2#3 reg byte x 6000.6 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 6000.6 +(byte) mulf_init::x_255#2 reg byte x 8000.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 2000002.0 +(byte~) print_byte_at::$2 reg byte y 1000001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:5 4.0 -(byte*) print_byte_at::at#1 at zp[2]:5 4.0 -(byte*) print_byte_at::at#2 at zp[2]:5 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:5 200002.0 +(byte*) print_byte_at::at#1 at zp[2]:5 200002.0 +(byte*) print_byte_at::at#2 at zp[2]:5 366667.3333333334 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:11 2.0 -(byte) print_byte_at::b#1 b zp[1]:11 2.0 -(byte) print_byte_at::b#2 b zp[1]:11 1.6 +(byte) print_byte_at::b#0 b zp[1]:11 100001.0 +(byte) print_byte_at::b#1 b zp[1]:11 100001.0 +(byte) print_byte_at::b#2 b zp[1]:11 440000.80000000005 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:8 4.0 -(byte*) print_char_at::at#1 at zp[2]:8 2.0 -(byte*) print_char_at::at#2 at zp[2]:8 6.0 +(byte*) print_char_at::at#0 at zp[2]:8 2000002.0 +(byte*) print_char_at::at#1 at zp[2]:8 1000001.0 +(byte*) print_char_at::at#2 at zp[2]:8 1.2000003E7 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 1000001.0 +(byte) print_char_at::ch#1 reg byte x 2000002.0 +(byte) print_char_at::ch#2 reg byte x 1.2000003E7 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:19 5.0 +(dword) print_dword_at::dw#0 dw zp[4]:19 7001.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:5 0.8 +(byte*) print_word_at::at#2 at zp[2]:5 40000.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:3 4.0 -(word) print_word_at::w#1 w zp[2]:3 4.0 -(word) print_word_at::w#2 w zp[2]:3 2.0 +(word) print_word_at::w#0 w zp[2]:3 20002.0 +(word) print_word_at::w#1 w zp[2]:3 20002.0 +(word) print_word_at::w#2 w zp[2]:3 55001.0 (const signed byte*) xs[(number) 8] = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 } (const signed byte*) ys[(number) 8] = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 } diff --git a/src/test/ref/examples/scroll/scroll.log b/src/test/ref/examples/scroll/scroll.log index ac86ba993..028446f36 100644 --- a/src/test/ref/examples/scroll/scroll.log +++ b/src/test/ref/examples/scroll/scroll.log @@ -264,17 +264,17 @@ Inferred type updated to byte in (unumber~) main::$7 ← (byte) main::i#3 + (byt Inversing boolean not [15] (bool~) main::$5 ← (byte) main::scroll#1 != (byte) $ff from [14] (bool~) main::$4 ← (byte) main::scroll#1 == (byte) $ff Inversing boolean not [34] (bool~) main::$9 ← (byte) main::c#0 != (byte) 0 from [33] (bool~) main::$8 ← (byte) main::c#0 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::scroll#3 = (byte) main::scroll#5 -Alias (byte*) main::nxt#6 = (byte*) main::nxt#8 (byte*) main::nxt#9 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte*) main::nxt#3 = (byte*) main::nxt#7 (byte*) main::nxt#5 -Alias (byte) main::scroll#10 = (byte) main::scroll#11 (byte) main::scroll#8 (byte) main::scroll#9 -Alias (byte*) fillscreen::cursor#0 = (byte*) fillscreen::screen#1 -Alias (byte) fillscreen::fill#1 = (byte) fillscreen::fill#2 -Alias (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#3 -Alias (byte*) fillscreen::screen#2 = (byte*) fillscreen::screen#3 +Alias main::scroll#3 = main::scroll#5 +Alias main::nxt#6 = main::nxt#8 main::nxt#9 +Alias main::i#2 = main::i#3 +Alias main::nxt#3 = main::nxt#7 main::nxt#5 +Alias main::scroll#10 = main::scroll#11 main::scroll#8 main::scroll#9 +Alias fillscreen::cursor#0 = fillscreen::screen#1 +Alias fillscreen::fill#1 = fillscreen::fill#2 +Alias fillscreen::cursor#2 = fillscreen::cursor#3 +Alias fillscreen::screen#2 = fillscreen::screen#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::scroll#10 = (byte) main::scroll#6 +Alias main::scroll#10 = main::scroll#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::scroll#3 (byte) main::scroll#7 Identical Phi Values (byte*) main::nxt#6 (byte*) main::nxt#10 @@ -324,7 +324,7 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(main::line+1 + main::$7) Consolidated array index constant in *(main::line+$27) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i#2 = (byte~) main::$7 +Alias main::i#2 = main::$7 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@18(between main::@2 and main::@2) Added new block during phi lifting main::@19(between main::@5 and main::@7) @@ -454,27 +454,27 @@ fillscreen::@2: scope:[fillscreen] from fillscreen::@1 VARIABLE REGISTER WEIGHTS (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 22.0 -(byte*) fillscreen::cursor#2 14.666666666666666 +(byte*) fillscreen::cursor#1 2002.0 +(byte*) fillscreen::cursor#2 1334.6666666666667 (byte) fillscreen::fill (byte*) fillscreen::screen (void()) main() (byte) main::c -(byte) main::c#0 16.5 -(byte) main::c#1 22.0 -(byte) main::c#2 33.0 +(byte) main::c#0 151.5 +(byte) main::c#1 202.0 +(byte) main::c#2 303.0 (byte) main::i -(byte) main::i#1 202.0 -(byte) main::i#2 168.33333333333331 +(byte) main::i#1 2002.0 +(byte) main::i#2 1668.3333333333335 (byte*) main::nxt -(byte*) main::nxt#1 22.0 -(byte*) main::nxt#10 20.500000000000004 -(byte*) main::nxt#11 11.0 -(byte*) main::nxt#4 11.0 +(byte*) main::nxt#1 202.0 +(byte*) main::nxt#10 200.49999999999997 +(byte*) main::nxt#11 101.0 +(byte*) main::nxt#4 101.0 (byte) main::scroll -(byte) main::scroll#1 16.5 -(byte) main::scroll#4 11.0 -(byte) main::scroll#7 56.0 +(byte) main::scroll#1 151.5 +(byte) main::scroll#4 101.0 +(byte) main::scroll#7 551.0 Initial phi equivalence classes [ main::scroll#7 main::scroll#4 main::scroll#1 ] @@ -712,20 +712,20 @@ fillscreen: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::scroll#7 main::scroll#4 main::scroll#1 ] -Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] ) always clobbers reg byte a -Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#10) [ main::nxt#10 main::c#0 ] ( main:2 [ main::nxt#10 main::c#0 ] ) always clobbers reg byte a reg byte y -Statement [23] *((const byte*) main::line + (byte) main::i#2) ← *((const byte*) main::line+(byte) 1 + (byte) main::i#2) [ main::nxt#10 main::i#2 ] ( main:2 [ main::nxt#10 main::i#2 ] ) always clobbers reg byte a +Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] { } ) always clobbers reg byte a +Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#10) [ main::nxt#10 main::c#0 ] ( main:2 [ main::nxt#10 main::c#0 ] { } ) always clobbers reg byte a reg byte y +Statement [23] *((const byte*) main::line + (byte) main::i#2) ← *((const byte*) main::line+(byte) 1 + (byte) main::i#2) [ main::nxt#10 main::i#2 ] ( main:2 [ main::nxt#10 main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ] -Statement [27] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a -Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] ) always clobbers reg byte a -Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] ) always clobbers reg byte a -Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#10) [ main::nxt#10 main::c#0 ] ( main:2 [ main::nxt#10 main::c#0 ] ) always clobbers reg byte a reg byte y -Statement [23] *((const byte*) main::line + (byte) main::i#2) ← *((const byte*) main::line+(byte) 1 + (byte) main::i#2) [ main::nxt#10 main::i#2 ] ( main:2 [ main::nxt#10 main::i#2 ] ) always clobbers reg byte a -Statement [27] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a -Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [27] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a +Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] { } ) always clobbers reg byte a +Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ main::scroll#7 main::nxt#10 ] ( main:2 [ main::scroll#7 main::nxt#10 ] { } ) always clobbers reg byte a +Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#10) [ main::nxt#10 main::c#0 ] ( main:2 [ main::nxt#10 main::c#0 ] { } ) always clobbers reg byte a reg byte y +Statement [23] *((const byte*) main::line + (byte) main::i#2) ← *((const byte*) main::line+(byte) 1 + (byte) main::i#2) [ main::nxt#10 main::i#2 ] ( main:2 [ main::nxt#10 main::i#2 ] { } ) always clobbers reg byte a +Statement [27] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a +Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::scroll#7 main::scroll#4 main::scroll#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::c#2 main::c#0 main::c#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -733,8 +733,8 @@ Potential registers zp[2]:5 [ main::nxt#4 main::nxt#10 main::nxt#11 main::nxt#1 Potential registers zp[2]:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] : zp[2]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 370.33: zp[1]:3 [ main::i#2 main::i#1 ] 83.5: zp[1]:2 [ main::scroll#7 main::scroll#4 main::scroll#1 ] 71.5: zp[1]:4 [ main::c#2 main::c#0 main::c#1 ] 64.5: zp[2]:5 [ main::nxt#4 main::nxt#10 main::nxt#11 main::nxt#1 ] -Uplift Scope [fillscreen] 36.67: zp[2]:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplift Scope [main] 3,670.33: zp[1]:3 [ main::i#2 main::i#1 ] 803.5: zp[1]:2 [ main::scroll#7 main::scroll#4 main::scroll#1 ] 656.5: zp[1]:4 [ main::c#2 main::c#0 main::c#1 ] 604.5: zp[2]:5 [ main::nxt#4 main::nxt#10 main::nxt#11 main::nxt#1 ] +Uplift Scope [fillscreen] 3,336.67: zp[2]:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [] Uplifting [main] best 8284 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::scroll#7 main::scroll#4 main::scroll#1 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp[2]:5 [ main::nxt#4 main::nxt#10 main::nxt#11 main::nxt#1 ] @@ -1011,8 +1011,8 @@ FINAL SYMBOL TABLE (label) fillscreen::@2 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp[2]:4 22.0 -(byte*) fillscreen::cursor#2 cursor zp[2]:4 14.666666666666666 +(byte*) fillscreen::cursor#1 cursor zp[2]:4 2002.0 +(byte*) fillscreen::cursor#2 cursor zp[2]:4 1334.6666666666667 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte) $20 (byte*) fillscreen::screen @@ -1027,22 +1027,22 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::c -(byte) main::c#0 reg byte x 16.5 -(byte) main::c#1 reg byte x 22.0 -(byte) main::c#2 reg byte x 33.0 +(byte) main::c#0 reg byte x 151.5 +(byte) main::c#1 reg byte x 202.0 +(byte) main::c#2 reg byte x 303.0 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 168.33333333333331 +(byte) main::i#1 reg byte x 2002.0 +(byte) main::i#2 reg byte x 1668.3333333333335 (const byte*) main::line = (const byte*) SCREEN+(byte) $28 (byte*) main::nxt -(byte*) main::nxt#1 nxt zp[2]:2 22.0 -(byte*) main::nxt#10 nxt zp[2]:2 20.500000000000004 -(byte*) main::nxt#11 nxt zp[2]:2 11.0 -(byte*) main::nxt#4 nxt zp[2]:2 11.0 +(byte*) main::nxt#1 nxt zp[2]:2 202.0 +(byte*) main::nxt#10 nxt zp[2]:2 200.49999999999997 +(byte*) main::nxt#11 nxt zp[2]:2 101.0 +(byte*) main::nxt#4 nxt zp[2]:2 101.0 (byte) main::scroll -(byte) main::scroll#1 reg byte x 16.5 -(byte) main::scroll#4 reg byte x 11.0 -(byte) main::scroll#7 reg byte x 56.0 +(byte) main::scroll#1 reg byte x 151.5 +(byte) main::scroll#4 reg byte x 101.0 +(byte) main::scroll#7 reg byte x 551.0 reg byte x [ main::scroll#7 main::scroll#4 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/examples/scroll/scroll.sym b/src/test/ref/examples/scroll/scroll.sym index b16054958..546b2a3bf 100644 --- a/src/test/ref/examples/scroll/scroll.sym +++ b/src/test/ref/examples/scroll/scroll.sym @@ -11,8 +11,8 @@ (label) fillscreen::@2 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp[2]:4 22.0 -(byte*) fillscreen::cursor#2 cursor zp[2]:4 14.666666666666666 +(byte*) fillscreen::cursor#1 cursor zp[2]:4 2002.0 +(byte*) fillscreen::cursor#2 cursor zp[2]:4 1334.6666666666667 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte) $20 (byte*) fillscreen::screen @@ -27,22 +27,22 @@ (label) main::@8 (label) main::@9 (byte) main::c -(byte) main::c#0 reg byte x 16.5 -(byte) main::c#1 reg byte x 22.0 -(byte) main::c#2 reg byte x 33.0 +(byte) main::c#0 reg byte x 151.5 +(byte) main::c#1 reg byte x 202.0 +(byte) main::c#2 reg byte x 303.0 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 168.33333333333331 +(byte) main::i#1 reg byte x 2002.0 +(byte) main::i#2 reg byte x 1668.3333333333335 (const byte*) main::line = (const byte*) SCREEN+(byte) $28 (byte*) main::nxt -(byte*) main::nxt#1 nxt zp[2]:2 22.0 -(byte*) main::nxt#10 nxt zp[2]:2 20.500000000000004 -(byte*) main::nxt#11 nxt zp[2]:2 11.0 -(byte*) main::nxt#4 nxt zp[2]:2 11.0 +(byte*) main::nxt#1 nxt zp[2]:2 202.0 +(byte*) main::nxt#10 nxt zp[2]:2 200.49999999999997 +(byte*) main::nxt#11 nxt zp[2]:2 101.0 +(byte*) main::nxt#4 nxt zp[2]:2 101.0 (byte) main::scroll -(byte) main::scroll#1 reg byte x 16.5 -(byte) main::scroll#4 reg byte x 11.0 -(byte) main::scroll#7 reg byte x 56.0 +(byte) main::scroll#1 reg byte x 151.5 +(byte) main::scroll#4 reg byte x 101.0 +(byte) main::scroll#7 reg byte x 551.0 reg byte x [ main::scroll#7 main::scroll#4 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/examples/scrollbig/scrollbig.log b/src/test/ref/examples/scrollbig/scrollbig.log index 494e34fef..5a0a596c9 100644 --- a/src/test/ref/examples/scrollbig/scrollbig.log +++ b/src/test/ref/examples/scrollbig/scrollbig.log @@ -775,69 +775,69 @@ Inversing boolean not [55] (bool~) scroll_bit::$2 ← (byte) current_bit#5 != (b Inversing boolean not [82] (bool~) scroll_bit::$11 ← (byte~) scroll_bit::$9 == (byte) 0 from [81] (bool~) scroll_bit::$10 ← (byte~) scroll_bit::$9 != (byte) 0 Inversing boolean not [106] (bool~) next_char::$1 ← (byte) next_char::c#0 != (byte) 0 from [105] (bool~) next_char::$0 ← (byte) next_char::c#0 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) scroll#20 = (byte) scroll#21 -Alias (byte) current_bit#30 = (byte) current_bit#31 -Alias (byte*) nxt#34 = (byte*) nxt#36 -Alias (byte*) current_chargen#29 = (byte*) current_chargen#30 -Alias (byte) scroll#13 = (byte) scroll#16 -Alias (byte) current_bit#17 = (byte) current_bit#24 -Alias (byte*) nxt#21 = (byte*) nxt#27 -Alias (byte*) current_chargen#15 = (byte*) current_chargen#22 -Alias (byte) scroll#0 = (byte) scroll#7 (byte) scroll#8 (byte) scroll#1 -Alias (byte) current_bit#0 = (byte) current_bit#9 (byte) current_bit#10 (byte) current_bit#1 -Alias (byte*) nxt#0 = (byte*) nxt#11 (byte*) nxt#12 (byte*) nxt#1 -Alias (byte*) current_chargen#0 = (byte*) current_chargen#8 (byte*) current_chargen#9 (byte*) current_chargen#1 -Alias (byte) current_bit#18 = (byte) current_bit#25 -Alias (byte*) nxt#22 = (byte*) nxt#28 -Alias (byte*) current_chargen#16 = (byte*) current_chargen#23 -Alias (byte) scroll#14 = (byte) scroll#4 -Alias (byte) current_bit#11 = (byte) current_bit#2 -Alias (byte*) nxt#13 = (byte*) nxt#2 -Alias (byte*) current_chargen#10 = (byte*) current_chargen#2 -Alias (byte) scroll#10 = (byte) scroll#11 (byte) scroll#5 -Alias (byte) current_bit#12 = (byte) current_bit#19 (byte) current_bit#3 -Alias (byte*) nxt#14 = (byte*) nxt#23 (byte*) nxt#3 -Alias (byte*) current_chargen#11 = (byte*) current_chargen#17 (byte*) current_chargen#3 -Alias (byte) scroll#15 = (byte) scroll#19 (byte) scroll#2 (byte) scroll#17 -Alias (byte) current_bit#5 = (byte~) scroll_bit::$0 -Alias (byte*) current_chargen#19 = (byte*) current_chargen#24 -Alias (byte) current_bit#21 = (byte) current_bit#26 -Alias (byte*) nxt#35 = (byte*) nxt#37 -Alias (byte*) scroll_bit::sc#0 = (byte*~) scroll_bit::$5 -Alias (byte*) nxt#24 = (byte*) nxt#29 -Alias (byte) next_char::return#0 = (byte) next_char::return#3 -Alias (byte*) nxt#15 = (byte*) nxt#4 -Alias (word) scroll_bit::c#0 = (byte~) scroll_bit::$6 -Alias (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 -Alias (byte*) scroll_bit::sc#1 = (byte*~) scroll_bit::$12 -Alias (byte*) scroll_bit::sc#3 = (byte*) scroll_bit::sc#4 -Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#4 -Alias (byte*) current_chargen#12 = (byte*) current_chargen#25 -Alias (byte) current_bit#14 = (byte) current_bit#27 -Alias (byte*) nxt#32 = (byte*) nxt#33 -Alias (byte) current_bit#15 = (byte) current_bit#22 (byte) current_bit#20 (byte) current_bit#7 -Alias (byte*) nxt#16 = (byte*) nxt#25 (byte*) nxt#30 (byte*) nxt#5 -Alias (byte*) current_chargen#13 = (byte*) current_chargen#20 (byte*) current_chargen#18 (byte*) current_chargen#6 -Alias (byte) current_bit#23 = (byte) current_bit#28 (byte) current_bit#4 -Alias (byte*) current_chargen#21 = (byte*) current_chargen#26 (byte*) current_chargen#4 -Alias (byte) next_char::return#1 = (byte) next_char::c#2 (byte) next_char::return#4 (byte) next_char::return#2 -Alias (byte*) nxt#19 = (byte*) nxt#7 (byte*) nxt#9 -Alias (byte) scroll_hard::i#2 = (byte) scroll_hard::i#3 -Alias (byte*) fillscreen::cursor#0 = (byte*) fillscreen::screen#1 -Alias (byte) fillscreen::fill#1 = (byte) fillscreen::fill#2 -Alias (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#3 -Alias (byte*) fillscreen::screen#2 = (byte*) fillscreen::screen#3 -Alias (byte*) nxt#26 = (byte*) nxt#6 -Alias (byte) scroll#12 = (byte) scroll#6 -Alias (byte) current_bit#16 = (byte) current_bit#8 -Alias (byte*) nxt#10 = (byte*) nxt#20 -Alias (byte*) current_chargen#14 = (byte*) current_chargen#7 +Alias scroll#20 = scroll#21 +Alias current_bit#30 = current_bit#31 +Alias nxt#34 = nxt#36 +Alias current_chargen#29 = current_chargen#30 +Alias scroll#13 = scroll#16 +Alias current_bit#17 = current_bit#24 +Alias nxt#21 = nxt#27 +Alias current_chargen#15 = current_chargen#22 +Alias scroll#0 = scroll#7 scroll#8 scroll#1 +Alias current_bit#0 = current_bit#9 current_bit#10 current_bit#1 +Alias nxt#0 = nxt#11 nxt#12 nxt#1 +Alias current_chargen#0 = current_chargen#8 current_chargen#9 current_chargen#1 +Alias current_bit#18 = current_bit#25 +Alias nxt#22 = nxt#28 +Alias current_chargen#16 = current_chargen#23 +Alias scroll#14 = scroll#4 +Alias current_bit#11 = current_bit#2 +Alias nxt#13 = nxt#2 +Alias current_chargen#10 = current_chargen#2 +Alias scroll#10 = scroll#11 scroll#5 +Alias current_bit#12 = current_bit#19 current_bit#3 +Alias nxt#14 = nxt#23 nxt#3 +Alias current_chargen#11 = current_chargen#17 current_chargen#3 +Alias scroll#15 = scroll#19 scroll#2 scroll#17 +Alias current_bit#5 = scroll_bit::$0 +Alias current_chargen#19 = current_chargen#24 +Alias current_bit#21 = current_bit#26 +Alias nxt#35 = nxt#37 +Alias scroll_bit::sc#0 = scroll_bit::$5 +Alias nxt#24 = nxt#29 +Alias next_char::return#0 = next_char::return#3 +Alias nxt#15 = nxt#4 +Alias scroll_bit::c#0 = scroll_bit::$6 +Alias current_chargen#5 = scroll_bit::$8 +Alias scroll_bit::sc#1 = scroll_bit::$12 +Alias scroll_bit::sc#3 = scroll_bit::sc#4 +Alias scroll_bit::r#2 = scroll_bit::r#4 +Alias current_chargen#12 = current_chargen#25 +Alias current_bit#14 = current_bit#27 +Alias nxt#32 = nxt#33 +Alias current_bit#15 = current_bit#22 current_bit#20 current_bit#7 +Alias nxt#16 = nxt#25 nxt#30 nxt#5 +Alias current_chargen#13 = current_chargen#20 current_chargen#18 current_chargen#6 +Alias current_bit#23 = current_bit#28 current_bit#4 +Alias current_chargen#21 = current_chargen#26 current_chargen#4 +Alias next_char::return#1 = next_char::c#2 next_char::return#4 next_char::return#2 +Alias nxt#19 = nxt#7 nxt#9 +Alias scroll_hard::i#2 = scroll_hard::i#3 +Alias fillscreen::cursor#0 = fillscreen::screen#1 +Alias fillscreen::fill#1 = fillscreen::fill#2 +Alias fillscreen::cursor#2 = fillscreen::cursor#3 +Alias fillscreen::screen#2 = fillscreen::screen#3 +Alias nxt#26 = nxt#6 +Alias scroll#12 = scroll#6 +Alias current_bit#16 = current_bit#8 +Alias nxt#10 = nxt#20 +Alias current_chargen#14 = current_chargen#7 Successful SSA optimization Pass2AliasElimination -Alias (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#3 -Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#3 -Alias (byte*) current_chargen#12 = (byte*) current_chargen#13 -Alias (byte) current_bit#14 = (byte) current_bit#15 -Alias (byte*) nxt#16 = (byte*) nxt#32 +Alias scroll_bit::sc#2 = scroll_bit::sc#3 +Alias scroll_bit::r#2 = scroll_bit::r#3 +Alias current_chargen#12 = current_chargen#13 +Alias current_bit#14 = current_bit#15 +Alias nxt#16 = nxt#32 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) scroll#20 (byte) scroll#15 Identical Phi Values (byte) current_bit#30 (byte) current_bit#23 @@ -1014,7 +1014,7 @@ Consolidated array index constant in assignment *(SCREEN+(byte)$28*5+1 + scroll_ Consolidated array index constant in assignment *(SCREEN+(byte)$28*6+1 + scroll_hard::$21) Consolidated array index constant in assignment *(SCREEN+(word)$28*7+1 + scroll_hard::$24) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) scroll_hard::i#2 = (byte~) scroll_hard::$3 (byte~) scroll_hard::$6 (byte~) scroll_hard::$9 (byte~) scroll_hard::$12 (byte~) scroll_hard::$15 (byte~) scroll_hard::$18 (byte~) scroll_hard::$21 (byte~) scroll_hard::$24 +Alias scroll_hard::i#2 = scroll_hard::$3 scroll_hard::$6 scroll_hard::$9 scroll_hard::$12 scroll_hard::$15 scroll_hard::$18 scroll_hard::$21 scroll_hard::$24 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@9(between main::@2 and main::@2) Added new block during phi lifting scroll_soft::@4(between scroll_soft and scroll_soft::@1) @@ -1259,58 +1259,58 @@ fillscreen::@2: scope:[fillscreen] from fillscreen::@1 VARIABLE REGISTER WEIGHTS (byte) current_bit -(byte) current_bit#12 3.0 -(byte) current_bit#21 5.833333333333333 -(byte) current_bit#29 31.0 -(byte) current_bit#5 3.0 +(byte) current_bit#12 420.59999999999997 +(byte) current_bit#21 56166.83333333333 +(byte) current_bit#29 1872.1428571428573 +(byte) current_bit#5 15001.5 (byte*) current_chargen -(byte*) current_chargen#11 3.0 -(byte*) current_chargen#19 5.944444444444444 -(byte*) current_chargen#27 24.111111111111107 -(byte*) current_chargen#5 4.0 +(byte*) current_chargen#11 420.59999999999997 +(byte*) current_chargen#19 56722.444444444445 +(byte*) current_chargen#27 1456.111111111111 +(byte*) current_chargen#5 20002.0 (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 22.0 -(byte*) fillscreen::cursor#2 14.666666666666666 +(byte*) fillscreen::cursor#1 2002.0 +(byte*) fillscreen::cursor#2 1334.6666666666667 (byte) fillscreen::fill (byte*) fillscreen::screen (void()) main() (byte()) next_char() (byte) next_char::c -(byte) next_char::c#0 3.0 -(byte) next_char::c#1 4.0 +(byte) next_char::c#0 150001.5 +(byte) next_char::c#1 200002.0 (byte) next_char::return -(byte) next_char::return#0 4.0 -(byte) next_char::return#1 1.5 +(byte) next_char::return#0 20002.0 +(byte) next_char::return#1 52500.75 (byte*) nxt -(byte*) nxt#14 3.0 -(byte*) nxt#18 4.0 -(byte*) nxt#19 0.5714285714285714 -(byte*) nxt#31 18.41666666666667 -(byte*) nxt#35 0.3333333333333333 +(byte*) nxt#14 420.59999999999997 +(byte*) nxt#18 200002.0 +(byte*) nxt#19 15714.57142857143 +(byte*) nxt#31 17758.916666666664 +(byte*) nxt#35 1166.8333333333333 (byte) scroll -(byte) scroll#10 3.0 -(byte) scroll#18 53.75 -(byte) scroll#3 3.0 +(byte) scroll#10 420.59999999999997 +(byte) scroll#18 776.0 +(byte) scroll#3 1501.5 (void()) scroll_bit() -(word~) scroll_bit::$7 4.0 -(byte~) scroll_bit::$9 202.0 +(word~) scroll_bit::$7 20002.0 +(byte~) scroll_bit::$9 2000002.0 (byte) scroll_bit::b -(byte) scroll_bit::b#2 101.0 +(byte) scroll_bit::b#2 1000001.0 (byte) scroll_bit::bits -(byte) scroll_bit::bits#0 202.0 +(byte) scroll_bit::bits#0 2000002.0 (word) scroll_bit::c -(word) scroll_bit::c#0 4.0 +(word) scroll_bit::c#0 20002.0 (byte) scroll_bit::r -(byte) scroll_bit::r#1 151.5 -(byte) scroll_bit::r#2 37.875 +(byte) scroll_bit::r#1 1500001.5 +(byte) scroll_bit::r#2 375000.375 (byte*) scroll_bit::sc -(byte*) scroll_bit::sc#1 67.33333333333333 -(byte*) scroll_bit::sc#2 43.285714285714285 +(byte*) scroll_bit::sc#1 666667.3333333334 +(byte*) scroll_bit::sc#2 428571.85714285716 (void()) scroll_hard() (byte) scroll_hard::i -(byte) scroll_hard::i#1 202.0 -(byte) scroll_hard::i#2 191.89999999999995 +(byte) scroll_hard::i#1 2.0000002E7 +(byte) scroll_hard::i#2 1.90000019E7 (void()) scroll_soft() Initial phi equivalence classes @@ -1821,54 +1821,54 @@ fillscreen: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ scroll#18 scroll#10 scroll#3 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] -Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [24] (word) scroll_bit::c#0 ← (byte) next_char::return#0 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::c#0 nxt#19 ] ) always clobbers reg byte a -Statement [25] (word~) scroll_bit::$7 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$7 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::$7 nxt#19 ] ) always clobbers reg byte a -Statement [26] (byte*) current_chargen#5 ← (const byte*) CHARGEN + (word~) scroll_bit::$7 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a -Statement [30] *((const byte*) PROCPORT) ← (byte) $32 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] ) always clobbers reg byte a -Statement [32] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a +Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] { } ) always clobbers reg byte a +Statement [24] (word) scroll_bit::c#0 ← (byte) next_char::return#0 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::c#0 nxt#19 ] { } ) always clobbers reg byte a +Statement [25] (word~) scroll_bit::$7 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$7 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::$7 nxt#19 ] { } ) always clobbers reg byte a +Statement [26] (byte*) current_chargen#5 ← (const byte*) CHARGEN + (word~) scroll_bit::$7 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_chargen#5 nxt#19 ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) PROCPORT) ← (byte) $32 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] { } ) always clobbers reg byte a +Statement [32] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y +Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) $28 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [41] *((const byte*) PROCPORT) ← (byte) $37 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] ) always clobbers reg byte a -Statement [48] *((const byte*) SCREEN + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) $28 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) PROCPORT) ← (byte) $37 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] { } ) always clobbers reg byte a +Statement [48] *((const byte*) SCREEN + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ scroll_hard::i#2 scroll_hard::i#1 ] -Statement [49] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 3+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) SCREEN+(byte)(number) $28*(number) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 4+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [53] *((const byte*) SCREEN+(byte)(number) $28*(number) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 5+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [54] *((const byte*) SCREEN+(byte)(number) $28*(number) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 6+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [55] *((const byte*) SCREEN+(word)(number) $28*(number) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(word)(number) $28*(number) 7+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [57] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a -Statement [67] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [24] (word) scroll_bit::c#0 ← (byte) next_char::return#0 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::c#0 nxt#19 ] ) always clobbers reg byte a -Statement [25] (word~) scroll_bit::$7 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$7 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::$7 nxt#19 ] ) always clobbers reg byte a -Statement [26] (byte*) current_chargen#5 ← (const byte*) CHARGEN + (word~) scroll_bit::$7 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a -Statement [30] *((const byte*) PROCPORT) ← (byte) $32 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] ) always clobbers reg byte a -Statement [32] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y -Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) $28 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [41] *((const byte*) PROCPORT) ← (byte) $37 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] ) always clobbers reg byte a -Statement [48] *((const byte*) SCREEN + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [49] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [50] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 3+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) SCREEN+(byte)(number) $28*(number) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 4+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [53] *((const byte*) SCREEN+(byte)(number) $28*(number) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 5+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [54] *((const byte*) SCREEN+(byte)(number) $28*(number) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 6+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [55] *((const byte*) SCREEN+(word)(number) $28*(number) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(word)(number) $28*(number) 7+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [57] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a -Statement [67] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [49] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [50] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 3+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) SCREEN+(byte)(number) $28*(number) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 4+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) SCREEN+(byte)(number) $28*(number) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 5+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) SCREEN+(byte)(number) $28*(number) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 6+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [55] *((const byte*) SCREEN+(word)(number) $28*(number) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(word)(number) $28*(number) 7+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [57] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] { { next_char::return#0 = next_char::return#1 } } ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a +Statement [67] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] if(*((const byte*) RASTER)!=(byte) $fe) goto main::@1 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] { } ) always clobbers reg byte a +Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] { } ) always clobbers reg byte a +Statement [24] (word) scroll_bit::c#0 ← (byte) next_char::return#0 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::c#0 nxt#19 ] { } ) always clobbers reg byte a +Statement [25] (word~) scroll_bit::$7 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$7 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ scroll_bit::$7 nxt#19 ] { } ) always clobbers reg byte a +Statement [26] (byte*) current_chargen#5 ← (const byte*) CHARGEN + (word~) scroll_bit::$7 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_chargen#5 nxt#19 ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) PROCPORT) ← (byte) $32 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] { } ) always clobbers reg byte a +Statement [32] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] { } ) always clobbers reg byte a reg byte y +Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] { } ) always clobbers reg byte y +Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) $28 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) PROCPORT) ← (byte) $37 [ current_bit#21 nxt#35 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:15 [ current_bit#21 nxt#35 current_chargen#19 ] { } ) always clobbers reg byte a +Statement [48] *((const byte*) SCREEN + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [50] *((const byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 3+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) SCREEN+(byte)(number) $28*(number) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 4+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) SCREEN+(byte)(number) $28*(number) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 5+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) SCREEN+(byte)(number) $28*(number) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(byte)(number) $28*(number) 6+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [55] *((const byte*) SCREEN+(word)(number) $28*(number) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN+(word)(number) $28*(number) 7+(byte) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:15::scroll_hard:28 [ current_bit#21 nxt#35 current_chargen#19 scroll_hard::i#2 ] { } ) always clobbers reg byte a +Statement [57] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] { { next_char::return#0 = next_char::return#1 } } ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) fillscreen::cursor#2<(const byte*) SCREEN+(word) $3e8) goto fillscreen::@2 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a +Statement [67] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ scroll#18 scroll#10 scroll#3 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] : zp[2]:4 , @@ -1886,20 +1886,20 @@ Potential registers zp[1]:21 [ scroll_bit::bits#0 ] : zp[1]:21 , reg byte a , re Potential registers zp[1]:22 [ scroll_bit::$9 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scroll_bit] 202: zp[1]:21 [ scroll_bit::bits#0 ] 202: zp[1]:22 [ scroll_bit::$9 ] 189.38: zp[1]:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 110.62: zp[2]:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 101: zp[1]:9 [ scroll_bit::b#2 ] 4: zp[2]:17 [ scroll_bit::c#0 ] 4: zp[2]:19 [ scroll_bit::$7 ] -Uplift Scope [scroll_hard] 393.9: zp[1]:10 [ scroll_hard::i#2 scroll_hard::i#1 ] -Uplift Scope [] 59.75: zp[1]:2 [ scroll#18 scroll#10 scroll#3 ] 42.83: zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] 37.06: zp[2]:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] 26.32: zp[2]:11 [ nxt#18 nxt#31 nxt#14 nxt#35 nxt#19 ] -Uplift Scope [fillscreen] 36.67: zp[2]:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplift Scope [next_char] 8.5: zp[1]:13 [ next_char::return#1 next_char::c#0 next_char::c#1 ] 4: zp[1]:16 [ next_char::return#0 ] +Uplift Scope [scroll_hard] 39,000,003.9: zp[1]:10 [ scroll_hard::i#2 scroll_hard::i#1 ] +Uplift Scope [scroll_bit] 2,000,002: zp[1]:21 [ scroll_bit::bits#0 ] 2,000,002: zp[1]:22 [ scroll_bit::$9 ] 1,875,001.88: zp[1]:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 1,095,239.19: zp[2]:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 1,000,001: zp[1]:9 [ scroll_bit::b#2 ] 20,002: zp[2]:17 [ scroll_bit::c#0 ] 20,002: zp[2]:19 [ scroll_bit::$7 ] +Uplift Scope [next_char] 402,504.25: zp[1]:13 [ next_char::return#1 next_char::c#0 next_char::c#1 ] 20,002: zp[1]:16 [ next_char::return#0 ] +Uplift Scope [] 235,062.92: zp[2]:11 [ nxt#18 nxt#31 nxt#14 nxt#35 nxt#19 ] 78,601.16: zp[2]:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] 73,461.08: zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] 2,698.1: zp[1]:2 [ scroll#18 scroll#10 scroll#3 ] +Uplift Scope [fillscreen] 3,336.67: zp[2]:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [main] Uplift Scope [scroll_soft] -Uplifting [scroll_bit] best 27962 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$9 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp[2]:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] zp[2]:17 [ scroll_bit::c#0 ] zp[2]:19 [ scroll_bit::$7 ] +Uplifting [scroll_hard] best 27562 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] +Uplifting [scroll_bit] best 24662 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$9 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp[2]:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] zp[2]:17 [ scroll_bit::c#0 ] zp[2]:19 [ scroll_bit::$7 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [scroll_hard] best 24662 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] -Uplifting [] best 24350 combination reg byte x [ scroll#18 scroll#10 scroll#3 ] zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] zp[2]:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp[2]:11 [ nxt#18 nxt#31 nxt#14 nxt#35 nxt#19 ] -Uplifting [fillscreen] best 24350 combination zp[2]:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [next_char] best 24336 combination reg byte x [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] +Uplifting [next_char] best 24648 combination reg byte x [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] +Uplifting [] best 24336 combination zp[2]:11 [ nxt#18 nxt#31 nxt#14 nxt#35 nxt#19 ] zp[2]:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] reg byte x [ scroll#18 scroll#10 scroll#3 ] +Uplifting [fillscreen] best 24336 combination zp[2]:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplifting [main] best 24336 combination Uplifting [scroll_soft] best 24336 combination Attempting to uplift remaining variables inzp[1]:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] @@ -2431,22 +2431,22 @@ FINAL SYMBOL TABLE (const byte*) SCROLL = (byte*) 53270 (const byte*) TEXT = (byte*) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- " (byte) current_bit -(byte) current_bit#12 current_bit zp[1]:2 3.0 -(byte) current_bit#21 current_bit zp[1]:2 5.833333333333333 -(byte) current_bit#29 current_bit zp[1]:2 31.0 -(byte) current_bit#5 current_bit zp[1]:2 3.0 +(byte) current_bit#12 current_bit zp[1]:2 420.59999999999997 +(byte) current_bit#21 current_bit zp[1]:2 56166.83333333333 +(byte) current_bit#29 current_bit zp[1]:2 1872.1428571428573 +(byte) current_bit#5 current_bit zp[1]:2 15001.5 (byte*) current_chargen -(byte*) current_chargen#11 current_chargen zp[2]:3 3.0 -(byte*) current_chargen#19 current_chargen zp[2]:3 5.944444444444444 -(byte*) current_chargen#27 current_chargen zp[2]:3 24.111111111111107 -(byte*) current_chargen#5 current_chargen zp[2]:3 4.0 +(byte*) current_chargen#11 current_chargen zp[2]:3 420.59999999999997 +(byte*) current_chargen#19 current_chargen zp[2]:3 56722.444444444445 +(byte*) current_chargen#27 current_chargen zp[2]:3 1456.111111111111 +(byte*) current_chargen#5 current_chargen zp[2]:3 20002.0 (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (label) fillscreen::@1 (label) fillscreen::@2 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp[2]:7 22.0 -(byte*) fillscreen::cursor#2 cursor zp[2]:7 14.666666666666666 +(byte*) fillscreen::cursor#1 cursor zp[2]:7 2002.0 +(byte*) fillscreen::cursor#2 cursor zp[2]:7 1334.6666666666667 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte) $20 (byte*) fillscreen::screen @@ -2460,24 +2460,24 @@ FINAL SYMBOL TABLE (label) next_char::@2 (label) next_char::@return (byte) next_char::c -(byte) next_char::c#0 reg byte x 3.0 -(byte) next_char::c#1 reg byte x 4.0 +(byte) next_char::c#0 reg byte x 150001.5 +(byte) next_char::c#1 reg byte x 200002.0 (byte) next_char::return -(byte) next_char::return#0 reg byte a 4.0 -(byte) next_char::return#1 reg byte x 1.5 +(byte) next_char::return#0 reg byte a 20002.0 +(byte) next_char::return#1 reg byte x 52500.75 (byte*) nxt -(byte*) nxt#14 nxt zp[2]:5 3.0 -(byte*) nxt#18 nxt zp[2]:5 4.0 -(byte*) nxt#19 nxt zp[2]:5 0.5714285714285714 -(byte*) nxt#31 nxt zp[2]:5 18.41666666666667 -(byte*) nxt#35 nxt zp[2]:5 0.3333333333333333 +(byte*) nxt#14 nxt zp[2]:5 420.59999999999997 +(byte*) nxt#18 nxt zp[2]:5 200002.0 +(byte*) nxt#19 nxt zp[2]:5 15714.57142857143 +(byte*) nxt#31 nxt zp[2]:5 17758.916666666664 +(byte*) nxt#35 nxt zp[2]:5 1166.8333333333333 (byte) scroll -(byte) scroll#10 reg byte x 3.0 -(byte) scroll#18 reg byte x 53.75 -(byte) scroll#3 reg byte x 3.0 +(byte) scroll#10 reg byte x 420.59999999999997 +(byte) scroll#18 reg byte x 776.0 +(byte) scroll#3 reg byte x 1501.5 (void()) scroll_bit() -(word~) scroll_bit::$7 zp[2]:3 4.0 -(byte~) scroll_bit::$9 reg byte a 202.0 +(word~) scroll_bit::$7 zp[2]:3 20002.0 +(byte~) scroll_bit::$9 reg byte a 2000002.0 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -2488,24 +2488,24 @@ FINAL SYMBOL TABLE (label) scroll_bit::@8 (label) scroll_bit::@return (byte) scroll_bit::b -(byte) scroll_bit::b#2 reg byte a 101.0 +(byte) scroll_bit::b#2 reg byte a 1000001.0 (byte) scroll_bit::bits -(byte) scroll_bit::bits#0 reg byte a 202.0 +(byte) scroll_bit::bits#0 reg byte a 2000002.0 (word) scroll_bit::c -(word) scroll_bit::c#0 c zp[2]:3 4.0 +(word) scroll_bit::c#0 c zp[2]:3 20002.0 (byte) scroll_bit::r -(byte) scroll_bit::r#1 reg byte x 151.5 -(byte) scroll_bit::r#2 reg byte x 37.875 +(byte) scroll_bit::r#1 reg byte x 1500001.5 +(byte) scroll_bit::r#2 reg byte x 375000.375 (byte*) scroll_bit::sc -(byte*) scroll_bit::sc#1 sc zp[2]:7 67.33333333333333 -(byte*) scroll_bit::sc#2 sc zp[2]:7 43.285714285714285 +(byte*) scroll_bit::sc#1 sc zp[2]:7 666667.3333333334 +(byte*) scroll_bit::sc#2 sc zp[2]:7 428571.85714285716 (void()) scroll_hard() (label) scroll_hard::@1 (label) scroll_hard::@2 (label) scroll_hard::@return (byte) scroll_hard::i -(byte) scroll_hard::i#1 reg byte x 202.0 -(byte) scroll_hard::i#2 reg byte x 191.89999999999995 +(byte) scroll_hard::i#1 reg byte x 2.0000002E7 +(byte) scroll_hard::i#2 reg byte x 1.90000019E7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 diff --git a/src/test/ref/examples/scrollbig/scrollbig.sym b/src/test/ref/examples/scrollbig/scrollbig.sym index 38f313d13..2618915c3 100644 --- a/src/test/ref/examples/scrollbig/scrollbig.sym +++ b/src/test/ref/examples/scrollbig/scrollbig.sym @@ -9,22 +9,22 @@ (const byte*) SCROLL = (byte*) 53270 (const byte*) TEXT = (byte*) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- " (byte) current_bit -(byte) current_bit#12 current_bit zp[1]:2 3.0 -(byte) current_bit#21 current_bit zp[1]:2 5.833333333333333 -(byte) current_bit#29 current_bit zp[1]:2 31.0 -(byte) current_bit#5 current_bit zp[1]:2 3.0 +(byte) current_bit#12 current_bit zp[1]:2 420.59999999999997 +(byte) current_bit#21 current_bit zp[1]:2 56166.83333333333 +(byte) current_bit#29 current_bit zp[1]:2 1872.1428571428573 +(byte) current_bit#5 current_bit zp[1]:2 15001.5 (byte*) current_chargen -(byte*) current_chargen#11 current_chargen zp[2]:3 3.0 -(byte*) current_chargen#19 current_chargen zp[2]:3 5.944444444444444 -(byte*) current_chargen#27 current_chargen zp[2]:3 24.111111111111107 -(byte*) current_chargen#5 current_chargen zp[2]:3 4.0 +(byte*) current_chargen#11 current_chargen zp[2]:3 420.59999999999997 +(byte*) current_chargen#19 current_chargen zp[2]:3 56722.444444444445 +(byte*) current_chargen#27 current_chargen zp[2]:3 1456.111111111111 +(byte*) current_chargen#5 current_chargen zp[2]:3 20002.0 (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (label) fillscreen::@1 (label) fillscreen::@2 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp[2]:7 22.0 -(byte*) fillscreen::cursor#2 cursor zp[2]:7 14.666666666666666 +(byte*) fillscreen::cursor#1 cursor zp[2]:7 2002.0 +(byte*) fillscreen::cursor#2 cursor zp[2]:7 1334.6666666666667 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte) $20 (byte*) fillscreen::screen @@ -38,24 +38,24 @@ (label) next_char::@2 (label) next_char::@return (byte) next_char::c -(byte) next_char::c#0 reg byte x 3.0 -(byte) next_char::c#1 reg byte x 4.0 +(byte) next_char::c#0 reg byte x 150001.5 +(byte) next_char::c#1 reg byte x 200002.0 (byte) next_char::return -(byte) next_char::return#0 reg byte a 4.0 -(byte) next_char::return#1 reg byte x 1.5 +(byte) next_char::return#0 reg byte a 20002.0 +(byte) next_char::return#1 reg byte x 52500.75 (byte*) nxt -(byte*) nxt#14 nxt zp[2]:5 3.0 -(byte*) nxt#18 nxt zp[2]:5 4.0 -(byte*) nxt#19 nxt zp[2]:5 0.5714285714285714 -(byte*) nxt#31 nxt zp[2]:5 18.41666666666667 -(byte*) nxt#35 nxt zp[2]:5 0.3333333333333333 +(byte*) nxt#14 nxt zp[2]:5 420.59999999999997 +(byte*) nxt#18 nxt zp[2]:5 200002.0 +(byte*) nxt#19 nxt zp[2]:5 15714.57142857143 +(byte*) nxt#31 nxt zp[2]:5 17758.916666666664 +(byte*) nxt#35 nxt zp[2]:5 1166.8333333333333 (byte) scroll -(byte) scroll#10 reg byte x 3.0 -(byte) scroll#18 reg byte x 53.75 -(byte) scroll#3 reg byte x 3.0 +(byte) scroll#10 reg byte x 420.59999999999997 +(byte) scroll#18 reg byte x 776.0 +(byte) scroll#3 reg byte x 1501.5 (void()) scroll_bit() -(word~) scroll_bit::$7 zp[2]:3 4.0 -(byte~) scroll_bit::$9 reg byte a 202.0 +(word~) scroll_bit::$7 zp[2]:3 20002.0 +(byte~) scroll_bit::$9 reg byte a 2000002.0 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -66,24 +66,24 @@ (label) scroll_bit::@8 (label) scroll_bit::@return (byte) scroll_bit::b -(byte) scroll_bit::b#2 reg byte a 101.0 +(byte) scroll_bit::b#2 reg byte a 1000001.0 (byte) scroll_bit::bits -(byte) scroll_bit::bits#0 reg byte a 202.0 +(byte) scroll_bit::bits#0 reg byte a 2000002.0 (word) scroll_bit::c -(word) scroll_bit::c#0 c zp[2]:3 4.0 +(word) scroll_bit::c#0 c zp[2]:3 20002.0 (byte) scroll_bit::r -(byte) scroll_bit::r#1 reg byte x 151.5 -(byte) scroll_bit::r#2 reg byte x 37.875 +(byte) scroll_bit::r#1 reg byte x 1500001.5 +(byte) scroll_bit::r#2 reg byte x 375000.375 (byte*) scroll_bit::sc -(byte*) scroll_bit::sc#1 sc zp[2]:7 67.33333333333333 -(byte*) scroll_bit::sc#2 sc zp[2]:7 43.285714285714285 +(byte*) scroll_bit::sc#1 sc zp[2]:7 666667.3333333334 +(byte*) scroll_bit::sc#2 sc zp[2]:7 428571.85714285716 (void()) scroll_hard() (label) scroll_hard::@1 (label) scroll_hard::@2 (label) scroll_hard::@return (byte) scroll_hard::i -(byte) scroll_hard::i#1 reg byte x 202.0 -(byte) scroll_hard::i#2 reg byte x 191.89999999999995 +(byte) scroll_hard::i#1 reg byte x 2.0000002E7 +(byte) scroll_hard::i#2 reg byte x 1.90000019E7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index 8bda77aef..5248cdd4f 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -1925,146 +1925,146 @@ Inversing boolean not [233] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 == Inversing boolean not [262] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [261] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 Inversing boolean not [358] (bool~) loop::$5 ← (word) xsin_idx#3 != (const word) XSIN_SIZE from [357] (bool~) loop::$4 ← (word) xsin_idx#3 == (const word) XSIN_SIZE 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 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#11 (word) rem16u#2 -Alias (word) divr16u::dividend#1 = (word~) div32u16u::$0 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (dword) div32u16u::dividend#1 = (dword) div32u16u::dividend#2 -Alias (word) div32u16u::divisor#1 = (word) div32u16u::divisor#2 -Alias (word) rem16u#12 = (word) rem16u#3 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$2 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#4 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) mul16u::a#1 = (word~) mul16s::$0 -Alias (word) mul16u::b#0 = (word~) mul16s::$1 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#5 -Alias (signed word) mul16s::a#1 = (signed word) mul16s::a#2 (signed word) mul16s::a#5 -Alias (signed word) mul16s::b#1 = (signed word) mul16s::b#4 (signed word) mul16s::b#3 -Alias (dword) mul16s::m#0 = (dword~) mul16s::$2 (dword) mul16s::m#3 -Alias (word~) mul16s::$16 = (word~) mul16s::$11 -Alias (signed dword) mul16s::return#0 = (signed dword~) mul16s::$7 (signed dword) mul16s::return#3 (signed dword) mul16s::return#1 -Alias (dword) mul16s::m#5 = (dword) mul16s::m#6 -Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#4 -Alias (word~) mul16s::$17 = (word~) mul16s::$15 -Alias (signed word) sin16s_gen2::ampl#0 = (signed word~) sin16s_gen2::$0 (signed word) sin16s_gen2::ampl#4 -Alias (signed word) sin16s_gen2::offs#0 = (signed word~) sin16s_gen2::$2 (signed word) sin16s_gen2::offs#5 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) sin16s_gen2::wavelength#1 = (word) sin16s_gen2::wavelength#3 -Alias (signed word*) sin16s_gen2::sintab#6 = (signed word*) sin16s_gen2::sintab#7 -Alias (word) rem16u#15 = (word) rem16u#6 -Alias (dword) sin16s_gen2::step#0 = (dword~) sin16s_gen2::$3 -Alias (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#4 (dword) sin16s_gen2::x#5 (dword) sin16s_gen2::x#3 -Alias (signed word) sin16s_gen2::ampl#1 = (signed word) sin16s_gen2::ampl#2 (signed word) sin16s_gen2::ampl#3 (signed word) sin16s_gen2::ampl#5 -Alias (signed word) sin16s_gen2::offs#1 = (signed word) sin16s_gen2::offs#3 (signed word) sin16s_gen2::offs#4 (signed word) sin16s_gen2::offs#2 -Alias (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#4 (signed word*) sin16s_gen2::sintab#5 (signed word*) sin16s_gen2::sintab#3 -Alias (dword) sin16s_gen2::step#1 = (dword) sin16s_gen2::step#3 (dword) sin16s_gen2::step#4 (dword) sin16s_gen2::step#2 -Alias (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#5 (word) sin16s_gen2::i#4 (word) sin16s_gen2::i#3 -Alias (word) sin16s_gen2::wavelength#2 = (word) sin16s_gen2::wavelength#6 (word) sin16s_gen2::wavelength#5 (word) sin16s_gen2::wavelength#4 -Alias (word) rem16u#16 = (word) rem16u#32 (word) rem16u#22 (word) rem16u#29 (word) rem16u#26 (word) rem16u#7 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (signed word) mul16s::a#0 = (signed word~) sin16s_gen2::$5 -Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#4 -Alias (dword) sin16s_gen2::x#1 = (dword~) sin16s_gen2::$10 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$17 -Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#7 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$6 -Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#8 -Alias (word) sin16s::x3#0 = (word~) sin16s::$7 (word) sin16s::x3#1 -Alias (word) mulu16_sel::return#2 = (word) mulu16_sel::return#9 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$8 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$9 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$10 -Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$11 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$12 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$13 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$14 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$18 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 -Alias (dword) mul16u::return#3 = (dword) mul16u::return#6 -Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 -Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (word) rem16u#0 = (word) rem16u#31 (word) rem16u#28 (word) rem16u#25 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (word) rem16u#30 = (word) rem16u#36 (word) rem16u#37 (word) rem16u#35 (word) rem16u#34 (word) rem16u#33 -Alias (word) xsin_idx#21 = (word) xsin_idx#25 (word) xsin_idx#26 (word) xsin_idx#24 (word) xsin_idx#23 (word) xsin_idx#22 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 -Alias (word) rem16u#23 = (word) rem16u#27 -Alias (word) xsin_idx#13 = (word) xsin_idx#17 (word) xsin_idx#20 -Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#24 (word) rem16u#18 (word) rem16u#9 -Alias (word) xsin_idx#0 = (word) xsin_idx#7 (word) xsin_idx#8 (word) xsin_idx#1 -Alias (word) xsin_idx#10 = (word) xsin_idx#9 (word) xsin_idx#14 -Alias (word) xsin_idx#11 = (word) xsin_idx#15 (word) xsin_idx#5 -Alias (signed byte) render_logo::x_char#0 = (signed byte~) render_logo::$4 (signed byte) render_logo::x_char#1 (signed byte) render_logo::x_char#2 -Alias (byte) render_logo::logo_idx#1 = (byte~) render_logo::$18 -Alias (byte) render_logo::logo_start#0 = (byte~) render_logo::$6 -Alias (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#7 (byte) render_logo::screen_idx#19 -Alias (byte) render_logo::logo_start#1 = (byte) render_logo::logo_start#4 -Alias (byte) render_logo::screen_idx#8 = (byte) render_logo::screen_idx#9 -Alias (byte) render_logo::logo_start#2 = (byte) render_logo::logo_start#3 -Alias (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#12 -Alias (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#20 -Alias (byte) render_logo::screen_idx#11 = (byte) render_logo::screen_idx#12 -Alias (byte) render_logo::logo_idx#5 = (byte) render_logo::logo_idx#6 -Alias (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#7 -Alias (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#22 -Alias (byte) render_logo::screen_idx#13 = (byte) render_logo::screen_idx#14 -Alias (byte) render_logo::logo_idx#8 = (byte) render_logo::logo_idx#9 -Alias (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#23 -Alias (byte) render_logo::screen_idx#16 = (byte) render_logo::screen_idx#17 -Alias (word) xsin_idx#16 = (word) xsin_idx#2 -Alias (word) rem16u#10 = (word) rem16u#19 -Alias (word) xsin_idx#12 = (word) xsin_idx#6 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#11 rem16u#2 +Alias divr16u::dividend#1 = div32u16u::$0 +Alias divr16u::return#2 = divr16u::return#5 +Alias div32u16u::dividend#1 = div32u16u::dividend#2 +Alias div32u16u::divisor#1 = div32u16u::divisor#2 +Alias rem16u#12 = rem16u#3 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#2 = div32u16u::$2 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#13 = rem16u#4 rem16u#14 rem16u#5 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1 +Alias mul16u::a#3 = mul16u::a#4 mul16u::a#7 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#4 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias mul16u::a#1 = mul16s::$0 +Alias mul16u::b#0 = mul16s::$1 +Alias mul16u::return#2 = mul16u::return#5 +Alias mul16s::a#1 = mul16s::a#2 mul16s::a#5 +Alias mul16s::b#1 = mul16s::b#4 mul16s::b#3 +Alias mul16s::m#0 = mul16s::$2 mul16s::m#3 +Alias mul16s::$16 = mul16s::$11 +Alias mul16s::return#0 = mul16s::$7 mul16s::return#3 mul16s::return#1 +Alias mul16s::m#5 = mul16s::m#6 +Alias mul16s::a#3 = mul16s::a#4 +Alias mul16s::$17 = mul16s::$15 +Alias sin16s_gen2::ampl#0 = sin16s_gen2::$0 sin16s_gen2::ampl#4 +Alias sin16s_gen2::offs#0 = sin16s_gen2::$2 sin16s_gen2::offs#5 +Alias div32u16u::return#2 = div32u16u::return#4 +Alias sin16s_gen2::wavelength#1 = sin16s_gen2::wavelength#3 +Alias sin16s_gen2::sintab#6 = sin16s_gen2::sintab#7 +Alias rem16u#15 = rem16u#6 +Alias sin16s_gen2::step#0 = sin16s_gen2::$3 +Alias sin16s_gen2::x#2 = sin16s_gen2::x#4 sin16s_gen2::x#5 sin16s_gen2::x#3 +Alias sin16s_gen2::ampl#1 = sin16s_gen2::ampl#2 sin16s_gen2::ampl#3 sin16s_gen2::ampl#5 +Alias sin16s_gen2::offs#1 = sin16s_gen2::offs#3 sin16s_gen2::offs#4 sin16s_gen2::offs#2 +Alias sin16s_gen2::sintab#2 = sin16s_gen2::sintab#4 sin16s_gen2::sintab#5 sin16s_gen2::sintab#3 +Alias sin16s_gen2::step#1 = sin16s_gen2::step#3 sin16s_gen2::step#4 sin16s_gen2::step#2 +Alias sin16s_gen2::i#2 = sin16s_gen2::i#5 sin16s_gen2::i#4 sin16s_gen2::i#3 +Alias sin16s_gen2::wavelength#2 = sin16s_gen2::wavelength#6 sin16s_gen2::wavelength#5 sin16s_gen2::wavelength#4 +Alias rem16u#16 = rem16u#32 rem16u#22 rem16u#29 rem16u#26 rem16u#7 +Alias sin16s::return#0 = sin16s::return#3 +Alias mul16s::a#0 = sin16s_gen2::$5 +Alias mul16s::return#2 = mul16s::return#4 +Alias sin16s_gen2::x#1 = sin16s_gen2::$10 +Alias sin16s::x#3 = sin16s::x#5 +Alias sin16s::x#1 = sin16s::$17 +Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3 +Alias mulu16_sel::return#0 = mulu16_sel::return#7 +Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3 +Alias sin16s::x2#0 = sin16s::$6 +Alias mulu16_sel::return#1 = mulu16_sel::return#8 +Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1 +Alias mulu16_sel::return#2 = mulu16_sel::return#9 +Alias sin16s::x3_6#0 = sin16s::$8 +Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2 +Alias mulu16_sel::return#10 = mulu16_sel::return#3 +Alias sin16s::x4#0 = sin16s::$10 +Alias mulu16_sel::return#11 = mulu16_sel::return#4 +Alias sin16s::x5#0 = sin16s::$11 +Alias sin16s::x5_128#0 = sin16s::$12 +Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3 +Alias sin16s::sinx#0 = sin16s::$14 +Alias sin16s::x#4 = sin16s::x#7 +Alias sin16s::isUpper#8 = sin16s::isUpper#9 +Alias sin16s::x#2 = sin16s::$18 +Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2 +Alias sin16s::sinx#1 = sin16s::$20 +Alias mul16u::return#3 = mul16u::return#6 +Alias mulu16_sel::select#5 = mulu16_sel::select#6 +Alias mulu16_sel::return#12 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias rem16u#0 = rem16u#31 rem16u#28 rem16u#25 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias rem16u#30 = rem16u#36 rem16u#37 rem16u#35 rem16u#34 rem16u#33 +Alias xsin_idx#21 = xsin_idx#25 xsin_idx#26 xsin_idx#24 xsin_idx#23 xsin_idx#22 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0 +Alias rem16u#23 = rem16u#27 +Alias xsin_idx#13 = xsin_idx#17 xsin_idx#20 +Alias rem16u#17 = rem16u#8 rem16u#24 rem16u#18 rem16u#9 +Alias xsin_idx#0 = xsin_idx#7 xsin_idx#8 xsin_idx#1 +Alias xsin_idx#10 = xsin_idx#9 xsin_idx#14 +Alias xsin_idx#11 = xsin_idx#15 xsin_idx#5 +Alias render_logo::x_char#0 = render_logo::$4 render_logo::x_char#1 render_logo::x_char#2 +Alias render_logo::logo_idx#1 = render_logo::$18 +Alias render_logo::logo_start#0 = render_logo::$6 +Alias render_logo::screen_idx#18 = render_logo::screen_idx#7 render_logo::screen_idx#19 +Alias render_logo::logo_start#1 = render_logo::logo_start#4 +Alias render_logo::screen_idx#8 = render_logo::screen_idx#9 +Alias render_logo::logo_start#2 = render_logo::logo_start#3 +Alias render_logo::logo_idx#10 = render_logo::logo_idx#12 +Alias render_logo::screen_idx#10 = render_logo::screen_idx#20 +Alias render_logo::screen_idx#11 = render_logo::screen_idx#12 +Alias render_logo::logo_idx#5 = render_logo::logo_idx#6 +Alias render_logo::logo_idx#11 = render_logo::logo_idx#7 +Alias render_logo::screen_idx#21 = render_logo::screen_idx#22 +Alias render_logo::screen_idx#13 = render_logo::screen_idx#14 +Alias render_logo::logo_idx#8 = render_logo::logo_idx#9 +Alias render_logo::screen_idx#15 = render_logo::screen_idx#23 +Alias render_logo::screen_idx#16 = render_logo::screen_idx#17 +Alias xsin_idx#16 = xsin_idx#2 +Alias rem16u#10 = rem16u#19 +Alias xsin_idx#12 = xsin_idx#6 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (word) mul16u::a#3 = (word) mul16u::a#5 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (signed word) mul16s::b#1 = (signed word) mul16s::b#2 -Alias (signed word) mul16s::a#1 = (signed word) mul16s::a#3 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias mul16u::a#3 = mul16u::a#5 +Alias mul16u::mb#2 = mul16u::mb#3 +Alias mul16s::b#1 = mul16s::b#2 +Alias mul16s::a#1 = mul16s::a#3 +Alias sin16s::isUpper#2 = sin16s::isUpper#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6 Identical Phi Values (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0 @@ -2236,8 +2236,8 @@ Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) 6 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) render_logo::$14 = (byte~) render_logo::$12 -Alias (byte~) render_logo::$22 = (byte~) render_logo::$20 +Alias render_logo::$14 = render_logo::$12 +Alias render_logo::$22 = render_logo::$20 Successful SSA optimization Pass2AliasElimination Constant right-side identified [18] (word) divr16u::dividend#1 ← > (const dword) div32u16u::dividend#0 Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0 @@ -2265,7 +2265,7 @@ Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 Removing PHI-reference to removed block (mul16s::@4) in block mul16s::@2 Removing unused block mul16s::@4 Successful SSA optimization Pass2EliminateUnusedBlocks -Alias (dword) mul16s::m#4 = (dword) mul16s::m#5 +Alias mul16s::m#4 = mul16s::m#5 Successful SSA optimization Pass2AliasElimination Constant right-side identified [49] (signed word~) sin16s_gen2::$1 ← (const signed word) sin16s_gen2::ampl#0 >> (signed byte) 1 Constant right-side identified [137] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4 @@ -2290,7 +2290,7 @@ Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const signed word) sin16s_gen2::$1 Eliminating unused constant (const signed word) sin16s_gen2::offs#0 Successful SSA optimization PassNEliminateUnusedVars -Alias (signed word~) sin16s_gen2::$9 = (signed word~) sin16s_gen2::$8 +Alias sin16s_gen2::$9 = sin16s_gen2::$8 Successful SSA optimization Pass2AliasElimination Constant right-side identified [134] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -2339,7 +2339,7 @@ Simplifying expression containing zero render_logo::logo_idx#10 in [46] (byte~) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) render_logo::$14 Successful SSA optimization PassNEliminateUnusedVars -Alias (byte) render_logo::logo_idx#10 = (byte~) render_logo::$15 +Alias render_logo::logo_idx#10 = render_logo::$15 Successful SSA optimization Pass2AliasElimination Constant (const byte*) render_logo::$13 = SCREEN Successful SSA optimization Pass2ConstantIdentification @@ -2684,7 +2684,7 @@ Simplifying expression containing zero render_logo::logo_idx#11 in [79] (byte~) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) render_logo::$22 Successful SSA optimization PassNEliminateUnusedVars -Alias (byte) render_logo::logo_idx#11 = (byte~) render_logo::$23 +Alias render_logo::logo_idx#11 = render_logo::$23 Successful SSA optimization Pass2AliasElimination Constant (const byte*) render_logo::$21 = SCREEN Successful SSA optimization Pass2ConstantIdentification @@ -3679,220 +3679,220 @@ VARIABLE REGISTER WEIGHTS (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 (void()) loop() -(signed word*~) loop::$2 22.0 -(word~) loop::$7 22.0 +(signed word*~) loop::$2 2002.0 +(word~) loop::$7 2002.0 (signed word) loop::xpos -(signed word) loop::xpos#0 22.0 +(signed word) loop::xpos#0 2002.0 (void()) main() (byte) main::ch -(byte) main::ch#1 16.5 -(byte) main::ch#2 22.0 +(byte) main::ch#1 151.5 +(byte) main::ch#2 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.5714285714285714 +(byte) memset::c#4 143.0 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1368.3333333333335 +(byte*) memset::dst#4 202.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 183.66666666666669 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$16 4.0 -(word~) mul16s::$9 4.0 +(word~) mul16s::$16 20002.0 +(word~) mul16s::$9 20002.0 (signed word) mul16s::a -(signed word) mul16s::a#0 2.6 +(signed word) mul16s::a#0 2200.4 (signed word) mul16s::b (dword) mul16s::m -(dword) mul16s::m#0 2.0 -(dword) mul16s::m#1 4.0 -(dword) mul16s::m#4 4.0 +(dword) mul16s::m#0 10001.0 +(dword) mul16s::m#1 20002.0 +(dword) mul16s::m#4 20002.0 (signed dword) mul16s::return -(signed dword) mul16s::return#0 4.333333333333333 -(signed dword) mul16s::return#2 22.0 +(signed dword) mul16s::return#0 3667.333333333333 +(signed dword) mul16s::return#2 2002.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 4.0 -(word) mul16u::a#2 2.0 -(word) mul16u::a#3 67.66666666666666 -(word) mul16u::a#6 3.0 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 20002.0 +(word) mul16u::a#2 100001.0 +(word) mul16u::a#3 6.683333416666667E7 +(word) mul16u::a#6 555001.5 (word) mul16u::b -(word) mul16u::b#1 4.0 -(word) mul16u::b#2 2.0 +(word) mul16u::b#1 200002.0 +(word) mul16u::b#2 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 43.85714285714286 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 4.287285785714286E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 -(dword) mul16u::return#3 4.0 +(dword) mul16u::return#2 20002.0 +(dword) mul16u::return#3 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (void()) render_logo((signed word) render_logo::xpos) -(byte~) render_logo::$0 4.0 -(byte~) render_logo::$1 4.0 -(byte~) render_logo::$2 4.0 -(signed word~) render_logo::$3 2.0 -(byte~) render_logo::$33 202.0 -(byte~) render_logo::$36 202.0 -(byte~) render_logo::$39 202.0 -(byte~) render_logo::$42 202.0 -(byte~) render_logo::$45 202.0 -(byte~) render_logo::$73 202.0 -(byte~) render_logo::$76 202.0 -(byte~) render_logo::$79 202.0 -(byte~) render_logo::$82 202.0 -(byte~) render_logo::$85 202.0 +(byte~) render_logo::$0 20002.0 +(byte~) render_logo::$1 20002.0 +(byte~) render_logo::$2 20002.0 +(signed word~) render_logo::$3 10001.0 +(byte~) render_logo::$33 2000002.0 +(byte~) render_logo::$36 2000002.0 +(byte~) render_logo::$39 2000002.0 +(byte~) render_logo::$42 2000002.0 +(byte~) render_logo::$45 2000002.0 +(byte~) render_logo::$73 2000002.0 +(byte~) render_logo::$76 2000002.0 +(byte~) render_logo::$79 2000002.0 +(byte~) render_logo::$82 2000002.0 +(byte~) render_logo::$85 2000002.0 (byte) render_logo::line (byte) render_logo::logo_idx -(signed byte) render_logo::logo_idx#1 2.0 -(byte) render_logo::logo_idx#10 57.714285714285715 -(byte) render_logo::logo_idx#11 65.07142857142857 -(byte) render_logo::logo_idx#14 4.0 -(byte) render_logo::logo_idx#3 202.0 -(byte) render_logo::logo_idx#4 202.0 +(signed byte) render_logo::logo_idx#1 10001.0 +(byte) render_logo::logo_idx#10 571429.1428571428 +(byte) render_logo::logo_idx#11 643572.1428571427 +(byte) render_logo::logo_idx#14 20002.0 +(byte) render_logo::logo_idx#3 2000002.0 +(byte) render_logo::logo_idx#4 2000002.0 (byte) render_logo::logo_start (byte) render_logo::screen_idx -(byte) render_logo::screen_idx#10 77.6923076923077 -(byte) render_logo::screen_idx#15 126.25 -(byte) render_logo::screen_idx#18 126.25 -(byte) render_logo::screen_idx#21 69.92307692307692 -(byte) render_logo::screen_idx#3 202.0 -(byte) render_logo::screen_idx#4 101.0 -(byte) render_logo::screen_idx#5 101.0 -(byte) render_logo::screen_idx#6 202.0 +(byte) render_logo::screen_idx#10 769231.5384615386 +(byte) render_logo::screen_idx#15 1250001.25 +(byte) render_logo::screen_idx#18 1250001.25 +(byte) render_logo::screen_idx#21 692308.3846153847 +(byte) render_logo::screen_idx#3 2000002.0 +(byte) render_logo::screen_idx#4 1000001.0 +(byte) render_logo::screen_idx#5 1000001.0 +(byte) render_logo::screen_idx#6 2000002.0 (signed byte) render_logo::x_char -(signed byte) render_logo::x_char#0 0.36363636363636365 +(signed byte) render_logo::x_char#0 1818.3636363636363 (signed word) render_logo::xpos -(signed word) render_logo::xpos#0 2.142857142857143 +(signed word) render_logo::xpos#0 3000.4285714285716 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 22.0 -(word~) sin16s_gen2::$9 11.0 +(signed dword~) sin16s_gen2::$6 2002.0 +(word~) sin16s_gen2::$9 1001.0 (signed word) sin16s_gen2::ampl (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 22.0 -(word) sin16s_gen2::i#2 2.5384615384615383 +(word) sin16s_gen2::i#1 2002.0 +(word) sin16s_gen2::i#2 231.0 (signed word) sin16s_gen2::max (signed word) sin16s_gen2::min (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 3.0 +(signed word*) sin16s_gen2::sintab#0 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 0.8666666666666666 +(dword) sin16s_gen2::step#0 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 11.0 -(dword) sin16s_gen2::x#2 2.75 +(dword) sin16s_gen2::x#1 1001.0 +(dword) sin16s_gen2::x#2 250.25 (word) xsin_idx -(word) xsin_idx#11 4.125 -(word) xsin_idx#19 11.0 -(word) xsin_idx#3 11.0 +(word) xsin_idx#11 375.375 +(word) xsin_idx#19 1001.0 +(word) xsin_idx#3 1001.0 Initial phi equivalence classes [ main::ch#2 main::ch#1 ] @@ -5869,224 +5869,222 @@ memset: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) D016) ← (const byte) VIC_MCM [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] ) always clobbers reg byte a -Statement [29] (word~) loop::$7 ← (word) xsin_idx#11 << (byte) 1 [ xsin_idx#11 loop::$7 ] ( main:3::loop:23 [ xsin_idx#11 loop::$7 ] ) always clobbers reg byte a -Statement [30] (signed word*~) loop::$2 ← (const signed word*) xsin + (word~) loop::$7 [ xsin_idx#11 loop::$2 ] ( main:3::loop:23 [ xsin_idx#11 loop::$2 ] ) always clobbers reg byte a -Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a -Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [39] (byte~) render_logo::$0 ← (byte)(signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a -Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a -Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a -Statement [44] (signed byte) render_logo::x_char#0 ← (signed byte)(signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [45] if((signed word) render_logo::xpos#0<(signed byte) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a +Statement [6] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) D016) ← (const byte) VIC_MCM [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] { } ) always clobbers reg byte a +Statement [29] (word~) loop::$7 ← (word) xsin_idx#11 << (byte) 1 [ xsin_idx#11 loop::$7 ] ( main:3::loop:23 [ xsin_idx#11 loop::$7 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [30] (signed word*~) loop::$2 ← (const signed word*) xsin + (word~) loop::$7 [ xsin_idx#11 loop::$2 ] ( main:3::loop:23 [ xsin_idx#11 loop::$2 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a reg byte y +Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] { } ) always clobbers reg byte a +Statement [39] (byte~) render_logo::$0 ← (byte)(signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [44] (signed byte) render_logo::x_char#0 ← (signed byte)(signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [45] if((signed word) render_logo::xpos#0<(signed byte) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:70 [ render_logo::x_char#0 ] -Statement [64] *((const byte*) SCREEN + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [64] *((const byte*) SCREEN + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] -Statement [65] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [66] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [69] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [71] (signed byte) render_logo::logo_idx#1 ← - (signed byte) render_logo::x_char#0 [ render_logo::logo_idx#1 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::logo_idx#1 ] ) always clobbers reg byte a -Statement [77] *((const byte*) SCREEN + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [65] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [66] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [67] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [68] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [69] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [71] (signed byte) render_logo::logo_idx#1 ← - (signed byte) render_logo::x_char#0 [ render_logo::logo_idx#1 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::logo_idx#1 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [77] *((const byte*) SCREEN + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] -Statement [78] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [79] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [80] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [81] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [82] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [102] if((word) sin16s_gen2::i#2<(const word) XSIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [104] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [106] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [107] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [109] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [110] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [111] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [116] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [120] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [125] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [79] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [80] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [81] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [82] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [102] if((word) sin16s_gen2::i#2<(const word) XSIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [104] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [106] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [107] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [109] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [110] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [111] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [116] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [120] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [125] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp[1]:44 [ mulu16_sel::select#5 ] -Statement [130] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [177] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [177] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] -Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [216] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:13 [ memset::str#3 memset::c#4 memset::end#0 ] main:3::memset:15 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a +Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [216] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:13 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:3::memset:15 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:54 [ memset::c#4 ] -Statement [217] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#4 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [219] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [221] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [217] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [219] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [221] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:54 [ memset::c#4 ] -Statement [6] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) D016) ← (const byte) VIC_MCM [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] ) always clobbers reg byte a -Statement [29] (word~) loop::$7 ← (word) xsin_idx#11 << (byte) 1 [ xsin_idx#11 loop::$7 ] ( main:3::loop:23 [ xsin_idx#11 loop::$7 ] ) always clobbers reg byte a -Statement [30] (signed word*~) loop::$2 ← (const signed word*) xsin + (word~) loop::$7 [ xsin_idx#11 loop::$2 ] ( main:3::loop:23 [ xsin_idx#11 loop::$2 ] ) always clobbers reg byte a -Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a -Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [39] (byte~) render_logo::$0 ← (byte)(signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a -Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a -Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a -Statement [44] (signed byte) render_logo::x_char#0 ← (signed byte)(signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [45] if((signed word) render_logo::xpos#0<(signed byte) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [64] *((const byte*) SCREEN + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [66] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [69] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [71] (signed byte) render_logo::logo_idx#1 ← - (signed byte) render_logo::x_char#0 [ render_logo::logo_idx#1 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::logo_idx#1 ] ) always clobbers reg byte a -Statement [77] *((const byte*) SCREEN + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [78] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [79] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [80] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [81] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [82] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [102] if((word) sin16s_gen2::i#2<(const word) XSIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [104] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [106] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [107] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [109] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [110] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [111] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [116] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [120] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [125] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [130] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [177] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [216] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:13 [ memset::str#3 memset::c#4 memset::end#0 ] main:3::memset:15 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [217] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#4 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [219] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [221] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) D016) ← (const byte) VIC_MCM [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] { } ) always clobbers reg byte a +Statement [29] (word~) loop::$7 ← (word) xsin_idx#11 << (byte) 1 [ xsin_idx#11 loop::$7 ] ( main:3::loop:23 [ xsin_idx#11 loop::$7 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [30] (signed word*~) loop::$2 ← (const signed word*) xsin + (word~) loop::$7 [ xsin_idx#11 loop::$2 ] ( main:3::loop:23 [ xsin_idx#11 loop::$2 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a reg byte y +Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] { } ) always clobbers reg byte a +Statement [39] (byte~) render_logo::$0 ← (byte)(signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [44] (signed byte) render_logo::x_char#0 ← (signed byte)(signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [45] if((signed word) render_logo::xpos#0<(signed byte) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [64] *((const byte*) SCREEN + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [65] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [66] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [67] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [68] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [69] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#18) ← (byte) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [71] (signed byte) render_logo::logo_idx#1 ← - (signed byte) render_logo::x_char#0 [ render_logo::logo_idx#1 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::logo_idx#1 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [77] *((const byte*) SCREEN + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [79] *((const byte*) SCREEN+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [80] *((const byte*) SCREEN+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [81] *((const byte*) SCREEN+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [82] *((const byte*) SCREEN+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#15) ← (byte) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] { { render_logo::xpos#0 = loop::xpos#0 } } ) always clobbers reg byte a +Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [102] if((word) sin16s_gen2::i#2<(const word) XSIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [104] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [106] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [107] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [109] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [110] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [111] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [116] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [120] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [125] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:108 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:108::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [177] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:105 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:21::sin16s:105::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:188 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:21::div32u16u:98::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [216] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:13 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:3::memset:15 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [217] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [219] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [221] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:13 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:15 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::ch#2 main::ch#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] : zp[1]:5 , reg byte x , reg byte y , @@ -6176,30 +6174,30 @@ Potential registers zp[2]:177 [ rem16u#1 ] : zp[2]:177 , Potential registers zp[2]:179 [ memset::end#0 ] : zp[2]:179 , REGISTER UPLIFT SCOPES -Uplift Scope [render_logo] 506.94: zp[1]:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] 499.17: zp[1]:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] 271.07: zp[1]:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] 259.71: zp[1]:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] 202: zp[1]:71 [ render_logo::$33 ] 202: zp[1]:72 [ render_logo::$36 ] 202: zp[1]:73 [ render_logo::$39 ] 202: zp[1]:74 [ render_logo::$42 ] 202: zp[1]:75 [ render_logo::$45 ] 202: zp[1]:77 [ render_logo::$73 ] 202: zp[1]:78 [ render_logo::$76 ] 202: zp[1]:79 [ render_logo::$79 ] 202: zp[1]:80 [ render_logo::$82 ] 202: zp[1]:81 [ render_logo::$85 ] 4: zp[1]:65 [ render_logo::$0 ] 4: zp[1]:66 [ render_logo::$1 ] 4: zp[1]:67 [ render_logo::$2 ] 2.14: zp[2]:63 [ render_logo::xpos#0 ] 2: zp[2]:68 [ render_logo::$3 ] 2: zp[1]:76 [ render_logo::logo_idx#1 ] 0.36: zp[1]:70 [ render_logo::x_char#0 ] -Uplift Scope [mul16u] 346.86: zp[4]:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:116 [ mul16u::$1 ] 177.67: zp[2]:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 6: zp[2]:21 [ mul16u::b#2 mul16u::b#1 ] 4: zp[4]:104 [ mul16u::return#2 ] 4: zp[4]:149 [ mul16u::return#3 ] -Uplift Scope [divr16u] 106.92: zp[2]: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[2]:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:175 [ divr16u::$1 ] 22: zp[1]:176 [ divr16u::$2 ] 18.19: zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:163 [ divr16u::return#2 ] 4: zp[2]:167 [ divr16u::return#3 ] -Uplift Scope [sin16s] 27.5: zp[4]:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:90 [ sin16s::return#0 ] 13: zp[2]:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:117 [ sin16s::$4 ] 4: zp[2]:125 [ sin16s::x2#0 ] 4: zp[2]:133 [ sin16s::x3_6#0 ] 4: zp[2]:139 [ sin16s::x4#0 ] 4: zp[2]:143 [ sin16s::x5#0 ] 4: zp[2]:145 [ sin16s::x5_128#0 ] 1: zp[2]:129 [ sin16s::x3#0 ] 1: zp[2]:147 [ sin16s::usinx#1 ] 0.64: zp[2]:121 [ sin16s::x1#0 ] 0.33: zp[2]:135 [ sin16s::usinx#0 ] 0.06: zp[1]:33 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen2] 24.54: zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 22: zp[4]:98 [ sin16s_gen2::$6 ] 13.75: zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 11: zp[2]:102 [ sin16s_gen2::$9 ] 10.33: zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.87: zp[4]:86 [ sin16s_gen2::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]: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[2]:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:123 [ mulu16_sel::return#0 ] 4: zp[2]:127 [ mulu16_sel::return#1 ] 4: zp[2]:131 [ mulu16_sel::return#2 ] 4: zp[2]:137 [ mulu16_sel::return#10 ] 4: zp[2]:141 [ mulu16_sel::return#11 ] 4: zp[4]:153 [ mulu16_sel::$0 ] 4: zp[4]:157 [ mulu16_sel::$1 ] 1.71: zp[2]:161 [ mulu16_sel::return#12 ] 0.33: zp[1]:44 [ mulu16_sel::select#5 ] -Uplift Scope [loop] 22: zp[2]:57 [ loop::$7 ] 22: zp[2]:59 [ loop::$2 ] 22: zp[2]:61 [ loop::xpos#0 ] -Uplift Scope [mul16s] 22: zp[4]:94 [ mul16s::return#2 ] 10: zp[4]:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp[4]:112 [ mul16s::return#0 ] 4: zp[2]:108 [ mul16s::$9 ] 4: zp[2]:110 [ mul16s::$16 ] 2.6: zp[2]:92 [ mul16s::a#0 ] -Uplift Scope [memset] 41.33: zp[2]:55 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:179 [ memset::end#0 ] 1.57: zp[1]:54 [ memset::c#4 ] 0: zp[2]:52 [ memset::str#3 ] -Uplift Scope [main] 38.5: zp[1]:2 [ main::ch#2 main::ch#1 ] -Uplift Scope [] 26.12: zp[2]:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp[2]:177 [ rem16u#1 ] -Uplift Scope [div32u16u] 4: zp[4]:82 [ div32u16u::return#2 ] 4: zp[2]:169 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:171 [ div32u16u::return#0 ] 0.8: zp[2]:165 [ div32u16u::quotient_hi#0 ] +Uplift Scope [mul16u] 342,872,860.86: zp[4]:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:116 [ mul16u::$1 ] 167,508,339.67: zp[2]:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 300,003: zp[2]:21 [ mul16u::b#2 mul16u::b#1 ] 200,002: zp[4]:149 [ mul16u::return#3 ] 20,002: zp[4]:104 [ mul16u::return#2 ] +Uplift Scope [render_logo] 5,019,235.79: zp[1]:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] 4,942,312.63: zp[1]:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] 2,663,576.14: zp[1]:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] 2,571,431.14: zp[1]:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] 2,000,002: zp[1]:71 [ render_logo::$33 ] 2,000,002: zp[1]:72 [ render_logo::$36 ] 2,000,002: zp[1]:73 [ render_logo::$39 ] 2,000,002: zp[1]:74 [ render_logo::$42 ] 2,000,002: zp[1]:75 [ render_logo::$45 ] 2,000,002: zp[1]:77 [ render_logo::$73 ] 2,000,002: zp[1]:78 [ render_logo::$76 ] 2,000,002: zp[1]:79 [ render_logo::$79 ] 2,000,002: zp[1]:80 [ render_logo::$82 ] 2,000,002: zp[1]:81 [ render_logo::$85 ] 20,002: zp[1]:65 [ render_logo::$0 ] 20,002: zp[1]:66 [ render_logo::$1 ] 20,002: zp[1]:67 [ render_logo::$2 ] 10,001: zp[2]:68 [ render_logo::$3 ] 10,001: zp[1]:76 [ render_logo::logo_idx#1 ] 3,000.43: zp[2]:63 [ render_logo::xpos#0 ] 1,818.36: zp[1]:70 [ render_logo::x_char#0 ] +Uplift Scope [divr16u] 901,347.42: zp[2]: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 ] 318,146.32: zp[2]:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:175 [ divr16u::$1 ] 200,002: zp[1]:176 [ divr16u::$2 ] 165,386.27: zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:163 [ divr16u::return#2 ] 2,002: zp[2]:167 [ divr16u::return#3 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]: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 ] 200,002: zp[4]:153 [ mulu16_sel::$0 ] 200,002: zp[4]:157 [ mulu16_sel::$1 ] 150,010.5: zp[2]:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:161 [ mulu16_sel::return#12 ] 20,002: zp[2]:123 [ mulu16_sel::return#0 ] 20,002: zp[2]:127 [ mulu16_sel::return#1 ] 20,002: zp[2]:131 [ mulu16_sel::return#2 ] 20,002: zp[2]:137 [ mulu16_sel::return#10 ] 20,002: zp[2]:141 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:44 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:117 [ sin16s::$4 ] 20,002: zp[2]:125 [ sin16s::x2#0 ] 20,002: zp[2]:133 [ sin16s::x3_6#0 ] 20,002: zp[2]:139 [ sin16s::x4#0 ] 20,002: zp[2]:143 [ sin16s::x5#0 ] 20,002: zp[2]:145 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:129 [ sin16s::x3#0 ] 5,000.5: zp[2]:147 [ sin16s::usinx#1 ] 3,182.14: zp[2]:121 [ sin16s::x1#0 ] 2,002: zp[2]:90 [ sin16s::return#0 ] 1,666.83: zp[2]:135 [ sin16s::usinx#0 ] 303.06: zp[1]:33 [ sin16s::isUpper#2 ] +Uplift Scope [mul16s] 50,005: zp[4]:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 20,002: zp[2]:108 [ mul16s::$9 ] 20,002: zp[2]:110 [ mul16s::$16 ] 3,667.33: zp[4]:112 [ mul16s::return#0 ] 2,200.4: zp[2]:92 [ mul16s::a#0 ] 2,002: zp[4]:94 [ mul16s::return#2 ] +Uplift Scope [sin16s_gen2] 2,233: zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 2,002: zp[4]:98 [ sin16s_gen2::$6 ] 1,251.25: zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 1,001: zp[2]:102 [ sin16s_gen2::$9 ] 940.33: zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 73.47: zp[4]:86 [ sin16s_gen2::step#0 ] +Uplift Scope [loop] 2,002: zp[2]:57 [ loop::$7 ] 2,002: zp[2]:59 [ loop::$2 ] 2,002: zp[2]:61 [ loop::xpos#0 ] +Uplift Scope [] 2,377.38: zp[2]:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 2,200.4: zp[2]:177 [ rem16u#1 ] +Uplift Scope [memset] 3,572.33: zp[2]:55 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:179 [ memset::end#0 ] 143: zp[1]:54 [ memset::c#4 ] 0: zp[2]:52 [ memset::str#3 ] +Uplift Scope [div32u16u] 2,002: zp[2]:169 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:165 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:171 [ div32u16u::return#0 ] 202: zp[4]:82 [ div32u16u::return#2 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::ch#2 main::ch#1 ] -Uplifting [mul16u] best 75504 combination zp[4]:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:21 [ mul16u::b#2 mul16u::b#1 ] zp[4]:104 [ mul16u::return#2 ] zp[4]:149 [ mul16u::return#3 ] +Uplifting [mul16u] best 75504 combination zp[4]:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:21 [ mul16u::b#2 mul16u::b#1 ] zp[4]:149 [ mul16u::return#3 ] zp[4]:104 [ mul16u::return#2 ] Uplifting [divr16u] best 75294 combination zp[2]: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[2]: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[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:163 [ divr16u::return#2 ] zp[2]:167 [ divr16u::return#3 ] -Uplifting [sin16s] best 75285 combination zp[4]:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:90 [ sin16s::return#0 ] zp[2]:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:117 [ sin16s::$4 ] zp[2]:125 [ sin16s::x2#0 ] zp[2]:133 [ sin16s::x3_6#0 ] zp[2]:139 [ sin16s::x4#0 ] zp[2]:143 [ sin16s::x5#0 ] zp[2]:145 [ sin16s::x5_128#0 ] zp[2]:129 [ sin16s::x3#0 ] zp[2]:147 [ sin16s::usinx#1 ] zp[2]:121 [ sin16s::x1#0 ] zp[2]:135 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen2] best 75285 combination zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:98 [ sin16s_gen2::$6 ] zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:102 [ sin16s_gen2::$9 ] zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:86 [ sin16s_gen2::step#0 ] -Uplifting [mulu16_sel] best 75269 combination zp[2]: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[2]:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:123 [ mulu16_sel::return#0 ] zp[2]:127 [ mulu16_sel::return#1 ] zp[2]:131 [ mulu16_sel::return#2 ] zp[2]:137 [ mulu16_sel::return#10 ] zp[2]:141 [ mulu16_sel::return#11 ] zp[4]:153 [ mulu16_sel::$0 ] zp[4]:157 [ mulu16_sel::$1 ] zp[2]:161 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mulu16_sel] best 75278 combination zp[2]: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[4]:153 [ mulu16_sel::$0 ] zp[4]:157 [ mulu16_sel::$1 ] zp[2]:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:161 [ mulu16_sel::return#12 ] zp[2]:123 [ mulu16_sel::return#0 ] zp[2]:127 [ mulu16_sel::return#1 ] zp[2]:131 [ mulu16_sel::return#2 ] zp[2]:137 [ mulu16_sel::return#10 ] zp[2]:141 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s] best 75269 combination zp[4]:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:117 [ sin16s::$4 ] zp[2]:125 [ sin16s::x2#0 ] zp[2]:133 [ sin16s::x3_6#0 ] zp[2]:139 [ sin16s::x4#0 ] zp[2]:143 [ sin16s::x5#0 ] zp[2]:145 [ sin16s::x5_128#0 ] zp[2]:129 [ sin16s::x3#0 ] zp[2]:147 [ sin16s::usinx#1 ] zp[2]:121 [ sin16s::x1#0 ] zp[2]:90 [ sin16s::return#0 ] zp[2]:135 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [mul16s] best 75269 combination zp[4]:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:108 [ mul16s::$9 ] zp[2]:110 [ mul16s::$16 ] zp[4]:112 [ mul16s::return#0 ] zp[2]:92 [ mul16s::a#0 ] zp[4]:94 [ mul16s::return#2 ] +Uplifting [sin16s_gen2] best 75269 combination zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:98 [ sin16s_gen2::$6 ] zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:102 [ sin16s_gen2::$9 ] zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:86 [ sin16s_gen2::step#0 ] Uplifting [loop] best 75269 combination zp[2]:57 [ loop::$7 ] zp[2]:59 [ loop::$2 ] zp[2]:61 [ loop::xpos#0 ] -Uplifting [mul16s] best 75269 combination zp[4]:94 [ mul16s::return#2 ] zp[4]:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[4]:112 [ mul16s::return#0 ] zp[2]:108 [ mul16s::$9 ] zp[2]:110 [ mul16s::$16 ] zp[2]:92 [ mul16s::a#0 ] +Uplifting [] best 75269 combination zp[2]:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp[2]:177 [ rem16u#1 ] Uplifting [memset] best 75253 combination zp[2]:55 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:179 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:52 [ memset::str#3 ] +Uplifting [div32u16u] best 75253 combination zp[2]:169 [ div32u16u::quotient_lo#0 ] zp[2]:165 [ div32u16u::quotient_hi#0 ] zp[4]:171 [ div32u16u::return#0 ] zp[4]:82 [ div32u16u::return#2 ] Uplifting [main] best 75133 combination reg byte x [ main::ch#2 main::ch#1 ] -Uplifting [] best 75133 combination zp[2]:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp[2]:177 [ rem16u#1 ] -Uplifting [div32u16u] best 75133 combination zp[4]:82 [ div32u16u::return#2 ] zp[2]:169 [ div32u16u::quotient_lo#0 ] zp[4]:171 [ div32u16u::return#0 ] zp[2]:165 [ div32u16u::quotient_hi#0 ] Attempting to uplift remaining variables inzp[1]:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] Uplifting [render_logo] best 70033 combination reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] Attempting to uplift remaining variables inzp[1]:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] @@ -8039,15 +8037,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:39 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:39 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:29 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:29 4.0 +(dword) div32u16u::return#0 return zp[4]:29 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:29 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -8056,33 +8054,33 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:41 2.75 -(word) divr16u::dividend#3 dividend zp[2]:41 5.0 -(word) divr16u::dividend#5 dividend zp[2]:41 2.0 +(word) divr16u::dividend#0 dividend zp[2]:41 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:41 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:41 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:20 16.5 -(word) divr16u::quotient#2 quotient zp[2]:20 11.0 -(word) divr16u::quotient#3 quotient zp[2]:20 2.75 +(word) divr16u::quotient#1 quotient zp[2]:20 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:20 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:20 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:18 8.25 -(word) divr16u::rem#1 rem zp[2]:18 22.0 -(word) divr16u::rem#10 rem zp[2]:18 4.0 -(word) divr16u::rem#11 rem zp[2]:18 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:18 22.0 -(word) divr16u::rem#4 rem zp[2]:18 4.0 -(word) divr16u::rem#5 rem zp[2]:18 24.0 -(word) divr16u::rem#6 rem zp[2]:18 11.0 +(word) divr16u::rem#0 rem zp[2]:18 75000.75 +(word) divr16u::rem#1 rem zp[2]:18 200002.0 +(word) divr16u::rem#10 rem zp[2]:18 11002.0 +(word) divr16u::rem#11 rem zp[2]:18 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:18 200002.0 +(word) divr16u::rem#4 rem zp[2]:18 2002.0 +(word) divr16u::rem#5 rem zp[2]:18 210003.0 +(word) divr16u::rem#6 rem zp[2]:18 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:20 5.285714285714286 -(word) divr16u::return#2 return zp[2]:20 4.0 -(word) divr16u::return#3 return zp[2]:20 4.0 +(word) divr16u::return#0 return zp[2]:20 43143.57142857143 +(word) divr16u::return#2 return zp[2]:20 2002.0 +(word) divr16u::return#3 return zp[2]:20 2002.0 (void()) loop() -(signed word*~) loop::$2 zp[2]:24 22.0 -(word~) loop::$7 zp[2]:24 22.0 +(signed word*~) loop::$2 zp[2]:24 2002.0 +(word~) loop::$7 zp[2]:24 2002.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 @@ -8090,7 +8088,7 @@ FINAL SYMBOL TABLE (label) loop::@5 (label) loop::@6 (signed word) loop::xpos -(signed word) loop::xpos#0 xpos zp[2]:24 22.0 +(signed word) loop::xpos#0 xpos zp[2]:24 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -8099,8 +8097,8 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::ch -(byte) main::ch#1 reg byte x 16.5 -(byte) main::ch#2 reg byte x 22.0 +(byte) main::ch#1 reg byte x 151.5 +(byte) main::ch#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -8112,106 +8110,106 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 143.0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:22 22.0 -(byte*) memset::dst#2 dst zp[2]:22 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:22 4.0 +(byte*) memset::dst#1 dst zp[2]:22 2002.0 +(byte*) memset::dst#2 dst zp[2]:22 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:22 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:41 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:41 183.66666666666669 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:22 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$16 zp[2]:37 4.0 -(word~) mul16s::$9 zp[2]:37 4.0 +(word~) mul16s::$16 zp[2]:37 20002.0 +(word~) mul16s::$9 zp[2]:37 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 (label) mul16s::@4 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:20 2.6 +(signed word) mul16s::a#0 a zp[2]:20 2200.4 (signed word) mul16s::b (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:10 2.0 -(dword) mul16s::m#1 m zp[4]:10 4.0 -(dword) mul16s::m#4 m zp[4]:10 4.0 +(dword) mul16s::m#0 m zp[4]:10 10001.0 +(dword) mul16s::m#1 m zp[4]:10 20002.0 +(dword) mul16s::m#4 m zp[4]:10 20002.0 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:10 4.333333333333333 -(signed dword) mul16s::return#2 return zp[4]:10 22.0 +(signed dword) mul16s::return#0 return zp[4]:10 3667.333333333333 +(signed dword) mul16s::return#2 return zp[4]:10 2002.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:41 101.0 -(word) mul16u::a#1 a zp[2]:41 4.0 -(word) mul16u::a#2 a zp[2]:41 2.0 -(word) mul16u::a#3 a zp[2]:41 67.66666666666666 -(word) mul16u::a#6 a zp[2]:41 3.0 +(word) mul16u::a#0 a zp[2]:41 1.00000001E8 +(word) mul16u::a#1 a zp[2]:41 20002.0 +(word) mul16u::a#2 a zp[2]:41 100001.0 +(word) mul16u::a#3 a zp[2]:41 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:41 555001.5 (word) mul16u::b -(word) mul16u::b#1 b zp[2]:18 4.0 -(word) mul16u::b#2 b zp[2]:18 2.0 +(word) mul16u::b#1 b zp[2]:18 200002.0 +(word) mul16u::b#2 b zp[2]:18 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:14 4.0 -(dword) mul16u::mb#1 mb zp[4]:14 202.0 -(dword) mul16u::mb#2 mb zp[4]:14 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:14 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:14 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:14 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:10 202.0 -(dword) mul16u::res#2 res zp[4]:10 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:10 101.0 +(dword) mul16u::res#1 res zp[4]:10 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:10 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:10 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:10 4.0 -(dword) mul16u::return#3 return zp[4]:10 4.0 +(dword) mul16u::return#2 return zp[4]:10 20002.0 +(dword) mul16u::return#3 return zp[4]:10 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:10 4.0 -(dword~) mulu16_sel::$1 zp[4]:10 4.0 +(dword~) mulu16_sel::$0 zp[4]:10 200002.0 +(dword~) mulu16_sel::$1 zp[4]:10 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:39 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#11 return zp[2]:39 4.0 -(word) mulu16_sel::return#12 return zp[2]:39 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:39 4.0 +(word) mulu16_sel::return#0 return zp[2]:39 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#11 return zp[2]:39 20002.0 +(word) mulu16_sel::return#12 return zp[2]:39 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:39 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:26 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:26 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:26 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:26 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:18 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:18 70002.5 (word) rem16u -(word) rem16u#1 rem16u zp[2]:18 0.8 +(word) rem16u#1 rem16u zp[2]:18 2200.4 (void()) render_logo((signed word) render_logo::xpos) -(byte~) render_logo::$0 reg byte a 4.0 -(byte~) render_logo::$1 reg byte a 4.0 -(byte~) render_logo::$2 reg byte a 4.0 -(signed word~) render_logo::$3 zp[2]:26 2.0 -(byte~) render_logo::$33 reg byte a 202.0 -(byte~) render_logo::$36 reg byte a 202.0 -(byte~) render_logo::$39 reg byte a 202.0 -(byte~) render_logo::$42 reg byte a 202.0 -(byte~) render_logo::$45 reg byte a 202.0 -(byte~) render_logo::$73 reg byte a 202.0 -(byte~) render_logo::$76 reg byte a 202.0 -(byte~) render_logo::$79 reg byte a 202.0 -(byte~) render_logo::$82 reg byte a 202.0 -(byte~) render_logo::$85 reg byte a 202.0 +(byte~) render_logo::$0 reg byte a 20002.0 +(byte~) render_logo::$1 reg byte a 20002.0 +(byte~) render_logo::$2 reg byte a 20002.0 +(signed word~) render_logo::$3 zp[2]:26 10001.0 +(byte~) render_logo::$33 reg byte a 2000002.0 +(byte~) render_logo::$36 reg byte a 2000002.0 +(byte~) render_logo::$39 reg byte a 2000002.0 +(byte~) render_logo::$42 reg byte a 2000002.0 +(byte~) render_logo::$45 reg byte a 2000002.0 +(byte~) render_logo::$73 reg byte a 2000002.0 +(byte~) render_logo::$76 reg byte a 2000002.0 +(byte~) render_logo::$79 reg byte a 2000002.0 +(byte~) render_logo::$82 reg byte a 2000002.0 +(byte~) render_logo::$85 reg byte a 2000002.0 (label) render_logo::@1 (label) render_logo::@10 (label) render_logo::@11 @@ -8248,28 +8246,28 @@ FINAL SYMBOL TABLE (label) render_logo::@return (byte) render_logo::line (byte) render_logo::logo_idx -(signed byte) render_logo::logo_idx#1 reg byte a 2.0 -(byte) render_logo::logo_idx#10 logo_idx zp[1]:4 57.714285714285715 -(byte) render_logo::logo_idx#11 logo_idx_1 zp[1]:5 65.07142857142857 -(byte) render_logo::logo_idx#14 logo_idx_1 zp[1]:5 4.0 -(byte) render_logo::logo_idx#3 logo_idx zp[1]:4 202.0 -(byte) render_logo::logo_idx#4 logo_idx_1 zp[1]:5 202.0 +(signed byte) render_logo::logo_idx#1 reg byte a 10001.0 +(byte) render_logo::logo_idx#10 logo_idx zp[1]:4 571429.1428571428 +(byte) render_logo::logo_idx#11 logo_idx_1 zp[1]:5 643572.1428571427 +(byte) render_logo::logo_idx#14 logo_idx_1 zp[1]:5 20002.0 +(byte) render_logo::logo_idx#3 logo_idx zp[1]:4 2000002.0 +(byte) render_logo::logo_idx#4 logo_idx_1 zp[1]:5 2000002.0 (byte) render_logo::logo_start (byte) render_logo::screen_idx -(byte) render_logo::screen_idx#10 reg byte y 77.6923076923077 -(byte) render_logo::screen_idx#15 reg byte y 126.25 -(byte) render_logo::screen_idx#18 reg byte y 126.25 -(byte) render_logo::screen_idx#21 reg byte y 69.92307692307692 -(byte) render_logo::screen_idx#3 reg byte y 202.0 -(byte) render_logo::screen_idx#4 reg byte y 101.0 -(byte) render_logo::screen_idx#5 reg byte y 101.0 -(byte) render_logo::screen_idx#6 reg byte y 202.0 +(byte) render_logo::screen_idx#10 reg byte y 769231.5384615386 +(byte) render_logo::screen_idx#15 reg byte y 1250001.25 +(byte) render_logo::screen_idx#18 reg byte y 1250001.25 +(byte) render_logo::screen_idx#21 reg byte y 692308.3846153847 +(byte) render_logo::screen_idx#3 reg byte y 2000002.0 +(byte) render_logo::screen_idx#4 reg byte y 1000001.0 +(byte) render_logo::screen_idx#5 reg byte y 1000001.0 +(byte) render_logo::screen_idx#6 reg byte y 2000002.0 (signed byte) render_logo::x_char -(signed byte) render_logo::x_char#0 x_char zp[1]:28 0.36363636363636365 +(signed byte) render_logo::x_char#0 x_char zp[1]:28 1818.3636363636363 (signed word) render_logo::xpos -(signed word) render_logo::xpos#0 xpos zp[2]:24 2.142857142857143 +(signed word) render_logo::xpos#0 xpos zp[2]:24 3000.4285714285716 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:33 4.0 +(dword~) sin16s::$4 zp[4]:33 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -8284,39 +8282,39 @@ FINAL SYMBOL TABLE (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:20 22.0 -(signed word) sin16s::return#1 return zp[2]:20 5.0 -(signed word) sin16s::return#5 return zp[2]:20 4.0 +(signed word) sin16s::return#0 return zp[2]:20 2002.0 +(signed word) sin16s::return#1 return zp[2]:20 7001.0 +(signed word) sin16s::return#5 return zp[2]:20 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:20 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:20 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:20 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:20 1.0 +(word) sin16s::usinx#0 usinx zp[2]:20 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:20 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:14 8.5 -(dword) sin16s::x#1 x zp[4]:14 4.0 -(dword) sin16s::x#2 x zp[4]:14 4.0 -(dword) sin16s::x#4 x zp[4]:14 5.0 -(dword) sin16s::x#6 x zp[4]:14 6.0 +(dword) sin16s::x#0 x zp[4]:14 15502.0 +(dword) sin16s::x#1 x zp[4]:14 20002.0 +(dword) sin16s::x#2 x zp[4]:14 20002.0 +(dword) sin16s::x#4 x zp[4]:14 25002.5 +(dword) sin16s::x#6 x zp[4]:14 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:37 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:37 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:26 4.0 +(word) sin16s::x2#0 x2 zp[2]:26 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:26 1.0 +(word) sin16s::x3#0 x3 zp[2]:26 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:39 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:39 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:26 4.0 +(word) sin16s::x4#0 x4 zp[2]:26 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:39 4.0 +(word) sin16s::x5#0 x5 zp[2]:39 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:39 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:39 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:10 22.0 -(word~) sin16s_gen2::$9 zp[2]:41 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:10 2002.0 +(word~) sin16s_gen2::$9 zp[2]:41 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -8326,27 +8324,27 @@ FINAL SYMBOL TABLE (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:22 22.0 -(word) sin16s_gen2::i#2 i zp[2]:22 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:22 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:22 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $140 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$140 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:24 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:24 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:24 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:24 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:29 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:29 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:6 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:6 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:6 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:6 250.25 (const signed word*) xsin[(const word) XSIN_SIZE] = { fill( XSIN_SIZE, 0) } (word) xsin_idx -(word) xsin_idx#11 xsin_idx zp[2]:2 4.125 -(word) xsin_idx#19 xsin_idx zp[2]:2 11.0 -(word) xsin_idx#3 xsin_idx zp[2]:2 11.0 +(word) xsin_idx#11 xsin_idx zp[2]:2 375.375 +(word) xsin_idx#19 xsin_idx zp[2]:2 1001.0 +(word) xsin_idx#3 xsin_idx zp[2]:2 1001.0 reg byte x [ main::ch#2 main::ch#1 ] zp[2]:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.sym b/src/test/ref/examples/scrolllogo/scrolllogo.sym index 2521353f9..f64faf4f1 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.sym +++ b/src/test/ref/examples/scrolllogo/scrolllogo.sym @@ -29,15 +29,15 @@ (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:39 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:39 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:29 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:29 4.0 +(dword) div32u16u::return#0 return zp[4]:29 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:29 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -46,33 +46,33 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:41 2.75 -(word) divr16u::dividend#3 dividend zp[2]:41 5.0 -(word) divr16u::dividend#5 dividend zp[2]:41 2.0 +(word) divr16u::dividend#0 dividend zp[2]:41 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:41 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:41 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:20 16.5 -(word) divr16u::quotient#2 quotient zp[2]:20 11.0 -(word) divr16u::quotient#3 quotient zp[2]:20 2.75 +(word) divr16u::quotient#1 quotient zp[2]:20 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:20 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:20 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:18 8.25 -(word) divr16u::rem#1 rem zp[2]:18 22.0 -(word) divr16u::rem#10 rem zp[2]:18 4.0 -(word) divr16u::rem#11 rem zp[2]:18 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:18 22.0 -(word) divr16u::rem#4 rem zp[2]:18 4.0 -(word) divr16u::rem#5 rem zp[2]:18 24.0 -(word) divr16u::rem#6 rem zp[2]:18 11.0 +(word) divr16u::rem#0 rem zp[2]:18 75000.75 +(word) divr16u::rem#1 rem zp[2]:18 200002.0 +(word) divr16u::rem#10 rem zp[2]:18 11002.0 +(word) divr16u::rem#11 rem zp[2]:18 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:18 200002.0 +(word) divr16u::rem#4 rem zp[2]:18 2002.0 +(word) divr16u::rem#5 rem zp[2]:18 210003.0 +(word) divr16u::rem#6 rem zp[2]:18 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:20 5.285714285714286 -(word) divr16u::return#2 return zp[2]:20 4.0 -(word) divr16u::return#3 return zp[2]:20 4.0 +(word) divr16u::return#0 return zp[2]:20 43143.57142857143 +(word) divr16u::return#2 return zp[2]:20 2002.0 +(word) divr16u::return#3 return zp[2]:20 2002.0 (void()) loop() -(signed word*~) loop::$2 zp[2]:24 22.0 -(word~) loop::$7 zp[2]:24 22.0 +(signed word*~) loop::$2 zp[2]:24 2002.0 +(word~) loop::$7 zp[2]:24 2002.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 @@ -80,7 +80,7 @@ (label) loop::@5 (label) loop::@6 (signed word) loop::xpos -(signed word) loop::xpos#0 xpos zp[2]:24 22.0 +(signed word) loop::xpos#0 xpos zp[2]:24 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -89,8 +89,8 @@ (label) main::@5 (label) main::@return (byte) main::ch -(byte) main::ch#1 reg byte x 16.5 -(byte) main::ch#2 reg byte x 22.0 +(byte) main::ch#1 reg byte x 151.5 +(byte) main::ch#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -102,106 +102,106 @@ (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 143.0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:22 22.0 -(byte*) memset::dst#2 dst zp[2]:22 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:22 4.0 +(byte*) memset::dst#1 dst zp[2]:22 2002.0 +(byte*) memset::dst#2 dst zp[2]:22 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:22 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:41 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:41 183.66666666666669 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:22 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$16 zp[2]:37 4.0 -(word~) mul16s::$9 zp[2]:37 4.0 +(word~) mul16s::$16 zp[2]:37 20002.0 +(word~) mul16s::$9 zp[2]:37 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 (label) mul16s::@4 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:20 2.6 +(signed word) mul16s::a#0 a zp[2]:20 2200.4 (signed word) mul16s::b (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:10 2.0 -(dword) mul16s::m#1 m zp[4]:10 4.0 -(dword) mul16s::m#4 m zp[4]:10 4.0 +(dword) mul16s::m#0 m zp[4]:10 10001.0 +(dword) mul16s::m#1 m zp[4]:10 20002.0 +(dword) mul16s::m#4 m zp[4]:10 20002.0 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:10 4.333333333333333 -(signed dword) mul16s::return#2 return zp[4]:10 22.0 +(signed dword) mul16s::return#0 return zp[4]:10 3667.333333333333 +(signed dword) mul16s::return#2 return zp[4]:10 2002.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:41 101.0 -(word) mul16u::a#1 a zp[2]:41 4.0 -(word) mul16u::a#2 a zp[2]:41 2.0 -(word) mul16u::a#3 a zp[2]:41 67.66666666666666 -(word) mul16u::a#6 a zp[2]:41 3.0 +(word) mul16u::a#0 a zp[2]:41 1.00000001E8 +(word) mul16u::a#1 a zp[2]:41 20002.0 +(word) mul16u::a#2 a zp[2]:41 100001.0 +(word) mul16u::a#3 a zp[2]:41 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:41 555001.5 (word) mul16u::b -(word) mul16u::b#1 b zp[2]:18 4.0 -(word) mul16u::b#2 b zp[2]:18 2.0 +(word) mul16u::b#1 b zp[2]:18 200002.0 +(word) mul16u::b#2 b zp[2]:18 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:14 4.0 -(dword) mul16u::mb#1 mb zp[4]:14 202.0 -(dword) mul16u::mb#2 mb zp[4]:14 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:14 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:14 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:14 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:10 202.0 -(dword) mul16u::res#2 res zp[4]:10 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:10 101.0 +(dword) mul16u::res#1 res zp[4]:10 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:10 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:10 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:10 4.0 -(dword) mul16u::return#3 return zp[4]:10 4.0 +(dword) mul16u::return#2 return zp[4]:10 20002.0 +(dword) mul16u::return#3 return zp[4]:10 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:10 4.0 -(dword~) mulu16_sel::$1 zp[4]:10 4.0 +(dword~) mulu16_sel::$0 zp[4]:10 200002.0 +(dword~) mulu16_sel::$1 zp[4]:10 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:39 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#11 return zp[2]:39 4.0 -(word) mulu16_sel::return#12 return zp[2]:39 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:39 4.0 +(word) mulu16_sel::return#0 return zp[2]:39 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#11 return zp[2]:39 20002.0 +(word) mulu16_sel::return#12 return zp[2]:39 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:39 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:26 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:26 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:26 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:26 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:18 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:18 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:18 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:18 70002.5 (word) rem16u -(word) rem16u#1 rem16u zp[2]:18 0.8 +(word) rem16u#1 rem16u zp[2]:18 2200.4 (void()) render_logo((signed word) render_logo::xpos) -(byte~) render_logo::$0 reg byte a 4.0 -(byte~) render_logo::$1 reg byte a 4.0 -(byte~) render_logo::$2 reg byte a 4.0 -(signed word~) render_logo::$3 zp[2]:26 2.0 -(byte~) render_logo::$33 reg byte a 202.0 -(byte~) render_logo::$36 reg byte a 202.0 -(byte~) render_logo::$39 reg byte a 202.0 -(byte~) render_logo::$42 reg byte a 202.0 -(byte~) render_logo::$45 reg byte a 202.0 -(byte~) render_logo::$73 reg byte a 202.0 -(byte~) render_logo::$76 reg byte a 202.0 -(byte~) render_logo::$79 reg byte a 202.0 -(byte~) render_logo::$82 reg byte a 202.0 -(byte~) render_logo::$85 reg byte a 202.0 +(byte~) render_logo::$0 reg byte a 20002.0 +(byte~) render_logo::$1 reg byte a 20002.0 +(byte~) render_logo::$2 reg byte a 20002.0 +(signed word~) render_logo::$3 zp[2]:26 10001.0 +(byte~) render_logo::$33 reg byte a 2000002.0 +(byte~) render_logo::$36 reg byte a 2000002.0 +(byte~) render_logo::$39 reg byte a 2000002.0 +(byte~) render_logo::$42 reg byte a 2000002.0 +(byte~) render_logo::$45 reg byte a 2000002.0 +(byte~) render_logo::$73 reg byte a 2000002.0 +(byte~) render_logo::$76 reg byte a 2000002.0 +(byte~) render_logo::$79 reg byte a 2000002.0 +(byte~) render_logo::$82 reg byte a 2000002.0 +(byte~) render_logo::$85 reg byte a 2000002.0 (label) render_logo::@1 (label) render_logo::@10 (label) render_logo::@11 @@ -238,28 +238,28 @@ (label) render_logo::@return (byte) render_logo::line (byte) render_logo::logo_idx -(signed byte) render_logo::logo_idx#1 reg byte a 2.0 -(byte) render_logo::logo_idx#10 logo_idx zp[1]:4 57.714285714285715 -(byte) render_logo::logo_idx#11 logo_idx_1 zp[1]:5 65.07142857142857 -(byte) render_logo::logo_idx#14 logo_idx_1 zp[1]:5 4.0 -(byte) render_logo::logo_idx#3 logo_idx zp[1]:4 202.0 -(byte) render_logo::logo_idx#4 logo_idx_1 zp[1]:5 202.0 +(signed byte) render_logo::logo_idx#1 reg byte a 10001.0 +(byte) render_logo::logo_idx#10 logo_idx zp[1]:4 571429.1428571428 +(byte) render_logo::logo_idx#11 logo_idx_1 zp[1]:5 643572.1428571427 +(byte) render_logo::logo_idx#14 logo_idx_1 zp[1]:5 20002.0 +(byte) render_logo::logo_idx#3 logo_idx zp[1]:4 2000002.0 +(byte) render_logo::logo_idx#4 logo_idx_1 zp[1]:5 2000002.0 (byte) render_logo::logo_start (byte) render_logo::screen_idx -(byte) render_logo::screen_idx#10 reg byte y 77.6923076923077 -(byte) render_logo::screen_idx#15 reg byte y 126.25 -(byte) render_logo::screen_idx#18 reg byte y 126.25 -(byte) render_logo::screen_idx#21 reg byte y 69.92307692307692 -(byte) render_logo::screen_idx#3 reg byte y 202.0 -(byte) render_logo::screen_idx#4 reg byte y 101.0 -(byte) render_logo::screen_idx#5 reg byte y 101.0 -(byte) render_logo::screen_idx#6 reg byte y 202.0 +(byte) render_logo::screen_idx#10 reg byte y 769231.5384615386 +(byte) render_logo::screen_idx#15 reg byte y 1250001.25 +(byte) render_logo::screen_idx#18 reg byte y 1250001.25 +(byte) render_logo::screen_idx#21 reg byte y 692308.3846153847 +(byte) render_logo::screen_idx#3 reg byte y 2000002.0 +(byte) render_logo::screen_idx#4 reg byte y 1000001.0 +(byte) render_logo::screen_idx#5 reg byte y 1000001.0 +(byte) render_logo::screen_idx#6 reg byte y 2000002.0 (signed byte) render_logo::x_char -(signed byte) render_logo::x_char#0 x_char zp[1]:28 0.36363636363636365 +(signed byte) render_logo::x_char#0 x_char zp[1]:28 1818.3636363636363 (signed word) render_logo::xpos -(signed word) render_logo::xpos#0 xpos zp[2]:24 2.142857142857143 +(signed word) render_logo::xpos#0 xpos zp[2]:24 3000.4285714285716 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:33 4.0 +(dword~) sin16s::$4 zp[4]:33 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -274,39 +274,39 @@ (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:20 22.0 -(signed word) sin16s::return#1 return zp[2]:20 5.0 -(signed word) sin16s::return#5 return zp[2]:20 4.0 +(signed word) sin16s::return#0 return zp[2]:20 2002.0 +(signed word) sin16s::return#1 return zp[2]:20 7001.0 +(signed word) sin16s::return#5 return zp[2]:20 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:20 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:20 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:20 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:20 1.0 +(word) sin16s::usinx#0 usinx zp[2]:20 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:20 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:14 8.5 -(dword) sin16s::x#1 x zp[4]:14 4.0 -(dword) sin16s::x#2 x zp[4]:14 4.0 -(dword) sin16s::x#4 x zp[4]:14 5.0 -(dword) sin16s::x#6 x zp[4]:14 6.0 +(dword) sin16s::x#0 x zp[4]:14 15502.0 +(dword) sin16s::x#1 x zp[4]:14 20002.0 +(dword) sin16s::x#2 x zp[4]:14 20002.0 +(dword) sin16s::x#4 x zp[4]:14 25002.5 +(dword) sin16s::x#6 x zp[4]:14 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:37 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:37 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:26 4.0 +(word) sin16s::x2#0 x2 zp[2]:26 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:26 1.0 +(word) sin16s::x3#0 x3 zp[2]:26 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:39 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:39 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:26 4.0 +(word) sin16s::x4#0 x4 zp[2]:26 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:39 4.0 +(word) sin16s::x5#0 x5 zp[2]:39 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:39 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:39 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:10 22.0 -(word~) sin16s_gen2::$9 zp[2]:41 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:10 2002.0 +(word~) sin16s_gen2::$9 zp[2]:41 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -316,27 +316,27 @@ (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:22 22.0 -(word) sin16s_gen2::i#2 i zp[2]:22 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:22 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:22 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $140 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$140 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:24 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:24 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:24 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:24 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:29 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:29 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:6 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:6 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:6 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:6 250.25 (const signed word*) xsin[(const word) XSIN_SIZE] = { fill( XSIN_SIZE, 0) } (word) xsin_idx -(word) xsin_idx#11 xsin_idx zp[2]:2 4.125 -(word) xsin_idx#19 xsin_idx zp[2]:2 11.0 -(word) xsin_idx#3 xsin_idx zp[2]:2 11.0 +(word) xsin_idx#11 xsin_idx zp[2]:2 375.375 +(word) xsin_idx#19 xsin_idx zp[2]:2 1001.0 +(word) xsin_idx#3 xsin_idx zp[2]:2 1001.0 reg byte x [ main::ch#2 main::ch#1 ] zp[2]:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] diff --git a/src/test/ref/examples/showlogo/showlogo.log b/src/test/ref/examples/showlogo/showlogo.log index 467abf69a..f8ff47e2b 100644 --- a/src/test/ref/examples/showlogo/showlogo.log +++ b/src/test/ref/examples/showlogo/showlogo.log @@ -316,18 +316,18 @@ Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::t Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -539,22 +539,22 @@ memset::@3: scope:[memset] from memset::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::ch -(byte) main::ch#1 16.5 -(byte) main::ch#2 22.0 +(byte) main::ch#1 151.5 +(byte) main::ch#2 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 125.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1368.3333333333335 +(byte*) memset::dst#4 202.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 183.66666666666669 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 @@ -795,30 +795,30 @@ memset: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D016) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [22] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::memset:12 [ memset::num#2 memset::str#3 memset::c#4 ] main:3::memset:14 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [5] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D016) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [22] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::memset:12 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:3::memset:14 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ memset::c#4 ] -Statement [23] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:12 [ memset::str#3 memset::c#4 memset::end#0 ] main:3::memset:14 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [24] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#4 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [26] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [28] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [23] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:12 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:3::memset:14 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [24] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [26] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [28] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:7 [ memset::c#4 ] -Statement [5] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D016) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [22] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::memset:12 [ memset::num#2 memset::str#3 memset::c#4 ] main:3::memset:14 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [23] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:12 [ memset::str#3 memset::c#4 memset::end#0 ] main:3::memset:14 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [24] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#4 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [26] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [28] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) BORDERCOL) ← (const byte) WHITE [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL2) ← (const byte) DARK_GREY [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL) ← *((const byte*) BGCOL2) [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL3) ← (const byte) BLACK [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D016) ← (const byte) VIC_MCM|(const byte) VIC_CSEL [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [22] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::memset:12 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:3::memset:14 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [23] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::memset:12 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:3::memset:14 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [24] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [26] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [28] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::memset:12 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::memset:14 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::ch#2 main::ch#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ memset::num#2 ] : zp[2]:3 , Potential registers zp[2]:5 [ memset::str#3 ] : zp[2]:5 , @@ -827,11 +827,11 @@ Potential registers zp[2]:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2 Potential registers zp[2]:10 [ memset::end#0 ] : zp[2]:10 , REGISTER UPLIFT SCOPES -Uplift Scope [memset] 41.33: zp[2]:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:10 [ memset::end#0 ] 2: zp[2]:3 [ memset::num#2 ] 1.38: zp[1]:7 [ memset::c#4 ] 0: zp[2]:5 [ memset::str#3 ] -Uplift Scope [main] 38.5: zp[1]:2 [ main::ch#2 main::ch#1 ] +Uplift Scope [memset] 3,572.33: zp[2]:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:10 [ memset::end#0 ] 125.12: zp[1]:7 [ memset::c#4 ] 101: zp[2]:3 [ memset::num#2 ] 0: zp[2]:5 [ memset::str#3 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::ch#2 main::ch#1 ] Uplift Scope [] -Uplifting [memset] best 6284 combination zp[2]:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:10 [ memset::end#0 ] zp[2]:3 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:5 [ memset::str#3 ] +Uplifting [memset] best 6284 combination zp[2]:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:10 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:3 [ memset::num#2 ] zp[2]:5 [ memset::str#3 ] Uplifting [main] best 6164 combination reg byte x [ main::ch#2 main::ch#1 ] Uplifting [] best 6164 combination Coalescing zero page register [ zp[2]:3 [ memset::num#2 ] ] with [ zp[2]:10 [ memset::end#0 ] ] - score: 1 @@ -1110,8 +1110,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@4 (byte) main::ch -(byte) main::ch#1 reg byte x 16.5 -(byte) main::ch#2 reg byte x 22.0 +(byte) main::ch#1 reg byte x 151.5 +(byte) main::ch#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -1123,15 +1123,15 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 125.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:4 4.0 +(byte*) memset::dst#1 dst zp[2]:4 2002.0 +(byte*) memset::dst#2 dst zp[2]:4 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:4 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:2 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:2 183.66666666666669 (word) memset::num -(word) memset::num#2 num zp[2]:2 2.0 +(word) memset::num#2 num zp[2]:2 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:4 diff --git a/src/test/ref/examples/showlogo/showlogo.sym b/src/test/ref/examples/showlogo/showlogo.sym index 24a2cee29..9f8a0853a 100644 --- a/src/test/ref/examples/showlogo/showlogo.sym +++ b/src/test/ref/examples/showlogo/showlogo.sym @@ -22,8 +22,8 @@ (label) main::@3 (label) main::@4 (byte) main::ch -(byte) main::ch#1 reg byte x 16.5 -(byte) main::ch#2 reg byte x 22.0 +(byte) main::ch#1 reg byte x 151.5 +(byte) main::ch#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -35,15 +35,15 @@ (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 125.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:4 4.0 +(byte*) memset::dst#1 dst zp[2]:4 2002.0 +(byte*) memset::dst#2 dst zp[2]:4 1368.3333333333335 +(byte*) memset::dst#4 dst zp[2]:4 202.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:2 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:2 183.66666666666669 (word) memset::num -(word) memset::num#2 num zp[2]:2 2.0 +(word) memset::num#2 num zp[2]:2 101.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:4 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index b782608fd..69583f75a 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -220,10 +220,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (const dword) div32u16u::dividend#0 Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0 @@ -2455,7 +2455,7 @@ Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 Removing PHI-reference to removed block (mul16s::@4) in block mul16s::@2 Removing unused block mul16s::@4 Successful SSA optimization Pass2EliminateUnusedBlocks -Alias (dword) mul16s::m#4 = (dword) mul16s::m#5 +Alias mul16s::m#4 = mul16s::m#5 Successful SSA optimization Pass2AliasElimination Constant right-side identified [49] (signed word~) sin16s_gen2::$1 ← (const signed word) sin16s_gen2::ampl#0 >> (signed byte) 1 Constant right-side identified [167] (byte~) main::vicSelectGfxBank1_toDd001_$2 ← (const byte) main::vicSelectGfxBank1_toDd001_$1 / (byte) $40 @@ -2494,7 +2494,7 @@ Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const signed word) sin16s_gen2::$1 Eliminating unused constant (const signed word) sin16s_gen2::offs#0 Successful SSA optimization PassNEliminateUnusedVars -Alias (signed word~) sin16s_gen2::$9 = (signed word~) sin16s_gen2::$8 +Alias sin16s_gen2::$9 = sin16s_gen2::$8 Successful SSA optimization Pass2AliasElimination Constant right-side identified [166] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -3268,80 +3268,80 @@ VARIABLE REGISTER WEIGHTS (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 22.0 -(byte~) bitmap_init::$5 22.0 -(byte~) bitmap_init::$6 22.0 -(byte~) bitmap_init::$7 5.5 +(byte~) bitmap_init::$4 2002.0 +(byte~) bitmap_init::$5 2002.0 +(byte~) bitmap_init::$6 2002.0 +(byte~) bitmap_init::$7 500.5 (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 11.0 -(byte) bitmap_init::bits#3 16.5 -(byte) bitmap_init::bits#4 7.333333333333333 +(byte) bitmap_init::bits#1 1001.0 +(byte) bitmap_init::bits#3 1501.5 +(byte) bitmap_init::bits#4 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 16.5 -(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::x#1 1501.5 +(byte) bitmap_init::x#2 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 16.5 -(byte) bitmap_init::y#2 5.5 +(byte) bitmap_init::y#1 1501.5 +(byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 22.0 -(byte*) bitmap_init::yoffs#2 6.875 -(byte*) bitmap_init::yoffs#4 11.0 +(byte*) bitmap_init::yoffs#1 2002.0 +(byte*) bitmap_init::yoffs#2 625.625 +(byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 4.0 -(byte~) bitmap_plot::$2 4.0 +(word~) bitmap_plot::$1 20002.0 +(byte~) bitmap_plot::$2 20002.0 (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 1.0 -(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::plotter#0 5000.5 +(byte*) bitmap_plot::plotter#1 15001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 11.0 -(word) bitmap_plot::x#1 11.0 -(word) bitmap_plot::x#2 6.5 +(word) bitmap_plot::x#0 1001.0 +(word) bitmap_plot::x#1 1001.0 +(word) bitmap_plot::x#2 5501.0 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 22.0 -(byte) bitmap_plot::y#1 22.0 -(byte) bitmap_plot::y#2 26.0 +(byte) bitmap_plot::y#0 2002.0 +(byte) bitmap_plot::y#1 2002.0 +(byte) bitmap_plot::y#2 22004.0 (byte*) bitmap_screen (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 (void()) main() (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -3351,165 +3351,165 @@ VARIABLE REGISTER WEIGHTS (byte) main::vicSelectGfxBank1_toDd001_return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$16 4.0 -(word~) mul16s::$9 4.0 +(word~) mul16s::$16 20002.0 +(word~) mul16s::$9 20002.0 (signed word) mul16s::a -(signed word) mul16s::a#0 2.6 +(signed word) mul16s::a#0 2200.4 (signed word) mul16s::b (dword) mul16s::m -(dword) mul16s::m#0 2.0 -(dword) mul16s::m#1 4.0 -(dword) mul16s::m#4 4.0 +(dword) mul16s::m#0 10001.0 +(dword) mul16s::m#1 20002.0 +(dword) mul16s::m#4 20002.0 (signed dword) mul16s::return -(signed dword) mul16s::return#0 4.333333333333333 -(signed dword) mul16s::return#2 22.0 +(signed dword) mul16s::return#0 3667.333333333333 +(signed dword) mul16s::return#2 2002.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 4.0 -(word) mul16u::a#2 2.0 -(word) mul16u::a#3 67.66666666666666 -(word) mul16u::a#6 3.0 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 20002.0 +(word) mul16u::a#2 100001.0 +(word) mul16u::a#3 6.683333416666667E7 +(word) mul16u::a#6 555001.5 (word) mul16u::b -(word) mul16u::b#1 4.0 -(word) mul16u::b#2 2.0 +(word) mul16u::b#1 200002.0 +(word) mul16u::b#2 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 43.85714285714286 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 4.287285785714286E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 -(dword) mul16u::return#3 4.0 +(dword) mul16u::return#2 20002.0 +(dword) mul16u::return#3 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (void()) render_sine() -(signed word*~) render_sine::$1 22.0 -(word~) render_sine::$10 22.0 -(word~) render_sine::$11 22.0 -(signed word*~) render_sine::$4 22.0 +(signed word*~) render_sine::$1 2002.0 +(word~) render_sine::$10 2002.0 +(word~) render_sine::$11 2002.0 +(signed word*~) render_sine::$4 2002.0 (signed word) render_sine::sin2_val -(signed word) render_sine::sin2_val#0 22.0 +(signed word) render_sine::sin2_val#0 2002.0 (word) render_sine::sin_idx -(word) render_sine::sin_idx#1 22.0 -(word) render_sine::sin_idx#2 2.1153846153846154 +(word) render_sine::sin_idx#1 2002.0 +(word) render_sine::sin_idx#2 192.5 (signed word) render_sine::sin_val -(signed word) render_sine::sin_val#0 22.0 +(signed word) render_sine::sin_val#0 2002.0 (word) render_sine::xpos -(word) render_sine::xpos#1 11.0 -(word) render_sine::xpos#3 2.0 -(word) render_sine::xpos#9 11.0 +(word) render_sine::xpos#1 1001.0 +(word) render_sine::xpos#3 182.0 +(word) render_sine::xpos#9 1001.0 (byte) render_sine::ypos -(byte) render_sine::ypos#0 11.0 +(byte) render_sine::ypos#0 1001.0 (byte) render_sine::ypos2 -(byte) render_sine::ypos2#0 11.0 +(byte) render_sine::ypos2#0 1001.0 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 22.0 -(word~) sin16s_gen2::$9 11.0 +(signed dword~) sin16s_gen2::$6 2002.0 +(word~) sin16s_gen2::$9 1001.0 (signed word) sin16s_gen2::ampl (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 22.0 -(word) sin16s_gen2::i#2 2.5384615384615383 +(word) sin16s_gen2::i#1 2002.0 +(word) sin16s_gen2::i#2 231.0 (signed word) sin16s_gen2::max (signed word) sin16s_gen2::min (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 3.0 +(signed word*) sin16s_gen2::sintab#0 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 0.8666666666666666 +(dword) sin16s_gen2::step#0 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 11.0 -(dword) sin16s_gen2::x#2 2.75 +(dword) sin16s_gen2::x#1 1001.0 +(dword) sin16s_gen2::x#2 250.25 (byte()) wrap_y((signed word) wrap_y::y) (byte) wrap_y::return -(byte) wrap_y::return#0 22.0 -(byte) wrap_y::return#1 22.0 -(byte) wrap_y::return#2 6.0 +(byte) wrap_y::return#0 2002.0 +(byte) wrap_y::return#1 2002.0 +(byte) wrap_y::return#2 3000.75 (signed word) wrap_y::y -(signed word) wrap_y::y#0 22.0 -(signed word) wrap_y::y#1 22.0 -(signed word) wrap_y::y#2 202.0 -(signed word) wrap_y::y#3 202.0 -(signed word) wrap_y::y#4 203.0 -(signed word) wrap_y::y#6 202.0 -(signed word) wrap_y::y#9 24.0 +(signed word) wrap_y::y#0 2002.0 +(signed word) wrap_y::y#1 2002.0 +(signed word) wrap_y::y#2 2000002.0 +(signed word) wrap_y::y#3 2000002.0 +(signed word) wrap_y::y#4 2005002.5 +(signed word) wrap_y::y#6 2000002.0 +(signed word) wrap_y::y#9 12003.0 Initial phi equivalence classes [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] @@ -5525,227 +5525,223 @@ sin2: REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:190 [ bitmap_init::$4 ] has ALU potential. -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D016) ← (const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] if((word) render_sine::sin_idx#2<(const word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a -Statement [26] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a -Statement [27] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ) always clobbers reg byte a -Statement [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y -Statement [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a -Statement [33] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D016) ← (const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] if((word) render_sine::sin_idx#2<(const word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { } ) always clobbers reg byte a +Statement [26] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [33] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:73 [ render_sine::ypos#0 ] -Statement [36] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a -Statement [37] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ) always clobbers reg byte a -Statement [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y -Statement [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [36] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [37] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [43] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:81 [ render_sine::ypos2#0 ] -Statement [47] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a -Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y -Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a -Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a -Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a -Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a -Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a -Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [72] if((word) sin16s_gen2::i#2<(const word) SIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [74] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [76] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [77] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [79] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [80] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [81] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [82] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [83] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [84] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [98] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [47] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a +Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y +Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [72] if((word) sin16s_gen2::i#2<(const word) SIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [74] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [76] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [77] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [79] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [80] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [81] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [82] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [83] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [84] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [98] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp[1]:46 [ mulu16_sel::select#5 ] -Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [108] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [130] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [132] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [147] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [108] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [130] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [132] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:53 [ divr16u::i#2 divr16u::i#1 ] -Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:16::memset:188 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [191] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:16::memset:188 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:58 [ memset::c#4 ] -Statement [192] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:16::memset:186 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:16::memset:188 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [193] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [195] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [197] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [192] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:16::memset:186 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:16::memset:188 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [193] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [195] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [197] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:58 [ memset::c#4 ] -Statement [216] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [216] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:63 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D016) ← (const byte) VIC_CSEL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] if((word) render_sine::sin_idx#2<(const word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a -Statement [26] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a -Statement [27] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ) always clobbers reg byte a -Statement [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y -Statement [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a -Statement [33] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [36] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a -Statement [37] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ) always clobbers reg byte a -Statement [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y -Statement [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [47] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a -Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y -Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a -Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a -Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a -Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a -Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a -Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [72] if((word) sin16s_gen2::i#2<(const word) SIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a -Statement [74] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [76] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [77] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [79] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [80] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [81] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ) always clobbers reg byte a -Statement [82] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [83] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [84] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [98] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 [108] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [130] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [132] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [147] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:16::memset:188 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [192] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:16::memset:186 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:16::memset:188 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [193] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [195] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [197] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [209] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [216] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D016) ← (const byte) VIC_CSEL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] if((word) render_sine::sin_idx#2<(const word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { } ) always clobbers reg byte a +Statement [26] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [27] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [33] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [36] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [37] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [43] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [47] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a +Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:35 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } main:2::render_sine:20::bitmap_plot:45 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y +Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:30 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } main:2::render_sine:20::wrap_y:40 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] { } ) always clobbers reg byte a +Statement [72] if((word) sin16s_gen2::i#2<(const word) SIN_SIZE) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a +Statement [74] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [76] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [77] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [79] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [80] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a +Statement [81] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$9 ] { } ) always clobbers reg byte a +Statement [82] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$9 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [83] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [84] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a +Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:78 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [98] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#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 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:78::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [108] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [130] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [132] (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:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:75 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen2:18::sin16s:75::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:158 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen2:18::div32u16u:68::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [191] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::num#2 memset::str#3 memset::c#4 ] { } main:2::bitmap_clear:16::memset:188 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [192] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:16::memset:186 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::bitmap_clear:16::memset:188 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [193] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [195] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [197] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:186 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::bitmap_clear:16::memset:188 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [209] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [216] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , @@ -5838,44 +5834,44 @@ Potential registers zp[1]:191 [ bitmap_init::$5 ] : zp[1]:191 , reg byte a , reg Potential registers zp[1]:192 [ bitmap_init::$6 ] : zp[1]:192 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 346.86: zp[4]:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:124 [ mul16u::$1 ] 177.67: zp[2]:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 6: zp[2]:23 [ mul16u::b#2 mul16u::b#1 ] 4: zp[4]:112 [ mul16u::return#2 ] 4: zp[4]:157 [ mul16u::return#3 ] -Uplift Scope [wrap_y] 877: zp[2]:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#1 wrap_y::y#0 wrap_y::y#2 wrap_y::y#3 ] 22: zp[1]:72 [ wrap_y::return#0 ] 22: zp[1]:80 [ wrap_y::return#1 ] 6: zp[1]:89 [ wrap_y::return#2 ] -Uplift Scope [divr16u] 106.92: zp[2]: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[2]:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:183 [ divr16u::$1 ] 22: zp[1]:184 [ divr16u::$2 ] 18.19: zp[1]:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:171 [ divr16u::return#2 ] 4: zp[2]:175 [ divr16u::return#3 ] -Uplift Scope [render_sine] 24.12: zp[2]:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 24: zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] 22: zp[2]:66 [ render_sine::$10 ] 22: zp[2]:68 [ render_sine::$1 ] 22: zp[2]:70 [ render_sine::sin_val#0 ] 22: zp[2]:74 [ render_sine::$11 ] 22: zp[2]:76 [ render_sine::$4 ] 22: zp[2]:78 [ render_sine::sin2_val#0 ] 11: zp[1]:73 [ render_sine::ypos#0 ] 11: zp[1]:81 [ render_sine::ypos2#0 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:61 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:62 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:63 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:190 [ bitmap_init::$4 ] 22: zp[1]:191 [ bitmap_init::$5 ] 22: zp[1]:192 [ bitmap_init::$6 ] 5.5: zp[1]:189 [ bitmap_init::$7 ] -Uplift Scope [bitmap_plot] 70: zp[1]:6 [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] 28.5: zp[2]:7 [ bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ] 4: zp[2]:84 [ bitmap_plot::$1 ] 4: zp[1]:88 [ bitmap_plot::$2 ] 3: zp[2]:86 [ bitmap_plot::plotter#1 ] 1: zp[2]:82 [ bitmap_plot::plotter#0 ] -Uplift Scope [sin16s] 27.5: zp[4]:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:98 [ sin16s::return#0 ] 13: zp[2]:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:125 [ sin16s::$4 ] 4: zp[2]:133 [ sin16s::x2#0 ] 4: zp[2]:141 [ sin16s::x3_6#0 ] 4: zp[2]:147 [ sin16s::x4#0 ] 4: zp[2]:151 [ sin16s::x5#0 ] 4: zp[2]:153 [ sin16s::x5_128#0 ] 1: zp[2]:137 [ sin16s::x3#0 ] 1: zp[2]:155 [ sin16s::usinx#1 ] 0.64: zp[2]:129 [ sin16s::x1#0 ] 0.33: zp[2]:143 [ sin16s::usinx#0 ] 0.06: zp[1]:35 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen2] 24.54: zp[2]:11 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 22: zp[4]:106 [ sin16s_gen2::$6 ] 13.75: zp[4]:13 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 11: zp[2]:110 [ sin16s_gen2::$9 ] 10.33: zp[2]:17 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.87: zp[4]:94 [ sin16s_gen2::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]: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[2]:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:131 [ mulu16_sel::return#0 ] 4: zp[2]:135 [ mulu16_sel::return#1 ] 4: zp[2]:139 [ mulu16_sel::return#2 ] 4: zp[2]:145 [ mulu16_sel::return#10 ] 4: zp[2]:149 [ mulu16_sel::return#11 ] 4: zp[4]:161 [ mulu16_sel::$0 ] 4: zp[4]:165 [ mulu16_sel::$1 ] 1.71: zp[2]:169 [ mulu16_sel::return#12 ] 0.33: zp[1]:46 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp[4]:102 [ mul16s::return#2 ] 10: zp[4]:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp[4]:120 [ mul16s::return#0 ] 4: zp[2]:116 [ mul16s::$9 ] 4: zp[2]:118 [ mul16s::$16 ] 2.6: zp[2]:100 [ mul16s::a#0 ] -Uplift Scope [memset] 41.33: zp[2]:59 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:187 [ memset::end#0 ] 2: zp[2]:54 [ memset::num#2 ] 1.38: zp[1]:58 [ memset::c#4 ] 0: zp[2]:56 [ memset::str#3 ] -Uplift Scope [div32u16u] 4: zp[4]:90 [ div32u16u::return#2 ] 4: zp[2]:177 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:179 [ div32u16u::return#0 ] 0.8: zp[2]:173 [ div32u16u::quotient_hi#0 ] -Uplift Scope [] 0.8: zp[2]:185 [ rem16u#1 ] +Uplift Scope [mul16u] 342,872,860.86: zp[4]:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:124 [ mul16u::$1 ] 167,508,339.67: zp[2]:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 300,003: zp[2]:23 [ mul16u::b#2 mul16u::b#1 ] 200,002: zp[4]:157 [ mul16u::return#3 ] 20,002: zp[4]:112 [ mul16u::return#2 ] +Uplift Scope [wrap_y] 8,021,015.5: zp[2]:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#1 wrap_y::y#0 wrap_y::y#2 wrap_y::y#3 ] 3,000.75: zp[1]:89 [ wrap_y::return#2 ] 2,002: zp[1]:72 [ wrap_y::return#0 ] 2,002: zp[1]:80 [ wrap_y::return#1 ] +Uplift Scope [divr16u] 901,347.42: zp[2]: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 ] 318,146.32: zp[2]:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:183 [ divr16u::$1 ] 200,002: zp[1]:184 [ divr16u::$2 ] 165,386.27: zp[1]:53 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:171 [ divr16u::return#2 ] 2,002: zp[2]:175 [ divr16u::return#3 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]: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 ] 200,002: zp[4]:161 [ mulu16_sel::$0 ] 200,002: zp[4]:165 [ mulu16_sel::$1 ] 150,010.5: zp[2]:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:169 [ mulu16_sel::return#12 ] 20,002: zp[2]:131 [ mulu16_sel::return#0 ] 20,002: zp[2]:135 [ mulu16_sel::return#1 ] 20,002: zp[2]:139 [ mulu16_sel::return#2 ] 20,002: zp[2]:145 [ mulu16_sel::return#10 ] 20,002: zp[2]:149 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:46 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:125 [ sin16s::$4 ] 20,002: zp[2]:133 [ sin16s::x2#0 ] 20,002: zp[2]:141 [ sin16s::x3_6#0 ] 20,002: zp[2]:147 [ sin16s::x4#0 ] 20,002: zp[2]:151 [ sin16s::x5#0 ] 20,002: zp[2]:153 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:137 [ sin16s::x3#0 ] 5,000.5: zp[2]:155 [ sin16s::usinx#1 ] 3,182.14: zp[2]:129 [ sin16s::x1#0 ] 2,002: zp[2]:98 [ sin16s::return#0 ] 1,666.83: zp[2]:143 [ sin16s::usinx#0 ] 303.06: zp[1]:35 [ sin16s::isUpper#2 ] +Uplift Scope [mul16s] 50,005: zp[4]:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 20,002: zp[2]:116 [ mul16s::$9 ] 20,002: zp[2]:118 [ mul16s::$16 ] 3,667.33: zp[4]:120 [ mul16s::return#0 ] 2,200.4: zp[2]:100 [ mul16s::a#0 ] 2,002: zp[4]:102 [ mul16s::return#2 ] +Uplift Scope [bitmap_plot] 26,008: zp[1]:6 [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] 20,002: zp[2]:84 [ bitmap_plot::$1 ] 20,002: zp[1]:88 [ bitmap_plot::$2 ] 15,001.5: zp[2]:86 [ bitmap_plot::plotter#1 ] 7,503: zp[2]:7 [ bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ] 5,000.5: zp[2]:82 [ bitmap_plot::plotter#0 ] +Uplift Scope [memset] 35,672.33: zp[2]:59 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:187 [ memset::end#0 ] 1,250.12: zp[1]:58 [ memset::c#4 ] 1,001: zp[2]:54 [ memset::num#2 ] 0: zp[2]:56 [ memset::str#3 ] +Uplift Scope [render_sine] 2,194.5: zp[2]:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 2,184: zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] 2,002: zp[2]:66 [ render_sine::$10 ] 2,002: zp[2]:68 [ render_sine::$1 ] 2,002: zp[2]:70 [ render_sine::sin_val#0 ] 2,002: zp[2]:74 [ render_sine::$11 ] 2,002: zp[2]:76 [ render_sine::$4 ] 2,002: zp[2]:78 [ render_sine::sin2_val#0 ] 1,001: zp[1]:73 [ render_sine::ypos#0 ] 1,001: zp[1]:81 [ render_sine::ypos2#0 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:61 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:62 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:63 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:190 [ bitmap_init::$4 ] 2,002: zp[1]:191 [ bitmap_init::$5 ] 2,002: zp[1]:192 [ bitmap_init::$6 ] 500.5: zp[1]:189 [ bitmap_init::$7 ] +Uplift Scope [sin16s_gen2] 2,233: zp[2]:11 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 2,002: zp[4]:106 [ sin16s_gen2::$6 ] 1,251.25: zp[4]:13 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 1,001: zp[2]:110 [ sin16s_gen2::$9 ] 940.33: zp[2]:17 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 73.47: zp[4]:94 [ sin16s_gen2::step#0 ] +Uplift Scope [div32u16u] 2,002: zp[2]:177 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:173 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:179 [ div32u16u::return#0 ] 202: zp[4]:90 [ div32u16u::return#2 ] +Uplift Scope [] 2,200.4: zp[2]:185 [ rem16u#1 ] Uplift Scope [bitmap_clear] Uplift Scope [main] -Uplifting [mul16u] best 31403 combination zp[4]:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:23 [ mul16u::b#2 mul16u::b#1 ] zp[4]:112 [ mul16u::return#2 ] zp[4]:157 [ mul16u::return#3 ] -Uplifting [wrap_y] best 31220 combination zp[2]:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#1 wrap_y::y#0 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 [mul16u] best 31403 combination zp[4]:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:23 [ mul16u::b#2 mul16u::b#1 ] zp[4]:157 [ mul16u::return#3 ] zp[4]:112 [ mul16u::return#2 ] +Uplifting [wrap_y] best 31220 combination zp[2]:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#1 wrap_y::y#0 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#2 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] Uplifting [divr16u] best 31010 combination zp[2]: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[2]: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[2]:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:171 [ divr16u::return#2 ] zp[2]:175 [ divr16u::return#3 ] -Uplifting [render_sine] best 30930 combination zp[2]:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:66 [ render_sine::$10 ] zp[2]:68 [ render_sine::$1 ] zp[2]:70 [ render_sine::sin_val#0 ] zp[2]:74 [ render_sine::$11 ] zp[2]:76 [ render_sine::$4 ] zp[2]:78 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_init] best 30420 combination zp[2]:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:191 [ bitmap_init::$5 ] zp[1]:192 [ bitmap_init::$6 ] zp[1]:189 [ bitmap_init::$7 ] +Uplifting [mulu16_sel] best 30994 combination zp[2]: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[4]:161 [ mulu16_sel::$0 ] zp[4]:165 [ mulu16_sel::$1 ] zp[2]:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:169 [ mulu16_sel::return#12 ] zp[2]:131 [ mulu16_sel::return#0 ] zp[2]:135 [ mulu16_sel::return#1 ] zp[2]:139 [ mulu16_sel::return#2 ] zp[2]:145 [ mulu16_sel::return#10 ] zp[2]:149 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s] best 30985 combination zp[4]:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:125 [ sin16s::$4 ] zp[2]:133 [ sin16s::x2#0 ] zp[2]:141 [ sin16s::x3_6#0 ] zp[2]:147 [ sin16s::x4#0 ] zp[2]:151 [ sin16s::x5#0 ] zp[2]:153 [ sin16s::x5_128#0 ] zp[2]:137 [ sin16s::x3#0 ] zp[2]:155 [ sin16s::usinx#1 ] zp[2]:129 [ sin16s::x1#0 ] zp[2]:98 [ sin16s::return#0 ] zp[2]:143 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [mul16s] best 30985 combination zp[4]:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:116 [ mul16s::$9 ] zp[2]:118 [ mul16s::$16 ] zp[4]:120 [ mul16s::return#0 ] zp[2]:100 [ mul16s::a#0 ] zp[4]:102 [ mul16s::return#2 ] +Uplifting [bitmap_plot] best 30916 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] zp[2]:84 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:86 [ bitmap_plot::plotter#1 ] zp[2]:7 [ bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ] zp[2]:82 [ bitmap_plot::plotter#0 ] +Uplifting [memset] best 30900 combination zp[2]:59 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:187 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:54 [ memset::num#2 ] zp[2]:56 [ memset::str#3 ] +Uplifting [render_sine] best 30820 combination zp[2]:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:66 [ render_sine::$10 ] zp[2]:68 [ render_sine::$1 ] zp[2]:70 [ render_sine::sin_val#0 ] zp[2]:74 [ render_sine::$11 ] zp[2]:76 [ render_sine::$4 ] zp[2]:78 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_init] best 30310 combination zp[2]:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:191 [ bitmap_init::$5 ] zp[1]:192 [ bitmap_init::$6 ] zp[1]:189 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [bitmap_plot] best 30353 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] zp[2]:7 [ bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ] zp[2]:84 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:86 [ bitmap_plot::plotter#1 ] zp[2]:82 [ bitmap_plot::plotter#0 ] -Uplifting [sin16s] best 30344 combination zp[4]:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:98 [ sin16s::return#0 ] zp[2]:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:125 [ sin16s::$4 ] zp[2]:133 [ sin16s::x2#0 ] zp[2]:141 [ sin16s::x3_6#0 ] zp[2]:147 [ sin16s::x4#0 ] zp[2]:151 [ sin16s::x5#0 ] zp[2]:153 [ sin16s::x5_128#0 ] zp[2]:137 [ sin16s::x3#0 ] zp[2]:155 [ sin16s::usinx#1 ] zp[2]:129 [ sin16s::x1#0 ] zp[2]:143 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen2] best 30344 combination zp[2]:11 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:106 [ sin16s_gen2::$6 ] zp[4]:13 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:110 [ sin16s_gen2::$9 ] zp[2]:17 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:94 [ sin16s_gen2::step#0 ] -Uplifting [mulu16_sel] best 30328 combination zp[2]: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[2]:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:131 [ mulu16_sel::return#0 ] zp[2]:135 [ mulu16_sel::return#1 ] zp[2]:139 [ mulu16_sel::return#2 ] zp[2]:145 [ mulu16_sel::return#10 ] zp[2]:149 [ mulu16_sel::return#11 ] zp[4]:161 [ mulu16_sel::$0 ] zp[4]:165 [ mulu16_sel::$1 ] zp[2]:169 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 30328 combination zp[4]:102 [ mul16s::return#2 ] zp[4]:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[4]:120 [ mul16s::return#0 ] zp[2]:116 [ mul16s::$9 ] zp[2]:118 [ mul16s::$16 ] zp[2]:100 [ mul16s::a#0 ] -Uplifting [memset] best 30312 combination zp[2]:59 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:187 [ memset::end#0 ] zp[2]:54 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:56 [ memset::str#3 ] -Uplifting [div32u16u] best 30312 combination zp[4]:90 [ div32u16u::return#2 ] zp[2]:177 [ div32u16u::quotient_lo#0 ] zp[4]:179 [ div32u16u::return#0 ] zp[2]:173 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 30312 combination zp[2]:185 [ rem16u#1 ] -Uplifting [bitmap_clear] best 30312 combination -Uplifting [main] best 30312 combination +Uplifting [sin16s_gen2] best 30310 combination zp[2]:11 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:106 [ sin16s_gen2::$6 ] zp[4]:13 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:110 [ sin16s_gen2::$9 ] zp[2]:17 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:94 [ sin16s_gen2::step#0 ] +Uplifting [div32u16u] best 30310 combination zp[2]:177 [ div32u16u::quotient_lo#0 ] zp[2]:173 [ div32u16u::quotient_hi#0 ] zp[4]:179 [ div32u16u::return#0 ] zp[4]:90 [ div32u16u::return#2 ] +Uplifting [] best 30310 combination zp[2]:185 [ rem16u#1 ] +Uplifting [bitmap_clear] best 30310 combination +Uplifting [main] best 30310 combination Attempting to uplift remaining variables inzp[1]:191 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 30252 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 30250 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:192 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 30192 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 30190 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:189 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 30192 combination zp[1]:189 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 30190 combination zp[1]:189 [ bitmap_init::$7 ] Coalescing zero page register [ zp[2]:4 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] ] with [ zp[2]:7 [ bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:155 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]: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[2]:137 [ sin16s::x3#0 ] ] - score: 2 @@ -6302,11 +6298,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 - lda.z x - // [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuxx=_lo_vwuz1 + ldx.z x + // [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -7716,10 +7711,10 @@ FINAL SYMBOL TABLE (byte) bitmap_clear::fgcol (byte*) bitmap_gfx (void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:38 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:38 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -7728,36 +7723,36 @@ FINAL SYMBOL TABLE (label) bitmap_init::@6 (label) bitmap_init::@return (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte*) bitmap_init::gfx (byte*) bitmap_init::screen (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:20 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:20 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:20 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:28 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:28 20002.0 +(byte~) bitmap_plot::$2 reg byte x 20002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:22 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:22 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:22 5000.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:22 15001.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:6 11.0 -(word) bitmap_plot::x#1 x zp[2]:6 11.0 -(word) bitmap_plot::x#2 x zp[2]:6 6.5 +(word) bitmap_plot::x#0 x zp[2]:6 1001.0 +(word) bitmap_plot::x#1 x zp[2]:6 1001.0 +(word) bitmap_plot::x#2 x zp[2]:6 5501.0 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 22.0 -(byte) bitmap_plot::y#1 reg byte x 22.0 -(byte) bitmap_plot::y#2 reg byte x 26.0 +(byte) bitmap_plot::y#0 reg byte x 2002.0 +(byte) bitmap_plot::y#1 reg byte x 2002.0 +(byte) bitmap_plot::y#2 reg byte x 22004.0 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } @@ -7770,15 +7765,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:36 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:36 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:28 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:28 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:24 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:24 4.0 +(dword) div32u16u::return#0 return zp[4]:24 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:24 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -7787,30 +7782,30 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:22 2.75 -(word) divr16u::dividend#3 dividend zp[2]:22 5.0 -(word) divr16u::dividend#5 dividend zp[2]:22 2.0 +(word) divr16u::dividend#0 dividend zp[2]:22 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:22 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:22 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:28 16.5 -(word) divr16u::quotient#2 quotient zp[2]:28 11.0 -(word) divr16u::quotient#3 quotient zp[2]:28 2.75 +(word) divr16u::quotient#1 quotient zp[2]:28 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:28 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:28 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:18 8.25 -(word) divr16u::rem#1 rem zp[2]:18 22.0 -(word) divr16u::rem#10 rem zp[2]:18 4.0 -(word) divr16u::rem#11 rem zp[2]:18 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:18 22.0 -(word) divr16u::rem#4 rem zp[2]:18 4.0 -(word) divr16u::rem#5 rem zp[2]:18 24.0 -(word) divr16u::rem#6 rem zp[2]:18 11.0 +(word) divr16u::rem#0 rem zp[2]:18 75000.75 +(word) divr16u::rem#1 rem zp[2]:18 200002.0 +(word) divr16u::rem#10 rem zp[2]:18 11002.0 +(word) divr16u::rem#11 rem zp[2]:18 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:18 200002.0 +(word) divr16u::rem#4 rem zp[2]:18 2002.0 +(word) divr16u::rem#5 rem zp[2]:18 210003.0 +(word) divr16u::rem#6 rem zp[2]:18 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:28 5.285714285714286 -(word) divr16u::return#2 return zp[2]:28 4.0 -(word) divr16u::return#3 return zp[2]:28 4.0 +(word) divr16u::return#0 return zp[2]:28 43143.57142857143 +(word) divr16u::return#2 return zp[2]:28 2002.0 +(word) divr16u::return#3 return zp[2]:28 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -7836,97 +7831,97 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:22 22.0 -(byte*) memset::dst#2 dst zp[2]:22 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:22 4.0 +(byte*) memset::dst#1 dst zp[2]:22 20002.0 +(byte*) memset::dst#2 dst zp[2]:22 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:22 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:20 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:20 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:20 2.0 +(word) memset::num#2 num zp[2]:20 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:22 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$16 zp[2]:34 4.0 -(word~) mul16s::$9 zp[2]:34 4.0 +(word~) mul16s::$16 zp[2]:34 20002.0 +(word~) mul16s::$9 zp[2]:34 20002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 (label) mul16s::@4 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:22 2.6 +(signed word) mul16s::a#0 a zp[2]:22 2200.4 (signed word) mul16s::b (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:8 2.0 -(dword) mul16s::m#1 m zp[4]:8 4.0 -(dword) mul16s::m#4 m zp[4]:8 4.0 +(dword) mul16s::m#0 m zp[4]:8 10001.0 +(dword) mul16s::m#1 m zp[4]:8 20002.0 +(dword) mul16s::m#4 m zp[4]:8 20002.0 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:8 4.333333333333333 -(signed dword) mul16s::return#2 return zp[4]:8 22.0 +(signed dword) mul16s::return#0 return zp[4]:8 3667.333333333333 +(signed dword) mul16s::return#2 return zp[4]:8 2002.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:18 101.0 -(word) mul16u::a#1 a zp[2]:18 4.0 -(word) mul16u::a#2 a zp[2]:18 2.0 -(word) mul16u::a#3 a zp[2]:18 67.66666666666666 -(word) mul16u::a#6 a zp[2]:18 3.0 +(word) mul16u::a#0 a zp[2]:18 1.00000001E8 +(word) mul16u::a#1 a zp[2]:18 20002.0 +(word) mul16u::a#2 a zp[2]:18 100001.0 +(word) mul16u::a#3 a zp[2]:18 6.683333416666667E7 +(word) mul16u::a#6 a zp[2]:18 555001.5 (word) mul16u::b -(word) mul16u::b#1 b zp[2]:12 4.0 -(word) mul16u::b#2 b zp[2]:12 2.0 +(word) mul16u::b#1 b zp[2]:12 200002.0 +(word) mul16u::b#2 b zp[2]:12 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:14 4.0 -(dword) mul16u::mb#1 mb zp[4]:14 202.0 -(dword) mul16u::mb#2 mb zp[4]:14 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:14 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:14 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:14 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:8 202.0 -(dword) mul16u::res#2 res zp[4]:8 43.85714285714286 -(dword) mul16u::res#6 res zp[4]:8 101.0 +(dword) mul16u::res#1 res zp[4]:8 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:8 4.287285785714286E7 +(dword) mul16u::res#6 res zp[4]:8 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:8 4.0 -(dword) mul16u::return#3 return zp[4]:8 4.0 +(dword) mul16u::return#2 return zp[4]:8 20002.0 +(dword) mul16u::return#3 return zp[4]:8 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:8 4.0 -(dword~) mulu16_sel::$1 zp[4]:8 4.0 +(dword~) mulu16_sel::$0 zp[4]:8 200002.0 +(dword~) mulu16_sel::$1 zp[4]:8 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:36 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:28 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:28 4.0 -(word) mulu16_sel::return#11 return zp[2]:36 4.0 -(word) mulu16_sel::return#12 return zp[2]:36 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:36 4.0 +(word) mulu16_sel::return#0 return zp[2]:36 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:28 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:28 20002.0 +(word) mulu16_sel::return#11 return zp[2]:36 20002.0 +(word) mulu16_sel::return#12 return zp[2]:36 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:36 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:28 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:28 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:28 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:28 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:28 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:28 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:28 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:28 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:28 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:28 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:28 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:28 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:12 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:12 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:12 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:12 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:12 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:12 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:12 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:12 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:12 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:12 70002.5 (word) rem16u -(word) rem16u#1 rem16u zp[2]:18 0.8 +(word) rem16u#1 rem16u zp[2]:18 2200.4 (void()) render_sine() -(signed word*~) render_sine::$1 zp[2]:12 22.0 -(word~) render_sine::$10 zp[2]:12 22.0 -(word~) render_sine::$11 zp[2]:12 22.0 -(signed word*~) render_sine::$4 zp[2]:12 22.0 +(signed word*~) render_sine::$1 zp[2]:12 2002.0 +(word~) render_sine::$10 zp[2]:12 2002.0 +(word~) render_sine::$11 zp[2]:12 2002.0 +(signed word*~) render_sine::$4 zp[2]:12 2002.0 (label) render_sine::@1 (label) render_sine::@2 (label) render_sine::@3 @@ -7937,23 +7932,23 @@ FINAL SYMBOL TABLE (label) render_sine::@8 (label) render_sine::@return (signed word) render_sine::sin2_val -(signed word) render_sine::sin2_val#0 sin2_val zp[2]:12 22.0 +(signed word) render_sine::sin2_val#0 sin2_val zp[2]:12 2002.0 (word) render_sine::sin_idx -(word) render_sine::sin_idx#1 sin_idx zp[2]:20 22.0 -(word) render_sine::sin_idx#2 sin_idx zp[2]:20 2.1153846153846154 +(word) render_sine::sin_idx#1 sin_idx zp[2]:20 2002.0 +(word) render_sine::sin_idx#2 sin_idx zp[2]:20 192.5 (signed word) render_sine::sin_val -(signed word) render_sine::sin_val#0 sin_val zp[2]:12 22.0 +(signed word) render_sine::sin_val#0 sin_val zp[2]:12 2002.0 (word) render_sine::xpos -(word) render_sine::xpos#1 xpos zp[2]:6 11.0 -(word) render_sine::xpos#3 xpos zp[2]:6 2.0 -(word) render_sine::xpos#9 xpos zp[2]:6 11.0 +(word) render_sine::xpos#1 xpos zp[2]:6 1001.0 +(word) render_sine::xpos#3 xpos zp[2]:6 182.0 +(word) render_sine::xpos#9 xpos zp[2]:6 1001.0 (byte) render_sine::ypos -(byte) render_sine::ypos#0 reg byte x 11.0 +(byte) render_sine::ypos#0 reg byte x 1001.0 (byte) render_sine::ypos2 -(byte) render_sine::ypos2#0 reg byte x 11.0 +(byte) render_sine::ypos2#0 reg byte x 1001.0 (const signed word*) sin[(number) $200] = { fill( $200, 0) } (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:30 4.0 +(dword~) sin16s::$4 zp[4]:30 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -7968,39 +7963,39 @@ FINAL SYMBOL TABLE (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:22 22.0 -(signed word) sin16s::return#1 return zp[2]:22 5.0 -(signed word) sin16s::return#5 return zp[2]:22 4.0 +(signed word) sin16s::return#0 return zp[2]:22 2002.0 +(signed word) sin16s::return#1 return zp[2]:22 7001.0 +(signed word) sin16s::return#5 return zp[2]:22 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:22 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:22 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:22 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:22 1.0 +(word) sin16s::usinx#0 usinx zp[2]:22 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:22 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:14 8.5 -(dword) sin16s::x#1 x zp[4]:14 4.0 -(dword) sin16s::x#2 x zp[4]:14 4.0 -(dword) sin16s::x#4 x zp[4]:14 5.0 -(dword) sin16s::x#6 x zp[4]:14 6.0 +(dword) sin16s::x#0 x zp[4]:14 15502.0 +(dword) sin16s::x#1 x zp[4]:14 20002.0 +(dword) sin16s::x#2 x zp[4]:14 20002.0 +(dword) sin16s::x#4 x zp[4]:14 25002.5 +(dword) sin16s::x#6 x zp[4]:14 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:34 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:34 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:28 4.0 +(word) sin16s::x2#0 x2 zp[2]:28 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:28 1.0 +(word) sin16s::x3#0 x3 zp[2]:28 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:36 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:36 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:28 4.0 +(word) sin16s::x4#0 x4 zp[2]:28 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:36 4.0 +(word) sin16s::x5#0 x5 zp[2]:36 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:36 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:36 20002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) -(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0 -(word~) sin16s_gen2::$9 zp[2]:28 11.0 +(signed dword~) sin16s_gen2::$6 zp[4]:8 2002.0 +(word~) sin16s_gen2::$9 zp[2]:28 1001.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -8010,22 +8005,22 @@ FINAL SYMBOL TABLE (signed word) sin16s_gen2::ampl (const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0 (word) sin16s_gen2::i -(word) sin16s_gen2::i#1 i zp[2]:20 22.0 -(word) sin16s_gen2::i#2 i zp[2]:20 2.5384615384615383 +(word) sin16s_gen2::i#1 i zp[2]:20 2002.0 +(word) sin16s_gen2::i#2 i zp[2]:20 231.0 (signed word) sin16s_gen2::max (const signed word) sin16s_gen2::max#0 max = (signed word) $140 (signed word) sin16s_gen2::min (const signed word) sin16s_gen2::min#0 min = (signed word) -$140 (signed word) sin16s_gen2::offs (signed word*) sin16s_gen2::sintab -(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:6 7.333333333333333 -(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:6 3.0 +(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:6 667.3333333333334 +(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:6 273.0 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:24 0.8666666666666666 +(dword) sin16s_gen2::step#0 step zp[4]:24 73.46666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x -(dword) sin16s_gen2::x#1 x zp[4]:2 11.0 -(dword) sin16s_gen2::x#2 x zp[4]:2 2.75 +(dword) sin16s_gen2::x#1 x zp[4]:2 1001.0 +(dword) sin16s_gen2::x#2 x zp[4]:2 250.25 (const signed word*) sin2[(number) $200] = kickasm {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } @@ -8038,17 +8033,17 @@ FINAL SYMBOL TABLE (label) wrap_y::@5 (label) wrap_y::@return (byte) wrap_y::return -(byte) wrap_y::return#0 reg byte a 22.0 -(byte) wrap_y::return#1 reg byte a 22.0 -(byte) wrap_y::return#2 reg byte a 6.0 +(byte) wrap_y::return#0 reg byte a 2002.0 +(byte) wrap_y::return#1 reg byte a 2002.0 +(byte) wrap_y::return#2 reg byte a 3000.75 (signed word) wrap_y::y -(signed word) wrap_y::y#0 y zp[2]:12 22.0 -(signed word) wrap_y::y#1 y zp[2]:12 22.0 -(signed word) wrap_y::y#2 y zp[2]:12 202.0 -(signed word) wrap_y::y#3 y zp[2]:12 202.0 -(signed word) wrap_y::y#4 y zp[2]:12 203.0 -(signed word) wrap_y::y#6 y zp[2]:12 202.0 -(signed word) wrap_y::y#9 y zp[2]:12 24.0 +(signed word) wrap_y::y#0 y zp[2]:12 2002.0 +(signed word) wrap_y::y#1 y zp[2]:12 2002.0 +(signed word) wrap_y::y#2 y zp[2]:12 2000002.0 +(signed word) wrap_y::y#3 y zp[2]:12 2000002.0 +(signed word) wrap_y::y#4 y zp[2]:12 2005002.5 +(signed word) wrap_y::y#6 y zp[2]:12 2000002.0 +(signed word) wrap_y::y#9 y zp[2]:12 12003.0 reg byte x [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ] zp[4]:2 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] @@ -8070,7 +8065,7 @@ reg byte x [ render_sine::ypos#0 ] reg byte a [ wrap_y::return#1 ] reg byte x [ render_sine::ypos2#0 ] zp[2]:22 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ wrap_y::return#2 ] zp[4]:24 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] zp[2]:28 [ sin16s_gen2::$9 bitmap_plot::$1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 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 ] @@ -8087,7 +8082,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 25036 +Score: 25034 // File Comments // Generate a big sinus and plot it on a bitmap @@ -8413,12 +8408,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a +Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$b867 } always clobbers reg byte a reg byte x reg byte y -Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$ba28 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$e26b } always clobbers reg byte a reg byte x reg byte y -Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$bb0f } always clobbers reg byte a reg byte x reg byte y -Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldymemLo ldamemHi jsr$b391 } always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:16 [ gen_sintab::min#2 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ gen_sintab::min#2 ] -Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldxmemLo ldymemHi jsr$bbd4 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$b853 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$bc0f } always clobbers reg byte a reg byte x -Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a +Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:70 [ gen_chargen_sprite::ch#0 ] -Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a -Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a -Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a -Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a +Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] { } ) always clobbers reg byte a +Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a +Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] Removing always clobbered register reg byte a as potential for zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:39 [ gen_chargen_sprite::c#3 ] Removing always clobbered register reg byte a as potential for zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] Removing always clobbered register reg byte a as potential for zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] -Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte y +Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] @@ -5049,159 +5040,141 @@ Removing always clobbered register reg byte y as potential for zp[1]:38 [ gen_ch Removing always clobbered register reg byte y as potential for zp[1]:39 [ gen_chargen_sprite::c#3 ] Removing always clobbered register reg byte y as potential for zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] Removing always clobbered register reg byte y as potential for zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte y -Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte y -Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a -Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a -Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte y +Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte y +Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] Removing always clobbered register reg byte a as potential for zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] Removing always clobbered register reg byte a as potential for zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] -Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a -Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a -Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a -Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ) always clobbers reg byte a -Statement [18] (byte~) anim::$10 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a -Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a -Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a -Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a -Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a -Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a -Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a -Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a -Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a -Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ) always clobbers reg byte a -Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ) always clobbers reg byte a -Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a -Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ) always clobbers reg byte a -Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ) always clobbers reg byte a -Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte y -Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] ) always clobbers reg byte a -Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y +Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] { } ) always clobbers reg byte a +Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] { } ) always clobbers reg byte a +Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] { } ) always clobbers reg byte a +Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] { } ) always clobbers reg byte a +Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] { } ) always clobbers reg byte a +Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] { } ) always clobbers reg byte a +Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] { } ) always clobbers reg byte a +Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] { } main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] { } main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } } main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } } ) always clobbers reg byte a +Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } } ) always clobbers reg byte a +Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a +Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } } ) always clobbers reg byte a +Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } } ) always clobbers reg byte a +Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] { } ) always clobbers reg byte a +Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte y +Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] { } ) always clobbers reg byte a +Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] { } ) always clobbers reg byte a reg byte y +Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] { } ) always clobbers reg byte a reg byte y Statement asm { jsr$b1aa stymemLo stamemHi } always clobbers reg byte a reg byte x reg byte y -Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a -Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a -Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a +Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$b867 } always clobbers reg byte a reg byte x reg byte y -Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$ba28 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$e26b } always clobbers reg byte a reg byte x reg byte y -Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$bb0f } always clobbers reg byte a reg byte x reg byte y -Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldymemLo ldamemHi jsr$b391 } always clobbers reg byte a reg byte x reg byte y -Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldxmemLo ldymemHi jsr$bbd4 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$b853 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$bc0f } always clobbers reg byte a reg byte x -Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a -Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a -Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a -Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a -Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a +Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] { } ) always clobbers reg byte a +Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a -Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y -Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a -Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a -Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a -Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a -Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a -Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ) always clobbers reg byte a -Statement [18] (byte~) anim::$10 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a -Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a -Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a -Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a -Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a -Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a -Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a -Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a -Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a -Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ) always clobbers reg byte a -Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ) always clobbers reg byte a -Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a -Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ) always clobbers reg byte a -Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ) always clobbers reg byte a -Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte y -Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] ) always clobbers reg byte a -Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] ) always clobbers reg byte a reg byte y -Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y +Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] { } ) always clobbers reg byte a +Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] { } ) always clobbers reg byte a +Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] { } ) always clobbers reg byte a +Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] { } ) always clobbers reg byte a +Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] { } ) always clobbers reg byte a +Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] { } ) always clobbers reg byte a +Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] { } ) always clobbers reg byte a +Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] { } ) always clobbers reg byte a +Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] { } main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] { } main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } } main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } } ) always clobbers reg byte a +Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } } ) always clobbers reg byte a +Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a +Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } } ) always clobbers reg byte a +Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } } ) always clobbers reg byte a +Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] { } ) always clobbers reg byte a +Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte y +Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] { } ) always clobbers reg byte a +Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] { } ) always clobbers reg byte a reg byte y +Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] { } main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] { } ) always clobbers reg byte a reg byte y Statement asm { jsr$b1aa stymemLo stamemHi } always clobbers reg byte a reg byte x reg byte y -Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a -Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a -Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a +Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] { } main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$b867 } always clobbers reg byte a reg byte x reg byte y -Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$ba28 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$e26b } always clobbers reg byte a reg byte x reg byte y -Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$bb0f } always clobbers reg byte a reg byte x reg byte y -Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldymemLo ldamemHi jsr$b391 } always clobbers reg byte a reg byte x reg byte y -Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldxmemLo ldymemHi jsr$bbd4 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$b853 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$bc0f } always clobbers reg byte a reg byte x -Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a -Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a -Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a -Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a -Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a -Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a -Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y -Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a -Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a -Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a -Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a -Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a +Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] { } ) always clobbers reg byte a +Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a reg byte y +Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } } ) always clobbers reg byte a +Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] { } ) always clobbers reg byte a +Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] { } ) always clobbers reg byte a +Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] { } ) always clobbers reg byte a +Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] { } ) always clobbers reg byte a +Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] : zp[1]:4 , reg byte x , reg byte y , @@ -5262,19 +5235,19 @@ Potential registers zp[1]:78 [ gen_chargen_sprite::$6 ] : zp[1]:78 , reg byte a Potential registers zp[1]:79 [ place_sprites::j2#1 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [gen_chargen_sprite] 34,904.9: zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 33,404.14: zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] 25,903.4: zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] 20,002: zp[1]:78 [ gen_chargen_sprite::$6 ] 17,001.7: zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 2,002: zp[1]:77 [ gen_chargen_sprite::$3 ] 1,612.72: zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 1,051.92: zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 769.31: zp[1]:39 [ gen_chargen_sprite::c#3 ] 164.67: zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 5.5: zp[1]:70 [ gen_chargen_sprite::ch#0 ] 4: zp[2]:71 [ gen_chargen_sprite::$0 ] 4: zp[2]:73 [ gen_chargen_sprite::$1 ] 3.68: zp[2]:75 [ gen_chargen_sprite::chargen#0 ] -Uplift Scope [anim] 509.17: zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 482: zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 202: zp[1]:53 [ anim::$8 ] 202: zp[1]:54 [ anim::$10 ] 163.38: zp[1]:9 [ anim::j#2 anim::j#1 ] 114.6: zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] 101: zp[1]:52 [ anim::$7 ] 92.58: zp[1]:6 [ anim::j2#2 anim::j2#1 ] 75.75: zp[2]:50 [ anim::x#0 ] -Uplift Scope [place_sprites] 22: zp[1]:79 [ place_sprites::j2#1 ] 20.9: zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] 18.7: zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 12.83: zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 9.17: zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 9.11: zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplift Scope [setFAC] 62: zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] 4: zp[1]:66 [ setFAC::prepareMEM1_$0 ] 4: zp[1]:67 [ setFAC::prepareMEM1_$1 ] -Uplift Scope [gen_sintab] 23.76: zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] 22: zp[1]:59 [ gen_sintab::$25 ] 11: zp[2]:57 [ gen_sintab::$24 ] 0.22: zp[1]:17 [ gen_sintab::length#10 ] 0.22: zp[2]:19 [ gen_sintab::sintab#13 ] 0: zp[1]:15 [ gen_sintab::max#2 ] 0: zp[1]:16 [ gen_sintab::min#2 ] -Uplift Scope [] 12.48: zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 11.97: zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] 8.17: zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] 6.54: zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] -Uplift Scope [gen_sprites] 23.1: zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] 15.58: zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Uplift Scope [clear_screen] 36.67: zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplift Scope [init] 31.17: zp[1]:10 [ init::i#2 init::i#1 ] -Uplift Scope [getFAC] 22: zp[2]:55 [ getFAC::return#2 ] 4.33: zp[2]:60 [ getFAC::return#0 ] -Uplift Scope [setMEMtoFAC] 4: zp[1]:68 [ setMEMtoFAC::prepareMEM1_$0 ] 4: zp[1]:69 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:31 [ setMEMtoFAC::mem#5 ] -Uplift Scope [divMEMbyFAC] 4: zp[1]:64 [ divMEMbyFAC::prepareMEM1_$0 ] 4: zp[1]:65 [ divMEMbyFAC::prepareMEM1_$1 ] 0: zp[2]:27 [ divMEMbyFAC::mem#2 ] -Uplift Scope [mulFACbyMEM] 4: zp[1]:62 [ mulFACbyMEM::prepareMEM1_$0 ] 4: zp[1]:63 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:25 [ mulFACbyMEM::mem#2 ] +Uplift Scope [gen_chargen_sprite] 3,490,000,004.9: zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 3,339,568,340.14: zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] 2,590,000,003.4: zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] 2,000,000,002: zp[1]:78 [ gen_chargen_sprite::$6 ] 1,700,000,001.7: zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 200,000,002: zp[1]:77 [ gen_chargen_sprite::$3 ] 161,111,112.72: zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 104,901,963.69: zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 76,923,077: zp[1]:39 [ gen_chargen_sprite::c#3 ] 16,304,349.46: zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 360,714.36: zp[2]:75 [ gen_chargen_sprite::chargen#0 ] 200,002: zp[2]:71 [ gen_chargen_sprite::$0 ] 200,002: zp[2]:73 [ gen_chargen_sprite::$1 ] 5,000.5: zp[1]:70 [ gen_chargen_sprite::ch#0 ] +Uplift Scope [anim] 502,090.42: zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 476,130.88: zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 200,002: zp[1]:53 [ anim::$8 ] 200,002: zp[1]:54 [ anim::$10 ] 161,766.32: zp[1]:9 [ anim::j#2 anim::j#1 ] 113,401.2: zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] 100,001: zp[1]:52 [ anim::$7 ] 91,667.58: zp[1]:6 [ anim::j2#2 anim::j2#1 ] 75,000.75: zp[2]:50 [ anim::x#0 ] +Uplift Scope [setFAC] 200,002: zp[1]:66 [ setFAC::prepareMEM1_$0 ] 200,002: zp[1]:67 [ setFAC::prepareMEM1_$1 ] 118,010: zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] +Uplift Scope [] 273,556.02: zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] 196,585.52: zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] 1,413.33: zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 1,296.63: zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplift Scope [setMEMtoFAC] 200,002: zp[1]:68 [ setMEMtoFAC::prepareMEM1_$0 ] 200,002: zp[1]:69 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:31 [ setMEMtoFAC::mem#5 ] +Uplift Scope [divMEMbyFAC] 200,002: zp[1]:64 [ divMEMbyFAC::prepareMEM1_$0 ] 200,002: zp[1]:65 [ divMEMbyFAC::prepareMEM1_$1 ] 0: zp[2]:27 [ divMEMbyFAC::mem#2 ] +Uplift Scope [mulFACbyMEM] 200,002: zp[1]:62 [ mulFACbyMEM::prepareMEM1_$0 ] 200,002: zp[1]:63 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:25 [ mulFACbyMEM::mem#2 ] +Uplift Scope [place_sprites] 20,002: zp[1]:79 [ place_sprites::j2#1 ] 19,001.9: zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] 17,001.7: zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 11,667.83: zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 8,334.17: zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 8,286.54: zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplift Scope [getFAC] 36,667.33: zp[2]:60 [ getFAC::return#0 ] 20,002: zp[2]:55 [ getFAC::return#2 ] +Uplift Scope [gen_sintab] 21,602.16: zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] 20,002: zp[1]:59 [ gen_sintab::$25 ] 10,001: zp[2]:57 [ gen_sintab::$24 ] 204.1: zp[1]:17 [ gen_sintab::length#10 ] 204.1: zp[2]:19 [ gen_sintab::sintab#13 ] 0: zp[1]:15 [ gen_sintab::max#2 ] 0: zp[1]:16 [ gen_sintab::min#2 ] +Uplift Scope [gen_sprites] 21,002.1: zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] 14,168.08: zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] +Uplift Scope [clear_screen] 33,336.67: zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] +Uplift Scope [init] 2,836.17: zp[1]:10 [ init::i#2 init::i#1 ] Uplift Scope [setARGtoFAC] Uplift Scope [addMEMtoFAC] Uplift Scope [subFACfromARG] @@ -5284,22 +5257,22 @@ Uplift Scope [main] Uplift Scope [progress_init] Uplift Scope [progress_inc] -Uplifting [gen_chargen_sprite] best 1064171 combination zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp[1]:39 [ gen_chargen_sprite::c#3 ] zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] zp[1]:70 [ gen_chargen_sprite::ch#0 ] zp[2]:71 [ gen_chargen_sprite::$0 ] zp[2]:73 [ gen_chargen_sprite::$1 ] zp[2]:75 [ gen_chargen_sprite::chargen#0 ] +Uplifting [gen_chargen_sprite] best 1064171 combination zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp[1]:39 [ gen_chargen_sprite::c#3 ] zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] zp[2]:75 [ gen_chargen_sprite::chargen#0 ] zp[2]:71 [ gen_chargen_sprite::$0 ] zp[2]:73 [ gen_chargen_sprite::$1 ] zp[1]:70 [ gen_chargen_sprite::ch#0 ] Limited combination testing to 100 combinations of 9216 possible. Uplifting [anim] best 1062971 combination zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] zp[1]:9 [ anim::j#2 anim::j#1 ] zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] zp[1]:52 [ anim::$7 ] zp[1]:6 [ anim::j2#2 anim::j2#1 ] zp[2]:50 [ anim::x#0 ] Limited combination testing to 100 combinations of 19440 possible. -Uplifting [place_sprites] best 1062911 combination reg byte x [ place_sprites::j2#1 ] zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [setFAC] best 1062959 combination reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] +Uplifting [] best 1062959 combination zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [setMEMtoFAC] best 1062947 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:31 [ setMEMtoFAC::mem#5 ] +Uplifting [divMEMbyFAC] best 1062935 combination reg byte a [ divMEMbyFAC::prepareMEM1_$0 ] reg byte a [ divMEMbyFAC::prepareMEM1_$1 ] zp[2]:27 [ divMEMbyFAC::mem#2 ] +Uplifting [mulFACbyMEM] best 1062923 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:25 [ mulFACbyMEM::mem#2 ] +Uplifting [place_sprites] best 1062863 combination reg byte x [ place_sprites::j2#1 ] zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [setFAC] best 1062899 combination zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] -Uplifting [gen_sintab] best 1062832 combination zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte a [ gen_sintab::$25 ] zp[2]:57 [ gen_sintab::$24 ] zp[1]:17 [ gen_sintab::length#10 ] zp[2]:19 [ gen_sintab::sintab#13 ] reg byte x [ gen_sintab::max#2 ] zp[1]:16 [ gen_sintab::min#2 ] -Uplifting [] best 1062832 combination zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] -Uplifting [gen_sprites] best 1062832 combination zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Uplifting [clear_screen] best 1062832 combination zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplifting [init] best 1062682 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [getFAC] best 1062682 combination zp[2]:55 [ getFAC::return#2 ] zp[2]:60 [ getFAC::return#0 ] -Uplifting [setMEMtoFAC] best 1062670 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:31 [ setMEMtoFAC::mem#5 ] -Uplifting [divMEMbyFAC] best 1062658 combination reg byte a [ divMEMbyFAC::prepareMEM1_$0 ] reg byte a [ divMEMbyFAC::prepareMEM1_$1 ] zp[2]:27 [ divMEMbyFAC::mem#2 ] -Uplifting [mulFACbyMEM] best 1062646 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:25 [ mulFACbyMEM::mem#2 ] +Uplifting [getFAC] best 1062863 combination zp[2]:60 [ getFAC::return#0 ] zp[2]:55 [ getFAC::return#2 ] +Uplifting [gen_sintab] best 1062796 combination zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte a [ gen_sintab::$25 ] zp[2]:57 [ gen_sintab::$24 ] zp[1]:17 [ gen_sintab::length#10 ] zp[2]:19 [ gen_sintab::sintab#13 ] reg byte x [ gen_sintab::max#2 ] zp[1]:16 [ gen_sintab::min#2 ] +Uplifting [gen_sprites] best 1062796 combination zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] +Uplifting [clear_screen] best 1062796 combination zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] +Uplifting [init] best 1062646 combination reg byte x [ init::i#2 init::i#1 ] Uplifting [setARGtoFAC] best 1062646 combination Uplifting [addMEMtoFAC] best 1062646 combination Uplifting [subFACfromARG] best 1062646 combination @@ -5316,12 +5289,14 @@ Attempting to uplift remaining variables inzp[1]:37 [ gen_chargen_sprite::bits#2 Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] Attempting to uplift remaining variables inzp[1]:39 [ gen_chargen_sprite::c#3 ] Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:39 [ gen_chargen_sprite::c#3 ] +Attempting to uplift remaining variables inzp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] +Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Attempting to uplift remaining variables inzp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] Uplifting [anim] best 1062646 combination zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] Attempting to uplift remaining variables inzp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] Uplifting [anim] best 1062646 combination zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] -Attempting to uplift remaining variables inzp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] +Attempting to uplift remaining variables inzp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] +Uplifting [] best 1062646 combination zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] Attempting to uplift remaining variables inzp[1]:9 [ anim::j#2 anim::j#1 ] Uplifting [anim] best 1062646 combination zp[1]:9 [ anim::j#2 anim::j#1 ] Attempting to uplift remaining variables inzp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] @@ -5340,18 +5315,16 @@ Attempting to uplift remaining variables inzp[1]:45 [ place_sprites::spr_id#2 pl Uplifting [place_sprites] best 1062646 combination zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] Attempting to uplift remaining variables inzp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] Uplifting [place_sprites] best 1062646 combination zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] -Attempting to uplift remaining variables inzp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -Uplifting [] best 1062646 combination zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -Attempting to uplift remaining variables inzp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [] best 1062646 combination zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Attempting to uplift remaining variables inzp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Uplifting [place_sprites] best 1062646 combination zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Attempting to uplift remaining variables inzp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] Uplifting [place_sprites] best 1062646 combination zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] -Attempting to uplift remaining variables inzp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] -Uplifting [] best 1062646 combination zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] Attempting to uplift remaining variables inzp[1]:70 [ gen_chargen_sprite::ch#0 ] Uplifting [gen_chargen_sprite] best 1062615 combination reg byte x [ gen_chargen_sprite::ch#0 ] +Attempting to uplift remaining variables inzp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] +Uplifting [] best 1062615 combination zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] +Attempting to uplift remaining variables inzp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [] best 1062615 combination zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Attempting to uplift remaining variables inzp[1]:17 [ gen_sintab::length#10 ] Uplifting [gen_sintab] best 1062615 combination zp[1]:17 [ gen_sintab::length#10 ] Attempting to uplift remaining variables inzp[1]:16 [ gen_sintab::min#2 ] @@ -7129,9 +7102,9 @@ FINAL SYMBOL TABLE (label) addMEMtoFAC::prepareMEM1 (word) addMEMtoFAC::prepareMEM1_mem (void()) anim() -(byte~) anim::$10 reg byte a 202.0 -(byte~) anim::$7 zp[1]:10 101.0 -(byte~) anim::$8 reg byte a 202.0 +(byte~) anim::$10 reg byte a 200002.0 +(byte~) anim::$7 zp[1]:10 100001.0 +(byte~) anim::$8 reg byte a 200002.0 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -7144,49 +7117,49 @@ FINAL SYMBOL TABLE (label) anim::@9 (label) anim::@return (byte) anim::j -(byte) anim::j#1 j zp[1]:8 151.5 -(byte) anim::j#2 j zp[1]:8 11.882352941176471 +(byte) anim::j#1 j zp[1]:8 150001.5 +(byte) anim::j#2 j zp[1]:8 11764.823529411764 (byte) anim::j2 -(byte) anim::j2#1 j2 zp[1]:11 67.33333333333333 -(byte) anim::j2#2 j2 zp[1]:11 25.25 +(byte) anim::j2#1 j2 zp[1]:11 66667.33333333333 +(byte) anim::j2#2 j2 zp[1]:11 25000.25 (word) anim::x -(word) anim::x#0 x zp[2]:16 75.75 +(word) anim::x#0 x zp[2]:16 75000.75 (byte) anim::x_msb -(byte) anim::x_msb#1 x_msb zp[1]:10 13.6 -(byte) anim::x_msb#2 x_msb zp[1]:10 101.0 +(byte) anim::x_msb#1 x_msb zp[1]:10 13400.2 +(byte) anim::x_msb#2 x_msb zp[1]:10 100001.0 (byte) anim::xidx -(byte) anim::xidx#0 xidx zp[1]:9 2.0 -(byte) anim::xidx#1 xidx zp[1]:9 202.0 -(byte) anim::xidx#2 xidx zp[1]:9 202.0 -(byte) anim::xidx#3 xidx zp[1]:9 38.125 -(byte) anim::xidx#5 xidx zp[1]:9 37.875 +(byte) anim::xidx#0 xidx zp[1]:9 1001.0 +(byte) anim::xidx#1 xidx zp[1]:9 200002.0 +(byte) anim::xidx#2 xidx zp[1]:9 200002.0 +(byte) anim::xidx#3 xidx zp[1]:9 37625.5 +(byte) anim::xidx#5 xidx zp[1]:9 37500.375 (byte) anim::yidx -(byte) anim::yidx#0 yidx zp[1]:4 4.0 -(byte) anim::yidx#1 yidx zp[1]:4 202.0 -(byte) anim::yidx#2 yidx zp[1]:4 202.0 -(byte) anim::yidx#3 yidx zp[1]:4 25.416666666666664 -(byte) anim::yidx#6 yidx zp[1]:4 75.75 +(byte) anim::yidx#0 yidx zp[1]:4 2002.0 +(byte) anim::yidx#1 yidx zp[1]:4 200002.0 +(byte) anim::yidx#2 yidx zp[1]:4 200002.0 +(byte) anim::yidx#3 yidx zp[1]:4 25083.666666666664 +(byte) anim::yidx#6 yidx zp[1]:4 75000.75 (void()) clear_screen() (label) clear_screen::@1 (label) clear_screen::@2 (label) clear_screen::@return (byte*) clear_screen::sc -(byte*) clear_screen::sc#1 sc zp[2]:16 22.0 -(byte*) clear_screen::sc#2 sc zp[2]:16 14.666666666666666 +(byte*) clear_screen::sc#1 sc zp[2]:16 20002.0 +(byte*) clear_screen::sc#2 sc zp[2]:16 13334.666666666666 (void()) divMEMbyFAC((byte*) divMEMbyFAC::mem) (label) divMEMbyFAC::@1 (label) divMEMbyFAC::@return (byte*) divMEMbyFAC::mem (byte*) divMEMbyFAC::mem#2 mem zp[2]:19 (label) divMEMbyFAC::prepareMEM1 -(byte~) divMEMbyFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) divMEMbyFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) divMEMbyFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) divMEMbyFAC::prepareMEM1_$1 reg byte a 200002.0 (word) divMEMbyFAC::prepareMEM1_mem (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) -(word~) gen_chargen_sprite::$0 zp[2]:21 4.0 -(word~) gen_chargen_sprite::$1 zp[2]:21 4.0 -(byte~) gen_chargen_sprite::$3 reg byte a 2002.0 -(byte~) gen_chargen_sprite::$6 reg byte a 20002.0 +(word~) gen_chargen_sprite::$0 zp[2]:21 200002.0 +(word~) gen_chargen_sprite::$1 zp[2]:21 200002.0 +(byte~) gen_chargen_sprite::$3 reg byte a 2.00000002E8 +(byte~) gen_chargen_sprite::$6 reg byte a 2.000000002E9 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 (label) gen_chargen_sprite::@2 @@ -7199,45 +7172,45 @@ FINAL SYMBOL TABLE (label) gen_chargen_sprite::@9 (label) gen_chargen_sprite::@return (byte) gen_chargen_sprite::b -(byte) gen_chargen_sprite::b#1 reg byte x 15001.5 -(byte) gen_chargen_sprite::b#2 reg byte x 2000.2 +(byte) gen_chargen_sprite::b#1 reg byte x 1.5000000015E9 +(byte) gen_chargen_sprite::b#2 reg byte x 2.000000002E8 (byte) gen_chargen_sprite::bits -(byte) gen_chargen_sprite::bits#0 bits zp[1]:10 202.0 -(byte) gen_chargen_sprite::bits#1 bits zp[1]:10 667.3333333333334 -(byte) gen_chargen_sprite::bits#2 bits zp[1]:10 182.58823529411765 +(byte) gen_chargen_sprite::bits#0 bits zp[1]:10 2.0000002E7 +(byte) gen_chargen_sprite::bits#1 bits zp[1]:10 6.6666667333333336E7 +(byte) gen_chargen_sprite::bits#2 bits zp[1]:10 1.8235294352941178E7 (byte) gen_chargen_sprite::c -(byte) gen_chargen_sprite::c#3 c zp[1]:12 769.3076923076923 +(byte) gen_chargen_sprite::c#3 c zp[1]:12 7.6923077E7 (byte) gen_chargen_sprite::ch -(byte) gen_chargen_sprite::ch#0 reg byte x 5.5 +(byte) gen_chargen_sprite::ch#0 reg byte x 5000.5 (byte*) gen_chargen_sprite::chargen -(byte*) gen_chargen_sprite::chargen#0 chargen zp[2]:21 3.678571428571429 +(byte*) gen_chargen_sprite::chargen#0 chargen zp[2]:21 360714.3571428571 (byte) gen_chargen_sprite::s_gen -(byte) gen_chargen_sprite::s_gen#1 s_gen zp[1]:15 10001.0 -(byte) gen_chargen_sprite::s_gen#3 s_gen zp[1]:15 21003.0 -(byte) gen_chargen_sprite::s_gen#5 s_gen zp[1]:15 400.4 -(byte) gen_chargen_sprite::s_gen#6 s_gen zp[1]:15 3500.5 +(byte) gen_chargen_sprite::s_gen#1 s_gen zp[1]:15 1.000000001E9 +(byte) gen_chargen_sprite::s_gen#3 s_gen zp[1]:15 2.100000003E9 +(byte) gen_chargen_sprite::s_gen#5 s_gen zp[1]:15 4.00000004E7 +(byte) gen_chargen_sprite::s_gen#6 s_gen zp[1]:15 3.500000005E8 (byte) gen_chargen_sprite::s_gen_cnt -(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 15001.5 -(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7001.0 -(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 400.4 -(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3500.5 +(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 1.5000000015E9 +(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7.00000001E8 +(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 4.00000004E7 +(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3.500000005E8 (byte*) gen_chargen_sprite::sprite -(byte*) gen_chargen_sprite::sprite#0 sprite zp[2]:19 2.1666666666666665 -(byte*) gen_chargen_sprite::sprite#1 sprite zp[2]:19 20002.0 -(byte*) gen_chargen_sprite::sprite#10 sprite zp[2]:19 420.59999999999997 -(byte*) gen_chargen_sprite::sprite#11 sprite zp[2]:19 102.0 -(byte*) gen_chargen_sprite::sprite#2 sprite zp[2]:19 67.33333333333333 -(byte*) gen_chargen_sprite::sprite#3 sprite zp[2]:19 7625.875 -(byte*) gen_chargen_sprite::sprite#4 sprite zp[2]:19 5184.166666666666 +(byte*) gen_chargen_sprite::sprite#0 sprite zp[2]:19 18333.666666666664 +(byte*) gen_chargen_sprite::sprite#1 sprite zp[2]:19 2.000000002E9 +(byte*) gen_chargen_sprite::sprite#10 sprite zp[2]:19 4.2000000599999994E7 +(byte*) gen_chargen_sprite::sprite#11 sprite zp[2]:19 1.00500015E7 +(byte*) gen_chargen_sprite::sprite#2 sprite zp[2]:19 6666667.333333333 +(byte*) gen_chargen_sprite::sprite#3 sprite zp[2]:19 7.62500000875E8 +(byte*) gen_chargen_sprite::sprite#4 sprite zp[2]:19 5.183333341666667E8 (byte) gen_chargen_sprite::x -(byte) gen_chargen_sprite::x#1 x zp[1]:11 1501.5 -(byte) gen_chargen_sprite::x#6 x zp[1]:11 111.22222222222223 +(byte) gen_chargen_sprite::x#1 x zp[1]:11 1.500000015E8 +(byte) gen_chargen_sprite::x#6 x zp[1]:11 1.1111111222222222E7 (byte) gen_chargen_sprite::y -(byte) gen_chargen_sprite::y#1 y zp[1]:9 151.5 -(byte) gen_chargen_sprite::y#2 y zp[1]:9 13.173913043478262 +(byte) gen_chargen_sprite::y#1 y zp[1]:9 1.50000015E7 +(byte) gen_chargen_sprite::y#2 y zp[1]:9 1304347.956521739 (void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max) -(word~) gen_sintab::$24 zp[2]:19 11.0 -(byte~) gen_sintab::$25 reg byte a 22.0 +(word~) gen_sintab::$24 zp[2]:19 10001.0 +(byte~) gen_sintab::$25 reg byte a 20002.0 (label) gen_sintab::@1 (label) gen_sintab::@10 (label) gen_sintab::@11 @@ -7266,32 +7239,32 @@ FINAL SYMBOL TABLE (const byte*) gen_sintab::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) gen_sintab::f_min[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte) gen_sintab::i -(byte) gen_sintab::i#1 i zp[1]:11 22.0 -(byte) gen_sintab::i#10 i zp[1]:11 1.76 +(byte) gen_sintab::i#1 i zp[1]:11 20002.0 +(byte) gen_sintab::i#10 i zp[1]:11 1600.16 (byte) gen_sintab::length -(byte) gen_sintab::length#10 length zp[1]:10 0.22448979591836735 +(byte) gen_sintab::length#10 length zp[1]:10 204.10204081632654 (byte) gen_sintab::max (byte) gen_sintab::max#2 reg byte x (byte) gen_sintab::min (byte) gen_sintab::min#2 min zp[1]:9 (byte*) gen_sintab::sintab -(byte*) gen_sintab::sintab#13 sintab zp[2]:16 0.22448979591836735 +(byte*) gen_sintab::sintab#13 sintab zp[2]:16 204.10204081632654 (void()) gen_sprites() (label) gen_sprites::@1 (label) gen_sprites::@2 (label) gen_sprites::@return (const byte*) gen_sprites::cml[] = (byte*) "camelot"z (byte) gen_sprites::i -(byte) gen_sprites::i#1 i zp[1]:8 16.5 -(byte) gen_sprites::i#2 i zp[1]:8 6.6000000000000005 +(byte) gen_sprites::i#1 i zp[1]:8 15001.5 +(byte) gen_sprites::i#2 i zp[1]:8 6000.6 (byte*) gen_sprites::spr -(byte*) gen_sprites::spr#1 spr zp[2]:16 7.333333333333333 -(byte*) gen_sprites::spr#2 spr zp[2]:16 8.25 +(byte*) gen_sprites::spr#1 spr zp[2]:16 6667.333333333333 +(byte*) gen_sprites::spr#2 spr zp[2]:16 7500.75 (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp[2]:19 4.333333333333333 -(word) getFAC::return#2 return zp[2]:19 22.0 +(word) getFAC::return#0 return zp[2]:19 36667.33333333333 +(word) getFAC::return#2 return zp[2]:19 20002.0 (word) getFAC::w (void()) init() (label) init::@1 @@ -7304,8 +7277,8 @@ FINAL SYMBOL TABLE (label) init::@8 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 14.666666666666666 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -7317,37 +7290,37 @@ FINAL SYMBOL TABLE (byte*) mulFACbyMEM::mem (byte*) mulFACbyMEM::mem#2 mem zp[2]:19 (label) mulFACbyMEM::prepareMEM1 -(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 4.0 -(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 4.0 +(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 200002.0 +(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 200002.0 (word) mulFACbyMEM::prepareMEM1_mem (void()) place_sprites() (label) place_sprites::@1 (label) place_sprites::@return (byte) place_sprites::col -(byte) place_sprites::col#1 col zp[1]:15 4.4 -(byte) place_sprites::col#2 col zp[1]:15 4.714285714285714 +(byte) place_sprites::col#1 col zp[1]:15 4000.4 +(byte) place_sprites::col#2 col zp[1]:15 4286.142857142857 (byte) place_sprites::j -(byte) place_sprites::j#1 j zp[1]:10 16.5 -(byte) place_sprites::j#2 j zp[1]:10 4.4 +(byte) place_sprites::j#1 j zp[1]:10 15001.5 +(byte) place_sprites::j#2 j zp[1]:10 4000.4 (byte) place_sprites::j2 -(byte) place_sprites::j2#1 reg byte x 22.0 -(byte) place_sprites::j2#2 j2 zp[1]:12 7.333333333333333 -(byte) place_sprites::j2#3 j2 zp[1]:12 5.5 +(byte) place_sprites::j2#1 reg byte x 20002.0 +(byte) place_sprites::j2#2 j2 zp[1]:12 6667.333333333333 +(byte) place_sprites::j2#3 j2 zp[1]:12 5000.5 (byte) place_sprites::spr_id -(byte) place_sprites::spr_id#1 spr_id zp[1]:9 2.2 -(byte) place_sprites::spr_id#2 spr_id zp[1]:9 16.5 +(byte) place_sprites::spr_id#1 spr_id zp[1]:9 2000.2 +(byte) place_sprites::spr_id#2 spr_id zp[1]:9 15001.5 (byte) place_sprites::spr_x -(byte) place_sprites::spr_x#1 spr_x zp[1]:11 3.6666666666666665 -(byte) place_sprites::spr_x#2 spr_x zp[1]:11 5.5 +(byte) place_sprites::spr_x#1 spr_x zp[1]:11 3333.6666666666665 +(byte) place_sprites::spr_x#2 spr_x zp[1]:11 5000.5 (const byte*) place_sprites::sprites_ptr = (const byte*) SCREEN+(word) $3f8 (byte*) progress_cursor -(byte*) progress_cursor#10 progress_cursor zp[2]:5 4.0 -(byte*) progress_cursor#11 progress_cursor zp[2]:5 3.4 -(byte*) progress_cursor#13 progress_cursor zp[2]:5 0.7037037037037037 +(byte*) progress_cursor#10 progress_cursor zp[2]:5 200002.0 +(byte*) progress_cursor#11 progress_cursor zp[2]:5 62000.8 +(byte*) progress_cursor#13 progress_cursor zp[2]:5 11518.703703703704 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:4 3.0 -(byte) progress_idx#12 progress_idx zp[1]:4 3.0 -(byte) progress_idx#14 progress_idx zp[1]:4 0.5416666666666666 +(byte) progress_idx#10 progress_idx zp[1]:4 150001.5 +(byte) progress_idx#12 progress_idx zp[1]:4 42000.600000000006 +(byte) progress_idx#14 progress_idx zp[1]:4 4583.416666666666 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -7356,41 +7329,41 @@ FINAL SYMBOL TABLE (void()) progress_init((byte*) progress_init::line) (label) progress_init::@return (byte*) progress_init::line -(byte*) progress_init::line#2 line zp[2]:5 0.06896551724137931 +(byte*) progress_init::line#2 line zp[2]:5 34.51724137931034 (void()) setARGtoFAC() (label) setARGtoFAC::@return (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return (label) setFAC::prepareMEM1 -(byte~) setFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) setFAC::prepareMEM1_$1 reg byte a 200002.0 (word) setFAC::prepareMEM1_mem -(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:19 9.999999999999998 +(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:19 74002.0 (word) setFAC::w -(word) setFAC::w#0 w zp[2]:19 4.0 -(word) setFAC::w#1 w zp[2]:19 4.0 -(word) setFAC::w#3 w zp[2]:19 22.0 -(word) setFAC::w#4 w zp[2]:19 22.0 +(word) setFAC::w#0 w zp[2]:19 2002.0 +(word) setFAC::w#1 w zp[2]:19 2002.0 +(word) setFAC::w#3 w zp[2]:19 20002.0 +(word) setFAC::w#4 w zp[2]:19 20002.0 (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem) (label) setMEMtoFAC::@1 (label) setMEMtoFAC::@return (byte*) setMEMtoFAC::mem (byte*) setMEMtoFAC::mem#5 mem zp[2]:19 (label) setMEMtoFAC::prepareMEM1 -(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 200002.0 (word) setMEMtoFAC::prepareMEM1_mem (void()) sinFAC() (label) sinFAC::@return (byte) sin_idx_x -(byte) sin_idx_x#11 sin_idx_x zp[1]:2 1.625 -(byte) sin_idx_x#13 sin_idx_x zp[1]:2 8.346153846153845 -(byte) sin_idx_x#3 sin_idx_x zp[1]:2 2.0 +(byte) sin_idx_x#11 sin_idx_x zp[1]:2 137.75 +(byte) sin_idx_x#13 sin_idx_x zp[1]:2 157.8846153846154 +(byte) sin_idx_x#3 sin_idx_x zp[1]:2 1001.0 (byte) sin_idx_y -(byte) sin_idx_y#11 sin_idx_y zp[1]:3 3.25 -(byte) sin_idx_y#13 sin_idx_y zp[1]:3 7.2333333333333325 -(byte) sin_idx_y#3 sin_idx_y zp[1]:3 2.0 +(byte) sin_idx_y#11 sin_idx_y zp[1]:3 275.5 +(byte) sin_idx_y#13 sin_idx_y zp[1]:3 136.83333333333334 +(byte) sin_idx_y#3 sin_idx_y zp[1]:3 1001.0 (const byte) sinlen_x = (byte) $dd (const byte) sinlen_y = (byte) $c5 (const byte*) sintab_x[(number) $dd] = { fill( $dd, 0) } diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.sym b/src/test/ref/examples/sinsprites/sinus-sprites.sym index 2832ddee5..81059bea0 100644 --- a/src/test/ref/examples/sinsprites/sinus-sprites.sym +++ b/src/test/ref/examples/sinsprites/sinus-sprites.sym @@ -25,9 +25,9 @@ (label) addMEMtoFAC::prepareMEM1 (word) addMEMtoFAC::prepareMEM1_mem (void()) anim() -(byte~) anim::$10 reg byte a 202.0 -(byte~) anim::$7 zp[1]:10 101.0 -(byte~) anim::$8 reg byte a 202.0 +(byte~) anim::$10 reg byte a 200002.0 +(byte~) anim::$7 zp[1]:10 100001.0 +(byte~) anim::$8 reg byte a 200002.0 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -40,49 +40,49 @@ (label) anim::@9 (label) anim::@return (byte) anim::j -(byte) anim::j#1 j zp[1]:8 151.5 -(byte) anim::j#2 j zp[1]:8 11.882352941176471 +(byte) anim::j#1 j zp[1]:8 150001.5 +(byte) anim::j#2 j zp[1]:8 11764.823529411764 (byte) anim::j2 -(byte) anim::j2#1 j2 zp[1]:11 67.33333333333333 -(byte) anim::j2#2 j2 zp[1]:11 25.25 +(byte) anim::j2#1 j2 zp[1]:11 66667.33333333333 +(byte) anim::j2#2 j2 zp[1]:11 25000.25 (word) anim::x -(word) anim::x#0 x zp[2]:16 75.75 +(word) anim::x#0 x zp[2]:16 75000.75 (byte) anim::x_msb -(byte) anim::x_msb#1 x_msb zp[1]:10 13.6 -(byte) anim::x_msb#2 x_msb zp[1]:10 101.0 +(byte) anim::x_msb#1 x_msb zp[1]:10 13400.2 +(byte) anim::x_msb#2 x_msb zp[1]:10 100001.0 (byte) anim::xidx -(byte) anim::xidx#0 xidx zp[1]:9 2.0 -(byte) anim::xidx#1 xidx zp[1]:9 202.0 -(byte) anim::xidx#2 xidx zp[1]:9 202.0 -(byte) anim::xidx#3 xidx zp[1]:9 38.125 -(byte) anim::xidx#5 xidx zp[1]:9 37.875 +(byte) anim::xidx#0 xidx zp[1]:9 1001.0 +(byte) anim::xidx#1 xidx zp[1]:9 200002.0 +(byte) anim::xidx#2 xidx zp[1]:9 200002.0 +(byte) anim::xidx#3 xidx zp[1]:9 37625.5 +(byte) anim::xidx#5 xidx zp[1]:9 37500.375 (byte) anim::yidx -(byte) anim::yidx#0 yidx zp[1]:4 4.0 -(byte) anim::yidx#1 yidx zp[1]:4 202.0 -(byte) anim::yidx#2 yidx zp[1]:4 202.0 -(byte) anim::yidx#3 yidx zp[1]:4 25.416666666666664 -(byte) anim::yidx#6 yidx zp[1]:4 75.75 +(byte) anim::yidx#0 yidx zp[1]:4 2002.0 +(byte) anim::yidx#1 yidx zp[1]:4 200002.0 +(byte) anim::yidx#2 yidx zp[1]:4 200002.0 +(byte) anim::yidx#3 yidx zp[1]:4 25083.666666666664 +(byte) anim::yidx#6 yidx zp[1]:4 75000.75 (void()) clear_screen() (label) clear_screen::@1 (label) clear_screen::@2 (label) clear_screen::@return (byte*) clear_screen::sc -(byte*) clear_screen::sc#1 sc zp[2]:16 22.0 -(byte*) clear_screen::sc#2 sc zp[2]:16 14.666666666666666 +(byte*) clear_screen::sc#1 sc zp[2]:16 20002.0 +(byte*) clear_screen::sc#2 sc zp[2]:16 13334.666666666666 (void()) divMEMbyFAC((byte*) divMEMbyFAC::mem) (label) divMEMbyFAC::@1 (label) divMEMbyFAC::@return (byte*) divMEMbyFAC::mem (byte*) divMEMbyFAC::mem#2 mem zp[2]:19 (label) divMEMbyFAC::prepareMEM1 -(byte~) divMEMbyFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) divMEMbyFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) divMEMbyFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) divMEMbyFAC::prepareMEM1_$1 reg byte a 200002.0 (word) divMEMbyFAC::prepareMEM1_mem (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) -(word~) gen_chargen_sprite::$0 zp[2]:21 4.0 -(word~) gen_chargen_sprite::$1 zp[2]:21 4.0 -(byte~) gen_chargen_sprite::$3 reg byte a 2002.0 -(byte~) gen_chargen_sprite::$6 reg byte a 20002.0 +(word~) gen_chargen_sprite::$0 zp[2]:21 200002.0 +(word~) gen_chargen_sprite::$1 zp[2]:21 200002.0 +(byte~) gen_chargen_sprite::$3 reg byte a 2.00000002E8 +(byte~) gen_chargen_sprite::$6 reg byte a 2.000000002E9 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 (label) gen_chargen_sprite::@2 @@ -95,45 +95,45 @@ (label) gen_chargen_sprite::@9 (label) gen_chargen_sprite::@return (byte) gen_chargen_sprite::b -(byte) gen_chargen_sprite::b#1 reg byte x 15001.5 -(byte) gen_chargen_sprite::b#2 reg byte x 2000.2 +(byte) gen_chargen_sprite::b#1 reg byte x 1.5000000015E9 +(byte) gen_chargen_sprite::b#2 reg byte x 2.000000002E8 (byte) gen_chargen_sprite::bits -(byte) gen_chargen_sprite::bits#0 bits zp[1]:10 202.0 -(byte) gen_chargen_sprite::bits#1 bits zp[1]:10 667.3333333333334 -(byte) gen_chargen_sprite::bits#2 bits zp[1]:10 182.58823529411765 +(byte) gen_chargen_sprite::bits#0 bits zp[1]:10 2.0000002E7 +(byte) gen_chargen_sprite::bits#1 bits zp[1]:10 6.6666667333333336E7 +(byte) gen_chargen_sprite::bits#2 bits zp[1]:10 1.8235294352941178E7 (byte) gen_chargen_sprite::c -(byte) gen_chargen_sprite::c#3 c zp[1]:12 769.3076923076923 +(byte) gen_chargen_sprite::c#3 c zp[1]:12 7.6923077E7 (byte) gen_chargen_sprite::ch -(byte) gen_chargen_sprite::ch#0 reg byte x 5.5 +(byte) gen_chargen_sprite::ch#0 reg byte x 5000.5 (byte*) gen_chargen_sprite::chargen -(byte*) gen_chargen_sprite::chargen#0 chargen zp[2]:21 3.678571428571429 +(byte*) gen_chargen_sprite::chargen#0 chargen zp[2]:21 360714.3571428571 (byte) gen_chargen_sprite::s_gen -(byte) gen_chargen_sprite::s_gen#1 s_gen zp[1]:15 10001.0 -(byte) gen_chargen_sprite::s_gen#3 s_gen zp[1]:15 21003.0 -(byte) gen_chargen_sprite::s_gen#5 s_gen zp[1]:15 400.4 -(byte) gen_chargen_sprite::s_gen#6 s_gen zp[1]:15 3500.5 +(byte) gen_chargen_sprite::s_gen#1 s_gen zp[1]:15 1.000000001E9 +(byte) gen_chargen_sprite::s_gen#3 s_gen zp[1]:15 2.100000003E9 +(byte) gen_chargen_sprite::s_gen#5 s_gen zp[1]:15 4.00000004E7 +(byte) gen_chargen_sprite::s_gen#6 s_gen zp[1]:15 3.500000005E8 (byte) gen_chargen_sprite::s_gen_cnt -(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 15001.5 -(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7001.0 -(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 400.4 -(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3500.5 +(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 1.5000000015E9 +(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7.00000001E8 +(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 4.00000004E7 +(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3.500000005E8 (byte*) gen_chargen_sprite::sprite -(byte*) gen_chargen_sprite::sprite#0 sprite zp[2]:19 2.1666666666666665 -(byte*) gen_chargen_sprite::sprite#1 sprite zp[2]:19 20002.0 -(byte*) gen_chargen_sprite::sprite#10 sprite zp[2]:19 420.59999999999997 -(byte*) gen_chargen_sprite::sprite#11 sprite zp[2]:19 102.0 -(byte*) gen_chargen_sprite::sprite#2 sprite zp[2]:19 67.33333333333333 -(byte*) gen_chargen_sprite::sprite#3 sprite zp[2]:19 7625.875 -(byte*) gen_chargen_sprite::sprite#4 sprite zp[2]:19 5184.166666666666 +(byte*) gen_chargen_sprite::sprite#0 sprite zp[2]:19 18333.666666666664 +(byte*) gen_chargen_sprite::sprite#1 sprite zp[2]:19 2.000000002E9 +(byte*) gen_chargen_sprite::sprite#10 sprite zp[2]:19 4.2000000599999994E7 +(byte*) gen_chargen_sprite::sprite#11 sprite zp[2]:19 1.00500015E7 +(byte*) gen_chargen_sprite::sprite#2 sprite zp[2]:19 6666667.333333333 +(byte*) gen_chargen_sprite::sprite#3 sprite zp[2]:19 7.62500000875E8 +(byte*) gen_chargen_sprite::sprite#4 sprite zp[2]:19 5.183333341666667E8 (byte) gen_chargen_sprite::x -(byte) gen_chargen_sprite::x#1 x zp[1]:11 1501.5 -(byte) gen_chargen_sprite::x#6 x zp[1]:11 111.22222222222223 +(byte) gen_chargen_sprite::x#1 x zp[1]:11 1.500000015E8 +(byte) gen_chargen_sprite::x#6 x zp[1]:11 1.1111111222222222E7 (byte) gen_chargen_sprite::y -(byte) gen_chargen_sprite::y#1 y zp[1]:9 151.5 -(byte) gen_chargen_sprite::y#2 y zp[1]:9 13.173913043478262 +(byte) gen_chargen_sprite::y#1 y zp[1]:9 1.50000015E7 +(byte) gen_chargen_sprite::y#2 y zp[1]:9 1304347.956521739 (void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max) -(word~) gen_sintab::$24 zp[2]:19 11.0 -(byte~) gen_sintab::$25 reg byte a 22.0 +(word~) gen_sintab::$24 zp[2]:19 10001.0 +(byte~) gen_sintab::$25 reg byte a 20002.0 (label) gen_sintab::@1 (label) gen_sintab::@10 (label) gen_sintab::@11 @@ -162,32 +162,32 @@ (const byte*) gen_sintab::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (const byte*) gen_sintab::f_min[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte) gen_sintab::i -(byte) gen_sintab::i#1 i zp[1]:11 22.0 -(byte) gen_sintab::i#10 i zp[1]:11 1.76 +(byte) gen_sintab::i#1 i zp[1]:11 20002.0 +(byte) gen_sintab::i#10 i zp[1]:11 1600.16 (byte) gen_sintab::length -(byte) gen_sintab::length#10 length zp[1]:10 0.22448979591836735 +(byte) gen_sintab::length#10 length zp[1]:10 204.10204081632654 (byte) gen_sintab::max (byte) gen_sintab::max#2 reg byte x (byte) gen_sintab::min (byte) gen_sintab::min#2 min zp[1]:9 (byte*) gen_sintab::sintab -(byte*) gen_sintab::sintab#13 sintab zp[2]:16 0.22448979591836735 +(byte*) gen_sintab::sintab#13 sintab zp[2]:16 204.10204081632654 (void()) gen_sprites() (label) gen_sprites::@1 (label) gen_sprites::@2 (label) gen_sprites::@return (const byte*) gen_sprites::cml[] = (byte*) "camelot"z (byte) gen_sprites::i -(byte) gen_sprites::i#1 i zp[1]:8 16.5 -(byte) gen_sprites::i#2 i zp[1]:8 6.6000000000000005 +(byte) gen_sprites::i#1 i zp[1]:8 15001.5 +(byte) gen_sprites::i#2 i zp[1]:8 6000.6 (byte*) gen_sprites::spr -(byte*) gen_sprites::spr#1 spr zp[2]:16 7.333333333333333 -(byte*) gen_sprites::spr#2 spr zp[2]:16 8.25 +(byte*) gen_sprites::spr#1 spr zp[2]:16 6667.333333333333 +(byte*) gen_sprites::spr#2 spr zp[2]:16 7500.75 (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp[2]:19 4.333333333333333 -(word) getFAC::return#2 return zp[2]:19 22.0 +(word) getFAC::return#0 return zp[2]:19 36667.33333333333 +(word) getFAC::return#2 return zp[2]:19 20002.0 (word) getFAC::w (void()) init() (label) init::@1 @@ -200,8 +200,8 @@ (label) init::@8 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 14.666666666666666 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -213,37 +213,37 @@ (byte*) mulFACbyMEM::mem (byte*) mulFACbyMEM::mem#2 mem zp[2]:19 (label) mulFACbyMEM::prepareMEM1 -(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 4.0 -(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 4.0 +(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 200002.0 +(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 200002.0 (word) mulFACbyMEM::prepareMEM1_mem (void()) place_sprites() (label) place_sprites::@1 (label) place_sprites::@return (byte) place_sprites::col -(byte) place_sprites::col#1 col zp[1]:15 4.4 -(byte) place_sprites::col#2 col zp[1]:15 4.714285714285714 +(byte) place_sprites::col#1 col zp[1]:15 4000.4 +(byte) place_sprites::col#2 col zp[1]:15 4286.142857142857 (byte) place_sprites::j -(byte) place_sprites::j#1 j zp[1]:10 16.5 -(byte) place_sprites::j#2 j zp[1]:10 4.4 +(byte) place_sprites::j#1 j zp[1]:10 15001.5 +(byte) place_sprites::j#2 j zp[1]:10 4000.4 (byte) place_sprites::j2 -(byte) place_sprites::j2#1 reg byte x 22.0 -(byte) place_sprites::j2#2 j2 zp[1]:12 7.333333333333333 -(byte) place_sprites::j2#3 j2 zp[1]:12 5.5 +(byte) place_sprites::j2#1 reg byte x 20002.0 +(byte) place_sprites::j2#2 j2 zp[1]:12 6667.333333333333 +(byte) place_sprites::j2#3 j2 zp[1]:12 5000.5 (byte) place_sprites::spr_id -(byte) place_sprites::spr_id#1 spr_id zp[1]:9 2.2 -(byte) place_sprites::spr_id#2 spr_id zp[1]:9 16.5 +(byte) place_sprites::spr_id#1 spr_id zp[1]:9 2000.2 +(byte) place_sprites::spr_id#2 spr_id zp[1]:9 15001.5 (byte) place_sprites::spr_x -(byte) place_sprites::spr_x#1 spr_x zp[1]:11 3.6666666666666665 -(byte) place_sprites::spr_x#2 spr_x zp[1]:11 5.5 +(byte) place_sprites::spr_x#1 spr_x zp[1]:11 3333.6666666666665 +(byte) place_sprites::spr_x#2 spr_x zp[1]:11 5000.5 (const byte*) place_sprites::sprites_ptr = (const byte*) SCREEN+(word) $3f8 (byte*) progress_cursor -(byte*) progress_cursor#10 progress_cursor zp[2]:5 4.0 -(byte*) progress_cursor#11 progress_cursor zp[2]:5 3.4 -(byte*) progress_cursor#13 progress_cursor zp[2]:5 0.7037037037037037 +(byte*) progress_cursor#10 progress_cursor zp[2]:5 200002.0 +(byte*) progress_cursor#11 progress_cursor zp[2]:5 62000.8 +(byte*) progress_cursor#13 progress_cursor zp[2]:5 11518.703703703704 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp[1]:4 3.0 -(byte) progress_idx#12 progress_idx zp[1]:4 3.0 -(byte) progress_idx#14 progress_idx zp[1]:4 0.5416666666666666 +(byte) progress_idx#10 progress_idx zp[1]:4 150001.5 +(byte) progress_idx#12 progress_idx zp[1]:4 42000.600000000006 +(byte) progress_idx#14 progress_idx zp[1]:4 4583.416666666666 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -252,41 +252,41 @@ (void()) progress_init((byte*) progress_init::line) (label) progress_init::@return (byte*) progress_init::line -(byte*) progress_init::line#2 line zp[2]:5 0.06896551724137931 +(byte*) progress_init::line#2 line zp[2]:5 34.51724137931034 (void()) setARGtoFAC() (label) setARGtoFAC::@return (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return (label) setFAC::prepareMEM1 -(byte~) setFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) setFAC::prepareMEM1_$1 reg byte a 200002.0 (word) setFAC::prepareMEM1_mem -(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:19 9.999999999999998 +(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:19 74002.0 (word) setFAC::w -(word) setFAC::w#0 w zp[2]:19 4.0 -(word) setFAC::w#1 w zp[2]:19 4.0 -(word) setFAC::w#3 w zp[2]:19 22.0 -(word) setFAC::w#4 w zp[2]:19 22.0 +(word) setFAC::w#0 w zp[2]:19 2002.0 +(word) setFAC::w#1 w zp[2]:19 2002.0 +(word) setFAC::w#3 w zp[2]:19 20002.0 +(word) setFAC::w#4 w zp[2]:19 20002.0 (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem) (label) setMEMtoFAC::@1 (label) setMEMtoFAC::@return (byte*) setMEMtoFAC::mem (byte*) setMEMtoFAC::mem#5 mem zp[2]:19 (label) setMEMtoFAC::prepareMEM1 -(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 200002.0 +(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 200002.0 (word) setMEMtoFAC::prepareMEM1_mem (void()) sinFAC() (label) sinFAC::@return (byte) sin_idx_x -(byte) sin_idx_x#11 sin_idx_x zp[1]:2 1.625 -(byte) sin_idx_x#13 sin_idx_x zp[1]:2 8.346153846153845 -(byte) sin_idx_x#3 sin_idx_x zp[1]:2 2.0 +(byte) sin_idx_x#11 sin_idx_x zp[1]:2 137.75 +(byte) sin_idx_x#13 sin_idx_x zp[1]:2 157.8846153846154 +(byte) sin_idx_x#3 sin_idx_x zp[1]:2 1001.0 (byte) sin_idx_y -(byte) sin_idx_y#11 sin_idx_y zp[1]:3 3.25 -(byte) sin_idx_y#13 sin_idx_y zp[1]:3 7.2333333333333325 -(byte) sin_idx_y#3 sin_idx_y zp[1]:3 2.0 +(byte) sin_idx_y#11 sin_idx_y zp[1]:3 275.5 +(byte) sin_idx_y#13 sin_idx_y zp[1]:3 136.83333333333334 +(byte) sin_idx_y#3 sin_idx_y zp[1]:3 1001.0 (const byte) sinlen_x = (byte) $dd (const byte) sinlen_y = (byte) $c5 (const byte*) sintab_x[(number) $dd] = { fill( $dd, 0) } diff --git a/src/test/ref/examples/zpcode/zpcode.log b/src/test/ref/examples/zpcode/zpcode.log index 33c51c47f..8006d3c16 100644 --- a/src/test/ref/examples/zpcode/zpcode.log +++ b/src/test/ref/examples/zpcode/zpcode.log @@ -156,7 +156,7 @@ Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $ff Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $14) goto main::@2 Simple Condition (bool~) main::$1 [9] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@10 @@ -298,16 +298,16 @@ loop::@return: scope:[loop] from loop::@1 VARIABLE REGISTER WEIGHTS (void()) loop() (byte) loop::i -(byte) loop::i#1 151.5 -(byte) loop::i#2 101.0 +(byte) loop::i#1 150001.5 +(byte) loop::i#2 100001.0 (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 (void()) zpLoop() (byte) zpLoop::i -(byte) zpLoop::i#1 151.5 -(byte) zpLoop::i#2 101.0 +(byte) zpLoop::i#1 150001.5 +(byte) zpLoop::i#2 100001.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -492,21 +492,21 @@ zpCodeData: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::zpCode + (byte) main::i#2) ← *((const byte*) zpCodeData + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::zpCode + (byte) main::i#2) ← *((const byte*) zpCodeData + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::zpCode + (byte) main::i#2) ← *((const byte*) zpCodeData + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::zpCode + (byte) main::i#2) ← *((const byte*) zpCodeData + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ zpLoop::i#2 zpLoop::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ loop::i#2 loop::i#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [loop] 252.5: zp[1]:4 [ loop::i#2 loop::i#1 ] -Uplift Scope [zpLoop] 252.5: zp[1]:3 [ zpLoop::i#2 zpLoop::i#1 ] -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [loop] 250,002.5: zp[1]:4 [ loop::i#2 loop::i#1 ] +Uplift Scope [zpLoop] 250,002.5: zp[1]:3 [ zpLoop::i#2 zpLoop::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [loop] best 7031 combination reg byte x [ loop::i#2 loop::i#1 ] @@ -725,8 +725,8 @@ FINAL SYMBOL TABLE (label) loop::@1 (label) loop::@return (byte) loop::i -(byte) loop::i#1 reg byte x 151.5 -(byte) loop::i#2 reg byte x 101.0 +(byte) loop::i#1 reg byte x 150001.5 +(byte) loop::i#2 reg byte x 100001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -735,8 +735,8 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::zpCode = (byte*)&(void()) zpLoop() (const byte*) zpCodeData[] = kickasm {{ .segmentout [segments="ZpCode"] }} @@ -744,8 +744,8 @@ FINAL SYMBOL TABLE (label) zpLoop::@1 (label) zpLoop::@return (byte) zpLoop::i -(byte) zpLoop::i#1 reg byte x 151.5 -(byte) zpLoop::i#2 reg byte x 101.0 +(byte) zpLoop::i#1 reg byte x 150001.5 +(byte) zpLoop::i#2 reg byte x 100001.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ zpLoop::i#2 zpLoop::i#1 ] diff --git a/src/test/ref/examples/zpcode/zpcode.sym b/src/test/ref/examples/zpcode/zpcode.sym index 8545cbb80..0ede6be50 100644 --- a/src/test/ref/examples/zpcode/zpcode.sym +++ b/src/test/ref/examples/zpcode/zpcode.sym @@ -7,8 +7,8 @@ (label) loop::@1 (label) loop::@return (byte) loop::i -(byte) loop::i#1 reg byte x 151.5 -(byte) loop::i#2 reg byte x 101.0 +(byte) loop::i#1 reg byte x 150001.5 +(byte) loop::i#2 reg byte x 100001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -17,8 +17,8 @@ (label) main::@5 (label) main::@6 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::zpCode = (byte*)&(void()) zpLoop() (const byte*) zpCodeData[] = kickasm {{ .segmentout [segments="ZpCode"] }} @@ -26,8 +26,8 @@ (label) zpLoop::@1 (label) zpLoop::@return (byte) zpLoop::i -(byte) zpLoop::i#1 reg byte x 151.5 -(byte) zpLoop::i#2 reg byte x 101.0 +(byte) zpLoop::i#1 reg byte x 150001.5 +(byte) zpLoop::i#2 reg byte x 100001.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ zpLoop::i#2 zpLoop::i#1 ] diff --git a/src/test/ref/fastmultiply-127.asm b/src/test/ref/fastmultiply-127.asm index 6415c08c0..a48c3f35a 100644 --- a/src/test/ref/fastmultiply-127.asm +++ b/src/test/ref/fastmultiply-127.asm @@ -6,8 +6,8 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_char_cursor = 4 - .label print_line_cursor = 2 + .label print_char_cursor = 5 + .label print_line_cursor = 3 main: { // print_cls() jsr print_cls @@ -82,52 +82,57 @@ main: { // print_mulf8s127(0,0) lda #0 sta.z print_mulf8s127.b - tay + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(64,64) lda #$40 sta.z print_mulf8s127.b - tay + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(64,127) lda #$7f sta.z print_mulf8s127.b - ldy #$40 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(-64,64) lda #$40 sta.z print_mulf8s127.b - ldy #-$40 + lda #-$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(64,-64) lda #-$40 sta.z print_mulf8s127.b - ldy #$40 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(-64,-64) lda #-$40 sta.z print_mulf8s127.b - tay + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(127,127) lda #$7f sta.z print_mulf8s127.b - tay + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(-127,127) lda #$7f sta.z print_mulf8s127.b - ldy #-$7f + lda #-$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(127,-127) lda #-$7f sta.z print_mulf8s127.b - ldy #$7f + lda #$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // print_mulf8s127(-127,-127) lda #-$7f sta.z print_mulf8s127.b - tay + sta.z print_mulf8s127.a jsr print_mulf8s127 // } rts @@ -136,16 +141,17 @@ main: { str1: .text "signed" .byte 0 } -// print_mulf8s127(signed byte register(Y) a, signed byte zp(8) b) +// print_mulf8s127(signed byte zp(9) a, signed byte zp(2) b) print_mulf8s127: { - .label c = 6 - .label b = 8 + .label c = 7 + .label a = 9 + .label b = 2 // mulf8s127(a,b) + ldy.z b jsr mulf8s127 // c = mulf8s127(a,b) // print_sbyte(a) - tya - tax + ldx.z a lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -192,9 +198,9 @@ print_ln: { rts } // Print a signed word as HEX -// print_sword(signed word zp(6) w) +// print_sword(signed word zp(7) w) print_sword: { - .label w = 6 + .label w = 7 // if(w<0) lda.z w+1 bmi __b1 @@ -235,16 +241,14 @@ print_char: { rts } // Print a word as HEX -// print_word(word zp(6) w) +// print_word(word zp(7) w) print_word: { - .label w = 6 + .label w = 7 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte(str diff --git a/src/test/ref/fastmultiply-127.log b/src/test/ref/fastmultiply-127.log index 58a73beae..4ffb5fcf4 100644 --- a/src/test/ref/fastmultiply-127.log +++ b/src/test/ref/fastmultiply-127.log @@ -1612,130 +1612,130 @@ Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) Inversing boolean not [366] (bool~) mulf8s127::$5 ← (signed byte) mulf8s127::a#2 >= (signed byte) 0 from [365] (bool~) mulf8s127::$4 ← (signed byte) mulf8s127::a#2 < (signed byte) 0 Inversing boolean not [370] (bool~) mulf8s127::$7 ← (signed byte) mulf8s127::b#2 >= (signed byte) 0 from [369] (bool~) mulf8s127::$6 ← (signed byte) mulf8s127::b#2 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#69 (byte*) print_char_cursor#135 (byte*) print_screen#4 -Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#63 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#33 (byte*) print_char_cursor#3 (byte*) print_line_cursor#34 (byte*) print_char_cursor#65 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#137 (byte*) print_char_cursor#125 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#66 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#67 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#68 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#69 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#138 (byte*) print_char_cursor#128 -Alias (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#7 -Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#9 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#71 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#12 -Alias (byte) print_byte::b#1 = (byte~) print_word::$0 -Alias (word) print_word::w#2 = (word) print_word::w#3 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#74 -Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#15 -Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#77 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#18 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#20 -Alias (byte*) print_line_cursor#3 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#21 (byte*) print_line_cursor#35 (byte*) print_char_cursor#82 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#65 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#83 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#84 -Alias (byte*) print_line_cursor#37 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#85 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#86 -Alias (byte*) print_line_cursor#38 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#87 -Alias (byte*) print_line_cursor#39 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#88 -Alias (byte*) print_line_cursor#40 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#89 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#41 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#90 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#42 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#91 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#43 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#92 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#44 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#93 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#45 (byte*) print_line_cursor#66 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#94 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#96 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#97 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#98 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#99 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#50 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#40 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#51 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#52 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#42 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#53 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#43 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#54 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#55 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#106 (byte*) print_char_cursor#46 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#56 (byte*) print_line_cursor#57 (byte*) print_line_cursor#26 -Alias (word) mulf8u127::return#0 = (word) mulf8u127::return#4 -Alias (byte) print_mulf8u127::a#8 = (byte) print_mulf8u127::a#9 -Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#139 -Alias (byte) print_mulf8u127::b#10 = (byte) print_mulf8u127::b#11 (byte) print_mulf8u127::b#8 (byte) print_mulf8u127::b#9 -Alias (byte*) print_line_cursor#67 = (byte*) print_line_cursor#78 (byte*) print_line_cursor#80 (byte*) print_line_cursor#76 (byte*) print_line_cursor#74 (byte*) print_line_cursor#72 (byte*) print_line_cursor#70 -Alias (word) print_mulf8u127::c#0 = (word~) print_mulf8u127::$0 (word) print_mulf8u127::c#4 (word) print_mulf8u127::c#3 (word) print_mulf8u127::c#2 (word) print_mulf8u127::c#1 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#51 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#28 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#52 (byte*) print_char_cursor#113 (byte*) print_char_cursor#53 -Alias (signed word) mulf8s127::return#0 = (signed word) mulf8s127::return#3 -Alias (signed byte) print_mulf8s127::a#10 = (signed byte) print_mulf8s127::a#11 -Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#140 -Alias (signed byte) print_mulf8s127::b#10 = (signed byte) print_mulf8s127::b#13 (signed byte) print_mulf8s127::b#12 (signed byte) print_mulf8s127::b#11 -Alias (byte*) print_line_cursor#68 = (byte*) print_line_cursor#79 (byte*) print_line_cursor#81 (byte*) print_line_cursor#77 (byte*) print_line_cursor#75 (byte*) print_line_cursor#73 (byte*) print_line_cursor#71 -Alias (signed word) print_mulf8s127::c#0 = (signed word~) print_mulf8s127::$0 (signed word) print_mulf8s127::c#4 (signed word) print_mulf8s127::c#3 (signed word) print_mulf8s127::c#2 (signed word) print_mulf8s127::c#1 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#58 -Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#30 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#59 (byte*) print_char_cursor#120 (byte*) print_char_cursor#60 -Alias (word) mulf8u127::return#1 = (word) mulf8u127::return#5 (word) mulf8u127::return#2 -Alias (byte) mulf8u127::a#1 = (byte~) mulf8s127::$0 -Alias (byte) mulf8u127::b#1 = (byte~) mulf8s127::$1 -Alias (word) mulf8u127::return#3 = (word) mulf8u127::return#6 -Alias (signed byte) mulf8s127::a#1 = (signed byte) mulf8s127::a#2 (signed byte) mulf8s127::a#6 -Alias (signed byte) mulf8s127::b#1 = (signed byte) mulf8s127::b#5 (signed byte) mulf8s127::b#3 -Alias (signed word) mulf8s127::c#0 = (signed word~) mulf8s127::$3 (signed word) mulf8s127::c#4 -Alias (signed byte) mulf8s127::a#4 = (signed byte) mulf8s127::a#5 -Alias (signed word) mulf8s127::c#5 = (signed word) mulf8s127::c#8 -Alias (signed byte) mulf8s127::b#2 = (signed byte) mulf8s127::b#6 -Alias (signed word) mulf8s127::return#1 = (signed word) mulf8s127::c#6 (signed word) mulf8s127::return#4 (signed word) mulf8s127::return#2 -Alias (signed word) mulf8s127::c#7 = (signed word) mulf8s127::c#9 -Alias (byte*) print_line_cursor#31 = (byte*) print_line_cursor#62 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#61 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#69 print_char_cursor#135 print_screen#4 +Alias print_str::str#3 = print_str::str#4 +Alias print_char_cursor#122 = print_char_cursor#62 print_char_cursor#63 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#33 print_char_cursor#3 print_line_cursor#34 print_char_cursor#65 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#124 = print_char_cursor#137 print_char_cursor#125 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#5 = print_char_cursor#66 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#6 = print_char_cursor#67 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#68 = print_char_cursor#7 print_char_cursor#69 print_char_cursor#8 +Alias print_char_cursor#127 = print_char_cursor#138 print_char_cursor#128 +Alias print_sbyte::b#3 = print_sbyte::b#6 print_sbyte::b#4 print_sbyte::b#8 print_sbyte::b#7 +Alias print_char_cursor#70 = print_char_cursor#9 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#10 = print_char_cursor#71 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#11 = print_char_cursor#72 print_char_cursor#73 print_char_cursor#12 +Alias print_byte::b#1 = print_word::$0 +Alias print_word::w#2 = print_word::w#3 +Alias print_char_cursor#13 = print_char_cursor#74 +Alias print_byte::b#2 = print_word::$2 +Alias print_char_cursor#14 = print_char_cursor#75 print_char_cursor#76 print_char_cursor#15 +Alias print_byte::b#5 = print_byte::b#6 +Alias print_char_cursor#16 = print_char_cursor#77 +Alias print_char_cursor#17 = print_char_cursor#78 print_char_cursor#79 print_char_cursor#18 +Alias print_char_cursor#19 = print_char_cursor#81 print_char_cursor#20 +Alias print_line_cursor#3 = print_screen#2 print_screen#1 print_char_cursor#21 print_line_cursor#35 print_char_cursor#82 print_line_cursor#4 print_char_cursor#22 +Alias print_line_cursor#36 = print_line_cursor#5 print_line_cursor#65 +Alias print_char_cursor#23 = print_char_cursor#83 +Alias print_char_cursor#24 = print_char_cursor#84 +Alias print_line_cursor#37 = print_line_cursor#6 +Alias print_char_cursor#25 = print_char_cursor#85 +Alias print_char_cursor#26 = print_char_cursor#86 +Alias print_line_cursor#38 = print_line_cursor#7 +Alias print_char_cursor#27 = print_char_cursor#87 +Alias print_line_cursor#39 = print_line_cursor#8 +Alias print_char_cursor#28 = print_char_cursor#88 +Alias print_line_cursor#40 = print_line_cursor#9 +Alias print_char_cursor#29 = print_char_cursor#89 +Alias print_line_cursor#10 = print_line_cursor#41 +Alias print_char_cursor#30 = print_char_cursor#90 +Alias print_line_cursor#11 = print_line_cursor#42 +Alias print_char_cursor#31 = print_char_cursor#91 +Alias print_line_cursor#12 = print_line_cursor#43 +Alias print_char_cursor#32 = print_char_cursor#92 +Alias print_line_cursor#13 = print_line_cursor#44 +Alias print_char_cursor#33 = print_char_cursor#93 +Alias print_line_cursor#14 = print_line_cursor#45 print_line_cursor#66 +Alias print_char_cursor#34 = print_char_cursor#94 +Alias print_line_cursor#15 = print_line_cursor#46 +Alias print_char_cursor#35 = print_char_cursor#95 +Alias print_char_cursor#36 = print_char_cursor#96 +Alias print_line_cursor#16 = print_line_cursor#47 +Alias print_char_cursor#37 = print_char_cursor#97 +Alias print_line_cursor#17 = print_line_cursor#48 +Alias print_char_cursor#38 = print_char_cursor#98 +Alias print_line_cursor#18 = print_line_cursor#49 +Alias print_char_cursor#39 = print_char_cursor#99 +Alias print_line_cursor#19 = print_line_cursor#50 +Alias print_char_cursor#100 = print_char_cursor#40 +Alias print_line_cursor#20 = print_line_cursor#51 +Alias print_char_cursor#101 = print_char_cursor#41 +Alias print_line_cursor#21 = print_line_cursor#52 +Alias print_char_cursor#102 = print_char_cursor#42 +Alias print_line_cursor#22 = print_line_cursor#53 +Alias print_char_cursor#103 = print_char_cursor#43 +Alias print_line_cursor#23 = print_line_cursor#54 +Alias print_char_cursor#104 = print_char_cursor#44 +Alias print_line_cursor#24 = print_line_cursor#55 +Alias print_char_cursor#105 = print_char_cursor#45 print_char_cursor#106 print_char_cursor#46 +Alias print_line_cursor#25 = print_line_cursor#56 print_line_cursor#57 print_line_cursor#26 +Alias mulf8u127::return#0 = mulf8u127::return#4 +Alias print_mulf8u127::a#8 = print_mulf8u127::a#9 +Alias print_char_cursor#133 = print_char_cursor#139 +Alias print_mulf8u127::b#10 = print_mulf8u127::b#11 print_mulf8u127::b#8 print_mulf8u127::b#9 +Alias print_line_cursor#67 = print_line_cursor#78 print_line_cursor#80 print_line_cursor#76 print_line_cursor#74 print_line_cursor#72 print_line_cursor#70 +Alias print_mulf8u127::c#0 = print_mulf8u127::$0 print_mulf8u127::c#4 print_mulf8u127::c#3 print_mulf8u127::c#2 print_mulf8u127::c#1 +Alias print_char_cursor#107 = print_char_cursor#47 +Alias print_char_cursor#108 = print_char_cursor#48 +Alias print_char_cursor#109 = print_char_cursor#49 +Alias print_char_cursor#110 = print_char_cursor#50 +Alias print_char_cursor#111 = print_char_cursor#51 +Alias print_line_cursor#27 = print_line_cursor#58 print_line_cursor#59 print_line_cursor#28 +Alias print_char_cursor#112 = print_char_cursor#52 print_char_cursor#113 print_char_cursor#53 +Alias mulf8s127::return#0 = mulf8s127::return#3 +Alias print_mulf8s127::a#10 = print_mulf8s127::a#11 +Alias print_char_cursor#134 = print_char_cursor#140 +Alias print_mulf8s127::b#10 = print_mulf8s127::b#13 print_mulf8s127::b#12 print_mulf8s127::b#11 +Alias print_line_cursor#68 = print_line_cursor#79 print_line_cursor#81 print_line_cursor#77 print_line_cursor#75 print_line_cursor#73 print_line_cursor#71 +Alias print_mulf8s127::c#0 = print_mulf8s127::$0 print_mulf8s127::c#4 print_mulf8s127::c#3 print_mulf8s127::c#2 print_mulf8s127::c#1 +Alias print_char_cursor#114 = print_char_cursor#54 +Alias print_char_cursor#115 = print_char_cursor#55 +Alias print_char_cursor#116 = print_char_cursor#56 +Alias print_char_cursor#117 = print_char_cursor#57 +Alias print_char_cursor#118 = print_char_cursor#58 +Alias print_line_cursor#29 = print_line_cursor#60 print_line_cursor#61 print_line_cursor#30 +Alias print_char_cursor#119 = print_char_cursor#59 print_char_cursor#120 print_char_cursor#60 +Alias mulf8u127::return#1 = mulf8u127::return#5 mulf8u127::return#2 +Alias mulf8u127::a#1 = mulf8s127::$0 +Alias mulf8u127::b#1 = mulf8s127::$1 +Alias mulf8u127::return#3 = mulf8u127::return#6 +Alias mulf8s127::a#1 = mulf8s127::a#2 mulf8s127::a#6 +Alias mulf8s127::b#1 = mulf8s127::b#5 mulf8s127::b#3 +Alias mulf8s127::c#0 = mulf8s127::$3 mulf8s127::c#4 +Alias mulf8s127::a#4 = mulf8s127::a#5 +Alias mulf8s127::c#5 = mulf8s127::c#8 +Alias mulf8s127::b#2 = mulf8s127::b#6 +Alias mulf8s127::return#1 = mulf8s127::c#6 mulf8s127::return#4 mulf8s127::return#2 +Alias mulf8s127::c#7 = mulf8s127::c#9 +Alias print_line_cursor#31 = print_line_cursor#62 +Alias print_char_cursor#121 = print_char_cursor#61 Successful SSA optimization Pass2AliasElimination -Alias (signed byte) mulf8s127::b#1 = (signed byte) mulf8s127::b#2 (signed byte) mulf8s127::b#4 -Alias (signed byte) mulf8s127::a#1 = (signed byte) mulf8s127::a#4 (signed byte) mulf8s127::a#3 +Alias mulf8s127::b#1 = mulf8s127::b#2 mulf8s127::b#4 +Alias mulf8s127::a#1 = mulf8s127::a#4 mulf8s127::a#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -2594,115 +2594,115 @@ VARIABLE REGISTER WEIGHTS (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (signed word()) mulf8s127((signed byte) mulf8s127::a , (signed byte) mulf8s127::b) -(signed word~) mulf8s127::$12 4.0 -(signed word~) mulf8s127::$13 4.0 -(signed word~) mulf8s127::$14 4.0 -(signed word~) mulf8s127::$15 4.0 +(signed word~) mulf8s127::$12 2002.0 +(signed word~) mulf8s127::$13 2002.0 +(signed word~) mulf8s127::$14 2002.0 +(signed word~) mulf8s127::$15 2002.0 (signed byte) mulf8s127::a -(signed byte) mulf8s127::a#0 0.3333333333333333 +(signed byte) mulf8s127::a#0 116.83333333333334 (signed byte) mulf8s127::b -(signed byte) mulf8s127::b#0 0.3333333333333333 +(signed byte) mulf8s127::b#0 116.83333333333334 (signed word) mulf8s127::c -(word) mulf8s127::c#0 0.5 -(signed word) mulf8s127::c#1 4.0 -(signed word) mulf8s127::c#11 4.0 -(signed word) mulf8s127::c#2 4.0 -(signed word) mulf8s127::c#3 4.0 -(signed word) mulf8s127::c#5 2.0 -(signed word) mulf8s127::c#7 2.6666666666666665 +(word) mulf8s127::c#0 250.25 +(signed word) mulf8s127::c#1 2002.0 +(signed word) mulf8s127::c#11 2002.0 +(signed word) mulf8s127::c#2 2002.0 +(signed word) mulf8s127::c#3 2002.0 +(signed word) mulf8s127::c#5 1001.0 +(signed word) mulf8s127::c#7 1334.6666666666667 (signed word) mulf8s127::return -(signed word) mulf8s127::return#0 4.0 -(signed word) mulf8s127::return#1 2.0 +(signed word) mulf8s127::return#0 202.0 +(signed word) mulf8s127::return#1 701.0 (word()) mulf8u127((byte) mulf8u127::a , (byte) mulf8u127::b) (byte) mulf8u127::a -(byte) mulf8u127::a#0 2.0 -(byte) mulf8u127::a#1 2.0 -(byte) mulf8u127::a#2 6.0 +(byte) mulf8u127::a#0 101.0 +(byte) mulf8u127::a#1 1001.0 +(byte) mulf8u127::a#2 11103.0 (byte) mulf8u127::b -(byte) mulf8u127::b#0 4.0 -(byte) mulf8u127::b#1 4.0 -(byte) mulf8u127::b#2 3.0 +(byte) mulf8u127::b#0 202.0 +(byte) mulf8u127::b#1 2002.0 +(byte) mulf8u127::b#2 5551.5 (word) mulf8u127::return -(word) mulf8u127::return#0 4.0 -(word) mulf8u127::return#1 1.5 -(word) mulf8u127::return#3 4.0 +(word) mulf8u127::return#0 202.0 +(word) mulf8u127::return#1 2775.75 +(word) mulf8u127::return#3 2002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#3 2.0 -(byte) print_byte::b#4 4.0 -(byte) print_byte::b#5 3.5 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 20002.0 +(byte) print_byte::b#3 101.0 +(byte) print_byte::b#4 202.0 +(byte) print_byte::b#5 55301.75 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#10 6.0 -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 4.0 +(byte) print_char::ch#10 1200003.0 +(byte) print_char::ch#4 200002.0 +(byte) print_char::ch#5 200002.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#122 4.875 -(byte*) print_char_cursor#123 4.75 -(byte*) print_char_cursor#127 2.0 -(byte*) print_char_cursor#131 3.9999999999999996 -(byte*) print_char_cursor#136 4.0 -(byte*) print_char_cursor#141 4.0 -(byte*) print_char_cursor#148 4.0 -(byte*) print_char_cursor#150 4.0 -(byte*) print_char_cursor#19 0.6 -(byte*) print_char_cursor#80 12.0 +(byte*) print_char_cursor#1 1001.0 +(byte*) print_char_cursor#122 390.75 +(byte*) print_char_cursor#123 2556.25 +(byte*) print_char_cursor#127 551.0 +(byte*) print_char_cursor#131 40401.999999999985 +(byte*) print_char_cursor#136 112.0 +(byte*) print_char_cursor#141 22.0 +(byte*) print_char_cursor#148 202.0 +(byte*) print_char_cursor#150 202.0 +(byte*) print_char_cursor#19 22476.300000000003 +(byte*) print_char_cursor#80 1102206.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 0.5421686746987951 -(byte*) print_line_cursor#32 24.0 -(byte*) print_line_cursor#63 8.0 +(byte*) print_line_cursor#1 366.6144578313253 +(byte*) print_line_cursor#32 21003.0 +(byte*) print_line_cursor#63 1214.0 (void()) print_ln() (void()) print_mulf8s127((signed byte) print_mulf8s127::a , (signed byte) print_mulf8s127::b) (signed byte) print_mulf8s127::a -(signed byte) print_mulf8s127::a#10 0.6666666666666666 +(signed byte) print_mulf8s127::a#10 33.666666666666664 (signed byte) print_mulf8s127::b -(signed byte) print_mulf8s127::b#10 0.36363636363636365 +(signed byte) print_mulf8s127::b#10 18.363636363636363 (signed word) print_mulf8s127::c -(signed word) print_mulf8s127::c#0 0.4 +(signed word) print_mulf8s127::c#0 20.2 (void()) print_mulf8u127((byte) print_mulf8u127::a , (byte) print_mulf8u127::b) (byte) print_mulf8u127::a -(byte) print_mulf8u127::a#8 0.6666666666666666 +(byte) print_mulf8u127::a#8 33.666666666666664 (byte) print_mulf8u127::b -(byte) print_mulf8u127::b#10 0.36363636363636365 +(byte) print_mulf8u127::b#10 18.363636363636363 (word) print_mulf8u127::c -(word) print_mulf8u127::c#0 0.4 +(word) print_mulf8u127::c#0 20.2 (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#1 2.0 -(signed byte) print_sbyte::b#2 4.0 -(signed byte) print_sbyte::b#3 1.6666666666666665 -(signed byte) print_sbyte::b#5 4.0 +(signed byte) print_sbyte::b#0 2002.0 +(signed byte) print_sbyte::b#1 101.0 +(signed byte) print_sbyte::b#2 202.0 +(signed byte) print_sbyte::b#3 534.1666666666667 +(signed byte) print_sbyte::b#5 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#3 11.5 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#0 2002.0 +(byte*) print_str::str#3 1026.25 +(byte*) print_str::str#5 101.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 1.3333333333333333 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 517.3333333333334 +(signed word) print_sword::w#4 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 4.0 -(word) print_word::w#2 2.6666666666666665 +(word) print_word::w#0 2002.0 +(word) print_word::w#1 202.0 +(word) print_word::w#2 7034.666666666666 Initial phi equivalence classes [ print_mulf8s127::a#10 ] @@ -3994,43 +3994,41 @@ mulf127_sqr2_hi: .fill 512, >round(((i-255)/127*(i-255)/127)*127/4) REGISTER UPLIFT POTENTIAL REGISTERS -Statement [26] (byte*) print_char_cursor#141 ← (byte*) print_line_cursor#1 [ print_char_cursor#141 print_line_cursor#1 ] ( main:2 [ print_char_cursor#141 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ) always clobbers reg byte a +Statement [26] (byte*) print_char_cursor#141 ← (byte*) print_line_cursor#1 [ print_char_cursor#141 print_line_cursor#1 ] ( main:2 [ print_char_cursor#141 print_line_cursor#1 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a +Statement [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_mulf8s127::a#10 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ print_mulf8s127::b#10 ] -Statement [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ) always clobbers reg byte a -Statement [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ) always clobbers reg byte a +Statement [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } ) always clobbers reg byte a +Statement [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Statement [66] (signed word) print_sword::w#1 ← (signed word) print_mulf8s127::c#0 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [73] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] ) always clobbers reg byte a -Statement [74] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#123) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] ) always clobbers reg byte a -Statement [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [80] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_cursor#80) ← (byte) print_char::ch#10 [ print_char_cursor#80 ] ( main:2::print_mulf8s127:31::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] ) always clobbers reg byte y +Statement [66] (signed word) print_sword::w#1 ← (signed word) print_mulf8s127::c#0 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [73] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] { { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [74] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#123) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] { { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [80] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } ) always clobbers reg byte a +Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_cursor#80) ← (byte) print_char::ch#10 [ print_char_cursor#80 ] ( main:2::print_mulf8s127:31::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8u127:11::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ print_mulf8s127::b#10 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ print_mulf8u127::b#10 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Statement [91] (byte) print_byte::b#1 ← > (word) print_word::w#2 [ print_char_cursor#19 print_word::w#2 print_byte::b#1 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:11::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:13::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:15::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:17::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:19::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:21::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:23::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:25::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] ) always clobbers reg byte a -Statement [93] (byte) print_byte::b#2 ← < (word) print_word::w#2 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:11::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:13::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:15::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:17::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:19::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:21::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:23::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:25::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [97] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Statement [97] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ print_mulf8u127::b#10 ] -Statement [100] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [114] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::print_mulf8s127:31::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:33::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:35::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:37::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:39::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:41::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:43::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:45::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:47::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:49::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:31::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:33::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:35::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:37::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:39::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:41::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:43::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:45::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:47::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:49::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [118] (word) mulf8u127::return#3 ← (word) mulf8u127::return#1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ) always clobbers reg byte a +Statement [100] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [114] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::print_mulf8s127:31::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:31::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [118] (word) mulf8u127::return#3 ← (word) mulf8u127::return#1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ mulf8s127::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:26 [ mulf8s127::b#0 ] -Statement [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ) always clobbers reg byte a -Statement [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ) always clobbers reg byte a -Statement [122] (signed word~) mulf8s127::$13 ← (signed word~) mulf8s127::$12 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ) always clobbers reg byte a -Statement [123] (signed word) mulf8s127::c#1 ← (signed word)(word) mulf8s127::c#0 - (signed word~) mulf8s127::$13 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ) always clobbers reg byte a -Statement [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ) always clobbers reg byte a -Statement [127] (signed word~) mulf8s127::$15 ← (signed word~) mulf8s127::$14 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ) always clobbers reg byte a -Statement [128] (signed word) mulf8s127::c#2 ← (signed word) mulf8s127::c#5 - (signed word~) mulf8s127::$15 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ) always clobbers reg byte a -Statement [132] (signed word) mulf8s127::c#3 ← (signed word) mulf8s127::c#7 - (signed word) $200 [ mulf8s127::c#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] ) always clobbers reg byte a -Statement [135] (signed word) mulf8s127::c#11 ← (signed word)(word) mulf8s127::c#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ) always clobbers reg byte a +Statement [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [122] (signed word~) mulf8s127::$13 ← (signed word~) mulf8s127::$12 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [123] (signed word) mulf8s127::c#1 ← (signed word)(word) mulf8s127::c#0 - (signed word~) mulf8s127::$13 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [127] (signed word~) mulf8s127::$15 ← (signed word~) mulf8s127::$14 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [128] (signed word) mulf8s127::c#2 ← (signed word) mulf8s127::c#5 - (signed word~) mulf8s127::$15 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [132] (signed word) mulf8s127::c#3 ← (signed word) mulf8s127::c#7 - (signed word) $200 [ mulf8s127::c#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [135] (signed word) mulf8s127::c#11 ← (signed word)(word) mulf8s127::c#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a Statement asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf127_sqr1_lo,x sm2: sbcmulf127_sqr2_lo,x staresL sm3: ldamulf127_sqr1_hi,x sm4: sbcmulf127_sqr2_hi,x staresH } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ print_mulf8s127::a#10 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ print_mulf8s127::b#10 ] @@ -4039,51 +4037,49 @@ Removing always clobbered register reg byte x as potential for zp[1]:26 [ mulf8s Removing always clobbered register reg byte a as potential for zp[1]:21 [ print_mulf8u127::a#8 ] Removing always clobbered register reg byte x as potential for zp[1]:21 [ print_mulf8u127::a#8 ] Removing always clobbered register reg byte x as potential for zp[1]:22 [ print_mulf8u127::b#10 ] -Statement [140] (word) mulf8u127::return#1 ← *((const word*) mulf8u127::res) [ mulf8u127::return#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:33::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:35::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:37::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:39::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:41::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:43::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:45::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:47::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:49::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8u127:11::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:13::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:15::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:17::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:19::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:21::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:23::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:25::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] ) always clobbers reg byte a -Statement [144] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [146] *((byte*) print_char_cursor#122) ← *((byte*) print_str::str#3) [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [153] (word) mulf8u127::return#0 ← (word) mulf8u127::return#1 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ) always clobbers reg byte a -Statement [154] (word) print_mulf8u127::c#0 ← (word) mulf8u127::return#0 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ) always clobbers reg byte a -Statement [156] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ) always clobbers reg byte a -Statement [164] (word) print_word::w#1 ← (word) print_mulf8u127::c#0 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ) always clobbers reg byte a -Statement [174] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [176] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [26] (byte*) print_char_cursor#141 ← (byte*) print_line_cursor#1 [ print_char_cursor#141 print_line_cursor#1 ] ( main:2 [ print_char_cursor#141 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ) always clobbers reg byte a -Statement [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ) always clobbers reg byte a -Statement [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ) always clobbers reg byte a -Statement [66] (signed word) print_sword::w#1 ← (signed word) print_mulf8s127::c#0 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:33 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:35 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:37 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:39 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:41 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:43 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:45 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:47 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:49 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [73] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] ) always clobbers reg byte a -Statement [74] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#123) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] ) always clobbers reg byte a -Statement [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [80] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_cursor#80) ← (byte) print_char::ch#10 [ print_char_cursor#80 ] ( main:2::print_mulf8s127:31::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:31::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:33::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:35::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:37::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:39::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:41::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:43::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:45::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:47::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8s127:49::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:11::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:13::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:15::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:17::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:19::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:21::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:23::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] main:2::print_mulf8u127:25::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] ) always clobbers reg byte y -Statement [91] (byte) print_byte::b#1 ← > (word) print_word::w#2 [ print_char_cursor#19 print_word::w#2 print_byte::b#1 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:11::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:13::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:15::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:17::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:19::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:21::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:23::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] main:2::print_mulf8u127:25::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_word::w#2 print_byte::b#1 ] ) always clobbers reg byte a -Statement [93] (byte) print_byte::b#2 ← < (word) print_word::w#2 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:11::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:13::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:15::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:17::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:19::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:21::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:23::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::print_mulf8u127:25::print_word:165 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [97] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a -Statement [100] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [114] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::print_mulf8s127:31::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:33::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:35::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:37::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:39::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:41::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:43::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:45::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:47::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:49::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:31::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:33::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:35::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:37::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:39::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:41::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:43::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:45::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:47::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::print_mulf8s127:49::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [118] (word) mulf8u127::return#3 ← (word) mulf8u127::return#1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ) always clobbers reg byte a -Statement [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ) always clobbers reg byte a -Statement [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ) always clobbers reg byte a -Statement [122] (signed word~) mulf8s127::$13 ← (signed word~) mulf8s127::$12 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ) always clobbers reg byte a -Statement [123] (signed word) mulf8s127::c#1 ← (signed word)(word) mulf8s127::c#0 - (signed word~) mulf8s127::$13 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ) always clobbers reg byte a -Statement [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ) always clobbers reg byte a -Statement [127] (signed word~) mulf8s127::$15 ← (signed word~) mulf8s127::$14 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ) always clobbers reg byte a -Statement [128] (signed word) mulf8s127::c#2 ← (signed word) mulf8s127::c#5 - (signed word~) mulf8s127::$15 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ) always clobbers reg byte a -Statement [132] (signed word) mulf8s127::c#3 ← (signed word) mulf8s127::c#7 - (signed word) $200 [ mulf8s127::c#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] ) always clobbers reg byte a -Statement [135] (signed word) mulf8s127::c#11 ← (signed word)(word) mulf8s127::c#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ) always clobbers reg byte a +Statement [140] (word) mulf8u127::return#1 ← *((const word*) mulf8u127::res) [ mulf8u127::return#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:33::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:35::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:37::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:39::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:41::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:43::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:45::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:47::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:49::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8u127:11::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:13::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:15::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:17::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:19::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:21::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:23::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:25::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } ) always clobbers reg byte a +Statement [144] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] { } main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a reg byte y +Statement [146] *((byte*) print_char_cursor#122) ← *((byte*) print_str::str#3) [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] { } main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a reg byte y +Statement [153] (word) mulf8u127::return#0 ← (word) mulf8u127::return#1 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } ) always clobbers reg byte a +Statement [154] (word) print_mulf8u127::c#0 ← (word) mulf8u127::return#0 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } ) always clobbers reg byte a +Statement [156] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } ) always clobbers reg byte a +Statement [164] (word) print_word::w#1 ← (word) print_mulf8u127::c#0 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } ) always clobbers reg byte a +Statement [174] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [176] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [26] (byte*) print_char_cursor#141 ← (byte*) print_line_cursor#1 [ print_char_cursor#141 print_line_cursor#1 ] ( main:2 [ print_char_cursor#141 print_line_cursor#1 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a +Statement [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::return#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 print_mulf8s127::c#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } ) always clobbers reg byte a +Statement [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#1 print_char_cursor#148 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } ) always clobbers reg byte a +Statement [66] (signed word) print_sword::w#1 ← (signed word) print_mulf8s127::c#0 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [73] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] { { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [74] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#123) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#123 ] ( main:2::print_ln:9 [ print_line_cursor#1 print_char_cursor#123 ] { { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_ln:29 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#122 = print_char_cursor#123 } } main:2::print_mulf8s127:31::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_ln:69 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:11::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:13::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:15::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:17::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:19::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:21::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:23::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } main:2::print_mulf8u127:25::print_ln:167 [ print_line_cursor#1 print_char_cursor#123 ] { { print_line_cursor#1 = print_line_cursor#63 } { print_char_cursor#123 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#19 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#19 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [80] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } } ) always clobbers reg byte a +Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::print_mulf8s127:31::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:33::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:35::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:37::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:39::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:41::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:43::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:45::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:47::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } main:2::print_mulf8s127:49::print_sword:67 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_cursor#80) ← (byte) print_char::ch#10 [ print_char_cursor#80 ] ( main:2::print_mulf8s127:31::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_char:61 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_char:65 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sword:67::print_char:78 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sword:67::print_char:84 [ print_line_cursor#1 print_sword::w#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:99 [ print_line_cursor#1 print_word::w#2 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:99 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:99 [ print_line_cursor#1 print_mulf8s127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:157::print_char:99 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:161::print_char:99 [ print_line_cursor#1 print_mulf8u127::c#0 print_byte::b#5 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92::print_char:102 [ print_line_cursor#1 print_word::w#2 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94::print_char:102 [ print_line_cursor#1 print_char_cursor#80 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110::print_char:102 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_byte:157::print_char:102 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_byte:161::print_char:102 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:59::print_char:107 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:63::print_char:107 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:59::print_char:113 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 print_char_cursor#80 } } main:2::print_mulf8s127:31::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:33::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:35::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:37::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:39::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:41::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:43::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:45::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:47::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8s127:49::print_sbyte:63::print_char:113 [ print_line_cursor#1 print_mulf8s127::c#0 print_sbyte::b#3 print_char_cursor#80 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#80 } } main:2::print_mulf8u127:11::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_char:159 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_char:163 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#80 ] { { print_char_cursor#19 = print_char_cursor#80 } } ) always clobbers reg byte y +Statement [97] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#131 print_byte::b#5 print_byte::$0 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#131 print_byte::b#5 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [100] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:92 [ print_line_cursor#1 print_word::w#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#1 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sword:67::print_word:81::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_mulf8s127::c#0 } { print_word::w#0 = print_word::w#2 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_word:165::print_byte:94 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:59::print_byte:110 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:31::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:33::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:35::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:37::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:39::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:41::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:43::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:45::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:47::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8s127:49::print_sbyte:63::print_byte:110 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 print_char_cursor#131 print_char_cursor#80 } { print_byte::b#0 = print_byte::b#5 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:11::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:13::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:15::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:17::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:19::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:21::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:23::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:25::print_byte:157 [ print_line_cursor#1 print_mulf8u127::b#10 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } { print_char::ch#10 = print_char::ch#5 } { print_char_cursor#19 = print_char_cursor#80 } } main:2::print_mulf8u127:11::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:13::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:15::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:17::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:19::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:21::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:23::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } main:2::print_mulf8u127:25::print_byte:161 [ print_line_cursor#1 print_mulf8u127::c#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#5 print_mulf8u127::b#10 } { print_char_cursor#131 = print_char_cursor#19 print_char_cursor#80 } { print_char::ch#10 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [114] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::print_mulf8s127:31::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:33::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:35::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:37::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:39::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:41::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:43::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:45::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:47::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:49::print_sbyte:59 [ print_line_cursor#1 print_mulf8s127::b#10 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#3 print_mulf8s127::a#10 } { print_char_cursor#127 = print_char_cursor#148 } } main:2::print_mulf8s127:31::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:33::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:35::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:37::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:39::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:41::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:43::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:45::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:47::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } main:2::print_mulf8s127:49::print_sbyte:63 [ print_line_cursor#1 print_mulf8s127::c#0 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#2 = print_sbyte::b#3 print_mulf8s127::b#10 } { print_char_cursor#127 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [118] (word) mulf8u127::return#3 ← (word) mulf8u127::return#1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } ) always clobbers reg byte a +Statement [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$12 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [122] (signed word~) mulf8s127::$13 ← (signed word~) mulf8s127::$12 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#0 mulf8s127::$13 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [123] (signed word) mulf8s127::c#1 ← (signed word)(word) mulf8s127::c#0 - (signed word~) mulf8s127::$13 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$14 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [127] (signed word~) mulf8s127::$15 ← (signed word~) mulf8s127::$14 << (byte) 1 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#5 mulf8s127::$15 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [128] (signed word) mulf8s127::c#2 ← (signed word) mulf8s127::c#5 - (signed word~) mulf8s127::$15 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#2 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [132] (signed word) mulf8s127::c#3 ← (signed word) mulf8s127::c#7 - (signed word) $200 [ mulf8s127::c#3 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::c#3 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a +Statement [135] (signed word) mulf8s127::c#11 ← (signed word)(word) mulf8s127::c#0 [ mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] ( main:2::print_mulf8s127:31::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:33::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:35::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:37::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:39::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:41::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:43::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:45::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:47::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } main:2::print_mulf8s127:49::mulf8s127:54 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8s127::c#11 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } } ) always clobbers reg byte a Statement asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf127_sqr1_lo,x sm2: sbcmulf127_sqr2_lo,x staresL sm3: ldamulf127_sqr1_hi,x sm4: sbcmulf127_sqr2_hi,x staresH } always clobbers reg byte a reg byte x -Statement [140] (word) mulf8u127::return#1 ← *((const word*) mulf8u127::res) [ mulf8u127::return#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:33::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:35::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:37::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:39::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:41::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:43::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:45::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:47::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8s127:49::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] main:2::print_mulf8u127:11::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:13::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:15::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:17::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:19::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:21::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:23::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] main:2::print_mulf8u127:25::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] ) always clobbers reg byte a -Statement [144] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [146] *((byte*) print_char_cursor#122) ← *((byte*) print_str::str#3) [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [153] (word) mulf8u127::return#0 ← (word) mulf8u127::return#1 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ) always clobbers reg byte a -Statement [154] (word) print_mulf8u127::c#0 ← (word) mulf8u127::return#0 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ) always clobbers reg byte a -Statement [156] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ) always clobbers reg byte a -Statement [164] (word) print_word::w#1 ← (word) print_mulf8u127::c#0 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:13 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:15 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:17 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:19 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:21 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:23 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] main:2::print_mulf8u127:25 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ) always clobbers reg byte a -Statement [174] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [176] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [140] (word) mulf8u127::return#1 ← *((const word*) mulf8u127::res) [ mulf8u127::return#1 ] ( main:2::print_mulf8s127:31::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:33::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:35::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:37::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:39::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:41::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:43::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:45::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:47::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8s127:49::mulf8s127:54::mulf8u127:117 [ print_line_cursor#1 print_mulf8s127::a#10 print_mulf8s127::b#10 mulf8s127::a#0 mulf8s127::b#0 mulf8u127::return#1 ] { { mulf8s127::a#0 = print_mulf8s127::a#10 } { mulf8s127::b#0 = print_mulf8s127::b#10 } { mulf8s127::return#0 = mulf8s127::return#1 } { mulf8u127::a#1 = mulf8u127::a#2 } { mulf8u127::b#1 = mulf8u127::b#2 } { mulf8u127::return#1 = mulf8u127::return#3 } } main:2::print_mulf8u127:11::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:13::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:15::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:17::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:19::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:21::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:23::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:25::mulf8u127:152 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#1 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } ) always clobbers reg byte a +Statement [144] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] { } main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a reg byte y +Statement [146] *((byte*) print_char_cursor#122) ← *((byte*) print_str::str#3) [ print_char_cursor#122 print_str::str#3 ] ( main:2::print_str:7 [ print_char_cursor#122 print_str::str#3 ] { } main:2::print_str:27 [ print_line_cursor#1 print_char_cursor#122 print_str::str#3 ] { { print_char_cursor#136 = print_char_cursor#141 } } ) always clobbers reg byte a reg byte y +Statement [153] (word) mulf8u127::return#0 ← (word) mulf8u127::return#1 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 mulf8u127::return#0 ] { { mulf8u127::a#0 = mulf8u127::a#2 print_mulf8u127::a#8 } { mulf8u127::b#0 = mulf8u127::b#2 print_mulf8u127::b#10 } { mulf8u127::return#0 = mulf8u127::return#1 } } ) always clobbers reg byte a +Statement [154] (word) print_mulf8u127::c#0 ← (word) mulf8u127::return#0 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_mulf8u127::a#8 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } ) always clobbers reg byte a +Statement [156] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#150 print_mulf8u127::b#10 print_mulf8u127::c#0 ] { { print_byte::b#3 = print_byte::b#5 print_mulf8u127::a#8 } { print_char_cursor#131 = print_char_cursor#150 } } ) always clobbers reg byte a +Statement [164] (word) print_word::w#1 ← (word) print_mulf8u127::c#0 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] ( main:2::print_mulf8u127:11 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:13 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:15 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:17 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:19 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:21 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:23 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } main:2::print_mulf8u127:25 [ print_line_cursor#1 print_char_cursor#19 print_word::w#1 ] { { print_word::w#1 = print_word::w#2 print_mulf8u127::c#0 } } ) always clobbers reg byte a +Statement [174] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [176] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:170 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ print_mulf8s127::a#10 ] : zp[1]:2 , reg byte y , Potential registers zp[1]:3 [ print_mulf8s127::b#10 ] : zp[1]:3 , Potential registers zp[2]:4 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] : zp[2]:4 , @@ -4117,47 +4113,49 @@ Potential registers zp[2]:47 [ mulf8u127::return#0 ] : zp[2]:47 , Potential registers zp[2]:49 [ print_mulf8u127::c#0 ] : zp[2]:49 , REGISTER UPLIFT SCOPES -Uplift Scope [] 55.23: zp[2]:9 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] 32.54: zp[2]:4 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] -Uplift Scope [mulf8s127] 22.67: zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 ] 4: zp[2]:27 [ mulf8s127::return#0 ] 4: zp[2]:37 [ mulf8s127::$12 ] 4: zp[2]:39 [ mulf8s127::$13 ] 4: zp[2]:41 [ mulf8s127::$14 ] 4: zp[2]:43 [ mulf8s127::$15 ] 0.5: zp[2]:35 [ mulf8s127::c#0 ] 0.33: zp[1]:25 [ mulf8s127::a#0 ] 0.33: zp[1]:26 [ mulf8s127::b#0 ] -Uplift Scope [memset] 36.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:19 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [mulf8u127] 11: zp[1]:18 [ mulf8u127::b#2 mulf8u127::b#1 mulf8u127::b#0 ] 10: zp[1]:17 [ mulf8u127::a#2 mulf8u127::a#1 mulf8u127::a#0 ] 4: zp[2]:33 [ mulf8u127::return#3 ] 4: zp[2]:47 [ mulf8u127::return#0 ] 1.5: zp[2]:45 [ mulf8u127::return#1 ] -Uplift Scope [print_byte] 21.5: zp[1]:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:31 [ print_byte::$0 ] 4: zp[1]:32 [ print_byte::$2 ] -Uplift Scope [print_sbyte] 15.67: zp[1]:14 [ 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[1]:8 [ print_char::ch#10 print_char::ch#4 print_char::ch#5 ] -Uplift Scope [print_word] 10.67: zp[2]:11 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplift Scope [print_sword] 9.33: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplift Scope [print_mulf8u127] 0.67: zp[1]:21 [ print_mulf8u127::a#8 ] 0.4: zp[2]:49 [ print_mulf8u127::c#0 ] 0.36: zp[1]:22 [ print_mulf8u127::b#10 ] -Uplift Scope [print_mulf8s127] 0.67: zp[1]:2 [ print_mulf8s127::a#10 ] 0.4: zp[2]:29 [ print_mulf8s127::c#0 ] 0.36: zp[1]:3 [ print_mulf8s127::b#10 ] +Uplift Scope [print_char] 1,600,007: zp[1]:8 [ print_char::ch#10 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [] 1,170,121.3: zp[2]:9 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] 22,583.61: zp[2]:4 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] +Uplift Scope [print_byte] 200,002: zp[1]:31 [ print_byte::$0 ] 200,002: zp[1]:32 [ print_byte::$2 ] 97,610.75: zp[1]:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Uplift Scope [memset] 33,336.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [mulf8u127] 12,205: zp[1]:17 [ mulf8u127::a#2 mulf8u127::a#1 mulf8u127::a#0 ] 7,755.5: zp[1]:18 [ mulf8u127::b#2 mulf8u127::b#1 mulf8u127::b#0 ] 2,775.75: zp[2]:45 [ mulf8u127::return#1 ] 2,002: zp[2]:33 [ mulf8u127::return#3 ] 202: zp[2]:47 [ mulf8u127::return#0 ] +Uplift Scope [mulf8s127] 11,044.67: zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 ] 2,002: zp[2]:37 [ mulf8s127::$12 ] 2,002: zp[2]:39 [ mulf8s127::$13 ] 2,002: zp[2]:41 [ mulf8s127::$14 ] 2,002: zp[2]:43 [ mulf8s127::$15 ] 250.25: zp[2]:35 [ mulf8s127::c#0 ] 202: zp[2]:27 [ mulf8s127::return#0 ] 116.83: zp[1]:25 [ mulf8s127::a#0 ] 116.83: zp[1]:26 [ mulf8s127::b#0 ] +Uplift Scope [print_word] 9,238.67: zp[2]:11 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplift Scope [print_sbyte] 4,841.17: zp[1]:14 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] +Uplift Scope [print_sword] 4,521.33: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [print_str] 3,129.25: zp[2]:19 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplift Scope [print_mulf8u127] 33.67: zp[1]:21 [ print_mulf8u127::a#8 ] 20.2: zp[2]:49 [ print_mulf8u127::c#0 ] 18.36: zp[1]:22 [ print_mulf8u127::b#10 ] +Uplift Scope [print_mulf8s127] 33.67: zp[1]:2 [ print_mulf8s127::a#10 ] 20.2: zp[2]:29 [ print_mulf8s127::c#0 ] 18.36: zp[1]:3 [ print_mulf8s127::b#10 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] -Uplifting [] best 3057 combination zp[2]:9 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] zp[2]:4 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] -Uplifting [mulf8s127] best 3044 combination zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 ] zp[2]:27 [ mulf8s127::return#0 ] zp[2]:37 [ mulf8s127::$12 ] zp[2]:39 [ mulf8s127::$13 ] zp[2]:41 [ mulf8s127::$14 ] zp[2]:43 [ mulf8s127::$15 ] zp[2]:35 [ mulf8s127::c#0 ] reg byte y [ mulf8s127::a#0 ] zp[1]:26 [ mulf8s127::b#0 ] -Uplifting [memset] best 3044 combination zp[2]:23 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 3044 combination zp[2]:19 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [mulf8u127] best 3028 combination reg byte x [ mulf8u127::b#2 mulf8u127::b#1 mulf8u127::b#0 ] reg byte a [ mulf8u127::a#2 mulf8u127::a#1 mulf8u127::a#0 ] zp[2]:33 [ mulf8u127::return#3 ] zp[2]:47 [ mulf8u127::return#0 ] zp[2]:45 [ mulf8u127::return#1 ] -Uplifting [print_byte] best 3005 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_sbyte] best 2993 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 2960 combination reg byte a [ print_char::ch#10 print_char::ch#4 print_char::ch#5 ] -Uplifting [print_word] best 2960 combination zp[2]:11 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplifting [print_sword] best 2960 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [print_mulf8u127] best 2936 combination reg byte y [ print_mulf8u127::a#8 ] zp[2]:49 [ print_mulf8u127::c#0 ] zp[1]:22 [ print_mulf8u127::b#10 ] -Uplifting [print_mulf8s127] best 2904 combination reg byte y [ print_mulf8s127::a#10 ] zp[2]:29 [ print_mulf8s127::c#0 ] zp[1]:3 [ print_mulf8s127::b#10 ] -Uplifting [RADIX] best 2904 combination -Uplifting [print_ln] best 2904 combination -Uplifting [print_cls] best 2904 combination -Uplifting [main] best 2904 combination +Uplifting [print_char] best 3024 combination reg byte a [ print_char::ch#10 print_char::ch#4 print_char::ch#5 ] +Uplifting [] best 3024 combination zp[2]:9 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] zp[2]:4 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] +Uplifting [print_byte] best 2997 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Uplifting [memset] best 2997 combination zp[2]:23 [ memset::dst#2 memset::dst#1 ] +Uplifting [mulf8u127] best 2979 combination reg byte x [ mulf8u127::a#2 mulf8u127::a#1 mulf8u127::a#0 ] reg byte a [ mulf8u127::b#2 mulf8u127::b#1 mulf8u127::b#0 ] zp[2]:45 [ mulf8u127::return#1 ] zp[2]:33 [ mulf8u127::return#3 ] zp[2]:47 [ mulf8u127::return#0 ] +Uplifting [mulf8s127] best 2968 combination zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 ] zp[2]:37 [ mulf8s127::$12 ] zp[2]:39 [ mulf8s127::$13 ] zp[2]:41 [ mulf8s127::$14 ] zp[2]:43 [ mulf8s127::$15 ] zp[2]:35 [ mulf8s127::c#0 ] zp[2]:27 [ mulf8s127::return#0 ] zp[1]:25 [ mulf8s127::a#0 ] reg byte y [ mulf8s127::b#0 ] +Uplifting [print_word] best 2968 combination zp[2]:11 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplifting [print_sbyte] best 2956 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_sword] best 2956 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_str] best 2956 combination zp[2]:19 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [print_mulf8u127] best 2934 combination reg byte y [ print_mulf8u127::a#8 ] zp[2]:49 [ print_mulf8u127::c#0 ] zp[1]:22 [ print_mulf8u127::b#10 ] +Uplifting [print_mulf8s127] best 2934 combination zp[1]:2 [ print_mulf8s127::a#10 ] zp[2]:29 [ print_mulf8s127::c#0 ] zp[1]:3 [ print_mulf8s127::b#10 ] +Uplifting [RADIX] best 2934 combination +Uplifting [print_ln] best 2934 combination +Uplifting [print_cls] best 2934 combination +Uplifting [main] best 2934 combination +Attempting to uplift remaining variables inzp[1]:25 [ mulf8s127::a#0 ] +Uplifting [mulf8s127] best 2934 combination zp[1]:25 [ mulf8s127::a#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ print_mulf8s127::a#10 ] +Uplifting [print_mulf8s127] best 2934 combination zp[1]:2 [ print_mulf8s127::a#10 ] Attempting to uplift remaining variables inzp[1]:3 [ print_mulf8s127::b#10 ] -Uplifting [print_mulf8s127] best 2904 combination zp[1]:3 [ print_mulf8s127::b#10 ] +Uplifting [print_mulf8s127] best 2934 combination zp[1]:3 [ print_mulf8s127::b#10 ] Attempting to uplift remaining variables inzp[1]:22 [ print_mulf8u127::b#10 ] -Uplifting [print_mulf8u127] best 2904 combination zp[1]:22 [ print_mulf8u127::b#10 ] -Attempting to uplift remaining variables inzp[1]:26 [ mulf8s127::b#0 ] -Uplifting [mulf8s127] best 2904 combination zp[1]:26 [ mulf8s127::b#0 ] +Uplifting [print_mulf8u127] best 2934 combination zp[1]:22 [ print_mulf8u127::b#10 ] Coalescing zero page register [ zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 ] ] with [ zp[2]:35 [ mulf8s127::c#0 ] ] - score: 2 -Coalescing zero page register [ zp[1]:3 [ print_mulf8s127::b#10 ] ] with [ zp[1]:26 [ mulf8s127::b#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:2 [ print_mulf8s127::a#10 ] ] with [ zp[1]:25 [ mulf8s127::a#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp[2]:11 [ print_word::w#2 print_word::w#1 print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 ] ] with [ zp[2]:29 [ print_mulf8s127::c#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:15 [ mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 ] ] with [ zp[2]:27 [ mulf8s127::return#0 ] ] - score: 1 @@ -4169,14 +4167,15 @@ Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 prin Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 print_mulf8s127::c#0 mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 mulf8s127::return#0 ] ] with [ zp[2]:47 [ mulf8u127::return#0 print_mulf8u127::c#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 print_mulf8s127::c#0 mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 mulf8s127::return#0 mulf8u127::return#0 print_mulf8u127::c#0 ] ] with [ zp[2]:33 [ mulf8u127::return#3 mulf8u127::return#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:19 [ print_str::str#3 print_str::str#5 print_str::str#0 ] ] with [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 print_mulf8s127::c#0 mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 mulf8s127::return#0 mulf8u127::return#0 print_mulf8u127::c#0 mulf8u127::return#3 mulf8u127::return#1 ] ] -Coalescing zero page register [ zp[1]:22 [ print_mulf8u127::b#10 ] ] with [ zp[1]:3 [ print_mulf8s127::b#10 mulf8s127::b#0 ] ] +Coalescing zero page register [ zp[1]:22 [ print_mulf8u127::b#10 ] ] with [ zp[1]:2 [ print_mulf8s127::a#10 mulf8s127::a#0 ] ] Coalescing zero page register [ zp[2]:37 [ mulf8s127::$12 mulf8s127::$13 ] ] with [ zp[2]:23 [ memset::dst#2 memset::dst#1 ] ] -Allocated (was zp[2]:4) zp[2]:2 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] -Allocated (was zp[2]:9) zp[2]:4 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] -Allocated (was zp[2]:19) zp[2]:6 [ print_str::str#3 print_str::str#5 print_str::str#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 print_mulf8s127::c#0 mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 mulf8s127::return#0 mulf8u127::return#0 print_mulf8u127::c#0 mulf8u127::return#3 mulf8u127::return#1 ] -Allocated (was zp[1]:22) zp[1]:8 [ print_mulf8u127::b#10 print_mulf8s127::b#10 mulf8s127::b#0 ] -Allocated (was zp[2]:37) zp[2]:9 [ mulf8s127::$12 mulf8s127::$13 memset::dst#2 memset::dst#1 ] -Allocated (was zp[2]:41) zp[2]:11 [ mulf8s127::$14 mulf8s127::$15 ] +Allocated (was zp[1]:3) zp[1]:2 [ print_mulf8s127::b#10 ] +Allocated (was zp[2]:4) zp[2]:3 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#1 ] +Allocated (was zp[2]:9) zp[2]:5 [ print_char_cursor#80 print_char_cursor#131 print_char_cursor#123 print_char_cursor#122 print_char_cursor#19 print_char_cursor#127 print_char_cursor#150 print_char_cursor#148 print_char_cursor#136 print_char_cursor#141 print_char_cursor#1 ] +Allocated (was zp[2]:19) zp[2]:7 [ print_str::str#3 print_str::str#5 print_str::str#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#2 print_word::w#1 print_word::w#0 print_mulf8s127::c#0 mulf8s127::return#1 mulf8s127::c#7 mulf8s127::c#5 mulf8s127::c#1 mulf8s127::c#11 mulf8s127::c#2 mulf8s127::c#3 mulf8s127::c#0 mulf8s127::return#0 mulf8u127::return#0 print_mulf8u127::c#0 mulf8u127::return#3 mulf8u127::return#1 ] +Allocated (was zp[1]:22) zp[1]:9 [ print_mulf8u127::b#10 print_mulf8s127::a#10 mulf8s127::a#0 ] +Allocated (was zp[2]:37) zp[2]:10 [ mulf8s127::$12 mulf8s127::$13 memset::dst#2 memset::dst#1 ] +Allocated (was zp[2]:41) zp[2]:12 [ mulf8s127::$14 mulf8s127::$15 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -4190,8 +4189,8 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_char_cursor = 4 - .label print_line_cursor = 2 + .label print_char_cursor = 5 + .label print_line_cursor = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -4400,8 +4399,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#0] -- vbsz1=vbsc1 lda #0 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #0 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #0 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [32] phi from main::@13 to main::@14 [phi:main::@13->main::@14] __b14_from___b13: @@ -4414,8 +4414,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [34] phi from main::@14 to main::@15 [phi:main::@14->main::@15] __b15_from___b14: @@ -4428,8 +4429,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@15->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@15->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@15->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [36] phi from main::@15 to main::@16 [phi:main::@15->main::@16] __b16_from___b15: @@ -4442,8 +4444,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $40 [phi:main::@16->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@16->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@16->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [38] phi from main::@16 to main::@17 [phi:main::@16->main::@17] __b17_from___b16: @@ -4456,8 +4459,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$40 [phi:main::@17->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@17->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@17->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [40] phi from main::@17 to main::@18 [phi:main::@17->main::@18] __b18_from___b17: @@ -4470,8 +4474,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [42] phi from main::@18 to main::@19 [phi:main::@18->main::@19] __b19_from___b18: @@ -4484,8 +4489,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // [44] phi from main::@19 to main::@20 [phi:main::@19->main::@20] __b20_from___b19: @@ -4498,8 +4504,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@20->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@20->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@20->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // [46] phi from main::@20 to main::@21 [phi:main::@20->main::@21] __b21_from___b20: @@ -4512,8 +4519,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$7f [phi:main::@21->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@21->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@21->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // [48] phi from main::@21 to main::@22 [phi:main::@21->main::@22] __b22_from___b21: @@ -4526,8 +4534,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 jmp __breturn // main::@return @@ -4540,12 +4549,14 @@ main: { .byte 0 } // print_mulf8s127 -// print_mulf8s127(signed byte register(Y) a, signed byte zp(8) b) +// print_mulf8s127(signed byte zp(9) a, signed byte zp(2) b) print_mulf8s127: { - .label c = 6 - .label b = 8 + .label c = 7 + .label a = 9 + .label b = 2 // [52] (signed byte) mulf8s127::a#0 ← (signed byte) print_mulf8s127::a#10 - // [53] (signed byte) mulf8s127::b#0 ← (signed byte) print_mulf8s127::b#10 + // [53] (signed byte) mulf8s127::b#0 ← (signed byte) print_mulf8s127::b#10 -- vbsyy=vbsz1 + ldy.z b // [54] call mulf8s127 jsr mulf8s127 // [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 @@ -4553,9 +4564,8 @@ print_mulf8s127: { // print_mulf8s127::@1 __b1: // [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 - // [57] (signed byte) print_sbyte::b#1 ← (signed byte) print_mulf8s127::a#10 -- vbsxx=vbsyy - tya - tax + // [57] (signed byte) print_sbyte::b#1 ← (signed byte) print_mulf8s127::a#10 -- vbsxx=vbsz1 + ldx.z a // [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -4660,9 +4670,9 @@ print_ln: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp(6) w) +// print_sword(signed word zp(7) w) print_sword: { - .label w = 6 + .label w = 7 // [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 bmi __b1_from_print_sword @@ -4741,12 +4751,11 @@ print_char: { } // print_word // Print a word as HEX -// print_word(word zp(6) w) +// print_word(word zp(7) w) print_word: { - .label w = 6 + .label w = 7 // [91] (byte) print_byte::b#1 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [92] call print_byte // [96] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -4757,8 +4766,7 @@ print_word: { // print_word::@1 __b1: // [93] (byte) print_byte::b#2 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [94] call print_byte // [96] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -4873,19 +4881,19 @@ print_sbyte: { jmp __b2_from___b4 } // mulf8s127 -// mulf8s127(signed byte register(Y) a, signed byte zp(8) b) +// mulf8s127(signed byte zp(9) a, signed byte register(Y) b) mulf8s127: { - .label __12 = 9 - .label __13 = 9 - .label __14 = $b - .label __15 = $b - .label b = 8 - .label return = 6 - .label c = 6 - // [115] (byte) mulf8u127::a#1 ← (byte)(signed byte) mulf8s127::a#0 -- vbuaa=vbuyy + .label __12 = $a + .label __13 = $a + .label __14 = $c + .label __15 = $c + .label a = 9 + .label return = 7 + .label c = 7 + // [115] (byte) mulf8u127::a#1 ← (byte)(signed byte) mulf8s127::a#0 -- vbuxx=vbuz1 + ldx.z a + // [116] (byte) mulf8u127::b#1 ← (byte)(signed byte) mulf8s127::b#0 -- vbuaa=vbuyy tya - // [116] (byte) mulf8u127::b#1 ← (byte)(signed byte) mulf8s127::b#0 -- vbuxx=vbuz1 - ldx.z b // [117] call mulf8u127 // [136] phi from mulf8s127 to mulf8u127 [phi:mulf8s127->mulf8u127] mulf8u127_from_mulf8s127: @@ -4897,14 +4905,15 @@ mulf8s127: { // mulf8s127::@7 __b7: // [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 - // [120] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@9 -- vbsyy_ge_0_then_la1 - cpy #0 + // [120] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@9 -- vbsz1_ge_0_then_la1 + lda.z a + cmp #0 bpl __b9 jmp __b4 // mulf8s127::@4 __b4: - // [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 -- vwsz1=_sword_vbsz2 - lda.z b + // [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 -- vwsz1=_sword_vbsyy + tya sta.z __12 ora #$7f bmi !+ @@ -4929,15 +4938,14 @@ mulf8s127: { jmp __b1 // mulf8s127::@1 __b1: - // [125] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@2 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 + // [125] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@2 -- vbsyy_ge_0_then_la1 + cpy #0 bpl __b2_from___b1 jmp __b5 // mulf8s127::@5 __b5: - // [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 -- vwsz1=_sword_vbsyy - tya + // [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 -- vwsz1=_sword_vbsz2 + lda.z a sta.z __14 ora #$7f bmi !+ @@ -4962,15 +4970,15 @@ mulf8s127: { jmp __b2 // mulf8s127::@2 __b2: - // [130] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsyy_ge_0_then_la1 - cpy #0 + // [130] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsz1_ge_0_then_la1 + lda.z a + cmp #0 bpl __b3_from___b2 jmp __b8 // mulf8s127::@8 __b8: - // [131] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 + // [131] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsyy_ge_0_then_la1 + cpy #0 bpl __b3_from___b8 jmp __b6 // mulf8s127::@6 @@ -5004,18 +5012,18 @@ mulf8s127: { jmp __b1_from___b9 } // mulf8u127 -// mulf8u127(byte register(A) a, byte register(X) b) +// mulf8u127(byte register(X) a, byte register(A) b) mulf8u127: { .label memA = $fc .label memB = $fd .label res = $fe .label resL = $fe .label resH = $ff - .label return = 6 - // [137] *((const byte*) mulf8u127::memA) ← (byte) mulf8u127::a#2 -- _deref_pbuc1=vbuaa - sta memA - // [138] *((const byte*) mulf8u127::memB) ← (byte) mulf8u127::b#2 -- _deref_pbuc1=vbuxx - stx memB + .label return = 7 + // [137] *((const byte*) mulf8u127::memA) ← (byte) mulf8u127::a#2 -- _deref_pbuc1=vbuxx + stx memA + // [138] *((const byte*) mulf8u127::memB) ← (byte) mulf8u127::b#2 -- _deref_pbuc1=vbuaa + sta memB // asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf127_sqr1_lo,x sm2: sbcmulf127_sqr2_lo,x staresL sm3: ldamulf127_sqr1_hi,x sm4: sbcmulf127_sqr2_hi,x staresH } lda memA sta sm1+1 @@ -5048,9 +5056,9 @@ mulf8u127: { } // print_str // Print a zero-terminated string -// print_str(byte* zp(6) str) +// print_str(byte* zp(7) str) print_str: { - .label str = 6 + .label str = 7 // [143] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] __b1_from_print_str: __b1_from___b2: @@ -5089,14 +5097,15 @@ print_str: { jmp __b1_from___b2 } // print_mulf8u127 -// print_mulf8u127(byte register(Y) a, byte zp(8) b) +// print_mulf8u127(byte register(Y) a, byte zp(9) b) print_mulf8u127: { - .label c = 6 - .label b = 8 - // [150] (byte) mulf8u127::a#0 ← (byte) print_mulf8u127::a#8 -- vbuaa=vbuyy + .label c = 7 + .label b = 9 + // [150] (byte) mulf8u127::a#0 ← (byte) print_mulf8u127::a#8 -- vbuxx=vbuyy tya - // [151] (byte) mulf8u127::b#0 ← (byte) print_mulf8u127::b#10 -- vbuxx=vbuz1 - ldx.z b + tax + // [151] (byte) mulf8u127::b#0 ← (byte) print_mulf8u127::b#10 -- vbuaa=vbuz1 + lda.z b // [152] call mulf8u127 // [136] phi from print_mulf8u127 to mulf8u127 [phi:print_mulf8u127->mulf8u127] mulf8u127_from_print_mulf8u127: @@ -5203,7 +5212,7 @@ memset: { .const num = $3e8 .label str = $400 .label end = str+num - .label dst = 9 + .label dst = $a // [173] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: // [173] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 @@ -5338,13 +5347,12 @@ Replacing instruction ldy #$7f with TAY Replacing instruction ldy #$40 with TAY Replacing instruction ldy #$c0 with TAY Replacing instruction ldy #$ff with TAY -Replacing instruction ldy #0 with TAY -Replacing instruction ldy #$40 with TAY -Replacing instruction ldy #-$40 with TAY -Replacing instruction ldy #$7f with TAY -Replacing instruction ldy #-$7f with TAY -Removing instruction lda memA -Removing instruction ldx memB +Removing instruction lda #0 +Removing instruction lda #$40 +Removing instruction lda #-$40 +Removing instruction lda #$7f +Removing instruction lda #-$7f +Replacing instruction lda memA with TXA Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b1_from___b1 with __b1 @@ -5575,8 +5583,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:9 22.0 -(byte*) memset::dst#2 dst zp[2]:9 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:10 20002.0 +(byte*) memset::dst#2 dst zp[2]:10 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -5589,10 +5597,10 @@ FINAL SYMBOL TABLE (const byte*) mulf127_sqr2_hi[(number) $200] = kickasm {{ .fill 512, >round(((i-255)/127*(i-255)/127)*127/4) }} (const byte*) mulf127_sqr2_lo[(number) $200] = kickasm {{ .fill 512, @1] // @1 @@ -5939,8 +5947,8 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#0] -- vbsz1=vbsc1 lda #0 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#1] -- vbsyy=vbsc1 - tay + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) 0 [phi:main::@13->print_mulf8s127#1] -- vbsz1=vbsc1 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [32] phi from main::@13 to main::@14 [phi:main::@13->main::@14] // main::@14 @@ -5950,8 +5958,8 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#1] -- vbsyy=vbsc1 - tay + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@14->print_mulf8s127#1] -- vbsz1=vbsc1 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [34] phi from main::@14 to main::@15 [phi:main::@14->main::@15] // main::@15 @@ -5961,8 +5969,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@15->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@15->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@15->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [36] phi from main::@15 to main::@16 [phi:main::@15->main::@16] // main::@16 @@ -5972,8 +5981,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $40 [phi:main::@16->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@16->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@16->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [38] phi from main::@16 to main::@17 [phi:main::@16->main::@17] // main::@17 @@ -5983,8 +5993,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$40 [phi:main::@17->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@17->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$40 + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $40 [phi:main::@17->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$40 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [40] phi from main::@17 to main::@18 [phi:main::@17->main::@18] // main::@18 @@ -5994,8 +6005,8 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$40 sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#1] -- vbsyy=vbsc1 - tay + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$40 [phi:main::@18->print_mulf8s127#1] -- vbsz1=vbsc1 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [42] phi from main::@18 to main::@19 [phi:main::@18->main::@19] // main::@19 @@ -6005,8 +6016,8 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#1] -- vbsyy=vbsc1 - tay + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@19->print_mulf8s127#1] -- vbsz1=vbsc1 + sta.z print_mulf8s127.a jsr print_mulf8s127 // [44] phi from main::@19 to main::@20 [phi:main::@19->main::@20] // main::@20 @@ -6016,8 +6027,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) $7f [phi:main::@20->print_mulf8s127#0] -- vbsz1=vbsc1 lda #$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@20->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #-$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@20->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #-$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // [46] phi from main::@20 to main::@21 [phi:main::@20->main::@21] // main::@21 @@ -6027,8 +6039,9 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$7f [phi:main::@21->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@21->print_mulf8s127#1] -- vbsyy=vbsc1 - ldy #$7f + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) $7f [phi:main::@21->print_mulf8s127#1] -- vbsz1=vbsc1 + lda #$7f + sta.z print_mulf8s127.a jsr print_mulf8s127 // [48] phi from main::@21 to main::@22 [phi:main::@21->main::@22] // main::@22 @@ -6038,8 +6051,8 @@ main: { // [51] phi (signed byte) print_mulf8s127::b#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#0] -- vbsz1=vbsc1 lda #-$7f sta.z print_mulf8s127.b - // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#1] -- vbsyy=vbsc1 - tay + // [51] phi (signed byte) print_mulf8s127::a#10 = (signed byte) -$7f [phi:main::@22->print_mulf8s127#1] -- vbsz1=vbsc1 + sta.z print_mulf8s127.a jsr print_mulf8s127 // main::@return // } @@ -6051,13 +6064,15 @@ main: { .byte 0 } // print_mulf8s127 -// print_mulf8s127(signed byte register(Y) a, signed byte zp(8) b) +// print_mulf8s127(signed byte zp(9) a, signed byte zp(2) b) print_mulf8s127: { - .label c = 6 - .label b = 8 + .label c = 7 + .label a = 9 + .label b = 2 // mulf8s127(a,b) // [52] (signed byte) mulf8s127::a#0 ← (signed byte) print_mulf8s127::a#10 - // [53] (signed byte) mulf8s127::b#0 ← (signed byte) print_mulf8s127::b#10 + // [53] (signed byte) mulf8s127::b#0 ← (signed byte) print_mulf8s127::b#10 -- vbsyy=vbsz1 + ldy.z b // [54] call mulf8s127 jsr mulf8s127 // [55] (signed word) mulf8s127::return#0 ← (signed word) mulf8s127::return#1 @@ -6065,9 +6080,8 @@ print_mulf8s127: { // c = mulf8s127(a,b) // [56] (signed word) print_mulf8s127::c#0 ← (signed word) mulf8s127::return#0 // print_sbyte(a) - // [57] (signed byte) print_sbyte::b#1 ← (signed byte) print_mulf8s127::a#10 -- vbsxx=vbsyy - tya - tax + // [57] (signed byte) print_sbyte::b#1 ← (signed byte) print_mulf8s127::a#10 -- vbsxx=vbsz1 + ldx.z a // [58] (byte*) print_char_cursor#148 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -6157,9 +6171,9 @@ print_ln: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp(6) w) +// print_sword(signed word zp(7) w) print_sword: { - .label w = 6 + .label w = 7 // if(w<0) // [76] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 @@ -6230,13 +6244,12 @@ print_char: { } // print_word // Print a word as HEX -// print_word(word zp(6) w) +// print_word(word zp(7) w) print_word: { - .label w = 6 + .label w = 7 // print_byte(>w) // [91] (byte) print_byte::b#1 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [92] call print_byte // [96] phi from print_word to print_byte [phi:print_word->print_byte] // [96] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#19 [phi:print_word->print_byte#0] -- register_copy @@ -6245,8 +6258,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [96] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy @@ -6349,20 +6361,20 @@ print_sbyte: { jmp __b2 } // mulf8s127 -// mulf8s127(signed byte register(Y) a, signed byte zp(8) b) +// mulf8s127(signed byte zp(9) a, signed byte register(Y) b) mulf8s127: { - .label __12 = 9 - .label __13 = 9 - .label __14 = $b - .label __15 = $b - .label b = 8 - .label return = 6 - .label c = 6 + .label __12 = $a + .label __13 = $a + .label __14 = $c + .label __15 = $c + .label a = 9 + .label return = 7 + .label c = 7 // mulf8u127((unsigned char)a, (unsigned char)b) - // [115] (byte) mulf8u127::a#1 ← (byte)(signed byte) mulf8s127::a#0 -- vbuaa=vbuyy + // [115] (byte) mulf8u127::a#1 ← (byte)(signed byte) mulf8s127::a#0 -- vbuxx=vbuz1 + ldx.z a + // [116] (byte) mulf8u127::b#1 ← (byte)(signed byte) mulf8s127::b#0 -- vbuaa=vbuyy tya - // [116] (byte) mulf8u127::b#1 ← (byte)(signed byte) mulf8s127::b#0 -- vbuxx=vbuz1 - ldx.z b // [117] call mulf8u127 // [136] phi from mulf8s127 to mulf8u127 [phi:mulf8s127->mulf8u127] // [136] phi (byte) mulf8u127::b#2 = (byte) mulf8u127::b#1 [phi:mulf8s127->mulf8u127#0] -- register_copy @@ -6373,13 +6385,14 @@ mulf8s127: { // mulf8s127::@7 // [119] (word) mulf8s127::c#0 ← (word) mulf8u127::return#3 // if(a<0) - // [120] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@9 -- vbsyy_ge_0_then_la1 - cpy #0 + // [120] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@9 -- vbsz1_ge_0_then_la1 + lda.z a + cmp #0 bpl __b1 // mulf8s127::@4 // (signed word)b - // [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 -- vwsz1=_sword_vbsz2 - lda.z b + // [121] (signed word~) mulf8s127::$12 ← (signed word)(signed byte) mulf8s127::b#0 -- vwsz1=_sword_vbsyy + tya sta.z __12 ora #$7f bmi !+ @@ -6404,14 +6417,13 @@ mulf8s127: { // mulf8s127::@1 __b1: // if(b<0) - // [125] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@2 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 + // [125] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@2 -- vbsyy_ge_0_then_la1 + cpy #0 bpl __b2 // mulf8s127::@5 // (signed word)a - // [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 -- vwsz1=_sword_vbsyy - tya + // [126] (signed word~) mulf8s127::$14 ← (signed word)(signed byte) mulf8s127::a#0 -- vwsz1=_sword_vbsz2 + lda.z a sta.z __14 ora #$7f bmi !+ @@ -6436,13 +6448,13 @@ mulf8s127: { // mulf8s127::@2 __b2: // if(a<0 && b<0) - // [130] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsyy_ge_0_then_la1 - cpy #0 + // [130] if((signed byte) mulf8s127::a#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsz1_ge_0_then_la1 + lda.z a + cmp #0 bpl __b3 // mulf8s127::@8 - // [131] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsz1_ge_0_then_la1 - lda.z b - cmp #0 + // [131] if((signed byte) mulf8s127::b#0>=(signed byte) 0) goto mulf8s127::@3 -- vbsyy_ge_0_then_la1 + cpy #0 bpl __b3 // mulf8s127::@6 // c -= 0x200 @@ -6468,27 +6480,29 @@ mulf8s127: { // [135] (signed word) mulf8s127::c#11 ← (signed word)(word) mulf8s127::c#0 } // mulf8u127 -// mulf8u127(byte register(A) a, byte register(X) b) +// mulf8u127(byte register(X) a, byte register(A) b) mulf8u127: { .label memA = $fc .label memB = $fd .label res = $fe .label resL = $fe .label resH = $ff - .label return = 6 + .label return = 7 // *memA = a - // [137] *((const byte*) mulf8u127::memA) ← (byte) mulf8u127::a#2 -- _deref_pbuc1=vbuaa - sta memA + // [137] *((const byte*) mulf8u127::memA) ← (byte) mulf8u127::a#2 -- _deref_pbuc1=vbuxx + stx memA // *memB = b - // [138] *((const byte*) mulf8u127::memB) ← (byte) mulf8u127::b#2 -- _deref_pbuc1=vbuxx - stx memB + // [138] *((const byte*) mulf8u127::memB) ← (byte) mulf8u127::b#2 -- _deref_pbuc1=vbuaa + sta memB // asm // asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf127_sqr1_lo,x sm2: sbcmulf127_sqr2_lo,x staresL sm3: ldamulf127_sqr1_hi,x sm4: sbcmulf127_sqr2_hi,x staresH } + txa sta sm1+1 sta sm3+1 eor #$ff sta sm2+1 sta sm4+1 + ldx memB sec sm1: lda mulf127_sqr1_lo,x @@ -6513,9 +6527,9 @@ mulf8u127: { } // print_str // Print a zero-terminated string -// print_str(byte* zp(6) str) +// print_str(byte* zp(7) str) print_str: { - .label str = 6 + .label str = 7 // [143] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] // [143] phi (byte*) print_char_cursor#122 = (byte*) print_char_cursor#136 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy // [143] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy @@ -6552,15 +6566,16 @@ print_str: { jmp __b1 } // print_mulf8u127 -// print_mulf8u127(byte register(Y) a, byte zp(8) b) +// print_mulf8u127(byte register(Y) a, byte zp(9) b) print_mulf8u127: { - .label c = 6 - .label b = 8 + .label c = 7 + .label b = 9 // mulf8u127(a,b) - // [150] (byte) mulf8u127::a#0 ← (byte) print_mulf8u127::a#8 -- vbuaa=vbuyy + // [150] (byte) mulf8u127::a#0 ← (byte) print_mulf8u127::a#8 -- vbuxx=vbuyy tya - // [151] (byte) mulf8u127::b#0 ← (byte) print_mulf8u127::b#10 -- vbuxx=vbuz1 - ldx.z b + tax + // [151] (byte) mulf8u127::b#0 ← (byte) print_mulf8u127::b#10 -- vbuaa=vbuz1 + lda.z b // [152] call mulf8u127 // [136] phi from print_mulf8u127 to mulf8u127 [phi:print_mulf8u127->mulf8u127] // [136] phi (byte) mulf8u127::b#2 = (byte) mulf8u127::b#0 [phi:print_mulf8u127->mulf8u127#0] -- register_copy @@ -6652,7 +6667,7 @@ memset: { .const num = $3e8 .label str = $400 .label end = str+num - .label dst = 9 + .label dst = $a // [173] phi from memset to memset::@1 [phi:memset->memset::@1] // [173] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #round(((i-255)/127*(i-255)/127)*127/4) }} (const byte*) mulf127_sqr2_lo[(number) $200] = kickasm {{ .fill 512, (word~) main: Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4 Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -556,36 +556,36 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() (byte) main::c -(byte) main::c#1 16.5 -(byte) main::c#2 22.0 +(byte) main::c#1 151.5 +(byte) main::c#2 202.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -878,31 +878,31 @@ init_font_hex: { FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [18] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [18] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [19] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [19] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_font_hex::$0 ] -Statement [25] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [28] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [29] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [32] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:7 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [18] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [19] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [25] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [28] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [29] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [32] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:7 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [25] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [27] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [28] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [29] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:7 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [18] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [19] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [25] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [27] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [28] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [29] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:7 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:7 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] : zp[1]:5 , reg byte x , @@ -917,11 +917,11 @@ Potential registers zp[1]:15 [ init_font_hex::$2 ] : zp[1]:15 , reg byte a , reg Potential registers zp[1]:16 [ init_font_hex::idx#3 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [init_font_hex] 2,168.83: zp[1]:11 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:14 [ init_font_hex::$1 ] 2,002: zp[1]:15 [ init_font_hex::$2 ] 1,151.6: zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:13 [ init_font_hex::$0 ] 202: zp[1]:16 [ init_font_hex::idx#3 ] 165.86: zp[2]:6 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:8 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:3 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [main] 38.5: zp[1]:2 [ main::c#2 main::c#1 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:11 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:14 [ init_font_hex::$1 ] 200,002: zp[1]:15 [ init_font_hex::$2 ] 115,001.6: zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:13 [ init_font_hex::$0 ] 20,002: zp[1]:16 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:6 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:8 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:3 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::c#2 main::c#1 ] Uplift Scope [] -Uplifting [init_font_hex] best 83724 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:13 [ init_font_hex::$0 ] zp[1]:16 [ init_font_hex::idx#3 ] zp[2]:6 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:8 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:3 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 83724 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:13 [ init_font_hex::$0 ] zp[1]:16 [ init_font_hex::idx#3 ] zp[1]:10 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:6 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:8 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:3 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:5 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. Uplifting [main] best 83604 combination reg byte x [ main::c#2 main::c#1 ] Uplifting [] best 83604 combination @@ -1241,9 +1241,9 @@ FINAL SYMBOL TABLE (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 1024 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:11 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:11 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -1251,35 +1251,35 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:4 16.5 -(byte) init_font_hex::c#6 c zp[1]:4 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:4 1501.5 +(byte) init_font_hex::c#6 c zp[1]:4 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:9 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:9 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:9 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:9 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:5 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:5 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:5 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:5 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:5 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:10 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:10 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:10 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:10 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:2 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:2 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:2 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:2 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:7 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:7 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:7 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:7 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 16.5 -(byte) main::c#2 reg byte x 22.0 +(byte) main::c#1 reg byte x 151.5 +(byte) main::c#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return diff --git a/src/test/ref/font-hex-show.sym b/src/test/ref/font-hex-show.sym index 5e223a0de..addad7e0b 100644 --- a/src/test/ref/font-hex-show.sym +++ b/src/test/ref/font-hex-show.sym @@ -6,9 +6,9 @@ (const byte*) FONT_HEX_PROTO[] = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } (const byte*) SCREEN = (byte*) 1024 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:11 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:11 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -16,35 +16,35 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:4 16.5 -(byte) init_font_hex::c#6 c zp[1]:4 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:4 1501.5 +(byte) init_font_hex::c#6 c zp[1]:4 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:9 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:9 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:9 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:9 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:5 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:5 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:5 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:5 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:5 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:10 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:10 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:10 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:10 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:2 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:2 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:2 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:2 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:7 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:7 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:7 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:7 9230.999999999998 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 16.5 -(byte) main::c#2 reg byte x 22.0 +(byte) main::c#1 reg byte x 151.5 +(byte) main::c#2 reg byte x 202.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return diff --git a/src/test/ref/for-empty-increment.log b/src/test/ref/for-empty-increment.log index f6265007a..87c605e82 100644 --- a/src/test/ref/for-empty-increment.log +++ b/src/test/ref/for-empty-increment.log @@ -55,7 +55,7 @@ Simplifying constant integer cast $a Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -112,8 +112,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -186,7 +186,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -280,8 +280,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/for-empty-increment.sym b/src/test/ref/for-empty-increment.sym index f11fcad70..9f4952958 100644 --- a/src/test/ref/for-empty-increment.sym +++ b/src/test/ref/for-empty-increment.sym @@ -7,7 +7,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/for-empty-init.log b/src/test/ref/for-empty-init.log index 19739ed35..e384809db 100644 --- a/src/test/ref/for-empty-init.log +++ b/src/test/ref/for-empty-init.log @@ -55,7 +55,7 @@ Simplifying constant integer cast $a Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -112,8 +112,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -186,7 +186,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -280,8 +280,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/for-empty-init.sym b/src/test/ref/for-empty-init.sym index f11fcad70..9f4952958 100644 --- a/src/test/ref/for-empty-init.sym +++ b/src/test/ref/for-empty-init.sym @@ -7,7 +7,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/for-two-vars.log b/src/test/ref/for-two-vars.log index 9429be570..3293e02ec 100644 --- a/src/test/ref/for-two-vars.log +++ b/src/test/ref/for-two-vars.log @@ -67,8 +67,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $27 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte*) main::sc#2 = (byte*) main::sc#3 +Alias main::i#2 = main::i#3 +Alias main::sc#2 = main::sc#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $28) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -131,11 +131,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 101.0 +(byte) main::i#2 134.66666666666666 (byte*) main::sc -(byte*) main::sc#1 22.0 -(byte*) main::sc#2 8.25 +(byte*) main::sc#1 202.0 +(byte*) main::sc#2 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -222,17 +222,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((byte*) main::sc#2) ← (byte) main::i#2 [ main::i#2 main::sc#2 ] ( main:2 [ main::i#2 main::sc#2 ] ) always clobbers reg byte y +Statement [8] *((byte*) main::sc#2) ← (byte) main::i#2 [ main::i#2 main::sc#2 ] ( main:2 [ main::i#2 main::sc#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [10] (byte*) main::sc#1 ← -- (byte*) main::sc#2 [ main::i#1 main::sc#1 ] ( main:2 [ main::i#1 main::sc#1 ] ) always clobbers reg byte a +Statement [10] (byte*) main::sc#1 ← -- (byte*) main::sc#2 [ main::i#1 main::sc#1 ] ( main:2 [ main::i#1 main::sc#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((byte*) main::sc#2) ← (byte) main::i#2 [ main::i#2 main::sc#2 ] ( main:2 [ main::i#2 main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte*) main::sc#1 ← -- (byte*) main::sc#2 [ main::i#1 main::sc#1 ] ( main:2 [ main::i#1 main::sc#1 ] ) always clobbers reg byte a +Statement [8] *((byte*) main::sc#2) ← (byte) main::i#2 [ main::i#2 main::sc#2 ] ( main:2 [ main::i#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte*) main::sc#1 ← -- (byte*) main::sc#2 [ main::i#1 main::sc#1 ] ( main:2 [ main::i#1 main::sc#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::sc#2 main::sc#1 ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[2]:3 [ main::sc#2 main::sc#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 277.75: zp[2]:3 [ main::sc#2 main::sc#1 ] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 548 combination zp[2]:3 [ main::sc#2 main::sc#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -342,11 +342,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 8.25 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 75.75 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/for-two-vars.sym b/src/test/ref/for-two-vars.sym index 7967480f6..d998790e3 100644 --- a/src/test/ref/for-two-vars.sym +++ b/src/test/ref/for-two-vars.sym @@ -7,11 +7,11 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 134.66666666666666 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 8.25 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 75.75 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/forced-zeropage.log b/src/test/ref/forced-zeropage.log index d754ca450..746610adb 100644 --- a/src/test/ref/forced-zeropage.log +++ b/src/test/ref/forced-zeropage.log @@ -45,7 +45,7 @@ Simplifying constant pointer cast (byte**) 243 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $d400 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word) main::u#1 = (word~) main::$0 +Alias main::u#1 = main::$0 Successful SSA optimization Pass2AliasElimination Constant (const word) main::u#0 = $22b Successful SSA optimization Pass2ConstantIdentification @@ -91,9 +91,9 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte*~) main::$1 4.0 +(byte*~) main::$1 22.0 (word) main::u -(word) main::u#1 4.0 +(word) main::u#1 22.0 Initial phi equivalence classes Added variable main::u#1 to live range equivalence class [ main::u#1 ] @@ -166,15 +166,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::u#1 ← *((word*) 160) - (word) $22b [ main::u#1 ] ( main:2 [ main::u#1 ] ) always clobbers reg byte a -Statement [5] *((word*) 1024) ← (word) main::u#1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte*~) main::$1 ← *((byte**) 209) + (word) $d400 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [7] *((byte**) 243) ← (byte*~) main::$1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (word) main::u#1 ← *((word*) 160) - (word) $22b [ main::u#1 ] ( main:2 [ main::u#1 ] { } ) always clobbers reg byte a +Statement [5] *((word*) 1024) ← (word) main::u#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte*~) main::$1 ← *((byte**) 209) + (word) $d400 [ main::$1 ] ( main:2 [ main::$1 ] { } ) always clobbers reg byte a +Statement [7] *((byte**) 243) ← (byte*~) main::$1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::u#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::$1 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[2]:2 [ main::u#1 ] 4: zp[2]:4 [ main::$1 ] +Uplift Scope [main] 22: zp[2]:2 [ main::u#1 ] 22: zp[2]:4 [ main::$1 ] Uplift Scope [] Uplifting [main] best 89 combination zp[2]:2 [ main::u#1 ] zp[2]:4 [ main::$1 ] @@ -263,10 +263,10 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte*~) main::$1 zp[2]:4 4.0 +(byte*~) main::$1 zp[2]:4 22.0 (label) main::@return (word) main::u -(word) main::u#1 u zp[2]:2 4.0 +(word) main::u#1 u zp[2]:2 22.0 zp[2]:2 [ main::u#1 ] zp[2]:4 [ main::$1 ] diff --git a/src/test/ref/forced-zeropage.sym b/src/test/ref/forced-zeropage.sym index 8e55d3a2e..cf7225b6e 100644 --- a/src/test/ref/forced-zeropage.sym +++ b/src/test/ref/forced-zeropage.sym @@ -2,10 +2,10 @@ (label) @begin (label) @end (void()) main() -(byte*~) main::$1 zp[2]:4 4.0 +(byte*~) main::$1 zp[2]:4 22.0 (label) main::@return (word) main::u -(word) main::u#1 u zp[2]:2 4.0 +(word) main::u#1 u zp[2]:2 22.0 zp[2]:2 [ main::u#1 ] zp[2]:4 [ main::$1 ] diff --git a/src/test/ref/forclassicmin.log b/src/test/ref/forclassicmin.log index 1bce554f5..1ca13c823 100644 --- a/src/test/ref/forclassicmin.log +++ b/src/test/ref/forclassicmin.log @@ -56,7 +56,7 @@ Simplifying constant integer cast $64 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $64 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2!=(byte) $64) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -113,8 +113,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -187,7 +187,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -281,8 +281,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/forclassicmin.sym b/src/test/ref/forclassicmin.sym index 4450901c4..f0891fdb1 100644 --- a/src/test/ref/forclassicmin.sym +++ b/src/test/ref/forclassicmin.sym @@ -7,7 +7,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/forincrementassign.log b/src/test/ref/forincrementassign.log index c8bfc27db..996323f8f 100644 --- a/src/test/ref/forincrementassign.log +++ b/src/test/ref/forincrementassign.log @@ -63,8 +63,8 @@ Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#3 + (byte) 2 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::i#1 = (byte~) main::$1 +Alias main::i#2 = main::i#3 +Alias main::i#1 = main::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $28) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -121,8 +121,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -199,7 +199,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 283 combination reg byte a [ main::i#2 main::i#1 ] @@ -295,8 +295,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 22.0 -(byte) main::i#2 reg byte a 18.333333333333332 +(byte) main::i#1 reg byte a 202.0 +(byte) main::i#2 reg byte a 168.33333333333331 reg byte a [ main::i#2 main::i#1 ] diff --git a/src/test/ref/forincrementassign.sym b/src/test/ref/forincrementassign.sym index a07228ee7..d42ff6582 100644 --- a/src/test/ref/forincrementassign.sym +++ b/src/test/ref/forincrementassign.sym @@ -7,7 +7,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 22.0 -(byte) main::i#2 reg byte a 18.333333333333332 +(byte) main::i#1 reg byte a 202.0 +(byte) main::i#2 reg byte a 168.33333333333331 reg byte a [ main::i#2 main::i#1 ] diff --git a/src/test/ref/forrangedwords.log b/src/test/ref/forrangedwords.log index 83a2d2df8..e4e279ce3 100644 --- a/src/test/ref/forrangedwords.log +++ b/src/test/ref/forrangedwords.log @@ -179,16 +179,16 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$3 202.0 +(byte~) main::$4 202.0 (signed word) main::sw -(signed word) main::sw#1 16.5 -(signed word) main::sw#2 8.8 +(signed word) main::sw#1 151.5 +(signed word) main::sw#2 80.8 (word) main::w -(word) main::w#1 16.5 -(word) main::w#2 8.8 +(word) main::w#1 151.5 +(word) main::w#2 80.8 Initial phi equivalence classes [ main::w#2 main::w#1 ] @@ -327,12 +327,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) always clobbers reg byte a -Statement [11] if((word) main::w#1!=(byte) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$3 ← < (signed word) main::sw#2 [ main::sw#2 main::$3 ] ( main:2 [ main::sw#2 main::$3 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$4 ← > (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) always clobbers reg byte a -Statement [18] if((signed word) main::sw#1!=(signed word) $7fff) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) always clobbers reg byte a +Statement [11] if((word) main::w#1!=(byte) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] { } ) always clobbers reg byte a +Statement [18] if((signed word) main::sw#1!=(signed word) $7fff) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w#2 main::w#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sw#2 main::sw#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , @@ -341,7 +337,7 @@ Potential registers zp[1]:8 [ main::$3 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ main::$4 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.3: zp[2]:2 [ main::w#2 main::w#1 ] 25.3: zp[2]:4 [ main::sw#2 main::sw#1 ] 22: zp[1]:6 [ main::$0 ] 22: zp[1]:7 [ main::$1 ] 22: zp[1]:8 [ main::$3 ] 22: zp[1]:9 [ main::$4 ] +Uplift Scope [main] 232.3: zp[2]:2 [ main::w#2 main::w#1 ] 232.3: zp[2]:4 [ main::sw#2 main::sw#1 ] 202: zp[1]:6 [ main::$0 ] 202: zp[1]:7 [ main::$1 ] 202: zp[1]:8 [ main::$3 ] 202: zp[1]:9 [ main::$4 ] Uplift Scope [] Uplifting [main] best 1158 combination zp[2]:2 [ main::w#2 main::w#1 ] zp[2]:4 [ main::sw#2 main::sw#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$3 ] reg byte a [ main::$4 ] @@ -489,20 +485,20 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (signed word) main::sw -(signed word) main::sw#1 sw zp[2]:4 16.5 -(signed word) main::sw#2 sw zp[2]:4 8.8 +(signed word) main::sw#1 sw zp[2]:4 151.5 +(signed word) main::sw#2 sw zp[2]:4 80.8 (word) main::w -(word) main::w#1 w zp[2]:2 16.5 -(word) main::w#2 w zp[2]:2 8.8 +(word) main::w#1 w zp[2]:2 151.5 +(word) main::w#2 w zp[2]:2 80.8 zp[2]:2 [ main::w#2 main::w#1 ] zp[2]:4 [ main::sw#2 main::sw#1 ] diff --git a/src/test/ref/forrangedwords.sym b/src/test/ref/forrangedwords.sym index eada9b8cd..5aa9e60a2 100644 --- a/src/test/ref/forrangedwords.sym +++ b/src/test/ref/forrangedwords.sym @@ -2,20 +2,20 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (signed word) main::sw -(signed word) main::sw#1 sw zp[2]:4 16.5 -(signed word) main::sw#2 sw zp[2]:4 8.8 +(signed word) main::sw#1 sw zp[2]:4 151.5 +(signed word) main::sw#2 sw zp[2]:4 80.8 (word) main::w -(word) main::w#1 w zp[2]:2 16.5 -(word) main::w#2 w zp[2]:2 8.8 +(word) main::w#1 w zp[2]:2 151.5 +(word) main::w#2 w zp[2]:2 80.8 zp[2]:2 [ main::w#2 main::w#1 ] zp[2]:4 [ main::sw#2 main::sw#1 ] diff --git a/src/test/ref/forrangemin.log b/src/test/ref/forrangemin.log index 480ccdf54..409557d56 100644 --- a/src/test/ref/forrangemin.log +++ b/src/test/ref/forrangemin.log @@ -159,11 +159,11 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 (byte) main::j -(byte) main::j#2 16.5 -(byte) main::j#3 22.0 +(byte) main::j#2 151.5 +(byte) main::j#3 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -262,7 +262,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::j#3 main::j#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] 38.5: zp[1]:3 [ main::j#3 main::j#2 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] 353.5: zp[1]:3 [ main::j#3 main::j#2 ] Uplift Scope [] Uplifting [main] best 478 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#3 main::j#2 ] @@ -383,11 +383,11 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::j -(byte) main::j#2 reg byte x 16.5 -(byte) main::j#3 reg byte x 22.0 +(byte) main::j#2 reg byte x 151.5 +(byte) main::j#3 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#3 main::j#2 ] diff --git a/src/test/ref/forrangemin.sym b/src/test/ref/forrangemin.sym index f9c9f8101..2529e1c42 100644 --- a/src/test/ref/forrangemin.sym +++ b/src/test/ref/forrangemin.sym @@ -8,11 +8,11 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::j -(byte) main::j#2 reg byte x 16.5 -(byte) main::j#3 reg byte x 22.0 +(byte) main::j#2 reg byte x 151.5 +(byte) main::j#3 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#3 main::j#2 ] diff --git a/src/test/ref/forrangesymbolic.log b/src/test/ref/forrangesymbolic.log index ed2214515..3978cac1e 100644 --- a/src/test/ref/forrangesymbolic.log +++ b/src/test/ref/forrangesymbolic.log @@ -116,8 +116,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::b -(byte*) main::b#1 16.5 -(byte*) main::b#2 16.5 +(byte*) main::b#1 151.5 +(byte*) main::b#2 151.5 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -195,13 +195,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::b#2) ← (byte) $5a [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte*) main::b#1 ← -- (byte*) main::b#2 [ main::b#1 ] ( main:2 [ main::b#1 ] ) always clobbers reg byte a -Statement [8] if((byte*) main::b#1!=(const byte*) main::BITMAP-(byte) 1) goto main::@1 [ main::b#1 ] ( main:2 [ main::b#1 ] ) always clobbers reg byte a +Statement [6] *((byte*) main::b#2) ← (byte) $5a [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte*) main::b#1 ← -- (byte*) main::b#2 [ main::b#1 ] ( main:2 [ main::b#1 ] { } ) always clobbers reg byte a +Statement [8] if((byte*) main::b#1!=(const byte*) main::BITMAP-(byte) 1) goto main::@1 [ main::b#1 ] ( main:2 [ main::b#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::b#2 main::b#1 ] : zp[2]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[2]:2 [ main::b#2 main::b#1 ] +Uplift Scope [main] 303: zp[2]:2 [ main::b#2 main::b#1 ] Uplift Scope [] Uplifting [main] best 613 combination zp[2]:2 [ main::b#2 main::b#1 ] @@ -310,8 +310,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::BITMAP = (byte*) 8192 (byte*) main::b -(byte*) main::b#1 b zp[2]:2 16.5 -(byte*) main::b#2 b zp[2]:2 16.5 +(byte*) main::b#1 b zp[2]:2 151.5 +(byte*) main::b#2 b zp[2]:2 151.5 zp[2]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/forrangesymbolic.sym b/src/test/ref/forrangesymbolic.sym index 89919a414..062ab15f7 100644 --- a/src/test/ref/forrangesymbolic.sym +++ b/src/test/ref/forrangesymbolic.sym @@ -6,7 +6,7 @@ (label) main::@return (const byte*) main::BITMAP = (byte*) 8192 (byte*) main::b -(byte*) main::b#1 b zp[2]:2 16.5 -(byte*) main::b#2 b zp[2]:2 16.5 +(byte*) main::b#1 b zp[2]:2 151.5 +(byte*) main::b#2 b zp[2]:2 151.5 zp[2]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/fragment-synth.log b/src/test/ref/fragment-synth.log index 2b0cfdd09..58efcafbe 100644 --- a/src/test/ref/fragment-synth.log +++ b/src/test/ref/fragment-synth.log @@ -138,12 +138,12 @@ Finalized unsigned number type (byte) $55 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) fct::return#0 = (byte) fct::return#4 -Alias (byte*) main::z#0 = (byte*) main::z#2 -Alias (byte) main::a1#0 = (byte~) main::$0 -Alias (byte) fct::return#1 = (byte) fct::return#5 -Alias (byte) main::a2#0 = (byte~) main::$1 -Alias (byte) fct::return#2 = (byte) fct::a#0 (byte~) fct::$0 (byte) fct::return#6 (byte) fct::return#3 +Alias fct::return#0 = fct::return#4 +Alias main::z#0 = main::z#2 +Alias main::a1#0 = main::$0 +Alias fct::return#1 = fct::return#5 +Alias main::a2#0 = main::$1 +Alias fct::return#2 = fct::a#0 fct::$0 fct::return#6 fct::return#3 Successful SSA optimization Pass2AliasElimination Constant (const byte*) main::z#0 = (byte*) 1104 Constant (const byte) main::x#0 = $aa @@ -245,18 +245,18 @@ VARIABLE REGISTER WEIGHTS (byte()) fct((byte) fct::x , (byte*) fct::z) (byte) fct::a !reg byte a (byte) fct::return -(byte) fct::return#0 4.0 -(byte) fct::return#1 4.0 -(byte) fct::return#2 1.5 +(byte) fct::return#0 22.0 +(byte) fct::return#1 22.0 +(byte) fct::return#2 30.75 (byte) fct::x !reg byte x -(byte) fct::x#2 !reg byte x 2.0 +(byte) fct::x#2 !reg byte x 101.0 (byte*) fct::z -(byte*) fct::z#2 2.0 +(byte*) fct::z#2 101.0 (void()) main() (byte) main::a1 -(byte) main::a1#0 4.0 +(byte) main::a1#0 22.0 (byte) main::a2 -(byte) main::a2#0 4.0 +(byte) main::a2#0 22.0 (byte) main::x (byte*) main::z @@ -391,9 +391,9 @@ fct: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*) 1104+(byte) 2) ← (byte) $f0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*) 1104+(byte) 3) ← (byte) $f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte) 2) [ fct::return#2 ] ( main:2::fct:6 [ fct::return#2 ] main:2::fct:10 [ fct::return#2 ] ) always clobbers reg byte a reg byte y +Statement [4] *((byte*) 1104+(byte) 2) ← (byte) $f0 [ ] ( main:2 [ ] { { fct::return#0 = fct::return#2 } } ) always clobbers reg byte a +Statement [5] *((byte*) 1104+(byte) 3) ← (byte) $f [ ] ( main:2 [ ] { { fct::return#0 = fct::return#2 } } ) always clobbers reg byte a +Statement [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte) 2) [ fct::return#2 ] ( main:2::fct:6 [ fct::return#2 ] { { fct::return#0 = fct::return#2 } } main:2::fct:10 [ fct::return#2 ] { { fct::return#1 = fct::return#2 } } ) always clobbers reg byte a reg byte y Potential registers reg byte x [ fct::x#2 ] : reg byte x , Potential registers zp[2]:2 [ fct::z#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ fct::return#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -403,11 +403,11 @@ Potential registers zp[1]:7 [ main::a2#0 ] : zp[1]:7 , reg byte a , reg byte x , Potential registers zp[1]:8 [ fct::return#2 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [fct] 4: zp[1]:4 [ fct::return#0 ] 4: zp[1]:6 [ fct::return#1 ] 2: reg byte x [ fct::x#2 ] 2: zp[2]:2 [ fct::z#2 ] 1.5: zp[1]:8 [ fct::return#2 ] -Uplift Scope [main] 4: zp[1]:5 [ main::a1#0 ] 4: zp[1]:7 [ main::a2#0 ] +Uplift Scope [fct] 101: reg byte x [ fct::x#2 ] 101: zp[2]:2 [ fct::z#2 ] 30.75: zp[1]:8 [ fct::return#2 ] 22: zp[1]:4 [ fct::return#0 ] 22: zp[1]:6 [ fct::return#1 ] +Uplift Scope [main] 22: zp[1]:5 [ main::a1#0 ] 22: zp[1]:7 [ main::a2#0 ] Uplift Scope [] -Uplifting [fct] best 113 combination reg byte a [ fct::return#0 ] reg byte a [ fct::return#1 ] reg byte x [ fct::x#2 ] zp[2]:2 [ fct::z#2 ] reg byte a [ fct::return#2 ] +Uplifting [fct] best 113 combination reg byte x [ fct::x#2 ] zp[2]:2 [ fct::z#2 ] reg byte a [ fct::return#2 ] reg byte a [ fct::return#0 ] reg byte a [ fct::return#1 ] Uplifting [main] best 101 combination reg byte a [ main::a1#0 ] reg byte a [ main::a2#0 ] Uplifting [] best 101 combination @@ -535,21 +535,21 @@ FINAL SYMBOL TABLE (label) fct::@return (byte) fct::a !reg byte a (byte) fct::return -(byte) fct::return#0 reg byte a 4.0 -(byte) fct::return#1 reg byte a 4.0 -(byte) fct::return#2 reg byte a 1.5 +(byte) fct::return#0 reg byte a 22.0 +(byte) fct::return#1 reg byte a 22.0 +(byte) fct::return#2 reg byte a 30.75 (byte) fct::x !reg byte x -(byte) fct::x#2 !reg byte x 2.0 +(byte) fct::x#2 !reg byte x 101.0 (byte*) fct::z -(byte*) fct::z#2 z zp[2]:2 2.0 +(byte*) fct::z#2 z zp[2]:2 101.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::a1 -(byte) main::a1#0 reg byte a 4.0 +(byte) main::a1#0 reg byte a 22.0 (byte) main::a2 -(byte) main::a2#0 reg byte a 4.0 +(byte) main::a2#0 reg byte a 22.0 (const byte*) main::screen = (byte*) 1024 (byte) main::x (byte*) main::z diff --git a/src/test/ref/fragment-synth.sym b/src/test/ref/fragment-synth.sym index 345f43a0d..345f4c17c 100644 --- a/src/test/ref/fragment-synth.sym +++ b/src/test/ref/fragment-synth.sym @@ -5,21 +5,21 @@ (label) fct::@return (byte) fct::a !reg byte a (byte) fct::return -(byte) fct::return#0 reg byte a 4.0 -(byte) fct::return#1 reg byte a 4.0 -(byte) fct::return#2 reg byte a 1.5 +(byte) fct::return#0 reg byte a 22.0 +(byte) fct::return#1 reg byte a 22.0 +(byte) fct::return#2 reg byte a 30.75 (byte) fct::x !reg byte x -(byte) fct::x#2 !reg byte x 2.0 +(byte) fct::x#2 !reg byte x 101.0 (byte*) fct::z -(byte*) fct::z#2 z zp[2]:2 2.0 +(byte*) fct::z#2 z zp[2]:2 101.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::a1 -(byte) main::a1#0 reg byte a 4.0 +(byte) main::a1#0 reg byte a 22.0 (byte) main::a2 -(byte) main::a2#0 reg byte a 4.0 +(byte) main::a2#0 reg byte a 22.0 (const byte*) main::screen = (byte*) 1024 (byte) main::x (byte*) main::z diff --git a/src/test/ref/fragment-variations.log b/src/test/ref/fragment-variations.log index 436c5c98c..10d8db911 100644 --- a/src/test/ref/fragment-variations.log +++ b/src/test/ref/fragment-variations.log @@ -116,9 +116,9 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$2 ← (byte) 0 * (const byte) SIZEOF_DWORD Inferred type updated to byte in (unumber~) main::$3 ← (byte) 1 * (const byte) SIZEOF_DWORD -Alias (dword) mul16u::return#0 = (dword) mul16u::return#4 -Alias (dword) mul16u::return#1 = (dword) mul16u::return#5 -Alias (dword) mul16u::return#2 = (dword~) mul16u::$0 (dword) mul16u::return#6 (dword) mul16u::return#3 +Alias mul16u::return#0 = mul16u::return#4 +Alias mul16u::return#1 = mul16u::return#5 +Alias mul16u::return#2 = mul16u::$0 mul16u::return#6 mul16u::return#3 Successful SSA optimization Pass2AliasElimination Constant right-side identified [6] (byte~) main::$2 ← (byte) 0 * (const byte) SIZEOF_DWORD Constant right-side identified [14] (byte~) main::$3 ← (byte) 1 * (const byte) SIZEOF_DWORD @@ -218,20 +218,20 @@ mul16u::@return: scope:[mul16u] from mul16u VARIABLE REGISTER WEIGHTS (void()) main() -(dword~) main::$0 4.0 -(dword~) main::$1 4.0 +(dword~) main::$0 22.0 +(dword~) main::$1 22.0 (word) main::w (dword()) mul16u((word) mul16u::b , (word) mul16u::a) (word) mul16u::a -(word) mul16u::a#2 1.0 +(word) mul16u::a#2 50.5 (word) mul16u::b (word) mul16u::b#2 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 +(dword) mul16u::mb#0 202.0 (dword) mul16u::return -(dword) mul16u::return#0 4.0 -(dword) mul16u::return#1 4.0 -(dword) mul16u::return#2 1.5 +(dword) mul16u::return#0 22.0 +(dword) mul16u::return#1 22.0 +(dword) mul16u::return#2 30.75 Initial phi equivalence classes [ mul16u::b#2 ] @@ -426,14 +426,14 @@ mul16u: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (dword) mul16u::return#0 ← (dword) mul16u::return#2 [ mul16u::return#0 ] ( main:2 [ mul16u::return#0 ] ) always clobbers reg byte a -Statement [7] (dword~) main::$0 ← (dword) mul16u::return#0 [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [8] *((const dword*) main::screen) ← (dword~) main::$0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] (dword) mul16u::return#1 ← (dword) mul16u::return#2 [ mul16u::return#1 ] ( main:2 [ mul16u::return#1 ] ) always clobbers reg byte a -Statement [11] (dword~) main::$1 ← (dword) mul16u::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [12] *((const dword*) main::screen+(byte) 1*(const byte) SIZEOF_DWORD) ← (dword~) main::$1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#2 mul16u::mb#0 ] ( main:2::mul16u:5 [ mul16u::a#2 mul16u::mb#0 ] main:2::mul16u:9 [ mul16u::a#2 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [16] (dword) mul16u::return#2 ← (dword) mul16u::mb#0 + (word) mul16u::a#2 [ mul16u::return#2 ] ( main:2::mul16u:5 [ mul16u::return#2 ] main:2::mul16u:9 [ mul16u::return#2 ] ) always clobbers reg byte a +Statement [6] (dword) mul16u::return#0 ← (dword) mul16u::return#2 [ mul16u::return#0 ] ( main:2 [ mul16u::return#0 ] { { mul16u::return#0 = mul16u::return#2 } } ) always clobbers reg byte a +Statement [7] (dword~) main::$0 ← (dword) mul16u::return#0 [ main::$0 ] ( main:2 [ main::$0 ] { { mul16u::return#1 = mul16u::return#2 } } ) always clobbers reg byte a +Statement [8] *((const dword*) main::screen) ← (dword~) main::$0 [ ] ( main:2 [ ] { { mul16u::return#1 = mul16u::return#2 } } ) always clobbers reg byte a +Statement [10] (dword) mul16u::return#1 ← (dword) mul16u::return#2 [ mul16u::return#1 ] ( main:2 [ mul16u::return#1 ] { { mul16u::return#1 = mul16u::return#2 } } ) always clobbers reg byte a +Statement [11] (dword~) main::$1 ← (dword) mul16u::return#1 [ main::$1 ] ( main:2 [ main::$1 ] { } ) always clobbers reg byte a +Statement [12] *((const dword*) main::screen+(byte) 1*(const byte) SIZEOF_DWORD) ← (dword~) main::$1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#2 mul16u::mb#0 ] ( main:2::mul16u:5 [ mul16u::a#2 mul16u::mb#0 ] { { mul16u::return#0 = mul16u::return#2 } } main:2::mul16u:9 [ mul16u::a#2 mul16u::mb#0 ] { { mul16u::return#1 = mul16u::return#2 } } ) always clobbers reg byte a +Statement [16] (dword) mul16u::return#2 ← (dword) mul16u::mb#0 + (word) mul16u::a#2 [ mul16u::return#2 ] ( main:2::mul16u:5 [ mul16u::return#2 ] { { mul16u::return#0 = mul16u::return#2 } } main:2::mul16u:9 [ mul16u::return#2 ] { { mul16u::return#1 = mul16u::return#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ mul16u::b#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ mul16u::a#2 ] : zp[2]:4 , Potential registers zp[4]:6 [ mul16u::return#0 ] : zp[4]:6 , @@ -444,11 +444,11 @@ Potential registers zp[4]:22 [ mul16u::mb#0 ] : zp[4]:22 , Potential registers zp[4]:26 [ mul16u::return#2 ] : zp[4]:26 , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 4: zp[4]:6 [ mul16u::return#0 ] 4: zp[4]:14 [ mul16u::return#1 ] 4: zp[4]:22 [ mul16u::mb#0 ] 1.5: zp[4]:26 [ mul16u::return#2 ] 1: zp[2]:4 [ mul16u::a#2 ] 0: zp[2]:2 [ mul16u::b#2 ] -Uplift Scope [main] 4: zp[4]:10 [ main::$0 ] 4: zp[4]:18 [ main::$1 ] +Uplift Scope [mul16u] 202: zp[4]:22 [ mul16u::mb#0 ] 50.5: zp[2]:4 [ mul16u::a#2 ] 30.75: zp[4]:26 [ mul16u::return#2 ] 22: zp[4]:6 [ mul16u::return#0 ] 22: zp[4]:14 [ mul16u::return#1 ] 0: zp[2]:2 [ mul16u::b#2 ] +Uplift Scope [main] 22: zp[4]:10 [ main::$0 ] 22: zp[4]:18 [ main::$1 ] Uplift Scope [] -Uplifting [mul16u] best 296 combination zp[4]:6 [ mul16u::return#0 ] zp[4]:14 [ mul16u::return#1 ] zp[4]:22 [ mul16u::mb#0 ] zp[4]:26 [ mul16u::return#2 ] zp[2]:4 [ mul16u::a#2 ] zp[2]:2 [ mul16u::b#2 ] +Uplifting [mul16u] best 296 combination zp[4]:22 [ mul16u::mb#0 ] zp[2]:4 [ mul16u::a#2 ] zp[4]:26 [ mul16u::return#2 ] zp[4]:6 [ mul16u::return#0 ] zp[4]:14 [ mul16u::return#1 ] zp[2]:2 [ mul16u::b#2 ] Uplifting [main] best 296 combination zp[4]:10 [ main::$0 ] zp[4]:18 [ main::$1 ] Uplifting [] best 296 combination Coalescing zero page register [ zp[4]:6 [ mul16u::return#0 ] ] with [ zp[4]:10 [ main::$0 ] ] - score: 1 @@ -620,8 +620,8 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_DWORD = (byte) 4 (void()) main() -(dword~) main::$0 zp[4]:6 4.0 -(dword~) main::$1 zp[4]:6 4.0 +(dword~) main::$0 zp[4]:6 22.0 +(dword~) main::$1 zp[4]:6 22.0 (label) main::@1 (label) main::@2 (label) main::@return @@ -630,15 +630,15 @@ FINAL SYMBOL TABLE (dword()) mul16u((word) mul16u::b , (word) mul16u::a) (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#2 a zp[2]:4 1.0 +(word) mul16u::a#2 a zp[2]:4 50.5 (word) mul16u::b (word) mul16u::b#2 b zp[2]:2 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:6 4.0 +(dword) mul16u::mb#0 mb zp[4]:6 202.0 (dword) mul16u::return -(dword) mul16u::return#0 return zp[4]:6 4.0 -(dword) mul16u::return#1 return zp[4]:6 4.0 -(dword) mul16u::return#2 return zp[4]:6 1.5 +(dword) mul16u::return#0 return zp[4]:6 22.0 +(dword) mul16u::return#1 return zp[4]:6 22.0 +(dword) mul16u::return#2 return zp[4]:6 30.75 zp[2]:2 [ mul16u::b#2 ] zp[2]:4 [ mul16u::a#2 ] diff --git a/src/test/ref/fragment-variations.sym b/src/test/ref/fragment-variations.sym index a469cc9b3..00e681dc3 100644 --- a/src/test/ref/fragment-variations.sym +++ b/src/test/ref/fragment-variations.sym @@ -3,8 +3,8 @@ (label) @end (const byte) SIZEOF_DWORD = (byte) 4 (void()) main() -(dword~) main::$0 zp[4]:6 4.0 -(dword~) main::$1 zp[4]:6 4.0 +(dword~) main::$0 zp[4]:6 22.0 +(dword~) main::$1 zp[4]:6 22.0 (label) main::@1 (label) main::@2 (label) main::@return @@ -13,15 +13,15 @@ (dword()) mul16u((word) mul16u::b , (word) mul16u::a) (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#2 a zp[2]:4 1.0 +(word) mul16u::a#2 a zp[2]:4 50.5 (word) mul16u::b (word) mul16u::b#2 b zp[2]:2 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:6 4.0 +(dword) mul16u::mb#0 mb zp[4]:6 202.0 (dword) mul16u::return -(dword) mul16u::return#0 return zp[4]:6 4.0 -(dword) mul16u::return#1 return zp[4]:6 4.0 -(dword) mul16u::return#2 return zp[4]:6 1.5 +(dword) mul16u::return#0 return zp[4]:6 22.0 +(dword) mul16u::return#1 return zp[4]:6 22.0 +(dword) mul16u::return#2 return zp[4]:6 30.75 zp[2]:2 [ mul16u::b#2 ] zp[2]:4 [ mul16u::a#2 ] diff --git a/src/test/ref/function-pointer-noarg-2.log b/src/test/ref/function-pointer-noarg-2.log index 08a24bea6..f111046ed 100644 --- a/src/test/ref/function-pointer-noarg-2.log +++ b/src/test/ref/function-pointer-noarg-2.log @@ -94,9 +94,9 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#2 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [4] if((byte~) main::$0==(byte) 0) goto main::@3 Simple Condition (bool~) main::$2 [7] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1 @@ -179,10 +179,10 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -269,7 +269,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 227.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 338 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] @@ -375,14 +375,14 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/function-pointer-noarg-2.sym b/src/test/ref/function-pointer-noarg-2.sym index 69bf21ff2..96de728cc 100644 --- a/src/test/ref/function-pointer-noarg-2.sym +++ b/src/test/ref/function-pointer-noarg-2.sym @@ -2,14 +2,14 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/function-pointer-noarg-3.log b/src/test/ref/function-pointer-noarg-3.log index 5c87816af..448fa2f9f 100644 --- a/src/test/ref/function-pointer-noarg-3.log +++ b/src/test/ref/function-pointer-noarg-3.log @@ -120,10 +120,10 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#1 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::i#1 = (byte) main::i#5 (byte) main::i#6 +Alias main::i#2 = main::i#3 +Alias main::i#1 = main::i#5 main::i#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#1 = (byte) main::i#4 +Alias main::i#1 = main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [7] if((byte~) main::$0==(byte) 0) goto main::@4 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -227,12 +227,12 @@ VARIABLE REGISTER WEIGHTS (void()) fn1() (void()) fn2() (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (void()*) main::f (void()*) main::f#3 (byte) main::i -(byte) main::i#1 5.5 -(byte) main::i#2 22.0 +(byte) main::i#1 50.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -365,7 +365,7 @@ Potential registers zp[2]:3 [ main::f#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$0 ] 0: zp[2]:3 [ main::f#3 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$0 ] 0: zp[2]:3 [ main::f#3 ] Uplift Scope [fn1] Uplift Scope [fn2] Uplift Scope [] @@ -530,7 +530,7 @@ FINAL SYMBOL TABLE (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -538,8 +538,8 @@ FINAL SYMBOL TABLE (void()*) main::f (void()*) main::f#3 f zp[2]:2 (byte) main::i -(byte) main::i#1 reg byte x 5.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 50.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::f#3 ] diff --git a/src/test/ref/function-pointer-noarg-3.sym b/src/test/ref/function-pointer-noarg-3.sym index 7de2da909..c842297bd 100644 --- a/src/test/ref/function-pointer-noarg-3.sym +++ b/src/test/ref/function-pointer-noarg-3.sym @@ -9,7 +9,7 @@ (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -17,8 +17,8 @@ (void()*) main::f (void()*) main::f#3 f zp[2]:2 (byte) main::i -(byte) main::i#1 reg byte x 5.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 50.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::f#3 ] diff --git a/src/test/ref/function-pointer-noarg-call-10.log b/src/test/ref/function-pointer-noarg-call-10.log index 0db0c82ff..d5d341b89 100644 --- a/src/test/ref/function-pointer-noarg-call-10.log +++ b/src/test/ref/function-pointer-noarg-call-10.log @@ -297,17 +297,17 @@ VARIABLE REGISTER WEIGHTS (void()*) do10::fn (void()*) do10::fn#3 (byte) do10::i -(byte) do10::i#1 16.5 -(byte) do10::i#2 11.0 +(byte) do10::i#1 1501.5 +(byte) do10::i#2 1001.0 (void()) hello() -(byte) idx loadstore 4.375 +(byte) idx loadstore 38.125 (void()) main() (void()) print((byte*) print::msg) (byte) print::i -(byte) print::i#1 16.5 -(byte) print::i#2 11.0 +(byte) print::i#1 151.5 +(byte) print::i#2 101.0 (byte*) print::msg -(byte*) print::msg#3 3.6666666666666665 +(byte*) print::msg#3 33.666666666666664 (void()) world() Initial phi equivalence classes @@ -503,21 +503,21 @@ hello: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [12] call *((void()*) do10::fn#3) [ do10::fn#3 do10::i#2 ] ( main:3::do10:6 [ do10::fn#3 do10::i#2 ] main:3::do10:8 [ do10::fn#3 do10::i#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [1] (byte) idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [12] call *((void()*) do10::fn#3) [ do10::fn#3 do10::i#2 ] ( main:3::do10:6 [ do10::fn#3 do10::i#2 ] { } main:3::do10:8 [ do10::fn#3 do10::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ do10::i#2 do10::i#1 ] -Statement [14] if((byte) do10::i#1!=(byte) $a) goto do10::@1 [ do10::fn#3 do10::i#1 ] ( main:3::do10:6 [ do10::fn#3 do10::i#1 ] main:3::do10:8 [ do10::fn#3 do10::i#1 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::msg#3 + (byte) print::i#2) [ idx print::msg#3 print::i#2 ] ( print:17 [ idx print::msg#3 print::i#2 ] print:27 [ idx print::msg#3 print::i#2 ] ) always clobbers reg byte a reg byte x +Statement [14] if((byte) do10::i#1!=(byte) $a) goto do10::@1 [ do10::fn#3 do10::i#1 ] ( main:3::do10:6 [ do10::fn#3 do10::i#1 ] { } main:3::do10:8 [ do10::fn#3 do10::i#1 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::msg#3 + (byte) print::i#2) [ idx print::msg#3 print::i#2 ] ( print:17 [ idx print::msg#3 print::i#2 ] { } print:27 [ idx print::msg#3 print::i#2 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:7 [ print::i#2 print::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ print::i#2 print::i#1 ] -Statement [24] if((byte) 0!=*((byte*) print::msg#3 + (byte) print::i#1)) goto print::@1 [ idx print::msg#3 print::i#1 ] ( print:17 [ idx print::msg#3 print::i#1 ] print:27 [ idx print::msg#3 print::i#1 ] ) always clobbers reg byte a -Statement [1] (byte) idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [12] call *((void()*) do10::fn#3) [ do10::fn#3 do10::i#2 ] ( main:3::do10:6 [ do10::fn#3 do10::i#2 ] main:3::do10:8 [ do10::fn#3 do10::i#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [14] if((byte) do10::i#1!=(byte) $a) goto do10::@1 [ do10::fn#3 do10::i#1 ] ( main:3::do10:6 [ do10::fn#3 do10::i#1 ] main:3::do10:8 [ do10::fn#3 do10::i#1 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::msg#3 + (byte) print::i#2) [ idx print::msg#3 print::i#2 ] ( print:17 [ idx print::msg#3 print::i#2 ] print:27 [ idx print::msg#3 print::i#2 ] ) always clobbers reg byte a reg byte x -Statement [24] if((byte) 0!=*((byte*) print::msg#3 + (byte) print::i#1)) goto print::@1 [ idx print::msg#3 print::i#1 ] ( print:17 [ idx print::msg#3 print::i#1 ] print:27 [ idx print::msg#3 print::i#1 ] ) always clobbers reg byte a +Statement [24] if((byte) 0!=*((byte*) print::msg#3 + (byte) print::i#1)) goto print::@1 [ idx print::msg#3 print::i#1 ] ( print:17 [ idx print::msg#3 print::i#1 ] { } print:27 [ idx print::msg#3 print::i#1 ] { } ) always clobbers reg byte a +Statement [1] (byte) idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [12] call *((void()*) do10::fn#3) [ do10::fn#3 do10::i#2 ] ( main:3::do10:6 [ do10::fn#3 do10::i#2 ] { } main:3::do10:8 [ do10::fn#3 do10::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [14] if((byte) do10::i#1!=(byte) $a) goto do10::@1 [ do10::fn#3 do10::i#1 ] ( main:3::do10:6 [ do10::fn#3 do10::i#1 ] { } main:3::do10:8 [ do10::fn#3 do10::i#1 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::msg#3 + (byte) print::i#2) [ idx print::msg#3 print::i#2 ] ( print:17 [ idx print::msg#3 print::i#2 ] { } print:27 [ idx print::msg#3 print::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [24] if((byte) 0!=*((byte*) print::msg#3 + (byte) print::i#1)) goto print::@1 [ idx print::msg#3 print::i#1 ] ( print:17 [ idx print::msg#3 print::i#1 ] { } print:27 [ idx print::msg#3 print::i#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ do10::fn#3 ] : zp[2]:2 , Potential registers zp[1]:4 [ do10::i#2 do10::i#1 ] : zp[1]:4 , Potential registers zp[2]:5 [ print::msg#3 ] : zp[2]:5 , @@ -525,15 +525,15 @@ Potential registers zp[1]:7 [ print::i#2 print::i#1 ] : zp[1]:7 , reg byte y , Potential registers zp[1]:8 [ idx ] : zp[1]:8 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 27.5: zp[1]:7 [ print::i#2 print::i#1 ] 3.67: zp[2]:5 [ print::msg#3 ] -Uplift Scope [do10] 27.5: zp[1]:4 [ do10::i#2 do10::i#1 ] 0: zp[2]:2 [ do10::fn#3 ] -Uplift Scope [] 4.38: zp[1]:8 [ idx ] +Uplift Scope [do10] 2,502.5: zp[1]:4 [ do10::i#2 do10::i#1 ] 0: zp[2]:2 [ do10::fn#3 ] +Uplift Scope [print] 252.5: zp[1]:7 [ print::i#2 print::i#1 ] 33.67: zp[2]:5 [ print::msg#3 ] +Uplift Scope [] 38.12: zp[1]:8 [ idx ] Uplift Scope [hello] Uplift Scope [world] Uplift Scope [main] +Uplifting [do10] best 1018 combination zp[1]:4 [ do10::i#2 do10::i#1 ] zp[2]:2 [ do10::fn#3 ] Uplifting [print] best 898 combination reg byte y [ print::i#2 print::i#1 ] zp[2]:5 [ print::msg#3 ] -Uplifting [do10] best 898 combination zp[1]:4 [ do10::i#2 do10::i#1 ] zp[2]:2 [ do10::fn#3 ] Uplifting [] best 898 combination zp[1]:8 [ idx ] Uplifting [hello] best 898 combination Uplifting [world] best 898 combination @@ -769,12 +769,12 @@ FINAL SYMBOL TABLE (void()*) do10::fn (void()*) do10::fn#3 fn zp[2]:2 (byte) do10::i -(byte) do10::i#1 i zp[1]:4 16.5 -(byte) do10::i#2 i zp[1]:4 11.0 +(byte) do10::i#1 i zp[1]:4 1501.5 +(byte) do10::i#2 i zp[1]:4 1001.0 (void()) hello() (label) hello::@return (const byte*) hello::msg[(byte) 7] = (byte*) "hello " -(byte) idx loadstore zp[1]:7 4.375 +(byte) idx loadstore zp[1]:7 38.125 (void()) main() (label) main::@1 (label) main::@return @@ -782,10 +782,10 @@ FINAL SYMBOL TABLE (label) print::@1 (label) print::@return (byte) print::i -(byte) print::i#1 reg byte y 16.5 -(byte) print::i#2 reg byte y 11.0 +(byte) print::i#1 reg byte y 151.5 +(byte) print::i#2 reg byte y 101.0 (byte*) print::msg -(byte*) print::msg#3 msg zp[2]:5 3.6666666666666665 +(byte*) print::msg#3 msg zp[2]:5 33.666666666666664 (void()) world() (label) world::@return (const byte*) world::msg[(byte) 7] = (byte*) "world " diff --git a/src/test/ref/function-pointer-noarg-call-10.sym b/src/test/ref/function-pointer-noarg-call-10.sym index 2ebc6a55b..24bde1569 100644 --- a/src/test/ref/function-pointer-noarg-call-10.sym +++ b/src/test/ref/function-pointer-noarg-call-10.sym @@ -9,12 +9,12 @@ (void()*) do10::fn (void()*) do10::fn#3 fn zp[2]:2 (byte) do10::i -(byte) do10::i#1 i zp[1]:4 16.5 -(byte) do10::i#2 i zp[1]:4 11.0 +(byte) do10::i#1 i zp[1]:4 1501.5 +(byte) do10::i#2 i zp[1]:4 1001.0 (void()) hello() (label) hello::@return (const byte*) hello::msg[(byte) 7] = (byte*) "hello " -(byte) idx loadstore zp[1]:7 4.375 +(byte) idx loadstore zp[1]:7 38.125 (void()) main() (label) main::@1 (label) main::@return @@ -22,10 +22,10 @@ (label) print::@1 (label) print::@return (byte) print::i -(byte) print::i#1 reg byte y 16.5 -(byte) print::i#2 reg byte y 11.0 +(byte) print::i#1 reg byte y 151.5 +(byte) print::i#2 reg byte y 101.0 (byte*) print::msg -(byte*) print::msg#3 msg zp[2]:5 3.6666666666666665 +(byte*) print::msg#3 msg zp[2]:5 33.666666666666664 (void()) world() (label) world::@return (const byte*) world::msg[(byte) 7] = (byte*) "world " diff --git a/src/test/ref/function-pointer-noarg-call-2.log b/src/test/ref/function-pointer-noarg-call-2.log index b691fb063..3d56e55a8 100644 --- a/src/test/ref/function-pointer-noarg-call-2.log +++ b/src/test/ref/function-pointer-noarg-call-2.log @@ -114,10 +114,10 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#1 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::i#1 = (byte) main::i#5 (byte) main::i#6 +Alias main::i#2 = main::i#3 +Alias main::i#1 = main::i#5 main::i#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#1 = (byte) main::i#4 +Alias main::i#1 = main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [7] if((byte~) main::$0==(byte) 0) goto main::@4 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -215,12 +215,12 @@ VARIABLE REGISTER WEIGHTS (void()) fn1() (void()) fn2() (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (void()*) main::f (void()*) main::f#3 (byte) main::i -(byte) main::i#1 5.5 -(byte) main::i#2 22.0 +(byte) main::i#1 50.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -342,18 +342,18 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] call *((void()*) main::f#3) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [11] call *((void()*) main::f#3) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] ) always clobbers reg byte a -Statement [11] call *((void()*) main::f#3) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] { } ) always clobbers reg byte a +Statement [11] call *((void()*) main::f#3) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[2]:3 [ main::f#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$0 ] 0: zp[2]:3 [ main::f#3 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$0 ] 0: zp[2]:3 [ main::f#3 ] Uplift Scope [fn1] Uplift Scope [fn2] Uplift Scope [] @@ -512,7 +512,7 @@ FINAL SYMBOL TABLE (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -520,8 +520,8 @@ FINAL SYMBOL TABLE (void()*) main::f (void()*) main::f#3 f zp[2]:3 (byte) main::i -(byte) main::i#1 i zp[1]:2 5.5 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 50.5 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::f#3 ] diff --git a/src/test/ref/function-pointer-noarg-call-2.sym b/src/test/ref/function-pointer-noarg-call-2.sym index 76bf1c176..e9f37d94f 100644 --- a/src/test/ref/function-pointer-noarg-call-2.sym +++ b/src/test/ref/function-pointer-noarg-call-2.sym @@ -8,7 +8,7 @@ (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -16,8 +16,8 @@ (void()*) main::f (void()*) main::f#3 f zp[2]:3 (byte) main::i -(byte) main::i#1 i zp[1]:2 5.5 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 50.5 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::f#3 ] diff --git a/src/test/ref/function-pointer-noarg-call-3.log b/src/test/ref/function-pointer-noarg-call-3.log index bf829016d..b29bc7e0d 100644 --- a/src/test/ref/function-pointer-noarg-call-3.log +++ b/src/test/ref/function-pointer-noarg-call-3.log @@ -135,10 +135,10 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) getfn::$0 ← (byte) getfn::b#1 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (void()*) getfn::return#0 = (void()*) getfn::return#4 -Alias (byte) main::i#1 = (byte) main::i#4 -Alias (void()*) getfn::return#3 = (void()*) getfn::return#5 +Alias main::i#2 = main::i#3 +Alias getfn::return#0 = getfn::return#4 +Alias main::i#1 = main::i#4 +Alias getfn::return#3 = getfn::return#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) getfn::b#1 (byte) getfn::b#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -246,17 +246,17 @@ VARIABLE REGISTER WEIGHTS (void()) fn1() (void()) fn2() (void()*()) getfn((byte) getfn::b) -(byte~) getfn::$0 4.0 +(byte~) getfn::$0 2002.0 (byte) getfn::b -(byte) getfn::b#0 13.0 +(byte) getfn::b#0 1102.0 (void()*) getfn::return -(void()*) getfn::return#0 22.0 -(void()*) getfn::return#3 3.6666666666666665 +(void()*) getfn::return#0 202.0 +(void()*) getfn::return#3 33.666666666666664 (void()) main() -(void()*~) main::$1 11.0 +(void()*~) main::$1 101.0 (byte) main::i -(byte) main::i#1 5.5 -(byte) main::i#2 22.0 +(byte) main::i#1 50.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -414,15 +414,15 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (void()*) getfn::return#0 ← (void()*) getfn::return#3 [ main::i#1 getfn::return#0 ] ( main:2 [ main::i#1 getfn::return#0 ] ) always clobbers reg byte a +Statement [9] (void()*) getfn::return#0 ← (void()*) getfn::return#3 [ main::i#1 getfn::return#0 ] ( main:2 [ main::i#1 getfn::return#0 ] { { getfn::b#0 = main::i#1 } { getfn::return#0 = getfn::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [10] (void()*~) main::$1 ← (void()*) getfn::return#0 [ main::i#1 main::$1 ] ( main:2 [ main::i#1 main::$1 ] ) always clobbers reg byte a -Statement [11] call *((void()*~) main::$1) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [10] (void()*~) main::$1 ← (void()*) getfn::return#0 [ main::i#1 main::$1 ] ( main:2 [ main::i#1 main::$1 ] { } ) always clobbers reg byte a +Statement [11] call *((void()*~) main::$1) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (void()*) getfn::return#0 ← (void()*) getfn::return#3 [ main::i#1 getfn::return#0 ] ( main:2 [ main::i#1 getfn::return#0 ] ) always clobbers reg byte a -Statement [10] (void()*~) main::$1 ← (void()*) getfn::return#0 [ main::i#1 main::$1 ] ( main:2 [ main::i#1 main::$1 ] ) always clobbers reg byte a -Statement [11] call *((void()*~) main::$1) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [9] (void()*) getfn::return#0 ← (void()*) getfn::return#3 [ main::i#1 getfn::return#0 ] ( main:2 [ main::i#1 getfn::return#0 ] { { getfn::b#0 = main::i#1 } { getfn::return#0 = getfn::return#3 } } ) always clobbers reg byte a +Statement [10] (void()*~) main::$1 ← (void()*) getfn::return#0 [ main::i#1 main::$1 ] ( main:2 [ main::i#1 main::$1 ] { } ) always clobbers reg byte a +Statement [11] call *((void()*~) main::$1) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[2]:3 [ getfn::return#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ getfn::b#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -431,13 +431,13 @@ Potential registers zp[2]:8 [ main::$1 ] : zp[2]:8 , Potential registers zp[1]:10 [ getfn::$0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [getfn] 22: zp[2]:6 [ getfn::return#0 ] 13: zp[1]:5 [ getfn::b#0 ] 4: zp[1]:10 [ getfn::$0 ] 3.67: zp[2]:3 [ getfn::return#3 ] -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[2]:8 [ main::$1 ] +Uplift Scope [getfn] 2,002: zp[1]:10 [ getfn::$0 ] 1,102: zp[1]:5 [ getfn::b#0 ] 202: zp[2]:6 [ getfn::return#0 ] 33.67: zp[2]:3 [ getfn::return#3 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[2]:8 [ main::$1 ] Uplift Scope [fn1] Uplift Scope [fn2] Uplift Scope [] -Uplifting [getfn] best 743 combination zp[2]:6 [ getfn::return#0 ] reg byte a [ getfn::b#0 ] reg byte a [ getfn::$0 ] zp[2]:3 [ getfn::return#3 ] +Uplifting [getfn] best 743 combination reg byte a [ getfn::$0 ] reg byte a [ getfn::b#0 ] zp[2]:6 [ getfn::return#0 ] zp[2]:3 [ getfn::return#3 ] Uplifting [main] best 743 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:8 [ main::$1 ] Uplifting [fn1] best 743 combination Uplifting [fn2] best 743 combination @@ -614,22 +614,22 @@ FINAL SYMBOL TABLE (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()*()) getfn((byte) getfn::b) -(byte~) getfn::$0 reg byte a 4.0 +(byte~) getfn::$0 reg byte a 2002.0 (label) getfn::@1 (label) getfn::@return (byte) getfn::b -(byte) getfn::b#0 reg byte a 13.0 +(byte) getfn::b#0 reg byte a 1102.0 (void()*) getfn::return -(void()*) getfn::return#0 return zp[2]:3 22.0 -(void()*) getfn::return#3 return zp[2]:3 3.6666666666666665 +(void()*) getfn::return#0 return zp[2]:3 202.0 +(void()*) getfn::return#3 return zp[2]:3 33.666666666666664 (void()) main() -(void()*~) main::$1 zp[2]:3 11.0 +(void()*~) main::$1 zp[2]:3 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 i zp[1]:2 5.5 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 50.5 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ getfn::return#3 getfn::return#0 main::$1 ] diff --git a/src/test/ref/function-pointer-noarg-call-3.sym b/src/test/ref/function-pointer-noarg-call-3.sym index 86ec321c9..bec3044f5 100644 --- a/src/test/ref/function-pointer-noarg-call-3.sym +++ b/src/test/ref/function-pointer-noarg-call-3.sym @@ -8,22 +8,22 @@ (label) fn2::@return (const byte*) fn2::BGCOL = (byte*) 53281 (void()*()) getfn((byte) getfn::b) -(byte~) getfn::$0 reg byte a 4.0 +(byte~) getfn::$0 reg byte a 2002.0 (label) getfn::@1 (label) getfn::@return (byte) getfn::b -(byte) getfn::b#0 reg byte a 13.0 +(byte) getfn::b#0 reg byte a 1102.0 (void()*) getfn::return -(void()*) getfn::return#0 return zp[2]:3 22.0 -(void()*) getfn::return#3 return zp[2]:3 3.6666666666666665 +(void()*) getfn::return#0 return zp[2]:3 202.0 +(void()*) getfn::return#3 return zp[2]:3 33.666666666666664 (void()) main() -(void()*~) main::$1 zp[2]:3 11.0 +(void()*~) main::$1 zp[2]:3 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 i zp[1]:2 5.5 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 50.5 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ getfn::return#3 getfn::return#0 main::$1 ] diff --git a/src/test/ref/function-pointer-noarg-call-4.log b/src/test/ref/function-pointer-noarg-call-4.log index 6a5002f16..0936797b6 100644 --- a/src/test/ref/function-pointer-noarg-call-4.log +++ b/src/test/ref/function-pointer-noarg-call-4.log @@ -93,10 +93,10 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 53280 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (void()*) getfn::return#0 = (void()*) getfn::return#3 -Alias (byte) main::i#1 = (byte) main::i#4 -Alias (void()*) getfn::return#1 = (void()*) getfn::return#4 (void()*) getfn::return#2 +Alias main::i#2 = main::i#3 +Alias getfn::return#0 = getfn::return#3 +Alias main::i#1 = main::i#4 +Alias getfn::return#1 = getfn::return#4 getfn::return#2 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::i#0 = 0 Constant (const void()*) getfn::return#1 = &fn1 @@ -196,8 +196,8 @@ VARIABLE REGISTER WEIGHTS (void()*) getfn::return (void()) main() (byte) main::i -(byte) main::i#1 5.5 -(byte) main::i#2 22.0 +(byte) main::i#1 50.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -287,7 +287,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [getfn] Uplift Scope [fn1] Uplift Scope [] @@ -419,8 +419,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 reg byte x 5.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 50.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/function-pointer-noarg-call-4.sym b/src/test/ref/function-pointer-noarg-call-4.sym index 3da00a468..33a429648 100644 --- a/src/test/ref/function-pointer-noarg-call-4.sym +++ b/src/test/ref/function-pointer-noarg-call-4.sym @@ -13,7 +13,7 @@ (label) main::@2 (label) main::@3 (byte) main::i -(byte) main::i#1 reg byte x 5.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 50.5 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/function-pointer-noarg-call-5.log b/src/test/ref/function-pointer-noarg-call-5.log index db3ffc4a4..cc2b80b38 100644 --- a/src/test/ref/function-pointer-noarg-call-5.log +++ b/src/test/ref/function-pointer-noarg-call-5.log @@ -91,7 +91,7 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#1 & (byte) 1 Inferred type updated to byte in (unumber~) main::$2 ← (byte~) main::$0 * (const byte) SIZEOF_POINTER -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -171,13 +171,13 @@ VARIABLE REGISTER WEIGHTS (void()) fn1() (void()) fn2() (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$2 22.0 +(byte~) main::$0 202.0 +(byte~) main::$2 202.0 (void()*) main::f -(void()*) main::f#0 11.0 +(void()*) main::f#0 101.0 (byte) main::i -(byte) main::i#1 6.6000000000000005 -(byte) main::i#2 22.0 +(byte) main::i#1 60.599999999999994 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -287,23 +287,23 @@ fn1: { fns: .word fn1, fn2 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte~) main::$2 ← (byte~) main::$0 << (byte) 1 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$2 ← (byte~) main::$0 << (byte) 1 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (void()*) main::f#0 ← *((const void()**) fns + (byte~) main::$2) [ main::i#1 main::f#0 ] ( main:2 [ main::i#1 main::f#0 ] ) always clobbers reg byte a -Statement [10] call *((void()*) main::f#0) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [9] (void()*) main::f#0 ← *((const void()**) fns + (byte~) main::$2) [ main::i#1 main::f#0 ] ( main:2 [ main::i#1 main::f#0 ] { } ) always clobbers reg byte a +Statement [10] call *((void()*) main::f#0) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$2 ← (byte~) main::$0 << (byte) 1 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] ) always clobbers reg byte a -Statement [9] (void()*) main::f#0 ← *((const void()**) fns + (byte~) main::$2) [ main::i#1 main::f#0 ] ( main:2 [ main::i#1 main::f#0 ] ) always clobbers reg byte a -Statement [10] call *((void()*) main::f#0) [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$2 ← (byte~) main::$0 << (byte) 1 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] { } ) always clobbers reg byte a +Statement [9] (void()*) main::f#0 ← *((const void()**) fns + (byte~) main::$2) [ main::i#1 main::f#0 ] ( main:2 [ main::i#1 main::f#0 ] { } ) always clobbers reg byte a +Statement [10] call *((void()*) main::f#0) [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a reg byte x reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:5 [ main::f#0 ] : zp[2]:5 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 28.6: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] 22: zp[1]:4 [ main::$2 ] 11: zp[2]:5 [ main::f#0 ] +Uplift Scope [main] 262.6: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] 202: zp[1]:4 [ main::$2 ] 101: zp[2]:5 [ main::f#0 ] Uplift Scope [fn1] Uplift Scope [fn2] Uplift Scope [] @@ -441,15 +441,15 @@ FINAL SYMBOL TABLE (const byte*) fn2::BGCOL = (byte*) 53281 (const void()**) fns[(number) 2] = { &(void()) fn1(), &(void()) fn2() } (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (void()*) main::f -(void()*) main::f#0 f zp[2]:3 11.0 +(void()*) main::f#0 f zp[2]:3 101.0 (byte) main::i -(byte) main::i#1 i zp[1]:2 6.6000000000000005 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 60.599999999999994 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/function-pointer-noarg-call-5.sym b/src/test/ref/function-pointer-noarg-call-5.sym index 678f8e691..3270adc62 100644 --- a/src/test/ref/function-pointer-noarg-call-5.sym +++ b/src/test/ref/function-pointer-noarg-call-5.sym @@ -9,15 +9,15 @@ (const byte*) fn2::BGCOL = (byte*) 53281 (const void()**) fns[(number) 2] = { &(void()) fn1(), &(void()) fn2() } (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (void()*) main::f -(void()*) main::f#0 f zp[2]:3 11.0 +(void()*) main::f#0 f zp[2]:3 101.0 (byte) main::i -(byte) main::i#1 i zp[1]:2 6.6000000000000005 -(byte) main::i#2 i zp[1]:2 22.0 +(byte) main::i#1 i zp[1]:2 60.599999999999994 +(byte) main::i#2 i zp[1]:2 202.0 zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/function-pointer-noarg-call-6.log b/src/test/ref/function-pointer-noarg-call-6.log index 1258ac531..7e6f573d9 100644 --- a/src/test/ref/function-pointer-noarg-call-6.log +++ b/src/test/ref/function-pointer-noarg-call-6.log @@ -89,8 +89,8 @@ Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 55296 Successful SSA optimization PassNCastSimplification -Alias (byte*) fn1::screen#2 = (byte*) fn1::screen#3 -Alias (byte*) main::cols#2 = (byte*) main::cols#3 +Alias fn1::screen#2 = fn1::screen#3 +Alias main::cols#2 = main::cols#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) fn1::$0 [3] if((byte*) fn1::screen#2<(word)(number) $400+(number) $3e8) goto fn1::@2 Simple Condition (bool~) main::$0 [10] if((byte*) main::cols#2<(word)(number) $d800+(number) $3e8) goto main::@2 @@ -180,12 +180,12 @@ fn1::@2: scope:[fn1] from fn1::@1 VARIABLE REGISTER WEIGHTS (void()) fn1() (byte*) fn1::screen -(byte*) fn1::screen#1 202.0 -(byte*) fn1::screen#2 168.33333333333331 +(byte*) fn1::screen#1 200002.0 +(byte*) fn1::screen#2 166668.3333333333 (void()) main() (byte*) main::cols -(byte*) main::cols#1 22.0 -(byte*) main::cols#2 11.0 +(byte*) main::cols#1 202.0 +(byte*) main::cols#2 101.0 Initial phi equivalence classes [ main::cols#2 main::cols#1 ] @@ -323,16 +323,16 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::cols#2<(word)(number) $d800+(number) $3e8) goto main::@2 [ main::cols#2 ] ( main:2 [ main::cols#2 ] ) always clobbers reg byte a -Statement [10] *((byte*) main::cols#2) ← ++ *((byte*) main::cols#2) [ main::cols#2 ] ( main:2 [ main::cols#2 ] ) always clobbers reg byte a reg byte y -Statement [14] if((byte*) fn1::screen#2<(word)(number) $400+(number) $3e8) goto fn1::@2 [ fn1::screen#2 ] ( main:2::fn1:9 [ main::cols#2 fn1::screen#2 ] ) always clobbers reg byte a -Statement [16] *((byte*) fn1::screen#2) ← ++ *((byte*) fn1::screen#2) [ fn1::screen#2 ] ( main:2::fn1:9 [ main::cols#2 fn1::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [6] if((byte*) main::cols#2<(word)(number) $d800+(number) $3e8) goto main::@2 [ main::cols#2 ] ( main:2 [ main::cols#2 ] { } ) always clobbers reg byte a +Statement [10] *((byte*) main::cols#2) ← ++ *((byte*) main::cols#2) [ main::cols#2 ] ( main:2 [ main::cols#2 ] { } ) always clobbers reg byte a reg byte y +Statement [14] if((byte*) fn1::screen#2<(word)(number) $400+(number) $3e8) goto fn1::@2 [ fn1::screen#2 ] ( main:2::fn1:9 [ main::cols#2 fn1::screen#2 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) fn1::screen#2) ← ++ *((byte*) fn1::screen#2) [ fn1::screen#2 ] ( main:2::fn1:9 [ main::cols#2 fn1::screen#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::cols#2 main::cols#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [fn1] 370.33: zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] -Uplift Scope [main] 33: zp[2]:2 [ main::cols#2 main::cols#1 ] +Uplift Scope [fn1] 366,670.33: zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] +Uplift Scope [main] 303: zp[2]:2 [ main::cols#2 main::cols#1 ] Uplift Scope [] Uplifting [fn1] best 7595 combination zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] @@ -508,15 +508,15 @@ FINAL SYMBOL TABLE (label) fn1::@2 (label) fn1::@return (byte*) fn1::screen -(byte*) fn1::screen#1 screen zp[2]:4 202.0 -(byte*) fn1::screen#2 screen zp[2]:4 168.33333333333331 +(byte*) fn1::screen#1 screen zp[2]:4 200002.0 +(byte*) fn1::screen#2 screen zp[2]:4 166668.3333333333 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte*) main::cols -(byte*) main::cols#1 cols zp[2]:2 22.0 -(byte*) main::cols#2 cols zp[2]:2 11.0 +(byte*) main::cols#1 cols zp[2]:2 202.0 +(byte*) main::cols#2 cols zp[2]:2 101.0 zp[2]:2 [ main::cols#2 main::cols#1 ] zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] diff --git a/src/test/ref/function-pointer-noarg-call-6.sym b/src/test/ref/function-pointer-noarg-call-6.sym index aff0eccb0..37dd43666 100644 --- a/src/test/ref/function-pointer-noarg-call-6.sym +++ b/src/test/ref/function-pointer-noarg-call-6.sym @@ -6,15 +6,15 @@ (label) fn1::@2 (label) fn1::@return (byte*) fn1::screen -(byte*) fn1::screen#1 screen zp[2]:4 202.0 -(byte*) fn1::screen#2 screen zp[2]:4 168.33333333333331 +(byte*) fn1::screen#1 screen zp[2]:4 200002.0 +(byte*) fn1::screen#2 screen zp[2]:4 166668.3333333333 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte*) main::cols -(byte*) main::cols#1 cols zp[2]:2 22.0 -(byte*) main::cols#2 cols zp[2]:2 11.0 +(byte*) main::cols#1 cols zp[2]:2 202.0 +(byte*) main::cols#2 cols zp[2]:2 101.0 zp[2]:2 [ main::cols#2 main::cols#1 ] zp[2]:4 [ fn1::screen#2 fn1::screen#1 ] diff --git a/src/test/ref/function-pointer-noarg-call-7.log b/src/test/ref/function-pointer-noarg-call-7.log index 6daa1e13b..e8415843a 100644 --- a/src/test/ref/function-pointer-noarg-call-7.log +++ b/src/test/ref/function-pointer-noarg-call-7.log @@ -219,13 +219,13 @@ VARIABLE REGISTER WEIGHTS (void()) do10((void()*) do10::fn) (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 16.5 -(byte) do10::i#2 11.0 +(byte) do10::i#1 1501.5 +(byte) do10::i#2 1001.0 (void()) hello() (byte) hello::i -(byte) hello::i#1 151.5 -(byte) hello::i#2 101.0 -(byte) idx loadstore 20.333333333333336 +(byte) hello::i#1 1500001.5 +(byte) hello::i#2 1000001.0 +(byte) idx loadstore 200000.33333333334 (void()) main() Initial phi equivalence classes @@ -356,34 +356,34 @@ hello: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN + (byte) idx) ← *((const byte*) msg + (byte) hello::i#2) [ idx hello::i#2 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#2 ] ) always clobbers reg byte a reg byte y +Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN + (byte) idx) ← *((const byte*) msg + (byte) hello::i#2) [ idx hello::i#2 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ hello::i#2 hello::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ hello::i#2 hello::i#1 ] -Statement [19] if((byte) 0!=*((const byte*) msg + (byte) hello::i#1)) goto hello::@1 [ idx hello::i#1 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#1 ] ) always clobbers reg byte a -Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN + (byte) idx) ← *((const byte*) msg + (byte) hello::i#2) [ idx hello::i#2 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#2 ] ) always clobbers reg byte a reg byte y -Statement [19] if((byte) 0!=*((const byte*) msg + (byte) hello::i#1)) goto hello::@1 [ idx hello::i#1 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#1 ] ) always clobbers reg byte a +Statement [19] if((byte) 0!=*((const byte*) msg + (byte) hello::i#1)) goto hello::@1 [ idx hello::i#1 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#1 ] { } ) always clobbers reg byte a +Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN + (byte) idx) ← *((const byte*) msg + (byte) hello::i#2) [ idx hello::i#2 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [19] if((byte) 0!=*((const byte*) msg + (byte) hello::i#1)) goto hello::@1 [ idx hello::i#1 ] ( main:3::do10:6::hello:10 [ do10::i#2 idx hello::i#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ do10::i#2 do10::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ hello::i#2 hello::i#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ idx ] : zp[1]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [hello] 252.5: zp[1]:3 [ hello::i#2 hello::i#1 ] -Uplift Scope [do10] 27.5: zp[1]:2 [ do10::i#2 do10::i#1 ] -Uplift Scope [] 20.33: zp[1]:4 [ idx ] +Uplift Scope [hello] 2,500,002.5: zp[1]:3 [ hello::i#2 hello::i#1 ] +Uplift Scope [] 200,000.33: zp[1]:4 [ idx ] +Uplift Scope [do10] 2,502.5: zp[1]:2 [ do10::i#2 do10::i#1 ] Uplift Scope [main] Uplifting [hello] best 4295 combination reg byte x [ hello::i#2 hello::i#1 ] -Uplifting [do10] best 4295 combination zp[1]:2 [ do10::i#2 do10::i#1 ] Uplifting [] best 4295 combination zp[1]:4 [ idx ] -Uplifting [main] best 4295 combination -Attempting to uplift remaining variables inzp[1]:2 [ do10::i#2 do10::i#1 ] Uplifting [do10] best 4295 combination zp[1]:2 [ do10::i#2 do10::i#1 ] +Uplifting [main] best 4295 combination Attempting to uplift remaining variables inzp[1]:4 [ idx ] Uplifting [] best 4295 combination zp[1]:4 [ idx ] +Attempting to uplift remaining variables inzp[1]:2 [ do10::i#2 do10::i#1 ] +Uplifting [do10] best 4295 combination zp[1]:2 [ do10::i#2 do10::i#1 ] Allocated (was zp[1]:4) zp[1]:3 [ idx ] ASSEMBLER BEFORE OPTIMIZATION @@ -542,15 +542,15 @@ FINAL SYMBOL TABLE (label) do10::@return (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 i zp[1]:2 16.5 -(byte) do10::i#2 i zp[1]:2 11.0 +(byte) do10::i#1 i zp[1]:2 1501.5 +(byte) do10::i#2 i zp[1]:2 1001.0 (void()) hello() (label) hello::@1 (label) hello::@return (byte) hello::i -(byte) hello::i#1 reg byte x 151.5 -(byte) hello::i#2 reg byte x 101.0 -(byte) idx loadstore zp[1]:3 20.333333333333336 +(byte) hello::i#1 reg byte x 1500001.5 +(byte) hello::i#2 reg byte x 1000001.0 +(byte) idx loadstore zp[1]:3 200000.33333333334 (void()) main() (label) main::@return (const byte*) msg[] = (byte*) "hello " diff --git a/src/test/ref/function-pointer-noarg-call-7.sym b/src/test/ref/function-pointer-noarg-call-7.sym index a93e24058..2b0cbf74c 100644 --- a/src/test/ref/function-pointer-noarg-call-7.sym +++ b/src/test/ref/function-pointer-noarg-call-7.sym @@ -8,15 +8,15 @@ (label) do10::@return (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 i zp[1]:2 16.5 -(byte) do10::i#2 i zp[1]:2 11.0 +(byte) do10::i#1 i zp[1]:2 1501.5 +(byte) do10::i#2 i zp[1]:2 1001.0 (void()) hello() (label) hello::@1 (label) hello::@return (byte) hello::i -(byte) hello::i#1 reg byte x 151.5 -(byte) hello::i#2 reg byte x 101.0 -(byte) idx loadstore zp[1]:3 20.333333333333336 +(byte) hello::i#1 reg byte x 1500001.5 +(byte) hello::i#2 reg byte x 1000001.0 +(byte) idx loadstore zp[1]:3 200000.33333333334 (void()) main() (label) main::@return (const byte*) msg[] = (byte*) "hello " diff --git a/src/test/ref/function-pointer-noarg-call-8.log b/src/test/ref/function-pointer-noarg-call-8.log index 97fb920ca..4f2227e30 100644 --- a/src/test/ref/function-pointer-noarg-call-8.log +++ b/src/test/ref/function-pointer-noarg-call-8.log @@ -237,15 +237,15 @@ VARIABLE REGISTER WEIGHTS (void()) do10((void()*) do10::fn) (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 16.5 -(byte) do10::i#2 11.0 +(byte) do10::i#1 1501.5 +(byte) do10::i#2 1001.0 (void()) hello() (byte) hello::i -(byte) hello::i#1 151.5 -(byte) hello::i#2 101.0 -(byte) idx loadstore 16.944444444444443 +(byte) hello::i#1 1500001.5 +(byte) hello::i#2 1000001.0 +(byte) idx loadstore 166666.94444444444 (void()) main() -(byte*) msg loadstore 14.857142857142858 +(byte*) msg loadstore 142859.0 Initial phi equivalence classes [ do10::i#2 do10::i#1 ] @@ -401,41 +401,41 @@ hello: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte*) msg ← (byte*) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] (byte*) msg ← (const byte*) msg1 [ msg idx ] ( main:4 [ msg idx ] ) always clobbers reg byte a -Statement [8] (byte*) msg ← (const byte*) msg2 [ msg idx ] ( main:4 [ msg idx ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN + (byte) idx) ← *((byte*) msg + (byte) hello::i#2) [ msg idx hello::i#2 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#2 ] main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#2 ] ) always clobbers reg byte a reg byte x +Statement [1] (byte*) msg ← (byte*) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] (byte*) msg ← (const byte*) msg1 [ msg idx ] ( main:4 [ msg idx ] { } ) always clobbers reg byte a +Statement [8] (byte*) msg ← (const byte*) msg2 [ msg idx ] ( main:4 [ msg idx ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN + (byte) idx) ← *((byte*) msg + (byte) hello::i#2) [ msg idx hello::i#2 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#2 ] { } main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#2 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:2 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:2 [ do10::i#2 do10::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ hello::i#2 hello::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ hello::i#2 hello::i#1 ] -Statement [22] if((byte) 0!=*((byte*) msg + (byte) hello::i#1)) goto hello::@1 [ msg idx hello::i#1 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#1 ] main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#1 ] ) always clobbers reg byte a -Statement [1] (byte*) msg ← (byte*) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] (byte*) msg ← (const byte*) msg1 [ msg idx ] ( main:4 [ msg idx ] ) always clobbers reg byte a -Statement [8] (byte*) msg ← (const byte*) msg2 [ msg idx ] ( main:4 [ msg idx ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN + (byte) idx) ← *((byte*) msg + (byte) hello::i#2) [ msg idx hello::i#2 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#2 ] main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#2 ] ) always clobbers reg byte a reg byte x -Statement [22] if((byte) 0!=*((byte*) msg + (byte) hello::i#1)) goto hello::@1 [ msg idx hello::i#1 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#1 ] main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#1 ] ) always clobbers reg byte a +Statement [22] if((byte) 0!=*((byte*) msg + (byte) hello::i#1)) goto hello::@1 [ msg idx hello::i#1 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#1 ] { } main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#1 ] { } ) always clobbers reg byte a +Statement [1] (byte*) msg ← (byte*) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] (byte*) msg ← (const byte*) msg1 [ msg idx ] ( main:4 [ msg idx ] { } ) always clobbers reg byte a +Statement [8] (byte*) msg ← (const byte*) msg2 [ msg idx ] ( main:4 [ msg idx ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN + (byte) idx) ← *((byte*) msg + (byte) hello::i#2) [ msg idx hello::i#2 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#2 ] { } main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [22] if((byte) 0!=*((byte*) msg + (byte) hello::i#1)) goto hello::@1 [ msg idx hello::i#1 ] ( main:4::do10:7::hello:13 [ do10::i#2 msg idx hello::i#1 ] { } main:4::do10:9::hello:13 [ do10::i#2 msg idx hello::i#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ do10::i#2 do10::i#1 ] : zp[1]:2 , reg byte y , Potential registers zp[1]:3 [ hello::i#2 hello::i#1 ] : zp[1]:3 , reg byte y , Potential registers zp[2]:4 [ msg ] : zp[2]:4 , Potential registers zp[1]:6 [ idx ] : zp[1]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [hello] 252.5: zp[1]:3 [ hello::i#2 hello::i#1 ] -Uplift Scope [] 16.94: zp[1]:6 [ idx ] 14.86: zp[2]:4 [ msg ] -Uplift Scope [do10] 27.5: zp[1]:2 [ do10::i#2 do10::i#1 ] +Uplift Scope [hello] 2,500,002.5: zp[1]:3 [ hello::i#2 hello::i#1 ] +Uplift Scope [] 166,666.94: zp[1]:6 [ idx ] 142,859: zp[2]:4 [ msg ] +Uplift Scope [do10] 2,502.5: zp[1]:2 [ do10::i#2 do10::i#1 ] Uplift Scope [main] Uplifting [hello] best 4534 combination reg byte y [ hello::i#2 hello::i#1 ] Uplifting [] best 4534 combination zp[1]:6 [ idx ] zp[2]:4 [ msg ] Uplifting [do10] best 4534 combination zp[1]:2 [ do10::i#2 do10::i#1 ] Uplifting [main] best 4534 combination -Attempting to uplift remaining variables inzp[1]:2 [ do10::i#2 do10::i#1 ] -Uplifting [do10] best 4534 combination zp[1]:2 [ do10::i#2 do10::i#1 ] Attempting to uplift remaining variables inzp[1]:6 [ idx ] Uplifting [] best 4534 combination zp[1]:6 [ idx ] +Attempting to uplift remaining variables inzp[1]:2 [ do10::i#2 do10::i#1 ] +Uplifting [do10] best 4534 combination zp[1]:2 [ do10::i#2 do10::i#1 ] Allocated (was zp[2]:4) zp[2]:3 [ msg ] Allocated (was zp[1]:6) zp[1]:5 [ idx ] @@ -623,19 +623,19 @@ FINAL SYMBOL TABLE (label) do10::@return (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 i zp[1]:2 16.5 -(byte) do10::i#2 i zp[1]:2 11.0 +(byte) do10::i#1 i zp[1]:2 1501.5 +(byte) do10::i#2 i zp[1]:2 1001.0 (void()) hello() (label) hello::@1 (label) hello::@return (byte) hello::i -(byte) hello::i#1 reg byte y 151.5 -(byte) hello::i#2 reg byte y 101.0 -(byte) idx loadstore zp[1]:5 16.944444444444443 +(byte) hello::i#1 reg byte y 1500001.5 +(byte) hello::i#2 reg byte y 1000001.0 +(byte) idx loadstore zp[1]:5 166666.94444444444 (void()) main() (label) main::@1 (label) main::@return -(byte*) msg loadstore zp[2]:3 14.857142857142858 +(byte*) msg loadstore zp[2]:3 142859.0 (const byte*) msg1[] = (byte*) "hello " (const byte*) msg2[] = (byte*) "world " diff --git a/src/test/ref/function-pointer-noarg-call-8.sym b/src/test/ref/function-pointer-noarg-call-8.sym index 8a11fc974..f7a9ade98 100644 --- a/src/test/ref/function-pointer-noarg-call-8.sym +++ b/src/test/ref/function-pointer-noarg-call-8.sym @@ -8,19 +8,19 @@ (label) do10::@return (void()*) do10::fn (byte) do10::i -(byte) do10::i#1 i zp[1]:2 16.5 -(byte) do10::i#2 i zp[1]:2 11.0 +(byte) do10::i#1 i zp[1]:2 1501.5 +(byte) do10::i#2 i zp[1]:2 1001.0 (void()) hello() (label) hello::@1 (label) hello::@return (byte) hello::i -(byte) hello::i#1 reg byte y 151.5 -(byte) hello::i#2 reg byte y 101.0 -(byte) idx loadstore zp[1]:5 16.944444444444443 +(byte) hello::i#1 reg byte y 1500001.5 +(byte) hello::i#2 reg byte y 1000001.0 +(byte) idx loadstore zp[1]:5 166666.94444444444 (void()) main() (label) main::@1 (label) main::@return -(byte*) msg loadstore zp[2]:3 14.857142857142858 +(byte*) msg loadstore zp[2]:3 142859.0 (const byte*) msg1[] = (byte*) "hello " (const byte*) msg2[] = (byte*) "world " diff --git a/src/test/ref/function-pointer-noarg-call-9.log b/src/test/ref/function-pointer-noarg-call-9.log index 06599de0d..dc065fe61 100644 --- a/src/test/ref/function-pointer-noarg-call-9.log +++ b/src/test/ref/function-pointer-noarg-call-9.log @@ -101,7 +101,7 @@ fn1::@return: scope:[fn1] from fn1 VARIABLE REGISTER WEIGHTS (void()) fn1() -(byte) idx loadstore 1.25 +(byte) idx loadstore 28.25 (void()) main() Initial phi equivalence classes @@ -173,13 +173,13 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) 'a' [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a reg byte y -Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) 'a' [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ idx ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 1.25: zp[1]:2 [ idx ] +Uplift Scope [] 28.25: zp[1]:2 [ idx ] Uplift Scope [fn1] Uplift Scope [main] @@ -275,7 +275,7 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (void()) fn1() (label) fn1::@return -(byte) idx loadstore zp[1]:2 1.25 +(byte) idx loadstore zp[1]:2 28.25 (void()) main() (label) main::@return diff --git a/src/test/ref/function-pointer-noarg-call-9.sym b/src/test/ref/function-pointer-noarg-call-9.sym index 287f377f3..6188ed964 100644 --- a/src/test/ref/function-pointer-noarg-call-9.sym +++ b/src/test/ref/function-pointer-noarg-call-9.sym @@ -4,7 +4,7 @@ (const byte*) SCREEN = (byte*) 1024 (void()) fn1() (label) fn1::@return -(byte) idx loadstore zp[1]:2 1.25 +(byte) idx loadstore zp[1]:2 28.25 (void()) main() (label) main::@return diff --git a/src/test/ref/function-pointer-noarg.log b/src/test/ref/function-pointer-noarg.log index c1fb85204..2ee9d94b5 100644 --- a/src/test/ref/function-pointer-noarg.log +++ b/src/test/ref/function-pointer-noarg.log @@ -273,10 +273,10 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← <(word)&(void()) fn1() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← >(word)&(void()) fn1() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← <(word)&(void()) fn2() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← >(word)&(void()) fn2() [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← <(word)&(void()) fn1() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← >(word)&(void()) fn1() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← <(word)&(void()) fn2() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← >(word)&(void()) fn2() [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/function-pointer-return.log b/src/test/ref/function-pointer-return.log index 3d1cdd090..986bacd47 100644 --- a/src/test/ref/function-pointer-return.log +++ b/src/test/ref/function-pointer-return.log @@ -139,12 +139,12 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#1 & (byte) 1 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::i#1 = (byte) main::i#5 (byte) main::i#6 -Alias (byte) fn1::return#0 = (byte) fn1::return#2 (byte) fn1::return#1 -Alias (byte) fn2::return#0 = (byte) fn2::return#2 (byte) fn2::return#1 +Alias main::i#2 = main::i#3 +Alias main::i#1 = main::i#5 main::i#6 +Alias fn1::return#0 = fn1::return#2 fn1::return#1 +Alias fn2::return#0 = fn2::return#2 fn2::return#1 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#1 = (byte) main::i#4 +Alias main::i#1 = main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [7] if((byte~) main::$0==(byte) 0) goto main::@4 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -249,13 +249,13 @@ VARIABLE REGISTER WEIGHTS (byte()) fn2() (byte) fn2::return (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$2 22.0 +(byte~) main::$0 202.0 +(byte~) main::$2 202.0 (byte()*) main::f (byte()*) main::f#3 (byte) main::i -(byte) main::i#1 4.714285714285714 -(byte) main::i#2 22.0 +(byte) main::i#1 43.285714285714285 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -384,17 +384,17 @@ fn1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (byte~) main::$2 ← (byte)(byte()*) main::f#3 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] ) always clobbers reg byte a +Statement [11] (byte~) main::$2 ← (byte)(byte()*) main::f#3 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$2 ← (byte)(byte()*) main::f#3 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) main::i#1 & (byte) 1 [ main::i#1 main::$0 ] ( main:2 [ main::i#1 main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$2 ← (byte)(byte()*) main::f#3 [ main::i#1 main::$2 ] ( main:2 [ main::i#1 main::$2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::f#3 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:6 [ main::$2 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 26.71: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$0 ] 22: zp[1]:6 [ main::$2 ] 0: zp[2]:3 [ main::f#3 ] +Uplift Scope [main] 245.29: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$0 ] 202: zp[1]:6 [ main::$2 ] 0: zp[2]:3 [ main::f#3 ] Uplift Scope [fn1] Uplift Scope [fn2] Uplift Scope [] @@ -553,8 +553,8 @@ FINAL SYMBOL TABLE (const byte*) fn2::BGCOL = (byte*) 53281 (byte) fn2::return (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -563,8 +563,8 @@ FINAL SYMBOL TABLE (byte()*) main::f (byte()*) main::f#3 f zp[2]:2 (byte) main::i -(byte) main::i#1 reg byte x 4.714285714285714 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 43.285714285714285 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::f#3 ] diff --git a/src/test/ref/function-pointer-return.sym b/src/test/ref/function-pointer-return.sym index 8f232ee17..52a3253c7 100644 --- a/src/test/ref/function-pointer-return.sym +++ b/src/test/ref/function-pointer-return.sym @@ -10,8 +10,8 @@ (const byte*) fn2::BGCOL = (byte*) 53281 (byte) fn2::return (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -20,8 +20,8 @@ (byte()*) main::f (byte()*) main::f#3 f zp[2]:2 (byte) main::i -(byte) main::i#1 reg byte x 4.714285714285714 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 43.285714285714285 +(byte) main::i#2 reg byte x 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::f#3 ] diff --git a/src/test/ref/gfxbank.log b/src/test/ref/gfxbank.log index 4c7e48113..35f87364c 100644 --- a/src/test/ref/gfxbank.log +++ b/src/test/ref/gfxbank.log @@ -101,8 +101,8 @@ Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$2 ← (byte~) main::vicSelectGfxBank1_toDd001_$1 / (byte) $40 Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$3 ← (byte) 3 ^ (byte~) main::vicSelectGfxBank1_toDd001_$2 -Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 -Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0 +Alias main::vicSelectGfxBank1_gfx#0 = main::vicSelectGfxBank1_gfx#1 main::vicSelectGfxBank1_toDd001_gfx#0 main::vicSelectGfxBank1_toDd001_gfx#1 +Alias main::vicSelectGfxBank1_toDd001_return#0 = main::vicSelectGfxBank1_toDd001_$3 main::vicSelectGfxBank1_toDd001_return#2 main::vicSelectGfxBank1_toDd001_return#1 main::vicSelectGfxBank1_toDd001_return#3 main::vicSelectGfxBank1_$0 Successful SSA optimization Pass2AliasElimination Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = main::PLAYFIELD_CHARSET Successful SSA optimization Pass2ConstantIdentification @@ -248,8 +248,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/global-pc-multiple.log b/src/test/ref/global-pc-multiple.log index 60be4b3c4..9641c50c2 100644 --- a/src/test/ref/global-pc-multiple.log +++ b/src/test/ref/global-pc-multiple.log @@ -217,9 +217,9 @@ incScreen: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] if(*((const byte*) RASTER)<(byte) $1e) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) BGCOL) ← *((const byte*) RASTER) [ ] ( main:2::incScreen:8 [ ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER)<(byte) $1e) goto main::@2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) BGCOL) ← *((const byte*) RASTER) [ ] ( main:2::incScreen:8 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/global-pc.log b/src/test/ref/global-pc.log index b6bf4b598..bcaf71db0 100644 --- a/src/test/ref/global-pc.log +++ b/src/test/ref/global-pc.log @@ -90,7 +90,7 @@ main::@1: scope:[main] from main main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::col -(byte) main::col#0 22.0 +(byte) main::col#0 202.0 Initial phi equivalence classes Added variable main::col#0 to live range equivalence class [ main::col#0 ] @@ -145,7 +145,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::col#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::col#0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::col#0 ] Uplift Scope [] Uplifting [main] best 127 combination reg byte a [ main::col#0 ] @@ -216,7 +216,7 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (byte) main::col -(byte) main::col#0 reg byte a 22.0 +(byte) main::col#0 reg byte a 202.0 reg byte a [ main::col#0 ] diff --git a/src/test/ref/global-pc.sym b/src/test/ref/global-pc.sym index 2f61edd74..977c01eeb 100644 --- a/src/test/ref/global-pc.sym +++ b/src/test/ref/global-pc.sym @@ -6,6 +6,6 @@ (void()) main() (label) main::@1 (byte) main::col -(byte) main::col#0 reg byte a 22.0 +(byte) main::col#0 reg byte a 202.0 reg byte a [ main::col#0 ] diff --git a/src/test/ref/halfscii.log b/src/test/ref/halfscii.log index 99c366df3..29cca6b32 100644 --- a/src/test/ref/halfscii.log +++ b/src/test/ref/halfscii.log @@ -454,31 +454,31 @@ Inversing boolean not [28] (bool~) main::$17 ← (byte) main::bits#1 < (byte) 2 Inversing boolean not [43] (bool~) main::$26 ← (byte) main::bits#2 < (byte) 2 from [42] (bool~) main::$25 ← (byte) main::bits#2 >= (byte) 2 Inversing boolean not [57] (bool~) main::$34 ← (byte) main::bits#3 < (byte) 2 from [56] (bool~) main::$33 ← (byte) main::bits#3 >= (byte) 2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) main::chargen1#0 = (byte*~) main::$0 (byte*) main::chargen1#4 -Alias (byte) main::bits_gen#1 = (byte~) main::$10 (byte) main::bits_gen#12 -Alias (byte) main::bits_gen#0 = (byte) main::bits_gen#10 -Alias (byte*) main::chargen#2 = (byte*) main::chargen#7 -Alias (byte*) main::charset4#10 = (byte*) main::charset4#9 -Alias (byte) main::bits_gen#2 = (byte~) main::$9 -Alias (byte) main::bits_gen#14 = (byte) main::bits_gen#3 (byte~) main::$19 -Alias (byte*) main::chargen#3 = (byte*) main::chargen#8 -Alias (byte*) main::chargen1#1 = (byte*) main::chargen1#5 -Alias (byte*) main::charset4#7 = (byte*) main::charset4#8 -Alias (byte) main::bits_gen#4 = (byte~) main::$18 -Alias (byte) main::bits_gen#16 = (byte) main::bits_gen#5 (byte~) main::$28 -Alias (byte*) main::chargen#4 = (byte*) main::chargen#9 -Alias (byte*) main::chargen1#2 = (byte*) main::chargen1#6 -Alias (byte*) main::charset4#5 = (byte*) main::charset4#6 -Alias (byte) main::bits_gen#6 = (byte~) main::$27 -Alias (byte) main::bits_gen#7 = (byte~) main::$36 -Alias (byte*) main::chargen#1 = (byte*~) main::$37 -Alias (byte*) main::charset4#3 = (byte*) main::charset4#4 -Alias (byte*) main::chargen#10 = (byte*) main::chargen#5 -Alias (byte) main::bits_gen#8 = (byte~) main::$35 +Alias main::chargen1#0 = main::$0 main::chargen1#4 +Alias main::bits_gen#1 = main::$10 main::bits_gen#12 +Alias main::bits_gen#0 = main::bits_gen#10 +Alias main::chargen#2 = main::chargen#7 +Alias main::charset4#10 = main::charset4#9 +Alias main::bits_gen#2 = main::$9 +Alias main::bits_gen#14 = main::bits_gen#3 main::$19 +Alias main::chargen#3 = main::chargen#8 +Alias main::chargen1#1 = main::chargen1#5 +Alias main::charset4#7 = main::charset4#8 +Alias main::bits_gen#4 = main::$18 +Alias main::bits_gen#16 = main::bits_gen#5 main::$28 +Alias main::chargen#4 = main::chargen#9 +Alias main::chargen1#2 = main::chargen1#6 +Alias main::charset4#5 = main::charset4#6 +Alias main::bits_gen#6 = main::$27 +Alias main::bits_gen#7 = main::$36 +Alias main::chargen#1 = main::$37 +Alias main::charset4#3 = main::charset4#4 +Alias main::chargen#10 = main::chargen#5 +Alias main::bits_gen#8 = main::$35 Successful SSA optimization Pass2AliasElimination -Alias (byte*) main::chargen#10 = (byte*) main::chargen#3 (byte*) main::chargen#2 (byte*) main::chargen#4 (byte*) main::chargen#6 -Alias (byte*) main::chargen1#0 = (byte*) main::chargen1#1 (byte*) main::chargen1#2 (byte*) main::chargen1#3 -Alias (byte*) main::charset4#10 = (byte*) main::charset4#7 (byte*) main::charset4#5 (byte*) main::charset4#3 (byte*) main::charset4#2 +Alias main::chargen#10 = main::chargen#3 main::chargen#2 main::chargen#4 main::chargen#6 +Alias main::chargen1#0 = main::chargen1#1 main::chargen1#2 main::chargen1#3 +Alias main::charset4#10 = main::charset4#7 main::charset4#5 main::charset4#3 main::charset4#2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$8 [15] if((byte) main::bits#0<(byte) 2) goto main::@2 Simple Condition (bool~) main::$17 [25] if((byte) main::bits#1<(byte) 2) goto main::@3 @@ -668,54 +668,54 @@ main::@return: scope:[main] from main::@12 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 7.333333333333333 -(byte~) main::$11 7.333333333333333 -(byte~) main::$12 22.0 -(byte~) main::$13 22.0 -(byte~) main::$14 22.0 -(byte~) main::$15 22.0 -(byte~) main::$2 22.0 -(byte~) main::$20 22.0 -(byte~) main::$21 7.333333333333333 -(byte~) main::$22 22.0 -(byte~) main::$23 22.0 -(byte~) main::$24 22.0 -(byte~) main::$29 22.0 -(byte~) main::$3 22.0 -(byte~) main::$30 11.0 -(byte~) main::$31 22.0 -(byte~) main::$32 22.0 -(byte~) main::$4 22.0 -(byte~) main::$5 22.0 -(byte~) main::$6 22.0 +(byte~) main::$1 67.33333333333333 +(byte~) main::$11 67.33333333333333 +(byte~) main::$12 202.0 +(byte~) main::$13 202.0 +(byte~) main::$14 202.0 +(byte~) main::$15 202.0 +(byte~) main::$2 202.0 +(byte~) main::$20 202.0 +(byte~) main::$21 67.33333333333333 +(byte~) main::$22 202.0 +(byte~) main::$23 202.0 +(byte~) main::$24 202.0 +(byte~) main::$29 202.0 +(byte~) main::$3 202.0 +(byte~) main::$30 101.0 +(byte~) main::$31 202.0 +(byte~) main::$32 202.0 +(byte~) main::$4 202.0 +(byte~) main::$5 202.0 +(byte~) main::$6 202.0 (byte) main::bits -(byte) main::bits#0 22.0 -(byte) main::bits#1 22.0 -(byte) main::bits#2 22.0 -(byte) main::bits#3 22.0 +(byte) main::bits#0 202.0 +(byte) main::bits#1 202.0 +(byte) main::bits#2 202.0 +(byte) main::bits#3 202.0 (byte) main::bits_gen -(byte) main::bits_gen#1 4.125 -(byte) main::bits_gen#11 33.0 -(byte) main::bits_gen#13 33.0 -(byte) main::bits_gen#14 4.125 -(byte) main::bits_gen#15 33.0 -(byte) main::bits_gen#16 4.714285714285714 -(byte) main::bits_gen#4 22.0 -(byte) main::bits_gen#6 22.0 -(byte) main::bits_gen#7 22.0 -(byte) main::bits_gen#8 22.0 -(byte) main::bits_gen#9 11.0 +(byte) main::bits_gen#1 37.875 +(byte) main::bits_gen#11 303.0 +(byte) main::bits_gen#13 303.0 +(byte) main::bits_gen#14 37.875 +(byte) main::bits_gen#15 303.0 +(byte) main::bits_gen#16 43.285714285714285 +(byte) main::bits_gen#4 202.0 +(byte) main::bits_gen#6 202.0 +(byte) main::bits_gen#7 202.0 +(byte) main::bits_gen#8 202.0 +(byte) main::bits_gen#9 101.0 (byte*) main::chargen -(byte*) main::chargen#1 16.5 -(byte*) main::chargen#10 1.75 +(byte*) main::chargen#1 151.5 +(byte*) main::chargen#10 16.068181818181817 (byte*) main::chargen1 -(byte*) main::chargen1#0 1.6176470588235294 +(byte*) main::chargen1#0 14.852941176470589 (byte*) main::charset4 -(byte*) main::charset4#1 7.333333333333333 -(byte*) main::charset4#10 0.7674418604651163 +(byte*) main::charset4#1 67.33333333333333 +(byte*) main::charset4#10 7.046511627906977 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::chargen#10 main::chargen#1 ] @@ -1181,74 +1181,74 @@ main: { bits_count: .byte 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y -Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:13 [ main::$1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ main::$1 ] -Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) always clobbers reg byte a -Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y +Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] { } ) always clobbers reg byte a +Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] -Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:20 [ main::$11 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ main::$11 ] -Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) always clobbers reg byte a -Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a -Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y +Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] { } ) always clobbers reg byte a +Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] { } ) always clobbers reg byte a +Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] { } ) always clobbers reg byte a +Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] -Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) always clobbers reg byte a -Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y +Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] { } ) always clobbers reg byte a +Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:27 [ main::$21 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ main::$21 ] -Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) always clobbers reg byte a -Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y +Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] { } ) always clobbers reg byte a +Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] { } ) always clobbers reg byte a +Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::bits_gen#15 main::bits_gen#16 main::bits_gen#8 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ main::bits_gen#15 main::bits_gen#16 main::bits_gen#8 ] -Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) always clobbers reg byte a -Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] { } ) always clobbers reg byte a +Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:33 [ main::$30 ] Removing always clobbered register reg byte y as potential for zp[1]:33 [ main::$30 ] -Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a -Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y -Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [51] if((byte*) main::chargen#1<(const byte*) CHARGEN+(word) $800) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [58] *((const byte*) D018) ← (byte) $19 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y -Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) always clobbers reg byte a -Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y -Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y -Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) always clobbers reg byte a -Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a -Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y -Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) always clobbers reg byte a -Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y -Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) always clobbers reg byte a -Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) always clobbers reg byte a -Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y -Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a -Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y -Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [51] if((byte*) main::chargen#1<(const byte*) CHARGEN+(word) $800) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [58] *((const byte*) D018) ← (byte) $19 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] { } ) always clobbers reg byte a +Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] { } ) always clobbers reg byte y +Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] { } ) always clobbers reg byte a +Statement [51] if((byte*) main::chargen#1<(const byte*) CHARGEN+(word) $800) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [58] *((const byte*) D018) ← (byte) $19 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT) ← (byte) $32 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) $60 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] { } ) always clobbers reg byte a +Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] { } ) always clobbers reg byte a reg byte y +Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte) $18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] { } ) always clobbers reg byte a reg byte y +Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] { } ) always clobbers reg byte a +Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] { } ) always clobbers reg byte a +Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] { } ) always clobbers reg byte a +Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] { } ) always clobbers reg byte a reg byte y +Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] { } ) always clobbers reg byte a +Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] { } ) always clobbers reg byte a reg byte y +Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] { } ) always clobbers reg byte a +Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] { } ) always clobbers reg byte a +Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] { } ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] { } ) always clobbers reg byte a +Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] { } ) always clobbers reg byte a reg byte y +Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] { } ) always clobbers reg byte a +Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] { } ) always clobbers reg byte y +Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] { } ) always clobbers reg byte a +Statement [51] if((byte*) main::chargen#1<(const byte*) CHARGEN+(word) $800) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [58] *((const byte*) D018) ← (byte) $19 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::chargen#10 main::chargen#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::charset4#10 main::charset4#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::bits_gen#9 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , @@ -1284,7 +1284,7 @@ Potential registers zp[1]:36 [ main::bits#3 ] : zp[1]:36 , reg byte a , reg byte Potential registers zp[1]:37 [ main::bits_gen#7 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 59.71: zp[1]:9 [ main::bits_gen#15 main::bits_gen#16 main::bits_gen#8 ] 59.12: zp[1]:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] 59.12: zp[1]:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] 38.5: zp[1]:10 [ main::i#2 main::i#1 ] 22: zp[1]:14 [ main::$2 ] 22: zp[1]:15 [ main::$3 ] 22: zp[1]:16 [ main::$4 ] 22: zp[1]:17 [ main::$5 ] 22: zp[1]:18 [ main::$6 ] 22: zp[1]:19 [ main::bits#0 ] 22: zp[1]:21 [ main::$12 ] 22: zp[1]:22 [ main::$13 ] 22: zp[1]:23 [ main::$14 ] 22: zp[1]:24 [ main::$15 ] 22: zp[1]:25 [ main::bits#1 ] 22: zp[1]:26 [ main::$20 ] 22: zp[1]:28 [ main::$22 ] 22: zp[1]:29 [ main::$23 ] 22: zp[1]:30 [ main::$24 ] 22: zp[1]:31 [ main::bits#2 ] 22: zp[1]:32 [ main::$29 ] 22: zp[1]:34 [ main::$31 ] 22: zp[1]:35 [ main::$32 ] 22: zp[1]:36 [ main::bits#3 ] 22: zp[1]:37 [ main::bits_gen#7 ] 18.25: zp[2]:2 [ main::chargen#10 main::chargen#1 ] 11: zp[1]:6 [ main::bits_gen#9 ] 11: zp[1]:33 [ main::$30 ] 8.1: zp[2]:4 [ main::charset4#10 main::charset4#1 ] 7.33: zp[1]:13 [ main::$1 ] 7.33: zp[1]:20 [ main::$11 ] 7.33: zp[1]:27 [ main::$21 ] 1.62: zp[2]:11 [ main::chargen1#0 ] +Uplift Scope [main] 548.29: zp[1]:9 [ main::bits_gen#15 main::bits_gen#16 main::bits_gen#8 ] 542.88: zp[1]:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] 542.88: zp[1]:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] 353.5: zp[1]:10 [ main::i#2 main::i#1 ] 202: zp[1]:14 [ main::$2 ] 202: zp[1]:15 [ main::$3 ] 202: zp[1]:16 [ main::$4 ] 202: zp[1]:17 [ main::$5 ] 202: zp[1]:18 [ main::$6 ] 202: zp[1]:19 [ main::bits#0 ] 202: zp[1]:21 [ main::$12 ] 202: zp[1]:22 [ main::$13 ] 202: zp[1]:23 [ main::$14 ] 202: zp[1]:24 [ main::$15 ] 202: zp[1]:25 [ main::bits#1 ] 202: zp[1]:26 [ main::$20 ] 202: zp[1]:28 [ main::$22 ] 202: zp[1]:29 [ main::$23 ] 202: zp[1]:30 [ main::$24 ] 202: zp[1]:31 [ main::bits#2 ] 202: zp[1]:32 [ main::$29 ] 202: zp[1]:34 [ main::$31 ] 202: zp[1]:35 [ main::$32 ] 202: zp[1]:36 [ main::bits#3 ] 202: zp[1]:37 [ main::bits_gen#7 ] 167.57: zp[2]:2 [ main::chargen#10 main::chargen#1 ] 101: zp[1]:6 [ main::bits_gen#9 ] 101: zp[1]:33 [ main::$30 ] 74.38: zp[2]:4 [ main::charset4#10 main::charset4#1 ] 67.33: zp[1]:13 [ main::$1 ] 67.33: zp[1]:20 [ main::$11 ] 67.33: zp[1]:27 [ main::$21 ] 14.85: zp[2]:11 [ main::chargen1#0 ] Uplift Scope [] Uplifting [] best 5103 combination @@ -1721,26 +1721,26 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte*) bits_count[] = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } (void()) main() -(byte~) main::$1 zp[1]:8 7.333333333333333 -(byte~) main::$11 zp[1]:9 7.333333333333333 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$20 reg byte a 22.0 -(byte~) main::$21 zp[1]:10 7.333333333333333 -(byte~) main::$22 reg byte a 22.0 -(byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$30 zp[1]:11 11.0 -(byte~) main::$31 reg byte a 22.0 -(byte~) main::$32 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$1 zp[1]:8 67.33333333333333 +(byte~) main::$11 zp[1]:9 67.33333333333333 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$20 reg byte a 202.0 +(byte~) main::$21 zp[1]:10 67.33333333333333 +(byte~) main::$22 reg byte a 202.0 +(byte~) main::$23 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$29 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$30 zp[1]:11 101.0 +(byte~) main::$31 reg byte a 202.0 +(byte~) main::$32 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -1755,33 +1755,33 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::bits -(byte) main::bits#0 reg byte a 22.0 -(byte) main::bits#1 reg byte a 22.0 -(byte) main::bits#2 reg byte a 22.0 -(byte) main::bits#3 reg byte a 22.0 +(byte) main::bits#0 reg byte a 202.0 +(byte) main::bits#1 reg byte a 202.0 +(byte) main::bits#2 reg byte a 202.0 +(byte) main::bits#3 reg byte a 202.0 (byte) main::bits_gen -(byte) main::bits_gen#1 reg byte x 4.125 -(byte) main::bits_gen#11 reg byte x 33.0 -(byte) main::bits_gen#13 reg byte x 33.0 -(byte) main::bits_gen#14 reg byte x 4.125 -(byte) main::bits_gen#15 reg byte x 33.0 -(byte) main::bits_gen#16 reg byte x 4.714285714285714 -(byte) main::bits_gen#4 reg byte x 22.0 -(byte) main::bits_gen#6 reg byte x 22.0 -(byte) main::bits_gen#7 reg byte a 22.0 -(byte) main::bits_gen#8 reg byte x 22.0 -(byte) main::bits_gen#9 reg byte a 11.0 +(byte) main::bits_gen#1 reg byte x 37.875 +(byte) main::bits_gen#11 reg byte x 303.0 +(byte) main::bits_gen#13 reg byte x 303.0 +(byte) main::bits_gen#14 reg byte x 37.875 +(byte) main::bits_gen#15 reg byte x 303.0 +(byte) main::bits_gen#16 reg byte x 43.285714285714285 +(byte) main::bits_gen#4 reg byte x 202.0 +(byte) main::bits_gen#6 reg byte x 202.0 +(byte) main::bits_gen#7 reg byte a 202.0 +(byte) main::bits_gen#8 reg byte x 202.0 +(byte) main::bits_gen#9 reg byte a 101.0 (byte*) main::chargen -(byte*) main::chargen#1 chargen zp[2]:2 16.5 -(byte*) main::chargen#10 chargen zp[2]:2 1.75 +(byte*) main::chargen#1 chargen zp[2]:2 151.5 +(byte*) main::chargen#10 chargen zp[2]:2 16.068181818181817 (byte*) main::chargen1 -(byte*) main::chargen1#0 chargen1 zp[2]:6 1.6176470588235294 +(byte*) main::chargen1#0 chargen1 zp[2]:6 14.852941176470589 (byte*) main::charset4 -(byte*) main::charset4#1 charset4 zp[2]:4 7.333333333333333 -(byte*) main::charset4#10 charset4 zp[2]:4 0.7674418604651163 +(byte*) main::charset4#1 charset4 zp[2]:4 67.33333333333333 +(byte*) main::charset4#10 charset4 zp[2]:4 7.046511627906977 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 zp[2]:2 [ main::chargen#10 main::chargen#1 ] zp[2]:4 [ main::charset4#10 main::charset4#1 ] diff --git a/src/test/ref/halfscii.sym b/src/test/ref/halfscii.sym index 8f2c316e6..2a38d1bab 100644 --- a/src/test/ref/halfscii.sym +++ b/src/test/ref/halfscii.sym @@ -8,26 +8,26 @@ (const byte*) SCREEN = (byte*) 1024 (const byte*) bits_count[] = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } (void()) main() -(byte~) main::$1 zp[1]:8 7.333333333333333 -(byte~) main::$11 zp[1]:9 7.333333333333333 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$15 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$20 reg byte a 22.0 -(byte~) main::$21 zp[1]:10 7.333333333333333 -(byte~) main::$22 reg byte a 22.0 -(byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$30 zp[1]:11 11.0 -(byte~) main::$31 reg byte a 22.0 -(byte~) main::$32 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$1 zp[1]:8 67.33333333333333 +(byte~) main::$11 zp[1]:9 67.33333333333333 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 +(byte~) main::$15 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$20 reg byte a 202.0 +(byte~) main::$21 zp[1]:10 67.33333333333333 +(byte~) main::$22 reg byte a 202.0 +(byte~) main::$23 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$29 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$30 zp[1]:11 101.0 +(byte~) main::$31 reg byte a 202.0 +(byte~) main::$32 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -42,33 +42,33 @@ (label) main::@9 (label) main::@return (byte) main::bits -(byte) main::bits#0 reg byte a 22.0 -(byte) main::bits#1 reg byte a 22.0 -(byte) main::bits#2 reg byte a 22.0 -(byte) main::bits#3 reg byte a 22.0 +(byte) main::bits#0 reg byte a 202.0 +(byte) main::bits#1 reg byte a 202.0 +(byte) main::bits#2 reg byte a 202.0 +(byte) main::bits#3 reg byte a 202.0 (byte) main::bits_gen -(byte) main::bits_gen#1 reg byte x 4.125 -(byte) main::bits_gen#11 reg byte x 33.0 -(byte) main::bits_gen#13 reg byte x 33.0 -(byte) main::bits_gen#14 reg byte x 4.125 -(byte) main::bits_gen#15 reg byte x 33.0 -(byte) main::bits_gen#16 reg byte x 4.714285714285714 -(byte) main::bits_gen#4 reg byte x 22.0 -(byte) main::bits_gen#6 reg byte x 22.0 -(byte) main::bits_gen#7 reg byte a 22.0 -(byte) main::bits_gen#8 reg byte x 22.0 -(byte) main::bits_gen#9 reg byte a 11.0 +(byte) main::bits_gen#1 reg byte x 37.875 +(byte) main::bits_gen#11 reg byte x 303.0 +(byte) main::bits_gen#13 reg byte x 303.0 +(byte) main::bits_gen#14 reg byte x 37.875 +(byte) main::bits_gen#15 reg byte x 303.0 +(byte) main::bits_gen#16 reg byte x 43.285714285714285 +(byte) main::bits_gen#4 reg byte x 202.0 +(byte) main::bits_gen#6 reg byte x 202.0 +(byte) main::bits_gen#7 reg byte a 202.0 +(byte) main::bits_gen#8 reg byte x 202.0 +(byte) main::bits_gen#9 reg byte a 101.0 (byte*) main::chargen -(byte*) main::chargen#1 chargen zp[2]:2 16.5 -(byte*) main::chargen#10 chargen zp[2]:2 1.75 +(byte*) main::chargen#1 chargen zp[2]:2 151.5 +(byte*) main::chargen#10 chargen zp[2]:2 16.068181818181817 (byte*) main::chargen1 -(byte*) main::chargen1#0 chargen1 zp[2]:6 1.6176470588235294 +(byte*) main::chargen1#0 chargen1 zp[2]:6 14.852941176470589 (byte*) main::charset4 -(byte*) main::charset4#1 charset4 zp[2]:4 7.333333333333333 -(byte*) main::charset4#10 charset4 zp[2]:4 0.7674418604651163 +(byte*) main::charset4#1 charset4 zp[2]:4 67.33333333333333 +(byte*) main::charset4#10 charset4 zp[2]:4 7.046511627906977 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 zp[2]:2 [ main::chargen#10 main::chargen#1 ] zp[2]:4 [ main::charset4#10 main::charset4#1 ] diff --git a/src/test/ref/helloworld0.log b/src/test/ref/helloworld0.log index f53b2cee8..567c3c972 100644 --- a/src/test/ref/helloworld0.log +++ b/src/test/ref/helloworld0.log @@ -107,8 +107,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -178,13 +178,13 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 288 combination reg byte x [ main::i#2 main::i#1 ] @@ -280,8 +280,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (const byte*) msg[] = (byte*) "hello world!" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/helloworld0.sym b/src/test/ref/helloworld0.sym index 548d77a31..f92335862 100644 --- a/src/test/ref/helloworld0.sym +++ b/src/test/ref/helloworld0.sym @@ -6,8 +6,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (const byte*) msg[] = (byte*) "hello world!" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/helloworld2-inline.log b/src/test/ref/helloworld2-inline.log index b10551421..f12a83ecb 100644 --- a/src/test/ref/helloworld2-inline.log +++ b/src/test/ref/helloworld2-inline.log @@ -165,18 +165,18 @@ Finalized unsigned number type (byte) $50 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::print21_msg#0 = (byte*) main::print21_msg#3 -Alias (byte*) main::print21_at#0 = (byte*) main::print21_at#3 -Alias (byte*) main::print21_msg#1 = (byte*) main::print21_msg#2 -Alias (byte) main::print21_i#2 = (byte) main::print21_i#3 -Alias (byte*) main::print21_at#1 = (byte*) main::print21_at#2 -Alias (byte) main::print21_j#2 = (byte) main::print21_j#3 -Alias (byte*) main::print22_at#0 = (byte*~) main::$1 (byte*) main::print22_at#3 -Alias (byte*) main::print22_msg#0 = (byte*) main::print22_msg#3 -Alias (byte*) main::print22_msg#1 = (byte*) main::print22_msg#2 -Alias (byte) main::print22_i#2 = (byte) main::print22_i#3 -Alias (byte*) main::print22_at#1 = (byte*) main::print22_at#2 -Alias (byte) main::print22_j#2 = (byte) main::print22_j#3 +Alias main::print21_msg#0 = main::print21_msg#3 +Alias main::print21_at#0 = main::print21_at#3 +Alias main::print21_msg#1 = main::print21_msg#2 +Alias main::print21_i#2 = main::print21_i#3 +Alias main::print21_at#1 = main::print21_at#2 +Alias main::print21_j#2 = main::print21_j#3 +Alias main::print22_at#0 = main::$1 main::print22_at#3 +Alias main::print22_msg#0 = main::print22_msg#3 +Alias main::print22_msg#1 = main::print22_msg#2 +Alias main::print22_i#2 = main::print22_i#3 +Alias main::print22_at#1 = main::print22_at#2 +Alias main::print22_j#2 = main::print22_j#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) main::print21_msg#1 (byte*) main::print21_msg#0 Identical Phi Values (byte*) main::print21_at#1 (byte*) main::print21_at#0 @@ -286,19 +286,19 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::print21_at (byte) main::print21_i -(byte) main::print21_i#1 22.0 -(byte) main::print21_i#2 11.0 +(byte) main::print21_i#1 202.0 +(byte) main::print21_i#2 101.0 (byte) main::print21_j -(byte) main::print21_j#1 11.0 -(byte) main::print21_j#2 11.0 +(byte) main::print21_j#1 101.0 +(byte) main::print21_j#2 101.0 (byte*) main::print21_msg (byte*) main::print22_at (byte) main::print22_i -(byte) main::print22_i#1 22.0 -(byte) main::print22_i#2 11.0 +(byte) main::print22_i#1 202.0 +(byte) main::print22_i#2 101.0 (byte) main::print22_j -(byte) main::print22_j#1 11.0 -(byte) main::print22_j#2 11.0 +(byte) main::print22_j#1 101.0 +(byte) main::print22_j#2 101.0 (byte*) main::print22_msg Initial phi equivalence classes @@ -439,25 +439,25 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print21_i#2)) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a +Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print21_i#2)) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::print21_j#2 main::print21_j#1 ] -Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print22_i#2)) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a +Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print22_i#2)) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::print22_i#2 main::print22_i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] -Statement [12] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) screen + (byte) main::print21_j#2) ← *((const byte*) main::hello + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a -Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print21_i#2)) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a -Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print22_i#2)) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) screen + (byte) main::print21_j#2) ← *((const byte*) main::hello + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a +Statement [12] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) screen + (byte) main::print21_j#2) ← *((const byte*) main::hello + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] { } ) always clobbers reg byte a +Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print21_i#2)) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] { } ) always clobbers reg byte a +Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print22_i#2)) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) screen + (byte) main::print21_j#2) ← *((const byte*) main::hello + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::print21_j#2 main::print21_j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::print22_i#2 main::print22_i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] : zp[1]:5 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] 33: zp[1]:4 [ main::print22_i#2 main::print22_i#1 ] 22: zp[1]:3 [ main::print21_j#2 main::print21_j#1 ] 22: zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] 303: zp[1]:4 [ main::print22_i#2 main::print22_i#1 ] 202: zp[1]:3 [ main::print21_j#2 main::print21_j#1 ] 202: zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] Uplift Scope [] Uplifting [main] best 744 combination reg byte y [ main::print21_i#2 main::print21_i#1 ] reg byte y [ main::print22_i#2 main::print22_i#1 ] reg byte x [ main::print21_j#2 main::print21_j#1 ] reg byte x [ main::print22_j#2 main::print22_j#1 ] @@ -611,11 +611,11 @@ FINAL SYMBOL TABLE (label) main::print21_@2 (byte*) main::print21_at (byte) main::print21_i -(byte) main::print21_i#1 reg byte y 22.0 -(byte) main::print21_i#2 reg byte y 11.0 +(byte) main::print21_i#1 reg byte y 202.0 +(byte) main::print21_i#2 reg byte y 101.0 (byte) main::print21_j -(byte) main::print21_j#1 reg byte x 11.0 -(byte) main::print21_j#2 reg byte x 11.0 +(byte) main::print21_j#1 reg byte x 101.0 +(byte) main::print21_j#2 reg byte x 101.0 (byte*) main::print21_msg (label) main::print22 (label) main::print22_@1 @@ -623,11 +623,11 @@ FINAL SYMBOL TABLE (byte*) main::print22_at (const byte*) main::print22_at#0 print22_at = (const byte*) screen+(byte) $50 (byte) main::print22_i -(byte) main::print22_i#1 reg byte y 22.0 -(byte) main::print22_i#2 reg byte y 11.0 +(byte) main::print22_i#1 reg byte y 202.0 +(byte) main::print22_i#2 reg byte y 101.0 (byte) main::print22_j -(byte) main::print22_j#1 reg byte x 11.0 -(byte) main::print22_j#2 reg byte x 11.0 +(byte) main::print22_j#1 reg byte x 101.0 +(byte) main::print22_j#2 reg byte x 101.0 (byte*) main::print22_msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/helloworld2-inline.sym b/src/test/ref/helloworld2-inline.sym index 41b12eb5b..bcdfc194c 100644 --- a/src/test/ref/helloworld2-inline.sym +++ b/src/test/ref/helloworld2-inline.sym @@ -9,11 +9,11 @@ (label) main::print21_@2 (byte*) main::print21_at (byte) main::print21_i -(byte) main::print21_i#1 reg byte y 22.0 -(byte) main::print21_i#2 reg byte y 11.0 +(byte) main::print21_i#1 reg byte y 202.0 +(byte) main::print21_i#2 reg byte y 101.0 (byte) main::print21_j -(byte) main::print21_j#1 reg byte x 11.0 -(byte) main::print21_j#2 reg byte x 11.0 +(byte) main::print21_j#1 reg byte x 101.0 +(byte) main::print21_j#2 reg byte x 101.0 (byte*) main::print21_msg (label) main::print22 (label) main::print22_@1 @@ -21,11 +21,11 @@ (byte*) main::print22_at (const byte*) main::print22_at#0 print22_at = (const byte*) screen+(byte) $50 (byte) main::print22_i -(byte) main::print22_i#1 reg byte y 22.0 -(byte) main::print22_i#2 reg byte y 11.0 +(byte) main::print22_i#1 reg byte y 202.0 +(byte) main::print22_i#2 reg byte y 101.0 (byte) main::print22_j -(byte) main::print22_j#1 reg byte x 11.0 -(byte) main::print22_j#2 reg byte x 11.0 +(byte) main::print22_j#1 reg byte x 101.0 +(byte) main::print22_j#2 reg byte x 101.0 (byte*) main::print22_msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/helloworld2.log b/src/test/ref/helloworld2.log index 988a972f1..92d92ea94 100644 --- a/src/test/ref/helloworld2.log +++ b/src/test/ref/helloworld2.log @@ -116,11 +116,11 @@ Finalized unsigned number type (byte) $50 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) print2::at#1 = (byte*~) main::$1 -Alias (byte*) print2::msg#2 = (byte*) print2::msg#3 -Alias (byte) print2::i#2 = (byte) print2::i#3 -Alias (byte*) print2::at#2 = (byte*) print2::at#3 -Alias (byte) print2::j#2 = (byte) print2::j#3 +Alias print2::at#1 = main::$1 +Alias print2::msg#2 = print2::msg#3 +Alias print2::i#2 = print2::i#3 +Alias print2::at#2 = print2::at#3 +Alias print2::j#2 = print2::j#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print2::msg#2 (byte*) print2::msg#4 Identical Phi Values (byte*) print2::at#2 (byte*) print2::at#4 @@ -222,13 +222,13 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) print2((byte*) print2::at , (byte*) print2::msg) (byte*) print2::at -(byte*) print2::at#4 1.8333333333333333 +(byte*) print2::at#4 166.83333333333334 (byte) print2::i -(byte) print2::i#1 22.0 -(byte) print2::i#2 11.0 +(byte) print2::i#1 2002.0 +(byte) print2::i#2 1001.0 (byte) print2::j -(byte) print2::j#1 11.0 -(byte) print2::j#2 11.0 +(byte) print2::j#1 1001.0 +(byte) print2::j#2 1001.0 (byte*) print2::msg Initial phi equivalence classes @@ -351,18 +351,18 @@ print2: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] if((byte) 0!=*((const byte*) main::hello + (byte) print2::i#2)) goto print2::@2 [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] ) always clobbers reg byte a +Statement [11] if((byte) 0!=*((const byte*) main::hello + (byte) print2::i#2)) goto print2::@2 [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] { } main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ print2::i#2 print2::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ print2::j#2 print2::j#1 ] -Statement [13] *((byte*) print2::at#4 + (byte) print2::j#2) ← *((const byte*) main::hello + (byte) print2::i#2) [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] ) always clobbers reg byte a -Statement [11] if((byte) 0!=*((const byte*) main::hello + (byte) print2::i#2)) goto print2::@2 [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] ) always clobbers reg byte a -Statement [13] *((byte*) print2::at#4 + (byte) print2::j#2) ← *((const byte*) main::hello + (byte) print2::i#2) [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] ) always clobbers reg byte a +Statement [13] *((byte*) print2::at#4 + (byte) print2::j#2) ← *((const byte*) main::hello + (byte) print2::i#2) [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] { } main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a +Statement [11] if((byte) 0!=*((const byte*) main::hello + (byte) print2::i#2)) goto print2::@2 [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] { } main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a +Statement [13] *((byte*) print2::at#4 + (byte) print2::j#2) ← *((const byte*) main::hello + (byte) print2::i#2) [ print2::at#4 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#4 print2::i#2 print2::j#2 ] { } main:2::print2:7 [ print2::at#4 print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print2::at#4 ] : zp[2]:2 , Potential registers zp[1]:4 [ print2::i#2 print2::i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ print2::j#2 print2::j#1 ] : zp[1]:5 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print2] 33: zp[1]:4 [ print2::i#2 print2::i#1 ] 22: zp[1]:5 [ print2::j#2 print2::j#1 ] 1.83: zp[2]:2 [ print2::at#4 ] +Uplift Scope [print2] 3,003: zp[1]:4 [ print2::i#2 print2::i#1 ] 2,002: zp[1]:5 [ print2::j#2 print2::j#1 ] 166.83: zp[2]:2 [ print2::at#4 ] Uplift Scope [main] Uplift Scope [] @@ -509,13 +509,13 @@ FINAL SYMBOL TABLE (label) print2::@2 (label) print2::@return (byte*) print2::at -(byte*) print2::at#4 at zp[2]:2 1.8333333333333333 +(byte*) print2::at#4 at zp[2]:2 166.83333333333334 (byte) print2::i -(byte) print2::i#1 reg byte x 22.0 -(byte) print2::i#2 reg byte x 11.0 +(byte) print2::i#1 reg byte x 2002.0 +(byte) print2::i#2 reg byte x 1001.0 (byte) print2::j -(byte) print2::j#1 reg byte y 11.0 -(byte) print2::j#2 reg byte y 11.0 +(byte) print2::j#1 reg byte y 1001.0 +(byte) print2::j#2 reg byte y 1001.0 (byte*) print2::msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/helloworld2.sym b/src/test/ref/helloworld2.sym index 90b3e221b..f5364f336 100644 --- a/src/test/ref/helloworld2.sym +++ b/src/test/ref/helloworld2.sym @@ -10,13 +10,13 @@ (label) print2::@2 (label) print2::@return (byte*) print2::at -(byte*) print2::at#4 at zp[2]:2 1.8333333333333333 +(byte*) print2::at#4 at zp[2]:2 166.83333333333334 (byte) print2::i -(byte) print2::i#1 reg byte x 22.0 -(byte) print2::i#2 reg byte x 11.0 +(byte) print2::i#1 reg byte x 2002.0 +(byte) print2::i#2 reg byte x 1001.0 (byte) print2::j -(byte) print2::j#1 reg byte y 11.0 -(byte) print2::j#2 reg byte y 11.0 +(byte) print2::j#1 reg byte y 1001.0 +(byte) print2::j#2 reg byte y 1001.0 (byte*) print2::msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/hex2dec-ptrptr.log b/src/test/ref/hex2dec-ptrptr.log index e0e9b7454..88ed2e9bf 100644 --- a/src/test/ref/hex2dec-ptrptr.log +++ b/src/test/ref/hex2dec-ptrptr.log @@ -371,31 +371,31 @@ Inferred type updated to byte in (unumber~) utoa16w::$10 ← (byte~) utoa16w::$9 Inversing boolean not [77] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [76] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0 Inversing boolean not [81] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [80] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) main::screen#0 = (byte*) main::screen#5 -Alias (byte*) main::screen#1 = (byte*) main::screen#6 -Alias (byte*) main::screen#2 = (byte*) main::screen#7 -Alias (byte*) main::screen#3 = (byte*) main::screen#8 -Alias (byte) utoa16n::nybble#0 = (byte~) utoa16w::$1 -Alias (byte) utoa16n::return#0 = (byte) utoa16n::return#6 -Alias (word) utoa16w::value#5 = (word) utoa16w::value#6 (word) utoa16w::value#7 (word) utoa16w::value#8 -Alias (byte) utoa16w::started#1 = (byte~) utoa16w::$2 -Alias (byte) utoa16n::nybble#1 = (byte~) utoa16w::$4 -Alias (byte) utoa16n::return#1 = (byte) utoa16n::return#7 -Alias (byte) utoa16w::started#2 = (byte~) utoa16w::$5 -Alias (byte) utoa16n::nybble#2 = (byte~) utoa16w::$7 -Alias (byte) utoa16n::return#2 = (byte) utoa16n::return#8 -Alias (byte) utoa16w::started#3 = (byte~) utoa16w::$8 -Alias (byte) utoa16n::nybble#3 = (byte~) utoa16w::$10 -Alias (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#7 -Alias (word**) utoa16n::dst#6 = (word**) utoa16n::dst#7 -Alias (byte) utoa16n::return#4 = (byte) utoa16n::started#6 (byte) utoa16n::return#9 (byte) utoa16n::return#5 -Alias (byte) utoa16n::nybble#5 = (byte) utoa16n::nybble#6 -Alias (word**) utoa16n::dst#4 = (word**) utoa16n::dst#5 -Alias (byte) utoa16n::started#5 = (byte) utoa16n::started#8 +Alias main::screen#0 = main::screen#5 +Alias main::screen#1 = main::screen#6 +Alias main::screen#2 = main::screen#7 +Alias main::screen#3 = main::screen#8 +Alias utoa16n::nybble#0 = utoa16w::$1 +Alias utoa16n::return#0 = utoa16n::return#6 +Alias utoa16w::value#5 = utoa16w::value#6 utoa16w::value#7 utoa16w::value#8 +Alias utoa16w::started#1 = utoa16w::$2 +Alias utoa16n::nybble#1 = utoa16w::$4 +Alias utoa16n::return#1 = utoa16n::return#7 +Alias utoa16w::started#2 = utoa16w::$5 +Alias utoa16n::nybble#2 = utoa16w::$7 +Alias utoa16n::return#2 = utoa16n::return#8 +Alias utoa16w::started#3 = utoa16w::$8 +Alias utoa16n::nybble#3 = utoa16w::$10 +Alias utoa16n::nybble#4 = utoa16n::nybble#7 +Alias utoa16n::dst#6 = utoa16n::dst#7 +Alias utoa16n::return#4 = utoa16n::started#6 utoa16n::return#9 utoa16n::return#5 +Alias utoa16n::nybble#5 = utoa16n::nybble#6 +Alias utoa16n::dst#4 = utoa16n::dst#5 +Alias utoa16n::started#5 = utoa16n::started#8 Successful SSA optimization Pass2AliasElimination -Alias (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#5 -Alias (word**) utoa16n::dst#4 = (word**) utoa16n::dst#6 -Alias (byte) utoa16n::return#4 = (byte) utoa16n::started#5 +Alias utoa16n::nybble#4 = utoa16n::nybble#5 +Alias utoa16n::dst#4 = utoa16n::dst#6 +Alias utoa16n::return#4 = utoa16n::started#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) cls::$1 [28] if((byte*) cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1 Simple Condition (bool~) utoa16n::$1 [63] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@1 @@ -648,37 +648,37 @@ cls::@return: scope:[cls] from cls::@1 VARIABLE REGISTER WEIGHTS (void()) cls() (byte*) cls::sc -(byte*) cls::sc#1 16.5 -(byte*) cls::sc#2 16.5 +(byte*) cls::sc#1 1501.5 +(byte*) cls::sc#2 1501.5 (void()) main() (byte*) main::screen (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 4.0 -(byte) utoa16n::nybble#1 2.0 -(byte) utoa16n::nybble#2 2.0 -(byte) utoa16n::nybble#3 4.0 -(byte) utoa16n::nybble#4 2.4 +(byte) utoa16n::nybble#0 202.0 +(byte) utoa16n::nybble#1 101.0 +(byte) utoa16n::nybble#2 101.0 +(byte) utoa16n::nybble#3 202.0 +(byte) utoa16n::nybble#4 481.2 (byte) utoa16n::return -(byte) utoa16n::return#0 4.0 -(byte) utoa16n::return#1 4.0 -(byte) utoa16n::return#4 1.1428571428571428 +(byte) utoa16n::return#0 202.0 +(byte) utoa16n::return#1 202.0 +(byte) utoa16n::return#4 314.8571428571429 (byte) utoa16n::started -(byte) utoa16n::started#1 4.0 -(byte) utoa16n::started#2 4.0 -(byte) utoa16n::started#7 2.0 +(byte) utoa16n::started#1 202.0 +(byte) utoa16n::started#2 202.0 +(byte) utoa16n::started#7 401.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 4.0 -(byte~) utoa16w::$3 4.0 -(byte~) utoa16w::$6 4.0 -(byte~) utoa16w::$9 4.0 -(byte*) utoa16w::dst loadstore 0.375 +(byte~) utoa16w::$0 202.0 +(byte~) utoa16w::$3 202.0 +(byte~) utoa16w::$6 202.0 +(byte~) utoa16w::$9 202.0 +(byte*) utoa16w::dst loadstore 4.875 (byte) utoa16w::started -(byte) utoa16w::started#1 1.3333333333333333 -(byte) utoa16w::started#2 1.3333333333333333 +(byte) utoa16w::started#1 67.33333333333333 +(byte) utoa16w::started#2 67.33333333333333 (word) utoa16w::value -(word) utoa16w::value#5 0.5 +(word) utoa16w::value#5 25.25 Initial phi equivalence classes [ utoa16w::value#5 ] @@ -1061,40 +1061,31 @@ cls: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte*) utoa16w::dst ← (byte*) 1024 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [8] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [10] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [12] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [14] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [23] (byte~) utoa16w::$3 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:12 [ utoa16w::started#1 ] -Statement [29] (byte~) utoa16w::$6 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ) always clobbers reg byte a +Statement [6] (byte*) utoa16w::dst ← (byte*) 1024 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [8] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [10] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [14] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } ) always clobbers reg byte a +Statement [30] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ utoa16w::started#2 ] -Statement [30] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [33] (byte~) utoa16w::$9 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::$9 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::$9 ] ) always clobbers reg byte a -Statement [36] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:7 [ ] main:2::utoa16w:9 [ ] main:2::utoa16w:11 [ ] main:2::utoa16w:13 [ ] main:2::utoa16w:15 [ ] ) always clobbers reg byte a reg byte y -Statement [43] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:7::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] ) always clobbers reg byte a reg byte y +Statement [36] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:7 [ ] { } main:2::utoa16w:9 [ ] { } main:2::utoa16w:11 [ ] { } main:2::utoa16w:13 [ ] { } main:2::utoa16w:15 [ ] { } ) always clobbers reg byte a reg byte y +Statement [43] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:7::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:9::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:11::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:15::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:7::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:9::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:11::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:15::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:7::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:9::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:11::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:15::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:7::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:9::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:11::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:13::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:15::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:5 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] -Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a -Statement [6] (byte*) utoa16w::dst ← (byte*) 1024 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [8] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [10] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [12] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [14] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] ) always clobbers reg byte a -Statement [18] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [23] (byte~) utoa16w::$3 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ) always clobbers reg byte a -Statement [29] (byte~) utoa16w::$6 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ) always clobbers reg byte a -Statement [30] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [33] (byte~) utoa16w::$9 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::$9 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:9 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:11 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:13 [ utoa16w::dst utoa16w::$9 ] main:2::utoa16w:15 [ utoa16w::dst utoa16w::$9 ] ) always clobbers reg byte a -Statement [36] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:7 [ ] main:2::utoa16w:9 [ ] main:2::utoa16w:11 [ ] main:2::utoa16w:13 [ ] main:2::utoa16w:15 [ ] ) always clobbers reg byte a reg byte y -Statement [43] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:7::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:7::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:9::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:11::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:15::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] ) always clobbers reg byte a reg byte y -Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a +Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] { } ) always clobbers reg byte a +Statement [6] (byte*) utoa16w::dst ← (byte*) 1024 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [8] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [10] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [14] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ utoa16w::dst ] ( main:2 [ utoa16w::dst ] { } ) always clobbers reg byte a +Statement [19] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } ) always clobbers reg byte a +Statement [30] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:7 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:9 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:11 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:15 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } ) always clobbers reg byte a +Statement [36] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:7 [ ] { } main:2::utoa16w:9 [ ] { } main:2::utoa16w:11 [ ] { } main:2::utoa16w:13 [ ] { } main:2::utoa16w:15 [ ] { } ) always clobbers reg byte a reg byte y +Statement [43] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:7::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:9::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:11::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:15::utoa16n:20 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:7::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:9::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:11::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:15::utoa16n:26 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:7::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:9::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:11::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:15::utoa16n:32 [ utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:7::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:9::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:11::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:13::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:15::utoa16n:35 [ utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y +Statement [48] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [50] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ utoa16w::value#5 ] : zp[2]:2 , Potential registers zp[1]:4 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] : zp[1]:5 , reg byte x , @@ -1102,7 +1093,7 @@ Potential registers zp[2]:6 [ cls::sc#2 cls::sc#1 ] : zp[2]:6 , Potential registers zp[2]:8 [ utoa16w::dst ] : zp[2]:8 , Potential registers zp[1]:10 [ utoa16w::$0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:11 [ utoa16n::return#0 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:12 [ utoa16w::started#1 ] : zp[1]:12 , reg byte x , reg byte y , +Potential registers zp[1]:12 [ utoa16w::started#1 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:13 [ utoa16w::$3 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:14 [ utoa16n::return#1 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:15 [ utoa16w::started#2 ] : zp[1]:15 , reg byte x , reg byte y , @@ -1110,17 +1101,17 @@ Potential registers zp[1]:16 [ utoa16w::$6 ] : zp[1]:16 , reg byte a , reg byte Potential registers zp[1]:17 [ utoa16w::$9 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [utoa16n] 14.4: zp[1]:4 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 11.14: zp[1]:5 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 4: zp[1]:11 [ utoa16n::return#0 ] 4: zp[1]:14 [ utoa16n::return#1 ] -Uplift Scope [cls] 33: zp[2]:6 [ cls::sc#2 cls::sc#1 ] -Uplift Scope [utoa16w] 4: zp[1]:10 [ utoa16w::$0 ] 4: zp[1]:13 [ utoa16w::$3 ] 4: zp[1]:16 [ utoa16w::$6 ] 4: zp[1]:17 [ utoa16w::$9 ] 1.33: zp[1]:12 [ utoa16w::started#1 ] 1.33: zp[1]:15 [ utoa16w::started#2 ] 0.5: zp[2]:2 [ utoa16w::value#5 ] 0.38: zp[2]:8 [ utoa16w::dst ] +Uplift Scope [cls] 3,003: zp[2]:6 [ cls::sc#2 cls::sc#1 ] +Uplift Scope [utoa16n] 1,119.86: zp[1]:5 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 1,087.2: zp[1]:4 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 202: zp[1]:11 [ utoa16n::return#0 ] 202: zp[1]:14 [ utoa16n::return#1 ] +Uplift Scope [utoa16w] 202: zp[1]:10 [ utoa16w::$0 ] 202: zp[1]:13 [ utoa16w::$3 ] 202: zp[1]:16 [ utoa16w::$6 ] 202: zp[1]:17 [ utoa16w::$9 ] 67.33: zp[1]:12 [ utoa16w::started#1 ] 67.33: zp[1]:15 [ utoa16w::started#2 ] 25.25: zp[2]:2 [ utoa16w::value#5 ] 4.88: zp[2]:8 [ utoa16w::dst ] Uplift Scope [main] Uplift Scope [] -Uplifting [utoa16n] best 939 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] +Uplifting [cls] best 991 combination zp[2]:6 [ cls::sc#2 cls::sc#1 ] +Uplifting [utoa16n] best 939 combination reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [cls] best 939 combination zp[2]:6 [ cls::sc#2 cls::sc#1 ] Uplifting [utoa16w] best 915 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$3 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] zp[1]:12 [ utoa16w::started#1 ] zp[1]:15 [ utoa16w::started#2 ] zp[2]:2 [ utoa16w::value#5 ] zp[2]:8 [ utoa16w::dst ] -Limited combination testing to 100 combinations of 2304 possible. +Limited combination testing to 100 combinations of 3072 possible. Uplifting [main] best 915 combination Uplifting [] best 915 combination Attempting to uplift remaining variables inzp[1]:12 [ utoa16w::started#1 ] @@ -1509,8 +1500,8 @@ FINAL SYMBOL TABLE (label) cls::@1 (label) cls::@return (byte*) cls::sc -(byte*) cls::sc#1 sc zp[2]:2 16.5 -(byte*) cls::sc#2 sc zp[2]:2 16.5 +(byte*) cls::sc#1 sc zp[2]:2 1501.5 +(byte*) cls::sc#2 sc zp[2]:2 1501.5 (const byte*) cls::screen = (byte*) 1024 (void()) main() (label) main::@1 @@ -1527,35 +1518,35 @@ FINAL SYMBOL TABLE (label) utoa16n::@return (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 reg byte a 4.0 -(byte) utoa16n::nybble#1 reg byte a 2.0 -(byte) utoa16n::nybble#2 reg byte a 2.0 -(byte) utoa16n::nybble#3 reg byte a 4.0 -(byte) utoa16n::nybble#4 reg byte a 2.4 +(byte) utoa16n::nybble#0 reg byte a 202.0 +(byte) utoa16n::nybble#1 reg byte a 101.0 +(byte) utoa16n::nybble#2 reg byte a 101.0 +(byte) utoa16n::nybble#3 reg byte a 202.0 +(byte) utoa16n::nybble#4 reg byte a 481.2 (byte) utoa16n::return -(byte) utoa16n::return#0 reg byte x 4.0 -(byte) utoa16n::return#1 reg byte x 4.0 -(byte) utoa16n::return#4 reg byte x 1.1428571428571428 +(byte) utoa16n::return#0 reg byte x 202.0 +(byte) utoa16n::return#1 reg byte x 202.0 +(byte) utoa16n::return#4 reg byte x 314.8571428571429 (byte) utoa16n::started -(byte) utoa16n::started#1 reg byte x 4.0 -(byte) utoa16n::started#2 reg byte x 4.0 -(byte) utoa16n::started#7 reg byte x 2.0 +(byte) utoa16n::started#1 reg byte x 202.0 +(byte) utoa16n::started#2 reg byte x 202.0 +(byte) utoa16n::started#7 reg byte x 401.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 reg byte a 4.0 -(byte~) utoa16w::$3 reg byte a 4.0 -(byte~) utoa16w::$6 reg byte a 4.0 -(byte~) utoa16w::$9 reg byte a 4.0 +(byte~) utoa16w::$0 reg byte a 202.0 +(byte~) utoa16w::$3 reg byte a 202.0 +(byte~) utoa16w::$6 reg byte a 202.0 +(byte~) utoa16w::$9 reg byte a 202.0 (label) utoa16w::@1 (label) utoa16w::@2 (label) utoa16w::@3 (label) utoa16w::@4 (label) utoa16w::@return -(byte*) utoa16w::dst loadstore zp[2]:4 0.375 +(byte*) utoa16w::dst loadstore zp[2]:4 4.875 (byte) utoa16w::started -(byte) utoa16w::started#1 reg byte x 1.3333333333333333 -(byte) utoa16w::started#2 reg byte x 1.3333333333333333 +(byte) utoa16w::started#1 reg byte x 67.33333333333333 +(byte) utoa16w::started#2 reg byte x 67.33333333333333 (word) utoa16w::value -(word) utoa16w::value#5 value zp[2]:2 0.5 +(word) utoa16w::value#5 value zp[2]:2 25.25 reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] diff --git a/src/test/ref/hex2dec-ptrptr.sym b/src/test/ref/hex2dec-ptrptr.sym index 93123363b..205d838a8 100644 --- a/src/test/ref/hex2dec-ptrptr.sym +++ b/src/test/ref/hex2dec-ptrptr.sym @@ -6,8 +6,8 @@ (label) cls::@1 (label) cls::@return (byte*) cls::sc -(byte*) cls::sc#1 sc zp[2]:2 16.5 -(byte*) cls::sc#2 sc zp[2]:2 16.5 +(byte*) cls::sc#1 sc zp[2]:2 1501.5 +(byte*) cls::sc#2 sc zp[2]:2 1501.5 (const byte*) cls::screen = (byte*) 1024 (void()) main() (label) main::@1 @@ -24,35 +24,35 @@ (label) utoa16n::@return (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 reg byte a 4.0 -(byte) utoa16n::nybble#1 reg byte a 2.0 -(byte) utoa16n::nybble#2 reg byte a 2.0 -(byte) utoa16n::nybble#3 reg byte a 4.0 -(byte) utoa16n::nybble#4 reg byte a 2.4 +(byte) utoa16n::nybble#0 reg byte a 202.0 +(byte) utoa16n::nybble#1 reg byte a 101.0 +(byte) utoa16n::nybble#2 reg byte a 101.0 +(byte) utoa16n::nybble#3 reg byte a 202.0 +(byte) utoa16n::nybble#4 reg byte a 481.2 (byte) utoa16n::return -(byte) utoa16n::return#0 reg byte x 4.0 -(byte) utoa16n::return#1 reg byte x 4.0 -(byte) utoa16n::return#4 reg byte x 1.1428571428571428 +(byte) utoa16n::return#0 reg byte x 202.0 +(byte) utoa16n::return#1 reg byte x 202.0 +(byte) utoa16n::return#4 reg byte x 314.8571428571429 (byte) utoa16n::started -(byte) utoa16n::started#1 reg byte x 4.0 -(byte) utoa16n::started#2 reg byte x 4.0 -(byte) utoa16n::started#7 reg byte x 2.0 +(byte) utoa16n::started#1 reg byte x 202.0 +(byte) utoa16n::started#2 reg byte x 202.0 +(byte) utoa16n::started#7 reg byte x 401.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 reg byte a 4.0 -(byte~) utoa16w::$3 reg byte a 4.0 -(byte~) utoa16w::$6 reg byte a 4.0 -(byte~) utoa16w::$9 reg byte a 4.0 +(byte~) utoa16w::$0 reg byte a 202.0 +(byte~) utoa16w::$3 reg byte a 202.0 +(byte~) utoa16w::$6 reg byte a 202.0 +(byte~) utoa16w::$9 reg byte a 202.0 (label) utoa16w::@1 (label) utoa16w::@2 (label) utoa16w::@3 (label) utoa16w::@4 (label) utoa16w::@return -(byte*) utoa16w::dst loadstore zp[2]:4 0.375 +(byte*) utoa16w::dst loadstore zp[2]:4 4.875 (byte) utoa16w::started -(byte) utoa16w::started#1 reg byte x 1.3333333333333333 -(byte) utoa16w::started#2 reg byte x 1.3333333333333333 +(byte) utoa16w::started#1 reg byte x 67.33333333333333 +(byte) utoa16w::started#2 reg byte x 67.33333333333333 (word) utoa16w::value -(word) utoa16w::value#5 value zp[2]:2 0.5 +(word) utoa16w::value#5 value zp[2]:2 25.25 reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log index 5cc103290..9ff044608 100644 --- a/src/test/ref/hex2dec.log +++ b/src/test/ref/hex2dec.log @@ -709,53 +709,53 @@ Inversing boolean not [92] (bool~) utoa10w::$6 ← (byte) utoa10w::bStarted#2 == Inversing boolean not [148] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [147] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0 Inversing boolean not [152] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [151] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::rst#0 = (byte~) main::$3 -Alias (byte*) main::screen#0 = (byte*) main::screen#5 -Alias (byte) main::time_start#0 = (byte) main::time_start#5 (byte) main::time_start#4 (byte) main::time_start#3 (byte) main::time_start#2 (byte) main::time_start#1 -Alias (byte*) main::screen#1 = (byte*) main::screen#6 -Alias (byte*) main::screen#2 = (byte*) main::screen#7 -Alias (byte*) main::screen#3 = (byte*) main::screen#8 -Alias (byte*) main::screen#12 = (byte*) main::screen#9 (byte*) main::screen#4 -Alias (byte) main::time#0 = (byte~) main::$14 -Alias (word) utoa10w::value#0 = (word~) main::$15 -Alias (byte*) utoa10w::dst#0 = (byte*~) main::$16 -Alias (byte*) main::screen#10 = (byte*) main::screen#11 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) utoa10w::digit#3 = (byte) utoa10w::digit#5 (byte) utoa10w::digit#8 (byte) utoa10w::digit#6 (byte) utoa10w::digit#4 -Alias (byte) utoa10w::i#2 = (byte) utoa10w::i#3 (byte) utoa10w::i#4 (byte) utoa10w::i#7 (byte) utoa10w::i#8 -Alias (word) utoa10w::value#10 = (word) utoa10w::value#3 (word) utoa10w::value#2 (word) utoa10w::value#8 (word) utoa10w::value#9 -Alias (byte*) utoa10w::dst#11 = (byte*) utoa10w::dst#9 (byte*) utoa10w::dst#8 (byte*) utoa10w::dst#5 (byte*) utoa10w::dst#3 -Alias (byte) utoa10w::bStarted#2 = (byte) utoa10w::bStarted#3 (byte) utoa10w::bStarted#4 (byte) utoa10w::bStarted#7 -Alias (word) utoa10w::value#4 = (word) utoa10w::value#6 -Alias (byte*) utoa10w::dst#4 = (byte*) utoa10w::dst#6 -Alias (byte) utoa16n::nybble#0 = (byte~) utoa16w::$1 -Alias (byte) utoa16n::return#0 = (byte) utoa16n::return#6 -Alias (word) utoa16w::value#5 = (word) utoa16w::value#6 (word) utoa16w::value#7 (word) utoa16w::value#8 -Alias (byte) utoa16w::started#1 = (byte~) utoa16w::$2 -Alias (byte) utoa16n::nybble#1 = (byte~) utoa16w::$4 -Alias (byte) utoa16n::return#1 = (byte) utoa16n::return#7 -Alias (byte) utoa16w::started#2 = (byte~) utoa16w::$5 -Alias (byte) utoa16n::nybble#2 = (byte~) utoa16w::$7 -Alias (byte) utoa16n::return#2 = (byte) utoa16n::return#8 -Alias (byte) utoa16w::started#3 = (byte~) utoa16w::$8 -Alias (byte) utoa16n::nybble#3 = (byte~) utoa16w::$10 -Alias (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#7 -Alias (word**) utoa16n::dst#6 = (word**) utoa16n::dst#7 -Alias (byte) utoa16n::return#4 = (byte) utoa16n::started#6 (byte) utoa16n::return#9 (byte) utoa16n::return#5 -Alias (byte) utoa16n::nybble#5 = (byte) utoa16n::nybble#6 -Alias (word**) utoa16n::dst#4 = (word**) utoa16n::dst#5 -Alias (byte) utoa16n::started#5 = (byte) utoa16n::started#8 +Alias main::rst#0 = main::$3 +Alias main::screen#0 = main::screen#5 +Alias main::time_start#0 = main::time_start#5 main::time_start#4 main::time_start#3 main::time_start#2 main::time_start#1 +Alias main::screen#1 = main::screen#6 +Alias main::screen#2 = main::screen#7 +Alias main::screen#3 = main::screen#8 +Alias main::screen#12 = main::screen#9 main::screen#4 +Alias main::time#0 = main::$14 +Alias utoa10w::value#0 = main::$15 +Alias utoa10w::dst#0 = main::$16 +Alias main::screen#10 = main::screen#11 +Alias main::i#2 = main::i#3 +Alias utoa10w::digit#3 = utoa10w::digit#5 utoa10w::digit#8 utoa10w::digit#6 utoa10w::digit#4 +Alias utoa10w::i#2 = utoa10w::i#3 utoa10w::i#4 utoa10w::i#7 utoa10w::i#8 +Alias utoa10w::value#10 = utoa10w::value#3 utoa10w::value#2 utoa10w::value#8 utoa10w::value#9 +Alias utoa10w::dst#11 = utoa10w::dst#9 utoa10w::dst#8 utoa10w::dst#5 utoa10w::dst#3 +Alias utoa10w::bStarted#2 = utoa10w::bStarted#3 utoa10w::bStarted#4 utoa10w::bStarted#7 +Alias utoa10w::value#4 = utoa10w::value#6 +Alias utoa10w::dst#4 = utoa10w::dst#6 +Alias utoa16n::nybble#0 = utoa16w::$1 +Alias utoa16n::return#0 = utoa16n::return#6 +Alias utoa16w::value#5 = utoa16w::value#6 utoa16w::value#7 utoa16w::value#8 +Alias utoa16w::started#1 = utoa16w::$2 +Alias utoa16n::nybble#1 = utoa16w::$4 +Alias utoa16n::return#1 = utoa16n::return#7 +Alias utoa16w::started#2 = utoa16w::$5 +Alias utoa16n::nybble#2 = utoa16w::$7 +Alias utoa16n::return#2 = utoa16n::return#8 +Alias utoa16w::started#3 = utoa16w::$8 +Alias utoa16n::nybble#3 = utoa16w::$10 +Alias utoa16n::nybble#4 = utoa16n::nybble#7 +Alias utoa16n::dst#6 = utoa16n::dst#7 +Alias utoa16n::return#4 = utoa16n::started#6 utoa16n::return#9 utoa16n::return#5 +Alias utoa16n::nybble#5 = utoa16n::nybble#6 +Alias utoa16n::dst#4 = utoa16n::dst#5 +Alias utoa16n::started#5 = utoa16n::started#8 Successful SSA optimization Pass2AliasElimination -Alias (byte) utoa10w::i#2 = (byte) utoa10w::i#6 -Alias (word) utoa10w::value#10 = (word) utoa10w::value#7 -Alias (byte) utoa10w::bStarted#2 = (byte) utoa10w::bStarted#6 -Alias (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#5 -Alias (word**) utoa16n::dst#4 = (word**) utoa16n::dst#6 -Alias (byte) utoa16n::return#4 = (byte) utoa16n::started#5 +Alias utoa10w::i#2 = utoa10w::i#6 +Alias utoa10w::value#10 = utoa10w::value#7 +Alias utoa10w::bStarted#2 = utoa10w::bStarted#6 +Alias utoa16n::nybble#4 = utoa16n::nybble#5 +Alias utoa16n::dst#4 = utoa16n::dst#6 +Alias utoa16n::return#4 = utoa16n::started#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) utoa10w::i#2 = (byte) utoa10w::i#5 -Alias (word) utoa10w::value#10 = (word) utoa10w::value#4 -Alias (byte) utoa10w::bStarted#2 = (byte) utoa10w::bStarted#5 +Alias utoa10w::i#2 = utoa10w::i#5 +Alias utoa10w::value#10 = utoa10w::value#4 +Alias utoa10w::bStarted#2 = utoa10w::bStarted#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) main::screen#10 (byte*) main::screen#12 Identical Phi Values (word) utoa10w::value#5 (word) utoa10w::value#0 @@ -1178,74 +1178,74 @@ cls::@return: scope:[cls] from cls::@1 VARIABLE REGISTER WEIGHTS (void()) cls() (byte*) cls::sc -(byte*) cls::sc#1 16.5 -(byte*) cls::sc#2 16.5 +(byte*) cls::sc#1 1501.5 +(byte*) cls::sc#2 1501.5 (void()) main() -(byte~) main::$1 101.0 -(byte~) main::$2 202.0 +(byte~) main::$1 1001.0 +(byte~) main::$2 2002.0 (byte) main::i -(byte) main::i#1 202.0 -(byte) main::i#2 168.33333333333331 +(byte) main::i#1 2002.0 +(byte) main::i#2 1668.3333333333335 (byte) main::rst -(byte) main::rst#0 202.0 +(byte) main::rst#0 2002.0 (byte*) main::screen (byte) main::time -(byte) main::time#0 11.0 +(byte) main::time#0 101.0 (byte) main::time_end -(byte) main::time_end#0 11.0 +(byte) main::time_end#0 101.0 (byte) main::time_start -(byte) main::time_start#0 1.2941176470588236 +(byte) main::time_start#0 11.882352941176471 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) -(byte~) utoa10w::$0 4.0 -(byte~) utoa10w::$2 202.0 -(byte~) utoa10w::$8 202.0 -(byte~) utoa10w::$9 202.0 +(byte~) utoa10w::$0 2002.0 +(byte~) utoa10w::$2 200002.0 +(byte~) utoa10w::$8 200002.0 +(byte~) utoa10w::$9 200002.0 (byte) utoa10w::bStarted -(byte) utoa10w::bStarted#2 25.25 +(byte) utoa10w::bStarted#2 25000.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 67.33333333333333 -(byte) utoa10w::digit#3 84.16666666666666 -(byte) utoa10w::digit#7 67.33333333333333 +(byte) utoa10w::digit#1 66667.33333333333 +(byte) utoa10w::digit#3 83334.16666666666 +(byte) utoa10w::digit#7 66667.33333333333 (byte*) utoa10w::dst -(byte*) utoa10w::dst#1 202.0 -(byte*) utoa10w::dst#11 70.7 -(byte*) utoa10w::dst#2 4.0 -(byte*) utoa10w::dst#4 61.39999999999999 -(byte*) utoa10w::dst#7 303.0 +(byte*) utoa10w::dst#1 200002.0 +(byte*) utoa10w::dst#11 70000.7 +(byte*) utoa10w::dst#2 2002.0 +(byte*) utoa10w::dst#4 60401.0 +(byte*) utoa10w::dst#7 300003.0 (byte) utoa10w::i -(byte) utoa10w::i#1 151.5 -(byte) utoa10w::i#2 62.153846153846146 +(byte) utoa10w::i#1 150001.5 +(byte) utoa10w::i#2 61539.07692307693 (word) utoa10w::value -(word) utoa10w::value#0 6.5 -(word) utoa10w::value#1 202.0 -(word) utoa10w::value#10 36.214285714285715 +(word) utoa10w::value#0 551.0 +(word) utoa10w::value#1 200002.0 +(word) utoa10w::value#10 35786.142857142855 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 4.0 -(byte) utoa16n::nybble#1 2.0 -(byte) utoa16n::nybble#2 2.0 -(byte) utoa16n::nybble#3 4.0 -(byte) utoa16n::nybble#4 2.4 +(byte) utoa16n::nybble#0 2002.0 +(byte) utoa16n::nybble#1 1001.0 +(byte) utoa16n::nybble#2 1001.0 +(byte) utoa16n::nybble#3 2002.0 +(byte) utoa16n::nybble#4 4801.2 (byte) utoa16n::return -(byte) utoa16n::return#0 4.0 -(byte) utoa16n::return#1 4.0 -(byte) utoa16n::return#4 1.1428571428571428 +(byte) utoa16n::return#0 2002.0 +(byte) utoa16n::return#1 2002.0 +(byte) utoa16n::return#4 3143.4285714285716 (byte) utoa16n::started -(byte) utoa16n::started#1 4.0 -(byte) utoa16n::started#2 4.0 -(byte) utoa16n::started#7 2.0 +(byte) utoa16n::started#1 2002.0 +(byte) utoa16n::started#2 2002.0 +(byte) utoa16n::started#7 4001.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 4.0 -(byte~) utoa16w::$3 4.0 -(byte~) utoa16w::$6 4.0 -(byte~) utoa16w::$9 4.0 -(byte*) utoa16w::dst loadstore 1.78125 +(byte~) utoa16w::$0 2002.0 +(byte~) utoa16w::$3 2002.0 +(byte~) utoa16w::$6 2002.0 +(byte~) utoa16w::$9 2002.0 +(byte*) utoa16w::dst loadstore 47.0625 (byte) utoa16w::started -(byte) utoa16w::started#1 1.3333333333333333 -(byte) utoa16w::started#2 1.3333333333333333 +(byte) utoa16w::started#1 667.3333333333334 +(byte) utoa16w::started#2 667.3333333333334 (word) utoa16w::value -(word) utoa16w::value#5 0.5 +(word) utoa16w::value#5 250.25 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -1946,88 +1946,79 @@ cls: { UTOA10_VAL: .byte 3, 1, 3, 1, 3, 1, 3, 1 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$1 ← *((const byte*) control) & (byte) $80 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← *((const byte*) raster) >> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← *((const byte*) control) & (byte) $80 [ main::$1 ] ( main:2 [ main::$1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← *((const byte*) raster) >> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ main::$1 ] -Statement [10] *((const byte*) bordercol) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (byte*) utoa16w::dst ← (byte*) 1024 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a +Statement [10] *((const byte*) bordercol) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst ← (byte*) 1024 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ main::time_start#0 ] -Statement [15] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [18] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [21] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [24] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [27] *((const byte*) bordercol) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a +Statement [15] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [18] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [21] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [24] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) bordercol) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ main::time_end#0 ] -Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a -Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a -Statement [32] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] { } ) always clobbers reg byte a +Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] { } ) always clobbers reg byte a +Statement [32] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@4 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [33] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a +Statement [33] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ utoa10w::i#2 utoa10w::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ utoa10w::bStarted#2 ] -Statement [38] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a -Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a -Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y +Statement [38] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a +Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] { } ) always clobbers reg byte a +Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ utoa10w::i#2 utoa10w::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ utoa10w::bStarted#2 ] -Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a -Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] ) always clobbers reg byte a -Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] ) always clobbers reg byte a reg byte y -Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a -Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$9) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [62] (byte~) utoa16w::$3 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:32 [ utoa16w::started#1 ] -Statement [68] (byte~) utoa16w::$6 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ) always clobbers reg byte a +Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] { } ) always clobbers reg byte a +Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] { } ) always clobbers reg byte a reg byte y +Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] { } ) always clobbers reg byte a +Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] { } ) always clobbers reg byte a reg byte y +Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] { } ) always clobbers reg byte a +Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$9) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } ) always clobbers reg byte a +Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ utoa16w::started#2 ] -Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [72] (byte~) utoa16w::$9 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::$9 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] ) always clobbers reg byte a -Statement [75] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:19 [ main::time_start#0 ] main:2::utoa16w:22 [ main::time_start#0 ] main:2::utoa16w:25 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y +Statement [75] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] { } main:2::utoa16w:16 [ main::time_start#0 ] { } main:2::utoa16w:19 [ main::time_start#0 ] { } main:2::utoa16w:22 [ main::time_start#0 ] { } main:2::utoa16w:25 [ main::time_start#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:19 [ main::time_start#0 ] -Statement [82] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] ) always clobbers reg byte a reg byte y +Statement [82] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:13 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] -Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$1 ← *((const byte*) control) & (byte) $80 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← *((const byte*) raster) >> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) bordercol) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (byte*) utoa16w::dst ← (byte*) 1024 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [15] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [18] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [21] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [24] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] ) always clobbers reg byte a -Statement [27] *((const byte*) bordercol) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] ) always clobbers reg byte a -Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] ) always clobbers reg byte a -Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] ) always clobbers reg byte a -Statement [32] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [33] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ) always clobbers reg byte a -Statement [38] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a -Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ) always clobbers reg byte a -Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ) always clobbers reg byte a reg byte y -Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] ) always clobbers reg byte a -Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] ) always clobbers reg byte a -Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] ) always clobbers reg byte a reg byte y -Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ) always clobbers reg byte a -Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$9) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ) always clobbers reg byte a -Statement [57] (byte~) utoa16w::$0 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::$0 ] ) always clobbers reg byte a -Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ) always clobbers reg byte a -Statement [62] (byte~) utoa16w::$3 ← > (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#1 utoa16w::$3 ] ) always clobbers reg byte a -Statement [68] (byte~) utoa16w::$6 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16w::$6 ] ) always clobbers reg byte a -Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ) always clobbers reg byte a -Statement [72] (byte~) utoa16w::$9 ← < (word) utoa16w::value#5 [ utoa16w::dst utoa16w::$9 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::$9 ] ) always clobbers reg byte a -Statement [75] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] main:2::utoa16w:16 [ main::time_start#0 ] main:2::utoa16w:19 [ main::time_start#0 ] main:2::utoa16w:22 [ main::time_start#0 ] main:2::utoa16w:25 [ main::time_start#0 ] ) always clobbers reg byte a reg byte y -Statement [82] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] ) always clobbers reg byte a +Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← *((const byte*) control) & (byte) $80 [ main::$1 ] ( main:2 [ main::$1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← *((const byte*) raster) >> (byte) 1 [ main::$1 main::$2 ] ( main:2 [ main::$1 main::$2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) bordercol) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (byte*) utoa16w::dst ← (byte*) 1024 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [15] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [18] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [21] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [24] (byte*) utoa16w::dst ← (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28 [ main::time_start#0 utoa16w::dst ] ( main:2 [ main::time_start#0 utoa16w::dst ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) bordercol) ← (byte) 0 [ main::time_start#0 main::time_end#0 ] ( main:2 [ main::time_start#0 main::time_end#0 ] { } ) always clobbers reg byte a +Statement [28] (byte) main::time#0 ← (byte) main::time_end#0 - (byte) main::time_start#0 [ main::time#0 ] ( main:2 [ main::time#0 ] { } ) always clobbers reg byte a +Statement [29] (word) utoa10w::value#0 ← (word)(byte) main::time#0 [ utoa10w::value#0 ] ( main:2 [ utoa10w::value#0 ] { } ) always clobbers reg byte a +Statement [32] if(*((const byte*) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@4 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [33] *((byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3 + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [37] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a +Statement [38] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a +Statement [39] (byte~) utoa10w::$2 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$2 ] { } ) always clobbers reg byte a +Statement [42] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a reg byte y +Statement [48] (byte~) utoa10w::$0 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$0 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 utoa10w::$0 ] { } ) always clobbers reg byte a +Statement [49] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$0) [ utoa10w::dst#4 ] ( main:2::utoa10w:30 [ utoa10w::dst#4 ] { } ) always clobbers reg byte a reg byte y +Statement [50] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( main:2::utoa10w:30 [ utoa10w::dst#2 ] { } ) always clobbers reg byte a +Statement [51] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( main:2::utoa10w:30 [ ] { } ) always clobbers reg byte a reg byte y +Statement [53] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [54] (byte~) utoa10w::$9 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$9 ] { } ) always clobbers reg byte a +Statement [55] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$9) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( main:2::utoa10w:30 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [58] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } ) always clobbers reg byte a +Statement [69] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( main:2::utoa16w:13 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:16 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:19 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:22 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:25 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } ) always clobbers reg byte a +Statement [75] *((byte*) utoa16w::dst) ← (byte) 0 [ ] ( main:2::utoa16w:13 [ main::time_start#0 ] { } main:2::utoa16w:16 [ main::time_start#0 ] { } main:2::utoa16w:19 [ main::time_start#0 ] { } main:2::utoa16w:22 [ main::time_start#0 ] { } main:2::utoa16w:25 [ main::time_start#0 ] { } ) always clobbers reg byte a reg byte y +Statement [82] *(*(&(byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( main:2::utoa16w:13::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:16::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:19::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:22::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:25::utoa16n:59 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:16::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:19::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:22::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:25::utoa16n:65 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } main:2::utoa16w:13::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:16::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:19::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:22::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:25::utoa16n:71 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } main:2::utoa16w:13::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:16::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:19::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:22::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } main:2::utoa16w:25::utoa16n:74 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) cls::sc#2) ← (byte) ' ' [ cls::sc#2 ] ( main:2::cls:5 [ cls::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [89] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte) 1) goto cls::@1 [ cls::sc#1 ] ( main:2::cls:5 [ cls::sc#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ utoa10w::i#2 utoa10w::i#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] : zp[2]:4 , @@ -2052,7 +2043,7 @@ Potential registers zp[2]:27 [ utoa10w::dst#2 ] : zp[2]:27 , Potential registers zp[1]:29 [ utoa10w::$9 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:30 [ utoa16w::$0 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:31 [ utoa16n::return#0 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:32 [ utoa16w::started#1 ] : zp[1]:32 , reg byte x , reg byte y , +Potential registers zp[1]:32 [ utoa16w::started#1 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:33 [ utoa16w::$3 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:34 [ utoa16n::return#1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:35 [ utoa16w::started#2 ] : zp[1]:35 , reg byte x , reg byte y , @@ -2060,41 +2051,41 @@ Potential registers zp[1]:36 [ utoa16w::$6 ] : zp[1]:36 , reg byte a , reg byte Potential registers zp[1]:37 [ utoa16w::$9 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [utoa10w] 637.1: zp[2]:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] 244.71: zp[2]:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] 218.83: zp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] 213.65: zp[1]:3 [ utoa10w::i#2 utoa10w::i#1 ] 202: zp[1]:24 [ utoa10w::$8 ] 202: zp[1]:25 [ utoa10w::$2 ] 202: zp[1]:29 [ utoa10w::$9 ] 25.25: zp[1]:7 [ utoa10w::bStarted#2 ] 4: zp[1]:26 [ utoa10w::$0 ] 4: zp[2]:27 [ utoa10w::dst#2 ] -Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:17 [ main::$2 ] 202: zp[1]:18 [ main::rst#0 ] 101: zp[1]:16 [ main::$1 ] 11: zp[1]:22 [ main::time_end#0 ] 11: zp[1]:23 [ main::time#0 ] 1.29: zp[1]:19 [ main::time_start#0 ] -Uplift Scope [utoa16n] 14.4: zp[1]:12 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 11.14: zp[1]:13 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 4: zp[1]:31 [ utoa16n::return#0 ] 4: zp[1]:34 [ utoa16n::return#1 ] -Uplift Scope [cls] 33: zp[2]:14 [ cls::sc#2 cls::sc#1 ] -Uplift Scope [utoa16w] 4: zp[1]:30 [ utoa16w::$0 ] 4: zp[1]:33 [ utoa16w::$3 ] 4: zp[1]:36 [ utoa16w::$6 ] 4: zp[1]:37 [ utoa16w::$9 ] 1.78: zp[2]:20 [ utoa16w::dst ] 1.33: zp[1]:32 [ utoa16w::started#1 ] 1.33: zp[1]:35 [ utoa16w::started#2 ] 0.5: zp[2]:10 [ utoa16w::value#5 ] +Uplift Scope [utoa10w] 630,406.7: zp[2]:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] 236,339.14: zp[2]:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] 216,668.83: zp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] 211,540.58: zp[1]:3 [ utoa10w::i#2 utoa10w::i#1 ] 200,002: zp[1]:24 [ utoa10w::$8 ] 200,002: zp[1]:25 [ utoa10w::$2 ] 200,002: zp[1]:29 [ utoa10w::$9 ] 25,000.25: zp[1]:7 [ utoa10w::bStarted#2 ] 2,002: zp[1]:26 [ utoa10w::$0 ] 2,002: zp[2]:27 [ utoa10w::dst#2 ] +Uplift Scope [utoa16n] 11,148.43: zp[1]:13 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 10,807.2: zp[1]:12 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 2,002: zp[1]:31 [ utoa16n::return#0 ] 2,002: zp[1]:34 [ utoa16n::return#1 ] +Uplift Scope [utoa16w] 2,002: zp[1]:30 [ utoa16w::$0 ] 2,002: zp[1]:33 [ utoa16w::$3 ] 2,002: zp[1]:36 [ utoa16w::$6 ] 2,002: zp[1]:37 [ utoa16w::$9 ] 667.33: zp[1]:32 [ utoa16w::started#1 ] 667.33: zp[1]:35 [ utoa16w::started#2 ] 250.25: zp[2]:10 [ utoa16w::value#5 ] 47.06: zp[2]:20 [ utoa16w::dst ] +Uplift Scope [main] 3,670.33: zp[1]:2 [ main::i#2 main::i#1 ] 2,002: zp[1]:17 [ main::$2 ] 2,002: zp[1]:18 [ main::rst#0 ] 1,001: zp[1]:16 [ main::$1 ] 101: zp[1]:22 [ main::time_end#0 ] 101: zp[1]:23 [ main::time#0 ] 11.88: zp[1]:19 [ main::time_start#0 ] +Uplift Scope [cls] 3,003: zp[2]:14 [ cls::sc#2 cls::sc#1 ] Uplift Scope [] Uplifting [utoa10w] best 28971 combination zp[2]:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] zp[2]:4 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] zp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] reg byte a [ utoa10w::$8 ] reg byte a [ utoa10w::$2 ] zp[1]:29 [ utoa10w::$9 ] zp[1]:7 [ utoa10w::bStarted#2 ] zp[1]:26 [ utoa10w::$0 ] zp[2]:27 [ utoa10w::dst#2 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [main] best 26571 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp[1]:16 [ main::$1 ] zp[1]:22 [ main::time_end#0 ] zp[1]:23 [ main::time#0 ] zp[1]:19 [ main::time_start#0 ] -Limited combination testing to 100 combinations of 3456 possible. -Uplifting [utoa16n] best 26519 combination reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] +Uplifting [utoa16n] best 28919 combination reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [cls] best 26519 combination zp[2]:14 [ cls::sc#2 cls::sc#1 ] -Uplifting [utoa16w] best 26495 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$3 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] zp[2]:20 [ utoa16w::dst ] zp[1]:32 [ utoa16w::started#1 ] zp[1]:35 [ utoa16w::started#2 ] zp[2]:10 [ utoa16w::value#5 ] -Limited combination testing to 100 combinations of 2304 possible. +Uplifting [utoa16w] best 28895 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$3 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] zp[1]:32 [ utoa16w::started#1 ] zp[1]:35 [ utoa16w::started#2 ] zp[2]:10 [ utoa16w::value#5 ] zp[2]:20 [ utoa16w::dst ] +Limited combination testing to 100 combinations of 3072 possible. +Uplifting [main] best 26495 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp[1]:16 [ main::$1 ] zp[1]:22 [ main::time_end#0 ] zp[1]:23 [ main::time#0 ] zp[1]:19 [ main::time_start#0 ] +Limited combination testing to 100 combinations of 3456 possible. +Uplifting [cls] best 26495 combination zp[2]:14 [ cls::sc#2 cls::sc#1 ] Uplifting [] best 26495 combination Attempting to uplift remaining variables inzp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Uplifting [utoa10w] best 26495 combination zp[1]:6 [ utoa10w::digit#3 utoa10w::digit#7 utoa10w::digit#1 ] Attempting to uplift remaining variables inzp[1]:29 [ utoa10w::$9 ] Uplifting [utoa10w] best 26095 combination reg byte a [ utoa10w::$9 ] -Attempting to uplift remaining variables inzp[1]:16 [ main::$1 ] -Uplifting [main] best 26095 combination zp[1]:16 [ main::$1 ] Attempting to uplift remaining variables inzp[1]:7 [ utoa10w::bStarted#2 ] Uplifting [utoa10w] best 26095 combination zp[1]:7 [ utoa10w::bStarted#2 ] -Attempting to uplift remaining variables inzp[1]:22 [ main::time_end#0 ] -Uplifting [main] best 26055 combination reg byte x [ main::time_end#0 ] -Attempting to uplift remaining variables inzp[1]:23 [ main::time#0 ] -Uplifting [main] best 25995 combination reg byte a [ main::time#0 ] Attempting to uplift remaining variables inzp[1]:26 [ utoa10w::$0 ] -Uplifting [utoa10w] best 25991 combination reg byte a [ utoa10w::$0 ] +Uplifting [utoa10w] best 26091 combination reg byte a [ utoa10w::$0 ] +Attempting to uplift remaining variables inzp[1]:16 [ main::$1 ] +Uplifting [main] best 26091 combination zp[1]:16 [ main::$1 ] Attempting to uplift remaining variables inzp[1]:32 [ utoa16w::started#1 ] -Uplifting [utoa16w] best 25985 combination reg byte x [ utoa16w::started#1 ] +Uplifting [utoa16w] best 26085 combination reg byte x [ utoa16w::started#1 ] Attempting to uplift remaining variables inzp[1]:35 [ utoa16w::started#2 ] -Uplifting [utoa16w] best 25979 combination reg byte x [ utoa16w::started#2 ] +Uplifting [utoa16w] best 26079 combination reg byte x [ utoa16w::started#2 ] +Attempting to uplift remaining variables inzp[1]:22 [ main::time_end#0 ] +Uplifting [main] best 26039 combination reg byte x [ main::time_end#0 ] +Attempting to uplift remaining variables inzp[1]:23 [ main::time#0 ] +Uplifting [main] best 25979 combination reg byte a [ main::time#0 ] Attempting to uplift remaining variables inzp[1]:19 [ main::time_start#0 ] Uplifting [main] best 25979 combination zp[1]:19 [ main::time_start#0 ] Coalescing zero page register [ zp[2]:8 [ utoa10w::dst#7 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] ] with [ zp[2]:27 [ utoa10w::dst#2 ] ] - score: 1 @@ -2756,13 +2747,13 @@ FINAL SYMBOL TABLE (label) cls::@1 (label) cls::@return (byte*) cls::sc -(byte*) cls::sc#1 sc zp[2]:4 16.5 -(byte*) cls::sc#2 sc zp[2]:4 16.5 +(byte*) cls::sc#1 sc zp[2]:4 1501.5 +(byte*) cls::sc#2 sc zp[2]:4 1501.5 (const byte*) cls::screen = (byte*) 1024 (const byte*) control = (byte*) 53265 (void()) main() -(byte~) main::$1 zp[1]:6 101.0 -(byte~) main::$2 reg byte a 202.0 +(byte~) main::$1 zp[1]:6 1001.0 +(byte~) main::$2 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -2773,24 +2764,24 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 168.33333333333331 +(byte) main::i#1 reg byte x 2002.0 +(byte) main::i#2 reg byte x 1668.3333333333335 (const byte*) main::msg[] = (byte*) "raster lines" (byte) main::rst -(byte) main::rst#0 reg byte a 202.0 +(byte) main::rst#0 reg byte a 2002.0 (byte*) main::screen (byte) main::time -(byte) main::time#0 reg byte a 11.0 +(byte) main::time#0 reg byte a 101.0 (byte) main::time_end -(byte) main::time_end#0 reg byte x 11.0 +(byte) main::time_end#0 reg byte x 101.0 (byte) main::time_start -(byte) main::time_start#0 time_start zp[1]:7 1.2941176470588236 +(byte) main::time_start#0 time_start zp[1]:7 11.882352941176471 (const byte*) raster = (byte*) 53266 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) -(byte~) utoa10w::$0 reg byte a 4.0 -(byte~) utoa10w::$2 reg byte a 202.0 -(byte~) utoa10w::$8 reg byte a 202.0 -(byte~) utoa10w::$9 reg byte a 202.0 +(byte~) utoa10w::$0 reg byte a 2002.0 +(byte~) utoa10w::$2 reg byte a 200002.0 +(byte~) utoa10w::$8 reg byte a 200002.0 +(byte~) utoa10w::$9 reg byte a 200002.0 (label) utoa10w::@1 (label) utoa10w::@2 (label) utoa10w::@3 @@ -2801,24 +2792,24 @@ FINAL SYMBOL TABLE (label) utoa10w::@8 (label) utoa10w::@return (byte) utoa10w::bStarted -(byte) utoa10w::bStarted#2 bStarted zp[1]:7 25.25 +(byte) utoa10w::bStarted#2 bStarted zp[1]:7 25000.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 digit zp[1]:6 67.33333333333333 -(byte) utoa10w::digit#3 digit zp[1]:6 84.16666666666666 -(byte) utoa10w::digit#7 digit zp[1]:6 67.33333333333333 +(byte) utoa10w::digit#1 digit zp[1]:6 66667.33333333333 +(byte) utoa10w::digit#3 digit zp[1]:6 83334.16666666666 +(byte) utoa10w::digit#7 digit zp[1]:6 66667.33333333333 (byte*) utoa10w::dst -(byte*) utoa10w::dst#1 dst zp[2]:4 202.0 -(byte*) utoa10w::dst#11 dst zp[2]:4 70.7 -(byte*) utoa10w::dst#2 dst zp[2]:4 4.0 -(byte*) utoa10w::dst#4 dst zp[2]:4 61.39999999999999 -(byte*) utoa10w::dst#7 dst zp[2]:4 303.0 +(byte*) utoa10w::dst#1 dst zp[2]:4 200002.0 +(byte*) utoa10w::dst#11 dst zp[2]:4 70000.7 +(byte*) utoa10w::dst#2 dst zp[2]:4 2002.0 +(byte*) utoa10w::dst#4 dst zp[2]:4 60401.0 +(byte*) utoa10w::dst#7 dst zp[2]:4 300003.0 (byte) utoa10w::i -(byte) utoa10w::i#1 reg byte x 151.5 -(byte) utoa10w::i#2 reg byte x 62.153846153846146 +(byte) utoa10w::i#1 reg byte x 150001.5 +(byte) utoa10w::i#2 reg byte x 61539.07692307693 (word) utoa10w::value -(word) utoa10w::value#0 value zp[2]:2 6.5 -(word) utoa10w::value#1 value zp[2]:2 202.0 -(word) utoa10w::value#10 value zp[2]:2 36.214285714285715 +(word) utoa10w::value#0 value zp[2]:2 551.0 +(word) utoa10w::value#1 value zp[2]:2 200002.0 +(word) utoa10w::value#10 value zp[2]:2 35786.142857142855 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (label) utoa16n::@1 (label) utoa16n::@2 @@ -2826,35 +2817,35 @@ FINAL SYMBOL TABLE (label) utoa16n::@return (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 reg byte a 4.0 -(byte) utoa16n::nybble#1 reg byte a 2.0 -(byte) utoa16n::nybble#2 reg byte a 2.0 -(byte) utoa16n::nybble#3 reg byte a 4.0 -(byte) utoa16n::nybble#4 reg byte a 2.4 +(byte) utoa16n::nybble#0 reg byte a 2002.0 +(byte) utoa16n::nybble#1 reg byte a 1001.0 +(byte) utoa16n::nybble#2 reg byte a 1001.0 +(byte) utoa16n::nybble#3 reg byte a 2002.0 +(byte) utoa16n::nybble#4 reg byte a 4801.2 (byte) utoa16n::return -(byte) utoa16n::return#0 reg byte x 4.0 -(byte) utoa16n::return#1 reg byte x 4.0 -(byte) utoa16n::return#4 reg byte x 1.1428571428571428 +(byte) utoa16n::return#0 reg byte x 2002.0 +(byte) utoa16n::return#1 reg byte x 2002.0 +(byte) utoa16n::return#4 reg byte x 3143.4285714285716 (byte) utoa16n::started -(byte) utoa16n::started#1 reg byte x 4.0 -(byte) utoa16n::started#2 reg byte x 4.0 -(byte) utoa16n::started#7 reg byte x 2.0 +(byte) utoa16n::started#1 reg byte x 2002.0 +(byte) utoa16n::started#2 reg byte x 2002.0 +(byte) utoa16n::started#7 reg byte x 4001.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 reg byte a 4.0 -(byte~) utoa16w::$3 reg byte a 4.0 -(byte~) utoa16w::$6 reg byte a 4.0 -(byte~) utoa16w::$9 reg byte a 4.0 +(byte~) utoa16w::$0 reg byte a 2002.0 +(byte~) utoa16w::$3 reg byte a 2002.0 +(byte~) utoa16w::$6 reg byte a 2002.0 +(byte~) utoa16w::$9 reg byte a 2002.0 (label) utoa16w::@1 (label) utoa16w::@2 (label) utoa16w::@3 (label) utoa16w::@4 (label) utoa16w::@return -(byte*) utoa16w::dst loadstore zp[2]:8 1.78125 +(byte*) utoa16w::dst loadstore zp[2]:8 47.0625 (byte) utoa16w::started -(byte) utoa16w::started#1 reg byte x 1.3333333333333333 -(byte) utoa16w::started#2 reg byte x 1.3333333333333333 +(byte) utoa16w::started#1 reg byte x 667.3333333333334 +(byte) utoa16w::started#2 reg byte x 667.3333333333334 (word) utoa16w::value -(word) utoa16w::value#5 value zp[2]:2 0.5 +(word) utoa16w::value#5 value zp[2]:2 250.25 reg byte x [ main::i#2 main::i#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] diff --git a/src/test/ref/hex2dec.sym b/src/test/ref/hex2dec.sym index 64ab193d7..d2381303c 100644 --- a/src/test/ref/hex2dec.sym +++ b/src/test/ref/hex2dec.sym @@ -9,13 +9,13 @@ (label) cls::@1 (label) cls::@return (byte*) cls::sc -(byte*) cls::sc#1 sc zp[2]:4 16.5 -(byte*) cls::sc#2 sc zp[2]:4 16.5 +(byte*) cls::sc#1 sc zp[2]:4 1501.5 +(byte*) cls::sc#2 sc zp[2]:4 1501.5 (const byte*) cls::screen = (byte*) 1024 (const byte*) control = (byte*) 53265 (void()) main() -(byte~) main::$1 zp[1]:6 101.0 -(byte~) main::$2 reg byte a 202.0 +(byte~) main::$1 zp[1]:6 1001.0 +(byte~) main::$2 reg byte a 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -26,24 +26,24 @@ (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 168.33333333333331 +(byte) main::i#1 reg byte x 2002.0 +(byte) main::i#2 reg byte x 1668.3333333333335 (const byte*) main::msg[] = (byte*) "raster lines" (byte) main::rst -(byte) main::rst#0 reg byte a 202.0 +(byte) main::rst#0 reg byte a 2002.0 (byte*) main::screen (byte) main::time -(byte) main::time#0 reg byte a 11.0 +(byte) main::time#0 reg byte a 101.0 (byte) main::time_end -(byte) main::time_end#0 reg byte x 11.0 +(byte) main::time_end#0 reg byte x 101.0 (byte) main::time_start -(byte) main::time_start#0 time_start zp[1]:7 1.2941176470588236 +(byte) main::time_start#0 time_start zp[1]:7 11.882352941176471 (const byte*) raster = (byte*) 53266 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) -(byte~) utoa10w::$0 reg byte a 4.0 -(byte~) utoa10w::$2 reg byte a 202.0 -(byte~) utoa10w::$8 reg byte a 202.0 -(byte~) utoa10w::$9 reg byte a 202.0 +(byte~) utoa10w::$0 reg byte a 2002.0 +(byte~) utoa10w::$2 reg byte a 200002.0 +(byte~) utoa10w::$8 reg byte a 200002.0 +(byte~) utoa10w::$9 reg byte a 200002.0 (label) utoa10w::@1 (label) utoa10w::@2 (label) utoa10w::@3 @@ -54,24 +54,24 @@ (label) utoa10w::@8 (label) utoa10w::@return (byte) utoa10w::bStarted -(byte) utoa10w::bStarted#2 bStarted zp[1]:7 25.25 +(byte) utoa10w::bStarted#2 bStarted zp[1]:7 25000.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 digit zp[1]:6 67.33333333333333 -(byte) utoa10w::digit#3 digit zp[1]:6 84.16666666666666 -(byte) utoa10w::digit#7 digit zp[1]:6 67.33333333333333 +(byte) utoa10w::digit#1 digit zp[1]:6 66667.33333333333 +(byte) utoa10w::digit#3 digit zp[1]:6 83334.16666666666 +(byte) utoa10w::digit#7 digit zp[1]:6 66667.33333333333 (byte*) utoa10w::dst -(byte*) utoa10w::dst#1 dst zp[2]:4 202.0 -(byte*) utoa10w::dst#11 dst zp[2]:4 70.7 -(byte*) utoa10w::dst#2 dst zp[2]:4 4.0 -(byte*) utoa10w::dst#4 dst zp[2]:4 61.39999999999999 -(byte*) utoa10w::dst#7 dst zp[2]:4 303.0 +(byte*) utoa10w::dst#1 dst zp[2]:4 200002.0 +(byte*) utoa10w::dst#11 dst zp[2]:4 70000.7 +(byte*) utoa10w::dst#2 dst zp[2]:4 2002.0 +(byte*) utoa10w::dst#4 dst zp[2]:4 60401.0 +(byte*) utoa10w::dst#7 dst zp[2]:4 300003.0 (byte) utoa10w::i -(byte) utoa10w::i#1 reg byte x 151.5 -(byte) utoa10w::i#2 reg byte x 62.153846153846146 +(byte) utoa10w::i#1 reg byte x 150001.5 +(byte) utoa10w::i#2 reg byte x 61539.07692307693 (word) utoa10w::value -(word) utoa10w::value#0 value zp[2]:2 6.5 -(word) utoa10w::value#1 value zp[2]:2 202.0 -(word) utoa10w::value#10 value zp[2]:2 36.214285714285715 +(word) utoa10w::value#0 value zp[2]:2 551.0 +(word) utoa10w::value#1 value zp[2]:2 200002.0 +(word) utoa10w::value#10 value zp[2]:2 35786.142857142855 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (label) utoa16n::@1 (label) utoa16n::@2 @@ -79,35 +79,35 @@ (label) utoa16n::@return (word**) utoa16n::dst (byte) utoa16n::nybble -(byte) utoa16n::nybble#0 reg byte a 4.0 -(byte) utoa16n::nybble#1 reg byte a 2.0 -(byte) utoa16n::nybble#2 reg byte a 2.0 -(byte) utoa16n::nybble#3 reg byte a 4.0 -(byte) utoa16n::nybble#4 reg byte a 2.4 +(byte) utoa16n::nybble#0 reg byte a 2002.0 +(byte) utoa16n::nybble#1 reg byte a 1001.0 +(byte) utoa16n::nybble#2 reg byte a 1001.0 +(byte) utoa16n::nybble#3 reg byte a 2002.0 +(byte) utoa16n::nybble#4 reg byte a 4801.2 (byte) utoa16n::return -(byte) utoa16n::return#0 reg byte x 4.0 -(byte) utoa16n::return#1 reg byte x 4.0 -(byte) utoa16n::return#4 reg byte x 1.1428571428571428 +(byte) utoa16n::return#0 reg byte x 2002.0 +(byte) utoa16n::return#1 reg byte x 2002.0 +(byte) utoa16n::return#4 reg byte x 3143.4285714285716 (byte) utoa16n::started -(byte) utoa16n::started#1 reg byte x 4.0 -(byte) utoa16n::started#2 reg byte x 4.0 -(byte) utoa16n::started#7 reg byte x 2.0 +(byte) utoa16n::started#1 reg byte x 2002.0 +(byte) utoa16n::started#2 reg byte x 2002.0 +(byte) utoa16n::started#7 reg byte x 4001.0 (void()) utoa16w((word) utoa16w::value , (byte*) utoa16w::dst) -(byte~) utoa16w::$0 reg byte a 4.0 -(byte~) utoa16w::$3 reg byte a 4.0 -(byte~) utoa16w::$6 reg byte a 4.0 -(byte~) utoa16w::$9 reg byte a 4.0 +(byte~) utoa16w::$0 reg byte a 2002.0 +(byte~) utoa16w::$3 reg byte a 2002.0 +(byte~) utoa16w::$6 reg byte a 2002.0 +(byte~) utoa16w::$9 reg byte a 2002.0 (label) utoa16w::@1 (label) utoa16w::@2 (label) utoa16w::@3 (label) utoa16w::@4 (label) utoa16w::@return -(byte*) utoa16w::dst loadstore zp[2]:8 1.78125 +(byte*) utoa16w::dst loadstore zp[2]:8 47.0625 (byte) utoa16w::started -(byte) utoa16w::started#1 reg byte x 1.3333333333333333 -(byte) utoa16w::started#2 reg byte x 1.3333333333333333 +(byte) utoa16w::started#1 reg byte x 667.3333333333334 +(byte) utoa16w::started#2 reg byte x 667.3333333333334 (word) utoa16w::value -(word) utoa16w::value#5 value zp[2]:2 0.5 +(word) utoa16w::value#5 value zp[2]:2 250.25 reg byte x [ main::i#2 main::i#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] diff --git a/src/test/ref/ifmin.log b/src/test/ref/ifmin.log index c002ed480..55057ad9f 100644 --- a/src/test/ref/ifmin.log +++ b/src/test/ref/ifmin.log @@ -68,9 +68,9 @@ Finalized unsigned number type (byte) $64 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [3] (bool~) main::$1 ← (byte) main::i#2 >= (byte) $32 from [2] (bool~) main::$0 ← (byte) main::i#2 < (byte) $32 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [3] if((byte) main::i#2>=(byte) $32) goto main::@2 Simple Condition (bool~) main::$2 [6] if((byte) main::i#1<(byte) $64) goto main::@1 @@ -133,8 +133,8 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -214,7 +214,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 338 combination reg byte x [ main::i#2 main::i#1 ] @@ -321,8 +321,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/ifmin.sym b/src/test/ref/ifmin.sym index 0eefe84ac..ed5aaabf8 100644 --- a/src/test/ref/ifmin.sym +++ b/src/test/ref/ifmin.sym @@ -8,7 +8,7 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/immzero.log b/src/test/ref/immzero.log index 0b49c614f..1d90505b3 100644 --- a/src/test/ref/immzero.log +++ b/src/test/ref/immzero.log @@ -49,7 +49,7 @@ SYMBOL TABLE SSA Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification -Alias (word) main::w#1 = (word~) main::$0 +Alias main::w#1 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::j#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -119,11 +119,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 16.5 +(byte) main::j#1 151.5 +(byte) main::j#2 151.5 (word) main::w -(word) main::w#1 7.333333333333333 -(word) main::w#2 22.0 +(word) main::w#1 67.33333333333333 +(word) main::w#2 202.0 Initial phi equivalence classes [ main::w#2 main::w#1 ] @@ -204,14 +204,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] ) always clobbers reg byte a +Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::j#2 main::j#1 ] -Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] ) always clobbers reg byte a +Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w#2 main::w#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::j#2 main::j#1 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:4 [ main::j#2 main::j#1 ] 29.33: zp[2]:2 [ main::w#2 main::w#1 ] +Uplift Scope [main] 303: zp[1]:4 [ main::j#2 main::j#1 ] 269.33: zp[2]:2 [ main::w#2 main::w#1 ] Uplift Scope [] Uplifting [main] best 468 combination reg byte x [ main::j#2 main::j#1 ] zp[2]:2 [ main::w#2 main::w#1 ] @@ -318,11 +318,11 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 16.5 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 151.5 (word) main::w -(word) main::w#1 w zp[2]:2 7.333333333333333 -(word) main::w#2 w zp[2]:2 22.0 +(word) main::w#1 w zp[2]:2 67.33333333333333 +(word) main::w#2 w zp[2]:2 202.0 zp[2]:2 [ main::w#2 main::w#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/immzero.sym b/src/test/ref/immzero.sym index 88c72ed90..f53fb1c4e 100644 --- a/src/test/ref/immzero.sym +++ b/src/test/ref/immzero.sym @@ -5,11 +5,11 @@ (label) main::@1 (label) main::@return (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 16.5 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 151.5 (word) main::w -(word) main::w#1 w zp[2]:2 7.333333333333333 -(word) main::w#2 w zp[2]:2 22.0 +(word) main::w#1 w zp[2]:2 67.33333333333333 +(word) main::w#2 w zp[2]:2 202.0 zp[2]:2 [ main::w#2 main::w#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/importing.log b/src/test/ref/importing.log index ecefa30b7..6a19bfb1e 100644 --- a/src/test/ref/importing.log +++ b/src/test/ref/importing.log @@ -123,8 +123,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (const byte) RED [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (const byte) RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/incrementinarray.log b/src/test/ref/incrementinarray.log index 1fcdd88cf..8de1c1948 100644 --- a/src/test/ref/incrementinarray.log +++ b/src/test/ref/incrementinarray.log @@ -415,29 +415,29 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#20 (byte*) print_char_cursor#26 (byte*) print_screen#4 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#13 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#15 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#5 (byte*) print_char_cursor#16 (byte*) print_line_cursor#4 (byte*) print_char_cursor#6 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#7 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#21 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#8 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#15 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#19 (byte*) print_char_cursor#20 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#21 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#20 print_char_cursor#26 print_screen#4 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#12 = print_char_cursor#22 print_char_cursor#13 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#3 print_line_cursor#11 print_char_cursor#15 print_line_cursor#2 print_char_cursor#4 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#5 print_char_cursor#16 print_line_cursor#4 print_char_cursor#6 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#17 = print_char_cursor#7 +Alias print_line_cursor#19 = print_line_cursor#21 +Alias main::i#2 = main::i#3 main::i#4 +Alias print_char_cursor#18 = print_char_cursor#8 +Alias print_line_cursor#14 = print_line_cursor#6 print_line_cursor#15 print_line_cursor#7 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#19 print_char_cursor#20 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#11 = print_char_cursor#21 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -665,33 +665,33 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 4.4 +(byte) main::i#1 101.0 +(byte) main::i#2 40.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#12 40.6 -(byte*) print_char_cursor#25 6.5 -(byte*) print_char_cursor#30 22.0 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#12 40100.5 +(byte*) print_char_cursor#25 551.0 +(byte*) print_char_cursor#30 202.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 40.625 -(byte*) print_line_cursor#19 3.25 -(byte*) print_line_cursor#9 204.0 +(byte*) print_line_cursor#1 37525.625 +(byte*) print_line_cursor#19 275.5 +(byte*) print_line_cursor#9 201003.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#2 101.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#2 100001.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -954,24 +954,24 @@ memset: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) txt+(byte) 1) ← ++ *((const byte*) txt+(byte) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [10] *((const byte*) txt+(byte) 1) ← ++ *((const byte*) txt+(byte) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [14] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [18] 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:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [22] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [14] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [18] 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:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [22] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [32] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [34] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [10] *((const byte*) txt+(byte) 1) ← ++ *((const byte*) txt+(byte) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [14] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [18] 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:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [22] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [32] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [34] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [32] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [34] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) txt+(byte) 1) ← ++ *((const byte*) txt+(byte) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [14] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [18] 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:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [22] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [32] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [34] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:28 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ print_str::str#2 print_str::str#0 ] : zp[2]:5 , @@ -979,10 +979,10 @@ Potential registers zp[2]:7 [ print_char_cursor#12 print_char_cursor#25 print_ch Potential registers zp[2]:9 [ memset::dst#2 memset::dst#1 ] : zp[2]:9 , REGISTER UPLIFT SCOPES -Uplift Scope [] 247.88: zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 170.1: zp[2]:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] -Uplift Scope [print_str] 303: zp[2]:5 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [memset] 36.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [main] 15.4: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 238,804.12: zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 140,854.5: zp[2]:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] +Uplift Scope [print_str] 300,003: zp[2]:5 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [main] 141.4: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -1304,8 +1304,8 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 4.4 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 40.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -1313,8 +1313,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -1323,16 +1323,16 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 40.6 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 6.5 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 100001.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 40100.5 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 551.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 40.625 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 3.25 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 37525.625 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 275.5 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1342,8 +1342,8 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 202.0 -(byte*) print_str::str#2 str zp[2]:6 101.0 +(byte*) print_str::str#0 str zp[2]:6 200002.0 +(byte*) print_str::str#2 str zp[2]:6 100001.0 (const byte*) txt[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/incrementinarray.sym b/src/test/ref/incrementinarray.sym index 3b4901dfb..996a4d418 100644 --- a/src/test/ref/incrementinarray.sym +++ b/src/test/ref/incrementinarray.sym @@ -12,8 +12,8 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 4.4 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 40.4 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -21,8 +21,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -31,16 +31,16 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 40.6 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 6.5 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 100001.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:4 40100.5 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 551.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 40.625 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 3.25 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 37525.625 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 275.5 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -50,8 +50,8 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 202.0 -(byte*) print_str::str#2 str zp[2]:6 101.0 +(byte*) print_str::str#0 str zp[2]:6 200002.0 +(byte*) print_str::str#2 str zp[2]:6 100001.0 (const byte*) txt[] = (byte*) "camelot" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/infloop-error.log b/src/test/ref/infloop-error.log index cef8fbd59..80d717b5d 100644 --- a/src/test/ref/infloop-error.log +++ b/src/test/ref/infloop-error.log @@ -125,18 +125,18 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [8] (bool~) main::$1 ← (byte) main::pos#1 >= (byte) main::min#2 from [7] (bool~) main::$0 ← (byte) main::pos#1 < (byte) main::min#2 Inversing boolean not [12] (bool~) main::$3 ← (byte) main::pos#3 <= (byte) main::max#2 from [11] (bool~) main::$2 ← (byte) main::pos#3 > (byte) main::max#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::pos#2 = (byte) main::pos#7 -Alias (byte) main::min#2 = (byte) main::min#4 -Alias (byte) main::max#4 = (byte) main::max#6 (byte) main::max#5 -Alias (byte) main::pos#1 = (byte) main::pos#4 (byte) main::min#1 -Alias (byte) main::pos#3 = (byte) main::pos#6 (byte) main::max#1 -Alias (byte) main::min#5 = (byte) main::min#6 +Alias main::pos#2 = main::pos#7 +Alias main::min#2 = main::min#4 +Alias main::max#4 = main::max#6 main::max#5 +Alias main::pos#1 = main::pos#4 main::min#1 +Alias main::pos#3 = main::pos#6 main::max#1 +Alias main::min#5 = main::min#6 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) main::pos#1 = (byte) main::pos#3 (byte) main::pos#5 -Alias (byte) main::max#2 = (byte) main::max#4 -Alias (byte) main::min#3 = (byte) main::min#5 +Alias candidate removed (phi-usage) main::pos#1 = main::pos#3 main::pos#5 +Alias main::max#2 = main::max#4 +Alias main::min#3 = main::min#5 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) main::pos#1 = (byte) main::pos#3 (byte) main::pos#5 +Alias candidate removed (phi-usage) main::pos#1 = main::pos#3 main::pos#5 Identical Phi Values (byte) main::pos#3 (byte) main::pos#1 Identical Phi Values (byte) main::pos#5 (byte) main::pos#3 Successful SSA optimization Pass2IdenticalPhiElimination @@ -239,16 +239,16 @@ main::@4: scope:[main] from main::@3 main::@6 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::max -(byte) main::max#2 5.5 -(byte) main::max#3 11.0 -(byte) main::max#9 22.0 +(byte) main::max#2 50.5 +(byte) main::max#3 101.0 +(byte) main::max#9 202.0 (byte) main::min -(byte) main::min#2 11.0 -(byte) main::min#3 6.285714285714286 -(byte) main::min#9 22.0 +(byte) main::min#2 101.0 +(byte) main::min#3 57.714285714285715 +(byte) main::min#9 202.0 (byte) main::pos -(byte) main::pos#1 7.699999999999999 -(byte) main::pos#2 22.0 +(byte) main::pos#1 70.7 +(byte) main::pos#2 202.0 Initial phi equivalence classes [ main::pos#2 main::pos#1 ] @@ -370,7 +370,7 @@ Potential registers zp[1]:3 [ main::min#2 main::min#3 main::min#9 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::max#2 main::max#3 main::max#9 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 39.29: zp[1]:3 [ main::min#2 main::min#3 main::min#9 ] 38.5: zp[1]:4 [ main::max#2 main::max#3 main::max#9 ] 29.7: zp[1]:2 [ main::pos#2 main::pos#1 ] +Uplift Scope [main] 360.71: zp[1]:3 [ main::min#2 main::min#3 main::min#9 ] 353.5: zp[1]:4 [ main::max#2 main::max#3 main::max#9 ] 272.7: zp[1]:2 [ main::pos#2 main::pos#1 ] Uplift Scope [] Uplifting [main] best 652 combination reg byte x [ main::min#2 main::min#3 main::min#9 ] reg byte y [ main::max#2 main::max#3 main::max#9 ] reg byte a [ main::pos#2 main::pos#1 ] @@ -516,16 +516,16 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::max -(byte) main::max#2 reg byte y 5.5 -(byte) main::max#3 reg byte y 11.0 -(byte) main::max#9 reg byte y 22.0 +(byte) main::max#2 reg byte y 50.5 +(byte) main::max#3 reg byte y 101.0 +(byte) main::max#9 reg byte y 202.0 (byte) main::min -(byte) main::min#2 reg byte x 11.0 -(byte) main::min#3 reg byte x 6.285714285714286 -(byte) main::min#9 reg byte x 22.0 +(byte) main::min#2 reg byte x 101.0 +(byte) main::min#3 reg byte x 57.714285714285715 +(byte) main::min#9 reg byte x 202.0 (byte) main::pos -(byte) main::pos#1 reg byte a 7.699999999999999 -(byte) main::pos#2 reg byte a 22.0 +(byte) main::pos#1 reg byte a 70.7 +(byte) main::pos#2 reg byte a 202.0 reg byte a [ main::pos#2 main::pos#1 ] reg byte x [ main::min#2 main::min#3 main::min#9 ] diff --git a/src/test/ref/infloop-error.sym b/src/test/ref/infloop-error.sym index 6f98691d3..eca6cd0e7 100644 --- a/src/test/ref/infloop-error.sym +++ b/src/test/ref/infloop-error.sym @@ -10,16 +10,16 @@ (label) main::@5 (label) main::@6 (byte) main::max -(byte) main::max#2 reg byte y 5.5 -(byte) main::max#3 reg byte y 11.0 -(byte) main::max#9 reg byte y 22.0 +(byte) main::max#2 reg byte y 50.5 +(byte) main::max#3 reg byte y 101.0 +(byte) main::max#9 reg byte y 202.0 (byte) main::min -(byte) main::min#2 reg byte x 11.0 -(byte) main::min#3 reg byte x 6.285714285714286 -(byte) main::min#9 reg byte x 22.0 +(byte) main::min#2 reg byte x 101.0 +(byte) main::min#3 reg byte x 57.714285714285715 +(byte) main::min#9 reg byte x 202.0 (byte) main::pos -(byte) main::pos#1 reg byte a 7.699999999999999 -(byte) main::pos#2 reg byte a 22.0 +(byte) main::pos#1 reg byte a 70.7 +(byte) main::pos#2 reg byte a 202.0 reg byte a [ main::pos#2 main::pos#1 ] reg byte x [ main::min#2 main::min#3 main::min#9 ] diff --git a/src/test/ref/init-volatiles.log b/src/test/ref/init-volatiles.log index 72cba8bd6..4ff21ddc9 100644 --- a/src/test/ref/init-volatiles.log +++ b/src/test/ref/init-volatiles.log @@ -98,7 +98,7 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) x loadstore 7.400000000000001 +(byte) x loadstore 63.2 Initial phi equivalence classes Added variable x to live range equivalence class [ x ] @@ -161,13 +161,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) x ← (byte) $c [ x ] ( [ x ] ) always clobbers reg byte a -Statement [6] if((byte) x<(byte) $32) goto main::@1 [ x ] ( main:2 [ x ] ) always clobbers reg byte a -Statement [7] (byte) x ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [0] (byte) x ← (byte) $c [ x ] ( [ x ] { } ) always clobbers reg byte a +Statement [6] if((byte) x<(byte) $32) goto main::@1 [ x ] ( main:2 [ x ] { } ) always clobbers reg byte a +Statement [7] (byte) x ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ x ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 7.4: zp[1]:2 [ x ] +Uplift Scope [] 63.2: zp[1]:2 [ x ] Uplift Scope [main] Uplifting [] best 216 combination zp[1]:2 [ x ] @@ -255,7 +255,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte) x loadstore zp[1]:2 7.400000000000001 +(byte) x loadstore zp[1]:2 63.2 zp[1]:2 [ x ] diff --git a/src/test/ref/init-volatiles.sym b/src/test/ref/init-volatiles.sym index e0f28c97c..1f58ea56a 100644 --- a/src/test/ref/init-volatiles.sym +++ b/src/test/ref/init-volatiles.sym @@ -5,6 +5,6 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte) x loadstore zp[1]:2 7.400000000000001 +(byte) x loadstore zp[1]:2 63.2 zp[1]:2 [ x ] diff --git a/src/test/ref/initializer-0.log b/src/test/ref/initializer-0.log index 55f237657..95e0b060a 100644 --- a/src/test/ref/initializer-0.log +++ b/src/test/ref/initializer-0.log @@ -119,11 +119,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::idx -(byte) main::idx#1 7.333333333333333 -(byte) main::idx#2 16.5 +(byte) main::idx#1 67.33333333333333 +(byte) main::idx#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -204,15 +204,15 @@ main: { chars: .byte 1, 2, 3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((const byte*) chars + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((const byte*) chars + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#2 main::idx#1 ] -Statement [6] *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((const byte*) chars + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((const byte*) chars + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#2 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 23.83: zp[1]:3 [ main::idx#2 main::idx#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 218.83: zp[1]:3 [ main::idx#2 main::idx#1 ] Uplift Scope [] Uplifting [main] best 328 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] @@ -314,11 +314,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 16.5 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 151.5 reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] diff --git a/src/test/ref/initializer-0.sym b/src/test/ref/initializer-0.sym index d21bcd169..4daa8d787 100644 --- a/src/test/ref/initializer-0.sym +++ b/src/test/ref/initializer-0.sym @@ -7,11 +7,11 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 16.5 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 151.5 reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] diff --git a/src/test/ref/initializer-1.log b/src/test/ref/initializer-1.log index f54530813..6987a37a5 100644 --- a/src/test/ref/initializer-1.log +++ b/src/test/ref/initializer-1.log @@ -79,7 +79,7 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$4 = (byte~) main::$3 +Alias main::$4 = main::$3 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -145,16 +145,16 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$4 8.25 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$4 75.75 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.125 +(byte) main::i#1 151.5 +(byte) main::i#2 37.875 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 7.333333333333333 -(byte) main::idx#3 8.25 +(byte) main::idx#1 101.0 +(byte) main::idx#2 67.33333333333333 +(byte) main::idx#3 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -272,16 +272,16 @@ main: { words: .word 1, 2, 3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$4 ] ( main:2 [ main::i#2 main::idx#3 main::$4 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$4 ] ( main:2 [ main::i#2 main::idx#3 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#3 main::idx#2 ] -Statement [7] (byte~) main::$0 ← < *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#3 main::$4 main::$0 ] ( main:2 [ main::i#2 main::idx#3 main::$4 main::$0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← < *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#3 main::$4 main::$0 ] ( main:2 [ main::i#2 main::idx#3 main::$4 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$4 ] -Statement [10] (byte~) main::$1 ← > *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$1 ← > *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#1 ] -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$4 ] ( main:2 [ main::i#2 main::idx#3 main::$4 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$0 ← < *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#3 main::$4 main::$0 ] ( main:2 [ main::i#2 main::idx#3 main::$4 main::$0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$1 ← > *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$4 ] ( main:2 [ main::i#2 main::idx#3 main::$4 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← < *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#3 main::$4 main::$0 ] ( main:2 [ main::i#2 main::idx#3 main::$4 main::$0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$1 ← > *((const word*) words + (byte~) main::$4) [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#3 main::idx#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte x , reg byte y , @@ -290,7 +290,7 @@ Potential registers zp[1]:6 [ main::idx#1 ] : zp[1]:6 , reg byte x , reg byte y Potential registers zp[1]:7 [ main::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:5 [ main::$0 ] 22: zp[1]:7 [ main::$1 ] 20.62: zp[1]:2 [ main::i#2 main::i#1 ] 15.58: zp[1]:3 [ main::idx#3 main::idx#2 ] 11: zp[1]:6 [ main::idx#1 ] 8.25: zp[1]:4 [ main::$4 ] +Uplift Scope [main] 202: zp[1]:5 [ main::$0 ] 202: zp[1]:7 [ main::$1 ] 189.38: zp[1]:2 [ main::i#2 main::i#1 ] 143.08: zp[1]:3 [ main::idx#3 main::idx#2 ] 101: zp[1]:6 [ main::idx#1 ] 75.75: zp[1]:4 [ main::$4 ] Uplift Scope [] Uplifting [main] best 763 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] zp[1]:2 [ main::i#2 main::i#1 ] reg byte x [ main::idx#3 main::idx#2 ] zp[1]:6 [ main::idx#1 ] zp[1]:4 [ main::$4 ] @@ -409,19 +409,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$4 reg byte y 8.25 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$4 reg byte y 75.75 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.125 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 37.875 (byte) main::idx -(byte) main::idx#1 reg byte x 11.0 -(byte) main::idx#2 reg byte x 7.333333333333333 -(byte) main::idx#3 reg byte x 8.25 +(byte) main::idx#1 reg byte x 101.0 +(byte) main::idx#2 reg byte x 67.33333333333333 +(byte) main::idx#3 reg byte x 75.75 (const word*) words[] = { (word) 1, (word) 2, (word) 3 } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/initializer-1.sym b/src/test/ref/initializer-1.sym index 249f0ff5c..a85a3d41d 100644 --- a/src/test/ref/initializer-1.sym +++ b/src/test/ref/initializer-1.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$4 reg byte y 8.25 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$4 reg byte y 75.75 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.125 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 37.875 (byte) main::idx -(byte) main::idx#1 reg byte x 11.0 -(byte) main::idx#2 reg byte x 7.333333333333333 -(byte) main::idx#3 reg byte x 8.25 +(byte) main::idx#1 reg byte x 101.0 +(byte) main::idx#2 reg byte x 67.33333333333333 +(byte) main::idx#3 reg byte x 75.75 (const word*) words[] = { (word) 1, (word) 2, (word) 3 } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/initializer-2.log b/src/test/ref/initializer-2.log index 0a88f9164..7c6f2844c 100644 --- a/src/test/ref/initializer-2.log +++ b/src/test/ref/initializer-2.log @@ -85,7 +85,7 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$2 = (byte~) main::$1 +Alias main::$2 = main::$1 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$2 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -151,14 +151,14 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 11.0 +(byte~) main::$2 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte) main::idx -(byte) main::idx#1 16.5 -(byte) main::idx#2 7.333333333333333 -(byte) main::idx#3 11.0 +(byte) main::idx#1 151.5 +(byte) main::idx#2 67.33333333333333 +(byte) main::idx#3 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -263,23 +263,23 @@ main: { points: .byte 1, 2, 3, 4, 5, 6 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#3 main::idx#2 ] -Statement [7] *((const byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*)(const struct Point*) points + (byte~) main::$2) [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*)(const struct Point*) points + (byte~) main::$2) [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$2 ] -Statement [9] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 main::idx#1 ] ( main:2 [ main::i#2 main::idx#1 ] ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 main::idx#1 ] ( main:2 [ main::i#2 main::idx#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::idx#1 ] -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*)(const struct Point*) points + (byte~) main::$2) [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 main::idx#1 ] ( main:2 [ main::i#2 main::idx#1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*)(const struct Point*) points + (byte~) main::$2) [ main::i#2 main::idx#3 main::$2 ] ( main:2 [ main::i#2 main::idx#3 main::$2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 main::idx#1 ] ( main:2 [ main::i#2 main::idx#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#3 main::idx#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::idx#1 ] : zp[1]:5 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 18.33: zp[1]:3 [ main::idx#3 main::idx#2 ] 16.5: zp[1]:5 [ main::idx#1 ] 11: zp[1]:4 [ main::$2 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 168.33: zp[1]:3 [ main::idx#3 main::idx#2 ] 151.5: zp[1]:5 [ main::idx#1 ] 101: zp[1]:4 [ main::$2 ] Uplift Scope [Point] Uplift Scope [] @@ -397,17 +397,17 @@ FINAL SYMBOL TABLE (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 reg byte x 11.0 +(byte~) main::$2 reg byte x 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 5.5 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 50.5 (byte) main::idx -(byte) main::idx#1 reg byte y 16.5 -(byte) main::idx#2 reg byte y 7.333333333333333 -(byte) main::idx#3 reg byte y 11.0 +(byte) main::idx#1 reg byte y 151.5 +(byte) main::idx#2 reg byte y 67.33333333333333 +(byte) main::idx#3 reg byte y 101.0 (const struct Point*) points[] = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/initializer-2.sym b/src/test/ref/initializer-2.sym index 463896880..435eb6a69 100644 --- a/src/test/ref/initializer-2.sym +++ b/src/test/ref/initializer-2.sym @@ -5,17 +5,17 @@ (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 reg byte x 11.0 +(byte~) main::$2 reg byte x 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 5.5 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 50.5 (byte) main::idx -(byte) main::idx#1 reg byte y 16.5 -(byte) main::idx#2 reg byte y 7.333333333333333 -(byte) main::idx#3 reg byte y 11.0 +(byte) main::idx#1 reg byte y 151.5 +(byte) main::idx#2 reg byte y 67.33333333333333 +(byte) main::idx#3 reg byte y 101.0 (const struct Point*) points[] = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/initializer-3.log b/src/test/ref/initializer-3.log index 09ae3bfc6..33c81dac4 100644 --- a/src/test/ref/initializer-3.log +++ b/src/test/ref/initializer-3.log @@ -97,7 +97,7 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$4 = (byte~) main::$3 (byte~) main::$5 +Alias main::$4 = main::$3 main::$5 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift and addition[1] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT Inlining constant with var siblings (const byte) main::idx#0 @@ -105,7 +105,7 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Constant inlined main::idx#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$4 = (byte~) main::$7 +Alias main::$4 = main::$7 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_POINT Successful SSA optimization PassNEliminateUnusedVars @@ -169,18 +169,18 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (signed word) Point::y (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$4 7.333333333333333 -(byte~) main::$6 22.0 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$4 67.33333333333333 +(byte~) main::$6 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.0 +(byte) main::i#1 151.5 +(byte) main::i#2 36.72727272727273 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 11.0 -(byte) main::idx#3 7.333333333333333 -(byte) main::idx#4 8.25 +(byte) main::idx#1 101.0 +(byte) main::idx#2 101.0 +(byte) main::idx#3 67.33333333333333 +(byte) main::idx#4 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -326,21 +326,21 @@ main: { .word 6 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$6 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$6 ] ( main:2 [ main::i#2 main::idx#4 main::$6 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$6 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$6 ] ( main:2 [ main::i#2 main::idx#4 main::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#4 main::idx#3 ] -Statement [7] (byte~) main::$4 ← (byte~) main::$6 + (byte) main::i#2 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$4) [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$4 ← (byte~) main::$6 + (byte) main::i#2 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$4) [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$4 ] -Statement [10] (byte~) main::$0 ← < *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::$4 main::idx#1 main::$0 ] ( main:2 [ main::i#2 main::$4 main::idx#1 main::$0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$0 ← < *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::$4 main::idx#1 main::$0 ] ( main:2 [ main::i#2 main::$4 main::idx#1 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#1 ] -Statement [13] (byte~) main::$1 ← > *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::idx#2 main::$1 ] ( main:2 [ main::i#2 main::idx#2 main::$1 ] ) always clobbers reg byte a +Statement [13] (byte~) main::$1 ← > *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::idx#2 main::$1 ] ( main:2 [ main::i#2 main::idx#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::idx#2 ] -Statement [6] (byte~) main::$6 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$6 ] ( main:2 [ main::i#2 main::idx#4 main::$6 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$4 ← (byte~) main::$6 + (byte) main::i#2 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$4) [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$0 ← < *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::$4 main::idx#1 main::$0 ] ( main:2 [ main::i#2 main::$4 main::idx#1 main::$0 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$1 ← > *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::idx#2 main::$1 ] ( main:2 [ main::i#2 main::idx#2 main::$1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$6 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$6 ] ( main:2 [ main::i#2 main::idx#4 main::$6 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$4 ← (byte~) main::$6 + (byte) main::i#2 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$4) [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$0 ← < *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::$4 main::idx#1 main::$0 ] ( main:2 [ main::i#2 main::$4 main::idx#1 main::$0 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$1 ← > *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) [ main::i#2 main::idx#2 main::$1 ] ( main:2 [ main::i#2 main::idx#2 main::$1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#4 main::idx#3 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$6 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -351,7 +351,7 @@ Potential registers zp[1]:8 [ main::idx#2 ] : zp[1]:8 , reg byte x , reg byte y Potential registers zp[1]:9 [ main::$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$6 ] 22: zp[1]:7 [ main::$0 ] 22: zp[1]:9 [ main::$1 ] 20.5: zp[1]:2 [ main::i#2 main::i#1 ] 15.58: zp[1]:3 [ main::idx#4 main::idx#3 ] 11: zp[1]:6 [ main::idx#1 ] 11: zp[1]:8 [ main::idx#2 ] 7.33: zp[1]:5 [ main::$4 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$6 ] 202: zp[1]:7 [ main::$0 ] 202: zp[1]:9 [ main::$1 ] 188.23: zp[1]:2 [ main::i#2 main::i#1 ] 143.08: zp[1]:3 [ main::idx#4 main::idx#3 ] 101: zp[1]:6 [ main::idx#1 ] 101: zp[1]:8 [ main::idx#2 ] 67.33: zp[1]:5 [ main::$4 ] Uplift Scope [Point] Uplift Scope [] @@ -503,21 +503,21 @@ FINAL SYMBOL TABLE (byte) Point::x (signed word) Point::y (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$4 zp[1]:3 7.333333333333333 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$4 zp[1]:3 67.33333333333333 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 36.72727272727273 (byte) main::idx -(byte) main::idx#1 idx zp[1]:2 11.0 -(byte) main::idx#2 idx zp[1]:2 11.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 8.25 +(byte) main::idx#1 idx zp[1]:2 101.0 +(byte) main::idx#2 idx zp[1]:2 101.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 75.75 (const struct Point*) points[] = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/initializer-3.sym b/src/test/ref/initializer-3.sym index 3763c1f24..659fbe16b 100644 --- a/src/test/ref/initializer-3.sym +++ b/src/test/ref/initializer-3.sym @@ -5,21 +5,21 @@ (byte) Point::x (signed word) Point::y (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$4 zp[1]:3 7.333333333333333 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$4 zp[1]:3 67.33333333333333 +(byte~) main::$6 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 36.72727272727273 (byte) main::idx -(byte) main::idx#1 idx zp[1]:2 11.0 -(byte) main::idx#2 idx zp[1]:2 11.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 8.25 +(byte) main::idx#1 idx zp[1]:2 101.0 +(byte) main::idx#2 idx zp[1]:2 101.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 75.75 (const struct Point*) points[] = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-asm-clobber-none.log b/src/test/ref/inline-asm-clobber-none.log index 98555bf43..409028f2b 100644 --- a/src/test/ref/inline-asm-clobber-none.log +++ b/src/test/ref/inline-asm-clobber-none.log @@ -84,8 +84,8 @@ SYMBOL TABLE SSA (byte) main::k#1 (byte) main::k#2 -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 +Alias main::j#2 = main::j#3 +Alias main::i#2 = main::i#3 main::i#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::j#2 (byte) main::j#4 Identical Phi Values (byte) main::i#2 (byte) main::i#5 @@ -193,14 +193,14 @@ main::@return: scope:[main] from main::@5 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#6 2.75 +(byte) main::i#1 151.5 +(byte) main::i#6 25.25 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#4 40.4 +(byte) main::j#1 1501.5 +(byte) main::j#4 400.4 (byte) main::k -(byte) main::k#1 1501.5 -(byte) main::k#2 1001.0 +(byte) main::k#1 15001.5 +(byte) main::k#2 10001.0 Initial phi equivalence classes [ main::i#6 main::i#1 ] @@ -330,7 +330,7 @@ Potential registers zp[1]:3 [ main::j#4 main::j#1 ] : zp[1]:3 , reg byte a , reg Potential registers zp[1]:4 [ main::k#2 main::k#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2,502.5: zp[1]:4 [ main::k#2 main::k#1 ] 191.9: zp[1]:3 [ main::j#4 main::j#1 ] 19.25: zp[1]:2 [ main::i#6 main::i#1 ] +Uplift Scope [main] 25,002.5: zp[1]:4 [ main::k#2 main::k#1 ] 1,901.9: zp[1]:3 [ main::j#4 main::j#1 ] 176.75: zp[1]:2 [ main::i#6 main::i#1 ] Uplift Scope [] Uplifting [main] best 54463 combination reg byte y [ main::k#2 main::k#1 ] reg byte x [ main::j#4 main::j#1 ] reg byte a [ main::i#6 main::i#1 ] @@ -488,14 +488,14 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 16.5 -(byte) main::i#6 reg byte a 2.75 +(byte) main::i#1 reg byte a 151.5 +(byte) main::i#6 reg byte a 25.25 (byte) main::j -(byte) main::j#1 reg byte x 151.5 -(byte) main::j#4 reg byte x 40.4 +(byte) main::j#1 reg byte x 1501.5 +(byte) main::j#4 reg byte x 400.4 (byte) main::k -(byte) main::k#1 reg byte y 1501.5 -(byte) main::k#2 reg byte y 1001.0 +(byte) main::k#1 reg byte y 15001.5 +(byte) main::k#2 reg byte y 10001.0 reg byte a [ main::i#6 main::i#1 ] reg byte x [ main::j#4 main::j#1 ] diff --git a/src/test/ref/inline-asm-clobber-none.sym b/src/test/ref/inline-asm-clobber-none.sym index 82c806ec4..ebcdd1c97 100644 --- a/src/test/ref/inline-asm-clobber-none.sym +++ b/src/test/ref/inline-asm-clobber-none.sym @@ -9,14 +9,14 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 16.5 -(byte) main::i#6 reg byte a 2.75 +(byte) main::i#1 reg byte a 151.5 +(byte) main::i#6 reg byte a 25.25 (byte) main::j -(byte) main::j#1 reg byte x 151.5 -(byte) main::j#4 reg byte x 40.4 +(byte) main::j#1 reg byte x 1501.5 +(byte) main::j#4 reg byte x 400.4 (byte) main::k -(byte) main::k#1 reg byte y 1501.5 -(byte) main::k#2 reg byte y 1001.0 +(byte) main::k#1 reg byte y 15001.5 +(byte) main::k#2 reg byte y 10001.0 reg byte a [ main::i#6 main::i#1 ] reg byte x [ main::j#4 main::j#1 ] diff --git a/src/test/ref/inline-asm-clobber.log b/src/test/ref/inline-asm-clobber.log index aef3d6b8f..7db9fc189 100644 --- a/src/test/ref/inline-asm-clobber.log +++ b/src/test/ref/inline-asm-clobber.log @@ -101,8 +101,8 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::k#2 = (byte) main::k#3 +Alias main::i#2 = main::i#3 +Alias main::k#2 = main::k#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::i#2 (byte) main::i#4 Identical Phi Values (byte) main::k#2 (byte) main::k#4 @@ -232,17 +232,17 @@ main::@return: scope:[main] from main::@6 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#4 24.599999999999998 +(byte) main::i#1 151.5 +(byte) main::i#4 240.59999999999997 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#2 151.5 +(byte) main::j#1 1501.5 +(byte) main::j#2 1501.5 (byte) main::k -(byte) main::k#1 16.5 -(byte) main::k#4 20.499999999999996 +(byte) main::k#1 151.5 +(byte) main::k#4 200.50000000000003 (byte) main::l -(byte) main::l#1 151.5 -(byte) main::l#2 101.0 +(byte) main::l#1 1501.5 +(byte) main::l#2 1001.0 Initial phi equivalence classes [ main::i#4 main::i#1 ] @@ -396,16 +396,16 @@ Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::k Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::k#4 main::k#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::l#2 main::l#1 ] Removing always clobbered register reg byte x as potential for zp[1]:5 [ main::l#2 main::l#1 ] -Statement [15] *((const byte*) SCREEN + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] { } ) always clobbers reg byte a Statement asm { eor#$55 tax } always clobbers reg byte a reg byte x -Statement [15] *((const byte*) SCREEN + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:2 [ main::k#4 main::l#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#4 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::k#4 main::k#1 ] : zp[1]:4 , reg byte y , Potential registers zp[1]:5 [ main::l#2 main::l#1 ] : zp[1]:5 , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 303: zp[1]:3 [ main::j#2 main::j#1 ] 252.5: zp[1]:5 [ main::l#2 main::l#1 ] 41.1: zp[1]:2 [ main::i#4 main::i#1 ] 37: zp[1]:4 [ main::k#4 main::k#1 ] +Uplift Scope [main] 3,003: zp[1]:3 [ main::j#2 main::j#1 ] 2,502.5: zp[1]:5 [ main::l#2 main::l#1 ] 392.1: zp[1]:2 [ main::i#4 main::i#1 ] 352: zp[1]:4 [ main::k#4 main::k#1 ] Uplift Scope [] Uplifting [main] best 6638 combination reg byte a [ main::j#2 main::j#1 ] zp[1]:5 [ main::l#2 main::l#1 ] reg byte x [ main::i#4 main::i#1 ] reg byte y [ main::k#4 main::k#1 ] @@ -591,17 +591,17 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#4 reg byte x 24.599999999999998 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#4 reg byte x 240.59999999999997 (byte) main::j -(byte) main::j#1 reg byte a 151.5 -(byte) main::j#2 reg byte a 151.5 +(byte) main::j#1 reg byte a 1501.5 +(byte) main::j#2 reg byte a 1501.5 (byte) main::k -(byte) main::k#1 reg byte y 16.5 -(byte) main::k#4 reg byte y 20.499999999999996 +(byte) main::k#1 reg byte y 151.5 +(byte) main::k#4 reg byte y 200.50000000000003 (byte) main::l -(byte) main::l#1 l zp[1]:2 151.5 -(byte) main::l#2 l zp[1]:2 101.0 +(byte) main::l#1 l zp[1]:2 1501.5 +(byte) main::l#2 l zp[1]:2 1001.0 reg byte x [ main::i#4 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/inline-asm-clobber.sym b/src/test/ref/inline-asm-clobber.sym index 96e34f894..054f7bd9b 100644 --- a/src/test/ref/inline-asm-clobber.sym +++ b/src/test/ref/inline-asm-clobber.sym @@ -11,17 +11,17 @@ (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#4 reg byte x 24.599999999999998 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#4 reg byte x 240.59999999999997 (byte) main::j -(byte) main::j#1 reg byte a 151.5 -(byte) main::j#2 reg byte a 151.5 +(byte) main::j#1 reg byte a 1501.5 +(byte) main::j#2 reg byte a 1501.5 (byte) main::k -(byte) main::k#1 reg byte y 16.5 -(byte) main::k#4 reg byte y 20.499999999999996 +(byte) main::k#1 reg byte y 151.5 +(byte) main::k#4 reg byte y 200.50000000000003 (byte) main::l -(byte) main::l#1 l zp[1]:2 151.5 -(byte) main::l#2 l zp[1]:2 101.0 +(byte) main::l#1 l zp[1]:2 1501.5 +(byte) main::l#2 l zp[1]:2 1001.0 reg byte x [ main::i#4 main::i#1 ] reg byte a [ main::j#2 main::j#1 ] diff --git a/src/test/ref/inline-asm-jsr-clobber.log b/src/test/ref/inline-asm-jsr-clobber.log index 2ae8da4b7..27bafad84 100644 --- a/src/test/ref/inline-asm-jsr-clobber.log +++ b/src/test/ref/inline-asm-jsr-clobber.log @@ -103,8 +103,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -173,13 +173,13 @@ Statement asm { jsr$e544 } always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] if((byte) main::i#1!=(byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [8] if((byte) main::i#1!=(byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Statement asm { jsr$e544 } always clobbers reg byte a reg byte x reg byte y -Statement [8] if((byte) main::i#1!=(byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [8] if((byte) main::i#1!=(byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 343 combination zp[1]:2 [ main::i#2 main::i#1 ] @@ -275,8 +275,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 11.0 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 101.0 zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-asm-jsr-clobber.sym b/src/test/ref/inline-asm-jsr-clobber.sym index 48ce21b6f..2aa90cf01 100644 --- a/src/test/ref/inline-asm-jsr-clobber.sym +++ b/src/test/ref/inline-asm-jsr-clobber.sym @@ -5,7 +5,7 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 11.0 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 101.0 zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-asm-optimized.log b/src/test/ref/inline-asm-optimized.log index 55e20d071..ec4da17f6 100644 --- a/src/test/ref/inline-asm-optimized.log +++ b/src/test/ref/inline-asm-optimized.log @@ -139,9 +139,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { lda#0 staSCREEN+1 lda#0 staSCREEN+2 } always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { lda#0 staSCREEN+4 } always clobbers reg byte a REGISTER UPLIFT SCOPES diff --git a/src/test/ref/inline-asm-param.log b/src/test/ref/inline-asm-param.log index cc2ebae6d..a75e24eb3 100644 --- a/src/test/ref/inline-asm-param.log +++ b/src/test/ref/inline-asm-param.log @@ -106,8 +106,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -179,7 +179,7 @@ Statement asm { lda#'a' staSCREEN } always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 253 combination reg byte x [ main::i#2 main::i#1 ] @@ -272,8 +272,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-asm-param.sym b/src/test/ref/inline-asm-param.sym index 7a2f2552d..9fbf27ebf 100644 --- a/src/test/ref/inline-asm-param.sym +++ b/src/test/ref/inline-asm-param.sym @@ -6,7 +6,7 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-asm-refout.log b/src/test/ref/inline-asm-refout.log index cfbb776cb..fdd88d328 100644 --- a/src/test/ref/inline-asm-refout.log +++ b/src/test/ref/inline-asm-refout.log @@ -128,7 +128,7 @@ main: { table: .text "cml!" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN+(byte) $28) ← *((const byte*) table) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN+(byte) $28) ← *((const byte*) table) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#0 !: ldatable,x staSCREEN+1,x inx cpx#4 bne!- } always clobbers reg byte a reg byte x REGISTER UPLIFT SCOPES diff --git a/src/test/ref/inline-assignment.log b/src/test/ref/inline-assignment.log index 41ce66997..13f1944d4 100644 --- a/src/test/ref/inline-assignment.log +++ b/src/test/ref/inline-assignment.log @@ -53,7 +53,7 @@ Simplifying constant integer cast $50 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $50 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::a#1 = (byte) main::i#2 +Alias main::a#1 = main::i#2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [7] if((byte) main::i#1!=rangelast(0,$27)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -122,9 +122,9 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#1 22.0 +(byte) main::a#1 201.99999999999997 (byte) main::i -(byte) main::i#1 16.5 +(byte) main::i#1 151.5 Initial phi equivalence classes [ main::a#1 main::i#1 ] @@ -199,7 +199,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::a#1 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::a#1 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::a#1 main::i#1 ] Uplift Scope [] Uplifting [main] best 333 combination reg byte x [ main::a#1 main::i#1 ] @@ -295,9 +295,9 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::a -(byte) main::a#1 reg byte x 22.0 +(byte) main::a#1 reg byte x 201.99999999999997 (byte) main::i -(byte) main::i#1 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 reg byte x [ main::a#1 main::i#1 ] diff --git a/src/test/ref/inline-assignment.sym b/src/test/ref/inline-assignment.sym index 30f394a1a..0fdbfddb2 100644 --- a/src/test/ref/inline-assignment.sym +++ b/src/test/ref/inline-assignment.sym @@ -6,8 +6,8 @@ (label) main::@1 (label) main::@return (byte) main::a -(byte) main::a#1 reg byte x 22.0 +(byte) main::a#1 reg byte x 201.99999999999997 (byte) main::i -(byte) main::i#1 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 reg byte x [ main::a#1 main::i#1 ] diff --git a/src/test/ref/inline-dword-0.log b/src/test/ref/inline-dword-0.log index 8dfd20b57..f4791e8b2 100644 --- a/src/test/ref/inline-dword-0.log +++ b/src/test/ref/inline-dword-0.log @@ -138,7 +138,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const dword*) main::screen) ← (const dword) main::w [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const dword*) main::screen) ← (const dword) main::w [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-function-if.log b/src/test/ref/inline-function-if.log index 9b1c8e720..fa1f141d2 100644 --- a/src/test/ref/inline-function-if.log +++ b/src/test/ref/inline-function-if.log @@ -145,12 +145,12 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $40 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::toUpper1_ch#0 = (byte) main::toUpper1_ch#1 (byte) main::toUpper1_res#0 (byte) main::toUpper1_res#3 -Alias (bool) main::toUpper1_bo#0 = (bool) main::toUpper1_bo#1 -Alias (byte) main::toUpper1_return#0 = (byte) main::toUpper1_res#2 (byte) main::toUpper1_return#2 (byte) main::toUpper1_return#1 (byte) main::toUpper1_return#3 (byte~) main::$0 -Alias (byte) main::toUpper2_ch#0 = (byte) main::toUpper2_ch#1 (byte) main::toUpper2_res#0 (byte) main::toUpper2_res#3 -Alias (bool) main::toUpper2_bo#0 = (bool) main::toUpper2_bo#1 -Alias (byte) main::toUpper2_return#0 = (byte) main::toUpper2_res#2 (byte) main::toUpper2_return#2 (byte) main::toUpper2_return#1 (byte) main::toUpper2_return#3 (byte~) main::$1 +Alias main::toUpper1_ch#0 = main::toUpper1_ch#1 main::toUpper1_res#0 main::toUpper1_res#3 +Alias main::toUpper1_bo#0 = main::toUpper1_bo#1 +Alias main::toUpper1_return#0 = main::toUpper1_res#2 main::toUpper1_return#2 main::toUpper1_return#1 main::toUpper1_return#3 main::$0 +Alias main::toUpper2_ch#0 = main::toUpper2_ch#1 main::toUpper2_res#0 main::toUpper2_res#3 +Alias main::toUpper2_bo#0 = main::toUpper2_bo#1 +Alias main::toUpper2_return#0 = main::toUpper2_res#2 main::toUpper2_return#2 main::toUpper2_return#1 main::toUpper2_return#3 main::$1 Successful SSA optimization Pass2AliasElimination Rewriting ! if()-condition to reversed if() [2] (bool~) main::toUpper1_$0 ← ! (bool) main::toUpper1_bo#0 Rewriting ! if()-condition to reversed if() [9] (bool~) main::toUpper2_$0 ← ! (bool) main::toUpper2_bo#0 @@ -173,7 +173,7 @@ Eliminating variable (byte) main::toUpper2_res#1 from unused block main::toUpper Removing PHI-reference to removed block (main::toUpper2_@2) in block main::toUpper2_@1 Removing unused block main::toUpper2_@2 Successful SSA optimization Pass2EliminateUnusedBlocks -Alias (byte) main::toUpper1_return#0 = (byte) main::toUpper1_res#1 +Alias main::toUpper1_return#0 = main::toUpper1_res#1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::toUpper2_return#0 (const byte) main::toUpper2_ch#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -322,8 +322,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) screen) ← (const byte) main::toUpper1_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) screen+(byte) 1) ← (const byte) main::toUpper2_ch#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) screen) ← (const byte) main::toUpper1_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) screen+(byte) 1) ← (const byte) main::toUpper2_ch#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-function-level2.asm b/src/test/ref/inline-function-level2.asm index bdb797286..08917c038 100644 --- a/src/test/ref/inline-function-level2.asm +++ b/src/test/ref/inline-function-level2.asm @@ -60,9 +60,8 @@ main: { rts line2___b2: // plot(>pos, ch) - lda.z line2_pos+1 + ldy.z line2_pos+1 // *(cur_line+xpos) = ch - tay lda #line2_ch sta (cur_line_1),y // pos += xadd diff --git a/src/test/ref/inline-function-level2.log b/src/test/ref/inline-function-level2.log index 5f8bc65c6..6448a477f 100644 --- a/src/test/ref/inline-function-level2.log +++ b/src/test/ref/inline-function-level2.log @@ -365,33 +365,33 @@ Finalized unsigned number type (byte) $80 Finalized unsigned number type (byte) $f Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::sc#2 = (byte*) main::sc#3 -Alias (byte) main::line1_xpos#0 = (byte) main::line1_xpos#1 -Alias (byte) main::line1_ysize#0 = (byte) main::line1_ysize#3 -Alias (byte) main::line1_ch#0 = (byte) main::line1_ch#4 -Alias (byte) main::line1_xadd#0 = (byte) main::line1_xadd#5 -Alias (word) main::line1_pos#0 = (word~) main::$3 -Alias (word) main::line1_pos#2 = (word) main::line1_pos#4 (word) main::line1_pos#5 (word) main::line1_pos#3 -Alias (byte) main::line1_ch#1 = (byte) main::line1_ch#2 (byte) main::plot1_ch#0 (byte) main::plot1_ch#1 (byte) main::line1_ch#5 (byte) main::line1_ch#3 -Alias (byte*) cur_line#13 = (byte*) cur_line#17 (byte*) cur_line#7 (byte*) cur_line#8 -Alias (byte) main::line1_xadd#1 = (byte) main::line1_xadd#3 (byte) main::line1_xadd#4 (byte) main::line1_xadd#2 -Alias (byte) main::line1_i#2 = (byte) main::line1_i#5 (byte) main::line1_i#4 (byte) main::line1_i#3 -Alias (byte) main::line1_ysize#1 = (byte) main::line1_ysize#5 (byte) main::line1_ysize#4 (byte) main::line1_ysize#2 -Alias (byte) main::plot1_xpos#0 = (byte~) main::line1_$1 (byte) main::plot1_xpos#1 -Alias (byte) main::line2_xpos#0 = (byte) main::line2_xpos#1 -Alias (byte) main::line2_ysize#0 = (byte) main::line2_ysize#3 -Alias (byte) main::line2_ch#0 = (byte) main::line2_ch#4 -Alias (byte) main::line2_xadd#0 = (byte) main::line2_xadd#5 -Alias (word) main::line2_pos#0 = (word~) main::$4 -Alias (word) main::line2_pos#2 = (word) main::line2_pos#4 (word) main::line2_pos#5 (word) main::line2_pos#3 -Alias (byte) main::line2_ch#1 = (byte) main::line2_ch#2 (byte) main::plot2_ch#0 (byte) main::plot2_ch#1 (byte) main::line2_ch#5 (byte) main::line2_ch#3 -Alias (byte*) cur_line#10 = (byte*) cur_line#14 (byte*) cur_line#15 (byte*) cur_line#9 (byte*) cur_line#11 (byte*) cur_line#4 -Alias (byte) main::line2_xadd#1 = (byte) main::line2_xadd#3 (byte) main::line2_xadd#4 (byte) main::line2_xadd#2 -Alias (byte) main::line2_i#2 = (byte) main::line2_i#5 (byte) main::line2_i#4 (byte) main::line2_i#3 -Alias (byte) main::line2_ysize#1 = (byte) main::line2_ysize#5 (byte) main::line2_ysize#4 (byte) main::line2_ysize#2 -Alias (byte) main::plot2_xpos#0 = (byte~) main::line2_$1 (byte) main::plot2_xpos#1 -Alias (byte*) cur_line#16 = (byte*) cur_line#5 -Alias (byte*) cur_line#12 = (byte*) cur_line#6 +Alias main::sc#2 = main::sc#3 +Alias main::line1_xpos#0 = main::line1_xpos#1 +Alias main::line1_ysize#0 = main::line1_ysize#3 +Alias main::line1_ch#0 = main::line1_ch#4 +Alias main::line1_xadd#0 = main::line1_xadd#5 +Alias main::line1_pos#0 = main::$3 +Alias main::line1_pos#2 = main::line1_pos#4 main::line1_pos#5 main::line1_pos#3 +Alias main::line1_ch#1 = main::line1_ch#2 main::plot1_ch#0 main::plot1_ch#1 main::line1_ch#5 main::line1_ch#3 +Alias cur_line#13 = cur_line#17 cur_line#7 cur_line#8 +Alias main::line1_xadd#1 = main::line1_xadd#3 main::line1_xadd#4 main::line1_xadd#2 +Alias main::line1_i#2 = main::line1_i#5 main::line1_i#4 main::line1_i#3 +Alias main::line1_ysize#1 = main::line1_ysize#5 main::line1_ysize#4 main::line1_ysize#2 +Alias main::plot1_xpos#0 = main::line1_$1 main::plot1_xpos#1 +Alias main::line2_xpos#0 = main::line2_xpos#1 +Alias main::line2_ysize#0 = main::line2_ysize#3 +Alias main::line2_ch#0 = main::line2_ch#4 +Alias main::line2_xadd#0 = main::line2_xadd#5 +Alias main::line2_pos#0 = main::$4 +Alias main::line2_pos#2 = main::line2_pos#4 main::line2_pos#5 main::line2_pos#3 +Alias main::line2_ch#1 = main::line2_ch#2 main::plot2_ch#0 main::plot2_ch#1 main::line2_ch#5 main::line2_ch#3 +Alias cur_line#10 = cur_line#14 cur_line#15 cur_line#9 cur_line#11 cur_line#4 +Alias main::line2_xadd#1 = main::line2_xadd#3 main::line2_xadd#4 main::line2_xadd#2 +Alias main::line2_i#2 = main::line2_i#5 main::line2_i#4 main::line2_i#3 +Alias main::line2_ysize#1 = main::line2_ysize#5 main::line2_ysize#4 main::line2_ysize#2 +Alias main::plot2_xpos#0 = main::line2_$1 main::plot2_xpos#1 +Alias cur_line#16 = cur_line#5 +Alias cur_line#12 = cur_line#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::line1_ysize#1 (byte) main::line1_ysize#0 Identical Phi Values (byte) main::line1_ch#1 (byte) main::line1_ch#0 @@ -573,40 +573,40 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (byte*) cur_line -(byte*) cur_line#1 11.0 -(byte*) cur_line#10 6.6000000000000005 -(byte*) cur_line#13 6.6000000000000005 -(byte*) cur_line#3 11.0 +(byte*) cur_line#1 101.0 +(byte*) cur_line#10 60.599999999999994 +(byte*) cur_line#13 60.599999999999994 +(byte*) cur_line#3 101.0 (void()) main() (byte) main::line1_ch (byte) main::line1_i -(byte) main::line1_i#1 22.0 -(byte) main::line1_i#2 5.5 +(byte) main::line1_i#1 202.0 +(byte) main::line1_i#2 50.5 (word) main::line1_pos -(word) main::line1_pos#1 7.333333333333333 -(word) main::line1_pos#2 8.25 +(word) main::line1_pos#1 67.33333333333333 +(word) main::line1_pos#2 75.75 (byte) main::line1_xadd (byte) main::line1_xpos (byte) main::line1_ysize (byte) main::line2_ch (byte) main::line2_i -(byte) main::line2_i#1 22.0 -(byte) main::line2_i#2 5.5 +(byte) main::line2_i#1 202.0 +(byte) main::line2_i#2 50.5 (word) main::line2_pos -(word) main::line2_pos#1 7.333333333333333 -(word) main::line2_pos#2 8.25 +(word) main::line2_pos#1 67.33333333333333 +(word) main::line2_pos#2 75.75 (byte) main::line2_xadd (byte) main::line2_xpos (byte) main::line2_ysize (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 22.0 +(byte) main::plot1_xpos#0 202.0 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 22.0 +(byte) main::plot2_xpos#0 202.0 (byte*) main::sc -(byte*) main::sc#1 22.0 -(byte*) main::sc#2 14.666666666666666 +(byte*) main::sc#1 202.0 +(byte*) main::sc#2 134.66666666666666 Initial phi equivalence classes [ main::sc#2 main::sc#1 ] @@ -857,28 +857,24 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 main::plot2_xpos#0 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 main::plot2_xpos#0 ] ) always clobbers reg byte a +Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::line2_i#2 main::line2_i#1 ] -Statement [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ) always clobbers reg byte a -Statement [16] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ( main:2 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ) always clobbers reg byte a -Statement [17] (byte*) cur_line#3 ← (byte*) cur_line#10 + (byte) $28 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ) always clobbers reg byte a -Statement [19] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 main::plot1_xpos#0 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 main::plot1_xpos#0 ] ) always clobbers reg byte a +Statement [16] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ( main:2 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) cur_line#3 ← (byte*) cur_line#10 + (byte) $28 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] { } ) always clobbers reg byte a +Statement [20] *((byte*) cur_line#13 + (byte) main::plot1_xpos#0) ← (const byte) main::line1_ch#0 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::line1_i#2 main::line1_i#1 ] -Statement [20] *((byte*) cur_line#13 + (byte) main::plot1_xpos#0) ← (const byte) main::line1_ch#0 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ) always clobbers reg byte a -Statement [21] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ( main:2 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ) always clobbers reg byte a -Statement [22] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte) $28 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) always clobbers reg byte a -Statement [24] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 main::plot2_xpos#0 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 main::plot2_xpos#0 ] ) always clobbers reg byte a -Statement [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ) always clobbers reg byte a -Statement [16] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ( main:2 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ) always clobbers reg byte a -Statement [17] (byte*) cur_line#3 ← (byte*) cur_line#10 + (byte) $28 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ) always clobbers reg byte a -Statement [19] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 main::plot1_xpos#0 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 main::plot1_xpos#0 ] ) always clobbers reg byte a -Statement [20] *((byte*) cur_line#13 + (byte) main::plot1_xpos#0) ← (const byte) main::line1_ch#0 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ) always clobbers reg byte a -Statement [21] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ( main:2 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ) always clobbers reg byte a -Statement [22] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte) $28 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) always clobbers reg byte a -Statement [24] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [21] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ( main:2 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] { } ) always clobbers reg byte a +Statement [22] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte) $28 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] { } ) always clobbers reg byte a +Statement [24] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] ( main:2 [ main::line2_i#2 main::line2_pos#2 cur_line#10 ] { } ) always clobbers reg byte a +Statement [16] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] ( main:2 [ main::line2_i#2 cur_line#10 main::line2_pos#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) cur_line#3 ← (byte*) cur_line#10 + (byte) $28 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#3 ] { } ) always clobbers reg byte a +Statement [20] *((byte*) cur_line#13 + (byte) main::plot1_xpos#0) ← (const byte) main::line1_ch#0 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] ( main:2 [ main::line1_i#2 main::line1_pos#2 cur_line#13 ] { } ) always clobbers reg byte a +Statement [21] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] ( main:2 [ main::line1_i#2 cur_line#13 main::line1_pos#1 ] { } ) always clobbers reg byte a +Statement [22] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte) $28 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] { } ) always clobbers reg byte a +Statement [24] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::line1_i#2 main::line1_i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] : zp[2]:5 , @@ -890,12 +886,12 @@ Potential registers zp[1]:14 [ main::plot2_xpos#0 ] : zp[1]:14 , reg byte a , re Potential registers zp[1]:15 [ main::plot1_xpos#0 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 36.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 27.5: zp[1]:4 [ main::line1_i#2 main::line1_i#1 ] 27.5: zp[1]:9 [ main::line2_i#2 main::line2_i#1 ] 22: zp[1]:14 [ main::plot2_xpos#0 ] 22: zp[1]:15 [ main::plot1_xpos#0 ] 15.58: zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] 15.58: zp[2]:10 [ main::line2_pos#2 main::line2_pos#1 ] -Uplift Scope [] 17.6: zp[2]:7 [ cur_line#13 cur_line#1 ] 17.6: zp[2]:12 [ cur_line#10 cur_line#3 ] +Uplift Scope [main] 336.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 252.5: zp[1]:4 [ main::line1_i#2 main::line1_i#1 ] 252.5: zp[1]:9 [ main::line2_i#2 main::line2_i#1 ] 202: zp[1]:14 [ main::plot2_xpos#0 ] 202: zp[1]:15 [ main::plot1_xpos#0 ] 143.08: zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] 143.08: zp[2]:10 [ main::line2_pos#2 main::line2_pos#1 ] +Uplift Scope [] 161.6: zp[2]:7 [ cur_line#13 cur_line#1 ] 161.6: zp[2]:12 [ cur_line#10 cur_line#3 ] -Uplifting [main] best 2384 combination zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::line1_i#2 main::line1_i#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] reg byte a [ main::plot2_xpos#0 ] reg byte a [ main::plot1_xpos#0 ] zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] zp[2]:10 [ main::line2_pos#2 main::line2_pos#1 ] +Uplifting [main] best 2364 combination zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::line1_i#2 main::line1_i#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] reg byte y [ main::plot2_xpos#0 ] reg byte a [ main::plot1_xpos#0 ] zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] zp[2]:10 [ main::line2_pos#2 main::line2_pos#1 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [] best 2384 combination zp[2]:7 [ cur_line#13 cur_line#1 ] zp[2]:12 [ cur_line#10 cur_line#3 ] +Uplifting [] best 2364 combination zp[2]:7 [ cur_line#13 cur_line#1 ] zp[2]:12 [ cur_line#10 cur_line#3 ] Coalescing zero page register [ zp[2]:7 [ cur_line#13 cur_line#1 ] ] with [ zp[2]:2 [ main::sc#2 main::sc#1 ] ] Coalescing zero page register [ zp[2]:12 [ cur_line#10 cur_line#3 ] ] with [ zp[2]:5 [ main::line1_pos#2 main::line1_pos#1 ] ] Allocated (was zp[2]:7) zp[2]:2 [ cur_line#13 cur_line#1 main::sc#2 main::sc#1 ] @@ -1017,13 +1013,12 @@ main: { rts // main::line2_@2 line2___b2: - // [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 - lda.z line2_pos+1 + // [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuyy=_hi_vwuz1 + ldy.z line2_pos+1 jmp plot2 // main::plot2 plot2: - // [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 -- pbuz1_derefidx_vbuaa=vbuc1 - tay + // [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 -- pbuz1_derefidx_vbuyy=vbuc1 lda #line2_ch sta (cur_line_1),y jmp __b4 @@ -1156,10 +1151,10 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) cur_line -(byte*) cur_line#1 cur_line zp[2]:2 11.0 -(byte*) cur_line#10 cur_line_1 zp[2]:6 6.6000000000000005 -(byte*) cur_line#13 cur_line zp[2]:2 6.6000000000000005 -(byte*) cur_line#3 cur_line_1 zp[2]:6 11.0 +(byte*) cur_line#1 cur_line zp[2]:2 101.0 +(byte*) cur_line#10 cur_line_1 zp[2]:6 60.599999999999994 +(byte*) cur_line#13 cur_line zp[2]:2 60.599999999999994 +(byte*) cur_line#3 cur_line_1 zp[2]:6 101.0 (void()) main() (label) main::@1 (label) main::@2 @@ -1172,11 +1167,11 @@ FINAL SYMBOL TABLE (byte) main::line1_ch (const byte) main::line1_ch#0 line1_ch = (byte) '*' (byte) main::line1_i -(byte) main::line1_i#1 reg byte x 22.0 -(byte) main::line1_i#2 reg byte x 5.5 +(byte) main::line1_i#1 reg byte x 202.0 +(byte) main::line1_i#2 reg byte x 50.5 (word) main::line1_pos -(word) main::line1_pos#1 line1_pos zp[2]:6 7.333333333333333 -(word) main::line1_pos#2 line1_pos zp[2]:6 8.25 +(word) main::line1_pos#1 line1_pos zp[2]:6 67.33333333333333 +(word) main::line1_pos#2 line1_pos zp[2]:6 75.75 (byte) main::line1_xadd (const byte) main::line1_xadd#0 line1_xadd = (byte) $40 (byte) main::line1_xpos @@ -1189,11 +1184,11 @@ FINAL SYMBOL TABLE (byte) main::line2_ch (const byte) main::line2_ch#0 line2_ch = (byte) '.' (byte) main::line2_i -(byte) main::line2_i#1 reg byte x 22.0 -(byte) main::line2_i#2 reg byte x 5.5 +(byte) main::line2_i#1 reg byte x 202.0 +(byte) main::line2_i#2 reg byte x 50.5 (word) main::line2_pos -(word) main::line2_pos#1 line2_pos zp[2]:4 7.333333333333333 -(word) main::line2_pos#2 line2_pos zp[2]:4 8.25 +(word) main::line2_pos#1 line2_pos zp[2]:4 67.33333333333333 +(word) main::line2_pos#2 line2_pos zp[2]:4 75.75 (byte) main::line2_xadd (const byte) main::line2_xadd#0 line2_xadd = (byte) $80 (byte) main::line2_xpos @@ -1203,26 +1198,26 @@ FINAL SYMBOL TABLE (label) main::plot1 (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 reg byte a 22.0 +(byte) main::plot1_xpos#0 reg byte a 202.0 (label) main::plot2 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 reg byte a 22.0 +(byte) main::plot2_xpos#0 reg byte y 202.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 reg byte x [ main::line1_i#2 main::line1_i#1 ] zp[2]:2 [ cur_line#13 cur_line#1 main::sc#2 main::sc#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] zp[2]:4 [ main::line2_pos#2 main::line2_pos#1 ] zp[2]:6 [ cur_line#10 cur_line#3 main::line1_pos#2 main::line1_pos#1 ] -reg byte a [ main::plot2_xpos#0 ] +reg byte y [ main::plot2_xpos#0 ] reg byte a [ main::plot1_xpos#0 ] FINAL ASSEMBLER -Score: 2126 +Score: 2106 // File Comments // Inline functions in two levels @@ -1320,12 +1315,11 @@ main: { // main::line2_@2 line2___b2: // plot(>pos, ch) - // [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 - lda.z line2_pos+1 + // [14] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuyy=_hi_vwuz1 + ldy.z line2_pos+1 // main::plot2 // *(cur_line+xpos) = ch - // [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 -- pbuz1_derefidx_vbuaa=vbuc1 - tay + // [15] *((byte*) cur_line#10 + (byte) main::plot2_xpos#0) ← (const byte) main::line2_ch#0 -- pbuz1_derefidx_vbuyy=vbuc1 lda #line2_ch sta (cur_line_1),y // main::@4 diff --git a/src/test/ref/inline-function-level2.sym b/src/test/ref/inline-function-level2.sym index 0982cd202..9baffdb8c 100644 --- a/src/test/ref/inline-function-level2.sym +++ b/src/test/ref/inline-function-level2.sym @@ -2,10 +2,10 @@ (label) @begin (label) @end (byte*) cur_line -(byte*) cur_line#1 cur_line zp[2]:2 11.0 -(byte*) cur_line#10 cur_line_1 zp[2]:6 6.6000000000000005 -(byte*) cur_line#13 cur_line zp[2]:2 6.6000000000000005 -(byte*) cur_line#3 cur_line_1 zp[2]:6 11.0 +(byte*) cur_line#1 cur_line zp[2]:2 101.0 +(byte*) cur_line#10 cur_line_1 zp[2]:6 60.599999999999994 +(byte*) cur_line#13 cur_line zp[2]:2 60.599999999999994 +(byte*) cur_line#3 cur_line_1 zp[2]:6 101.0 (void()) main() (label) main::@1 (label) main::@2 @@ -18,11 +18,11 @@ (byte) main::line1_ch (const byte) main::line1_ch#0 line1_ch = (byte) '*' (byte) main::line1_i -(byte) main::line1_i#1 reg byte x 22.0 -(byte) main::line1_i#2 reg byte x 5.5 +(byte) main::line1_i#1 reg byte x 202.0 +(byte) main::line1_i#2 reg byte x 50.5 (word) main::line1_pos -(word) main::line1_pos#1 line1_pos zp[2]:6 7.333333333333333 -(word) main::line1_pos#2 line1_pos zp[2]:6 8.25 +(word) main::line1_pos#1 line1_pos zp[2]:6 67.33333333333333 +(word) main::line1_pos#2 line1_pos zp[2]:6 75.75 (byte) main::line1_xadd (const byte) main::line1_xadd#0 line1_xadd = (byte) $40 (byte) main::line1_xpos @@ -35,11 +35,11 @@ (byte) main::line2_ch (const byte) main::line2_ch#0 line2_ch = (byte) '.' (byte) main::line2_i -(byte) main::line2_i#1 reg byte x 22.0 -(byte) main::line2_i#2 reg byte x 5.5 +(byte) main::line2_i#1 reg byte x 202.0 +(byte) main::line2_i#2 reg byte x 50.5 (word) main::line2_pos -(word) main::line2_pos#1 line2_pos zp[2]:4 7.333333333333333 -(word) main::line2_pos#2 line2_pos zp[2]:4 8.25 +(word) main::line2_pos#1 line2_pos zp[2]:4 67.33333333333333 +(word) main::line2_pos#2 line2_pos zp[2]:4 75.75 (byte) main::line2_xadd (const byte) main::line2_xadd#0 line2_xadd = (byte) $80 (byte) main::line2_xpos @@ -49,19 +49,19 @@ (label) main::plot1 (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 reg byte a 22.0 +(byte) main::plot1_xpos#0 reg byte a 202.0 (label) main::plot2 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 reg byte a 22.0 +(byte) main::plot2_xpos#0 reg byte y 202.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 reg byte x [ main::line1_i#2 main::line1_i#1 ] zp[2]:2 [ cur_line#13 cur_line#1 main::sc#2 main::sc#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] zp[2]:4 [ main::line2_pos#2 main::line2_pos#1 ] zp[2]:6 [ cur_line#10 cur_line#3 main::line1_pos#2 main::line1_pos#1 ] -reg byte a [ main::plot2_xpos#0 ] +reg byte y [ main::plot2_xpos#0 ] reg byte a [ main::plot1_xpos#0 ] diff --git a/src/test/ref/inline-function-min.log b/src/test/ref/inline-function-min.log index 975932884..d80ef8c46 100644 --- a/src/test/ref/inline-function-min.log +++ b/src/test/ref/inline-function-min.log @@ -170,15 +170,15 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::sum1_a#0 = (byte) main::sum1_a#1 -Alias (byte) main::sum1_b#0 = (byte) main::sum1_b#1 -Alias (byte) main::sum1_return#0 = (byte~) main::sum1_$0 (byte) main::sum1_return#2 (byte) main::sum1_return#1 (byte) main::sum1_return#3 (byte~) main::$0 -Alias (byte) main::sum2_a#0 = (byte) main::sum2_a#1 -Alias (byte) main::sum2_b#0 = (byte) main::sum2_b#1 -Alias (byte) main::sum2_return#0 = (byte~) main::sum2_$0 (byte) main::sum2_return#2 (byte) main::sum2_return#1 (byte) main::sum2_return#3 (byte~) main::$1 -Alias (byte) main::sum3_a#0 = (byte) main::sum3_a#1 -Alias (byte) main::sum3_b#0 = (byte) main::sum3_b#1 -Alias (byte) main::sum3_return#0 = (byte~) main::sum3_$0 (byte) main::sum3_return#2 (byte) main::sum3_return#1 (byte) main::sum3_return#3 (byte~) main::$2 +Alias main::sum1_a#0 = main::sum1_a#1 +Alias main::sum1_b#0 = main::sum1_b#1 +Alias main::sum1_return#0 = main::sum1_$0 main::sum1_return#2 main::sum1_return#1 main::sum1_return#3 main::$0 +Alias main::sum2_a#0 = main::sum2_a#1 +Alias main::sum2_b#0 = main::sum2_b#1 +Alias main::sum2_return#0 = main::sum2_$0 main::sum2_return#2 main::sum2_return#1 main::sum2_return#3 main::$1 +Alias main::sum3_a#0 = main::sum3_a#1 +Alias main::sum3_b#0 = main::sum3_b#1 +Alias main::sum3_return#0 = main::sum3_$0 main::sum3_return#2 main::sum3_return#1 main::sum3_return#3 main::$2 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::sum1_a#0 = 2 Constant (const byte) main::sum1_b#0 = 1 @@ -361,9 +361,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) screen) ← (const byte) main::sum1_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) screen+(byte) 1) ← (const byte) main::sum2_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) screen+(byte) 2) ← (const byte) main::sum3_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) screen) ← (const byte) main::sum1_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) screen+(byte) 1) ← (const byte) main::sum2_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) screen+(byte) 2) ← (const byte) main::sum3_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-function-print.log b/src/test/ref/inline-function-print.log index a564ca355..cffe17cfe 100644 --- a/src/test/ref/inline-function-print.log +++ b/src/test/ref/inline-function-print.log @@ -163,18 +163,18 @@ Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::print1_msg#0 = (byte*) main::print1_msg#3 -Alias (byte*) main::print1_at#0 = (byte*) main::print1_at#3 -Alias (byte*) main::print1_msg#1 = (byte*) main::print1_msg#2 -Alias (byte) main::print1_i#2 = (byte) main::print1_i#3 -Alias (byte*) main::print1_at#1 = (byte*) main::print1_at#2 -Alias (byte) main::print1_j#2 = (byte) main::print1_j#3 -Alias (byte*) main::print2_at#0 = (byte*~) main::$1 (byte*) main::print2_at#3 -Alias (byte*) main::print2_msg#0 = (byte*) main::print2_msg#3 -Alias (byte*) main::print2_msg#1 = (byte*) main::print2_msg#2 -Alias (byte) main::print2_i#2 = (byte) main::print2_i#3 -Alias (byte*) main::print2_at#1 = (byte*) main::print2_at#2 -Alias (byte) main::print2_j#2 = (byte) main::print2_j#3 +Alias main::print1_msg#0 = main::print1_msg#3 +Alias main::print1_at#0 = main::print1_at#3 +Alias main::print1_msg#1 = main::print1_msg#2 +Alias main::print1_i#2 = main::print1_i#3 +Alias main::print1_at#1 = main::print1_at#2 +Alias main::print1_j#2 = main::print1_j#3 +Alias main::print2_at#0 = main::$1 main::print2_at#3 +Alias main::print2_msg#0 = main::print2_msg#3 +Alias main::print2_msg#1 = main::print2_msg#2 +Alias main::print2_i#2 = main::print2_i#3 +Alias main::print2_at#1 = main::print2_at#2 +Alias main::print2_j#2 = main::print2_j#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) main::print1_msg#1 (byte*) main::print1_msg#0 Identical Phi Values (byte*) main::print1_at#1 (byte*) main::print1_at#0 @@ -284,19 +284,19 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::print1_at (byte) main::print1_i -(byte) main::print1_i#1 22.0 -(byte) main::print1_i#2 11.0 +(byte) main::print1_i#1 202.0 +(byte) main::print1_i#2 101.0 (byte) main::print1_j -(byte) main::print1_j#1 11.0 -(byte) main::print1_j#2 11.0 +(byte) main::print1_j#1 101.0 +(byte) main::print1_j#2 101.0 (byte*) main::print1_msg (byte*) main::print2_at (byte) main::print2_i -(byte) main::print2_i#1 22.0 -(byte) main::print2_i#2 11.0 +(byte) main::print2_i#1 202.0 +(byte) main::print2_i#2 101.0 (byte) main::print2_j -(byte) main::print2_j#1 11.0 -(byte) main::print2_j#2 11.0 +(byte) main::print2_j#1 101.0 +(byte) main::print2_j#2 101.0 (byte*) main::print2_msg Initial phi equivalence classes @@ -438,25 +438,25 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print1_i#2)) goto main::print1_@2 [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a +Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print1_i#2)) goto main::print1_@2 [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::print1_i#2 main::print1_i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::print1_j#2 main::print1_j#1 ] -Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print2_i#2)) goto main::print2_@2 [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a +Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print2_i#2)) goto main::print2_@2 [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::print2_i#2 main::print2_i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::print2_j#2 main::print2_j#1 ] -Statement [12] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::hello + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) screen + (byte) main::print1_j#2) ← *((const byte*) main::hello + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a -Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print1_i#2)) goto main::print1_@2 [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a -Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print2_i#2)) goto main::print2_@2 [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::hello + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) screen + (byte) main::print1_j#2) ← *((const byte*) main::hello + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a +Statement [12] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::hello + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) screen + (byte) main::print1_j#2) ← *((const byte*) main::hello + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] { } ) always clobbers reg byte a +Statement [7] if((byte) 0!=*((const byte*) main::hello + (byte) main::print1_i#2)) goto main::print1_@2 [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] { } ) always clobbers reg byte a +Statement [10] if((byte) 0!=*((const byte*) main::hello + (byte) main::print2_i#2)) goto main::print2_@2 [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::hello + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) screen + (byte) main::print1_j#2) ← *((const byte*) main::hello + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::print1_i#2 main::print1_i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::print1_j#2 main::print1_j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::print2_i#2 main::print2_i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::print2_j#2 main::print2_j#1 ] : zp[1]:5 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::print1_i#2 main::print1_i#1 ] 33: zp[1]:4 [ main::print2_i#2 main::print2_i#1 ] 22: zp[1]:3 [ main::print1_j#2 main::print1_j#1 ] 22: zp[1]:5 [ main::print2_j#2 main::print2_j#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::print1_i#2 main::print1_i#1 ] 303: zp[1]:4 [ main::print2_i#2 main::print2_i#1 ] 202: zp[1]:3 [ main::print1_j#2 main::print1_j#1 ] 202: zp[1]:5 [ main::print2_j#2 main::print2_j#1 ] Uplift Scope [] Uplifting [main] best 744 combination reg byte y [ main::print1_i#2 main::print1_i#1 ] reg byte y [ main::print2_i#2 main::print2_i#1 ] reg byte x [ main::print1_j#2 main::print1_j#1 ] reg byte x [ main::print2_j#2 main::print2_j#1 ] @@ -611,11 +611,11 @@ FINAL SYMBOL TABLE (label) main::print1_@2 (byte*) main::print1_at (byte) main::print1_i -(byte) main::print1_i#1 reg byte y 22.0 -(byte) main::print1_i#2 reg byte y 11.0 +(byte) main::print1_i#1 reg byte y 202.0 +(byte) main::print1_i#2 reg byte y 101.0 (byte) main::print1_j -(byte) main::print1_j#1 reg byte x 11.0 -(byte) main::print1_j#2 reg byte x 11.0 +(byte) main::print1_j#1 reg byte x 101.0 +(byte) main::print1_j#2 reg byte x 101.0 (byte*) main::print1_msg (label) main::print2 (label) main::print2_@1 @@ -623,11 +623,11 @@ FINAL SYMBOL TABLE (byte*) main::print2_at (const byte*) main::print2_at#0 print2_at = (const byte*) screen+(byte)(number) 2*(number) $28 (byte) main::print2_i -(byte) main::print2_i#1 reg byte y 22.0 -(byte) main::print2_i#2 reg byte y 11.0 +(byte) main::print2_i#1 reg byte y 202.0 +(byte) main::print2_i#2 reg byte y 101.0 (byte) main::print2_j -(byte) main::print2_j#1 reg byte x 11.0 -(byte) main::print2_j#2 reg byte x 11.0 +(byte) main::print2_j#1 reg byte x 101.0 +(byte) main::print2_j#2 reg byte x 101.0 (byte*) main::print2_msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/inline-function-print.sym b/src/test/ref/inline-function-print.sym index 55abadd49..82e1cb44d 100644 --- a/src/test/ref/inline-function-print.sym +++ b/src/test/ref/inline-function-print.sym @@ -9,11 +9,11 @@ (label) main::print1_@2 (byte*) main::print1_at (byte) main::print1_i -(byte) main::print1_i#1 reg byte y 22.0 -(byte) main::print1_i#2 reg byte y 11.0 +(byte) main::print1_i#1 reg byte y 202.0 +(byte) main::print1_i#2 reg byte y 101.0 (byte) main::print1_j -(byte) main::print1_j#1 reg byte x 11.0 -(byte) main::print1_j#2 reg byte x 11.0 +(byte) main::print1_j#1 reg byte x 101.0 +(byte) main::print1_j#2 reg byte x 101.0 (byte*) main::print1_msg (label) main::print2 (label) main::print2_@1 @@ -21,11 +21,11 @@ (byte*) main::print2_at (const byte*) main::print2_at#0 print2_at = (const byte*) screen+(byte)(number) 2*(number) $28 (byte) main::print2_i -(byte) main::print2_i#1 reg byte y 22.0 -(byte) main::print2_i#2 reg byte y 11.0 +(byte) main::print2_i#1 reg byte y 202.0 +(byte) main::print2_i#2 reg byte y 101.0 (byte) main::print2_j -(byte) main::print2_j#1 reg byte x 11.0 -(byte) main::print2_j#2 reg byte x 11.0 +(byte) main::print2_j#1 reg byte x 101.0 +(byte) main::print2_j#2 reg byte x 101.0 (byte*) main::print2_msg (const byte*) screen = (byte*) 1024 diff --git a/src/test/ref/inline-function.log b/src/test/ref/inline-function.log index ded16edc4..d34bc251e 100644 --- a/src/test/ref/inline-function.log +++ b/src/test/ref/inline-function.log @@ -219,12 +219,12 @@ Inferred type updated to word in (unumber~) main::toD0181_$4 ← (word~) main::t Inferred type updated to word in (unumber~) main::toD0182_$1 ← (word~) main::toD0182_$0 / (byte) $40 Inferred type updated to word in (unumber~) main::toD0182_$3 ← (word~) main::toD0182_$2 / (word) $400 Inferred type updated to word in (unumber~) main::toD0182_$4 ← (word~) main::toD0182_$1 | (word~) main::toD0182_$3 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_charset#0 = (byte*) main::toD0181_charset#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$5 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_charset#0 = (byte*) main::toD0182_charset#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$5 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$3 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_charset#0 = main::toD0181_charset#1 +Alias main::toD0181_return#0 = main::toD0181_$5 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_charset#0 = main::toD0182_charset#1 +Alias main::toD0182_return#0 = main::toD0182_$5 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 Simple Condition (bool~) main::$2 [15] if(*((const byte*) RASTER)!=(byte) $62) goto main::@10 @@ -442,12 +442,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] if(*((const byte*) RASTER)!=(byte) $62) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (byte) $b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] if(*((const byte*) RASTER)!=(byte) $62) goto main::@2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (byte) $b [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-kasm-clobber.log b/src/test/ref/inline-kasm-clobber.log index a3f769231..85e233147 100644 --- a/src/test/ref/inline-kasm-clobber.log +++ b/src/test/ref/inline-kasm-clobber.log @@ -90,8 +90,8 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::l#2 = (byte) main::l#3 -Alias (byte) main::k#2 = (byte) main::k#3 (byte) main::k#4 +Alias main::l#2 = main::l#3 +Alias main::k#2 = main::k#3 main::k#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::l#2 (byte) main::l#4 Identical Phi Values (byte) main::k#2 (byte) main::k#5 @@ -202,14 +202,14 @@ main::@return: scope:[main] from main::@5 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::k -(byte) main::k#1 16.5 -(byte) main::k#6 2.75 +(byte) main::k#1 151.5 +(byte) main::k#6 25.25 (byte) main::l -(byte) main::l#1 151.5 -(byte) main::l#4 40.4 +(byte) main::l#1 1501.5 +(byte) main::l#4 400.4 (byte) main::m -(byte) main::m#1 1501.5 -(byte) main::m#2 1001.0 +(byte) main::m#1 15001.5 +(byte) main::m#2 10001.0 Initial phi equivalence classes [ main::k#6 main::k#1 ] @@ -347,7 +347,7 @@ Potential registers zp[1]:3 [ main::l#4 main::l#1 ] : zp[1]:3 , reg byte y , Potential registers zp[1]:4 [ main::m#2 main::m#1 ] : zp[1]:4 , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2,502.5: zp[1]:4 [ main::m#2 main::m#1 ] 191.9: zp[1]:3 [ main::l#4 main::l#1 ] 19.25: zp[1]:2 [ main::k#6 main::k#1 ] +Uplift Scope [main] 25,002.5: zp[1]:4 [ main::m#2 main::m#1 ] 1,901.9: zp[1]:3 [ main::l#4 main::l#1 ] 176.75: zp[1]:2 [ main::k#6 main::k#1 ] Uplift Scope [] Uplifting [main] best 276433 combination reg byte y [ main::m#2 main::m#1 ] zp[1]:3 [ main::l#4 main::l#1 ] zp[1]:2 [ main::k#6 main::k#1 ] @@ -511,14 +511,14 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::k -(byte) main::k#1 k zp[1]:2 16.5 -(byte) main::k#6 k zp[1]:2 2.75 +(byte) main::k#1 k zp[1]:2 151.5 +(byte) main::k#6 k zp[1]:2 25.25 (byte) main::l -(byte) main::l#1 l zp[1]:3 151.5 -(byte) main::l#4 l zp[1]:3 40.4 +(byte) main::l#1 l zp[1]:3 1501.5 +(byte) main::l#4 l zp[1]:3 400.4 (byte) main::m -(byte) main::m#1 reg byte y 1501.5 -(byte) main::m#2 reg byte y 1001.0 +(byte) main::m#1 reg byte y 15001.5 +(byte) main::m#2 reg byte y 10001.0 zp[1]:2 [ main::k#6 main::k#1 ] zp[1]:3 [ main::l#4 main::l#1 ] diff --git a/src/test/ref/inline-kasm-clobber.sym b/src/test/ref/inline-kasm-clobber.sym index a7028f317..51e58cd3d 100644 --- a/src/test/ref/inline-kasm-clobber.sym +++ b/src/test/ref/inline-kasm-clobber.sym @@ -10,14 +10,14 @@ (label) main::@5 (label) main::@return (byte) main::k -(byte) main::k#1 k zp[1]:2 16.5 -(byte) main::k#6 k zp[1]:2 2.75 +(byte) main::k#1 k zp[1]:2 151.5 +(byte) main::k#6 k zp[1]:2 25.25 (byte) main::l -(byte) main::l#1 l zp[1]:3 151.5 -(byte) main::l#4 l zp[1]:3 40.4 +(byte) main::l#1 l zp[1]:3 1501.5 +(byte) main::l#4 l zp[1]:3 400.4 (byte) main::m -(byte) main::m#1 reg byte y 1501.5 -(byte) main::m#2 reg byte y 1001.0 +(byte) main::m#1 reg byte y 15001.5 +(byte) main::m#2 reg byte y 10001.0 zp[1]:2 [ main::k#6 main::k#1 ] zp[1]:3 [ main::l#4 main::l#1 ] diff --git a/src/test/ref/inline-kasm-data.log b/src/test/ref/inline-kasm-data.log index 95a439891..dbe03a702 100644 --- a/src/test/ref/inline-kasm-data.log +++ b/src/test/ref/inline-kasm-data.log @@ -153,16 +153,16 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::cols -(byte*) main::cols#1 7.333333333333333 -(byte*) main::cols#2 6.6000000000000005 +(byte*) main::cols#1 67.33333333333333 +(byte*) main::cols#2 60.599999999999994 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte*) main::screen -(byte*) main::screen#1 4.4 -(byte*) main::screen#2 11.0 +(byte*) main::screen#1 40.4 +(byte*) main::screen#2 101.0 (byte) main::sin -(byte) main::sin#0 11.0 +(byte) main::sin#0 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -282,23 +282,23 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((byte*) main::screen#2 + (byte) main::sin#0) ← (byte) '*' [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ( main:2 [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ) always clobbers reg byte a +Statement [7] *((byte*) main::screen#2 + (byte) main::sin#0) ← (byte) '*' [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ( main:2 [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::sin#0 ] -Statement [8] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::cols#2 + (byte) main::sin#0) ← (byte) 1 [ main::i#2 main::cols#2 main::screen#1 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 ] ) always clobbers reg byte a -Statement [10] (byte*) main::cols#1 ← (byte*) main::cols#2 + (byte) $28 [ main::i#2 main::screen#1 main::cols#1 ] ( main:2 [ main::i#2 main::screen#1 main::cols#1 ] ) always clobbers reg byte a -Statement [7] *((byte*) main::screen#2 + (byte) main::sin#0) ← (byte) '*' [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ( main:2 [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ) always clobbers reg byte a -Statement [8] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::cols#2 + (byte) main::sin#0) ← (byte) 1 [ main::i#2 main::cols#2 main::screen#1 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 ] ) always clobbers reg byte a -Statement [10] (byte*) main::cols#1 ← (byte*) main::cols#2 + (byte) $28 [ main::i#2 main::screen#1 main::cols#1 ] ( main:2 [ main::i#2 main::screen#1 main::cols#1 ] ) always clobbers reg byte a +Statement [8] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::cols#2 + (byte) main::sin#0) ← (byte) 1 [ main::i#2 main::cols#2 main::screen#1 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::cols#1 ← (byte*) main::cols#2 + (byte) $28 [ main::i#2 main::screen#1 main::cols#1 ] ( main:2 [ main::i#2 main::screen#1 main::cols#1 ] { } ) always clobbers reg byte a +Statement [7] *((byte*) main::screen#2 + (byte) main::sin#0) ← (byte) '*' [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] ( main:2 [ main::i#2 main::screen#2 main::cols#2 main::sin#0 ] { } ) always clobbers reg byte a +Statement [8] (byte*) main::screen#1 ← (byte*) main::screen#2 + (byte) $28 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 main::sin#0 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::cols#2 + (byte) main::sin#0) ← (byte) 1 [ main::i#2 main::cols#2 main::screen#1 ] ( main:2 [ main::i#2 main::cols#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::cols#1 ← (byte*) main::cols#2 + (byte) $28 [ main::i#2 main::screen#1 main::cols#1 ] ( main:2 [ main::i#2 main::screen#1 main::cols#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::screen#2 main::screen#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ main::cols#2 main::cols#1 ] : zp[2]:5 , Potential registers zp[1]:7 [ main::sin#0 ] : zp[1]:7 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 15.4: zp[2]:3 [ main::screen#2 main::screen#1 ] 13.93: zp[2]:5 [ main::cols#2 main::cols#1 ] 11: zp[1]:7 [ main::sin#0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 141.4: zp[2]:3 [ main::screen#2 main::screen#1 ] 127.93: zp[2]:5 [ main::cols#2 main::cols#1 ] 101: zp[1]:7 [ main::sin#0 ] Uplift Scope [] Uplifting [main] best 3508 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#2 main::screen#1 ] zp[2]:5 [ main::cols#2 main::cols#1 ] reg byte y [ main::sin#0 ] @@ -432,16 +432,16 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte*) main::cols -(byte*) main::cols#1 cols zp[2]:4 7.333333333333333 -(byte*) main::cols#2 cols zp[2]:4 6.6000000000000005 +(byte*) main::cols#1 cols zp[2]:4 67.33333333333333 +(byte*) main::cols#2 cols zp[2]:4 60.599999999999994 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.4 -(byte*) main::screen#2 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 40.4 +(byte*) main::screen#2 screen zp[2]:2 101.0 (byte) main::sin -(byte) main::sin#0 reg byte y 11.0 +(byte) main::sin#0 reg byte y 101.0 (const byte*) sintab = (byte*) 4096 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-kasm-data.sym b/src/test/ref/inline-kasm-data.sym index f31789e96..e91e0e23e 100644 --- a/src/test/ref/inline-kasm-data.sym +++ b/src/test/ref/inline-kasm-data.sym @@ -5,16 +5,16 @@ (label) main::@1 (label) main::@return (byte*) main::cols -(byte*) main::cols#1 cols zp[2]:4 7.333333333333333 -(byte*) main::cols#2 cols zp[2]:4 6.6000000000000005 +(byte*) main::cols#1 cols zp[2]:4 67.33333333333333 +(byte*) main::cols#2 cols zp[2]:4 60.599999999999994 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.4 -(byte*) main::screen#2 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 40.4 +(byte*) main::screen#2 screen zp[2]:2 101.0 (byte) main::sin -(byte) main::sin#0 reg byte y 11.0 +(byte) main::sin#0 reg byte y 101.0 (const byte*) sintab = (byte*) 4096 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inline-kasm-loop.log b/src/test/ref/inline-kasm-loop.log index d11d4648d..01c2626ee 100644 --- a/src/test/ref/inline-kasm-loop.log +++ b/src/test/ref/inline-kasm-loop.log @@ -132,7 +132,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN+(word) $3e8) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN+(word) $3e8) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-kasm-resource.log b/src/test/ref/inline-kasm-resource.log index 1d090f6b3..f1ce1976c 100644 --- a/src/test/ref/inline-kasm-resource.log +++ b/src/test/ref/inline-kasm-resource.log @@ -168,10 +168,10 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN+(word) $3f8) ← (byte)(word)(const byte*) SPRITE/(byte) $40 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN+(word) $3f8) ← (byte)(word)(const byte*) SPRITE/(byte) $40 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-pointer-0.log b/src/test/ref/inline-pointer-0.log index 16bbe1b90..2e7df5677 100644 --- a/src/test/ref/inline-pointer-0.log +++ b/src/test/ref/inline-pointer-0.log @@ -37,7 +37,7 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Adding pointer type conversion cast (byte*) main::$0 in (byte*~) main::$0 ← (word~) main::$1 Successful SSA optimization PassNAddTypeConversionAssignment -Alias (byte*) main::screen#0 = (byte*~) main::$0 +Alias main::screen#0 = main::$0 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (word~) main::$1 ← (byte) 4 w= (byte) 0 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -139,7 +139,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen#0) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen#0) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-pointer-1.log b/src/test/ref/inline-pointer-1.log index b95943690..f37c133f8 100644 --- a/src/test/ref/inline-pointer-1.log +++ b/src/test/ref/inline-pointer-1.log @@ -88,7 +88,7 @@ Finalized unsigned number type (byte) $18 Successful SSA optimization PassNFinalizeNumberTypeConversions Adding pointer type conversion cast (byte*) puta::$0 in (byte*~) puta::$0 ← (word~) puta::$1 Successful SSA optimization PassNAddTypeConversionAssignment -Alias (byte*) puta::screen#0 = (byte*~) puta::$0 +Alias puta::screen#0 = puta::$0 Successful SSA optimization Pass2AliasElimination Constant (const byte) puta::ph#0 = 4 Constant (const byte) puta::pl#0 = 0 @@ -170,11 +170,11 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) puta((byte) puta::ph , (byte) puta::pl) (byte) puta::ph -(byte) puta::ph#2 2.0 +(byte) puta::ph#2 101.0 (byte) puta::pl -(byte) puta::pl#2 2.0 +(byte) puta::pl#2 101.0 (byte*) puta::screen -(word) puta::screen#0 2.0 +(word) puta::screen#0 101.0 Initial phi equivalence classes [ puta::ph#2 ] @@ -270,13 +270,13 @@ puta: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] *((byte*)(word) puta::screen#0) ← (byte) 'a' [ ] ( main:2::puta:5 [ ] main:2::puta:7 [ ] ) always clobbers reg byte a reg byte y +Statement [11] *((byte*)(word) puta::screen#0) ← (byte) 'a' [ ] ( main:2::puta:5 [ ] { } main:2::puta:7 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ puta::ph#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ puta::pl#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:4 [ puta::screen#0 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [puta] 2: zp[1]:2 [ puta::ph#2 ] 2: zp[1]:3 [ puta::pl#2 ] 2: zp[2]:4 [ puta::screen#0 ] +Uplift Scope [puta] 101: zp[1]:2 [ puta::ph#2 ] 101: zp[1]:3 [ puta::pl#2 ] 101: zp[2]:4 [ puta::screen#0 ] Uplift Scope [main] Uplift Scope [] @@ -393,11 +393,11 @@ FINAL SYMBOL TABLE (void()) puta((byte) puta::ph , (byte) puta::pl) (label) puta::@return (byte) puta::ph -(byte) puta::ph#2 reg byte a 2.0 +(byte) puta::ph#2 reg byte a 101.0 (byte) puta::pl -(byte) puta::pl#2 reg byte x 2.0 +(byte) puta::pl#2 reg byte x 101.0 (byte*) puta::screen -(word) puta::screen#0 screen zp[2]:2 2.0 +(word) puta::screen#0 screen zp[2]:2 101.0 reg byte a [ puta::ph#2 ] reg byte x [ puta::pl#2 ] diff --git a/src/test/ref/inline-pointer-1.sym b/src/test/ref/inline-pointer-1.sym index e4d9e9d64..d5a0b2d8d 100644 --- a/src/test/ref/inline-pointer-1.sym +++ b/src/test/ref/inline-pointer-1.sym @@ -7,11 +7,11 @@ (void()) puta((byte) puta::ph , (byte) puta::pl) (label) puta::@return (byte) puta::ph -(byte) puta::ph#2 reg byte a 2.0 +(byte) puta::ph#2 reg byte a 101.0 (byte) puta::pl -(byte) puta::pl#2 reg byte x 2.0 +(byte) puta::pl#2 reg byte x 101.0 (byte*) puta::screen -(word) puta::screen#0 screen zp[2]:2 2.0 +(word) puta::screen#0 screen zp[2]:2 101.0 reg byte a [ puta::ph#2 ] reg byte x [ puta::pl#2 ] diff --git a/src/test/ref/inline-pointer-2.log b/src/test/ref/inline-pointer-2.log index 940c0ae71..0a796e2a0 100644 --- a/src/test/ref/inline-pointer-2.log +++ b/src/test/ref/inline-pointer-2.log @@ -44,8 +44,8 @@ Simplifying constant integer cast $28 Successful SSA optimization PassNCastSimplification Adding pointer type conversion cast (byte*) main::$0 in (byte*~) main::$0 ← (word~) main::$3 Successful SSA optimization PassNAddTypeConversionAssignment -Alias (word~) main::$1 = (word~) main::$4 -Alias (byte*) main::screen#0 = (byte*~) main::$2 +Alias main::$1 = main::$4 +Alias main::screen#0 = main::$2 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (word~) main::$3 ← (byte) 4 w= (byte) 0 Constant right-side identified [2] (word~) main::$1 ← (byte) 0 w= (byte) $28 @@ -158,7 +158,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen#0) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen#0) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-string-2.log b/src/test/ref/inline-string-2.log index f39c4b7d8..8091d0620 100644 --- a/src/test/ref/inline-string-2.log +++ b/src/test/ref/inline-string-2.log @@ -185,16 +185,16 @@ Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) screen#0 = (byte*) screen#9 -Alias (byte*) screen#1 = (byte*) screen#10 (byte*) screen#11 (byte*) screen#2 -Alias (byte*) screen#21 = (byte*) screen#24 (byte*) screen#22 -Alias (byte*) screen#12 = (byte*) screen#3 (byte*) screen#13 (byte*) screen#4 -Alias (byte*) print::msg#2 = (byte*) print::msg#3 -Alias (byte*) screen#14 = (byte*) screen#19 (byte*) screen#15 (byte*) screen#7 -Alias (byte*) screen#20 = (byte*) screen#5 -Alias (byte*) screen#16 = (byte*) screen#8 +Alias screen#0 = screen#9 +Alias screen#1 = screen#10 screen#11 screen#2 +Alias screen#21 = screen#24 screen#22 +Alias screen#12 = screen#3 screen#13 screen#4 +Alias print::msg#2 = print::msg#3 +Alias screen#14 = screen#19 screen#15 screen#7 +Alias screen#20 = screen#5 +Alias screen#16 = screen#8 Successful SSA optimization Pass2AliasElimination -Alias (byte*) screen#18 = (byte*) screen#21 +Alias screen#18 = screen#21 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen#17 (byte*) screen#20 Identical Phi Values (byte*) screen#0 (byte*) screen#12 @@ -332,18 +332,18 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) print((byte*) print::msg) (byte*) print::msg -(byte*) print::msg#0 2.0 -(byte*) print::msg#1 22.0 -(byte*) print::msg#2 11.5 +(byte*) print::msg#0 551.0 +(byte*) print::msg#1 20002.0 +(byte*) print::msg#2 10251.25 (void()) print_msg((byte) print_msg::idx) (byte) print_msg::idx -(byte) print_msg::idx#2 2.0 +(byte) print_msg::idx#2 101.0 (byte*) print_msg::msg -(byte*) print_msg::msg#3 2.0 +(byte*) print_msg::msg#3 101.0 (byte*) screen -(byte*) screen#14 4.625 -(byte*) screen#18 0.6666666666666666 -(byte*) screen#6 11.0 +(byte*) screen#14 3876.875 +(byte*) screen#18 168.66666666666669 +(byte*) screen#6 10001.0 Initial phi equivalence classes [ print_msg::idx#2 ] @@ -514,18 +514,18 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#3 [ screen#18 print::msg#0 ] ( main:2::print_msg:5 [ screen#18 print::msg#0 ] main:2::print_msg:7 [ screen#18 print::msg#0 ] ) always clobbers reg byte a -Statement [18] if((byte) 0!=*((byte*) print::msg#2)) goto print::@2 [ screen#14 print::msg#2 ] ( main:2::print_msg:5::print:14 [ screen#14 print::msg#2 ] main:2::print_msg:7::print:14 [ screen#14 print::msg#2 ] ) always clobbers reg byte a reg byte y -Statement [20] *((byte*) screen#14) ← *((byte*) print::msg#2) [ screen#14 print::msg#2 ] ( main:2::print_msg:5::print:14 [ screen#14 print::msg#2 ] main:2::print_msg:7::print:14 [ screen#14 print::msg#2 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#3 [ screen#18 print::msg#0 ] ( main:2::print_msg:5 [ screen#18 print::msg#0 ] { { print::msg#0 = print_msg::msg#3 } } main:2::print_msg:7 [ screen#18 print::msg#0 ] { { screen#14 = screen#18 } { print::msg#0 = print_msg::msg#3 } } ) always clobbers reg byte a +Statement [18] if((byte) 0!=*((byte*) print::msg#2)) goto print::@2 [ screen#14 print::msg#2 ] ( main:2::print_msg:5::print:14 [ screen#14 print::msg#2 ] { { print::msg#0 = print_msg::msg#3 } } main:2::print_msg:7::print:14 [ screen#14 print::msg#2 ] { { screen#14 = screen#18 } { print::msg#0 = print_msg::msg#3 } } ) always clobbers reg byte a reg byte y +Statement [20] *((byte*) screen#14) ← *((byte*) print::msg#2) [ screen#14 print::msg#2 ] ( main:2::print_msg:5::print:14 [ screen#14 print::msg#2 ] { { print::msg#0 = print_msg::msg#3 } } main:2::print_msg:7::print:14 [ screen#14 print::msg#2 ] { { screen#14 = screen#18 } { print::msg#0 = print_msg::msg#3 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ print_msg::idx#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ screen#18 screen#14 screen#6 ] : zp[2]:3 , Potential registers zp[2]:5 [ print_msg::msg#3 ] : zp[2]:5 , Potential registers zp[2]:7 [ print::msg#2 print::msg#0 print::msg#1 ] : zp[2]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 35.5: zp[2]:7 [ print::msg#2 print::msg#0 print::msg#1 ] -Uplift Scope [] 16.29: zp[2]:3 [ screen#18 screen#14 screen#6 ] -Uplift Scope [print_msg] 2: zp[1]:2 [ print_msg::idx#2 ] 2: zp[2]:5 [ print_msg::msg#3 ] +Uplift Scope [print] 30,804.25: zp[2]:7 [ print::msg#2 print::msg#0 print::msg#1 ] +Uplift Scope [] 14,046.54: zp[2]:3 [ screen#18 screen#14 screen#6 ] +Uplift Scope [print_msg] 101: zp[1]:2 [ print_msg::idx#2 ] 101: zp[2]:5 [ print_msg::msg#3 ] Uplift Scope [main] Uplifting [print] best 740 combination zp[2]:7 [ print::msg#2 print::msg#0 print::msg#1 ] @@ -733,23 +733,23 @@ FINAL SYMBOL TABLE (label) print::@2 (label) print::@return (byte*) print::msg -(byte*) print::msg#0 msg zp[2]:4 2.0 -(byte*) print::msg#1 msg zp[2]:4 22.0 -(byte*) print::msg#2 msg zp[2]:4 11.5 +(byte*) print::msg#0 msg zp[2]:4 551.0 +(byte*) print::msg#1 msg zp[2]:4 20002.0 +(byte*) print::msg#2 msg zp[2]:4 10251.25 (void()) print_msg((byte) print_msg::idx) (label) print_msg::@1 (label) print_msg::@2 (label) print_msg::@return (byte) print_msg::idx -(byte) print_msg::idx#2 reg byte x 2.0 +(byte) print_msg::idx#2 reg byte x 101.0 (byte*) print_msg::msg (const byte*) print_msg::msg#1 msg_1 = (byte*) "Hello " (const byte*) print_msg::msg#2 msg_2 = (byte*) "World!" -(byte*) print_msg::msg#3 msg zp[2]:4 2.0 +(byte*) print_msg::msg#3 msg zp[2]:4 101.0 (byte*) screen -(byte*) screen#14 screen zp[2]:2 4.625 -(byte*) screen#18 screen zp[2]:2 0.6666666666666666 -(byte*) screen#6 screen zp[2]:2 11.0 +(byte*) screen#14 screen zp[2]:2 3876.875 +(byte*) screen#18 screen zp[2]:2 168.66666666666669 +(byte*) screen#6 screen zp[2]:2 10001.0 reg byte x [ print_msg::idx#2 ] zp[2]:2 [ screen#18 screen#14 screen#6 ] diff --git a/src/test/ref/inline-string-2.sym b/src/test/ref/inline-string-2.sym index 105b4802d..9f52fc960 100644 --- a/src/test/ref/inline-string-2.sym +++ b/src/test/ref/inline-string-2.sym @@ -9,23 +9,23 @@ (label) print::@2 (label) print::@return (byte*) print::msg -(byte*) print::msg#0 msg zp[2]:4 2.0 -(byte*) print::msg#1 msg zp[2]:4 22.0 -(byte*) print::msg#2 msg zp[2]:4 11.5 +(byte*) print::msg#0 msg zp[2]:4 551.0 +(byte*) print::msg#1 msg zp[2]:4 20002.0 +(byte*) print::msg#2 msg zp[2]:4 10251.25 (void()) print_msg((byte) print_msg::idx) (label) print_msg::@1 (label) print_msg::@2 (label) print_msg::@return (byte) print_msg::idx -(byte) print_msg::idx#2 reg byte x 2.0 +(byte) print_msg::idx#2 reg byte x 101.0 (byte*) print_msg::msg (const byte*) print_msg::msg#1 msg_1 = (byte*) "Hello " (const byte*) print_msg::msg#2 msg_2 = (byte*) "World!" -(byte*) print_msg::msg#3 msg zp[2]:4 2.0 +(byte*) print_msg::msg#3 msg zp[2]:4 101.0 (byte*) screen -(byte*) screen#14 screen zp[2]:2 4.625 -(byte*) screen#18 screen zp[2]:2 0.6666666666666666 -(byte*) screen#6 screen zp[2]:2 11.0 +(byte*) screen#14 screen zp[2]:2 3876.875 +(byte*) screen#18 screen zp[2]:2 168.66666666666669 +(byte*) screen#6 screen zp[2]:2 10001.0 reg byte x [ print_msg::idx#2 ] zp[2]:2 [ screen#18 screen#14 screen#6 ] diff --git a/src/test/ref/inline-string-3.log b/src/test/ref/inline-string-3.log index 3de39b3da..0590fbf05 100644 --- a/src/test/ref/inline-string-3.log +++ b/src/test/ref/inline-string-3.log @@ -52,7 +52,7 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Adding pointer type conversion cast (byte*) main::$0 in (byte*~) main::$0 ← (word~) main::$1 Successful SSA optimization PassNAddTypeConversionAssignment -Alias (byte*) main::ptr#0 = (byte*~) main::$0 +Alias main::ptr#0 = main::$0 Successful SSA optimization Pass2AliasElimination Inlining cast (byte*) main::ptr#0 ← (byte*)(word~) main::$1 Successful SSA optimization Pass2InlineCast @@ -98,7 +98,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::ptr -(word) main::ptr#0 2.0 +(word) main::ptr#0 11.0 Initial phi equivalence classes Added variable main::ptr#0 to live range equivalence class [ main::ptr#0 ] @@ -161,14 +161,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::PTR) ← <(const byte*) main::STRING [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::PTR+(byte) 1) ← >(const byte*) main::STRING [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (word) main::ptr#0 ← *((const byte*) main::PTR+(byte) 1) w= *((const byte*) main::PTR) [ main::ptr#0 ] ( main:2 [ main::ptr#0 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN) ← *((byte*)(word) main::ptr#0) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) main::PTR) ← <(const byte*) main::STRING [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::PTR+(byte) 1) ← >(const byte*) main::STRING [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (word) main::ptr#0 ← *((const byte*) main::PTR+(byte) 1) w= *((const byte*) main::PTR) [ main::ptr#0 ] ( main:2 [ main::ptr#0 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN) ← *((byte*)(word) main::ptr#0) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::ptr#0 ] : zp[2]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2: zp[2]:2 [ main::ptr#0 ] +Uplift Scope [main] 11: zp[2]:2 [ main::ptr#0 ] Uplift Scope [] Uplifting [main] best 58 combination zp[2]:2 [ main::ptr#0 ] @@ -255,7 +255,7 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (const byte*) main::STRING[] = (byte*) "camelot"z (byte*) main::ptr -(word) main::ptr#0 ptr zp[2]:2 2.0 +(word) main::ptr#0 ptr zp[2]:2 11.0 zp[2]:2 [ main::ptr#0 ] diff --git a/src/test/ref/inline-string-3.sym b/src/test/ref/inline-string-3.sym index 538935a42..e9f64ce5b 100644 --- a/src/test/ref/inline-string-3.sym +++ b/src/test/ref/inline-string-3.sym @@ -7,6 +7,6 @@ (const byte*) main::SCREEN = (byte*) 1024 (const byte*) main::STRING[] = (byte*) "camelot"z (byte*) main::ptr -(word) main::ptr#0 ptr zp[2]:2 2.0 +(word) main::ptr#0 ptr zp[2]:2 11.0 zp[2]:2 [ main::ptr#0 ] diff --git a/src/test/ref/inline-string-4.log b/src/test/ref/inline-string-4.log index f4d844beb..dbfc5a649 100644 --- a/src/test/ref/inline-string-4.log +++ b/src/test/ref/inline-string-4.log @@ -172,7 +172,7 @@ output: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const dword*) screen) ← (const dword) main::dw [ ] ( main:2::output:5 [ ] ) always clobbers reg byte a +Statement [7] *((const dword*) screen) ← (const dword) main::dw [ ] ( main:2::output:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-string.log b/src/test/ref/inline-string.log index 6eb4a7e2c..4ca3b4699 100644 --- a/src/test/ref/inline-string.log +++ b/src/test/ref/inline-string.log @@ -127,13 +127,13 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) screen#0 = (byte*) screen#8 -Alias (byte*) screen#1 = (byte*) screen#9 -Alias (byte*) screen#10 = (byte*) screen#2 (byte*) screen#11 (byte*) screen#3 -Alias (byte*) print::msg#4 = (byte*) print::msg#5 -Alias (byte*) screen#12 = (byte*) screen#16 (byte*) screen#13 (byte*) screen#6 -Alias (byte*) screen#17 = (byte*) screen#4 -Alias (byte*) screen#14 = (byte*) screen#7 +Alias screen#0 = screen#8 +Alias screen#1 = screen#9 +Alias screen#10 = screen#2 screen#11 screen#3 +Alias print::msg#4 = print::msg#5 +Alias screen#12 = screen#16 screen#13 screen#6 +Alias screen#17 = screen#4 +Alias screen#14 = screen#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen#15 (byte*) screen#17 Identical Phi Values (byte*) screen#0 (byte*) screen#12 @@ -239,13 +239,13 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) print((byte*) print::msg) (byte*) print::msg -(byte*) print::msg#3 22.0 -(byte*) print::msg#4 11.5 -(byte*) print::msg#6 2.0 +(byte*) print::msg#3 2002.0 +(byte*) print::msg#4 1026.25 +(byte*) print::msg#6 101.0 (byte*) screen -(byte*) screen#12 4.875 -(byte*) screen#18 6.0 -(byte*) screen#5 11.0 +(byte*) screen#12 390.75 +(byte*) screen#18 123.0 +(byte*) screen#5 1001.0 Initial phi equivalence classes [ screen#18 screen#12 screen#5 ] @@ -384,14 +384,14 @@ print: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] if((byte) 0!=*((byte*) print::msg#4)) goto print::@2 [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] main:2::print:7 [ screen#12 print::msg#4 ] main:2::print:9 [ screen#12 print::msg#4 ] ) always clobbers reg byte a reg byte y -Statement [15] *((byte*) screen#12) ← *((byte*) print::msg#4) [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] main:2::print:7 [ screen#12 print::msg#4 ] main:2::print:9 [ screen#12 print::msg#4 ] ) always clobbers reg byte a reg byte y +Statement [13] if((byte) 0!=*((byte*) print::msg#4)) goto print::@2 [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] { } main:2::print:7 [ screen#12 print::msg#4 ] { { screen#12 = screen#18 } } main:2::print:9 [ screen#12 print::msg#4 ] { { screen#12 = screen#18 } } ) always clobbers reg byte a reg byte y +Statement [15] *((byte*) screen#12) ← *((byte*) print::msg#4) [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] { } main:2::print:7 [ screen#12 print::msg#4 ] { { screen#12 = screen#18 } } main:2::print:9 [ screen#12 print::msg#4 ] { { screen#12 = screen#18 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ screen#18 screen#12 screen#5 ] : zp[2]:2 , Potential registers zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 35.5: zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] -Uplift Scope [] 21.88: zp[2]:2 [ screen#18 screen#12 screen#5 ] +Uplift Scope [print] 3,129.25: zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] +Uplift Scope [] 1,514.75: zp[2]:2 [ screen#18 screen#12 screen#5 ] Uplift Scope [main] Uplifting [print] best 706 combination zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] @@ -576,13 +576,13 @@ FINAL SYMBOL TABLE (label) print::@2 (label) print::@return (byte*) print::msg -(byte*) print::msg#3 msg zp[2]:4 22.0 -(byte*) print::msg#4 msg zp[2]:4 11.5 -(byte*) print::msg#6 msg zp[2]:4 2.0 +(byte*) print::msg#3 msg zp[2]:4 2002.0 +(byte*) print::msg#4 msg zp[2]:4 1026.25 +(byte*) print::msg#6 msg zp[2]:4 101.0 (byte*) screen -(byte*) screen#12 screen zp[2]:2 4.875 -(byte*) screen#18 screen zp[2]:2 6.0 -(byte*) screen#5 screen zp[2]:2 11.0 +(byte*) screen#12 screen zp[2]:2 390.75 +(byte*) screen#18 screen zp[2]:2 123.0 +(byte*) screen#5 screen zp[2]:2 1001.0 zp[2]:2 [ screen#18 screen#12 screen#5 ] zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] diff --git a/src/test/ref/inline-string.sym b/src/test/ref/inline-string.sym index 13eac56e6..c1eff842f 100644 --- a/src/test/ref/inline-string.sym +++ b/src/test/ref/inline-string.sym @@ -13,13 +13,13 @@ (label) print::@2 (label) print::@return (byte*) print::msg -(byte*) print::msg#3 msg zp[2]:4 22.0 -(byte*) print::msg#4 msg zp[2]:4 11.5 -(byte*) print::msg#6 msg zp[2]:4 2.0 +(byte*) print::msg#3 msg zp[2]:4 2002.0 +(byte*) print::msg#4 msg zp[2]:4 1026.25 +(byte*) print::msg#6 msg zp[2]:4 101.0 (byte*) screen -(byte*) screen#12 screen zp[2]:2 4.875 -(byte*) screen#18 screen zp[2]:2 6.0 -(byte*) screen#5 screen zp[2]:2 11.0 +(byte*) screen#12 screen zp[2]:2 390.75 +(byte*) screen#18 screen zp[2]:2 123.0 +(byte*) screen#5 screen zp[2]:2 1001.0 zp[2]:2 [ screen#18 screen#12 screen#5 ] zp[2]:4 [ print::msg#4 print::msg#6 print::msg#3 ] diff --git a/src/test/ref/inline-word-0.log b/src/test/ref/inline-word-0.log index e1795d9ff..e3ead15d2 100644 --- a/src/test/ref/inline-word-0.log +++ b/src/test/ref/inline-word-0.log @@ -134,7 +134,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-word-1.log b/src/test/ref/inline-word-1.log index a7fe8dcf2..984c09ee0 100644 --- a/src/test/ref/inline-word-1.log +++ b/src/test/ref/inline-word-1.log @@ -134,7 +134,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-word-2.log b/src/test/ref/inline-word-2.log index a7fe8dcf2..984c09ee0 100644 --- a/src/test/ref/inline-word-2.log +++ b/src/test/ref/inline-word-2.log @@ -134,7 +134,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const word*) main::screen) ← (const word) main::w [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/inline-word.log b/src/test/ref/inline-word.log index d3cdaf080..1694e285c 100644 --- a/src/test/ref/inline-word.log +++ b/src/test/ref/inline-word.log @@ -85,9 +85,9 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $100 Finalized unsigned number type (word) $200 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word) main::w#0 = (word~) main::$3 -Alias (byte*) main::sc#0 = (byte*~) main::$0 -Alias (byte) main::h#2 = (byte) main::h#3 +Alias main::w#0 = main::$3 +Alias main::sc#0 = main::$0 +Alias main::h#2 = main::h#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::h#2 (byte) main::h#4 Successful SSA optimization Pass2IdenticalPhiElimination @@ -176,14 +176,14 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::h -(byte) main::h#1 16.5 -(byte) main::h#4 20.499999999999996 +(byte) main::h#1 151.5 +(byte) main::h#4 200.50000000000003 (byte) main::l -(byte) main::l#1 151.5 -(byte) main::l#2 101.0 +(byte) main::l#1 1501.5 +(byte) main::l#2 1001.0 (byte*) main::sc (word) main::w -(word) main::w#0 101.0 +(word) main::w#0 1001.0 Initial phi equivalence classes [ main::h#4 main::h#1 ] @@ -287,20 +287,20 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (word) main::w#0 ← *((const byte*) main::his + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a +Statement [7] (word) main::w#0 ← *((const byte*) main::his + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::h#4 main::h#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::l#2 main::l#1 ] -Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y +Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::h#4 main::h#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::l#2 main::l#1 ] -Statement [7] (word) main::w#0 ← *((const byte*) main::his + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a -Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y +Statement [7] (word) main::w#0 ← *((const byte*) main::his + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::h#4 main::h#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::l#2 main::l#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::w#0 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 252.5: zp[1]:3 [ main::l#2 main::l#1 ] 101: zp[2]:4 [ main::w#0 ] 37: zp[1]:2 [ main::h#4 main::h#1 ] +Uplift Scope [main] 2,502.5: zp[1]:3 [ main::l#2 main::l#1 ] 1,001: zp[2]:4 [ main::w#0 ] 352: zp[1]:2 [ main::h#4 main::h#1 ] Uplift Scope [] Uplifting [main] best 4383 combination reg byte x [ main::l#2 main::l#1 ] zp[2]:4 [ main::w#0 ] zp[1]:2 [ main::h#4 main::h#1 ] @@ -436,15 +436,15 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::h -(byte) main::h#1 h zp[1]:2 16.5 -(byte) main::h#4 h zp[1]:2 20.499999999999996 +(byte) main::h#1 h zp[1]:2 151.5 +(byte) main::h#4 h zp[1]:2 200.50000000000003 (const byte*) main::his[] = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 } (byte) main::l -(byte) main::l#1 reg byte x 151.5 -(byte) main::l#2 reg byte x 101.0 +(byte) main::l#1 reg byte x 1501.5 +(byte) main::l#2 reg byte x 1001.0 (byte*) main::sc (word) main::w -(word) main::w#0 w zp[2]:3 101.0 +(word) main::w#0 w zp[2]:3 1001.0 zp[1]:2 [ main::h#4 main::h#1 ] reg byte x [ main::l#2 main::l#1 ] diff --git a/src/test/ref/inline-word.sym b/src/test/ref/inline-word.sym index b41af5788..def43592e 100644 --- a/src/test/ref/inline-word.sym +++ b/src/test/ref/inline-word.sym @@ -8,15 +8,15 @@ (label) main::@3 (label) main::@return (byte) main::h -(byte) main::h#1 h zp[1]:2 16.5 -(byte) main::h#4 h zp[1]:2 20.499999999999996 +(byte) main::h#1 h zp[1]:2 151.5 +(byte) main::h#4 h zp[1]:2 200.50000000000003 (const byte*) main::his[] = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 } (byte) main::l -(byte) main::l#1 reg byte x 151.5 -(byte) main::l#2 reg byte x 101.0 +(byte) main::l#1 reg byte x 1501.5 +(byte) main::l#2 reg byte x 1001.0 (byte*) main::sc (word) main::w -(word) main::w#0 w zp[2]:3 101.0 +(word) main::w#0 w zp[2]:3 1001.0 zp[1]:2 [ main::h#4 main::h#1 ] reg byte x [ main::l#2 main::l#1 ] diff --git a/src/test/ref/inlinearrayproblem.log b/src/test/ref/inlinearrayproblem.log index 0af1c4d3e..d28eeaa2e 100644 --- a/src/test/ref/inlinearrayproblem.log +++ b/src/test/ref/inlinearrayproblem.log @@ -112,8 +112,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 201.99999999999997 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -189,15 +189,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) main::txt + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) main::txt + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) SCREEN2 + (byte) main::i#2) ← *((const byte*) main::data + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) main::txt + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN2 + (byte) main::i#2) ← *((const byte*) main::data + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN2 + (byte) main::i#2) ← *((const byte*) main::data + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) main::txt + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN2 + (byte) main::i#2) ← *((const byte*) main::data + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] @@ -300,8 +300,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::data[] = { (byte) 1, (byte) 2, (byte) 3 } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte*) main::txt[] = (byte*) "qwe"z reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inlinearrayproblem.sym b/src/test/ref/inlinearrayproblem.sym index 53b7adab7..42c752da9 100644 --- a/src/test/ref/inlinearrayproblem.sym +++ b/src/test/ref/inlinearrayproblem.sym @@ -8,8 +8,8 @@ (label) main::@return (const byte*) main::data[] = { (byte) 1, (byte) 2, (byte) 3 } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte*) main::txt[] = (byte*) "qwe"z reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inmem-const-array.log b/src/test/ref/inmem-const-array.log index 1518ab187..3de55e610 100644 --- a/src/test/ref/inmem-const-array.log +++ b/src/test/ref/inmem-const-array.log @@ -89,9 +89,9 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [7] (bool~) main::$1 ← (byte) main::j#1 != (byte) 3 from [6] (bool~) main::$0 ← (byte) main::j#1 == (byte) 3 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [7] if((byte) main::j#1!=(byte) 3) goto main::@2 Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,$27)) goto main::@1 @@ -180,12 +180,12 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.285714285714286 +(byte) main::i#1 151.5 +(byte) main::i#2 57.714285714285715 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#3 11.0 -(byte) main::j#4 7.333333333333333 +(byte) main::j#1 101.0 +(byte) main::j#3 101.0 +(byte) main::j#4 67.33333333333333 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -293,17 +293,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#3 main::j#4 main::j#1 ] -Statement [7] *((const byte*) main::cols + (byte) main::i#2) ← *((const byte*) main::colseq + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::cols + (byte) main::i#2) ← *((const byte*) main::colseq + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::cols + (byte) main::i#2) ← *((const byte*) main::colseq + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::cols + (byte) main::i#2) ← *((const byte*) main::colseq + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#3 main::j#4 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.33: zp[1]:3 [ main::j#3 main::j#4 main::j#1 ] 22.79: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 269.33: zp[1]:3 [ main::j#3 main::j#4 main::j#1 ] 209.21: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 553 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -442,12 +442,12 @@ FINAL SYMBOL TABLE (const byte*) main::cols = (byte*) 55296 (const byte*) main::colseq[] = { (const byte) WHITE, (const byte) RED, (const byte) GREEN } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.285714285714286 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 57.714285714285715 (byte) main::j -(byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 11.0 -(byte) main::j#4 reg byte y 7.333333333333333 +(byte) main::j#1 reg byte y 101.0 +(byte) main::j#3 reg byte y 101.0 +(byte) main::j#4 reg byte y 67.33333333333333 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inmem-const-array.sym b/src/test/ref/inmem-const-array.sym index 986556e45..34250d11f 100644 --- a/src/test/ref/inmem-const-array.sym +++ b/src/test/ref/inmem-const-array.sym @@ -12,12 +12,12 @@ (const byte*) main::cols = (byte*) 55296 (const byte*) main::colseq[] = { (const byte) WHITE, (const byte) RED, (const byte) GREEN } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.285714285714286 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 57.714285714285715 (byte) main::j -(byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 11.0 -(byte) main::j#4 reg byte y 7.333333333333333 +(byte) main::j#1 reg byte y 101.0 +(byte) main::j#3 reg byte y 101.0 +(byte) main::j#4 reg byte y 67.33333333333333 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inmemarray.log b/src/test/ref/inmemarray.log index 7e397babd..e92460e4a 100644 --- a/src/test/ref/inmemarray.log +++ b/src/test/ref/inmemarray.log @@ -82,9 +82,9 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [6] (bool~) main::$1 ← (byte) main::j#1 != (byte) 8 from [5] (bool~) main::$0 ← (byte) main::j#1 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::j#1!=(byte) 8) goto main::@2 Simple Condition (bool~) main::$2 [10] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1 @@ -172,12 +172,12 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#3 16.5 -(byte) main::j#4 7.333333333333333 +(byte) main::j#1 101.0 +(byte) main::j#3 151.5 +(byte) main::j#4 67.33333333333333 Initial phi equivalence classes [ main::j#3 main::j#4 main::j#1 ] @@ -277,15 +277,15 @@ main: { TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) TXT + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) TXT + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::j#3 main::j#4 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) TXT + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) TXT + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::j#3 main::j#4 main::j#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 34.83: zp[1]:2 [ main::j#3 main::j#4 main::j#1 ] 22: zp[1]:3 [ main::i#2 main::i#1 ] +Uplift Scope [main] 319.83: zp[1]:2 [ main::j#3 main::j#4 main::j#1 ] 202: zp[1]:3 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 483 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -414,12 +414,12 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte) main::j -(byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 16.5 -(byte) main::j#4 reg byte y 7.333333333333333 +(byte) main::j#1 reg byte y 101.0 +(byte) main::j#3 reg byte y 151.5 +(byte) main::j#4 reg byte y 67.33333333333333 reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inmemarray.sym b/src/test/ref/inmemarray.sym index ffbce0f9d..0fd9602cb 100644 --- a/src/test/ref/inmemarray.sym +++ b/src/test/ref/inmemarray.sym @@ -9,12 +9,12 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte) main::j -(byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 16.5 -(byte) main::j#4 reg byte y 7.333333333333333 +(byte) main::j#1 reg byte y 101.0 +(byte) main::j#3 reg byte y 151.5 +(byte) main::j#4 reg byte y 67.33333333333333 reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inmemstring.log b/src/test/ref/inmemstring.log index 68babb3e8..eb6b5ad7c 100644 --- a/src/test/ref/inmemstring.log +++ b/src/test/ref/inmemstring.log @@ -87,9 +87,9 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [6] (bool~) main::$1 ← (byte) main::i#1 != (byte) 8 from [5] (bool~) main::$0 ← (byte) main::i#1 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) main::cursor#2 = (byte*) main::cursor#4 +Alias main::cursor#2 = main::cursor#4 Successful SSA optimization Pass2AliasElimination -Alias (byte*) main::cursor#2 = (byte*) main::cursor#3 +Alias main::cursor#2 = main::cursor#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=(byte) 8) goto main::@2 Simple Condition (bool~) main::$3 [11] if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1 @@ -173,12 +173,12 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::cursor -(byte*) main::cursor#1 16.5 -(byte*) main::cursor#2 5.5 +(byte*) main::cursor#1 151.5 +(byte*) main::cursor#2 50.5 (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#3 16.5 -(byte) main::i#4 7.333333333333333 +(byte) main::i#1 101.0 +(byte) main::i#3 151.5 +(byte) main::i#4 67.33333333333333 Initial phi equivalence classes [ main::i#3 main::i#4 main::i#1 ] @@ -288,17 +288,17 @@ main: { TEXT: .text "camelot " REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::cursor#2) ← *((const byte*) TEXT + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::cursor#2) ← *((const byte*) TEXT + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#3 main::i#4 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#3 main::i#4 main::i#1 ] -Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN+(word) $3e8) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a -Statement [6] *((byte*) main::cursor#2) ← *((const byte*) TEXT + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN+(word) $3e8) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN+(word) $3e8) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::cursor#2) ← *((const byte*) TEXT + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN+(word) $3e8) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#3 main::i#4 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::cursor#2 main::cursor#1 ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 34.83: zp[1]:2 [ main::i#3 main::i#4 main::i#1 ] 22: zp[2]:3 [ main::cursor#2 main::cursor#1 ] +Uplift Scope [main] 319.83: zp[1]:2 [ main::i#3 main::i#4 main::i#1 ] 202: zp[2]:3 [ main::cursor#2 main::cursor#1 ] Uplift Scope [] Uplifting [main] best 828 combination reg byte x [ main::i#3 main::i#4 main::i#1 ] zp[2]:3 [ main::cursor#2 main::cursor#1 ] @@ -443,12 +443,12 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte*) main::cursor -(byte*) main::cursor#1 cursor zp[2]:2 16.5 -(byte*) main::cursor#2 cursor zp[2]:2 5.5 +(byte*) main::cursor#1 cursor zp[2]:2 151.5 +(byte*) main::cursor#2 cursor zp[2]:2 50.5 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#3 reg byte x 16.5 -(byte) main::i#4 reg byte x 7.333333333333333 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#3 reg byte x 151.5 +(byte) main::i#4 reg byte x 67.33333333333333 reg byte x [ main::i#3 main::i#4 main::i#1 ] zp[2]:2 [ main::cursor#2 main::cursor#1 ] diff --git a/src/test/ref/inmemstring.sym b/src/test/ref/inmemstring.sym index 2159c9162..01895689a 100644 --- a/src/test/ref/inmemstring.sym +++ b/src/test/ref/inmemstring.sym @@ -9,12 +9,12 @@ (label) main::@3 (label) main::@return (byte*) main::cursor -(byte*) main::cursor#1 cursor zp[2]:2 16.5 -(byte*) main::cursor#2 cursor zp[2]:2 5.5 +(byte*) main::cursor#1 cursor zp[2]:2 151.5 +(byte*) main::cursor#2 cursor zp[2]:2 50.5 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#3 reg byte x 16.5 -(byte) main::i#4 reg byte x 7.333333333333333 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#3 reg byte x 151.5 +(byte) main::i#4 reg byte x 67.33333333333333 reg byte x [ main::i#3 main::i#4 main::i#1 ] zp[2]:2 [ main::cursor#2 main::cursor#1 ] diff --git a/src/test/ref/inner-increment-problem.log b/src/test/ref/inner-increment-problem.log index cc41fcbe0..b81dca646 100644 --- a/src/test/ref/inner-increment-problem.log +++ b/src/test/ref/inner-increment-problem.log @@ -132,14 +132,14 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$3 11.0 -(byte~) main::$4 22.0 +(byte~) main::$3 101.0 +(byte~) main::$4 202.0 (word) main::i -(word) main::i#1 16.5 -(word) main::i#2 4.4 +(word) main::i#1 151.5 +(word) main::i#2 40.4 (byte*) main::screen -(byte*) main::screen#1 7.333333333333333 -(byte*) main::screen#2 11.0 +(byte*) main::screen#1 67.33333333333333 +(byte*) main::screen#2 101.0 Initial phi equivalence classes [ main::screen#2 main::screen#1 ] @@ -257,21 +257,21 @@ main: { CHAR_COUNTS: .fill 2*$100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$3 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 ] ( main:2 [ main::screen#2 main::i#2 main::$3 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$4 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 main::$4 ] ( main:2 [ main::screen#2 main::i#2 main::$3 main::$4 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte~) main::$3 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 ] ( main:2 [ main::screen#2 main::i#2 main::$3 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$4 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 main::$4 ] ( main:2 [ main::screen#2 main::i#2 main::$3 main::$4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$3 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::$3 ] -Statement [11] if((word) main::i#1!=(word) $3e8) goto main::@1 [ main::screen#1 main::i#1 ] ( main:2 [ main::screen#1 main::i#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$3 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 ] ( main:2 [ main::screen#2 main::i#2 main::$3 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$4 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 main::$4 ] ( main:2 [ main::screen#2 main::i#2 main::$3 main::$4 ] ) always clobbers reg byte a reg byte y -Statement [11] if((word) main::i#1!=(word) $3e8) goto main::@1 [ main::screen#1 main::i#1 ] ( main:2 [ main::screen#1 main::i#1 ] ) always clobbers reg byte a +Statement [11] if((word) main::i#1!=(word) $3e8) goto main::@1 [ main::screen#1 main::i#1 ] ( main:2 [ main::screen#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 ] ( main:2 [ main::screen#2 main::i#2 main::$3 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$4 ← *((byte*) main::screen#2) << (byte) 1 [ main::screen#2 main::i#2 main::$3 main::$4 ] ( main:2 [ main::screen#2 main::i#2 main::$3 main::$4 ] { } ) always clobbers reg byte a reg byte y +Statement [11] if((word) main::i#1!=(word) $3e8) goto main::@1 [ main::screen#1 main::i#1 ] ( main:2 [ main::screen#1 main::i#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::screen#2 main::screen#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::i#2 main::i#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::$3 ] : zp[1]:6 , reg byte x , Potential registers zp[1]:7 [ main::$4 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:7 [ main::$4 ] 20.9: zp[2]:4 [ main::i#2 main::i#1 ] 18.33: zp[2]:2 [ main::screen#2 main::screen#1 ] 11: zp[1]:6 [ main::$3 ] +Uplift Scope [main] 202: zp[1]:7 [ main::$4 ] 191.9: zp[2]:4 [ main::i#2 main::i#1 ] 168.33: zp[2]:2 [ main::screen#2 main::screen#1 ] 101: zp[1]:6 [ main::$3 ] Uplift Scope [] Uplifting [main] best 1213 combination reg byte a [ main::$4 ] zp[2]:4 [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#2 main::screen#1 ] reg byte x [ main::$3 ] @@ -407,16 +407,16 @@ FINAL SYMBOL TABLE (label) @end (const word*) CHAR_COUNTS[(number) $100] = { fill( $100, 0) } (void()) main() -(byte~) main::$3 reg byte x 11.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$3 reg byte x 101.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (word) main::i -(word) main::i#1 i zp[2]:4 16.5 -(word) main::i#2 i zp[2]:4 4.4 +(word) main::i#1 i zp[2]:4 151.5 +(word) main::i#2 i zp[2]:4 40.4 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#2 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#2 screen zp[2]:2 101.0 zp[2]:2 [ main::screen#2 main::screen#1 ] zp[2]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/inner-increment-problem.sym b/src/test/ref/inner-increment-problem.sym index 9319c66b0..63f9733ef 100644 --- a/src/test/ref/inner-increment-problem.sym +++ b/src/test/ref/inner-increment-problem.sym @@ -3,16 +3,16 @@ (label) @end (const word*) CHAR_COUNTS[(number) $100] = { fill( $100, 0) } (void()) main() -(byte~) main::$3 reg byte x 11.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$3 reg byte x 101.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (word) main::i -(word) main::i#1 i zp[2]:4 16.5 -(word) main::i#2 i zp[2]:4 4.4 +(word) main::i#1 i zp[2]:4 151.5 +(word) main::i#2 i zp[2]:4 40.4 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#2 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#2 screen zp[2]:2 101.0 zp[2]:2 [ main::screen#2 main::screen#1 ] zp[2]:4 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/int-conversion.log b/src/test/ref/int-conversion.log index bfc8f43ae..1d5dcd94c 100644 --- a/src/test/ref/int-conversion.log +++ b/src/test/ref/int-conversion.log @@ -837,102 +837,102 @@ Finalized unsigned number type (word) $3e8 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::s#2 = (byte*) main::s#3 -Alias (byte) idx#110 = (byte) idx#115 (byte) idx#113 -Alias (byte) idx#1 = (byte) idx#58 -Alias (byte) idx#2 = (byte) idx#59 (byte) idx#60 (byte) idx#3 -Alias (byte) assertType::t1#0 = (byte~) testUnaryOperator::$0 -Alias (byte) idx#5 = (byte) idx#61 -Alias (byte) assertType::t1#1 = (byte~) testUnaryOperator::$2 -Alias (byte) idx#6 = (byte) idx#62 -Alias (byte) assertType::t1#2 = (byte~) testUnaryOperator::$4 -Alias (byte) idx#63 = (byte) idx#7 -Alias (byte) assertType::t1#3 = (byte~) testUnaryOperator::$6 -Alias (byte) idx#64 = (byte) idx#8 -Alias (byte) assertType::t1#4 = (byte~) testUnaryOperator::$8 -Alias (byte) idx#65 = (byte) idx#9 -Alias (byte) assertType::t1#5 = (byte~) testUnaryOperator::$10 -Alias (byte) idx#10 = (byte) idx#66 (byte) idx#67 (byte) idx#11 -Alias (byte) assertType::t1#6 = (byte~) testBinaryOperator::$0 -Alias (byte) idx#13 = (byte) idx#68 -Alias (byte) assertType::t1#7 = (byte~) testBinaryOperator::$2 -Alias (byte) idx#14 = (byte) idx#69 -Alias (byte) assertType::t1#8 = (byte~) testBinaryOperator::$4 -Alias (byte) idx#15 = (byte) idx#70 -Alias (byte) assertType::t1#9 = (byte~) testBinaryOperator::$6 -Alias (byte) idx#16 = (byte) idx#71 -Alias (byte) assertType::t1#10 = (byte~) testBinaryOperator::$8 -Alias (byte) idx#17 = (byte) idx#72 -Alias (byte) assertType::t1#11 = (byte~) testBinaryOperator::$10 -Alias (byte) idx#18 = (byte) idx#73 -Alias (byte) assertType::t1#12 = (byte~) testBinaryOperator::$12 -Alias (byte) idx#20 = (byte) idx#74 -Alias (byte) assertType::t1#13 = (byte~) testBinaryOperator::$14 -Alias (byte) idx#21 = (byte) idx#75 -Alias (byte) assertType::t1#14 = (byte~) testBinaryOperator::$16 -Alias (byte) idx#22 = (byte) idx#76 -Alias (byte) assertType::t1#15 = (byte~) testBinaryOperator::$18 -Alias (byte) idx#23 = (byte) idx#77 -Alias (byte) assertType::t1#16 = (byte~) testBinaryOperator::$20 -Alias (byte) idx#24 = (byte) idx#78 -Alias (byte) assertType::t1#17 = (byte~) testBinaryOperator::$22 -Alias (byte) idx#25 = (byte) idx#79 -Alias (byte) assertType::t1#18 = (byte~) testBinaryOperator::$24 -Alias (byte) idx#27 = (byte) idx#80 -Alias (byte) assertType::t1#19 = (byte~) testBinaryOperator::$26 -Alias (byte) idx#28 = (byte) idx#81 -Alias (byte) assertType::t1#20 = (byte~) testBinaryOperator::$28 -Alias (byte) idx#29 = (byte) idx#82 -Alias (byte) assertType::t1#21 = (byte~) testBinaryOperator::$30 -Alias (byte) idx#30 = (byte) idx#83 -Alias (byte) assertType::t1#22 = (byte~) testBinaryOperator::$32 -Alias (byte) idx#31 = (byte) idx#84 -Alias (byte) assertType::t1#23 = (byte~) testBinaryOperator::$34 -Alias (byte) idx#32 = (byte) idx#85 -Alias (byte) assertType::t1#24 = (byte~) testBinaryOperator::$36 -Alias (byte) idx#34 = (byte) idx#86 -Alias (byte) assertType::t1#25 = (byte~) testBinaryOperator::$38 -Alias (byte) idx#35 = (byte) idx#87 -Alias (byte) assertType::t1#26 = (byte~) testBinaryOperator::$40 -Alias (byte) idx#36 = (byte) idx#88 -Alias (byte) assertType::t1#27 = (byte~) testBinaryOperator::$42 -Alias (byte) idx#37 = (byte) idx#89 -Alias (byte) assertType::t1#28 = (byte~) testBinaryOperator::$44 -Alias (byte) idx#38 = (byte) idx#90 -Alias (byte) assertType::t1#29 = (byte~) testBinaryOperator::$46 -Alias (byte) idx#39 = (byte) idx#91 -Alias (byte) assertType::t1#30 = (byte~) testBinaryOperator::$48 -Alias (byte) idx#41 = (byte) idx#92 -Alias (byte) assertType::t1#31 = (byte~) testBinaryOperator::$50 -Alias (byte) idx#42 = (byte) idx#93 -Alias (byte) assertType::t1#32 = (byte~) testBinaryOperator::$52 -Alias (byte) idx#43 = (byte) idx#94 -Alias (byte) assertType::t1#33 = (byte~) testBinaryOperator::$54 -Alias (byte) idx#44 = (byte) idx#95 -Alias (byte) assertType::t1#34 = (byte~) testBinaryOperator::$56 -Alias (byte) idx#45 = (byte) idx#96 -Alias (byte) assertType::t1#35 = (byte~) testBinaryOperator::$58 -Alias (byte) idx#46 = (byte) idx#97 -Alias (byte) assertType::t1#36 = (byte~) testBinaryOperator::$60 -Alias (byte) idx#48 = (byte) idx#98 -Alias (byte) assertType::t1#37 = (byte~) testBinaryOperator::$62 -Alias (byte) idx#49 = (byte) idx#99 -Alias (byte) assertType::t1#38 = (byte~) testBinaryOperator::$64 -Alias (byte) idx#100 = (byte) idx#50 -Alias (byte) assertType::t1#39 = (byte~) testBinaryOperator::$66 -Alias (byte) idx#101 = (byte) idx#51 -Alias (byte) assertType::t1#40 = (byte~) testBinaryOperator::$68 -Alias (byte) idx#102 = (byte) idx#52 -Alias (byte) assertType::t1#41 = (byte~) testBinaryOperator::$70 -Alias (byte) idx#103 = (byte) idx#53 (byte) idx#104 (byte) idx#54 -Alias (byte) idx#105 = (byte) idx#111 (byte) idx#106 -Alias (byte) assertType::t1#42 = (byte) assertType::t1#44 (byte) assertType::t1#45 -Alias (byte) idx#108 = (byte) idx#55 (byte) idx#56 -Alias (byte) idx#0 = (byte) idx#112 -Alias (byte) idx#109 = (byte) idx#57 +Alias main::s#2 = main::s#3 +Alias idx#110 = idx#115 idx#113 +Alias idx#1 = idx#58 +Alias idx#2 = idx#59 idx#60 idx#3 +Alias assertType::t1#0 = testUnaryOperator::$0 +Alias idx#5 = idx#61 +Alias assertType::t1#1 = testUnaryOperator::$2 +Alias idx#6 = idx#62 +Alias assertType::t1#2 = testUnaryOperator::$4 +Alias idx#63 = idx#7 +Alias assertType::t1#3 = testUnaryOperator::$6 +Alias idx#64 = idx#8 +Alias assertType::t1#4 = testUnaryOperator::$8 +Alias idx#65 = idx#9 +Alias assertType::t1#5 = testUnaryOperator::$10 +Alias idx#10 = idx#66 idx#67 idx#11 +Alias assertType::t1#6 = testBinaryOperator::$0 +Alias idx#13 = idx#68 +Alias assertType::t1#7 = testBinaryOperator::$2 +Alias idx#14 = idx#69 +Alias assertType::t1#8 = testBinaryOperator::$4 +Alias idx#15 = idx#70 +Alias assertType::t1#9 = testBinaryOperator::$6 +Alias idx#16 = idx#71 +Alias assertType::t1#10 = testBinaryOperator::$8 +Alias idx#17 = idx#72 +Alias assertType::t1#11 = testBinaryOperator::$10 +Alias idx#18 = idx#73 +Alias assertType::t1#12 = testBinaryOperator::$12 +Alias idx#20 = idx#74 +Alias assertType::t1#13 = testBinaryOperator::$14 +Alias idx#21 = idx#75 +Alias assertType::t1#14 = testBinaryOperator::$16 +Alias idx#22 = idx#76 +Alias assertType::t1#15 = testBinaryOperator::$18 +Alias idx#23 = idx#77 +Alias assertType::t1#16 = testBinaryOperator::$20 +Alias idx#24 = idx#78 +Alias assertType::t1#17 = testBinaryOperator::$22 +Alias idx#25 = idx#79 +Alias assertType::t1#18 = testBinaryOperator::$24 +Alias idx#27 = idx#80 +Alias assertType::t1#19 = testBinaryOperator::$26 +Alias idx#28 = idx#81 +Alias assertType::t1#20 = testBinaryOperator::$28 +Alias idx#29 = idx#82 +Alias assertType::t1#21 = testBinaryOperator::$30 +Alias idx#30 = idx#83 +Alias assertType::t1#22 = testBinaryOperator::$32 +Alias idx#31 = idx#84 +Alias assertType::t1#23 = testBinaryOperator::$34 +Alias idx#32 = idx#85 +Alias assertType::t1#24 = testBinaryOperator::$36 +Alias idx#34 = idx#86 +Alias assertType::t1#25 = testBinaryOperator::$38 +Alias idx#35 = idx#87 +Alias assertType::t1#26 = testBinaryOperator::$40 +Alias idx#36 = idx#88 +Alias assertType::t1#27 = testBinaryOperator::$42 +Alias idx#37 = idx#89 +Alias assertType::t1#28 = testBinaryOperator::$44 +Alias idx#38 = idx#90 +Alias assertType::t1#29 = testBinaryOperator::$46 +Alias idx#39 = idx#91 +Alias assertType::t1#30 = testBinaryOperator::$48 +Alias idx#41 = idx#92 +Alias assertType::t1#31 = testBinaryOperator::$50 +Alias idx#42 = idx#93 +Alias assertType::t1#32 = testBinaryOperator::$52 +Alias idx#43 = idx#94 +Alias assertType::t1#33 = testBinaryOperator::$54 +Alias idx#44 = idx#95 +Alias assertType::t1#34 = testBinaryOperator::$56 +Alias idx#45 = idx#96 +Alias assertType::t1#35 = testBinaryOperator::$58 +Alias idx#46 = idx#97 +Alias assertType::t1#36 = testBinaryOperator::$60 +Alias idx#48 = idx#98 +Alias assertType::t1#37 = testBinaryOperator::$62 +Alias idx#49 = idx#99 +Alias assertType::t1#38 = testBinaryOperator::$64 +Alias idx#100 = idx#50 +Alias assertType::t1#39 = testBinaryOperator::$66 +Alias idx#101 = idx#51 +Alias assertType::t1#40 = testBinaryOperator::$68 +Alias idx#102 = idx#52 +Alias assertType::t1#41 = testBinaryOperator::$70 +Alias idx#103 = idx#53 idx#104 idx#54 +Alias idx#105 = idx#111 idx#106 +Alias assertType::t1#42 = assertType::t1#44 assertType::t1#45 +Alias idx#108 = idx#55 idx#56 +Alias idx#0 = idx#112 +Alias idx#109 = idx#57 Successful SSA optimization Pass2AliasElimination -Alias (byte) assertType::t1#42 = (byte) assertType::t1#43 -Alias (byte) idx#105 = (byte) idx#107 +Alias assertType::t1#42 = assertType::t1#43 +Alias idx#105 = idx#107 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#114 (byte) idx#0 Identical Phi Values (byte) idx#110 (byte) idx#114 @@ -1604,20 +1604,20 @@ testUnaryOperator::@return: scope:[testUnaryOperator] from testUnaryOperator::@ VARIABLE REGISTER WEIGHTS (void()) assertType((byte) assertType::t1 , (byte) assertType::t2) (byte) assertType::t1 -(byte) assertType::t1#42 1.0 +(byte) assertType::t1#42 500.5 (byte) assertType::t2 -(byte) assertType::t2#42 2.0 +(byte) assertType::t2#42 1001.0 (byte) idx -(byte) idx#105 17.200000000000003 -(byte) idx#108 1.0526315789473677 -(byte) idx#19 4.0 -(byte) idx#26 4.0 -(byte) idx#40 4.0 -(byte) idx#47 4.0 +(byte) idx#105 1588.6000000000006 +(byte) idx#108 65.00000000000003 +(byte) idx#19 202.0 +(byte) idx#26 202.0 +(byte) idx#40 202.0 +(byte) idx#47 202.0 (void()) main() (byte*) main::s -(byte*) main::s#1 22.0 -(byte*) main::s#2 14.666666666666666 +(byte*) main::s#1 202.0 +(byte*) main::s#2 134.66666666666666 (void()) testBinaryOperator() (void()) testUnaryOperator() @@ -2468,33 +2468,33 @@ testUnaryOperator: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a reg byte y -Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a +Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] { } ) always clobbers reg byte a reg byte y +Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ assertType::t1#42 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] -Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] ) always clobbers reg byte a -Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a -Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a reg byte y -Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] ) always clobbers reg byte a -Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a +Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a +Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a +Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] { } ) always clobbers reg byte a reg byte y +Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a +Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a +Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#19 } } main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#26 } } main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] { } main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#40 } } main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#47 } } main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] { } main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] { { idx#105 = idx#108 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::s#2 main::s#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ assertType::t1#42 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ assertType::t2#42 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] : zp[1]:6 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 36.67: zp[2]:2 [ main::s#2 main::s#1 ] -Uplift Scope [] 34.25: zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] -Uplift Scope [assertType] 2: zp[1]:5 [ assertType::t2#42 ] 1: zp[1]:4 [ assertType::t1#42 ] +Uplift Scope [] 2,461.6: zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] +Uplift Scope [assertType] 1,001: zp[1]:5 [ assertType::t2#42 ] 500.5: zp[1]:4 [ assertType::t1#42 ] +Uplift Scope [main] 336.67: zp[2]:2 [ main::s#2 main::s#1 ] Uplift Scope [testUnaryOperator] Uplift Scope [testBinaryOperator] -Uplifting [main] best 1506 combination zp[2]:2 [ main::s#2 main::s#1 ] Uplifting [] best 1473 combination reg byte x [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] Uplifting [assertType] best 1345 combination zp[1]:5 [ assertType::t2#42 ] reg byte y [ assertType::t1#42 ] +Uplifting [main] best 1345 combination zp[2]:2 [ main::s#2 main::s#1 ] Uplifting [testUnaryOperator] best 1345 combination Uplifting [testBinaryOperator] best 1345 combination Attempting to uplift remaining variables inzp[1]:5 [ assertType::t2#42 ] @@ -3540,16 +3540,16 @@ FINAL SYMBOL TABLE (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#42 reg byte y 1.0 +(byte) assertType::t1#42 reg byte y 500.5 (byte) assertType::t2 -(byte) assertType::t2#42 t2 zp[1]:4 2.0 +(byte) assertType::t2#42 t2 zp[1]:4 1001.0 (byte) idx -(byte) idx#105 reg byte x 17.200000000000003 -(byte) idx#108 reg byte x 1.0526315789473677 -(byte) idx#19 reg byte x 4.0 -(byte) idx#26 reg byte x 4.0 -(byte) idx#40 reg byte x 4.0 -(byte) idx#47 reg byte x 4.0 +(byte) idx#105 reg byte x 1588.6000000000006 +(byte) idx#108 reg byte x 65.00000000000003 +(byte) idx#19 reg byte x 202.0 +(byte) idx#26 reg byte x 202.0 +(byte) idx#40 reg byte x 202.0 +(byte) idx#47 reg byte x 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -3557,8 +3557,8 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte*) main::s -(byte*) main::s#1 s zp[2]:2 22.0 -(byte*) main::s#2 s zp[2]:2 14.666666666666666 +(byte*) main::s#1 s zp[2]:2 202.0 +(byte*) main::s#2 s zp[2]:2 134.66666666666666 (void()) testBinaryOperator() (label) testBinaryOperator::@1 (label) testBinaryOperator::@10 diff --git a/src/test/ref/int-conversion.sym b/src/test/ref/int-conversion.sym index aa87f74d7..a87093cec 100644 --- a/src/test/ref/int-conversion.sym +++ b/src/test/ref/int-conversion.sym @@ -17,16 +17,16 @@ (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#42 reg byte y 1.0 +(byte) assertType::t1#42 reg byte y 500.5 (byte) assertType::t2 -(byte) assertType::t2#42 t2 zp[1]:4 2.0 +(byte) assertType::t2#42 t2 zp[1]:4 1001.0 (byte) idx -(byte) idx#105 reg byte x 17.200000000000003 -(byte) idx#108 reg byte x 1.0526315789473677 -(byte) idx#19 reg byte x 4.0 -(byte) idx#26 reg byte x 4.0 -(byte) idx#40 reg byte x 4.0 -(byte) idx#47 reg byte x 4.0 +(byte) idx#105 reg byte x 1588.6000000000006 +(byte) idx#108 reg byte x 65.00000000000003 +(byte) idx#19 reg byte x 202.0 +(byte) idx#26 reg byte x 202.0 +(byte) idx#40 reg byte x 202.0 +(byte) idx#47 reg byte x 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -34,8 +34,8 @@ (label) main::@4 (label) main::@return (byte*) main::s -(byte*) main::s#1 s zp[2]:2 22.0 -(byte*) main::s#2 s zp[2]:2 14.666666666666666 +(byte*) main::s#1 s zp[2]:2 202.0 +(byte*) main::s#2 s zp[2]:2 134.66666666666666 (void()) testBinaryOperator() (label) testBinaryOperator::@1 (label) testBinaryOperator::@10 diff --git a/src/test/ref/int-literals.asm b/src/test/ref/int-literals.asm index 8e71ba4aa..fdddb97b4 100644 --- a/src/test/ref/int-literals.asm +++ b/src/test/ref/int-literals.asm @@ -12,6 +12,7 @@ .const TYPEID_SIGNED_WORD = 4 .const TYPEID_DWORD = 5 .const TYPEID_SIGNED_DWORD = 6 + .label idx = 4 main: { .label s = 2 lda #@1] @@ -1252,13 +1253,13 @@ testSimpleTypes: { // Simple types // [43] phi from testSimpleTypes to assertType [phi:testSimpleTypes->assertType] assertType_from_testSimpleTypes: - // [43] phi (byte) idx#41 = (byte) 0 [phi:testSimpleTypes->assertType#0] -- vbuxx=vbuc1 - ldx #0 - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) idx#41 = (byte) 0 [phi:testSimpleTypes->assertType#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_BYTE jsr assertType // [14] phi from testSimpleTypes to testSimpleTypes::@1 [phi:testSimpleTypes->testSimpleTypes::@1] __b1_from_testSimpleTypes: @@ -1269,11 +1270,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@1 to assertType [phi:testSimpleTypes::@1->assertType] assertType_from___b1: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@1->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_BYTE jsr assertType // [16] phi from testSimpleTypes::@1 to testSimpleTypes::@2 [phi:testSimpleTypes::@1->testSimpleTypes::@2] __b2_from___b1: @@ -1284,11 +1284,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@2 to assertType [phi:testSimpleTypes::@2->assertType] assertType_from___b2: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@2->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_BYTE jsr assertType // [18] phi from testSimpleTypes::@2 to testSimpleTypes::@3 [phi:testSimpleTypes::@2->testSimpleTypes::@3] __b3_from___b2: @@ -1299,11 +1298,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@3 to assertType [phi:testSimpleTypes::@3->assertType] assertType_from___b3: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@3->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_BYTE jsr assertType // [20] phi from testSimpleTypes::@3 to testSimpleTypes::@4 [phi:testSimpleTypes::@3->testSimpleTypes::@4] __b4_from___b3: @@ -1314,11 +1312,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@4 to assertType [phi:testSimpleTypes::@4->assertType] assertType_from___b4: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@4->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [22] phi from testSimpleTypes::@4 to testSimpleTypes::@5 [phi:testSimpleTypes::@4->testSimpleTypes::@5] __b5_from___b4: @@ -1329,11 +1326,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@5 to assertType [phi:testSimpleTypes::@5->assertType] assertType_from___b5: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@5->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [24] phi from testSimpleTypes::@5 to testSimpleTypes::@6 [phi:testSimpleTypes::@5->testSimpleTypes::@6] __b6_from___b5: @@ -1344,11 +1340,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@6 to assertType [phi:testSimpleTypes::@6->assertType] assertType_from___b6: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@6->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [26] phi from testSimpleTypes::@6 to testSimpleTypes::@7 [phi:testSimpleTypes::@6->testSimpleTypes::@7] __b7_from___b6: @@ -1359,11 +1354,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@7 to assertType [phi:testSimpleTypes::@7->assertType] assertType_from___b7: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@7->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [28] phi from testSimpleTypes::@7 to testSimpleTypes::@8 [phi:testSimpleTypes::@7->testSimpleTypes::@8] __b8_from___b7: @@ -1374,11 +1368,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@8 to assertType [phi:testSimpleTypes::@8->assertType] assertType_from___b8: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@8->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [30] phi from testSimpleTypes::@8 to testSimpleTypes::@9 [phi:testSimpleTypes::@8->testSimpleTypes::@9] __b9_from___b8: @@ -1389,11 +1382,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@9 to assertType [phi:testSimpleTypes::@9->assertType] assertType_from___b9: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@9->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [32] phi from testSimpleTypes::@9 to testSimpleTypes::@10 [phi:testSimpleTypes::@9->testSimpleTypes::@10] __b10_from___b9: @@ -1404,11 +1396,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@10 to assertType [phi:testSimpleTypes::@10->assertType] assertType_from___b10: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@10->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_DWORD jsr assertType // [34] phi from testSimpleTypes::@10 to testSimpleTypes::@11 [phi:testSimpleTypes::@10->testSimpleTypes::@11] __b11_from___b10: @@ -1419,11 +1410,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@11 to assertType [phi:testSimpleTypes::@11->assertType] assertType_from___b11: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@11->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_DWORD jsr assertType // [36] phi from testSimpleTypes::@11 to testSimpleTypes::@12 [phi:testSimpleTypes::@11->testSimpleTypes::@12] __b12_from___b11: @@ -1434,11 +1424,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@12 to assertType [phi:testSimpleTypes::@12->assertType] assertType_from___b12: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@12->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType // [38] phi from testSimpleTypes::@12 to testSimpleTypes::@13 [phi:testSimpleTypes::@12->testSimpleTypes::@13] __b13_from___b12: @@ -1449,11 +1438,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@13 to assertType [phi:testSimpleTypes::@13->assertType] assertType_from___b13: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@13->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType // [40] phi from testSimpleTypes::@13 to testSimpleTypes::@14 [phi:testSimpleTypes::@13->testSimpleTypes::@14] __b14_from___b13: @@ -1464,11 +1452,10 @@ testSimpleTypes: { // [43] phi from testSimpleTypes::@14 to assertType [phi:testSimpleTypes::@14->assertType] assertType_from___b14: // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@14->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#2] -- vbuyy=vbuc1 + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#1] -- vbuyy=vbuc1 ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType jmp __breturn // testSimpleTypes::@return @@ -1480,27 +1467,28 @@ testSimpleTypes: { // Check that the two passed type IDs are equal. // Shows a letter symbolizing t1 // If they are equal the letter is green - if not it is red. -// assertType(byte register(Y) t1, byte zp(4) t2) +// assertType(byte register(X) t1, byte register(Y) t2) assertType: { - .label t2 = 4 - // [44] if((byte) assertType::t1#15==(byte) assertType::t2#15) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 - tya - cmp.z t2 + // [44] if((byte) assertType::t1#15==(byte) assertType::t2#15) goto assertType::@1 -- vbuxx_eq_vbuyy_then_la1 + sty.z $ff + cpx.z $ff beq __b1 jmp __b3 // assertType::@3 __b3: - // [45] *((const byte*) COLS + (byte) idx#41) ← (const byte) RED -- pbuc1_derefidx_vbuxx=vbuc2 + // [45] *((const byte*) COLS + (byte) idx#41) ← (const byte) RED -- pbuc1_derefidx_vbuz1=vbuc2 lda #RED - sta COLS,x + ldy.z idx + sta COLS,y jmp __b2 // assertType::@2 __b2: - // [46] *((const byte*) SCREEN + (byte) idx#41) ← (byte) assertType::t1#15 -- pbuc1_derefidx_vbuxx=vbuyy - tya - sta SCREEN,x - // [47] (byte) idx#20 ← ++ (byte) idx#41 -- vbuxx=_inc_vbuxx - inx + // [46] *((const byte*) SCREEN + (byte) idx#41) ← (byte) assertType::t1#15 -- pbuc1_derefidx_vbuz1=vbuxx + ldy.z idx + txa + sta SCREEN,y + // [47] (byte) idx#20 ← ++ (byte) idx#41 -- vbuz1=_inc_vbuz1 + inc.z idx jmp __breturn // assertType::@return __breturn: @@ -1508,9 +1496,10 @@ assertType: { rts // assertType::@1 __b1: - // [49] *((const byte*) COLS + (byte) idx#41) ← (const byte) GREEN -- pbuc1_derefidx_vbuxx=vbuc2 + // [49] *((const byte*) COLS + (byte) idx#41) ← (const byte) GREEN -- pbuc1_derefidx_vbuz1=vbuc2 lda #GREEN - sta COLS,x + ldy.z idx + sta COLS,y jmp __b2 } // File Data @@ -1540,21 +1529,6 @@ Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldy #TYPEID_BYTE with TAY -Replacing instruction ldy #TYPEID_BYTE with TAY -Replacing instruction ldy #TYPEID_SIGNED_BYTE with TAY -Replacing instruction ldy #TYPEID_SIGNED_BYTE with TAY -Replacing instruction ldy #TYPEID_WORD with TAY -Replacing instruction ldy #TYPEID_WORD with TAY -Replacing instruction ldy #TYPEID_WORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY -Replacing instruction ldy #TYPEID_DWORD with TAY -Replacing instruction ldy #TYPEID_DWORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY -Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY Removing instruction __b1_from___bbegin: Removing instruction __b1: Removing instruction main_from___b1: @@ -1640,20 +1614,20 @@ FINAL SYMBOL TABLE (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#15 reg byte y 1.0 +(byte) assertType::t1#15 reg byte x 500.5 (byte) assertType::t2 -(byte) assertType::t2#15 t2 zp[1]:4 2.0 +(byte) assertType::t2#15 reg byte y 1001.0 (byte) idx -(byte) idx#20 reg byte x 0.9999999999999999 -(byte) idx#41 reg byte x 7.200000000000002 +(byte) idx#20 idx zp[1]:4 80.5 +(byte) idx#41 idx zp[1]:4 1083.6 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte*) main::s -(byte*) main::s#1 s zp[2]:2 22.0 -(byte*) main::s#2 s zp[2]:2 14.666666666666666 +(byte*) main::s#1 s zp[2]:2 202.0 +(byte*) main::s#2 s zp[2]:2 134.66666666666666 (void()) testSimpleTypes() (label) testSimpleTypes::@1 (label) testSimpleTypes::@10 @@ -1672,13 +1646,13 @@ FINAL SYMBOL TABLE (label) testSimpleTypes::@return zp[2]:2 [ main::s#2 main::s#1 ] -reg byte y [ assertType::t1#15 ] -zp[1]:4 [ assertType::t2#15 ] -reg byte x [ idx#41 idx#20 ] +reg byte x [ assertType::t1#15 ] +reg byte y [ assertType::t2#15 ] +zp[1]:4 [ idx#41 idx#20 ] FINAL ASSEMBLER -Score: 784 +Score: 755 // File Comments // Tests different integer literal types @@ -1697,6 +1671,7 @@ Score: 784 .const TYPEID_SIGNED_WORD = 4 .const TYPEID_DWORD = 5 .const TYPEID_SIGNED_DWORD = 6 + .label idx = 4 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -1758,13 +1733,13 @@ testSimpleTypes: { // [13] call assertType // Simple types // [43] phi from testSimpleTypes to assertType [phi:testSimpleTypes->assertType] - // [43] phi (byte) idx#41 = (byte) 0 [phi:testSimpleTypes->assertType#0] -- vbuxx=vbuc1 - ldx #0 - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) idx#41 = (byte) 0 [phi:testSimpleTypes->assertType#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_BYTE jsr assertType // [14] phi from testSimpleTypes to testSimpleTypes::@1 [phi:testSimpleTypes->testSimpleTypes::@1] // testSimpleTypes::@1 @@ -1772,11 +1747,10 @@ testSimpleTypes: { // [15] call assertType // [43] phi from testSimpleTypes::@1 to assertType [phi:testSimpleTypes::@1->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@1->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_BYTE [phi:testSimpleTypes::@1->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_BYTE jsr assertType // [16] phi from testSimpleTypes::@1 to testSimpleTypes::@2 [phi:testSimpleTypes::@1->testSimpleTypes::@2] // testSimpleTypes::@2 @@ -1784,11 +1758,10 @@ testSimpleTypes: { // [17] call assertType // [43] phi from testSimpleTypes::@2 to assertType [phi:testSimpleTypes::@2->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@2->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@2->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_BYTE jsr assertType // [18] phi from testSimpleTypes::@2 to testSimpleTypes::@3 [phi:testSimpleTypes::@2->testSimpleTypes::@3] // testSimpleTypes::@3 @@ -1796,11 +1769,10 @@ testSimpleTypes: { // [19] call assertType // [43] phi from testSimpleTypes::@3 to assertType [phi:testSimpleTypes::@3->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@3->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_BYTE - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_BYTE + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_BYTE [phi:testSimpleTypes::@3->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_BYTE jsr assertType // [20] phi from testSimpleTypes::@3 to testSimpleTypes::@4 [phi:testSimpleTypes::@3->testSimpleTypes::@4] // testSimpleTypes::@4 @@ -1808,11 +1780,10 @@ testSimpleTypes: { // [21] call assertType // [43] phi from testSimpleTypes::@4 to assertType [phi:testSimpleTypes::@4->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@4->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@4->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [22] phi from testSimpleTypes::@4 to testSimpleTypes::@5 [phi:testSimpleTypes::@4->testSimpleTypes::@5] // testSimpleTypes::@5 @@ -1820,11 +1791,10 @@ testSimpleTypes: { // [23] call assertType // [43] phi from testSimpleTypes::@5 to assertType [phi:testSimpleTypes::@5->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@5->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@5->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [24] phi from testSimpleTypes::@5 to testSimpleTypes::@6 [phi:testSimpleTypes::@5->testSimpleTypes::@6] // testSimpleTypes::@6 @@ -1832,11 +1802,10 @@ testSimpleTypes: { // [25] call assertType // [43] phi from testSimpleTypes::@6 to assertType [phi:testSimpleTypes::@6->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@6->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_WORD [phi:testSimpleTypes::@6->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_WORD jsr assertType // [26] phi from testSimpleTypes::@6 to testSimpleTypes::@7 [phi:testSimpleTypes::@6->testSimpleTypes::@7] // testSimpleTypes::@7 @@ -1844,11 +1813,10 @@ testSimpleTypes: { // [27] call assertType // [43] phi from testSimpleTypes::@7 to assertType [phi:testSimpleTypes::@7->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@7->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@7->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [28] phi from testSimpleTypes::@7 to testSimpleTypes::@8 [phi:testSimpleTypes::@7->testSimpleTypes::@8] // testSimpleTypes::@8 @@ -1856,11 +1824,10 @@ testSimpleTypes: { // [29] call assertType // [43] phi from testSimpleTypes::@8 to assertType [phi:testSimpleTypes::@8->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@8->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@8->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [30] phi from testSimpleTypes::@8 to testSimpleTypes::@9 [phi:testSimpleTypes::@8->testSimpleTypes::@9] // testSimpleTypes::@9 @@ -1868,11 +1835,10 @@ testSimpleTypes: { // [31] call assertType // [43] phi from testSimpleTypes::@9 to assertType [phi:testSimpleTypes::@9->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@9->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_WORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_WORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD [phi:testSimpleTypes::@9->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_WORD jsr assertType // [32] phi from testSimpleTypes::@9 to testSimpleTypes::@10 [phi:testSimpleTypes::@9->testSimpleTypes::@10] // testSimpleTypes::@10 @@ -1880,11 +1846,10 @@ testSimpleTypes: { // [33] call assertType // [43] phi from testSimpleTypes::@10 to assertType [phi:testSimpleTypes::@10->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@10->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@10->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_DWORD jsr assertType // [34] phi from testSimpleTypes::@10 to testSimpleTypes::@11 [phi:testSimpleTypes::@10->testSimpleTypes::@11] // testSimpleTypes::@11 @@ -1892,11 +1857,10 @@ testSimpleTypes: { // [35] call assertType // [43] phi from testSimpleTypes::@11 to assertType [phi:testSimpleTypes::@11->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@11->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_DWORD [phi:testSimpleTypes::@11->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_DWORD jsr assertType // [36] phi from testSimpleTypes::@11 to testSimpleTypes::@12 [phi:testSimpleTypes::@11->testSimpleTypes::@12] // testSimpleTypes::@12 @@ -1904,11 +1868,10 @@ testSimpleTypes: { // [37] call assertType // [43] phi from testSimpleTypes::@12 to assertType [phi:testSimpleTypes::@12->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@12->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@12->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType // [38] phi from testSimpleTypes::@12 to testSimpleTypes::@13 [phi:testSimpleTypes::@12->testSimpleTypes::@13] // testSimpleTypes::@13 @@ -1916,11 +1879,10 @@ testSimpleTypes: { // [39] call assertType // [43] phi from testSimpleTypes::@13 to assertType [phi:testSimpleTypes::@13->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@13->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@13->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType // [40] phi from testSimpleTypes::@13 to testSimpleTypes::@14 [phi:testSimpleTypes::@13->testSimpleTypes::@14] // testSimpleTypes::@14 @@ -1928,11 +1890,10 @@ testSimpleTypes: { // [41] call assertType // [43] phi from testSimpleTypes::@14 to assertType [phi:testSimpleTypes::@14->assertType] // [43] phi (byte) idx#41 = (byte) idx#20 [phi:testSimpleTypes::@14->assertType#0] -- register_copy - // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#1] -- vbuz1=vbuc1 - lda #TYPEID_SIGNED_DWORD - sta.z assertType.t2 - // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#2] -- vbuyy=vbuc1 - tay + // [43] phi (byte) assertType::t2#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#1] -- vbuyy=vbuc1 + ldy #TYPEID_SIGNED_DWORD + // [43] phi (byte) assertType::t1#15 = (const byte) TYPEID_SIGNED_DWORD [phi:testSimpleTypes::@14->assertType#2] -- vbuxx=vbuc1 + ldx #TYPEID_SIGNED_DWORD jsr assertType // testSimpleTypes::@return // } @@ -1943,28 +1904,29 @@ testSimpleTypes: { // Check that the two passed type IDs are equal. // Shows a letter symbolizing t1 // If they are equal the letter is green - if not it is red. -// assertType(byte register(Y) t1, byte zp(4) t2) +// assertType(byte register(X) t1, byte register(Y) t2) assertType: { - .label t2 = 4 // if(t1==t2) - // [44] if((byte) assertType::t1#15==(byte) assertType::t2#15) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 - tya - cmp.z t2 + // [44] if((byte) assertType::t1#15==(byte) assertType::t2#15) goto assertType::@1 -- vbuxx_eq_vbuyy_then_la1 + sty.z $ff + cpx.z $ff beq __b1 // assertType::@3 // COLS[idx] = RED - // [45] *((const byte*) COLS + (byte) idx#41) ← (const byte) RED -- pbuc1_derefidx_vbuxx=vbuc2 + // [45] *((const byte*) COLS + (byte) idx#41) ← (const byte) RED -- pbuc1_derefidx_vbuz1=vbuc2 lda #RED - sta COLS,x + ldy.z idx + sta COLS,y // assertType::@2 __b2: // SCREEN[idx++] = t1 - // [46] *((const byte*) SCREEN + (byte) idx#41) ← (byte) assertType::t1#15 -- pbuc1_derefidx_vbuxx=vbuyy - tya - sta SCREEN,x + // [46] *((const byte*) SCREEN + (byte) idx#41) ← (byte) assertType::t1#15 -- pbuc1_derefidx_vbuz1=vbuxx + ldy.z idx + txa + sta SCREEN,y // SCREEN[idx++] = t1; - // [47] (byte) idx#20 ← ++ (byte) idx#41 -- vbuxx=_inc_vbuxx - inx + // [47] (byte) idx#20 ← ++ (byte) idx#41 -- vbuz1=_inc_vbuz1 + inc.z idx // assertType::@return // } // [48] return @@ -1972,9 +1934,10 @@ assertType: { // assertType::@1 __b1: // COLS[idx] = GREEN - // [49] *((const byte*) COLS + (byte) idx#41) ← (const byte) GREEN -- pbuc1_derefidx_vbuxx=vbuc2 + // [49] *((const byte*) COLS + (byte) idx#41) ← (const byte) GREEN -- pbuc1_derefidx_vbuz1=vbuc2 lda #GREEN - sta COLS,x + ldy.z idx + sta COLS,y jmp __b2 } // File Data diff --git a/src/test/ref/int-literals.sym b/src/test/ref/int-literals.sym index 1bfc80020..776ff48a6 100644 --- a/src/test/ref/int-literals.sym +++ b/src/test/ref/int-literals.sym @@ -17,20 +17,20 @@ (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#15 reg byte y 1.0 +(byte) assertType::t1#15 reg byte x 500.5 (byte) assertType::t2 -(byte) assertType::t2#15 t2 zp[1]:4 2.0 +(byte) assertType::t2#15 reg byte y 1001.0 (byte) idx -(byte) idx#20 reg byte x 0.9999999999999999 -(byte) idx#41 reg byte x 7.200000000000002 +(byte) idx#20 idx zp[1]:4 80.5 +(byte) idx#41 idx zp[1]:4 1083.6 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte*) main::s -(byte*) main::s#1 s zp[2]:2 22.0 -(byte*) main::s#2 s zp[2]:2 14.666666666666666 +(byte*) main::s#1 s zp[2]:2 202.0 +(byte*) main::s#2 s zp[2]:2 134.66666666666666 (void()) testSimpleTypes() (label) testSimpleTypes::@1 (label) testSimpleTypes::@10 @@ -49,6 +49,6 @@ (label) testSimpleTypes::@return zp[2]:2 [ main::s#2 main::s#1 ] -reg byte y [ assertType::t1#15 ] -zp[1]:4 [ assertType::t2#15 ] -reg byte x [ idx#41 idx#20 ] +reg byte x [ assertType::t1#15 ] +reg byte y [ assertType::t2#15 ] +zp[1]:4 [ idx#41 idx#20 ] diff --git a/src/test/ref/interrupt-volatile-reuse-problem1.log b/src/test/ref/interrupt-volatile-reuse-problem1.log index b5e364d1a..20ef3c806 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem1.log +++ b/src/test/ref/interrupt-volatile-reuse-problem1.log @@ -188,11 +188,11 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [1] (byte) col2 ← (byte) 8 [ ] ( [ ] ) always clobbers reg byte a -Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 col2 ] ( [ col1 col2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN+(byte) $29) ← (byte) col2 [ col2 ] ( [ col2 ] ) always clobbers reg byte a +Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [1] (byte) col2 ← (byte) 8 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 col2 ] ( [ col1 col2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN+(byte) $29) ← (byte) col2 [ col2 ] ( [ col2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ col1 ] : zp[1]:2 , Potential registers zp[1]:3 [ col2 ] : zp[1]:3 , diff --git a/src/test/ref/interrupt-volatile-reuse-problem2.log b/src/test/ref/interrupt-volatile-reuse-problem2.log index 3f6cfa96f..493596efc 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem2.log +++ b/src/test/ref/interrupt-volatile-reuse-problem2.log @@ -131,8 +131,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::y#2 = (byte) main::y#3 -Alias (byte) main::x#2 = (byte) main::x#5 (byte) main::x#3 +Alias main::y#2 = main::y#3 +Alias main::x#2 = main::x#5 main::x#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::y#2 (byte) main::y#4 Identical Phi Values (byte) main::x#2 (byte) main::x#4 @@ -266,16 +266,16 @@ VARIABLE REGISTER WEIGHTS (byte) col1 loadstore 2.6666666666666665 interrupt(KERNEL_MIN)(void()) irq() (void()) main() -(byte~) main::$0 20002.0 +(byte~) main::$0 200002.0 (byte) main::a -(byte) main::a#1 15001.5 -(byte) main::a#2 10001.0 +(byte) main::a#1 150001.5 +(byte) main::a#2 100001.0 (byte) main::x -(byte) main::x#1 71.0 -(byte) main::x#6 1123.6666666666665 +(byte) main::x#1 701.0 +(byte) main::x#6 11233.666666666668 (byte) main::y -(byte) main::y#1 1501.5 -(byte) main::y#4 2000.4999999999998 +(byte) main::y#1 15001.5 +(byte) main::y#4 20000.499999999996 Initial phi equivalence classes [ main::x#6 main::x#1 ] @@ -436,21 +436,21 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← (byte) main::a#2 + (byte) main::y#4 [ main::x#6 main::y#4 main::a#2 main::$0 ] ( main:2 [ main::x#6 main::y#4 main::a#2 main::$0 ] ) always clobbers reg byte a +Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$0 ← (byte) main::a#2 + (byte) main::y#4 [ main::x#6 main::y#4 main::a#2 main::$0 ] ( main:2 [ main::x#6 main::y#4 main::a#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#6 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::a#2 main::a#1 ] -Statement [17] *((const byte*) IRQ_STATUS) ← (byte) 1 [ col1 ] ( [ col1 ] ) always clobbers reg byte a +Statement [17] *((const byte*) IRQ_STATUS) ← (byte) 1 [ col1 ] ( [ col1 ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a -Statement [19] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 ] ( [ col1 ] ) always clobbers reg byte a -Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← (byte) main::a#2 + (byte) main::y#4 [ main::x#6 main::y#4 main::a#2 main::$0 ] ( main:2 [ main::x#6 main::y#4 main::a#2 main::$0 ] ) always clobbers reg byte a -Statement [17] *((const byte*) IRQ_STATUS) ← (byte) 1 [ col1 ] ( [ col1 ] ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 ] ( [ col1 ] { } ) always clobbers reg byte a +Statement [0] (byte) col1 ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$0 ← (byte) main::a#2 + (byte) main::y#4 [ main::x#6 main::y#4 main::a#2 main::$0 ] ( main:2 [ main::x#6 main::y#4 main::a#2 main::$0 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) IRQ_STATUS) ← (byte) 1 [ col1 ] ( [ col1 ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a -Statement [19] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 ] ( [ col1 ] ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN+(byte) $28) ← (byte) col1 [ col1 ] ( [ col1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::x#6 main::x#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::y#4 main::y#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::a#2 main::a#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -458,7 +458,7 @@ Potential registers zp[1]:5 [ col1 ] : zp[1]:5 , Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25,002.5: zp[1]:4 [ main::a#2 main::a#1 ] 20,002: zp[1]:6 [ main::$0 ] 3,502: zp[1]:3 [ main::y#4 main::y#1 ] 1,194.67: zp[1]:2 [ main::x#6 main::x#1 ] +Uplift Scope [main] 250,002.5: zp[1]:4 [ main::a#2 main::a#1 ] 200,002: zp[1]:6 [ main::$0 ] 35,002: zp[1]:3 [ main::y#4 main::y#1 ] 11,934.67: zp[1]:2 [ main::x#6 main::x#1 ] Uplift Scope [] 2.67: zp[1]:5 [ col1 ] Uplift Scope [irq] @@ -657,7 +657,7 @@ FINAL SYMBOL TABLE interrupt(KERNEL_MIN)(void()) irq() (label) irq::@return (void()) main() -(byte~) main::$0 reg byte a 20002.0 +(byte~) main::$0 reg byte a 200002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -665,14 +665,14 @@ interrupt(KERNEL_MIN)(void()) irq() (label) main::@5 (label) main::@6 (byte) main::a -(byte) main::a#1 reg byte y 15001.5 -(byte) main::a#2 reg byte y 10001.0 +(byte) main::a#1 reg byte y 150001.5 +(byte) main::a#2 reg byte y 100001.0 (byte) main::x -(byte) main::x#1 reg byte x 71.0 -(byte) main::x#6 reg byte x 1123.6666666666665 +(byte) main::x#1 reg byte x 701.0 +(byte) main::x#6 reg byte x 11233.666666666668 (byte) main::y -(byte) main::y#1 y zp[1]:2 1501.5 -(byte) main::y#4 y zp[1]:2 2000.4999999999998 +(byte) main::y#1 y zp[1]:2 15001.5 +(byte) main::y#4 y zp[1]:2 20000.499999999996 reg byte x [ main::x#6 main::x#1 ] zp[1]:2 [ main::y#4 main::y#1 ] diff --git a/src/test/ref/interrupt-volatile-reuse-problem2.sym b/src/test/ref/interrupt-volatile-reuse-problem2.sym index 1791400ab..494901a22 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem2.sym +++ b/src/test/ref/interrupt-volatile-reuse-problem2.sym @@ -8,7 +8,7 @@ interrupt(KERNEL_MIN)(void()) irq() (label) irq::@return (void()) main() -(byte~) main::$0 reg byte a 20002.0 +(byte~) main::$0 reg byte a 200002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -16,14 +16,14 @@ interrupt(KERNEL_MIN)(void()) irq() (label) main::@5 (label) main::@6 (byte) main::a -(byte) main::a#1 reg byte y 15001.5 -(byte) main::a#2 reg byte y 10001.0 +(byte) main::a#1 reg byte y 150001.5 +(byte) main::a#2 reg byte y 100001.0 (byte) main::x -(byte) main::x#1 reg byte x 71.0 -(byte) main::x#6 reg byte x 1123.6666666666665 +(byte) main::x#1 reg byte x 701.0 +(byte) main::x#6 reg byte x 11233.666666666668 (byte) main::y -(byte) main::y#1 y zp[1]:2 1501.5 -(byte) main::y#4 y zp[1]:2 2000.4999999999998 +(byte) main::y#1 y zp[1]:2 15001.5 +(byte) main::y#4 y zp[1]:2 20000.499999999996 reg byte x [ main::x#6 main::x#1 ] zp[1]:2 [ main::y#4 main::y#1 ] diff --git a/src/test/ref/irq-hardware-clobber-jsr.log b/src/test/ref/irq-hardware-clobber-jsr.log index a8b0bab22..fc58cfeb3 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.log +++ b/src/test/ref/irq-hardware-clobber-jsr.log @@ -331,17 +331,17 @@ do_irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [17] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( do_irq:15 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( do_irq:15 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( do_irq:15 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [17] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( do_irq:15 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( do_irq:15 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( do_irq:15 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-hardware-clobber.log b/src/test/ref/irq-hardware-clobber.log index 5bf970348..e7f436b35 100644 --- a/src/test/ref/irq-hardware-clobber.log +++ b/src/test/ref/irq-hardware-clobber.log @@ -281,17 +281,17 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [17] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [17] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-hardware-stack.log b/src/test/ref/irq-hardware-stack.log index c1efe1a72..3daae07ac 100644 --- a/src/test/ref/irq-hardware-stack.log +++ b/src/test/ref/irq-hardware-stack.log @@ -282,17 +282,17 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_STACK)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [17] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_STACK)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [17] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-hardware.log b/src/test/ref/irq-hardware.log index f315aefd0..2ca7d48b8 100644 --- a/src/test/ref/irq-hardware.log +++ b/src/test/ref/irq-hardware.log @@ -281,17 +281,17 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [17] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [17] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-idx-problem.log b/src/test/ref/irq-idx-problem.log index 709705892..c719db2dd 100644 --- a/src/test/ref/irq-idx-problem.log +++ b/src/test/ref/irq-idx-problem.log @@ -172,8 +172,8 @@ Inferred type updated to word in (unumber~) table_driven_irq::$4 ← (byte) tabl Inferred type updated to word in (unumber~) table_driven_irq::$5 ← (word~) table_driven_irq::$4 - (const byte) VIC_SIZE Inversing boolean not [28] (bool~) table_driven_irq::$3 ← (byte) table_driven_irq::val#3 >= *((const byte*) RASTER) from [27] (bool~) table_driven_irq::$2 ← (byte) table_driven_irq::val#3 < *((const byte*) RASTER) Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) table_driven_irq::val#0 = (byte) table_driven_irq::val#1 (byte) table_driven_irq::val#4 (byte) table_driven_irq::val#2 (byte) table_driven_irq::val#3 -Alias (byte) table_driven_irq::idx#0 = (byte) table_driven_irq::idx#1 (byte) table_driven_irq::idx#2 (byte) table_driven_irq::idx#3 +Alias table_driven_irq::val#0 = table_driven_irq::val#1 table_driven_irq::val#4 table_driven_irq::val#2 table_driven_irq::val#3 +Alias table_driven_irq::idx#0 = table_driven_irq::idx#1 table_driven_irq::idx#2 table_driven_irq::idx#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) table_driven_irq::$0 [14] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE) goto table_driven_irq::@2 Simple Condition (bool~) table_driven_irq::$1 [17] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE+(byte) 8) goto table_driven_irq::@3 @@ -185,11 +185,11 @@ De-inlining pointer[w] to *(pointer+w) [20] *((const byte*) SCREEN + (word~) t Successful SSA optimization Pass2DeInlineWordDerefIdx Consolidated constant in assignment table_driven_irq::$6 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word~) table_driven_irq::$5 = (word~) table_driven_irq::$4 +Alias table_driven_irq::$5 = table_driven_irq::$4 Successful SSA optimization Pass2AliasElimination Consolidated constant in assignment table_driven_irq::$6 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) table_driven_irq::idx#0 = (word~) table_driven_irq::$5 +Alias table_driven_irq::idx#0 = table_driven_irq::$5 Successful SSA optimization Pass2AliasElimination Converting *(pointer+n) to pointer[n] [17] *((byte*~) table_driven_irq::$6) ← (byte) table_driven_irq::val#0 -- *(SCREEN+-VIC_SIZE+$3f8 + table_driven_irq::idx#0) Successful SSA optimization Pass2InlineDerefIdx @@ -461,34 +461,34 @@ table_driven_irq: { IRQ_CHANGE_VAL: .byte $b, $b, $63, 0, 0, $80, 7, 7, $83, 0, 0, $60 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) irq_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) RASTER) ← (byte) $60 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) table_driven_irq() [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [15] (byte) table_driven_irq::idx#0 ← *((const byte*) IRQ_CHANGE_IDX + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 ] ( [ irq_idx table_driven_irq::idx#0 ] ) always clobbers reg byte y -Statement [16] (byte) table_driven_irq::val#0 ← *((const byte*) IRQ_CHANGE_VAL + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ( [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ) always clobbers reg byte y +Statement [1] (byte) irq_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) RASTER) ← (byte) $60 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) table_driven_irq() [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [15] (byte) table_driven_irq::idx#0 ← *((const byte*) IRQ_CHANGE_IDX + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 ] ( [ irq_idx table_driven_irq::idx#0 ] { } ) always clobbers reg byte y +Statement [16] (byte) table_driven_irq::val#0 ← *((const byte*) IRQ_CHANGE_VAL + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ( [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ table_driven_irq::idx#0 ] -Statement [20] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ table_driven_irq::val#0 ] ( [ table_driven_irq::val#0 ] ) always clobbers reg byte a +Statement [20] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ table_driven_irq::val#0 ] ( [ table_driven_irq::val#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ table_driven_irq::val#0 ] -Statement [23] (byte) irq_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) SCREEN+-(const byte) VIC_SIZE+(word) $3f8 + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] ) always clobbers reg byte a -Statement [26] *((const byte*) VIC_BASE + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] ) always clobbers reg byte a -Statement [1] (byte) irq_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) RASTER) ← (byte) $60 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) table_driven_irq() [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [15] (byte) table_driven_irq::idx#0 ← *((const byte*) IRQ_CHANGE_IDX + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 ] ( [ irq_idx table_driven_irq::idx#0 ] ) always clobbers reg byte y -Statement [16] (byte) table_driven_irq::val#0 ← *((const byte*) IRQ_CHANGE_VAL + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ( [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ) always clobbers reg byte y -Statement [20] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ table_driven_irq::val#0 ] ( [ table_driven_irq::val#0 ] ) always clobbers reg byte a -Statement [23] (byte) irq_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) SCREEN+-(const byte) VIC_SIZE+(word) $3f8 + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] ) always clobbers reg byte a -Statement [26] *((const byte*) VIC_BASE + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] ) always clobbers reg byte a +Statement [23] (byte) irq_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) SCREEN+-(const byte) VIC_SIZE+(word) $3f8 + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_BASE + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a +Statement [1] (byte) irq_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) RASTER) ← (byte) $60 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [11] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) table_driven_irq() [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [15] (byte) table_driven_irq::idx#0 ← *((const byte*) IRQ_CHANGE_IDX + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 ] ( [ irq_idx table_driven_irq::idx#0 ] { } ) always clobbers reg byte y +Statement [16] (byte) table_driven_irq::val#0 ← *((const byte*) IRQ_CHANGE_VAL + (byte) irq_idx) [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] ( [ irq_idx table_driven_irq::idx#0 table_driven_irq::val#0 ] { } ) always clobbers reg byte y +Statement [20] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ table_driven_irq::val#0 ] ( [ table_driven_irq::val#0 ] { } ) always clobbers reg byte a +Statement [23] (byte) irq_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) SCREEN+-(const byte) VIC_SIZE+(word) $3f8 + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) VIC_BASE + (byte) table_driven_irq::idx#0) ← (byte) table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ irq_idx ] : zp[1]:2 , Potential registers zp[1]:3 [ table_driven_irq::idx#0 ] : zp[1]:3 , reg byte a , reg byte x , Potential registers zp[1]:4 [ table_driven_irq::val#0 ] : zp[1]:4 , reg byte x , reg byte y , diff --git a/src/test/ref/irq-kernel-minimal.log b/src/test/ref/irq-kernel-minimal.log index eed843356..0e07d8477 100644 --- a/src/test/ref/irq-kernel-minimal.log +++ b/src/test/ref/irq-kernel-minimal.log @@ -171,9 +171,9 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a +Statement [5] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-kernel.log b/src/test/ref/irq-kernel.log index 69b931cf9..5218321a3 100644 --- a/src/test/ref/irq-kernel.log +++ b/src/test/ref/irq-kernel.log @@ -223,14 +223,14 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-local-var-overlap-problem.log b/src/test/ref/irq-local-var-overlap-problem.log index 8b0d9b019..948d7f5fd 100644 --- a/src/test/ref/irq-local-var-overlap-problem.log +++ b/src/test/ref/irq-local-var-overlap-problem.log @@ -379,16 +379,16 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $7f Finalized unsigned number type (byte) $fd Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::k#2 = (byte) main::k#3 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#6 (byte) main::i#3 -Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3 -Alias (byte) irq::k#2 = (byte) irq::k#3 -Alias (byte) irq::i#2 = (byte) irq::i#5 (byte) irq::i#6 (byte) irq::i#3 -Alias (byte) irq::j#2 = (byte) irq::j#5 (byte) irq::j#3 -Alias (byte) sub_main::j#2 = (byte) sub_main::j#3 -Alias (byte) sub_main::i#2 = (byte) sub_main::i#5 (byte) sub_main::i#3 -Alias (byte) sub_irq::j#2 = (byte) sub_irq::j#3 -Alias (byte) sub_irq::i#2 = (byte) sub_irq::i#5 (byte) sub_irq::i#3 +Alias main::k#2 = main::k#3 +Alias main::i#2 = main::i#4 main::i#6 main::i#3 +Alias main::j#2 = main::j#4 main::j#3 +Alias irq::k#2 = irq::k#3 +Alias irq::i#2 = irq::i#5 irq::i#6 irq::i#3 +Alias irq::j#2 = irq::j#5 irq::j#3 +Alias sub_main::j#2 = sub_main::j#3 +Alias sub_main::i#2 = sub_main::i#5 sub_main::i#3 +Alias sub_irq::j#2 = sub_irq::j#3 +Alias sub_irq::i#2 = sub_irq::i#5 sub_irq::i#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::i#2 (byte) main::i#5 Identical Phi Values (byte) main::j#2 (byte) main::j#5 @@ -752,41 +752,41 @@ interrupt(KERNEL_MIN)(void()) irq() (byte) irq::k#1 1501.5 (byte) irq::k#2 600.5999999999999 (void()) main() -(byte~) main::$0 20002.0 -(byte~) main::$1 20002.0 +(byte~) main::$0 200002.0 +(byte~) main::$1 200002.0 (byte) main::i -(byte) main::i#1 71.0 -(byte) main::i#7 919.3636363636363 +(byte) main::i#1 701.0 +(byte) main::i#7 9191.181818181818 (byte) main::j -(byte) main::j#1 1501.5 -(byte) main::j#5 1500.375 +(byte) main::j#1 15001.5 +(byte) main::j#5 15000.375 (byte) main::k -(byte) main::k#1 15001.5 -(byte) main::k#2 6000.6 +(byte) main::k#1 150001.5 +(byte) main::k#2 60000.600000000006 (void()) sub_irq() -(byte~) sub_irq::$0 2000002.0 -(byte~) sub_irq::$1 2000002.0 +(byte~) sub_irq::$0 2.0000000002E10 +(byte~) sub_irq::$1 2.0000000002E10 (byte) sub_irq::i -(byte) sub_irq::i#1 15001.5 -(byte) sub_irq::i#6 102000.30000000002 +(byte) sub_irq::i#1 1.500000015E8 +(byte) sub_irq::i#6 1.0200000003000001E9 (byte) sub_irq::j -(byte) sub_irq::j#1 150001.5 -(byte) sub_irq::j#4 171428.99999999997 +(byte) sub_irq::j#1 1.5000000015E9 +(byte) sub_irq::j#4 1.7142857147142856E9 (byte) sub_irq::k -(byte) sub_irq::k#1 1500001.5 -(byte) sub_irq::k#2 750000.75 +(byte) sub_irq::k#1 1.50000000015E10 +(byte) sub_irq::k#2 7.50000000075E9 (void()) sub_main() -(byte~) sub_main::$0 2.0000002E7 -(byte~) sub_main::$1 2.0000002E7 +(byte~) sub_main::$0 2.0000000000002E13 +(byte~) sub_main::$1 2.0000000000002E13 (byte) sub_main::i -(byte) sub_main::i#1 150001.5 -(byte) sub_main::i#6 1020000.2999999999 +(byte) sub_main::i#1 1.500000000015E11 +(byte) sub_main::i#6 1.0200000000002999E12 (byte) sub_main::j -(byte) sub_main::j#1 1500001.5 -(byte) sub_main::j#4 1714286.1428571427 +(byte) sub_main::j#1 1.5000000000015E12 +(byte) sub_main::j#4 1.7142857142861428E12 (byte) sub_main::k -(byte) sub_main::k#1 1.50000015E7 -(byte) sub_main::k#2 7500000.75 +(byte) sub_main::k#1 1.50000000000015E13 +(byte) sub_main::k#2 7.50000000000075E12 Initial phi equivalence classes [ main::i#7 main::i#1 ] @@ -1284,46 +1284,46 @@ sub_irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] (byte~) main::$0 ← (byte) main::i#7 + (byte) main::j#5 [ main::i#7 main::j#5 main::k#2 main::$0 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$0 ] ) always clobbers reg byte a +Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$0 ← (byte) main::i#7 + (byte) main::j#5 [ main::i#7 main::j#5 main::k#2 main::$0 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#7 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#5 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::k#2 main::k#1 ] -Statement [15] (byte~) main::$1 ← (byte~) main::$0 + (byte) main::k#2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ) always clobbers reg byte a -Statement [29] (byte~) sub_main::$0 ← (byte) sub_main::i#6 + (byte) sub_main::j#4 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ) always clobbers reg byte a +Statement [15] (byte~) main::$1 ← (byte~) main::$0 + (byte) main::k#2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$1 ] { } ) always clobbers reg byte a +Statement [29] (byte~) sub_main::$0 ← (byte) sub_main::i#6 + (byte) sub_main::j#4 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ sub_main::i#6 sub_main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ sub_main::j#4 sub_main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ sub_main::k#2 sub_main::k#1 ] -Statement [30] (byte~) sub_main::$1 ← (byte~) sub_main::$0 + (byte) sub_main::k#2 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ) always clobbers reg byte a -Statement [43] (byte~) irq::$2 ← (byte) irq::i#7 + (byte) irq::j#4 [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ) always clobbers reg byte a +Statement [30] (byte~) sub_main::$1 ← (byte~) sub_main::$0 + (byte) sub_main::k#2 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] { } ) always clobbers reg byte a +Statement [43] (byte~) irq::$2 ← (byte) irq::i#7 + (byte) irq::j#4 [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ irq::i#7 irq::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ irq::j#4 irq::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ irq::k#2 irq::k#1 ] -Statement [44] (byte~) irq::$3 ← (byte~) irq::$2 + (byte) irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ) always clobbers reg byte a -Statement [53] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [60] (byte~) sub_irq::$0 ← (byte) sub_irq::i#6 + (byte) sub_irq::j#4 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ) always clobbers reg byte a +Statement [44] (byte~) irq::$3 ← (byte~) irq::$2 + (byte) irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [60] (byte~) sub_irq::$0 ← (byte) sub_irq::i#6 + (byte) sub_irq::j#4 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ sub_irq::i#6 sub_irq::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ sub_irq::j#4 sub_irq::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ sub_irq::k#2 sub_irq::k#1 ] -Statement [61] (byte~) sub_irq::$1 ← (byte~) sub_irq::$0 + (byte) sub_irq::k#2 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ) always clobbers reg byte a -Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] (byte~) main::$0 ← (byte) main::i#7 + (byte) main::j#5 [ main::i#7 main::j#5 main::k#2 main::$0 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$0 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$1 ← (byte~) main::$0 + (byte) main::k#2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ) always clobbers reg byte a -Statement [29] (byte~) sub_main::$0 ← (byte) sub_main::i#6 + (byte) sub_main::j#4 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ) always clobbers reg byte a -Statement [30] (byte~) sub_main::$1 ← (byte~) sub_main::$0 + (byte) sub_main::k#2 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ) always clobbers reg byte a -Statement [43] (byte~) irq::$2 ← (byte) irq::i#7 + (byte) irq::j#4 [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ) always clobbers reg byte a -Statement [44] (byte~) irq::$3 ← (byte~) irq::$2 + (byte) irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ) always clobbers reg byte a -Statement [53] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [60] (byte~) sub_irq::$0 ← (byte) sub_irq::i#6 + (byte) sub_irq::j#4 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ) always clobbers reg byte a -Statement [61] (byte~) sub_irq::$1 ← (byte~) sub_irq::$0 + (byte) sub_irq::k#2 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ) always clobbers reg byte a +Statement [61] (byte~) sub_irq::$1 ← (byte~) sub_irq::$0 + (byte) sub_irq::k#2 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$0 ← (byte) main::i#7 + (byte) main::j#5 [ main::i#7 main::j#5 main::k#2 main::$0 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$0 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$1 ← (byte~) main::$0 + (byte) main::k#2 [ main::i#7 main::j#5 main::k#2 main::$1 ] ( main:2 [ main::i#7 main::j#5 main::k#2 main::$1 ] { } ) always clobbers reg byte a +Statement [29] (byte~) sub_main::$0 ← (byte) sub_main::i#6 + (byte) sub_main::j#4 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$0 ] { } ) always clobbers reg byte a +Statement [30] (byte~) sub_main::$1 ← (byte~) sub_main::$0 + (byte) sub_main::k#2 [ sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] ( main:2::sub_main:17 [ main::i#7 main::j#5 main::k#2 sub_main::i#6 sub_main::j#4 sub_main::k#2 sub_main::$1 ] { } ) always clobbers reg byte a +Statement [43] (byte~) irq::$2 ← (byte) irq::i#7 + (byte) irq::j#4 [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] { } ) always clobbers reg byte a +Statement [44] (byte~) irq::$3 ← (byte~) irq::$2 + (byte) irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [60] (byte~) sub_irq::$0 ← (byte) sub_irq::i#6 + (byte) sub_irq::j#4 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$0 ] { } ) always clobbers reg byte a +Statement [61] (byte~) sub_irq::$1 ← (byte~) sub_irq::$0 + (byte) sub_irq::k#2 [ sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] ( sub_irq:46 [ irq::i#7 irq::j#4 irq::k#2 sub_irq::i#6 sub_irq::j#4 sub_irq::k#2 sub_irq::$1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#7 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#5 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::k#2 main::k#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -1346,9 +1346,9 @@ Potential registers zp[1]:20 [ sub_irq::$0 ] : zp[1]:20 , reg byte a , reg byte Potential registers zp[1]:21 [ sub_irq::$1 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sub_main] 22,500,002.25: zp[1]:7 [ sub_main::k#2 sub_main::k#1 ] 20,000,002: zp[1]:16 [ sub_main::$0 ] 20,000,002: zp[1]:17 [ sub_main::$1 ] 3,214,287.64: zp[1]:6 [ sub_main::j#4 sub_main::j#1 ] 1,170,001.8: zp[1]:5 [ sub_main::i#6 sub_main::i#1 ] -Uplift Scope [sub_irq] 2,250,002.25: zp[1]:13 [ sub_irq::k#2 sub_irq::k#1 ] 2,000,002: zp[1]:20 [ sub_irq::$0 ] 2,000,002: zp[1]:21 [ sub_irq::$1 ] 321,430.5: zp[1]:12 [ sub_irq::j#4 sub_irq::j#1 ] 117,001.8: zp[1]:11 [ sub_irq::i#6 sub_irq::i#1 ] -Uplift Scope [main] 21,002.1: zp[1]:4 [ main::k#2 main::k#1 ] 20,002: zp[1]:14 [ main::$0 ] 20,002: zp[1]:15 [ main::$1 ] 3,001.88: zp[1]:3 [ main::j#5 main::j#1 ] 990.36: zp[1]:2 [ main::i#7 main::i#1 ] +Uplift Scope [sub_main] 22,500,000,000,002.25: zp[1]:7 [ sub_main::k#2 sub_main::k#1 ] 20,000,000,000,002: zp[1]:16 [ sub_main::$0 ] 20,000,000,000,002: zp[1]:17 [ sub_main::$1 ] 3,214,285,714,287.64: zp[1]:6 [ sub_main::j#4 sub_main::j#1 ] 1,170,000,000,001.8: zp[1]:5 [ sub_main::i#6 sub_main::i#1 ] +Uplift Scope [sub_irq] 22,500,000,002.25: zp[1]:13 [ sub_irq::k#2 sub_irq::k#1 ] 20,000,000,002: zp[1]:20 [ sub_irq::$0 ] 20,000,000,002: zp[1]:21 [ sub_irq::$1 ] 3,214,285,716.21: zp[1]:12 [ sub_irq::j#4 sub_irq::j#1 ] 1,170,000,001.8: zp[1]:11 [ sub_irq::i#6 sub_irq::i#1 ] +Uplift Scope [main] 210,002.1: zp[1]:4 [ main::k#2 main::k#1 ] 200,002: zp[1]:14 [ main::$0 ] 200,002: zp[1]:15 [ main::$1 ] 30,001.88: zp[1]:3 [ main::j#5 main::j#1 ] 9,892.18: zp[1]:2 [ main::i#7 main::i#1 ] Uplift Scope [irq] 2,102.1: zp[1]:10 [ irq::k#2 irq::k#1 ] 2,002: zp[1]:18 [ irq::$2 ] 2,002: zp[1]:19 [ irq::$3 ] 301.88: zp[1]:9 [ irq::j#4 irq::j#1 ] 109.5: zp[1]:8 [ irq::i#7 irq::i#1 ] Uplift Scope [] @@ -1369,10 +1369,10 @@ Attempting to uplift remaining variables inzp[1]:4 [ main::k#2 main::k#1 ] Uplifting [main] best 424175705 combination zp[1]:4 [ main::k#2 main::k#1 ] Attempting to uplift remaining variables inzp[1]:3 [ main::j#5 main::j#1 ] Uplifting [main] best 424175705 combination zp[1]:3 [ main::j#5 main::j#1 ] -Attempting to uplift remaining variables inzp[1]:10 [ irq::k#2 irq::k#1 ] -Uplifting [irq] best 424175705 combination zp[1]:10 [ irq::k#2 irq::k#1 ] Attempting to uplift remaining variables inzp[1]:2 [ main::i#7 main::i#1 ] Uplifting [main] best 424175705 combination zp[1]:2 [ main::i#7 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:10 [ irq::k#2 irq::k#1 ] +Uplifting [irq] best 424175705 combination zp[1]:10 [ irq::k#2 irq::k#1 ] Attempting to uplift remaining variables inzp[1]:9 [ irq::j#4 irq::j#1 ] Uplifting [irq] best 424175705 combination zp[1]:9 [ irq::j#4 irq::j#1 ] Attempting to uplift remaining variables inzp[1]:8 [ irq::i#7 irq::i#1 ] @@ -1934,8 +1934,8 @@ interrupt(KERNEL_MIN)(void()) irq() (byte) irq::k#1 k zp[1]:8 1501.5 (byte) irq::k#2 k zp[1]:8 600.5999999999999 (void()) main() -(byte~) main::$0 reg byte a 20002.0 -(byte~) main::$1 reg byte a 20002.0 +(byte~) main::$0 reg byte a 200002.0 +(byte~) main::$1 reg byte a 200002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -1944,17 +1944,17 @@ interrupt(KERNEL_MIN)(void()) irq() (label) main::@6 (label) main::@7 (byte) main::i -(byte) main::i#1 i zp[1]:2 71.0 -(byte) main::i#7 i zp[1]:2 919.3636363636363 +(byte) main::i#1 i zp[1]:2 701.0 +(byte) main::i#7 i zp[1]:2 9191.181818181818 (byte) main::j -(byte) main::j#1 j zp[1]:3 1501.5 -(byte) main::j#5 j zp[1]:3 1500.375 +(byte) main::j#1 j zp[1]:3 15001.5 +(byte) main::j#5 j zp[1]:3 15000.375 (byte) main::k -(byte) main::k#1 k zp[1]:4 15001.5 -(byte) main::k#2 k zp[1]:4 6000.6 +(byte) main::k#1 k zp[1]:4 150001.5 +(byte) main::k#2 k zp[1]:4 60000.600000000006 (void()) sub_irq() -(byte~) sub_irq::$0 reg byte a 2000002.0 -(byte~) sub_irq::$1 reg byte a 2000002.0 +(byte~) sub_irq::$0 reg byte a 2.0000000002E10 +(byte~) sub_irq::$1 reg byte a 2.0000000002E10 (label) sub_irq::@1 (label) sub_irq::@2 (label) sub_irq::@3 @@ -1962,17 +1962,17 @@ interrupt(KERNEL_MIN)(void()) irq() (label) sub_irq::@5 (label) sub_irq::@return (byte) sub_irq::i -(byte) sub_irq::i#1 i zp[1]:9 15001.5 -(byte) sub_irq::i#6 i zp[1]:9 102000.30000000002 +(byte) sub_irq::i#1 i zp[1]:9 1.500000015E8 +(byte) sub_irq::i#6 i zp[1]:9 1.0200000003000001E9 (byte) sub_irq::j -(byte) sub_irq::j#1 reg byte x 150001.5 -(byte) sub_irq::j#4 reg byte x 171428.99999999997 +(byte) sub_irq::j#1 reg byte x 1.5000000015E9 +(byte) sub_irq::j#4 reg byte x 1.7142857147142856E9 (byte) sub_irq::k -(byte) sub_irq::k#1 reg byte y 1500001.5 -(byte) sub_irq::k#2 reg byte y 750000.75 +(byte) sub_irq::k#1 reg byte y 1.50000000015E10 +(byte) sub_irq::k#2 reg byte y 7.50000000075E9 (void()) sub_main() -(byte~) sub_main::$0 reg byte a 2.0000002E7 -(byte~) sub_main::$1 reg byte a 2.0000002E7 +(byte~) sub_main::$0 reg byte a 2.0000000000002E13 +(byte~) sub_main::$1 reg byte a 2.0000000000002E13 (label) sub_main::@1 (label) sub_main::@2 (label) sub_main::@3 @@ -1980,14 +1980,14 @@ interrupt(KERNEL_MIN)(void()) irq() (label) sub_main::@5 (label) sub_main::@return (byte) sub_main::i -(byte) sub_main::i#1 i zp[1]:5 150001.5 -(byte) sub_main::i#6 i zp[1]:5 1020000.2999999999 +(byte) sub_main::i#1 i zp[1]:5 1.500000000015E11 +(byte) sub_main::i#6 i zp[1]:5 1.0200000000002999E12 (byte) sub_main::j -(byte) sub_main::j#1 reg byte x 1500001.5 -(byte) sub_main::j#4 reg byte x 1714286.1428571427 +(byte) sub_main::j#1 reg byte x 1.5000000000015E12 +(byte) sub_main::j#4 reg byte x 1.7142857142861428E12 (byte) sub_main::k -(byte) sub_main::k#1 reg byte y 1.50000015E7 -(byte) sub_main::k#2 reg byte y 7500000.75 +(byte) sub_main::k#1 reg byte y 1.50000000000015E13 +(byte) sub_main::k#2 reg byte y 7.50000000000075E12 zp[1]:2 [ main::i#7 main::i#1 ] zp[1]:3 [ main::j#5 main::j#1 ] diff --git a/src/test/ref/irq-local-var-overlap-problem.sym b/src/test/ref/irq-local-var-overlap-problem.sym index cc7a95423..68626d112 100644 --- a/src/test/ref/irq-local-var-overlap-problem.sym +++ b/src/test/ref/irq-local-var-overlap-problem.sym @@ -32,8 +32,8 @@ interrupt(KERNEL_MIN)(void()) irq() (byte) irq::k#1 k zp[1]:8 1501.5 (byte) irq::k#2 k zp[1]:8 600.5999999999999 (void()) main() -(byte~) main::$0 reg byte a 20002.0 -(byte~) main::$1 reg byte a 20002.0 +(byte~) main::$0 reg byte a 200002.0 +(byte~) main::$1 reg byte a 200002.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -42,17 +42,17 @@ interrupt(KERNEL_MIN)(void()) irq() (label) main::@6 (label) main::@7 (byte) main::i -(byte) main::i#1 i zp[1]:2 71.0 -(byte) main::i#7 i zp[1]:2 919.3636363636363 +(byte) main::i#1 i zp[1]:2 701.0 +(byte) main::i#7 i zp[1]:2 9191.181818181818 (byte) main::j -(byte) main::j#1 j zp[1]:3 1501.5 -(byte) main::j#5 j zp[1]:3 1500.375 +(byte) main::j#1 j zp[1]:3 15001.5 +(byte) main::j#5 j zp[1]:3 15000.375 (byte) main::k -(byte) main::k#1 k zp[1]:4 15001.5 -(byte) main::k#2 k zp[1]:4 6000.6 +(byte) main::k#1 k zp[1]:4 150001.5 +(byte) main::k#2 k zp[1]:4 60000.600000000006 (void()) sub_irq() -(byte~) sub_irq::$0 reg byte a 2000002.0 -(byte~) sub_irq::$1 reg byte a 2000002.0 +(byte~) sub_irq::$0 reg byte a 2.0000000002E10 +(byte~) sub_irq::$1 reg byte a 2.0000000002E10 (label) sub_irq::@1 (label) sub_irq::@2 (label) sub_irq::@3 @@ -60,17 +60,17 @@ interrupt(KERNEL_MIN)(void()) irq() (label) sub_irq::@5 (label) sub_irq::@return (byte) sub_irq::i -(byte) sub_irq::i#1 i zp[1]:9 15001.5 -(byte) sub_irq::i#6 i zp[1]:9 102000.30000000002 +(byte) sub_irq::i#1 i zp[1]:9 1.500000015E8 +(byte) sub_irq::i#6 i zp[1]:9 1.0200000003000001E9 (byte) sub_irq::j -(byte) sub_irq::j#1 reg byte x 150001.5 -(byte) sub_irq::j#4 reg byte x 171428.99999999997 +(byte) sub_irq::j#1 reg byte x 1.5000000015E9 +(byte) sub_irq::j#4 reg byte x 1.7142857147142856E9 (byte) sub_irq::k -(byte) sub_irq::k#1 reg byte y 1500001.5 -(byte) sub_irq::k#2 reg byte y 750000.75 +(byte) sub_irq::k#1 reg byte y 1.50000000015E10 +(byte) sub_irq::k#2 reg byte y 7.50000000075E9 (void()) sub_main() -(byte~) sub_main::$0 reg byte a 2.0000002E7 -(byte~) sub_main::$1 reg byte a 2.0000002E7 +(byte~) sub_main::$0 reg byte a 2.0000000000002E13 +(byte~) sub_main::$1 reg byte a 2.0000000000002E13 (label) sub_main::@1 (label) sub_main::@2 (label) sub_main::@3 @@ -78,14 +78,14 @@ interrupt(KERNEL_MIN)(void()) irq() (label) sub_main::@5 (label) sub_main::@return (byte) sub_main::i -(byte) sub_main::i#1 i zp[1]:5 150001.5 -(byte) sub_main::i#6 i zp[1]:5 1020000.2999999999 +(byte) sub_main::i#1 i zp[1]:5 1.500000000015E11 +(byte) sub_main::i#6 i zp[1]:5 1.0200000000002999E12 (byte) sub_main::j -(byte) sub_main::j#1 reg byte x 1500001.5 -(byte) sub_main::j#4 reg byte x 1714286.1428571427 +(byte) sub_main::j#1 reg byte x 1.5000000000015E12 +(byte) sub_main::j#4 reg byte x 1.7142857142861428E12 (byte) sub_main::k -(byte) sub_main::k#1 reg byte y 1.50000015E7 -(byte) sub_main::k#2 reg byte y 7500000.75 +(byte) sub_main::k#1 reg byte y 1.50000000000015E13 +(byte) sub_main::k#2 reg byte y 7.50000000000075E12 zp[1]:2 [ main::i#7 main::i#1 ] zp[1]:3 [ main::j#5 main::j#1 ] diff --git a/src/test/ref/irq-raster.log b/src/test/ref/irq-raster.log index 34b2398ca..ab466c497 100644 --- a/src/test/ref/irq-raster.log +++ b/src/test/ref/irq-raster.log @@ -223,14 +223,14 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/irq-volatile-bool-problem.log b/src/test/ref/irq-volatile-bool-problem.log index 7cb6424a7..0d533121e 100644 --- a/src/test/ref/irq-volatile-bool-problem.log +++ b/src/test/ref/irq-volatile-bool-problem.log @@ -310,14 +310,14 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] if(*((const byte*) RASTER)>=(byte) $14) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a -Statement [15] if(*((const byte*) RASTER)<(byte) $32+(byte) 1) goto irq::@1 [ ] ( [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) RASTER) ← (byte) $fd [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if(*((const byte*) RASTER)>=(byte) $14) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER)<(byte) $32+(byte) 1) goto irq::@1 [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/iterarray.log b/src/test/ref/iterarray.log index 380249e6d..3fd38b9dc 100644 --- a/src/test/ref/iterarray.log +++ b/src/test/ref/iterarray.log @@ -68,7 +68,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) 2 + (byte) main::i#2 Inferred type updated to byte in (unumber~) main::$1 ← (byte~) main::$0 + (byte) 2 Inferred type updated to byte in (unumber~) main::$2 ← (byte) main::i#2 + (byte) 1 -Alias (byte) main::i#1 = (byte~) main::$2 +Alias main::i#1 = main::$2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 [7] if((byte) main::i#1<(byte) $a) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -79,7 +79,7 @@ Constant inlined main::i#0 = (byte) 5 Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment main::$1 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i#2 = (byte~) main::$0 +Alias main::i#2 = main::$0 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -129,10 +129,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -211,7 +211,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 303 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -303,13 +303,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::buf[(number) $10] = (byte*) 4352 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/iterarray.sym b/src/test/ref/iterarray.sym index 3d097d8b3..7eecdfa04 100644 --- a/src/test/ref/iterarray.sym +++ b/src/test/ref/iterarray.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::buf[(number) $10] = (byte*) 4352 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/kc-ka-string-encoding.log b/src/test/ref/kc-ka-string-encoding.log index c89ed0195..f1f436b74 100644 --- a/src/test/ref/kc-ka-string-encoding.log +++ b/src/test/ref/kc-ka-string-encoding.log @@ -56,7 +56,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 3 Finalized signed number type (signed byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1 +Alias main::return#0 = main::return#3 main::return#1 Successful SSA optimization Pass2AliasElimination Constant (const signed word) main::return#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -163,8 +163,8 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) strTemp+(byte) 2) ← (byte) 'e'pm [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) strTemp+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) strTemp+(byte) 2) ← (byte) 'e'pm [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) strTemp+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldy#0 loop: ldastrTemp,y beqdone jsr$FFD2 iny jmploop done: } always clobbers reg byte a reg byte x reg byte y REGISTER UPLIFT SCOPES diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log index f0434a41c..5b4deff7c 100644 --- a/src/test/ref/keyboard-glitch.log +++ b/src/test/ref/keyboard-glitch.log @@ -315,15 +315,15 @@ Inversing boolean not [42] (bool~) menu::$6 ← (byte~) menu::$4 == (byte) 0 fro Inversing boolean not [52] (bool~) menu::$9 ← (byte~) menu::$7 == (byte) 0 from [51] (bool~) menu::$8 ← (byte~) menu::$7 != (byte) 0 Inversing boolean not [67] (bool~) pressed::$3 ← (byte~) pressed::$1 == (byte) 0 from [66] (bool~) pressed::$2 ← (byte~) pressed::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#6 (byte) keyboard_key_pressed::return#1 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#7 -Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#8 -Alias (byte) keyboard_key_pressed::return#4 = (byte) keyboard_key_pressed::return#9 -Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#5 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#6 keyboard_key_pressed::return#1 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#7 +Alias keyboard_key_pressed::return#3 = keyboard_key_pressed::return#8 +Alias keyboard_key_pressed::return#4 = keyboard_key_pressed::return#9 +Alias keyboard_key_pressed::return#10 = keyboard_key_pressed::return#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -528,33 +528,33 @@ null depth in calling loop Loop head: pressed::@1 tails: pressed::@2 blocks: pre VARIABLE REGISTER WEIGHTS (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2.0000002E7 (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 3333333.6666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#4 2.0 +(byte) keyboard_key_pressed::key#4 1.0000001E7 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 67.66666666666667 -(byte) keyboard_key_pressed::return#10 202.0 -(byte) keyboard_key_pressed::return#2 202.0 -(byte) keyboard_key_pressed::return#3 202.0 -(byte) keyboard_key_pressed::return#4 202.0 +(byte) keyboard_key_pressed::return#0 1883334.1666666665 +(byte) keyboard_key_pressed::return#10 2000002.0 +(byte) keyboard_key_pressed::return#2 200002.0 +(byte) keyboard_key_pressed::return#3 200002.0 +(byte) keyboard_key_pressed::return#4 200002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 4.0 +(byte) keyboard_key_pressed::rowidx#0 2.0000002E7 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 4.0 +(byte) keyboard_matrix_read::rowid#0 1.10000002E8 (void()) main() (void()) menu() -(byte~) menu::$0 202.0 -(byte~) menu::$4 202.0 -(byte~) menu::$7 202.0 +(byte~) menu::$0 200002.0 +(byte~) menu::$4 200002.0 +(byte~) menu::$7 200002.0 (void()) pressed() -(byte~) pressed::$1 202.0 +(byte~) pressed::$1 2000002.0 Initial phi equivalence classes [ keyboard_key_pressed::key#4 ] @@ -903,19 +903,19 @@ pressed: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( main:2::menu:6 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2::menu:6 [ ] ) always clobbers reg byte a -Statement [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:6::keyboard_key_pressed:9 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::keyboard_key_pressed:17 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::keyboard_key_pressed:24 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( main:2::menu:6 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2::menu:6 [ ] { } ) always clobbers reg byte a +Statement [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:6::keyboard_key_pressed:9 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ keyboard_key_pressed::colidx#0 ] -Statement [40] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [4] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( main:2::menu:6 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2::menu:6 [ ] ) always clobbers reg byte a -Statement [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:6::keyboard_key_pressed:9 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::keyboard_key_pressed:17 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::keyboard_key_pressed:24 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a -Statement [40] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [40] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [4] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) BORDERCOL) ← (const byte) RED [ ] ( main:2::menu:6 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) BORDERCOL) ← (const byte) GREEN [ ] ( main:2::menu:6 [ ] { } ) always clobbers reg byte a +Statement [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:6::keyboard_key_pressed:9 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [40] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::menu:6::keyboard_key_pressed:9::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:17::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::keyboard_key_pressed:24::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#4 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::menu:6::pressed:14::keyboard_key_pressed:45::keyboard_matrix_read:35 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#10 } { keyboard_matrix_read::rowid#0 = keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ keyboard_key_pressed::key#4 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ keyboard_key_pressed::return#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ menu::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -934,30 +934,32 @@ Potential registers zp[1]:16 [ keyboard_key_pressed::return#10 ] : zp[1]:16 , re Potential registers zp[1]:17 [ pressed::$1 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_key_pressed] 202: zp[1]:3 [ keyboard_key_pressed::return#2 ] 202: zp[1]:5 [ keyboard_key_pressed::return#3 ] 202: zp[1]:7 [ keyboard_key_pressed::return#4 ] 202: zp[1]:16 [ keyboard_key_pressed::return#10 ] 67.67: zp[1]:14 [ keyboard_key_pressed::return#0 ] 4: zp[1]:10 [ keyboard_key_pressed::rowidx#0 ] 4: zp[1]:13 [ keyboard_key_pressed::$2 ] 2: zp[1]:2 [ keyboard_key_pressed::key#4 ] 0.67: zp[1]:9 [ keyboard_key_pressed::colidx#0 ] -Uplift Scope [menu] 202: zp[1]:4 [ menu::$0 ] 202: zp[1]:6 [ menu::$4 ] 202: zp[1]:8 [ menu::$7 ] -Uplift Scope [pressed] 202: zp[1]:17 [ pressed::$1 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:11 [ keyboard_matrix_read::rowid#0 ] 4: zp[1]:12 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:15 [ keyboard_matrix_read::return#0 ] +Uplift Scope [keyboard_matrix_read] 110,000,002: zp[1]:11 [ keyboard_matrix_read::rowid#0 ] 36,666,667.33: zp[1]:15 [ keyboard_matrix_read::return#0 ] 20,000,002: zp[1]:12 [ keyboard_matrix_read::return#2 ] +Uplift Scope [keyboard_key_pressed] 20,000,002: zp[1]:10 [ keyboard_key_pressed::rowidx#0 ] 20,000,002: zp[1]:13 [ keyboard_key_pressed::$2 ] 10,000,001: zp[1]:2 [ keyboard_key_pressed::key#4 ] 3,333,333.67: zp[1]:9 [ keyboard_key_pressed::colidx#0 ] 2,000,002: zp[1]:16 [ keyboard_key_pressed::return#10 ] 1,883,334.17: zp[1]:14 [ keyboard_key_pressed::return#0 ] 200,002: zp[1]:3 [ keyboard_key_pressed::return#2 ] 200,002: zp[1]:5 [ keyboard_key_pressed::return#3 ] 200,002: zp[1]:7 [ keyboard_key_pressed::return#4 ] +Uplift Scope [pressed] 2,000,002: zp[1]:17 [ pressed::$1 ] +Uplift Scope [menu] 200,002: zp[1]:4 [ menu::$0 ] 200,002: zp[1]:6 [ menu::$4 ] 200,002: zp[1]:8 [ menu::$7 ] Uplift Scope [main] Uplift Scope [] -Uplifting [keyboard_key_pressed] best 9851 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#4 ] reg byte a [ keyboard_key_pressed::return#10 ] zp[1]:14 [ keyboard_key_pressed::return#0 ] zp[1]:10 [ keyboard_key_pressed::rowidx#0 ] zp[1]:13 [ keyboard_key_pressed::$2 ] zp[1]:2 [ keyboard_key_pressed::key#4 ] zp[1]:9 [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_matrix_read] best 12233 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_key_pressed] best 12207 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] reg byte a [ keyboard_key_pressed::$2 ] reg byte x [ keyboard_key_pressed::key#4 ] zp[1]:9 [ keyboard_key_pressed::colidx#0 ] zp[1]:16 [ keyboard_key_pressed::return#10 ] zp[1]:14 [ keyboard_key_pressed::return#0 ] zp[1]:3 [ keyboard_key_pressed::return#2 ] zp[1]:5 [ keyboard_key_pressed::return#3 ] zp[1]:7 [ keyboard_key_pressed::return#4 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [menu] best 8051 combination reg byte a [ menu::$0 ] reg byte a [ menu::$4 ] reg byte a [ menu::$7 ] -Uplifting [pressed] best 7451 combination reg byte a [ pressed::$1 ] -Uplifting [keyboard_matrix_read] best 7433 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [main] best 7433 combination -Uplifting [] best 7433 combination -Attempting to uplift remaining variables inzp[1]:14 [ keyboard_key_pressed::return#0 ] -Uplifting [keyboard_key_pressed] best 6230 combination reg byte a [ keyboard_key_pressed::return#0 ] -Attempting to uplift remaining variables inzp[1]:10 [ keyboard_key_pressed::rowidx#0 ] -Uplifting [keyboard_key_pressed] best 6226 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] -Attempting to uplift remaining variables inzp[1]:13 [ keyboard_key_pressed::$2 ] -Uplifting [keyboard_key_pressed] best 6220 combination reg byte a [ keyboard_key_pressed::$2 ] -Attempting to uplift remaining variables inzp[1]:2 [ keyboard_key_pressed::key#4 ] -Uplifting [keyboard_key_pressed] best 6204 combination reg byte x [ keyboard_key_pressed::key#4 ] +Uplifting [pressed] best 11607 combination reg byte a [ pressed::$1 ] +Uplifting [menu] best 9807 combination reg byte a [ menu::$0 ] reg byte a [ menu::$4 ] reg byte a [ menu::$7 ] +Uplifting [main] best 9807 combination +Uplifting [] best 9807 combination Attempting to uplift remaining variables inzp[1]:9 [ keyboard_key_pressed::colidx#0 ] -Uplifting [keyboard_key_pressed] best 6202 combination reg byte y [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_key_pressed] best 9805 combination reg byte y [ keyboard_key_pressed::colidx#0 ] +Attempting to uplift remaining variables inzp[1]:16 [ keyboard_key_pressed::return#10 ] +Uplifting [keyboard_key_pressed] best 9205 combination reg byte a [ keyboard_key_pressed::return#10 ] +Attempting to uplift remaining variables inzp[1]:14 [ keyboard_key_pressed::return#0 ] +Uplifting [keyboard_key_pressed] best 8002 combination reg byte a [ keyboard_key_pressed::return#0 ] +Attempting to uplift remaining variables inzp[1]:3 [ keyboard_key_pressed::return#2 ] +Uplifting [keyboard_key_pressed] best 7402 combination reg byte a [ keyboard_key_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:5 [ keyboard_key_pressed::return#3 ] +Uplifting [keyboard_key_pressed] best 6802 combination reg byte a [ keyboard_key_pressed::return#3 ] +Attempting to uplift remaining variables inzp[1]:7 [ keyboard_key_pressed::return#4 ] +Uplifting [keyboard_key_pressed] best 6202 combination reg byte a [ keyboard_key_pressed::return#4 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -1283,37 +1285,37 @@ FINAL SYMBOL TABLE (const byte) RED = (byte) 2 (const byte*) SCREEN = (byte*) 1024 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2.0000002E7 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333333.6666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#4 reg byte x 2.0 +(byte) keyboard_key_pressed::key#4 reg byte x 1.0000001E7 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 67.66666666666667 -(byte) keyboard_key_pressed::return#10 reg byte a 202.0 -(byte) keyboard_key_pressed::return#2 reg byte a 202.0 -(byte) keyboard_key_pressed::return#3 reg byte a 202.0 -(byte) keyboard_key_pressed::return#4 reg byte a 202.0 +(byte) keyboard_key_pressed::return#0 reg byte a 1883334.1666666665 +(byte) keyboard_key_pressed::return#10 reg byte a 2000002.0 +(byte) keyboard_key_pressed::return#2 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#3 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#4 reg byte a 200002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 2.0000002E7 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 reg byte a 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.10000002E8 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() (label) main::@1 (void()) menu() -(byte~) menu::$0 reg byte a 202.0 -(byte~) menu::$4 reg byte a 202.0 -(byte~) menu::$7 reg byte a 202.0 +(byte~) menu::$0 reg byte a 200002.0 +(byte~) menu::$4 reg byte a 200002.0 +(byte~) menu::$7 reg byte a 200002.0 (label) menu::@1 (label) menu::@10 (label) menu::@2 @@ -1326,7 +1328,7 @@ FINAL SYMBOL TABLE (label) menu::@9 (label) menu::@return (void()) pressed() -(byte~) pressed::$1 reg byte a 202.0 +(byte~) pressed::$1 reg byte a 2000002.0 (label) pressed::@1 (label) pressed::@2 (label) pressed::@return diff --git a/src/test/ref/keyboard-glitch.sym b/src/test/ref/keyboard-glitch.sym index a23a8fcca..c548d3be6 100644 --- a/src/test/ref/keyboard-glitch.sym +++ b/src/test/ref/keyboard-glitch.sym @@ -13,37 +13,37 @@ (const byte) RED = (byte) 2 (const byte*) SCREEN = (byte*) 1024 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2.0000002E7 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333333.6666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#4 reg byte x 2.0 +(byte) keyboard_key_pressed::key#4 reg byte x 1.0000001E7 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 67.66666666666667 -(byte) keyboard_key_pressed::return#10 reg byte a 202.0 -(byte) keyboard_key_pressed::return#2 reg byte a 202.0 -(byte) keyboard_key_pressed::return#3 reg byte a 202.0 -(byte) keyboard_key_pressed::return#4 reg byte a 202.0 +(byte) keyboard_key_pressed::return#0 reg byte a 1883334.1666666665 +(byte) keyboard_key_pressed::return#10 reg byte a 2000002.0 +(byte) keyboard_key_pressed::return#2 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#3 reg byte a 200002.0 +(byte) keyboard_key_pressed::return#4 reg byte a 200002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 2.0000002E7 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3.6666667333333336E7 +(byte) keyboard_matrix_read::return#2 reg byte a 2.0000002E7 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 1.10000002E8 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() (label) main::@1 (void()) menu() -(byte~) menu::$0 reg byte a 202.0 -(byte~) menu::$4 reg byte a 202.0 -(byte~) menu::$7 reg byte a 202.0 +(byte~) menu::$0 reg byte a 200002.0 +(byte~) menu::$4 reg byte a 200002.0 +(byte~) menu::$7 reg byte a 200002.0 (label) menu::@1 (label) menu::@10 (label) menu::@2 @@ -56,7 +56,7 @@ (label) menu::@9 (label) menu::@return (void()) pressed() -(byte~) pressed::$1 reg byte a 202.0 +(byte~) pressed::$1 reg byte a 2000002.0 (label) pressed::@1 (label) pressed::@2 (label) pressed::@return diff --git a/src/test/ref/kickasm-uses-prevent-deletion.log b/src/test/ref/kickasm-uses-prevent-deletion.log index 4380e6800..7e818112e 100644 --- a/src/test/ref/kickasm-uses-prevent-deletion.log +++ b/src/test/ref/kickasm-uses-prevent-deletion.log @@ -171,8 +171,8 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL) ← (const byte) WHITE [ ] ( [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index b94f97c04..185bb43ab 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -116,10 +116,9 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a -Statement [48] (word~) point_init::$9 ← *((const word*) x_start + (byte~) point_init::$20) << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$9 ] ) always clobbers reg byte a +Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$18) - (signed word)*((const word*) x_start + (byte~) point_init::$18) [ point_init::point_idx#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [37] (signed word~) point_init::$3 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$4 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [40] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [41] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [43] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [44] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [48] (word~) point_init::$9 ← *((const word*) x_start + (byte~) point_init::$20) << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$9 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:55 [ point_init::$20 ] -Statement [49] *((const word*) x_cur + (byte~) point_init::$20) ← (word~) point_init::$9 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$10 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$20 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$10 ] ) always clobbers reg byte a -Statement [51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$11 ] ) always clobbers reg byte a -Statement [52] *((const word*) y_cur + (byte~) point_init::$20) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a -Statement [53] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const byte) DELAY [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$14 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$14 ] ) always clobbers reg byte a -Statement [63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] ) always clobbers reg byte a -Statement [65] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ) always clobbers reg byte a -Statement [67] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ) always clobbers reg byte a -Statement [69] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [72] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [49] *((const word*) x_cur + (byte~) point_init::$20) ← (word~) point_init::$9 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [50] (word~) point_init::$10 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$20 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$11 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [52] *((const word*) y_cur + (byte~) point_init::$20) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [53] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const byte) DELAY [ ] ( main:2::point_init:20 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [56] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [65] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [67] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [69] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [72] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [75] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [89] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] ) always clobbers reg byte a -Statement [91] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [75] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [86] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [89] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [91] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ divr16u::i#2 divr16u::i#1 ] -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ screen_fill::x#2 screen_fill::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:24 [ screen_fill::x#2 screen_fill::x#1 ] -Statement [119] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_yhi) w= *((const byte*) bitmap_plot_ylo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [120] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [119] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_yhi) w= *((const byte*) bitmap_plot_ylo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [120] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ 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[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (byte~) main::$10 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$10 ] ( main:2 [ main::i#2 main::$10 ] ) always clobbers reg byte a -Statement [22] (word) bitmap_plot::x#0 ← *((const word*) x_start + (byte~) main::$10) [ main::i#2 bitmap_plot::x#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [35] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 ] ) always clobbers reg byte a -Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$18) - (signed word)*((const word*) x_start + (byte~) point_init::$18) [ point_init::point_idx#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] ) always clobbers reg byte a -Statement [37] (signed word~) point_init::$3 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ) always clobbers reg byte a -Statement [38] (signed word~) point_init::$4 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ) always clobbers reg byte a -Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [40] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [41] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a -Statement [43] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a -Statement [44] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a -Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a -Statement [48] (word~) point_init::$9 ← *((const word*) x_start + (byte~) point_init::$20) << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$9 ] ) always clobbers reg byte a -Statement [49] *((const word*) x_cur + (byte~) point_init::$20) ← (word~) point_init::$9 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$10 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$20 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$10 ] ) always clobbers reg byte a -Statement [51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$11 ] ) always clobbers reg byte a -Statement [52] *((const word*) y_cur + (byte~) point_init::$20) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] ) always clobbers reg byte a -Statement [53] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const byte) DELAY [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$14 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$14 ] ) always clobbers reg byte a -Statement [63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] ) always clobbers reg byte a -Statement [65] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ) always clobbers reg byte a -Statement [67] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ) always clobbers reg byte a -Statement [69] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [72] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ) always clobbers reg byte a -Statement [75] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [89] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] ) always clobbers reg byte a -Statement [91] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y -Statement [119] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_yhi) w= *((const byte*) bitmap_plot_ylo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#0 ] ) always clobbers reg byte a -Statement [120] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (byte~) main::$10 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$10 ] ( main:2 [ main::i#2 main::$10 ] { } ) always clobbers reg byte a +Statement [22] (word) bitmap_plot::x#0 ← *((const word*) x_start + (byte~) main::$10) [ main::i#2 bitmap_plot::x#0 ] ( main:2 [ main::i#2 bitmap_plot::x#0 ] { } ) always clobbers reg byte a +Statement [27] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a +Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { } ) always clobbers reg byte a +Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a +Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [35] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$18 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$18) - (signed word)*((const word*) x_start + (byte~) point_init::$18) [ point_init::point_idx#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [37] (signed word~) point_init::$3 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$4 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$3 point_init::$4 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [40] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [41] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [43] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [44] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [48] (word~) point_init::$9 ← *((const word*) x_start + (byte~) point_init::$20) << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$9 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$9 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [49] *((const word*) x_cur + (byte~) point_init::$20) ← (word~) point_init::$9 [ point_init::point_idx#0 point_init::$20 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [50] (word~) point_init::$10 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$20 point_init::$10 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4 [ point_init::point_idx#0 point_init::$20 point_init::$11 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$20 point_init::$11 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [52] *((const word*) y_cur + (byte~) point_init::$20) ← (word~) point_init::$11 [ point_init::point_idx#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [53] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const byte) DELAY [ ] ( main:2::point_init:20 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [56] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4 [ point_init::point_idx#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::$16 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [65] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [67] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [69] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [72] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [75] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [86] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::return#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [89] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [91] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:79 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_yhi) w= *((const byte*) bitmap_plot_ylo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a +Statement [120] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a +Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y +Statement [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a +Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp[2]:3 , Potential registers zp[2]:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp[2]:5 , @@ -3801,41 +3795,41 @@ Potential registers zp[1]:92 [ bitmap_init::$5 ] : zp[1]:92 , reg byte a , reg b Potential registers zp[1]:93 [ bitmap_init::$6 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 887.75: zp[2]:14 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp[2]:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp[1]:86 [ divr16u::$1 ] 202: zp[1]:87 [ divr16u::$2 ] 167.04: zp[1]:20 [ divr16u::i#2 divr16u::i#1 ] 68.54: zp[2]:16 [ divr16u::dividend#2 divr16u::dividend#0 ] 11.33: zp[2]:76 [ divr16u::divisor#0 ] 4: zp[2]:78 [ divr16u::return#2 ] -Uplift Scope [bitmap_clear] 227.6: zp[2]:26 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp[1]:28 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:88 [ bitmap_clear::bitmap#0 ] -Uplift Scope [screen_fill] 221.6: zp[2]:22 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp[1]:24 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] -Uplift Scope [bitmap_init] 39.88: zp[2]:32 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:29 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:30 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:31 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:91 [ bitmap_init::$4 ] 22: zp[1]:92 [ bitmap_init::$5 ] 22: zp[1]:93 [ bitmap_init::$6 ] 5.5: zp[1]:90 [ bitmap_init::$7 ] -Uplift Scope [point_init] 14: zp[2]:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp[2]:51 [ point_init::$4 ] 4: zp[2]:56 [ point_init::$9 ] 4: zp[2]:58 [ point_init::$10 ] 4: zp[2]:60 [ point_init::$11 ] 4: zp[2]:68 [ point_init::x_stepf#0 ] 4: zp[1]:70 [ point_init::$14 ] 2: zp[1]:46 [ point_init::$18 ] 2: zp[2]:49 [ point_init::$3 ] 2: zp[1]:71 [ point_init::$16 ] 2: zp[2]:72 [ point_init::abs16s2_return#0 ] 2: zp[2]:74 [ point_init::abs16s1_return#0 ] 1.6: zp[1]:55 [ point_init::$20 ] 0.68: zp[1]:34 [ point_init::point_idx#0 ] 0.56: zp[2]:47 [ point_init::x_diff#1 ] 0.5: zp[2]:53 [ point_init::y_diff#0 ] -Uplift Scope [divr16s] 14: zp[2]:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp[2]:12 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.75: zp[2]:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp[1]:11 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 4: zp[2]:66 [ divr16s::return#3 ] 2: zp[2]:64 [ divr16s::rem#0 ] 2: zp[2]:84 [ divr16s::remu#1 ] 1: zp[2]:80 [ divr16s::resultu#0 ] 1: zp[2]:82 [ divr16s::divisoru#1 ] 0.67: zp[2]:62 [ divr16s::divisor#0 ] -Uplift Scope [main] 24.36: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:35 [ main::$10 ] -Uplift Scope [bitmap_plot] 15: zp[1]:38 [ bitmap_plot::y#0 ] 4: zp[2]:41 [ bitmap_plot::$1 ] 4: zp[1]:45 [ bitmap_plot::$2 ] 3: zp[2]:36 [ bitmap_plot::x#0 ] 3: zp[2]:43 [ bitmap_plot::plotter#1 ] 1: zp[2]:39 [ bitmap_plot::plotter#0 ] +Uplift Scope [divr16u] 87,655,010.75: zp[2]:14 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 33,502,003.55: zp[2]:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 20,000,002: zp[1]:86 [ divr16u::$1 ] 20,000,002: zp[1]:87 [ divr16u::$2 ] 16,538,463.19: zp[1]:20 [ divr16u::i#2 divr16u::i#1 ] 6,785,714.96: zp[2]:16 [ divr16u::dividend#2 divr16u::dividend#0 ] 1,111,666.83: zp[2]:76 [ divr16u::divisor#0 ] 20,002: zp[2]:78 [ divr16u::return#2 ] +Uplift Scope [divr16s] 70,007: zp[2]:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 47,005: zp[2]:12 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 43,754.38: zp[2]:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 20,002: zp[1]:11 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 10,001: zp[2]:84 [ divr16s::remu#1 ] 7,001: zp[2]:64 [ divr16s::rem#0 ] 5,000.5: zp[2]:80 [ divr16s::resultu#0 ] 5,000.5: zp[2]:82 [ divr16s::divisoru#1 ] 2,333.67: zp[2]:62 [ divr16s::divisor#0 ] 2,002: zp[2]:66 [ divr16s::return#3 ] +Uplift Scope [bitmap_clear] 22,007.6: zp[2]:26 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 21,668.83: zp[1]:28 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 1,835.17: zp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 101: zp[2]:88 [ bitmap_clear::bitmap#0 ] +Uplift Scope [screen_fill] 21,704.6: zp[2]:22 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 21,668.83: zp[1]:24 [ screen_fill::x#2 screen_fill::x#1 ] 1,835.17: zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] +Uplift Scope [point_init] 7,007: zp[2]:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 4,504.5: zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 2,002: zp[2]:51 [ point_init::$4 ] 2,002: zp[2]:56 [ point_init::$9 ] 2,002: zp[2]:58 [ point_init::$10 ] 2,002: zp[2]:60 [ point_init::$11 ] 2,002: zp[2]:68 [ point_init::x_stepf#0 ] 2,002: zp[1]:70 [ point_init::$14 ] 1,001: zp[1]:46 [ point_init::$18 ] 1,001: zp[2]:49 [ point_init::$3 ] 1,001: zp[1]:71 [ point_init::$16 ] 1,001: zp[2]:72 [ point_init::abs16s2_return#0 ] 1,001: zp[2]:74 [ point_init::abs16s1_return#0 ] 800.8: zp[1]:55 [ point_init::$20 ] 278.06: zp[2]:47 [ point_init::x_diff#1 ] 250.25: zp[2]:53 [ point_init::y_diff#0 ] 179.62: zp[1]:34 [ point_init::point_idx#0 ] +Uplift Scope [bitmap_init] 3,628.62: zp[2]:32 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:29 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:30 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:31 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:91 [ bitmap_init::$4 ] 2,002: zp[1]:92 [ bitmap_init::$5 ] 2,002: zp[1]:93 [ bitmap_init::$6 ] 500.5: zp[1]:90 [ bitmap_init::$7 ] +Uplift Scope [bitmap_plot] 2,103: zp[1]:38 [ bitmap_plot::y#0 ] 2,002: zp[2]:41 [ bitmap_plot::$1 ] 2,002: zp[1]:45 [ bitmap_plot::$2 ] 1,501.5: zp[2]:43 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:39 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:36 [ bitmap_plot::x#0 ] +Uplift Scope [main] 223.64: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:35 [ main::$10 ] Uplift Scope [] Uplifting [divr16u] best 30437 combination zp[2]:14 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:18 [ 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[2]:16 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:76 [ divr16u::divisor#0 ] zp[2]:78 [ divr16u::return#2 ] -Uplifting [bitmap_clear] best 29537 combination zp[2]:26 [ 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[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:88 [ bitmap_clear::bitmap#0 ] -Uplifting [screen_fill] best 28637 combination zp[2]:22 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [bitmap_init] best 28127 combination zp[2]:32 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:92 [ bitmap_init::$5 ] zp[1]:93 [ bitmap_init::$6 ] zp[1]:90 [ bitmap_init::$7 ] -Limited combination testing to 100 combinations of 15360 possible. -Uplifting [point_init] best 28101 combination zp[2]:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp[2]:51 [ point_init::$4 ] zp[2]:56 [ point_init::$9 ] zp[2]:58 [ point_init::$10 ] zp[2]:60 [ point_init::$11 ] zp[2]:68 [ point_init::x_stepf#0 ] reg byte a [ point_init::$14 ] reg byte a [ point_init::$18 ] zp[2]:49 [ point_init::$3 ] reg byte a [ point_init::$16 ] zp[2]:72 [ point_init::abs16s2_return#0 ] zp[2]:74 [ point_init::abs16s1_return#0 ] reg byte x [ point_init::$20 ] zp[1]:34 [ point_init::point_idx#0 ] zp[2]:47 [ point_init::x_diff#1 ] zp[2]:53 [ point_init::y_diff#0 ] +Uplifting [divr16s] best 30426 combination zp[2]:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:12 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp[2]:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:84 [ divr16s::remu#1 ] zp[2]:64 [ divr16s::rem#0 ] zp[2]:80 [ divr16s::resultu#0 ] zp[2]:82 [ divr16s::divisoru#1 ] zp[2]:62 [ divr16s::divisor#0 ] zp[2]:66 [ divr16s::return#3 ] +Uplifting [bitmap_clear] best 29526 combination zp[2]:26 [ 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[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:88 [ bitmap_clear::bitmap#0 ] +Uplifting [screen_fill] best 28626 combination zp[2]:22 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [point_init] best 28600 combination zp[2]:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp[2]:51 [ point_init::$4 ] zp[2]:56 [ point_init::$9 ] zp[2]:58 [ point_init::$10 ] zp[2]:60 [ point_init::$11 ] zp[2]:68 [ point_init::x_stepf#0 ] reg byte a [ point_init::$14 ] reg byte a [ point_init::$18 ] zp[2]:49 [ point_init::$3 ] reg byte a [ point_init::$16 ] zp[2]:72 [ point_init::abs16s2_return#0 ] zp[2]:74 [ point_init::abs16s1_return#0 ] reg byte x [ point_init::$20 ] zp[2]:47 [ point_init::x_diff#1 ] zp[2]:53 [ point_init::y_diff#0 ] zp[1]:34 [ point_init::point_idx#0 ] Limited combination testing to 100 combinations of 576 possible. -Uplifting [divr16s] best 28090 combination zp[2]:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:12 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp[2]:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:66 [ divr16s::return#3 ] zp[2]:64 [ divr16s::rem#0 ] zp[2]:84 [ divr16s::remu#1 ] zp[2]:80 [ divr16s::resultu#0 ] zp[2]:82 [ divr16s::divisoru#1 ] zp[2]:62 [ divr16s::divisor#0 ] -Uplifting [main] best 28050 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$10 ] -Uplifting [bitmap_plot] best 28013 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:41 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:36 [ bitmap_plot::x#0 ] zp[2]:43 [ bitmap_plot::plotter#1 ] zp[2]:39 [ bitmap_plot::plotter#0 ] -Uplifting [] best 28013 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 28013 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [bitmap_init] best 28090 combination zp[2]:32 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:92 [ bitmap_init::$5 ] zp[1]:93 [ bitmap_init::$6 ] zp[1]:90 [ bitmap_init::$7 ] +Limited combination testing to 100 combinations of 15360 possible. +Uplifting [bitmap_plot] best 28051 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:41 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:43 [ bitmap_plot::plotter#1 ] zp[2]:39 [ bitmap_plot::plotter#0 ] zp[2]:36 [ bitmap_plot::x#0 ] +Uplifting [main] best 28011 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$10 ] +Uplifting [] best 28011 combination Attempting to uplift remaining variables inzp[1]:92 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 27953 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 27951 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:93 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 27893 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 27891 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [screen_fill] best 27893 combination zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [screen_fill] best 27891 combination zp[1]:21 [ screen_fill::y#4 screen_fill::y#1 ] Attempting to uplift remaining variables inzp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 27893 combination zp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 27891 combination zp[1]:25 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp[1]:90 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 27893 combination zp[1]:90 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 27891 combination zp[1]:90 [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 27891 combination zp[1]:2 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp[1]:34 [ point_init::point_idx#0 ] -Uplifting [point_init] best 27893 combination zp[1]:34 [ point_init::point_idx#0 ] +Uplifting [point_init] best 27891 combination zp[1]:34 [ point_init::point_idx#0 ] Coalescing zero page register [ zp[2]:12 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp[2]:80 [ divr16s::resultu#0 ] ] - score: 2 Coalescing zero page register [ zp[1]:2 [ main::i#2 main::i#1 ] ] with [ zp[1]:34 [ point_init::point_idx#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp[2]:74 [ point_init::abs16s1_return#0 ] ] - score: 1 @@ -4070,11 +4064,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __1+1 sta.z plotter+1 - // [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 - lda.z x - // [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa - tay - lda bitmap_plot_bit,y + // [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1 + ldx.z x + // [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + lda bitmap_plot_bit,x ldy #0 ora (plotter),y ldy #0 @@ -4994,8 +4987,8 @@ Removing instruction __b5: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [148] bmi abs16s1___b1 to bpl -Fixing long branch [157] bmi abs16s2___b1 to bpl +Fixing long branch [147] bmi abs16s1___b1 to bpl +Fixing long branch [156] bmi abs16s2___b1 to bpl FINAL SYMBOL TABLE (label) @1 @@ -5024,22 +5017,22 @@ FINAL SYMBOL TABLE (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap -(word) bitmap_clear::bitmap#0 bitmap zp[2]:5 2.0 -(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:5 42.599999999999994 -(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:5 157.0 -(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:5 24.0 -(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:5 4.0 +(word) bitmap_clear::bitmap#0 bitmap zp[2]:5 101.0 +(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:5 4200.6 +(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:5 15502.0 +(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:5 2103.0 +(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:5 202.0 (byte) bitmap_clear::x -(byte) bitmap_clear::x#1 reg byte x 151.5 -(byte) bitmap_clear::x#2 reg byte x 67.33333333333333 +(byte) bitmap_clear::x#1 reg byte x 15001.5 +(byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y -(byte) bitmap_clear::y#1 y zp[1]:19 16.5 -(byte) bitmap_clear::y#4 y zp[1]:19 3.6666666666666665 +(byte) bitmap_clear::y#1 y zp[1]:19 1501.5 +(byte) bitmap_clear::y#4 y zp[1]:19 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) -(byte~) bitmap_init::$4 reg byte a 22.0 -(byte~) bitmap_init::$5 reg byte a 22.0 -(byte~) bitmap_init::$6 reg byte a 22.0 -(byte~) bitmap_init::$7 zp[1]:19 5.5 +(byte~) bitmap_init::$4 reg byte a 2002.0 +(byte~) bitmap_init::$5 reg byte a 2002.0 +(byte~) bitmap_init::$6 reg byte a 2002.0 +(byte~) bitmap_init::$7 zp[1]:19 500.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -5049,30 +5042,30 @@ FINAL SYMBOL TABLE (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits -(byte) bitmap_init::bits#1 reg byte a 11.0 -(byte) bitmap_init::bits#3 reg byte a 16.5 -(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte) bitmap_init::bits#1 reg byte a 1001.0 +(byte) bitmap_init::bits#3 reg byte a 1501.5 +(byte) bitmap_init::bits#4 reg byte a 667.3333333333334 (byte) bitmap_init::x -(byte) bitmap_init::x#1 reg byte x 16.5 -(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::x#1 reg byte x 1501.5 +(byte) bitmap_init::x#2 reg byte x 500.5 (byte) bitmap_init::y -(byte) bitmap_init::y#1 reg byte x 16.5 -(byte) bitmap_init::y#2 reg byte x 5.5 +(byte) bitmap_init::y#1 reg byte x 1501.5 +(byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 22.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 6.875 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 11.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 2002.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 625.625 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 1001.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 zp[2]:13 4.0 -(byte~) bitmap_plot::$2 reg byte a 4.0 +(word~) bitmap_plot::$1 zp[2]:13 2002.0 +(byte~) bitmap_plot::$2 reg byte x 2002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:11 1.0 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:11 3.0 +(word) bitmap_plot::plotter#0 plotter zp[2]:11 500.5 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:11 1501.5 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:9 3.0 +(word) bitmap_plot::x#0 x zp[2]:9 420.59999999999997 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 15.0 +(byte) bitmap_plot::y#0 reg byte x 2103.0 (const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } @@ -5092,33 +5085,33 @@ FINAL SYMBOL TABLE (signed word) divr16s::dividend (word) divr16s::dividendu (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 divisor zp[2]:9 0.6666666666666666 +(signed word) divr16s::divisor#0 divisor zp[2]:9 2333.6666666666665 (word) divr16s::divisoru -(signed word) divr16s::divisoru#1 divisoru zp[2]:9 1.0 -(word) divr16s::divisoru#3 divisoru zp[2]:9 6.0 -(word) divr16s::divisoru#4 divisoru zp[2]:9 4.0 -(word) divr16s::divisoru#5 divisoru zp[2]:9 4.0 +(signed word) divr16s::divisoru#1 divisoru zp[2]:9 5000.5 +(word) divr16s::divisoru#3 divisoru zp[2]:9 30003.0 +(word) divr16s::divisoru#4 divisoru zp[2]:9 20002.0 +(word) divr16s::divisoru#5 divisoru zp[2]:9 20002.0 (byte) divr16s::neg -(byte) divr16s::neg#2 reg byte y 2.0 -(byte) divr16s::neg#3 reg byte y 1.0 -(byte) divr16s::neg#4 reg byte y 1.0 +(byte) divr16s::neg#2 reg byte y 10001.0 +(byte) divr16s::neg#3 reg byte y 5000.5 +(byte) divr16s::neg#4 reg byte y 5000.5 (signed word) divr16s::rem -(signed word) divr16s::rem#0 rem zp[2]:7 2.0 +(signed word) divr16s::rem#0 rem zp[2]:7 7001.0 (word) divr16s::remu -(signed word) divr16s::remu#1 remu zp[2]:7 2.0 -(word) divr16s::remu#3 remu zp[2]:7 0.75 -(word) divr16s::remu#7 remu zp[2]:7 4.0 -(word) divr16s::remu#8 remu zp[2]:7 4.0 +(signed word) divr16s::remu#1 remu zp[2]:7 10001.0 +(word) divr16s::remu#3 remu zp[2]:7 3750.375 +(word) divr16s::remu#7 remu zp[2]:7 20002.0 +(word) divr16s::remu#8 remu zp[2]:7 20002.0 (word) divr16s::resultu -(word) divr16s::resultu#0 resultu zp[2]:11 1.0 +(word) divr16s::resultu#0 resultu zp[2]:11 5000.5 (signed word) divr16s::return -(signed word) divr16s::return#1 return zp[2]:11 4.0 -(signed word) divr16s::return#2 return zp[2]:11 2.0 -(signed word) divr16s::return#3 return zp[2]:11 4.0 -(signed word) divr16s::return#7 return zp[2]:11 4.0 +(signed word) divr16s::return#1 return zp[2]:11 20002.0 +(signed word) divr16s::return#2 return zp[2]:11 7001.0 +(signed word) divr16s::return#3 return zp[2]:11 2002.0 +(signed word) divr16s::return#7 return zp[2]:11 20002.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 202.0 -(byte~) divr16u::$2 reg byte a 202.0 +(byte~) divr16u::$1 reg byte a 2.0000002E7 +(byte~) divr16u::$2 reg byte a 2.0000002E7 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -5126,30 +5119,30 @@ FINAL SYMBOL TABLE (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:13 25.25 -(word) divr16u::dividend#2 dividend zp[2]:13 43.285714285714285 +(word) divr16u::dividend#0 dividend zp[2]:13 2500000.25 +(word) divr16u::dividend#2 dividend zp[2]:13 4285714.714285715 (word) divr16u::divisor -(word) divr16u::divisor#0 divisor zp[2]:9 11.333333333333332 +(word) divr16u::divisor#0 divisor zp[2]:9 1111666.8333333335 (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 151.5 -(byte) divr16u::i#2 reg byte x 15.538461538461538 +(byte) divr16u::i#1 reg byte x 1.50000015E7 +(byte) divr16u::i#2 reg byte x 1538461.6923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:11 151.5 -(word) divr16u::quotient#2 quotient zp[2]:11 101.0 -(word) divr16u::quotient#3 quotient zp[2]:11 25.25 +(word) divr16u::quotient#1 quotient zp[2]:11 1.50000015E7 +(word) divr16u::quotient#2 quotient zp[2]:11 1.0000001E7 +(word) divr16u::quotient#3 quotient zp[2]:11 2500000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:7 75.75 -(word) divr16u::rem#1 rem zp[2]:7 202.0 -(word) divr16u::rem#2 rem zp[2]:7 202.0 -(word) divr16u::rem#3 rem zp[2]:7 2.0 -(word) divr16u::rem#4 rem zp[2]:7 204.0 -(word) divr16u::rem#5 rem zp[2]:7 101.0 -(word) divr16u::rem#9 rem zp[2]:7 101.0 +(word) divr16u::rem#0 rem zp[2]:7 7500000.75 +(word) divr16u::rem#1 rem zp[2]:7 2.0000002E7 +(word) divr16u::rem#2 rem zp[2]:7 2.0000002E7 +(word) divr16u::rem#3 rem zp[2]:7 55001.0 +(word) divr16u::rem#4 rem zp[2]:7 2.0100003E7 +(word) divr16u::rem#5 rem zp[2]:7 1.0000001E7 +(word) divr16u::rem#9 rem zp[2]:7 1.0000001E7 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:11 61.0 -(word) divr16u::return#2 return zp[2]:11 4.0 +(word) divr16u::return#0 return zp[2]:11 6002000.8 +(word) divr16u::return#2 return zp[2]:11 20002.0 (void()) main() -(byte~) main::$10 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -5159,8 +5152,8 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@8 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 7.857142857142857 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 72.14285714285714 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -5174,15 +5167,15 @@ FINAL SYMBOL TABLE (byte) main::vicSelectGfxBank1_toDd001_return (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) SCREEN/(byte) $40 (void()) point_init((byte) point_init::point_idx) -(word~) point_init::$10 zp[2]:17 4.0 -(word~) point_init::$11 zp[2]:17 4.0 -(byte~) point_init::$14 reg byte a 4.0 -(byte~) point_init::$16 reg byte a 2.0 -(byte~) point_init::$18 reg byte a 2.0 -(byte~) point_init::$20 reg byte x 1.6 -(signed word~) point_init::$3 zp[2]:7 2.0 -(signed word~) point_init::$4 zp[2]:13 4.0 -(word~) point_init::$9 zp[2]:15 4.0 +(word~) point_init::$10 zp[2]:17 2002.0 +(word~) point_init::$11 zp[2]:17 2002.0 +(byte~) point_init::$14 reg byte a 2002.0 +(byte~) point_init::$16 reg byte a 1001.0 +(byte~) point_init::$18 reg byte a 1001.0 +(byte~) point_init::$20 reg byte x 800.8 +(signed word~) point_init::$3 zp[2]:7 1001.0 +(signed word~) point_init::$4 zp[2]:13 2002.0 +(word~) point_init::$9 zp[2]:15 2002.0 (label) point_init::@1 (label) point_init::@2 (label) point_init::@3 @@ -5196,29 +5189,29 @@ FINAL SYMBOL TABLE (label) point_init::abs16s1_@3 (label) point_init::abs16s1_@return (word) point_init::abs16s1_return -(signed word) point_init::abs16s1_return#0 abs16s1_return zp[2]:3 2.0 -(word) point_init::abs16s1_return#2 abs16s1_return zp[2]:3 1.0 -(word) point_init::abs16s1_return#5 abs16s1_return zp[2]:3 4.0 -(word) point_init::abs16s1_return#6 abs16s1_return zp[2]:3 4.0 +(signed word) point_init::abs16s1_return#0 abs16s1_return zp[2]:3 1001.0 +(word) point_init::abs16s1_return#2 abs16s1_return zp[2]:3 500.5 +(word) point_init::abs16s1_return#5 abs16s1_return zp[2]:3 2002.0 +(word) point_init::abs16s1_return#6 abs16s1_return zp[2]:3 2002.0 (signed word) point_init::abs16s1_w (label) point_init::abs16s2 (label) point_init::abs16s2_@1 (label) point_init::abs16s2_@3 (label) point_init::abs16s2_@return (word) point_init::abs16s2_return -(signed word) point_init::abs16s2_return#0 abs16s2_return zp[2]:5 2.0 -(word) point_init::abs16s2_return#2 abs16s2_return zp[2]:5 6.0 -(word) point_init::abs16s2_return#5 abs16s2_return zp[2]:5 4.0 -(word) point_init::abs16s2_return#6 abs16s2_return zp[2]:5 4.0 +(signed word) point_init::abs16s2_return#0 abs16s2_return zp[2]:5 1001.0 +(word) point_init::abs16s2_return#2 abs16s2_return zp[2]:5 3003.0 +(word) point_init::abs16s2_return#5 abs16s2_return zp[2]:5 2002.0 +(word) point_init::abs16s2_return#6 abs16s2_return zp[2]:5 2002.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp[1]:2 0.6764705882352942 +(byte) point_init::point_idx#0 point_idx zp[1]:2 179.61764705882354 (signed word) point_init::x_diff -(signed word) point_init::x_diff#1 x_diff zp[2]:9 0.5555555555555556 +(signed word) point_init::x_diff#1 x_diff zp[2]:9 278.05555555555554 (signed word) point_init::x_stepf -(signed word) point_init::x_stepf#0 x_stepf zp[2]:11 4.0 +(signed word) point_init::x_stepf#0 x_stepf zp[2]:11 2002.0 (signed word) point_init::y_diff -(signed word) point_init::y_diff#0 y_diff zp[2]:7 0.5 +(signed word) point_init::y_diff#0 y_diff zp[2]:7 250.25 (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (label) screen_fill::@1 (label) screen_fill::@2 @@ -5227,15 +5220,15 @@ FINAL SYMBOL TABLE (byte) screen_fill::ch (const byte) screen_fill::ch#0 ch = (byte) $10 (byte*) screen_fill::screen -(byte*) screen_fill::screen#1 screen zp[2]:3 42.599999999999994 -(byte*) screen_fill::screen#2 screen zp[2]:3 157.0 -(byte*) screen_fill::screen#3 screen zp[2]:3 22.0 +(byte*) screen_fill::screen#1 screen zp[2]:3 4200.6 +(byte*) screen_fill::screen#2 screen zp[2]:3 15502.0 +(byte*) screen_fill::screen#3 screen zp[2]:3 2002.0 (byte) screen_fill::x -(byte) screen_fill::x#1 reg byte x 151.5 -(byte) screen_fill::x#2 reg byte x 67.33333333333333 +(byte) screen_fill::x#1 reg byte x 15001.5 +(byte) screen_fill::x#2 reg byte x 6667.333333333333 (byte) screen_fill::y -(byte) screen_fill::y#1 y zp[1]:19 16.5 -(byte) screen_fill::y#4 y zp[1]:19 3.6666666666666665 +(byte) screen_fill::y#1 y zp[1]:19 1501.5 +(byte) screen_fill::y#4 y zp[1]:19 333.6666666666667 (const signed byte*) x_add[(const byte) SIZE] = { fill( SIZE, 0) } (const word*) x_cur[(const byte) SIZE] = { fill( SIZE, 0) } (const word*) x_end[(const byte) SIZE] = { (word) $14, (word) $a, (word) $14, (word) $14 } @@ -5260,7 +5253,7 @@ reg byte a [ main::$10 ] zp[2]:9 [ bitmap_plot::x#0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:11 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ point_init::$18 ] zp[2]:13 [ point_init::$4 bitmap_plot::$1 divr16u::dividend#2 divr16u::dividend#0 ] reg byte x [ point_init::$20 ] @@ -5277,7 +5270,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 21969 +Score: 21967 // File Comments // Animated lines drawn on a single color bitmap @@ -5453,12 +5446,11 @@ bitmap_plot: { adc.z __1+1 sta.z plotter+1 // (word)(const byte*) SCREEN/(byte) $40 (void()) point_init((byte) point_init::point_idx) -(word~) point_init::$10 zp[2]:17 4.0 -(word~) point_init::$11 zp[2]:17 4.0 -(byte~) point_init::$14 reg byte a 4.0 -(byte~) point_init::$16 reg byte a 2.0 -(byte~) point_init::$18 reg byte a 2.0 -(byte~) point_init::$20 reg byte x 1.6 -(signed word~) point_init::$3 zp[2]:7 2.0 -(signed word~) point_init::$4 zp[2]:13 4.0 -(word~) point_init::$9 zp[2]:15 4.0 +(word~) point_init::$10 zp[2]:17 2002.0 +(word~) point_init::$11 zp[2]:17 2002.0 +(byte~) point_init::$14 reg byte a 2002.0 +(byte~) point_init::$16 reg byte a 1001.0 +(byte~) point_init::$18 reg byte a 1001.0 +(byte~) point_init::$20 reg byte x 800.8 +(signed word~) point_init::$3 zp[2]:7 1001.0 +(signed word~) point_init::$4 zp[2]:13 2002.0 +(word~) point_init::$9 zp[2]:15 2002.0 (label) point_init::@1 (label) point_init::@2 (label) point_init::@3 @@ -196,29 +196,29 @@ (label) point_init::abs16s1_@3 (label) point_init::abs16s1_@return (word) point_init::abs16s1_return -(signed word) point_init::abs16s1_return#0 abs16s1_return zp[2]:3 2.0 -(word) point_init::abs16s1_return#2 abs16s1_return zp[2]:3 1.0 -(word) point_init::abs16s1_return#5 abs16s1_return zp[2]:3 4.0 -(word) point_init::abs16s1_return#6 abs16s1_return zp[2]:3 4.0 +(signed word) point_init::abs16s1_return#0 abs16s1_return zp[2]:3 1001.0 +(word) point_init::abs16s1_return#2 abs16s1_return zp[2]:3 500.5 +(word) point_init::abs16s1_return#5 abs16s1_return zp[2]:3 2002.0 +(word) point_init::abs16s1_return#6 abs16s1_return zp[2]:3 2002.0 (signed word) point_init::abs16s1_w (label) point_init::abs16s2 (label) point_init::abs16s2_@1 (label) point_init::abs16s2_@3 (label) point_init::abs16s2_@return (word) point_init::abs16s2_return -(signed word) point_init::abs16s2_return#0 abs16s2_return zp[2]:5 2.0 -(word) point_init::abs16s2_return#2 abs16s2_return zp[2]:5 6.0 -(word) point_init::abs16s2_return#5 abs16s2_return zp[2]:5 4.0 -(word) point_init::abs16s2_return#6 abs16s2_return zp[2]:5 4.0 +(signed word) point_init::abs16s2_return#0 abs16s2_return zp[2]:5 1001.0 +(word) point_init::abs16s2_return#2 abs16s2_return zp[2]:5 3003.0 +(word) point_init::abs16s2_return#5 abs16s2_return zp[2]:5 2002.0 +(word) point_init::abs16s2_return#6 abs16s2_return zp[2]:5 2002.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp[1]:2 0.6764705882352942 +(byte) point_init::point_idx#0 point_idx zp[1]:2 179.61764705882354 (signed word) point_init::x_diff -(signed word) point_init::x_diff#1 x_diff zp[2]:9 0.5555555555555556 +(signed word) point_init::x_diff#1 x_diff zp[2]:9 278.05555555555554 (signed word) point_init::x_stepf -(signed word) point_init::x_stepf#0 x_stepf zp[2]:11 4.0 +(signed word) point_init::x_stepf#0 x_stepf zp[2]:11 2002.0 (signed word) point_init::y_diff -(signed word) point_init::y_diff#0 y_diff zp[2]:7 0.5 +(signed word) point_init::y_diff#0 y_diff zp[2]:7 250.25 (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (label) screen_fill::@1 (label) screen_fill::@2 @@ -227,15 +227,15 @@ (byte) screen_fill::ch (const byte) screen_fill::ch#0 ch = (byte) $10 (byte*) screen_fill::screen -(byte*) screen_fill::screen#1 screen zp[2]:3 42.599999999999994 -(byte*) screen_fill::screen#2 screen zp[2]:3 157.0 -(byte*) screen_fill::screen#3 screen zp[2]:3 22.0 +(byte*) screen_fill::screen#1 screen zp[2]:3 4200.6 +(byte*) screen_fill::screen#2 screen zp[2]:3 15502.0 +(byte*) screen_fill::screen#3 screen zp[2]:3 2002.0 (byte) screen_fill::x -(byte) screen_fill::x#1 reg byte x 151.5 -(byte) screen_fill::x#2 reg byte x 67.33333333333333 +(byte) screen_fill::x#1 reg byte x 15001.5 +(byte) screen_fill::x#2 reg byte x 6667.333333333333 (byte) screen_fill::y -(byte) screen_fill::y#1 y zp[1]:19 16.5 -(byte) screen_fill::y#4 y zp[1]:19 3.6666666666666665 +(byte) screen_fill::y#1 y zp[1]:19 1501.5 +(byte) screen_fill::y#4 y zp[1]:19 333.6666666666667 (const signed byte*) x_add[(const byte) SIZE] = { fill( SIZE, 0) } (const word*) x_cur[(const byte) SIZE] = { fill( SIZE, 0) } (const word*) x_end[(const byte) SIZE] = { (word) $14, (word) $a, (word) $14, (word) $14 } @@ -260,7 +260,7 @@ reg byte a [ main::$10 ] zp[2]:9 [ bitmap_plot::x#0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] reg byte x [ bitmap_plot::y#0 ] zp[2]:11 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] -reg byte a [ bitmap_plot::$2 ] +reg byte x [ bitmap_plot::$2 ] reg byte a [ point_init::$18 ] zp[2]:13 [ point_init::$4 bitmap_plot::$1 divr16u::dividend#2 divr16u::dividend#0 ] reg byte x [ point_init::$20 ] diff --git a/src/test/ref/linegen.asm b/src/test/ref/linegen.asm index eb32ac1c9..81bf18893 100644 --- a/src/test/ref/linegen.asm +++ b/src/test/ref/linegen.asm @@ -7,8 +7,9 @@ // Remainder after unsigned 16-bit division .label rem16u = $13 .label print_char_cursor = 5 - .label print_line_cursor = 2 + .label print_line_cursor = 3 main: { + .label i = 2 // lin16u_gen(557, 29793, lintab1, 20) lda #$400 sta.z print_line_cursor+1 jsr print_ln - ldx #0 + lda #0 + sta.z i __b1: // for(byte i=0; i<20; i++) - cpx #$14 + lda.z i + cmp #$14 bcc __b2 lda.z print_line_cursor sta.z print_char_cursor @@ -148,7 +151,7 @@ main: { rts __b2: // print_byte(i) - stx.z print_byte.b + ldx.z i lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -162,7 +165,7 @@ main: { sta.z print_str.str+1 jsr print_str // print_word(lintab1[i]) - txa + lda.z i asl tay lda lintab1,y @@ -177,7 +180,7 @@ main: { sta.z print_str.str+1 jsr print_str // print_word(lintab2[i]) - txa + lda.z i asl tay lda lintab2,y @@ -192,7 +195,7 @@ main: { sta.z print_str.str+1 jsr print_str // print_word(lintab3[i]) - txa + lda.z i asl tay lda lintab3,y @@ -203,7 +206,7 @@ main: { // print_ln() jsr print_ln // for(byte i=0; i<20; i++) - inx + inc.z i jmp __b1 lintab1: .fill 2*$14, 0 lintab2: .fill 2*$14, 0 @@ -241,22 +244,19 @@ print_ln: { print_word: { .label w = 7 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -268,10 +268,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log index a8f901f29..4484e1b4d 100644 --- a/src/test/ref/linegen.log +++ b/src/test/ref/linegen.log @@ -1380,112 +1380,112 @@ Inversing boolean not [10] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) Inversing boolean not [18] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [17] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 Inversing boolean not [40] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [39] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#11 (word) rem16u#2 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (word) rem16u#0 = (word) rem16u#27 (word) rem16u#24 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#26 (byte*) print_char_cursor#85 (byte*) print_screen#7 -Alias (byte*) print_str::str#10 = (byte*) print_str::str#11 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#78 (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#3 (byte*) print_line_cursor#13 (byte*) print_char_cursor#43 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#10 = (word) print_word::w#9 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#5 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#46 (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#3 = (byte) print_byte::b#4 -Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#48 (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#12 -Alias (byte*) print_line_cursor#14 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#13 (byte*) print_char_cursor#52 (byte*) print_line_cursor#4 (byte*) print_char_cursor#14 -Alias (byte*) print_screen#3 = (byte*) print_screen#5 (byte*) print_screen#6 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#31 (byte*) print_line_cursor#35 (byte*) print_line_cursor#27 -Alias (byte*) print_char_cursor#82 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#87 -Alias (word) rem16u#12 = (word) rem16u#3 -Alias (word) rem16u#13 = (word) rem16u#4 -Alias (word) rem16u#14 = (word) rem16u#5 (word) rem16u#49 (word) rem16u#47 (word) rem16u#45 (word) rem16u#43 (word) rem16u#41 (word) rem16u#39 (word) rem16u#37 (word) rem16u#35 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#42 (byte*) print_line_cursor#39 (byte*) print_line_cursor#36 (byte*) print_line_cursor#32 (byte*) print_line_cursor#28 (byte*) print_line_cursor#23 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#59 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#60 -Alias (byte) main::i#10 = (byte) main::i#3 (byte) main::i#2 (byte) main::i#8 (byte) main::i#4 (byte) main::i#9 (byte) main::i#5 (byte) main::i#6 (byte) main::i#11 (byte) main::i#7 -Alias (byte*) print_char_cursor#83 = (byte*) print_char_cursor#88 (byte*) print_char_cursor#84 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 (byte*) print_line_cursor#48 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 (byte*) print_line_cursor#40 (byte*) print_line_cursor#37 (byte*) print_line_cursor#33 (byte*) print_line_cursor#29 (byte*) print_line_cursor#46 (byte*) print_line_cursor#44 (byte*) print_line_cursor#41 (byte*) print_line_cursor#38 (byte*) print_line_cursor#34 (byte*) print_line_cursor#30 (byte*) print_line_cursor#25 -Alias (word) rem16u#15 = (word) rem16u#51 (word) rem16u#34 (word) rem16u#50 (word) rem16u#48 (word) rem16u#46 (word) rem16u#44 (word) rem16u#42 (word) rem16u#40 (word) rem16u#38 (word) rem16u#36 (word) rem16u#33 (word) rem16u#32 (word) rem16u#31 (word) rem16u#30 (word) rem16u#29 (word) rem16u#28 (word) rem16u#25 (word) rem16u#21 (word) rem16u#6 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#64 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#65 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#66 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#67 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#68 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#69 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#70 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#71 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#72 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#73 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#74 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#19 (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#38 -Alias (word) lin16u_gen::ampl#0 = (word~) lin16u_gen::$0 -Alias (word) divr16u::divisor#0 = (word~) lin16u_gen::$1 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (word) lin16u_gen::length#3 = (word) lin16u_gen::length#4 (word) lin16u_gen::length#7 -Alias (word) lin16u_gen::min#3 = (word) lin16u_gen::min#5 (word) lin16u_gen::min#4 -Alias (word*) lin16u_gen::lintab#6 = (word*) lin16u_gen::lintab#7 (word*) lin16u_gen::lintab#8 -Alias (word) rem16u#16 = (word) rem16u#7 -Alias (word) lin16u_gen::stepi#0 = (word~) lin16u_gen::$2 (word) lin16u_gen::stepi#1 -Alias (word) divr16u::divisor#1 = (word~) lin16u_gen::$3 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#17 = (word) rem16u#8 -Alias (word) lin16u_gen::stepf#0 = (word~) lin16u_gen::$4 -Alias (dword) lin16u_gen::step#0 = (dword~) lin16u_gen::$8 -Alias (dword) lin16u_gen::val#0 = (dword~) lin16u_gen::$9 -Alias (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#3 -Alias (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 -Alias (dword) lin16u_gen::step#1 = (dword) lin16u_gen::step#2 -Alias (word) lin16u_gen::i#2 = (word) lin16u_gen::i#3 -Alias (word) lin16u_gen::length#5 = (word) lin16u_gen::length#6 -Alias (word) rem16u#18 = (word) rem16u#26 (word) rem16u#23 (word) rem16u#9 -Alias (dword) lin16u_gen::val#1 = (dword~) lin16u_gen::$7 -Alias (word) rem16u#10 = (word) rem16u#19 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#77 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#11 rem16u#2 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias rem16u#0 = rem16u#27 rem16u#24 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#26 print_char_cursor#85 print_screen#7 +Alias print_str::str#10 = print_str::str#11 +Alias print_char_cursor#2 = print_char_cursor#40 print_char_cursor#78 print_char_cursor#41 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#12 print_char_cursor#3 print_line_cursor#13 print_char_cursor#43 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#10 = print_word::w#9 +Alias print_char_cursor#44 = print_char_cursor#5 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#45 = print_char_cursor#6 print_char_cursor#46 print_char_cursor#7 +Alias print_byte::b#3 = print_byte::b#4 +Alias print_char_cursor#47 = print_char_cursor#8 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#48 print_char_cursor#49 +Alias print_char_cursor#11 = print_char_cursor#51 print_char_cursor#12 +Alias print_line_cursor#14 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#13 print_char_cursor#52 print_line_cursor#4 print_char_cursor#14 +Alias print_screen#3 = print_screen#5 print_screen#6 print_screen#4 +Alias print_line_cursor#22 = print_line_cursor#31 print_line_cursor#35 print_line_cursor#27 +Alias print_char_cursor#82 = print_char_cursor#89 print_char_cursor#90 print_char_cursor#87 +Alias rem16u#12 = rem16u#3 +Alias rem16u#13 = rem16u#4 +Alias rem16u#14 = rem16u#5 rem16u#49 rem16u#47 rem16u#45 rem16u#43 rem16u#41 rem16u#39 rem16u#37 rem16u#35 +Alias print_line_cursor#15 = print_line_cursor#5 print_line_cursor#42 print_line_cursor#39 print_line_cursor#36 print_line_cursor#32 print_line_cursor#28 print_line_cursor#23 +Alias print_char_cursor#15 = print_char_cursor#53 +Alias print_char_cursor#16 = print_char_cursor#54 +Alias print_char_cursor#17 = print_char_cursor#55 +Alias print_char_cursor#18 = print_char_cursor#56 +Alias print_char_cursor#19 = print_char_cursor#57 +Alias print_char_cursor#20 = print_char_cursor#58 +Alias print_char_cursor#21 = print_char_cursor#59 +Alias print_line_cursor#16 = print_line_cursor#6 +Alias print_char_cursor#22 = print_char_cursor#60 +Alias main::i#10 = main::i#3 main::i#2 main::i#8 main::i#4 main::i#9 main::i#5 main::i#6 main::i#11 main::i#7 +Alias print_char_cursor#83 = print_char_cursor#88 print_char_cursor#84 +Alias print_line_cursor#24 = print_line_cursor#47 print_line_cursor#48 print_line_cursor#45 print_line_cursor#43 print_line_cursor#40 print_line_cursor#37 print_line_cursor#33 print_line_cursor#29 print_line_cursor#46 print_line_cursor#44 print_line_cursor#41 print_line_cursor#38 print_line_cursor#34 print_line_cursor#30 print_line_cursor#25 +Alias rem16u#15 = rem16u#51 rem16u#34 rem16u#50 rem16u#48 rem16u#46 rem16u#44 rem16u#42 rem16u#40 rem16u#38 rem16u#36 rem16u#33 rem16u#32 rem16u#31 rem16u#30 rem16u#29 rem16u#28 rem16u#25 rem16u#21 rem16u#6 +Alias print_char_cursor#23 = print_char_cursor#61 +Alias print_char_cursor#24 = print_char_cursor#62 +Alias print_char_cursor#25 = print_char_cursor#63 +Alias print_char_cursor#26 = print_char_cursor#64 +Alias print_char_cursor#27 = print_char_cursor#65 +Alias print_char_cursor#28 = print_char_cursor#66 +Alias print_char_cursor#29 = print_char_cursor#67 +Alias print_line_cursor#17 = print_line_cursor#7 +Alias print_char_cursor#30 = print_char_cursor#68 +Alias print_char_cursor#31 = print_char_cursor#69 +Alias print_char_cursor#32 = print_char_cursor#70 +Alias print_char_cursor#33 = print_char_cursor#71 +Alias print_char_cursor#34 = print_char_cursor#72 +Alias print_char_cursor#35 = print_char_cursor#73 +Alias print_char_cursor#36 = print_char_cursor#74 +Alias print_line_cursor#18 = print_line_cursor#8 print_line_cursor#19 print_line_cursor#9 +Alias print_char_cursor#37 = print_char_cursor#75 print_char_cursor#76 print_char_cursor#38 +Alias lin16u_gen::ampl#0 = lin16u_gen::$0 +Alias divr16u::divisor#0 = lin16u_gen::$1 +Alias divr16u::return#2 = divr16u::return#5 +Alias lin16u_gen::length#3 = lin16u_gen::length#4 lin16u_gen::length#7 +Alias lin16u_gen::min#3 = lin16u_gen::min#5 lin16u_gen::min#4 +Alias lin16u_gen::lintab#6 = lin16u_gen::lintab#7 lin16u_gen::lintab#8 +Alias rem16u#16 = rem16u#7 +Alias lin16u_gen::stepi#0 = lin16u_gen::$2 lin16u_gen::stepi#1 +Alias divr16u::divisor#1 = lin16u_gen::$3 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#17 = rem16u#8 +Alias lin16u_gen::stepf#0 = lin16u_gen::$4 +Alias lin16u_gen::step#0 = lin16u_gen::$8 +Alias lin16u_gen::val#0 = lin16u_gen::$9 +Alias lin16u_gen::val#2 = lin16u_gen::val#3 +Alias lin16u_gen::lintab#4 = lin16u_gen::lintab#5 +Alias lin16u_gen::step#1 = lin16u_gen::step#2 +Alias lin16u_gen::i#2 = lin16u_gen::i#3 +Alias lin16u_gen::length#5 = lin16u_gen::length#6 +Alias rem16u#18 = rem16u#26 rem16u#23 rem16u#9 +Alias lin16u_gen::val#1 = lin16u_gen::$7 +Alias rem16u#10 = rem16u#19 +Alias print_line_cursor#10 = print_line_cursor#20 +Alias print_char_cursor#39 = print_char_cursor#77 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6 Identical Phi Values (word) memset::num#1 (word) memset::num#0 @@ -2198,119 +2198,119 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 VARIABLE REGISTER WEIGHTS (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 20002.0 +(byte~) divr16u::$2 20002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#1 4.0 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 4.0 +(word) divr16u::dividend#0 2500.25 +(word) divr16u::dividend#1 202.0 +(word) divr16u::dividend#3 4429.142857142857 +(word) divr16u::dividend#5 1102.0 (word) divr16u::divisor -(word) divr16u::divisor#6 1.375 +(word) divr16u::divisor#6 1250.125 (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 15001.5 +(byte) divr16u::i#2 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 15001.5 +(word) divr16u::quotient#2 10001.0 +(word) divr16u::quotient#3 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 7500.75 +(word) divr16u::rem#1 20002.0 +(word) divr16u::rem#10 1102.0 +(word) divr16u::rem#11 10334.666666666666 +(word) divr16u::rem#2 20002.0 +(word) divr16u::rem#4 202.0 +(word) divr16u::rem#5 21003.0 +(word) divr16u::rem#6 10001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 4315.0 +(word) divr16u::return#2 202.0 +(word) divr16u::return#3 202.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$6 22.0 +(word~) lin16u_gen::$6 2002.0 (word) lin16u_gen::ampl -(word) lin16u_gen::ampl#0 4.0 +(word) lin16u_gen::ampl#0 202.0 (word) lin16u_gen::i -(word) lin16u_gen::i#1 22.0 -(word) lin16u_gen::i#2 5.5 +(word) lin16u_gen::i#1 2002.0 +(word) lin16u_gen::i#2 500.5 (word) lin16u_gen::length (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#3 11.0 -(word*) lin16u_gen::lintab#4 7.000000000000001 -(word*) lin16u_gen::lintab#6 0.16666666666666666 +(word*) lin16u_gen::lintab#3 1001.0 +(word*) lin16u_gen::lintab#4 620.8 +(word*) lin16u_gen::lintab#6 8.416666666666666 (word) lin16u_gen::max -(word) lin16u_gen::max#3 2.0 +(word) lin16u_gen::max#3 101.0 (word) lin16u_gen::min -(word) lin16u_gen::min#3 0.36363636363636365 +(word) lin16u_gen::min#3 18.363636363636363 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 1.4444444444444446 +(dword) lin16u_gen::step#0 122.44444444444446 (word) lin16u_gen::stepf -(word) lin16u_gen::stepf#0 4.0 +(word) lin16u_gen::stepf#0 202.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 0.8 +(word) lin16u_gen::stepi#0 40.4 (dword) lin16u_gen::val -(dword) lin16u_gen::val#0 4.0 -(dword) lin16u_gen::val#1 7.333333333333333 -(dword) lin16u_gen::val#2 8.75 +(dword) lin16u_gen::val#0 202.0 +(dword) lin16u_gen::val#1 667.3333333333334 +(dword) lin16u_gen::val#2 776.0 (void()) main() -(byte~) main::$27 22.0 -(byte~) main::$28 22.0 -(byte~) main::$29 22.0 +(byte~) main::$27 202.0 +(byte~) main::$28 202.0 +(byte~) main::$29 202.0 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#10 3.5 +(byte) main::i#1 202.0 +(byte) main::i#10 32.13636363636363 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 11.0 -(byte) print_byte::b#3 4.75 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 2002.0 +(byte) print_byte::b#2 101.0 +(byte) print_byte::b#3 5526.25 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 20002.0 +(byte) print_char::ch#1 20002.0 +(byte) print_char::ch#2 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#101 22.0 -(byte*) print_char_cursor#11 4.228571428571427 -(byte*) print_char_cursor#2 11.37037037037037 -(byte*) print_char_cursor#50 4.0 -(byte*) print_char_cursor#81 5.666666666666667 -(byte*) print_char_cursor#86 45.0 -(byte*) print_char_cursor#98 4.0 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#101 202.0 +(byte*) print_char_cursor#11 6038.5999999999985 +(byte*) print_char_cursor#2 11185.37037037037 +(byte*) print_char_cursor#50 110002.0 +(byte*) print_char_cursor#81 4034.6666666666665 +(byte*) print_char_cursor#86 1359.0 +(byte*) print_char_cursor#98 22.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 8.225 -(byte*) print_line_cursor#11 204.0 -(byte*) print_line_cursor#21 15.0 +(byte*) print_line_cursor#1 7505.674999999999 +(byte*) print_line_cursor#11 201003.0 +(byte*) print_line_cursor#21 1113.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#10 101.5 -(byte*) print_str::str#12 2.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#10 100251.25 +(byte*) print_str::str#12 1001.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#10 12.333333333333332 -(word) print_word::w#3 22.0 -(word) print_word::w#4 22.0 -(word) print_word::w#5 22.0 +(word) print_word::w#10 768.3333333333334 +(word) print_word::w#3 202.0 +(word) print_word::w#4 202.0 +(word) print_word::w#5 202.0 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 220.39999999999998 Initial phi equivalence classes [ main::i#10 main::i#1 ] @@ -3437,87 +3437,81 @@ divr16u: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [28] (byte*) print_char_cursor#98 ← (byte*) print_line_cursor#1 [ print_char_cursor#98 print_line_cursor#1 ] ( main:2 [ print_char_cursor#98 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ( main:2 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ) always clobbers reg byte a +Statement [28] (byte*) print_char_cursor#98 ← (byte*) print_line_cursor#1 [ print_char_cursor#98 print_line_cursor#1 ] ( main:2 [ print_char_cursor#98 print_line_cursor#1 ] { { print_char_cursor#86 = print_char_cursor#98 } } ) always clobbers reg byte a +Statement [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ( main:2 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [66] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [67] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] ( main:2::print_word:15 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:19 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:23 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:31 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:35 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:39 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:50 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:55 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:60 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [72] (byte) print_byte::b#1 ← < (word) print_word::w#10 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::print_word:15 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:19 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:23 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:35 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:50 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:55 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:60 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ) always clobbers reg byte a -Statement [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [84] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 [ print_char_cursor#50 ] ( main:2::print_byte:45::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:15::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:19::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:23::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:31::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:35::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:39::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:50::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:55::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:60::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:15::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:19::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:23::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:31::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:35::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:39::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:50::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:55::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:60::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_byte:45::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:15::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:19::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:23::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:31::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:35::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:39::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:50::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:55::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:60::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:15::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:19::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:23::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:31::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:35::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:39::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:50::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:55::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:60::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] ) always clobbers reg byte y +Statement [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#3 } } ) always clobbers reg byte a +Statement [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#3 } } ) always clobbers reg byte a +Statement [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#4 } } ) always clobbers reg byte a +Statement [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#4 } } ) always clobbers reg byte a +Statement [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a +Statement [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a +Statement [66] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] { } main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [67] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] { } main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:19::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:23::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:19::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:23::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [84] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 [ print_char_cursor#50 ] ( main:2::print_byte:45::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_byte:45::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:19::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:23::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:31::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:35::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:39::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:50::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:55::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:60::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:19::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:23::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:31::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:35::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:39::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:50::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:55::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:60::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [89] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [91] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [99] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [101] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [104] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ) always clobbers reg byte a -Statement [105] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [107] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [108] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [109] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [111] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [112] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a -Statement [113] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ) always clobbers reg byte a -Statement [114] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:9 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ) always clobbers reg byte a -Statement [116] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ) always clobbers reg byte a -Statement [118] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ) always clobbers reg byte a -Statement [119] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ) always clobbers reg byte a reg byte y -Statement [120] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ) always clobbers reg byte a -Statement [121] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ) always clobbers reg byte a -Statement [126] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [89] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] { } main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#86 = print_char_cursor#98 } } main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } ) always clobbers reg byte a reg byte y +Statement [91] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] { } main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#86 = print_char_cursor#98 } } main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } ) always clobbers reg byte a reg byte y +Statement [99] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [104] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [105] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [107] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [108] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [109] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [111] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [112] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a +Statement [113] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a +Statement [114] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a +Statement [116] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a +Statement [118] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a +Statement [119] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y +Statement [120] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a +Statement [121] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a +Statement [129] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ divr16u::i#2 divr16u::i#1 ] -Statement [129] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [133] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [135] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [139] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [28] (byte*) print_char_cursor#98 ← (byte*) print_line_cursor#1 [ print_char_cursor#98 print_line_cursor#1 ] ( main:2 [ print_char_cursor#98 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ( main:2 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ) always clobbers reg byte a -Statement [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [66] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [67] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] ( main:2::print_word:15 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:19 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:23 [ print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:31 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:35 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:39 [ print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:50 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:55 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] main:2::print_word:60 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#0 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [72] (byte) print_byte::b#1 ← < (word) print_word::w#10 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::print_word:15 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:19 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:23 [ print_char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:35 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:50 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:55 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] main:2::print_word:60 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ) always clobbers reg byte a -Statement [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [84] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 [ print_char_cursor#50 ] ( main:2::print_byte:45::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:15::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:19::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:23::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:31::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:35::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:39::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:50::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:55::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:60::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:15::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:19::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:23::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] main:2::print_word:31::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:35::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:39::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:50::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:55::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_word:60::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] main:2::print_byte:45::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:15::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:19::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:23::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] main:2::print_word:31::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:35::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:39::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:50::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:55::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:60::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] main:2::print_word:15::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:19::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:23::print_byte:73::print_char:81 [ print_char_cursor#50 ] main:2::print_word:31::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:35::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:39::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:50::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:55::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] main:2::print_word:60::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] ) always clobbers reg byte y -Statement [89] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [91] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [99] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [101] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [104] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ) always clobbers reg byte a -Statement [105] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [107] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [108] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [109] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [111] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [112] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a -Statement [113] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ) always clobbers reg byte a -Statement [114] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:9 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ) always clobbers reg byte a -Statement [116] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ) always clobbers reg byte a -Statement [118] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ) always clobbers reg byte a -Statement [119] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ) always clobbers reg byte a reg byte y -Statement [120] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ) always clobbers reg byte a -Statement [121] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ) always clobbers reg byte a -Statement [126] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [129] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [133] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [135] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [139] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [133] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [135] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [139] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [28] (byte*) print_char_cursor#98 ← (byte*) print_line_cursor#1 [ print_char_cursor#98 print_line_cursor#1 ] ( main:2 [ print_char_cursor#98 print_line_cursor#1 ] { { print_char_cursor#86 = print_char_cursor#98 } } ) always clobbers reg byte a +Statement [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] ( main:2 [ main::i#10 print_line_cursor#1 print_byte::b#2 print_char_cursor#101 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } } ) always clobbers reg byte a +Statement [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$27 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#3 } } ) always clobbers reg byte a +Statement [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#3 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#3 } } ) always clobbers reg byte a +Statement [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$28 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#4 } } ) always clobbers reg byte a +Statement [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#4 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#4 } } ) always clobbers reg byte a +Statement [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 main::$29 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a +Statement [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] ( main:2 [ main::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#2 ] { { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a +Statement [66] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] { } main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [67] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:25 [ print_line_cursor#1 print_char_cursor#11 ] { } main:2::print_ln:41 [ print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:62 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:71 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:73 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:45 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:19::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:23::print_byte:71 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:31::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:35::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:39::print_byte:71 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:50::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:55::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:60::print_byte:71 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:19::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:23::print_byte:73 [ print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:31::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:35::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:39::print_byte:73 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:50::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:55::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:60::print_byte:73 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [84] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 [ print_char_cursor#50 ] ( main:2::print_byte:45::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:71::print_char:78 [ print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:71::print_char:78 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:71::print_char:78 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:15::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:19::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:23::print_byte:73::print_char:78 [ print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:35::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:39::print_byte:73::print_char:78 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:50::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:55::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:60::print_byte:73::print_char:78 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_byte:45::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#2 = print_byte::b#3 main::i#10 } { print_char_cursor#101 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:19::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:23::print_byte:71::print_char:81 [ print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:31::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:35::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:39::print_byte:71::print_char:81 [ print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:50::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:55::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:60::print_byte:71::print_char:81 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#3 } { print_char_cursor#2 = print_char_cursor#81 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#50 } } main:2::print_word:15::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:19::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:23::print_byte:73::print_char:81 [ print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:31::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:35::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:39::print_byte:73::print_char:81 [ print_line_cursor#1 print_char_cursor#50 ] { { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:50::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#3 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:55::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#4 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_word:60::print_byte:73::print_char:81 [ main::i#10 print_line_cursor#1 print_char_cursor#50 ] { { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#3 } { print_char_cursor#11 = print_char_cursor#81 print_char_cursor#50 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y +Statement [89] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] { } main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#86 = print_char_cursor#98 } } main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } ) always clobbers reg byte a reg byte y +Statement [91] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::print_str:13 [ print_char_cursor#2 print_str::str#10 ] { } main:2::print_str:17 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:21 [ print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:29 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#86 = print_char_cursor#98 } } main:2::print_str:33 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:37 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:47 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:52 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } main:2::print_str:57 [ main::i#10 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#11 = print_char_cursor#86 } } ) always clobbers reg byte a reg byte y +Statement [99] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:11::memset:95 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [104] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [105] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [107] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [108] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [109] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [111] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [112] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a +Statement [113] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a +Statement [114] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } main:2::lin16u_gen:7 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } main:2::lin16u_gen:9 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a +Statement [116] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a +Statement [118] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a +Statement [119] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y +Statement [120] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a +Statement [121] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a +Statement [129] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [133] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [135] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [139] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } main:2::lin16u_gen:5::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:7::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::lin16u_gen:9::divr16u:110 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] : zp[2]:5 , @@ -3553,34 +3547,34 @@ Potential registers zp[1]:58 [ divr16u::$2 ] : zp[1]:58 , reg byte a , reg byte Potential registers zp[2]:59 [ rem16u#1 ] : zp[2]:59 , REGISTER UPLIFT SCOPES -Uplift Scope [] 227.22: zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] 197.27: zp[2]:9 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] 0.8: zp[2]:59 [ rem16u#1 ] -Uplift Scope [print_str] 305.5: zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:29 [ 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[2]:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:57 [ divr16u::$1 ] 22: zp[1]:58 [ divr16u::$2 ] 18.19: zp[1]:35 [ divr16u::i#2 divr16u::i#1 ] 15.75: zp[2]:31 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 4: zp[2]:43 [ divr16u::return#2 ] 4: zp[2]:47 [ divr16u::return#3 ] 1.38: zp[2]:27 [ divr16u::divisor#6 ] -Uplift Scope [lin16u_gen] 27.5: zp[2]:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 22: zp[2]:55 [ lin16u_gen::$6 ] 20.08: zp[4]:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 18.17: zp[2]:25 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] 4: zp[2]:41 [ lin16u_gen::ampl#0 ] 4: zp[2]:49 [ lin16u_gen::stepf#0 ] 2: zp[2]:15 [ lin16u_gen::max#3 ] 1.44: zp[4]:51 [ lin16u_gen::step#0 ] 0.8: zp[2]:45 [ lin16u_gen::stepi#0 ] 0.36: zp[2]:17 [ lin16u_gen::min#3 ] -Uplift Scope [main] 25.5: zp[1]:2 [ main::i#10 main::i#1 ] 22: zp[1]:36 [ main::$27 ] 22: zp[1]:37 [ main::$28 ] 22: zp[1]:38 [ main::$29 ] -Uplift Scope [print_word] 78.33: zp[2]:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] -Uplift Scope [memset] 36.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_byte] 23.75: zp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:39 [ print_byte::$0 ] 4: zp[1]:40 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 232,844.64: zp[2]:9 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] 209,621.67: zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] 220.4: zp[2]:59 [ rem16u#1 ] +Uplift Scope [print_str] 301,254.25: zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplift Scope [divr16u] 90,147.42: zp[2]:29 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 31,817.75: zp[2]:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 20,002: zp[1]:57 [ divr16u::$1 ] 20,002: zp[1]:58 [ divr16u::$2 ] 16,540.12: zp[1]:35 [ divr16u::i#2 divr16u::i#1 ] 8,233.39: zp[2]:31 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 1,250.12: zp[2]:27 [ divr16u::divisor#6 ] 202: zp[2]:43 [ divr16u::return#2 ] 202: zp[2]:47 [ divr16u::return#3 ] +Uplift Scope [print_char] 160,007: zp[1]:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:39 [ print_byte::$0 ] 20,002: zp[1]:40 [ print_byte::$2 ] 9,631.25: zp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [lin16u_gen] 2,502.5: zp[2]:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 2,002: zp[2]:55 [ lin16u_gen::$6 ] 1,645.33: zp[4]:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 1,630.22: zp[2]:25 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] 202: zp[2]:41 [ lin16u_gen::ampl#0 ] 202: zp[2]:49 [ lin16u_gen::stepf#0 ] 122.44: zp[4]:51 [ lin16u_gen::step#0 ] 101: zp[2]:15 [ lin16u_gen::max#3 ] 40.4: zp[2]:45 [ lin16u_gen::stepi#0 ] 18.36: zp[2]:17 [ lin16u_gen::min#3 ] +Uplift Scope [print_word] 1,374.33: zp[2]:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] +Uplift Scope [main] 234.14: zp[1]:2 [ main::i#10 main::i#1 ] 202: zp[1]:36 [ main::$27 ] 202: zp[1]:37 [ main::$28 ] 202: zp[1]:38 [ main::$29 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 16244 combination zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] zp[2]:9 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] zp[2]:59 [ rem16u#1 ] +Uplifting [] best 16244 combination zp[2]:9 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] zp[2]:59 [ rem16u#1 ] Uplifting [print_str] best 16244 combination zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [divr16u] best 16034 combination zp[2]:29 [ 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[2]:33 [ 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[2]:31 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:43 [ divr16u::return#2 ] zp[2]:47 [ divr16u::return#3 ] zp[2]:27 [ divr16u::divisor#6 ] -Uplifting [lin16u_gen] best 16034 combination zp[2]:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp[2]:55 [ lin16u_gen::$6 ] zp[4]:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp[2]:25 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] zp[2]:41 [ lin16u_gen::ampl#0 ] zp[2]:49 [ lin16u_gen::stepf#0 ] zp[2]:15 [ lin16u_gen::max#3 ] zp[4]:51 [ lin16u_gen::step#0 ] zp[2]:45 [ lin16u_gen::stepi#0 ] zp[2]:17 [ lin16u_gen::min#3 ] -Uplifting [main] best 15764 combination reg byte x [ main::i#10 main::i#1 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] +Uplifting [divr16u] best 16034 combination zp[2]:29 [ 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[2]:33 [ 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[2]:31 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:27 [ divr16u::divisor#6 ] zp[2]:43 [ divr16u::return#2 ] zp[2]:47 [ divr16u::return#3 ] +Uplifting [print_char] best 16025 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 15977 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [memset] best 15977 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplifting [lin16u_gen] best 15977 combination zp[2]:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp[2]:55 [ lin16u_gen::$6 ] zp[4]:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp[2]:25 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] zp[2]:41 [ lin16u_gen::ampl#0 ] zp[2]:49 [ lin16u_gen::stepf#0 ] zp[4]:51 [ lin16u_gen::step#0 ] zp[2]:15 [ lin16u_gen::max#3 ] zp[2]:45 [ lin16u_gen::stepi#0 ] zp[2]:17 [ lin16u_gen::min#3 ] +Uplifting [print_word] best 15977 combination zp[2]:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] +Uplifting [main] best 15857 combination zp[1]:2 [ main::i#10 main::i#1 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [print_word] best 15764 combination zp[2]:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] -Uplifting [memset] best 15764 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_byte] best 15756 combination zp[1]:7 [ print_byte::b#3 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 15747 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [RADIX] best 15747 combination -Uplifting [print_ln] best 15747 combination -Uplifting [print_cls] best 15747 combination -Attempting to uplift remaining variables inzp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 15747 combination zp[1]:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [RADIX] best 15857 combination +Uplifting [print_ln] best 15857 combination +Uplifting [print_cls] best 15857 combination +Attempting to uplift remaining variables inzp[1]:2 [ main::i#10 main::i#1 ] +Uplifting [main] best 15857 combination zp[1]:2 [ main::i#10 main::i#1 ] Coalescing zero page register [ zp[2]:29 [ 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[2]:59 [ rem16u#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:15 [ lin16u_gen::max#3 ] ] with [ zp[2]:41 [ lin16u_gen::ampl#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:43 [ divr16u::return#2 ] ] - score: 1 @@ -3591,8 +3585,6 @@ Coalescing zero page register [ zp[2]:11 [ print_str::str#10 print_str::str#12 p Coalescing zero page register [ zp[2]:15 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp[2]:13 [ memset::dst#2 memset::dst#1 ] ] Coalescing zero page register [ zp[2]:55 [ lin16u_gen::$6 ] ] with [ zp[2]:27 [ divr16u::divisor#6 ] ] Coalescing zero page register [ zp[2]:15 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 memset::dst#2 memset::dst#1 ] ] with [ zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] ] -Allocated (was zp[2]:3) zp[2]:2 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] -Allocated (was zp[1]:7) zp[1]:4 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp[2]:9) zp[2]:5 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] Allocated (was zp[2]:15) zp[2]:7 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 memset::dst#2 memset::dst#1 print_str::str#10 print_str::str#12 print_str::str#0 print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] Allocated (was zp[2]:17) zp[2]:9 [ lin16u_gen::min#3 ] @@ -3618,7 +3610,7 @@ ASSEMBLER BEFORE OPTIMIZATION // Remainder after unsigned 16-bit division .label rem16u = $13 .label print_char_cursor = 5 - .label print_line_cursor = 2 + .label print_line_cursor = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -3637,6 +3629,7 @@ __bend_from___b1: __bend: // main main: { + .label i = 2 // [5] call lin16u_gen // [103] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: @@ -3820,13 +3813,15 @@ main: { jsr print_ln // [26] phi from main::@13 to main::@1 [phi:main::@13->main::@1] __b1_from___b13: - // [26] phi (byte) main::i#10 = (byte) 0 [phi:main::@13->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [26] phi (byte) main::i#10 = (byte) 0 [phi:main::@13->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i jmp __b1 // main::@1 __b1: - // [27] if((byte) main::i#10<(byte) $14) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 - cpx #$14 + // [27] if((byte) main::i#10<(byte) $14) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #$14 bcc __b2 jmp __b3 // main::@3 @@ -3935,8 +3930,8 @@ main: { rts // main::@2 __b2: - // [43] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuz1=vbuxx - stx.z print_byte.b + // [43] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 + ldx.z i // [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -3966,8 +3961,8 @@ main: { jmp __b15 // main::@15 __b15: - // [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -3998,8 +3993,8 @@ main: { jmp __b17 // main::@17 __b17: - // [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -4030,8 +4025,8 @@ main: { jmp __b19 // main::@19 __b19: - // [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -4057,8 +4052,8 @@ main: { jmp __b21 // main::@21 __b21: - // [63] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx - inx + // [63] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + inc.z i // [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] __b1_from___b21: // [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy @@ -4109,9 +4104,8 @@ print_ln: { // print_word(word zp(7) w) print_word: { .label w = 7 - // [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [71] call print_byte // [75] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -4121,9 +4115,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [72] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [72] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuxx=_lo_vwuz1 + ldx.z w // [73] call print_byte // [75] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -4138,11 +4131,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(4) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 4 - // [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -4160,12 +4152,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [80] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [80] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [81] call print_char // [83] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -4780,8 +4771,8 @@ FINAL SYMBOL TABLE (const byte) RADIX::OCTAL = (number) 8 (const byte) SIZEOF_WORD = (byte) 2 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 20002.0 +(byte~) divr16u::$2 reg byte a 20002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -4790,67 +4781,67 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:7 2.75 -(word) divr16u::dividend#1 dividend zp[2]:7 4.0 -(word) divr16u::dividend#3 dividend zp[2]:7 5.0 -(word) divr16u::dividend#5 dividend zp[2]:7 4.0 +(word) divr16u::dividend#0 dividend zp[2]:7 2500.25 +(word) divr16u::dividend#1 dividend zp[2]:7 202.0 +(word) divr16u::dividend#3 dividend zp[2]:7 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:7 1102.0 (word) divr16u::divisor -(word) divr16u::divisor#6 divisor zp[2]:29 1.375 +(word) divr16u::divisor#6 divisor zp[2]:29 1250.125 (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 15001.5 +(byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:21 16.5 -(word) divr16u::quotient#2 quotient zp[2]:21 11.0 -(word) divr16u::quotient#3 quotient zp[2]:21 2.75 +(word) divr16u::quotient#1 quotient zp[2]:21 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:21 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:21 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:19 8.25 -(word) divr16u::rem#1 rem zp[2]:19 22.0 -(word) divr16u::rem#10 rem zp[2]:19 4.0 -(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:19 22.0 -(word) divr16u::rem#4 rem zp[2]:19 4.0 -(word) divr16u::rem#5 rem zp[2]:19 24.0 -(word) divr16u::rem#6 rem zp[2]:19 11.0 +(word) divr16u::rem#0 rem zp[2]:19 7500.75 +(word) divr16u::rem#1 rem zp[2]:19 20002.0 +(word) divr16u::rem#10 rem zp[2]:19 1102.0 +(word) divr16u::rem#11 rem zp[2]:19 10334.666666666666 +(word) divr16u::rem#2 rem zp[2]:19 20002.0 +(word) divr16u::rem#4 rem zp[2]:19 202.0 +(word) divr16u::rem#5 rem zp[2]:19 21003.0 +(word) divr16u::rem#6 rem zp[2]:19 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:21 5.285714285714286 -(word) divr16u::return#2 return zp[2]:21 4.0 -(word) divr16u::return#3 return zp[2]:21 4.0 +(word) divr16u::return#0 return zp[2]:21 4315.0 +(word) divr16u::return#2 return zp[2]:21 202.0 +(word) divr16u::return#3 return zp[2]:21 202.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$6 zp[2]:29 22.0 +(word~) lin16u_gen::$6 zp[2]:29 2002.0 (label) lin16u_gen::@1 (label) lin16u_gen::@2 (label) lin16u_gen::@3 (label) lin16u_gen::@4 (label) lin16u_gen::@return (word) lin16u_gen::ampl -(word) lin16u_gen::ampl#0 ampl zp[2]:7 4.0 +(word) lin16u_gen::ampl#0 ampl zp[2]:7 202.0 (word) lin16u_gen::i -(word) lin16u_gen::i#1 i zp[2]:11 22.0 -(word) lin16u_gen::i#2 i zp[2]:11 5.5 +(word) lin16u_gen::i#1 i zp[2]:11 2002.0 +(word) lin16u_gen::i#2 i zp[2]:11 500.5 (word) lin16u_gen::length (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#3 lintab zp[2]:17 11.0 -(word*) lin16u_gen::lintab#4 lintab zp[2]:17 7.000000000000001 -(word*) lin16u_gen::lintab#6 lintab zp[2]:17 0.16666666666666666 +(word*) lin16u_gen::lintab#3 lintab zp[2]:17 1001.0 +(word*) lin16u_gen::lintab#4 lintab zp[2]:17 620.8 +(word*) lin16u_gen::lintab#6 lintab zp[2]:17 8.416666666666666 (word) lin16u_gen::max -(word) lin16u_gen::max#3 max zp[2]:7 2.0 +(word) lin16u_gen::max#3 max zp[2]:7 101.0 (word) lin16u_gen::min -(word) lin16u_gen::min#3 min zp[2]:9 0.36363636363636365 +(word) lin16u_gen::min#3 min zp[2]:9 18.363636363636363 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp[4]:25 1.4444444444444446 +(dword) lin16u_gen::step#0 step zp[4]:25 122.44444444444446 (word) lin16u_gen::stepf -(word) lin16u_gen::stepf#0 stepf zp[2]:21 4.0 +(word) lin16u_gen::stepf#0 stepf zp[2]:21 202.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp[2]:23 0.8 +(word) lin16u_gen::stepi#0 stepi zp[2]:23 40.4 (dword) lin16u_gen::val -(dword) lin16u_gen::val#0 val zp[4]:13 4.0 -(dword) lin16u_gen::val#1 val zp[4]:13 7.333333333333333 -(dword) lin16u_gen::val#2 val zp[4]:13 8.75 +(dword) lin16u_gen::val#0 val zp[4]:13 202.0 +(dword) lin16u_gen::val#1 val zp[4]:13 667.3333333333334 +(dword) lin16u_gen::val#2 val zp[4]:13 776.0 (void()) main() -(byte~) main::$27 reg byte a 22.0 -(byte~) main::$28 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 +(byte~) main::$27 reg byte a 202.0 +(byte~) main::$28 reg byte a 202.0 +(byte~) main::$29 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -4880,8 +4871,8 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#10 reg byte x 3.5 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#10 i zp[1]:2 32.13636363636363 (const word*) main::lintab1[(number) $14] = { fill( $14, 0) } (const word*) main::lintab2[(number) $14] = { fill( $14, 0) } (const word*) main::lintab3[(number) $14] = { fill( $14, 0) } @@ -4894,8 +4885,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4904,37 +4895,37 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:4 4.0 -(byte) print_byte::b#1 b zp[1]:4 4.0 -(byte) print_byte::b#2 b zp[1]:4 11.0 -(byte) print_byte::b#3 b zp[1]:4 4.75 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 101.0 +(byte) print_byte::b#3 reg byte x 5526.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 101.0 -(byte*) print_char_cursor#101 print_char_cursor zp[2]:5 22.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:5 4.228571428571427 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:5 11.37037037037037 -(byte*) print_char_cursor#50 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#81 print_char_cursor zp[2]:5 5.666666666666667 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:5 45.0 -(byte*) print_char_cursor#98 print_char_cursor zp[2]:5 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 100001.0 +(byte*) print_char_cursor#101 print_char_cursor zp[2]:5 202.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:5 6038.5999999999985 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:5 11185.37037037037 +(byte*) print_char_cursor#50 print_char_cursor zp[2]:5 110002.0 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:5 4034.6666666666665 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:5 1359.0 +(byte*) print_char_cursor#98 print_char_cursor zp[2]:5 22.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 8.225 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:2 15.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 7505.674999999999 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:3 201003.0 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:3 1113.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4944,23 +4935,23 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 202.0 -(byte*) print_str::str#10 str zp[2]:7 101.5 -(byte*) print_str::str#12 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 200002.0 +(byte*) print_str::str#10 str zp[2]:7 100251.25 +(byte*) print_str::str#12 str zp[2]:7 1001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#10 w zp[2]:7 12.333333333333332 -(word) print_word::w#3 w zp[2]:7 22.0 -(word) print_word::w#4 w zp[2]:7 22.0 -(word) print_word::w#5 w zp[2]:7 22.0 +(word) print_word::w#10 w zp[2]:7 768.3333333333334 +(word) print_word::w#3 w zp[2]:7 202.0 +(word) print_word::w#4 w zp[2]:7 202.0 +(word) print_word::w#5 w zp[2]:7 202.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:19 0.8 +(word) rem16u#1 rem16u zp[2]:19 220.39999999999998 -reg byte x [ main::i#10 main::i#1 ] -zp[2]:2 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] -zp[1]:4 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[1]:2 [ main::i#10 main::i#1 ] +zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] +reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp[2]:5 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] zp[2]:7 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 memset::dst#2 memset::dst#1 print_str::str#10 print_str::str#12 print_str::str#0 print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] @@ -4975,7 +4966,7 @@ reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] zp[2]:23 [ lin16u_gen::stepi#0 ] zp[4]:25 [ lin16u_gen::step#0 ] zp[2]:29 [ lin16u_gen::$6 divr16u::divisor#6 ] @@ -4984,7 +4975,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 13613 +Score: 13723 // File Comments // Linear table generator @@ -4998,7 +4989,7 @@ Score: 13613 // Remainder after unsigned 16-bit division .label rem16u = $13 .label print_char_cursor = 5 - .label print_line_cursor = 2 + .label print_line_cursor = 3 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -5008,6 +4999,7 @@ Score: 13613 // @end // main main: { + .label i = 2 // lin16u_gen(557, 29793, lintab1, 20) // [5] call lin16u_gen // [103] phi from main to lin16u_gen [phi:main->lin16u_gen] @@ -5158,13 +5150,15 @@ main: { sta.z print_line_cursor+1 jsr print_ln // [26] phi from main::@13 to main::@1 [phi:main::@13->main::@1] - // [26] phi (byte) main::i#10 = (byte) 0 [phi:main::@13->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [26] phi (byte) main::i#10 = (byte) 0 [phi:main::@13->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // main::@1 __b1: // for(byte i=0; i<20; i++) - // [27] if((byte) main::i#10<(byte) $14) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 - cpx #$14 + // [27] if((byte) main::i#10<(byte) $14) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #$14 bcc __b2 // main::@3 // [28] (byte*) print_char_cursor#98 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 @@ -5253,8 +5247,8 @@ main: { // main::@2 __b2: // print_byte(i) - // [43] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuz1=vbuxx - stx.z print_byte.b + // [43] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 + ldx.z i // [44] (byte*) print_char_cursor#101 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -5280,8 +5274,8 @@ main: { jsr print_str // main::@15 // print_word(lintab1[i]) - // [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [48] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [49] (word) print_word::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -5307,8 +5301,8 @@ main: { jsr print_str // main::@17 // print_word(lintab2[i]) - // [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [53] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [54] (word) print_word::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -5334,8 +5328,8 @@ main: { jsr print_str // main::@19 // print_word(lintab3[i]) - // [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [58] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl // [59] (word) print_word::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) -- vwuz1=pwuc1_derefidx_vbuaa tay @@ -5356,8 +5350,8 @@ main: { jsr print_ln // main::@21 // for(byte i=0; i<20; i++) - // [63] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx - inx + // [63] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + inc.z i // [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] // [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy jmp __b1 @@ -5406,9 +5400,8 @@ print_ln: { print_word: { .label w = 7 // print_byte(>w) - // [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [70] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [71] call print_byte // [75] phi from print_word to print_byte [phi:print_word->print_byte] // [75] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy @@ -5416,9 +5409,8 @@ print_word: { jsr print_byte // print_word::@1 // print_byte(print_byte] // [75] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy @@ -5431,12 +5423,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(4) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 4 // b>>4 - // [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [76] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -5453,13 +5444,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [79] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [80] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [80] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [81] call print_char // [83] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [83] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/linegen.sym b/src/test/ref/linegen.sym index fa72f1120..86d56b42b 100644 --- a/src/test/ref/linegen.sym +++ b/src/test/ref/linegen.sym @@ -7,8 +7,8 @@ (const byte) RADIX::OCTAL = (number) 8 (const byte) SIZEOF_WORD = (byte) 2 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 20002.0 +(byte~) divr16u::$2 reg byte a 20002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -17,67 +17,67 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:7 2.75 -(word) divr16u::dividend#1 dividend zp[2]:7 4.0 -(word) divr16u::dividend#3 dividend zp[2]:7 5.0 -(word) divr16u::dividend#5 dividend zp[2]:7 4.0 +(word) divr16u::dividend#0 dividend zp[2]:7 2500.25 +(word) divr16u::dividend#1 dividend zp[2]:7 202.0 +(word) divr16u::dividend#3 dividend zp[2]:7 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:7 1102.0 (word) divr16u::divisor -(word) divr16u::divisor#6 divisor zp[2]:29 1.375 +(word) divr16u::divisor#6 divisor zp[2]:29 1250.125 (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 15001.5 +(byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:21 16.5 -(word) divr16u::quotient#2 quotient zp[2]:21 11.0 -(word) divr16u::quotient#3 quotient zp[2]:21 2.75 +(word) divr16u::quotient#1 quotient zp[2]:21 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:21 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:21 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:19 8.25 -(word) divr16u::rem#1 rem zp[2]:19 22.0 -(word) divr16u::rem#10 rem zp[2]:19 4.0 -(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:19 22.0 -(word) divr16u::rem#4 rem zp[2]:19 4.0 -(word) divr16u::rem#5 rem zp[2]:19 24.0 -(word) divr16u::rem#6 rem zp[2]:19 11.0 +(word) divr16u::rem#0 rem zp[2]:19 7500.75 +(word) divr16u::rem#1 rem zp[2]:19 20002.0 +(word) divr16u::rem#10 rem zp[2]:19 1102.0 +(word) divr16u::rem#11 rem zp[2]:19 10334.666666666666 +(word) divr16u::rem#2 rem zp[2]:19 20002.0 +(word) divr16u::rem#4 rem zp[2]:19 202.0 +(word) divr16u::rem#5 rem zp[2]:19 21003.0 +(word) divr16u::rem#6 rem zp[2]:19 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:21 5.285714285714286 -(word) divr16u::return#2 return zp[2]:21 4.0 -(word) divr16u::return#3 return zp[2]:21 4.0 +(word) divr16u::return#0 return zp[2]:21 4315.0 +(word) divr16u::return#2 return zp[2]:21 202.0 +(word) divr16u::return#3 return zp[2]:21 202.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$6 zp[2]:29 22.0 +(word~) lin16u_gen::$6 zp[2]:29 2002.0 (label) lin16u_gen::@1 (label) lin16u_gen::@2 (label) lin16u_gen::@3 (label) lin16u_gen::@4 (label) lin16u_gen::@return (word) lin16u_gen::ampl -(word) lin16u_gen::ampl#0 ampl zp[2]:7 4.0 +(word) lin16u_gen::ampl#0 ampl zp[2]:7 202.0 (word) lin16u_gen::i -(word) lin16u_gen::i#1 i zp[2]:11 22.0 -(word) lin16u_gen::i#2 i zp[2]:11 5.5 +(word) lin16u_gen::i#1 i zp[2]:11 2002.0 +(word) lin16u_gen::i#2 i zp[2]:11 500.5 (word) lin16u_gen::length (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#3 lintab zp[2]:17 11.0 -(word*) lin16u_gen::lintab#4 lintab zp[2]:17 7.000000000000001 -(word*) lin16u_gen::lintab#6 lintab zp[2]:17 0.16666666666666666 +(word*) lin16u_gen::lintab#3 lintab zp[2]:17 1001.0 +(word*) lin16u_gen::lintab#4 lintab zp[2]:17 620.8 +(word*) lin16u_gen::lintab#6 lintab zp[2]:17 8.416666666666666 (word) lin16u_gen::max -(word) lin16u_gen::max#3 max zp[2]:7 2.0 +(word) lin16u_gen::max#3 max zp[2]:7 101.0 (word) lin16u_gen::min -(word) lin16u_gen::min#3 min zp[2]:9 0.36363636363636365 +(word) lin16u_gen::min#3 min zp[2]:9 18.363636363636363 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp[4]:25 1.4444444444444446 +(dword) lin16u_gen::step#0 step zp[4]:25 122.44444444444446 (word) lin16u_gen::stepf -(word) lin16u_gen::stepf#0 stepf zp[2]:21 4.0 +(word) lin16u_gen::stepf#0 stepf zp[2]:21 202.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp[2]:23 0.8 +(word) lin16u_gen::stepi#0 stepi zp[2]:23 40.4 (dword) lin16u_gen::val -(dword) lin16u_gen::val#0 val zp[4]:13 4.0 -(dword) lin16u_gen::val#1 val zp[4]:13 7.333333333333333 -(dword) lin16u_gen::val#2 val zp[4]:13 8.75 +(dword) lin16u_gen::val#0 val zp[4]:13 202.0 +(dword) lin16u_gen::val#1 val zp[4]:13 667.3333333333334 +(dword) lin16u_gen::val#2 val zp[4]:13 776.0 (void()) main() -(byte~) main::$27 reg byte a 22.0 -(byte~) main::$28 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 +(byte~) main::$27 reg byte a 202.0 +(byte~) main::$28 reg byte a 202.0 +(byte~) main::$29 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -107,8 +107,8 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#10 reg byte x 3.5 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#10 i zp[1]:2 32.13636363636363 (const word*) main::lintab1[(number) $14] = { fill( $14, 0) } (const word*) main::lintab2[(number) $14] = { fill( $14, 0) } (const word*) main::lintab3[(number) $14] = { fill( $14, 0) } @@ -121,8 +121,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -131,37 +131,37 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:4 4.0 -(byte) print_byte::b#1 b zp[1]:4 4.0 -(byte) print_byte::b#2 b zp[1]:4 11.0 -(byte) print_byte::b#3 b zp[1]:4 4.75 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 101.0 +(byte) print_byte::b#3 reg byte x 5526.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 101.0 -(byte*) print_char_cursor#101 print_char_cursor zp[2]:5 22.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:5 4.228571428571427 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:5 11.37037037037037 -(byte*) print_char_cursor#50 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#81 print_char_cursor zp[2]:5 5.666666666666667 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:5 45.0 -(byte*) print_char_cursor#98 print_char_cursor zp[2]:5 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:5 100001.0 +(byte*) print_char_cursor#101 print_char_cursor zp[2]:5 202.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:5 6038.5999999999985 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:5 11185.37037037037 +(byte*) print_char_cursor#50 print_char_cursor zp[2]:5 110002.0 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:5 4034.6666666666665 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:5 1359.0 +(byte*) print_char_cursor#98 print_char_cursor zp[2]:5 22.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 8.225 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:2 15.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 7505.674999999999 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:3 201003.0 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:3 1113.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -171,23 +171,23 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 202.0 -(byte*) print_str::str#10 str zp[2]:7 101.5 -(byte*) print_str::str#12 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 200002.0 +(byte*) print_str::str#10 str zp[2]:7 100251.25 +(byte*) print_str::str#12 str zp[2]:7 1001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#10 w zp[2]:7 12.333333333333332 -(word) print_word::w#3 w zp[2]:7 22.0 -(word) print_word::w#4 w zp[2]:7 22.0 -(word) print_word::w#5 w zp[2]:7 22.0 +(word) print_word::w#10 w zp[2]:7 768.3333333333334 +(word) print_word::w#3 w zp[2]:7 202.0 +(word) print_word::w#4 w zp[2]:7 202.0 +(word) print_word::w#5 w zp[2]:7 202.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:19 0.8 +(word) rem16u#1 rem16u zp[2]:19 220.39999999999998 -reg byte x [ main::i#10 main::i#1 ] -zp[2]:2 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] -zp[1]:4 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[1]:2 [ main::i#10 main::i#1 ] +zp[2]:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 ] +reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp[2]:5 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#101 print_char_cursor#2 print_char_cursor#11 print_char_cursor#98 print_char_cursor#1 ] zp[2]:7 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 memset::dst#2 memset::dst#1 print_str::str#10 print_str::str#12 print_str::str#0 print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 ] @@ -202,7 +202,7 @@ reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] zp[2]:23 [ lin16u_gen::stepi#0 ] zp[4]:25 [ lin16u_gen::step#0 ] zp[2]:29 [ lin16u_gen::$6 divr16u::divisor#6 ] diff --git a/src/test/ref/literal-char-minus-number.log b/src/test/ref/literal-char-minus-number.log index ab933c152..768cfc60d 100644 --- a/src/test/ref/literal-char-minus-number.log +++ b/src/test/ref/literal-char-minus-number.log @@ -115,7 +115,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (byte) 'a'-(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (byte) 'a'-(byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/literal-strings.log b/src/test/ref/literal-strings.log index b2f002769..5eb232e04 100644 --- a/src/test/ref/literal-strings.log +++ b/src/test/ref/literal-strings.log @@ -114,8 +114,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 201.99999999999997 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -190,15 +190,15 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) msgz + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) msgz + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) msgz + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) msgz + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] @@ -298,8 +298,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte*) msg[] = (byte*) "cml" (const byte*) msgz[] = (byte*) "cml"z diff --git a/src/test/ref/literal-strings.sym b/src/test/ref/literal-strings.sym index 2a7c51888..a88e47d55 100644 --- a/src/test/ref/literal-strings.sym +++ b/src/test/ref/literal-strings.sym @@ -6,8 +6,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte*) msg[] = (byte*) "cml" (const byte*) msgz[] = (byte*) "cml"z diff --git a/src/test/ref/literal-word-pointer-0.log b/src/test/ref/literal-word-pointer-0.log index 7b6c37785..1893f6690 100644 --- a/src/test/ref/literal-word-pointer-0.log +++ b/src/test/ref/literal-word-pointer-0.log @@ -52,7 +52,7 @@ Successful SSA optimization Pass2InlineCast Simplifying constant integer cast (byte*) print::str#1 Simplifying constant pointer cast (byte**) 128 Successful SSA optimization PassNCastSimplification -Alias (byte*) print::str#1 = (byte*~) print::$0 +Alias print::str#1 = print::$0 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print::str#1 (byte*) print::str#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -170,7 +170,7 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((byte**) 128) ← (const byte*) main::str [ ] ( main:2::print:5 [ ] ) always clobbers reg byte a +Statement [7] *((byte**) 128) ← (const byte*) main::str [ ] ( main:2::print:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/literals.log b/src/test/ref/literals.log index 923962565..0cd7f32a0 100644 --- a/src/test/ref/literals.log +++ b/src/test/ref/literals.log @@ -95,7 +95,7 @@ Consolidated array index constant in *(SCREEN+2) Consolidated array index constant in assignment *(SCREEN+4 + main::$0) Consolidated array index constant in assignment *(SCREEN+9 + main::$1) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1 +Alias main::i#2 = main::$0 main::$1 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -145,8 +145,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 201.99999999999997 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -226,19 +226,19 @@ main: { nums: .byte 2, 3, 4, 5 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) ch [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 2) ← (const byte) num [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 4 + (byte) main::i#2) ← *((const byte*) str + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) ch [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 2) ← (const byte) num [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 4 + (byte) main::i#2) ← *((const byte*) str + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((const byte*) SCREEN+(byte) 9 + (byte) main::i#2) ← *((const byte*) nums + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN) ← (const byte) ch [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 2) ← (const byte) num [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 4 + (byte) main::i#2) ← *((const byte*) str + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(byte) 9 + (byte) main::i#2) ← *((const byte*) nums + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) 9 + (byte) main::i#2) ← *((const byte*) nums + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) ch [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 2) ← (const byte) num [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 4 + (byte) main::i#2) ← *((const byte*) str + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) 9 + (byte) main::i#2) ← *((const byte*) nums + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 395 combination reg byte x [ main::i#2 main::i#1 ] @@ -343,8 +343,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte) num = (byte) 1 (const byte*) nums[] = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } (const byte*) str[] = (byte*) "bcde" diff --git a/src/test/ref/literals.sym b/src/test/ref/literals.sym index 93cce8f90..1fd19857e 100644 --- a/src/test/ref/literals.sym +++ b/src/test/ref/literals.sym @@ -7,8 +7,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 (const byte) num = (byte) 1 (const byte*) nums[] = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } (const byte*) str[] = (byte*) "bcde" diff --git a/src/test/ref/liverange-1.asm b/src/test/ref/liverange-1.asm new file mode 100644 index 000000000..9c91df34b --- /dev/null +++ b/src/test/ref/liverange-1.asm @@ -0,0 +1,26 @@ +// Test propagation of live ranges back over PHI-calls +// The idx-variable is alive between the two calls to out() - but not before the first call. +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + // out('c') + ldx #0 + lda #'c' + jsr out + // out('m') + lda #'m' + jsr out + // } + rts +} +// out(byte register(A) c) +out: { + // SCREEN[idx++] = c + sta SCREEN,x + // SCREEN[idx++] = c; + inx + // } + rts +} diff --git a/src/test/ref/liverange-1.cfg b/src/test/ref/liverange-1.cfg new file mode 100644 index 000000000..71d7c54dd --- /dev/null +++ b/src/test/ref/liverange-1.cfg @@ -0,0 +1,33 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + [5] call out + to:main::@1 +main::@1: scope:[main] from main + [6] phi() + [7] call out + to:main::@return +main::@return: scope:[main] from main::@1 + [8] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from main main::@1 + [9] (byte) idx#10 ← phi( main/(byte) 0 main::@1/(byte) idx#11 ) + [9] (byte) out::c#2 ← phi( main/(byte) 'c' main::@1/(byte) 'm' ) + [10] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 + [11] (byte) idx#11 ← ++ (byte) idx#10 + to:out::@return +out::@return: scope:[out] from out + [12] return + to:@return diff --git a/src/test/ref/liverange-1.log b/src/test/ref/liverange-1.log new file mode 100644 index 000000000..64b5bd9b9 --- /dev/null +++ b/src/test/ref/liverange-1.log @@ -0,0 +1,452 @@ + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 + +(void()) main() +main: scope:[main] from @2 + (byte) idx#13 ← phi( @2/(byte) idx#14 ) + (byte) out::c#0 ← (byte) 'c' + call out + to:main::@1 +main::@1: scope:[main] from main + (byte) idx#7 ← phi( main/(byte) idx#5 ) + (byte) idx#0 ← (byte) idx#7 + (byte) out::c#1 ← (byte) 'm' + call out + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte) idx#8 ← phi( main::@1/(byte) idx#5 ) + (byte) idx#1 ← (byte) idx#8 + to:main::@return +main::@return: scope:[main] from main::@2 + (byte) idx#9 ← phi( main::@2/(byte) idx#1 ) + (byte) idx#2 ← (byte) idx#9 + return + to:@return +@1: scope:[] from @begin + (byte) idx#3 ← (byte) 0 + to:@2 + +(void()) out((byte) out::c) +out: scope:[out] from main main::@1 + (byte) idx#10 ← phi( main/(byte) idx#13 main::@1/(byte) idx#0 ) + (byte) out::c#2 ← phi( main/(byte) out::c#0 main::@1/(byte) out::c#1 ) + *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 + (byte) idx#4 ← ++ (byte) idx#10 + to:out::@return +out::@return: scope:[out] from out + (byte) idx#11 ← phi( out/(byte) idx#4 ) + (byte) idx#5 ← (byte) idx#11 + return + to:@return +@2: scope:[] from @1 + (byte) idx#14 ← phi( @1/(byte) idx#3 ) + call main + to:@3 +@3: scope:[] from @2 + (byte) idx#12 ← phi( @2/(byte) idx#2 ) + (byte) idx#6 ← (byte) idx#12 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @3 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(byte) idx +(byte) idx#0 +(byte) idx#1 +(byte) idx#10 +(byte) idx#11 +(byte) idx#12 +(byte) idx#13 +(byte) idx#14 +(byte) idx#2 +(byte) idx#3 +(byte) idx#4 +(byte) idx#5 +(byte) idx#6 +(byte) idx#7 +(byte) idx#8 +(byte) idx#9 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 +(byte) out::c#1 +(byte) out::c#2 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias idx#0 = idx#7 +Alias idx#1 = idx#8 idx#9 idx#2 +Alias idx#11 = idx#4 idx#5 +Alias idx#14 = idx#3 +Alias idx#12 = idx#6 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) idx#13 (byte) idx#14 +Identical Phi Values (byte) idx#0 (byte) idx#11 +Identical Phi Values (byte) idx#1 (byte) idx#11 +Identical Phi Values (byte) idx#12 (byte) idx#1 +Successful SSA optimization Pass2IdenticalPhiElimination +Constant (const byte) out::c#0 = 'c' +Constant (const byte) out::c#1 = 'm' +Constant (const byte) idx#14 = 0 +Successful SSA optimization Pass2ConstantIdentification +Inlining constant with var siblings (const byte) out::c#0 +Inlining constant with var siblings (const byte) out::c#1 +Inlining constant with var siblings (const byte) idx#14 +Constant inlined out::c#0 = (byte) 'c' +Constant inlined out::c#1 = (byte) 'm' +Constant inlined idx#14 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@2 +CALL GRAPH +Calls in [] to main:3 +Calls in [main] to out:7 out:9 + +Created 2 initial phi equivalence classes +Coalesced [8] idx#15 ← idx#11 +Coalesced down to 2 phi equivalence classes +Culled Empty Block (label) @1 +Culled Empty Block (label) @3 +Culled Empty Block (label) main::@2 +Renumbering block @2 to @1 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@1 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + [5] call out + to:main::@1 +main::@1: scope:[main] from main + [6] phi() + [7] call out + to:main::@return +main::@return: scope:[main] from main::@1 + [8] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from main main::@1 + [9] (byte) idx#10 ← phi( main/(byte) 0 main::@1/(byte) idx#11 ) + [9] (byte) out::c#2 ← phi( main/(byte) 'c' main::@1/(byte) 'm' ) + [10] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 + [11] (byte) idx#11 ← ++ (byte) idx#10 + to:out::@return +out::@return: scope:[out] from out + [12] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte) idx +(byte) idx#10 106.5 +(byte) idx#11 28.0 +(void()) main() +(void()) out((byte) out::c) +(byte) out::c +(byte) out::c#2 101.0 + +Initial phi equivalence classes +[ out::c#2 ] +[ idx#10 idx#11 ] +Complete equivalence classes +[ out::c#2 ] +[ idx#10 idx#11 ] +Allocated zp[1]:2 [ out::c#2 ] +Allocated zp[1]:3 [ idx#10 idx#11 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test propagation of live ranges back over PHI-calls +// The idx-variable is alive between the two calls to out() - but not before the first call. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + .label idx = 3 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + // [5] call out + // [9] phi from main to out [phi:main->out] + out_from_main: + // [9] phi (byte) idx#10 = (byte) 0 [phi:main->out#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [9] phi (byte) out::c#2 = (byte) 'c' [phi:main->out#1] -- vbuz1=vbuc1 + lda #'c' + sta.z out.c + jsr out + // [6] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + jmp __b1 + // main::@1 + __b1: + // [7] call out + // [9] phi from main::@1 to out [phi:main::@1->out] + out_from___b1: + // [9] phi (byte) idx#10 = (byte) idx#11 [phi:main::@1->out#0] -- register_copy + // [9] phi (byte) out::c#2 = (byte) 'm' [phi:main::@1->out#1] -- vbuz1=vbuc1 + lda #'m' + sta.z out.c + jsr out + jmp __breturn + // main::@return + __breturn: + // [8] return + rts +} + // out +// out(byte zp(2) c) +out: { + .label c = 2 + // [10] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z c + ldy.z idx + sta SCREEN,y + // [11] (byte) idx#11 ← ++ (byte) idx#10 -- vbuz1=_inc_vbuz1 + inc.z idx + jmp __breturn + // out::@return + __breturn: + // [12] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp[1]:2 [ out::c#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:3 [ idx#10 idx#11 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 134.5: zp[1]:3 [ idx#10 idx#11 ] +Uplift Scope [out] 101: zp[1]:2 [ out::c#2 ] +Uplift Scope [main] + +Uplifting [] best 67 combination reg byte x [ idx#10 idx#11 ] +Uplifting [out] best 58 combination reg byte a [ out::c#2 ] +Uplifting [main] best 58 combination + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test propagation of live ranges back over PHI-calls +// The idx-variable is alive between the two calls to out() - but not before the first call. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + // [5] call out + // [9] phi from main to out [phi:main->out] + out_from_main: + // [9] phi (byte) idx#10 = (byte) 0 [phi:main->out#0] -- vbuxx=vbuc1 + ldx #0 + // [9] phi (byte) out::c#2 = (byte) 'c' [phi:main->out#1] -- vbuaa=vbuc1 + lda #'c' + jsr out + // [6] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + jmp __b1 + // main::@1 + __b1: + // [7] call out + // [9] phi from main::@1 to out [phi:main::@1->out] + out_from___b1: + // [9] phi (byte) idx#10 = (byte) idx#11 [phi:main::@1->out#0] -- register_copy + // [9] phi (byte) out::c#2 = (byte) 'm' [phi:main::@1->out#1] -- vbuaa=vbuc1 + lda #'m' + jsr out + jmp __breturn + // main::@return + __breturn: + // [8] return + rts +} + // out +// out(byte register(A) c) +out: { + // [10] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [11] (byte) idx#11 ← ++ (byte) idx#10 -- vbuxx=_inc_vbuxx + inx + jmp __breturn + // out::@return + __breturn: + // [12] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from_main: +Removing instruction out_from___b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction out_from_main: +Removing instruction __b1: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#10 reg byte x 106.5 +(byte) idx#11 reg byte x 28.0 +(void()) main() +(label) main::@1 +(label) main::@return +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#2 reg byte a 101.0 + +reg byte a [ out::c#2 ] +reg byte x [ idx#10 idx#11 ] + + +FINAL ASSEMBLER +Score: 37 + + // File Comments +// Test propagation of live ranges back over PHI-calls +// The idx-variable is alive between the two calls to out() - but not before the first call. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + // out('c') + // [5] call out + // [9] phi from main to out [phi:main->out] + // [9] phi (byte) idx#10 = (byte) 0 [phi:main->out#0] -- vbuxx=vbuc1 + ldx #0 + // [9] phi (byte) out::c#2 = (byte) 'c' [phi:main->out#1] -- vbuaa=vbuc1 + lda #'c' + jsr out + // [6] phi from main to main::@1 [phi:main->main::@1] + // main::@1 + // out('m') + // [7] call out + // [9] phi from main::@1 to out [phi:main::@1->out] + // [9] phi (byte) idx#10 = (byte) idx#11 [phi:main::@1->out#0] -- register_copy + // [9] phi (byte) out::c#2 = (byte) 'm' [phi:main::@1->out#1] -- vbuaa=vbuc1 + lda #'m' + jsr out + // main::@return + // } + // [8] return + rts +} + // out +// out(byte register(A) c) +out: { + // SCREEN[idx++] = c + // [10] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // SCREEN[idx++] = c; + // [11] (byte) idx#11 ← ++ (byte) idx#10 -- vbuxx=_inc_vbuxx + inx + // out::@return + // } + // [12] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-1.sym b/src/test/ref/liverange-1.sym new file mode 100644 index 000000000..f323ba642 --- /dev/null +++ b/src/test/ref/liverange-1.sym @@ -0,0 +1,17 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#10 reg byte x 106.5 +(byte) idx#11 reg byte x 28.0 +(void()) main() +(label) main::@1 +(label) main::@return +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#2 reg byte a 101.0 + +reg byte a [ out::c#2 ] +reg byte x [ idx#10 idx#11 ] diff --git a/src/test/ref/liverange-2.asm b/src/test/ref/liverange-2.asm new file mode 100644 index 000000000..a996c88d8 --- /dev/null +++ b/src/test/ref/liverange-2.asm @@ -0,0 +1,43 @@ +// Test effective live range and register allocation +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + .label a = 2 + lda #0 + sta.z a + __b1: + ldx #0 + __b2: + ldy #0 + __b3: + // ca = c+a + tya + clc + adc.z a + // print(b, ca) + jsr print + // for( char c: 0..100 ) + iny + cpy #$65 + bne __b3 + // for( char b: 0..100 ) + inx + cpx #$65 + bne __b2 + // for(char a: 0..100 ) + inc.z a + lda #$65 + cmp.z a + bne __b1 + // } + rts +} +// print(byte register(X) b, byte register(A) ca) +print: { + // SCREEN[b] = ca + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-2.cfg b/src/test/ref/liverange-2.cfg new file mode 100644 index 000000000..5487d293a --- /dev/null +++ b/src/test/ref/liverange-2.cfg @@ -0,0 +1,50 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 + to:print::@return +print::@return: scope:[print] from print + [20] return + to:@return diff --git a/src/test/ref/liverange-2.log b/src/test/ref/liverange-2.log new file mode 100644 index 000000000..4054084bf --- /dev/null +++ b/src/test/ref/liverange-2.log @@ -0,0 +1,734 @@ +Culled Empty Block (label) main::@6 +Culled Empty Block (label) @1 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@2 + +(void()) main() +main: scope:[main] from @2 + (byte) main::a#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::a#7 ← phi( main/(byte) main::a#0 main::@5/(byte) main::a#1 ) + (byte) main::b#0 ← (byte) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::b#4 ← phi( main::@1/(byte) main::b#0 main::@4/(byte) main::b#1 ) + (byte) main::a#4 ← phi( main::@1/(byte) main::a#7 main::@4/(byte) main::a#6 ) + (byte) main::c#0 ← (byte) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@7 + (byte) main::b#2 ← phi( main::@2/(byte) main::b#4 main::@7/(byte) main::b#5 ) + (byte) main::a#2 ← phi( main::@2/(byte) main::a#4 main::@7/(byte) main::a#5 ) + (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@7/(byte) main::c#1 ) + (byte~) main::$0 ← (byte) main::c#2 + (byte) main::a#2 + (byte) main::ca#0 ← (byte~) main::$0 + (byte) print::b#0 ← (byte) main::b#2 + (byte) print::ca#0 ← (byte) main::ca#0 + call print + to:main::@7 +main::@7: scope:[main] from main::@3 + (byte) main::b#5 ← phi( main::@3/(byte) main::b#2 ) + (byte) main::a#5 ← phi( main::@3/(byte) main::a#2 ) + (byte) main::c#3 ← phi( main::@3/(byte) main::c#2 ) + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$64) + (bool~) main::$2 ← (byte) main::c#1 != rangelast(0,$64) + if((bool~) main::$2) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@7 + (byte) main::a#6 ← phi( main::@7/(byte) main::a#5 ) + (byte) main::b#3 ← phi( main::@7/(byte) main::b#5 ) + (byte) main::b#1 ← (byte) main::b#3 + rangenext(0,$64) + (bool~) main::$3 ← (byte) main::b#1 != rangelast(0,$64) + if((bool~) main::$3) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::a#3 ← phi( main::@4/(byte) main::a#6 ) + (byte) main::a#1 ← (byte) main::a#3 + rangenext(0,$64) + (bool~) main::$4 ← (byte) main::a#1 != rangelast(0,$64) + if((bool~) main::$4) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + (byte) print::b#1 ← phi( main::@3/(byte) print::b#0 ) + (byte) print::ca#1 ← phi( main::@3/(byte) print::ca#0 ) + *((const byte*) SCREEN + (byte) print::b#1) ← (byte) print::ca#1 + to:print::@return +print::@return: scope:[print] from print + return + to:@return +@2: scope:[] from @begin + call main + to:@3 +@3: scope:[] from @2 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(void()) main() +(byte~) main::$0 +(bool~) main::$2 +(bool~) main::$3 +(bool~) main::$4 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@7 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::a#1 +(byte) main::a#2 +(byte) main::a#3 +(byte) main::a#4 +(byte) main::a#5 +(byte) main::a#6 +(byte) main::a#7 +(byte) main::b +(byte) main::b#0 +(byte) main::b#1 +(byte) main::b#2 +(byte) main::b#3 +(byte) main::b#4 +(byte) main::b#5 +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(byte) main::ca +(byte) main::ca#0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 +(byte) print::b#1 +(byte) print::ca +(byte) print::ca#0 +(byte) print::ca#1 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias main::ca#0 = main::$0 +Alias main::c#2 = main::c#3 +Alias main::a#2 = main::a#5 main::a#6 main::a#3 +Alias main::b#2 = main::b#5 main::b#3 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) main::a#2 (byte) main::a#4 +Identical Phi Values (byte) main::b#2 (byte) main::b#4 +Identical Phi Values (byte) print::ca#1 (byte) print::ca#0 +Identical Phi Values (byte) print::b#1 (byte) print::b#0 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte) main::a#4 (byte) main::a#7 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$2 [12] if((byte) main::c#1!=rangelast(0,$64)) goto main::@3 +Simple Condition (bool~) main::$3 [15] if((byte) main::b#1!=rangelast(0,$64)) goto main::@2 +Simple Condition (bool~) main::$4 [18] if((byte) main::a#1!=rangelast(0,$64)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) main::a#0 = 0 +Constant (const byte) main::b#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [10] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [12] if(main::c#1!=rangelast(0,$64)) goto main::@3 to (number) $65 +Resolved ranged next value [13] main::b#1 ← ++ main::b#4 to ++ +Resolved ranged comparison value [15] if(main::b#1!=rangelast(0,$64)) goto main::@2 to (number) $65 +Resolved ranged next value [16] main::a#1 ← ++ main::a#7 to ++ +Resolved ranged comparison value [18] if(main::a#1!=rangelast(0,$64)) goto main::@1 to (number) $65 +Adding number conversion cast (unumber) $65 in if((byte) main::c#1!=(number) $65) goto main::@3 +Adding number conversion cast (unumber) $65 in if((byte) main::b#1!=(number) $65) goto main::@2 +Adding number conversion cast (unumber) $65 in if((byte) main::a#1!=(number) $65) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::a#0 +Inlining constant with var siblings (const byte) main::b#0 +Inlining constant with var siblings (const byte) main::c#0 +Constant inlined main::a#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Constant inlined main::b#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@8(between main::@5 and main::@1) +Added new block during phi lifting main::@9(between main::@4 and main::@2) +Added new block during phi lifting main::@10(between main::@7 and main::@3) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to print:12 + +Created 3 initial phi equivalence classes +Coalesced [20] main::a#8 ← main::a#1 +Coalesced [21] main::b#6 ← main::b#1 +Coalesced [22] main::c#4 ← main::c#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @3 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::@10 +Renumbering block @2 to @1 +Renumbering block main::@7 to main::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 + to:print::@return +print::@return: scope:[print] from print + [20] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte) main::a +(byte) main::a#1 151.5 +(byte) main::a#7 927.5454545454544 +(byte) main::b +(byte) main::b#1 1501.5 +(byte) main::b#4 1500.375 +(byte) main::c +(byte) main::c#1 15001.5 +(byte) main::c#2 6000.6 +(byte) main::ca +(byte) main::ca#0 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(byte) print::b +(byte) print::b#0 55001.0 +(byte) print::ca +(byte) print::ca#0 110002.0 + +Initial phi equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +Added variable main::ca#0 to live range equivalence class [ main::ca#0 ] +Added variable print::b#0 to live range equivalence class [ print::b#0 ] +Added variable print::ca#0 to live range equivalence class [ print::ca#0 ] +Complete equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +[ main::ca#0 ] +[ print::b#0 ] +[ print::ca#0 ] +Allocated zp[1]:2 [ main::a#7 main::a#1 ] +Allocated zp[1]:3 [ main::b#4 main::b#1 ] +Allocated zp[1]:4 [ main::c#2 main::c#1 ] +Allocated zp[1]:5 [ main::ca#0 ] +Allocated zp[1]:6 [ print::b#0 ] +Allocated zp[1]:7 [ print::ca#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label ca = 5 + .label c = 4 + .label b = 3 + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta.z b + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuz1=vbuz2_plus_vbuz3 + lda.z c + clc + adc.z a + sta.z ca + // [9] (byte) print::b#0 ← (byte) main::b#4 -- vbuz1=vbuz2 + lda.z b + sta.z print.b + // [10] (byte) print::ca#0 ← (byte) main::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z print.ca + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z c + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuz1=_inc_vbuz1 + inc.z b + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z b + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte zp(6) b, byte zp(7) ca) +print: { + .label b = 6 + .label ca = 7 + // [19] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z ca + ldy.z b + sta SCREEN,y + jmp __breturn + // print::@return + __breturn: + // [20] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#7 main::a#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#4 main::b#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::c#2 main::c#1 ] +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::a#7 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , +Potential registers zp[1]:3 [ main::b#4 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , +Potential registers zp[1]:4 [ main::c#2 main::c#1 ] : zp[1]:4 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::ca#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:6 [ print::b#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ print::ca#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [print] 110,002: zp[1]:7 [ print::ca#0 ] 55,001: zp[1]:6 [ print::b#0 ] +Uplift Scope [main] 21,002.1: zp[1]:4 [ main::c#2 main::c#1 ] 10,001: zp[1]:5 [ main::ca#0 ] 3,001.88: zp[1]:3 [ main::b#4 main::b#1 ] 1,079.05: zp[1]:2 [ main::a#7 main::a#1 ] +Uplift Scope [] + +Uplifting [print] best 55447 combination reg byte a [ print::ca#0 ] reg byte x [ print::b#0 ] +Uplifting [main] best 35547 combination reg byte y [ main::c#2 main::c#1 ] reg byte a [ main::ca#0 ] reg byte x [ main::b#4 main::b#1 ] zp[1]:2 [ main::a#7 main::a#1 ] +Limited combination testing to 100 combinations of 108 possible. +Uplifting [] best 35547 combination +Attempting to uplift remaining variables inzp[1]:2 [ main::a#7 main::a#1 ] +Uplifting [main] best 35547 combination zp[1]:2 [ main::a#7 main::a#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // [19] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // print::@return + __breturn: + // [20] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __b6 +Removing instruction jmp __b4 +Removing instruction jmp __b5 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label __b3_from___b6 with __b3 +Replacing label __b2_from___b4 with __b2 +Replacing label __b1_from___b5 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b5: +Removing instruction __b2_from___b1: +Removing instruction __b2_from___b4: +Removing instruction __b3_from___b2: +Removing instruction __b3_from___b6: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b6: +Removing instruction __b4: +Removing instruction __b5: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 110002.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] + + +FINAL ASSEMBLER +Score: 22542 + + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + // main::@3 + __b3: + // ca = c+a + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // print(b, ca) + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + // main::@6 + // for( char c: 0..100 ) + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3 + // main::@4 + // for( char b: 0..100 ) + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2 + // main::@5 + // for(char a: 0..100 ) + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1 + // main::@return + // } + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // SCREEN[b] = ca + // [19] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // print::@return + // } + // [20] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-2.sym b/src/test/ref/liverange-2.sym new file mode 100644 index 000000000..560fb804d --- /dev/null +++ b/src/test/ref/liverange-2.sym @@ -0,0 +1,36 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 110002.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] diff --git a/src/test/ref/liverange-3.asm b/src/test/ref/liverange-3.asm new file mode 100644 index 000000000..6f691aa07 --- /dev/null +++ b/src/test/ref/liverange-3.asm @@ -0,0 +1,46 @@ +// Test effective live range and register allocation +// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + .label a = 2 + lda #0 + sta.z a + __b1: + ldx #0 + __b2: + ldy #0 + __b3: + // ca = c+a + tya + clc + adc.z a + // print(b, ca) + jsr print + // for( char c: 0..100 ) + iny + cpy #$65 + bne __b3 + // for( char b: 0..100 ) + inx + cpx #$65 + bne __b2 + // for(char a: 0..100 ) + inc.z a + lda #$65 + cmp.z a + bne __b1 + // } + rts +} +// print(byte register(X) b, byte register(A) ca) +print: { + // (*(SCREEN+999))++; + inc SCREEN+$3e7 + // SCREEN[b] = ca + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-3.cfg b/src/test/ref/liverange-3.cfg new file mode 100644 index 000000000..86c5103ee --- /dev/null +++ b/src/test/ref/liverange-3.cfg @@ -0,0 +1,51 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) + [20] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 + to:print::@return +print::@return: scope:[print] from print + [21] return + to:@return diff --git a/src/test/ref/liverange-3.log b/src/test/ref/liverange-3.log new file mode 100644 index 000000000..6fff80ba6 --- /dev/null +++ b/src/test/ref/liverange-3.log @@ -0,0 +1,751 @@ +Culled Empty Block (label) main::@6 +Culled Empty Block (label) @1 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@2 + +(void()) main() +main: scope:[main] from @2 + (byte) main::a#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::a#7 ← phi( main/(byte) main::a#0 main::@5/(byte) main::a#1 ) + (byte) main::b#0 ← (byte) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::b#4 ← phi( main::@1/(byte) main::b#0 main::@4/(byte) main::b#1 ) + (byte) main::a#4 ← phi( main::@1/(byte) main::a#7 main::@4/(byte) main::a#6 ) + (byte) main::c#0 ← (byte) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@7 + (byte) main::b#2 ← phi( main::@2/(byte) main::b#4 main::@7/(byte) main::b#5 ) + (byte) main::a#2 ← phi( main::@2/(byte) main::a#4 main::@7/(byte) main::a#5 ) + (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@7/(byte) main::c#1 ) + (byte~) main::$0 ← (byte) main::c#2 + (byte) main::a#2 + (byte) main::ca#0 ← (byte~) main::$0 + (byte) print::b#0 ← (byte) main::b#2 + (byte) print::ca#0 ← (byte) main::ca#0 + call print + to:main::@7 +main::@7: scope:[main] from main::@3 + (byte) main::b#5 ← phi( main::@3/(byte) main::b#2 ) + (byte) main::a#5 ← phi( main::@3/(byte) main::a#2 ) + (byte) main::c#3 ← phi( main::@3/(byte) main::c#2 ) + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$64) + (bool~) main::$2 ← (byte) main::c#1 != rangelast(0,$64) + if((bool~) main::$2) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@7 + (byte) main::a#6 ← phi( main::@7/(byte) main::a#5 ) + (byte) main::b#3 ← phi( main::@7/(byte) main::b#5 ) + (byte) main::b#1 ← (byte) main::b#3 + rangenext(0,$64) + (bool~) main::$3 ← (byte) main::b#1 != rangelast(0,$64) + if((bool~) main::$3) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::a#3 ← phi( main::@4/(byte) main::a#6 ) + (byte) main::a#1 ← (byte) main::a#3 + rangenext(0,$64) + (bool~) main::$4 ← (byte) main::a#1 != rangelast(0,$64) + if((bool~) main::$4) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + (byte) print::b#1 ← phi( main::@3/(byte) print::b#0 ) + (byte) print::ca#1 ← phi( main::@3/(byte) print::ca#0 ) + *((const byte*) SCREEN+(number) $3e7) ← ++ *((const byte*) SCREEN+(number) $3e7) + *((const byte*) SCREEN + (byte) print::b#1) ← (byte) print::ca#1 + to:print::@return +print::@return: scope:[print] from print + return + to:@return +@2: scope:[] from @begin + call main + to:@3 +@3: scope:[] from @2 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(void()) main() +(byte~) main::$0 +(bool~) main::$2 +(bool~) main::$3 +(bool~) main::$4 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@7 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::a#1 +(byte) main::a#2 +(byte) main::a#3 +(byte) main::a#4 +(byte) main::a#5 +(byte) main::a#6 +(byte) main::a#7 +(byte) main::b +(byte) main::b#0 +(byte) main::b#1 +(byte) main::b#2 +(byte) main::b#3 +(byte) main::b#4 +(byte) main::b#5 +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(byte) main::ca +(byte) main::ca#0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 +(byte) print::b#1 +(byte) print::ca +(byte) print::ca#0 +(byte) print::ca#1 + +Adding number conversion cast (unumber) $3e7 in *((const byte*) SCREEN+(number) $3e7) ← ++ *((const byte*) SCREEN+(number) $3e7) +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast $3e7 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (word) $3e7 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias main::ca#0 = main::$0 +Alias main::c#2 = main::c#3 +Alias main::a#2 = main::a#5 main::a#6 main::a#3 +Alias main::b#2 = main::b#5 main::b#3 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) main::a#2 (byte) main::a#4 +Identical Phi Values (byte) main::b#2 (byte) main::b#4 +Identical Phi Values (byte) print::ca#1 (byte) print::ca#0 +Identical Phi Values (byte) print::b#1 (byte) print::b#0 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte) main::a#4 (byte) main::a#7 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$2 [12] if((byte) main::c#1!=rangelast(0,$64)) goto main::@3 +Simple Condition (bool~) main::$3 [15] if((byte) main::b#1!=rangelast(0,$64)) goto main::@2 +Simple Condition (bool~) main::$4 [18] if((byte) main::a#1!=rangelast(0,$64)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) main::a#0 = 0 +Constant (const byte) main::b#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [10] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [12] if(main::c#1!=rangelast(0,$64)) goto main::@3 to (number) $65 +Resolved ranged next value [13] main::b#1 ← ++ main::b#4 to ++ +Resolved ranged comparison value [15] if(main::b#1!=rangelast(0,$64)) goto main::@2 to (number) $65 +Resolved ranged next value [16] main::a#1 ← ++ main::a#7 to ++ +Resolved ranged comparison value [18] if(main::a#1!=rangelast(0,$64)) goto main::@1 to (number) $65 +Adding number conversion cast (unumber) $65 in if((byte) main::c#1!=(number) $65) goto main::@3 +Adding number conversion cast (unumber) $65 in if((byte) main::b#1!=(number) $65) goto main::@2 +Adding number conversion cast (unumber) $65 in if((byte) main::a#1!=(number) $65) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::a#0 +Inlining constant with var siblings (const byte) main::b#0 +Inlining constant with var siblings (const byte) main::c#0 +Constant inlined main::a#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Constant inlined main::b#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@8(between main::@5 and main::@1) +Added new block during phi lifting main::@9(between main::@4 and main::@2) +Added new block during phi lifting main::@10(between main::@7 and main::@3) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to print:12 + +Created 3 initial phi equivalence classes +Coalesced [20] main::a#8 ← main::a#1 +Coalesced [21] main::b#6 ← main::b#1 +Coalesced [22] main::c#4 ← main::c#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @3 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::@10 +Renumbering block @2 to @1 +Renumbering block main::@7 to main::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) + [20] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 + to:print::@return +print::@return: scope:[print] from print + [21] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte) main::a +(byte) main::a#1 151.5 +(byte) main::a#7 927.5454545454544 +(byte) main::b +(byte) main::b#1 1501.5 +(byte) main::b#4 1500.375 +(byte) main::c +(byte) main::c#1 15001.5 +(byte) main::c#2 6000.6 +(byte) main::ca +(byte) main::ca#0 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(byte) print::b +(byte) print::b#0 36667.33333333333 +(byte) print::ca +(byte) print::ca#0 55001.0 + +Initial phi equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +Added variable main::ca#0 to live range equivalence class [ main::ca#0 ] +Added variable print::b#0 to live range equivalence class [ print::b#0 ] +Added variable print::ca#0 to live range equivalence class [ print::ca#0 ] +Complete equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +[ main::ca#0 ] +[ print::b#0 ] +[ print::ca#0 ] +Allocated zp[1]:2 [ main::a#7 main::a#1 ] +Allocated zp[1]:3 [ main::b#4 main::b#1 ] +Allocated zp[1]:4 [ main::c#2 main::c#1 ] +Allocated zp[1]:5 [ main::ca#0 ] +Allocated zp[1]:6 [ print::b#0 ] +Allocated zp[1]:7 [ print::ca#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label ca = 5 + .label c = 4 + .label b = 3 + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta.z b + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuz1=vbuz2_plus_vbuz3 + lda.z c + clc + adc.z a + sta.z ca + // [9] (byte) print::b#0 ← (byte) main::b#4 -- vbuz1=vbuz2 + lda.z b + sta.z print.b + // [10] (byte) print::ca#0 ← (byte) main::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z print.ca + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z c + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuz1=_inc_vbuz1 + inc.z b + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z b + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte zp(6) b, byte zp(7) ca) +print: { + .label b = 6 + .label ca = 7 + // [19] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // [20] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z ca + ldy.z b + sta SCREEN,y + jmp __breturn + // print::@return + __breturn: + // [21] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#7 main::a#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#4 main::b#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::c#2 main::c#1 ] +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::a#7 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , +Potential registers zp[1]:3 [ main::b#4 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , +Potential registers zp[1]:4 [ main::c#2 main::c#1 ] : zp[1]:4 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::ca#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:6 [ print::b#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ print::ca#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [print] 55,001: zp[1]:7 [ print::ca#0 ] 36,667.33: zp[1]:6 [ print::b#0 ] +Uplift Scope [main] 21,002.1: zp[1]:4 [ main::c#2 main::c#1 ] 10,001: zp[1]:5 [ main::ca#0 ] 3,001.88: zp[1]:3 [ main::b#4 main::b#1 ] 1,079.05: zp[1]:2 [ main::a#7 main::a#1 ] +Uplift Scope [] + +Uplifting [print] best 55453 combination reg byte a [ print::ca#0 ] reg byte x [ print::b#0 ] +Uplifting [main] best 35553 combination reg byte y [ main::c#2 main::c#1 ] reg byte a [ main::ca#0 ] reg byte x [ main::b#4 main::b#1 ] zp[1]:2 [ main::a#7 main::a#1 ] +Limited combination testing to 100 combinations of 108 possible. +Uplifting [] best 35553 combination +Attempting to uplift remaining variables inzp[1]:2 [ main::a#7 main::a#1 ] +Uplifting [main] best 35553 combination zp[1]:2 [ main::a#7 main::a#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // [19] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // [20] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // print::@return + __breturn: + // [21] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __b6 +Removing instruction jmp __b4 +Removing instruction jmp __b5 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label __b3_from___b6 with __b3 +Replacing label __b2_from___b4 with __b2 +Replacing label __b1_from___b5 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b5: +Removing instruction __b2_from___b1: +Removing instruction __b2_from___b4: +Removing instruction __b3_from___b2: +Removing instruction __b3_from___b6: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b6: +Removing instruction __b4: +Removing instruction __b5: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 36667.33333333333 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] + + +FINAL ASSEMBLER +Score: 22548 + + // File Comments +// Test effective live range and register allocation +// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + // main::@3 + __b3: + // ca = c+a + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // print(b, ca) + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + // main::@6 + // for( char c: 0..100 ) + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3 + // main::@4 + // for( char b: 0..100 ) + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2 + // main::@5 + // for(char a: 0..100 ) + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1 + // main::@return + // } + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // (*(SCREEN+999))++; + // [19] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // SCREEN[b] = ca + // [20] *((const byte*) SCREEN + (byte) print::b#0) ← (byte) print::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // print::@return + // } + // [21] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-3.sym b/src/test/ref/liverange-3.sym new file mode 100644 index 000000000..40b04508f --- /dev/null +++ b/src/test/ref/liverange-3.sym @@ -0,0 +1,36 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 36667.33333333333 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] diff --git a/src/test/ref/liverange-4.asm b/src/test/ref/liverange-4.asm new file mode 100644 index 000000000..f40a11207 --- /dev/null +++ b/src/test/ref/liverange-4.asm @@ -0,0 +1,51 @@ +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + .label a = 2 + lda #0 + sta.z a + __b1: + ldx #0 + __b2: + ldy #0 + __b3: + // ca = c+a + tya + clc + adc.z a + // print(b, ca) + jsr print + // for( char c: 0..100 ) + iny + cpy #$65 + bne __b3 + // for( char b: 0..100 ) + inx + cpx #$65 + bne __b2 + // for(char a: 0..100 ) + inc.z a + lda #$65 + cmp.z a + bne __b1 + // } + rts +} +// print(byte register(X) b, byte register(A) ca) +print: { + // out(b, ca) + jsr out + // } + rts +} +// out(byte register(X) b, byte register(A) ca) +out: { + // SCREEN[b] = ca + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-4.cfg b/src/test/ref/liverange-4.cfg new file mode 100644 index 000000000..a64f56924 --- /dev/null +++ b/src/test/ref/liverange-4.cfg @@ -0,0 +1,60 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] (byte) out::b#0 ← (byte) print::b#0 + [20] (byte) out::ca#0 ← (byte) print::ca#0 + [21] call out + to:print::@return +print::@return: scope:[print] from print + [22] return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + [23] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 + to:out::@return +out::@return: scope:[out] from out + [24] return + to:@return diff --git a/src/test/ref/liverange-4.log b/src/test/ref/liverange-4.log new file mode 100644 index 000000000..15882cf87 --- /dev/null +++ b/src/test/ref/liverange-4.log @@ -0,0 +1,846 @@ +Culled Empty Block (label) main::@6 +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@3 + +(void()) main() +main: scope:[main] from @3 + (byte) main::a#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::a#7 ← phi( main/(byte) main::a#0 main::@5/(byte) main::a#1 ) + (byte) main::b#0 ← (byte) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::b#4 ← phi( main::@1/(byte) main::b#0 main::@4/(byte) main::b#1 ) + (byte) main::a#4 ← phi( main::@1/(byte) main::a#7 main::@4/(byte) main::a#6 ) + (byte) main::c#0 ← (byte) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@7 + (byte) main::b#2 ← phi( main::@2/(byte) main::b#4 main::@7/(byte) main::b#5 ) + (byte) main::a#2 ← phi( main::@2/(byte) main::a#4 main::@7/(byte) main::a#5 ) + (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@7/(byte) main::c#1 ) + (byte~) main::$0 ← (byte) main::c#2 + (byte) main::a#2 + (byte) main::ca#0 ← (byte~) main::$0 + (byte) print::b#0 ← (byte) main::b#2 + (byte) print::ca#0 ← (byte) main::ca#0 + call print + to:main::@7 +main::@7: scope:[main] from main::@3 + (byte) main::b#5 ← phi( main::@3/(byte) main::b#2 ) + (byte) main::a#5 ← phi( main::@3/(byte) main::a#2 ) + (byte) main::c#3 ← phi( main::@3/(byte) main::c#2 ) + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$64) + (bool~) main::$2 ← (byte) main::c#1 != rangelast(0,$64) + if((bool~) main::$2) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@7 + (byte) main::a#6 ← phi( main::@7/(byte) main::a#5 ) + (byte) main::b#3 ← phi( main::@7/(byte) main::b#5 ) + (byte) main::b#1 ← (byte) main::b#3 + rangenext(0,$64) + (bool~) main::$3 ← (byte) main::b#1 != rangelast(0,$64) + if((bool~) main::$3) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::a#3 ← phi( main::@4/(byte) main::a#6 ) + (byte) main::a#1 ← (byte) main::a#3 + rangenext(0,$64) + (bool~) main::$4 ← (byte) main::a#1 != rangelast(0,$64) + if((bool~) main::$4) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + (byte) print::ca#1 ← phi( main::@3/(byte) print::ca#0 ) + (byte) print::b#1 ← phi( main::@3/(byte) print::b#0 ) + (byte) out::b#0 ← (byte) print::b#1 + (byte) out::ca#0 ← (byte) print::ca#1 + call out + to:print::@1 +print::@1: scope:[print] from print + to:print::@return +print::@return: scope:[print] from print::@1 + return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + (byte) out::b#1 ← phi( print/(byte) out::b#0 ) + (byte) out::ca#1 ← phi( print/(byte) out::ca#0 ) + *((const byte*) SCREEN + (byte) out::b#1) ← (byte) out::ca#1 + to:out::@return +out::@return: scope:[out] from out + return + to:@return +@3: scope:[] from @begin + call main + to:@4 +@4: scope:[] from @3 + to:@end +@end: scope:[] from @4 + +SYMBOL TABLE SSA +(label) @3 +(label) @4 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(void()) main() +(byte~) main::$0 +(bool~) main::$2 +(bool~) main::$3 +(bool~) main::$4 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@7 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::a#1 +(byte) main::a#2 +(byte) main::a#3 +(byte) main::a#4 +(byte) main::a#5 +(byte) main::a#6 +(byte) main::a#7 +(byte) main::b +(byte) main::b#0 +(byte) main::b#1 +(byte) main::b#2 +(byte) main::b#3 +(byte) main::b#4 +(byte) main::b#5 +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(byte) main::ca +(byte) main::ca#0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 +(byte) out::b#1 +(byte) out::ca +(byte) out::ca#0 +(byte) out::ca#1 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@1 +(label) print::@return +(byte) print::b +(byte) print::b#0 +(byte) print::b#1 +(byte) print::ca +(byte) print::ca#0 +(byte) print::ca#1 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias main::ca#0 = main::$0 +Alias main::c#2 = main::c#3 +Alias main::a#2 = main::a#5 main::a#6 main::a#3 +Alias main::b#2 = main::b#5 main::b#3 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) main::a#2 (byte) main::a#4 +Identical Phi Values (byte) main::b#2 (byte) main::b#4 +Identical Phi Values (byte) print::b#1 (byte) print::b#0 +Identical Phi Values (byte) print::ca#1 (byte) print::ca#0 +Identical Phi Values (byte) out::ca#1 (byte) out::ca#0 +Identical Phi Values (byte) out::b#1 (byte) out::b#0 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte) main::a#4 (byte) main::a#7 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$2 [12] if((byte) main::c#1!=rangelast(0,$64)) goto main::@3 +Simple Condition (bool~) main::$3 [15] if((byte) main::b#1!=rangelast(0,$64)) goto main::@2 +Simple Condition (bool~) main::$4 [18] if((byte) main::a#1!=rangelast(0,$64)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) main::a#0 = 0 +Constant (const byte) main::b#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [10] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [12] if(main::c#1!=rangelast(0,$64)) goto main::@3 to (number) $65 +Resolved ranged next value [13] main::b#1 ← ++ main::b#4 to ++ +Resolved ranged comparison value [15] if(main::b#1!=rangelast(0,$64)) goto main::@2 to (number) $65 +Resolved ranged next value [16] main::a#1 ← ++ main::a#7 to ++ +Resolved ranged comparison value [18] if(main::a#1!=rangelast(0,$64)) goto main::@1 to (number) $65 +Adding number conversion cast (unumber) $65 in if((byte) main::c#1!=(number) $65) goto main::@3 +Adding number conversion cast (unumber) $65 in if((byte) main::b#1!=(number) $65) goto main::@2 +Adding number conversion cast (unumber) $65 in if((byte) main::a#1!=(number) $65) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::a#0 +Inlining constant with var siblings (const byte) main::b#0 +Inlining constant with var siblings (const byte) main::c#0 +Constant inlined main::a#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Constant inlined main::b#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@8(between main::@5 and main::@1) +Added new block during phi lifting main::@9(between main::@4 and main::@2) +Added new block during phi lifting main::@10(between main::@7 and main::@3) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of print::@1 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to print:12 +Calls in [print] to out:25 + +Created 3 initial phi equivalence classes +Coalesced [20] main::a#8 ← main::a#1 +Coalesced [21] main::b#6 ← main::b#1 +Coalesced [22] main::c#4 ← main::c#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::@10 +Culled Empty Block (label) print::@1 +Renumbering block @3 to @1 +Renumbering block main::@7 to main::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] (byte) out::b#0 ← (byte) print::b#0 + [20] (byte) out::ca#0 ← (byte) print::ca#0 + [21] call out + to:print::@return +print::@return: scope:[print] from print + [22] return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + [23] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 + to:out::@return +out::@return: scope:[out] from out + [24] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte) main::a +(byte) main::a#1 151.5 +(byte) main::a#7 927.5454545454544 +(byte) main::b +(byte) main::b#1 1501.5 +(byte) main::b#4 1500.375 +(byte) main::c +(byte) main::c#1 15001.5 +(byte) main::c#2 6000.6 +(byte) main::ca +(byte) main::ca#0 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(byte) out::b +(byte) out::b#0 550001.0 +(byte) out::ca +(byte) out::ca#0 1100002.0 +(void()) print((byte) print::b , (byte) print::ca) +(byte) print::b +(byte) print::b#0 55001.0 +(byte) print::ca +(byte) print::ca#0 55001.0 + +Initial phi equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +Added variable main::ca#0 to live range equivalence class [ main::ca#0 ] +Added variable print::b#0 to live range equivalence class [ print::b#0 ] +Added variable print::ca#0 to live range equivalence class [ print::ca#0 ] +Added variable out::b#0 to live range equivalence class [ out::b#0 ] +Added variable out::ca#0 to live range equivalence class [ out::ca#0 ] +Complete equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +[ main::ca#0 ] +[ print::b#0 ] +[ print::ca#0 ] +[ out::b#0 ] +[ out::ca#0 ] +Allocated zp[1]:2 [ main::a#7 main::a#1 ] +Allocated zp[1]:3 [ main::b#4 main::b#1 ] +Allocated zp[1]:4 [ main::c#2 main::c#1 ] +Allocated zp[1]:5 [ main::ca#0 ] +Allocated zp[1]:6 [ print::b#0 ] +Allocated zp[1]:7 [ print::ca#0 ] +Allocated zp[1]:8 [ out::b#0 ] +Allocated zp[1]:9 [ out::ca#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label ca = 5 + .label c = 4 + .label b = 3 + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta.z b + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuz1=vbuz2_plus_vbuz3 + lda.z c + clc + adc.z a + sta.z ca + // [9] (byte) print::b#0 ← (byte) main::b#4 -- vbuz1=vbuz2 + lda.z b + sta.z print.b + // [10] (byte) print::ca#0 ← (byte) main::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z print.ca + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z c + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuz1=_inc_vbuz1 + inc.z b + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z b + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte zp(6) b, byte zp(7) ca) +print: { + .label b = 6 + .label ca = 7 + // [19] (byte) out::b#0 ← (byte) print::b#0 -- vbuz1=vbuz2 + lda.z b + sta.z out.b + // [20] (byte) out::ca#0 ← (byte) print::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z out.ca + // [21] call out + jsr out + jmp __breturn + // print::@return + __breturn: + // [22] return + rts +} + // out +// out(byte zp(8) b, byte zp(9) ca) +out: { + .label b = 8 + .label ca = 9 + // [23] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z ca + ldy.z b + sta SCREEN,y + jmp __breturn + // out::@return + __breturn: + // [24] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#7 main::a#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#4 main::b#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::c#2 main::c#1 ] +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::a#7 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , +Potential registers zp[1]:3 [ main::b#4 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , +Potential registers zp[1]:4 [ main::c#2 main::c#1 ] : zp[1]:4 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::ca#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:6 [ print::b#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ print::ca#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:8 [ out::b#0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:9 [ out::ca#0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [out] 1,100,002: zp[1]:9 [ out::ca#0 ] 550,001: zp[1]:8 [ out::b#0 ] +Uplift Scope [print] 55,001: zp[1]:6 [ print::b#0 ] 55,001: zp[1]:7 [ print::ca#0 ] +Uplift Scope [main] 21,002.1: zp[1]:4 [ main::c#2 main::c#1 ] 10,001: zp[1]:5 [ main::ca#0 ] 3,001.88: zp[1]:3 [ main::b#4 main::b#1 ] 1,079.05: zp[1]:2 [ main::a#7 main::a#1 ] +Uplift Scope [] + +Uplifting [out] best 61468 combination reg byte a [ out::ca#0 ] reg byte x [ out::b#0 ] +Uplifting [print] best 55462 combination reg byte x [ print::b#0 ] reg byte a [ print::ca#0 ] +Uplifting [main] best 35562 combination reg byte y [ main::c#2 main::c#1 ] reg byte a [ main::ca#0 ] reg byte x [ main::b#4 main::b#1 ] zp[1]:2 [ main::a#7 main::a#1 ] +Limited combination testing to 100 combinations of 108 possible. +Uplifting [] best 35562 combination +Attempting to uplift remaining variables inzp[1]:2 [ main::a#7 main::a#1 ] +Uplifting [main] best 35562 combination zp[1]:2 [ main::a#7 main::a#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // [19] (byte) out::b#0 ← (byte) print::b#0 + // [20] (byte) out::ca#0 ← (byte) print::ca#0 + // [21] call out + jsr out + jmp __breturn + // print::@return + __breturn: + // [22] return + rts +} + // out +// out(byte register(X) b, byte register(A) ca) +out: { + // [23] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // out::@return + __breturn: + // [24] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __b6 +Removing instruction jmp __b4 +Removing instruction jmp __b5 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label __b3_from___b6 with __b3 +Replacing label __b2_from___b4 with __b2 +Replacing label __b1_from___b5 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b5: +Removing instruction __b2_from___b1: +Removing instruction __b2_from___b4: +Removing instruction __b3_from___b2: +Removing instruction __b3_from___b6: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b6: +Removing instruction __b4: +Removing instruction __b5: +Removing instruction __breturn: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 reg byte x 550001.0 +(byte) out::ca +(byte) out::ca#0 reg byte a 1100002.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] +reg byte x [ out::b#0 ] +reg byte a [ out::ca#0 ] + + +FINAL ASSEMBLER +Score: 22554 + + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + // main::@3 + __b3: + // ca = c+a + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // print(b, ca) + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + // main::@6 + // for( char c: 0..100 ) + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3 + // main::@4 + // for( char b: 0..100 ) + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2 + // main::@5 + // for(char a: 0..100 ) + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1 + // main::@return + // } + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // out(b, ca) + // [19] (byte) out::b#0 ← (byte) print::b#0 + // [20] (byte) out::ca#0 ← (byte) print::ca#0 + // [21] call out + jsr out + // print::@return + // } + // [22] return + rts +} + // out +// out(byte register(X) b, byte register(A) ca) +out: { + // SCREEN[b] = ca + // [23] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // out::@return + // } + // [24] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-4.sym b/src/test/ref/liverange-4.sym new file mode 100644 index 000000000..b5b3da849 --- /dev/null +++ b/src/test/ref/liverange-4.sym @@ -0,0 +1,44 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 reg byte x 550001.0 +(byte) out::ca +(byte) out::ca#0 reg byte a 1100002.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] +reg byte x [ out::b#0 ] +reg byte a [ out::ca#0 ] diff --git a/src/test/ref/liverange-5.asm b/src/test/ref/liverange-5.asm new file mode 100644 index 000000000..1d943ed21 --- /dev/null +++ b/src/test/ref/liverange-5.asm @@ -0,0 +1,53 @@ +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + .label a = 2 + lda #0 + sta.z a + __b1: + ldx #0 + __b2: + ldy #0 + __b3: + // ca = c+a + tya + clc + adc.z a + // print(b, ca) + jsr print + // for( char c: 0..100 ) + iny + cpy #$65 + bne __b3 + // for( char b: 0..100 ) + inx + cpx #$65 + bne __b2 + // for(char a: 0..100 ) + inc.z a + lda #$65 + cmp.z a + bne __b1 + // } + rts +} +// print(byte register(X) b, byte register(A) ca) +print: { + // out(b, ca) + jsr out + // } + rts +} +// out(byte register(X) b, byte register(A) ca) +out: { + // (*(SCREEN+999))++; + inc SCREEN+$3e7 + // SCREEN[b] = ca + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-5.cfg b/src/test/ref/liverange-5.cfg new file mode 100644 index 000000000..4996a59b0 --- /dev/null +++ b/src/test/ref/liverange-5.cfg @@ -0,0 +1,61 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] (byte) out::b#0 ← (byte) print::b#0 + [20] (byte) out::ca#0 ← (byte) print::ca#0 + [21] call out + to:print::@return +print::@return: scope:[print] from print + [22] return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + [23] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) + [24] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 + to:out::@return +out::@return: scope:[out] from out + [25] return + to:@return diff --git a/src/test/ref/liverange-5.log b/src/test/ref/liverange-5.log new file mode 100644 index 000000000..91cdd8db3 --- /dev/null +++ b/src/test/ref/liverange-5.log @@ -0,0 +1,860 @@ +Culled Empty Block (label) main::@6 +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@3 + +(void()) main() +main: scope:[main] from @3 + (byte) main::a#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::a#7 ← phi( main/(byte) main::a#0 main::@5/(byte) main::a#1 ) + (byte) main::b#0 ← (byte) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::b#4 ← phi( main::@1/(byte) main::b#0 main::@4/(byte) main::b#1 ) + (byte) main::a#4 ← phi( main::@1/(byte) main::a#7 main::@4/(byte) main::a#6 ) + (byte) main::c#0 ← (byte) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@7 + (byte) main::b#2 ← phi( main::@2/(byte) main::b#4 main::@7/(byte) main::b#5 ) + (byte) main::a#2 ← phi( main::@2/(byte) main::a#4 main::@7/(byte) main::a#5 ) + (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@7/(byte) main::c#1 ) + (byte~) main::$0 ← (byte) main::c#2 + (byte) main::a#2 + (byte) main::ca#0 ← (byte~) main::$0 + (byte) print::b#0 ← (byte) main::b#2 + (byte) print::ca#0 ← (byte) main::ca#0 + call print + to:main::@7 +main::@7: scope:[main] from main::@3 + (byte) main::b#5 ← phi( main::@3/(byte) main::b#2 ) + (byte) main::a#5 ← phi( main::@3/(byte) main::a#2 ) + (byte) main::c#3 ← phi( main::@3/(byte) main::c#2 ) + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$64) + (bool~) main::$2 ← (byte) main::c#1 != rangelast(0,$64) + if((bool~) main::$2) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@7 + (byte) main::a#6 ← phi( main::@7/(byte) main::a#5 ) + (byte) main::b#3 ← phi( main::@7/(byte) main::b#5 ) + (byte) main::b#1 ← (byte) main::b#3 + rangenext(0,$64) + (bool~) main::$3 ← (byte) main::b#1 != rangelast(0,$64) + if((bool~) main::$3) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::a#3 ← phi( main::@4/(byte) main::a#6 ) + (byte) main::a#1 ← (byte) main::a#3 + rangenext(0,$64) + (bool~) main::$4 ← (byte) main::a#1 != rangelast(0,$64) + if((bool~) main::$4) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + (byte) print::ca#1 ← phi( main::@3/(byte) print::ca#0 ) + (byte) print::b#1 ← phi( main::@3/(byte) print::b#0 ) + (byte) out::b#0 ← (byte) print::b#1 + (byte) out::ca#0 ← (byte) print::ca#1 + call out + to:print::@1 +print::@1: scope:[print] from print + to:print::@return +print::@return: scope:[print] from print::@1 + return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + (byte) out::b#1 ← phi( print/(byte) out::b#0 ) + (byte) out::ca#1 ← phi( print/(byte) out::ca#0 ) + *((const byte*) SCREEN+(number) $3e7) ← ++ *((const byte*) SCREEN+(number) $3e7) + *((const byte*) SCREEN + (byte) out::b#1) ← (byte) out::ca#1 + to:out::@return +out::@return: scope:[out] from out + return + to:@return +@3: scope:[] from @begin + call main + to:@4 +@4: scope:[] from @3 + to:@end +@end: scope:[] from @4 + +SYMBOL TABLE SSA +(label) @3 +(label) @4 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(void()) main() +(byte~) main::$0 +(bool~) main::$2 +(bool~) main::$3 +(bool~) main::$4 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@7 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::a#1 +(byte) main::a#2 +(byte) main::a#3 +(byte) main::a#4 +(byte) main::a#5 +(byte) main::a#6 +(byte) main::a#7 +(byte) main::b +(byte) main::b#0 +(byte) main::b#1 +(byte) main::b#2 +(byte) main::b#3 +(byte) main::b#4 +(byte) main::b#5 +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(byte) main::ca +(byte) main::ca#0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 +(byte) out::b#1 +(byte) out::ca +(byte) out::ca#0 +(byte) out::ca#1 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@1 +(label) print::@return +(byte) print::b +(byte) print::b#0 +(byte) print::b#1 +(byte) print::ca +(byte) print::ca#0 +(byte) print::ca#1 + +Adding number conversion cast (unumber) $3e7 in *((const byte*) SCREEN+(number) $3e7) ← ++ *((const byte*) SCREEN+(number) $3e7) +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast $3e7 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (word) $3e7 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias main::ca#0 = main::$0 +Alias main::c#2 = main::c#3 +Alias main::a#2 = main::a#5 main::a#6 main::a#3 +Alias main::b#2 = main::b#5 main::b#3 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) main::a#2 (byte) main::a#4 +Identical Phi Values (byte) main::b#2 (byte) main::b#4 +Identical Phi Values (byte) print::b#1 (byte) print::b#0 +Identical Phi Values (byte) print::ca#1 (byte) print::ca#0 +Identical Phi Values (byte) out::ca#1 (byte) out::ca#0 +Identical Phi Values (byte) out::b#1 (byte) out::b#0 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte) main::a#4 (byte) main::a#7 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$2 [12] if((byte) main::c#1!=rangelast(0,$64)) goto main::@3 +Simple Condition (bool~) main::$3 [15] if((byte) main::b#1!=rangelast(0,$64)) goto main::@2 +Simple Condition (bool~) main::$4 [18] if((byte) main::a#1!=rangelast(0,$64)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) main::a#0 = 0 +Constant (const byte) main::b#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [10] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [12] if(main::c#1!=rangelast(0,$64)) goto main::@3 to (number) $65 +Resolved ranged next value [13] main::b#1 ← ++ main::b#4 to ++ +Resolved ranged comparison value [15] if(main::b#1!=rangelast(0,$64)) goto main::@2 to (number) $65 +Resolved ranged next value [16] main::a#1 ← ++ main::a#7 to ++ +Resolved ranged comparison value [18] if(main::a#1!=rangelast(0,$64)) goto main::@1 to (number) $65 +Adding number conversion cast (unumber) $65 in if((byte) main::c#1!=(number) $65) goto main::@3 +Adding number conversion cast (unumber) $65 in if((byte) main::b#1!=(number) $65) goto main::@2 +Adding number conversion cast (unumber) $65 in if((byte) main::a#1!=(number) $65) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Finalized unsigned number type (byte) $65 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::a#0 +Inlining constant with var siblings (const byte) main::b#0 +Inlining constant with var siblings (const byte) main::c#0 +Constant inlined main::a#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Constant inlined main::b#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@8(between main::@5 and main::@1) +Added new block during phi lifting main::@9(between main::@4 and main::@2) +Added new block during phi lifting main::@10(between main::@7 and main::@3) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of print::@1 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to print:12 +Calls in [print] to out:25 + +Created 3 initial phi equivalence classes +Coalesced [20] main::a#8 ← main::a#1 +Coalesced [21] main::b#6 ← main::b#1 +Coalesced [22] main::c#4 ← main::c#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::@10 +Culled Empty Block (label) print::@1 +Renumbering block @3 to @1 +Renumbering block main::@7 to main::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@5 + [5] (byte) main::a#7 ← phi( main/(byte) 0 main::@5/(byte) main::a#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [6] (byte) main::b#4 ← phi( main::@1/(byte) 0 main::@4/(byte) main::b#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@6 + [7] (byte) main::c#2 ← phi( main::@2/(byte) 0 main::@6/(byte) main::c#1 ) + [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 + [9] (byte) print::b#0 ← (byte) main::b#4 + [10] (byte) print::ca#0 ← (byte) main::ca#0 + [11] call print + to:main::@6 +main::@6: scope:[main] from main::@3 + [12] (byte) main::c#1 ← ++ (byte) main::c#2 + [13] if((byte) main::c#1!=(byte) $65) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@6 + [14] (byte) main::b#1 ← ++ (byte) main::b#4 + [15] if((byte) main::b#1!=(byte) $65) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [16] (byte) main::a#1 ← ++ (byte) main::a#7 + [17] if((byte) main::a#1!=(byte) $65) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + [18] return + to:@return + +(void()) print((byte) print::b , (byte) print::ca) +print: scope:[print] from main::@3 + [19] (byte) out::b#0 ← (byte) print::b#0 + [20] (byte) out::ca#0 ← (byte) print::ca#0 + [21] call out + to:print::@return +print::@return: scope:[print] from print + [22] return + to:@return + +(void()) out((byte) out::b , (byte) out::ca) +out: scope:[out] from print + [23] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) + [24] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 + to:out::@return +out::@return: scope:[out] from out + [25] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte) main::a +(byte) main::a#1 151.5 +(byte) main::a#7 927.5454545454544 +(byte) main::b +(byte) main::b#1 1501.5 +(byte) main::b#4 1500.375 +(byte) main::c +(byte) main::c#1 15001.5 +(byte) main::c#2 6000.6 +(byte) main::ca +(byte) main::ca#0 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(byte) out::b +(byte) out::b#0 366667.3333333334 +(byte) out::ca +(byte) out::ca#0 550001.0 +(void()) print((byte) print::b , (byte) print::ca) +(byte) print::b +(byte) print::b#0 55001.0 +(byte) print::ca +(byte) print::ca#0 55001.0 + +Initial phi equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +Added variable main::ca#0 to live range equivalence class [ main::ca#0 ] +Added variable print::b#0 to live range equivalence class [ print::b#0 ] +Added variable print::ca#0 to live range equivalence class [ print::ca#0 ] +Added variable out::b#0 to live range equivalence class [ out::b#0 ] +Added variable out::ca#0 to live range equivalence class [ out::ca#0 ] +Complete equivalence classes +[ main::a#7 main::a#1 ] +[ main::b#4 main::b#1 ] +[ main::c#2 main::c#1 ] +[ main::ca#0 ] +[ print::b#0 ] +[ print::ca#0 ] +[ out::b#0 ] +[ out::ca#0 ] +Allocated zp[1]:2 [ main::a#7 main::a#1 ] +Allocated zp[1]:3 [ main::b#4 main::b#1 ] +Allocated zp[1]:4 [ main::c#2 main::c#1 ] +Allocated zp[1]:5 [ main::ca#0 ] +Allocated zp[1]:6 [ print::b#0 ] +Allocated zp[1]:7 [ print::ca#0 ] +Allocated zp[1]:8 [ out::b#0 ] +Allocated zp[1]:9 [ out::ca#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label ca = 5 + .label c = 4 + .label b = 3 + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta.z b + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuz1=vbuz2_plus_vbuz3 + lda.z c + clc + adc.z a + sta.z ca + // [9] (byte) print::b#0 ← (byte) main::b#4 -- vbuz1=vbuz2 + lda.z b + sta.z print.b + // [10] (byte) print::ca#0 ← (byte) main::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z print.ca + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z c + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuz1=_inc_vbuz1 + inc.z b + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z b + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte zp(6) b, byte zp(7) ca) +print: { + .label b = 6 + .label ca = 7 + // [19] (byte) out::b#0 ← (byte) print::b#0 -- vbuz1=vbuz2 + lda.z b + sta.z out.b + // [20] (byte) out::ca#0 ← (byte) print::ca#0 -- vbuz1=vbuz2 + lda.z ca + sta.z out.ca + // [21] call out + jsr out + jmp __breturn + // print::@return + __breturn: + // [22] return + rts +} + // out +// out(byte zp(8) b, byte zp(9) ca) +out: { + .label b = 8 + .label ca = 9 + // [23] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // [24] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z ca + ldy.z b + sta SCREEN,y + jmp __breturn + // out::@return + __breturn: + // [25] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#7 main::a#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#4 main::b#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::c#2 main::c#1 ] +Statement [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] ( main:2 [ main::a#7 main::b#4 main::c#2 main::ca#0 ] { { print::b#0 = main::b#4 } { print::ca#0 = main::ca#0 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::a#7 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , +Potential registers zp[1]:3 [ main::b#4 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , +Potential registers zp[1]:4 [ main::c#2 main::c#1 ] : zp[1]:4 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::ca#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:6 [ print::b#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ print::ca#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:8 [ out::b#0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:9 [ out::ca#0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [out] 550,001: zp[1]:9 [ out::ca#0 ] 366,667.33: zp[1]:8 [ out::b#0 ] +Uplift Scope [print] 55,001: zp[1]:6 [ print::b#0 ] 55,001: zp[1]:7 [ print::ca#0 ] +Uplift Scope [main] 21,002.1: zp[1]:4 [ main::c#2 main::c#1 ] 10,001: zp[1]:5 [ main::ca#0 ] 3,001.88: zp[1]:3 [ main::b#4 main::b#1 ] 1,079.05: zp[1]:2 [ main::a#7 main::a#1 ] +Uplift Scope [] + +Uplifting [out] best 61474 combination reg byte a [ out::ca#0 ] reg byte x [ out::b#0 ] +Uplifting [print] best 55468 combination reg byte x [ print::b#0 ] reg byte a [ print::ca#0 ] +Uplifting [main] best 35568 combination reg byte y [ main::c#2 main::c#1 ] reg byte a [ main::ca#0 ] reg byte x [ main::b#4 main::b#1 ] zp[1]:2 [ main::a#7 main::a#1 ] +Limited combination testing to 100 combinations of 108 possible. +Uplifting [] best 35568 combination +Attempting to uplift remaining variables inzp[1]:2 [ main::a#7 main::a#1 ] +Uplifting [main] best 35568 combination zp[1]:2 [ main::a#7 main::a#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + jmp __b1 + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + __b1_from___b5: + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + jmp __b2 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + __b2_from___b4: + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + jmp __b2 + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + jmp __b3 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + __b3_from___b6: + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + jmp __b3 + // main::@3 + __b3: + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + jmp __b6 + // main::@6 + __b6: + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3_from___b6 + jmp __b4 + // main::@4 + __b4: + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2_from___b4 + jmp __b5 + // main::@5 + __b5: + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1_from___b5 + jmp __breturn + // main::@return + __breturn: + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // [19] (byte) out::b#0 ← (byte) print::b#0 + // [20] (byte) out::ca#0 ← (byte) print::ca#0 + // [21] call out + jsr out + jmp __breturn + // print::@return + __breturn: + // [22] return + rts +} + // out +// out(byte register(X) b, byte register(A) ca) +out: { + // [23] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // [24] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // out::@return + __breturn: + // [25] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __b6 +Removing instruction jmp __b4 +Removing instruction jmp __b5 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label __b3_from___b6 with __b3 +Replacing label __b2_from___b4 with __b2 +Replacing label __b1_from___b5 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b5: +Removing instruction __b2_from___b1: +Removing instruction __b2_from___b4: +Removing instruction __b3_from___b2: +Removing instruction __b3_from___b6: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b6: +Removing instruction __b4: +Removing instruction __b5: +Removing instruction __breturn: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 reg byte x 366667.3333333334 +(byte) out::ca +(byte) out::ca#0 reg byte a 550001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] +reg byte x [ out::b#0 ] +reg byte a [ out::ca#0 ] + + +FINAL ASSEMBLER +Score: 22560 + + // File Comments +// Test effective live range and register allocation +// Here out::b, print::b and main::b can have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .label a = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) main::a#7 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z a + // [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + // [5] phi (byte) main::a#7 = (byte) main::a#1 [phi:main::@5->main::@1#0] -- register_copy + // main::@1 + __b1: + // [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [6] phi (byte) main::b#4 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #0 + // [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + // [6] phi (byte) main::b#4 = (byte) main::b#1 [phi:main::@4->main::@2#0] -- register_copy + // main::@2 + __b2: + // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [7] phi (byte) main::c#2 = (byte) 0 [phi:main::@2->main::@3#0] -- vbuyy=vbuc1 + ldy #0 + // [7] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + // [7] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + // main::@3 + __b3: + // ca = c+a + // [8] (byte) main::ca#0 ← (byte) main::c#2 + (byte) main::a#7 -- vbuaa=vbuyy_plus_vbuz1 + tya + clc + adc.z a + // print(b, ca) + // [9] (byte) print::b#0 ← (byte) main::b#4 + // [10] (byte) print::ca#0 ← (byte) main::ca#0 + // [11] call print + jsr print + // main::@6 + // for( char c: 0..100 ) + // [12] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::c#1!=(byte) $65) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + cpy #$65 + bne __b3 + // main::@4 + // for( char b: 0..100 ) + // [14] (byte) main::b#1 ← ++ (byte) main::b#4 -- vbuxx=_inc_vbuxx + inx + // [15] if((byte) main::b#1!=(byte) $65) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + cpx #$65 + bne __b2 + // main::@5 + // for(char a: 0..100 ) + // [16] (byte) main::a#1 ← ++ (byte) main::a#7 -- vbuz1=_inc_vbuz1 + inc.z a + // [17] if((byte) main::a#1!=(byte) $65) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$65 + cmp.z a + bne __b1 + // main::@return + // } + // [18] return + rts +} + // print +// print(byte register(X) b, byte register(A) ca) +print: { + // out(b, ca) + // [19] (byte) out::b#0 ← (byte) print::b#0 + // [20] (byte) out::ca#0 ← (byte) print::ca#0 + // [21] call out + jsr out + // print::@return + // } + // [22] return + rts +} + // out +// out(byte register(X) b, byte register(A) ca) +out: { + // (*(SCREEN+999))++; + // [23] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc SCREEN+$3e7 + // SCREEN[b] = ca + // [24] *((const byte*) SCREEN + (byte) out::b#0) ← (byte) out::ca#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // out::@return + // } + // [25] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-5.sym b/src/test/ref/liverange-5.sym new file mode 100644 index 000000000..d7921bcbb --- /dev/null +++ b/src/test/ref/liverange-5.sym @@ -0,0 +1,44 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@return +(byte) main::a +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#7 a zp[1]:2 927.5454545454544 +(byte) main::b +(byte) main::b#1 reg byte x 1501.5 +(byte) main::b#4 reg byte x 1500.375 +(byte) main::c +(byte) main::c#1 reg byte y 15001.5 +(byte) main::c#2 reg byte y 6000.6 +(byte) main::ca +(byte) main::ca#0 reg byte a 10001.0 +(void()) out((byte) out::b , (byte) out::ca) +(label) out::@return +(byte) out::b +(byte) out::b#0 reg byte x 366667.3333333334 +(byte) out::ca +(byte) out::ca#0 reg byte a 550001.0 +(void()) print((byte) print::b , (byte) print::ca) +(label) print::@return +(byte) print::b +(byte) print::b#0 reg byte x 55001.0 +(byte) print::ca +(byte) print::ca#0 reg byte a 55001.0 + +zp[1]:2 [ main::a#7 main::a#1 ] +reg byte x [ main::b#4 main::b#1 ] +reg byte y [ main::c#2 main::c#1 ] +reg byte a [ main::ca#0 ] +reg byte x [ print::b#0 ] +reg byte a [ print::ca#0 ] +reg byte x [ out::b#0 ] +reg byte a [ out::ca#0 ] diff --git a/src/test/ref/liverange-6.asm b/src/test/ref/liverange-6.asm new file mode 100644 index 000000000..a21d5a3af --- /dev/null +++ b/src/test/ref/liverange-6.asm @@ -0,0 +1,30 @@ +// Test effective live range and register allocation +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + ldx #0 + ldy #0 + __b1: + // out(msg[i]) + lda msg,y + jsr out + // for( byte i: 0..11) + iny + cpy #$c + bne __b1 + // } + rts +} +// out(byte register(A) c) +out: { + // SCREEN[idx++] = c + sta SCREEN,x + // SCREEN[idx++] = c; + inx + // } + rts +} + msg: .text "hello world!" + .byte 0 diff --git a/src/test/ref/liverange-6.cfg b/src/test/ref/liverange-6.cfg new file mode 100644 index 000000000..2b3d4d9fa --- /dev/null +++ b/src/test/ref/liverange-6.cfg @@ -0,0 +1,36 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#11 ← phi( main/(byte) 0 main::@2/(byte) idx#3 ) + [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) + [6] (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) + [7] call out + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [9] if((byte) main::i#1!=(byte) $c) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from main::@1 + [11] *((const byte*) SCREEN + (byte) idx#11) ← (byte) out::c#0 + [12] (byte) idx#3 ← ++ (byte) idx#11 + to:out::@return +out::@return: scope:[out] from out + [13] return + to:@return diff --git a/src/test/ref/liverange-6.log b/src/test/ref/liverange-6.log new file mode 100644 index 000000000..3318f6092 --- /dev/null +++ b/src/test/ref/liverange-6.log @@ -0,0 +1,508 @@ +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @1 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte) idx#0 ← (byte) 0 + to:@2 + +(void()) main() +main: scope:[main] from @2 + (byte) idx#13 ← phi( @2/(byte) idx#12 ) + (byte) main::i#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) idx#11 ← phi( main/(byte) idx#13 main::@3/(byte) idx#1 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) + (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) + call out + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) + (byte) idx#6 ← phi( main::@1/(byte) idx#4 ) + (byte) idx#1 ← (byte) idx#6 + (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,$b) + (bool~) main::$1 ← (byte) main::i#1 != rangelast(0,$b) + if((bool~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte) idx#7 ← phi( main::@3/(byte) idx#1 ) + (byte) idx#2 ← (byte) idx#7 + return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from main::@1 + (byte) idx#8 ← phi( main::@1/(byte) idx#11 ) + (byte) out::c#1 ← phi( main::@1/(byte) out::c#0 ) + *((const byte*) SCREEN + (byte) idx#8) ← (byte) out::c#1 + (byte) idx#3 ← ++ (byte) idx#8 + to:out::@return +out::@return: scope:[out] from out + (byte) idx#9 ← phi( out/(byte) idx#3 ) + (byte) idx#4 ← (byte) idx#9 + return + to:@return +@2: scope:[] from @begin + (byte) idx#12 ← phi( @begin/(byte) idx#0 ) + call main + to:@3 +@3: scope:[] from @2 + (byte) idx#10 ← phi( @2/(byte) idx#2 ) + (byte) idx#5 ← (byte) idx#10 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(byte) idx +(byte) idx#0 +(byte) idx#1 +(byte) idx#10 +(byte) idx#11 +(byte) idx#12 +(byte) idx#13 +(byte) idx#2 +(byte) idx#3 +(byte) idx#4 +(byte) idx#5 +(byte) idx#6 +(byte) idx#7 +(byte) idx#8 +(byte) idx#9 +(void()) main() +(bool~) main::$1 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 +(byte) main::i#3 +(const byte*) msg[] = (byte*) "hello world!" +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 +(byte) out::c#1 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias main::i#2 = main::i#3 +Alias idx#1 = idx#6 idx#7 idx#2 +Alias idx#3 = idx#9 idx#4 +Alias idx#0 = idx#12 +Alias idx#10 = idx#5 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) idx#13 (byte) idx#0 +Identical Phi Values (byte) idx#1 (byte) idx#3 +Identical Phi Values (byte) out::c#1 (byte) out::c#0 +Identical Phi Values (byte) idx#8 (byte) idx#11 +Identical Phi Values (byte) idx#10 (byte) idx#1 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$1 [9] if((byte) main::i#1!=rangelast(0,$b)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) idx#0 = 0 +Constant (const byte) main::i#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [7] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [9] if(main::i#1!=rangelast(0,$b)) goto main::@1 to (number) $c +Adding number conversion cast (unumber) $c in if((byte) main::i#1!=(number) $c) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $c +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $c +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) idx#0 +Constant inlined main::i#0 = (byte) 0 +Constant inlined idx#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@4(between main::@3 and main::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to out:8 + +Created 2 initial phi equivalence classes +Coalesced [12] main::i#4 ← main::i#1 +Coalesced [13] idx#14 ← idx#3 +Coalesced down to 2 phi equivalence classes +Culled Empty Block (label) @3 +Culled Empty Block (label) main::@4 +Renumbering block @2 to @1 +Renumbering block main::@3 to main::@2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#11 ← phi( main/(byte) 0 main::@2/(byte) idx#3 ) + [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) + [6] (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) + [7] call out + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [9] if((byte) main::i#1!=(byte) $c) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from main::@1 + [11] *((const byte*) SCREEN + (byte) idx#11) ← (byte) out::c#0 + [12] (byte) idx#3 ← ++ (byte) idx#11 + to:out::@return +out::@return: scope:[out] from out + [13] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte) idx +(byte) idx#11 701.0 +(byte) idx#3 220.39999999999998 +(void()) main() +(byte) main::i +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 +(void()) out((byte) out::c) +(byte) out::c +(byte) out::c#0 1102.0 + +Initial phi equivalence classes +[ main::i#2 main::i#1 ] +[ idx#11 idx#3 ] +Added variable out::c#0 to live range equivalence class [ out::c#0 ] +Complete equivalence classes +[ main::i#2 main::i#1 ] +[ idx#11 idx#3 ] +[ out::c#0 ] +Allocated zp[1]:2 [ main::i#2 main::i#1 ] +Allocated zp[1]:3 [ idx#11 idx#3 ] +Allocated zp[1]:4 [ out::c#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + .label idx = 3 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label i = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#11 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#11 = (byte) idx#3 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z i + lda msg,y + sta.z out.c + // [7] call out + jsr out + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [9] if((byte) main::i#1!=(byte) $c) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$c + cmp.z i + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out +// out(byte zp(4) c) +out: { + .label c = 4 + // [11] *((const byte*) SCREEN + (byte) idx#11) ← (byte) out::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z c + ldy.z idx + sta SCREEN,y + // [12] (byte) idx#3 ← ++ (byte) idx#11 -- vbuz1=_inc_vbuz1 + inc.z idx + jmp __breturn + // out::@return + __breturn: + // [13] return + rts +} + // File Data + msg: .text "hello world!" + .byte 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:3 [ idx#11 idx#3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:4 [ out::c#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [out] 1,102: zp[1]:4 [ out::c#0 ] +Uplift Scope [] 921.4: zp[1]:3 [ idx#11 idx#3 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] + +Uplifting [out] best 520 combination reg byte a [ out::c#0 ] +Uplifting [] best 484 combination reg byte x [ idx#11 idx#3 ] +Uplifting [main] best 364 combination reg byte y [ main::i#2 main::i#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#11 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#11 = (byte) idx#3 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuyy + lda msg,y + // [7] call out + jsr out + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + iny + // [9] if((byte) main::i#1!=(byte) $c) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$c + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out +// out(byte register(A) c) +out: { + // [11] *((const byte*) SCREEN + (byte) idx#11) ← (byte) out::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [12] (byte) idx#3 ← ++ (byte) idx#11 -- vbuxx=_inc_vbuxx + inx + jmp __breturn + // out::@return + __breturn: + // [13] return + rts +} + // File Data + msg: .text "hello world!" + .byte 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label __b1_from___b2 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b2: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#11 reg byte x 701.0 +(byte) idx#3 reg byte x 220.39999999999998 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 +(const byte*) msg[] = (byte*) "hello world!" +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 1102.0 + +reg byte y [ main::i#2 main::i#1 ] +reg byte x [ idx#11 idx#3 ] +reg byte a [ out::c#0 ] + + +FINAL ASSEMBLER +Score: 229 + + // File Comments +// Test effective live range and register allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) idx#11 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + // [5] phi (byte) idx#11 = (byte) idx#3 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + // main::@1 + __b1: + // out(msg[i]) + // [6] (byte) out::c#0 ← *((const byte*) msg + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuyy + lda msg,y + // [7] call out + jsr out + // main::@2 + // for( byte i: 0..11) + // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + iny + // [9] if((byte) main::i#1!=(byte) $c) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$c + bne __b1 + // main::@return + // } + // [10] return + rts +} + // out +// out(byte register(A) c) +out: { + // SCREEN[idx++] = c + // [11] *((const byte*) SCREEN + (byte) idx#11) ← (byte) out::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // SCREEN[idx++] = c; + // [12] (byte) idx#3 ← ++ (byte) idx#11 -- vbuxx=_inc_vbuxx + inx + // out::@return + // } + // [13] return + rts +} + // File Data + msg: .text "hello world!" + .byte 0 + diff --git a/src/test/ref/liverange-6.sym b/src/test/ref/liverange-6.sym new file mode 100644 index 000000000..b77f58025 --- /dev/null +++ b/src/test/ref/liverange-6.sym @@ -0,0 +1,23 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#11 reg byte x 701.0 +(byte) idx#3 reg byte x 220.39999999999998 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 +(const byte*) msg[] = (byte*) "hello world!" +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 1102.0 + +reg byte y [ main::i#2 main::i#1 ] +reg byte x [ idx#11 idx#3 ] +reg byte a [ out::c#0 ] diff --git a/src/test/ref/liverange-7.asm b/src/test/ref/liverange-7.asm new file mode 100644 index 000000000..9704e506b --- /dev/null +++ b/src/test/ref/liverange-7.asm @@ -0,0 +1,36 @@ +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + ldx #0 + txa + __b1: + // out2(c) + jsr out2 + // for(char c: 0..39 ) + clc + adc #1 + cmp #$28 + bne __b1 + // } + rts +} +// out2(byte register(A) c) +out2: { + // out(c) + jsr out + // } + rts +} +// out(byte register(A) c) +out: { + // idx++; + inx + // SCREEN[idx] = c + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-7.cfg b/src/test/ref/liverange-7.cfg new file mode 100644 index 000000000..299934edf --- /dev/null +++ b/src/test/ref/liverange-7.cfg @@ -0,0 +1,45 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#15 ← phi( main/(byte) 0 main::@2/(byte) idx#13 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) out2::c#0 ← (byte) main::c#2 + [7] call out2 + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + [11] (byte) out::c#0 ← (byte) out2::c#0 + [12] call out + to:out2::@return +out2::@return: scope:[out2] from out2 + [13] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 + [14] (byte) idx#13 ← ++ (byte) idx#15 + [15] *((const byte*) SCREEN + (byte) idx#13) ← (byte) out::c#0 + to:out::@return +out::@return: scope:[out] from out + [16] return + to:@return diff --git a/src/test/ref/liverange-7.log b/src/test/ref/liverange-7.log new file mode 100644 index 000000000..cd1f4c65c --- /dev/null +++ b/src/test/ref/liverange-7.log @@ -0,0 +1,603 @@ +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte) idx#0 ← (byte) 0 + to:@3 + +(void()) main() +main: scope:[main] from @3 + (byte) idx#18 ← phi( @3/(byte) idx#17 ) + (byte) main::c#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) idx#15 ← phi( main/(byte) idx#18 main::@3/(byte) idx#1 ) + (byte) main::c#2 ← phi( main/(byte) main::c#0 main::@3/(byte) main::c#1 ) + (byte) out2::c#0 ← (byte) main::c#2 + call out2 + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte) main::c#3 ← phi( main::@1/(byte) main::c#2 ) + (byte) idx#8 ← phi( main::@1/(byte) idx#4 ) + (byte) idx#1 ← (byte) idx#8 + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$27) + (bool~) main::$1 ← (byte) main::c#1 != rangelast(0,$27) + if((bool~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte) idx#9 ← phi( main::@3/(byte) idx#1 ) + (byte) idx#2 ← (byte) idx#9 + return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + (byte) idx#16 ← phi( main::@1/(byte) idx#15 ) + (byte) out2::c#1 ← phi( main::@1/(byte) out2::c#0 ) + (byte) out::c#0 ← (byte) out2::c#1 + call out + to:out2::@1 +out2::@1: scope:[out2] from out2 + (byte) idx#10 ← phi( out2/(byte) idx#6 ) + (byte) idx#3 ← (byte) idx#10 + to:out2::@return +out2::@return: scope:[out2] from out2::@1 + (byte) idx#11 ← phi( out2::@1/(byte) idx#3 ) + (byte) idx#4 ← (byte) idx#11 + return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 + (byte) out::c#1 ← phi( out2/(byte) out::c#0 ) + (byte) idx#12 ← phi( out2/(byte) idx#16 ) + (byte) idx#5 ← ++ (byte) idx#12 + *((const byte*) SCREEN + (byte) idx#5) ← (byte) out::c#1 + to:out::@return +out::@return: scope:[out] from out + (byte) idx#13 ← phi( out/(byte) idx#5 ) + (byte) idx#6 ← (byte) idx#13 + return + to:@return +@3: scope:[] from @begin + (byte) idx#17 ← phi( @begin/(byte) idx#0 ) + call main + to:@4 +@4: scope:[] from @3 + (byte) idx#14 ← phi( @3/(byte) idx#2 ) + (byte) idx#7 ← (byte) idx#14 + to:@end +@end: scope:[] from @4 + +SYMBOL TABLE SSA +(label) @3 +(label) @4 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(byte) idx +(byte) idx#0 +(byte) idx#1 +(byte) idx#10 +(byte) idx#11 +(byte) idx#12 +(byte) idx#13 +(byte) idx#14 +(byte) idx#15 +(byte) idx#16 +(byte) idx#17 +(byte) idx#18 +(byte) idx#2 +(byte) idx#3 +(byte) idx#4 +(byte) idx#5 +(byte) idx#6 +(byte) idx#7 +(byte) idx#8 +(byte) idx#9 +(void()) main() +(bool~) main::$1 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 +(byte) out::c#1 +(void()) out2((byte) out2::c) +(label) out2::@1 +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 +(byte) out2::c#1 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias main::c#2 = main::c#3 +Alias idx#1 = idx#8 idx#9 idx#2 +Alias idx#10 = idx#3 idx#11 idx#4 +Alias idx#13 = idx#5 idx#6 +Alias idx#0 = idx#17 +Alias idx#14 = idx#7 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) idx#18 (byte) idx#0 +Identical Phi Values (byte) idx#1 (byte) idx#10 +Identical Phi Values (byte) out2::c#1 (byte) out2::c#0 +Identical Phi Values (byte) idx#16 (byte) idx#15 +Identical Phi Values (byte) idx#10 (byte) idx#13 +Identical Phi Values (byte) idx#12 (byte) idx#16 +Identical Phi Values (byte) out::c#1 (byte) out::c#0 +Identical Phi Values (byte) idx#14 (byte) idx#1 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$1 [9] if((byte) main::c#1!=rangelast(0,$27)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) idx#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [7] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [9] if(main::c#1!=rangelast(0,$27)) goto main::@1 to (number) $28 +Adding number conversion cast (unumber) $28 in if((byte) main::c#1!=(number) $28) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $28 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $28 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::c#0 +Inlining constant with var siblings (const byte) idx#0 +Constant inlined idx#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@4(between main::@3 and main::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of out2::@1 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to out2:8 +Calls in [out2] to out:15 + +Created 2 initial phi equivalence classes +Coalesced [12] main::c#4 ← main::c#1 +Coalesced [13] idx#19 ← idx#13 +Coalesced down to 2 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) main::@4 +Culled Empty Block (label) out2::@1 +Renumbering block @3 to @1 +Renumbering block main::@3 to main::@2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#15 ← phi( main/(byte) 0 main::@2/(byte) idx#13 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) out2::c#0 ← (byte) main::c#2 + [7] call out2 + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + [11] (byte) out::c#0 ← (byte) out2::c#0 + [12] call out + to:out2::@return +out2::@return: scope:[out2] from out2 + [13] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 + [14] (byte) idx#13 ← ++ (byte) idx#15 + [15] *((const byte*) SCREEN + (byte) idx#13) ← (byte) out::c#0 + to:out::@return +out::@return: scope:[out] from out + [16] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte) idx +(byte) idx#13 2512.875 +(byte) idx#15 3367.333333333333 +(void()) main() +(byte) main::c +(byte) main::c#1 151.5 +(byte) main::c#2 101.0 +(void()) out((byte) out::c) +(byte) out::c +(byte) out::c#0 5501.0 +(void()) out2((byte) out2::c) +(byte) out2::c +(byte) out2::c#0 1102.0 + +Initial phi equivalence classes +[ main::c#2 main::c#1 ] +[ idx#15 idx#13 ] +Added variable out2::c#0 to live range equivalence class [ out2::c#0 ] +Added variable out::c#0 to live range equivalence class [ out::c#0 ] +Complete equivalence classes +[ main::c#2 main::c#1 ] +[ idx#15 idx#13 ] +[ out2::c#0 ] +[ out::c#0 ] +Allocated zp[1]:2 [ main::c#2 main::c#1 ] +Allocated zp[1]:3 [ idx#15 idx#13 ] +Allocated zp[1]:4 [ out2::c#0 ] +Allocated zp[1]:5 [ out::c#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + .label idx = 3 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label c = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#15 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#15 = (byte) idx#13 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out2::c#0 ← (byte) main::c#2 -- vbuz1=vbuz2 + lda.z c + sta.z out2.c + // [7] call out2 + jsr out2 + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z c + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out2 +// out2(byte zp(4) c) +out2: { + .label c = 4 + // [11] (byte) out::c#0 ← (byte) out2::c#0 -- vbuz1=vbuz2 + lda.z c + sta.z out.c + // [12] call out + jsr out + jmp __breturn + // out2::@return + __breturn: + // [13] return + rts +} + // out +// out(byte zp(5) c) +out: { + .label c = 5 + // [14] (byte) idx#13 ← ++ (byte) idx#15 -- vbuz1=_inc_vbuz1 + inc.z idx + // [15] *((const byte*) SCREEN + (byte) idx#13) ← (byte) out::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z c + ldy.z idx + sta SCREEN,y + jmp __breturn + // out::@return + __breturn: + // [16] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:3 [ idx#15 idx#13 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:4 [ out2::c#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:5 [ out::c#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 5,880.21: zp[1]:3 [ idx#15 idx#13 ] +Uplift Scope [out] 5,501: zp[1]:5 [ out::c#0 ] +Uplift Scope [out2] 1,102: zp[1]:4 [ out2::c#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::c#2 main::c#1 ] + +Uplifting [] best 493 combination reg byte x [ idx#15 idx#13 ] +Uplifting [out] best 487 combination reg byte a [ out::c#0 ] +Uplifting [out2] best 454 combination reg byte a [ out2::c#0 ] +Uplifting [main] best 354 combination reg byte a [ main::c#2 main::c#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#15 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuaa=vbuc1 + lda #0 + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#15 = (byte) idx#13 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out2::c#0 ← (byte) main::c#2 + // [7] call out2 + jsr out2 + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$28 + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out2 +// out2(byte register(A) c) +out2: { + // [11] (byte) out::c#0 ← (byte) out2::c#0 + // [12] call out + jsr out + jmp __breturn + // out2::@return + __breturn: + // [13] return + rts +} + // out +// out(byte register(A) c) +out: { + // [14] (byte) idx#13 ← ++ (byte) idx#15 -- vbuxx=_inc_vbuxx + inx + // [15] *((const byte*) SCREEN + (byte) idx#13) ← (byte) out::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // out::@return + __breturn: + // [16] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda #0 with TXA +Replacing label __b1_from___b2 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b2: +Removing instruction __breturn: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#13 reg byte x 2512.875 +(byte) idx#15 reg byte x 3367.333333333333 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 reg byte a 151.5 +(byte) main::c#2 reg byte a 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 5501.0 +(void()) out2((byte) out2::c) +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 reg byte a 1102.0 + +reg byte a [ main::c#2 main::c#1 ] +reg byte x [ idx#15 idx#13 ] +reg byte a [ out2::c#0 ] +reg byte a [ out::c#0 ] + + +FINAL ASSEMBLER +Score: 216 + + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) idx#15 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuaa=vbuc1 + txa + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + // [5] phi (byte) idx#15 = (byte) idx#13 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + // main::@1 + __b1: + // out2(c) + // [6] (byte) out2::c#0 ← (byte) main::c#2 + // [7] call out2 + jsr out2 + // main::@2 + // for(char c: 0..39 ) + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$28 + bne __b1 + // main::@return + // } + // [10] return + rts +} + // out2 +// out2(byte register(A) c) +out2: { + // out(c) + // [11] (byte) out::c#0 ← (byte) out2::c#0 + // [12] call out + jsr out + // out2::@return + // } + // [13] return + rts +} + // out +// out(byte register(A) c) +out: { + // idx++; + // [14] (byte) idx#13 ← ++ (byte) idx#15 -- vbuxx=_inc_vbuxx + inx + // SCREEN[idx] = c + // [15] *((const byte*) SCREEN + (byte) idx#13) ← (byte) out::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // out::@return + // } + // [16] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-7.sym b/src/test/ref/liverange-7.sym new file mode 100644 index 000000000..2cb8c3b26 --- /dev/null +++ b/src/test/ref/liverange-7.sym @@ -0,0 +1,27 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#13 reg byte x 2512.875 +(byte) idx#15 reg byte x 3367.333333333333 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 reg byte a 151.5 +(byte) main::c#2 reg byte a 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 5501.0 +(void()) out2((byte) out2::c) +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 reg byte a 1102.0 + +reg byte a [ main::c#2 main::c#1 ] +reg byte x [ idx#15 idx#13 ] +reg byte a [ out2::c#0 ] +reg byte a [ out::c#0 ] diff --git a/src/test/ref/liverange-8.asm b/src/test/ref/liverange-8.asm new file mode 100644 index 000000000..2bddda80c --- /dev/null +++ b/src/test/ref/liverange-8.asm @@ -0,0 +1,38 @@ +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + ldx #0 + txa + __b1: + // out2(c) + jsr out2 + // for(char c: 0..39 ) + clc + adc #1 + cmp #$28 + bne __b1 + // } + rts +} +// out2(byte register(A) c) +out2: { + // out(c) + jsr out + // out(c) + jsr out + // } + rts +} +// out(byte register(A) c) +out: { + // idx++; + inx + // SCREEN[idx] = c + sta SCREEN,x + // } + rts +} diff --git a/src/test/ref/liverange-8.cfg b/src/test/ref/liverange-8.cfg new file mode 100644 index 000000000..fa245b2a7 --- /dev/null +++ b/src/test/ref/liverange-8.cfg @@ -0,0 +1,51 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#17 ← phi( main/(byte) 0 main::@2/(byte) idx#15 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) out2::c#0 ← (byte) main::c#2 + [7] call out2 + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + [11] (byte) out::c#0 ← (byte) out2::c#0 + [12] call out + to:out2::@1 +out2::@1: scope:[out2] from out2 + [13] (byte) out::c#1 ← (byte) out2::c#0 + [14] call out + to:out2::@return +out2::@return: scope:[out2] from out2::@1 + [15] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 out2::@1 + [16] (byte) out::c#2 ← phi( out2/(byte) out::c#0 out2::@1/(byte) out::c#1 ) + [16] (byte) idx#14 ← phi( out2/(byte) idx#17 out2::@1/(byte) idx#15 ) + [17] (byte) idx#15 ← ++ (byte) idx#14 + [18] *((const byte*) SCREEN + (byte) idx#15) ← (byte) out::c#2 + to:out::@return +out::@return: scope:[out] from out + [19] return + to:@return diff --git a/src/test/ref/liverange-8.log b/src/test/ref/liverange-8.log new file mode 100644 index 000000000..87dc33453 --- /dev/null +++ b/src/test/ref/liverange-8.log @@ -0,0 +1,678 @@ +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte) idx#0 ← (byte) 0 + to:@3 + +(void()) main() +main: scope:[main] from @3 + (byte) idx#20 ← phi( @3/(byte) idx#19 ) + (byte) main::c#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) idx#17 ← phi( main/(byte) idx#20 main::@3/(byte) idx#1 ) + (byte) main::c#2 ← phi( main/(byte) main::c#0 main::@3/(byte) main::c#1 ) + (byte) out2::c#0 ← (byte) main::c#2 + call out2 + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte) main::c#3 ← phi( main::@1/(byte) main::c#2 ) + (byte) idx#9 ← phi( main::@1/(byte) idx#5 ) + (byte) idx#1 ← (byte) idx#9 + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$27) + (bool~) main::$1 ← (byte) main::c#1 != rangelast(0,$27) + if((bool~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte) idx#10 ← phi( main::@3/(byte) idx#1 ) + (byte) idx#2 ← (byte) idx#10 + return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + (byte) idx#18 ← phi( main::@1/(byte) idx#17 ) + (byte) out2::c#1 ← phi( main::@1/(byte) out2::c#0 ) + (byte) out::c#0 ← (byte) out2::c#1 + call out + to:out2::@1 +out2::@1: scope:[out2] from out2 + (byte) out2::c#2 ← phi( out2/(byte) out2::c#1 ) + (byte) idx#11 ← phi( out2/(byte) idx#7 ) + (byte) idx#3 ← (byte) idx#11 + (byte) out::c#1 ← (byte) out2::c#2 + call out + to:out2::@2 +out2::@2: scope:[out2] from out2::@1 + (byte) idx#12 ← phi( out2::@1/(byte) idx#7 ) + (byte) idx#4 ← (byte) idx#12 + to:out2::@return +out2::@return: scope:[out2] from out2::@2 + (byte) idx#13 ← phi( out2::@2/(byte) idx#4 ) + (byte) idx#5 ← (byte) idx#13 + return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 out2::@1 + (byte) out::c#2 ← phi( out2/(byte) out::c#0 out2::@1/(byte) out::c#1 ) + (byte) idx#14 ← phi( out2/(byte) idx#18 out2::@1/(byte) idx#3 ) + (byte) idx#6 ← ++ (byte) idx#14 + *((const byte*) SCREEN + (byte) idx#6) ← (byte) out::c#2 + to:out::@return +out::@return: scope:[out] from out + (byte) idx#15 ← phi( out/(byte) idx#6 ) + (byte) idx#7 ← (byte) idx#15 + return + to:@return +@3: scope:[] from @begin + (byte) idx#19 ← phi( @begin/(byte) idx#0 ) + call main + to:@4 +@4: scope:[] from @3 + (byte) idx#16 ← phi( @3/(byte) idx#2 ) + (byte) idx#8 ← (byte) idx#16 + to:@end +@end: scope:[] from @4 + +SYMBOL TABLE SSA +(label) @3 +(label) @4 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*)(number) $400 +(byte) idx +(byte) idx#0 +(byte) idx#1 +(byte) idx#10 +(byte) idx#11 +(byte) idx#12 +(byte) idx#13 +(byte) idx#14 +(byte) idx#15 +(byte) idx#16 +(byte) idx#17 +(byte) idx#18 +(byte) idx#19 +(byte) idx#2 +(byte) idx#20 +(byte) idx#3 +(byte) idx#4 +(byte) idx#5 +(byte) idx#6 +(byte) idx#7 +(byte) idx#8 +(byte) idx#9 +(void()) main() +(bool~) main::$1 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 +(byte) out::c#1 +(byte) out::c#2 +(void()) out2((byte) out2::c) +(label) out2::@1 +(label) out2::@2 +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 +(byte) out2::c#1 +(byte) out2::c#2 + +Simplifying constant pointer cast (byte*) 1024 +Successful SSA optimization PassNCastSimplification +Alias main::c#2 = main::c#3 +Alias idx#1 = idx#9 idx#10 idx#2 +Alias out2::c#1 = out2::c#2 +Alias idx#11 = idx#3 +Alias idx#12 = idx#4 idx#13 idx#5 +Alias idx#15 = idx#6 idx#7 +Alias idx#0 = idx#19 +Alias idx#16 = idx#8 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) idx#20 (byte) idx#0 +Identical Phi Values (byte) idx#1 (byte) idx#12 +Identical Phi Values (byte) out2::c#1 (byte) out2::c#0 +Identical Phi Values (byte) idx#18 (byte) idx#17 +Identical Phi Values (byte) idx#11 (byte) idx#15 +Identical Phi Values (byte) idx#12 (byte) idx#15 +Identical Phi Values (byte) idx#16 (byte) idx#1 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$1 [9] if((byte) main::c#1!=rangelast(0,$27)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) idx#0 = 0 +Constant (const byte) main::c#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [7] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [9] if(main::c#1!=rangelast(0,$27)) goto main::@1 to (number) $28 +Adding number conversion cast (unumber) $28 in if((byte) main::c#1!=(number) $28) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $28 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $28 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::c#0 +Inlining constant with var siblings (const byte) idx#0 +Constant inlined idx#0 = (byte) 0 +Constant inlined main::c#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@4(between main::@3 and main::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of out2::@2 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to out2:8 +Calls in [out2] to out:17 out:21 + +Created 4 initial phi equivalence classes +Coalesced [12] main::c#4 ← main::c#1 +Coalesced [13] idx#21 ← idx#15 +Coalesced [15] idx#22 ← idx#17 +Coalesced [16] out::c#3 ← out::c#0 +Coalesced (already) [19] idx#23 ← idx#15 +Coalesced [20] out::c#4 ← out::c#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) main::@4 +Culled Empty Block (label) out2::@2 +Renumbering block @3 to @1 +Renumbering block main::@3 to main::@2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#17 ← phi( main/(byte) 0 main::@2/(byte) idx#15 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) out2::c#0 ← (byte) main::c#2 + [7] call out2 + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) out2((byte) out2::c) +out2: scope:[out2] from main::@1 + [11] (byte) out::c#0 ← (byte) out2::c#0 + [12] call out + to:out2::@1 +out2::@1: scope:[out2] from out2 + [13] (byte) out::c#1 ← (byte) out2::c#0 + [14] call out + to:out2::@return +out2::@return: scope:[out2] from out2::@1 + [15] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from out2 out2::@1 + [16] (byte) out::c#2 ← phi( out2/(byte) out::c#0 out2::@1/(byte) out::c#1 ) + [16] (byte) idx#14 ← phi( out2/(byte) idx#17 out2::@1/(byte) idx#15 ) + [17] (byte) idx#15 ← ++ (byte) idx#14 + [18] *((const byte*) SCREEN + (byte) idx#15) ← (byte) out::c#2 + to:out::@return +out::@return: scope:[out] from out + [19] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte) idx +(byte) idx#14 12003.0 +(byte) idx#15 2110.4 +(byte) idx#17 367.33333333333337 +(void()) main() +(byte) main::c +(byte) main::c#1 151.5 +(byte) main::c#2 101.0 +(void()) out((byte) out::c) +(byte) out::c +(byte) out::c#0 2002.0 +(byte) out::c#1 2002.0 +(byte) out::c#2 6001.5 +(void()) out2((byte) out2::c) +(byte) out2::c +(byte) out2::c#0 701.0 + +Initial phi equivalence classes +[ main::c#2 main::c#1 ] +[ idx#14 idx#17 idx#15 ] +[ out::c#2 out::c#0 out::c#1 ] +Added variable out2::c#0 to live range equivalence class [ out2::c#0 ] +Complete equivalence classes +[ main::c#2 main::c#1 ] +[ idx#14 idx#17 idx#15 ] +[ out::c#2 out::c#0 out::c#1 ] +[ out2::c#0 ] +Allocated zp[1]:2 [ main::c#2 main::c#1 ] +Allocated zp[1]:3 [ idx#14 idx#17 idx#15 ] +Allocated zp[1]:4 [ out::c#2 out::c#0 out::c#1 ] +Allocated zp[1]:5 [ out2::c#0 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + .label idx = 3 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label c = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#17 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#17 = (byte) idx#15 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out2::c#0 ← (byte) main::c#2 -- vbuz1=vbuz2 + lda.z c + sta.z out2.c + // [7] call out2 + jsr out2 + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z c + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out2 +// out2(byte zp(5) c) +out2: { + .label c = 5 + // [11] (byte) out::c#0 ← (byte) out2::c#0 -- vbuz1=vbuz2 + lda.z c + sta.z out.c + // [12] call out + // [16] phi from out2 to out [phi:out2->out] + out_from_out2: + // [16] phi (byte) out::c#2 = (byte) out::c#0 [phi:out2->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#17 [phi:out2->out#1] -- register_copy + jsr out + jmp __b1 + // out2::@1 + __b1: + // [13] (byte) out::c#1 ← (byte) out2::c#0 -- vbuz1=vbuz2 + lda.z c + sta.z out.c + // [14] call out + // [16] phi from out2::@1 to out [phi:out2::@1->out] + out_from___b1: + // [16] phi (byte) out::c#2 = (byte) out::c#1 [phi:out2::@1->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#15 [phi:out2::@1->out#1] -- register_copy + jsr out + jmp __breturn + // out2::@return + __breturn: + // [15] return + rts +} + // out +// out(byte zp(4) c) +out: { + .label c = 4 + // [17] (byte) idx#15 ← ++ (byte) idx#14 -- vbuz1=_inc_vbuz1 + inc.z idx + // [18] *((const byte*) SCREEN + (byte) idx#15) ← (byte) out::c#2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z c + ldy.z idx + sta SCREEN,y + jmp __breturn + // out::@return + __breturn: + // [19] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:3 [ idx#14 idx#17 idx#15 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:4 [ out::c#2 out::c#0 out::c#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:5 [ out2::c#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 14,480.73: zp[1]:3 [ idx#14 idx#17 idx#15 ] +Uplift Scope [out] 10,005.5: zp[1]:4 [ out::c#2 out::c#0 out::c#1 ] +Uplift Scope [out2] 701: zp[1]:5 [ out2::c#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::c#2 main::c#1 ] + +Uplifting [] best 508 combination reg byte x [ idx#14 idx#17 idx#15 ] +Uplifting [out] best 499 combination reg byte a [ out::c#2 out::c#0 out::c#1 ] +Uplifting [out2] best 463 combination reg byte a [ out2::c#0 ] +Uplifting [main] best 363 combination reg byte a [ main::c#2 main::c#1 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#17 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuaa=vbuc1 + lda #0 + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#17 = (byte) idx#15 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) out2::c#0 ← (byte) main::c#2 + // [7] call out2 + jsr out2 + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$28 + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // out2 +// out2(byte register(A) c) +out2: { + // [11] (byte) out::c#0 ← (byte) out2::c#0 + // [12] call out + // [16] phi from out2 to out [phi:out2->out] + out_from_out2: + // [16] phi (byte) out::c#2 = (byte) out::c#0 [phi:out2->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#17 [phi:out2->out#1] -- register_copy + jsr out + jmp __b1 + // out2::@1 + __b1: + // [13] (byte) out::c#1 ← (byte) out2::c#0 + // [14] call out + // [16] phi from out2::@1 to out [phi:out2::@1->out] + out_from___b1: + // [16] phi (byte) out::c#2 = (byte) out::c#1 [phi:out2::@1->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#15 [phi:out2::@1->out#1] -- register_copy + jsr out + jmp __breturn + // out2::@return + __breturn: + // [15] return + rts +} + // out +// out(byte register(A) c) +out: { + // [17] (byte) idx#15 ← ++ (byte) idx#14 -- vbuxx=_inc_vbuxx + inx + // [18] *((const byte*) SCREEN + (byte) idx#15) ← (byte) out::c#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // out::@return + __breturn: + // [19] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda #0 with TXA +Replacing label __b1_from___b2 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b2: +Removing instruction out_from___b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction __b2: +Removing instruction __breturn: +Removing instruction out_from_out2: +Removing instruction __b1: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#14 reg byte x 12003.0 +(byte) idx#15 reg byte x 2110.4 +(byte) idx#17 reg byte x 367.33333333333337 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 reg byte a 151.5 +(byte) main::c#2 reg byte a 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 2002.0 +(byte) out::c#1 reg byte a 2002.0 +(byte) out::c#2 reg byte a 6001.5 +(void()) out2((byte) out2::c) +(label) out2::@1 +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 reg byte a 701.0 + +reg byte a [ main::c#2 main::c#1 ] +reg byte x [ idx#14 idx#17 idx#15 ] +reg byte a [ out::c#2 out::c#0 out::c#1 ] +reg byte a [ out2::c#0 ] + + +FINAL ASSEMBLER +Score: 222 + + // File Comments +// Test effective live range and register allocation +// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register. + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) idx#17 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuaa=vbuc1 + txa + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + // [5] phi (byte) idx#17 = (byte) idx#15 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + // main::@1 + __b1: + // out2(c) + // [6] (byte) out2::c#0 ← (byte) main::c#2 + // [7] call out2 + jsr out2 + // main::@2 + // for(char c: 0..39 ) + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$28 + bne __b1 + // main::@return + // } + // [10] return + rts +} + // out2 +// out2(byte register(A) c) +out2: { + // out(c) + // [11] (byte) out::c#0 ← (byte) out2::c#0 + // [12] call out + // [16] phi from out2 to out [phi:out2->out] + // [16] phi (byte) out::c#2 = (byte) out::c#0 [phi:out2->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#17 [phi:out2->out#1] -- register_copy + jsr out + // out2::@1 + // out(c) + // [13] (byte) out::c#1 ← (byte) out2::c#0 + // [14] call out + // [16] phi from out2::@1 to out [phi:out2::@1->out] + // [16] phi (byte) out::c#2 = (byte) out::c#1 [phi:out2::@1->out#0] -- register_copy + // [16] phi (byte) idx#14 = (byte) idx#15 [phi:out2::@1->out#1] -- register_copy + jsr out + // out2::@return + // } + // [15] return + rts +} + // out +// out(byte register(A) c) +out: { + // idx++; + // [17] (byte) idx#15 ← ++ (byte) idx#14 -- vbuxx=_inc_vbuxx + inx + // SCREEN[idx] = c + // [18] *((const byte*) SCREEN + (byte) idx#15) ← (byte) out::c#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // out::@return + // } + // [19] return + rts +} + // File Data + diff --git a/src/test/ref/liverange-8.sym b/src/test/ref/liverange-8.sym new file mode 100644 index 000000000..e750d1b14 --- /dev/null +++ b/src/test/ref/liverange-8.sym @@ -0,0 +1,31 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#14 reg byte x 12003.0 +(byte) idx#15 reg byte x 2110.4 +(byte) idx#17 reg byte x 367.33333333333337 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 reg byte a 151.5 +(byte) main::c#2 reg byte a 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 reg byte a 2002.0 +(byte) out::c#1 reg byte a 2002.0 +(byte) out::c#2 reg byte a 6001.5 +(void()) out2((byte) out2::c) +(label) out2::@1 +(label) out2::@return +(byte) out2::c +(byte) out2::c#0 reg byte a 701.0 + +reg byte a [ main::c#2 main::c#1 ] +reg byte x [ idx#14 idx#17 idx#15 ] +reg byte a [ out::c#2 out::c#0 out::c#1 ] +reg byte a [ out2::c#0 ] diff --git a/src/test/ref/liverange-9.asm b/src/test/ref/liverange-9.asm new file mode 100644 index 000000000..d67963f60 --- /dev/null +++ b/src/test/ref/liverange-9.asm @@ -0,0 +1,68 @@ +// Test effective live range and register allocation +// Here main::c, outsw::c and outw::c can all have the same allocation +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +main: { + .label c = 2 + ldx #0 + txa + sta.z c + __b1: + // outsw(c) + ldy.z c + jsr outsw + // for(char c: 0..39 ) + inc.z c + lda #$28 + cmp.z c + bne __b1 + // } + rts +} +// outsw(byte register(Y) c) +outsw: { + // out('-') + lda #'-' + jsr out + // outw(c) + sty.z outw.c + jsr outw + // } + rts +} +// outw(byte zp(3) c) +outw: { + .label c = 3 + // c<<4 + lda.z c + asl + asl + asl + asl + // out(HEXTAB[c<<4]) + tay + lda HEXTAB,y + jsr out + // c&0x0f + lda #$f + and.z c + // out(HEXTAB[c&0x0f]) + tay + lda HEXTAB,y + jsr out + // } + rts +} +// out(byte register(A) c) +out: { + // idx++; + inx + // SCREEN[idx] = c + sta SCREEN,x + // } + rts +} + HEXTAB: .text "0123456789abcdef" + .byte 0 diff --git a/src/test/ref/liverange-9.cfg b/src/test/ref/liverange-9.cfg new file mode 100644 index 000000000..6682be866 --- /dev/null +++ b/src/test/ref/liverange-9.cfg @@ -0,0 +1,66 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#23 ← phi( main/(byte) 0 main::@2/(byte) idx#10 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) outsw::c#0 ← (byte) main::c#2 + [7] call outsw + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) outsw((byte) outsw::c) +outsw: scope:[outsw] from main::@1 + [11] phi() + [12] call out + to:outsw::@1 +outsw::@1: scope:[outsw] from outsw + [13] (byte) outw::c#0 ← (byte) outsw::c#0 + [14] call outw + to:outsw::@return +outsw::@return: scope:[outsw] from outsw::@1 + [15] return + to:@return + +(void()) outw((byte) outw::c) +outw: scope:[outw] from outsw::@1 + [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 + [17] (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) + [18] call out + to:outw::@1 +outw::@1: scope:[outw] from outw + [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f + [20] (byte) out::c#2 ← *((const byte*) HEXTAB + (byte~) outw::$2) + [21] call out + to:outw::@return +outw::@return: scope:[outw] from outw::@1 + [22] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from outsw outw outw::@1 + [23] (byte) out::c#3 ← phi( outsw/(byte) '-' outw/(byte) out::c#1 outw::@1/(byte) out::c#2 ) + [23] (byte) idx#20 ← phi( outsw/(byte) idx#23 outw/(byte) idx#10 outw::@1/(byte) idx#10 ) + [24] (byte) idx#10 ← ++ (byte) idx#20 + [25] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#3 + to:out::@return +out::@return: scope:[out] from out + [26] return + to:@return diff --git a/src/test/ref/liverange-9.log b/src/test/ref/liverange-9.log new file mode 100644 index 000000000..cc33b9cc3 --- /dev/null +++ b/src/test/ref/liverange-9.log @@ -0,0 +1,944 @@ +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 +Culled Empty Block (label) @3 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte) idx#0 ← (byte) 0 + to:@4 + +(void()) main() +main: scope:[main] from @4 + (byte) idx#27 ← phi( @4/(byte) idx#26 ) + (byte) main::c#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) idx#23 ← phi( main/(byte) idx#27 main::@3/(byte) idx#1 ) + (byte) main::c#2 ← phi( main/(byte) main::c#0 main::@3/(byte) main::c#1 ) + (byte) outsw::c#0 ← (byte) main::c#2 + call outsw + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte) main::c#3 ← phi( main::@1/(byte) main::c#2 ) + (byte) idx#12 ← phi( main::@1/(byte) idx#5 ) + (byte) idx#1 ← (byte) idx#12 + (byte) main::c#1 ← (byte) main::c#3 + rangenext(0,$27) + (bool~) main::$1 ← (byte) main::c#1 != rangelast(0,$27) + if((bool~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte) idx#13 ← phi( main::@3/(byte) idx#1 ) + (byte) idx#2 ← (byte) idx#13 + return + to:@return + +(void()) outsw((byte) outsw::c) +outsw: scope:[outsw] from main::@1 + (byte) outsw::c#2 ← phi( main::@1/(byte) outsw::c#0 ) + (byte) idx#24 ← phi( main::@1/(byte) idx#23 ) + (byte) out::c#0 ← (byte) '-' + call out + to:outsw::@1 +outsw::@1: scope:[outsw] from outsw + (byte) outsw::c#1 ← phi( outsw/(byte) outsw::c#2 ) + (byte) idx#14 ← phi( outsw/(byte) idx#10 ) + (byte) idx#3 ← (byte) idx#14 + (byte) outw::c#0 ← (byte) outsw::c#1 + call outw + to:outsw::@2 +outsw::@2: scope:[outsw] from outsw::@1 + (byte) idx#15 ← phi( outsw::@1/(byte) idx#8 ) + (byte) idx#4 ← (byte) idx#15 + to:outsw::@return +outsw::@return: scope:[outsw] from outsw::@2 + (byte) idx#16 ← phi( outsw::@2/(byte) idx#4 ) + (byte) idx#5 ← (byte) idx#16 + return + to:@return + +(void()) outw((byte) outw::c) +outw: scope:[outw] from outsw::@1 + (byte) idx#25 ← phi( outsw::@1/(byte) idx#3 ) + (byte) outw::c#1 ← phi( outsw::@1/(byte) outw::c#0 ) + (byte~) outw::$0 ← (byte) outw::c#1 << (number) 4 + (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) + call out + to:outw::@1 +outw::@1: scope:[outw] from outw + (byte) outw::c#2 ← phi( outw/(byte) outw::c#1 ) + (byte) idx#17 ← phi( outw/(byte) idx#10 ) + (byte) idx#6 ← (byte) idx#17 + (number~) outw::$2 ← (byte) outw::c#2 & (number) $f + (byte) out::c#2 ← *((const byte*) HEXTAB + (number~) outw::$2) + call out + to:outw::@2 +outw::@2: scope:[outw] from outw::@1 + (byte) idx#18 ← phi( outw::@1/(byte) idx#10 ) + (byte) idx#7 ← (byte) idx#18 + to:outw::@return +outw::@return: scope:[outw] from outw::@2 + (byte) idx#19 ← phi( outw::@2/(byte) idx#7 ) + (byte) idx#8 ← (byte) idx#19 + return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from outsw outw outw::@1 + (byte) out::c#3 ← phi( outsw/(byte) out::c#0 outw/(byte) out::c#1 outw::@1/(byte) out::c#2 ) + (byte) idx#20 ← phi( outsw/(byte) idx#24 outw/(byte) idx#25 outw::@1/(byte) idx#6 ) + (byte) idx#9 ← ++ (byte) idx#20 + *((const byte*) SCREEN + (byte) idx#9) ← (byte) out::c#3 + to:out::@return +out::@return: scope:[out] from out + (byte) idx#21 ← phi( out/(byte) idx#9 ) + (byte) idx#10 ← (byte) idx#21 + return + to:@return +@4: scope:[] from @begin + (byte) idx#26 ← phi( @begin/(byte) idx#0 ) + call main + to:@5 +@5: scope:[] from @4 + (byte) idx#22 ← phi( @4/(byte) idx#2 ) + (byte) idx#11 ← (byte) idx#22 + to:@end +@end: scope:[] from @5 + +SYMBOL TABLE SSA +(label) @4 +(label) @5 +(label) @begin +(label) @end +(const byte*) HEXTAB[] = (byte*) "0123456789abcdef" +(const byte*) SCREEN = (byte*)(number) $400 +(byte) idx +(byte) idx#0 +(byte) idx#1 +(byte) idx#10 +(byte) idx#11 +(byte) idx#12 +(byte) idx#13 +(byte) idx#14 +(byte) idx#15 +(byte) idx#16 +(byte) idx#17 +(byte) idx#18 +(byte) idx#19 +(byte) idx#2 +(byte) idx#20 +(byte) idx#21 +(byte) idx#22 +(byte) idx#23 +(byte) idx#24 +(byte) idx#25 +(byte) idx#26 +(byte) idx#27 +(byte) idx#3 +(byte) idx#4 +(byte) idx#5 +(byte) idx#6 +(byte) idx#7 +(byte) idx#8 +(byte) idx#9 +(void()) main() +(bool~) main::$1 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::c +(byte) main::c#0 +(byte) main::c#1 +(byte) main::c#2 +(byte) main::c#3 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#0 +(byte) out::c#1 +(byte) out::c#2 +(byte) out::c#3 +(void()) outsw((byte) outsw::c) +(label) outsw::@1 +(label) outsw::@2 +(label) outsw::@return +(byte) outsw::c +(byte) outsw::c#0 +(byte) outsw::c#1 +(byte) outsw::c#2 +(void()) outw((byte) outw::c) +(byte~) outw::$0 +(number~) outw::$2 +(label) outw::@1 +(label) outw::@2 +(label) outw::@return +(byte) outw::c +(byte) outw::c#0 +(byte) outw::c#1 +(byte) outw::c#2 + +Adding number conversion cast (unumber) 4 in (byte~) outw::$0 ← (byte) outw::c#1 << (number) 4 +Adding number conversion cast (unumber) $f in (number~) outw::$2 ← (byte) outw::c#2 & (number) $f +Adding number conversion cast (unumber) outw::$2 in (number~) outw::$2 ← (byte) outw::c#2 & (unumber)(number) $f +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) $f +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inferred type updated to byte in (unumber~) outw::$2 ← (byte) outw::c#2 & (byte) $f +Alias main::c#2 = main::c#3 +Alias idx#1 = idx#12 idx#13 idx#2 +Alias outsw::c#1 = outsw::c#2 +Alias idx#14 = idx#3 +Alias idx#15 = idx#4 idx#16 idx#5 +Alias outw::c#1 = outw::c#2 +Alias idx#17 = idx#6 +Alias idx#18 = idx#7 idx#19 idx#8 +Alias idx#10 = idx#21 idx#9 +Alias idx#0 = idx#26 +Alias idx#11 = idx#22 +Successful SSA optimization Pass2AliasElimination +Identical Phi Values (byte) idx#27 (byte) idx#0 +Identical Phi Values (byte) idx#1 (byte) idx#15 +Identical Phi Values (byte) idx#24 (byte) idx#23 +Identical Phi Values (byte) outsw::c#1 (byte) outsw::c#0 +Identical Phi Values (byte) idx#14 (byte) idx#10 +Identical Phi Values (byte) idx#15 (byte) idx#18 +Identical Phi Values (byte) outw::c#1 (byte) outw::c#0 +Identical Phi Values (byte) idx#25 (byte) idx#14 +Identical Phi Values (byte) idx#17 (byte) idx#10 +Identical Phi Values (byte) idx#18 (byte) idx#10 +Identical Phi Values (byte) idx#11 (byte) idx#1 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) main::$1 [9] if((byte) main::c#1!=rangelast(0,$27)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) idx#0 = 0 +Constant (const byte) main::c#0 = 0 +Constant (const byte) out::c#0 = '-' +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [7] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [9] if(main::c#1!=rangelast(0,$27)) goto main::@1 to (number) $28 +Adding number conversion cast (unumber) $28 in if((byte) main::c#1!=(number) $28) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $28 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $28 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inlining constant with var siblings (const byte) main::c#0 +Inlining constant with var siblings (const byte) out::c#0 +Inlining constant with var siblings (const byte) idx#0 +Constant inlined out::c#0 = (byte) '-' +Constant inlined main::c#0 = (byte) 0 +Constant inlined idx#0 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@4(between main::@3 and main::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @5 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of outsw::@2 +Adding NOP phi() at start of outw::@2 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to outsw:8 +Calls in [outsw] to out:15 outw:17 +Calls in [outw] to out:24 out:29 + +Created 4 initial phi equivalence classes +Coalesced [12] main::c#4 ← main::c#1 +Coalesced [13] idx#28 ← idx#10 +Coalesced [14] idx#29 ← idx#23 +Coalesced (already) [22] idx#30 ← idx#10 +Coalesced [23] out::c#4 ← out::c#1 +Coalesced (already) [27] idx#31 ← idx#10 +Coalesced [28] out::c#5 ← out::c#2 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) @5 +Culled Empty Block (label) main::@4 +Culled Empty Block (label) outsw::@2 +Culled Empty Block (label) outw::@2 +Renumbering block @4 to @1 +Renumbering block main::@3 to main::@2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of outsw + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() + +(void()) main() +main: scope:[main] from @1 + [4] phi() + to:main::@1 +main::@1: scope:[main] from main main::@2 + [5] (byte) idx#23 ← phi( main/(byte) 0 main::@2/(byte) idx#10 ) + [5] (byte) main::c#2 ← phi( main/(byte) 0 main::@2/(byte) main::c#1 ) + [6] (byte) outsw::c#0 ← (byte) main::c#2 + [7] call outsw + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] (byte) main::c#1 ← ++ (byte) main::c#2 + [9] if((byte) main::c#1!=(byte) $28) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return + to:@return + +(void()) outsw((byte) outsw::c) +outsw: scope:[outsw] from main::@1 + [11] phi() + [12] call out + to:outsw::@1 +outsw::@1: scope:[outsw] from outsw + [13] (byte) outw::c#0 ← (byte) outsw::c#0 + [14] call outw + to:outsw::@return +outsw::@return: scope:[outsw] from outsw::@1 + [15] return + to:@return + +(void()) outw((byte) outw::c) +outw: scope:[outw] from outsw::@1 + [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 + [17] (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) + [18] call out + to:outw::@1 +outw::@1: scope:[outw] from outw + [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f + [20] (byte) out::c#2 ← *((const byte*) HEXTAB + (byte~) outw::$2) + [21] call out + to:outw::@return +outw::@return: scope:[outw] from outw::@1 + [22] return + to:@return + +(void()) out((byte) out::c) +out: scope:[out] from outsw outw outw::@1 + [23] (byte) out::c#3 ← phi( outsw/(byte) '-' outw/(byte) out::c#1 outw::@1/(byte) out::c#2 ) + [23] (byte) idx#20 ← phi( outsw/(byte) idx#23 outw/(byte) idx#10 outw::@1/(byte) idx#10 ) + [24] (byte) idx#10 ← ++ (byte) idx#20 + [25] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#3 + to:out::@return +out::@return: scope:[out] from out + [26] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte) idx +(byte) idx#10 12947.352941176468 +(byte) idx#20 121004.0 +(byte) idx#23 367.33333333333337 +(void()) main() +(byte) main::c +(byte) main::c#1 151.5 +(byte) main::c#2 101.0 +(void()) out((byte) out::c) +(byte) out::c +(byte) out::c#1 20002.0 +(byte) out::c#2 20002.0 +(byte) out::c#3 60001.5 +(void()) outsw((byte) outsw::c) +(byte) outsw::c +(byte) outsw::c#0 367.33333333333337 +(void()) outw((byte) outw::c) +(byte~) outw::$0 20002.0 +(byte~) outw::$2 20002.0 +(byte) outw::c +(byte) outw::c#0 5250.75 + +Initial phi equivalence classes +[ main::c#2 main::c#1 ] +[ idx#20 idx#23 idx#10 ] +[ out::c#3 out::c#1 out::c#2 ] +Added variable outsw::c#0 to live range equivalence class [ outsw::c#0 ] +Added variable outw::c#0 to live range equivalence class [ outw::c#0 ] +Added variable outw::$0 to live range equivalence class [ outw::$0 ] +Added variable outw::$2 to live range equivalence class [ outw::$2 ] +Complete equivalence classes +[ main::c#2 main::c#1 ] +[ idx#20 idx#23 idx#10 ] +[ out::c#3 out::c#1 out::c#2 ] +[ outsw::c#0 ] +[ outw::c#0 ] +[ outw::$0 ] +[ outw::$2 ] +Allocated zp[1]:2 [ main::c#2 main::c#1 ] +Allocated zp[1]:3 [ idx#20 idx#23 idx#10 ] +Allocated zp[1]:4 [ out::c#3 out::c#1 out::c#2 ] +Allocated zp[1]:5 [ outsw::c#0 ] +Allocated zp[1]:6 [ outw::c#0 ] +Allocated zp[1]:7 [ outw::$0 ] +Allocated zp[1]:8 [ outw::$2 ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// Test effective live range and register allocation +// Here main::c, outsw::c and outw::c can all have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + .label idx = 3 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label c = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#23 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z idx + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#23 = (byte) idx#10 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) outsw::c#0 ← (byte) main::c#2 -- vbuz1=vbuz2 + lda.z c + sta.z outsw.c + // [7] call outsw + // [11] phi from main::@1 to outsw [phi:main::@1->outsw] + outsw_from___b1: + jsr outsw + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z c + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // outsw +// outsw(byte zp(5) c) +outsw: { + .label c = 5 + // [12] call out + // [23] phi from outsw to out [phi:outsw->out] + out_from_outsw: + // [23] phi (byte) out::c#3 = (byte) '-' [phi:outsw->out#0] -- vbuz1=vbuc1 + lda #'-' + sta.z out.c + // [23] phi (byte) idx#20 = (byte) idx#23 [phi:outsw->out#1] -- register_copy + jsr out + jmp __b1 + // outsw::@1 + __b1: + // [13] (byte) outw::c#0 ← (byte) outsw::c#0 -- vbuz1=vbuz2 + lda.z c + sta.z outw.c + // [14] call outw + jsr outw + jmp __breturn + // outsw::@return + __breturn: + // [15] return + rts +} + // outw +// outw(byte zp(6) c) +outw: { + .label __0 = 7 + .label __2 = 8 + .label c = 6 + // [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 -- vbuz1=vbuz2_rol_4 + lda.z c + asl + asl + asl + asl + sta.z __0 + // [17] (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z __0 + lda HEXTAB,y + sta.z out.c + // [18] call out + // [23] phi from outw to out [phi:outw->out] + out_from_outw: + // [23] phi (byte) out::c#3 = (byte) out::c#1 [phi:outw->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw->out#1] -- register_copy + jsr out + jmp __b1 + // outw::@1 + __b1: + // [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + lda #$f + and.z c + sta.z __2 + // [20] (byte) out::c#2 ← *((const byte*) HEXTAB + (byte~) outw::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z __2 + lda HEXTAB,y + sta.z out.c + // [21] call out + // [23] phi from outw::@1 to out [phi:outw::@1->out] + out_from___b1: + // [23] phi (byte) out::c#3 = (byte) out::c#2 [phi:outw::@1->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw::@1->out#1] -- register_copy + jsr out + jmp __breturn + // outw::@return + __breturn: + // [22] return + rts +} + // out +// out(byte zp(4) c) +out: { + .label c = 4 + // [24] (byte) idx#10 ← ++ (byte) idx#20 -- vbuz1=_inc_vbuz1 + inc.z idx + // [25] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#3 -- pbuc1_derefidx_vbuz1=vbuz2 + lda.z c + ldy.z idx + sta SCREEN,y + jmp __breturn + // out::@return + __breturn: + // [26] return + rts +} + // File Data + HEXTAB: .text "0123456789abcdef" + .byte 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 [ idx#10 outw::c#0 outw::$0 ] ( main:2::outsw:7::outw:14 [ main::c#2 idx#10 outw::c#0 outw::$0 ] { { outsw::c#0 = main::c#2 outw::c#0 } { idx#10 = idx#20 } { out::c#1 = out::c#3 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#2 main::c#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#20 idx#23 idx#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:6 [ outw::c#0 ] +Statement [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f [ idx#10 outw::$2 ] ( main:2::outsw:7::outw:14 [ main::c#2 idx#10 outw::$2 ] { { outsw::c#0 = main::c#2 outw::c#0 } { idx#10 = idx#20 } { out::c#2 = out::c#3 } } ) always clobbers reg byte a +Statement [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 [ idx#10 outw::c#0 outw::$0 ] ( main:2::outsw:7::outw:14 [ main::c#2 idx#10 outw::c#0 outw::$0 ] { { outsw::c#0 = main::c#2 outw::c#0 } { idx#10 = idx#20 } { out::c#1 = out::c#3 } } ) always clobbers reg byte a +Statement [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f [ idx#10 outw::$2 ] ( main:2::outsw:7::outw:14 [ main::c#2 idx#10 outw::$2 ] { { outsw::c#0 = main::c#2 outw::c#0 } { idx#10 = idx#20 } { out::c#2 = out::c#3 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte x , reg byte y , +Potential registers zp[1]:3 [ idx#20 idx#23 idx#10 ] : zp[1]:3 , reg byte x , reg byte y , +Potential registers zp[1]:4 [ out::c#3 out::c#1 out::c#2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:5 [ outsw::c#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:6 [ outw::c#0 ] : zp[1]:6 , reg byte x , reg byte y , +Potential registers zp[1]:7 [ outw::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:8 [ outw::$2 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 134,318.69: zp[1]:3 [ idx#20 idx#23 idx#10 ] +Uplift Scope [out] 100,005.5: zp[1]:4 [ out::c#3 out::c#1 out::c#2 ] +Uplift Scope [outw] 20,002: zp[1]:7 [ outw::$0 ] 20,002: zp[1]:8 [ outw::$2 ] 5,250.75: zp[1]:6 [ outw::c#0 ] +Uplift Scope [outsw] 367.33: zp[1]:5 [ outsw::c#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::c#2 main::c#1 ] + +Uplifting [] best 492 combination reg byte x [ idx#20 idx#23 idx#10 ] +Uplifting [out] best 480 combination reg byte a [ out::c#3 out::c#1 out::c#2 ] +Uplifting [outw] best 472 combination reg byte a [ outw::$0 ] reg byte a [ outw::$2 ] zp[1]:6 [ outw::c#0 ] +Uplifting [outsw] best 439 combination reg byte y [ outsw::c#0 ] +Uplifting [main] best 439 combination zp[1]:2 [ main::c#2 main::c#1 ] +Attempting to uplift remaining variables inzp[1]:6 [ outw::c#0 ] +Uplifting [outw] best 439 combination zp[1]:6 [ outw::c#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::c#2 main::c#1 ] +Uplifting [main] best 439 combination zp[1]:2 [ main::c#2 main::c#1 ] +Allocated (was zp[1]:6) zp[1]:3 [ outw::c#0 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Test effective live range and register allocation +// Here main::c, outsw::c and outw::c can all have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin +__bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +__b1_from___bbegin: + jmp __b1 + // @1 +__b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from___b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +__bend_from___b1: + jmp __bend + // @end +__bend: + // main +main: { + .label c = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + // [5] phi (byte) idx#23 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z c + jmp __b1 + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + __b1_from___b2: + // [5] phi (byte) idx#23 = (byte) idx#10 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + jmp __b1 + // main::@1 + __b1: + // [6] (byte) outsw::c#0 ← (byte) main::c#2 -- vbuyy=vbuz1 + ldy.z c + // [7] call outsw + // [11] phi from main::@1 to outsw [phi:main::@1->outsw] + outsw_from___b1: + jsr outsw + jmp __b2 + // main::@2 + __b2: + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z c + bne __b1_from___b2 + jmp __breturn + // main::@return + __breturn: + // [10] return + rts +} + // outsw +// outsw(byte register(Y) c) +outsw: { + // [12] call out + // [23] phi from outsw to out [phi:outsw->out] + out_from_outsw: + // [23] phi (byte) out::c#3 = (byte) '-' [phi:outsw->out#0] -- vbuaa=vbuc1 + lda #'-' + // [23] phi (byte) idx#20 = (byte) idx#23 [phi:outsw->out#1] -- register_copy + jsr out + jmp __b1 + // outsw::@1 + __b1: + // [13] (byte) outw::c#0 ← (byte) outsw::c#0 -- vbuz1=vbuyy + sty.z outw.c + // [14] call outw + jsr outw + jmp __breturn + // outsw::@return + __breturn: + // [15] return + rts +} + // outw +// outw(byte zp(3) c) +outw: { + .label c = 3 + // [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 -- vbuaa=vbuz1_rol_4 + lda.z c + asl + asl + asl + asl + // [17] (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda HEXTAB,y + // [18] call out + // [23] phi from outw to out [phi:outw->out] + out_from_outw: + // [23] phi (byte) out::c#3 = (byte) out::c#1 [phi:outw->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw->out#1] -- register_copy + jsr out + jmp __b1 + // outw::@1 + __b1: + // [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and.z c + // [20] (byte) out::c#2 ← *((const byte*) HEXTAB + (byte~) outw::$2) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda HEXTAB,y + // [21] call out + // [23] phi from outw::@1 to out [phi:outw::@1->out] + out_from___b1: + // [23] phi (byte) out::c#3 = (byte) out::c#2 [phi:outw::@1->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw::@1->out#1] -- register_copy + jsr out + jmp __breturn + // outw::@return + __breturn: + // [22] return + rts +} + // out +// out(byte register(A) c) +out: { + // [24] (byte) idx#10 ← ++ (byte) idx#20 -- vbuxx=_inc_vbuxx + inx + // [25] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + jmp __breturn + // out::@return + __breturn: + // [26] return + rts +} + // File Data + HEXTAB: .text "0123456789abcdef" + .byte 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda #0 with TXA +Replacing label __b1_from___b2 with __b1 +Removing instruction __b1_from___bbegin: +Removing instruction __b1: +Removing instruction main_from___b1: +Removing instruction __bend_from___b1: +Removing instruction __b1_from___b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __bend: +Removing instruction __b1_from_main: +Removing instruction outsw_from___b1: +Removing instruction __b2: +Removing instruction __breturn: +Removing instruction out_from_outsw: +Removing instruction __b1: +Removing instruction __breturn: +Removing instruction out_from_outw: +Removing instruction __b1: +Removing instruction out_from___b1: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp __b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction __bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(const byte*) HEXTAB[] = (byte*) "0123456789abcdef" +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#10 reg byte x 12947.352941176468 +(byte) idx#20 reg byte x 121004.0 +(byte) idx#23 reg byte x 367.33333333333337 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 c zp[1]:2 151.5 +(byte) main::c#2 c zp[1]:2 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#1 reg byte a 20002.0 +(byte) out::c#2 reg byte a 20002.0 +(byte) out::c#3 reg byte a 60001.5 +(void()) outsw((byte) outsw::c) +(label) outsw::@1 +(label) outsw::@return +(byte) outsw::c +(byte) outsw::c#0 reg byte y 367.33333333333337 +(void()) outw((byte) outw::c) +(byte~) outw::$0 reg byte a 20002.0 +(byte~) outw::$2 reg byte a 20002.0 +(label) outw::@1 +(label) outw::@return +(byte) outw::c +(byte) outw::c#0 c zp[1]:3 5250.75 + +zp[1]:2 [ main::c#2 main::c#1 ] +reg byte x [ idx#20 idx#23 idx#10 ] +reg byte a [ out::c#3 out::c#1 out::c#2 ] +reg byte y [ outsw::c#0 ] +zp[1]:3 [ outw::c#0 ] +reg byte a [ outw::$0 ] +reg byte a [ outw::$2 ] + + +FINAL ASSEMBLER +Score: 319 + + // File Comments +// Test effective live range and register allocation +// Here main::c, outsw::c and outw::c can all have the same allocation + // Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label SCREEN = $400 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .label c = 2 + // [5] phi from main to main::@1 [phi:main->main::@1] + // [5] phi (byte) idx#23 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [5] phi (byte) main::c#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + txa + sta.z c + // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + // [5] phi (byte) idx#23 = (byte) idx#10 [phi:main::@2->main::@1#0] -- register_copy + // [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@2->main::@1#1] -- register_copy + // main::@1 + __b1: + // outsw(c) + // [6] (byte) outsw::c#0 ← (byte) main::c#2 -- vbuyy=vbuz1 + ldy.z c + // [7] call outsw + // [11] phi from main::@1 to outsw [phi:main::@1->outsw] + jsr outsw + // main::@2 + // for(char c: 0..39 ) + // [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + inc.z c + // [9] if((byte) main::c#1!=(byte) $28) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z c + bne __b1 + // main::@return + // } + // [10] return + rts +} + // outsw +// outsw(byte register(Y) c) +outsw: { + // out('-') + // [12] call out + // [23] phi from outsw to out [phi:outsw->out] + // [23] phi (byte) out::c#3 = (byte) '-' [phi:outsw->out#0] -- vbuaa=vbuc1 + lda #'-' + // [23] phi (byte) idx#20 = (byte) idx#23 [phi:outsw->out#1] -- register_copy + jsr out + // outsw::@1 + // outw(c) + // [13] (byte) outw::c#0 ← (byte) outsw::c#0 -- vbuz1=vbuyy + sty.z outw.c + // [14] call outw + jsr outw + // outsw::@return + // } + // [15] return + rts +} + // outw +// outw(byte zp(3) c) +outw: { + .label c = 3 + // c<<4 + // [16] (byte~) outw::$0 ← (byte) outw::c#0 << (byte) 4 -- vbuaa=vbuz1_rol_4 + lda.z c + asl + asl + asl + asl + // out(HEXTAB[c<<4]) + // [17] (byte) out::c#1 ← *((const byte*) HEXTAB + (byte~) outw::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda HEXTAB,y + // [18] call out + // [23] phi from outw to out [phi:outw->out] + // [23] phi (byte) out::c#3 = (byte) out::c#1 [phi:outw->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw->out#1] -- register_copy + jsr out + // outw::@1 + // c&0x0f + // [19] (byte~) outw::$2 ← (byte) outw::c#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and.z c + // out(HEXTAB[c&0x0f]) + // [20] (byte) out::c#2 ← *((const byte*) HEXTAB + (byte~) outw::$2) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda HEXTAB,y + // [21] call out + // [23] phi from outw::@1 to out [phi:outw::@1->out] + // [23] phi (byte) out::c#3 = (byte) out::c#2 [phi:outw::@1->out#0] -- register_copy + // [23] phi (byte) idx#20 = (byte) idx#10 [phi:outw::@1->out#1] -- register_copy + jsr out + // outw::@return + // } + // [22] return + rts +} + // out +// out(byte register(A) c) +out: { + // idx++; + // [24] (byte) idx#10 ← ++ (byte) idx#20 -- vbuxx=_inc_vbuxx + inx + // SCREEN[idx] = c + // [25] *((const byte*) SCREEN + (byte) idx#10) ← (byte) out::c#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // out::@return + // } + // [26] return + rts +} + // File Data + HEXTAB: .text "0123456789abcdef" + .byte 0 + diff --git a/src/test/ref/liverange-9.sym b/src/test/ref/liverange-9.sym new file mode 100644 index 000000000..934e3e329 --- /dev/null +++ b/src/test/ref/liverange-9.sym @@ -0,0 +1,42 @@ +(label) @1 +(label) @begin +(label) @end +(const byte*) HEXTAB[] = (byte*) "0123456789abcdef" +(const byte*) SCREEN = (byte*) 1024 +(byte) idx +(byte) idx#10 reg byte x 12947.352941176468 +(byte) idx#20 reg byte x 121004.0 +(byte) idx#23 reg byte x 367.33333333333337 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::c +(byte) main::c#1 c zp[1]:2 151.5 +(byte) main::c#2 c zp[1]:2 101.0 +(void()) out((byte) out::c) +(label) out::@return +(byte) out::c +(byte) out::c#1 reg byte a 20002.0 +(byte) out::c#2 reg byte a 20002.0 +(byte) out::c#3 reg byte a 60001.5 +(void()) outsw((byte) outsw::c) +(label) outsw::@1 +(label) outsw::@return +(byte) outsw::c +(byte) outsw::c#0 reg byte y 367.33333333333337 +(void()) outw((byte) outw::c) +(byte~) outw::$0 reg byte a 20002.0 +(byte~) outw::$2 reg byte a 20002.0 +(label) outw::@1 +(label) outw::@return +(byte) outw::c +(byte) outw::c#0 c zp[1]:3 5250.75 + +zp[1]:2 [ main::c#2 main::c#1 ] +reg byte x [ idx#20 idx#23 idx#10 ] +reg byte a [ out::c#3 out::c#1 out::c#2 ] +reg byte y [ outsw::c#0 ] +zp[1]:3 [ outw::c#0 ] +reg byte a [ outw::$0 ] +reg byte a [ outw::$2 ] diff --git a/src/test/ref/liverange-call-problem.log b/src/test/ref/liverange-call-problem.log index dc46892d1..5874fbae1 100644 --- a/src/test/ref/liverange-call-problem.log +++ b/src/test/ref/liverange-call-problem.log @@ -155,17 +155,17 @@ Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$4 ← (byte) 0 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) main::$5 ← (byte) 2 * (const byte) SIZEOF_WORD -Alias (word) w2#13 = (word) w2#16 -Alias (word) w1#1 = (word) w1#7 (word) w1#15 -Alias (word) w2#1 = (word) w2#7 (word) w2#14 -Alias (word) w1#10 = (word) w1#2 (word) w1#8 (word) w1#9 (word) w1#3 -Alias (word) w2#2 = (word) w2#8 (word) w2#9 (word) w2#3 -Alias (word) w1#12 = (word) w1#4 (word) w1#5 -Alias (word) w2#11 = (word) w2#4 (word) w2#5 -Alias (word) w1#0 = (word) w1#16 -Alias (word) w2#0 = (word) w2#15 -Alias (word) w1#13 = (word) w1#6 -Alias (word) w2#12 = (word) w2#6 +Alias w2#13 = w2#16 +Alias w1#1 = w1#7 w1#15 +Alias w2#1 = w2#7 w2#14 +Alias w1#10 = w1#2 w1#8 w1#9 w1#3 +Alias w2#2 = w2#8 w2#9 w2#3 +Alias w1#12 = w1#4 w1#5 +Alias w2#11 = w2#4 w2#5 +Alias w1#0 = w1#16 +Alias w2#0 = w2#15 +Alias w1#13 = w1#6 +Alias w2#12 = w2#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) w1#14 (word) w1#0 Identical Phi Values (word) w2#13 (word) w2#0 @@ -282,11 +282,11 @@ VARIABLE REGISTER WEIGHTS (void()) incw2() (void()) main() (word) w1 -(word) w1#11 4.0 -(word) w1#12 0.6666666666666666 +(word) w1#11 112.0 +(word) w1#12 13.666666666666666 (word) w2 -(word) w2#10 4.0 -(word) w2#11 0.75 +(word) w2#10 112.0 +(word) w2#11 15.375 Initial phi equivalence classes [ w2#10 w2#11 ] @@ -420,13 +420,13 @@ incw1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const word*) main::SCREEN) ← (word) w1#12 [ w2#11 ] ( main:2 [ w2#11 ] ) always clobbers reg byte a -Statement [13] *((const word*) main::SCREEN+(byte) 2*(const byte) SIZEOF_WORD) ← (word) w2#11 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const word*) main::SCREEN) ← (word) w1#12 [ w2#11 ] ( main:2 [ w2#11 ] { } ) always clobbers reg byte a +Statement [13] *((const word*) main::SCREEN+(byte) 2*(const byte) SIZEOF_WORD) ← (word) w2#11 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ w2#10 w2#11 ] : zp[2]:2 , Potential registers zp[2]:4 [ w1#11 w1#12 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [] 4.75: zp[2]:2 [ w2#10 w2#11 ] 4.67: zp[2]:4 [ w1#11 w1#12 ] +Uplift Scope [] 127.38: zp[2]:2 [ w2#10 w2#11 ] 125.67: zp[2]:4 [ w1#11 w1#12 ] Uplift Scope [main] Uplift Scope [incw1] Uplift Scope [incw2] @@ -615,11 +615,11 @@ FINAL SYMBOL TABLE (label) main::@return (const word*) main::SCREEN = (word*) 1024 (word) w1 -(word) w1#11 w1 zp[2]:4 4.0 -(word) w1#12 w1 zp[2]:4 0.6666666666666666 +(word) w1#11 w1 zp[2]:4 112.0 +(word) w1#12 w1 zp[2]:4 13.666666666666666 (word) w2 -(word) w2#10 w2 zp[2]:2 4.0 -(word) w2#11 w2 zp[2]:2 0.75 +(word) w2#10 w2 zp[2]:2 112.0 +(word) w2#11 w2 zp[2]:2 15.375 zp[2]:2 [ w2#10 w2#11 ] zp[2]:4 [ w1#11 w1#12 ] diff --git a/src/test/ref/liverange-call-problem.sym b/src/test/ref/liverange-call-problem.sym index 17c902ffa..e5c9974fc 100644 --- a/src/test/ref/liverange-call-problem.sym +++ b/src/test/ref/liverange-call-problem.sym @@ -14,11 +14,11 @@ (label) main::@return (const word*) main::SCREEN = (word*) 1024 (word) w1 -(word) w1#11 w1 zp[2]:4 4.0 -(word) w1#12 w1 zp[2]:4 0.6666666666666666 +(word) w1#11 w1 zp[2]:4 112.0 +(word) w1#12 w1 zp[2]:4 13.666666666666666 (word) w2 -(word) w2#10 w2 zp[2]:2 4.0 -(word) w2#11 w2 zp[2]:2 0.75 +(word) w2#10 w2 zp[2]:2 112.0 +(word) w2#11 w2 zp[2]:2 15.375 zp[2]:2 [ w2#10 w2#11 ] zp[2]:4 [ w1#11 w1#12 ] diff --git a/src/test/ref/liverange-problem-0.log b/src/test/ref/liverange-problem-0.log index f73dd6bcb..88e872096 100644 --- a/src/test/ref/liverange-problem-0.log +++ b/src/test/ref/liverange-problem-0.log @@ -116,15 +116,15 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) malloc::return#0 = (byte*) malloc::return#4 (byte*) malloc::return#1 -Alias (byte*) MEM#1 = (byte*) MEM#6 (byte*) MEM#2 -Alias (byte*) MEM#0 = (byte*) MEM#9 -Alias (byte*) malloc::return#2 = (byte*) malloc::return#5 -Alias (byte*) MEM#3 = (byte*) MEM#7 -Alias (byte*) SCREEN_1#0 = (byte*~) $0 (byte*) SCREEN_1#3 (byte*) SCREEN_1#2 -Alias (byte*) malloc::return#3 = (byte*) malloc::return#6 -Alias (byte*) MEM#4 = (byte*) MEM#8 -Alias (byte*) SCREEN_2#0 = (byte*~) $1 (byte*) SCREEN_2#2 +Alias malloc::return#0 = malloc::return#4 malloc::return#1 +Alias MEM#1 = MEM#6 MEM#2 +Alias MEM#0 = MEM#9 +Alias malloc::return#2 = malloc::return#5 +Alias MEM#3 = MEM#7 +Alias SCREEN_1#0 = $0 SCREEN_1#3 SCREEN_1#2 +Alias malloc::return#3 = malloc::return#6 +Alias MEM#4 = MEM#8 +Alias SCREEN_2#0 = $1 SCREEN_2#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) MEM#3 (byte*) MEM#1 Identical Phi Values (byte*) MEM#4 (byte*) MEM#1 @@ -199,16 +199,16 @@ malloc::@return: scope:[malloc] from malloc VARIABLE REGISTER WEIGHTS (byte*) MEM -(byte*) MEM#1 1.0 -(byte*) MEM#5 4.0 +(byte*) MEM#1 4.0 +(byte*) MEM#5 13.0 (byte*) SCREEN_1 -(byte*) SCREEN_1#0 0.8 +(byte*) SCREEN_1#0 2.6 (byte*) SCREEN_2 -(byte*) SCREEN_2#0 1.3333333333333333 +(byte*) SCREEN_2#0 4.333333333333333 (void()) main() (byte*()) malloc() (byte*) malloc::return -(byte*) malloc::return#0 1.5 +(byte*) malloc::return#0 3.75 (byte*) malloc::return#2 4.0 (byte*) malloc::return#3 4.0 @@ -347,13 +347,13 @@ malloc: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (byte*) malloc::return#2 ← (byte*) malloc::return#0 [ malloc::return#2 MEM#1 ] ( [ malloc::return#2 MEM#1 ] ) always clobbers reg byte a -Statement [4] (byte*) SCREEN_1#0 ← (byte*) malloc::return#2 [ SCREEN_1#0 MEM#1 ] ( [ SCREEN_1#0 MEM#1 ] ) always clobbers reg byte a -Statement [6] (byte*) malloc::return#3 ← (byte*) malloc::return#0 [ SCREEN_1#0 malloc::return#3 ] ( [ SCREEN_1#0 malloc::return#3 ] ) always clobbers reg byte a -Statement [7] (byte*) SCREEN_2#0 ← (byte*) malloc::return#3 [ SCREEN_1#0 SCREEN_2#0 ] ( [ SCREEN_1#0 SCREEN_2#0 ] ) always clobbers reg byte a -Statement [11] *((byte*) SCREEN_1#0) ← (byte) 0 [ SCREEN_2#0 ] ( main:9 [ SCREEN_2#0 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*) SCREEN_2#0) ← (byte) 0 [ ] ( main:9 [ ] ) always clobbers reg byte a reg byte y -Statement [16] (byte*) malloc::return#0 ← (byte*) MEM#1 [ malloc::return#0 MEM#1 ] ( malloc:2 [ malloc::return#0 MEM#1 ] malloc:5 [ malloc::return#0 MEM#1 ] ) always clobbers reg byte a +Statement [3] (byte*) malloc::return#2 ← (byte*) malloc::return#0 [ malloc::return#2 MEM#1 ] ( [ malloc::return#2 MEM#1 ] { } ) always clobbers reg byte a +Statement [4] (byte*) SCREEN_1#0 ← (byte*) malloc::return#2 [ SCREEN_1#0 MEM#1 ] ( [ SCREEN_1#0 MEM#1 ] { } ) always clobbers reg byte a +Statement [6] (byte*) malloc::return#3 ← (byte*) malloc::return#0 [ SCREEN_1#0 malloc::return#3 ] ( [ SCREEN_1#0 malloc::return#3 ] { } ) always clobbers reg byte a +Statement [7] (byte*) SCREEN_2#0 ← (byte*) malloc::return#3 [ SCREEN_1#0 SCREEN_2#0 ] ( [ SCREEN_1#0 SCREEN_2#0 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) SCREEN_1#0) ← (byte) 0 [ SCREEN_2#0 ] ( main:9 [ SCREEN_2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) SCREEN_2#0) ← (byte) 0 [ ] ( main:9 [ ] { } ) always clobbers reg byte a reg byte y +Statement [16] (byte*) malloc::return#0 ← (byte*) MEM#1 [ malloc::return#0 MEM#1 ] ( malloc:2 [ malloc::return#0 MEM#1 ] { } malloc:5 [ malloc::return#0 MEM#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ MEM#5 MEM#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ malloc::return#2 ] : zp[2]:4 , Potential registers zp[2]:6 [ SCREEN_1#0 ] : zp[2]:6 , @@ -362,12 +362,12 @@ Potential registers zp[2]:10 [ SCREEN_2#0 ] : zp[2]:10 , Potential registers zp[2]:12 [ malloc::return#0 ] : zp[2]:12 , REGISTER UPLIFT SCOPES -Uplift Scope [malloc] 4: zp[2]:4 [ malloc::return#2 ] 4: zp[2]:8 [ malloc::return#3 ] 1.5: zp[2]:12 [ malloc::return#0 ] -Uplift Scope [] 5: zp[2]:2 [ MEM#5 MEM#1 ] 1.33: zp[2]:10 [ SCREEN_2#0 ] 0.8: zp[2]:6 [ SCREEN_1#0 ] +Uplift Scope [] 17: zp[2]:2 [ MEM#5 MEM#1 ] 4.33: zp[2]:10 [ SCREEN_2#0 ] 2.6: zp[2]:6 [ SCREEN_1#0 ] +Uplift Scope [malloc] 4: zp[2]:4 [ malloc::return#2 ] 4: zp[2]:8 [ malloc::return#3 ] 3.75: zp[2]:12 [ malloc::return#0 ] Uplift Scope [main] -Uplifting [malloc] best 153 combination zp[2]:4 [ malloc::return#2 ] zp[2]:8 [ malloc::return#3 ] zp[2]:12 [ malloc::return#0 ] Uplifting [] best 153 combination zp[2]:2 [ MEM#5 MEM#1 ] zp[2]:10 [ SCREEN_2#0 ] zp[2]:6 [ SCREEN_1#0 ] +Uplifting [malloc] best 153 combination zp[2]:4 [ malloc::return#2 ] zp[2]:8 [ malloc::return#3 ] zp[2]:12 [ malloc::return#0 ] Uplifting [main] best 153 combination Coalescing zero page register [ zp[2]:4 [ malloc::return#2 ] ] with [ zp[2]:6 [ SCREEN_1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:8 [ malloc::return#3 ] ] with [ zp[2]:10 [ SCREEN_2#0 ] ] - score: 1 @@ -511,18 +511,18 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) MEM -(byte*) MEM#1 MEM zp[2]:2 1.0 -(byte*) MEM#5 MEM zp[2]:2 4.0 +(byte*) MEM#1 MEM zp[2]:2 4.0 +(byte*) MEM#5 MEM zp[2]:2 13.0 (byte*) SCREEN_1 -(byte*) SCREEN_1#0 SCREEN_1 zp[2]:4 0.8 +(byte*) SCREEN_1#0 SCREEN_1 zp[2]:4 2.6 (byte*) SCREEN_2 -(byte*) SCREEN_2#0 SCREEN_2 zp[2]:6 1.3333333333333333 +(byte*) SCREEN_2#0 SCREEN_2 zp[2]:6 4.333333333333333 (void()) main() (label) main::@return (byte*()) malloc() (label) malloc::@return (byte*) malloc::return -(byte*) malloc::return#0 return zp[2]:6 1.5 +(byte*) malloc::return#0 return zp[2]:6 3.75 (byte*) malloc::return#2 return_1 zp[2]:4 4.0 (byte*) malloc::return#3 return zp[2]:6 4.0 diff --git a/src/test/ref/liverange-problem-0.sym b/src/test/ref/liverange-problem-0.sym index 9de6daa36..0f4a35ab8 100644 --- a/src/test/ref/liverange-problem-0.sym +++ b/src/test/ref/liverange-problem-0.sym @@ -5,18 +5,18 @@ (label) @begin (label) @end (byte*) MEM -(byte*) MEM#1 MEM zp[2]:2 1.0 -(byte*) MEM#5 MEM zp[2]:2 4.0 +(byte*) MEM#1 MEM zp[2]:2 4.0 +(byte*) MEM#5 MEM zp[2]:2 13.0 (byte*) SCREEN_1 -(byte*) SCREEN_1#0 SCREEN_1 zp[2]:4 0.8 +(byte*) SCREEN_1#0 SCREEN_1 zp[2]:4 2.6 (byte*) SCREEN_2 -(byte*) SCREEN_2#0 SCREEN_2 zp[2]:6 1.3333333333333333 +(byte*) SCREEN_2#0 SCREEN_2 zp[2]:6 4.333333333333333 (void()) main() (label) main::@return (byte*()) malloc() (label) malloc::@return (byte*) malloc::return -(byte*) malloc::return#0 return zp[2]:6 1.5 +(byte*) malloc::return#0 return zp[2]:6 3.75 (byte*) malloc::return#2 return_1 zp[2]:4 4.0 (byte*) malloc::return#3 return zp[2]:6 4.0 diff --git a/src/test/ref/liverange.asm b/src/test/ref/liverange.asm index c3d12f124..84d43070e 100644 --- a/src/test/ref/liverange.asm +++ b/src/test/ref/liverange.asm @@ -18,11 +18,10 @@ main: { // a=a+inci() clc adc.z a - tax // *SCREEN = i sty SCREEN // *(SCREEN+1) = a - stx SCREEN+1 + sta SCREEN+1 // } rts } diff --git a/src/test/ref/liverange.log b/src/test/ref/liverange.log index c1a861444..f4b3189cb 100644 --- a/src/test/ref/liverange.log +++ b/src/test/ref/liverange.log @@ -128,17 +128,17 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 7 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) inci::$0 ← (byte) i#10 + (byte) 7 -Alias (byte) inci::return#0 = (byte) inci::return#4 -Alias (byte) main::a#0 = (byte) main::a#3 -Alias (byte) i#1 = (byte) i#7 -Alias (byte) main::a#1 = (byte~) main::$1 (byte) main::a#4 -Alias (byte) inci::return#1 = (byte) inci::return#5 -Alias (byte) i#2 = (byte) i#8 (byte) i#9 (byte) i#3 -Alias (byte) main::a#2 = (byte~) main::$3 -Alias (byte) i#11 = (byte) i#4 (byte~) inci::$0 (byte) i#5 -Alias (byte) inci::return#2 = (byte) inci::return#6 (byte) inci::return#3 -Alias (byte) i#0 = (byte) i#14 -Alias (byte) i#12 = (byte) i#6 +Alias inci::return#0 = inci::return#4 +Alias main::a#0 = main::a#3 +Alias i#1 = i#7 +Alias main::a#1 = main::$1 main::a#4 +Alias inci::return#1 = inci::return#5 +Alias i#2 = i#8 i#9 i#3 +Alias main::a#2 = main::$3 +Alias i#11 = i#4 inci::$0 i#5 +Alias inci::return#2 = inci::return#6 inci::return#3 +Alias i#0 = i#14 +Alias i#12 = i#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) i#13 (byte) i#0 Identical Phi Values (byte) i#1 (byte) i#11 @@ -222,19 +222,19 @@ inci::@return: scope:[inci] from inci VARIABLE REGISTER WEIGHTS (byte) i -(byte) i#10 4.0 -(byte) i#11 0.7272727272727273 +(byte) i#10 112.0 +(byte) i#11 20.363636363636363 (byte()) inci() (byte) inci::return -(byte) inci::return#0 4.0 -(byte) inci::return#1 4.0 -(byte) inci::return#2 1.5 +(byte) inci::return#0 22.0 +(byte) inci::return#1 22.0 +(byte) inci::return#2 30.75 (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$2 4.0 +(byte~) main::$0 22.0 +(byte~) main::$2 22.0 (byte) main::a -(byte) main::a#1 1.0 -(byte) main::a#2 2.0 +(byte) main::a#1 5.5 +(byte) main::a#2 11.0 Initial phi equivalence classes [ i#10 i#11 ] @@ -367,12 +367,12 @@ inci: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ main::a#2 i#11 ] ( main:2 [ main::a#2 i#11 ] ) always clobbers reg byte a +Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ main::a#2 i#11 ] ( main:2 [ main::a#2 i#11 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ i#10 i#11 ] -Statement [17] (byte) i#11 ← (byte) i#10 + (byte) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) always clobbers reg byte a +Statement [17] (byte) i#11 ← (byte) i#10 + (byte) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] { { inci::return#0 = inci::return#2 } } main:2::inci:9 [ main::a#1 i#11 ] { { i#10 = i#11 } { inci::return#1 = inci::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::a#1 ] -Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ main::a#2 i#11 ] ( main:2 [ main::a#2 i#11 ] ) always clobbers reg byte a -Statement [17] (byte) i#11 ← (byte) i#10 + (byte) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) always clobbers reg byte a +Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ main::a#2 i#11 ] ( main:2 [ main::a#2 i#11 ] { } ) always clobbers reg byte a +Statement [17] (byte) i#11 ← (byte) i#10 + (byte) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] { { inci::return#0 = inci::return#2 } } main:2::inci:9 [ main::a#1 i#11 ] { { i#10 = i#11 } { inci::return#1 = inci::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ i#10 i#11 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ inci::return#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -383,16 +383,16 @@ Potential registers zp[1]:8 [ main::a#2 ] : zp[1]:8 , reg byte a , reg byte x , Potential registers zp[1]:9 [ inci::return#2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:7 [ main::$2 ] 2: zp[1]:8 [ main::a#2 ] 1: zp[1]:5 [ main::a#1 ] -Uplift Scope [inci] 4: zp[1]:3 [ inci::return#0 ] 4: zp[1]:6 [ inci::return#1 ] 1.5: zp[1]:9 [ inci::return#2 ] -Uplift Scope [] 4.73: zp[1]:2 [ i#10 i#11 ] +Uplift Scope [] 132.36: zp[1]:2 [ i#10 i#11 ] +Uplift Scope [inci] 30.75: zp[1]:9 [ inci::return#2 ] 22: zp[1]:3 [ inci::return#0 ] 22: zp[1]:6 [ inci::return#1 ] +Uplift Scope [main] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:7 [ main::$2 ] 11: zp[1]:8 [ main::a#2 ] 5.5: zp[1]:5 [ main::a#1 ] -Uplifting [main] best 110 combination reg byte a [ main::$0 ] reg byte a [ main::$2 ] reg byte x [ main::a#2 ] zp[1]:5 [ main::a#1 ] +Uplifting [] best 115 combination reg byte y [ i#10 i#11 ] +Uplifting [inci] best 96 combination reg byte a [ inci::return#2 ] reg byte a [ inci::return#0 ] reg byte a [ inci::return#1 ] +Uplifting [main] best 80 combination reg byte a [ main::$0 ] reg byte a [ main::$2 ] reg byte a [ main::a#2 ] zp[1]:5 [ main::a#1 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [inci] best 89 combination reg byte a [ inci::return#0 ] reg byte a [ inci::return#1 ] reg byte a [ inci::return#2 ] -Uplifting [] best 82 combination reg byte y [ i#10 i#11 ] Attempting to uplift remaining variables inzp[1]:5 [ main::a#1 ] -Uplifting [main] best 82 combination zp[1]:5 [ main::a#1 ] +Uplifting [main] best 80 combination zp[1]:5 [ main::a#1 ] Allocated (was zp[1]:5) zp[1]:2 [ main::a#1 ] ASSEMBLER BEFORE OPTIMIZATION @@ -447,14 +447,13 @@ main: { // main::@2 __b2: // [11] (byte~) main::$2 ← (byte) inci::return#1 - // [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa + // [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuaa=vbuz1_plus_vbuaa clc adc.z a - tax // [13] *((const byte*) main::SCREEN) ← (byte) i#11 -- _deref_pbuc1=vbuyy sty SCREEN - // [14] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx - stx SCREEN+1 + // [14] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuaa + sta SCREEN+1 jmp __breturn // main::@return __breturn: @@ -510,24 +509,24 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte) i -(byte) i#10 reg byte y 4.0 -(byte) i#11 reg byte y 0.7272727272727273 +(byte) i#10 reg byte y 112.0 +(byte) i#11 reg byte y 20.363636363636363 (byte()) inci() (label) inci::@return (byte) inci::return -(byte) inci::return#0 reg byte a 4.0 -(byte) inci::return#1 reg byte a 4.0 -(byte) inci::return#2 reg byte a 1.5 +(byte) inci::return#0 reg byte a 22.0 +(byte) inci::return#1 reg byte a 22.0 +(byte) inci::return#2 reg byte a 30.75 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::a -(byte) main::a#1 a zp[1]:2 1.0 -(byte) main::a#2 reg byte x 2.0 +(byte) main::a#1 a zp[1]:2 5.5 +(byte) main::a#2 reg byte a 11.0 reg byte y [ i#10 i#11 ] reg byte a [ inci::return#0 ] @@ -535,12 +534,12 @@ reg byte a [ main::$0 ] zp[1]:2 [ main::a#1 ] reg byte a [ inci::return#1 ] reg byte a [ main::$2 ] -reg byte x [ main::a#2 ] +reg byte a [ main::a#2 ] reg byte a [ inci::return#2 ] FINAL ASSEMBLER -Score: 58 +Score: 56 // File Comments // Upstart @@ -584,16 +583,15 @@ main: { // main::@2 // [11] (byte~) main::$2 ← (byte) inci::return#1 // a=a+inci() - // [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa + // [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuaa=vbuz1_plus_vbuaa clc adc.z a - tax // *SCREEN = i // [13] *((const byte*) main::SCREEN) ← (byte) i#11 -- _deref_pbuc1=vbuyy sty SCREEN // *(SCREEN+1) = a - // [14] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx - stx SCREEN+1 + // [14] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuaa + sta SCREEN+1 // main::@return // } // [15] return diff --git a/src/test/ref/liverange.sym b/src/test/ref/liverange.sym index ec2f60892..0040db9fc 100644 --- a/src/test/ref/liverange.sym +++ b/src/test/ref/liverange.sym @@ -2,24 +2,24 @@ (label) @begin (label) @end (byte) i -(byte) i#10 reg byte y 4.0 -(byte) i#11 reg byte y 0.7272727272727273 +(byte) i#10 reg byte y 112.0 +(byte) i#11 reg byte y 20.363636363636363 (byte()) inci() (label) inci::@return (byte) inci::return -(byte) inci::return#0 reg byte a 4.0 -(byte) inci::return#1 reg byte a 4.0 -(byte) inci::return#2 reg byte a 1.5 +(byte) inci::return#0 reg byte a 22.0 +(byte) inci::return#1 reg byte a 22.0 +(byte) inci::return#2 reg byte a 30.75 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::a -(byte) main::a#1 a zp[1]:2 1.0 -(byte) main::a#2 reg byte x 2.0 +(byte) main::a#1 a zp[1]:2 5.5 +(byte) main::a#2 reg byte a 11.0 reg byte y [ i#10 i#11 ] reg byte a [ inci::return#0 ] @@ -27,5 +27,5 @@ reg byte a [ main::$0 ] zp[1]:2 [ main::a#1 ] reg byte a [ inci::return#1 ] reg byte a [ main::$2 ] -reg byte x [ main::a#2 ] +reg byte a [ main::a#2 ] reg byte a [ inci::return#2 ] diff --git a/src/test/ref/local-string.log b/src/test/ref/local-string.log index 1c6333162..5692887ff 100644 --- a/src/test/ref/local-string.log +++ b/src/test/ref/local-string.log @@ -58,7 +58,7 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) 0!=*((const byte*) main::msg + (byte) main::i#2)) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -115,8 +115,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -189,15 +189,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte) 0!=*((const byte*) main::msg + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) main::msg + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] if((byte) 0!=*((const byte*) main::msg + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) main::msg + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::msg + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 333 combination reg byte x [ main::i#2 main::i#1 ] @@ -293,8 +293,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::msg[] = (byte*) "message 2 " (const byte*) main::screen = (byte*) 1024 diff --git a/src/test/ref/local-string.sym b/src/test/ref/local-string.sym index e2d94ce7c..81ba3a1e1 100644 --- a/src/test/ref/local-string.sym +++ b/src/test/ref/local-string.sym @@ -6,8 +6,8 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 (const byte*) main::msg[] = (byte*) "message 2 " (const byte*) main::screen = (byte*) 1024 diff --git a/src/test/ref/localscope-loops.log b/src/test/ref/localscope-loops.log index 69968f3ea..ea15dd63a 100644 --- a/src/test/ref/localscope-loops.log +++ b/src/test/ref/localscope-loops.log @@ -94,7 +94,7 @@ Constant inlined main::i1#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(SCREEN+$28 + main::$1) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i1#2 = (byte~) main::$1 +Alias main::i1#2 = main::$1 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@5(between main::@1 and main::@1) Added new block during phi lifting main::@6(between main::@3 and main::@3) @@ -156,11 +156,11 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 16.5 +(byte) main::i#1 151.5 +(byte) main::i#2 151.5 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 16.5 +(byte) main::i1#1 151.5 +(byte) main::i1#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -254,17 +254,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← (byte) 'b' [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← (byte) 'b' [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← (byte) 'b' [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← (byte) 'b' [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] 33: zp[1]:3 [ main::i1#2 main::i1#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] 303: zp[1]:3 [ main::i1#2 main::i1#1 ] Uplift Scope [] Uplifting [main] best 478 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] @@ -383,11 +383,11 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 16.5 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] diff --git a/src/test/ref/localscope-loops.sym b/src/test/ref/localscope-loops.sym index 751ec446c..66996b62c 100644 --- a/src/test/ref/localscope-loops.sym +++ b/src/test/ref/localscope-loops.sym @@ -7,11 +7,11 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 151.5 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 16.5 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] diff --git a/src/test/ref/localscope-simple.log b/src/test/ref/localscope-simple.log index 7df37b3d4..5382aa736 100644 --- a/src/test/ref/localscope-simple.log +++ b/src/test/ref/localscope-simple.log @@ -117,8 +117,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) BGCOL) ← (const byte) main::i [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) BGCOL) ← (const byte) main::i1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) BGCOL) ← (const byte) main::i [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) BGCOL) ← (const byte) main::i1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/long-pointer-0.log b/src/test/ref/long-pointer-0.log index 6c733062e..e10af40bd 100644 --- a/src/test/ref/long-pointer-0.log +++ b/src/test/ref/long-pointer-0.log @@ -67,7 +67,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(dword) main::long_ptr loadstore 20.0 +(dword) main::long_ptr loadstore 110.0 Initial phi equivalence classes Added variable main::long_ptr to live range equivalence class [ main::long_ptr ] @@ -124,12 +124,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (dword) main::long_ptr ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (dword) main::long_ptr ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { nop lda(long_ptr_zp),y sta$ff } always clobbers reg byte a Potential registers zp[4]:2 [ main::long_ptr ] : zp[4]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[4]:2 [ main::long_ptr ] +Uplift Scope [main] 110: zp[4]:2 [ main::long_ptr ] Uplift Scope [] Uplifting [main] best 51 combination zp[4]:2 [ main::long_ptr ] @@ -206,7 +206,7 @@ FINAL SYMBOL TABLE (label) @end (void()) main() (label) main::@return -(dword) main::long_ptr loadstore zp[4]:2 20.0 +(dword) main::long_ptr loadstore zp[4]:2 110.0 (const byte) main::long_ptr_zp = <&(dword) main::long_ptr zp[4]:2 [ main::long_ptr ] diff --git a/src/test/ref/long-pointer-0.sym b/src/test/ref/long-pointer-0.sym index 64909d637..6a29ed55d 100644 --- a/src/test/ref/long-pointer-0.sym +++ b/src/test/ref/long-pointer-0.sym @@ -3,7 +3,7 @@ (label) @end (void()) main() (label) main::@return -(dword) main::long_ptr loadstore zp[4]:2 20.0 +(dword) main::long_ptr loadstore zp[4]:2 110.0 (const byte) main::long_ptr_zp = <&(dword) main::long_ptr zp[4]:2 [ main::long_ptr ] diff --git a/src/test/ref/long-pointer-1.log b/src/test/ref/long-pointer-1.log index 121109e9c..af474c992 100644 --- a/src/test/ref/long-pointer-1.log +++ b/src/test/ref/long-pointer-1.log @@ -67,7 +67,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(dword) main::long_ptr loadstore 20.0 +(dword) main::long_ptr loadstore 110.0 Initial phi equivalence classes Added variable main::long_ptr to live range equivalence class [ main::long_ptr ] @@ -124,12 +124,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (dword) main::long_ptr ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (dword) main::long_ptr ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { nop lda(long_ptr_zp),y sta$ff } always clobbers reg byte a Potential registers zp[4]:2 [ main::long_ptr ] : zp[4]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[4]:2 [ main::long_ptr ] +Uplift Scope [main] 110: zp[4]:2 [ main::long_ptr ] Uplift Scope [] Uplifting [main] best 51 combination zp[4]:2 [ main::long_ptr ] @@ -206,7 +206,7 @@ FINAL SYMBOL TABLE (label) @end (void()) main() (label) main::@return -(dword) main::long_ptr loadstore zp[4]:2 20.0 +(dword) main::long_ptr loadstore zp[4]:2 110.0 (const byte) main::long_ptr_zp = (byte)&(dword) main::long_ptr zp[4]:2 [ main::long_ptr ] diff --git a/src/test/ref/long-pointer-1.sym b/src/test/ref/long-pointer-1.sym index 056aff405..9a242760c 100644 --- a/src/test/ref/long-pointer-1.sym +++ b/src/test/ref/long-pointer-1.sym @@ -3,7 +3,7 @@ (label) @end (void()) main() (label) main::@return -(dword) main::long_ptr loadstore zp[4]:2 20.0 +(dword) main::long_ptr loadstore zp[4]:2 110.0 (const byte) main::long_ptr_zp = (byte)&(dword) main::long_ptr zp[4]:2 [ main::long_ptr ] diff --git a/src/test/ref/longbranch-interrupt-problem.log b/src/test/ref/longbranch-interrupt-problem.log index 9d9eaeb2b..fb440e2f7 100644 --- a/src/test/ref/longbranch-interrupt-problem.log +++ b/src/test/ref/longbranch-interrupt-problem.log @@ -163,7 +163,7 @@ irq::@return: scope:[irq] from irq irq::@1 VARIABLE REGISTER WEIGHTS -(byte) col loadstore 15.25 +(byte) col loadstore 139.0 interrupt(KERNEL_MIN)(void()) irq() (void()) main() @@ -250,17 +250,17 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] ) always clobbers reg byte a -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] ) always clobbers reg byte a -Statement [5] if((byte) col<(byte) $a+(byte) 1) goto main::@1 [ col ] ( main:2 [ col ] ) always clobbers reg byte a -Statement [6] (byte) col ← (byte) 0 [ col ] ( main:2 [ col ] ) always clobbers reg byte a +Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a +Statement [5] if((byte) col<(byte) $a+(byte) 1) goto main::@1 [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a +Statement [6] (byte) col ← (byte) 0 [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (byte) col [ col ] ( [ col ] ) always clobbers reg byte a -Statement [9] if((byte) col==(byte) 0) goto irq::@return [ col ] ( [ col ] ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (byte) col [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [9] if((byte) col==(byte) 0) goto irq::@return [ col ] ( [ col ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ col ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 15.25: zp[1]:2 [ col ] +Uplift Scope [] 139: zp[1]:2 [ col ] Uplift Scope [main] Uplift Scope [irq] @@ -375,7 +375,7 @@ FINAL SYMBOL TABLE (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 15.25 +(byte) col loadstore zp[1]:2 139.0 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@1 (label) irq::@return diff --git a/src/test/ref/longbranch-interrupt-problem.sym b/src/test/ref/longbranch-interrupt-problem.sym index 6fb5323e4..f6c8cf360 100644 --- a/src/test/ref/longbranch-interrupt-problem.sym +++ b/src/test/ref/longbranch-interrupt-problem.sym @@ -3,7 +3,7 @@ (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 15.25 +(byte) col loadstore zp[1]:2 139.0 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@1 (label) irq::@return diff --git a/src/test/ref/longjump.log b/src/test/ref/longjump.log index e181a24e6..ca42e8ff0 100644 --- a/src/test/ref/longjump.log +++ b/src/test/ref/longjump.log @@ -108,8 +108,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -437,7 +437,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 5383 combination reg byte x [ main::i#2 main::i#1 ] @@ -789,8 +789,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/longjump.sym b/src/test/ref/longjump.sym index 862a7dba1..daceb5a36 100644 --- a/src/test/ref/longjump.sym +++ b/src/test/ref/longjump.sym @@ -6,7 +6,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/longjump2.log b/src/test/ref/longjump2.log index e209ece22..8831257b7 100644 --- a/src/test/ref/longjump2.log +++ b/src/test/ref/longjump2.log @@ -205,12 +205,12 @@ long1::@return: scope:[long1] from long1::@1 VARIABLE REGISTER WEIGHTS (void()) long1() (byte) long1::i -(byte) long1::i#1 16.5 -(byte) long1::i#2 14.666666666666666 +(byte) long1::i#1 1501.5 +(byte) long1::i#2 1334.6666666666667 (void()) long2() (byte) long2::i -(byte) long2::i#1 16.5 -(byte) long2::i#2 14.666666666666666 +(byte) long2::i#1 1501.5 +(byte) long2::i#2 1334.6666666666667 (void()) main() Initial phi equivalence classes @@ -853,8 +853,8 @@ Potential registers zp[1]:2 [ long2::i#2 long2::i#1 ] : zp[1]:2 , reg byte a , r Potential registers zp[1]:3 [ long1::i#2 long1::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [long1] 31.17: zp[1]:3 [ long1::i#2 long1::i#1 ] -Uplift Scope [long2] 31.17: zp[1]:2 [ long2::i#2 long2::i#1 ] +Uplift Scope [long1] 2,836.17: zp[1]:3 [ long1::i#2 long1::i#1 ] +Uplift Scope [long2] 2,836.17: zp[1]:2 [ long2::i#2 long2::i#1 ] Uplift Scope [main] Uplift Scope [] @@ -1530,15 +1530,15 @@ FINAL SYMBOL TABLE (label) long1::@return (const byte*) long1::SCREEN = (byte*) 1024 (byte) long1::i -(byte) long1::i#1 reg byte x 16.5 -(byte) long1::i#2 reg byte x 14.666666666666666 +(byte) long1::i#1 reg byte x 1501.5 +(byte) long1::i#2 reg byte x 1334.6666666666667 (void()) long2() (label) long2::@1 (label) long2::@return (const byte*) long2::SCREEN = (byte*) 1024 (byte) long2::i -(byte) long2::i#1 reg byte x 16.5 -(byte) long2::i#2 reg byte x 14.666666666666666 +(byte) long2::i#1 reg byte x 1501.5 +(byte) long2::i#2 reg byte x 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/test/ref/longjump2.sym b/src/test/ref/longjump2.sym index 361c8d8e9..e512c2e3b 100644 --- a/src/test/ref/longjump2.sym +++ b/src/test/ref/longjump2.sym @@ -6,15 +6,15 @@ (label) long1::@return (const byte*) long1::SCREEN = (byte*) 1024 (byte) long1::i -(byte) long1::i#1 reg byte x 16.5 -(byte) long1::i#2 reg byte x 14.666666666666666 +(byte) long1::i#1 reg byte x 1501.5 +(byte) long1::i#2 reg byte x 1334.6666666666667 (void()) long2() (label) long2::@1 (label) long2::@return (const byte*) long2::SCREEN = (byte*) 1024 (byte) long2::i -(byte) long2::i#1 reg byte x 16.5 -(byte) long2::i#2 reg byte x 14.666666666666666 +(byte) long2::i#1 reg byte x 1501.5 +(byte) long2::i#2 reg byte x 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/test/ref/loop-break-continue.log b/src/test/ref/loop-break-continue.log index ee5b15e6e..e9c90c48e 100644 --- a/src/test/ref/loop-break-continue.log +++ b/src/test/ref/loop-break-continue.log @@ -93,10 +93,10 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [4] (bool~) main::$1 ← *((const byte*) main::str + (byte) main::i#2) != (byte) 0 from [3] (bool~) main::$0 ← *((const byte*) main::str + (byte) main::i#2) == (byte) 0 Inversing boolean not [8] (bool~) main::$3 ← *((const byte*) main::str + (byte) main::i#3) != (byte) ' ' from [7] (bool~) main::$2 ← *((const byte*) main::str + (byte) main::i#3) == (byte) ' ' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte*) main::screen#2 = (byte*) main::screen#3 (byte*) main::screen#4 +Alias main::i#2 = main::i#3 main::i#4 +Alias main::screen#2 = main::screen#3 main::screen#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [4] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) 0) goto main::@2 Simple Condition (bool~) main::$3 [6] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) ' ') goto main::@4 @@ -187,12 +187,12 @@ main::@4: scope:[main] from main::@2 main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 9.166666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 84.16666666666666 (byte*) main::screen -(byte*) main::screen#1 22.0 -(byte*) main::screen#2 11.0 -(byte*) main::screen#5 11.0 +(byte*) main::screen#1 202.0 +(byte*) main::screen#2 101.0 +(byte*) main::screen#5 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -300,19 +300,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] if(*((const byte*) main::str + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::screen#2) ← *((const byte*) main::str + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [8] if(*((const byte*) main::str + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::screen#2) ← *((const byte*) main::str + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [8] if(*((const byte*) main::str + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::screen#2) ← *((const byte*) main::str + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [6] if(*((const byte*) main::str + (byte) main::i#2)!=(byte) 0) goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [8] if(*((const byte*) main::str + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::screen#2) ← *((const byte*) main::str + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#2 main::screen#5 main::screen#1 ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 44: zp[2]:3 [ main::screen#2 main::screen#5 main::screen#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 404: zp[2]:3 [ main::screen#2 main::screen#5 main::screen#1 ] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 783 combination zp[2]:3 [ main::screen#2 main::screen#5 main::screen#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -446,12 +446,12 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 22.0 -(byte*) main::screen#2 screen zp[2]:2 11.0 -(byte*) main::screen#5 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 202.0 +(byte*) main::screen#2 screen zp[2]:2 101.0 +(byte*) main::screen#5 screen zp[2]:2 101.0 (const byte*) main::str[] = (byte*) "hello brave new world" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-break-continue.sym b/src/test/ref/loop-break-continue.sym index 76232a0bc..ad256e428 100644 --- a/src/test/ref/loop-break-continue.sym +++ b/src/test/ref/loop-break-continue.sym @@ -8,12 +8,12 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 22.0 -(byte*) main::screen#2 screen zp[2]:2 11.0 -(byte*) main::screen#5 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 202.0 +(byte*) main::screen#2 screen zp[2]:2 101.0 +(byte*) main::screen#5 screen zp[2]:2 101.0 (const byte*) main::str[] = (byte*) "hello brave new world" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-break-nested.log b/src/test/ref/loop-break-nested.log index ead368418..1a69c15ac 100644 --- a/src/test/ref/loop-break-nested.log +++ b/src/test/ref/loop-break-nested.log @@ -106,11 +106,11 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [6] (bool~) main::$2 ← *((byte*) main::line#3) != (byte) 'a' from [5] (bool~) main::$1 ← *((byte*) main::line#3) == (byte) 'a' Inversing boolean not [12] (bool~) main::$4 ← *((byte*) main::line#4 + (byte) main::i#2) != (byte) 'a' from [11] (bool~) main::$3 ← *((byte*) main::line#4 + (byte) main::i#2) == (byte) 'a' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) main::line#2 = (byte*) main::line#3 (byte*) main::line#7 -Alias (byte*) main::line#4 = (byte*) main::line#5 -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::line#2 = main::line#3 main::line#7 +Alias main::line#4 = main::line#5 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination -Alias (byte*) main::line#4 = (byte*) main::line#6 +Alias main::line#4 = main::line#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) main::line#4 (byte*) main::line#2 Successful SSA optimization Pass2IdenticalPhiElimination @@ -205,11 +205,11 @@ main::@5: scope:[main] from main::@3 main::@4 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 151.5 -(byte) main::i#2 134.66666666666666 +(byte) main::i#1 1501.5 +(byte) main::i#2 1334.6666666666667 (byte*) main::line -(byte*) main::line#1 22.0 -(byte*) main::line#2 30.75 +(byte*) main::line#1 202.0 +(byte*) main::line#2 300.75 Initial phi equivalence classes [ main::line#2 main::line#1 ] @@ -330,22 +330,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::line#2>=(word)(number) $400+(number) $28*(number) $19) goto main::@return [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a -Statement [7] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@3 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if(*((byte*) main::line#2 + (byte) main::i#2)==(byte) 'a') goto main::@5 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a +Statement [6] if((byte*) main::line#2>=(word)(number) $400+(number) $28*(number) $19) goto main::@return [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a +Statement [7] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@3 [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if(*((byte*) main::line#2 + (byte) main::i#2)==(byte) 'a') goto main::@5 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [11] *((byte*) main::line#2 + (byte) main::i#2) ← (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a -Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a -Statement [6] if((byte*) main::line#2>=(word)(number) $400+(number) $28*(number) $19) goto main::@return [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a -Statement [7] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@3 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a reg byte y -Statement [10] if(*((byte*) main::line#2 + (byte) main::i#2)==(byte) 'a') goto main::@5 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a -Statement [11] *((byte*) main::line#2 + (byte) main::i#2) ← (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a -Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a +Statement [11] *((byte*) main::line#2 + (byte) main::i#2) ← (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] { } ) always clobbers reg byte a +Statement [6] if((byte*) main::line#2>=(word)(number) $400+(number) $28*(number) $19) goto main::@return [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a +Statement [7] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@3 [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [10] if(*((byte*) main::line#2 + (byte) main::i#2)==(byte) 'a') goto main::@5 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) main::line#2 + (byte) main::i#2) ← (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::line#2 main::line#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 286.17: zp[1]:4 [ main::i#2 main::i#1 ] 52.75: zp[2]:2 [ main::line#2 main::line#1 ] +Uplift Scope [main] 2,836.17: zp[1]:4 [ main::i#2 main::i#1 ] 502.75: zp[2]:2 [ main::line#2 main::line#1 ] Uplift Scope [] Uplifting [main] best 4558 combination reg byte y [ main::i#2 main::i#1 ] zp[2]:2 [ main::line#2 main::line#1 ] @@ -501,11 +501,11 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 151.5 -(byte) main::i#2 reg byte y 134.66666666666666 +(byte) main::i#1 reg byte y 1501.5 +(byte) main::i#2 reg byte y 1334.6666666666667 (byte*) main::line -(byte*) main::line#1 line zp[2]:2 22.0 -(byte*) main::line#2 line zp[2]:2 30.75 +(byte*) main::line#1 line zp[2]:2 202.0 +(byte*) main::line#2 line zp[2]:2 300.75 zp[2]:2 [ main::line#2 main::line#1 ] reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-break-nested.sym b/src/test/ref/loop-break-nested.sym index 0b8f60564..7347d2ba2 100644 --- a/src/test/ref/loop-break-nested.sym +++ b/src/test/ref/loop-break-nested.sym @@ -9,11 +9,11 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 151.5 -(byte) main::i#2 reg byte y 134.66666666666666 +(byte) main::i#1 reg byte y 1501.5 +(byte) main::i#2 reg byte y 1334.6666666666667 (byte*) main::line -(byte*) main::line#1 line zp[2]:2 22.0 -(byte*) main::line#2 line zp[2]:2 30.75 +(byte*) main::line#1 line zp[2]:2 202.0 +(byte*) main::line#2 line zp[2]:2 300.75 zp[2]:2 [ main::line#2 main::line#1 ] reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-break.log b/src/test/ref/loop-break.log index 23a03209a..b06e98623 100644 --- a/src/test/ref/loop-break.log +++ b/src/test/ref/loop-break.log @@ -57,7 +57,7 @@ Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification Inversing boolean not [3] (bool~) main::$1 ← *((const byte*) SCREEN + (byte) main::i#2) != (byte) 'a' from [2] (bool~) main::$0 ← *((const byte*) SCREEN + (byte) main::i#2) == (byte) 'a' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [3] if(*((const byte*) SCREEN + (byte) main::i#2)!=(byte) 'a') goto main::@2 Simple Condition (bool~) main::$2 [7] if((byte) main::i#1!=rangelast(0,$28*6)) goto main::@1 @@ -124,8 +124,8 @@ main::@return: scope:[main] from main::@1 main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -201,15 +201,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) 'a') goto main::@return [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) 'a') goto main::@return [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) 'a') goto main::@return [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) 'a') goto main::@return [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] @@ -312,8 +312,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-break.sym b/src/test/ref/loop-break.sym index 6cbff863a..72dbc60ba 100644 --- a/src/test/ref/loop-break.sym +++ b/src/test/ref/loop-break.sym @@ -7,7 +7,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-continue.log b/src/test/ref/loop-continue.log index c687cba62..97ec83479 100644 --- a/src/test/ref/loop-continue.log +++ b/src/test/ref/loop-continue.log @@ -61,9 +61,9 @@ Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification Inversing boolean not [3] (bool~) main::$1 ← *((const byte*) SCREEN + (byte) main::i#2) != (byte) ' ' from [2] (bool~) main::$0 ← *((const byte*) SCREEN + (byte) main::i#2) == (byte) ' ' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [3] if(*((const byte*) SCREEN + (byte) main::i#2)!=(byte) ' ') goto main::@2 Simple Condition (bool~) main::$3 [7] if((byte) main::i#1!=rangelast(0,$28*6)) goto main::@1 @@ -132,8 +132,8 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 151.5 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -211,13 +211,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) ' ') goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) ' ') goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) ' ') goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) SCREEN + (byte) main::i#2)==(byte) ' ') goto main::@3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 34.83: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 319.83: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 413 combination reg byte x [ main::i#2 main::i#1 ] @@ -325,8 +325,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-continue.sym b/src/test/ref/loop-continue.sym index 871e56c16..fb24ee184 100644 --- a/src/test/ref/loop-continue.sym +++ b/src/test/ref/loop-continue.sym @@ -8,7 +8,7 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-for-continue.log b/src/test/ref/loop-for-continue.log index a5accff6b..c2a21da9e 100644 --- a/src/test/ref/loop-for-continue.log +++ b/src/test/ref/loop-for-continue.log @@ -89,10 +89,10 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [7] (bool~) main::$1 ← *((const byte*) MESSAGE + (byte) main::i#3) != (byte) ' ' from [6] (bool~) main::$0 ← *((const byte*) MESSAGE + (byte) main::i#3) == (byte) ' ' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte) main::idx#2 = (byte) main::idx#3 (byte) main::idx#4 +Alias main::i#2 = main::i#3 main::i#4 +Alias main::idx#2 = main::idx#3 main::idx#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [4] if((byte) 0!=*((const byte*) MESSAGE + (byte) main::i#2)) goto main::@2 Simple Condition (bool~) main::$1 [6] if(*((const byte*) MESSAGE + (byte) main::i#2)!=(byte) ' ') goto main::@4 @@ -170,12 +170,12 @@ main::@4: scope:[main] from main::@2 main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 9.166666666666666 +(byte) main::i#1 202.0 +(byte) main::i#2 84.16666666666666 (byte) main::idx -(byte) main::idx#1 22.0 -(byte) main::idx#2 11.0 -(byte) main::idx#5 16.5 +(byte) main::idx#1 202.0 +(byte) main::idx#2 101.0 +(byte) main::idx#5 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -274,19 +274,19 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte) 0!=*((const byte*) MESSAGE + (byte) main::i#2)) goto main::@2 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) MESSAGE + (byte) main::i#2)) goto main::@2 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#2 main::idx#5 main::idx#1 ] -Statement [8] if(*((const byte*) MESSAGE + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((const byte*) MESSAGE + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a -Statement [6] if((byte) 0!=*((const byte*) MESSAGE + (byte) main::i#2)) goto main::@2 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a -Statement [8] if(*((const byte*) MESSAGE + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((const byte*) MESSAGE + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] ) always clobbers reg byte a +Statement [8] if(*((const byte*) MESSAGE + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((const byte*) MESSAGE + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [6] if((byte) 0!=*((const byte*) MESSAGE + (byte) main::i#2)) goto main::@2 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [8] if(*((const byte*) MESSAGE + (byte) main::i#2)==(byte) ' ') goto main::@4 [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((const byte*) MESSAGE + (byte) main::i#2) [ main::i#2 main::idx#2 ] ( main:2 [ main::i#2 main::idx#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#2 main::idx#5 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 49.5: zp[1]:3 [ main::idx#2 main::idx#5 main::idx#1 ] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 454.5: zp[1]:3 [ main::idx#2 main::idx#5 main::idx#1 ] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 523 combination reg byte y [ main::idx#2 main::idx#5 main::idx#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -411,12 +411,12 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 84.16666666666666 (byte) main::idx -(byte) main::idx#1 reg byte y 22.0 -(byte) main::idx#2 reg byte y 11.0 -(byte) main::idx#5 reg byte y 16.5 +(byte) main::idx#1 reg byte y 202.0 +(byte) main::idx#2 reg byte y 101.0 +(byte) main::idx#5 reg byte y 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#2 main::idx#5 main::idx#1 ] diff --git a/src/test/ref/loop-for-continue.sym b/src/test/ref/loop-for-continue.sym index 299167dfc..36d98051c 100644 --- a/src/test/ref/loop-for-continue.sym +++ b/src/test/ref/loop-for-continue.sym @@ -10,12 +10,12 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 84.16666666666666 (byte) main::idx -(byte) main::idx#1 reg byte y 22.0 -(byte) main::idx#2 reg byte y 11.0 -(byte) main::idx#5 reg byte y 16.5 +(byte) main::idx#1 reg byte y 202.0 +(byte) main::idx#2 reg byte y 101.0 +(byte) main::idx#5 reg byte y 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::idx#2 main::idx#5 main::idx#1 ] diff --git a/src/test/ref/loop-for-empty-body.log b/src/test/ref/loop-for-empty-body.log index 3f5b7c94f..740f8f379 100644 --- a/src/test/ref/loop-for-empty-body.log +++ b/src/test/ref/loop-for-empty-body.log @@ -65,7 +65,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::b#2 = (byte) main::b#3 (byte) main::b#4 +Alias main::b#2 = main::b#3 main::b#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [3] if(*((const byte*) str + (byte) main::b#2)!=(byte) 0) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -126,10 +126,10 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 +(byte~) main::$0 22.0 (byte) main::b -(byte) main::b#1 22.0 -(byte) main::b#2 17.5 +(byte) main::b#1 202.0 +(byte) main::b#2 157.0 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -213,16 +213,16 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) str + (byte) main::b#2)!=(byte) 0) goto main::@2 [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) str + (byte) main::b#2)!=(byte) 0) goto main::@2 [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::b#2 main::b#1 ] -Statement [7] (byte~) main::$0 ← (byte) '0' + (byte) main::b#2 [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [6] if(*((const byte*) str + (byte) main::b#2)!=(byte) 0) goto main::@2 [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$0 ← (byte) '0' + (byte) main::b#2 [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) '0' + (byte) main::b#2 [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [6] if(*((const byte*) str + (byte) main::b#2)!=(byte) 0) goto main::@2 [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) '0' + (byte) main::b#2 [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 39.5: zp[1]:2 [ main::b#2 main::b#1 ] 4: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 359: zp[1]:2 [ main::b#2 main::b#1 ] 22: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 249 combination reg byte x [ main::b#2 main::b#1 ] reg byte x [ main::$0 ] @@ -323,14 +323,14 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte x 4.0 +(byte~) main::$0 reg byte x 22.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 22.0 -(byte) main::b#2 reg byte x 17.5 +(byte) main::b#1 reg byte x 202.0 +(byte) main::b#2 reg byte x 157.0 (const byte*) str[] = (byte*) "Hello!" reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/loop-for-empty-body.sym b/src/test/ref/loop-for-empty-body.sym index 2df813e51..b9b12ace3 100644 --- a/src/test/ref/loop-for-empty-body.sym +++ b/src/test/ref/loop-for-empty-body.sym @@ -3,14 +3,14 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte x 4.0 +(byte~) main::$0 reg byte x 22.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 22.0 -(byte) main::b#2 reg byte x 17.5 +(byte) main::b#1 reg byte x 202.0 +(byte) main::b#2 reg byte x 157.0 (const byte*) str[] = (byte*) "Hello!" reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/loop-for-sideeffect.log b/src/test/ref/loop-for-sideeffect.log index 69f6068d2..01fcff6da 100644 --- a/src/test/ref/loop-for-sideeffect.log +++ b/src/test/ref/loop-for-sideeffect.log @@ -68,7 +68,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 7 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#5 +Alias main::i#2 = main::i#4 main::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [5] if((byte) main::i#3<(byte) 7) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -132,9 +132,9 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#2 15.333333333333332 -(byte) main::i#3 16.5 -(byte) main::i#6 22.0 +(byte) main::i#2 138.33333333333331 +(byte) main::i#3 151.5 +(byte) main::i#6 202.0 Initial phi equivalence classes [ main::i#3 main::i#6 ] @@ -222,12 +222,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'x' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) 'x' [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#3 main::i#6 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#3 main::i#6 ] 15.33: zp[1]:3 [ main::i#2 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#3 main::i#6 ] 138.33: zp[1]:3 [ main::i#2 ] Uplift Scope [] Uplifting [main] best 313 combination reg byte a [ main::i#3 main::i#6 ] reg byte x [ main::i#2 ] @@ -335,9 +335,9 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#2 reg byte x 15.333333333333332 -(byte) main::i#3 reg byte a 16.5 -(byte) main::i#6 reg byte a 22.0 +(byte) main::i#2 reg byte x 138.33333333333331 +(byte) main::i#3 reg byte a 151.5 +(byte) main::i#6 reg byte a 202.0 reg byte a [ main::i#3 main::i#6 ] reg byte x [ main::i#2 ] diff --git a/src/test/ref/loop-for-sideeffect.sym b/src/test/ref/loop-for-sideeffect.sym index 8a96ccc42..10415e2c5 100644 --- a/src/test/ref/loop-for-sideeffect.sym +++ b/src/test/ref/loop-for-sideeffect.sym @@ -8,9 +8,9 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#2 reg byte x 15.333333333333332 -(byte) main::i#3 reg byte a 16.5 -(byte) main::i#6 reg byte a 22.0 +(byte) main::i#2 reg byte x 138.33333333333331 +(byte) main::i#3 reg byte a 151.5 +(byte) main::i#6 reg byte a 202.0 reg byte a [ main::i#3 main::i#6 ] reg byte x [ main::i#2 ] diff --git a/src/test/ref/loop-memset-min.log b/src/test/ref/loop-memset-min.log index 533c5684a..721eb97c4 100644 --- a/src/test/ref/loop-memset-min.log +++ b/src/test/ref/loop-memset-min.log @@ -142,15 +142,15 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [8] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [7] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#1 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#2 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 +Alias memset::return#1 = memset::str#1 memset::return#3 memset::return#2 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -257,8 +257,8 @@ VARIABLE REGISTER WEIGHTS (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 2002.0 +(byte*) memset::dst#2 1334.6666666666667 (byte*) memset::end (word) memset::num (void*) memset::return @@ -357,12 +357,12 @@ memset: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [11] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [9] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ memset::dst#2 memset::dst#1 ] : zp[2]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [memset] 36.67: zp[2]:2 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [memset] 3,336.67: zp[2]:2 [ memset::dst#2 memset::dst#1 ] Uplift Scope [main] Uplift Scope [] @@ -494,8 +494,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) 'c' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:2 22.0 -(byte*) memset::dst#2 dst zp[2]:2 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:2 2002.0 +(byte*) memset::dst#2 dst zp[2]:2 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num diff --git a/src/test/ref/loop-memset-min.sym b/src/test/ref/loop-memset-min.sym index 397b5a59e..dc3fd5e1b 100644 --- a/src/test/ref/loop-memset-min.sym +++ b/src/test/ref/loop-memset-min.sym @@ -11,8 +11,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) 'c' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:2 22.0 -(byte*) memset::dst#2 dst zp[2]:2 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:2 2002.0 +(byte*) memset::dst#2 dst zp[2]:2 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num diff --git a/src/test/ref/loop-problem.log b/src/test/ref/loop-problem.log index 229f9b2ab..4248a78fc 100644 --- a/src/test/ref/loop-problem.log +++ b/src/test/ref/loop-problem.log @@ -78,7 +78,7 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) b::i#2 = (byte) b::i#3 +Alias b::i#2 = b::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) b::$1 [9] if((byte) b::i#1!=rangelast(0,3)) goto b::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -175,8 +175,8 @@ null depth in calling loop Loop head: b::@1 tails: b::@2 blocks: b::@2 b::@1 in VARIABLE REGISTER WEIGHTS (void()) b() (byte) b::i -(byte) b::i#1 16.5 -(byte) b::i#2 11.0 +(byte) b::i#1 1501.5 +(byte) b::i#2 1001.0 (void()) d() (void()) main() @@ -277,11 +277,11 @@ d: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ b::i#2 b::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [b] 27.5: zp[1]:2 [ b::i#2 b::i#1 ] +Uplift Scope [b] 2,502.5: zp[1]:2 [ b::i#2 b::i#1 ] Uplift Scope [main] Uplift Scope [d] Uplift Scope [] @@ -421,8 +421,8 @@ FINAL SYMBOL TABLE (label) b::@2 (label) b::@return (byte) b::i -(byte) b::i#1 reg byte x 16.5 -(byte) b::i#2 reg byte x 11.0 +(byte) b::i#1 reg byte x 1501.5 +(byte) b::i#2 reg byte x 1001.0 (void()) d() (label) d::@return (void()) main() diff --git a/src/test/ref/loop-problem.sym b/src/test/ref/loop-problem.sym index 793d125e5..85ce8c7dd 100644 --- a/src/test/ref/loop-problem.sym +++ b/src/test/ref/loop-problem.sym @@ -7,8 +7,8 @@ (label) b::@2 (label) b::@return (byte) b::i -(byte) b::i#1 reg byte x 16.5 -(byte) b::i#2 reg byte x 11.0 +(byte) b::i#1 reg byte x 1501.5 +(byte) b::i#2 reg byte x 1001.0 (void()) d() (label) d::@return (void()) main() diff --git a/src/test/ref/loop-problem2.log b/src/test/ref/loop-problem2.log index 32b98d257..234d3d036 100644 --- a/src/test/ref/loop-problem2.log +++ b/src/test/ref/loop-problem2.log @@ -124,7 +124,7 @@ Finalized unsigned number type (byte) $ff Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) print_cls::sc#2 = (byte*) print_cls::sc#3 +Alias print_cls::sc#2 = print_cls::sc#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) print_cls::$0 [6] if((byte*) print_cls::sc#2!=(const byte*) SCREEN+(word) $3e8) goto print_cls::@2 Simple Condition (bool~) mode_ctrl::$0 [13] if((byte) mode_ctrl::before#0==(byte) $ff) goto mode_ctrl::@4 @@ -230,11 +230,11 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) mode_ctrl() (byte) mode_ctrl::before -(byte) mode_ctrl::before#0 22.0 +(byte) mode_ctrl::before#0 2002.0 (void()) print_cls() (byte*) print_cls::sc -(byte*) print_cls::sc#1 22.0 -(byte*) print_cls::sc#2 14.666666666666666 +(byte*) print_cls::sc#1 2002.0 +(byte*) print_cls::sc#2 1334.6666666666667 Initial phi equivalence classes [ print_cls::sc#2 print_cls::sc#1 ] @@ -363,16 +363,16 @@ print_cls: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const byte*) BORDERCOL) ← (byte) 3 [ ] ( main:2::mode_ctrl:7 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BORDERCOL) ← (byte) 2 [ ] ( main:2::mode_ctrl:7 [ ] ) always clobbers reg byte a -Statement [16] if((byte*) print_cls::sc#2!=(const byte*) SCREEN+(word) $3e8) goto print_cls::@2 [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a -Statement [18] *((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 [12] *((const byte*) BORDERCOL) ← (byte) 3 [ ] ( main:2::mode_ctrl:7 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BORDERCOL) ← (byte) 2 [ ] ( main:2::mode_ctrl:7 [ ] { } ) always clobbers reg byte a +Statement [16] if((byte*) print_cls::sc#2!=(const byte*) SCREEN+(word) $3e8) goto print_cls::@2 [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] { } ) always clobbers reg byte a +Statement [18] *((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 Potential registers zp[2]:2 [ print_cls::sc#2 print_cls::sc#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ mode_ctrl::before#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print_cls] 36.67: zp[2]:2 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [mode_ctrl] 22: zp[1]:4 [ mode_ctrl::before#0 ] +Uplift Scope [print_cls] 3,336.67: zp[2]:2 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [mode_ctrl] 2,002: zp[1]:4 [ mode_ctrl::before#0 ] Uplift Scope [main] Uplift Scope [] @@ -540,14 +540,14 @@ FINAL SYMBOL TABLE (label) mode_ctrl::@2 (label) mode_ctrl::@3 (byte) mode_ctrl::before -(byte) mode_ctrl::before#0 reg byte a 22.0 +(byte) mode_ctrl::before#0 reg byte a 2002.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@2 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp[2]:2 22.0 -(byte*) print_cls::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) print_cls::sc#1 sc zp[2]:2 2002.0 +(byte*) print_cls::sc#2 sc zp[2]:2 1334.6666666666667 zp[2]:2 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ mode_ctrl::before#0 ] diff --git a/src/test/ref/loop-problem2.sym b/src/test/ref/loop-problem2.sym index 5caff4a14..362373d53 100644 --- a/src/test/ref/loop-problem2.sym +++ b/src/test/ref/loop-problem2.sym @@ -11,14 +11,14 @@ (label) mode_ctrl::@2 (label) mode_ctrl::@3 (byte) mode_ctrl::before -(byte) mode_ctrl::before#0 reg byte a 22.0 +(byte) mode_ctrl::before#0 reg byte a 2002.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@2 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp[2]:2 22.0 -(byte*) print_cls::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) print_cls::sc#1 sc zp[2]:2 2002.0 +(byte*) print_cls::sc#2 sc zp[2]:2 1334.6666666666667 zp[2]:2 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ mode_ctrl::before#0 ] diff --git a/src/test/ref/loop-while-continue.log b/src/test/ref/loop-while-continue.log index 2115b290c..c1c553d27 100644 --- a/src/test/ref/loop-while-continue.log +++ b/src/test/ref/loop-while-continue.log @@ -66,7 +66,7 @@ Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification Inversing boolean not [7] (bool~) main::$2 ← *((const byte*) SCREEN + (byte) main::i#3) != (byte) ' ' from [6] (bool~) main::$1 ← *((const byte*) SCREEN + (byte) main::i#3) == (byte) ' ' Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#1 = (byte) main::i#3 (byte) main::i#4 +Alias main::i#1 = main::i#3 main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#1<(byte)(number) $28*(number) 6) goto main::@2 Simple Condition (bool~) main::$2 [6] if(*((const byte*) SCREEN + (byte) main::i#1)!=(byte) ' ') goto main::@4 @@ -133,8 +133,8 @@ main::@3: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 109.25 -(byte) main::i#2 213.0 +(byte) main::i#1 1076.75 +(byte) main::i#2 2103.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -213,13 +213,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] if(*((const byte*) SCREEN + (byte) main::i#1)==(byte) ' ') goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [9] if(*((const byte*) SCREEN + (byte) main::i#1)==(byte) ' ') goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] if(*((const byte*) SCREEN + (byte) main::i#1)==(byte) ' ') goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [9] if(*((const byte*) SCREEN + (byte) main::i#1)==(byte) ' ') goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 322.25: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 3,179.75: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 3068 combination reg byte x [ main::i#2 main::i#1 ] @@ -329,8 +329,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 109.25 -(byte) main::i#2 reg byte x 213.0 +(byte) main::i#1 reg byte x 1076.75 +(byte) main::i#2 reg byte x 2103.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-while-continue.sym b/src/test/ref/loop-while-continue.sym index 173ef1537..5119cc3d5 100644 --- a/src/test/ref/loop-while-continue.sym +++ b/src/test/ref/loop-while-continue.sym @@ -8,7 +8,7 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 109.25 -(byte) main::i#2 reg byte x 213.0 +(byte) main::i#1 reg byte x 1076.75 +(byte) main::i#2 reg byte x 2103.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-while-min.log b/src/test/ref/loop-while-min.log index 6a61a0c13..0b324dfd2 100644 --- a/src/test/ref/loop-while-min.log +++ b/src/test/ref/loop-while-min.log @@ -56,7 +56,7 @@ Simplifying constant integer cast $64 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $64 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2!=(byte) $64) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -113,8 +113,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -187,7 +187,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -281,8 +281,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-while-min.sym b/src/test/ref/loop-while-min.sym index 4450901c4..f0891fdb1 100644 --- a/src/test/ref/loop-while-min.sym +++ b/src/test/ref/loop-while-min.sym @@ -7,7 +7,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop-while-sideeffect.log b/src/test/ref/loop-while-sideeffect.log index 59948ebd7..59415d077 100644 --- a/src/test/ref/loop-while-sideeffect.log +++ b/src/test/ref/loop-while-sideeffect.log @@ -61,7 +61,7 @@ Simplifying constant integer cast 7 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#1 = (byte) main::i#3 (byte) main::i#4 +Alias main::i#1 = main::i#3 main::i#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2!=(byte) 7) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -122,9 +122,9 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 15.333333333333332 -(byte) main::i#2 16.5 -(byte) main::i#5 22.0 +(byte) main::i#1 138.33333333333331 +(byte) main::i#2 151.5 +(byte) main::i#5 202.0 Initial phi equivalence classes [ main::i#2 main::i#5 ] @@ -211,12 +211,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) SCREEN + (byte) main::i#1) ← (byte) 'x' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#1) ← (byte) 'x' [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#5 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#5 ] 15.33: zp[1]:3 [ main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#5 ] 138.33: zp[1]:3 [ main::i#1 ] Uplift Scope [] Uplifting [main] best 313 combination reg byte a [ main::i#2 main::i#5 ] reg byte x [ main::i#1 ] @@ -323,9 +323,9 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 15.333333333333332 -(byte) main::i#2 reg byte a 16.5 -(byte) main::i#5 reg byte a 22.0 +(byte) main::i#1 reg byte x 138.33333333333331 +(byte) main::i#2 reg byte a 151.5 +(byte) main::i#5 reg byte a 202.0 reg byte a [ main::i#2 main::i#5 ] reg byte x [ main::i#1 ] diff --git a/src/test/ref/loop-while-sideeffect.sym b/src/test/ref/loop-while-sideeffect.sym index 850e98f6a..86d618fc5 100644 --- a/src/test/ref/loop-while-sideeffect.sym +++ b/src/test/ref/loop-while-sideeffect.sym @@ -8,9 +8,9 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 15.333333333333332 -(byte) main::i#2 reg byte a 16.5 -(byte) main::i#5 reg byte a 22.0 +(byte) main::i#1 reg byte x 138.33333333333331 +(byte) main::i#2 reg byte a 151.5 +(byte) main::i#5 reg byte a 202.0 reg byte a [ main::i#2 main::i#5 ] reg byte x [ main::i#1 ] diff --git a/src/test/ref/loop100.log b/src/test/ref/loop100.log index b5c3577f0..0017e988d 100644 --- a/src/test/ref/loop100.log +++ b/src/test/ref/loop100.log @@ -52,7 +52,7 @@ Simplifying constant integer cast $64 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $64 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $64) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -108,8 +108,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 16.5 +(byte) main::i#1 202.0 +(byte) main::i#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -176,7 +176,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 193 combination reg byte x [ main::i#2 main::i#1 ] @@ -264,8 +264,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loop100.sym b/src/test/ref/loop100.sym index 446dc1a1b..abcfb3eb1 100644 --- a/src/test/ref/loop100.sym +++ b/src/test/ref/loop100.sym @@ -6,7 +6,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/loophead-problem-2.log b/src/test/ref/loophead-problem-2.log index 756f5955d..912e53ff9 100644 --- a/src/test/ref/loophead-problem-2.log +++ b/src/test/ref/loophead-problem-2.log @@ -158,13 +158,13 @@ Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [22] (bool~) scan_for_lowest::$2 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$3) >= (signed word) scan_for_lowest::height#2 from [21] (bool~) scan_for_lowest::$1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$3) < (signed word) scan_for_lowest::height#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) scan_for_lowest::return#0 = (byte) scan_for_lowest::return#3 -Alias (byte) main::hit_check#0 = (byte~) main::$0 -Alias (byte) scan_for_lowest::i#2 = (byte) scan_for_lowest::i#3 (byte) scan_for_lowest::i#5 (byte) scan_for_lowest::lowest#1 -Alias (signed word) scan_for_lowest::height#2 = (signed word) scan_for_lowest::height#3 -Alias (byte) scan_for_lowest::lowest#2 = (byte) scan_for_lowest::lowest#5 (byte) scan_for_lowest::lowest#3 (byte) scan_for_lowest::return#1 (byte) scan_for_lowest::return#4 (byte) scan_for_lowest::return#2 +Alias scan_for_lowest::return#0 = scan_for_lowest::return#3 +Alias main::hit_check#0 = main::$0 +Alias scan_for_lowest::i#2 = scan_for_lowest::i#3 scan_for_lowest::i#5 scan_for_lowest::lowest#1 +Alias scan_for_lowest::height#2 = scan_for_lowest::height#3 +Alias scan_for_lowest::lowest#2 = scan_for_lowest::lowest#5 scan_for_lowest::lowest#3 scan_for_lowest::return#1 scan_for_lowest::return#4 scan_for_lowest::return#2 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte) scan_for_lowest::i#2 = (byte) scan_for_lowest::i#4 +Alias candidate removed (phi-usage) scan_for_lowest::i#2 = scan_for_lowest::i#4 Identical Phi Values (byte) scan_for_lowest::i#4 (byte) scan_for_lowest::i#2 Successful SSA optimization Pass2IdenticalPhiElimination Identified duplicate assignment right side [9] (byte~) main::$4 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD @@ -178,7 +178,7 @@ Constant (const byte) scan_for_lowest::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification Simplifying expression containing zero main::screen in [3] *((const byte*) main::screen + (byte) 0) ← (byte) main::hit_check#0 Successful SSA optimization PassNSimplifyExpressionWithZero -Alias (byte~) main::$4 = (byte~) main::$3 +Alias main::$4 = main::$3 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [4] (byte~) main::$4 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD Rewriting multiplication to use shift [12] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 * (const byte) SIZEOF_SIGNED_WORD @@ -290,27 +290,27 @@ scan_for_lowest::@3: scope:[scan_for_lowest] from scan_for_lowest::@2 scan_for_ VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$4 2.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$4 11.0 (byte) main::hit_check -(byte) main::hit_check#0 3.0 +(byte) main::hit_check#0 16.5 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 22.0 -(byte~) scan_for_lowest::$4 22.0 +(byte~) scan_for_lowest::$3 2002.0 +(byte~) scan_for_lowest::$4 2002.0 (signed word) scan_for_lowest::height -(signed word) scan_for_lowest::height#1 11.0 -(signed word) scan_for_lowest::height#2 8.25 -(signed word) scan_for_lowest::height#4 16.5 +(signed word) scan_for_lowest::height#1 1001.0 +(signed word) scan_for_lowest::height#2 750.75 +(signed word) scan_for_lowest::height#4 1501.5 (byte) scan_for_lowest::i -(byte) scan_for_lowest::i#1 22.0 -(byte) scan_for_lowest::i#2 8.25 +(byte) scan_for_lowest::i#1 2002.0 +(byte) scan_for_lowest::i#2 750.75 (byte) scan_for_lowest::lowest -(byte) scan_for_lowest::lowest#2 4.0 -(byte) scan_for_lowest::lowest#4 16.5 -(byte) scan_for_lowest::lowest#8 22.0 +(byte) scan_for_lowest::lowest#2 335.5 +(byte) scan_for_lowest::lowest#4 1501.5 +(byte) scan_for_lowest::lowest#8 2002.0 (byte) scan_for_lowest::return -(byte) scan_for_lowest::return#0 4.0 +(byte) scan_for_lowest::return#0 22.0 Initial phi equivalence classes [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] @@ -505,23 +505,23 @@ scan_for_lowest: { ball_y: .word $32, $64, -$c8, $c, -$64, $4b, 0, -$79 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( main:2 [ main::$4 main::$1 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main::$4 ] ( main:2 [ main::$4 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( main:2 [ main::$4 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$4 ] -Statement [12] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( main:2 [ main::$2 ] ) always clobbers reg byte a -Statement [19] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ) always clobbers reg byte a +Statement [12] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( main:2 [ main::$2 ] { } ) always clobbers reg byte a +Statement [19] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] Removing always clobbered register reg byte a as potential for zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] -Statement [20] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ) always clobbers reg byte a -Statement [21] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ) always clobbers reg byte a -Statement [22] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( main:2 [ main::$4 main::$1 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( main:2 [ main::$2 ] ) always clobbers reg byte a -Statement [19] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ) always clobbers reg byte a -Statement [20] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ) always clobbers reg byte a -Statement [21] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ) always clobbers reg byte a -Statement [22] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ) always clobbers reg byte a +Statement [20] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [21] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [22] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [9] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main::$4 ] ( main:2 [ main::$4 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( main:2 [ main::$4 main::$1 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( main:2 [ main::$2 ] { } ) always clobbers reg byte a +Statement [19] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [20] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [21] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [22] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( main:2::scan_for_lowest:5 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] : zp[1]:5 , reg byte x , reg byte y , @@ -534,8 +534,8 @@ Potential registers zp[1]:11 [ scan_for_lowest::$3 ] : zp[1]:11 , reg byte a , r Potential registers zp[1]:12 [ scan_for_lowest::$4 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scan_for_lowest] 42.5: zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] 35.75: zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] 30.25: zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] 22: zp[1]:11 [ scan_for_lowest::$3 ] 22: zp[1]:12 [ scan_for_lowest::$4 ] 4: zp[1]:6 [ scan_for_lowest::return#0 ] -Uplift Scope [main] 4: zp[1]:9 [ main::$1 ] 4: zp[1]:10 [ main::$2 ] 3: zp[1]:7 [ main::hit_check#0 ] 2: zp[1]:8 [ main::$4 ] +Uplift Scope [scan_for_lowest] 3,839: zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] 3,253.25: zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] 2,752.75: zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] 2,002: zp[1]:11 [ scan_for_lowest::$3 ] 2,002: zp[1]:12 [ scan_for_lowest::$4 ] 22: zp[1]:6 [ scan_for_lowest::return#0 ] +Uplift Scope [main] 22: zp[1]:9 [ main::$1 ] 22: zp[1]:10 [ main::$2 ] 16.5: zp[1]:7 [ main::hit_check#0 ] 11: zp[1]:8 [ main::$4 ] Uplift Scope [] Uplifting [scan_for_lowest] best 1002 combination zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] reg byte a [ scan_for_lowest::$3 ] reg byte a [ scan_for_lowest::$4 ] zp[1]:6 [ scan_for_lowest::return#0 ] @@ -723,35 +723,35 @@ FINAL SYMBOL TABLE (label) @end (const signed word*) ball_y[(number) 8] = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 } (void()) main() -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$4 reg byte x 2.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$4 reg byte x 11.0 (label) main::@1 (label) main::@return (byte) main::hit_check -(byte) main::hit_check#0 reg byte a 3.0 +(byte) main::hit_check#0 reg byte a 16.5 (const byte*) main::screen = (byte*) 1024 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 reg byte a 22.0 -(byte~) scan_for_lowest::$4 reg byte a 22.0 +(byte~) scan_for_lowest::$3 reg byte a 2002.0 +(byte~) scan_for_lowest::$4 reg byte a 2002.0 (label) scan_for_lowest::@1 (label) scan_for_lowest::@2 (label) scan_for_lowest::@3 (label) scan_for_lowest::@4 (label) scan_for_lowest::@return (signed word) scan_for_lowest::height -(signed word) scan_for_lowest::height#1 height zp[2]:2 11.0 -(signed word) scan_for_lowest::height#2 height zp[2]:2 8.25 -(signed word) scan_for_lowest::height#4 height zp[2]:2 16.5 +(signed word) scan_for_lowest::height#1 height zp[2]:2 1001.0 +(signed word) scan_for_lowest::height#2 height zp[2]:2 750.75 +(signed word) scan_for_lowest::height#4 height zp[2]:2 1501.5 (byte) scan_for_lowest::i -(byte) scan_for_lowest::i#1 reg byte x 22.0 -(byte) scan_for_lowest::i#2 reg byte x 8.25 +(byte) scan_for_lowest::i#1 reg byte x 2002.0 +(byte) scan_for_lowest::i#2 reg byte x 750.75 (byte) scan_for_lowest::lowest -(byte) scan_for_lowest::lowest#2 lowest zp[1]:4 4.0 -(byte) scan_for_lowest::lowest#4 lowest zp[1]:4 16.5 -(byte) scan_for_lowest::lowest#8 lowest zp[1]:4 22.0 +(byte) scan_for_lowest::lowest#2 lowest zp[1]:4 335.5 +(byte) scan_for_lowest::lowest#4 lowest zp[1]:4 1501.5 +(byte) scan_for_lowest::lowest#8 lowest zp[1]:4 2002.0 (byte) scan_for_lowest::return -(byte) scan_for_lowest::return#0 reg byte a 4.0 +(byte) scan_for_lowest::return#0 reg byte a 22.0 reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] zp[2]:2 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] diff --git a/src/test/ref/loophead-problem-2.sym b/src/test/ref/loophead-problem-2.sym index 3c619aafd..3a5a48da3 100644 --- a/src/test/ref/loophead-problem-2.sym +++ b/src/test/ref/loophead-problem-2.sym @@ -3,35 +3,35 @@ (label) @end (const signed word*) ball_y[(number) 8] = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 } (void()) main() -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$4 reg byte x 2.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$4 reg byte x 11.0 (label) main::@1 (label) main::@return (byte) main::hit_check -(byte) main::hit_check#0 reg byte a 3.0 +(byte) main::hit_check#0 reg byte a 16.5 (const byte*) main::screen = (byte*) 1024 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 reg byte a 22.0 -(byte~) scan_for_lowest::$4 reg byte a 22.0 +(byte~) scan_for_lowest::$3 reg byte a 2002.0 +(byte~) scan_for_lowest::$4 reg byte a 2002.0 (label) scan_for_lowest::@1 (label) scan_for_lowest::@2 (label) scan_for_lowest::@3 (label) scan_for_lowest::@4 (label) scan_for_lowest::@return (signed word) scan_for_lowest::height -(signed word) scan_for_lowest::height#1 height zp[2]:2 11.0 -(signed word) scan_for_lowest::height#2 height zp[2]:2 8.25 -(signed word) scan_for_lowest::height#4 height zp[2]:2 16.5 +(signed word) scan_for_lowest::height#1 height zp[2]:2 1001.0 +(signed word) scan_for_lowest::height#2 height zp[2]:2 750.75 +(signed word) scan_for_lowest::height#4 height zp[2]:2 1501.5 (byte) scan_for_lowest::i -(byte) scan_for_lowest::i#1 reg byte x 22.0 -(byte) scan_for_lowest::i#2 reg byte x 8.25 +(byte) scan_for_lowest::i#1 reg byte x 2002.0 +(byte) scan_for_lowest::i#2 reg byte x 750.75 (byte) scan_for_lowest::lowest -(byte) scan_for_lowest::lowest#2 lowest zp[1]:4 4.0 -(byte) scan_for_lowest::lowest#4 lowest zp[1]:4 16.5 -(byte) scan_for_lowest::lowest#8 lowest zp[1]:4 22.0 +(byte) scan_for_lowest::lowest#2 lowest zp[1]:4 335.5 +(byte) scan_for_lowest::lowest#4 lowest zp[1]:4 1501.5 +(byte) scan_for_lowest::lowest#8 lowest zp[1]:4 2002.0 (byte) scan_for_lowest::return -(byte) scan_for_lowest::return#0 reg byte a 4.0 +(byte) scan_for_lowest::return#0 reg byte a 22.0 reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] zp[2]:2 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] diff --git a/src/test/ref/loophead-problem-3.log b/src/test/ref/loophead-problem-3.log index 6eba5d98d..f30e79f8f 100644 --- a/src/test/ref/loophead-problem-3.log +++ b/src/test/ref/loophead-problem-3.log @@ -192,18 +192,18 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 Inversing boolean not [9] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [8] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 -Alias (dword) main::result#0 = (dword~) main::$0 -Alias (word) main::kaputt#0 = (word~) main::$1 +Alias mul16u::a#2 = mul16u::a#3 mul16u::a#6 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#3 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias mul16u::return#2 = mul16u::return#4 +Alias main::result#0 = main::$0 +Alias main::kaputt#0 = main::$1 Successful SSA optimization Pass2AliasElimination -Alias (word) mul16u::a#2 = (word) mul16u::a#4 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 +Alias mul16u::a#2 = mul16u::a#4 +Alias mul16u::mb#2 = mul16u::mb#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) mul16u::b#1 (word) mul16u::b#0 Identical Phi Values (word) mul16u::a#5 (word) mul16u::a#1 @@ -313,27 +313,27 @@ mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 (word) main::kaputt -(word) main::kaputt#0 2.0 +(word) main::kaputt#0 11.0 (dword) main::result -(dword) main::result#0 4.0 +(dword) main::result#0 22.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 22.0 +(byte~) mul16u::$1 2002.0 (word) mul16u::a -(word) mul16u::a#0 11.0 -(word) mul16u::a#2 7.333333333333333 +(word) mul16u::a#0 1001.0 +(word) mul16u::a#2 667.3333333333334 (word) mul16u::b (dword) mul16u::mb -(dword) mul16u::mb#1 22.0 -(dword) mul16u::mb#2 4.714285714285714 +(dword) mul16u::mb#1 2002.0 +(dword) mul16u::mb#2 429.0 (dword) mul16u::res -(dword) mul16u::res#1 22.0 -(dword) mul16u::res#2 5.833333333333333 -(dword) mul16u::res#6 11.0 +(dword) mul16u::res#1 2002.0 +(dword) mul16u::res#2 502.33333333333337 +(dword) mul16u::res#6 1001.0 (dword) mul16u::return -(dword) mul16u::return#2 4.0 +(dword) mul16u::return#2 22.0 Initial phi equivalence classes [ mul16u::a#2 mul16u::a#0 ] @@ -547,14 +547,12 @@ mul16u: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16u::return#2 ] ( main:2 [ mul16u::return#2 ] ) always clobbers reg byte a -Statement [7] (dword) main::result#0 ← (dword) mul16u::return#2 [ main::result#0 ] ( main:2 [ main::result#0 ] ) always clobbers reg byte a -Statement [8] (word) main::kaputt#0 ← < (dword) main::result#0 [ main::kaputt#0 ] ( main:2 [ main::kaputt#0 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← < (word) main::kaputt#0 [ main::kaputt#0 main::$2 ] ( main:2 [ main::kaputt#0 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← > (word) main::kaputt#0 [ main::$3 ] ( main:2 [ main::$3 ] ) always clobbers reg byte a -Statement [16] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::mul16u:5 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [18] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16u:5 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [20] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16u:5 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [6] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16u::return#2 ] ( main:2 [ mul16u::return#2 ] { { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [7] (dword) main::result#0 ← (dword) mul16u::return#2 [ main::result#0 ] ( main:2 [ main::result#0 ] { } ) always clobbers reg byte a +Statement [8] (word) main::kaputt#0 ← < (dword) main::result#0 [ main::kaputt#0 ] ( main:2 [ main::kaputt#0 ] { } ) always clobbers reg byte a +Statement [16] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::mul16u:5 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [18] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16u:5 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [20] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16u:5 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ mul16u::a#2 mul16u::a#0 ] : zp[2]:2 , Potential registers zp[4]:4 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] : zp[4]:4 , Potential registers zp[4]:8 [ mul16u::mb#2 mul16u::mb#1 ] : zp[4]:8 , @@ -566,8 +564,8 @@ Potential registers zp[1]:23 [ main::$3 ] : zp[1]:23 , reg byte a , reg byte x , Potential registers zp[1]:24 [ mul16u::$1 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 38.83: zp[4]:4 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 26.71: zp[4]:8 [ mul16u::mb#2 mul16u::mb#1 ] 22: zp[1]:24 [ mul16u::$1 ] 18.33: zp[2]:2 [ mul16u::a#2 mul16u::a#0 ] 4: zp[4]:12 [ mul16u::return#2 ] -Uplift Scope [main] 4: zp[4]:16 [ main::result#0 ] 4: zp[1]:22 [ main::$2 ] 4: zp[1]:23 [ main::$3 ] 2: zp[2]:20 [ main::kaputt#0 ] +Uplift Scope [mul16u] 3,505.33: zp[4]:4 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,431: zp[4]:8 [ mul16u::mb#2 mul16u::mb#1 ] 2,002: zp[1]:24 [ mul16u::$1 ] 1,668.33: zp[2]:2 [ mul16u::a#2 mul16u::a#0 ] 22: zp[4]:12 [ mul16u::return#2 ] +Uplift Scope [main] 22: zp[4]:16 [ main::result#0 ] 22: zp[1]:22 [ main::$2 ] 22: zp[1]:23 [ main::$3 ] 11: zp[2]:20 [ main::kaputt#0 ] Uplift Scope [] Uplifting [mul16u] best 1657 combination zp[4]:4 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:8 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:2 [ mul16u::a#2 mul16u::a#0 ] zp[4]:12 [ mul16u::return#2 ] @@ -777,35 +775,35 @@ FINAL SYMBOL TABLE (const byte*) BGCOL = (byte*) 53281 (const byte*) BORDERCOL = (byte*) 53280 (void()) main() -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@return (word) main::kaputt -(word) main::kaputt#0 kaputt zp[2]:10 2.0 +(word) main::kaputt#0 kaputt zp[2]:10 11.0 (dword) main::result -(dword) main::result#0 result zp[4]:2 4.0 +(dword) main::result#0 result zp[4]:2 22.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 22.0 +(byte~) mul16u::$1 reg byte a 2002.0 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:10 11.0 -(word) mul16u::a#2 a zp[2]:10 7.333333333333333 +(word) mul16u::a#0 a zp[2]:10 1001.0 +(word) mul16u::a#2 a zp[2]:10 667.3333333333334 (word) mul16u::b (const word) mul16u::b#0 b = (byte) $7b (dword) mul16u::mb -(dword) mul16u::mb#1 mb zp[4]:6 22.0 -(dword) mul16u::mb#2 mb zp[4]:6 4.714285714285714 +(dword) mul16u::mb#1 mb zp[4]:6 2002.0 +(dword) mul16u::mb#2 mb zp[4]:6 429.0 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:2 22.0 -(dword) mul16u::res#2 res zp[4]:2 5.833333333333333 -(dword) mul16u::res#6 res zp[4]:2 11.0 +(dword) mul16u::res#1 res zp[4]:2 2002.0 +(dword) mul16u::res#2 res zp[4]:2 502.33333333333337 +(dword) mul16u::res#6 res zp[4]:2 1001.0 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:2 4.0 +(dword) mul16u::return#2 return zp[4]:2 22.0 zp[4]:2 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 main::result#0 ] zp[4]:6 [ mul16u::mb#2 mul16u::mb#1 ] diff --git a/src/test/ref/loophead-problem-3.sym b/src/test/ref/loophead-problem-3.sym index 3f60cab9a..785795f59 100644 --- a/src/test/ref/loophead-problem-3.sym +++ b/src/test/ref/loophead-problem-3.sym @@ -4,35 +4,35 @@ (const byte*) BGCOL = (byte*) 53281 (const byte*) BORDERCOL = (byte*) 53280 (void()) main() -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@return (word) main::kaputt -(word) main::kaputt#0 kaputt zp[2]:10 2.0 +(word) main::kaputt#0 kaputt zp[2]:10 11.0 (dword) main::result -(dword) main::result#0 result zp[4]:2 4.0 +(dword) main::result#0 result zp[4]:2 22.0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 22.0 +(byte~) mul16u::$1 reg byte a 2002.0 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:10 11.0 -(word) mul16u::a#2 a zp[2]:10 7.333333333333333 +(word) mul16u::a#0 a zp[2]:10 1001.0 +(word) mul16u::a#2 a zp[2]:10 667.3333333333334 (word) mul16u::b (const word) mul16u::b#0 b = (byte) $7b (dword) mul16u::mb -(dword) mul16u::mb#1 mb zp[4]:6 22.0 -(dword) mul16u::mb#2 mb zp[4]:6 4.714285714285714 +(dword) mul16u::mb#1 mb zp[4]:6 2002.0 +(dword) mul16u::mb#2 mb zp[4]:6 429.0 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:2 22.0 -(dword) mul16u::res#2 res zp[4]:2 5.833333333333333 -(dword) mul16u::res#6 res zp[4]:2 11.0 +(dword) mul16u::res#1 res zp[4]:2 2002.0 +(dword) mul16u::res#2 res zp[4]:2 502.33333333333337 +(dword) mul16u::res#6 res zp[4]:2 1001.0 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:2 4.0 +(dword) mul16u::return#2 return zp[4]:2 22.0 zp[4]:2 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 main::result#0 ] zp[4]:6 [ mul16u::mb#2 mul16u::mb#1 ] diff --git a/src/test/ref/loophead-problem.log b/src/test/ref/loophead-problem.log index fdcf417ad..8d4031cc0 100644 --- a/src/test/ref/loophead-problem.log +++ b/src/test/ref/loophead-problem.log @@ -106,11 +106,11 @@ Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $29 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) opcode#1 = (byte) opcode#7 (byte) opcode#8 (byte) opcode#2 -Alias (byte) popup_selector::k#2 = (byte) popup_selector::k#3 -Alias (byte) opcode#12 = (byte) opcode#9 (byte) opcode#4 -Alias (byte) opcode#0 = (byte) opcode#11 -Alias (byte) opcode#10 = (byte) opcode#5 +Alias opcode#1 = opcode#7 opcode#8 opcode#2 +Alias popup_selector::k#2 = popup_selector::k#3 +Alias opcode#12 = opcode#9 opcode#4 +Alias opcode#0 = opcode#11 +Alias opcode#10 = opcode#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) opcode#6 (byte) opcode#0 Identical Phi Values (byte) opcode#1 (byte) opcode#12 @@ -205,11 +205,11 @@ popup_selector::@2: scope:[popup_selector] from popup_selector::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) opcode -(byte) opcode#12 0.5 +(byte) opcode#12 2.75 (void()) popup_selector() (byte) popup_selector::k -(byte) popup_selector::k#1 22.0 -(byte) popup_selector::k#2 14.666666666666666 +(byte) popup_selector::k#1 2002.0 +(byte) popup_selector::k#2 1334.6666666666667 Initial phi equivalence classes [ popup_selector::k#2 popup_selector::k#1 ] @@ -312,17 +312,17 @@ popup_selector: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen+(byte) $28) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) screen + (byte) popup_selector::k#2) ← (byte) 'b' [ popup_selector::k#2 ] ( main:2::popup_selector:5 [ popup_selector::k#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen+(byte) $28) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) screen + (byte) popup_selector::k#2) ← (byte) 'b' [ popup_selector::k#2 ] ( main:2::popup_selector:5 [ popup_selector::k#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ popup_selector::k#2 popup_selector::k#1 ] -Statement [4] *((const byte*) screen+(byte) $28) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) screen + (byte) popup_selector::k#2) ← (byte) 'b' [ popup_selector::k#2 ] ( main:2::popup_selector:5 [ popup_selector::k#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen+(byte) $28) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) screen + (byte) popup_selector::k#2) ← (byte) 'b' [ popup_selector::k#2 ] ( main:2::popup_selector:5 [ popup_selector::k#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ popup_selector::k#2 popup_selector::k#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ opcode#12 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [popup_selector] 36.67: zp[1]:2 [ popup_selector::k#2 popup_selector::k#1 ] -Uplift Scope [] 0.5: zp[1]:3 [ opcode#12 ] +Uplift Scope [popup_selector] 3,336.67: zp[1]:2 [ popup_selector::k#2 popup_selector::k#1 ] +Uplift Scope [] 2.75: zp[1]:3 [ opcode#12 ] Uplift Scope [main] Uplifting [popup_selector] best 394 combination reg byte x [ popup_selector::k#2 popup_selector::k#1 ] @@ -447,14 +447,14 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) opcode -(byte) opcode#12 reg byte a 0.5 +(byte) opcode#12 reg byte a 2.75 (void()) popup_selector() (label) popup_selector::@1 (label) popup_selector::@2 (label) popup_selector::@return (byte) popup_selector::k -(byte) popup_selector::k#1 reg byte x 22.0 -(byte) popup_selector::k#2 reg byte x 14.666666666666666 +(byte) popup_selector::k#1 reg byte x 2002.0 +(byte) popup_selector::k#2 reg byte x 1334.6666666666667 (const byte*) screen = (byte*) 1024 reg byte x [ popup_selector::k#2 popup_selector::k#1 ] diff --git a/src/test/ref/loophead-problem.sym b/src/test/ref/loophead-problem.sym index 37c4902b4..121867d94 100644 --- a/src/test/ref/loophead-problem.sym +++ b/src/test/ref/loophead-problem.sym @@ -5,14 +5,14 @@ (label) main::@1 (label) main::@return (byte) opcode -(byte) opcode#12 reg byte a 0.5 +(byte) opcode#12 reg byte a 2.75 (void()) popup_selector() (label) popup_selector::@1 (label) popup_selector::@2 (label) popup_selector::@return (byte) popup_selector::k -(byte) popup_selector::k#1 reg byte x 22.0 -(byte) popup_selector::k#2 reg byte x 14.666666666666666 +(byte) popup_selector::k#1 reg byte x 2002.0 +(byte) popup_selector::k#2 reg byte x 1334.6666666666667 (const byte*) screen = (byte*) 1024 reg byte x [ popup_selector::k#2 popup_selector::k#1 ] diff --git a/src/test/ref/loopmin.log b/src/test/ref/loopmin.log index b6574deef..c21fd373e 100644 --- a/src/test/ref/loopmin.log +++ b/src/test/ref/loopmin.log @@ -77,11 +77,11 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [4] (bool~) main::$1 ← (byte) main::i#2 <= (byte) 5 from [3] (bool~) main::$0 ← (byte) main::i#2 > (byte) 5 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::s#2 = (byte) main::s#3 -Alias (byte) main::i#2 = (byte) main::i#4 -Alias (byte) main::s#1 = (byte~) main::$2 +Alias main::s#2 = main::s#3 +Alias main::i#2 = main::i#4 +Alias main::s#1 = main::$2 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [4] if((byte) main::i#2<=(byte) 5) goto main::@2 Simple Condition (bool~) main::$3 [8] if((byte) main::i#1>(byte) 0) goto main::@1 @@ -163,12 +163,12 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::s -(byte) main::s#1 22.0 -(byte) main::s#2 16.5 -(byte) main::s#4 11.0 +(byte) main::s#1 202.0 +(byte) main::s#2 151.5 +(byte) main::s#4 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -256,14 +256,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) always clobbers reg byte a +Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) always clobbers reg byte a +Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::s#2 main::s#4 main::s#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 49.5: zp[1]:3 [ main::s#2 main::s#4 main::s#1 ] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 454.5: zp[1]:3 [ main::s#2 main::s#4 main::s#1 ] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 398 combination reg byte a [ main::s#2 main::s#4 main::s#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -379,12 +379,12 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::s -(byte) main::s#1 reg byte a 22.0 -(byte) main::s#2 reg byte a 16.5 -(byte) main::s#4 reg byte a 11.0 +(byte) main::s#1 reg byte a 202.0 +(byte) main::s#2 reg byte a 151.5 +(byte) main::s#4 reg byte a 101.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::s#2 main::s#4 main::s#1 ] diff --git a/src/test/ref/loopmin.sym b/src/test/ref/loopmin.sym index 8debc0c66..39e472fb5 100644 --- a/src/test/ref/loopmin.sym +++ b/src/test/ref/loopmin.sym @@ -7,12 +7,12 @@ (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::s -(byte) main::s#1 reg byte a 22.0 -(byte) main::s#2 reg byte a 16.5 -(byte) main::s#4 reg byte a 11.0 +(byte) main::s#1 reg byte a 202.0 +(byte) main::s#2 reg byte a 151.5 +(byte) main::s#4 reg byte a 101.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::s#2 main::s#4 main::s#1 ] diff --git a/src/test/ref/loopnest.log b/src/test/ref/loopnest.log index 16d3f991c..1ba27d41b 100644 --- a/src/test/ref/loopnest.log +++ b/src/test/ref/loopnest.log @@ -81,7 +81,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [5] if((byte) main::i#1>(byte) 0) goto main::@1 Simple Condition (bool~) nest::$0 [12] if((byte) nest::j#1>(byte) 0) goto nest::@1 @@ -166,12 +166,12 @@ nest::@return: scope:[nest] from nest::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (void()) nest() (byte) nest::j -(byte) nest::j#1 151.5 -(byte) nest::j#2 151.5 +(byte) nest::j#1 150001.5 +(byte) nest::j#2 150001.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -276,8 +276,8 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ nest::j#2 nest::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [nest] 303: zp[1]:3 [ nest::j#2 nest::j#1 ] -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [nest] 300,003: zp[1]:3 [ nest::j#2 nest::j#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [nest] best 2428 combination reg byte x [ nest::j#2 nest::j#1 ] @@ -412,14 +412,14 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (void()) nest() (label) nest::@1 (label) nest::@return (byte) nest::j -(byte) nest::j#1 reg byte x 151.5 -(byte) nest::j#2 reg byte x 151.5 +(byte) nest::j#1 reg byte x 150001.5 +(byte) nest::j#2 reg byte x 150001.5 reg byte y [ main::i#2 main::i#1 ] reg byte x [ nest::j#2 nest::j#1 ] diff --git a/src/test/ref/loopnest.sym b/src/test/ref/loopnest.sym index 086c99aeb..8a6fb4b2c 100644 --- a/src/test/ref/loopnest.sym +++ b/src/test/ref/loopnest.sym @@ -7,14 +7,14 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (void()) nest() (label) nest::@1 (label) nest::@return (byte) nest::j -(byte) nest::j#1 reg byte x 151.5 -(byte) nest::j#2 reg byte x 151.5 +(byte) nest::j#1 reg byte x 150001.5 +(byte) nest::j#2 reg byte x 150001.5 reg byte y [ main::i#2 main::i#1 ] reg byte x [ nest::j#2 nest::j#1 ] diff --git a/src/test/ref/loopnest2.log b/src/test/ref/loopnest2.log index b65536a03..2924c6074 100644 --- a/src/test/ref/loopnest2.log +++ b/src/test/ref/loopnest2.log @@ -187,11 +187,11 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte) nest1::j#2 = (byte) nest1::j#3 -Alias (byte) nest1::i#2 = (byte) nest1::i#3 (byte) nest1::i#4 -Alias (byte) nest2::i#2 = (byte) nest2::i#3 +Alias main::j#2 = main::j#3 +Alias main::i#2 = main::i#3 main::i#4 +Alias nest1::j#2 = nest1::j#3 +Alias nest1::i#2 = nest1::i#3 nest1::i#4 +Alias nest2::i#2 = nest2::i#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::i#2 (byte) main::i#5 Identical Phi Values (byte) nest1::i#2 (byte) nest1::i#5 @@ -349,25 +349,25 @@ nest2::@return: scope:[nest2] from nest2::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#5 4.4 +(byte) main::i#1 151.5 +(byte) main::i#5 40.4 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#2 101.0 +(byte) main::j#1 1501.5 +(byte) main::j#2 1001.0 (void()) nest1() (byte) nest1::i -(byte) nest1::i#1 1501.5 -(byte) nest1::i#5 400.4 +(byte) nest1::i#1 1.50000015E7 +(byte) nest1::i#5 4000000.4 (byte) nest1::j -(byte) nest1::j#1 15001.5 -(byte) nest1::j#2 10001.0 +(byte) nest1::j#1 1.500000015E8 +(byte) nest1::j#2 1.00000001E8 (void()) nest2() (byte) nest2::i -(byte) nest2::i#1 150001.5 -(byte) nest2::i#4 40000.4 +(byte) nest2::i#1 1.500000000000015E14 +(byte) nest2::i#4 4.00000000000004E13 (byte) nest2::j -(byte) nest2::j#1 1500001.5 -(byte) nest2::j#2 1500001.5 +(byte) nest2::j#1 1.5000000000000015E15 +(byte) nest2::j#2 1.5000000000000015E15 Initial phi equivalence classes [ main::i#5 main::i#1 ] @@ -584,9 +584,9 @@ Potential registers zp[1]:6 [ nest2::i#4 nest2::i#1 ] : zp[1]:6 , reg byte a , r Potential registers zp[1]:7 [ nest2::j#2 nest2::j#1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [nest2] 3,000,003: zp[1]:7 [ nest2::j#2 nest2::j#1 ] 190,001.9: zp[1]:6 [ nest2::i#4 nest2::i#1 ] -Uplift Scope [nest1] 25,002.5: zp[1]:5 [ nest1::j#2 nest1::j#1 ] 1,901.9: zp[1]:4 [ nest1::i#5 nest1::i#1 ] -Uplift Scope [main] 252.5: zp[1]:3 [ main::j#2 main::j#1 ] 20.9: zp[1]:2 [ main::i#5 main::i#1 ] +Uplift Scope [nest2] 3,000,000,000,000,003: zp[1]:7 [ nest2::j#2 nest2::j#1 ] 190,000,000,000,001.9: zp[1]:6 [ nest2::i#4 nest2::i#1 ] +Uplift Scope [nest1] 250,000,002.5: zp[1]:5 [ nest1::j#2 nest1::j#1 ] 19,000,001.9: zp[1]:4 [ nest1::i#5 nest1::i#1 ] +Uplift Scope [main] 2,502.5: zp[1]:3 [ main::j#2 main::j#1 ] 191.9: zp[1]:2 [ main::i#5 main::i#1 ] Uplift Scope [] Uplifting [nest2] best 23522243 combination reg byte y [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#4 nest2::i#1 ] @@ -856,11 +856,11 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#5 i zp[1]:2 4.4 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#5 i zp[1]:2 40.4 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 101.0 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 1001.0 (void()) nest1() (label) nest1::@1 (label) nest1::@2 @@ -868,22 +868,22 @@ FINAL SYMBOL TABLE (label) nest1::@4 (label) nest1::@return (byte) nest1::i -(byte) nest1::i#1 i zp[1]:4 1501.5 -(byte) nest1::i#5 i zp[1]:4 400.4 +(byte) nest1::i#1 i zp[1]:4 1.50000015E7 +(byte) nest1::i#5 i zp[1]:4 4000000.4 (byte) nest1::j -(byte) nest1::j#1 reg byte a 15001.5 -(byte) nest1::j#2 reg byte a 10001.0 +(byte) nest1::j#1 reg byte a 1.500000015E8 +(byte) nest1::j#2 reg byte a 1.00000001E8 (void()) nest2() (label) nest2::@1 (label) nest2::@2 (label) nest2::@3 (label) nest2::@return (byte) nest2::i -(byte) nest2::i#1 reg byte x 150001.5 -(byte) nest2::i#4 reg byte x 40000.4 +(byte) nest2::i#1 reg byte x 1.500000000000015E14 +(byte) nest2::i#4 reg byte x 4.00000000000004E13 (byte) nest2::j -(byte) nest2::j#1 reg byte y 1500001.5 -(byte) nest2::j#2 reg byte y 1500001.5 +(byte) nest2::j#1 reg byte y 1.5000000000000015E15 +(byte) nest2::j#2 reg byte y 1.5000000000000015E15 zp[1]:2 [ main::i#5 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] diff --git a/src/test/ref/loopnest2.sym b/src/test/ref/loopnest2.sym index d9d5060d8..56e8a8364 100644 --- a/src/test/ref/loopnest2.sym +++ b/src/test/ref/loopnest2.sym @@ -9,11 +9,11 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#5 i zp[1]:2 4.4 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#5 i zp[1]:2 40.4 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 101.0 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 1001.0 (void()) nest1() (label) nest1::@1 (label) nest1::@2 @@ -21,22 +21,22 @@ (label) nest1::@4 (label) nest1::@return (byte) nest1::i -(byte) nest1::i#1 i zp[1]:4 1501.5 -(byte) nest1::i#5 i zp[1]:4 400.4 +(byte) nest1::i#1 i zp[1]:4 1.50000015E7 +(byte) nest1::i#5 i zp[1]:4 4000000.4 (byte) nest1::j -(byte) nest1::j#1 reg byte a 15001.5 -(byte) nest1::j#2 reg byte a 10001.0 +(byte) nest1::j#1 reg byte a 1.500000015E8 +(byte) nest1::j#2 reg byte a 1.00000001E8 (void()) nest2() (label) nest2::@1 (label) nest2::@2 (label) nest2::@3 (label) nest2::@return (byte) nest2::i -(byte) nest2::i#1 reg byte x 150001.5 -(byte) nest2::i#4 reg byte x 40000.4 +(byte) nest2::i#1 reg byte x 1.500000000000015E14 +(byte) nest2::i#4 reg byte x 4.00000000000004E13 (byte) nest2::j -(byte) nest2::j#1 reg byte y 1500001.5 -(byte) nest2::j#2 reg byte y 1500001.5 +(byte) nest2::j#1 reg byte y 1.5000000000000015E15 +(byte) nest2::j#2 reg byte y 1.5000000000000015E15 zp[1]:2 [ main::i#5 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] diff --git a/src/test/ref/loopnest3.asm b/src/test/ref/loopnest3.asm index 60e020eb2..6bfa88305 100644 --- a/src/test/ref/loopnest3.asm +++ b/src/test/ref/loopnest3.asm @@ -3,21 +3,21 @@ .pc = $80d "Program" .label SCREEN = $400 main: { - ldy #0 + lda #0 __b1: // b(i) jsr b // for(byte i:0..100) - iny - cpy #$65 + clc + adc #1 + cmp #$65 bne __b1 // } rts } -// b(byte register(Y) i) +// b(byte register(A) i) b: { // c(i) - tya jsr c // } rts diff --git a/src/test/ref/loopnest3.log b/src/test/ref/loopnest3.log index bb734b0ff..cbf2f4809 100644 --- a/src/test/ref/loopnest3.log +++ b/src/test/ref/loopnest3.log @@ -98,7 +98,7 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) b::i#1 (byte) b::i#0 Identical Phi Values (byte) c::i#2 (byte) c::i#0 @@ -213,17 +213,17 @@ c::@return: scope:[c] from c::@1 VARIABLE REGISTER WEIGHTS (void()) b((byte) b::i) (byte) b::i -(byte) b::i#0 13.0 +(byte) b::i#0 1102.0 (void()) c((byte) c::i) (byte) c::i -(byte) c::i#0 17.166666666666664 +(byte) c::i#0 166833.6666666667 (byte) c::j -(byte) c::j#1 151.5 -(byte) c::j#2 151.5 +(byte) c::j#1 1500001.5 +(byte) c::j#2 1500001.5 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -359,15 +359,15 @@ Potential registers zp[1]:4 [ b::i#0 ] : zp[1]:4 , reg byte a , reg byte x , reg Potential registers zp[1]:5 [ c::i#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [c] 303: zp[1]:3 [ c::j#2 c::j#1 ] 17.17: zp[1]:5 [ c::i#0 ] -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [b] 13: zp[1]:4 [ b::i#0 ] +Uplift Scope [c] 3,000,003: zp[1]:3 [ c::j#2 c::j#1 ] 166,833.67: zp[1]:5 [ c::i#0 ] +Uplift Scope [b] 1,102: zp[1]:4 [ b::i#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [c] best 2707 combination reg byte x [ c::j#2 c::j#1 ] reg byte a [ c::i#0 ] -Uplifting [main] best 2587 combination reg byte y [ main::i#2 main::i#1 ] -Uplifting [b] best 2556 combination reg byte y [ b::i#0 ] -Uplifting [] best 2556 combination +Uplifting [b] best 2674 combination reg byte a [ b::i#0 ] +Uplifting [main] best 2574 combination reg byte a [ main::i#2 main::i#1 ] +Uplifting [] best 2574 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -397,8 +397,8 @@ __bend: main: { // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 jmp __b1 // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: @@ -412,10 +412,11 @@ main: { jmp __b2 // main::@2 __b2: - // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [9] if((byte) main::i#1!=(byte) $65) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$65 + // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::i#1!=(byte) $65) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$65 bne __b1_from___b2 jmp __breturn // main::@return @@ -424,10 +425,9 @@ main: { rts } // b -// b(byte register(Y) i) +// b(byte register(A) i) b: { - // [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy - tya + // [11] (byte) c::i#0 ← (byte) b::i#0 // [12] call c // [14] phi from b to c [phi:b->c] c_from_b: @@ -512,31 +512,31 @@ FINAL SYMBOL TABLE (void()) b((byte) b::i) (label) b::@return (byte) b::i -(byte) b::i#0 reg byte y 13.0 +(byte) b::i#0 reg byte a 1102.0 (void()) c((byte) c::i) (label) c::@1 (label) c::@return (byte) c::i -(byte) c::i#0 reg byte a 17.166666666666664 +(byte) c::i#0 reg byte a 166833.6666666667 (byte) c::j -(byte) c::j#1 reg byte x 151.5 -(byte) c::j#2 reg byte x 151.5 +(byte) c::j#1 reg byte x 1500001.5 +(byte) c::j#2 reg byte x 1500001.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte a 151.5 +(byte) main::i#2 reg byte a 101.0 -reg byte y [ main::i#2 main::i#1 ] +reg byte a [ main::i#2 main::i#1 ] reg byte x [ c::j#2 c::j#1 ] -reg byte y [ b::i#0 ] +reg byte a [ b::i#0 ] reg byte a [ c::i#0 ] FINAL ASSEMBLER -Score: 1521 +Score: 1539 // File Comments // Upstart @@ -555,8 +555,8 @@ Score: 1521 // main main: { // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy // main::@1 @@ -567,10 +567,11 @@ main: { jsr b // main::@2 // for(byte i:0..100) - // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [9] if((byte) main::i#1!=(byte) $65) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$65 + // [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuaa=_inc_vbuaa + clc + adc #1 + // [9] if((byte) main::i#1!=(byte) $65) goto main::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #$65 bne __b1 // main::@return // } @@ -578,11 +579,10 @@ main: { rts } // b -// b(byte register(Y) i) +// b(byte register(A) i) b: { // c(i) - // [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy - tya + // [11] (byte) c::i#0 ← (byte) b::i#0 // [12] call c // [14] phi from b to c [phi:b->c] jsr c diff --git a/src/test/ref/loopnest3.sym b/src/test/ref/loopnest3.sym index 6c6fc5f7c..21ecf4ab5 100644 --- a/src/test/ref/loopnest3.sym +++ b/src/test/ref/loopnest3.sym @@ -5,24 +5,24 @@ (void()) b((byte) b::i) (label) b::@return (byte) b::i -(byte) b::i#0 reg byte y 13.0 +(byte) b::i#0 reg byte a 1102.0 (void()) c((byte) c::i) (label) c::@1 (label) c::@return (byte) c::i -(byte) c::i#0 reg byte a 17.166666666666664 +(byte) c::i#0 reg byte a 166833.6666666667 (byte) c::j -(byte) c::j#1 reg byte x 151.5 -(byte) c::j#2 reg byte x 151.5 +(byte) c::j#1 reg byte x 1500001.5 +(byte) c::j#2 reg byte x 1500001.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte a 151.5 +(byte) main::i#2 reg byte a 101.0 -reg byte y [ main::i#2 main::i#1 ] +reg byte a [ main::i#2 main::i#1 ] reg byte x [ c::j#2 c::j#1 ] -reg byte y [ b::i#0 ] +reg byte a [ b::i#0 ] reg byte a [ c::i#0 ] diff --git a/src/test/ref/loopsplit.log b/src/test/ref/loopsplit.log index f98bdf684..8b95529b4 100644 --- a/src/test/ref/loopsplit.log +++ b/src/test/ref/loopsplit.log @@ -92,8 +92,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $32 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#1 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 -Alias (byte) main::s#3 = (byte) main::s#7 (byte) main::s#6 (byte) main::s#4 (byte) main::s#5 +Alias main::i#1 = main::i#3 main::i#4 main::i#5 +Alias main::s#3 = main::s#7 main::s#6 main::s#4 main::s#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [5] if((byte) main::i#1>(byte) 0) goto main::@2 Simple Condition (bool~) main::$1 [7] if((byte) main::i#1>(byte) $32) goto main::@4 @@ -177,12 +177,12 @@ main::@4: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 33.0 +(byte) main::i#1 101.0 +(byte) main::i#2 303.0 (byte) main::s -(byte) main::s#1 22.0 -(byte) main::s#2 22.0 -(byte) main::s#3 11.5 +(byte) main::s#1 202.0 +(byte) main::s#2 202.0 +(byte) main::s#3 103.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -279,7 +279,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::s#3 main::s#1 main::s#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 55.5: zp[1]:3 [ main::s#3 main::s#1 main::s#2 ] 44: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 507.75: zp[1]:3 [ main::s#3 main::s#1 main::s#2 ] 404: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 365 combination reg byte y [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ] @@ -404,12 +404,12 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 33.0 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 303.0 (byte) main::s -(byte) main::s#1 reg byte y 22.0 -(byte) main::s#2 reg byte y 22.0 -(byte) main::s#3 reg byte y 11.5 +(byte) main::s#1 reg byte y 202.0 +(byte) main::s#2 reg byte y 202.0 +(byte) main::s#3 reg byte y 103.75 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::s#3 main::s#1 main::s#2 ] diff --git a/src/test/ref/loopsplit.sym b/src/test/ref/loopsplit.sym index cee66f0d6..fc1dbf29f 100644 --- a/src/test/ref/loopsplit.sym +++ b/src/test/ref/loopsplit.sym @@ -10,12 +10,12 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 33.0 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 303.0 (byte) main::s -(byte) main::s#1 reg byte y 22.0 -(byte) main::s#2 reg byte y 22.0 -(byte) main::s#3 reg byte y 11.5 +(byte) main::s#1 reg byte y 202.0 +(byte) main::s#2 reg byte y 202.0 +(byte) main::s#3 reg byte y 103.75 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::s#3 main::s#1 main::s#2 ] diff --git a/src/test/ref/ma_coalesce_problem.log b/src/test/ref/ma_coalesce_problem.log index 7eb9c2d8b..1cf16df01 100644 --- a/src/test/ref/ma_coalesce_problem.log +++ b/src/test/ref/ma_coalesce_problem.log @@ -138,10 +138,10 @@ main::@3: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS -(byte) c1A loadstore 3.3000000000000003 = (byte) 0 +(byte) c1A loadstore 30.299999999999997 = (byte) 0 (void()) main() -(byte) main::c1a loadstore 52.33333333333333 -(byte) main::i loadstore 83.0 +(byte) main::c1a loadstore 517.3333333333334 +(byte) main::i loadstore 821.0 Initial phi equivalence classes Added variable main::c1a to live range equivalence class [ main::c1a ] @@ -235,19 +235,19 @@ SINTABLE: c1A: .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] (byte) main::c1a ← (byte) c1A [ main::c1a c1A ] ( main:2 [ main::c1a c1A ] ) always clobbers reg byte a -Statement [6] (byte) main::i ← (byte) 0 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] ) always clobbers reg byte a -Statement [7] if((byte) main::i<(byte) $28) goto main::@3 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] ) always clobbers reg byte a -Statement [8] (byte) c1A ← (byte) c1A + (byte) 3 [ c1A ] ( main:2 [ c1A ] ) always clobbers reg byte a reg byte x -Statement [9] *((const byte*) SCREEN + (byte) main::i) ← *((const byte*) SINTABLE + (byte) main::c1a) [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] ) always clobbers reg byte a reg byte y -Statement [10] (byte) main::c1a ← (byte) main::c1a + (byte) 4 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] ) always clobbers reg byte a reg byte x +Statement [5] (byte) main::c1a ← (byte) c1A [ main::c1a c1A ] ( main:2 [ main::c1a c1A ] { } ) always clobbers reg byte a +Statement [6] (byte) main::i ← (byte) 0 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] { } ) always clobbers reg byte a +Statement [7] if((byte) main::i<(byte) $28) goto main::@3 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] { } ) always clobbers reg byte a +Statement [8] (byte) c1A ← (byte) c1A + (byte) 3 [ c1A ] ( main:2 [ c1A ] { } ) always clobbers reg byte a reg byte x +Statement [9] *((const byte*) SCREEN + (byte) main::i) ← *((const byte*) SINTABLE + (byte) main::c1a) [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte) main::c1a ← (byte) main::c1a + (byte) 4 [ main::c1a c1A main::i ] ( main:2 [ main::c1a c1A main::i ] { } ) always clobbers reg byte a reg byte x Potential registers mem[1] [ main::c1a ] : mem[1] , Potential registers mem[1] [ main::i ] : mem[1] , Potential registers mem[1] [ c1A ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 83: mem[1] [ main::i ] 52.33: mem[1] [ main::c1a ] -Uplift Scope [] 3.3: mem[1] [ c1A ] +Uplift Scope [main] 821: mem[1] [ main::i ] 517.33: mem[1] [ main::c1a ] +Uplift Scope [] 30.3: mem[1] [ c1A ] Uplifting [main] best 5142 combination mem[1] [ main::i ] mem[1] [ main::c1a ] Uplifting [] best 5142 combination mem[1] [ c1A ] @@ -365,14 +365,14 @@ FINAL SYMBOL TABLE (const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++) .byte round(127.5+127.5*sin(2*PI*i/256)) }} -(byte) c1A loadstore mem[1] 3.3000000000000003 = (byte) 0 +(byte) c1A loadstore mem[1] 30.299999999999997 = (byte) 0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 -(byte) main::c1a loadstore mem[1] 52.33333333333333 -(byte) main::i loadstore mem[1] 83.0 +(byte) main::c1a loadstore mem[1] 517.3333333333334 +(byte) main::i loadstore mem[1] 821.0 mem[1] [ main::c1a ] mem[1] [ main::i ] diff --git a/src/test/ref/ma_coalesce_problem.sym b/src/test/ref/ma_coalesce_problem.sym index 5b436c242..590b43b88 100644 --- a/src/test/ref/ma_coalesce_problem.sym +++ b/src/test/ref/ma_coalesce_problem.sym @@ -5,14 +5,14 @@ (const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++) .byte round(127.5+127.5*sin(2*PI*i/256)) }} -(byte) c1A loadstore mem[1] 3.3000000000000003 = (byte) 0 +(byte) c1A loadstore mem[1] 30.299999999999997 = (byte) 0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 -(byte) main::c1a loadstore mem[1] 52.33333333333333 -(byte) main::i loadstore mem[1] 83.0 +(byte) main::c1a loadstore mem[1] 517.3333333333334 +(byte) main::i loadstore mem[1] 821.0 mem[1] [ main::c1a ] mem[1] [ main::i ] diff --git a/src/test/ref/malloc-0.log b/src/test/ref/malloc-0.log index 98b496553..84a04e86a 100644 --- a/src/test/ref/malloc-0.log +++ b/src/test/ref/malloc-0.log @@ -143,13 +143,13 @@ Simplifying constant integer cast $100 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $100 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#3 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#5 (byte*) heap_head#2 -Alias (byte*) heap_head#0 = (byte*) heap_head#7 -Alias (void*) malloc::return#2 = (void*) malloc::return#4 -Alias (byte*) heap_head#3 = (byte*) heap_head#6 -Alias (byte*) BYTES#0 = (byte*) BYTES#3 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#3 malloc::return#1 +Alias heap_head#1 = heap_head#5 heap_head#2 +Alias heap_head#0 = heap_head#7 +Alias malloc::return#2 = malloc::return#4 +Alias heap_head#3 = heap_head#6 +Alias BYTES#0 = BYTES#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) heap_head#4 (byte*) heap_head#0 Identical Phi Values (word) malloc::size#1 (word) malloc::size#0 @@ -264,8 +264,8 @@ VARIABLE REGISTER WEIGHTS (byte*) heap_head (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 (void*()) malloc((word) malloc::size) (byte*) malloc::mem (void*) malloc::return @@ -364,7 +364,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [malloc] Uplift Scope [RADIX] Uplift Scope [] @@ -497,8 +497,8 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem diff --git a/src/test/ref/malloc-0.sym b/src/test/ref/malloc-0.sym index 9b4194f84..523ff88b7 100644 --- a/src/test/ref/malloc-0.sym +++ b/src/test/ref/malloc-0.sym @@ -14,8 +14,8 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem diff --git a/src/test/ref/malloc-1.log b/src/test/ref/malloc-1.log index 2834c791f..2ae2a1f7b 100644 --- a/src/test/ref/malloc-1.log +++ b/src/test/ref/malloc-1.log @@ -150,13 +150,13 @@ Simplifying constant integer cast $200 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (word) $200 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#3 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#5 (byte*) heap_head#2 -Alias (byte*) heap_head#0 = (byte*) heap_head#7 -Alias (void*) malloc::return#2 = (void*) malloc::return#4 -Alias (byte*) heap_head#3 = (byte*) heap_head#6 -Alias (word*) WORDS#0 = (word*) WORDS#2 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#3 malloc::return#1 +Alias heap_head#1 = heap_head#5 heap_head#2 +Alias heap_head#0 = heap_head#7 +Alias malloc::return#2 = malloc::return#4 +Alias heap_head#3 = heap_head#6 +Alias WORDS#0 = WORDS#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) heap_head#4 (byte*) heap_head#0 Identical Phi Values (word) malloc::size#1 (word) malloc::size#0 @@ -277,11 +277,11 @@ VARIABLE REGISTER WEIGHTS (byte*) heap_head (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (word*) main::w -(word*) main::w#1 7.333333333333333 -(word*) main::w#2 16.5 +(word*) main::w#1 67.33333333333333 +(word*) main::w#2 151.5 (void*()) malloc((word) malloc::size) (byte*) malloc::mem (void*) malloc::return @@ -399,17 +399,17 @@ malloc: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((word*) main::w#2) ← (byte) main::i#2 [ main::i#2 main::w#2 ] ( main:4 [ main::i#2 main::w#2 ] ) always clobbers reg byte a reg byte y +Statement [8] *((word*) main::w#2) ← (byte) main::i#2 [ main::i#2 main::w#2 ] ( main:4 [ main::i#2 main::w#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (word*) main::w#1 ← (word*) main::w#2 + (const byte) SIZEOF_WORD [ main::i#2 main::w#1 ] ( main:4 [ main::i#2 main::w#1 ] ) always clobbers reg byte a -Statement [8] *((word*) main::w#2) ← (byte) main::i#2 [ main::i#2 main::w#2 ] ( main:4 [ main::i#2 main::w#2 ] ) always clobbers reg byte a reg byte y -Statement [9] (word*) main::w#1 ← (word*) main::w#2 + (const byte) SIZEOF_WORD [ main::i#2 main::w#1 ] ( main:4 [ main::i#2 main::w#1 ] ) always clobbers reg byte a +Statement [9] (word*) main::w#1 ← (word*) main::w#2 + (const byte) SIZEOF_WORD [ main::i#2 main::w#1 ] ( main:4 [ main::i#2 main::w#1 ] { } ) always clobbers reg byte a +Statement [8] *((word*) main::w#2) ← (byte) main::i#2 [ main::i#2 main::w#2 ] ( main:4 [ main::i#2 main::w#2 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (word*) main::w#1 ← (word*) main::w#2 + (const byte) SIZEOF_WORD [ main::i#2 main::w#1 ] ( main:4 [ main::i#2 main::w#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::w#2 main::w#1 ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 23.83: zp[2]:3 [ main::w#2 main::w#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 218.83: zp[2]:3 [ main::w#2 main::w#1 ] Uplift Scope [malloc] Uplift Scope [RADIX] Uplift Scope [] @@ -564,11 +564,11 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (word*) main::w -(word*) main::w#1 w zp[2]:2 7.333333333333333 -(word*) main::w#2 w zp[2]:2 16.5 +(word*) main::w#1 w zp[2]:2 67.33333333333333 +(word*) main::w#2 w zp[2]:2 151.5 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem diff --git a/src/test/ref/malloc-1.sym b/src/test/ref/malloc-1.sym index 9777eb3fb..ce7f16dd3 100644 --- a/src/test/ref/malloc-1.sym +++ b/src/test/ref/malloc-1.sym @@ -15,11 +15,11 @@ (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (word*) main::w -(word*) main::w#1 w zp[2]:2 7.333333333333333 -(word*) main::w#2 w zp[2]:2 16.5 +(word*) main::w#1 w zp[2]:2 67.33333333333333 +(word*) main::w#2 w zp[2]:2 151.5 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem diff --git a/src/test/ref/mem-alignment.log b/src/test/ref/mem-alignment.log index b6bcae073..a409737cf 100644 --- a/src/test/ref/mem-alignment.log +++ b/src/test/ref/mem-alignment.log @@ -155,14 +155,14 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 11.0 +(byte) main::i1#1 151.5 +(byte) main::i1#2 101.0 (byte) main::j -(byte) main::j#1 7.333333333333333 -(byte) main::j#2 16.5 +(byte) main::j#1 67.33333333333333 +(byte) main::j#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -270,16 +270,16 @@ main: { bs: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) main::cs + (byte) main::i1#2) ← *((const byte*) bs + (byte) main::j#2) [ main::j#2 main::i1#2 ] ( main:2 [ main::j#2 main::i1#2 ] ) always clobbers reg byte a +Statement [10] *((const byte*) main::cs + (byte) main::i1#2) ← *((const byte*) bs + (byte) main::j#2) [ main::j#2 main::i1#2 ] ( main:2 [ main::j#2 main::i1#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i1#2 main::i1#1 ] -Statement [10] *((const byte*) main::cs + (byte) main::i1#2) ← *((const byte*) bs + (byte) main::j#2) [ main::j#2 main::i1#2 ] ( main:2 [ main::j#2 main::i1#2 ] ) always clobbers reg byte a +Statement [10] *((const byte*) main::cs + (byte) main::i1#2) ← *((const byte*) bs + (byte) main::j#2) [ main::j#2 main::i1#2 ] ( main:2 [ main::j#2 main::i1#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::i1#2 main::i1#1 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] 27.5: zp[1]:4 [ main::i1#2 main::i1#1 ] 23.83: zp[1]:3 [ main::j#2 main::j#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] 252.5: zp[1]:4 [ main::i1#2 main::i1#1 ] 218.83: zp[1]:3 [ main::j#2 main::j#1 ] Uplift Scope [] Uplifting [main] best 543 combination reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::i1#2 main::i1#1 ] reg byte x [ main::j#2 main::j#1 ] @@ -407,14 +407,14 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::cs[(number) $100] = { fill( $100, 0) } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 11.0 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 101.0 (byte) main::j -(byte) main::j#1 reg byte x 7.333333333333333 -(byte) main::j#2 reg byte x 16.5 +(byte) main::j#1 reg byte x 67.33333333333333 +(byte) main::j#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/mem-alignment.sym b/src/test/ref/mem-alignment.sym index 5f98e360a..c6a712b24 100644 --- a/src/test/ref/mem-alignment.sym +++ b/src/test/ref/mem-alignment.sym @@ -8,14 +8,14 @@ (label) main::@return (const byte*) main::cs[(number) $100] = { fill( $100, 0) } (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 11.0 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 101.0 (byte) main::j -(byte) main::j#1 reg byte x 7.333333333333333 -(byte) main::j#2 reg byte x 16.5 +(byte) main::j#1 reg byte x 67.33333333333333 +(byte) main::j#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/memcpy-0.log b/src/test/ref/memcpy-0.log index 7ac9ed6d1..bba2195dc 100644 --- a/src/test/ref/memcpy-0.log +++ b/src/test/ref/memcpy-0.log @@ -247,14 +247,14 @@ Inferred type updated to byte in (unumber~) main::toD0181_$3 ← > (word~) main: Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4 Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 -Alias (byte*) memcpy::src_end#0 = (byte*~) memcpy::$1 -Alias (byte*) memcpy::src#2 = (byte*) memcpy::src#3 -Alias (byte*) memcpy::dst#2 = (byte*) memcpy::dst#3 -Alias (byte*) memcpy::src_end#1 = (byte*) memcpy::src_end#2 -Alias (void*) memcpy::destination#3 = (void*) memcpy::destination#5 (void*) memcpy::destination#4 (void*) memcpy::return#0 (void*) memcpy::return#4 (void*) memcpy::return#1 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 +Alias memcpy::src_end#0 = memcpy::$1 +Alias memcpy::src#2 = memcpy::src#3 +Alias memcpy::dst#2 = memcpy::dst#3 +Alias memcpy::src_end#1 = memcpy::src_end#2 +Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memcpy::src_end#1 (byte*) memcpy::src_end#0 Identical Phi Values (void*) memcpy::destination#3 (void*) memcpy::destination#2 @@ -419,20 +419,20 @@ VARIABLE REGISTER WEIGHTS (void*) memcpy::destination (void*) memcpy::destination#2 (byte*) memcpy::dst -(byte*) memcpy::dst#1 11.0 -(byte*) memcpy::dst#2 11.666666666666666 -(byte*) memcpy::dst#4 4.0 +(byte*) memcpy::dst#1 1001.0 +(byte*) memcpy::dst#2 1034.6666666666667 +(byte*) memcpy::dst#4 202.0 (word) memcpy::num -(word) memcpy::num#2 2.0 +(word) memcpy::num#2 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 (byte*) memcpy::src -(byte*) memcpy::src#1 22.0 -(byte*) memcpy::src#2 11.5 -(byte*) memcpy::src#4 2.0 +(byte*) memcpy::src#1 2002.0 +(byte*) memcpy::src#2 1026.25 +(byte*) memcpy::src#4 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 1.625 +(byte*) memcpy::src_end#0 137.75 Initial phi equivalence classes [ memcpy::source#2 ] @@ -637,14 +637,14 @@ memcpy: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:2::memcpy:10 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a -Statement [16] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:2::memcpy:10 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a -Statement [17] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a -Statement [19] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a -Statement [21] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:2::memcpy:10 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } ) always clobbers reg byte a +Statement [16] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:2::memcpy:10 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } ) always clobbers reg byte a +Statement [17] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } ) always clobbers reg byte a +Statement [19] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [21] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:10 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ memcpy::source#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ memcpy::destination#2 ] : zp[2]:4 , Potential registers zp[2]:6 [ memcpy::num#2 ] : zp[2]:6 , @@ -653,11 +653,11 @@ Potential registers zp[2]:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[ Potential registers zp[2]:12 [ memcpy::src_end#0 ] : zp[2]:12 , REGISTER UPLIFT SCOPES -Uplift Scope [memcpy] 35.5: zp[2]:8 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 26.67: zp[2]:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 2: zp[2]:6 [ memcpy::num#2 ] 1.62: zp[2]:12 [ memcpy::src_end#0 ] 0: zp[2]:2 [ memcpy::source#2 ] 0: zp[2]:4 [ memcpy::destination#2 ] +Uplift Scope [memcpy] 3,129.25: zp[2]:8 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 2,237.67: zp[2]:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 137.75: zp[2]:12 [ memcpy::src_end#0 ] 101: zp[2]:6 [ memcpy::num#2 ] 0: zp[2]:2 [ memcpy::source#2 ] 0: zp[2]:4 [ memcpy::destination#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [memcpy] best 869 combination zp[2]:8 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:6 [ memcpy::num#2 ] zp[2]:12 [ memcpy::src_end#0 ] zp[2]:2 [ memcpy::source#2 ] zp[2]:4 [ memcpy::destination#2 ] +Uplifting [memcpy] best 869 combination zp[2]:8 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:12 [ memcpy::src_end#0 ] zp[2]:6 [ memcpy::num#2 ] zp[2]:2 [ memcpy::source#2 ] zp[2]:4 [ memcpy::destination#2 ] Uplifting [main] best 869 combination Uplifting [] best 869 combination Coalescing zero page register [ zp[2]:2 [ memcpy::source#2 ] ] with [ zp[2]:8 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1 @@ -903,20 +903,20 @@ FINAL SYMBOL TABLE (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:4 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:4 11.0 -(byte*) memcpy::dst#2 dst zp[2]:4 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:4 4.0 +(byte*) memcpy::dst#1 dst zp[2]:4 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:4 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:4 202.0 (word) memcpy::num -(word) memcpy::num#2 num zp[2]:6 2.0 +(word) memcpy::num#2 num zp[2]:6 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:2 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:2 22.0 -(byte*) memcpy::src#2 src zp[2]:2 11.5 -(byte*) memcpy::src#4 src zp[2]:2 2.0 +(byte*) memcpy::src#1 src zp[2]:2 2002.0 +(byte*) memcpy::src#2 src zp[2]:2 1026.25 +(byte*) memcpy::src#4 src zp[2]:2 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:6 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:6 137.75 zp[2]:2 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:4 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] diff --git a/src/test/ref/memcpy-0.sym b/src/test/ref/memcpy-0.sym index fe6f86593..59c2452bd 100644 --- a/src/test/ref/memcpy-0.sym +++ b/src/test/ref/memcpy-0.sym @@ -26,20 +26,20 @@ (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:4 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:4 11.0 -(byte*) memcpy::dst#2 dst zp[2]:4 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:4 4.0 +(byte*) memcpy::dst#1 dst zp[2]:4 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:4 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:4 202.0 (word) memcpy::num -(word) memcpy::num#2 num zp[2]:6 2.0 +(word) memcpy::num#2 num zp[2]:6 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:2 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:2 22.0 -(byte*) memcpy::src#2 src zp[2]:2 11.5 -(byte*) memcpy::src#4 src zp[2]:2 2.0 +(byte*) memcpy::src#1 src zp[2]:2 2002.0 +(byte*) memcpy::src#2 src zp[2]:2 1026.25 +(byte*) memcpy::src#4 src zp[2]:2 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:6 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:6 137.75 zp[2]:2 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:4 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] diff --git a/src/test/ref/memcpy-1.log b/src/test/ref/memcpy-1.log index b6ac32ce0..f2fed16f3 100644 --- a/src/test/ref/memcpy-1.log +++ b/src/test/ref/memcpy-1.log @@ -223,11 +223,11 @@ Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) $32 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) memcpy::src_end#0 = (byte*~) memcpy::$1 -Alias (byte*) memcpy::src#2 = (byte*) memcpy::src#3 -Alias (byte*) memcpy::dst#2 = (byte*) memcpy::dst#3 -Alias (byte*) memcpy::src_end#1 = (byte*) memcpy::src_end#2 -Alias (void*) memcpy::destination#3 = (void*) memcpy::destination#5 (void*) memcpy::destination#4 (void*) memcpy::return#0 (void*) memcpy::return#4 (void*) memcpy::return#1 +Alias memcpy::src_end#0 = memcpy::$1 +Alias memcpy::src#2 = memcpy::src#3 +Alias memcpy::dst#2 = memcpy::dst#3 +Alias memcpy::src_end#1 = memcpy::src_end#2 +Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memcpy::src_end#1 (byte*) memcpy::src_end#0 Identical Phi Values (void*) memcpy::destination#3 (void*) memcpy::destination#2 @@ -413,41 +413,41 @@ memcpy::@2: scope:[memcpy] from memcpy::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::camelot -(byte*) main::camelot#1 7.333333333333333 -(byte*) main::camelot#2 11.0 +(byte*) main::camelot#1 67.33333333333333 +(byte*) main::camelot#2 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 5.5 +(byte) main::i1#1 151.5 +(byte) main::i1#2 50.5 (byte*) main::reigns -(byte*) main::reigns#1 7.333333333333333 -(byte*) main::reigns#2 11.0 +(byte*) main::reigns#1 67.33333333333333 +(byte*) main::reigns#2 101.0 (byte*) main::sc -(byte*) main::sc#1 5.5 -(byte*) main::sc#2 16.5 +(byte*) main::sc#1 50.5 +(byte*) main::sc#2 151.5 (byte*) main::sc2 -(byte*) main::sc2#1 5.5 -(byte*) main::sc2#2 16.5 +(byte*) main::sc2#1 50.5 +(byte*) main::sc2#2 151.5 (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) (void*) memcpy::destination (void*) memcpy::destination#2 (byte*) memcpy::dst -(byte*) memcpy::dst#1 11.0 -(byte*) memcpy::dst#2 11.666666666666666 -(byte*) memcpy::dst#4 4.0 +(byte*) memcpy::dst#1 1001.0 +(byte*) memcpy::dst#2 1034.6666666666667 +(byte*) memcpy::dst#4 202.0 (word) memcpy::num -(word) memcpy::num#2 2.0 +(word) memcpy::num#2 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 (byte*) memcpy::src -(byte*) memcpy::src#1 22.0 -(byte*) memcpy::src#2 11.5 -(byte*) memcpy::src#4 2.0 +(byte*) memcpy::src#1 2002.0 +(byte*) memcpy::src#2 1026.25 +(byte*) memcpy::src#4 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 1.625 +(byte*) memcpy::src_end#0 137.75 Initial phi equivalence classes [ main::camelot#2 main::camelot#1 ] @@ -744,24 +744,24 @@ memcpy: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::sc#2) ← *((byte*) main::camelot#2) [ main::camelot#2 main::sc#2 main::i#2 ] ( main:2 [ main::camelot#2 main::sc#2 main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::sc#2) ← *((byte*) main::camelot#2) [ main::camelot#2 main::sc#2 main::i#2 ] ( main:2 [ main::camelot#2 main::sc#2 main::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [12] *((byte*) main::sc2#2) ← *((byte*) main::reigns#2) [ main::reigns#2 main::sc2#2 main::i1#2 ] ( main:2 [ main::reigns#2 main::sc2#2 main::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) main::sc2#2) ← *((byte*) main::reigns#2) [ main::reigns#2 main::sc2#2 main::i1#2 ] ( main:2 [ main::reigns#2 main::sc2#2 main::i1#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:11 [ main::i1#2 main::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ main::i1#2 main::i1#1 ] -Statement [23] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:18 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:2::memcpy:20 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a -Statement [24] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:18 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:2::memcpy:20 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a -Statement [25] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a -Statement [27] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a -Statement [29] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [6] *((byte*) main::sc#2) ← *((byte*) main::camelot#2) [ main::camelot#2 main::sc#2 main::i#2 ] ( main:2 [ main::camelot#2 main::sc#2 main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*) main::sc2#2) ← *((byte*) main::reigns#2) [ main::reigns#2 main::sc2#2 main::i1#2 ] ( main:2 [ main::reigns#2 main::sc2#2 main::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [23] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:18 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:2::memcpy:20 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a -Statement [24] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:18 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:2::memcpy:20 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a -Statement [25] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a -Statement [27] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a -Statement [29] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [23] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:18 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:2::memcpy:20 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } ) always clobbers reg byte a +Statement [24] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:18 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:2::memcpy:20 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } ) always clobbers reg byte a +Statement [25] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } ) always clobbers reg byte a +Statement [27] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [29] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::sc#2) ← *((byte*) main::camelot#2) [ main::camelot#2 main::sc#2 main::i#2 ] ( main:2 [ main::camelot#2 main::sc#2 main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) main::sc2#2) ← *((byte*) main::reigns#2) [ main::reigns#2 main::sc2#2 main::i1#2 ] ( main:2 [ main::reigns#2 main::sc2#2 main::i1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [23] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) memcpy::num#2 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:18 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } main:2::memcpy:20 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { } ) always clobbers reg byte a +Statement [24] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:18 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } main:2::memcpy:20 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { } ) always clobbers reg byte a +Statement [25] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { } ) always clobbers reg byte a +Statement [27] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [29] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:18 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:2::memcpy:20 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::camelot#2 main::camelot#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sc#2 main::sc#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x , @@ -776,12 +776,12 @@ Potential registers zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[ Potential registers zp[2]:22 [ memcpy::src_end#0 ] : zp[2]:22 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[2]:4 [ main::sc#2 main::sc#1 ] 22: zp[1]:6 [ main::i#2 main::i#1 ] 22: zp[2]:9 [ main::sc2#2 main::sc2#1 ] 22: zp[1]:11 [ main::i1#2 main::i1#1 ] 18.33: zp[2]:2 [ main::camelot#2 main::camelot#1 ] 18.33: zp[2]:7 [ main::reigns#2 main::reigns#1 ] -Uplift Scope [memcpy] 35.5: zp[2]:18 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 26.67: zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 2: zp[2]:16 [ memcpy::num#2 ] 1.62: zp[2]:22 [ memcpy::src_end#0 ] 0: zp[2]:12 [ memcpy::source#2 ] 0: zp[2]:14 [ memcpy::destination#2 ] +Uplift Scope [memcpy] 3,129.25: zp[2]:18 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 2,237.67: zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 137.75: zp[2]:22 [ memcpy::src_end#0 ] 101: zp[2]:16 [ memcpy::num#2 ] 0: zp[2]:12 [ memcpy::source#2 ] 0: zp[2]:14 [ memcpy::destination#2 ] +Uplift Scope [main] 202: zp[2]:4 [ main::sc#2 main::sc#1 ] 202: zp[1]:6 [ main::i#2 main::i#1 ] 202: zp[2]:9 [ main::sc2#2 main::sc2#1 ] 202: zp[1]:11 [ main::i1#2 main::i1#1 ] 168.33: zp[2]:2 [ main::camelot#2 main::camelot#1 ] 168.33: zp[2]:7 [ main::reigns#2 main::reigns#1 ] Uplift Scope [] +Uplifting [memcpy] best 2494 combination zp[2]:18 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:22 [ memcpy::src_end#0 ] zp[2]:16 [ memcpy::num#2 ] zp[2]:12 [ memcpy::source#2 ] zp[2]:14 [ memcpy::destination#2 ] Uplifting [main] best 2314 combination zp[2]:4 [ main::sc#2 main::sc#1 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:9 [ main::sc2#2 main::sc2#1 ] reg byte x [ main::i1#2 main::i1#1 ] zp[2]:2 [ main::camelot#2 main::camelot#1 ] zp[2]:7 [ main::reigns#2 main::reigns#1 ] -Uplifting [memcpy] best 2314 combination zp[2]:18 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:16 [ memcpy::num#2 ] zp[2]:22 [ memcpy::src_end#0 ] zp[2]:12 [ memcpy::source#2 ] zp[2]:14 [ memcpy::destination#2 ] Uplifting [] best 2314 combination Coalescing zero page register [ zp[2]:12 [ memcpy::source#2 ] ] with [ zp[2]:18 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:14 [ memcpy::destination#2 ] ] with [ zp[2]:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1 @@ -1094,24 +1094,24 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte*) main::camelot -(byte*) main::camelot#1 camelot zp[2]:2 7.333333333333333 -(byte*) main::camelot#2 camelot zp[2]:2 11.0 +(byte*) main::camelot#1 camelot zp[2]:2 67.33333333333333 +(byte*) main::camelot#2 camelot zp[2]:2 101.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 5.5 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 50.5 (byte*) main::reigns (const byte*) main::reigns#0 reigns_1 = (byte*) "reigns" -(byte*) main::reigns#1 reigns zp[2]:6 7.333333333333333 -(byte*) main::reigns#2 reigns zp[2]:6 11.0 +(byte*) main::reigns#1 reigns zp[2]:6 67.33333333333333 +(byte*) main::reigns#2 reigns zp[2]:6 101.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:4 5.5 -(byte*) main::sc#2 sc zp[2]:4 16.5 +(byte*) main::sc#1 sc zp[2]:4 50.5 +(byte*) main::sc#2 sc zp[2]:4 151.5 (byte*) main::sc2 -(byte*) main::sc2#1 sc2 zp[2]:8 5.5 -(byte*) main::sc2#2 sc2 zp[2]:8 16.5 +(byte*) main::sc2#1 sc2 zp[2]:8 50.5 +(byte*) main::sc2#2 sc2 zp[2]:8 151.5 (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) (label) memcpy::@1 (label) memcpy::@2 @@ -1119,20 +1119,20 @@ FINAL SYMBOL TABLE (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:12 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:12 11.0 -(byte*) memcpy::dst#2 dst zp[2]:12 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:12 4.0 +(byte*) memcpy::dst#1 dst zp[2]:12 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:12 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:12 202.0 (word) memcpy::num -(word) memcpy::num#2 num zp[2]:14 2.0 +(word) memcpy::num#2 num zp[2]:14 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:10 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:10 22.0 -(byte*) memcpy::src#2 src zp[2]:10 11.5 -(byte*) memcpy::src#4 src zp[2]:10 2.0 +(byte*) memcpy::src#1 src zp[2]:10 2002.0 +(byte*) memcpy::src#2 src zp[2]:10 1026.25 +(byte*) memcpy::src#4 src zp[2]:10 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:14 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:14 137.75 zp[2]:2 [ main::camelot#2 main::camelot#1 ] zp[2]:4 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/memcpy-1.sym b/src/test/ref/memcpy-1.sym index 4f287869c..3827312d5 100644 --- a/src/test/ref/memcpy-1.sym +++ b/src/test/ref/memcpy-1.sym @@ -11,24 +11,24 @@ (label) main::@4 (label) main::@return (byte*) main::camelot -(byte*) main::camelot#1 camelot zp[2]:2 7.333333333333333 -(byte*) main::camelot#2 camelot zp[2]:2 11.0 +(byte*) main::camelot#1 camelot zp[2]:2 67.33333333333333 +(byte*) main::camelot#2 camelot zp[2]:2 101.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 5.5 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 50.5 (byte*) main::reigns (const byte*) main::reigns#0 reigns_1 = (byte*) "reigns" -(byte*) main::reigns#1 reigns zp[2]:6 7.333333333333333 -(byte*) main::reigns#2 reigns zp[2]:6 11.0 +(byte*) main::reigns#1 reigns zp[2]:6 67.33333333333333 +(byte*) main::reigns#2 reigns zp[2]:6 101.0 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:4 5.5 -(byte*) main::sc#2 sc zp[2]:4 16.5 +(byte*) main::sc#1 sc zp[2]:4 50.5 +(byte*) main::sc#2 sc zp[2]:4 151.5 (byte*) main::sc2 -(byte*) main::sc2#1 sc2 zp[2]:8 5.5 -(byte*) main::sc2#2 sc2 zp[2]:8 16.5 +(byte*) main::sc2#1 sc2 zp[2]:8 50.5 +(byte*) main::sc2#2 sc2 zp[2]:8 151.5 (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) (label) memcpy::@1 (label) memcpy::@2 @@ -36,20 +36,20 @@ (void*) memcpy::destination (void*) memcpy::destination#2 destination zp[2]:12 (byte*) memcpy::dst -(byte*) memcpy::dst#1 dst zp[2]:12 11.0 -(byte*) memcpy::dst#2 dst zp[2]:12 11.666666666666666 -(byte*) memcpy::dst#4 dst zp[2]:12 4.0 +(byte*) memcpy::dst#1 dst zp[2]:12 1001.0 +(byte*) memcpy::dst#2 dst zp[2]:12 1034.6666666666667 +(byte*) memcpy::dst#4 dst zp[2]:12 202.0 (word) memcpy::num -(word) memcpy::num#2 num zp[2]:14 2.0 +(word) memcpy::num#2 num zp[2]:14 101.0 (void*) memcpy::return (void*) memcpy::source (void*) memcpy::source#2 source zp[2]:10 (byte*) memcpy::src -(byte*) memcpy::src#1 src zp[2]:10 22.0 -(byte*) memcpy::src#2 src zp[2]:10 11.5 -(byte*) memcpy::src#4 src zp[2]:10 2.0 +(byte*) memcpy::src#1 src zp[2]:10 2002.0 +(byte*) memcpy::src#2 src zp[2]:10 1026.25 +(byte*) memcpy::src#4 src zp[2]:10 101.0 (byte*) memcpy::src_end -(byte*) memcpy::src_end#0 src_end zp[2]:14 1.625 +(byte*) memcpy::src_end#0 src_end zp[2]:14 137.75 zp[2]:2 [ main::camelot#2 main::camelot#1 ] zp[2]:4 [ main::sc#2 main::sc#1 ] diff --git a/src/test/ref/memory-heap.log b/src/test/ref/memory-heap.log index 4df8dbb5d..ef01b6982 100644 --- a/src/test/ref/memory-heap.log +++ b/src/test/ref/memory-heap.log @@ -238,19 +238,19 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$4 ← (byte) $ff - (byte) main::i#2 -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#4 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#8 (byte*) heap_head#2 -Alias (void*) malloc::return#2 = (void*) malloc::return#5 -Alias (byte*) heap_head#3 = (byte*) heap_head#9 -Alias (void*) malloc::return#3 = (void*) malloc::return#6 -Alias (byte*) main::buf1#0 = (byte*) main::buf1#4 -Alias (byte*) heap_head#10 = (byte*) heap_head#4 -Alias (byte*) main::buf1#1 = (byte*) main::buf1#2 (byte*) main::buf1#5 (byte*) main::buf1#3 -Alias (byte*) main::buf2#1 = (byte*) main::buf2#4 (byte*) main::buf2#2 (byte*) main::buf2#3 -Alias (byte*) heap_head#11 = (byte*) heap_head#17 (byte*) heap_head#18 (byte*) heap_head#16 (byte*) heap_head#14 (byte*) heap_head#5 -Alias (byte*) heap_head#0 = (byte*) heap_head#15 -Alias (byte*) heap_head#12 = (byte*) heap_head#6 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#4 malloc::return#1 +Alias heap_head#1 = heap_head#8 heap_head#2 +Alias malloc::return#2 = malloc::return#5 +Alias heap_head#3 = heap_head#9 +Alias malloc::return#3 = malloc::return#6 +Alias main::buf1#0 = main::buf1#4 +Alias heap_head#10 = heap_head#4 +Alias main::buf1#1 = main::buf1#2 main::buf1#5 main::buf1#3 +Alias main::buf2#1 = main::buf2#4 main::buf2#2 main::buf2#3 +Alias heap_head#11 = heap_head#17 heap_head#18 heap_head#16 heap_head#14 heap_head#5 +Alias heap_head#0 = heap_head#15 +Alias heap_head#12 = heap_head#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) heap_head#13 (byte*) heap_head#0 Identical Phi Values (byte*) heap_head#3 (byte*) heap_head#1 @@ -402,20 +402,20 @@ VARIABLE REGISTER WEIGHTS (void()) free((void*) free::ptr) (void*) free::ptr (byte*) heap_head -(byte*) heap_head#1 1.0 -(byte*) heap_head#7 4.0 +(byte*) heap_head#1 28.0 +(byte*) heap_head#7 112.0 (void()) main() -(byte~) main::$4 22.0 +(byte~) main::$4 202.0 (byte*) main::buf1 -(void*) main::buf1#0 0.15384615384615385 +(void*) main::buf1#0 0.8461538461538461 (byte*) main::buf2 -(void*) main::buf2#0 0.16666666666666666 +(void*) main::buf2#0 0.9166666666666666 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 16.5 +(byte) main::i#1 151.5 +(byte) main::i#2 151.5 (void*()) malloc((word) malloc::size) (byte*) malloc::mem -(byte*) malloc::mem#0 0.8 +(byte*) malloc::mem#0 40.4 (void*) malloc::return (word) malloc::size @@ -609,22 +609,22 @@ malloc: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (void*) main::buf1#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 heap_head#1 ] ( main:2 [ main::buf1#0 heap_head#1 ] ) always clobbers reg byte a -Statement [8] (void*) main::buf2#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$4 ← (byte) $ff - (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ) always clobbers reg byte a +Statement [6] (void*) main::buf1#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 heap_head#1 ] ( main:2 [ main::buf1#0 heap_head#1 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a +Statement [8] (void*) main::buf2#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$4 ← (byte) $ff - (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [19] *((const byte*) main::screen) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] ) always clobbers reg byte a reg byte y -Statement [20] *((const byte*) main::screen+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [25] (byte*) malloc::mem#0 ← (byte*) heap_head#7 - (byte) $64 [ malloc::mem#0 ] ( main:2::malloc:5 [ malloc::mem#0 ] main:2::malloc:7 [ main::buf1#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [26] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( main:2::malloc:5 [ malloc::mem#0 heap_head#1 ] main:2::malloc:7 [ main::buf1#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [6] (void*) main::buf1#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 heap_head#1 ] ( main:2 [ main::buf1#0 heap_head#1 ] ) always clobbers reg byte a -Statement [8] (void*) main::buf2#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] ) always clobbers reg byte a -Statement [10] *((byte*)(void*) main::buf1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$4 ← (byte) $ff - (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::screen) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] ) always clobbers reg byte a reg byte y -Statement [20] *((const byte*) main::screen+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [25] (byte*) malloc::mem#0 ← (byte*) heap_head#7 - (byte) $64 [ malloc::mem#0 ] ( main:2::malloc:5 [ malloc::mem#0 ] main:2::malloc:7 [ main::buf1#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [26] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( main:2::malloc:5 [ malloc::mem#0 heap_head#1 ] main:2::malloc:7 [ main::buf1#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a +Statement [19] *((const byte*) main::screen) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [20] *((const byte*) main::screen+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [25] (byte*) malloc::mem#0 ← (byte*) heap_head#7 - (byte) $64 [ malloc::mem#0 ] ( main:2::malloc:5 [ malloc::mem#0 ] { } main:2::malloc:7 [ main::buf1#0 malloc::mem#0 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a +Statement [26] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( main:2::malloc:5 [ malloc::mem#0 heap_head#1 ] { } main:2::malloc:7 [ main::buf1#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a +Statement [6] (void*) main::buf1#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 heap_head#1 ] ( main:2 [ main::buf1#0 heap_head#1 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a +Statement [8] (void*) main::buf2#0 ← (void*)(byte*) malloc::mem#0 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] { } ) always clobbers reg byte a +Statement [10] *((byte*)(void*) main::buf1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$4 ← (byte) $ff - (byte) main::i#2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] ( main:2 [ main::buf1#0 main::buf2#0 main::i#2 main::$4 ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) main::screen) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [20] *((const byte*) main::screen+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [25] (byte*) malloc::mem#0 ← (byte*) heap_head#7 - (byte) $64 [ malloc::mem#0 ] ( main:2::malloc:5 [ malloc::mem#0 ] { } main:2::malloc:7 [ main::buf1#0 malloc::mem#0 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a +Statement [26] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( main:2::malloc:5 [ malloc::mem#0 heap_head#1 ] { } main:2::malloc:7 [ main::buf1#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#7 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ heap_head#7 heap_head#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ main::buf1#0 ] : zp[2]:5 , @@ -633,9 +633,9 @@ Potential registers zp[1]:9 [ main::$4 ] : zp[1]:9 , reg byte a , reg byte x , r Potential registers zp[2]:10 [ malloc::mem#0 ] : zp[2]:10 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:9 [ main::$4 ] 0.17: zp[2]:7 [ main::buf2#0 ] 0.15: zp[2]:5 [ main::buf1#0 ] -Uplift Scope [] 5: zp[2]:3 [ heap_head#7 heap_head#1 ] -Uplift Scope [malloc] 0.8: zp[2]:10 [ malloc::mem#0 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:9 [ main::$4 ] 0.92: zp[2]:7 [ main::buf2#0 ] 0.85: zp[2]:5 [ main::buf1#0 ] +Uplift Scope [] 140: zp[2]:3 [ heap_head#7 heap_head#1 ] +Uplift Scope [malloc] 40.4: zp[2]:10 [ malloc::mem#0 ] Uplift Scope [free] Uplift Scope [RADIX] @@ -865,10 +865,10 @@ FINAL SYMBOL TABLE (label) free::@return (void*) free::ptr (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:2 1.0 -(byte*) heap_head#7 heap_head zp[2]:2 4.0 +(byte*) heap_head#1 heap_head zp[2]:2 28.0 +(byte*) heap_head#7 heap_head zp[2]:2 112.0 (void()) main() -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -877,17 +877,17 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte*) main::buf1 -(void*) main::buf1#0 buf1 zp[2]:4 0.15384615384615385 +(void*) main::buf1#0 buf1 zp[2]:4 0.8461538461538461 (byte*) main::buf2 -(void*) main::buf2#0 buf2 zp[2]:6 0.16666666666666666 +(void*) main::buf2#0 buf2 zp[2]:6 0.9166666666666666 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 16.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 151.5 (const byte*) main::screen = (byte*) 1024 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:6 0.8 +(byte*) malloc::mem#0 mem zp[2]:6 40.4 (void*) malloc::return (word) malloc::size diff --git a/src/test/ref/memory-heap.sym b/src/test/ref/memory-heap.sym index 4aa2ccf64..7e3bcb658 100644 --- a/src/test/ref/memory-heap.sym +++ b/src/test/ref/memory-heap.sym @@ -10,10 +10,10 @@ (label) free::@return (void*) free::ptr (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:2 1.0 -(byte*) heap_head#7 heap_head zp[2]:2 4.0 +(byte*) heap_head#1 heap_head zp[2]:2 28.0 +(byte*) heap_head#7 heap_head zp[2]:2 112.0 (void()) main() -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -22,17 +22,17 @@ (label) main::@6 (label) main::@return (byte*) main::buf1 -(void*) main::buf1#0 buf1 zp[2]:4 0.15384615384615385 +(void*) main::buf1#0 buf1 zp[2]:4 0.8461538461538461 (byte*) main::buf2 -(void*) main::buf2#0 buf2 zp[2]:6 0.16666666666666666 +(void*) main::buf2#0 buf2 zp[2]:6 0.9166666666666666 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 16.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 151.5 (const byte*) main::screen = (byte*) 1024 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:6 0.8 +(byte*) malloc::mem#0 mem zp[2]:6 40.4 (void*) malloc::return (word) malloc::size diff --git a/src/test/ref/millfork-benchmarks/linkedlist-kc.asm b/src/test/ref/millfork-benchmarks/linkedlist-kc.asm index 3dacaadcc..387fa63e3 100644 --- a/src/test/ref/millfork-benchmarks/linkedlist-kc.asm +++ b/src/test/ref/millfork-benchmarks/linkedlist-kc.asm @@ -124,12 +124,10 @@ print_ln: { print_word: { .label w = $e // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (word) print_word::w#0 [ print_char_cursor#10 print_word::w#0 print_byte::b#0 ] ( main:3::end:23::print_word:30 [ print_char_cursor#10 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:3::end:23::print_word:30 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::b#2 print_byte::$0 ] main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [13] if((word) main::i#2!=(word) $bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] { } ) always clobbers reg byte a +Statement [16] (word) sum::return#2 ← (word) sum::s#3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [17] (word~) main::$5 ← (word) sum::return#2 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } ) always clobbers reg byte a +Statement [18] (byte) print_char::ch#2 ← (byte)(word~) main::$5 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } ) always clobbers reg byte a +Statement [25] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#10 Ticks#1 ] ( main:3::end:23 [ last_time print_char_cursor#10 Ticks#1 ] { } ) always clobbers reg byte a +Statement [27] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#10 ] ( main:3::end:23 [ last_time print_char_cursor#10 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [28] (word) Ticks#12 ← (word) last_time [ print_char_cursor#10 Ticks#12 ] ( main:3::end:23 [ print_char_cursor#10 Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [29] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#10 print_word::w#0 ] ( main:3::end:23 [ print_char_cursor#10 print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [36] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [37] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::b#2 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#26) ← (byte) print_char::ch#3 [ print_char_cursor#26 ] ( main:3::print_char:19 [ last_time main::c#8 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:40::print_char:47 [ print_word::w#0 print_byte::b#2 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:42::print_char:47 [ print_byte::b#2 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:40::print_char:50 [ print_word::w#0 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:42::print_char:50 [ print_char_cursor#26 ] ) always clobbers reg byte y +Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [53] *((byte*) print_char_cursor#26) ← (byte) print_char::ch#3 [ print_char_cursor#26 ] ( main:3::print_char:19 [ last_time main::c#8 print_char_cursor#26 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } main:3::end:23::print_word:30::print_byte:40::print_char:47 [ print_word::w#0 print_byte::b#2 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42::print_char:47 [ print_byte::b#2 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:40::print_char:50 [ print_word::w#0 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42::print_char:50 [ print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::c#8 main::c#2 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [58] (struct node*) sum::current#1 ← (struct node*) root#11 [ sum::current#1 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] ) always clobbers reg byte a -Statement [60] if((struct node*)(word) 0!=(struct node*) sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] ) always clobbers reg byte a -Statement [62] (word) sum::s#2 ← (word) sum::s#3 + *((word*)(struct node*) sum::current#3 + (const byte) OFFSET_STRUCT_NODE_VALUE) [ sum::current#3 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] ) always clobbers reg byte a reg byte y -Statement [63] (struct node*) sum::current#2 ← *((struct node**)(struct node*) sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (struct node*) alloc::return#2 ← (struct node*) alloc::return#0 [ root#20 free_#13 prepend::x#0 alloc::return#2 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 alloc::return#2 ] ) always clobbers reg byte a -Statement [67] (struct node*) prepend::new#1 ← (struct node*) alloc::return#2 [ root#20 free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 prepend::new#1 ] ) always clobbers reg byte a -Statement [68] *((struct node**)(struct node*) prepend::new#1) ← (struct node*) root#20 [ free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::x#0 prepend::new#1 ] ) always clobbers reg byte a reg byte y -Statement [69] *((word*)(struct node*) prepend::new#1 + (const byte) OFFSET_STRUCT_NODE_VALUE) ← (word) prepend::x#0 [ free_#13 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::new#1 ] ) always clobbers reg byte a reg byte y -Statement [70] (struct node*) root#11 ← (struct node*) prepend::new#1 [ free_#13 root#11 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 root#11 ] ) always clobbers reg byte a -Statement [72] (word~) alloc::$1 ← (word) free_#22 << (byte) 2 [ free_#22 alloc::$1 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::$1 ] ) always clobbers reg byte a -Statement [73] (struct node*) alloc::return#0 ← (const struct node*) heap + (word~) alloc::$1 [ free_#22 alloc::return#0 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::return#0 ] ) always clobbers reg byte a -Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [10] (word) prepend::x#0 ← (word) main::i#3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#22 root#20 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#22 root#20 prepend::x#0 ] ) always clobbers reg byte a -Statement [13] if((word) main::i#2!=(word) $bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] ) always clobbers reg byte a -Statement [16] (word) sum::return#2 ← (word) sum::s#3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ) always clobbers reg byte a -Statement [17] (word~) main::$5 ← (word) sum::return#2 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ) always clobbers reg byte a -Statement [18] (byte) print_char::ch#2 ← (byte)(word~) main::$5 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ) always clobbers reg byte a -Statement [25] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#10 Ticks#1 ] ( main:3::end:23 [ last_time print_char_cursor#10 Ticks#1 ] ) always clobbers reg byte a -Statement [27] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#10 ] ( main:3::end:23 [ last_time print_char_cursor#10 ] ) always clobbers reg byte a -Statement [28] (word) Ticks#12 ← (word) last_time [ print_char_cursor#10 Ticks#12 ] ( main:3::end:23 [ print_char_cursor#10 Ticks#12 ] ) always clobbers reg byte a -Statement [29] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#10 print_word::w#0 ] ( main:3::end:23 [ print_char_cursor#10 print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [37] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#10 print_word::w#0 print_byte::b#0 ] ( main:3::end:23::print_word:30 [ print_char_cursor#10 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:3::end:23::print_word:30 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::b#2 print_byte::$0 ] main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#26) ← (byte) print_char::ch#3 [ print_char_cursor#26 ] ( main:3::print_char:19 [ last_time main::c#8 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:40::print_char:47 [ print_word::w#0 print_byte::b#2 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:42::print_char:47 [ print_byte::b#2 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:40::print_char:50 [ print_word::w#0 print_char_cursor#26 ] main:3::end:23::print_word:30::print_byte:42::print_char:50 [ print_char_cursor#26 ] ) always clobbers reg byte y +Statement [58] (struct node*) sum::current#1 ← (struct node*) root#11 [ sum::current#1 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [60] if((struct node*)(word) 0!=(struct node*) sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [62] (word) sum::s#2 ← (word) sum::s#3 + *((word*)(struct node*) sum::current#3 + (const byte) OFFSET_STRUCT_NODE_VALUE) [ sum::current#3 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y +Statement [63] (struct node*) sum::current#2 ← *((struct node**)(struct node*) sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y +Statement [66] (struct node*) alloc::return#2 ← (struct node*) alloc::return#0 [ root#20 free_#13 prepend::x#0 alloc::return#2 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a +Statement [67] (struct node*) prepend::new#1 ← (struct node*) alloc::return#2 [ root#20 free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a +Statement [68] *((struct node**)(struct node*) prepend::new#1) ← (struct node*) root#20 [ free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y +Statement [69] *((word*)(struct node*) prepend::new#1 + (const byte) OFFSET_STRUCT_NODE_VALUE) ← (word) prepend::x#0 [ free_#13 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y +Statement [70] (struct node*) root#11 ← (struct node*) prepend::new#1 [ free_#13 root#11 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 root#11 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a +Statement [72] (word~) alloc::$1 ← (word) free_#22 << (byte) 2 [ free_#22 alloc::$1 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::$1 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a +Statement [73] (struct node*) alloc::return#0 ← (const struct node*) heap + (word~) alloc::$1 [ free_#22 alloc::return#0 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::return#0 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [10] (word) prepend::x#0 ← (word) main::i#3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#22 root#20 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#22 root#20 prepend::x#0 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a +Statement [13] if((word) main::i#2!=(word) $bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#13 root#11 ] { } ) always clobbers reg byte a +Statement [16] (word) sum::return#2 ← (word) sum::s#3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [17] (word~) main::$5 ← (word) sum::return#2 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } ) always clobbers reg byte a +Statement [18] (byte) print_char::ch#2 ← (byte)(word~) main::$5 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } ) always clobbers reg byte a +Statement [25] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#10 Ticks#1 ] ( main:3::end:23 [ last_time print_char_cursor#10 Ticks#1 ] { } ) always clobbers reg byte a +Statement [27] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#10 ] ( main:3::end:23 [ last_time print_char_cursor#10 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [28] (word) Ticks#12 ← (word) last_time [ print_char_cursor#10 Ticks#12 ] ( main:3::end:23 [ print_char_cursor#10 Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [29] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#10 print_word::w#0 ] ( main:3::end:23 [ print_char_cursor#10 print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [36] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [37] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_char_cursor#10 print_line_cursor#1 ] ( main:3::end:23::print_ln:32 [ print_char_cursor#10 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::b#2 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::b#2 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:23::print_word:30::print_byte:40 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte a +Statement [53] *((byte*) print_char_cursor#26) ← (byte) print_char::ch#3 [ print_char_cursor#26 ] ( main:3::print_char:19 [ last_time main::c#8 print_char_cursor#26 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#26 = print_char_cursor#48 } } main:3::end:23::print_word:30::print_byte:40::print_char:47 [ print_word::w#0 print_byte::b#2 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42::print_char:47 [ print_byte::b#2 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:40::print_char:50 [ print_word::w#0 print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } main:3::end:23::print_word:30::print_byte:42::print_char:50 [ print_char_cursor#26 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#26 } } ) always clobbers reg byte y Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [58] (struct node*) sum::current#1 ← (struct node*) root#11 [ sum::current#1 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] ) always clobbers reg byte a -Statement [60] if((struct node*)(word) 0!=(struct node*) sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] ) always clobbers reg byte a -Statement [62] (word) sum::s#2 ← (word) sum::s#3 + *((word*)(struct node*) sum::current#3 + (const byte) OFFSET_STRUCT_NODE_VALUE) [ sum::current#3 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] ) always clobbers reg byte a reg byte y -Statement [63] (struct node*) sum::current#2 ← *((struct node**)(struct node*) sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (struct node*) alloc::return#2 ← (struct node*) alloc::return#0 [ root#20 free_#13 prepend::x#0 alloc::return#2 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 alloc::return#2 ] ) always clobbers reg byte a -Statement [67] (struct node*) prepend::new#1 ← (struct node*) alloc::return#2 [ root#20 free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 prepend::new#1 ] ) always clobbers reg byte a -Statement [68] *((struct node**)(struct node*) prepend::new#1) ← (struct node*) root#20 [ free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::x#0 prepend::new#1 ] ) always clobbers reg byte a reg byte y -Statement [69] *((word*)(struct node*) prepend::new#1 + (const byte) OFFSET_STRUCT_NODE_VALUE) ← (word) prepend::x#0 [ free_#13 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::new#1 ] ) always clobbers reg byte a reg byte y -Statement [70] (struct node*) root#11 ← (struct node*) prepend::new#1 [ free_#13 root#11 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 root#11 ] ) always clobbers reg byte a -Statement [72] (word~) alloc::$1 ← (word) free_#22 << (byte) 2 [ free_#22 alloc::$1 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::$1 ] ) always clobbers reg byte a -Statement [73] (struct node*) alloc::return#0 ← (const struct node*) heap + (word~) alloc::$1 [ free_#22 alloc::return#0 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::return#0 ] ) always clobbers reg byte a +Statement [58] (struct node*) sum::current#1 ← (struct node*) root#11 [ sum::current#1 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [60] if((struct node*)(word) 0!=(struct node*) sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [62] (word) sum::s#2 ← (word) sum::s#3 + *((word*)(struct node*) sum::current#3 + (const byte) OFFSET_STRUCT_NODE_VALUE) [ sum::current#3 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y +Statement [63] (struct node*) sum::current#2 ← *((struct node**)(struct node*) sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:15 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y +Statement [66] (struct node*) alloc::return#2 ← (struct node*) alloc::return#0 [ root#20 free_#13 prepend::x#0 alloc::return#2 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a +Statement [67] (struct node*) prepend::new#1 ← (struct node*) alloc::return#2 [ root#20 free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 free_#13 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a +Statement [68] *((struct node**)(struct node*) prepend::new#1) ← (struct node*) root#20 [ free_#13 prepend::x#0 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y +Statement [69] *((word*)(struct node*) prepend::new#1 + (const byte) OFFSET_STRUCT_NODE_VALUE) ← (word) prepend::x#0 [ free_#13 prepend::new#1 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y +Statement [70] (struct node*) root#11 ← (struct node*) prepend::new#1 [ free_#13 root#11 ] ( main:3::prepend:11 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#13 root#11 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a +Statement [72] (word~) alloc::$1 ← (word) free_#22 << (byte) 2 [ free_#22 alloc::$1 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::$1 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a +Statement [73] (struct node*) alloc::return#0 ← (const struct node*) heap + (word~) alloc::$1 [ free_#22 alloc::return#0 ] ( main:3::prepend:11::alloc:65 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#20 prepend::x#0 free_#22 alloc::return#0 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::c#8 main::c#2 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::i#3 main::i#2 ] : zp[2]:3 , Potential registers zp[2]:5 [ free_#22 free_#13 ] : zp[2]:5 , @@ -2053,14 +2049,14 @@ Potential registers zp[2]:39 [ alloc::$1 ] : zp[2]:39 , Potential registers zp[2]:41 [ alloc::return#0 ] : zp[2]:41 , REGISTER UPLIFT SCOPES -Uplift Scope [sum] 274: zp[2]:15 [ sum::current#3 sum::current#1 sum::current#2 ] 154.25: zp[2]:17 [ sum::s#3 sum::s#2 ] 22: zp[2]:23 [ sum::return#2 ] -Uplift Scope [main] 252.5: zp[2]:3 [ main::i#3 main::i#2 ] 18.19: zp[1]:2 [ main::c#8 main::c#2 ] 11: zp[2]:25 [ main::$5 ] -Uplift Scope [] 38.5: zp[2]:9 [ print_line_cursor#8 print_line_cursor#1 ] 34.67: zp[2]:7 [ root#20 root#11 ] 29.58: zp[2]:5 [ free_#22 free_#13 ] 12.27: zp[2]:13 [ print_char_cursor#26 print_char_cursor#48 print_char_cursor#10 ] 4: zp[2]:29 [ Ticks#12 ] 2: zp[2]:27 [ Ticks#1 ] 0.43: zp[2]:19 [ last_time ] -Uplift Scope [print_char] 47: zp[1]:12 [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [prepend] 17.17: zp[2]:21 [ prepend::x#0 ] 1.33: zp[2]:37 [ prepend::new#1 ] -Uplift Scope [print_byte] 10: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:33 [ print_byte::$0 ] 4: zp[1]:34 [ print_byte::$2 ] -Uplift Scope [alloc] 4: zp[2]:35 [ alloc::return#2 ] 4: zp[2]:39 [ alloc::$1 ] 1: zp[2]:41 [ alloc::return#0 ] -Uplift Scope [print_word] 2: zp[2]:31 [ print_word::w#0 ] +Uplift Scope [sum] 269,005: zp[2]:15 [ sum::current#3 sum::current#1 sum::current#2 ] 150,026.75: zp[2]:17 [ sum::s#3 sum::s#2 ] 202: zp[2]:23 [ sum::return#2 ] +Uplift Scope [alloc] 200,002: zp[2]:39 [ alloc::$1 ] 27,500.5: zp[2]:41 [ alloc::return#0 ] 20,002: zp[2]:35 [ alloc::return#2 ] +Uplift Scope [] 114,406.17: zp[2]:13 [ print_char_cursor#26 print_char_cursor#48 print_char_cursor#10 ] 48,617.43: zp[2]:5 [ free_#22 free_#13 ] 35,003.5: zp[2]:9 [ print_line_cursor#8 print_line_cursor#1 ] 3,834.17: zp[2]:7 [ root#20 root#11 ] 202: zp[2]:29 [ Ticks#12 ] 101: zp[2]:27 [ Ticks#1 ] 17.65: zp[2]:19 [ last_time ] +Uplift Scope [print_char] 160,310: zp[1]:12 [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:33 [ print_byte::$0 ] 20,002: zp[1]:34 [ print_byte::$2 ] 9,505: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [prepend] 6,667.33: zp[2]:37 [ prepend::new#1 ] 1,833.67: zp[2]:21 [ prepend::x#0 ] +Uplift Scope [main] 2,502.5: zp[2]:3 [ main::i#3 main::i#2 ] 167.04: zp[1]:2 [ main::c#8 main::c#2 ] 101: zp[2]:25 [ main::$5 ] +Uplift Scope [print_word] 701: zp[2]:31 [ print_word::w#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [start] @@ -2069,19 +2065,19 @@ Uplift Scope [node] Uplift Scope [init] Uplifting [sum] best 18534 combination zp[2]:15 [ sum::current#3 sum::current#1 sum::current#2 ] zp[2]:17 [ sum::s#3 sum::s#2 ] zp[2]:23 [ sum::return#2 ] -Uplifting [main] best 18444 combination zp[2]:3 [ main::i#3 main::i#2 ] reg byte x [ main::c#8 main::c#2 ] zp[2]:25 [ main::$5 ] -Uplifting [] best 18444 combination zp[2]:9 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:7 [ root#20 root#11 ] zp[2]:5 [ free_#22 free_#13 ] zp[2]:13 [ print_char_cursor#26 print_char_cursor#48 print_char_cursor#10 ] zp[2]:29 [ Ticks#12 ] zp[2]:27 [ Ticks#1 ] zp[2]:19 [ last_time ] -Uplifting [print_char] best 18405 combination reg byte a [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [prepend] best 18405 combination zp[2]:21 [ prepend::x#0 ] zp[2]:37 [ prepend::new#1 ] -Uplifting [print_byte] best 18391 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [alloc] best 18391 combination zp[2]:35 [ alloc::return#2 ] zp[2]:39 [ alloc::$1 ] zp[2]:41 [ alloc::return#0 ] -Uplifting [print_word] best 18391 combination zp[2]:31 [ print_word::w#0 ] -Uplifting [RADIX] best 18391 combination -Uplifting [print_ln] best 18391 combination -Uplifting [start] best 18391 combination -Uplifting [end] best 18391 combination -Uplifting [node] best 18391 combination -Uplifting [init] best 18391 combination +Uplifting [alloc] best 18534 combination zp[2]:39 [ alloc::$1 ] zp[2]:41 [ alloc::return#0 ] zp[2]:35 [ alloc::return#2 ] +Uplifting [] best 18534 combination zp[2]:13 [ print_char_cursor#26 print_char_cursor#48 print_char_cursor#10 ] zp[2]:5 [ free_#22 free_#13 ] zp[2]:9 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:7 [ root#20 root#11 ] zp[2]:29 [ Ticks#12 ] zp[2]:27 [ Ticks#1 ] zp[2]:19 [ last_time ] +Uplifting [print_char] best 18495 combination reg byte a [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 18477 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [prepend] best 18477 combination zp[2]:37 [ prepend::new#1 ] zp[2]:21 [ prepend::x#0 ] +Uplifting [main] best 18387 combination zp[2]:3 [ main::i#3 main::i#2 ] reg byte x [ main::c#8 main::c#2 ] zp[2]:25 [ main::$5 ] +Uplifting [print_word] best 18387 combination zp[2]:31 [ print_word::w#0 ] +Uplifting [RADIX] best 18387 combination +Uplifting [print_ln] best 18387 combination +Uplifting [start] best 18387 combination +Uplifting [end] best 18387 combination +Uplifting [node] best 18387 combination +Uplifting [init] best 18387 combination Coalescing zero page register [ zp[2]:3 [ main::i#3 main::i#2 ] ] with [ zp[2]:21 [ prepend::x#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:7 [ root#20 root#11 ] ] with [ zp[2]:15 [ sum::current#3 sum::current#1 sum::current#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:17 [ sum::s#3 sum::s#2 ] ] with [ zp[2]:23 [ sum::return#2 ] ] - score: 1 @@ -2343,8 +2339,7 @@ print_ln: { print_word: { .label w = $e // [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [40] call print_byte // [44] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -2354,8 +2349,7 @@ print_word: { // print_word::@1 __b1: // [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [42] call print_byte // [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2684,28 +2678,28 @@ FINAL SYMBOL TABLE (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (word) Ticks -(word) Ticks#1 Ticks zp[2]:12 2.0 -(word) Ticks#12 Ticks_1 zp[2]:14 4.0 +(word) Ticks#1 Ticks zp[2]:12 101.0 +(word) Ticks#12 Ticks_1 zp[2]:14 202.0 (struct node*()) alloc() -(word~) alloc::$1 zp[2]:16 4.0 +(word~) alloc::$1 zp[2]:16 200002.0 (label) alloc::@return (struct node*) alloc::result (struct node*) alloc::return -(struct node*) alloc::return#0 return zp[2]:16 1.0 -(struct node*) alloc::return#2 return zp[2]:16 4.0 +(struct node*) alloc::return#0 return zp[2]:16 27500.5 +(struct node*) alloc::return#2 return zp[2]:16 20002.0 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return (word) free_ -(word) free_#13 free_ zp[2]:2 8.583333333333332 -(word) free_#22 free_ zp[2]:2 20.999999999999996 +(word) free_#13 free_ zp[2]:2 8416.833333333332 +(word) free_#22 free_ zp[2]:2 40200.600000000006 (const struct node*) heap[(number) $fa0] = { fill( $fa0, 0) } (void()) init() (label) init::@return -(word) last_time loadstore zp[2]:10 0.43478260869565216 +(word) last_time loadstore zp[2]:10 17.652173913043477 (void()) main() -(word~) main::$5 zp[2]:12 11.0 +(word~) main::$5 zp[2]:12 101.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -2715,44 +2709,44 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (byte) main::c -(byte) main::c#2 reg byte x 16.5 -(byte) main::c#8 reg byte x 1.6923076923076923 +(byte) main::c#2 reg byte x 151.5 +(byte) main::c#8 reg byte x 15.538461538461538 (word) main::i -(word) main::i#2 i zp[2]:6 151.5 -(word) main::i#3 i zp[2]:6 101.0 +(word) main::i#2 i zp[2]:6 1501.5 +(word) main::i#3 i zp[2]:6 1001.0 (struct node*) node::next (word) node::value (void()) prepend((word) prepend::x) (label) prepend::@1 (label) prepend::@return (struct node*) prepend::new -(struct node*) prepend::new#1 new zp[2]:16 1.3333333333333333 +(struct node*) prepend::new#1 new zp[2]:16 6667.333333333333 (word) prepend::x -(word) prepend::x#0 x zp[2]:6 17.166666666666664 +(word) prepend::x#0 x zp[2]:6 1833.6666666666665 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 22.0 -(byte) print_char::ch#3 reg byte a 17.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 202.0 +(byte) print_char::ch#3 reg byte a 120104.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:8 0.9333333333333332 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 9.5 -(byte*) print_char_cursor#48 print_char_cursor zp[2]:8 1.8333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:8 4336.833333333334 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 110052.5 +(byte*) print_char_cursor#48 print_char_cursor zp[2]:8 16.833333333333332 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:6 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:6 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2761,10 +2755,10 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:14 2.0 +(word) print_word::w#0 w zp[2]:14 701.0 (struct node*) root -(struct node*) root#11 root zp[2]:4 17.499999999999996 -(struct node*) root#20 root zp[2]:4 17.166666666666664 +(struct node*) root#11 root zp[2]:4 2000.5 +(struct node*) root#20 root zp[2]:4 1833.6666666666665 (void()) start() (label) start::@return (const word*) start::LAST_TIME = &(word) last_time @@ -2773,14 +2767,14 @@ FINAL SYMBOL TABLE (label) sum::@2 (label) sum::@return (struct node*) sum::current -(struct node*) sum::current#1 current zp[2]:4 4.0 -(struct node*) sum::current#2 current zp[2]:4 202.0 -(struct node*) sum::current#3 current zp[2]:4 68.0 +(struct node*) sum::current#1 current zp[2]:4 2002.0 +(struct node*) sum::current#2 current zp[2]:4 200002.0 +(struct node*) sum::current#3 current zp[2]:4 67001.0 (word) sum::return -(word) sum::return#2 return zp[2]:12 22.0 +(word) sum::return#2 return zp[2]:12 202.0 (word) sum::s -(word) sum::s#2 s zp[2]:12 101.0 -(word) sum::s#3 s zp[2]:12 53.25 +(word) sum::s#2 s zp[2]:12 100001.0 +(word) sum::s#3 s zp[2]:12 50025.75 reg byte x [ main::c#8 main::c#2 ] zp[2]:2 [ free_#22 free_#13 ] @@ -2798,7 +2792,7 @@ zp[2]:16 [ alloc::return#2 prepend::new#1 alloc::return#0 alloc::$1 ] FINAL ASSEMBLER -Score: 14183 +Score: 14179 // File Comments // Upstart @@ -3009,8 +3003,7 @@ print_word: { .label w = $e // print_byte(>w) // [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [40] call print_byte // [44] phi from print_word to print_byte [phi:print_word->print_byte] // [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy @@ -3018,8 +3011,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/millfork-benchmarks/linkedlist-kc.sym b/src/test/ref/millfork-benchmarks/linkedlist-kc.sym index 4f42190d3..9d2ea2a24 100644 --- a/src/test/ref/millfork-benchmarks/linkedlist-kc.sym +++ b/src/test/ref/millfork-benchmarks/linkedlist-kc.sym @@ -8,28 +8,28 @@ (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (word) Ticks -(word) Ticks#1 Ticks zp[2]:12 2.0 -(word) Ticks#12 Ticks_1 zp[2]:14 4.0 +(word) Ticks#1 Ticks zp[2]:12 101.0 +(word) Ticks#12 Ticks_1 zp[2]:14 202.0 (struct node*()) alloc() -(word~) alloc::$1 zp[2]:16 4.0 +(word~) alloc::$1 zp[2]:16 200002.0 (label) alloc::@return (struct node*) alloc::result (struct node*) alloc::return -(struct node*) alloc::return#0 return zp[2]:16 1.0 -(struct node*) alloc::return#2 return zp[2]:16 4.0 +(struct node*) alloc::return#0 return zp[2]:16 27500.5 +(struct node*) alloc::return#2 return zp[2]:16 20002.0 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return (word) free_ -(word) free_#13 free_ zp[2]:2 8.583333333333332 -(word) free_#22 free_ zp[2]:2 20.999999999999996 +(word) free_#13 free_ zp[2]:2 8416.833333333332 +(word) free_#22 free_ zp[2]:2 40200.600000000006 (const struct node*) heap[(number) $fa0] = { fill( $fa0, 0) } (void()) init() (label) init::@return -(word) last_time loadstore zp[2]:10 0.43478260869565216 +(word) last_time loadstore zp[2]:10 17.652173913043477 (void()) main() -(word~) main::$5 zp[2]:12 11.0 +(word~) main::$5 zp[2]:12 101.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -39,44 +39,44 @@ (label) main::@7 (label) main::@return (byte) main::c -(byte) main::c#2 reg byte x 16.5 -(byte) main::c#8 reg byte x 1.6923076923076923 +(byte) main::c#2 reg byte x 151.5 +(byte) main::c#8 reg byte x 15.538461538461538 (word) main::i -(word) main::i#2 i zp[2]:6 151.5 -(word) main::i#3 i zp[2]:6 101.0 +(word) main::i#2 i zp[2]:6 1501.5 +(word) main::i#3 i zp[2]:6 1001.0 (struct node*) node::next (word) node::value (void()) prepend((word) prepend::x) (label) prepend::@1 (label) prepend::@return (struct node*) prepend::new -(struct node*) prepend::new#1 new zp[2]:16 1.3333333333333333 +(struct node*) prepend::new#1 new zp[2]:16 6667.333333333333 (word) prepend::x -(word) prepend::x#0 x zp[2]:6 17.166666666666664 +(word) prepend::x#0 x zp[2]:6 1833.6666666666665 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 22.0 -(byte) print_char::ch#3 reg byte a 17.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 202.0 +(byte) print_char::ch#3 reg byte a 120104.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:8 0.9333333333333332 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 9.5 -(byte*) print_char_cursor#48 print_char_cursor zp[2]:8 1.8333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:8 4336.833333333334 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 110052.5 +(byte*) print_char_cursor#48 print_char_cursor zp[2]:8 16.833333333333332 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:6 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:6 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -85,10 +85,10 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:14 2.0 +(word) print_word::w#0 w zp[2]:14 701.0 (struct node*) root -(struct node*) root#11 root zp[2]:4 17.499999999999996 -(struct node*) root#20 root zp[2]:4 17.166666666666664 +(struct node*) root#11 root zp[2]:4 2000.5 +(struct node*) root#20 root zp[2]:4 1833.6666666666665 (void()) start() (label) start::@return (const word*) start::LAST_TIME = &(word) last_time @@ -97,14 +97,14 @@ (label) sum::@2 (label) sum::@return (struct node*) sum::current -(struct node*) sum::current#1 current zp[2]:4 4.0 -(struct node*) sum::current#2 current zp[2]:4 202.0 -(struct node*) sum::current#3 current zp[2]:4 68.0 +(struct node*) sum::current#1 current zp[2]:4 2002.0 +(struct node*) sum::current#2 current zp[2]:4 200002.0 +(struct node*) sum::current#3 current zp[2]:4 67001.0 (word) sum::return -(word) sum::return#2 return zp[2]:12 22.0 +(word) sum::return#2 return zp[2]:12 202.0 (word) sum::s -(word) sum::s#2 s zp[2]:12 101.0 -(word) sum::s#3 s zp[2]:12 53.25 +(word) sum::s#2 s zp[2]:12 100001.0 +(word) sum::s#3 s zp[2]:12 50025.75 reg byte x [ main::c#8 main::c#2 ] zp[2]:2 [ free_#22 free_#13 ] diff --git a/src/test/ref/millfork-benchmarks/plasma-kc.asm b/src/test/ref/millfork-benchmarks/plasma-kc.asm index 3c41c2fbe..27b9b7c53 100644 --- a/src/test/ref/millfork-benchmarks/plasma-kc.asm +++ b/src/test/ref/millfork-benchmarks/plasma-kc.asm @@ -270,16 +270,14 @@ print_ln: { print_word: { .label w = $12 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 lda #<$400 sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 jsr print_byte // print_byte( (byte) makechar::s#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#42 (byte*) print_line_cursor#24 (byte*) print_char_cursor#41 (byte*) print_line_cursor#22 (byte*) print_char_cursor#38 (byte*) print_line_cursor#19 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#9 (byte*) print_char_cursor#1 (byte*) print_line_cursor#10 (byte*) print_char_cursor#18 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#3 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#4 (byte*) print_char_cursor#21 (byte*) print_char_cursor#5 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#6 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#24 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#9 -Alias (word) Ticks#1 = (word) Ticks#7 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#39 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#23 -Alias (word) Ticks#12 = (word) Ticks#15 (word) Ticks#2 (word) Ticks#8 (word) Ticks#3 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#27 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#12 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#28 (byte*) print_char_cursor#29 (byte*) print_char_cursor#13 -Alias (word) Ticks#0 = (word) Ticks#17 (word) Ticks#14 -Alias (byte) rand::return#0 = (byte~) rand::$0 (byte) rand::return#3 (byte) rand::return#1 -Alias (byte) doplasma::c1a#1 = (byte) doplasma::c1A#0 -Alias (byte) doplasma::c1b#1 = (byte) doplasma::c1B#0 -Alias (byte) doplasma::c1a#3 = (byte) doplasma::c1a#4 -Alias (byte) doplasma::c1b#3 = (byte) doplasma::c1b#4 -Alias (byte) doplasma::ii#3 = (byte) doplasma::ii#4 -Alias (byte) doplasma::c1A#2 = (byte) doplasma::c1A#4 (byte) doplasma::c1A#3 -Alias (byte) doplasma::c1B#2 = (byte) doplasma::c1B#4 (byte) doplasma::c1B#3 -Alias (byte) doplasma::c2A#2 = (byte) doplasma::c2A#6 (byte) doplasma::c2A#4 (byte) doplasma::c2a#1 -Alias (byte) doplasma::c2B#2 = (byte) doplasma::c2B#6 (byte) doplasma::c2B#4 (byte) doplasma::c2b#1 -Alias (byte*) doplasma::scrn#10 = (byte*) doplasma::scrn#14 (byte*) doplasma::scrn#12 -Alias (byte) doplasma::c2a#3 = (byte) doplasma::c2a#4 -Alias (byte) doplasma::c2b#3 = (byte) doplasma::c2b#4 -Alias (byte) doplasma::i#3 = (byte) doplasma::i#4 -Alias (byte) doplasma::c2A#3 = (byte) doplasma::c2A#7 (byte) doplasma::c2A#5 -Alias (byte) doplasma::c2B#3 = (byte) doplasma::c2B#7 (byte) doplasma::c2B#5 -Alias (byte*) doplasma::scrn#11 = (byte*) doplasma::scrn#9 (byte*) doplasma::scrn#8 -Alias (byte) doplasma::jj#3 = (byte) doplasma::jj#7 -Alias (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#7 -Alias (byte) doplasma::j#3 = (byte) doplasma::j#4 -Alias (byte) doplasma::jj#4 = (byte) doplasma::jj#6 (byte) doplasma::jj#5 -Alias (byte*) doplasma::scrn#3 = (byte*) doplasma::scrn#5 (byte*) doplasma::scrn#4 -Alias (word) makechar::c#3 = (word) makechar::c#4 -Alias (word) makechar::c#10 = (word) makechar::c#7 (word) makechar::c#5 -Alias (byte) makechar::i#3 = (byte) makechar::i#7 -Alias (byte) makechar::s#6 = (byte) makechar::s#7 -Alias (byte) makechar::s#2 = (byte) makechar::s#3 (byte) makechar::s#4 (byte) makechar::s#9 (byte) makechar::s#8 -Alias (byte) makechar::ii#3 = (byte) makechar::ii#7 (byte) makechar::ii#6 (byte) makechar::ii#5 -Alias (byte) makechar::b#3 = (byte) makechar::b#8 (byte) makechar::b#5 (byte) makechar::b#6 (byte) makechar::b#4 -Alias (word) makechar::c#11 = (word) makechar::c#13 (word) makechar::c#8 (word) makechar::c#12 (word) makechar::c#6 -Alias (byte) makechar::i#10 = (byte) makechar::i#5 (byte) makechar::i#9 (byte) makechar::i#4 (byte) makechar::i#8 -Alias (byte) rand::return#2 = (byte) rand::return#4 -Alias (word) main::count#0 = (word) main::count#6 (word) main::count#4 -Alias (word) Ticks#19 = (word) Ticks#20 (word) Ticks#22 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#47 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#29 -Alias (byte) main::tmp#1 = (byte~) main::$2 -Alias (word) main::count#2 = (word) main::count#7 (word) main::count#5 (word) main::count#3 -Alias (byte) main::v#2 = (byte) main::v#6 (byte) main::v#3 (byte) main::v#5 (byte) main::v#4 -Alias (byte) main::block#2 = (byte) main::block#6 (byte) main::block#3 (byte) main::block#5 (byte) main::block#4 -Alias (word) Ticks#13 = (word) Ticks#23 (word) Ticks#16 (word) Ticks#21 (word) Ticks#18 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#40 (byte*) print_char_cursor#46 (byte*) print_char_cursor#43 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#21 (byte*) print_line_cursor#28 (byte*) print_line_cursor#25 -Alias (word) Ticks#10 = (word) Ticks#4 (word) Ticks#9 (word) Ticks#5 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31 (byte*) print_char_cursor#15 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#14 (byte*) print_line_cursor#6 -Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1 -Alias (word) Ticks#11 = (word) Ticks#6 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#7 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#42 print_line_cursor#24 print_char_cursor#41 print_line_cursor#22 print_char_cursor#38 print_line_cursor#19 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#9 print_char_cursor#1 print_line_cursor#10 print_char_cursor#18 print_line_cursor#2 print_char_cursor#2 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#19 = print_char_cursor#3 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#20 = print_char_cursor#4 print_char_cursor#21 print_char_cursor#5 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#22 = print_char_cursor#6 +Alias print_char_cursor#23 = print_char_cursor#7 print_char_cursor#24 print_char_cursor#8 +Alias print_char_cursor#10 = print_char_cursor#26 print_char_cursor#9 +Alias Ticks#1 = Ticks#7 +Alias print_char_cursor#36 = print_char_cursor#39 +Alias print_line_cursor#17 = print_line_cursor#20 print_line_cursor#23 +Alias Ticks#12 = Ticks#15 Ticks#2 Ticks#8 Ticks#3 +Alias print_char_cursor#11 = print_char_cursor#27 +Alias print_line_cursor#11 = print_line_cursor#3 print_line_cursor#12 print_line_cursor#4 +Alias print_char_cursor#12 = print_char_cursor#28 print_char_cursor#29 print_char_cursor#13 +Alias Ticks#0 = Ticks#17 Ticks#14 +Alias rand::return#0 = rand::$0 rand::return#3 rand::return#1 +Alias doplasma::c1a#1 = doplasma::c1A#0 +Alias doplasma::c1b#1 = doplasma::c1B#0 +Alias doplasma::c1a#3 = doplasma::c1a#4 +Alias doplasma::c1b#3 = doplasma::c1b#4 +Alias doplasma::ii#3 = doplasma::ii#4 +Alias doplasma::c1A#2 = doplasma::c1A#4 doplasma::c1A#3 +Alias doplasma::c1B#2 = doplasma::c1B#4 doplasma::c1B#3 +Alias doplasma::c2A#2 = doplasma::c2A#6 doplasma::c2A#4 doplasma::c2a#1 +Alias doplasma::c2B#2 = doplasma::c2B#6 doplasma::c2B#4 doplasma::c2b#1 +Alias doplasma::scrn#10 = doplasma::scrn#14 doplasma::scrn#12 +Alias doplasma::c2a#3 = doplasma::c2a#4 +Alias doplasma::c2b#3 = doplasma::c2b#4 +Alias doplasma::i#3 = doplasma::i#4 +Alias doplasma::c2A#3 = doplasma::c2A#7 doplasma::c2A#5 +Alias doplasma::c2B#3 = doplasma::c2B#7 doplasma::c2B#5 +Alias doplasma::scrn#11 = doplasma::scrn#9 doplasma::scrn#8 +Alias doplasma::jj#3 = doplasma::jj#7 +Alias doplasma::scrn#6 = doplasma::scrn#7 +Alias doplasma::j#3 = doplasma::j#4 +Alias doplasma::jj#4 = doplasma::jj#6 doplasma::jj#5 +Alias doplasma::scrn#3 = doplasma::scrn#5 doplasma::scrn#4 +Alias makechar::c#3 = makechar::c#4 +Alias makechar::c#10 = makechar::c#7 makechar::c#5 +Alias makechar::i#3 = makechar::i#7 +Alias makechar::s#6 = makechar::s#7 +Alias makechar::s#2 = makechar::s#3 makechar::s#4 makechar::s#9 makechar::s#8 +Alias makechar::ii#3 = makechar::ii#7 makechar::ii#6 makechar::ii#5 +Alias makechar::b#3 = makechar::b#8 makechar::b#5 makechar::b#6 makechar::b#4 +Alias makechar::c#11 = makechar::c#13 makechar::c#8 makechar::c#12 makechar::c#6 +Alias makechar::i#10 = makechar::i#5 makechar::i#9 makechar::i#4 makechar::i#8 +Alias rand::return#2 = rand::return#4 +Alias main::count#0 = main::count#6 main::count#4 +Alias Ticks#19 = Ticks#20 Ticks#22 +Alias print_char_cursor#44 = print_char_cursor#45 print_char_cursor#47 +Alias print_line_cursor#26 = print_line_cursor#27 print_line_cursor#29 +Alias main::tmp#1 = main::$2 +Alias main::count#2 = main::count#7 main::count#5 main::count#3 +Alias main::v#2 = main::v#6 main::v#3 main::v#5 main::v#4 +Alias main::block#2 = main::block#6 main::block#3 main::block#5 main::block#4 +Alias Ticks#13 = Ticks#23 Ticks#16 Ticks#21 Ticks#18 +Alias print_char_cursor#37 = print_char_cursor#48 print_char_cursor#40 print_char_cursor#46 print_char_cursor#43 +Alias print_line_cursor#18 = print_line_cursor#30 print_line_cursor#21 print_line_cursor#28 print_line_cursor#25 +Alias Ticks#10 = Ticks#4 Ticks#9 Ticks#5 +Alias print_char_cursor#14 = print_char_cursor#30 print_char_cursor#31 print_char_cursor#15 +Alias print_line_cursor#13 = print_line_cursor#5 print_line_cursor#14 print_line_cursor#6 +Alias main::return#0 = main::return#3 main::return#1 +Alias Ticks#11 = Ticks#6 +Alias print_char_cursor#16 = print_char_cursor#32 +Alias print_line_cursor#15 = print_line_cursor#7 Successful SSA optimization Pass2AliasElimination -Alias (byte) makechar::ii#3 = (byte) makechar::ii#4 -Alias (word) makechar::c#11 = (word) makechar::c#9 -Alias (byte) makechar::i#10 = (byte) makechar::i#6 -Alias (byte) makechar::s#2 = (byte) makechar::s#5 +Alias makechar::ii#3 = makechar::ii#4 +Alias makechar::c#11 = makechar::c#9 +Alias makechar::i#10 = makechar::i#6 +Alias makechar::s#2 = makechar::s#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#17 Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#11 @@ -1407,7 +1407,7 @@ Successful SSA optimization PassNEliminateUnusedVars Simplifying constant integer cast (word)(const byte*) SCREEN1>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e Simplifying constant integer cast (word)(const byte*) SCREEN2>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e Successful SSA optimization PassNCastSimplification -Alias (byte) main::tmp#1 = (byte) main::tmp#2 +Alias main::tmp#1 = main::tmp#2 Successful SSA optimization Pass2AliasElimination Inlining constant with var siblings (const byte) doplasma::c1a#1 Inlining constant with var siblings (const byte) doplasma::c1b#1 @@ -1793,108 +1793,108 @@ rand::@return: scope:[rand] from rand VARIABLE REGISTER WEIGHTS (word) Ticks -(word) Ticks#1 2.0 -(word) Ticks#12 4.0 +(word) Ticks#1 101.0 +(word) Ticks#12 202.0 (void()) doplasma((byte*) doplasma::scrn) -(byte~) doplasma::$1 202.0 -(byte~) doplasma::$3 202.0 -(byte~) doplasma::$6 2002.0 +(byte~) doplasma::$1 200002.0 +(byte~) doplasma::$3 200002.0 +(byte~) doplasma::$6 2000002.0 (byte) doplasma::c1A (byte) doplasma::c1B (byte) doplasma::c1a -(byte) doplasma::c1a#2 67.33333333333333 -(byte) doplasma::c1a#3 75.75 +(byte) doplasma::c1a#2 66667.33333333333 +(byte) doplasma::c1a#3 75000.75 (byte) doplasma::c1b -(byte) doplasma::c1b#2 101.0 -(byte) doplasma::c1b#3 60.599999999999994 +(byte) doplasma::c1b#2 100001.0 +(byte) doplasma::c1b#3 60000.600000000006 (byte) doplasma::c2A (byte) doplasma::c2B (byte) doplasma::c2a -(byte) doplasma::c2a#2 67.33333333333333 -(byte) doplasma::c2a#3 75.75 +(byte) doplasma::c2a#2 66667.33333333333 +(byte) doplasma::c2a#3 75000.75 (byte) doplasma::c2b -(byte) doplasma::c2b#2 101.0 -(byte) doplasma::c2b#3 60.599999999999994 +(byte) doplasma::c2b#2 100001.0 +(byte) doplasma::c2b#3 60000.600000000006 (byte) doplasma::i -(byte) doplasma::i#2 202.0 -(byte) doplasma::i#3 67.33333333333333 +(byte) doplasma::i#2 200002.0 +(byte) doplasma::i#3 66667.33333333333 (byte) doplasma::ii -(byte) doplasma::ii#2 202.0 -(byte) doplasma::ii#3 67.33333333333333 +(byte) doplasma::ii#2 200002.0 +(byte) doplasma::ii#3 66667.33333333333 (byte) doplasma::j -(byte) doplasma::j#2 2002.0 -(byte) doplasma::j#3 1251.25 +(byte) doplasma::j#2 2000002.0 +(byte) doplasma::j#3 1250001.25 (byte) doplasma::jj -(byte) doplasma::jj#2 202.0 -(byte) doplasma::jj#3 163.0 +(byte) doplasma::jj#2 200002.0 +(byte) doplasma::jj#3 162500.5 (byte*) doplasma::scrn -(byte*) doplasma::scrn#0 101.0 -(byte*) doplasma::scrn#13 6.733333333333333 -(byte*) doplasma::scrn#6 186.28571428571428 +(byte*) doplasma::scrn#0 100001.0 +(byte*) doplasma::scrn#13 6666.733333333334 +(byte*) doplasma::scrn#6 185714.85714285713 (void()) end() -(word) last_time loadstore 0.41666666666666663 +(word) last_time loadstore 16.916666666666664 (signed word()) main() (byte) main::block -(byte) main::block#1 0.46153846153846156 +(byte) main::block#1 2.5384615384615383 (word) main::count -(word) main::count#1 22.0 -(word) main::count#2 4.714285714285714 +(word) main::count#1 202.0 +(word) main::count#2 43.285714285714285 (signed word) main::return (byte) main::tmp -(byte) main::tmp#1 4.0 +(byte) main::tmp#1 22.0 (byte) main::v -(byte) main::v#1 0.4444444444444444 +(byte) main::v#1 2.4444444444444446 (void()) makechar() -(byte~) makechar::$1 22.0 -(byte*~) makechar::$10 202.0 -(byte~) makechar::$4 2002.0 -(byte~) makechar::$5 2002.0 -(word~) makechar::$8 202.0 -(word~) makechar::$9 202.0 +(byte~) makechar::$1 2002.0 +(byte*~) makechar::$10 20002.0 +(byte~) makechar::$4 200002.0 +(byte~) makechar::$5 200002.0 +(word~) makechar::$8 20002.0 +(word~) makechar::$9 20002.0 (byte) makechar::b -(byte) makechar::b#2 2002.0 -(byte) makechar::b#3 282.1818181818182 -(byte) makechar::b#7 1501.5 +(byte) makechar::b#2 200002.0 +(byte) makechar::b#3 28182.181818181816 +(byte) makechar::b#7 150001.5 (word) makechar::c -(word) makechar::c#2 22.0 -(word) makechar::c#3 6.090909090909091 +(word) makechar::c#2 2002.0 +(word) makechar::c#3 591.090909090909 (byte) makechar::i -(byte) makechar::i#2 202.0 -(byte) makechar::i#3 23.764705882352942 +(byte) makechar::i#2 20002.0 +(byte) makechar::i#3 2353.176470588235 (byte) makechar::ii -(byte) makechar::ii#2 2002.0 -(byte) makechar::ii#3 400.4 +(byte) makechar::ii#2 200002.0 +(byte) makechar::ii#3 40000.4 (byte) makechar::s -(byte) makechar::s#1 53.26315789473684 +(byte) makechar::s#1 5315.894736842105 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 2002.0 +(byte) print_byte::b#2 5501.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 20002.0 +(byte) print_char::ch#1 20002.0 +(byte) print_char::ch#2 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 1.0 -(byte*) print_char_cursor#25 4.0 -(byte*) print_char_cursor#35 1.3333333333333333 +(byte*) print_char_cursor#10 7117.882352941177 +(byte*) print_char_cursor#25 110002.0 +(byte*) print_char_cursor#35 3667.333333333333 (byte*) print_line_cursor -(byte*) print_line_cursor#1 16.5 -(byte*) print_line_cursor#8 22.0 +(byte*) print_line_cursor#1 15001.5 +(byte*) print_line_cursor#8 20002.0 (void()) print_ln() (byte*) print_screen (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 701.0 (byte()) rand() (byte) rand::return -(byte) rand::return#0 334.33333333333337 -(byte) rand::return#2 2002.0 -(word) rand_seed loadstore 0.21428571428571427 +(byte) rand::return#0 366667.3333333334 +(byte) rand::return#2 200002.0 +(word) rand_seed loadstore 36.214285714285715 (void()) start() Initial phi equivalence classes @@ -2788,105 +2788,101 @@ rand: { bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] ) always clobbers reg byte a -Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] { } ) always clobbers reg byte a +Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ main::block#1 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ main::v#1 ] -Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a -Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a -Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] ) always clobbers reg byte a -Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] ) always clobbers reg byte a +Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a +Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] { } ) always clobbers reg byte a +Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ] -Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ) always clobbers reg byte a +Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ doplasma::j#3 doplasma::j#2 ] -Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ) always clobbers reg byte a +Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] -Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ) always clobbers reg byte a -Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ) always clobbers reg byte a -Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ) always clobbers reg byte a +Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] { } ) always clobbers reg byte a +Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] { } ) always clobbers reg byte a +Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] -Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ) always clobbers reg byte a -Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ) always clobbers reg byte a -Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] ) always clobbers reg byte a -Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] ) always clobbers reg byte a -Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] ) always clobbers reg byte a -Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:4::end:18::print_word:56 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:4::end:18::print_word:56 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a +Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] { } ) always clobbers reg byte a +Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] { } ) always clobbers reg byte a +Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] ) always clobbers reg byte y +Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] main:4::end:18::start:52 [ last_time Ticks#1 ] ) always clobbers reg byte a -Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] ) always clobbers reg byte a -Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] ) always clobbers reg byte a -Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ) always clobbers reg byte a +Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] { } main:4::end:18::start:52 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] { } ) always clobbers reg byte a +Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] { } ) always clobbers reg byte a +Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:44 [ makechar::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] -Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ) always clobbers reg byte a -Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ) always clobbers reg byte a -Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a reg byte y +Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] { } ) always clobbers reg byte a +Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] { } ) always clobbers reg byte a +Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:44 [ makechar::s#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ] -Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ) always clobbers reg byte a +Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] Statement asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:44 [ makechar::s#1 ] Removing always clobbered register reg byte x as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ] Removing always clobbered register reg byte x as potential for zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] Removing always clobbered register reg byte x as potential for zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] -Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] ) always clobbers reg byte a -Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] ) always clobbers reg byte a -Statement [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc [ last_time main::block#1 main::tmp#1 ] ( main:4 [ last_time main::block#1 main::tmp#1 ] ) always clobbers reg byte a -Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a -Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a -Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a -Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] ) always clobbers reg byte a -Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] ) always clobbers reg byte a -Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ) always clobbers reg byte a -Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ) always clobbers reg byte a -Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ) always clobbers reg byte a -Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ) always clobbers reg byte a -Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ) always clobbers reg byte a -Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ) always clobbers reg byte a -Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ) always clobbers reg byte a -Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] ) always clobbers reg byte a -Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] ) always clobbers reg byte a -Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] ) always clobbers reg byte a -Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:4::end:18::print_word:56 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:4::end:18::print_word:56 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a -Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] ) always clobbers reg byte y +Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] { } ) always clobbers reg byte a +Statement [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc [ last_time main::block#1 main::tmp#1 ] ( main:4 [ last_time main::block#1 main::tmp#1 ] { } ) always clobbers reg byte a +Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] { } ) always clobbers reg byte a +Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] { } ) always clobbers reg byte a +Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] { } ) always clobbers reg byte a +Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] { } ) always clobbers reg byte a +Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] { } ) always clobbers reg byte a +Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] { } ) always clobbers reg byte a +Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] { } ) always clobbers reg byte a +Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] { } ) always clobbers reg byte a +Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] { } ) always clobbers reg byte a +Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] { } main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] { } ) always clobbers reg byte a +Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] main:4::end:18::start:52 [ last_time Ticks#1 ] ) always clobbers reg byte a -Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] ) always clobbers reg byte a -Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] ) always clobbers reg byte a -Statement [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) [ rand_seed makechar::c#3 makechar::s#1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 ] ) always clobbers reg byte a -Statement [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a -Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ) always clobbers reg byte a -Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ) always clobbers reg byte a -Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ) always clobbers reg byte a -Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a reg byte y -Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ) always clobbers reg byte a +Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] { } main:4::end:18::start:52 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] { } ) always clobbers reg byte a +Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] { } ) always clobbers reg byte a +Statement [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) [ rand_seed makechar::c#3 makechar::s#1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 ] { } ) always clobbers reg byte a +Statement [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] { } ) always clobbers reg byte a +Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] { } ) always clobbers reg byte a +Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] { } ) always clobbers reg byte a +Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] { } ) always clobbers reg byte a +Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] { } ) always clobbers reg byte a reg byte y +Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] { } ) always clobbers reg byte a Statement asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 } always clobbers reg byte a reg byte x -Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] ) always clobbers reg byte a +Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::count#2 main::count#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] : zp[1]:5 , reg byte x , reg byte y , @@ -2929,61 +2925,61 @@ Potential registers zp[1]:53 [ makechar::$5 ] : zp[1]:53 , reg byte a , reg byte Potential registers zp[1]:54 [ rand::return#0 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makechar] 3,785.68: zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] 2,402.4: zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] 2,002: zp[1]:52 [ makechar::$4 ] 2,002: zp[1]:53 [ makechar::$5 ] 225.76: zp[1]:22 [ makechar::i#3 makechar::i#2 ] 202: zp[2]:45 [ makechar::$8 ] 202: zp[2]:47 [ makechar::$9 ] 202: zp[2]:49 [ makechar::$10 ] 53.26: zp[1]:44 [ makechar::s#1 ] 28.09: zp[2]:20 [ makechar::c#3 makechar::c#2 ] 22: zp[1]:43 [ makechar::$1 ] -Uplift Scope [doplasma] 3,253.25: zp[1]:13 [ doplasma::j#3 doplasma::j#2 ] 2,002: zp[1]:32 [ doplasma::$6 ] 365: zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ] 294.02: zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] 269.33: zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] 269.33: zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] 202: zp[1]:33 [ doplasma::$3 ] 202: zp[1]:34 [ doplasma::$1 ] 161.6: zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] 161.6: zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] 143.08: zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] 143.08: zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] -Uplift Scope [rand] 2,002: zp[1]:51 [ rand::return#2 ] 334.33: zp[1]:54 [ rand::return#0 ] -Uplift Scope [] 38.5: zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] 6.33: zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] 4: zp[2]:37 [ Ticks#12 ] 2: zp[2]:35 [ Ticks#1 ] 0.42: zp[2]:25 [ last_time ] 0.21: zp[2]:27 [ rand_seed ] -Uplift Scope [main] 26.71: zp[2]:2 [ main::count#2 main::count#1 ] 4: zp[1]:30 [ main::tmp#1 ] 0.46: zp[1]:29 [ main::block#1 ] 0.44: zp[1]:31 [ main::v#1 ] -Uplift Scope [print_byte] 10: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:41 [ print_byte::$0 ] 4: zp[1]:42 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:17 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word] 2: zp[2]:39 [ print_word::w#0 ] +Uplift Scope [doplasma] 3,250,003.25: zp[1]:13 [ doplasma::j#3 doplasma::j#2 ] 2,000,002: zp[1]:32 [ doplasma::$6 ] 362,502.5: zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ] 292,382.59: zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] 266,669.33: zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] 266,669.33: zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] 200,002: zp[1]:33 [ doplasma::$3 ] 200,002: zp[1]:34 [ doplasma::$1 ] 160,001.6: zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] 160,001.6: zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] 141,668.08: zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] 141,668.08: zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] +Uplift Scope [makechar] 378,185.68: zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] 240,002.4: zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] 200,002: zp[1]:52 [ makechar::$4 ] 200,002: zp[1]:53 [ makechar::$5 ] 22,355.18: zp[1]:22 [ makechar::i#3 makechar::i#2 ] 20,002: zp[2]:45 [ makechar::$8 ] 20,002: zp[2]:47 [ makechar::$9 ] 20,002: zp[2]:49 [ makechar::$10 ] 5,315.89: zp[1]:44 [ makechar::s#1 ] 2,593.09: zp[2]:20 [ makechar::c#3 makechar::c#2 ] 2,002: zp[1]:43 [ makechar::$1 ] +Uplift Scope [rand] 366,667.33: zp[1]:54 [ rand::return#0 ] 200,002: zp[1]:51 [ rand::return#2 ] +Uplift Scope [print_char] 160,007: zp[1]:17 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 120,787.22: zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] 35,003.5: zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] 202: zp[2]:37 [ Ticks#12 ] 101: zp[2]:35 [ Ticks#1 ] 36.21: zp[2]:27 [ rand_seed ] 16.92: zp[2]:25 [ last_time ] +Uplift Scope [print_byte] 20,002: zp[1]:41 [ print_byte::$0 ] 20,002: zp[1]:42 [ print_byte::$2 ] 9,505: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 701: zp[2]:39 [ print_word::w#0 ] +Uplift Scope [main] 245.29: zp[2]:2 [ main::count#2 main::count#1 ] 22: zp[1]:30 [ main::tmp#1 ] 2.54: zp[1]:29 [ main::block#1 ] 2.44: zp[1]:31 [ main::v#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [start] Uplift Scope [end] -Uplifting [makechar] best 165885 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] reg byte y [ makechar::ii#3 makechar::ii#2 ] reg byte a [ makechar::$4 ] zp[1]:53 [ makechar::$5 ] zp[1]:22 [ makechar::i#3 makechar::i#2 ] zp[2]:45 [ makechar::$8 ] zp[2]:47 [ makechar::$9 ] zp[2]:49 [ makechar::$10 ] zp[1]:44 [ makechar::s#1 ] zp[2]:20 [ makechar::c#3 makechar::c#2 ] reg byte a [ makechar::$1 ] -Limited combination testing to 100 combinations of 256 possible. -Uplifting [doplasma] best 140985 combination reg byte y [ doplasma::j#3 doplasma::j#2 ] reg byte a [ doplasma::$6 ] reg byte x [ doplasma::jj#3 doplasma::jj#2 ] zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] zp[1]:33 [ doplasma::$3 ] zp[1]:34 [ doplasma::$1 ] zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] +Uplifting [doplasma] best 159025 combination reg byte y [ doplasma::j#3 doplasma::j#2 ] reg byte a [ doplasma::$6 ] reg byte x [ doplasma::jj#3 doplasma::jj#2 ] zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] zp[1]:33 [ doplasma::$3 ] zp[1]:34 [ doplasma::$1 ] zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] Limited combination testing to 100 combinations of 419904 possible. -Uplifting [rand] best 131982 combination reg byte a [ rand::return#2 ] reg byte a [ rand::return#0 ] -Uplifting [] best 131982 combination zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] zp[2]:37 [ Ticks#12 ] zp[2]:35 [ Ticks#1 ] zp[2]:25 [ last_time ] zp[2]:27 [ rand_seed ] -Uplifting [main] best 131976 combination zp[2]:2 [ main::count#2 main::count#1 ] reg byte a [ main::tmp#1 ] zp[1]:29 [ main::block#1 ] zp[1]:31 [ main::v#1 ] -Uplifting [print_byte] best 131962 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 131953 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word] best 131953 combination zp[2]:39 [ print_word::w#0 ] -Uplifting [RADIX] best 131953 combination -Uplifting [print_ln] best 131953 combination -Uplifting [start] best 131953 combination -Uplifting [end] best 131953 combination +Uplifting [makechar] best 140985 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] reg byte y [ makechar::ii#3 makechar::ii#2 ] reg byte a [ makechar::$4 ] zp[1]:53 [ makechar::$5 ] zp[1]:22 [ makechar::i#3 makechar::i#2 ] zp[2]:45 [ makechar::$8 ] zp[2]:47 [ makechar::$9 ] zp[2]:49 [ makechar::$10 ] zp[1]:44 [ makechar::s#1 ] zp[2]:20 [ makechar::c#3 makechar::c#2 ] reg byte a [ makechar::$1 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [rand] best 131982 combination reg byte a [ rand::return#0 ] reg byte a [ rand::return#2 ] +Uplifting [print_char] best 131973 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [] best 131973 combination zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:37 [ Ticks#12 ] zp[2]:35 [ Ticks#1 ] zp[2]:27 [ rand_seed ] zp[2]:25 [ last_time ] +Uplifting [print_byte] best 131955 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 131955 combination zp[2]:39 [ print_word::w#0 ] +Uplifting [main] best 131949 combination zp[2]:2 [ main::count#2 main::count#1 ] reg byte a [ main::tmp#1 ] zp[1]:29 [ main::block#1 ] zp[1]:31 [ main::v#1 ] +Uplifting [RADIX] best 131949 combination +Uplifting [print_ln] best 131949 combination +Uplifting [start] best 131949 combination +Uplifting [end] best 131949 combination Attempting to uplift remaining variables inzp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] -Uplifting [makechar] best 131953 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] -Attempting to uplift remaining variables inzp[1]:53 [ makechar::$5 ] -Uplifting [makechar] best 131953 combination zp[1]:53 [ makechar::$5 ] +Uplifting [makechar] best 131949 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] Attempting to uplift remaining variables inzp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] -Uplifting [doplasma] best 131953 combination zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] +Uplifting [doplasma] best 131949 combination zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] Attempting to uplift remaining variables inzp[1]:7 [ doplasma::i#3 doplasma::i#2 ] -Uplifting [doplasma] best 131953 combination zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] -Attempting to uplift remaining variables inzp[1]:22 [ makechar::i#3 makechar::i#2 ] -Uplifting [makechar] best 131953 combination zp[1]:22 [ makechar::i#3 makechar::i#2 ] +Uplifting [doplasma] best 131949 combination zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] Attempting to uplift remaining variables inzp[1]:33 [ doplasma::$3 ] -Uplifting [doplasma] best 131353 combination reg byte a [ doplasma::$3 ] +Uplifting [doplasma] best 131349 combination reg byte a [ doplasma::$3 ] Attempting to uplift remaining variables inzp[1]:34 [ doplasma::$1 ] -Uplifting [doplasma] best 130753 combination reg byte a [ doplasma::$1 ] +Uplifting [doplasma] best 130749 combination reg byte a [ doplasma::$1 ] +Attempting to uplift remaining variables inzp[1]:53 [ makechar::$5 ] +Uplifting [makechar] best 130749 combination zp[1]:53 [ makechar::$5 ] Attempting to uplift remaining variables inzp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] -Uplifting [doplasma] best 130753 combination zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] +Uplifting [doplasma] best 130749 combination zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] Attempting to uplift remaining variables inzp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] -Uplifting [doplasma] best 130753 combination zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] +Uplifting [doplasma] best 130749 combination zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] Attempting to uplift remaining variables inzp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] -Uplifting [doplasma] best 130753 combination zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] +Uplifting [doplasma] best 130749 combination zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] Attempting to uplift remaining variables inzp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] -Uplifting [doplasma] best 130753 combination zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] +Uplifting [doplasma] best 130749 combination zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] +Attempting to uplift remaining variables inzp[1]:22 [ makechar::i#3 makechar::i#2 ] +Uplifting [makechar] best 130749 combination zp[1]:22 [ makechar::i#3 makechar::i#2 ] Attempting to uplift remaining variables inzp[1]:44 [ makechar::s#1 ] -Uplifting [makechar] best 130753 combination zp[1]:44 [ makechar::s#1 ] +Uplifting [makechar] best 130749 combination zp[1]:44 [ makechar::s#1 ] Attempting to uplift remaining variables inzp[1]:29 [ main::block#1 ] -Uplifting [main] best 130753 combination zp[1]:29 [ main::block#1 ] +Uplifting [main] best 130749 combination zp[1]:29 [ main::block#1 ] Attempting to uplift remaining variables inzp[1]:31 [ main::v#1 ] -Uplifting [main] best 130753 combination zp[1]:31 [ main::v#1 ] +Uplifting [main] best 130749 combination zp[1]:31 [ main::v#1 ] Coalescing zero page register [ zp[2]:37 [ Ticks#12 ] ] with [ zp[2]:39 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:45 [ makechar::$8 ] ] with [ zp[2]:47 [ makechar::$9 ] ] - score: 1 Coalescing zero page register [ zp[2]:45 [ makechar::$8 makechar::$9 ] ] with [ zp[2]:49 [ makechar::$10 ] ] - score: 1 @@ -3429,8 +3425,7 @@ print_ln: { print_word: { .label w = $12 // [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [66] call print_byte // [70] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3445,8 +3440,7 @@ print_word: { // print_word::@1 __b1: // [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [68] call print_byte // [70] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -3870,14 +3864,14 @@ FINAL SYMBOL TABLE (const byte*) SCREEN1 = (byte*) 57344 (const byte*) SCREEN2 = (byte*) 58368 (word) Ticks -(word) Ticks#1 Ticks zp[2]:16 2.0 -(word) Ticks#12 Ticks_1 zp[2]:18 4.0 +(word) Ticks#1 Ticks zp[2]:16 101.0 +(word) Ticks#12 Ticks_1 zp[2]:18 202.0 (const byte*) VIC_MEMORY = (byte*) 53272 (const byte*) bittab[] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (void()) doplasma((byte*) doplasma::scrn) -(byte~) doplasma::$1 reg byte a 202.0 -(byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$6 reg byte a 2002.0 +(byte~) doplasma::$1 reg byte a 200002.0 +(byte~) doplasma::$3 reg byte a 200002.0 +(byte~) doplasma::$6 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 @@ -3890,42 +3884,42 @@ FINAL SYMBOL TABLE (byte) doplasma::c1A (byte) doplasma::c1B (byte) doplasma::c1a -(byte) doplasma::c1a#2 c1a zp[1]:9 67.33333333333333 -(byte) doplasma::c1a#3 c1a zp[1]:9 75.75 +(byte) doplasma::c1a#2 c1a zp[1]:9 66667.33333333333 +(byte) doplasma::c1a#3 c1a zp[1]:9 75000.75 (byte) doplasma::c1b -(byte) doplasma::c1b#2 c1b zp[1]:20 101.0 -(byte) doplasma::c1b#3 c1b zp[1]:20 60.599999999999994 +(byte) doplasma::c1b#2 c1b zp[1]:20 100001.0 +(byte) doplasma::c1b#3 c1b zp[1]:20 60000.600000000006 (byte) doplasma::c2A (const byte) doplasma::c2A#0 c2A = (byte) 0 (byte) doplasma::c2B (const byte) doplasma::c2B#0 c2B = (byte) 0 (byte) doplasma::c2a -(byte) doplasma::c2a#2 c2a zp[1]:2 67.33333333333333 -(byte) doplasma::c2a#3 c2a zp[1]:2 75.75 +(byte) doplasma::c2a#2 c2a zp[1]:2 66667.33333333333 +(byte) doplasma::c2a#3 c2a zp[1]:2 75000.75 (byte) doplasma::c2b -(byte) doplasma::c2b#2 c2b zp[1]:3 101.0 -(byte) doplasma::c2b#3 c2b zp[1]:3 60.599999999999994 +(byte) doplasma::c2b#2 c2b zp[1]:3 100001.0 +(byte) doplasma::c2b#3 c2b zp[1]:3 60000.600000000006 (byte) doplasma::i -(byte) doplasma::i#2 i zp[1]:23 202.0 -(byte) doplasma::i#3 i zp[1]:23 67.33333333333333 +(byte) doplasma::i#2 i zp[1]:23 200002.0 +(byte) doplasma::i#3 i zp[1]:23 66667.33333333333 (byte) doplasma::ii -(byte) doplasma::ii#2 ii zp[1]:8 202.0 -(byte) doplasma::ii#3 ii zp[1]:8 67.33333333333333 +(byte) doplasma::ii#2 ii zp[1]:8 200002.0 +(byte) doplasma::ii#3 ii zp[1]:8 66667.33333333333 (byte) doplasma::j -(byte) doplasma::j#2 reg byte y 2002.0 -(byte) doplasma::j#3 reg byte y 1251.25 +(byte) doplasma::j#2 reg byte y 2000002.0 +(byte) doplasma::j#3 reg byte y 1250001.25 (byte) doplasma::jj -(byte) doplasma::jj#2 reg byte x 202.0 -(byte) doplasma::jj#3 reg byte x 163.0 +(byte) doplasma::jj#2 reg byte x 200002.0 +(byte) doplasma::jj#3 reg byte x 162500.5 (byte*) doplasma::scrn -(byte*) doplasma::scrn#0 scrn zp[2]:6 101.0 -(byte*) doplasma::scrn#13 scrn zp[2]:6 6.733333333333333 -(byte*) doplasma::scrn#6 scrn zp[2]:6 186.28571428571428 +(byte*) doplasma::scrn#0 scrn zp[2]:6 100001.0 +(byte*) doplasma::scrn#13 scrn zp[2]:6 6666.733333333334 +(byte*) doplasma::scrn#6 scrn zp[2]:6 185714.85714285713 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:10 0.41666666666666663 +(word) last_time loadstore zp[2]:10 16.916666666666664 (signed word()) main() (label) main::@1 (label) main::@2 @@ -3936,22 +3930,22 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (byte) main::block -(byte) main::block#1 block zp[1]:14 0.46153846153846156 +(byte) main::block#1 block zp[1]:14 2.5384615384615383 (word) main::count -(word) main::count#1 count zp[2]:4 22.0 -(word) main::count#2 count zp[2]:4 4.714285714285714 +(word) main::count#1 count zp[2]:4 202.0 +(word) main::count#2 count zp[2]:4 43.285714285714285 (signed word) main::return (byte) main::tmp -(byte) main::tmp#1 reg byte a 4.0 +(byte) main::tmp#1 reg byte a 22.0 (byte) main::v -(byte) main::v#1 v zp[1]:15 0.4444444444444444 +(byte) main::v#1 v zp[1]:15 2.4444444444444446 (void()) makechar() -(byte~) makechar::$1 reg byte a 22.0 -(byte*~) makechar::$10 zp[2]:21 202.0 -(byte~) makechar::$4 reg byte a 2002.0 -(byte~) makechar::$5 zp[1]:23 2002.0 -(word~) makechar::$8 zp[2]:21 202.0 -(word~) makechar::$9 zp[2]:21 202.0 +(byte~) makechar::$1 reg byte a 2002.0 +(byte*~) makechar::$10 zp[2]:21 20002.0 +(byte~) makechar::$4 reg byte a 200002.0 +(byte~) makechar::$5 zp[1]:23 200002.0 +(word~) makechar::$8 zp[2]:21 20002.0 +(word~) makechar::$9 zp[2]:21 20002.0 (label) makechar::@1 (label) makechar::@10 (label) makechar::@2 @@ -3964,43 +3958,43 @@ FINAL SYMBOL TABLE (label) makechar::@9 (label) makechar::@return (byte) makechar::b -(byte) makechar::b#2 b zp[1]:9 2002.0 -(byte) makechar::b#3 b zp[1]:9 282.1818181818182 -(byte) makechar::b#7 b zp[1]:9 1501.5 +(byte) makechar::b#2 b zp[1]:9 200002.0 +(byte) makechar::b#3 b zp[1]:9 28182.181818181816 +(byte) makechar::b#7 b zp[1]:9 150001.5 (word) makechar::c -(word) makechar::c#2 c zp[2]:16 22.0 -(word) makechar::c#3 c zp[2]:16 6.090909090909091 +(word) makechar::c#2 c zp[2]:16 2002.0 +(word) makechar::c#3 c zp[2]:16 591.090909090909 (byte) makechar::i -(byte) makechar::i#2 i zp[1]:8 202.0 -(byte) makechar::i#3 i zp[1]:8 23.764705882352942 +(byte) makechar::i#2 i zp[1]:8 20002.0 +(byte) makechar::i#3 i zp[1]:8 2353.176470588235 (byte) makechar::ii -(byte) makechar::ii#2 reg byte y 2002.0 -(byte) makechar::ii#3 reg byte y 400.4 +(byte) makechar::ii#2 reg byte y 200002.0 +(byte) makechar::ii#3 reg byte y 40000.4 (byte) makechar::s -(byte) makechar::s#1 s zp[1]:20 53.26315789473684 +(byte) makechar::s#1 s zp[1]:20 5315.894736842105 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 1.0 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 1.3333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 7117.882352941177 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:6 110002.0 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 3667.333333333333 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:4 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:4 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4009,14 +4003,14 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:18 2.0 +(word) print_word::w#0 w zp[2]:18 701.0 (byte()) rand() (label) rand::@return (const word*) rand::RAND_SEED = &(word) rand_seed (byte) rand::return -(byte) rand::return#0 reg byte a 334.33333333333337 -(byte) rand::return#2 reg byte a 2002.0 -(word) rand_seed loadstore zp[2]:12 0.21428571428571427 +(byte) rand::return#0 reg byte a 366667.3333333334 +(byte) rand::return#2 reg byte a 200002.0 +(word) rand_seed loadstore zp[2]:12 36.214285714285715 (const byte*) sinustable[(number) $100] = { (byte) $80, (byte) $7d, (byte) $7a, (byte) $77, (byte) $74, (byte) $70, (byte) $6d, (byte) $6a, (byte) $67, (byte) $64, (byte) $61, (byte) $5e, (byte) $5b, (byte) $58, (byte) $55, (byte) $52, (byte) $4f, (byte) $4d, (byte) $4a, (byte) $47, (byte) $44, (byte) $41, (byte) $3f, (byte) $3c, (byte) $39, (byte) $37, (byte) $34, (byte) $32, (byte) $2f, (byte) $2d, (byte) $2b, (byte) $28, (byte) $26, (byte) $24, (byte) $22, (byte) $20, (byte) $1e, (byte) $1c, (byte) $1a, (byte) $18, (byte) $16, (byte) $15, (byte) $13, (byte) $11, (byte) $10, (byte) $f, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 8, (byte) 7, (byte) 6, (byte) 6, (byte) 5, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 8, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $f, (byte) $10, (byte) $11, (byte) $13, (byte) $15, (byte) $16, (byte) $18, (byte) $1a, (byte) $1c, (byte) $1e, (byte) $20, (byte) $22, (byte) $24, (byte) $26, (byte) $28, (byte) $2b, (byte) $2d, (byte) $2f, (byte) $32, (byte) $34, (byte) $37, (byte) $39, (byte) $3c, (byte) $3f, (byte) $41, (byte) $44, (byte) $47, (byte) $4a, (byte) $4d, (byte) $4f, (byte) $52, (byte) $55, (byte) $58, (byte) $5b, (byte) $5e, (byte) $61, (byte) $64, (byte) $67, (byte) $6a, (byte) $6d, (byte) $70, (byte) $74, (byte) $77, (byte) $7a, (byte) $7d, (byte) $80, (byte) $83, (byte) $86, (byte) $89, (byte) $8c, (byte) $90, (byte) $93, (byte) $96, (byte) $99, (byte) $9c, (byte) $9f, (byte) $a2, (byte) $a5, (byte) $a8, (byte) $ab, (byte) $ae, (byte) $b1, (byte) $b3, (byte) $b6, (byte) $b9, (byte) $bc, (byte) $bf, (byte) $c1, (byte) $c4, (byte) $c7, (byte) $c9, (byte) $cc, (byte) $ce, (byte) $d1, (byte) $d3, (byte) $d5, (byte) $d8, (byte) $da, (byte) $dc, (byte) $de, (byte) $e0, (byte) $e2, (byte) $e4, (byte) $e6, (byte) $e8, (byte) $ea, (byte) $eb, (byte) $ed, (byte) $ef, (byte) $f0, (byte) $f1, (byte) $f3, (byte) $f4, (byte) $f5, (byte) $f6, (byte) $f8, (byte) $f9, (byte) $fa, (byte) $fa, (byte) $fb, (byte) $fc, (byte) $fd, (byte) $fd, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $fd, (byte) $fd, (byte) $fc, (byte) $fb, (byte) $fa, (byte) $fa, (byte) $f9, (byte) $f8, (byte) $f6, (byte) $f5, (byte) $f4, (byte) $f3, (byte) $f1, (byte) $f0, (byte) $ef, (byte) $ed, (byte) $eb, (byte) $ea, (byte) $e8, (byte) $e6, (byte) $e4, (byte) $e2, (byte) $e0, (byte) $de, (byte) $dc, (byte) $da, (byte) $d8, (byte) $d5, (byte) $d3, (byte) $d1, (byte) $ce, (byte) $cc, (byte) $c9, (byte) $c7, (byte) $c4, (byte) $c1, (byte) $bf, (byte) $bc, (byte) $b9, (byte) $b6, (byte) $b3, (byte) $b1, (byte) $ae, (byte) $ab, (byte) $a8, (byte) $a5, (byte) $a2, (byte) $9f, (byte) $9c, (byte) $99, (byte) $96, (byte) $93, (byte) $90, (byte) $8c, (byte) $89, (byte) $86, (byte) $83 } (void()) start() (label) start::@return @@ -4057,7 +4051,7 @@ reg byte a [ rand::return#0 ] FINAL ASSEMBLER -Score: 104147 +Score: 104143 // File Comments // Upstart @@ -4463,8 +4457,7 @@ print_word: { .label w = $12 // print_byte(>w) // [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [66] call print_byte // [70] phi from print_word to print_byte [phi:print_word->print_byte] // [70] phi (byte*) print_char_cursor#35 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1 @@ -4477,8 +4470,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [70] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/millfork-benchmarks/plasma-kc.sym b/src/test/ref/millfork-benchmarks/plasma-kc.sym index f4ec2c9d3..7844ade7b 100644 --- a/src/test/ref/millfork-benchmarks/plasma-kc.sym +++ b/src/test/ref/millfork-benchmarks/plasma-kc.sym @@ -14,14 +14,14 @@ (const byte*) SCREEN1 = (byte*) 57344 (const byte*) SCREEN2 = (byte*) 58368 (word) Ticks -(word) Ticks#1 Ticks zp[2]:16 2.0 -(word) Ticks#12 Ticks_1 zp[2]:18 4.0 +(word) Ticks#1 Ticks zp[2]:16 101.0 +(word) Ticks#12 Ticks_1 zp[2]:18 202.0 (const byte*) VIC_MEMORY = (byte*) 53272 (const byte*) bittab[] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (void()) doplasma((byte*) doplasma::scrn) -(byte~) doplasma::$1 reg byte a 202.0 -(byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$6 reg byte a 2002.0 +(byte~) doplasma::$1 reg byte a 200002.0 +(byte~) doplasma::$3 reg byte a 200002.0 +(byte~) doplasma::$6 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 @@ -34,42 +34,42 @@ (byte) doplasma::c1A (byte) doplasma::c1B (byte) doplasma::c1a -(byte) doplasma::c1a#2 c1a zp[1]:9 67.33333333333333 -(byte) doplasma::c1a#3 c1a zp[1]:9 75.75 +(byte) doplasma::c1a#2 c1a zp[1]:9 66667.33333333333 +(byte) doplasma::c1a#3 c1a zp[1]:9 75000.75 (byte) doplasma::c1b -(byte) doplasma::c1b#2 c1b zp[1]:20 101.0 -(byte) doplasma::c1b#3 c1b zp[1]:20 60.599999999999994 +(byte) doplasma::c1b#2 c1b zp[1]:20 100001.0 +(byte) doplasma::c1b#3 c1b zp[1]:20 60000.600000000006 (byte) doplasma::c2A (const byte) doplasma::c2A#0 c2A = (byte) 0 (byte) doplasma::c2B (const byte) doplasma::c2B#0 c2B = (byte) 0 (byte) doplasma::c2a -(byte) doplasma::c2a#2 c2a zp[1]:2 67.33333333333333 -(byte) doplasma::c2a#3 c2a zp[1]:2 75.75 +(byte) doplasma::c2a#2 c2a zp[1]:2 66667.33333333333 +(byte) doplasma::c2a#3 c2a zp[1]:2 75000.75 (byte) doplasma::c2b -(byte) doplasma::c2b#2 c2b zp[1]:3 101.0 -(byte) doplasma::c2b#3 c2b zp[1]:3 60.599999999999994 +(byte) doplasma::c2b#2 c2b zp[1]:3 100001.0 +(byte) doplasma::c2b#3 c2b zp[1]:3 60000.600000000006 (byte) doplasma::i -(byte) doplasma::i#2 i zp[1]:23 202.0 -(byte) doplasma::i#3 i zp[1]:23 67.33333333333333 +(byte) doplasma::i#2 i zp[1]:23 200002.0 +(byte) doplasma::i#3 i zp[1]:23 66667.33333333333 (byte) doplasma::ii -(byte) doplasma::ii#2 ii zp[1]:8 202.0 -(byte) doplasma::ii#3 ii zp[1]:8 67.33333333333333 +(byte) doplasma::ii#2 ii zp[1]:8 200002.0 +(byte) doplasma::ii#3 ii zp[1]:8 66667.33333333333 (byte) doplasma::j -(byte) doplasma::j#2 reg byte y 2002.0 -(byte) doplasma::j#3 reg byte y 1251.25 +(byte) doplasma::j#2 reg byte y 2000002.0 +(byte) doplasma::j#3 reg byte y 1250001.25 (byte) doplasma::jj -(byte) doplasma::jj#2 reg byte x 202.0 -(byte) doplasma::jj#3 reg byte x 163.0 +(byte) doplasma::jj#2 reg byte x 200002.0 +(byte) doplasma::jj#3 reg byte x 162500.5 (byte*) doplasma::scrn -(byte*) doplasma::scrn#0 scrn zp[2]:6 101.0 -(byte*) doplasma::scrn#13 scrn zp[2]:6 6.733333333333333 -(byte*) doplasma::scrn#6 scrn zp[2]:6 186.28571428571428 +(byte*) doplasma::scrn#0 scrn zp[2]:6 100001.0 +(byte*) doplasma::scrn#13 scrn zp[2]:6 6666.733333333334 +(byte*) doplasma::scrn#6 scrn zp[2]:6 185714.85714285713 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:10 0.41666666666666663 +(word) last_time loadstore zp[2]:10 16.916666666666664 (signed word()) main() (label) main::@1 (label) main::@2 @@ -80,22 +80,22 @@ (label) main::@7 (label) main::@return (byte) main::block -(byte) main::block#1 block zp[1]:14 0.46153846153846156 +(byte) main::block#1 block zp[1]:14 2.5384615384615383 (word) main::count -(word) main::count#1 count zp[2]:4 22.0 -(word) main::count#2 count zp[2]:4 4.714285714285714 +(word) main::count#1 count zp[2]:4 202.0 +(word) main::count#2 count zp[2]:4 43.285714285714285 (signed word) main::return (byte) main::tmp -(byte) main::tmp#1 reg byte a 4.0 +(byte) main::tmp#1 reg byte a 22.0 (byte) main::v -(byte) main::v#1 v zp[1]:15 0.4444444444444444 +(byte) main::v#1 v zp[1]:15 2.4444444444444446 (void()) makechar() -(byte~) makechar::$1 reg byte a 22.0 -(byte*~) makechar::$10 zp[2]:21 202.0 -(byte~) makechar::$4 reg byte a 2002.0 -(byte~) makechar::$5 zp[1]:23 2002.0 -(word~) makechar::$8 zp[2]:21 202.0 -(word~) makechar::$9 zp[2]:21 202.0 +(byte~) makechar::$1 reg byte a 2002.0 +(byte*~) makechar::$10 zp[2]:21 20002.0 +(byte~) makechar::$4 reg byte a 200002.0 +(byte~) makechar::$5 zp[1]:23 200002.0 +(word~) makechar::$8 zp[2]:21 20002.0 +(word~) makechar::$9 zp[2]:21 20002.0 (label) makechar::@1 (label) makechar::@10 (label) makechar::@2 @@ -108,43 +108,43 @@ (label) makechar::@9 (label) makechar::@return (byte) makechar::b -(byte) makechar::b#2 b zp[1]:9 2002.0 -(byte) makechar::b#3 b zp[1]:9 282.1818181818182 -(byte) makechar::b#7 b zp[1]:9 1501.5 +(byte) makechar::b#2 b zp[1]:9 200002.0 +(byte) makechar::b#3 b zp[1]:9 28182.181818181816 +(byte) makechar::b#7 b zp[1]:9 150001.5 (word) makechar::c -(word) makechar::c#2 c zp[2]:16 22.0 -(word) makechar::c#3 c zp[2]:16 6.090909090909091 +(word) makechar::c#2 c zp[2]:16 2002.0 +(word) makechar::c#3 c zp[2]:16 591.090909090909 (byte) makechar::i -(byte) makechar::i#2 i zp[1]:8 202.0 -(byte) makechar::i#3 i zp[1]:8 23.764705882352942 +(byte) makechar::i#2 i zp[1]:8 20002.0 +(byte) makechar::i#3 i zp[1]:8 2353.176470588235 (byte) makechar::ii -(byte) makechar::ii#2 reg byte y 2002.0 -(byte) makechar::ii#3 reg byte y 400.4 +(byte) makechar::ii#2 reg byte y 200002.0 +(byte) makechar::ii#3 reg byte y 40000.4 (byte) makechar::s -(byte) makechar::s#1 s zp[1]:20 53.26315789473684 +(byte) makechar::s#1 s zp[1]:20 5315.894736842105 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 1.0 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 1.3333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 7117.882352941177 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:6 110002.0 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 3667.333333333333 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:4 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:4 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -153,14 +153,14 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:18 2.0 +(word) print_word::w#0 w zp[2]:18 701.0 (byte()) rand() (label) rand::@return (const word*) rand::RAND_SEED = &(word) rand_seed (byte) rand::return -(byte) rand::return#0 reg byte a 334.33333333333337 -(byte) rand::return#2 reg byte a 2002.0 -(word) rand_seed loadstore zp[2]:12 0.21428571428571427 +(byte) rand::return#0 reg byte a 366667.3333333334 +(byte) rand::return#2 reg byte a 200002.0 +(word) rand_seed loadstore zp[2]:12 36.214285714285715 (const byte*) sinustable[(number) $100] = { (byte) $80, (byte) $7d, (byte) $7a, (byte) $77, (byte) $74, (byte) $70, (byte) $6d, (byte) $6a, (byte) $67, (byte) $64, (byte) $61, (byte) $5e, (byte) $5b, (byte) $58, (byte) $55, (byte) $52, (byte) $4f, (byte) $4d, (byte) $4a, (byte) $47, (byte) $44, (byte) $41, (byte) $3f, (byte) $3c, (byte) $39, (byte) $37, (byte) $34, (byte) $32, (byte) $2f, (byte) $2d, (byte) $2b, (byte) $28, (byte) $26, (byte) $24, (byte) $22, (byte) $20, (byte) $1e, (byte) $1c, (byte) $1a, (byte) $18, (byte) $16, (byte) $15, (byte) $13, (byte) $11, (byte) $10, (byte) $f, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 8, (byte) 7, (byte) 6, (byte) 6, (byte) 5, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 8, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $f, (byte) $10, (byte) $11, (byte) $13, (byte) $15, (byte) $16, (byte) $18, (byte) $1a, (byte) $1c, (byte) $1e, (byte) $20, (byte) $22, (byte) $24, (byte) $26, (byte) $28, (byte) $2b, (byte) $2d, (byte) $2f, (byte) $32, (byte) $34, (byte) $37, (byte) $39, (byte) $3c, (byte) $3f, (byte) $41, (byte) $44, (byte) $47, (byte) $4a, (byte) $4d, (byte) $4f, (byte) $52, (byte) $55, (byte) $58, (byte) $5b, (byte) $5e, (byte) $61, (byte) $64, (byte) $67, (byte) $6a, (byte) $6d, (byte) $70, (byte) $74, (byte) $77, (byte) $7a, (byte) $7d, (byte) $80, (byte) $83, (byte) $86, (byte) $89, (byte) $8c, (byte) $90, (byte) $93, (byte) $96, (byte) $99, (byte) $9c, (byte) $9f, (byte) $a2, (byte) $a5, (byte) $a8, (byte) $ab, (byte) $ae, (byte) $b1, (byte) $b3, (byte) $b6, (byte) $b9, (byte) $bc, (byte) $bf, (byte) $c1, (byte) $c4, (byte) $c7, (byte) $c9, (byte) $cc, (byte) $ce, (byte) $d1, (byte) $d3, (byte) $d5, (byte) $d8, (byte) $da, (byte) $dc, (byte) $de, (byte) $e0, (byte) $e2, (byte) $e4, (byte) $e6, (byte) $e8, (byte) $ea, (byte) $eb, (byte) $ed, (byte) $ef, (byte) $f0, (byte) $f1, (byte) $f3, (byte) $f4, (byte) $f5, (byte) $f6, (byte) $f8, (byte) $f9, (byte) $fa, (byte) $fa, (byte) $fb, (byte) $fc, (byte) $fd, (byte) $fd, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $fd, (byte) $fd, (byte) $fc, (byte) $fb, (byte) $fa, (byte) $fa, (byte) $f9, (byte) $f8, (byte) $f6, (byte) $f5, (byte) $f4, (byte) $f3, (byte) $f1, (byte) $f0, (byte) $ef, (byte) $ed, (byte) $eb, (byte) $ea, (byte) $e8, (byte) $e6, (byte) $e4, (byte) $e2, (byte) $e0, (byte) $de, (byte) $dc, (byte) $da, (byte) $d8, (byte) $d5, (byte) $d3, (byte) $d1, (byte) $ce, (byte) $cc, (byte) $c9, (byte) $c7, (byte) $c4, (byte) $c1, (byte) $bf, (byte) $bc, (byte) $b9, (byte) $b6, (byte) $b3, (byte) $b1, (byte) $ae, (byte) $ab, (byte) $a8, (byte) $a5, (byte) $a2, (byte) $9f, (byte) $9c, (byte) $99, (byte) $96, (byte) $93, (byte) $90, (byte) $8c, (byte) $89, (byte) $86, (byte) $83 } (void()) start() (label) start::@return diff --git a/src/test/ref/millfork-benchmarks/romsum-kc.asm b/src/test/ref/millfork-benchmarks/romsum-kc.asm index d8aee9bf5..d03f76d64 100644 --- a/src/test/ref/millfork-benchmarks/romsum-kc.asm +++ b/src/test/ref/millfork-benchmarks/romsum-kc.asm @@ -331,12 +331,10 @@ end: { print_word: { .label w = $f // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte(=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [52] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [53] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ) always clobbers reg byte a -Statement [54] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ) always clobbers reg byte a -Statement [56] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ) always clobbers reg byte a -Statement [57] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [61] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ) always clobbers reg byte a +Statement [47] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [49] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [52] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [53] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [54] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [56] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [57] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [61] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ utoa_append::digit#2 utoa_append::digit#1 ] -Statement [62] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] ) always clobbers reg byte a reg byte y +Statement [62] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] -Statement [65] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ) always clobbers reg byte a -Statement [71] (byte) sum::tmp#1 ← *((byte*) sum::p#5 + (byte) sum::i#3) [ sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ) always clobbers reg byte a +Statement [65] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [71] (byte) sum::tmp#1 ← *((byte*) sum::p#5 + (byte) sum::i#3) [ sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ sum::page#3 sum::page#2 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ sum::i#3 sum::i#2 ] -Statement [72] (word) sum::s#2 ← (word) sum::s#4 + (byte) sum::tmp#1 [ sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ) always clobbers reg byte a -Statement [75] (byte*) sum::p#2 ← (byte*) sum::p#5 + (word) $100 [ sum::page#3 sum::s#2 sum::p#2 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::s#2 sum::p#2 ] ) always clobbers reg byte a -Statement [77] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ) always clobbers reg byte a -Statement [79] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#51 print_line_cursor#20 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 ] ) always clobbers reg byte a -Statement [80] (word) Ticks#12 ← (word) last_time [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ) always clobbers reg byte a -Statement [81] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ) always clobbers reg byte a -Statement [86] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#51 print_word::w#0 print_byte::b#0 ] ( main:3::end:10::print_word:82 [ print_line_cursor#20 print_char_cursor#51 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [88] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:3::end:10::print_word:82 [ print_line_cursor#20 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [92] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ) always clobbers reg byte a +Statement [72] (word) sum::s#2 ← (word) sum::s#4 + (byte) sum::tmp#1 [ sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [75] (byte*) sum::p#2 ← (byte*) sum::p#5 + (word) $100 [ sum::page#3 sum::s#2 sum::p#2 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::s#2 sum::p#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [77] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] { } ) always clobbers reg byte a +Statement [79] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#51 print_line_cursor#20 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [80] (word) Ticks#12 ← (word) last_time [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [81] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [92] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#35 = print_char_cursor#49 print_char_cursor#51 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [95] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [100] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#2 [ print_char_cursor#35 ] ( main:3::end:10::print_word:82::print_byte:87::print_char:94 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:89::print_char:94 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:87::print_char:97 [ print_line_cursor#20 print_word::w#0 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:89::print_char:97 [ print_line_cursor#20 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [95] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#49 = print_char_cursor#51 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#13 = print_char_cursor#35 } } main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_char_cursor#13 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [100] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#2 [ print_char_cursor#35 ] ( main:3::end:10::print_word:82::print_byte:87::print_char:94 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#35 = print_char_cursor#49 print_char_cursor#51 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:89::print_char:94 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:87::print_char:97 [ print_line_cursor#20 print_word::w#0 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#49 = print_char_cursor#51 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#13 = print_char_cursor#35 } } main:3::end:10::print_word:82::print_byte:89::print_char:97 [ print_line_cursor#20 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [8] if((word) main::i#3<(byte) 6) goto main::@2 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 ] ) always clobbers reg byte a -Statement [14] (word) sum::return#2 ← (word) sum::s#3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::return#2 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::return#2 ] ) always clobbers reg byte a -Statement [15] (word) print_word_decimal::w#0 ← (word) sum::return#2 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 print_word_decimal::w#0 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 print_word_decimal::w#0 ] ) always clobbers reg byte a -Statement [20] (byte*) print_char_cursor#70 ← (byte*) print_line_cursor#1 [ last_time main::i#2 print_char_cursor#70 print_line_cursor#1 ] ( main:3 [ last_time main::i#2 print_char_cursor#70 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#46 ] ( main:3::print_ln:18 [ last_time main::i#3 print_line_cursor#1 print_char_cursor#46 ] main:3::end:10::print_ln:84 [ print_line_cursor#1 print_char_cursor#46 ] ) always clobbers reg byte a -Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#46) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#46 ] ( main:3::print_ln:18 [ last_time main::i#3 print_line_cursor#1 print_char_cursor#46 ] main:3::end:10::print_ln:84 [ print_line_cursor#1 print_char_cursor#46 ] ) always clobbers reg byte a -Statement [26] (word) utoa::value#1 ← (word) print_word_decimal::w#0 [ print_char_cursor#51 utoa::value#1 ] ( main:3::print_word_decimal:16 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::value#1 ] ) always clobbers reg byte a -Statement [33] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:3::print_word_decimal:16::print_str:29 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [35] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:3::print_word_decimal:16::print_str:29 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [41] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#11 utoa::$4 ] ) always clobbers reg byte a -Statement [42] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#11 ] ) always clobbers reg byte a reg byte y -Statement [43] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#3 ] ) always clobbers reg byte a -Statement [44] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ) always clobbers reg byte a -Statement [47] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [49] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [52] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [53] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ) always clobbers reg byte a -Statement [54] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ) always clobbers reg byte a -Statement [56] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ) always clobbers reg byte a -Statement [57] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [61] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ) always clobbers reg byte a -Statement [62] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] ) always clobbers reg byte a reg byte y -Statement [65] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ) always clobbers reg byte a -Statement [71] (byte) sum::tmp#1 ← *((byte*) sum::p#5 + (byte) sum::i#3) [ sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ) always clobbers reg byte a -Statement [72] (word) sum::s#2 ← (word) sum::s#4 + (byte) sum::tmp#1 [ sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ) always clobbers reg byte a -Statement [75] (byte*) sum::p#2 ← (byte*) sum::p#5 + (word) $100 [ sum::page#3 sum::s#2 sum::p#2 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::s#2 sum::p#2 ] ) always clobbers reg byte a -Statement [77] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ) always clobbers reg byte a -Statement [79] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#51 print_line_cursor#20 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 ] ) always clobbers reg byte a -Statement [80] (word) Ticks#12 ← (word) last_time [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ) always clobbers reg byte a -Statement [81] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ) always clobbers reg byte a -Statement [86] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#51 print_word::w#0 print_byte::b#0 ] ( main:3::end:10::print_word:82 [ print_line_cursor#20 print_char_cursor#51 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [88] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:3::end:10::print_word:82 [ print_line_cursor#20 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [92] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ) always clobbers reg byte a -Statement [95] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [100] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#2 [ print_char_cursor#35 ] ( main:3::end:10::print_word:82::print_byte:87::print_char:94 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:89::print_char:94 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:87::print_char:97 [ print_line_cursor#20 print_word::w#0 print_char_cursor#35 ] main:3::end:10::print_word:82::print_byte:89::print_char:97 [ print_line_cursor#20 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [8] if((word) main::i#3<(byte) 6) goto main::@2 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 ] { } ) always clobbers reg byte a +Statement [14] (word) sum::return#2 ← (word) sum::s#3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::return#2 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [15] (word) print_word_decimal::w#0 ← (word) sum::return#2 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 print_word_decimal::w#0 ] ( main:3 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 print_word_decimal::w#0 ] { { print_word_decimal::w#0 = sum::return#2 } } ) always clobbers reg byte a +Statement [20] (byte*) print_char_cursor#70 ← (byte*) print_line_cursor#1 [ last_time main::i#2 print_char_cursor#70 print_line_cursor#1 ] ( main:3 [ last_time main::i#2 print_char_cursor#70 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#46 ] ( main:3::print_ln:18 [ last_time main::i#3 print_line_cursor#1 print_char_cursor#46 ] { { print_char_cursor#2 = print_char_cursor#46 } } main:3::end:10::print_ln:84 [ print_line_cursor#1 print_char_cursor#46 ] { { print_char_cursor#13 = print_char_cursor#46 } } ) always clobbers reg byte a +Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#46) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#46 ] ( main:3::print_ln:18 [ last_time main::i#3 print_line_cursor#1 print_char_cursor#46 ] { { print_char_cursor#2 = print_char_cursor#46 } } main:3::end:10::print_ln:84 [ print_line_cursor#1 print_char_cursor#46 ] { { print_char_cursor#13 = print_char_cursor#46 } } ) always clobbers reg byte a +Statement [26] (word) utoa::value#1 ← (word) print_word_decimal::w#0 [ print_char_cursor#51 utoa::value#1 ] ( main:3::print_word_decimal:16 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::value#1 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [33] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:3::print_word_decimal:16::print_str:29 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#2 print_str::str#2 ] { { print_word_decimal::w#0 = sum::return#2 } } ) always clobbers reg byte a reg byte y +Statement [35] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:3::print_word_decimal:16::print_str:29 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#2 print_str::str#2 ] { { print_word_decimal::w#0 = sum::return#2 } } ) always clobbers reg byte a reg byte y +Statement [41] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#11 utoa::$4 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [42] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#11 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [43] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::buffer#3 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [44] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [46] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [47] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [49] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [52] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [53] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [54] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [56] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [57] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:3::print_word_decimal:16::utoa:27 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } } ) always clobbers reg byte a +Statement [61] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [62] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [65] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:3::print_word_decimal:16::utoa:27::utoa_append:55 [ last_time main::i#3 print_line_cursor#20 print_char_cursor#51 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#0 = sum::return#2 utoa::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [71] (byte) sum::tmp#1 ← *((byte*) sum::p#5 + (byte) sum::i#3) [ sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::i#3 sum::s#4 sum::tmp#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [72] (word) sum::s#2 ← (word) sum::s#4 + (byte) sum::tmp#1 [ sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::p#5 sum::s#2 sum::i#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [75] (byte*) sum::p#2 ← (byte*) sum::p#5 + (word) $100 [ sum::page#3 sum::s#2 sum::p#2 ] ( main:3::sum:13 [ last_time main::i#3 print_char_cursor#51 print_line_cursor#20 sum::page#3 sum::s#2 sum::p#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a +Statement [77] (word) Ticks#1 ← (word) last_time [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 Ticks#1 ] { } ) always clobbers reg byte a +Statement [79] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time print_char_cursor#51 print_line_cursor#20 ] ( main:3::end:10 [ last_time print_char_cursor#51 print_line_cursor#20 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [80] (word) Ticks#12 ← (word) last_time [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [81] (word) print_word::w#0 ← (word) Ticks#12 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] ( main:3::end:10 [ print_char_cursor#51 print_line_cursor#20 print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [92] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#49 print_byte::$0 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#35 = print_char_cursor#49 print_char_cursor#51 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#49 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [95] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:3::end:10::print_word:82::print_byte:87 [ print_line_cursor#20 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#49 = print_char_cursor#51 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#13 = print_char_cursor#35 } } main:3::end:10::print_word:82::print_byte:89 [ print_line_cursor#20 print_char_cursor#13 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [100] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#2 [ print_char_cursor#35 ] ( main:3::end:10::print_word:82::print_byte:87::print_char:94 [ print_line_cursor#20 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#35 = print_char_cursor#49 print_char_cursor#51 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:89::print_char:94 [ print_line_cursor#20 print_byte::b#2 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:10::print_word:82::print_byte:87::print_char:97 [ print_line_cursor#20 print_word::w#0 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#49 = print_char_cursor#51 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#13 = print_char_cursor#35 } } main:3::end:10::print_word:82::print_byte:89::print_char:97 [ print_line_cursor#20 print_char_cursor#35 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#13 = print_char_cursor#49 print_char_cursor#35 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y Potential registers zp[2]:2 [ main::i#3 main::i#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] : zp[2]:4 , @@ -2830,37 +2826,37 @@ Potential registers zp[1]:52 [ print_byte::$0 ] : zp[1]:52 , reg byte a , reg by Potential registers zp[1]:53 [ print_byte::$2 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sum] 2,502.5: zp[1]:20 [ sum::i#3 sum::i#2 ] 2,002: zp[1]:45 [ sum::tmp#1 ] 1,525.35: zp[2]:21 [ sum::s#4 sum::s#3 sum::s#2 ] 272.86: zp[2]:18 [ sum::p#5 sum::p#2 ] 239.88: zp[1]:17 [ sum::page#3 sum::page#2 ] 22: zp[2]:29 [ sum::return#2 ] -Uplift Scope [utoa_append] 2,554: zp[2]:14 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 2,003: zp[1]:16 [ utoa_append::digit#2 utoa_append::digit#1 ] 350.5: zp[2]:41 [ utoa_append::sub#0 ] 202: zp[2]:43 [ utoa_append::return#0 ] 12.88: zp[2]:39 [ utoa_append::buffer#0 ] -Uplift Scope [utoa] 382.64: zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 312.5: zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 230.86: zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] 202: zp[1]:36 [ utoa::$11 ] 151.5: zp[1]:11 [ utoa::started#2 utoa::started#4 ] 60.6: zp[2]:37 [ utoa::digit_value#0 ] 4: zp[1]:33 [ utoa::$4 ] 4: zp[2]:34 [ utoa::buffer#3 ] -Uplift Scope [] 258.93: zp[2]:4 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] 198.5: zp[2]:25 [ print_char_cursor#35 print_char_cursor#49 print_char_cursor#46 print_char_cursor#13 print_char_cursor#2 print_char_cursor#51 print_char_cursor#70 print_char_cursor#1 ] 4: zp[2]:48 [ Ticks#12 ] 2: zp[2]:46 [ Ticks#1 ] 0.53: zp[2]:27 [ last_time ] -Uplift Scope [print_str] 303: zp[2]:6 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [print_byte] 10: zp[1]:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:52 [ print_byte::$0 ] 4: zp[1]:53 [ print_byte::$2 ] -Uplift Scope [main] 14.67: zp[2]:2 [ main::i#3 main::i#2 ] -Uplift Scope [print_char] 14: zp[1]:24 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word_decimal] 13: zp[2]:31 [ print_word_decimal::w#0 ] -Uplift Scope [print_word] 2: zp[2]:50 [ print_word::w#0 ] +Uplift Scope [utoa_append] 25,005,500,003.5: zp[2]:14 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 20,005,000,002.5: zp[1]:16 [ utoa_append::digit#2 utoa_append::digit#1 ] 3,333,500,000.5: zp[2]:41 [ utoa_append::sub#0 ] 2,000,002: zp[2]:43 [ utoa_append::return#0 ] 1,375,000.25: zp[2]:39 [ utoa_append::buffer#0 ] +Uplift Scope [utoa] 3,787,146.79: zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 3,078,361.36: zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 2,285,716.57: zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] 2,000,002: zp[1]:36 [ utoa::$11 ] 1,500,001.5: zp[1]:11 [ utoa::started#2 utoa::started#4 ] 600,000.6: zp[2]:37 [ utoa::digit_value#0 ] 20,002: zp[1]:33 [ utoa::$4 ] 20,002: zp[2]:34 [ utoa::buffer#3 ] +Uplift Scope [sum] 2,500,002.5: zp[1]:20 [ sum::i#3 sum::i#2 ] 2,000,002: zp[1]:45 [ sum::tmp#1 ] 1,520,027.85: zp[2]:21 [ sum::s#4 sum::s#3 sum::s#2 ] 271,430: zp[2]:18 [ sum::p#5 sum::p#2 ] 237,502.38: zp[1]:17 [ sum::page#3 sum::page#2 ] 202: zp[2]:29 [ sum::return#2 ] +Uplift Scope [print_str] 3,000,003: zp[2]:6 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [] 1,524,719.45: zp[2]:25 [ print_char_cursor#35 print_char_cursor#49 print_char_cursor#46 print_char_cursor#13 print_char_cursor#2 print_char_cursor#51 print_char_cursor#70 print_char_cursor#1 ] 251,101.99: zp[2]:4 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] 202: zp[2]:48 [ Ticks#12 ] 101: zp[2]:46 [ Ticks#1 ] 21.37: zp[2]:27 [ last_time ] +Uplift Scope [print_char] 160,007: zp[1]:24 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:52 [ print_byte::$0 ] 20,002: zp[1]:53 [ print_byte::$2 ] 9,505: zp[1]:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word_decimal] 1,102: zp[2]:31 [ print_word_decimal::w#0 ] +Uplift Scope [print_word] 701: zp[2]:50 [ print_word::w#0 ] +Uplift Scope [main] 134.67: zp[2]:2 [ main::i#3 main::i#2 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [start] Uplift Scope [end] -Uplifting [sum] best 134049 combination reg byte y [ sum::i#3 sum::i#2 ] reg byte a [ sum::tmp#1 ] zp[2]:21 [ sum::s#4 sum::s#3 sum::s#2 ] zp[2]:18 [ sum::p#5 sum::p#2 ] reg byte x [ sum::page#3 sum::page#2 ] zp[2]:29 [ sum::return#2 ] -Uplifting [utoa_append] best 128046 combination zp[2]:14 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:41 [ utoa_append::sub#0 ] zp[2]:43 [ utoa_append::return#0 ] zp[2]:39 [ utoa_append::buffer#0 ] -Uplifting [utoa] best 126742 combination zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$11 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:37 [ utoa::digit_value#0 ] reg byte a [ utoa::$4 ] zp[2]:34 [ utoa::buffer#3 ] -Uplifting [] best 126742 combination zp[2]:4 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] zp[2]:25 [ print_char_cursor#35 print_char_cursor#49 print_char_cursor#46 print_char_cursor#13 print_char_cursor#2 print_char_cursor#51 print_char_cursor#70 print_char_cursor#1 ] zp[2]:48 [ Ticks#12 ] zp[2]:46 [ Ticks#1 ] zp[2]:27 [ last_time ] +Uplifting [utoa_append] best 146946 combination zp[2]:14 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:41 [ utoa_append::sub#0 ] zp[2]:43 [ utoa_append::return#0 ] zp[2]:39 [ utoa_append::buffer#0 ] +Uplifting [utoa] best 145642 combination zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$11 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:37 [ utoa::digit_value#0 ] reg byte a [ utoa::$4 ] zp[2]:34 [ utoa::buffer#3 ] +Uplifting [sum] best 126742 combination reg byte y [ sum::i#3 sum::i#2 ] reg byte a [ sum::tmp#1 ] zp[2]:21 [ sum::s#4 sum::s#3 sum::s#2 ] zp[2]:18 [ sum::p#5 sum::p#2 ] reg byte x [ sum::page#3 sum::page#2 ] zp[2]:29 [ sum::return#2 ] Uplifting [print_str] best 126742 combination zp[2]:6 [ print_str::str#2 print_str::str#0 ] -Uplifting [print_byte] best 126728 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [main] best 126728 combination zp[2]:2 [ main::i#3 main::i#2 ] -Uplifting [print_char] best 126719 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word_decimal] best 126719 combination zp[2]:31 [ print_word_decimal::w#0 ] -Uplifting [print_word] best 126719 combination zp[2]:50 [ print_word::w#0 ] -Uplifting [RADIX] best 126719 combination -Uplifting [print_ln] best 126719 combination -Uplifting [start] best 126719 combination -Uplifting [end] best 126719 combination +Uplifting [] best 126742 combination zp[2]:25 [ print_char_cursor#35 print_char_cursor#49 print_char_cursor#46 print_char_cursor#13 print_char_cursor#2 print_char_cursor#51 print_char_cursor#70 print_char_cursor#1 ] zp[2]:4 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] zp[2]:48 [ Ticks#12 ] zp[2]:46 [ Ticks#1 ] zp[2]:27 [ last_time ] +Uplifting [print_char] best 126733 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 126715 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word_decimal] best 126715 combination zp[2]:31 [ print_word_decimal::w#0 ] +Uplifting [print_word] best 126715 combination zp[2]:50 [ print_word::w#0 ] +Uplifting [main] best 126715 combination zp[2]:2 [ main::i#3 main::i#2 ] +Uplifting [RADIX] best 126715 combination +Uplifting [print_ln] best 126715 combination +Uplifting [start] best 126715 combination +Uplifting [end] best 126715 combination Attempting to uplift remaining variables inzp[1]:8 [ utoa::digit#2 utoa::digit#1 ] -Uplifting [utoa] best 126719 combination zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] +Uplifting [utoa] best 126715 combination zp[1]:8 [ utoa::digit#2 utoa::digit#1 ] Coalescing zero page register [ zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] with [ zp[2]:14 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:31 [ print_word_decimal::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 print_word_decimal::w#0 ] ] with [ zp[2]:43 [ utoa_append::return#0 ] ] - score: 1 @@ -3436,8 +3432,7 @@ end: { print_word: { .label w = $f // [86] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [87] call print_byte // [91] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3448,8 +3443,7 @@ print_word: { // print_word::@1 __b1: // [88] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [89] call print_byte // [91] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -3679,14 +3673,14 @@ FINAL SYMBOL TABLE (const byte) RADIX::OCTAL = (number) 8 (const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a } (word) Ticks -(word) Ticks#1 Ticks zp[2]:13 2.0 -(word) Ticks#12 Ticks_1 zp[2]:15 4.0 +(word) Ticks#1 Ticks zp[2]:13 101.0 +(word) Ticks#12 Ticks_1 zp[2]:15 202.0 (const byte*) decimal_digits[(number) 6] = { fill( 6, 0) } (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:11 0.5263157894736842 +(word) last_time loadstore zp[2]:11 21.368421052631582 (signed word()) main() (label) main::@1 (label) main::@2 @@ -3696,37 +3690,37 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (word) main::i -(word) main::i#2 i zp[2]:13 11.0 -(word) main::i#3 i zp[2]:13 3.666666666666667 +(word) main::i#2 i zp[2]:13 101.0 +(word) main::i#3 i zp[2]:13 33.666666666666664 (signed word) main::return (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 0.6153846153846154 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 39.5 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 4.0 -(byte*) print_char_cursor#46 print_char_cursor zp[2]:9 28.5 -(byte*) print_char_cursor#49 print_char_cursor zp[2]:9 2.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 0.8823529411764707 -(byte*) print_char_cursor#70 print_char_cursor zp[2]:9 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 1000001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 8546.461538461539 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 376263.125 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 110002.0 +(byte*) print_char_cursor#46 print_char_cursor zp[2]:9 25050.75 +(byte*) print_char_cursor#49 print_char_cursor zp[2]:9 4001.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 653.1176470588235 +(byte*) print_char_cursor#70 print_char_cursor zp[2]:9 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 54.16666666666666 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 0.7647058823529412 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 50034.16666666666 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 64.82352941176471 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -3736,18 +3730,18 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:5 202.0 -(byte*) print_str::str#2 str zp[2]:5 101.0 +(byte*) print_str::str#0 str zp[2]:5 2000002.0 +(byte*) print_str::str#2 str zp[2]:5 1000001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:15 2.0 +(word) print_word::w#0 w zp[2]:15 701.0 (void()) print_word_decimal((word) print_word_decimal::w) (label) print_word_decimal::@1 (label) print_word_decimal::@return (word) print_word_decimal::w -(word) print_word_decimal::w#0 w zp[2]:5 13.0 +(word) print_word_decimal::w#0 w zp[2]:5 1102.0 (const byte*) rom = (byte*) 57344 (void()) start() (label) start::@return @@ -3758,25 +3752,25 @@ FINAL SYMBOL TABLE (label) sum::@3 (label) sum::@return (byte) sum::i -(byte) sum::i#2 reg byte y 1501.5 -(byte) sum::i#3 reg byte y 1001.0 +(byte) sum::i#2 reg byte y 1500001.5 +(byte) sum::i#3 reg byte y 1000001.0 (byte*) sum::p -(byte*) sum::p#2 p zp[2]:7 101.0 -(byte*) sum::p#5 p zp[2]:7 171.85714285714283 +(byte*) sum::p#2 p zp[2]:7 100001.0 +(byte*) sum::p#5 p zp[2]:7 171428.99999999997 (byte) sum::page -(byte) sum::page#2 reg byte x 202.0 -(byte) sum::page#3 reg byte x 37.875 +(byte) sum::page#2 reg byte x 200002.0 +(byte) sum::page#3 reg byte x 37500.375 (word) sum::return -(word) sum::return#2 return zp[2]:5 22.0 +(word) sum::return#2 return zp[2]:5 202.0 (word) sum::s -(word) sum::s#2 s zp[2]:5 420.59999999999997 -(word) sum::s#3 s zp[2]:5 53.25 -(word) sum::s#4 s zp[2]:5 1051.5 +(word) sum::s#2 s zp[2]:5 420000.60000000003 +(word) sum::s#3 s zp[2]:5 50025.75 +(word) sum::s#4 s zp[2]:5 1050001.5 (byte) sum::tmp -(byte) sum::tmp#1 reg byte a 2002.0 +(byte) sum::tmp#1 reg byte a 2000002.0 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) -(byte~) utoa::$11 reg byte a 202.0 -(byte~) utoa::$4 reg byte a 4.0 +(byte~) utoa::$11 reg byte a 2000002.0 +(byte~) utoa::$4 reg byte a 20002.0 (label) utoa::@1 (label) utoa::@2 (label) utoa::@3 @@ -3786,45 +3780,45 @@ FINAL SYMBOL TABLE (label) utoa::@7 (label) utoa::@return (byte*) utoa::buffer -(byte*) utoa::buffer#11 buffer zp[2]:7 29.142857142857146 -(byte*) utoa::buffer#14 buffer zp[2]:7 151.5 -(byte*) utoa::buffer#3 buffer zp[2]:7 4.0 -(byte*) utoa::buffer#4 buffer zp[2]:7 202.0 +(byte*) utoa::buffer#11 buffer zp[2]:7 287143.2857142857 +(byte*) utoa::buffer#14 buffer zp[2]:7 1500001.5 +(byte*) utoa::buffer#3 buffer zp[2]:7 20002.0 +(byte*) utoa::buffer#4 buffer zp[2]:7 2000002.0 (byte) utoa::digit -(byte) utoa::digit#1 digit zp[1]:4 202.0 -(byte) utoa::digit#2 digit zp[1]:4 28.857142857142858 +(byte) utoa::digit#1 digit zp[1]:4 2000002.0 +(byte) utoa::digit#2 digit zp[1]:4 285714.5714285714 (word) utoa::digit_value -(word) utoa::digit_value#0 digit_value zp[2]:15 60.599999999999994 +(word) utoa::digit_value#0 digit_value zp[2]:15 600000.6000000001 (word*) utoa::digit_values (byte) utoa::max_digits (const byte) utoa::max_digits#1 max_digits = (byte) 5 (byte) utoa::radix (byte) utoa::started -(byte) utoa::started#2 reg byte x 50.5 -(byte) utoa::started#4 reg byte x 101.0 +(byte) utoa::started#2 reg byte x 500000.5 +(byte) utoa::started#4 reg byte x 1000001.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:5 101.0 -(word) utoa::value#1 value zp[2]:5 2.0 -(word) utoa::value#2 value zp[2]:5 58.00000000000001 -(word) utoa::value#6 value zp[2]:5 151.5 +(word) utoa::value#0 value zp[2]:5 1000001.0 +(word) utoa::value#1 value zp[2]:5 5501.0 +(word) utoa::value#2 value zp[2]:5 572857.857142857 +(word) utoa::value#6 value zp[2]:5 1500001.5 (word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) (label) utoa_append::@1 (label) utoa_append::@2 (label) utoa_append::@3 (label) utoa_append::@return (byte*) utoa_append::buffer -(byte*) utoa_append::buffer#0 buffer zp[2]:7 12.875 +(byte*) utoa_append::buffer#0 buffer zp[2]:7 1375000.25 (byte) utoa_append::digit -(byte) utoa_append::digit#1 reg byte x 1001.0 -(byte) utoa_append::digit#2 reg byte x 1002.0 +(byte) utoa_append::digit#1 reg byte x 1.0000000001E10 +(byte) utoa_append::digit#2 reg byte x 1.00050000015E10 (word) utoa_append::return -(word) utoa_append::return#0 return zp[2]:5 202.0 +(word) utoa_append::return#0 return zp[2]:5 2000002.0 (word) utoa_append::sub -(word) utoa_append::sub#0 sub zp[2]:15 350.5 +(word) utoa_append::sub#0 sub zp[2]:15 3.3335000005E9 (word) utoa_append::value -(word) utoa_append::value#0 value zp[2]:5 34.33333333333333 -(word) utoa_append::value#1 value zp[2]:5 2002.0 -(word) utoa_append::value#2 value zp[2]:5 517.6666666666667 +(word) utoa_append::value#0 value zp[2]:5 3666667.333333333 +(word) utoa_append::value#1 value zp[2]:5 2.0000000002E10 +(word) utoa_append::value#2 value zp[2]:5 5.001833334166666E9 zp[2]:2 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] zp[1]:4 [ utoa::digit#2 utoa::digit#1 ] @@ -3848,7 +3842,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 101229 +Score: 101225 // File Comments // Upstart @@ -4367,8 +4361,7 @@ print_word: { .label w = $f // print_byte(>w) // [86] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [87] call print_byte // [91] phi from print_word to print_byte [phi:print_word->print_byte] // [91] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#51 [phi:print_word->print_byte#0] -- register_copy @@ -4377,8 +4370,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [91] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#13 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/millfork-benchmarks/romsum-kc.sym b/src/test/ref/millfork-benchmarks/romsum-kc.sym index 0c8f82952..89d7e4e1e 100644 --- a/src/test/ref/millfork-benchmarks/romsum-kc.sym +++ b/src/test/ref/millfork-benchmarks/romsum-kc.sym @@ -9,14 +9,14 @@ (const byte) RADIX::OCTAL = (number) 8 (const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a } (word) Ticks -(word) Ticks#1 Ticks zp[2]:13 2.0 -(word) Ticks#12 Ticks_1 zp[2]:15 4.0 +(word) Ticks#1 Ticks zp[2]:13 101.0 +(word) Ticks#12 Ticks_1 zp[2]:15 202.0 (const byte*) decimal_digits[(number) 6] = { fill( 6, 0) } (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:11 0.5263157894736842 +(word) last_time loadstore zp[2]:11 21.368421052631582 (signed word()) main() (label) main::@1 (label) main::@2 @@ -26,37 +26,37 @@ (label) main::@6 (label) main::@return (word) main::i -(word) main::i#2 i zp[2]:13 11.0 -(word) main::i#3 i zp[2]:13 3.666666666666667 +(word) main::i#2 i zp[2]:13 101.0 +(word) main::i#3 i zp[2]:13 33.666666666666664 (signed word) main::return (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 0.6153846153846154 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 39.5 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 4.0 -(byte*) print_char_cursor#46 print_char_cursor zp[2]:9 28.5 -(byte*) print_char_cursor#49 print_char_cursor zp[2]:9 2.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 0.8823529411764707 -(byte*) print_char_cursor#70 print_char_cursor zp[2]:9 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 1000001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 8546.461538461539 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 376263.125 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 110002.0 +(byte*) print_char_cursor#46 print_char_cursor zp[2]:9 25050.75 +(byte*) print_char_cursor#49 print_char_cursor zp[2]:9 4001.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 653.1176470588235 +(byte*) print_char_cursor#70 print_char_cursor zp[2]:9 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 54.16666666666666 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 0.7647058823529412 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 50034.16666666666 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 64.82352941176471 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -66,18 +66,18 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:5 202.0 -(byte*) print_str::str#2 str zp[2]:5 101.0 +(byte*) print_str::str#0 str zp[2]:5 2000002.0 +(byte*) print_str::str#2 str zp[2]:5 1000001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:15 2.0 +(word) print_word::w#0 w zp[2]:15 701.0 (void()) print_word_decimal((word) print_word_decimal::w) (label) print_word_decimal::@1 (label) print_word_decimal::@return (word) print_word_decimal::w -(word) print_word_decimal::w#0 w zp[2]:5 13.0 +(word) print_word_decimal::w#0 w zp[2]:5 1102.0 (const byte*) rom = (byte*) 57344 (void()) start() (label) start::@return @@ -88,25 +88,25 @@ (label) sum::@3 (label) sum::@return (byte) sum::i -(byte) sum::i#2 reg byte y 1501.5 -(byte) sum::i#3 reg byte y 1001.0 +(byte) sum::i#2 reg byte y 1500001.5 +(byte) sum::i#3 reg byte y 1000001.0 (byte*) sum::p -(byte*) sum::p#2 p zp[2]:7 101.0 -(byte*) sum::p#5 p zp[2]:7 171.85714285714283 +(byte*) sum::p#2 p zp[2]:7 100001.0 +(byte*) sum::p#5 p zp[2]:7 171428.99999999997 (byte) sum::page -(byte) sum::page#2 reg byte x 202.0 -(byte) sum::page#3 reg byte x 37.875 +(byte) sum::page#2 reg byte x 200002.0 +(byte) sum::page#3 reg byte x 37500.375 (word) sum::return -(word) sum::return#2 return zp[2]:5 22.0 +(word) sum::return#2 return zp[2]:5 202.0 (word) sum::s -(word) sum::s#2 s zp[2]:5 420.59999999999997 -(word) sum::s#3 s zp[2]:5 53.25 -(word) sum::s#4 s zp[2]:5 1051.5 +(word) sum::s#2 s zp[2]:5 420000.60000000003 +(word) sum::s#3 s zp[2]:5 50025.75 +(word) sum::s#4 s zp[2]:5 1050001.5 (byte) sum::tmp -(byte) sum::tmp#1 reg byte a 2002.0 +(byte) sum::tmp#1 reg byte a 2000002.0 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) -(byte~) utoa::$11 reg byte a 202.0 -(byte~) utoa::$4 reg byte a 4.0 +(byte~) utoa::$11 reg byte a 2000002.0 +(byte~) utoa::$4 reg byte a 20002.0 (label) utoa::@1 (label) utoa::@2 (label) utoa::@3 @@ -116,45 +116,45 @@ (label) utoa::@7 (label) utoa::@return (byte*) utoa::buffer -(byte*) utoa::buffer#11 buffer zp[2]:7 29.142857142857146 -(byte*) utoa::buffer#14 buffer zp[2]:7 151.5 -(byte*) utoa::buffer#3 buffer zp[2]:7 4.0 -(byte*) utoa::buffer#4 buffer zp[2]:7 202.0 +(byte*) utoa::buffer#11 buffer zp[2]:7 287143.2857142857 +(byte*) utoa::buffer#14 buffer zp[2]:7 1500001.5 +(byte*) utoa::buffer#3 buffer zp[2]:7 20002.0 +(byte*) utoa::buffer#4 buffer zp[2]:7 2000002.0 (byte) utoa::digit -(byte) utoa::digit#1 digit zp[1]:4 202.0 -(byte) utoa::digit#2 digit zp[1]:4 28.857142857142858 +(byte) utoa::digit#1 digit zp[1]:4 2000002.0 +(byte) utoa::digit#2 digit zp[1]:4 285714.5714285714 (word) utoa::digit_value -(word) utoa::digit_value#0 digit_value zp[2]:15 60.599999999999994 +(word) utoa::digit_value#0 digit_value zp[2]:15 600000.6000000001 (word*) utoa::digit_values (byte) utoa::max_digits (const byte) utoa::max_digits#1 max_digits = (byte) 5 (byte) utoa::radix (byte) utoa::started -(byte) utoa::started#2 reg byte x 50.5 -(byte) utoa::started#4 reg byte x 101.0 +(byte) utoa::started#2 reg byte x 500000.5 +(byte) utoa::started#4 reg byte x 1000001.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:5 101.0 -(word) utoa::value#1 value zp[2]:5 2.0 -(word) utoa::value#2 value zp[2]:5 58.00000000000001 -(word) utoa::value#6 value zp[2]:5 151.5 +(word) utoa::value#0 value zp[2]:5 1000001.0 +(word) utoa::value#1 value zp[2]:5 5501.0 +(word) utoa::value#2 value zp[2]:5 572857.857142857 +(word) utoa::value#6 value zp[2]:5 1500001.5 (word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) (label) utoa_append::@1 (label) utoa_append::@2 (label) utoa_append::@3 (label) utoa_append::@return (byte*) utoa_append::buffer -(byte*) utoa_append::buffer#0 buffer zp[2]:7 12.875 +(byte*) utoa_append::buffer#0 buffer zp[2]:7 1375000.25 (byte) utoa_append::digit -(byte) utoa_append::digit#1 reg byte x 1001.0 -(byte) utoa_append::digit#2 reg byte x 1002.0 +(byte) utoa_append::digit#1 reg byte x 1.0000000001E10 +(byte) utoa_append::digit#2 reg byte x 1.00050000015E10 (word) utoa_append::return -(word) utoa_append::return#0 return zp[2]:5 202.0 +(word) utoa_append::return#0 return zp[2]:5 2000002.0 (word) utoa_append::sub -(word) utoa_append::sub#0 sub zp[2]:15 350.5 +(word) utoa_append::sub#0 sub zp[2]:15 3.3335000005E9 (word) utoa_append::value -(word) utoa_append::value#0 value zp[2]:5 34.33333333333333 -(word) utoa_append::value#1 value zp[2]:5 2002.0 -(word) utoa_append::value#2 value zp[2]:5 517.6666666666667 +(word) utoa_append::value#0 value zp[2]:5 3666667.333333333 +(word) utoa_append::value#1 value zp[2]:5 2.0000000002E10 +(word) utoa_append::value#2 value zp[2]:5 5.001833334166666E9 zp[2]:2 [ print_line_cursor#9 print_line_cursor#20 print_line_cursor#1 ] zp[1]:4 [ utoa::digit#2 utoa::digit#1 ] diff --git a/src/test/ref/millfork-benchmarks/sieve-kc.asm b/src/test/ref/millfork-benchmarks/sieve-kc.asm index 2070a5ee4..21b4832aa 100644 --- a/src/test/ref/millfork-benchmarks/sieve-kc.asm +++ b/src/test/ref/millfork-benchmarks/sieve-kc.asm @@ -103,16 +103,14 @@ print_ln: { print_word: { .label w = $a // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 lda #<$400 sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 jsr print_byte // print_byte( (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:3::end:28::print_word:35 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [46] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:3::end:28::print_word:35 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [50] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:3::end:28::print_word:35::print_byte:47 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [30] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:3::end:28 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [32] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:3::end:28 [ last_time ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [33] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:3::end:28 [ Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [34] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:3::end:28 [ print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [50] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:3::end:28::print_word:35::print_byte:47 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [53] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:3::end:28::print_word:35::print_byte:47 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [58] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:3::end:28::print_word:35::print_byte:45::print_char:52 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:47::print_char:52 [ print_byte::b#2 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:45::print_char:55 [ print_word::w#0 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:47::print_char:55 [ print_char_cursor#25 ] ) always clobbers reg byte y +Statement [53] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:3::end:28::print_word:35::print_byte:47 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [58] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:3::end:28::print_word:35::print_byte:45::print_char:52 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:3::end:28::print_word:35::print_byte:47::print_char:52 [ print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:28::print_word:35::print_byte:45::print_char:55 [ print_word::w#0 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:3::end:28::print_word:35::print_byte:47::print_char:55 [ print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [65] if((byte*) round::p#2<(const byte*) Sieve+(const word) COUNT) goto round::@2 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] main:3::round:10 [ last_time round::p#2 ] main:3::round:12 [ last_time round::p#2 ] main:3::round:14 [ last_time round::p#2 ] main:3::round:16 [ last_time round::p#2 ] main:3::round:18 [ last_time round::p#2 ] main:3::round:20 [ last_time round::p#2 ] main:3::round:22 [ last_time round::p#2 ] main:3::round:24 [ last_time round::p#2 ] main:3::round:26 [ last_time round::p#2 ] ) always clobbers reg byte a -Statement [69] if(*((const byte*) Sieve + (byte) round::I#3)!=(byte) 0) goto round::@5 [ round::I#3 ] ( main:3::round:8 [ last_time round::I#3 ] main:3::round:10 [ last_time round::I#3 ] main:3::round:12 [ last_time round::I#3 ] main:3::round:14 [ last_time round::I#3 ] main:3::round:16 [ last_time round::I#3 ] main:3::round:18 [ last_time round::I#3 ] main:3::round:20 [ last_time round::I#3 ] main:3::round:22 [ last_time round::I#3 ] main:3::round:24 [ last_time round::I#3 ] main:3::round:26 [ last_time round::I#3 ] ) always clobbers reg byte a +Statement [65] if((byte*) round::p#2<(const byte*) Sieve+(const word) COUNT) goto round::@2 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] { } main:3::round:10 [ last_time round::p#2 ] { } main:3::round:12 [ last_time round::p#2 ] { } main:3::round:14 [ last_time round::p#2 ] { } main:3::round:16 [ last_time round::p#2 ] { } main:3::round:18 [ last_time round::p#2 ] { } main:3::round:20 [ last_time round::p#2 ] { } main:3::round:22 [ last_time round::p#2 ] { } main:3::round:24 [ last_time round::p#2 ] { } main:3::round:26 [ last_time round::p#2 ] { } ) always clobbers reg byte a +Statement [69] if(*((const byte*) Sieve + (byte) round::I#3)!=(byte) 0) goto round::@5 [ round::I#3 ] ( main:3::round:8 [ last_time round::I#3 ] { } main:3::round:10 [ last_time round::I#3 ] { } main:3::round:12 [ last_time round::I#3 ] { } main:3::round:14 [ last_time round::I#3 ] { } main:3::round:16 [ last_time round::I#3 ] { } main:3::round:18 [ last_time round::I#3 ] { } main:3::round:20 [ last_time round::I#3 ] { } main:3::round:22 [ last_time round::I#3 ] { } main:3::round:24 [ last_time round::I#3 ] { } main:3::round:26 [ last_time round::I#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ round::I#3 round::I#2 ] -Statement [70] (byte~) round::$4 ← (byte) round::I#3 << (byte) 1 [ round::I#3 round::$4 ] ( main:3::round:8 [ last_time round::I#3 round::$4 ] main:3::round:10 [ last_time round::I#3 round::$4 ] main:3::round:12 [ last_time round::I#3 round::$4 ] main:3::round:14 [ last_time round::I#3 round::$4 ] main:3::round:16 [ last_time round::I#3 round::$4 ] main:3::round:18 [ last_time round::I#3 round::$4 ] main:3::round:20 [ last_time round::I#3 round::$4 ] main:3::round:22 [ last_time round::I#3 round::$4 ] main:3::round:24 [ last_time round::I#3 round::$4 ] main:3::round:26 [ last_time round::I#3 round::$4 ] ) always clobbers reg byte a -Statement [71] (byte*) round::S#1 ← (const byte*) Sieve + (byte~) round::$4 [ round::I#3 round::S#1 ] ( main:3::round:8 [ last_time round::I#3 round::S#1 ] main:3::round:10 [ last_time round::I#3 round::S#1 ] main:3::round:12 [ last_time round::I#3 round::S#1 ] main:3::round:14 [ last_time round::I#3 round::S#1 ] main:3::round:16 [ last_time round::I#3 round::S#1 ] main:3::round:18 [ last_time round::I#3 round::S#1 ] main:3::round:20 [ last_time round::I#3 round::S#1 ] main:3::round:22 [ last_time round::I#3 round::S#1 ] main:3::round:24 [ last_time round::I#3 round::S#1 ] main:3::round:26 [ last_time round::I#3 round::S#1 ] ) always clobbers reg byte a -Statement [73] if((byte*) round::S#3<(const byte*) Sieve+(const word) COUNT) goto round::@7 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] main:3::round:10 [ last_time round::I#3 round::S#3 ] main:3::round:12 [ last_time round::I#3 round::S#3 ] main:3::round:14 [ last_time round::I#3 round::S#3 ] main:3::round:16 [ last_time round::I#3 round::S#3 ] main:3::round:18 [ last_time round::I#3 round::S#3 ] main:3::round:20 [ last_time round::I#3 round::S#3 ] main:3::round:22 [ last_time round::I#3 round::S#3 ] main:3::round:24 [ last_time round::I#3 round::S#3 ] main:3::round:26 [ last_time round::I#3 round::S#3 ] ) always clobbers reg byte a -Statement [75] *((byte*) round::S#3) ← (byte) 1 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] main:3::round:10 [ last_time round::I#3 round::S#3 ] main:3::round:12 [ last_time round::I#3 round::S#3 ] main:3::round:14 [ last_time round::I#3 round::S#3 ] main:3::round:16 [ last_time round::I#3 round::S#3 ] main:3::round:18 [ last_time round::I#3 round::S#3 ] main:3::round:20 [ last_time round::I#3 round::S#3 ] main:3::round:22 [ last_time round::I#3 round::S#3 ] main:3::round:24 [ last_time round::I#3 round::S#3 ] main:3::round:26 [ last_time round::I#3 round::S#3 ] ) always clobbers reg byte a reg byte y +Statement [70] (byte~) round::$4 ← (byte) round::I#3 << (byte) 1 [ round::I#3 round::$4 ] ( main:3::round:8 [ last_time round::I#3 round::$4 ] { } main:3::round:10 [ last_time round::I#3 round::$4 ] { } main:3::round:12 [ last_time round::I#3 round::$4 ] { } main:3::round:14 [ last_time round::I#3 round::$4 ] { } main:3::round:16 [ last_time round::I#3 round::$4 ] { } main:3::round:18 [ last_time round::I#3 round::$4 ] { } main:3::round:20 [ last_time round::I#3 round::$4 ] { } main:3::round:22 [ last_time round::I#3 round::$4 ] { } main:3::round:24 [ last_time round::I#3 round::$4 ] { } main:3::round:26 [ last_time round::I#3 round::$4 ] { } ) always clobbers reg byte a +Statement [71] (byte*) round::S#1 ← (const byte*) Sieve + (byte~) round::$4 [ round::I#3 round::S#1 ] ( main:3::round:8 [ last_time round::I#3 round::S#1 ] { } main:3::round:10 [ last_time round::I#3 round::S#1 ] { } main:3::round:12 [ last_time round::I#3 round::S#1 ] { } main:3::round:14 [ last_time round::I#3 round::S#1 ] { } main:3::round:16 [ last_time round::I#3 round::S#1 ] { } main:3::round:18 [ last_time round::I#3 round::S#1 ] { } main:3::round:20 [ last_time round::I#3 round::S#1 ] { } main:3::round:22 [ last_time round::I#3 round::S#1 ] { } main:3::round:24 [ last_time round::I#3 round::S#1 ] { } main:3::round:26 [ last_time round::I#3 round::S#1 ] { } ) always clobbers reg byte a +Statement [73] if((byte*) round::S#3<(const byte*) Sieve+(const word) COUNT) goto round::@7 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] { } main:3::round:10 [ last_time round::I#3 round::S#3 ] { } main:3::round:12 [ last_time round::I#3 round::S#3 ] { } main:3::round:14 [ last_time round::I#3 round::S#3 ] { } main:3::round:16 [ last_time round::I#3 round::S#3 ] { } main:3::round:18 [ last_time round::I#3 round::S#3 ] { } main:3::round:20 [ last_time round::I#3 round::S#3 ] { } main:3::round:22 [ last_time round::I#3 round::S#3 ] { } main:3::round:24 [ last_time round::I#3 round::S#3 ] { } main:3::round:26 [ last_time round::I#3 round::S#3 ] { } ) always clobbers reg byte a +Statement [75] *((byte*) round::S#3) ← (byte) 1 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] { } main:3::round:10 [ last_time round::I#3 round::S#3 ] { } main:3::round:12 [ last_time round::I#3 round::S#3 ] { } main:3::round:14 [ last_time round::I#3 round::S#3 ] { } main:3::round:16 [ last_time round::I#3 round::S#3 ] { } main:3::round:18 [ last_time round::I#3 round::S#3 ] { } main:3::round:20 [ last_time round::I#3 round::S#3 ] { } main:3::round:22 [ last_time round::I#3 round::S#3 ] { } main:3::round:24 [ last_time round::I#3 round::S#3 ] { } main:3::round:26 [ last_time round::I#3 round::S#3 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ round::I#3 round::I#2 ] -Statement [76] (byte*) round::S#2 ← (byte*) round::S#3 + (byte) round::I#3 [ round::I#3 round::S#2 ] ( main:3::round:8 [ last_time round::I#3 round::S#2 ] main:3::round:10 [ last_time round::I#3 round::S#2 ] main:3::round:12 [ last_time round::I#3 round::S#2 ] main:3::round:14 [ last_time round::I#3 round::S#2 ] main:3::round:16 [ last_time round::I#3 round::S#2 ] main:3::round:18 [ last_time round::I#3 round::S#2 ] main:3::round:20 [ last_time round::I#3 round::S#2 ] main:3::round:22 [ last_time round::I#3 round::S#2 ] main:3::round:24 [ last_time round::I#3 round::S#2 ] main:3::round:26 [ last_time round::I#3 round::S#2 ] ) always clobbers reg byte a -Statement [77] *((byte*) round::p#2) ← (byte) 0 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] main:3::round:10 [ last_time round::p#2 ] main:3::round:12 [ last_time round::p#2 ] main:3::round:14 [ last_time round::p#2 ] main:3::round:16 [ last_time round::p#2 ] main:3::round:18 [ last_time round::p#2 ] main:3::round:20 [ last_time round::p#2 ] main:3::round:22 [ last_time round::p#2 ] main:3::round:24 [ last_time round::p#2 ] main:3::round:26 [ last_time round::p#2 ] ) always clobbers reg byte a reg byte y -Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a -Statement [30] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:3::end:28 [ last_time Ticks#1 ] ) always clobbers reg byte a -Statement [32] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:3::end:28 [ last_time ] ) always clobbers reg byte a -Statement [33] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:3::end:28 [ Ticks#12 ] ) always clobbers reg byte a -Statement [34] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:3::end:28 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [44] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:3::end:28::print_word:35 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [46] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:3::end:28::print_word:35 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [50] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:3::end:28::print_word:35::print_byte:47 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a -Statement [53] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:3::end:28::print_word:35::print_byte:47 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [58] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:3::end:28::print_word:35::print_byte:45::print_char:52 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:47::print_char:52 [ print_byte::b#2 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:45::print_char:55 [ print_word::w#0 print_char_cursor#25 ] main:3::end:28::print_word:35::print_byte:47::print_char:55 [ print_char_cursor#25 ] ) always clobbers reg byte y +Statement [76] (byte*) round::S#2 ← (byte*) round::S#3 + (byte) round::I#3 [ round::I#3 round::S#2 ] ( main:3::round:8 [ last_time round::I#3 round::S#2 ] { } main:3::round:10 [ last_time round::I#3 round::S#2 ] { } main:3::round:12 [ last_time round::I#3 round::S#2 ] { } main:3::round:14 [ last_time round::I#3 round::S#2 ] { } main:3::round:16 [ last_time round::I#3 round::S#2 ] { } main:3::round:18 [ last_time round::I#3 round::S#2 ] { } main:3::round:20 [ last_time round::I#3 round::S#2 ] { } main:3::round:22 [ last_time round::I#3 round::S#2 ] { } main:3::round:24 [ last_time round::I#3 round::S#2 ] { } main:3::round:26 [ last_time round::I#3 round::S#2 ] { } ) always clobbers reg byte a +Statement [77] *((byte*) round::p#2) ← (byte) 0 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] { } main:3::round:10 [ last_time round::p#2 ] { } main:3::round:12 [ last_time round::p#2 ] { } main:3::round:14 [ last_time round::p#2 ] { } main:3::round:16 [ last_time round::p#2 ] { } main:3::round:18 [ last_time round::p#2 ] { } main:3::round:20 [ last_time round::p#2 ] { } main:3::round:22 [ last_time round::p#2 ] { } main:3::round:24 [ last_time round::p#2 ] { } main:3::round:26 [ last_time round::p#2 ] { } ) always clobbers reg byte a reg byte y +Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a +Statement [30] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:3::end:28 [ last_time Ticks#1 ] { } ) always clobbers reg byte a +Statement [32] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:3::end:28 [ last_time ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [33] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:3::end:28 [ Ticks#12 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [34] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:3::end:28 [ print_word::w#0 ] { { Ticks#12 = print_word::w#0 } } ) always clobbers reg byte a +Statement [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:3::end:28::print_ln:37 [ print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [50] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:3::end:28::print_word:35::print_byte:47 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [53] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:3::end:28::print_word:35::print_byte:45 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:3::end:28::print_word:35::print_byte:47 [ print_char_cursor#10 print_byte::$2 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [58] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:3::end:28::print_word:35::print_byte:45::print_char:52 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#25 = print_char_cursor#35 } } main:3::end:28::print_word:35::print_byte:47::print_char:52 [ print_byte::b#2 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#0 = print_char::ch#2 } } main:3::end:28::print_word:35::print_byte:45::print_char:55 [ print_word::w#0 print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#25 } } main:3::end:28::print_word:35::print_byte:47::print_char:55 [ print_char_cursor#25 ] { { Ticks#12 = print_word::w#0 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#35 print_char_cursor#25 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y -Statement [65] if((byte*) round::p#2<(const byte*) Sieve+(const word) COUNT) goto round::@2 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] main:3::round:10 [ last_time round::p#2 ] main:3::round:12 [ last_time round::p#2 ] main:3::round:14 [ last_time round::p#2 ] main:3::round:16 [ last_time round::p#2 ] main:3::round:18 [ last_time round::p#2 ] main:3::round:20 [ last_time round::p#2 ] main:3::round:22 [ last_time round::p#2 ] main:3::round:24 [ last_time round::p#2 ] main:3::round:26 [ last_time round::p#2 ] ) always clobbers reg byte a -Statement [69] if(*((const byte*) Sieve + (byte) round::I#3)!=(byte) 0) goto round::@5 [ round::I#3 ] ( main:3::round:8 [ last_time round::I#3 ] main:3::round:10 [ last_time round::I#3 ] main:3::round:12 [ last_time round::I#3 ] main:3::round:14 [ last_time round::I#3 ] main:3::round:16 [ last_time round::I#3 ] main:3::round:18 [ last_time round::I#3 ] main:3::round:20 [ last_time round::I#3 ] main:3::round:22 [ last_time round::I#3 ] main:3::round:24 [ last_time round::I#3 ] main:3::round:26 [ last_time round::I#3 ] ) always clobbers reg byte a -Statement [70] (byte~) round::$4 ← (byte) round::I#3 << (byte) 1 [ round::I#3 round::$4 ] ( main:3::round:8 [ last_time round::I#3 round::$4 ] main:3::round:10 [ last_time round::I#3 round::$4 ] main:3::round:12 [ last_time round::I#3 round::$4 ] main:3::round:14 [ last_time round::I#3 round::$4 ] main:3::round:16 [ last_time round::I#3 round::$4 ] main:3::round:18 [ last_time round::I#3 round::$4 ] main:3::round:20 [ last_time round::I#3 round::$4 ] main:3::round:22 [ last_time round::I#3 round::$4 ] main:3::round:24 [ last_time round::I#3 round::$4 ] main:3::round:26 [ last_time round::I#3 round::$4 ] ) always clobbers reg byte a -Statement [71] (byte*) round::S#1 ← (const byte*) Sieve + (byte~) round::$4 [ round::I#3 round::S#1 ] ( main:3::round:8 [ last_time round::I#3 round::S#1 ] main:3::round:10 [ last_time round::I#3 round::S#1 ] main:3::round:12 [ last_time round::I#3 round::S#1 ] main:3::round:14 [ last_time round::I#3 round::S#1 ] main:3::round:16 [ last_time round::I#3 round::S#1 ] main:3::round:18 [ last_time round::I#3 round::S#1 ] main:3::round:20 [ last_time round::I#3 round::S#1 ] main:3::round:22 [ last_time round::I#3 round::S#1 ] main:3::round:24 [ last_time round::I#3 round::S#1 ] main:3::round:26 [ last_time round::I#3 round::S#1 ] ) always clobbers reg byte a -Statement [73] if((byte*) round::S#3<(const byte*) Sieve+(const word) COUNT) goto round::@7 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] main:3::round:10 [ last_time round::I#3 round::S#3 ] main:3::round:12 [ last_time round::I#3 round::S#3 ] main:3::round:14 [ last_time round::I#3 round::S#3 ] main:3::round:16 [ last_time round::I#3 round::S#3 ] main:3::round:18 [ last_time round::I#3 round::S#3 ] main:3::round:20 [ last_time round::I#3 round::S#3 ] main:3::round:22 [ last_time round::I#3 round::S#3 ] main:3::round:24 [ last_time round::I#3 round::S#3 ] main:3::round:26 [ last_time round::I#3 round::S#3 ] ) always clobbers reg byte a -Statement [75] *((byte*) round::S#3) ← (byte) 1 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] main:3::round:10 [ last_time round::I#3 round::S#3 ] main:3::round:12 [ last_time round::I#3 round::S#3 ] main:3::round:14 [ last_time round::I#3 round::S#3 ] main:3::round:16 [ last_time round::I#3 round::S#3 ] main:3::round:18 [ last_time round::I#3 round::S#3 ] main:3::round:20 [ last_time round::I#3 round::S#3 ] main:3::round:22 [ last_time round::I#3 round::S#3 ] main:3::round:24 [ last_time round::I#3 round::S#3 ] main:3::round:26 [ last_time round::I#3 round::S#3 ] ) always clobbers reg byte a reg byte y -Statement [76] (byte*) round::S#2 ← (byte*) round::S#3 + (byte) round::I#3 [ round::I#3 round::S#2 ] ( main:3::round:8 [ last_time round::I#3 round::S#2 ] main:3::round:10 [ last_time round::I#3 round::S#2 ] main:3::round:12 [ last_time round::I#3 round::S#2 ] main:3::round:14 [ last_time round::I#3 round::S#2 ] main:3::round:16 [ last_time round::I#3 round::S#2 ] main:3::round:18 [ last_time round::I#3 round::S#2 ] main:3::round:20 [ last_time round::I#3 round::S#2 ] main:3::round:22 [ last_time round::I#3 round::S#2 ] main:3::round:24 [ last_time round::I#3 round::S#2 ] main:3::round:26 [ last_time round::I#3 round::S#2 ] ) always clobbers reg byte a -Statement [77] *((byte*) round::p#2) ← (byte) 0 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] main:3::round:10 [ last_time round::p#2 ] main:3::round:12 [ last_time round::p#2 ] main:3::round:14 [ last_time round::p#2 ] main:3::round:16 [ last_time round::p#2 ] main:3::round:18 [ last_time round::p#2 ] main:3::round:20 [ last_time round::p#2 ] main:3::round:22 [ last_time round::p#2 ] main:3::round:24 [ last_time round::p#2 ] main:3::round:26 [ last_time round::p#2 ] ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) round::p#2<(const byte*) Sieve+(const word) COUNT) goto round::@2 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] { } main:3::round:10 [ last_time round::p#2 ] { } main:3::round:12 [ last_time round::p#2 ] { } main:3::round:14 [ last_time round::p#2 ] { } main:3::round:16 [ last_time round::p#2 ] { } main:3::round:18 [ last_time round::p#2 ] { } main:3::round:20 [ last_time round::p#2 ] { } main:3::round:22 [ last_time round::p#2 ] { } main:3::round:24 [ last_time round::p#2 ] { } main:3::round:26 [ last_time round::p#2 ] { } ) always clobbers reg byte a +Statement [69] if(*((const byte*) Sieve + (byte) round::I#3)!=(byte) 0) goto round::@5 [ round::I#3 ] ( main:3::round:8 [ last_time round::I#3 ] { } main:3::round:10 [ last_time round::I#3 ] { } main:3::round:12 [ last_time round::I#3 ] { } main:3::round:14 [ last_time round::I#3 ] { } main:3::round:16 [ last_time round::I#3 ] { } main:3::round:18 [ last_time round::I#3 ] { } main:3::round:20 [ last_time round::I#3 ] { } main:3::round:22 [ last_time round::I#3 ] { } main:3::round:24 [ last_time round::I#3 ] { } main:3::round:26 [ last_time round::I#3 ] { } ) always clobbers reg byte a +Statement [70] (byte~) round::$4 ← (byte) round::I#3 << (byte) 1 [ round::I#3 round::$4 ] ( main:3::round:8 [ last_time round::I#3 round::$4 ] { } main:3::round:10 [ last_time round::I#3 round::$4 ] { } main:3::round:12 [ last_time round::I#3 round::$4 ] { } main:3::round:14 [ last_time round::I#3 round::$4 ] { } main:3::round:16 [ last_time round::I#3 round::$4 ] { } main:3::round:18 [ last_time round::I#3 round::$4 ] { } main:3::round:20 [ last_time round::I#3 round::$4 ] { } main:3::round:22 [ last_time round::I#3 round::$4 ] { } main:3::round:24 [ last_time round::I#3 round::$4 ] { } main:3::round:26 [ last_time round::I#3 round::$4 ] { } ) always clobbers reg byte a +Statement [71] (byte*) round::S#1 ← (const byte*) Sieve + (byte~) round::$4 [ round::I#3 round::S#1 ] ( main:3::round:8 [ last_time round::I#3 round::S#1 ] { } main:3::round:10 [ last_time round::I#3 round::S#1 ] { } main:3::round:12 [ last_time round::I#3 round::S#1 ] { } main:3::round:14 [ last_time round::I#3 round::S#1 ] { } main:3::round:16 [ last_time round::I#3 round::S#1 ] { } main:3::round:18 [ last_time round::I#3 round::S#1 ] { } main:3::round:20 [ last_time round::I#3 round::S#1 ] { } main:3::round:22 [ last_time round::I#3 round::S#1 ] { } main:3::round:24 [ last_time round::I#3 round::S#1 ] { } main:3::round:26 [ last_time round::I#3 round::S#1 ] { } ) always clobbers reg byte a +Statement [73] if((byte*) round::S#3<(const byte*) Sieve+(const word) COUNT) goto round::@7 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] { } main:3::round:10 [ last_time round::I#3 round::S#3 ] { } main:3::round:12 [ last_time round::I#3 round::S#3 ] { } main:3::round:14 [ last_time round::I#3 round::S#3 ] { } main:3::round:16 [ last_time round::I#3 round::S#3 ] { } main:3::round:18 [ last_time round::I#3 round::S#3 ] { } main:3::round:20 [ last_time round::I#3 round::S#3 ] { } main:3::round:22 [ last_time round::I#3 round::S#3 ] { } main:3::round:24 [ last_time round::I#3 round::S#3 ] { } main:3::round:26 [ last_time round::I#3 round::S#3 ] { } ) always clobbers reg byte a +Statement [75] *((byte*) round::S#3) ← (byte) 1 [ round::I#3 round::S#3 ] ( main:3::round:8 [ last_time round::I#3 round::S#3 ] { } main:3::round:10 [ last_time round::I#3 round::S#3 ] { } main:3::round:12 [ last_time round::I#3 round::S#3 ] { } main:3::round:14 [ last_time round::I#3 round::S#3 ] { } main:3::round:16 [ last_time round::I#3 round::S#3 ] { } main:3::round:18 [ last_time round::I#3 round::S#3 ] { } main:3::round:20 [ last_time round::I#3 round::S#3 ] { } main:3::round:22 [ last_time round::I#3 round::S#3 ] { } main:3::round:24 [ last_time round::I#3 round::S#3 ] { } main:3::round:26 [ last_time round::I#3 round::S#3 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (byte*) round::S#2 ← (byte*) round::S#3 + (byte) round::I#3 [ round::I#3 round::S#2 ] ( main:3::round:8 [ last_time round::I#3 round::S#2 ] { } main:3::round:10 [ last_time round::I#3 round::S#2 ] { } main:3::round:12 [ last_time round::I#3 round::S#2 ] { } main:3::round:14 [ last_time round::I#3 round::S#2 ] { } main:3::round:16 [ last_time round::I#3 round::S#2 ] { } main:3::round:18 [ last_time round::I#3 round::S#2 ] { } main:3::round:20 [ last_time round::I#3 round::S#2 ] { } main:3::round:22 [ last_time round::I#3 round::S#2 ] { } main:3::round:24 [ last_time round::I#3 round::S#2 ] { } main:3::round:26 [ last_time round::I#3 round::S#2 ] { } ) always clobbers reg byte a +Statement [77] *((byte*) round::p#2) ← (byte) 0 [ round::p#2 ] ( main:3::round:8 [ last_time round::p#2 ] { } main:3::round:10 [ last_time round::p#2 ] { } main:3::round:12 [ last_time round::p#2 ] { } main:3::round:14 [ last_time round::p#2 ] { } main:3::round:16 [ last_time round::p#2 ] { } main:3::round:18 [ last_time round::p#2 ] { } main:3::round:20 [ last_time round::p#2 ] { } main:3::round:22 [ last_time round::p#2 ] { } main:3::round:24 [ last_time round::p#2 ] { } main:3::round:26 [ last_time round::p#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print_line_cursor#8 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -1669,27 +1665,27 @@ Potential registers zp[1]:22 [ print_byte::$2 ] : zp[1]:22 , reg byte a , reg by Potential registers zp[1]:23 [ round::$4 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [round] 362.33: zp[2]:11 [ round::S#3 round::S#2 round::S#1 ] 39.33: zp[1]:10 [ round::I#3 round::I#2 ] 36.67: zp[2]:8 [ round::p#2 round::p#1 ] 22: zp[1]:23 [ round::$4 ] -Uplift Scope [] 38.5: zp[2]:2 [ print_line_cursor#8 print_line_cursor#1 ] 6.33: zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] 4: zp[2]:17 [ Ticks#12 ] 2: zp[2]:15 [ Ticks#1 ] 0.36: zp[2]:13 [ last_time ] -Uplift Scope [print_byte] 10: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:21 [ print_byte::$0 ] 4: zp[1]:22 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word] 2: zp[2]:19 [ print_word::w#0 ] +Uplift Scope [print_char] 160,007: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 120,787.22: zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] 35,003.5: zp[2]:2 [ print_line_cursor#8 print_line_cursor#1 ] 202: zp[2]:17 [ Ticks#12 ] 101: zp[2]:15 [ Ticks#1 ] 14.5: zp[2]:13 [ last_time ] +Uplift Scope [print_byte] 20,002: zp[1]:21 [ print_byte::$0 ] 20,002: zp[1]:22 [ print_byte::$2 ] 9,505: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [round] 35,672.33: zp[2]:11 [ round::S#3 round::S#2 round::S#1 ] 3,669.33: zp[1]:10 [ round::I#3 round::I#2 ] 3,336.67: zp[2]:8 [ round::p#2 round::p#1 ] 2,002: zp[1]:23 [ round::$4 ] +Uplift Scope [print_word] 701: zp[2]:19 [ print_word::w#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [start] Uplift Scope [end] Uplift Scope [main] -Uplifting [round] best 7429 combination zp[2]:11 [ round::S#3 round::S#2 round::S#1 ] reg byte x [ round::I#3 round::I#2 ] zp[2]:8 [ round::p#2 round::p#1 ] reg byte a [ round::$4 ] -Uplifting [] best 7429 combination zp[2]:2 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] zp[2]:17 [ Ticks#12 ] zp[2]:15 [ Ticks#1 ] zp[2]:13 [ last_time ] -Uplifting [print_byte] best 7415 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 7406 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word] best 7406 combination zp[2]:19 [ print_word::w#0 ] -Uplifting [RADIX] best 7406 combination -Uplifting [print_ln] best 7406 combination -Uplifting [start] best 7406 combination -Uplifting [end] best 7406 combination -Uplifting [main] best 7406 combination +Uplifting [print_char] best 7710 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [] best 7710 combination zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] zp[2]:2 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:17 [ Ticks#12 ] zp[2]:15 [ Ticks#1 ] zp[2]:13 [ last_time ] +Uplifting [print_byte] best 7692 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [round] best 7402 combination zp[2]:11 [ round::S#3 round::S#2 round::S#1 ] reg byte x [ round::I#3 round::I#2 ] zp[2]:8 [ round::p#2 round::p#1 ] reg byte a [ round::$4 ] +Uplifting [print_word] best 7402 combination zp[2]:19 [ print_word::w#0 ] +Uplifting [RADIX] best 7402 combination +Uplifting [print_ln] best 7402 combination +Uplifting [start] best 7402 combination +Uplifting [end] best 7402 combination +Uplifting [main] best 7402 combination Coalescing zero page register [ zp[2]:17 [ Ticks#12 ] ] with [ zp[2]:19 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:15 [ Ticks#1 ] ] with [ zp[2]:8 [ round::p#2 round::p#1 ] ] Coalescing zero page register [ zp[2]:17 [ Ticks#12 print_word::w#0 ] ] with [ zp[2]:11 [ round::S#3 round::S#2 round::S#1 ] ] @@ -1932,8 +1928,7 @@ print_ln: { print_word: { .label w = $a // [44] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [45] call print_byte // [49] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -1948,8 +1943,7 @@ print_word: { // print_word::@1 __b1: // [46] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [47] call print_byte // [49] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2276,13 +2270,13 @@ FINAL SYMBOL TABLE (const byte) SQRT_COUNT = (byte) $80 (const byte*) Sieve[(const word) COUNT] = { fill( COUNT, 0) } (word) Ticks -(word) Ticks#1 Ticks zp[2]:8 2.0 -(word) Ticks#12 Ticks_1 zp[2]:10 4.0 +(word) Ticks#1 Ticks zp[2]:8 101.0 +(word) Ticks#12 Ticks_1 zp[2]:10 202.0 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:6 0.3571428571428571 +(word) last_time loadstore zp[2]:6 14.500000000000002 (signed word()) main() (label) main::@1 (label) main::@10 @@ -2298,28 +2292,28 @@ FINAL SYMBOL TABLE (label) main::@return (signed word) main::return (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 1.0 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:4 1.3333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 7117.882352941177 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 110002.0 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:4 3667.333333333333 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2328,9 +2322,9 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 2.0 +(word) print_word::w#0 w zp[2]:10 701.0 (void()) round() -(byte~) round::$4 reg byte a 22.0 +(byte~) round::$4 reg byte a 2002.0 (label) round::@1 (label) round::@2 (label) round::@3 @@ -2341,15 +2335,15 @@ FINAL SYMBOL TABLE (label) round::@8 (label) round::@return (byte) round::I -(byte) round::I#2 reg byte x 22.0 -(byte) round::I#3 reg byte x 17.333333333333332 +(byte) round::I#2 reg byte x 2002.0 +(byte) round::I#3 reg byte x 1667.3333333333333 (byte*) round::S -(byte*) round::S#1 S zp[2]:10 22.0 -(byte*) round::S#2 S zp[2]:10 202.0 -(byte*) round::S#3 S zp[2]:10 138.33333333333331 +(byte*) round::S#1 S zp[2]:10 2002.0 +(byte*) round::S#2 S zp[2]:10 20002.0 +(byte*) round::S#3 S zp[2]:10 13668.333333333332 (byte*) round::p -(byte*) round::p#1 p zp[2]:8 22.0 -(byte*) round::p#2 p zp[2]:8 14.666666666666666 +(byte*) round::p#1 p zp[2]:8 2002.0 +(byte*) round::p#2 p zp[2]:8 1334.6666666666667 (void()) start() (label) start::@return (const word*) start::LAST_TIME = &(word) last_time @@ -2368,7 +2362,7 @@ reg byte a [ round::$4 ] FINAL ASSEMBLER -Score: 6489 +Score: 6485 // File Comments // Upstart @@ -2560,8 +2554,7 @@ print_word: { .label w = $a // print_byte(>w) // [44] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [45] call print_byte // [49] phi from print_word to print_byte [phi:print_word->print_byte] // [49] phi (byte*) print_char_cursor#35 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1 @@ -2574,8 +2567,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [49] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/millfork-benchmarks/sieve-kc.sym b/src/test/ref/millfork-benchmarks/sieve-kc.sym index b8041cbf2..683dbaaaf 100644 --- a/src/test/ref/millfork-benchmarks/sieve-kc.sym +++ b/src/test/ref/millfork-benchmarks/sieve-kc.sym @@ -10,13 +10,13 @@ (const byte) SQRT_COUNT = (byte) $80 (const byte*) Sieve[(const word) COUNT] = { fill( COUNT, 0) } (word) Ticks -(word) Ticks#1 Ticks zp[2]:8 2.0 -(word) Ticks#12 Ticks_1 zp[2]:10 4.0 +(word) Ticks#1 Ticks zp[2]:8 101.0 +(word) Ticks#12 Ticks_1 zp[2]:10 202.0 (void()) end() (label) end::@1 (label) end::@2 (label) end::@return -(word) last_time loadstore zp[2]:6 0.3571428571428571 +(word) last_time loadstore zp[2]:6 14.500000000000002 (signed word()) main() (label) main::@1 (label) main::@10 @@ -32,28 +32,28 @@ (label) main::@return (signed word) main::return (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 1.0 -(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:4 1.3333333333333333 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 7117.882352941177 +(byte*) print_char_cursor#25 print_char_cursor zp[2]:4 110002.0 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:4 3667.333333333333 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 22.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 15001.5 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 20002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -62,9 +62,9 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 2.0 +(word) print_word::w#0 w zp[2]:10 701.0 (void()) round() -(byte~) round::$4 reg byte a 22.0 +(byte~) round::$4 reg byte a 2002.0 (label) round::@1 (label) round::@2 (label) round::@3 @@ -75,15 +75,15 @@ (label) round::@8 (label) round::@return (byte) round::I -(byte) round::I#2 reg byte x 22.0 -(byte) round::I#3 reg byte x 17.333333333333332 +(byte) round::I#2 reg byte x 2002.0 +(byte) round::I#3 reg byte x 1667.3333333333333 (byte*) round::S -(byte*) round::S#1 S zp[2]:10 22.0 -(byte*) round::S#2 S zp[2]:10 202.0 -(byte*) round::S#3 S zp[2]:10 138.33333333333331 +(byte*) round::S#1 S zp[2]:10 2002.0 +(byte*) round::S#2 S zp[2]:10 20002.0 +(byte*) round::S#3 S zp[2]:10 13668.333333333332 (byte*) round::p -(byte*) round::p#1 p zp[2]:8 22.0 -(byte*) round::p#2 p zp[2]:8 14.666666666666666 +(byte*) round::p#1 p zp[2]:8 2002.0 +(byte*) round::p#2 p zp[2]:8 1334.6666666666667 (void()) start() (label) start::@return (const word*) start::LAST_TIME = &(word) last_time diff --git a/src/test/ref/min-fmul-16.asm b/src/test/ref/min-fmul-16.asm index 003b3368d..d3afa66ee 100644 --- a/src/test/ref/min-fmul-16.asm +++ b/src/test/ref/min-fmul-16.asm @@ -68,12 +68,10 @@ print_dword: { print_word: { .label w = 4 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (dword) print_dword::dw#0 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:15 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_word::w#1 print_char_cursor#10 ] ( main:2::print_dword:15 [ print_word::w#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#34 print_byte::b#0 ] ( main:2::print_dword:15::print_word:21 [ print_dword::dw#0 print_word::w#2 print_char_cursor#34 print_byte::b#0 ] main:2::print_dword:15::print_word:23 [ print_word::w#2 print_char_cursor#34 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_dword:15::print_word:21 [ print_dword::dw#0 print_char_cursor#10 print_byte::b#1 ] main:2::print_dword:15::print_word:23 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:23::print_byte:29 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ) always clobbers reg byte a +Statement [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ print_char_cursor#16 ] ( main:2 [ print_char_cursor#16 ] { } ) always clobbers reg byte a +Statement [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 [ print_char_cursor#16 mulf16u::return#0 ] ( main:2 [ print_char_cursor#16 mulf16u::return#0 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [12] (dword) main::r#0 ← (dword) mulf16u::return#0 [ print_char_cursor#16 main::r#0 ] ( main:2 [ print_char_cursor#16 main::r#0 ] { { print_dword::dw#0 = main::r#0 } } ) always clobbers reg byte a +Statement [14] (dword) print_dword::dw#0 ← (dword) main::r#0 [ print_char_cursor#16 print_dword::dw#0 ] ( main:2 [ print_char_cursor#16 print_dword::dw#0 ] { { print_dword::dw#0 = main::r#0 } } ) always clobbers reg byte a +Statement [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:15 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_word::w#1 print_char_cursor#10 ] ( main:2::print_dword:15 [ print_word::w#1 print_char_cursor#10 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:23::print_byte:29 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 [ print_char_cursor#27 ] ( main:2::print_dword:15::print_word:21::print_byte:27::print_char:34 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:27::print_char:34 [ print_word::w#2 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:29::print_char:34 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:29::print_char:34 [ print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:27::print_char:37 [ print_dword::dw#0 print_word::w#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:27::print_char:37 [ print_word::w#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:29::print_char:37 [ print_dword::dw#0 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:29::print_char:37 [ print_char_cursor#27 ] ) always clobbers reg byte y +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#27 } } main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29 [ print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 [ print_char_cursor#27 ] ( main:2::print_dword:15::print_word:21::print_byte:27::print_char:34 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:27::print_char:34 [ print_word::w#2 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29::print_char:34 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29::print_char:34 [ print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:27::print_char:37 [ print_dword::dw#0 print_word::w#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#27 } } main:2::print_dword:15::print_word:23::print_byte:27::print_char:37 [ print_word::w#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29::print_char:37 [ print_dword::dw#0 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29::print_char:37 [ print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [43] *((const word*) mulf16u::memA) ← (const word) main::a [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] ) always clobbers reg byte a -Statement [44] *((const word*) mulf16u::memB) ← (const word) main::b [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] ) always clobbers reg byte a +Statement [43] *((const word*) mulf16u::memA) ← (const word) main::a [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [44] *((const word*) mulf16u::memB) ← (const word) main::b [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) 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 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR) [ mulf16u::return#1 ] ( main:2::mulf16u:10 [ print_char_cursor#16 mulf16u::return#1 ] ) always clobbers reg byte a -Statement [50] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR) [ mulf16u::return#1 ] ( main:2::mulf16u:10 [ print_char_cursor#16 mulf16u::return#1 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [50] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [52] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [52] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [53] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [56] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [53] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [56] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [57] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [59] (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:5 [ 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 [65] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [70] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [71] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [57] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [59] (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:5 [ 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 [65] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [71] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [72] (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:5 [ 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 [73] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [75] (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:5 [ 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 [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ print_char_cursor#16 ] ( main:2 [ print_char_cursor#16 ] ) always clobbers reg byte a -Statement [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 [ print_char_cursor#16 mulf16u::return#0 ] ( main:2 [ print_char_cursor#16 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [12] (dword) main::r#0 ← (dword) mulf16u::return#0 [ print_char_cursor#16 main::r#0 ] ( main:2 [ print_char_cursor#16 main::r#0 ] ) always clobbers reg byte a -Statement [14] (dword) print_dword::dw#0 ← (dword) main::r#0 [ print_char_cursor#16 print_dword::dw#0 ] ( main:2 [ print_char_cursor#16 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:15 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_word::w#1 print_char_cursor#10 ] ( main:2::print_dword:15 [ print_word::w#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#34 print_byte::b#0 ] ( main:2::print_dword:15::print_word:21 [ print_dword::dw#0 print_word::w#2 print_char_cursor#34 print_byte::b#0 ] main:2::print_dword:15::print_word:23 [ print_word::w#2 print_char_cursor#34 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_dword:15::print_word:21 [ print_dword::dw#0 print_char_cursor#10 print_byte::b#1 ] main:2::print_dword:15::print_word:23 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] main:2::print_dword:15::print_word:23::print_byte:29 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_char_cursor#10 print_byte::$2 ] main:2::print_dword:15::print_word:23::print_byte:29 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 [ print_char_cursor#27 ] ( main:2::print_dword:15::print_word:21::print_byte:27::print_char:34 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:27::print_char:34 [ print_word::w#2 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:29::print_char:34 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:29::print_char:34 [ print_byte::b#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:27::print_char:37 [ print_dword::dw#0 print_word::w#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:27::print_char:37 [ print_word::w#2 print_char_cursor#27 ] main:2::print_dword:15::print_word:21::print_byte:29::print_char:37 [ print_dword::dw#0 print_char_cursor#27 ] main:2::print_dword:15::print_word:23::print_byte:29::print_char:37 [ print_char_cursor#27 ] ) always clobbers reg byte y -Statement [43] *((const word*) mulf16u::memA) ← (const word) main::a [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] ) always clobbers reg byte a -Statement [44] *((const word*) mulf16u::memB) ← (const word) main::b [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] ) always clobbers reg byte a +Statement [73] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [75] (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:5 [ 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 [8] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ print_char_cursor#16 ] ( main:2 [ print_char_cursor#16 ] { } ) always clobbers reg byte a +Statement [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 [ print_char_cursor#16 mulf16u::return#0 ] ( main:2 [ print_char_cursor#16 mulf16u::return#0 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [12] (dword) main::r#0 ← (dword) mulf16u::return#0 [ print_char_cursor#16 main::r#0 ] ( main:2 [ print_char_cursor#16 main::r#0 ] { { print_dword::dw#0 = main::r#0 } } ) always clobbers reg byte a +Statement [14] (dword) print_dword::dw#0 ← (dword) main::r#0 [ print_char_cursor#16 print_dword::dw#0 ] ( main:2 [ print_char_cursor#16 print_dword::dw#0 ] { { print_dword::dw#0 = main::r#0 } } ) always clobbers reg byte a +Statement [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:15 [ print_char_cursor#16 print_dword::dw#0 print_word::w#0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_word::w#1 print_char_cursor#10 ] ( main:2::print_dword:15 [ print_word::w#1 print_char_cursor#10 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29 [ print_byte::b#2 print_char_cursor#36 print_byte::$0 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_dword:15::print_word:21::print_byte:27 [ print_dword::dw#0 print_word::w#2 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#27 } } main:2::print_dword:15::print_word:23::print_byte:27 [ print_word::w#2 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29 [ print_dword::dw#0 print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29 [ print_char_cursor#10 print_byte::$2 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 [ print_char_cursor#27 ] ( main:2::print_dword:15::print_word:21::print_byte:27::print_char:34 [ print_dword::dw#0 print_word::w#2 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:27::print_char:34 [ print_word::w#2 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29::print_char:34 [ print_dword::dw#0 print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29::print_char:34 [ print_byte::b#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:27::print_char:37 [ print_dword::dw#0 print_word::w#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#27 } } main:2::print_dword:15::print_word:23::print_byte:27::print_char:37 [ print_word::w#2 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:21::print_byte:29::print_char:37 [ print_dword::dw#0 print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#0 = print_word::w#2 } { print_char_cursor#16 = print_char_cursor#34 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#36 print_char_cursor#27 } { print_char::ch#1 = print_char::ch#2 } } main:2::print_dword:15::print_word:23::print_byte:29::print_char:37 [ print_char_cursor#27 ] { { print_dword::dw#0 = main::r#0 } { print_word::w#1 = print_word::w#2 } { print_char_cursor#10 = print_char_cursor#34 print_char_cursor#36 print_char_cursor#27 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y +Statement [43] *((const word*) mulf16u::memA) ← (const word) main::a [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [44] *((const word*) mulf16u::memB) ← (const word) main::b [ ] ( main:2::mulf16u:10 [ print_char_cursor#16 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) 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 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR) [ mulf16u::return#1 ] ( main:2::mulf16u:10 [ print_char_cursor#16 mulf16u::return#1 ] ) always clobbers reg byte a -Statement [50] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [52] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [53] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] ) always clobbers reg byte a -Statement [56] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [57] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [59] (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:5 [ 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 [65] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [70] (byte~) mulf_init::$4 ← < (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::$4 ] ( main:2::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 mulf_init::$4 ] ) always clobbers reg byte a -Statement [71] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [72] (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:5 [ 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 [73] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [75] (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:5 [ 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 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR) [ mulf16u::return#1 ] ( main:2::mulf16u:10 [ print_char_cursor#16 mulf16u::return#1 ] { { mulf16u::return#0 = mulf16u::return#1 } } ) always clobbers reg byte a +Statement [50] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [52] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:5 [ ] { } ) always clobbers reg byte a +Statement [56] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [57] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:5 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [59] (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:5 [ 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 [65] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:5 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [71] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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:5 [ 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 [73] *((byte*) mulf_init::sqr1_hi#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:5 [ 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 [75] (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:5 [ 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 Potential registers zp[2]:2 [ print_word::w#2 print_word::w#0 print_word::w#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -1986,34 +1978,34 @@ Potential registers zp[1]:41 [ mulf_init::$4 ] : zp[1]:41 , reg byte a , reg byt Potential registers zp[1]:42 [ mulf_init::$5 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mulf_init] 47.67: zp[2]:20 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:14 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:8 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:13 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:40 [ mulf_init::$1 ] 22: zp[1]:41 [ mulf_init::$4 ] 22: zp[1]:42 [ mulf_init::$5 ] 15.4: zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:17 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:11 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [mulf16u] 22: zp[4]:22 [ mulf16u::return#0 ] 4.33: zp[4]:36 [ mulf16u::return#1 ] -Uplift Scope [print_byte] 10: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:34 [ print_byte::$0 ] 4: zp[1]:35 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [main] 11: zp[4]:26 [ main::r#0 ] -Uplift Scope [print_word] 10.67: zp[2]:2 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplift Scope [] 9.84: zp[2]:6 [ print_char_cursor#27 print_char_cursor#36 print_char_cursor#34 print_char_cursor#16 print_char_cursor#10 ] -Uplift Scope [print_dword] 5: zp[4]:30 [ print_dword::dw#0 ] +Uplift Scope [print_char] 1,600,007: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 1,231,577.57: zp[2]:6 [ print_char_cursor#27 print_char_cursor#36 print_char_cursor#34 print_char_cursor#16 print_char_cursor#10 ] +Uplift Scope [print_byte] 200,002: zp[1]:34 [ print_byte::$0 ] 200,002: zp[1]:35 [ print_byte::$2 ] 95,005: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:20 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:14 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:8 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:13 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:40 [ mulf_init::$1 ] 2,002: zp[1]:41 [ mulf_init::$4 ] 2,002: zp[1]:42 [ mulf_init::$5 ] 1,401.4: zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:17 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:11 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [print_word] 11,338.67: zp[2]:2 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplift Scope [print_dword] 701: zp[4]:30 [ print_dword::dw#0 ] +Uplift Scope [mulf16u] 367.33: zp[4]:36 [ mulf16u::return#1 ] 202: zp[4]:22 [ mulf16u::return#0 ] +Uplift Scope [main] 101: zp[4]:26 [ main::r#0 ] Uplift Scope [RADIX] Uplift Scope [print_set_screen] -Uplifting [mulf_init] best 6046 combination zp[2]:20 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:14 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:8 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:17 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:11 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [print_char] best 6287 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [] best 6287 combination zp[2]:6 [ print_char_cursor#27 print_char_cursor#36 print_char_cursor#34 print_char_cursor#16 print_char_cursor#10 ] +Uplifting [print_byte] best 6269 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [mulf_init] best 6019 combination zp[2]:20 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:14 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:8 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:17 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:11 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [mulf16u] best 6046 combination zp[4]:22 [ mulf16u::return#0 ] zp[4]:36 [ mulf16u::return#1 ] -Uplifting [print_byte] best 6032 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 6023 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [main] best 6023 combination zp[4]:26 [ main::r#0 ] -Uplifting [print_word] best 6023 combination zp[2]:2 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplifting [] best 6023 combination zp[2]:6 [ print_char_cursor#27 print_char_cursor#36 print_char_cursor#34 print_char_cursor#16 print_char_cursor#10 ] -Uplifting [print_dword] best 6023 combination zp[4]:30 [ print_dword::dw#0 ] -Uplifting [RADIX] best 6023 combination -Uplifting [print_set_screen] best 6023 combination +Uplifting [print_word] best 6019 combination zp[2]:2 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplifting [print_dword] best 6019 combination zp[4]:30 [ print_dword::dw#0 ] +Uplifting [mulf16u] best 6019 combination zp[4]:36 [ mulf16u::return#1 ] zp[4]:22 [ mulf16u::return#0 ] +Uplifting [main] best 6019 combination zp[4]:26 [ main::r#0 ] +Uplifting [RADIX] best 6019 combination +Uplifting [print_set_screen] best 6019 combination Attempting to uplift remaining variables inzp[1]:16 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 5883 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 5879 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 5883 combination zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 5879 combination zp[1]:19 [ mulf_init::dir#2 mulf_init::dir#4 ] Attempting to uplift remaining variables inzp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 5883 combination zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 5879 combination zp[1]:10 [ mulf_init::c#2 mulf_init::c#1 ] Coalescing zero page register [ zp[4]:22 [ mulf16u::return#0 ] ] with [ zp[4]:26 [ main::r#0 ] ] - score: 1 Coalescing zero page register [ zp[4]:22 [ mulf16u::return#0 main::r#0 ] ] with [ zp[4]:36 [ mulf16u::return#1 ] ] - score: 1 Coalescing zero page register [ zp[4]:22 [ mulf16u::return#0 main::r#0 mulf16u::return#1 ] ] with [ zp[4]:30 [ print_dword::dw#0 ] ] - score: 1 @@ -2172,8 +2164,7 @@ print_dword: { print_word: { .label w = 4 // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [27] call print_byte // [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -2184,8 +2175,7 @@ print_word: { // print_word::@1 __b1: // [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [29] call print_byte // [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2714,7 +2704,7 @@ FINAL SYMBOL TABLE (const word) main::a = (word) $4d2 (const word) main::b = (word) $929 (dword) main::r -(dword) main::r#0 r zp[4]:16 11.0 +(dword) main::r#0 r zp[4]:16 101.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a @@ -2723,12 +2713,12 @@ FINAL SYMBOL TABLE (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:16 22.0 -(dword) mulf16u::return#1 return zp[4]:16 4.333333333333333 +(dword) mulf16u::return#0 return zp[4]:16 202.0 +(dword) mulf16u::return#1 return zp[4]:16 367.33333333333337 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -2740,65 +2730,65 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:6 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:6 11.0 +(byte) mulf_init::c#1 c zp[1]:6 231.0 +(byte) mulf_init::c#2 c zp[1]:6 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:13 4.125 -(byte) mulf_init::dir#4 dir zp[1]:13 11.0 +(byte) mulf_init::dir#2 dir zp[1]:13 375.375 +(byte) mulf_init::dir#4 dir zp[1]:13 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:14 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:14 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:14 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:14 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:14 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:14 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:14 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:14 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:7 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:7 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:7 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:7 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:4 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:4 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:4 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:4 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:9 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:9 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:9 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:9 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 200002.0 +(byte) print_char::ch#1 reg byte a 200002.0 +(byte) print_char::ch#2 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.6153846153846154 -(byte*) print_char_cursor#16 print_char_cursor zp[2]:2 0.2222222222222222 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#34 print_char_cursor zp[2]:2 3.0 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:2 2.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 85461.84615384616 +(byte*) print_char_cursor#16 print_char_cursor zp[2]:2 111.22222222222223 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:2 1100002.0 +(byte*) print_char_cursor#34 print_char_cursor zp[2]:2 6001.5 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:2 40001.0 (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:16 5.0 +(dword) print_dword::dw#0 dw zp[4]:16 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -2809,9 +2799,9 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 4.0 -(word) print_word::w#1 w zp[2]:4 4.0 -(word) print_word::w#2 w zp[2]:4 2.6666666666666665 +(word) print_word::w#0 w zp[2]:4 2002.0 +(word) print_word::w#1 w zp[2]:4 2002.0 +(word) print_word::w#2 w zp[2]:4 7334.666666666666 reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] @@ -2834,7 +2824,7 @@ reg byte a [ mulf_init::$5 ] FINAL ASSEMBLER -Score: 4351 +Score: 4347 // File Comments // Upstart @@ -2960,8 +2950,7 @@ print_word: { .label w = 4 // print_byte(>w) // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [27] call print_byte // [31] phi from print_word to print_byte [phi:print_word->print_byte] // [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy @@ -2970,8 +2959,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/min-fmul-16.sym b/src/test/ref/min-fmul-16.sym index 5982fadb5..9a5e321e0 100644 --- a/src/test/ref/min-fmul-16.sym +++ b/src/test/ref/min-fmul-16.sym @@ -18,7 +18,7 @@ (const word) main::a = (word) $4d2 (const word) main::b = (word) $929 (dword) main::r -(dword) main::r#0 r zp[4]:16 11.0 +(dword) main::r#0 r zp[4]:16 101.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a @@ -27,12 +27,12 @@ (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:16 22.0 -(dword) mulf16u::return#1 return zp[4]:16 4.333333333333333 +(dword) mulf16u::return#0 return zp[4]:16 202.0 +(dword) mulf16u::return#1 return zp[4]:16 367.33333333333337 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -44,65 +44,65 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:6 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:6 11.0 +(byte) mulf_init::c#1 c zp[1]:6 231.0 +(byte) mulf_init::c#2 c zp[1]:6 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:13 4.125 -(byte) mulf_init::dir#4 dir zp[1]:13 11.0 +(byte) mulf_init::dir#2 dir zp[1]:13 375.375 +(byte) mulf_init::dir#4 dir zp[1]:13 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:14 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:14 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:14 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:14 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:14 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:14 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:14 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:14 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:7 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:7 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:7 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:7 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:4 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:4 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:4 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:4 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:9 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:9 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:9 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:9 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) } (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 200002.0 +(byte) print_char::ch#1 reg byte a 200002.0 +(byte) print_char::ch#2 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.6153846153846154 -(byte*) print_char_cursor#16 print_char_cursor zp[2]:2 0.2222222222222222 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#34 print_char_cursor zp[2]:2 3.0 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:2 2.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 85461.84615384616 +(byte*) print_char_cursor#16 print_char_cursor zp[2]:2 111.22222222222223 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:2 1100002.0 +(byte*) print_char_cursor#34 print_char_cursor zp[2]:2 6001.5 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:2 40001.0 (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:16 5.0 +(dword) print_dword::dw#0 dw zp[4]:16 701.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -113,9 +113,9 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 4.0 -(word) print_word::w#1 w zp[2]:4 4.0 -(word) print_word::w#2 w zp[2]:4 2.6666666666666665 +(word) print_word::w#0 w zp[2]:4 2002.0 +(word) print_word::w#1 w zp[2]:4 2002.0 +(word) print_word::w#2 w zp[2]:4 7334.666666666666 reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] diff --git a/src/test/ref/mixed-array-0.log b/src/test/ref/mixed-array-0.log index a776c8dda..4ddf93953 100644 --- a/src/test/ref/mixed-array-0.log +++ b/src/test/ref/mixed-array-0.log @@ -147,9 +147,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((const byte*) main::msg) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((const byte*) main::msg+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((const byte*) main::msg+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((const byte*) main::msg) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((const byte*) main::msg+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((const byte*) main::msg+(byte) 2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/mixed-array-1.log b/src/test/ref/mixed-array-1.log index c86ac3946..3f745008b 100644 --- a/src/test/ref/mixed-array-1.log +++ b/src/test/ref/mixed-array-1.log @@ -147,9 +147,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const signed byte*) main::SCREEN) ← *((const signed byte*) main::msg) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const signed byte*) main::SCREEN+(byte) 1) ← *((const signed byte*) main::msg+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const signed byte*) main::SCREEN+(byte) 2) ← *((const signed byte*) main::msg+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const signed byte*) main::SCREEN) ← *((const signed byte*) main::msg) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const signed byte*) main::SCREEN+(byte) 1) ← *((const signed byte*) main::msg+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const signed byte*) main::SCREEN+(byte) 2) ← *((const signed byte*) main::msg+(byte) 2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/modglobal.log b/src/test/ref/modglobal.log index 9bb9a8931..e82a9e421 100644 --- a/src/test/ref/modglobal.log +++ b/src/test/ref/modglobal.log @@ -178,24 +178,24 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) inccnt::return#0 = (byte) inccnt::return#4 -Alias (byte) cnt#1 = (byte) cnt#8 -Alias (byte) cnt2#1 = (byte) cnt2#7 -Alias (byte) cnt3#1 = (byte) cnt3#7 -Alias (byte) inccnt::return#1 = (byte) inccnt::return#5 -Alias (byte) cnt#10 = (byte) cnt#3 (byte) cnt#9 (byte) cnt#4 -Alias (byte) cnt2#2 = (byte) cnt2#8 (byte) cnt2#9 (byte) cnt2#3 -Alias (byte) cnt3#2 = (byte) cnt3#8 (byte) cnt3#9 (byte) cnt3#3 -Alias (byte) inccnt::return#2 = (byte) inccnt::return#6 (byte) inccnt::return#3 -Alias (byte) cnt#12 = (byte) cnt#5 (byte) cnt#6 -Alias (byte) cnt2#11 = (byte) cnt2#4 (byte) cnt2#5 -Alias (byte) cnt3#11 = (byte) cnt3#4 (byte) cnt3#5 -Alias (byte) cnt#0 = (byte) cnt#15 -Alias (byte) cnt2#0 = (byte) cnt2#14 -Alias (byte) cnt3#0 = (byte) cnt3#14 -Alias (byte) cnt#13 = (byte) cnt#7 -Alias (byte) cnt2#12 = (byte) cnt2#6 -Alias (byte) cnt3#12 = (byte) cnt3#6 +Alias inccnt::return#0 = inccnt::return#4 +Alias cnt#1 = cnt#8 +Alias cnt2#1 = cnt2#7 +Alias cnt3#1 = cnt3#7 +Alias inccnt::return#1 = inccnt::return#5 +Alias cnt#10 = cnt#3 cnt#9 cnt#4 +Alias cnt2#2 = cnt2#8 cnt2#9 cnt2#3 +Alias cnt3#2 = cnt3#8 cnt3#9 cnt3#3 +Alias inccnt::return#2 = inccnt::return#6 inccnt::return#3 +Alias cnt#12 = cnt#5 cnt#6 +Alias cnt2#11 = cnt2#4 cnt2#5 +Alias cnt3#11 = cnt3#4 cnt3#5 +Alias cnt#0 = cnt#15 +Alias cnt2#0 = cnt2#14 +Alias cnt3#0 = cnt3#14 +Alias cnt#13 = cnt#7 +Alias cnt2#12 = cnt2#6 +Alias cnt3#12 = cnt3#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) cnt#14 (byte) cnt#0 Identical Phi Values (byte) cnt2#13 (byte) cnt2#0 @@ -299,23 +299,23 @@ inccnt::@return: scope:[inccnt] from inccnt VARIABLE REGISTER WEIGHTS (byte) cnt -(byte) cnt#11 4.0 -(byte) cnt#12 0.6666666666666666 -(byte) cnt#2 4.0 +(byte) cnt#11 112.0 +(byte) cnt#12 23.666666666666664 +(byte) cnt#2 22.0 (byte) cnt2 -(byte) cnt2#10 2.0 -(byte) cnt2#11 0.46153846153846156 +(byte) cnt2#10 56.0 +(byte) cnt2#11 9.461538461538462 (byte) cnt3 -(byte) cnt3#10 1.3333333333333333 -(byte) cnt3#11 0.46153846153846156 +(byte) cnt3#10 37.33333333333333 +(byte) cnt3#11 9.461538461538462 (byte()) inccnt() (byte) inccnt::return -(byte) inccnt::return#0 4.0 -(byte) inccnt::return#1 4.0 -(byte) inccnt::return#2 1.5 +(byte) inccnt::return#0 22.0 +(byte) inccnt::return#1 22.0 +(byte) inccnt::return#2 30.75 (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 Initial phi equivalence classes [ cnt#11 cnt#2 ] @@ -476,13 +476,13 @@ Potential registers zp[1]:9 [ cnt#12 ] : zp[1]:9 , reg byte a , reg byte x , reg Potential registers zp[1]:10 [ inccnt::return#2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 8: zp[1]:2 [ cnt#11 cnt#2 ] 2.46: zp[1]:3 [ cnt2#10 cnt2#11 ] 1.79: zp[1]:4 [ cnt3#10 cnt3#11 ] 0.67: zp[1]:9 [ cnt#12 ] -Uplift Scope [inccnt] 4: zp[1]:5 [ inccnt::return#0 ] 4: zp[1]:7 [ inccnt::return#1 ] 1.5: zp[1]:10 [ inccnt::return#2 ] -Uplift Scope [main] 4: zp[1]:6 [ main::$0 ] 4: zp[1]:8 [ main::$1 ] +Uplift Scope [] 134: zp[1]:2 [ cnt#11 cnt#2 ] 65.46: zp[1]:3 [ cnt2#10 cnt2#11 ] 46.79: zp[1]:4 [ cnt3#10 cnt3#11 ] 23.67: zp[1]:9 [ cnt#12 ] +Uplift Scope [inccnt] 30.75: zp[1]:10 [ inccnt::return#2 ] 22: zp[1]:5 [ inccnt::return#0 ] 22: zp[1]:7 [ inccnt::return#1 ] +Uplift Scope [main] 22: zp[1]:6 [ main::$0 ] 22: zp[1]:8 [ main::$1 ] Uplifting [] best 124 combination reg byte a [ cnt#11 cnt#2 ] reg byte y [ cnt2#10 cnt2#11 ] reg byte x [ cnt3#10 cnt3#11 ] zp[1]:9 [ cnt#12 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [inccnt] best 103 combination reg byte a [ inccnt::return#0 ] reg byte a [ inccnt::return#1 ] reg byte a [ inccnt::return#2 ] +Uplifting [inccnt] best 103 combination reg byte a [ inccnt::return#2 ] reg byte a [ inccnt::return#0 ] reg byte a [ inccnt::return#1 ] Uplifting [main] best 91 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] Attempting to uplift remaining variables inzp[1]:9 [ cnt#12 ] Uplifting [] best 91 combination zp[1]:9 [ cnt#12 ] @@ -616,24 +616,24 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN[(number) $100] = (byte*) 1024 (byte) cnt -(byte) cnt#11 reg byte a 4.0 -(byte) cnt#12 cnt zp[1]:2 0.6666666666666666 -(byte) cnt#2 reg byte a 4.0 +(byte) cnt#11 reg byte a 112.0 +(byte) cnt#12 cnt zp[1]:2 23.666666666666664 +(byte) cnt#2 reg byte a 22.0 (byte) cnt2 -(byte) cnt2#10 reg byte y 2.0 -(byte) cnt2#11 reg byte y 0.46153846153846156 +(byte) cnt2#10 reg byte y 56.0 +(byte) cnt2#11 reg byte y 9.461538461538462 (byte) cnt3 -(byte) cnt3#10 reg byte x 1.3333333333333333 -(byte) cnt3#11 reg byte x 0.46153846153846156 +(byte) cnt3#10 reg byte x 37.33333333333333 +(byte) cnt3#11 reg byte x 9.461538461538462 (byte()) inccnt() (label) inccnt::@return (byte) inccnt::return -(byte) inccnt::return#0 reg byte a 4.0 -(byte) inccnt::return#1 reg byte a 4.0 -(byte) inccnt::return#2 reg byte a 1.5 +(byte) inccnt::return#0 reg byte a 22.0 +(byte) inccnt::return#1 reg byte a 22.0 +(byte) inccnt::return#2 reg byte a 30.75 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/modglobal.sym b/src/test/ref/modglobal.sym index adee46800..38456584a 100644 --- a/src/test/ref/modglobal.sym +++ b/src/test/ref/modglobal.sym @@ -3,24 +3,24 @@ (label) @end (const byte*) SCREEN[(number) $100] = (byte*) 1024 (byte) cnt -(byte) cnt#11 reg byte a 4.0 -(byte) cnt#12 cnt zp[1]:2 0.6666666666666666 -(byte) cnt#2 reg byte a 4.0 +(byte) cnt#11 reg byte a 112.0 +(byte) cnt#12 cnt zp[1]:2 23.666666666666664 +(byte) cnt#2 reg byte a 22.0 (byte) cnt2 -(byte) cnt2#10 reg byte y 2.0 -(byte) cnt2#11 reg byte y 0.46153846153846156 +(byte) cnt2#10 reg byte y 56.0 +(byte) cnt2#11 reg byte y 9.461538461538462 (byte) cnt3 -(byte) cnt3#10 reg byte x 1.3333333333333333 -(byte) cnt3#11 reg byte x 0.46153846153846156 +(byte) cnt3#10 reg byte x 37.33333333333333 +(byte) cnt3#11 reg byte x 9.461538461538462 (byte()) inccnt() (label) inccnt::@return (byte) inccnt::return -(byte) inccnt::return#0 reg byte a 4.0 -(byte) inccnt::return#1 reg byte a 4.0 -(byte) inccnt::return#2 reg byte a 1.5 +(byte) inccnt::return#0 reg byte a 22.0 +(byte) inccnt::return#1 reg byte a 22.0 +(byte) inccnt::return#2 reg byte a 30.75 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/modglobalmin.log b/src/test/ref/modglobalmin.log index 035b46140..4a994470c 100644 --- a/src/test/ref/modglobalmin.log +++ b/src/test/ref/modglobalmin.log @@ -90,12 +90,12 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) cnt#1 = (byte) cnt#9 -Alias (byte) cnt#10 = (byte) cnt#3 -Alias (byte) cnt#11 = (byte) cnt#4 (byte) cnt#5 -Alias (byte) cnt#13 = (byte) cnt#6 (byte) cnt#7 -Alias (byte) cnt#0 = (byte) cnt#16 -Alias (byte) cnt#14 = (byte) cnt#8 +Alias cnt#1 = cnt#9 +Alias cnt#10 = cnt#3 +Alias cnt#11 = cnt#4 cnt#5 +Alias cnt#13 = cnt#6 cnt#7 +Alias cnt#0 = cnt#16 +Alias cnt#14 = cnt#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) cnt#15 (byte) cnt#0 Identical Phi Values (byte) cnt#1 (byte) cnt#13 @@ -171,10 +171,10 @@ inccnt::@return: scope:[inccnt] from inccnt VARIABLE REGISTER WEIGHTS (byte) cnt -(byte) cnt#11 4.0 -(byte) cnt#12 4.0 -(byte) cnt#13 1.6 -(byte) cnt#2 4.0 +(byte) cnt#11 22.0 +(byte) cnt#12 112.0 +(byte) cnt#13 26.8 +(byte) cnt#2 22.0 (void()) inccnt() (void()) main() @@ -278,11 +278,11 @@ Potential registers zp[1]:3 [ cnt#11 ] : zp[1]:3 , reg byte a , reg byte x , reg Potential registers zp[1]:4 [ cnt#13 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 8: zp[1]:2 [ cnt#12 cnt#2 ] 4: zp[1]:3 [ cnt#11 ] 1.6: zp[1]:4 [ cnt#13 ] +Uplift Scope [] 134: zp[1]:2 [ cnt#12 cnt#2 ] 26.8: zp[1]:4 [ cnt#13 ] 22: zp[1]:3 [ cnt#11 ] Uplift Scope [main] Uplift Scope [inccnt] -Uplifting [] best 64 combination reg byte x [ cnt#12 cnt#2 ] reg byte x [ cnt#11 ] reg byte x [ cnt#13 ] +Uplifting [] best 64 combination reg byte x [ cnt#12 cnt#2 ] reg byte x [ cnt#13 ] reg byte x [ cnt#11 ] Uplifting [main] best 64 combination Uplifting [inccnt] best 64 combination @@ -388,10 +388,10 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN[(number) $100] = (byte*) 1024 (byte) cnt -(byte) cnt#11 reg byte x 4.0 -(byte) cnt#12 reg byte x 4.0 -(byte) cnt#13 reg byte x 1.6 -(byte) cnt#2 reg byte x 4.0 +(byte) cnt#11 reg byte x 22.0 +(byte) cnt#12 reg byte x 112.0 +(byte) cnt#13 reg byte x 26.8 +(byte) cnt#2 reg byte x 22.0 (void()) inccnt() (label) inccnt::@return (void()) main() diff --git a/src/test/ref/modglobalmin.sym b/src/test/ref/modglobalmin.sym index 76b5f9cde..fa889599a 100644 --- a/src/test/ref/modglobalmin.sym +++ b/src/test/ref/modglobalmin.sym @@ -3,10 +3,10 @@ (label) @end (const byte*) SCREEN[(number) $100] = (byte*) 1024 (byte) cnt -(byte) cnt#11 reg byte x 4.0 -(byte) cnt#12 reg byte x 4.0 -(byte) cnt#13 reg byte x 1.6 -(byte) cnt#2 reg byte x 4.0 +(byte) cnt#11 reg byte x 22.0 +(byte) cnt#12 reg byte x 112.0 +(byte) cnt#13 reg byte x 26.8 +(byte) cnt#2 reg byte x 22.0 (void()) inccnt() (label) inccnt::@return (void()) main() diff --git a/src/test/ref/mul8u-min.log b/src/test/ref/mul8u-min.log index 9be1124b9..19b2f805c 100644 --- a/src/test/ref/mul8u-min.log +++ b/src/test/ref/mul8u-min.log @@ -218,20 +218,20 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 Inversing boolean not [9] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [8] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (word) mul8u::return#2 = (word) mul8u::return#4 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::b#2 = (byte) main::b#3 -Alias (byte) main::a#2 = (byte) main::a#5 (byte) main::a#3 -Alias (byte) main::i#1 = (byte) main::i#5 +Alias mul8u::a#2 = mul8u::a#3 mul8u::a#6 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#3 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias mul8u::return#2 = mul8u::return#4 +Alias main::i#2 = main::i#3 +Alias main::b#2 = main::b#3 +Alias main::a#2 = main::a#5 main::a#3 +Alias main::i#1 = main::i#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 +Alias mul8u::a#2 = mul8u::a#4 +Alias mul8u::mb#2 = mul8u::mb#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) mul8u::b#1 (byte) mul8u::b#0 Identical Phi Values (byte) mul8u::a#5 (byte) mul8u::a#1 @@ -386,36 +386,36 @@ mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$0 101.0 -(byte~) main::$3 202.0 +(word~) main::$0 1001.0 +(byte~) main::$3 2002.0 (byte) main::a -(byte) main::a#1 16.5 -(byte) main::a#4 10.249999999999998 +(byte) main::a#1 151.5 +(byte) main::a#4 100.25000000000001 (byte) main::b -(byte) main::b#1 151.5 -(byte) main::b#2 33.666666666666664 +(byte) main::b#1 1501.5 +(byte) main::b#2 333.6666666666667 (byte) main::i -(byte) main::i#1 42.599999999999994 -(byte) main::i#2 39.25 -(byte) main::i#4 22.0 +(byte) main::i#1 420.59999999999997 +(byte) main::i#2 388.0 +(byte) main::i#4 202.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 2002.0 +(byte~) mul8u::$1 2.0000002E7 (byte) mul8u::a -(byte) mul8u::a#0 1001.0 -(byte) mul8u::a#1 34.33333333333333 -(byte) mul8u::a#2 667.6666666666667 +(byte) mul8u::a#0 1.0000001E7 +(byte) mul8u::a#1 3667.333333333333 +(byte) mul8u::a#2 6668334.166666666 (byte) mul8u::b -(byte) mul8u::b#0 101.0 +(byte) mul8u::b#0 1001.0 (word) mul8u::mb -(word) mul8u::mb#0 4.0 -(word) mul8u::mb#1 2002.0 -(word) mul8u::mb#2 429.2857142857143 +(word) mul8u::mb#0 20002.0 +(word) mul8u::mb#1 2.0000002E7 +(word) mul8u::mb#2 4287143.428571429 (word) mul8u::res -(word) mul8u::res#1 2002.0 -(word) mul8u::res#2 517.3333333333334 -(word) mul8u::res#6 1001.0 +(word) mul8u::res#1 2.0000002E7 +(word) mul8u::res#2 5000167.333333333 +(word) mul8u::res#6 1.0000001E7 (word) mul8u::return -(word) mul8u::return#2 202.0 +(word) mul8u::return#2 2002.0 Initial phi equivalence classes [ main::a#4 main::a#1 ] @@ -649,24 +649,24 @@ mul8u: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ) always clobbers reg byte a +Statement [10] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#4 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::b#2 main::b#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#4 main::i#1 ] -Statement [11] (word~) main::$0 ← (word) mul8u::return#2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a -Statement [13] *((const word*) main::screen + (byte~) main::$3) ← (word~) main::$0 [ main::a#4 main::b#2 main::i#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 ] ) always clobbers reg byte a -Statement [20] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [11] (word~) main::$0 ← (word) mul8u::return#2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a +Statement [13] *((const word*) main::screen + (byte~) main::$3) ← (word~) main::$0 [ main::a#4 main::b#2 main::i#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 ] { } ) always clobbers reg byte a +Statement [20] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#1 mul8u::mb#0 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [10] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ) always clobbers reg byte a -Statement [11] (word~) main::$0 ← (word) mul8u::return#2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a -Statement [13] *((const word*) main::screen + (byte~) main::$3) ← (word~) main::$0 [ main::a#4 main::b#2 main::i#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 ] ) always clobbers reg byte a -Statement [20] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [10] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 mul8u::return#2 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [11] (word~) main::$0 ← (word) mul8u::return#2 [ main::a#4 main::b#2 main::i#2 main::$0 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] ( main:2 [ main::a#4 main::b#2 main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a +Statement [13] *((const word*) main::screen + (byte~) main::$3) ← (word~) main::$0 [ main::a#4 main::b#2 main::i#2 ] ( main:2 [ main::a#4 main::b#2 main::i#2 ] { } ) always clobbers reg byte a +Statement [20] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#1 mul8u::mb#0 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:9 [ main::a#4 main::b#2 main::i#2 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#1 = main::a#4 } { mul8u::b#0 = main::b#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::a#4 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::b#2 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::i#2 main::i#4 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -680,8 +680,8 @@ Potential registers zp[1]:15 [ main::$3 ] : zp[1]:15 , reg byte a , reg byte x , Potential registers zp[1]:16 [ mul8u::$1 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 3,520.33: zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp[2]:8 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp[1]:16 [ mul8u::$1 ] 1,703: zp[1]:5 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp[2]:11 [ mul8u::return#2 ] 101: zp[1]:10 [ mul8u::b#0 ] -Uplift Scope [main] 202: zp[1]:15 [ main::$3 ] 185.17: zp[1]:3 [ main::b#2 main::b#1 ] 103.85: zp[1]:4 [ main::i#2 main::i#4 main::i#1 ] 101: zp[2]:13 [ main::$0 ] 26.75: zp[1]:2 [ main::a#4 main::a#1 ] +Uplift Scope [mul8u] 35,000,170.33: zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 24,307,147.43: zp[2]:8 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 20,000,002: zp[1]:16 [ mul8u::$1 ] 16,672,002.5: zp[1]:5 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 2,002: zp[2]:11 [ mul8u::return#2 ] 1,001: zp[1]:10 [ mul8u::b#0 ] +Uplift Scope [main] 2,002: zp[1]:15 [ main::$3 ] 1,835.17: zp[1]:3 [ main::b#2 main::b#1 ] 1,010.6: zp[1]:4 [ main::i#2 main::i#4 main::i#1 ] 1,001: zp[2]:13 [ main::$0 ] 251.75: zp[1]:2 [ main::a#4 main::a#1 ] Uplift Scope [] Uplifting [mul8u] best 84097 combination zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:8 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:11 [ mul8u::return#2 ] reg byte a [ mul8u::b#0 ] @@ -927,47 +927,47 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(word~) main::$0 zp[2]:4 101.0 -(byte~) main::$3 reg byte x 202.0 +(word~) main::$0 zp[2]:4 1001.0 +(byte~) main::$3 reg byte x 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#4 a zp[1]:2 10.249999999999998 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#4 a zp[1]:2 100.25000000000001 (byte) main::b -(byte) main::b#1 reg byte y 151.5 -(byte) main::b#2 reg byte y 33.666666666666664 +(byte) main::b#1 reg byte y 1501.5 +(byte) main::b#2 reg byte y 333.6666666666667 (byte) main::i -(byte) main::i#1 i zp[1]:3 42.599999999999994 -(byte) main::i#2 i zp[1]:3 39.25 -(byte) main::i#4 i zp[1]:3 22.0 +(byte) main::i#1 i zp[1]:3 420.59999999999997 +(byte) main::i#2 i zp[1]:3 388.0 +(byte) main::i#4 i zp[1]:3 202.0 (const word*) main::screen = (word*) 1024 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.0000002E7 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 34.33333333333333 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.0000001E7 +(byte) mul8u::a#1 reg byte x 3667.333333333333 +(byte) mul8u::a#2 reg byte x 6668334.166666666 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 101.0 +(byte) mul8u::b#0 reg byte a 1001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:6 4.0 -(word) mul8u::mb#1 mb zp[2]:6 2002.0 -(word) mul8u::mb#2 mb zp[2]:6 429.2857142857143 +(word) mul8u::mb#0 mb zp[2]:6 20002.0 +(word) mul8u::mb#1 mb zp[2]:6 2.0000002E7 +(word) mul8u::mb#2 mb zp[2]:6 4287143.428571429 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:4 2002.0 -(word) mul8u::res#2 res zp[2]:4 517.3333333333334 -(word) mul8u::res#6 res zp[2]:4 1001.0 +(word) mul8u::res#1 res zp[2]:4 2.0000002E7 +(word) mul8u::res#2 res zp[2]:4 5000167.333333333 +(word) mul8u::res#6 res zp[2]:4 1.0000001E7 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:4 202.0 +(word) mul8u::return#2 return zp[2]:4 2002.0 zp[1]:2 [ main::a#4 main::a#1 ] reg byte y [ main::b#2 main::b#1 ] diff --git a/src/test/ref/mul8u-min.sym b/src/test/ref/mul8u-min.sym index 18834a5c4..10ae1e6c9 100644 --- a/src/test/ref/mul8u-min.sym +++ b/src/test/ref/mul8u-min.sym @@ -2,47 +2,47 @@ (label) @begin (label) @end (void()) main() -(word~) main::$0 zp[2]:4 101.0 -(byte~) main::$3 reg byte x 202.0 +(word~) main::$0 zp[2]:4 1001.0 +(byte~) main::$3 reg byte x 2002.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#4 a zp[1]:2 10.249999999999998 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#4 a zp[1]:2 100.25000000000001 (byte) main::b -(byte) main::b#1 reg byte y 151.5 -(byte) main::b#2 reg byte y 33.666666666666664 +(byte) main::b#1 reg byte y 1501.5 +(byte) main::b#2 reg byte y 333.6666666666667 (byte) main::i -(byte) main::i#1 i zp[1]:3 42.599999999999994 -(byte) main::i#2 i zp[1]:3 39.25 -(byte) main::i#4 i zp[1]:3 22.0 +(byte) main::i#1 i zp[1]:3 420.59999999999997 +(byte) main::i#2 i zp[1]:3 388.0 +(byte) main::i#4 i zp[1]:3 202.0 (const word*) main::screen = (word*) 1024 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.0000002E7 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 34.33333333333333 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.0000001E7 +(byte) mul8u::a#1 reg byte x 3667.333333333333 +(byte) mul8u::a#2 reg byte x 6668334.166666666 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 101.0 +(byte) mul8u::b#0 reg byte a 1001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:6 4.0 -(word) mul8u::mb#1 mb zp[2]:6 2002.0 -(word) mul8u::mb#2 mb zp[2]:6 429.2857142857143 +(word) mul8u::mb#0 mb zp[2]:6 20002.0 +(word) mul8u::mb#1 mb zp[2]:6 2.0000002E7 +(word) mul8u::mb#2 mb zp[2]:6 4287143.428571429 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:4 2002.0 -(word) mul8u::res#2 res zp[2]:4 517.3333333333334 -(word) mul8u::res#6 res zp[2]:4 1001.0 +(word) mul8u::res#1 res zp[2]:4 2.0000002E7 +(word) mul8u::res#2 res zp[2]:4 5000167.333333333 +(word) mul8u::res#6 res zp[2]:4 1.0000001E7 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:4 202.0 +(word) mul8u::return#2 return zp[2]:4 2002.0 zp[1]:2 [ main::a#4 main::a#1 ] reg byte y [ main::b#2 main::b#1 ] diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log index b6ecaa2af..f01e47915 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log @@ -806,34 +806,34 @@ Inferred type updated to byte in (unumber~) plex_irq::$4 ← *((const byte*) RAS Inversing boolean not [25] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 >= *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2)) from [24] (bool~) plexSort::$2 ← (byte) plexSort::nxt_y#0 < *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2)) Inversing boolean not [86] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb != (byte) 0 from [85] (bool~) plexShowSprite::$7 ← (byte) plex_sprite_msb == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 -Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 -Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*~) plexInit::plexSetScreen1_$0 (byte*) PLEX_SCREEN_PTR#22 -Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 -Alias (byte) plexSort::m#2 = (byte) plexSort::m#4 (byte) plexSort::s#0 -Alias (byte) plexSort::nxt_y#0 = (byte) plexSort::nxt_y#2 -Alias (byte) plexSort::nxt_idx#0 = (byte) plexSort::nxt_idx#3 -Alias (byte) plexSort::s#1 = (byte) plexSort::s#4 -Alias (byte) plexSort::nxt_idx#1 = (byte) plexSort::nxt_idx#2 -Alias (byte) plexSort::m#5 = (byte) plexSort::m#6 -Alias (byte) plexShowSprite::plex_sprite_idx2#0 = (byte~) plexShowSprite::$0 (byte) plexShowSprite::plex_sprite_idx2#2 (byte) plexShowSprite::plex_sprite_idx2#1 -Alias (byte) plexShowSprite::plexFreeAdd1_ypos#0 = (byte) plexShowSprite::ypos#0 (byte) plexShowSprite::plexFreeAdd1_ypos#1 -Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#9 -Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#21 -Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 -Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5 -Alias (byte*) PLEX_SCREEN_PTR#27 = (byte*) PLEX_SCREEN_PTR#29 -Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#6 -Alias (byte*) PLEX_SCREEN_PTR#26 = (byte*) PLEX_SCREEN_PTR#34 (byte*) PLEX_SCREEN_PTR#33 (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#31 -Alias (byte) plex_irq::plexFreeNextYpos1_return#0 = (byte) plex_irq::plexFreeNextYpos1_return#2 (byte) plex_irq::plexFreeNextYpos1_return#1 (byte) plex_irq::plexFreeNextYpos1_return#3 (byte~) plex_irq::$2 (byte) plex_irq::rasterY#1 (byte) plex_irq::rasterY#3 (byte) plex_irq::rasterY#2 -Alias (byte) loop::sin_idx#2 = (byte) loop::sin_idx#4 (byte) loop::y_idx#0 -Alias (byte) loop::sin_idx#3 = (byte) loop::sin_idx#5 -Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#7 -Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 +Alias plexInit::plexSetScreen1_screen#0 = plexInit::screen#1 plexInit::plexSetScreen1_screen#1 +Alias PLEX_SCREEN_PTR#1 = plexInit::plexSetScreen1_$0 PLEX_SCREEN_PTR#22 +Alias PLEX_SCREEN_PTR#15 = PLEX_SCREEN_PTR#8 PLEX_SCREEN_PTR#2 +Alias plexSort::m#2 = plexSort::m#4 plexSort::s#0 +Alias plexSort::nxt_y#0 = plexSort::nxt_y#2 +Alias plexSort::nxt_idx#0 = plexSort::nxt_idx#3 +Alias plexSort::s#1 = plexSort::s#4 +Alias plexSort::nxt_idx#1 = plexSort::nxt_idx#2 +Alias plexSort::m#5 = plexSort::m#6 +Alias plexShowSprite::plex_sprite_idx2#0 = plexShowSprite::$0 plexShowSprite::plex_sprite_idx2#2 plexShowSprite::plex_sprite_idx2#1 +Alias plexShowSprite::plexFreeAdd1_ypos#0 = plexShowSprite::ypos#0 plexShowSprite::plexFreeAdd1_ypos#1 +Alias PLEX_SCREEN_PTR#16 = PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#9 +Alias PLEX_SCREEN_PTR#0 = PLEX_SCREEN_PTR#28 PLEX_SCREEN_PTR#25 PLEX_SCREEN_PTR#21 +Alias PLEX_SCREEN_PTR#10 = PLEX_SCREEN_PTR#3 PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#11 PLEX_SCREEN_PTR#4 +Alias PLEX_SCREEN_PTR#12 = PLEX_SCREEN_PTR#5 +Alias PLEX_SCREEN_PTR#27 = PLEX_SCREEN_PTR#29 +Alias PLEX_SCREEN_PTR#13 = PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#6 +Alias PLEX_SCREEN_PTR#26 = PLEX_SCREEN_PTR#34 PLEX_SCREEN_PTR#33 PLEX_SCREEN_PTR#32 PLEX_SCREEN_PTR#31 +Alias plex_irq::plexFreeNextYpos1_return#0 = plex_irq::plexFreeNextYpos1_return#2 plex_irq::plexFreeNextYpos1_return#1 plex_irq::plexFreeNextYpos1_return#3 plex_irq::$2 plex_irq::rasterY#1 plex_irq::rasterY#3 plex_irq::rasterY#2 +Alias loop::sin_idx#2 = loop::sin_idx#4 loop::y_idx#0 +Alias loop::sin_idx#3 = loop::sin_idx#5 +Alias loop::sin_idx#1 = loop::sin_idx#7 +Alias PLEX_SCREEN_PTR#14 = PLEX_SCREEN_PTR#7 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 Identical Phi Values (byte*) plexInit::plexSetScreen1_screen#0 (byte*) plexInit::screen#0 Identical Phi Values (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1 Identical Phi Values (byte) plexSort::nxt_y#1 (byte) plexSort::nxt_y#0 @@ -935,12 +935,12 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 -Alias (byte~) plexShowSprite::$11 = (byte~) plexShowSprite::$10 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 +Alias plexShowSprite::$11 = plexShowSprite::$10 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 Simple Condition (bool~) plexSort::$5 [21] if((byte) plexSort::s#1!=(byte) $ff) goto plexSort::@8 Simple Condition (bool~) plex_irq::$3 [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@9 Simple Condition (bool~) plexSort::$6 [115] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 @@ -949,8 +949,8 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Negating conditional jump and destination [21] if((byte) plexSort::s#1==(byte) $ff) goto plexSort::@4 Negating conditional jump and destination [92] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 Rewriting multiplication to use shift [31] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx * (byte) 2 Rewriting multiplication to use shift [41] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 * (const byte) SIZEOF_WORD Rewriting multiplication to use shift [66] (byte~) init::$3 ← (byte) init::sx#2 * (const byte) SIZEOF_WORD @@ -975,17 +975,17 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$1) Consolidated array index constant in assignment *(PLEX_SORTED_IDX+1 + plexSort::$4) Successful SSA optimization Pass2ConstantAdditionElimination -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 -Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 -Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 +Alias plexSort::m#2 = plexSort::$1 +Alias plexSort::s#3 = plexSort::$4 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 Eliminating unused constant (const byte) SIZEOF_WORD Successful SSA optimization PassNEliminateUnusedVars -Alias candidate removed (volatile)(byte) plex_free_next = (byte~) plexShowSprite::plexFreeAdd1_$2 -Alias candidate removed (volatile)(byte) plex_sprite_idx = (byte~) plexShowSprite::$6 +Alias candidate removed (volatile)plex_free_next = plexShowSprite::plexFreeAdd1_$2 +Alias candidate removed (volatile)plex_sprite_idx = plexShowSprite::$6 Added new block during phi lifting plexInit::@4(between plexInit::@1 and plexInit::@1) Added new block during phi lifting plexSort::@9(between plexSort::@2 and plexSort::@1) Added new block during phi lifting plexSort::@10(between plexSort::@8 and plexSort::@3) @@ -1324,78 +1324,78 @@ plexShowSprite::@1: scope:[plexShowSprite] from plexShowSprite::@5 VARIABLE REGISTER WEIGHTS (byte*) PLEX_SCREEN_PTR -(bool) framedone loadstore 10.545454545454545 +(bool) framedone loadstore 1000.5454545454544 (void()) init() -(byte~) init::$3 22.0 +(byte~) init::$3 2002.0 (byte) init::ss -(byte) init::ss#1 16.5 -(byte) init::ss#2 16.5 +(byte) init::ss#1 1501.5 +(byte) init::ss#2 1501.5 (byte) init::sx -(byte) init::sx#1 16.5 -(byte) init::sx#2 8.8 +(byte) init::sx#1 1501.5 +(byte) init::sx#2 800.8 (word) init::xp -(word) init::xp#1 7.333333333333333 -(word) init::xp#2 8.25 +(word) init::xp#1 667.3333333333334 +(word) init::xp#2 750.75 (void()) loop() (byte) loop::sin_idx -(byte) loop::sin_idx#1 3.142857142857143 -(byte) loop::sin_idx#6 3.666666666666667 +(byte) loop::sin_idx#1 286.0 +(byte) loop::sin_idx#6 333.6666666666667 (byte) loop::sy -(byte) loop::sy#1 151.5 -(byte) loop::sy#2 101.0 +(byte) loop::sy#1 15001.5 +(byte) loop::sy#2 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 67.33333333333333 -(byte) loop::y_idx#2 157.0 -(byte) loop::y_idx#4 22.0 +(byte) loop::y_idx#1 6667.333333333333 +(byte) loop::y_idx#2 15502.0 +(byte) loop::y_idx#4 2002.0 (void()) main() (void()) plexInit((byte*) plexInit::screen) (byte) plexInit::i -(byte) plexInit::i#1 16.5 -(byte) plexInit::i#2 22.0 +(byte) plexInit::i#1 15001.5 +(byte) plexInit::i#2 20002.0 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 2.0 -(byte~) plexShowSprite::$2 4.0 -(byte~) plexShowSprite::$3 4.0 -(byte~) plexShowSprite::$5 4.0 -(byte~) plexShowSprite::$6 4.0 -(byte~) plexShowSprite::$9 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$0 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$2 4.0 +(byte~) plexShowSprite::$11 101.0 +(byte~) plexShowSprite::$2 202.0 +(byte~) plexShowSprite::$3 202.0 +(byte~) plexShowSprite::$5 202.0 +(byte~) plexShowSprite::$6 202.0 +(byte~) plexShowSprite::$9 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$2 202.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 151.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 0.5 +(byte) plexShowSprite::plex_sprite_idx2#0 25.25 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 4.0 +(byte) plexShowSprite::xpos_idx#0 202.0 (byte) plexShowSprite::ypos (void()) plexSort() (byte) plexSort::m -(byte) plexSort::m#1 151.5 -(byte) plexSort::m#2 42.08333333333333 +(byte) plexSort::m#1 1500001.5 +(byte) plexSort::m#2 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 30.299999999999997 +(byte) plexSort::nxt_idx#0 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 150.375 +(byte) plexSort::nxt_y#0 1500000.375 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 151.5 -(byte) plexSort::plexFreePrepare1_s#2 151.5 +(byte) plexSort::plexFreePrepare1_s#1 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 1368.3333333333335 -(byte) plexSort::s#2 202.0 -(byte) plexSort::s#3 2052.5 -(byte) plexSort::s#6 202.0 -(byte) plex_free_next loadstore 0.6774193548387095 +(byte) plexSort::s#1 1.3666668333333332E7 +(byte) plexSort::s#2 2000002.0 +(byte) plexSort::s#3 2.05000025E7 +(byte) plexSort::s#6 2000002.0 +(byte) plex_free_next loadstore 332.80645161290323 interrupt(KERNEL_MIN)(void()) plex_irq() (byte~) plex_irq::$4 11.0 (byte) plex_irq::plexFreeNextYpos1_return (byte) plex_irq::plexFreeNextYpos1_return#0 4.0 (byte) plex_irq::rasterY -(byte) plex_show_idx loadstore 0.7941176470588236 -(byte) plex_sprite_idx loadstore 0.3870967741935484 -(byte) plex_sprite_msb loadstore 0.48484848484848486 +(byte) plex_show_idx loadstore 309.44117647058835 +(byte) plex_sprite_idx loadstore 335.7096774193548 +(byte) plex_sprite_msb loadstore 321.4848484848485 Initial phi equivalence classes [ loop::sin_idx#6 loop::sin_idx#1 ] @@ -2237,187 +2237,187 @@ YSIN: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] ) always clobbers reg byte a -Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] ) always clobbers reg byte a -Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] ) always clobbers reg byte a +Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] { } ) always clobbers reg byte a +Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a +Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ loop::sy#2 loop::sy#1 ] -Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a +Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ plexSort::m#2 plexSort::m#1 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ plexSort::nxt_idx#0 ] Removing always clobbered register reg byte a as potential for zp[1]:19 [ plexSort::nxt_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] -Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a +Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] -Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a +Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ init::sx#2 init::sx#1 ] -Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] ) always clobbers reg byte a -Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] ) always clobbers reg byte a +Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] { } ) always clobbers reg byte a +Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ init::ss#2 init::ss#1 ] -Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a +Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y +Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ plex_irq::plexFreeNextYpos1_return#0 ] Removing always clobbered register reg byte a as potential for zp[1]:23 [ plex_irq::$4 ] -Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [93] (bool) framedone ← true [ ] ( [ ] ) always clobbers reg byte a -Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte x reg byte y +Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [93] (bool) framedone ← true [ ] ( [ ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] Removing always clobbered register reg byte y as potential for zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte y -Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y +Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte a as potential for zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y -Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a +Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y +Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ plexShowSprite::$11 ] -Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ) always clobbers reg byte y +Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:30 [ plexShowSprite::$11 ] -Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] ) always clobbers reg byte a -Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] ) always clobbers reg byte a -Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a -Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [35] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a -Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a -Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a -Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] ) always clobbers reg byte a -Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] ) always clobbers reg byte a -Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a -Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [93] (bool) framedone ← true [ ] ( [ ] ) always clobbers reg byte a -Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte x reg byte y -Statement [99] *((const byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte y +Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] { } ) always clobbers reg byte a +Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] { } ) always clobbers reg byte a +Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [35] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a +Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a +Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] { } ) always clobbers reg byte a +Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] { } ) always clobbers reg byte a +Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y +Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a +Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [93] (bool) framedone ← true [ ] ( [ ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y +Statement [99] *((const byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte y -Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y -Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a -Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ) always clobbers reg byte y -Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] ) always clobbers reg byte a -Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] ) always clobbers reg byte a -Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] ) always clobbers reg byte a -Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a -Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a -Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [35] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a -Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a -Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a -Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a -Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] ) always clobbers reg byte a -Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] ) always clobbers reg byte a -Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] ) always clobbers reg byte a -Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] ) always clobbers reg byte a -Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] ) always clobbers reg byte a -Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] ) always clobbers reg byte a -Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte y -Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ) always clobbers reg byte a -Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] ) always clobbers reg byte a -Statement [93] (bool) framedone ← true [ ] ( [ ] ) always clobbers reg byte a -Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte x reg byte y -Statement [99] *((const byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte y -Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte y -Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte y -Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ) always clobbers reg byte a -Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ) always clobbers reg byte a -Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ) always clobbers reg byte y -Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ) always clobbers reg byte a -Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ) always clobbers reg byte a -Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a -Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ) always clobbers reg byte a +Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y +Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y +Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a +Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y +Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [1] (byte) plex_show_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [2] (byte) plex_sprite_idx ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [3] (byte) plex_sprite_msb ← (byte) 1 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [4] (byte) plex_free_next ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [5] (bool) framedone ← true [ framedone ] ( [ framedone ] { } ) always clobbers reg byte a +Statement [16] if((bool) framedone) goto loop::@3 [ framedone loop::sin_idx#6 ] ( main:7::loop:12 [ framedone loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) BORDERCOL) ← (const byte) RED [ loop::sin_idx#6 ] ( main:7::loop:12 [ loop::sin_idx#6 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) PLEX_YPOS + (byte) loop::sy#2) ← *((const byte*) YSIN + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] { } ) always clobbers reg byte a +Statement [21] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte) 8 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) BORDERCOL) ← (const byte) GREEN [ loop::sin_idx#1 ] ( main:7::loop:12 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [28] (bool) framedone ← false [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) RASTER) ← (byte) 0 [ framedone loop::sin_idx#1 ] ( main:7::loop:12 [ framedone loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [35] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] { } ) always clobbers reg byte a +Statement [41] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::m#2 ] { } ) always clobbers reg byte a +Statement [46] (byte) plex_show_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [47] (byte) plex_sprite_idx ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [48] (byte) plex_sprite_msb ← (byte) 1 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0 [ plexSort::plexFreePrepare1_s#2 ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 plexSort::plexFreePrepare1_s#2 ] { } ) always clobbers reg byte a +Statement [54] (byte) plex_free_next ← (byte) 0 [ ] ( main:7::loop:12::plexSort:26 [ loop::sin_idx#1 ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) D011) ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) PLEX_PTR + (byte) init::sx#2) ← (byte)(const byte*) SPRITE/(byte) $40 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [60] (byte~) init::$3 ← (byte) init::sx#2 << (byte) 1 [ init::sx#2 init::xp#2 init::$3 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 init::$3 ] { } ) always clobbers reg byte a +Statement [61] *((const word*) PLEX_XPOS + (byte~) init::$3) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#2 ] { } ) always clobbers reg byte a +Statement [62] (word) init::xp#1 ← (word) init::xp#2 + (byte) 9 [ init::sx#2 init::xp#1 ] ( main:7::init:10 [ framedone init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) SPRITES_ENABLE) ← (byte) $ff [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS + (byte) init::ss#2) ← (const byte) GREEN [ init::ss#2 ] ( main:7::init:10 [ framedone init::ss#2 ] { } ) always clobbers reg byte a +Statement [71] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [73] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [74] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) plex_irq() [ ] ( main:7::init:10 [ framedone ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) BORDERCOL) ← (const byte) WHITE [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [87] (byte) plex_irq::plexFreeNextYpos1_return#0 ← *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y +Statement [89] if((byte) plex_show_idx>=(const byte) PLEX_COUNT) goto plex_irq::@4 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] ( [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plex_irq::plexFreeNextYpos1_return#0 plex_irq::$4 ] { } ) always clobbers reg byte a +Statement [91] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_show_idx plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [92] if((byte) plex_show_idx<(const byte) PLEX_COUNT) goto plex_irq::@1 [ plex_irq::plexFreeNextYpos1_return#0 ] ( [ plex_irq::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte a +Statement [93] (bool) framedone ← true [ ] ( [ ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) BORDERCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [97] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a +Statement [98] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte x reg byte y +Statement [99] *((const byte*) SPRITES_YPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] { } ) always clobbers reg byte y +Statement [101] *((const byte*) PLEX_FREE_YPOS + (byte) plex_free_next) ← (byte~) plexShowSprite::plexFreeAdd1_$0 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte y +Statement [105] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx) ← *((const byte*) PLEX_PTR + *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx)) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [106] (byte) plexShowSprite::xpos_idx#0 ← *((const byte*) PLEX_SORTED_IDX + (byte) plex_show_idx) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] { } ) always clobbers reg byte y +Statement [107] (byte~) plexShowSprite::$11 ← (byte) plexShowSprite::xpos_idx#0 << (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 ] { } ) always clobbers reg byte a +Statement [108] (byte~) plexShowSprite::$2 ← < *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::plex_sprite_idx2#0 plexShowSprite::$11 plexShowSprite::$2 ] { } ) always clobbers reg byte a +Statement [109] *((const byte*) SPRITES_XPOS + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$11 ] { } ) always clobbers reg byte y +Statement [110] (byte~) plexShowSprite::$3 ← > *((const word*) PLEX_XPOS + (byte~) plexShowSprite::$11) [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$3 ] { } ) always clobbers reg byte a +Statement [112] (byte~) plexShowSprite::$9 ← (byte) $ff ^ (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next plexShowSprite::$9 ] { } ) always clobbers reg byte a +Statement [113] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) plexShowSprite::$9 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [119] if((byte) plex_sprite_msb!=(byte) 0) goto plexShowSprite::@return [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [120] (byte) plex_sprite_msb ← (byte) 1 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) plex_sprite_msb [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] ( plexShowSprite:86 [ plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ loop::sy#2 loop::sy#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -2453,26 +2453,26 @@ Potential registers zp[1]:34 [ plexShowSprite::$5 ] : zp[1]:34 , reg byte a , re Potential registers zp[1]:35 [ plexShowSprite::$6 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plexSort] 3,622.83: zp[1]:6 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 303: zp[1]:7 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 202: zp[1]:20 [ plexSort::s#2 ] 193.58: zp[1]:5 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp[1]:19 [ plexSort::nxt_y#0 ] 30.3: zp[1]:18 [ plexSort::nxt_idx#0 ] -Uplift Scope [loop] 252.5: zp[1]:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 6.81: zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplift Scope [init] 33: zp[1]:11 [ init::ss#2 init::ss#1 ] 25.3: zp[1]:8 [ init::sx#2 init::sx#1 ] 22: zp[1]:21 [ init::$3 ] 15.58: zp[2]:9 [ init::xp#2 init::xp#1 ] -Uplift Scope [plexShowSprite] 4: zp[1]:26 [ plexShowSprite::plexFreeAdd1_$0 ] 4: zp[1]:27 [ plexShowSprite::plexFreeAdd1_$1 ] 4: zp[1]:28 [ plexShowSprite::plexFreeAdd1_$2 ] 4: zp[1]:29 [ plexShowSprite::xpos_idx#0 ] 4: zp[1]:31 [ plexShowSprite::$2 ] 4: zp[1]:32 [ plexShowSprite::$3 ] 4: zp[1]:33 [ plexShowSprite::$9 ] 4: zp[1]:34 [ plexShowSprite::$5 ] 4: zp[1]:35 [ plexShowSprite::$6 ] 3: zp[1]:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp[1]:30 [ plexShowSprite::$11 ] 0.5: zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplift Scope [plexInit] 38.5: zp[1]:12 [ plexInit::i#2 plexInit::i#1 ] +Uplift Scope [plexSort] 36,166,672.83: zp[1]:6 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 3,000,003: zp[1]:7 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] 2,000,002: zp[1]:20 [ plexSort::s#2 ] 1,916,668.58: zp[1]:5 [ plexSort::m#2 plexSort::m#1 ] 1,500,000.38: zp[1]:19 [ plexSort::nxt_y#0 ] 300,000.3: zp[1]:18 [ plexSort::nxt_idx#0 ] +Uplift Scope [loop] 25,002.5: zp[1]:4 [ loop::sy#2 loop::sy#1 ] 24,171.33: zp[1]:3 [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] 619.67: zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplift Scope [plexInit] 35,003.5: zp[1]:12 [ plexInit::i#2 plexInit::i#1 ] +Uplift Scope [init] 3,003: zp[1]:11 [ init::ss#2 init::ss#1 ] 2,302.3: zp[1]:8 [ init::sx#2 init::sx#1 ] 2,002: zp[1]:21 [ init::$3 ] 1,418.08: zp[2]:9 [ init::xp#2 init::xp#1 ] +Uplift Scope [] 1,000.55: zp[1]:17 [ framedone ] 335.71: zp[1]:14 [ plex_sprite_idx ] 332.81: zp[1]:16 [ plex_free_next ] 321.48: zp[1]:15 [ plex_sprite_msb ] 309.44: zp[1]:13 [ plex_show_idx ] +Uplift Scope [plexShowSprite] 202: zp[1]:26 [ plexShowSprite::plexFreeAdd1_$0 ] 202: zp[1]:27 [ plexShowSprite::plexFreeAdd1_$1 ] 202: zp[1]:28 [ plexShowSprite::plexFreeAdd1_$2 ] 202: zp[1]:29 [ plexShowSprite::xpos_idx#0 ] 202: zp[1]:31 [ plexShowSprite::$2 ] 202: zp[1]:32 [ plexShowSprite::$3 ] 202: zp[1]:33 [ plexShowSprite::$9 ] 202: zp[1]:34 [ plexShowSprite::$5 ] 202: zp[1]:35 [ plexShowSprite::$6 ] 151.5: zp[1]:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 101: zp[1]:30 [ plexShowSprite::$11 ] 25.25: zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] Uplift Scope [plex_irq] 11: zp[1]:23 [ plex_irq::$4 ] 4: zp[1]:22 [ plex_irq::plexFreeNextYpos1_return#0 ] -Uplift Scope [] 10.55: zp[1]:17 [ framedone ] 0.79: zp[1]:13 [ plex_show_idx ] 0.68: zp[1]:16 [ plex_free_next ] 0.48: zp[1]:15 [ plex_sprite_msb ] 0.39: zp[1]:14 [ plex_sprite_idx ] Uplift Scope [main] Uplifting [plexSort] best 60379 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp[1]:20 [ plexSort::s#2 ] zp[1]:5 [ plexSort::m#2 plexSort::m#1 ] zp[1]:19 [ plexSort::nxt_y#0 ] zp[1]:18 [ plexSort::nxt_idx#0 ] Limited combination testing to 10 combinations of 972 possible. Uplifting [loop] best 58449 combination reg byte y [ loop::sy#2 loop::sy#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Limited combination testing to 10 combinations of 27 possible. -Uplifting [init] best 58199 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp[1]:21 [ init::$3 ] zp[2]:9 [ init::xp#2 init::xp#1 ] +Uplifting [plexInit] best 58329 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [init] best 58079 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp[1]:21 [ init::$3 ] zp[2]:9 [ init::xp#2 init::xp#1 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [plexShowSprite] best 58189 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] zp[1]:28 [ plexShowSprite::plexFreeAdd1_$2 ] zp[1]:29 [ plexShowSprite::xpos_idx#0 ] zp[1]:31 [ plexShowSprite::$2 ] zp[1]:32 [ plexShowSprite::$3 ] zp[1]:33 [ plexShowSprite::$9 ] zp[1]:34 [ plexShowSprite::$5 ] zp[1]:35 [ plexShowSprite::$6 ] zp[1]:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:30 [ plexShowSprite::$11 ] zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [] best 58079 combination zp[1]:17 [ framedone ] zp[1]:14 [ plex_sprite_idx ] zp[1]:16 [ plex_free_next ] zp[1]:15 [ plex_sprite_msb ] zp[1]:13 [ plex_show_idx ] +Uplifting [plexShowSprite] best 58069 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0 ] reg byte x [ plexShowSprite::plexFreeAdd1_$1 ] zp[1]:28 [ plexShowSprite::plexFreeAdd1_$2 ] zp[1]:29 [ plexShowSprite::xpos_idx#0 ] zp[1]:31 [ plexShowSprite::$2 ] zp[1]:32 [ plexShowSprite::$3 ] zp[1]:33 [ plexShowSprite::$9 ] zp[1]:34 [ plexShowSprite::$5 ] zp[1]:35 [ plexShowSprite::$6 ] zp[1]:25 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp[1]:30 [ plexShowSprite::$11 ] zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] Limited combination testing to 10 combinations of 1572864 possible. -Uplifting [plexInit] best 58069 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] Uplifting [plex_irq] best 58006 combination zp[1]:23 [ plex_irq::$4 ] reg byte x [ plex_irq::plexFreeNextYpos1_return#0 ] -Uplifting [] best 58006 combination zp[1]:17 [ framedone ] zp[1]:13 [ plex_show_idx ] zp[1]:16 [ plex_free_next ] zp[1]:15 [ plex_sprite_msb ] zp[1]:14 [ plex_sprite_idx ] Uplifting [main] best 58006 combination Attempting to uplift remaining variables inzp[1]:20 [ plexSort::s#2 ] Uplifting [plexSort] best 57406 combination reg byte x [ plexSort::s#2 ] @@ -2484,12 +2484,18 @@ Attempting to uplift remaining variables inzp[1]:18 [ plexSort::nxt_idx#0 ] Uplifting [plexSort] best 57406 combination zp[1]:18 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp[1]:21 [ init::$3 ] Uplifting [init] best 57366 combination reg byte a [ init::$3 ] -Attempting to uplift remaining variables inzp[1]:23 [ plex_irq::$4 ] -Uplifting [plex_irq] best 57366 combination zp[1]:23 [ plex_irq::$4 ] Attempting to uplift remaining variables inzp[1]:17 [ framedone ] Uplifting [] best 57366 combination zp[1]:17 [ framedone ] Attempting to uplift remaining variables inzp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Uplifting [loop] best 57366 combination zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Attempting to uplift remaining variables inzp[1]:14 [ plex_sprite_idx ] +Uplifting [] best 57366 combination zp[1]:14 [ plex_sprite_idx ] +Attempting to uplift remaining variables inzp[1]:16 [ plex_free_next ] +Uplifting [] best 57366 combination zp[1]:16 [ plex_free_next ] +Attempting to uplift remaining variables inzp[1]:15 [ plex_sprite_msb ] +Uplifting [] best 57366 combination zp[1]:15 [ plex_sprite_msb ] +Attempting to uplift remaining variables inzp[1]:13 [ plex_show_idx ] +Uplifting [] best 57366 combination zp[1]:13 [ plex_show_idx ] Attempting to uplift remaining variables inzp[1]:28 [ plexShowSprite::plexFreeAdd1_$2 ] Uplifting [plexShowSprite] best 57362 combination reg byte a [ plexShowSprite::plexFreeAdd1_$2 ] Attempting to uplift remaining variables inzp[1]:29 [ plexShowSprite::xpos_idx#0 ] @@ -2508,16 +2514,10 @@ Attempting to uplift remaining variables inzp[1]:25 [ plexShowSprite::plexFreeAd Uplifting [plexShowSprite] best 57319 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] Attempting to uplift remaining variables inzp[1]:30 [ plexShowSprite::$11 ] Uplifting [plexShowSprite] best 57312 combination reg byte x [ plexShowSprite::$11 ] -Attempting to uplift remaining variables inzp[1]:13 [ plex_show_idx ] -Uplifting [] best 57312 combination zp[1]:13 [ plex_show_idx ] -Attempting to uplift remaining variables inzp[1]:16 [ plex_free_next ] -Uplifting [] best 57312 combination zp[1]:16 [ plex_free_next ] Attempting to uplift remaining variables inzp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] Uplifting [plexShowSprite] best 57312 combination zp[1]:24 [ plexShowSprite::plex_sprite_idx2#0 ] -Attempting to uplift remaining variables inzp[1]:15 [ plex_sprite_msb ] -Uplifting [] best 57312 combination zp[1]:15 [ plex_sprite_msb ] -Attempting to uplift remaining variables inzp[1]:14 [ plex_sprite_idx ] -Uplifting [] best 57312 combination zp[1]:14 [ plex_sprite_idx ] +Attempting to uplift remaining variables inzp[1]:23 [ plex_irq::$4 ] +Uplifting [plex_irq] best 57312 combination zp[1]:23 [ plex_irq::$4 ] Allocated (was zp[1]:5) zp[1]:3 [ plexSort::m#2 plexSort::m#1 ] Allocated (was zp[2]:9) zp[2]:4 [ init::xp#2 init::xp#1 ] Allocated (was zp[1]:13) zp[1]:6 [ plex_show_idx ] @@ -3371,23 +3371,23 @@ FINAL SYMBOL TABLE (const byte) WHITE = (byte) 1 (const byte*) YSIN[(number) $100] = kickasm {{ .fill $100, round(139.5+89.5*sin(toRadians(360*i/256))) }} -(bool) framedone loadstore zp[1]:10 10.545454545454545 +(bool) framedone loadstore zp[1]:10 1000.5454545454544 (void()) init() -(byte~) init::$3 reg byte a 22.0 +(byte~) init::$3 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 (label) init::@4 (label) init::@return (byte) init::ss -(byte) init::ss#1 reg byte x 16.5 -(byte) init::ss#2 reg byte x 16.5 +(byte) init::ss#1 reg byte x 1501.5 +(byte) init::ss#2 reg byte x 1501.5 (byte) init::sx -(byte) init::sx#1 reg byte x 16.5 -(byte) init::sx#2 reg byte x 8.8 +(byte) init::sx#1 reg byte x 1501.5 +(byte) init::sx#2 reg byte x 800.8 (word) init::xp -(word) init::xp#1 xp zp[2]:4 7.333333333333333 -(word) init::xp#2 xp zp[2]:4 8.25 +(word) init::xp#1 xp zp[2]:4 667.3333333333334 +(word) init::xp#2 xp zp[2]:4 750.75 (void()) loop() (label) loop::@1 (label) loop::@2 @@ -3396,15 +3396,15 @@ FINAL SYMBOL TABLE (label) loop::@5 (label) loop::@6 (byte) loop::sin_idx -(byte) loop::sin_idx#1 sin_idx zp[1]:2 3.142857142857143 -(byte) loop::sin_idx#6 sin_idx zp[1]:2 3.666666666666667 +(byte) loop::sin_idx#1 sin_idx zp[1]:2 286.0 +(byte) loop::sin_idx#6 sin_idx zp[1]:2 333.6666666666667 (byte) loop::sy -(byte) loop::sy#1 reg byte y 151.5 -(byte) loop::sy#2 reg byte y 101.0 +(byte) loop::sy#1 reg byte y 15001.5 +(byte) loop::sy#2 reg byte y 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 reg byte x 67.33333333333333 -(byte) loop::y_idx#2 reg byte x 157.0 -(byte) loop::y_idx#4 reg byte x 22.0 +(byte) loop::y_idx#1 reg byte x 6667.333333333333 +(byte) loop::y_idx#2 reg byte x 15502.0 +(byte) loop::y_idx#4 reg byte x 2002.0 (void()) main() (label) main::@1 (label) main::@return @@ -3412,18 +3412,18 @@ FINAL SYMBOL TABLE (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$6 reg byte a 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 101.0 +(byte~) plexShowSprite::$2 reg byte a 202.0 +(byte~) plexShowSprite::$3 reg byte a 202.0 +(byte~) plexShowSprite::$5 reg byte x 202.0 +(byte~) plexShowSprite::$6 reg byte a 202.0 +(byte~) plexShowSprite::$9 reg byte a 202.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -3431,15 +3431,15 @@ FINAL SYMBOL TABLE (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$2 reg byte a 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$2 reg byte a 202.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 151.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:14 0.5 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:14 25.25 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 202.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -3451,24 +3451,24 @@ FINAL SYMBOL TABLE (label) plexSort::@7 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:3 151.5 -(byte) plexSort::m#2 m zp[1]:3 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:3 1500001.5 +(byte) plexSort::m#2 m zp[1]:3 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (label) plexSort::plexFreePrepare1_@2 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 -(byte) plex_free_next loadstore zp[1]:9 0.6774193548387095 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 +(byte) plex_free_next loadstore zp[1]:9 332.80645161290323 interrupt(KERNEL_MIN)(void()) plex_irq() (byte~) plex_irq::$4 zp[1]:13 11.0 (label) plex_irq::@1 @@ -3483,9 +3483,9 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_irq::plexFreeNextYpos1_return (byte) plex_irq::plexFreeNextYpos1_return#0 reg byte x 4.0 (byte) plex_irq::rasterY -(byte) plex_show_idx loadstore zp[1]:6 0.7941176470588236 -(byte) plex_sprite_idx loadstore zp[1]:7 0.3870967741935484 -(byte) plex_sprite_msb loadstore zp[1]:8 0.48484848484848486 +(byte) plex_show_idx loadstore zp[1]:6 309.44117647058835 +(byte) plex_sprite_idx loadstore zp[1]:7 335.7096774193548 +(byte) plex_sprite_msb loadstore zp[1]:8 321.4848484848485 zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym index e85e57507..dc965dbb6 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym @@ -39,23 +39,23 @@ (const byte) WHITE = (byte) 1 (const byte*) YSIN[(number) $100] = kickasm {{ .fill $100, round(139.5+89.5*sin(toRadians(360*i/256))) }} -(bool) framedone loadstore zp[1]:10 10.545454545454545 +(bool) framedone loadstore zp[1]:10 1000.5454545454544 (void()) init() -(byte~) init::$3 reg byte a 22.0 +(byte~) init::$3 reg byte a 2002.0 (label) init::@1 (label) init::@2 (label) init::@3 (label) init::@4 (label) init::@return (byte) init::ss -(byte) init::ss#1 reg byte x 16.5 -(byte) init::ss#2 reg byte x 16.5 +(byte) init::ss#1 reg byte x 1501.5 +(byte) init::ss#2 reg byte x 1501.5 (byte) init::sx -(byte) init::sx#1 reg byte x 16.5 -(byte) init::sx#2 reg byte x 8.8 +(byte) init::sx#1 reg byte x 1501.5 +(byte) init::sx#2 reg byte x 800.8 (word) init::xp -(word) init::xp#1 xp zp[2]:4 7.333333333333333 -(word) init::xp#2 xp zp[2]:4 8.25 +(word) init::xp#1 xp zp[2]:4 667.3333333333334 +(word) init::xp#2 xp zp[2]:4 750.75 (void()) loop() (label) loop::@1 (label) loop::@2 @@ -64,15 +64,15 @@ (label) loop::@5 (label) loop::@6 (byte) loop::sin_idx -(byte) loop::sin_idx#1 sin_idx zp[1]:2 3.142857142857143 -(byte) loop::sin_idx#6 sin_idx zp[1]:2 3.666666666666667 +(byte) loop::sin_idx#1 sin_idx zp[1]:2 286.0 +(byte) loop::sin_idx#6 sin_idx zp[1]:2 333.6666666666667 (byte) loop::sy -(byte) loop::sy#1 reg byte y 151.5 -(byte) loop::sy#2 reg byte y 101.0 +(byte) loop::sy#1 reg byte y 15001.5 +(byte) loop::sy#2 reg byte y 10001.0 (byte) loop::y_idx -(byte) loop::y_idx#1 reg byte x 67.33333333333333 -(byte) loop::y_idx#2 reg byte x 157.0 -(byte) loop::y_idx#4 reg byte x 22.0 +(byte) loop::y_idx#1 reg byte x 6667.333333333333 +(byte) loop::y_idx#2 reg byte x 15502.0 +(byte) loop::y_idx#4 reg byte x 2002.0 (void()) main() (label) main::@1 (label) main::@return @@ -80,18 +80,18 @@ (label) plexInit::@1 (label) plexInit::@return (byte) plexInit::i -(byte) plexInit::i#1 reg byte x 16.5 -(byte) plexInit::i#2 reg byte x 22.0 +(byte) plexInit::i#1 reg byte x 15001.5 +(byte) plexInit::i#2 reg byte x 20002.0 (label) plexInit::plexSetScreen1 (byte*) plexInit::plexSetScreen1_screen (byte*) plexInit::screen (void()) plexShowSprite() -(byte~) plexShowSprite::$11 reg byte x 2.0 -(byte~) plexShowSprite::$2 reg byte a 4.0 -(byte~) plexShowSprite::$3 reg byte a 4.0 -(byte~) plexShowSprite::$5 reg byte x 4.0 -(byte~) plexShowSprite::$6 reg byte a 4.0 -(byte~) plexShowSprite::$9 reg byte a 4.0 +(byte~) plexShowSprite::$11 reg byte x 101.0 +(byte~) plexShowSprite::$2 reg byte a 202.0 +(byte~) plexShowSprite::$3 reg byte a 202.0 +(byte~) plexShowSprite::$5 reg byte x 202.0 +(byte~) plexShowSprite::$6 reg byte a 202.0 +(byte~) plexShowSprite::$9 reg byte a 202.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@3 @@ -99,15 +99,15 @@ (label) plexShowSprite::@5 (label) plexShowSprite::@return (label) plexShowSprite::plexFreeAdd1 -(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 4.0 -(byte~) plexShowSprite::plexFreeAdd1_$2 reg byte a 4.0 +(byte~) plexShowSprite::plexFreeAdd1_$0 reg byte a 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$1 reg byte x 202.0 +(byte~) plexShowSprite::plexFreeAdd1_$2 reg byte a 202.0 (byte) plexShowSprite::plexFreeAdd1_ypos -(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 +(byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 151.5 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:14 0.5 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp[1]:14 25.25 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 reg byte a 4.0 +(byte) plexShowSprite::xpos_idx#0 reg byte a 202.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -119,24 +119,24 @@ (label) plexSort::@7 (label) plexSort::@return (byte) plexSort::m -(byte) plexSort::m#1 m zp[1]:3 151.5 -(byte) plexSort::m#2 m zp[1]:3 42.08333333333333 +(byte) plexSort::m#1 m zp[1]:3 1500001.5 +(byte) plexSort::m#2 m zp[1]:3 416667.0833333334 (byte) plexSort::nxt_idx -(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 30.299999999999997 +(byte) plexSort::nxt_idx#0 nxt_idx zp[1]:11 300000.30000000005 (byte) plexSort::nxt_y -(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 150.375 +(byte) plexSort::nxt_y#0 nxt_y zp[1]:12 1500000.375 (label) plexSort::plexFreePrepare1 (label) plexSort::plexFreePrepare1_@1 (label) plexSort::plexFreePrepare1_@2 (byte) plexSort::plexFreePrepare1_s -(byte) plexSort::plexFreePrepare1_s#1 reg byte x 151.5 -(byte) plexSort::plexFreePrepare1_s#2 reg byte x 151.5 +(byte) plexSort::plexFreePrepare1_s#1 reg byte x 1500001.5 +(byte) plexSort::plexFreePrepare1_s#2 reg byte x 1500001.5 (byte) plexSort::s -(byte) plexSort::s#1 reg byte x 1368.3333333333335 -(byte) plexSort::s#2 reg byte x 202.0 -(byte) plexSort::s#3 reg byte x 2052.5 -(byte) plexSort::s#6 reg byte x 202.0 -(byte) plex_free_next loadstore zp[1]:9 0.6774193548387095 +(byte) plexSort::s#1 reg byte x 1.3666668333333332E7 +(byte) plexSort::s#2 reg byte x 2000002.0 +(byte) plexSort::s#3 reg byte x 2.05000025E7 +(byte) plexSort::s#6 reg byte x 2000002.0 +(byte) plex_free_next loadstore zp[1]:9 332.80645161290323 interrupt(KERNEL_MIN)(void()) plex_irq() (byte~) plex_irq::$4 zp[1]:13 11.0 (label) plex_irq::@1 @@ -151,9 +151,9 @@ interrupt(KERNEL_MIN)(void()) plex_irq() (byte) plex_irq::plexFreeNextYpos1_return (byte) plex_irq::plexFreeNextYpos1_return#0 reg byte x 4.0 (byte) plex_irq::rasterY -(byte) plex_show_idx loadstore zp[1]:6 0.7941176470588236 -(byte) plex_sprite_idx loadstore zp[1]:7 0.3870967741935484 -(byte) plex_sprite_msb loadstore zp[1]:8 0.48484848484848486 +(byte) plex_show_idx loadstore zp[1]:6 309.44117647058835 +(byte) plex_sprite_idx loadstore zp[1]:7 335.7096774193548 +(byte) plex_sprite_msb loadstore zp[1]:8 321.4848484848485 zp[1]:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#1 loop::y_idx#4 ] diff --git a/src/test/ref/multiply-2s.log b/src/test/ref/multiply-2s.log index d98b4f94a..887f5e9e6 100644 --- a/src/test/ref/multiply-2s.log +++ b/src/test/ref/multiply-2s.log @@ -100,7 +100,7 @@ Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#2 * (byt Inferred type updated to byte in (unumber~) main::$2 ← (byte) main::i#2 * (byte) 4 Inferred type updated to byte in (unumber~) main::$3 ← (byte) main::i#2 * (byte) 8 Inferred type updated to signed byte in (snumber~) main::$6 ← (signed byte) main::sb#0 * (signed byte) 2 -Alias (signed byte) main::sb#0 = (signed byte~) main::$5 +Alias main::sb#0 = main::$5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$8 [17] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -131,7 +131,7 @@ Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte) main::i#2 = (byte~) main::$0 +Alias main::i#2 = main::$0 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -189,15 +189,15 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 -(signed byte~) main::$7 11.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(signed byte~) main::$7 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 22.0 +(signed byte) main::sb#0 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -326,18 +326,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a -Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] ) always clobbers reg byte a -Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a -Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] ) always clobbers reg byte a -Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a +Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] { } ) always clobbers reg byte a +Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a +Statement [13] (signed byte) main::sb#0 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::sb#0 ] ( main:2 [ main::i#2 main::sb#0 ] { } ) always clobbers reg byte a +Statement [14] (signed byte~) main::$7 ← (signed byte) main::sb#0 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -346,7 +346,7 @@ Potential registers zp[1]:6 [ main::sb#0 ] : zp[1]:6 , reg byte a , reg byte x , Potential registers zp[1]:7 [ main::$7 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] 22: zp[1]:4 [ main::$2 ] 22: zp[1]:5 [ main::$3 ] 22: zp[1]:6 [ main::sb#0 ] 11: zp[1]:7 [ main::$7 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] 202: zp[1]:4 [ main::$2 ] 202: zp[1]:5 [ main::$3 ] 202: zp[1]:6 [ main::sb#0 ] 101: zp[1]:7 [ main::$7 ] Uplift Scope [] Uplifting [main] best 863 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] zp[1]:6 [ main::sb#0 ] zp[1]:7 [ main::$7 ] @@ -468,18 +468,18 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(signed byte~) main::$7 reg byte a 11.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(signed byte~) main::$7 reg byte a 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/multiply-2s.sym b/src/test/ref/multiply-2s.sym index c18100d7a..87c2675fd 100644 --- a/src/test/ref/multiply-2s.sym +++ b/src/test/ref/multiply-2s.sym @@ -2,18 +2,18 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(signed byte~) main::$7 reg byte a 11.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(signed byte~) main::$7 reg byte a 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.00000000000001 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/multiply-ns.log b/src/test/ref/multiply-ns.log index e04fd906c..5cc124db9 100644 --- a/src/test/ref/multiply-ns.log +++ b/src/test/ref/multiply-ns.log @@ -213,18 +213,18 @@ Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte) main::i#2 = (byte~) main::$0 -Alias (byte~) main::$2 = (byte~) main::$17 -Alias (byte~) main::$4 = (byte~) main::$19 -Alias (byte~) main::$5 = (byte~) main::$22 -Alias (byte~) main::$6 = (byte~) main::$26 -Alias (byte~) main::$8 = (byte~) main::$28 -Alias (byte~) main::$9 = (byte~) main::$31 -Alias (byte~) main::$10 = (byte~) main::$35 -Alias (byte~) main::$11 = (byte~) main::$38 -Alias (byte~) main::$12 = (byte~) main::$42 -Alias (byte~) main::$13 = (byte~) main::$47 -Alias (byte~) main::$14 = (byte~) main::$53 +Alias main::i#2 = main::$0 +Alias main::$2 = main::$17 +Alias main::$4 = main::$19 +Alias main::$5 = main::$22 +Alias main::$6 = main::$26 +Alias main::$8 = main::$28 +Alias main::$9 = main::$31 +Alias main::$10 = main::$35 +Alias main::$11 = main::$38 +Alias main::$12 = main::$42 +Alias main::$13 = main::$47 +Alias main::$14 = main::$53 Successful SSA optimization Pass2AliasElimination Identified duplicate assignment right side [5] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1 Identified duplicate assignment right side [11] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 @@ -238,9 +238,9 @@ Identified duplicate assignment right side [48] (byte~) main::$39 ← (byte) mai Identified duplicate assignment right side [54] (byte~) main::$43 ← (byte) main::i#2 << (byte) 1 Identified duplicate assignment right side [61] (byte~) main::$48 ← (byte) main::i#2 << (byte) 1 Successful SSA optimization Pass2DuplicateRValueIdentification -Alias (byte~) main::$16 = (byte~) main::$1 (byte~) main::$20 (byte~) main::$23 (byte~) main::$36 (byte~) main::$39 (byte~) main::$43 (byte~) main::$48 -Alias (byte~) main::$18 = (byte~) main::$3 (byte~) main::$29 (byte~) main::$32 -Alias (byte~) main::$27 = (byte~) main::$7 +Alias main::$16 = main::$1 main::$20 main::$23 main::$36 main::$39 main::$43 main::$48 +Alias main::$18 = main::$3 main::$29 main::$32 +Alias main::$27 = main::$7 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -333,39 +333,39 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$10 22.0 -(byte~) main::$11 22.0 -(byte~) main::$12 22.0 -(byte~) main::$13 22.0 -(byte~) main::$14 22.0 -(byte~) main::$16 2.605263157894737 -(byte~) main::$18 3.055555555555556 -(byte~) main::$2 22.0 -(byte~) main::$21 22.0 -(byte~) main::$24 22.0 -(byte~) main::$25 22.0 -(byte~) main::$27 16.5 -(byte~) main::$30 22.0 -(byte~) main::$33 22.0 -(byte~) main::$34 22.0 -(byte~) main::$37 22.0 -(byte~) main::$4 22.0 -(byte~) main::$40 22.0 -(byte~) main::$41 22.0 -(byte~) main::$44 22.0 -(byte~) main::$45 22.0 -(byte~) main::$46 22.0 -(byte~) main::$49 22.0 -(byte~) main::$5 22.0 -(byte~) main::$50 22.0 -(byte~) main::$51 22.0 -(byte~) main::$52 22.0 -(byte~) main::$6 22.0 -(byte~) main::$8 22.0 -(byte~) main::$9 22.0 +(byte~) main::$10 202.0 +(byte~) main::$11 202.0 +(byte~) main::$12 202.0 +(byte~) main::$13 202.0 +(byte~) main::$14 202.0 +(byte~) main::$16 23.921052631578952 +(byte~) main::$18 28.055555555555554 +(byte~) main::$2 202.0 +(byte~) main::$21 202.0 +(byte~) main::$24 202.0 +(byte~) main::$25 202.0 +(byte~) main::$27 151.5 +(byte~) main::$30 202.0 +(byte~) main::$33 202.0 +(byte~) main::$34 202.0 +(byte~) main::$37 202.0 +(byte~) main::$4 202.0 +(byte~) main::$40 202.0 +(byte~) main::$41 202.0 +(byte~) main::$44 202.0 +(byte~) main::$45 202.0 +(byte~) main::$46 202.0 +(byte~) main::$49 202.0 +(byte~) main::$5 202.0 +(byte~) main::$50 202.0 +(byte~) main::$51 202.0 +(byte~) main::$52 202.0 +(byte~) main::$6 202.0 +(byte~) main::$8 202.0 +(byte~) main::$9 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 9.086956521739129 +(byte) main::i#1 151.5 +(byte) main::i#2 83.43478260869571 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -751,72 +751,72 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte~) main::$2 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$2 ] ( main:2 [ main::i#2 main::$16 main::$2 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$2 ] ( main:2 [ main::i#2 main::$16 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::$16 ] -Statement [11] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$4 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$4 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$4 ] ) always clobbers reg byte a +Statement [11] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$4 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$4 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$18 ] -Statement [15] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$21 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$21 ] ) always clobbers reg byte a -Statement [16] (byte~) main::$5 ← (byte~) main::$21 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$5 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$5 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$24 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$24 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$24 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$25 ← (byte~) main::$24 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$25 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$25 ] ) always clobbers reg byte a -Statement [20] (byte~) main::$6 ← (byte~) main::$25 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$6 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$6 ] ) always clobbers reg byte a -Statement [22] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$16 main::$18 main::$27 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$27 ] ) always clobbers reg byte a -Statement [24] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$8 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$8 ] ) always clobbers reg byte a -Statement [26] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$30 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$30 ] ) always clobbers reg byte a -Statement [27] (byte~) main::$9 ← (byte~) main::$30 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$9 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$9 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$33 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$33 ] ( main:2 [ main::i#2 main::$16 main::$33 ] ) always clobbers reg byte a -Statement [30] (byte~) main::$34 ← (byte~) main::$33 << (byte) 1 [ main::i#2 main::$16 main::$34 ] ( main:2 [ main::i#2 main::$16 main::$34 ] ) always clobbers reg byte a -Statement [31] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2 [ main::i#2 main::$16 main::$10 ] ( main:2 [ main::i#2 main::$16 main::$10 ] ) always clobbers reg byte a -Statement [33] (byte~) main::$37 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$37 ] ( main:2 [ main::i#2 main::$16 main::$37 ] ) always clobbers reg byte a -Statement [34] (byte~) main::$11 ← (byte~) main::$37 << (byte) 2 [ main::i#2 main::$16 main::$11 ] ( main:2 [ main::i#2 main::$16 main::$11 ] ) always clobbers reg byte a -Statement [36] (byte~) main::$40 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$40 ] ( main:2 [ main::i#2 main::$16 main::$40 ] ) always clobbers reg byte a -Statement [37] (byte~) main::$41 ← (byte~) main::$40 << (byte) 2 [ main::i#2 main::$16 main::$41 ] ( main:2 [ main::i#2 main::$16 main::$41 ] ) always clobbers reg byte a -Statement [38] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2 [ main::i#2 main::$16 main::$12 ] ( main:2 [ main::i#2 main::$16 main::$12 ] ) always clobbers reg byte a -Statement [40] (byte~) main::$44 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$44 ] ( main:2 [ main::i#2 main::$16 main::$44 ] ) always clobbers reg byte a -Statement [41] (byte~) main::$45 ← (byte~) main::$44 << (byte) 1 [ main::i#2 main::$16 main::$45 ] ( main:2 [ main::i#2 main::$16 main::$45 ] ) always clobbers reg byte a -Statement [42] (byte~) main::$46 ← (byte~) main::$45 + (byte) main::i#2 [ main::i#2 main::$16 main::$46 ] ( main:2 [ main::i#2 main::$16 main::$46 ] ) always clobbers reg byte a -Statement [43] (byte~) main::$13 ← (byte~) main::$46 << (byte) 1 [ main::i#2 main::$16 main::$13 ] ( main:2 [ main::i#2 main::$16 main::$13 ] ) always clobbers reg byte a -Statement [45] (byte~) main::$49 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$49 ] ( main:2 [ main::i#2 main::$49 ] ) always clobbers reg byte a -Statement [46] (byte~) main::$50 ← (byte~) main::$49 << (byte) 1 [ main::i#2 main::$50 ] ( main:2 [ main::i#2 main::$50 ] ) always clobbers reg byte a -Statement [47] (byte~) main::$51 ← (byte~) main::$50 + (byte) main::i#2 [ main::i#2 main::$51 ] ( main:2 [ main::i#2 main::$51 ] ) always clobbers reg byte a -Statement [48] (byte~) main::$52 ← (byte~) main::$51 << (byte) 1 [ main::i#2 main::$52 ] ( main:2 [ main::i#2 main::$52 ] ) always clobbers reg byte a -Statement [49] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte~) main::$16 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$2 ] ( main:2 [ main::i#2 main::$16 main::$2 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte~) main::$18 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$4 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$4 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$4 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$21 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$21 ] ) always clobbers reg byte a -Statement [16] (byte~) main::$5 ← (byte~) main::$21 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$5 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$5 ] ) always clobbers reg byte a -Statement [18] (byte~) main::$24 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$24 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$24 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$25 ← (byte~) main::$24 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$25 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$25 ] ) always clobbers reg byte a -Statement [20] (byte~) main::$6 ← (byte~) main::$25 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$6 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$6 ] ) always clobbers reg byte a -Statement [22] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$16 main::$18 main::$27 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$27 ] ) always clobbers reg byte a -Statement [24] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$8 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$8 ] ) always clobbers reg byte a -Statement [26] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$30 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$30 ] ) always clobbers reg byte a -Statement [27] (byte~) main::$9 ← (byte~) main::$30 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$9 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$9 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$33 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$33 ] ( main:2 [ main::i#2 main::$16 main::$33 ] ) always clobbers reg byte a -Statement [30] (byte~) main::$34 ← (byte~) main::$33 << (byte) 1 [ main::i#2 main::$16 main::$34 ] ( main:2 [ main::i#2 main::$16 main::$34 ] ) always clobbers reg byte a -Statement [31] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2 [ main::i#2 main::$16 main::$10 ] ( main:2 [ main::i#2 main::$16 main::$10 ] ) always clobbers reg byte a -Statement [33] (byte~) main::$37 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$37 ] ( main:2 [ main::i#2 main::$16 main::$37 ] ) always clobbers reg byte a -Statement [34] (byte~) main::$11 ← (byte~) main::$37 << (byte) 2 [ main::i#2 main::$16 main::$11 ] ( main:2 [ main::i#2 main::$16 main::$11 ] ) always clobbers reg byte a -Statement [36] (byte~) main::$40 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$40 ] ( main:2 [ main::i#2 main::$16 main::$40 ] ) always clobbers reg byte a -Statement [37] (byte~) main::$41 ← (byte~) main::$40 << (byte) 2 [ main::i#2 main::$16 main::$41 ] ( main:2 [ main::i#2 main::$16 main::$41 ] ) always clobbers reg byte a -Statement [38] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2 [ main::i#2 main::$16 main::$12 ] ( main:2 [ main::i#2 main::$16 main::$12 ] ) always clobbers reg byte a -Statement [40] (byte~) main::$44 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$44 ] ( main:2 [ main::i#2 main::$16 main::$44 ] ) always clobbers reg byte a -Statement [41] (byte~) main::$45 ← (byte~) main::$44 << (byte) 1 [ main::i#2 main::$16 main::$45 ] ( main:2 [ main::i#2 main::$16 main::$45 ] ) always clobbers reg byte a -Statement [42] (byte~) main::$46 ← (byte~) main::$45 + (byte) main::i#2 [ main::i#2 main::$16 main::$46 ] ( main:2 [ main::i#2 main::$16 main::$46 ] ) always clobbers reg byte a -Statement [43] (byte~) main::$13 ← (byte~) main::$46 << (byte) 1 [ main::i#2 main::$16 main::$13 ] ( main:2 [ main::i#2 main::$16 main::$13 ] ) always clobbers reg byte a -Statement [45] (byte~) main::$49 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$49 ] ( main:2 [ main::i#2 main::$49 ] ) always clobbers reg byte a -Statement [46] (byte~) main::$50 ← (byte~) main::$49 << (byte) 1 [ main::i#2 main::$50 ] ( main:2 [ main::i#2 main::$50 ] ) always clobbers reg byte a -Statement [47] (byte~) main::$51 ← (byte~) main::$50 + (byte) main::i#2 [ main::i#2 main::$51 ] ( main:2 [ main::i#2 main::$51 ] ) always clobbers reg byte a -Statement [48] (byte~) main::$52 ← (byte~) main::$51 << (byte) 1 [ main::i#2 main::$52 ] ( main:2 [ main::i#2 main::$52 ] ) always clobbers reg byte a -Statement [49] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] ) always clobbers reg byte a +Statement [15] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$21 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$21 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$5 ← (byte~) main::$21 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$5 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$5 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$24 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$24 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$24 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$25 ← (byte~) main::$24 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$25 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$25 ] { } ) always clobbers reg byte a +Statement [20] (byte~) main::$6 ← (byte~) main::$25 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$6 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$6 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$16 main::$18 main::$27 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$27 ] { } ) always clobbers reg byte a +Statement [24] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$8 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$8 ] { } ) always clobbers reg byte a +Statement [26] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$30 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$30 ] { } ) always clobbers reg byte a +Statement [27] (byte~) main::$9 ← (byte~) main::$30 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$9 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$9 ] { } ) always clobbers reg byte a +Statement [29] (byte~) main::$33 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$33 ] ( main:2 [ main::i#2 main::$16 main::$33 ] { } ) always clobbers reg byte a +Statement [30] (byte~) main::$34 ← (byte~) main::$33 << (byte) 1 [ main::i#2 main::$16 main::$34 ] ( main:2 [ main::i#2 main::$16 main::$34 ] { } ) always clobbers reg byte a +Statement [31] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2 [ main::i#2 main::$16 main::$10 ] ( main:2 [ main::i#2 main::$16 main::$10 ] { } ) always clobbers reg byte a +Statement [33] (byte~) main::$37 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$37 ] ( main:2 [ main::i#2 main::$16 main::$37 ] { } ) always clobbers reg byte a +Statement [34] (byte~) main::$11 ← (byte~) main::$37 << (byte) 2 [ main::i#2 main::$16 main::$11 ] ( main:2 [ main::i#2 main::$16 main::$11 ] { } ) always clobbers reg byte a +Statement [36] (byte~) main::$40 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$40 ] ( main:2 [ main::i#2 main::$16 main::$40 ] { } ) always clobbers reg byte a +Statement [37] (byte~) main::$41 ← (byte~) main::$40 << (byte) 2 [ main::i#2 main::$16 main::$41 ] ( main:2 [ main::i#2 main::$16 main::$41 ] { } ) always clobbers reg byte a +Statement [38] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2 [ main::i#2 main::$16 main::$12 ] ( main:2 [ main::i#2 main::$16 main::$12 ] { } ) always clobbers reg byte a +Statement [40] (byte~) main::$44 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$44 ] ( main:2 [ main::i#2 main::$16 main::$44 ] { } ) always clobbers reg byte a +Statement [41] (byte~) main::$45 ← (byte~) main::$44 << (byte) 1 [ main::i#2 main::$16 main::$45 ] ( main:2 [ main::i#2 main::$16 main::$45 ] { } ) always clobbers reg byte a +Statement [42] (byte~) main::$46 ← (byte~) main::$45 + (byte) main::i#2 [ main::i#2 main::$16 main::$46 ] ( main:2 [ main::i#2 main::$16 main::$46 ] { } ) always clobbers reg byte a +Statement [43] (byte~) main::$13 ← (byte~) main::$46 << (byte) 1 [ main::i#2 main::$16 main::$13 ] ( main:2 [ main::i#2 main::$16 main::$13 ] { } ) always clobbers reg byte a +Statement [45] (byte~) main::$49 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$49 ] ( main:2 [ main::i#2 main::$49 ] { } ) always clobbers reg byte a +Statement [46] (byte~) main::$50 ← (byte~) main::$49 << (byte) 1 [ main::i#2 main::$50 ] ( main:2 [ main::i#2 main::$50 ] { } ) always clobbers reg byte a +Statement [47] (byte~) main::$51 ← (byte~) main::$50 + (byte) main::i#2 [ main::i#2 main::$51 ] ( main:2 [ main::i#2 main::$51 ] { } ) always clobbers reg byte a +Statement [48] (byte~) main::$52 ← (byte~) main::$51 << (byte) 1 [ main::i#2 main::$52 ] ( main:2 [ main::i#2 main::$52 ] { } ) always clobbers reg byte a +Statement [49] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte~) main::$16 [ main::i#2 main::$16 ] ( main:2 [ main::i#2 main::$16 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$2 ] ( main:2 [ main::i#2 main::$16 main::$2 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte~) main::$18 [ main::i#2 main::$16 main::$18 ] ( main:2 [ main::i#2 main::$16 main::$18 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$4 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$4 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$4 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$21 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$21 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$5 ← (byte~) main::$21 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$5 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$5 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$24 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$24 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$24 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$25 ← (byte~) main::$24 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$25 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$25 ] { } ) always clobbers reg byte a +Statement [20] (byte~) main::$6 ← (byte~) main::$25 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$6 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$6 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$16 main::$18 main::$27 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$27 ] { } ) always clobbers reg byte a +Statement [24] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$8 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$8 ] { } ) always clobbers reg byte a +Statement [26] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$18 main::$30 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$30 ] { } ) always clobbers reg byte a +Statement [27] (byte~) main::$9 ← (byte~) main::$30 << (byte) 1 [ main::i#2 main::$16 main::$18 main::$9 ] ( main:2 [ main::i#2 main::$16 main::$18 main::$9 ] { } ) always clobbers reg byte a +Statement [29] (byte~) main::$33 ← (byte~) main::$18 + (byte) main::i#2 [ main::i#2 main::$16 main::$33 ] ( main:2 [ main::i#2 main::$16 main::$33 ] { } ) always clobbers reg byte a +Statement [30] (byte~) main::$34 ← (byte~) main::$33 << (byte) 1 [ main::i#2 main::$16 main::$34 ] ( main:2 [ main::i#2 main::$16 main::$34 ] { } ) always clobbers reg byte a +Statement [31] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2 [ main::i#2 main::$16 main::$10 ] ( main:2 [ main::i#2 main::$16 main::$10 ] { } ) always clobbers reg byte a +Statement [33] (byte~) main::$37 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$37 ] ( main:2 [ main::i#2 main::$16 main::$37 ] { } ) always clobbers reg byte a +Statement [34] (byte~) main::$11 ← (byte~) main::$37 << (byte) 2 [ main::i#2 main::$16 main::$11 ] ( main:2 [ main::i#2 main::$16 main::$11 ] { } ) always clobbers reg byte a +Statement [36] (byte~) main::$40 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$40 ] ( main:2 [ main::i#2 main::$16 main::$40 ] { } ) always clobbers reg byte a +Statement [37] (byte~) main::$41 ← (byte~) main::$40 << (byte) 2 [ main::i#2 main::$16 main::$41 ] ( main:2 [ main::i#2 main::$16 main::$41 ] { } ) always clobbers reg byte a +Statement [38] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2 [ main::i#2 main::$16 main::$12 ] ( main:2 [ main::i#2 main::$16 main::$12 ] { } ) always clobbers reg byte a +Statement [40] (byte~) main::$44 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$16 main::$44 ] ( main:2 [ main::i#2 main::$16 main::$44 ] { } ) always clobbers reg byte a +Statement [41] (byte~) main::$45 ← (byte~) main::$44 << (byte) 1 [ main::i#2 main::$16 main::$45 ] ( main:2 [ main::i#2 main::$16 main::$45 ] { } ) always clobbers reg byte a +Statement [42] (byte~) main::$46 ← (byte~) main::$45 + (byte) main::i#2 [ main::i#2 main::$16 main::$46 ] ( main:2 [ main::i#2 main::$16 main::$46 ] { } ) always clobbers reg byte a +Statement [43] (byte~) main::$13 ← (byte~) main::$46 << (byte) 1 [ main::i#2 main::$16 main::$13 ] ( main:2 [ main::i#2 main::$16 main::$13 ] { } ) always clobbers reg byte a +Statement [45] (byte~) main::$49 ← (byte~) main::$16 + (byte) main::i#2 [ main::i#2 main::$49 ] ( main:2 [ main::i#2 main::$49 ] { } ) always clobbers reg byte a +Statement [46] (byte~) main::$50 ← (byte~) main::$49 << (byte) 1 [ main::i#2 main::$50 ] ( main:2 [ main::i#2 main::$50 ] { } ) always clobbers reg byte a +Statement [47] (byte~) main::$51 ← (byte~) main::$50 + (byte) main::i#2 [ main::i#2 main::$51 ] ( main:2 [ main::i#2 main::$51 ] { } ) always clobbers reg byte a +Statement [48] (byte~) main::$52 ← (byte~) main::$51 << (byte) 1 [ main::i#2 main::$52 ] ( main:2 [ main::i#2 main::$52 ] { } ) always clobbers reg byte a +Statement [49] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2 [ main::i#2 main::$14 ] ( main:2 [ main::i#2 main::$14 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$16 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -850,7 +850,7 @@ Potential registers zp[1]:31 [ main::$52 ] : zp[1]:31 , reg byte a , reg byte x Potential registers zp[1]:32 [ main::$14 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.59: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$2 ] 22: zp[1]:6 [ main::$4 ] 22: zp[1]:7 [ main::$21 ] 22: zp[1]:8 [ main::$5 ] 22: zp[1]:9 [ main::$24 ] 22: zp[1]:10 [ main::$25 ] 22: zp[1]:11 [ main::$6 ] 22: zp[1]:13 [ main::$8 ] 22: zp[1]:14 [ main::$30 ] 22: zp[1]:15 [ main::$9 ] 22: zp[1]:16 [ main::$33 ] 22: zp[1]:17 [ main::$34 ] 22: zp[1]:18 [ main::$10 ] 22: zp[1]:19 [ main::$37 ] 22: zp[1]:20 [ main::$11 ] 22: zp[1]:21 [ main::$40 ] 22: zp[1]:22 [ main::$41 ] 22: zp[1]:23 [ main::$12 ] 22: zp[1]:24 [ main::$44 ] 22: zp[1]:25 [ main::$45 ] 22: zp[1]:26 [ main::$46 ] 22: zp[1]:27 [ main::$13 ] 22: zp[1]:28 [ main::$49 ] 22: zp[1]:29 [ main::$50 ] 22: zp[1]:30 [ main::$51 ] 22: zp[1]:31 [ main::$52 ] 22: zp[1]:32 [ main::$14 ] 16.5: zp[1]:12 [ main::$27 ] 3.06: zp[1]:5 [ main::$18 ] 2.61: zp[1]:3 [ main::$16 ] +Uplift Scope [main] 234.93: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:4 [ main::$2 ] 202: zp[1]:6 [ main::$4 ] 202: zp[1]:7 [ main::$21 ] 202: zp[1]:8 [ main::$5 ] 202: zp[1]:9 [ main::$24 ] 202: zp[1]:10 [ main::$25 ] 202: zp[1]:11 [ main::$6 ] 202: zp[1]:13 [ main::$8 ] 202: zp[1]:14 [ main::$30 ] 202: zp[1]:15 [ main::$9 ] 202: zp[1]:16 [ main::$33 ] 202: zp[1]:17 [ main::$34 ] 202: zp[1]:18 [ main::$10 ] 202: zp[1]:19 [ main::$37 ] 202: zp[1]:20 [ main::$11 ] 202: zp[1]:21 [ main::$40 ] 202: zp[1]:22 [ main::$41 ] 202: zp[1]:23 [ main::$12 ] 202: zp[1]:24 [ main::$44 ] 202: zp[1]:25 [ main::$45 ] 202: zp[1]:26 [ main::$46 ] 202: zp[1]:27 [ main::$13 ] 202: zp[1]:28 [ main::$49 ] 202: zp[1]:29 [ main::$50 ] 202: zp[1]:30 [ main::$51 ] 202: zp[1]:31 [ main::$52 ] 202: zp[1]:32 [ main::$14 ] 151.5: zp[1]:12 [ main::$27 ] 28.06: zp[1]:5 [ main::$18 ] 23.92: zp[1]:3 [ main::$16 ] Uplift Scope [] Uplifting [] best 4933 combination @@ -1143,42 +1143,42 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$16 zp[1]:2 2.605263157894737 -(byte~) main::$18 zp[1]:3 3.055555555555556 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$25 reg byte a 22.0 -(byte~) main::$27 reg byte a 16.5 -(byte~) main::$30 reg byte a 22.0 -(byte~) main::$33 reg byte a 22.0 -(byte~) main::$34 reg byte a 22.0 -(byte~) main::$37 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$40 reg byte a 22.0 -(byte~) main::$41 reg byte a 22.0 -(byte~) main::$44 reg byte a 22.0 -(byte~) main::$45 reg byte a 22.0 -(byte~) main::$46 reg byte a 22.0 -(byte~) main::$49 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$50 reg byte a 22.0 -(byte~) main::$51 reg byte a 22.0 -(byte~) main::$52 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 202.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 +(byte~) main::$16 zp[1]:2 23.921052631578952 +(byte~) main::$18 zp[1]:3 28.055555555555554 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$25 reg byte a 202.0 +(byte~) main::$27 reg byte a 151.5 +(byte~) main::$30 reg byte a 202.0 +(byte~) main::$33 reg byte a 202.0 +(byte~) main::$34 reg byte a 202.0 +(byte~) main::$37 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$40 reg byte a 202.0 +(byte~) main::$41 reg byte a 202.0 +(byte~) main::$44 reg byte a 202.0 +(byte~) main::$45 reg byte a 202.0 +(byte~) main::$46 reg byte a 202.0 +(byte~) main::$49 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 +(byte~) main::$50 reg byte a 202.0 +(byte~) main::$51 reg byte a 202.0 +(byte~) main::$52 reg byte a 202.0 +(byte~) main::$6 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.086956521739129 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 83.43478260869571 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::$16 ] diff --git a/src/test/ref/multiply-ns.sym b/src/test/ref/multiply-ns.sym index 8fb4e6572..8bcbdabe2 100644 --- a/src/test/ref/multiply-ns.sym +++ b/src/test/ref/multiply-ns.sym @@ -2,42 +2,42 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 22.0 -(byte~) main::$12 reg byte a 22.0 -(byte~) main::$13 reg byte a 22.0 -(byte~) main::$14 reg byte a 22.0 -(byte~) main::$16 zp[1]:2 2.605263157894737 -(byte~) main::$18 zp[1]:3 3.055555555555556 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$21 reg byte a 22.0 -(byte~) main::$24 reg byte a 22.0 -(byte~) main::$25 reg byte a 22.0 -(byte~) main::$27 reg byte a 16.5 -(byte~) main::$30 reg byte a 22.0 -(byte~) main::$33 reg byte a 22.0 -(byte~) main::$34 reg byte a 22.0 -(byte~) main::$37 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$40 reg byte a 22.0 -(byte~) main::$41 reg byte a 22.0 -(byte~) main::$44 reg byte a 22.0 -(byte~) main::$45 reg byte a 22.0 -(byte~) main::$46 reg byte a 22.0 -(byte~) main::$49 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 -(byte~) main::$50 reg byte a 22.0 -(byte~) main::$51 reg byte a 22.0 -(byte~) main::$52 reg byte a 22.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 202.0 +(byte~) main::$12 reg byte a 202.0 +(byte~) main::$13 reg byte a 202.0 +(byte~) main::$14 reg byte a 202.0 +(byte~) main::$16 zp[1]:2 23.921052631578952 +(byte~) main::$18 zp[1]:3 28.055555555555554 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$21 reg byte a 202.0 +(byte~) main::$24 reg byte a 202.0 +(byte~) main::$25 reg byte a 202.0 +(byte~) main::$27 reg byte a 151.5 +(byte~) main::$30 reg byte a 202.0 +(byte~) main::$33 reg byte a 202.0 +(byte~) main::$34 reg byte a 202.0 +(byte~) main::$37 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$40 reg byte a 202.0 +(byte~) main::$41 reg byte a 202.0 +(byte~) main::$44 reg byte a 202.0 +(byte~) main::$45 reg byte a 202.0 +(byte~) main::$46 reg byte a 202.0 +(byte~) main::$49 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 +(byte~) main::$50 reg byte a 202.0 +(byte~) main::$51 reg byte a 202.0 +(byte~) main::$52 reg byte a 202.0 +(byte~) main::$6 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.086956521739129 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 83.43478260869571 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::$16 ] diff --git a/src/test/ref/nes-array.log b/src/test/ref/nes-array.log index e3680cec2..d1b50cb6c 100644 --- a/src/test/ref/nes-array.log +++ b/src/test/ref/nes-array.log @@ -119,11 +119,11 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (signed word) foo::return#0 = (signed word~) foo::$0 (signed word) foo::return#4 (signed word) foo::return#1 -Alias (signed word) foo::return#2 = (signed word) foo::return#5 -Alias (signed word*) main::SCREEN#0 = (signed word*) main::SCREEN#3 -Alias (signed word) foo::return#3 = (signed word) foo::return#6 -Alias (signed word*) main::SCREEN#1 = (signed word*) main::SCREEN#4 +Alias foo::return#0 = foo::$0 foo::return#4 foo::return#1 +Alias foo::return#2 = foo::return#5 +Alias main::SCREEN#0 = main::SCREEN#3 +Alias foo::return#3 = foo::return#6 +Alias main::SCREEN#1 = main::SCREEN#4 Successful SSA optimization Pass2AliasElimination Constant (const signed word*) main::SCREEN#0 = (signed word*) 1024 Constant (const byte) foo::x#0 = 1 @@ -212,21 +212,21 @@ foo::@return: scope:[foo] from foo VARIABLE REGISTER WEIGHTS (signed word()) foo((byte) foo::x , (signed word*) foo::y) -(byte~) foo::$1 4.0 +(byte~) foo::$1 202.0 (signed word) foo::return -(signed word) foo::return#0 1.5 -(signed word) foo::return#2 4.0 -(signed word) foo::return#3 4.0 +(signed word) foo::return#0 30.75 +(signed word) foo::return#2 22.0 +(signed word) foo::return#3 22.0 (byte) foo::x -(byte) foo::x#2 2.0 +(byte) foo::x#2 101.0 (signed word*) foo::y -(signed word*) foo::y#2 1.0 +(signed word*) foo::y#2 50.5 (void()) main() -(signed word~) main::$0 4.0 -(signed word~) main::$1 4.0 +(signed word~) main::$0 22.0 +(signed word~) main::$1 22.0 (signed word*) main::SCREEN -(signed word) main::y1 loadstore 20.0 -(signed word) main::y2 loadstore 20.0 +(signed word) main::y1 loadstore 110.0 +(signed word) main::y2 loadstore 110.0 Initial phi equivalence classes [ foo::x#2 ] @@ -403,16 +403,16 @@ foo: { wow: .word $cafe, $babe, $1234, $5678 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (signed word) main::y1 ← (signed word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (signed word) main::y2 ← (signed word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (signed word) foo::return#2 ← (signed word) foo::return#0 [ foo::return#2 ] ( main:2 [ foo::return#2 ] ) always clobbers reg byte a -Statement [8] (signed word~) main::$0 ← (signed word) foo::return#2 [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [9] *((const signed word*) main::SCREEN#0) ← (signed word~) main::$0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] (signed word) foo::return#3 ← (signed word) foo::return#0 [ foo::return#3 ] ( main:2 [ foo::return#3 ] ) always clobbers reg byte a -Statement [12] (signed word~) main::$1 ← (signed word) foo::return#3 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [13] *((const signed word*) main::SCREEN#0+(const byte) SIZEOF_SIGNED_WORD) ← (signed word~) main::$1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] (byte~) foo::$1 ← (byte) foo::x#2 << (byte) 1 [ foo::y#2 foo::$1 ] ( main:2::foo:6 [ foo::y#2 foo::$1 ] main:2::foo:10 [ foo::y#2 foo::$1 ] ) always clobbers reg byte a -Statement [17] (signed word) foo::return#0 ← *((const signed word*) wow + (byte~) foo::$1) + *((signed word*) foo::y#2) [ foo::return#0 ] ( main:2::foo:6 [ foo::return#0 ] main:2::foo:10 [ foo::return#0 ] ) always clobbers reg byte a reg byte y +Statement [4] (signed word) main::y1 ← (signed word) $1234 [ ] ( main:2 [ ] { { foo::return#0 = foo::return#2 } } ) always clobbers reg byte a +Statement [5] (signed word) main::y2 ← (signed word) $1234 [ ] ( main:2 [ ] { { foo::return#0 = foo::return#2 } } ) always clobbers reg byte a +Statement [7] (signed word) foo::return#2 ← (signed word) foo::return#0 [ foo::return#2 ] ( main:2 [ foo::return#2 ] { { foo::return#0 = foo::return#2 } } ) always clobbers reg byte a +Statement [8] (signed word~) main::$0 ← (signed word) foo::return#2 [ main::$0 ] ( main:2 [ main::$0 ] { { foo::return#0 = foo::return#3 } } ) always clobbers reg byte a +Statement [9] *((const signed word*) main::SCREEN#0) ← (signed word~) main::$0 [ ] ( main:2 [ ] { { foo::return#0 = foo::return#3 } } ) always clobbers reg byte a +Statement [11] (signed word) foo::return#3 ← (signed word) foo::return#0 [ foo::return#3 ] ( main:2 [ foo::return#3 ] { { foo::return#0 = foo::return#3 } } ) always clobbers reg byte a +Statement [12] (signed word~) main::$1 ← (signed word) foo::return#3 [ main::$1 ] ( main:2 [ main::$1 ] { } ) always clobbers reg byte a +Statement [13] *((const signed word*) main::SCREEN#0+(const byte) SIZEOF_SIGNED_WORD) ← (signed word~) main::$1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] (byte~) foo::$1 ← (byte) foo::x#2 << (byte) 1 [ foo::y#2 foo::$1 ] ( main:2::foo:6 [ foo::y#2 foo::$1 ] { { foo::return#0 = foo::return#2 } } main:2::foo:10 [ foo::y#2 foo::$1 ] { { foo::return#0 = foo::return#3 } } ) always clobbers reg byte a +Statement [17] (signed word) foo::return#0 ← *((const signed word*) wow + (byte~) foo::$1) + *((signed word*) foo::y#2) [ foo::return#0 ] ( main:2::foo:6 [ foo::return#0 ] { { foo::return#0 = foo::return#2 } } main:2::foo:10 [ foo::return#0 ] { { foo::return#0 = foo::return#3 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ foo::x#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ foo::y#2 ] : zp[2]:3 , Potential registers zp[2]:5 [ main::y1 ] : zp[2]:5 , @@ -425,12 +425,12 @@ Potential registers zp[1]:17 [ foo::$1 ] : zp[1]:17 , reg byte a , reg byte x , Potential registers zp[2]:18 [ foo::return#0 ] : zp[2]:18 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:5 [ main::y1 ] 20: zp[2]:7 [ main::y2 ] 4: zp[2]:11 [ main::$0 ] 4: zp[2]:15 [ main::$1 ] -Uplift Scope [foo] 4: zp[2]:9 [ foo::return#2 ] 4: zp[2]:13 [ foo::return#3 ] 4: zp[1]:17 [ foo::$1 ] 2: zp[1]:2 [ foo::x#2 ] 1.5: zp[2]:18 [ foo::return#0 ] 1: zp[2]:3 [ foo::y#2 ] +Uplift Scope [foo] 202: zp[1]:17 [ foo::$1 ] 101: zp[1]:2 [ foo::x#2 ] 50.5: zp[2]:3 [ foo::y#2 ] 30.75: zp[2]:18 [ foo::return#0 ] 22: zp[2]:9 [ foo::return#2 ] 22: zp[2]:13 [ foo::return#3 ] +Uplift Scope [main] 110: zp[2]:5 [ main::y1 ] 110: zp[2]:7 [ main::y2 ] 22: zp[2]:11 [ main::$0 ] 22: zp[2]:15 [ main::$1 ] Uplift Scope [] -Uplifting [main] best 217 combination zp[2]:5 [ main::y1 ] zp[2]:7 [ main::y2 ] zp[2]:11 [ main::$0 ] zp[2]:15 [ main::$1 ] -Uplifting [foo] best 206 combination zp[2]:9 [ foo::return#2 ] zp[2]:13 [ foo::return#3 ] reg byte a [ foo::$1 ] reg byte x [ foo::x#2 ] zp[2]:18 [ foo::return#0 ] zp[2]:3 [ foo::y#2 ] +Uplifting [foo] best 206 combination reg byte a [ foo::$1 ] reg byte x [ foo::x#2 ] zp[2]:3 [ foo::y#2 ] zp[2]:18 [ foo::return#0 ] zp[2]:9 [ foo::return#2 ] zp[2]:13 [ foo::return#3 ] +Uplifting [main] best 206 combination zp[2]:5 [ main::y1 ] zp[2]:7 [ main::y2 ] zp[2]:11 [ main::$0 ] zp[2]:15 [ main::$1 ] Uplifting [] best 206 combination Coalescing zero page register [ zp[2]:3 [ foo::y#2 ] ] with [ zp[2]:18 [ foo::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ foo::return#2 ] ] with [ zp[2]:11 [ main::$0 ] ] - score: 1 @@ -592,26 +592,26 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (signed word()) foo((byte) foo::x , (signed word*) foo::y) -(byte~) foo::$1 reg byte a 4.0 +(byte~) foo::$1 reg byte a 202.0 (label) foo::@return (signed word) foo::return -(signed word) foo::return#0 return zp[2]:2 1.5 -(signed word) foo::return#2 return zp[2]:2 4.0 -(signed word) foo::return#3 return zp[2]:2 4.0 +(signed word) foo::return#0 return zp[2]:2 30.75 +(signed word) foo::return#2 return zp[2]:2 22.0 +(signed word) foo::return#3 return zp[2]:2 22.0 (byte) foo::x -(byte) foo::x#2 reg byte x 2.0 +(byte) foo::x#2 reg byte x 101.0 (signed word*) foo::y -(signed word*) foo::y#2 y zp[2]:2 1.0 +(signed word*) foo::y#2 y zp[2]:2 50.5 (void()) main() -(signed word~) main::$0 zp[2]:2 4.0 -(signed word~) main::$1 zp[2]:2 4.0 +(signed word~) main::$0 zp[2]:2 22.0 +(signed word~) main::$1 zp[2]:2 22.0 (label) main::@1 (label) main::@2 (label) main::@return (signed word*) main::SCREEN (const signed word*) main::SCREEN#0 SCREEN = (signed word*) 1024 -(signed word) main::y1 loadstore zp[2]:4 20.0 -(signed word) main::y2 loadstore zp[2]:6 20.0 +(signed word) main::y1 loadstore zp[2]:4 110.0 +(signed word) main::y2 loadstore zp[2]:6 110.0 (const signed word*) wow[(number) 4] = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 } reg byte x [ foo::x#2 ] diff --git a/src/test/ref/nes-array.sym b/src/test/ref/nes-array.sym index fedd93ff0..bb7d6f350 100644 --- a/src/test/ref/nes-array.sym +++ b/src/test/ref/nes-array.sym @@ -3,26 +3,26 @@ (label) @end (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (signed word()) foo((byte) foo::x , (signed word*) foo::y) -(byte~) foo::$1 reg byte a 4.0 +(byte~) foo::$1 reg byte a 202.0 (label) foo::@return (signed word) foo::return -(signed word) foo::return#0 return zp[2]:2 1.5 -(signed word) foo::return#2 return zp[2]:2 4.0 -(signed word) foo::return#3 return zp[2]:2 4.0 +(signed word) foo::return#0 return zp[2]:2 30.75 +(signed word) foo::return#2 return zp[2]:2 22.0 +(signed word) foo::return#3 return zp[2]:2 22.0 (byte) foo::x -(byte) foo::x#2 reg byte x 2.0 +(byte) foo::x#2 reg byte x 101.0 (signed word*) foo::y -(signed word*) foo::y#2 y zp[2]:2 1.0 +(signed word*) foo::y#2 y zp[2]:2 50.5 (void()) main() -(signed word~) main::$0 zp[2]:2 4.0 -(signed word~) main::$1 zp[2]:2 4.0 +(signed word~) main::$0 zp[2]:2 22.0 +(signed word~) main::$1 zp[2]:2 22.0 (label) main::@1 (label) main::@2 (label) main::@return (signed word*) main::SCREEN (const signed word*) main::SCREEN#0 SCREEN = (signed word*) 1024 -(signed word) main::y1 loadstore zp[2]:4 20.0 -(signed word) main::y2 loadstore zp[2]:6 20.0 +(signed word) main::y1 loadstore zp[2]:4 110.0 +(signed word) main::y2 loadstore zp[2]:6 110.0 (const signed word*) wow[(number) 4] = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 } reg byte x [ foo::x#2 ] diff --git a/src/test/ref/no-recursion-heavy.log b/src/test/ref/no-recursion-heavy.log index 659282eb4..a545f0b7e 100644 --- a/src/test/ref/no-recursion-heavy.log +++ b/src/test/ref/no-recursion-heavy.log @@ -1604,185 +1604,185 @@ Inversing boolean not [337] (bool~) fc::$15 ← (byte) bd#78 != (byte) 7 from [3 Inversing boolean not [342] (bool~) fc::$17 ← (byte) bd#79 != (byte) 8 from [341] (bool~) fc::$16 ← (byte) bd#79 == (byte) 8 Inversing boolean not [347] (bool~) fc::$19 ← (byte) bd#80 != (byte) 9 from [346] (bool~) fc::$18 ← (byte) bd#80 == (byte) 9 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) bb#16 = (byte) bb#38 (byte) bb#39 (byte) bb#2 -Alias (byte) bc#2 = (byte) bc#60 (byte) bc#61 (byte) bc#27 -Alias (byte) bd#2 = (byte) bd#82 (byte) bd#83 (byte) bd#38 -Alias (byte) ba#17 = (byte) ba#18 (byte) ba#4 (byte) ba#5 (byte) ba#2 -Alias (byte) bb#1 = (byte) bb#15 -Alias (byte) bc#1 = (byte) bc#26 -Alias (byte) bd#1 = (byte) bd#37 -Alias (byte) bb#17 = (byte) bb#40 -Alias (byte) bc#62 = (byte) bc#95 -Alias (byte) bd#128 = (byte) bd#84 -Alias (byte) ba#19 = (byte) ba#30 (byte) ba#6 -Alias (byte) bb#3 = (byte) bb#62 -Alias (byte) bc#28 = (byte) bc#3 -Alias (byte) bd#3 = (byte) bd#39 -Alias (byte) bb#18 = (byte) bb#41 -Alias (byte) bc#63 = (byte) bc#96 -Alias (byte) bd#129 = (byte) bd#85 -Alias (byte) ba#20 = (byte) ba#31 (byte) ba#7 -Alias (byte) bb#4 = (byte) bb#63 -Alias (byte) bc#29 = (byte) bc#4 -Alias (byte) bd#4 = (byte) bd#40 -Alias (byte) bb#19 = (byte) bb#42 -Alias (byte) bc#64 = (byte) bc#97 -Alias (byte) bd#130 = (byte) bd#86 -Alias (byte) ba#21 = (byte) ba#32 (byte) ba#8 -Alias (byte) bb#5 = (byte) bb#64 -Alias (byte) bc#30 = (byte) bc#5 -Alias (byte) bd#41 = (byte) bd#5 -Alias (byte) bb#20 = (byte) bb#43 -Alias (byte) bc#65 = (byte) bc#98 -Alias (byte) bd#131 = (byte) bd#87 -Alias (byte) ba#22 = (byte) ba#33 (byte) ba#9 -Alias (byte) bb#6 = (byte) bb#65 -Alias (byte) bc#31 = (byte) bc#6 -Alias (byte) bd#42 = (byte) bd#6 -Alias (byte) bb#21 = (byte) bb#44 -Alias (byte) bc#66 = (byte) bc#99 -Alias (byte) bd#132 = (byte) bd#88 -Alias (byte) ba#10 = (byte) ba#34 (byte) ba#23 -Alias (byte) bb#66 = (byte) bb#7 -Alias (byte) bc#32 = (byte) bc#7 -Alias (byte) bd#43 = (byte) bd#7 -Alias (byte) bb#22 = (byte) bb#45 -Alias (byte) bc#100 = (byte) bc#67 -Alias (byte) bd#133 = (byte) bd#89 -Alias (byte) ba#11 = (byte) ba#35 (byte) ba#24 -Alias (byte) bb#67 = (byte) bb#8 -Alias (byte) bc#33 = (byte) bc#8 -Alias (byte) bd#44 = (byte) bd#8 -Alias (byte) bb#23 = (byte) bb#46 -Alias (byte) bc#101 = (byte) bc#68 -Alias (byte) bd#134 = (byte) bd#90 -Alias (byte) ba#12 = (byte) ba#36 (byte) ba#25 -Alias (byte) bb#68 = (byte) bb#9 -Alias (byte) bc#34 = (byte) bc#9 -Alias (byte) bd#45 = (byte) bd#9 -Alias (byte) bb#24 = (byte) bb#47 -Alias (byte) bc#102 = (byte) bc#69 -Alias (byte) bd#135 = (byte) bd#91 -Alias (byte) ba#13 = (byte) ba#37 (byte) ba#26 -Alias (byte) bb#10 = (byte) bb#69 -Alias (byte) bc#10 = (byte) bc#35 -Alias (byte) bd#10 = (byte) bd#46 -Alias (byte) bb#25 = (byte) bb#48 -Alias (byte) bc#103 = (byte) bc#70 -Alias (byte) bd#136 = (byte) bd#92 -Alias (byte) ba#14 = (byte) ba#38 (byte) ba#27 -Alias (byte) bb#11 = (byte) bb#70 -Alias (byte) bc#11 = (byte) bc#36 -Alias (byte) bd#11 = (byte) bd#47 -Alias (byte) bc#71 = (byte) bc#72 -Alias (byte) bd#93 = (byte) bd#94 -Alias (byte) bb#12 = (byte) bb#49 -Alias (byte) bc#12 = (byte) bc#37 -Alias (byte) bd#12 = (byte) bd#48 -Alias (byte) bb#13 = (byte) bb#26 -Alias (byte) bc#13 = (byte) bc#38 -Alias (byte) bd#13 = (byte) bd#49 -Alias (byte) bc#39 = (byte) bc#73 -Alias (byte) bd#137 = (byte) bd#95 -Alias (byte) bb#27 = (byte) bb#71 (byte) bb#51 -Alias (byte) bc#104 = (byte) bc#14 -Alias (byte) bd#14 = (byte) bd#50 -Alias (byte) bc#40 = (byte) bc#74 -Alias (byte) bd#138 = (byte) bd#96 -Alias (byte) bb#28 = (byte) bb#72 (byte) bb#52 -Alias (byte) bc#105 = (byte) bc#15 -Alias (byte) bd#15 = (byte) bd#51 -Alias (byte) bc#41 = (byte) bc#75 -Alias (byte) bd#139 = (byte) bd#97 -Alias (byte) bb#29 = (byte) bb#73 (byte) bb#53 -Alias (byte) bc#106 = (byte) bc#16 -Alias (byte) bd#16 = (byte) bd#52 -Alias (byte) bc#42 = (byte) bc#76 -Alias (byte) bd#140 = (byte) bd#98 -Alias (byte) bb#30 = (byte) bb#74 (byte) bb#54 -Alias (byte) bc#107 = (byte) bc#17 -Alias (byte) bd#17 = (byte) bd#53 -Alias (byte) bc#43 = (byte) bc#77 -Alias (byte) bd#141 = (byte) bd#99 -Alias (byte) bb#31 = (byte) bb#75 (byte) bb#55 -Alias (byte) bc#108 = (byte) bc#18 -Alias (byte) bd#18 = (byte) bd#54 -Alias (byte) bc#44 = (byte) bc#78 -Alias (byte) bd#100 = (byte) bd#142 -Alias (byte) bb#32 = (byte) bb#76 (byte) bb#56 -Alias (byte) bc#109 = (byte) bc#19 -Alias (byte) bd#19 = (byte) bd#55 -Alias (byte) bc#45 = (byte) bc#79 -Alias (byte) bd#101 = (byte) bd#143 -Alias (byte) bb#33 = (byte) bb#77 (byte) bb#57 -Alias (byte) bc#110 = (byte) bc#20 -Alias (byte) bd#20 = (byte) bd#56 -Alias (byte) bc#46 = (byte) bc#80 -Alias (byte) bd#102 = (byte) bd#144 -Alias (byte) bb#34 = (byte) bb#78 (byte) bb#58 -Alias (byte) bc#111 = (byte) bc#21 -Alias (byte) bd#21 = (byte) bd#57 -Alias (byte) bc#47 = (byte) bc#81 -Alias (byte) bd#103 = (byte) bd#145 -Alias (byte) bb#35 = (byte) bb#79 (byte) bb#59 -Alias (byte) bc#112 = (byte) bc#22 -Alias (byte) bd#22 = (byte) bd#58 -Alias (byte) bd#104 = (byte) bd#105 -Alias (byte) bc#23 = (byte) bc#82 -Alias (byte) bd#23 = (byte) bd#59 -Alias (byte) bc#24 = (byte) bc#48 -Alias (byte) bd#24 = (byte) bd#60 -Alias (byte) bd#106 = (byte) bd#61 -Alias (byte) bc#113 = (byte) bc#49 (byte) bc#84 -Alias (byte) bd#146 = (byte) bd#25 -Alias (byte) bd#107 = (byte) bd#62 -Alias (byte) bc#114 = (byte) bc#50 (byte) bc#85 -Alias (byte) bd#147 = (byte) bd#26 -Alias (byte) bd#108 = (byte) bd#63 -Alias (byte) bc#115 = (byte) bc#51 (byte) bc#86 -Alias (byte) bd#148 = (byte) bd#27 -Alias (byte) bd#109 = (byte) bd#64 -Alias (byte) bc#116 = (byte) bc#52 (byte) bc#87 -Alias (byte) bd#149 = (byte) bd#28 -Alias (byte) bd#110 = (byte) bd#65 -Alias (byte) bc#117 = (byte) bc#53 (byte) bc#88 -Alias (byte) bd#150 = (byte) bd#29 -Alias (byte) bd#111 = (byte) bd#66 -Alias (byte) bc#118 = (byte) bc#54 (byte) bc#89 -Alias (byte) bd#151 = (byte) bd#30 -Alias (byte) bd#112 = (byte) bd#67 -Alias (byte) bc#119 = (byte) bc#55 (byte) bc#90 -Alias (byte) bd#152 = (byte) bd#31 -Alias (byte) bd#113 = (byte) bd#68 -Alias (byte) bc#120 = (byte) bc#56 (byte) bc#91 -Alias (byte) bd#153 = (byte) bd#32 -Alias (byte) bd#114 = (byte) bd#69 -Alias (byte) bc#121 = (byte) bc#57 (byte) bc#92 -Alias (byte) bd#154 = (byte) bd#33 -Alias (byte) bd#115 = (byte) bd#34 -Alias (byte) bd#35 = (byte) bd#70 -Alias (byte) bd#117 = (byte) bd#71 -Alias (byte) bd#118 = (byte) bd#72 -Alias (byte) bd#119 = (byte) bd#73 -Alias (byte) bd#120 = (byte) bd#74 -Alias (byte) bd#121 = (byte) bd#75 -Alias (byte) bd#122 = (byte) bd#76 -Alias (byte) bd#123 = (byte) bd#77 -Alias (byte) bd#124 = (byte) bd#78 -Alias (byte) bd#125 = (byte) bd#79 -Alias (byte) bb#0 = (byte) bb#60 -Alias (byte) bc#0 = (byte) bc#93 -Alias (byte) bd#0 = (byte) bd#126 -Alias (byte) ba#0 = (byte) ba#28 -Alias (byte) bb#14 = (byte) bb#37 -Alias (byte) bc#25 = (byte) bc#59 -Alias (byte) bd#36 = (byte) bd#81 -Alias (byte) ba#16 = (byte) ba#3 +Alias bb#16 = bb#38 bb#39 bb#2 +Alias bc#2 = bc#60 bc#61 bc#27 +Alias bd#2 = bd#82 bd#83 bd#38 +Alias ba#17 = ba#18 ba#4 ba#5 ba#2 +Alias bb#1 = bb#15 +Alias bc#1 = bc#26 +Alias bd#1 = bd#37 +Alias bb#17 = bb#40 +Alias bc#62 = bc#95 +Alias bd#128 = bd#84 +Alias ba#19 = ba#30 ba#6 +Alias bb#3 = bb#62 +Alias bc#28 = bc#3 +Alias bd#3 = bd#39 +Alias bb#18 = bb#41 +Alias bc#63 = bc#96 +Alias bd#129 = bd#85 +Alias ba#20 = ba#31 ba#7 +Alias bb#4 = bb#63 +Alias bc#29 = bc#4 +Alias bd#4 = bd#40 +Alias bb#19 = bb#42 +Alias bc#64 = bc#97 +Alias bd#130 = bd#86 +Alias ba#21 = ba#32 ba#8 +Alias bb#5 = bb#64 +Alias bc#30 = bc#5 +Alias bd#41 = bd#5 +Alias bb#20 = bb#43 +Alias bc#65 = bc#98 +Alias bd#131 = bd#87 +Alias ba#22 = ba#33 ba#9 +Alias bb#6 = bb#65 +Alias bc#31 = bc#6 +Alias bd#42 = bd#6 +Alias bb#21 = bb#44 +Alias bc#66 = bc#99 +Alias bd#132 = bd#88 +Alias ba#10 = ba#34 ba#23 +Alias bb#66 = bb#7 +Alias bc#32 = bc#7 +Alias bd#43 = bd#7 +Alias bb#22 = bb#45 +Alias bc#100 = bc#67 +Alias bd#133 = bd#89 +Alias ba#11 = ba#35 ba#24 +Alias bb#67 = bb#8 +Alias bc#33 = bc#8 +Alias bd#44 = bd#8 +Alias bb#23 = bb#46 +Alias bc#101 = bc#68 +Alias bd#134 = bd#90 +Alias ba#12 = ba#36 ba#25 +Alias bb#68 = bb#9 +Alias bc#34 = bc#9 +Alias bd#45 = bd#9 +Alias bb#24 = bb#47 +Alias bc#102 = bc#69 +Alias bd#135 = bd#91 +Alias ba#13 = ba#37 ba#26 +Alias bb#10 = bb#69 +Alias bc#10 = bc#35 +Alias bd#10 = bd#46 +Alias bb#25 = bb#48 +Alias bc#103 = bc#70 +Alias bd#136 = bd#92 +Alias ba#14 = ba#38 ba#27 +Alias bb#11 = bb#70 +Alias bc#11 = bc#36 +Alias bd#11 = bd#47 +Alias bc#71 = bc#72 +Alias bd#93 = bd#94 +Alias bb#12 = bb#49 +Alias bc#12 = bc#37 +Alias bd#12 = bd#48 +Alias bb#13 = bb#26 +Alias bc#13 = bc#38 +Alias bd#13 = bd#49 +Alias bc#39 = bc#73 +Alias bd#137 = bd#95 +Alias bb#27 = bb#71 bb#51 +Alias bc#104 = bc#14 +Alias bd#14 = bd#50 +Alias bc#40 = bc#74 +Alias bd#138 = bd#96 +Alias bb#28 = bb#72 bb#52 +Alias bc#105 = bc#15 +Alias bd#15 = bd#51 +Alias bc#41 = bc#75 +Alias bd#139 = bd#97 +Alias bb#29 = bb#73 bb#53 +Alias bc#106 = bc#16 +Alias bd#16 = bd#52 +Alias bc#42 = bc#76 +Alias bd#140 = bd#98 +Alias bb#30 = bb#74 bb#54 +Alias bc#107 = bc#17 +Alias bd#17 = bd#53 +Alias bc#43 = bc#77 +Alias bd#141 = bd#99 +Alias bb#31 = bb#75 bb#55 +Alias bc#108 = bc#18 +Alias bd#18 = bd#54 +Alias bc#44 = bc#78 +Alias bd#100 = bd#142 +Alias bb#32 = bb#76 bb#56 +Alias bc#109 = bc#19 +Alias bd#19 = bd#55 +Alias bc#45 = bc#79 +Alias bd#101 = bd#143 +Alias bb#33 = bb#77 bb#57 +Alias bc#110 = bc#20 +Alias bd#20 = bd#56 +Alias bc#46 = bc#80 +Alias bd#102 = bd#144 +Alias bb#34 = bb#78 bb#58 +Alias bc#111 = bc#21 +Alias bd#21 = bd#57 +Alias bc#47 = bc#81 +Alias bd#103 = bd#145 +Alias bb#35 = bb#79 bb#59 +Alias bc#112 = bc#22 +Alias bd#22 = bd#58 +Alias bd#104 = bd#105 +Alias bc#23 = bc#82 +Alias bd#23 = bd#59 +Alias bc#24 = bc#48 +Alias bd#24 = bd#60 +Alias bd#106 = bd#61 +Alias bc#113 = bc#49 bc#84 +Alias bd#146 = bd#25 +Alias bd#107 = bd#62 +Alias bc#114 = bc#50 bc#85 +Alias bd#147 = bd#26 +Alias bd#108 = bd#63 +Alias bc#115 = bc#51 bc#86 +Alias bd#148 = bd#27 +Alias bd#109 = bd#64 +Alias bc#116 = bc#52 bc#87 +Alias bd#149 = bd#28 +Alias bd#110 = bd#65 +Alias bc#117 = bc#53 bc#88 +Alias bd#150 = bd#29 +Alias bd#111 = bd#66 +Alias bc#118 = bc#54 bc#89 +Alias bd#151 = bd#30 +Alias bd#112 = bd#67 +Alias bc#119 = bc#55 bc#90 +Alias bd#152 = bd#31 +Alias bd#113 = bd#68 +Alias bc#120 = bc#56 bc#91 +Alias bd#153 = bd#32 +Alias bd#114 = bd#69 +Alias bc#121 = bc#57 bc#92 +Alias bd#154 = bd#33 +Alias bd#115 = bd#34 +Alias bd#35 = bd#70 +Alias bd#117 = bd#71 +Alias bd#118 = bd#72 +Alias bd#119 = bd#73 +Alias bd#120 = bd#74 +Alias bd#121 = bd#75 +Alias bd#122 = bd#76 +Alias bd#123 = bd#77 +Alias bd#124 = bd#78 +Alias bd#125 = bd#79 +Alias bb#0 = bb#60 +Alias bc#0 = bc#93 +Alias bd#0 = bd#126 +Alias ba#0 = ba#28 +Alias bb#14 = bb#37 +Alias bc#25 = bc#59 +Alias bd#36 = bd#81 +Alias ba#16 = ba#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) ba#10 = (byte) ba#20 (byte) ba#19 (byte) ba#21 (byte) ba#22 (byte) ba#11 (byte) ba#12 (byte) ba#13 (byte) ba#14 (byte) ba#15 -Alias (byte) bb#27 = (byte) bb#28 (byte) bb#29 (byte) bb#30 (byte) bb#31 (byte) bb#32 (byte) bb#33 (byte) bb#34 (byte) bb#35 (byte) bb#36 -Alias (byte) bc#113 = (byte) bc#114 (byte) bc#115 (byte) bc#116 (byte) bc#117 (byte) bc#118 (byte) bc#119 (byte) bc#120 (byte) bc#121 (byte) bc#58 -Alias (byte) bd#117 = (byte) bd#118 (byte) bd#119 (byte) bd#120 (byte) bd#121 (byte) bd#122 (byte) bd#123 (byte) bd#124 (byte) bd#125 (byte) bd#80 +Alias ba#10 = ba#20 ba#19 ba#21 ba#22 ba#11 ba#12 ba#13 ba#14 ba#15 +Alias bb#27 = bb#28 bb#29 bb#30 bb#31 bb#32 bb#33 bb#34 bb#35 bb#36 +Alias bc#113 = bc#114 bc#115 bc#116 bc#117 bc#118 bc#119 bc#120 bc#121 bc#58 +Alias bd#117 = bd#118 bd#119 bd#120 bd#121 bd#122 bd#123 bd#124 bd#125 bd#80 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bb#61 (byte) bb#0 Identical Phi Values (byte) bc#94 (byte) bc#0 @@ -2670,134 +2670,134 @@ fc::@return: scope:[fc] from fc::@19 fc::@9 VARIABLE REGISTER WEIGHTS (byte) ba -(byte) ba#1 22.0 -(byte) ba#17 0.7924528301886792 +(byte) ba#1 202.0 +(byte) ba#17 192.67924528301884 (byte) bb -(byte) bb#10 2.0 -(byte) bb#100 4.0 -(byte) bb#101 4.0 -(byte) bb#102 4.0 -(byte) bb#103 4.0 -(byte) bb#104 4.0 -(byte) bb#105 4.0 -(byte) bb#106 4.0 -(byte) bb#107 4.0 -(byte) bb#108 4.0 -(byte) bb#11 2.0 -(byte) bb#13 3.25 -(byte) bb#16 5.0 -(byte) bb#18 4.0 -(byte) bb#19 4.0 -(byte) bb#20 4.0 -(byte) bb#21 4.0 -(byte) bb#22 4.0 -(byte) bb#23 4.0 -(byte) bb#24 4.0 -(byte) bb#25 4.0 -(byte) bb#27 0.8260869565217388 -(byte) bb#3 2.0 -(byte) bb#4 2.0 -(byte) bb#5 2.0 -(byte) bb#50 3.0 -(byte) bb#6 2.0 -(byte) bb#66 2.0 -(byte) bb#67 2.0 -(byte) bb#68 2.0 +(byte) bb#10 1001.0 +(byte) bb#100 2002.0 +(byte) bb#101 2002.0 +(byte) bb#102 2002.0 +(byte) bb#103 2002.0 +(byte) bb#104 2002.0 +(byte) bb#105 2002.0 +(byte) bb#106 2002.0 +(byte) bb#107 2002.0 +(byte) bb#108 2002.0 +(byte) bb#11 1001.0 +(byte) bb#13 275.5 +(byte) bb#16 701.0 +(byte) bb#18 2002.0 +(byte) bb#19 2002.0 +(byte) bb#20 2002.0 +(byte) bb#21 2002.0 +(byte) bb#22 2002.0 +(byte) bb#23 2002.0 +(byte) bb#24 2002.0 +(byte) bb#25 2002.0 +(byte) bb#27 2369.978260869566 +(byte) bb#3 1001.0 +(byte) bb#4 1001.0 +(byte) bb#5 1001.0 +(byte) bb#50 1501.5 +(byte) bb#6 1001.0 +(byte) bb#66 1001.0 +(byte) bb#67 1001.0 +(byte) bb#68 1001.0 (byte) bc -(byte) bc#100 2.0 -(byte) bc#101 2.0 -(byte) bc#102 2.0 -(byte) bc#103 2.0 -(byte) bc#104 2.0 -(byte) bc#105 2.0 -(byte) bc#106 2.0 -(byte) bc#107 2.0 -(byte) bc#108 2.0 -(byte) bc#109 2.0 -(byte) bc#110 2.0 -(byte) bc#111 2.0 -(byte) bc#112 2.0 -(byte) bc#113 0.8260869565217388 -(byte) bc#13 3.75 -(byte) bc#172 4.0 -(byte) bc#173 4.0 -(byte) bc#174 4.0 -(byte) bc#175 4.0 -(byte) bc#176 4.0 -(byte) bc#177 4.0 -(byte) bc#178 4.0 -(byte) bc#179 4.0 -(byte) bc#180 4.0 -(byte) bc#2 3.0 -(byte) bc#24 1.8333333333333335 -(byte) bc#39 12.0 -(byte) bc#40 4.0 -(byte) bc#41 4.0 -(byte) bc#42 4.0 -(byte) bc#43 4.0 -(byte) bc#44 4.0 -(byte) bc#45 4.0 -(byte) bc#46 4.0 -(byte) bc#47 4.0 -(byte) bc#63 2.0 -(byte) bc#64 2.0 -(byte) bc#65 2.0 -(byte) bc#66 2.0 -(byte) bc#71 2.6666666666666665 -(byte) bc#83 3.0 +(byte) bc#100 1001.0 +(byte) bc#101 1001.0 +(byte) bc#102 1001.0 +(byte) bc#103 1001.0 +(byte) bc#104 10001.0 +(byte) bc#105 10001.0 +(byte) bc#106 10001.0 +(byte) bc#107 10001.0 +(byte) bc#108 10001.0 +(byte) bc#109 10001.0 +(byte) bc#110 10001.0 +(byte) bc#111 10001.0 +(byte) bc#112 10001.0 +(byte) bc#113 23696.065217391308 +(byte) bc#13 525.75 +(byte) bc#172 20002.0 +(byte) bc#173 20002.0 +(byte) bc#174 20002.0 +(byte) bc#175 20002.0 +(byte) bc#176 20002.0 +(byte) bc#177 20002.0 +(byte) bc#178 20002.0 +(byte) bc#179 20002.0 +(byte) bc#180 20002.0 +(byte) bc#2 420.59999999999997 +(byte) bc#24 1667.5833333333333 +(byte) bc#39 15006.0 +(byte) bc#40 20002.0 +(byte) bc#41 20002.0 +(byte) bc#42 20002.0 +(byte) bc#43 20002.0 +(byte) bc#44 20002.0 +(byte) bc#45 20002.0 +(byte) bc#46 20002.0 +(byte) bc#47 20002.0 +(byte) bc#63 1001.0 +(byte) bc#64 1001.0 +(byte) bc#65 1001.0 +(byte) bc#66 1001.0 +(byte) bc#71 1334.6666666666667 +(byte) bc#83 15001.5 (byte) bd -(byte) bd#100 2.0 -(byte) bd#101 2.0 -(byte) bd#102 2.0 -(byte) bd#103 2.0 -(byte) bd#104 2.6666666666666665 -(byte) bd#106 12.0 -(byte) bd#107 4.0 -(byte) bd#108 4.0 -(byte) bd#109 4.0 -(byte) bd#110 4.0 -(byte) bd#111 4.0 -(byte) bd#112 4.0 -(byte) bd#113 4.0 -(byte) bd#114 4.0 -(byte) bd#116 3.0 -(byte) bd#117 1.9999999999999991 -(byte) bd#129 2.0 -(byte) bd#13 3.75 -(byte) bd#130 2.0 -(byte) bd#131 2.0 -(byte) bd#132 2.0 -(byte) bd#133 2.0 -(byte) bd#134 2.0 -(byte) bd#135 2.0 -(byte) bd#136 2.0 -(byte) bd#137 6.0 -(byte) bd#138 2.0 -(byte) bd#139 2.0 -(byte) bd#140 2.0 -(byte) bd#141 2.0 -(byte) bd#146 2.0 -(byte) bd#147 2.0 -(byte) bd#148 2.0 -(byte) bd#149 2.0 -(byte) bd#150 2.0 -(byte) bd#151 2.0 -(byte) bd#152 2.0 -(byte) bd#153 2.0 -(byte) bd#154 2.0 -(byte) bd#2 3.0 -(byte) bd#235 4.0 -(byte) bd#236 4.0 -(byte) bd#237 4.0 -(byte) bd#238 4.0 -(byte) bd#239 4.0 -(byte) bd#24 2.0 -(byte) bd#240 4.0 -(byte) bd#241 4.0 -(byte) bd#242 4.0 -(byte) bd#243 4.0 -(byte) bd#35 1.8333333333333335 -(byte) bd#93 2.6666666666666665 +(byte) bd#100 10001.0 +(byte) bd#101 10001.0 +(byte) bd#102 10001.0 +(byte) bd#103 10001.0 +(byte) bd#104 13334.666666666666 +(byte) bd#106 150006.0 +(byte) bd#107 200002.0 +(byte) bd#108 200002.0 +(byte) bd#109 200002.0 +(byte) bd#110 200002.0 +(byte) bd#111 200002.0 +(byte) bd#112 200002.0 +(byte) bd#113 200002.0 +(byte) bd#114 200002.0 +(byte) bd#116 150001.5 +(byte) bd#117 573685.2105263157 +(byte) bd#129 1001.0 +(byte) bd#13 525.75 +(byte) bd#130 1001.0 +(byte) bd#131 1001.0 +(byte) bd#132 1001.0 +(byte) bd#133 1001.0 +(byte) bd#134 1001.0 +(byte) bd#135 1001.0 +(byte) bd#136 1001.0 +(byte) bd#137 7503.0 +(byte) bd#138 10001.0 +(byte) bd#139 10001.0 +(byte) bd#140 10001.0 +(byte) bd#141 10001.0 +(byte) bd#146 100001.0 +(byte) bd#147 100001.0 +(byte) bd#148 100001.0 +(byte) bd#149 100001.0 +(byte) bd#150 100001.0 +(byte) bd#151 100001.0 +(byte) bd#152 100001.0 +(byte) bd#153 100001.0 +(byte) bd#154 100001.0 +(byte) bd#2 420.59999999999997 +(byte) bd#235 200002.0 +(byte) bd#236 200002.0 +(byte) bd#237 200002.0 +(byte) bd#238 200002.0 +(byte) bd#239 200002.0 +(byte) bd#24 2501.0 +(byte) bd#240 200002.0 +(byte) bd#241 200002.0 +(byte) bd#242 200002.0 +(byte) bd#243 200002.0 +(byte) bd#35 16667.583333333336 +(byte) bd#93 1334.6666666666667 (void()) f0() (void()) fa() (void()) fb() @@ -3845,26 +3845,26 @@ Potential registers zp[1]:7 [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 b Potential registers zp[1]:8 [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 118.92: zp[1]:7 [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 bd#151 bd#111 bd#150 bd#110 bd#149 bd#109 bd#108 bd#107 bd#106 bd#104 bd#103 bd#102 bd#101 bd#100 bd#141 bd#140 bd#139 bd#138 bd#137 bd#93 bd#136 bd#135 bd#134 bd#133 bd#132 bd#131 bd#130 bd#129 bd#2 bd#13 bd#24 bd#35 bd#146 bd#147 bd#148 ] 92.25: zp[1]:5 [ bc#83 bc#112 bc#47 bc#111 bc#46 bc#110 bc#45 bc#109 bc#44 bc#108 bc#43 bc#107 bc#42 bc#41 bc#40 bc#39 bc#71 bc#103 bc#102 bc#101 bc#100 bc#66 bc#65 bc#64 bc#63 bc#2 bc#13 bc#24 bc#104 bc#105 bc#106 ] 61.25: zp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] 38: zp[1]:8 [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ] 36.83: zp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] 36.83: zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] 22.79: zp[1]:2 [ ba#17 ba#1 ] +Uplift Scope [] 2,930,335.77: zp[1]:7 [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 bd#151 bd#111 bd#150 bd#110 bd#149 bd#109 bd#108 bd#107 bd#106 bd#104 bd#103 bd#102 bd#101 bd#100 bd#141 bd#140 bd#139 bd#138 bd#137 bd#93 bd#136 bd#135 bd#134 bd#133 bd#132 bd#131 bd#130 bd#129 bd#2 bd#13 bd#24 bd#35 bd#146 bd#147 bd#148 ] 2,373,703.21: zp[1]:8 [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ] 291,989.1: zp[1]:5 [ bc#83 bc#112 bc#47 bc#111 bc#46 bc#110 bc#45 bc#109 bc#44 bc#108 bc#43 bc#107 bc#42 bc#41 bc#40 bc#39 bc#71 bc#103 bc#102 bc#101 bc#100 bc#66 bc#65 bc#64 bc#63 bc#2 bc#13 bc#24 bc#104 bc#105 bc#106 ] 203,714.07: zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] 27,503: zp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] 20,387.98: zp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] 394.68: zp[1]:2 [ ba#17 ba#1 ] Uplift Scope [main] Uplift Scope [f0] Uplift Scope [fa] Uplift Scope [fb] Uplift Scope [fc] -Uplifting [] best 1556 combination reg byte y [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 bd#151 bd#111 bd#150 bd#110 bd#149 bd#109 bd#108 bd#107 bd#106 bd#104 bd#103 bd#102 bd#101 bd#100 bd#141 bd#140 bd#139 bd#138 bd#137 bd#93 bd#136 bd#135 bd#134 bd#133 bd#132 bd#131 bd#130 bd#129 bd#2 bd#13 bd#24 bd#35 bd#146 bd#147 bd#148 ] reg byte x [ bc#83 bc#112 bc#47 bc#111 bc#46 bc#110 bc#45 bc#109 bc#44 bc#108 bc#43 bc#107 bc#42 bc#41 bc#40 bc#39 bc#71 bc#103 bc#102 bc#101 bc#100 bc#66 bc#65 bc#64 bc#63 bc#2 bc#13 bc#24 bc#104 bc#105 bc#106 ] zp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] reg byte a [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ] zp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] zp[1]:2 [ ba#17 ba#1 ] +Uplifting [] best 1556 combination reg byte y [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 bd#151 bd#111 bd#150 bd#110 bd#149 bd#109 bd#108 bd#107 bd#106 bd#104 bd#103 bd#102 bd#101 bd#100 bd#141 bd#140 bd#139 bd#138 bd#137 bd#93 bd#136 bd#135 bd#134 bd#133 bd#132 bd#131 bd#130 bd#129 bd#2 bd#13 bd#24 bd#35 bd#146 bd#147 bd#148 ] reg byte a [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ] reg byte x [ bc#83 bc#112 bc#47 bc#111 bc#46 bc#110 bc#45 bc#109 bc#44 bc#108 bc#43 bc#107 bc#42 bc#41 bc#40 bc#39 bc#71 bc#103 bc#102 bc#101 bc#100 bc#66 bc#65 bc#64 bc#63 bc#2 bc#13 bc#24 bc#104 bc#105 bc#106 ] zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] zp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] zp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] zp[1]:2 [ ba#17 ba#1 ] Limited combination testing to 100 combinations of 16384 possible. Uplifting [main] best 1556 combination Uplifting [f0] best 1556 combination Uplifting [fa] best 1556 combination Uplifting [fb] best 1556 combination Uplifting [fc] best 1556 combination +Attempting to uplift remaining variables inzp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] +Uplifting [] best 1556 combination zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] Attempting to uplift remaining variables inzp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] Uplifting [] best 1556 combination zp[1]:3 [ bb#50 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ] Attempting to uplift remaining variables inzp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] Uplifting [] best 1556 combination zp[1]:4 [ bb#27 bb#100 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 ] -Attempting to uplift remaining variables inzp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] -Uplifting [] best 1556 combination zp[1]:6 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] Attempting to uplift remaining variables inzp[1]:2 [ ba#17 ba#1 ] Uplifting [] best 1556 combination zp[1]:2 [ ba#17 ba#1 ] Allocated (was zp[1]:6) zp[1]:5 [ bc#113 bc#172 bc#173 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 ] @@ -5153,134 +5153,134 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte) ba -(byte) ba#1 ba zp[1]:2 22.0 -(byte) ba#17 ba zp[1]:2 0.7924528301886792 +(byte) ba#1 ba zp[1]:2 202.0 +(byte) ba#17 ba zp[1]:2 192.67924528301884 (byte) bb -(byte) bb#10 bb zp[1]:3 2.0 -(byte) bb#100 bb_1 zp[1]:4 4.0 -(byte) bb#101 bb_1 zp[1]:4 4.0 -(byte) bb#102 bb_1 zp[1]:4 4.0 -(byte) bb#103 bb_1 zp[1]:4 4.0 -(byte) bb#104 bb_1 zp[1]:4 4.0 -(byte) bb#105 bb_1 zp[1]:4 4.0 -(byte) bb#106 bb_1 zp[1]:4 4.0 -(byte) bb#107 bb_1 zp[1]:4 4.0 -(byte) bb#108 bb_1 zp[1]:4 4.0 -(byte) bb#11 bb zp[1]:3 2.0 -(byte) bb#13 bb zp[1]:3 3.25 -(byte) bb#16 bb zp[1]:3 5.0 -(byte) bb#18 bb zp[1]:3 4.0 -(byte) bb#19 bb zp[1]:3 4.0 -(byte) bb#20 bb zp[1]:3 4.0 -(byte) bb#21 bb zp[1]:3 4.0 -(byte) bb#22 bb zp[1]:3 4.0 -(byte) bb#23 bb zp[1]:3 4.0 -(byte) bb#24 bb zp[1]:3 4.0 -(byte) bb#25 bb zp[1]:3 4.0 -(byte) bb#27 bb_1 zp[1]:4 0.8260869565217388 -(byte) bb#3 bb zp[1]:3 2.0 -(byte) bb#4 bb zp[1]:3 2.0 -(byte) bb#5 bb zp[1]:3 2.0 -(byte) bb#50 bb zp[1]:3 3.0 -(byte) bb#6 bb zp[1]:3 2.0 -(byte) bb#66 bb zp[1]:3 2.0 -(byte) bb#67 bb zp[1]:3 2.0 -(byte) bb#68 bb zp[1]:3 2.0 +(byte) bb#10 bb zp[1]:3 1001.0 +(byte) bb#100 bb_1 zp[1]:4 2002.0 +(byte) bb#101 bb_1 zp[1]:4 2002.0 +(byte) bb#102 bb_1 zp[1]:4 2002.0 +(byte) bb#103 bb_1 zp[1]:4 2002.0 +(byte) bb#104 bb_1 zp[1]:4 2002.0 +(byte) bb#105 bb_1 zp[1]:4 2002.0 +(byte) bb#106 bb_1 zp[1]:4 2002.0 +(byte) bb#107 bb_1 zp[1]:4 2002.0 +(byte) bb#108 bb_1 zp[1]:4 2002.0 +(byte) bb#11 bb zp[1]:3 1001.0 +(byte) bb#13 bb zp[1]:3 275.5 +(byte) bb#16 bb zp[1]:3 701.0 +(byte) bb#18 bb zp[1]:3 2002.0 +(byte) bb#19 bb zp[1]:3 2002.0 +(byte) bb#20 bb zp[1]:3 2002.0 +(byte) bb#21 bb zp[1]:3 2002.0 +(byte) bb#22 bb zp[1]:3 2002.0 +(byte) bb#23 bb zp[1]:3 2002.0 +(byte) bb#24 bb zp[1]:3 2002.0 +(byte) bb#25 bb zp[1]:3 2002.0 +(byte) bb#27 bb_1 zp[1]:4 2369.978260869566 +(byte) bb#3 bb zp[1]:3 1001.0 +(byte) bb#4 bb zp[1]:3 1001.0 +(byte) bb#5 bb zp[1]:3 1001.0 +(byte) bb#50 bb zp[1]:3 1501.5 +(byte) bb#6 bb zp[1]:3 1001.0 +(byte) bb#66 bb zp[1]:3 1001.0 +(byte) bb#67 bb zp[1]:3 1001.0 +(byte) bb#68 bb zp[1]:3 1001.0 (byte) bc -(byte) bc#100 reg byte x 2.0 -(byte) bc#101 reg byte x 2.0 -(byte) bc#102 reg byte x 2.0 -(byte) bc#103 reg byte x 2.0 -(byte) bc#104 reg byte x 2.0 -(byte) bc#105 reg byte x 2.0 -(byte) bc#106 reg byte x 2.0 -(byte) bc#107 reg byte x 2.0 -(byte) bc#108 reg byte x 2.0 -(byte) bc#109 reg byte x 2.0 -(byte) bc#110 reg byte x 2.0 -(byte) bc#111 reg byte x 2.0 -(byte) bc#112 reg byte x 2.0 -(byte) bc#113 bc zp[1]:5 0.8260869565217388 -(byte) bc#13 reg byte x 3.75 -(byte) bc#172 bc zp[1]:5 4.0 -(byte) bc#173 bc zp[1]:5 4.0 -(byte) bc#174 bc zp[1]:5 4.0 -(byte) bc#175 bc zp[1]:5 4.0 -(byte) bc#176 bc zp[1]:5 4.0 -(byte) bc#177 bc zp[1]:5 4.0 -(byte) bc#178 bc zp[1]:5 4.0 -(byte) bc#179 bc zp[1]:5 4.0 -(byte) bc#180 bc zp[1]:5 4.0 -(byte) bc#2 reg byte x 3.0 -(byte) bc#24 reg byte x 1.8333333333333335 -(byte) bc#39 reg byte x 12.0 -(byte) bc#40 reg byte x 4.0 -(byte) bc#41 reg byte x 4.0 -(byte) bc#42 reg byte x 4.0 -(byte) bc#43 reg byte x 4.0 -(byte) bc#44 reg byte x 4.0 -(byte) bc#45 reg byte x 4.0 -(byte) bc#46 reg byte x 4.0 -(byte) bc#47 reg byte x 4.0 -(byte) bc#63 reg byte x 2.0 -(byte) bc#64 reg byte x 2.0 -(byte) bc#65 reg byte x 2.0 -(byte) bc#66 reg byte x 2.0 -(byte) bc#71 reg byte x 2.6666666666666665 -(byte) bc#83 reg byte x 3.0 +(byte) bc#100 reg byte x 1001.0 +(byte) bc#101 reg byte x 1001.0 +(byte) bc#102 reg byte x 1001.0 +(byte) bc#103 reg byte x 1001.0 +(byte) bc#104 reg byte x 10001.0 +(byte) bc#105 reg byte x 10001.0 +(byte) bc#106 reg byte x 10001.0 +(byte) bc#107 reg byte x 10001.0 +(byte) bc#108 reg byte x 10001.0 +(byte) bc#109 reg byte x 10001.0 +(byte) bc#110 reg byte x 10001.0 +(byte) bc#111 reg byte x 10001.0 +(byte) bc#112 reg byte x 10001.0 +(byte) bc#113 bc zp[1]:5 23696.065217391308 +(byte) bc#13 reg byte x 525.75 +(byte) bc#172 bc zp[1]:5 20002.0 +(byte) bc#173 bc zp[1]:5 20002.0 +(byte) bc#174 bc zp[1]:5 20002.0 +(byte) bc#175 bc zp[1]:5 20002.0 +(byte) bc#176 bc zp[1]:5 20002.0 +(byte) bc#177 bc zp[1]:5 20002.0 +(byte) bc#178 bc zp[1]:5 20002.0 +(byte) bc#179 bc zp[1]:5 20002.0 +(byte) bc#180 bc zp[1]:5 20002.0 +(byte) bc#2 reg byte x 420.59999999999997 +(byte) bc#24 reg byte x 1667.5833333333333 +(byte) bc#39 reg byte x 15006.0 +(byte) bc#40 reg byte x 20002.0 +(byte) bc#41 reg byte x 20002.0 +(byte) bc#42 reg byte x 20002.0 +(byte) bc#43 reg byte x 20002.0 +(byte) bc#44 reg byte x 20002.0 +(byte) bc#45 reg byte x 20002.0 +(byte) bc#46 reg byte x 20002.0 +(byte) bc#47 reg byte x 20002.0 +(byte) bc#63 reg byte x 1001.0 +(byte) bc#64 reg byte x 1001.0 +(byte) bc#65 reg byte x 1001.0 +(byte) bc#66 reg byte x 1001.0 +(byte) bc#71 reg byte x 1334.6666666666667 +(byte) bc#83 reg byte x 15001.5 (byte) bd -(byte) bd#100 reg byte y 2.0 -(byte) bd#101 reg byte y 2.0 -(byte) bd#102 reg byte y 2.0 -(byte) bd#103 reg byte y 2.0 -(byte) bd#104 reg byte y 2.6666666666666665 -(byte) bd#106 reg byte y 12.0 -(byte) bd#107 reg byte y 4.0 -(byte) bd#108 reg byte y 4.0 -(byte) bd#109 reg byte y 4.0 -(byte) bd#110 reg byte y 4.0 -(byte) bd#111 reg byte y 4.0 -(byte) bd#112 reg byte y 4.0 -(byte) bd#113 reg byte y 4.0 -(byte) bd#114 reg byte y 4.0 -(byte) bd#116 reg byte y 3.0 -(byte) bd#117 reg byte a 1.9999999999999991 -(byte) bd#129 reg byte y 2.0 -(byte) bd#13 reg byte y 3.75 -(byte) bd#130 reg byte y 2.0 -(byte) bd#131 reg byte y 2.0 -(byte) bd#132 reg byte y 2.0 -(byte) bd#133 reg byte y 2.0 -(byte) bd#134 reg byte y 2.0 -(byte) bd#135 reg byte y 2.0 -(byte) bd#136 reg byte y 2.0 -(byte) bd#137 reg byte y 6.0 -(byte) bd#138 reg byte y 2.0 -(byte) bd#139 reg byte y 2.0 -(byte) bd#140 reg byte y 2.0 -(byte) bd#141 reg byte y 2.0 -(byte) bd#146 reg byte y 2.0 -(byte) bd#147 reg byte y 2.0 -(byte) bd#148 reg byte y 2.0 -(byte) bd#149 reg byte y 2.0 -(byte) bd#150 reg byte y 2.0 -(byte) bd#151 reg byte y 2.0 -(byte) bd#152 reg byte y 2.0 -(byte) bd#153 reg byte y 2.0 -(byte) bd#154 reg byte y 2.0 -(byte) bd#2 reg byte y 3.0 -(byte) bd#235 reg byte a 4.0 -(byte) bd#236 reg byte a 4.0 -(byte) bd#237 reg byte a 4.0 -(byte) bd#238 reg byte a 4.0 -(byte) bd#239 reg byte a 4.0 -(byte) bd#24 reg byte y 2.0 -(byte) bd#240 reg byte a 4.0 -(byte) bd#241 reg byte a 4.0 -(byte) bd#242 reg byte a 4.0 -(byte) bd#243 reg byte a 4.0 -(byte) bd#35 reg byte y 1.8333333333333335 -(byte) bd#93 reg byte y 2.6666666666666665 +(byte) bd#100 reg byte y 10001.0 +(byte) bd#101 reg byte y 10001.0 +(byte) bd#102 reg byte y 10001.0 +(byte) bd#103 reg byte y 10001.0 +(byte) bd#104 reg byte y 13334.666666666666 +(byte) bd#106 reg byte y 150006.0 +(byte) bd#107 reg byte y 200002.0 +(byte) bd#108 reg byte y 200002.0 +(byte) bd#109 reg byte y 200002.0 +(byte) bd#110 reg byte y 200002.0 +(byte) bd#111 reg byte y 200002.0 +(byte) bd#112 reg byte y 200002.0 +(byte) bd#113 reg byte y 200002.0 +(byte) bd#114 reg byte y 200002.0 +(byte) bd#116 reg byte y 150001.5 +(byte) bd#117 reg byte a 573685.2105263157 +(byte) bd#129 reg byte y 1001.0 +(byte) bd#13 reg byte y 525.75 +(byte) bd#130 reg byte y 1001.0 +(byte) bd#131 reg byte y 1001.0 +(byte) bd#132 reg byte y 1001.0 +(byte) bd#133 reg byte y 1001.0 +(byte) bd#134 reg byte y 1001.0 +(byte) bd#135 reg byte y 1001.0 +(byte) bd#136 reg byte y 1001.0 +(byte) bd#137 reg byte y 7503.0 +(byte) bd#138 reg byte y 10001.0 +(byte) bd#139 reg byte y 10001.0 +(byte) bd#140 reg byte y 10001.0 +(byte) bd#141 reg byte y 10001.0 +(byte) bd#146 reg byte y 100001.0 +(byte) bd#147 reg byte y 100001.0 +(byte) bd#148 reg byte y 100001.0 +(byte) bd#149 reg byte y 100001.0 +(byte) bd#150 reg byte y 100001.0 +(byte) bd#151 reg byte y 100001.0 +(byte) bd#152 reg byte y 100001.0 +(byte) bd#153 reg byte y 100001.0 +(byte) bd#154 reg byte y 100001.0 +(byte) bd#2 reg byte y 420.59999999999997 +(byte) bd#235 reg byte a 200002.0 +(byte) bd#236 reg byte a 200002.0 +(byte) bd#237 reg byte a 200002.0 +(byte) bd#238 reg byte a 200002.0 +(byte) bd#239 reg byte a 200002.0 +(byte) bd#24 reg byte y 2501.0 +(byte) bd#240 reg byte a 200002.0 +(byte) bd#241 reg byte a 200002.0 +(byte) bd#242 reg byte a 200002.0 +(byte) bd#243 reg byte a 200002.0 +(byte) bd#35 reg byte y 16667.583333333336 +(byte) bd#93 reg byte y 1334.6666666666667 (void()) f0() (label) f0::@1 (label) f0::@10 diff --git a/src/test/ref/no-recursion-heavy.sym b/src/test/ref/no-recursion-heavy.sym index bf27aac0b..83378cc4b 100644 --- a/src/test/ref/no-recursion-heavy.sym +++ b/src/test/ref/no-recursion-heavy.sym @@ -2,134 +2,134 @@ (label) @begin (label) @end (byte) ba -(byte) ba#1 ba zp[1]:2 22.0 -(byte) ba#17 ba zp[1]:2 0.7924528301886792 +(byte) ba#1 ba zp[1]:2 202.0 +(byte) ba#17 ba zp[1]:2 192.67924528301884 (byte) bb -(byte) bb#10 bb zp[1]:3 2.0 -(byte) bb#100 bb_1 zp[1]:4 4.0 -(byte) bb#101 bb_1 zp[1]:4 4.0 -(byte) bb#102 bb_1 zp[1]:4 4.0 -(byte) bb#103 bb_1 zp[1]:4 4.0 -(byte) bb#104 bb_1 zp[1]:4 4.0 -(byte) bb#105 bb_1 zp[1]:4 4.0 -(byte) bb#106 bb_1 zp[1]:4 4.0 -(byte) bb#107 bb_1 zp[1]:4 4.0 -(byte) bb#108 bb_1 zp[1]:4 4.0 -(byte) bb#11 bb zp[1]:3 2.0 -(byte) bb#13 bb zp[1]:3 3.25 -(byte) bb#16 bb zp[1]:3 5.0 -(byte) bb#18 bb zp[1]:3 4.0 -(byte) bb#19 bb zp[1]:3 4.0 -(byte) bb#20 bb zp[1]:3 4.0 -(byte) bb#21 bb zp[1]:3 4.0 -(byte) bb#22 bb zp[1]:3 4.0 -(byte) bb#23 bb zp[1]:3 4.0 -(byte) bb#24 bb zp[1]:3 4.0 -(byte) bb#25 bb zp[1]:3 4.0 -(byte) bb#27 bb_1 zp[1]:4 0.8260869565217388 -(byte) bb#3 bb zp[1]:3 2.0 -(byte) bb#4 bb zp[1]:3 2.0 -(byte) bb#5 bb zp[1]:3 2.0 -(byte) bb#50 bb zp[1]:3 3.0 -(byte) bb#6 bb zp[1]:3 2.0 -(byte) bb#66 bb zp[1]:3 2.0 -(byte) bb#67 bb zp[1]:3 2.0 -(byte) bb#68 bb zp[1]:3 2.0 +(byte) bb#10 bb zp[1]:3 1001.0 +(byte) bb#100 bb_1 zp[1]:4 2002.0 +(byte) bb#101 bb_1 zp[1]:4 2002.0 +(byte) bb#102 bb_1 zp[1]:4 2002.0 +(byte) bb#103 bb_1 zp[1]:4 2002.0 +(byte) bb#104 bb_1 zp[1]:4 2002.0 +(byte) bb#105 bb_1 zp[1]:4 2002.0 +(byte) bb#106 bb_1 zp[1]:4 2002.0 +(byte) bb#107 bb_1 zp[1]:4 2002.0 +(byte) bb#108 bb_1 zp[1]:4 2002.0 +(byte) bb#11 bb zp[1]:3 1001.0 +(byte) bb#13 bb zp[1]:3 275.5 +(byte) bb#16 bb zp[1]:3 701.0 +(byte) bb#18 bb zp[1]:3 2002.0 +(byte) bb#19 bb zp[1]:3 2002.0 +(byte) bb#20 bb zp[1]:3 2002.0 +(byte) bb#21 bb zp[1]:3 2002.0 +(byte) bb#22 bb zp[1]:3 2002.0 +(byte) bb#23 bb zp[1]:3 2002.0 +(byte) bb#24 bb zp[1]:3 2002.0 +(byte) bb#25 bb zp[1]:3 2002.0 +(byte) bb#27 bb_1 zp[1]:4 2369.978260869566 +(byte) bb#3 bb zp[1]:3 1001.0 +(byte) bb#4 bb zp[1]:3 1001.0 +(byte) bb#5 bb zp[1]:3 1001.0 +(byte) bb#50 bb zp[1]:3 1501.5 +(byte) bb#6 bb zp[1]:3 1001.0 +(byte) bb#66 bb zp[1]:3 1001.0 +(byte) bb#67 bb zp[1]:3 1001.0 +(byte) bb#68 bb zp[1]:3 1001.0 (byte) bc -(byte) bc#100 reg byte x 2.0 -(byte) bc#101 reg byte x 2.0 -(byte) bc#102 reg byte x 2.0 -(byte) bc#103 reg byte x 2.0 -(byte) bc#104 reg byte x 2.0 -(byte) bc#105 reg byte x 2.0 -(byte) bc#106 reg byte x 2.0 -(byte) bc#107 reg byte x 2.0 -(byte) bc#108 reg byte x 2.0 -(byte) bc#109 reg byte x 2.0 -(byte) bc#110 reg byte x 2.0 -(byte) bc#111 reg byte x 2.0 -(byte) bc#112 reg byte x 2.0 -(byte) bc#113 bc zp[1]:5 0.8260869565217388 -(byte) bc#13 reg byte x 3.75 -(byte) bc#172 bc zp[1]:5 4.0 -(byte) bc#173 bc zp[1]:5 4.0 -(byte) bc#174 bc zp[1]:5 4.0 -(byte) bc#175 bc zp[1]:5 4.0 -(byte) bc#176 bc zp[1]:5 4.0 -(byte) bc#177 bc zp[1]:5 4.0 -(byte) bc#178 bc zp[1]:5 4.0 -(byte) bc#179 bc zp[1]:5 4.0 -(byte) bc#180 bc zp[1]:5 4.0 -(byte) bc#2 reg byte x 3.0 -(byte) bc#24 reg byte x 1.8333333333333335 -(byte) bc#39 reg byte x 12.0 -(byte) bc#40 reg byte x 4.0 -(byte) bc#41 reg byte x 4.0 -(byte) bc#42 reg byte x 4.0 -(byte) bc#43 reg byte x 4.0 -(byte) bc#44 reg byte x 4.0 -(byte) bc#45 reg byte x 4.0 -(byte) bc#46 reg byte x 4.0 -(byte) bc#47 reg byte x 4.0 -(byte) bc#63 reg byte x 2.0 -(byte) bc#64 reg byte x 2.0 -(byte) bc#65 reg byte x 2.0 -(byte) bc#66 reg byte x 2.0 -(byte) bc#71 reg byte x 2.6666666666666665 -(byte) bc#83 reg byte x 3.0 +(byte) bc#100 reg byte x 1001.0 +(byte) bc#101 reg byte x 1001.0 +(byte) bc#102 reg byte x 1001.0 +(byte) bc#103 reg byte x 1001.0 +(byte) bc#104 reg byte x 10001.0 +(byte) bc#105 reg byte x 10001.0 +(byte) bc#106 reg byte x 10001.0 +(byte) bc#107 reg byte x 10001.0 +(byte) bc#108 reg byte x 10001.0 +(byte) bc#109 reg byte x 10001.0 +(byte) bc#110 reg byte x 10001.0 +(byte) bc#111 reg byte x 10001.0 +(byte) bc#112 reg byte x 10001.0 +(byte) bc#113 bc zp[1]:5 23696.065217391308 +(byte) bc#13 reg byte x 525.75 +(byte) bc#172 bc zp[1]:5 20002.0 +(byte) bc#173 bc zp[1]:5 20002.0 +(byte) bc#174 bc zp[1]:5 20002.0 +(byte) bc#175 bc zp[1]:5 20002.0 +(byte) bc#176 bc zp[1]:5 20002.0 +(byte) bc#177 bc zp[1]:5 20002.0 +(byte) bc#178 bc zp[1]:5 20002.0 +(byte) bc#179 bc zp[1]:5 20002.0 +(byte) bc#180 bc zp[1]:5 20002.0 +(byte) bc#2 reg byte x 420.59999999999997 +(byte) bc#24 reg byte x 1667.5833333333333 +(byte) bc#39 reg byte x 15006.0 +(byte) bc#40 reg byte x 20002.0 +(byte) bc#41 reg byte x 20002.0 +(byte) bc#42 reg byte x 20002.0 +(byte) bc#43 reg byte x 20002.0 +(byte) bc#44 reg byte x 20002.0 +(byte) bc#45 reg byte x 20002.0 +(byte) bc#46 reg byte x 20002.0 +(byte) bc#47 reg byte x 20002.0 +(byte) bc#63 reg byte x 1001.0 +(byte) bc#64 reg byte x 1001.0 +(byte) bc#65 reg byte x 1001.0 +(byte) bc#66 reg byte x 1001.0 +(byte) bc#71 reg byte x 1334.6666666666667 +(byte) bc#83 reg byte x 15001.5 (byte) bd -(byte) bd#100 reg byte y 2.0 -(byte) bd#101 reg byte y 2.0 -(byte) bd#102 reg byte y 2.0 -(byte) bd#103 reg byte y 2.0 -(byte) bd#104 reg byte y 2.6666666666666665 -(byte) bd#106 reg byte y 12.0 -(byte) bd#107 reg byte y 4.0 -(byte) bd#108 reg byte y 4.0 -(byte) bd#109 reg byte y 4.0 -(byte) bd#110 reg byte y 4.0 -(byte) bd#111 reg byte y 4.0 -(byte) bd#112 reg byte y 4.0 -(byte) bd#113 reg byte y 4.0 -(byte) bd#114 reg byte y 4.0 -(byte) bd#116 reg byte y 3.0 -(byte) bd#117 reg byte a 1.9999999999999991 -(byte) bd#129 reg byte y 2.0 -(byte) bd#13 reg byte y 3.75 -(byte) bd#130 reg byte y 2.0 -(byte) bd#131 reg byte y 2.0 -(byte) bd#132 reg byte y 2.0 -(byte) bd#133 reg byte y 2.0 -(byte) bd#134 reg byte y 2.0 -(byte) bd#135 reg byte y 2.0 -(byte) bd#136 reg byte y 2.0 -(byte) bd#137 reg byte y 6.0 -(byte) bd#138 reg byte y 2.0 -(byte) bd#139 reg byte y 2.0 -(byte) bd#140 reg byte y 2.0 -(byte) bd#141 reg byte y 2.0 -(byte) bd#146 reg byte y 2.0 -(byte) bd#147 reg byte y 2.0 -(byte) bd#148 reg byte y 2.0 -(byte) bd#149 reg byte y 2.0 -(byte) bd#150 reg byte y 2.0 -(byte) bd#151 reg byte y 2.0 -(byte) bd#152 reg byte y 2.0 -(byte) bd#153 reg byte y 2.0 -(byte) bd#154 reg byte y 2.0 -(byte) bd#2 reg byte y 3.0 -(byte) bd#235 reg byte a 4.0 -(byte) bd#236 reg byte a 4.0 -(byte) bd#237 reg byte a 4.0 -(byte) bd#238 reg byte a 4.0 -(byte) bd#239 reg byte a 4.0 -(byte) bd#24 reg byte y 2.0 -(byte) bd#240 reg byte a 4.0 -(byte) bd#241 reg byte a 4.0 -(byte) bd#242 reg byte a 4.0 -(byte) bd#243 reg byte a 4.0 -(byte) bd#35 reg byte y 1.8333333333333335 -(byte) bd#93 reg byte y 2.6666666666666665 +(byte) bd#100 reg byte y 10001.0 +(byte) bd#101 reg byte y 10001.0 +(byte) bd#102 reg byte y 10001.0 +(byte) bd#103 reg byte y 10001.0 +(byte) bd#104 reg byte y 13334.666666666666 +(byte) bd#106 reg byte y 150006.0 +(byte) bd#107 reg byte y 200002.0 +(byte) bd#108 reg byte y 200002.0 +(byte) bd#109 reg byte y 200002.0 +(byte) bd#110 reg byte y 200002.0 +(byte) bd#111 reg byte y 200002.0 +(byte) bd#112 reg byte y 200002.0 +(byte) bd#113 reg byte y 200002.0 +(byte) bd#114 reg byte y 200002.0 +(byte) bd#116 reg byte y 150001.5 +(byte) bd#117 reg byte a 573685.2105263157 +(byte) bd#129 reg byte y 1001.0 +(byte) bd#13 reg byte y 525.75 +(byte) bd#130 reg byte y 1001.0 +(byte) bd#131 reg byte y 1001.0 +(byte) bd#132 reg byte y 1001.0 +(byte) bd#133 reg byte y 1001.0 +(byte) bd#134 reg byte y 1001.0 +(byte) bd#135 reg byte y 1001.0 +(byte) bd#136 reg byte y 1001.0 +(byte) bd#137 reg byte y 7503.0 +(byte) bd#138 reg byte y 10001.0 +(byte) bd#139 reg byte y 10001.0 +(byte) bd#140 reg byte y 10001.0 +(byte) bd#141 reg byte y 10001.0 +(byte) bd#146 reg byte y 100001.0 +(byte) bd#147 reg byte y 100001.0 +(byte) bd#148 reg byte y 100001.0 +(byte) bd#149 reg byte y 100001.0 +(byte) bd#150 reg byte y 100001.0 +(byte) bd#151 reg byte y 100001.0 +(byte) bd#152 reg byte y 100001.0 +(byte) bd#153 reg byte y 100001.0 +(byte) bd#154 reg byte y 100001.0 +(byte) bd#2 reg byte y 420.59999999999997 +(byte) bd#235 reg byte a 200002.0 +(byte) bd#236 reg byte a 200002.0 +(byte) bd#237 reg byte a 200002.0 +(byte) bd#238 reg byte a 200002.0 +(byte) bd#239 reg byte a 200002.0 +(byte) bd#24 reg byte y 2501.0 +(byte) bd#240 reg byte a 200002.0 +(byte) bd#241 reg byte a 200002.0 +(byte) bd#242 reg byte a 200002.0 +(byte) bd#243 reg byte a 200002.0 +(byte) bd#35 reg byte y 16667.583333333336 +(byte) bd#93 reg byte y 1334.6666666666667 (void()) f0() (label) f0::@1 (label) f0::@10 diff --git a/src/test/ref/nomodify-3.log b/src/test/ref/nomodify-3.log index 673107a91..28f676fea 100644 --- a/src/test/ref/nomodify-3.log +++ b/src/test/ref/nomodify-3.log @@ -70,7 +70,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS -(byte) i loadstore 2.0 +(byte) i loadstore 6.5 (void()) main() Initial phi equivalence classes @@ -121,12 +121,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) i ← (byte) 7 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN) ← (byte) i [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [0] (byte) i ← (byte) 7 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) i [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ i ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 2: zp[1]:2 [ i ] +Uplift Scope [] 6.5: zp[1]:2 [ i ] Uplift Scope [main] Uplifting [] best 33 combination zp[1]:2 [ i ] @@ -194,7 +194,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore zp[1]:2 2.0 +(byte) i loadstore zp[1]:2 6.5 (void()) main() (label) main::@return diff --git a/src/test/ref/nomodify-3.sym b/src/test/ref/nomodify-3.sym index 5cd20bd4e..0b6343cd6 100644 --- a/src/test/ref/nomodify-3.sym +++ b/src/test/ref/nomodify-3.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore zp[1]:2 2.0 +(byte) i loadstore zp[1]:2 6.5 (void()) main() (label) main::@return diff --git a/src/test/ref/nomodify-4.log b/src/test/ref/nomodify-4.log index 16f33a50e..c515620f9 100644 --- a/src/test/ref/nomodify-4.log +++ b/src/test/ref/nomodify-4.log @@ -121,7 +121,7 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) print((byte) print::c) (byte) print::c -(byte) print::c#2 2.0 +(byte) print::c#2 101.0 Initial phi equivalence classes [ print::c#2 ] @@ -201,7 +201,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ print::c#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print] 2: zp[1]:2 [ print::c#2 ] +Uplift Scope [print] 101: zp[1]:2 [ print::c#2 ] Uplift Scope [main] Uplift Scope [] @@ -309,7 +309,7 @@ FINAL SYMBOL TABLE (void()) print((byte) print::c) (label) print::@return (byte) print::c -(byte) print::c#2 reg byte a 2.0 +(byte) print::c#2 reg byte a 101.0 reg byte a [ print::c#2 ] diff --git a/src/test/ref/nomodify-4.sym b/src/test/ref/nomodify-4.sym index 3345bd9e6..3f630280a 100644 --- a/src/test/ref/nomodify-4.sym +++ b/src/test/ref/nomodify-4.sym @@ -8,6 +8,6 @@ (void()) print((byte) print::c) (label) print::@return (byte) print::c -(byte) print::c#2 reg byte a 2.0 +(byte) print::c#2 reg byte a 101.0 reg byte a [ print::c#2 ] diff --git a/src/test/ref/noop-cast-elimination.log b/src/test/ref/noop-cast-elimination.log index 7bbe73f82..f25ed7fd8 100644 --- a/src/test/ref/noop-cast-elimination.log +++ b/src/test/ref/noop-cast-elimination.log @@ -132,13 +132,13 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$2 22.0 +(byte~) main::$2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 (signed word) main::sw -(signed word) main::sw#1 6.6000000000000005 -(signed word) main::sw#2 22.0 +(signed word) main::sw#1 60.599999999999994 +(signed word) main::sw#2 202.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -241,19 +241,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed word) main::sw#1 ← (signed word) main::sw#2 + (signed byte)(byte) main::i#2 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::sw#1 ← (signed word) main::sw#2 + (signed byte)(byte) main::i#2 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::sw#1 main::$2 ] ( main:2 [ main::i#2 main::sw#1 main::$2 ] ) always clobbers reg byte a -Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::sw#1 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] ) always clobbers reg byte a -Statement [6] (signed word) main::sw#1 ← (signed word) main::sw#2 + (signed byte)(byte) main::i#2 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::sw#1 main::$2 ] ( main:2 [ main::i#2 main::sw#1 main::$2 ] ) always clobbers reg byte a -Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::sw#1 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::sw#1 main::$2 ] ( main:2 [ main::i#2 main::sw#1 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::sw#1 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] { } ) always clobbers reg byte a +Statement [6] (signed word) main::sw#1 ← (signed word) main::sw#2 + (signed byte)(byte) main::i#2 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::sw#1 main::$2 ] ( main:2 [ main::i#2 main::sw#1 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::sw#1 [ main::i#2 main::sw#1 ] ( main:2 [ main::i#2 main::sw#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::sw#2 main::sw#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 28.6: zp[2]:3 [ main::sw#2 main::sw#1 ] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$2 ] +Uplift Scope [main] 262.6: zp[2]:3 [ main::sw#2 main::sw#1 ] 227.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$2 ] Uplift Scope [] Uplifting [main] best 858 combination zp[2]:3 [ main::sw#2 main::sw#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] @@ -372,16 +372,16 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (const signed word*) main::screen = (signed word*) 1024 (signed word) main::sw -(signed word) main::sw#1 sw zp[2]:2 6.6000000000000005 -(signed word) main::sw#2 sw zp[2]:2 22.0 +(signed word) main::sw#1 sw zp[2]:2 60.599999999999994 +(signed word) main::sw#2 sw zp[2]:2 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sw#2 main::sw#1 ] diff --git a/src/test/ref/noop-cast-elimination.sym b/src/test/ref/noop-cast-elimination.sym index 9d2aa063b..bb2ac7a11 100644 --- a/src/test/ref/noop-cast-elimination.sym +++ b/src/test/ref/noop-cast-elimination.sym @@ -2,16 +2,16 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (const signed word*) main::screen = (signed word*) 1024 (signed word) main::sw -(signed word) main::sw#1 sw zp[2]:2 6.6000000000000005 -(signed word) main::sw#2 sw zp[2]:2 22.0 +(signed word) main::sw#1 sw zp[2]:2 60.599999999999994 +(signed word) main::sw#2 sw zp[2]:2 202.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sw#2 main::sw#1 ] diff --git a/src/test/ref/norom-charset.log b/src/test/ref/norom-charset.log index 26877c0ef..b084d2c35 100644 --- a/src/test/ref/norom-charset.log +++ b/src/test/ref/norom-charset.log @@ -270,25 +270,25 @@ Inferred type updated to word in (unumber~) gen_char3::$6 ← (word) gen_char3:: Inferred type updated to byte in (unumber~) gen_char3::$4 ← (byte) gen_char3::b#4 | (byte) 1 Inversing boolean not [32] (bool~) gen_char3::$3 ← (byte~) gen_char3::$1 == (byte) 0 from [31] (bool~) gen_char3::$2 ← (byte~) gen_char3::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) main::charset#0 = (byte*~) main::$0 -Alias (byte) main::c#2 = (byte) main::c#3 (byte) main::c#4 -Alias (byte*) main::charset#2 = (byte*) main::charset#4 (byte*) main::charset#3 -Alias (byte*) main::charset#1 = (byte*~) main::$9 -Alias (byte) gen_char3::b#1 = (byte~) gen_char3::$5 (byte) gen_char3::b#5 -Alias (word) gen_char3::spec#1 = (word~) gen_char3::$6 (word) gen_char3::spec#7 -Alias (byte) gen_char3::b#4 = (byte) gen_char3::b#6 -Alias (word) gen_char3::spec#2 = (word) gen_char3::spec#5 -Alias (byte) gen_char3::c#3 = (byte) gen_char3::c#4 -Alias (byte*) gen_char3::dst#3 = (byte*) gen_char3::dst#4 -Alias (byte) gen_char3::r#4 = (byte) gen_char3::r#5 -Alias (byte) gen_char3::b#2 = (byte~) gen_char3::$4 -Alias (byte*) gen_char3::dst#1 = (byte*) gen_char3::dst#2 -Alias (byte) gen_char3::r#2 = (byte) gen_char3::r#3 +Alias main::charset#0 = main::$0 +Alias main::c#2 = main::c#3 main::c#4 +Alias main::charset#2 = main::charset#4 main::charset#3 +Alias main::charset#1 = main::$9 +Alias gen_char3::b#1 = gen_char3::$5 gen_char3::b#5 +Alias gen_char3::spec#1 = gen_char3::$6 gen_char3::spec#7 +Alias gen_char3::b#4 = gen_char3::b#6 +Alias gen_char3::spec#2 = gen_char3::spec#5 +Alias gen_char3::c#3 = gen_char3::c#4 +Alias gen_char3::dst#3 = gen_char3::dst#4 +Alias gen_char3::r#4 = gen_char3::r#5 +Alias gen_char3::b#2 = gen_char3::$4 +Alias gen_char3::dst#1 = gen_char3::dst#2 +Alias gen_char3::r#2 = gen_char3::r#3 Successful SSA optimization Pass2AliasElimination -Alias (word) gen_char3::spec#2 = (word) gen_char3::spec#3 -Alias (byte) gen_char3::c#2 = (byte) gen_char3::c#3 -Alias (byte*) gen_char3::dst#1 = (byte*) gen_char3::dst#3 -Alias (byte) gen_char3::r#2 = (byte) gen_char3::r#4 +Alias gen_char3::spec#2 = gen_char3::spec#3 +Alias gen_char3::c#2 = gen_char3::c#3 +Alias gen_char3::dst#1 = gen_char3::dst#3 +Alias gen_char3::r#2 = gen_char3::r#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) gen_char3::spec#6 (word) gen_char3::spec#0 Identical Phi Values (byte*) gen_char3::dst#6 (byte*) gen_char3::dst#0 @@ -474,34 +474,34 @@ gen_char3::@return: scope:[gen_char3] from gen_char3::@5 VARIABLE REGISTER WEIGHTS (void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec) -(byte~) gen_char3::$0 2002.0 -(byte~) gen_char3::$1 2002.0 +(byte~) gen_char3::$0 2000002.0 +(byte~) gen_char3::$1 2000002.0 (byte) gen_char3::b -(byte) gen_char3::b#1 525.75 -(byte) gen_char3::b#2 2002.0 -(byte) gen_char3::b#3 3003.0 -(byte) gen_char3::b#4 750.75 +(byte) gen_char3::b#1 525000.75 +(byte) gen_char3::b#2 2000002.0 +(byte) gen_char3::b#3 3000003.0 +(byte) gen_char3::b#4 750000.75 (byte) gen_char3::c -(byte) gen_char3::c#1 1501.5 -(byte) gen_char3::c#2 250.25 +(byte) gen_char3::c#1 1500001.5 +(byte) gen_char3::c#2 250000.25 (byte*) gen_char3::dst -(byte*) gen_char3::dst#0 6.588235294117648 +(byte*) gen_char3::dst#0 5888.35294117647 (byte) gen_char3::r -(byte) gen_char3::r#1 151.5 -(byte) gen_char3::r#6 25.25 +(byte) gen_char3::r#1 150001.5 +(byte) gen_char3::r#6 25000.25 (word) gen_char3::spec -(word) gen_char3::spec#0 6.5 -(word) gen_char3::spec#1 350.5 -(word) gen_char3::spec#2 443.42857142857144 -(word) gen_char3::spec#4 204.0 +(word) gen_char3::spec#0 551.0 +(word) gen_char3::spec#1 350000.5 +(word) gen_char3::spec#2 442857.7142857142 +(word) gen_char3::spec#4 201003.0 (void()) main() -(byte~) main::$10 11.0 +(byte~) main::$10 101.0 (byte) main::c -(byte) main::c#1 22.0 -(byte) main::c#2 6.285714285714286 +(byte) main::c#1 202.0 +(byte) main::c#2 57.714285714285715 (byte*) main::charset -(byte*) main::charset#1 11.0 -(byte*) main::charset#2 5.5 +(byte*) main::charset#1 101.0 +(byte*) main::charset#2 50.5 Initial phi equivalence classes [ main::c#2 main::c#1 ] @@ -742,45 +742,40 @@ gen_char3: { charset_spec_row: .word $f7da, $f7de, $f24e, $d6de REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) CHARSET/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] (byte~) main::$10 ← (byte) main::c#2 << (byte) 1 [ main::c#2 main::charset#2 main::$10 ] ( main:2 [ main::c#2 main::charset#2 main::$10 ] ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) CHARSET/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$10 ← (byte) main::c#2 << (byte) 1 [ main::c#2 main::charset#2 main::$10 ] ( main:2 [ main::c#2 main::charset#2 main::$10 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#2 main::c#1 ] -Statement [10] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ( main:2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ) always clobbers reg byte a +Statement [10] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ( main:2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::$10 ] -Statement [11] (word) gen_char3::spec#0 ← *((const word*) charset_spec_row + (byte~) main::$10) [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ( main:2 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ) always clobbers reg byte a -Statement [13] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte) 8 [ main::c#2 main::charset#1 ] ( main:2 [ main::c#2 main::charset#1 ] ) always clobbers reg byte a -Statement [18] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::b#4 gen_char3::c#2 gen_char3::$0 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::b#4 gen_char3::c#2 gen_char3::$0 ] ) always clobbers reg byte a +Statement [11] (word) gen_char3::spec#0 ← *((const word*) charset_spec_row + (byte~) main::$10) [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ( main:2 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a +Statement [13] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte) 8 [ main::c#2 main::charset#1 ] ( main:2 [ main::c#2 main::charset#1 ] { } ) always clobbers reg byte a +Statement [21] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte) 1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:9 [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ gen_char3::c#2 gen_char3::c#1 ] -Statement [21] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte) 1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#1 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) CHARSET/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] (byte~) main::$10 ← (byte) main::c#2 << (byte) 1 [ main::c#2 main::charset#2 main::$10 ] ( main:2 [ main::c#2 main::charset#2 main::$10 ] ) always clobbers reg byte a -Statement [10] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ( main:2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ) always clobbers reg byte a -Statement [11] (word) gen_char3::spec#0 ← *((const word*) charset_spec_row + (byte~) main::$10) [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ( main:2 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ) always clobbers reg byte a -Statement [13] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte) 8 [ main::c#2 main::charset#1 ] ( main:2 [ main::c#2 main::charset#1 ] ) always clobbers reg byte a -Statement [18] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::b#4 gen_char3::c#2 gen_char3::$0 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::b#4 gen_char3::c#2 gen_char3::$0 ] ) always clobbers reg byte a -Statement [21] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte) 1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#1 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#1 ] ) always clobbers reg byte a +Statement [7] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) CHARSET/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$10 ← (byte) main::c#2 << (byte) 1 [ main::c#2 main::charset#2 main::$10 ] ( main:2 [ main::c#2 main::charset#2 main::$10 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a +Statement [10] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] ( main:2 [ main::c#2 main::charset#2 main::$10 gen_char3::dst#0 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a +Statement [11] (word) gen_char3::spec#0 ← *((const word*) charset_spec_row + (byte~) main::$10) [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] ( main:2 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::spec#0 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a +Statement [13] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte) 8 [ main::c#2 main::charset#1 ] ( main:2 [ main::c#2 main::charset#1 ] { } ) always clobbers reg byte a +Statement [21] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte) 1 [ gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] ( main:2::gen_char3:12 [ main::c#2 main::charset#2 gen_char3::dst#0 gen_char3::r#6 gen_char3::spec#2 gen_char3::c#2 gen_char3::b#2 ] { { gen_char3::dst#0 = main::charset#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::charset#2 main::charset#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] : zp[1]:5 , reg byte x , reg byte y , Potential registers zp[2]:6 [ gen_char3::spec#2 gen_char3::spec#4 gen_char3::spec#0 gen_char3::spec#1 ] : zp[2]:6 , Potential registers zp[1]:8 [ gen_char3::c#2 gen_char3::c#1 ] : zp[1]:8 , reg byte x , reg byte y , -Potential registers zp[1]:9 [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] : zp[1]:9 , reg byte x , reg byte y , +Potential registers zp[1]:9 [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::$10 ] : zp[1]:10 , reg byte x , reg byte y , Potential registers zp[2]:11 [ gen_char3::dst#0 ] : zp[2]:11 , Potential registers zp[1]:13 [ gen_char3::$0 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:14 [ gen_char3::$1 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [gen_char3] 6,281.5: zp[1]:9 [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] 2,002: zp[1]:13 [ gen_char3::$0 ] 2,002: zp[1]:14 [ gen_char3::$1 ] 1,751.75: zp[1]:8 [ gen_char3::c#2 gen_char3::c#1 ] 1,004.43: zp[2]:6 [ gen_char3::spec#2 gen_char3::spec#4 gen_char3::spec#0 gen_char3::spec#1 ] 176.75: zp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] 6.59: zp[2]:11 [ gen_char3::dst#0 ] -Uplift Scope [main] 28.29: zp[1]:2 [ main::c#2 main::c#1 ] 16.5: zp[2]:3 [ main::charset#2 main::charset#1 ] 11: zp[1]:10 [ main::$10 ] +Uplift Scope [gen_char3] 6,275,006.5: zp[1]:9 [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] 2,000,002: zp[1]:13 [ gen_char3::$0 ] 2,000,002: zp[1]:14 [ gen_char3::$1 ] 1,750,001.75: zp[1]:8 [ gen_char3::c#2 gen_char3::c#1 ] 994,412.21: zp[2]:6 [ gen_char3::spec#2 gen_char3::spec#4 gen_char3::spec#0 gen_char3::spec#1 ] 175,001.75: zp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] 5,888.35: zp[2]:11 [ gen_char3::dst#0 ] +Uplift Scope [main] 259.71: zp[1]:2 [ main::c#2 main::c#1 ] 151.5: zp[2]:3 [ main::charset#2 main::charset#1 ] 101: zp[1]:10 [ main::$10 ] Uplift Scope [] Uplifting [gen_char3] best 61712 combination reg byte y [ gen_char3::b#3 gen_char3::b#4 gen_char3::b#1 gen_char3::b#2 ] reg byte a [ gen_char3::$0 ] reg byte a [ gen_char3::$1 ] reg byte x [ gen_char3::c#2 gen_char3::c#1 ] zp[2]:6 [ gen_char3::spec#2 gen_char3::spec#4 gen_char3::spec#0 gen_char3::spec#1 ] zp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] zp[2]:11 [ gen_char3::dst#0 ] -Limited combination testing to 100 combinations of 432 possible. +Limited combination testing to 100 combinations of 576 possible. Uplifting [main] best 61672 combination zp[1]:2 [ main::c#2 main::c#1 ] zp[2]:3 [ main::charset#2 main::charset#1 ] reg byte x [ main::$10 ] Uplifting [] best 61672 combination Attempting to uplift remaining variables inzp[1]:5 [ gen_char3::r#6 gen_char3::r#1 ] @@ -1035,8 +1030,8 @@ FINAL SYMBOL TABLE (const byte*) VIC_MEMORY = (byte*) 53272 (const word*) charset_spec_row[] = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de } (void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec) -(byte~) gen_char3::$0 reg byte a 2002.0 -(byte~) gen_char3::$1 reg byte a 2002.0 +(byte~) gen_char3::$0 reg byte a 2000002.0 +(byte~) gen_char3::$1 reg byte a 2000002.0 (label) gen_char3::@1 (label) gen_char3::@2 (label) gen_char3::@3 @@ -1044,36 +1039,36 @@ FINAL SYMBOL TABLE (label) gen_char3::@5 (label) gen_char3::@return (byte) gen_char3::b -(byte) gen_char3::b#1 reg byte y 525.75 -(byte) gen_char3::b#2 reg byte y 2002.0 -(byte) gen_char3::b#3 reg byte y 3003.0 -(byte) gen_char3::b#4 reg byte y 750.75 +(byte) gen_char3::b#1 reg byte y 525000.75 +(byte) gen_char3::b#2 reg byte y 2000002.0 +(byte) gen_char3::b#3 reg byte y 3000003.0 +(byte) gen_char3::b#4 reg byte y 750000.75 (byte) gen_char3::c -(byte) gen_char3::c#1 reg byte x 1501.5 -(byte) gen_char3::c#2 reg byte x 250.25 +(byte) gen_char3::c#1 reg byte x 1500001.5 +(byte) gen_char3::c#2 reg byte x 250000.25 (byte*) gen_char3::dst -(byte*) gen_char3::dst#0 dst zp[2]:3 6.588235294117648 +(byte*) gen_char3::dst#0 dst zp[2]:3 5888.35294117647 (byte) gen_char3::r -(byte) gen_char3::r#1 r zp[1]:5 151.5 -(byte) gen_char3::r#6 r zp[1]:5 25.25 +(byte) gen_char3::r#1 r zp[1]:5 150001.5 +(byte) gen_char3::r#6 r zp[1]:5 25000.25 (word) gen_char3::spec -(word) gen_char3::spec#0 spec zp[2]:6 6.5 -(word) gen_char3::spec#1 spec zp[2]:6 350.5 -(word) gen_char3::spec#2 spec zp[2]:6 443.42857142857144 -(word) gen_char3::spec#4 spec zp[2]:6 204.0 +(word) gen_char3::spec#0 spec zp[2]:6 551.0 +(word) gen_char3::spec#1 spec zp[2]:6 350000.5 +(word) gen_char3::spec#2 spec zp[2]:6 442857.7142857142 +(word) gen_char3::spec#4 spec zp[2]:6 201003.0 (void()) main() -(byte~) main::$10 reg byte x 11.0 +(byte~) main::$10 reg byte x 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::c -(byte) main::c#1 c zp[1]:2 22.0 -(byte) main::c#2 c zp[1]:2 6.285714285714286 +(byte) main::c#1 c zp[1]:2 202.0 +(byte) main::c#2 c zp[1]:2 57.714285714285715 (byte*) main::charset -(byte*) main::charset#1 charset zp[2]:3 11.0 -(byte*) main::charset#2 charset zp[2]:3 5.5 +(byte*) main::charset#1 charset zp[2]:3 101.0 +(byte*) main::charset#2 charset zp[2]:3 50.5 zp[1]:2 [ main::c#2 main::c#1 ] zp[2]:3 [ main::charset#2 main::charset#1 gen_char3::dst#0 ] diff --git a/src/test/ref/norom-charset.sym b/src/test/ref/norom-charset.sym index af458f4b5..c0a9e3f59 100644 --- a/src/test/ref/norom-charset.sym +++ b/src/test/ref/norom-charset.sym @@ -6,8 +6,8 @@ (const byte*) VIC_MEMORY = (byte*) 53272 (const word*) charset_spec_row[] = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de } (void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec) -(byte~) gen_char3::$0 reg byte a 2002.0 -(byte~) gen_char3::$1 reg byte a 2002.0 +(byte~) gen_char3::$0 reg byte a 2000002.0 +(byte~) gen_char3::$1 reg byte a 2000002.0 (label) gen_char3::@1 (label) gen_char3::@2 (label) gen_char3::@3 @@ -15,36 +15,36 @@ (label) gen_char3::@5 (label) gen_char3::@return (byte) gen_char3::b -(byte) gen_char3::b#1 reg byte y 525.75 -(byte) gen_char3::b#2 reg byte y 2002.0 -(byte) gen_char3::b#3 reg byte y 3003.0 -(byte) gen_char3::b#4 reg byte y 750.75 +(byte) gen_char3::b#1 reg byte y 525000.75 +(byte) gen_char3::b#2 reg byte y 2000002.0 +(byte) gen_char3::b#3 reg byte y 3000003.0 +(byte) gen_char3::b#4 reg byte y 750000.75 (byte) gen_char3::c -(byte) gen_char3::c#1 reg byte x 1501.5 -(byte) gen_char3::c#2 reg byte x 250.25 +(byte) gen_char3::c#1 reg byte x 1500001.5 +(byte) gen_char3::c#2 reg byte x 250000.25 (byte*) gen_char3::dst -(byte*) gen_char3::dst#0 dst zp[2]:3 6.588235294117648 +(byte*) gen_char3::dst#0 dst zp[2]:3 5888.35294117647 (byte) gen_char3::r -(byte) gen_char3::r#1 r zp[1]:5 151.5 -(byte) gen_char3::r#6 r zp[1]:5 25.25 +(byte) gen_char3::r#1 r zp[1]:5 150001.5 +(byte) gen_char3::r#6 r zp[1]:5 25000.25 (word) gen_char3::spec -(word) gen_char3::spec#0 spec zp[2]:6 6.5 -(word) gen_char3::spec#1 spec zp[2]:6 350.5 -(word) gen_char3::spec#2 spec zp[2]:6 443.42857142857144 -(word) gen_char3::spec#4 spec zp[2]:6 204.0 +(word) gen_char3::spec#0 spec zp[2]:6 551.0 +(word) gen_char3::spec#1 spec zp[2]:6 350000.5 +(word) gen_char3::spec#2 spec zp[2]:6 442857.7142857142 +(word) gen_char3::spec#4 spec zp[2]:6 201003.0 (void()) main() -(byte~) main::$10 reg byte x 11.0 +(byte~) main::$10 reg byte x 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::c -(byte) main::c#1 c zp[1]:2 22.0 -(byte) main::c#2 c zp[1]:2 6.285714285714286 +(byte) main::c#1 c zp[1]:2 202.0 +(byte) main::c#2 c zp[1]:2 57.714285714285715 (byte*) main::charset -(byte*) main::charset#1 charset zp[2]:3 11.0 -(byte*) main::charset#2 charset zp[2]:3 5.5 +(byte*) main::charset#1 charset zp[2]:3 101.0 +(byte*) main::charset#2 charset zp[2]:3 50.5 zp[1]:2 [ main::c#2 main::c#1 ] zp[2]:3 [ main::charset#2 main::charset#1 gen_char3::dst#0 ] diff --git a/src/test/ref/number-conversion.log b/src/test/ref/number-conversion.log index 717180ac1..b426712d0 100644 --- a/src/test/ref/number-conversion.log +++ b/src/test/ref/number-conversion.log @@ -744,84 +744,84 @@ Resolving typeid() (byte~) main::$64 ← typeid (dword) $c+(byte) -$82 Resolving typeid() (byte~) main::$66 ← typeid (dword) $c+(dword) -$101d0 Resolving typeid() (byte~) main::$68 ← typeid (signed byte) $c+(signed dword) -$7d2b7500 Successful SSA optimization PassNTypeIdSimplification -Alias (byte) assertType::t1#0 = (byte~) main::$0 -Alias (byte) idx#1 = (byte) idx#43 -Alias (byte) assertType::t1#1 = (byte~) main::$2 -Alias (byte) idx#2 = (byte) idx#44 -Alias (byte) assertType::t1#2 = (byte~) main::$4 -Alias (byte) idx#3 = (byte) idx#45 -Alias (byte) assertType::t1#3 = (byte~) main::$6 -Alias (byte) idx#4 = (byte) idx#46 -Alias (byte) assertType::t1#4 = (byte~) main::$8 -Alias (byte) idx#47 = (byte) idx#5 -Alias (byte) assertType::t1#5 = (byte~) main::$10 -Alias (byte) idx#48 = (byte) idx#6 -Alias (byte) assertType::t1#6 = (byte~) main::$12 -Alias (byte) idx#49 = (byte) idx#7 -Alias (byte) assertType::t1#7 = (byte~) main::$14 -Alias (byte) idx#50 = (byte) idx#8 -Alias (byte) assertType::t1#8 = (byte~) main::$16 -Alias (byte) idx#51 = (byte) idx#9 -Alias (byte) assertType::t1#9 = (byte~) main::$18 -Alias (byte) idx#11 = (byte) idx#52 -Alias (byte) assertType::t1#10 = (byte~) main::$20 -Alias (byte) idx#12 = (byte) idx#53 -Alias (byte) assertType::t1#11 = (byte~) main::$22 -Alias (byte) idx#13 = (byte) idx#54 -Alias (byte) assertType::t1#12 = (byte~) main::$24 -Alias (byte) idx#14 = (byte) idx#55 -Alias (byte) assertType::t1#13 = (byte~) main::$26 -Alias (byte) idx#15 = (byte) idx#56 -Alias (byte) assertType::t1#14 = (byte~) main::$28 -Alias (byte) idx#16 = (byte) idx#57 -Alias (byte) assertType::t1#15 = (byte~) main::$30 -Alias (byte) idx#17 = (byte) idx#58 -Alias (byte) assertType::t1#16 = (byte~) main::$32 -Alias (byte) idx#18 = (byte) idx#59 -Alias (byte) assertType::t1#17 = (byte~) main::$34 -Alias (byte) idx#19 = (byte) idx#60 -Alias (byte) assertType::t1#18 = (byte~) main::$36 -Alias (byte) idx#20 = (byte) idx#61 -Alias (byte) assertType::t1#19 = (byte~) main::$38 -Alias (byte) idx#21 = (byte) idx#62 -Alias (byte) assertType::t1#20 = (byte~) main::$40 -Alias (byte) idx#22 = (byte) idx#63 -Alias (byte) assertType::t1#21 = (byte~) main::$42 -Alias (byte) idx#24 = (byte) idx#64 -Alias (byte) assertType::t1#22 = (byte~) main::$44 -Alias (byte) idx#25 = (byte) idx#65 -Alias (byte) assertType::t1#23 = (byte~) main::$46 -Alias (byte) idx#26 = (byte) idx#66 -Alias (byte) assertType::t1#24 = (byte~) main::$48 -Alias (byte) idx#27 = (byte) idx#67 -Alias (byte) assertType::t1#25 = (byte~) main::$50 -Alias (byte) idx#28 = (byte) idx#68 -Alias (byte) assertType::t1#26 = (byte~) main::$52 -Alias (byte) idx#29 = (byte) idx#69 -Alias (byte) assertType::t1#27 = (byte~) main::$54 -Alias (byte) idx#30 = (byte) idx#70 -Alias (byte) assertType::t1#28 = (byte~) main::$56 -Alias (byte) idx#31 = (byte) idx#71 -Alias (byte) assertType::t1#29 = (byte~) main::$58 -Alias (byte) idx#32 = (byte) idx#72 -Alias (byte) assertType::t1#30 = (byte~) main::$60 -Alias (byte) idx#33 = (byte) idx#73 -Alias (byte) assertType::t1#31 = (byte~) main::$62 -Alias (byte) idx#34 = (byte) idx#74 -Alias (byte) assertType::t1#32 = (byte~) main::$64 -Alias (byte) idx#35 = (byte) idx#75 -Alias (byte) assertType::t1#33 = (byte~) main::$66 -Alias (byte) idx#36 = (byte) idx#76 -Alias (byte) assertType::t1#34 = (byte~) main::$68 -Alias (byte) idx#37 = (byte) idx#77 (byte) idx#78 (byte) idx#38 -Alias (byte) idx#79 = (byte) idx#84 (byte) idx#80 -Alias (byte) assertType::t1#35 = (byte) assertType::t1#37 (byte) assertType::t1#38 -Alias (byte) idx#40 = (byte) idx#82 (byte) idx#41 -Alias (byte) idx#39 = (byte) idx#85 -Alias (byte) idx#42 = (byte) idx#83 +Alias assertType::t1#0 = main::$0 +Alias idx#1 = idx#43 +Alias assertType::t1#1 = main::$2 +Alias idx#2 = idx#44 +Alias assertType::t1#2 = main::$4 +Alias idx#3 = idx#45 +Alias assertType::t1#3 = main::$6 +Alias idx#4 = idx#46 +Alias assertType::t1#4 = main::$8 +Alias idx#47 = idx#5 +Alias assertType::t1#5 = main::$10 +Alias idx#48 = idx#6 +Alias assertType::t1#6 = main::$12 +Alias idx#49 = idx#7 +Alias assertType::t1#7 = main::$14 +Alias idx#50 = idx#8 +Alias assertType::t1#8 = main::$16 +Alias idx#51 = idx#9 +Alias assertType::t1#9 = main::$18 +Alias idx#11 = idx#52 +Alias assertType::t1#10 = main::$20 +Alias idx#12 = idx#53 +Alias assertType::t1#11 = main::$22 +Alias idx#13 = idx#54 +Alias assertType::t1#12 = main::$24 +Alias idx#14 = idx#55 +Alias assertType::t1#13 = main::$26 +Alias idx#15 = idx#56 +Alias assertType::t1#14 = main::$28 +Alias idx#16 = idx#57 +Alias assertType::t1#15 = main::$30 +Alias idx#17 = idx#58 +Alias assertType::t1#16 = main::$32 +Alias idx#18 = idx#59 +Alias assertType::t1#17 = main::$34 +Alias idx#19 = idx#60 +Alias assertType::t1#18 = main::$36 +Alias idx#20 = idx#61 +Alias assertType::t1#19 = main::$38 +Alias idx#21 = idx#62 +Alias assertType::t1#20 = main::$40 +Alias idx#22 = idx#63 +Alias assertType::t1#21 = main::$42 +Alias idx#24 = idx#64 +Alias assertType::t1#22 = main::$44 +Alias idx#25 = idx#65 +Alias assertType::t1#23 = main::$46 +Alias idx#26 = idx#66 +Alias assertType::t1#24 = main::$48 +Alias idx#27 = idx#67 +Alias assertType::t1#25 = main::$50 +Alias idx#28 = idx#68 +Alias assertType::t1#26 = main::$52 +Alias idx#29 = idx#69 +Alias assertType::t1#27 = main::$54 +Alias idx#30 = idx#70 +Alias assertType::t1#28 = main::$56 +Alias idx#31 = idx#71 +Alias assertType::t1#29 = main::$58 +Alias idx#32 = idx#72 +Alias assertType::t1#30 = main::$60 +Alias idx#33 = idx#73 +Alias assertType::t1#31 = main::$62 +Alias idx#34 = idx#74 +Alias assertType::t1#32 = main::$64 +Alias idx#35 = idx#75 +Alias assertType::t1#33 = main::$66 +Alias idx#36 = idx#76 +Alias assertType::t1#34 = main::$68 +Alias idx#37 = idx#77 idx#78 idx#38 +Alias idx#79 = idx#84 idx#80 +Alias assertType::t1#35 = assertType::t1#37 assertType::t1#38 +Alias idx#40 = idx#82 idx#41 +Alias idx#39 = idx#85 +Alias idx#42 = idx#83 Successful SSA optimization Pass2AliasElimination -Alias (byte) assertType::t1#35 = (byte) assertType::t1#36 -Alias (byte) idx#79 = (byte) idx#81 +Alias assertType::t1#35 = assertType::t1#36 +Alias idx#79 = idx#81 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#1 (byte) idx#40 Identical Phi Values (byte) idx#2 (byte) idx#40 @@ -1357,12 +1357,12 @@ assertType::@1: scope:[assertType] from assertType VARIABLE REGISTER WEIGHTS (void()) assertType((byte) assertType::t1 , (byte) assertType::t2) (byte) assertType::t1 -(byte) assertType::t1#35 1.0 +(byte) assertType::t1#35 50.5 (byte) assertType::t2 -(byte) assertType::t2#35 2.0 +(byte) assertType::t2#35 101.0 (byte) idx -(byte) idx#40 0.9999999999999993 -(byte) idx#79 14.400000000000007 +(byte) idx#40 6.863636363636364 +(byte) idx#79 151.20000000000002 (void()) main() Initial phi equivalence classes @@ -2041,21 +2041,21 @@ assertType: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [77] *((const byte*) COLS + (byte) idx#79) ← (const byte) RED [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] main:2::assertType:7 [ assertType::t1#35 idx#79 ] main:2::assertType:9 [ assertType::t1#35 idx#79 ] main:2::assertType:11 [ assertType::t1#35 idx#79 ] main:2::assertType:13 [ assertType::t1#35 idx#79 ] main:2::assertType:15 [ assertType::t1#35 idx#79 ] main:2::assertType:17 [ assertType::t1#35 idx#79 ] main:2::assertType:19 [ assertType::t1#35 idx#79 ] main:2::assertType:21 [ assertType::t1#35 idx#79 ] main:2::assertType:23 [ assertType::t1#35 idx#79 ] main:2::assertType:25 [ assertType::t1#35 idx#79 ] main:2::assertType:27 [ assertType::t1#35 idx#79 ] main:2::assertType:29 [ assertType::t1#35 idx#79 ] main:2::assertType:31 [ assertType::t1#35 idx#79 ] main:2::assertType:33 [ assertType::t1#35 idx#79 ] main:2::assertType:35 [ assertType::t1#35 idx#79 ] main:2::assertType:37 [ assertType::t1#35 idx#79 ] main:2::assertType:39 [ assertType::t1#35 idx#79 ] main:2::assertType:41 [ assertType::t1#35 idx#79 ] main:2::assertType:43 [ assertType::t1#35 idx#79 ] main:2::assertType:45 [ assertType::t1#35 idx#79 ] main:2::assertType:47 [ assertType::t1#35 idx#79 ] main:2::assertType:49 [ assertType::t1#35 idx#79 ] main:2::assertType:51 [ assertType::t1#35 idx#79 ] main:2::assertType:53 [ assertType::t1#35 idx#79 ] main:2::assertType:55 [ assertType::t1#35 idx#79 ] main:2::assertType:57 [ assertType::t1#35 idx#79 ] main:2::assertType:59 [ assertType::t1#35 idx#79 ] main:2::assertType:61 [ assertType::t1#35 idx#79 ] main:2::assertType:63 [ assertType::t1#35 idx#79 ] main:2::assertType:65 [ assertType::t1#35 idx#79 ] main:2::assertType:67 [ assertType::t1#35 idx#79 ] main:2::assertType:69 [ assertType::t1#35 idx#79 ] main:2::assertType:71 [ assertType::t1#35 idx#79 ] main:2::assertType:73 [ assertType::t1#35 idx#79 ] ) always clobbers reg byte a +Statement [77] *((const byte*) COLS + (byte) idx#79) ← (const byte) RED [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] { } main:2::assertType:7 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ assertType::t1#35 idx#79 ] { } main:2::assertType:25 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ assertType::t1#35 idx#79 ] { } main:2::assertType:49 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ assertType::t1#35 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#79 idx#40 ] -Statement [78] *((const byte*) SCREEN + (byte) idx#79) ← (byte) assertType::t1#35 [ idx#79 ] ( main:2::assertType:5 [ idx#79 ] main:2::assertType:7 [ idx#79 ] main:2::assertType:9 [ idx#79 ] main:2::assertType:11 [ idx#79 ] main:2::assertType:13 [ idx#79 ] main:2::assertType:15 [ idx#79 ] main:2::assertType:17 [ idx#79 ] main:2::assertType:19 [ idx#79 ] main:2::assertType:21 [ idx#79 ] main:2::assertType:23 [ idx#79 ] main:2::assertType:25 [ idx#79 ] main:2::assertType:27 [ idx#79 ] main:2::assertType:29 [ idx#79 ] main:2::assertType:31 [ idx#79 ] main:2::assertType:33 [ idx#79 ] main:2::assertType:35 [ idx#79 ] main:2::assertType:37 [ idx#79 ] main:2::assertType:39 [ idx#79 ] main:2::assertType:41 [ idx#79 ] main:2::assertType:43 [ idx#79 ] main:2::assertType:45 [ idx#79 ] main:2::assertType:47 [ idx#79 ] main:2::assertType:49 [ idx#79 ] main:2::assertType:51 [ idx#79 ] main:2::assertType:53 [ idx#79 ] main:2::assertType:55 [ idx#79 ] main:2::assertType:57 [ idx#79 ] main:2::assertType:59 [ idx#79 ] main:2::assertType:61 [ idx#79 ] main:2::assertType:63 [ idx#79 ] main:2::assertType:65 [ idx#79 ] main:2::assertType:67 [ idx#79 ] main:2::assertType:69 [ idx#79 ] main:2::assertType:71 [ idx#79 ] main:2::assertType:73 [ idx#79 ] ) always clobbers reg byte a -Statement [81] *((const byte*) COLS + (byte) idx#79) ← (const byte) GREEN [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] main:2::assertType:7 [ assertType::t1#35 idx#79 ] main:2::assertType:9 [ assertType::t1#35 idx#79 ] main:2::assertType:11 [ assertType::t1#35 idx#79 ] main:2::assertType:13 [ assertType::t1#35 idx#79 ] main:2::assertType:15 [ assertType::t1#35 idx#79 ] main:2::assertType:17 [ assertType::t1#35 idx#79 ] main:2::assertType:19 [ assertType::t1#35 idx#79 ] main:2::assertType:21 [ assertType::t1#35 idx#79 ] main:2::assertType:23 [ assertType::t1#35 idx#79 ] main:2::assertType:25 [ assertType::t1#35 idx#79 ] main:2::assertType:27 [ assertType::t1#35 idx#79 ] main:2::assertType:29 [ assertType::t1#35 idx#79 ] main:2::assertType:31 [ assertType::t1#35 idx#79 ] main:2::assertType:33 [ assertType::t1#35 idx#79 ] main:2::assertType:35 [ assertType::t1#35 idx#79 ] main:2::assertType:37 [ assertType::t1#35 idx#79 ] main:2::assertType:39 [ assertType::t1#35 idx#79 ] main:2::assertType:41 [ assertType::t1#35 idx#79 ] main:2::assertType:43 [ assertType::t1#35 idx#79 ] main:2::assertType:45 [ assertType::t1#35 idx#79 ] main:2::assertType:47 [ assertType::t1#35 idx#79 ] main:2::assertType:49 [ assertType::t1#35 idx#79 ] main:2::assertType:51 [ assertType::t1#35 idx#79 ] main:2::assertType:53 [ assertType::t1#35 idx#79 ] main:2::assertType:55 [ assertType::t1#35 idx#79 ] main:2::assertType:57 [ assertType::t1#35 idx#79 ] main:2::assertType:59 [ assertType::t1#35 idx#79 ] main:2::assertType:61 [ assertType::t1#35 idx#79 ] main:2::assertType:63 [ assertType::t1#35 idx#79 ] main:2::assertType:65 [ assertType::t1#35 idx#79 ] main:2::assertType:67 [ assertType::t1#35 idx#79 ] main:2::assertType:69 [ assertType::t1#35 idx#79 ] main:2::assertType:71 [ assertType::t1#35 idx#79 ] main:2::assertType:73 [ assertType::t1#35 idx#79 ] ) always clobbers reg byte a -Statement [77] *((const byte*) COLS + (byte) idx#79) ← (const byte) RED [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] main:2::assertType:7 [ assertType::t1#35 idx#79 ] main:2::assertType:9 [ assertType::t1#35 idx#79 ] main:2::assertType:11 [ assertType::t1#35 idx#79 ] main:2::assertType:13 [ assertType::t1#35 idx#79 ] main:2::assertType:15 [ assertType::t1#35 idx#79 ] main:2::assertType:17 [ assertType::t1#35 idx#79 ] main:2::assertType:19 [ assertType::t1#35 idx#79 ] main:2::assertType:21 [ assertType::t1#35 idx#79 ] main:2::assertType:23 [ assertType::t1#35 idx#79 ] main:2::assertType:25 [ assertType::t1#35 idx#79 ] main:2::assertType:27 [ assertType::t1#35 idx#79 ] main:2::assertType:29 [ assertType::t1#35 idx#79 ] main:2::assertType:31 [ assertType::t1#35 idx#79 ] main:2::assertType:33 [ assertType::t1#35 idx#79 ] main:2::assertType:35 [ assertType::t1#35 idx#79 ] main:2::assertType:37 [ assertType::t1#35 idx#79 ] main:2::assertType:39 [ assertType::t1#35 idx#79 ] main:2::assertType:41 [ assertType::t1#35 idx#79 ] main:2::assertType:43 [ assertType::t1#35 idx#79 ] main:2::assertType:45 [ assertType::t1#35 idx#79 ] main:2::assertType:47 [ assertType::t1#35 idx#79 ] main:2::assertType:49 [ assertType::t1#35 idx#79 ] main:2::assertType:51 [ assertType::t1#35 idx#79 ] main:2::assertType:53 [ assertType::t1#35 idx#79 ] main:2::assertType:55 [ assertType::t1#35 idx#79 ] main:2::assertType:57 [ assertType::t1#35 idx#79 ] main:2::assertType:59 [ assertType::t1#35 idx#79 ] main:2::assertType:61 [ assertType::t1#35 idx#79 ] main:2::assertType:63 [ assertType::t1#35 idx#79 ] main:2::assertType:65 [ assertType::t1#35 idx#79 ] main:2::assertType:67 [ assertType::t1#35 idx#79 ] main:2::assertType:69 [ assertType::t1#35 idx#79 ] main:2::assertType:71 [ assertType::t1#35 idx#79 ] main:2::assertType:73 [ assertType::t1#35 idx#79 ] ) always clobbers reg byte a -Statement [78] *((const byte*) SCREEN + (byte) idx#79) ← (byte) assertType::t1#35 [ idx#79 ] ( main:2::assertType:5 [ idx#79 ] main:2::assertType:7 [ idx#79 ] main:2::assertType:9 [ idx#79 ] main:2::assertType:11 [ idx#79 ] main:2::assertType:13 [ idx#79 ] main:2::assertType:15 [ idx#79 ] main:2::assertType:17 [ idx#79 ] main:2::assertType:19 [ idx#79 ] main:2::assertType:21 [ idx#79 ] main:2::assertType:23 [ idx#79 ] main:2::assertType:25 [ idx#79 ] main:2::assertType:27 [ idx#79 ] main:2::assertType:29 [ idx#79 ] main:2::assertType:31 [ idx#79 ] main:2::assertType:33 [ idx#79 ] main:2::assertType:35 [ idx#79 ] main:2::assertType:37 [ idx#79 ] main:2::assertType:39 [ idx#79 ] main:2::assertType:41 [ idx#79 ] main:2::assertType:43 [ idx#79 ] main:2::assertType:45 [ idx#79 ] main:2::assertType:47 [ idx#79 ] main:2::assertType:49 [ idx#79 ] main:2::assertType:51 [ idx#79 ] main:2::assertType:53 [ idx#79 ] main:2::assertType:55 [ idx#79 ] main:2::assertType:57 [ idx#79 ] main:2::assertType:59 [ idx#79 ] main:2::assertType:61 [ idx#79 ] main:2::assertType:63 [ idx#79 ] main:2::assertType:65 [ idx#79 ] main:2::assertType:67 [ idx#79 ] main:2::assertType:69 [ idx#79 ] main:2::assertType:71 [ idx#79 ] main:2::assertType:73 [ idx#79 ] ) always clobbers reg byte a -Statement [81] *((const byte*) COLS + (byte) idx#79) ← (const byte) GREEN [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] main:2::assertType:7 [ assertType::t1#35 idx#79 ] main:2::assertType:9 [ assertType::t1#35 idx#79 ] main:2::assertType:11 [ assertType::t1#35 idx#79 ] main:2::assertType:13 [ assertType::t1#35 idx#79 ] main:2::assertType:15 [ assertType::t1#35 idx#79 ] main:2::assertType:17 [ assertType::t1#35 idx#79 ] main:2::assertType:19 [ assertType::t1#35 idx#79 ] main:2::assertType:21 [ assertType::t1#35 idx#79 ] main:2::assertType:23 [ assertType::t1#35 idx#79 ] main:2::assertType:25 [ assertType::t1#35 idx#79 ] main:2::assertType:27 [ assertType::t1#35 idx#79 ] main:2::assertType:29 [ assertType::t1#35 idx#79 ] main:2::assertType:31 [ assertType::t1#35 idx#79 ] main:2::assertType:33 [ assertType::t1#35 idx#79 ] main:2::assertType:35 [ assertType::t1#35 idx#79 ] main:2::assertType:37 [ assertType::t1#35 idx#79 ] main:2::assertType:39 [ assertType::t1#35 idx#79 ] main:2::assertType:41 [ assertType::t1#35 idx#79 ] main:2::assertType:43 [ assertType::t1#35 idx#79 ] main:2::assertType:45 [ assertType::t1#35 idx#79 ] main:2::assertType:47 [ assertType::t1#35 idx#79 ] main:2::assertType:49 [ assertType::t1#35 idx#79 ] main:2::assertType:51 [ assertType::t1#35 idx#79 ] main:2::assertType:53 [ assertType::t1#35 idx#79 ] main:2::assertType:55 [ assertType::t1#35 idx#79 ] main:2::assertType:57 [ assertType::t1#35 idx#79 ] main:2::assertType:59 [ assertType::t1#35 idx#79 ] main:2::assertType:61 [ assertType::t1#35 idx#79 ] main:2::assertType:63 [ assertType::t1#35 idx#79 ] main:2::assertType:65 [ assertType::t1#35 idx#79 ] main:2::assertType:67 [ assertType::t1#35 idx#79 ] main:2::assertType:69 [ assertType::t1#35 idx#79 ] main:2::assertType:71 [ assertType::t1#35 idx#79 ] main:2::assertType:73 [ assertType::t1#35 idx#79 ] ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN + (byte) idx#79) ← (byte) assertType::t1#35 [ idx#79 ] ( main:2::assertType:5 [ idx#79 ] { } main:2::assertType:7 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ idx#79 ] { } main:2::assertType:25 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ idx#79 ] { } main:2::assertType:49 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a +Statement [81] *((const byte*) COLS + (byte) idx#79) ← (const byte) GREEN [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] { } main:2::assertType:7 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ assertType::t1#35 idx#79 ] { } main:2::assertType:25 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ assertType::t1#35 idx#79 ] { } main:2::assertType:49 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a +Statement [77] *((const byte*) COLS + (byte) idx#79) ← (const byte) RED [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] { } main:2::assertType:7 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ assertType::t1#35 idx#79 ] { } main:2::assertType:25 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ assertType::t1#35 idx#79 ] { } main:2::assertType:49 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN + (byte) idx#79) ← (byte) assertType::t1#35 [ idx#79 ] ( main:2::assertType:5 [ idx#79 ] { } main:2::assertType:7 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ idx#79 ] { } main:2::assertType:25 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ idx#79 ] { } main:2::assertType:49 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a +Statement [81] *((const byte*) COLS + (byte) idx#79) ← (const byte) GREEN [ assertType::t1#35 idx#79 ] ( main:2::assertType:5 [ assertType::t1#35 idx#79 ] { } main:2::assertType:7 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:9 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:11 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:13 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:15 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:17 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:19 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:21 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:23 [ assertType::t1#35 idx#79 ] { } main:2::assertType:25 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:27 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:29 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:31 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:33 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:35 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:37 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:39 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:41 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:43 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:45 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:47 [ assertType::t1#35 idx#79 ] { } main:2::assertType:49 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:51 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:53 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:55 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:57 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:59 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:61 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:63 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:65 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:67 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:69 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:71 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } main:2::assertType:73 [ assertType::t1#35 idx#79 ] { { idx#40 = idx#79 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ assertType::t1#35 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ assertType::t2#35 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ idx#79 idx#40 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 15.4: zp[1]:4 [ idx#79 idx#40 ] -Uplift Scope [assertType] 2: zp[1]:3 [ assertType::t2#35 ] 1: zp[1]:2 [ assertType::t1#35 ] +Uplift Scope [] 158.06: zp[1]:4 [ idx#79 idx#40 ] +Uplift Scope [assertType] 101: zp[1]:3 [ assertType::t2#35 ] 50.5: zp[1]:2 [ assertType::t1#35 ] Uplift Scope [main] Uplifting [] best 739 combination reg byte x [ idx#79 idx#40 ] @@ -2885,12 +2885,12 @@ FINAL SYMBOL TABLE (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#35 reg byte y 1.0 +(byte) assertType::t1#35 reg byte y 50.5 (byte) assertType::t2 -(byte) assertType::t2#35 t2 zp[1]:2 2.0 +(byte) assertType::t2#35 t2 zp[1]:2 101.0 (byte) idx -(byte) idx#40 reg byte x 0.9999999999999993 -(byte) idx#79 reg byte x 14.400000000000007 +(byte) idx#40 reg byte x 6.863636363636364 +(byte) idx#79 reg byte x 151.20000000000002 (void()) main() (label) main::@1 (label) main::@10 diff --git a/src/test/ref/number-conversion.sym b/src/test/ref/number-conversion.sym index 929ce2493..2eb2b6961 100644 --- a/src/test/ref/number-conversion.sym +++ b/src/test/ref/number-conversion.sym @@ -17,12 +17,12 @@ (label) assertType::@3 (label) assertType::@return (byte) assertType::t1 -(byte) assertType::t1#35 reg byte y 1.0 +(byte) assertType::t1#35 reg byte y 50.5 (byte) assertType::t2 -(byte) assertType::t2#35 t2 zp[1]:2 2.0 +(byte) assertType::t2#35 t2 zp[1]:2 101.0 (byte) idx -(byte) idx#40 reg byte x 0.9999999999999993 -(byte) idx#79 reg byte x 14.400000000000007 +(byte) idx#40 reg byte x 6.863636363636364 +(byte) idx#79 reg byte x 151.20000000000002 (void()) main() (label) main::@1 (label) main::@10 diff --git a/src/test/ref/number-inference-sum.log b/src/test/ref/number-inference-sum.log index d45a62114..15123cb24 100644 --- a/src/test/ref/number-inference-sum.log +++ b/src/test/ref/number-inference-sum.log @@ -79,8 +79,8 @@ Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::b2#0 + (by Inferred type updated to byte in (unumber~) main::$4 ← (byte) 0 * (const byte) SIZEOF_WORD Inversing boolean not [7] (bool~) main::$3 ← (word) main::w#0 <= (byte) $ff from [6] (bool~) main::$2 ← (word) main::w#0 > (byte) $ff Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::b2#0 = (byte~) main::$0 -Alias (word) main::w#0 = (byte~) main::$1 +Alias main::b2#0 = main::$0 +Alias main::w#0 = main::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 [5] if((word) main::w#0<=(byte) $ff) goto main::@return Successful SSA optimization Pass2ConditionalJumpSimplification @@ -201,8 +201,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const word*) main::screen) ← (const word) main::w#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::bgcol) ← (const byte) main::RED [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const word*) main::screen) ← (const word) main::w#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::bgcol) ← (const byte) main::RED [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/number-type.log b/src/test/ref/number-type.log index bf3d04cd1..3b98b414e 100644 --- a/src/test/ref/number-type.log +++ b/src/test/ref/number-type.log @@ -649,31 +649,31 @@ testBytes: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] *((const signed byte*) testSBytes::SCREEN) ← (signed byte) -$c [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [10] *((const signed byte*) testSBytes::SCREEN+(byte) 1) ← (signed byte)(number) -6-(number) 6 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [11] *((const signed byte*) testSBytes::SCREEN+(byte) 2) ← (signed byte)(number) -$12+(number) 6 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [12] *((const signed byte*) testSBytes::SCREEN+(byte) 3) ← (signed byte)(number) -$714+(number) $708 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [13] *((const signed byte*) testSBytes::SCREEN+(byte) 4) ← (signed byte)(number) -1-(number) 2-(number) 3-(number) 6 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [14] *((const signed byte*) testSBytes::SCREEN+(byte) 5) ← (signed byte)(number) -2*(number) 6 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [15] *((const signed byte*) testSBytes::SCREEN+(byte) 6) ← (signed byte)(number) -3<<(number) 2 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [16] *((const signed byte*) testSBytes::SCREEN+(byte) 7) ← (signed byte)(number) -$18>>(number) 1 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [17] *((const signed byte*) testSBytes::SCREEN+(byte) 8) ← (signed byte)(number) -4&(number) -9 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [18] *((const signed byte*) testSBytes::SCREEN+(byte) 9) ← (signed byte)(number) -$10|(number) -$fc [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [19] *((const signed byte*) testSBytes::SCREEN+(byte) $a) ← (signed byte)(number) -2-(number) 2*(number) $f/(number) 5 [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [20] *((const signed byte*) testSBytes::SCREEN+(byte) $b) ← (signed byte)(number) $1000-(number) $c [ ] ( main:2::testSBytes:7 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) testBytes::SCREEN) ← (byte) $c [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) testBytes::SCREEN+(byte) 1) ← (byte)(number) 6+(number) 6 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) testBytes::SCREEN+(byte) 2) ← (byte)(number) $12-(number) 6 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) testBytes::SCREEN+(byte) 3) ← (byte)(number) $714-(number) $708 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) testBytes::SCREEN+(byte) 4) ← (byte)(number) 1+(number) 2+(number) 3+(number) 6 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) testBytes::SCREEN+(byte) 5) ← (byte)(number) 2*(number) 6 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) testBytes::SCREEN+(byte) 6) ← (byte)(number) 3<<(number) 2 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) testBytes::SCREEN+(byte) 7) ← (byte)(number) $18>>(number) 1 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) testBytes::SCREEN+(byte) 8) ← (byte)(number) $f&(number) $1c [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) testBytes::SCREEN+(byte) 9) ← (byte)(number) 4|(number) 8 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) testBytes::SCREEN+(byte) $a) ← (byte)(number) 5^(number) 9 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) testBytes::SCREEN+(byte) $b) ← (byte)(number) 2+(number) 2*(number) $f/(number) 5 [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) testBytes::SCREEN+(byte) $c) ← (byte)(number) $1000+(number) $c [ ] ( main:2::testBytes:5 [ ] ) always clobbers reg byte a +Statement [9] *((const signed byte*) testSBytes::SCREEN) ← (signed byte) -$c [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [10] *((const signed byte*) testSBytes::SCREEN+(byte) 1) ← (signed byte)(number) -6-(number) 6 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [11] *((const signed byte*) testSBytes::SCREEN+(byte) 2) ← (signed byte)(number) -$12+(number) 6 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [12] *((const signed byte*) testSBytes::SCREEN+(byte) 3) ← (signed byte)(number) -$714+(number) $708 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [13] *((const signed byte*) testSBytes::SCREEN+(byte) 4) ← (signed byte)(number) -1-(number) 2-(number) 3-(number) 6 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [14] *((const signed byte*) testSBytes::SCREEN+(byte) 5) ← (signed byte)(number) -2*(number) 6 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [15] *((const signed byte*) testSBytes::SCREEN+(byte) 6) ← (signed byte)(number) -3<<(number) 2 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [16] *((const signed byte*) testSBytes::SCREEN+(byte) 7) ← (signed byte)(number) -$18>>(number) 1 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [17] *((const signed byte*) testSBytes::SCREEN+(byte) 8) ← (signed byte)(number) -4&(number) -9 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [18] *((const signed byte*) testSBytes::SCREEN+(byte) 9) ← (signed byte)(number) -$10|(number) -$fc [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [19] *((const signed byte*) testSBytes::SCREEN+(byte) $a) ← (signed byte)(number) -2-(number) 2*(number) $f/(number) 5 [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [20] *((const signed byte*) testSBytes::SCREEN+(byte) $b) ← (signed byte)(number) $1000-(number) $c [ ] ( main:2::testSBytes:7 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) testBytes::SCREEN) ← (byte) $c [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) testBytes::SCREEN+(byte) 1) ← (byte)(number) 6+(number) 6 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) testBytes::SCREEN+(byte) 2) ← (byte)(number) $12-(number) 6 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) testBytes::SCREEN+(byte) 3) ← (byte)(number) $714-(number) $708 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) testBytes::SCREEN+(byte) 4) ← (byte)(number) 1+(number) 2+(number) 3+(number) 6 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) testBytes::SCREEN+(byte) 5) ← (byte)(number) 2*(number) 6 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) testBytes::SCREEN+(byte) 6) ← (byte)(number) 3<<(number) 2 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) testBytes::SCREEN+(byte) 7) ← (byte)(number) $18>>(number) 1 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) testBytes::SCREEN+(byte) 8) ← (byte)(number) $f&(number) $1c [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) testBytes::SCREEN+(byte) 9) ← (byte)(number) 4|(number) 8 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) testBytes::SCREEN+(byte) $a) ← (byte)(number) 5^(number) 9 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) testBytes::SCREEN+(byte) $b) ← (byte)(number) 2+(number) 2*(number) $f/(number) 5 [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) testBytes::SCREEN+(byte) $c) ← (byte)(number) $1000+(number) $c [ ] ( main:2::testBytes:5 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/operator-lohi-problem-1.log b/src/test/ref/operator-lohi-problem-1.log index 8bc2a459c..43397ccd2 100644 --- a/src/test/ref/operator-lohi-problem-1.log +++ b/src/test/ref/operator-lohi-problem-1.log @@ -137,8 +137,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← <(word)(const dword) DVAL/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← <(word)(const dword) DVAL/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/operator-lohi-problem.log b/src/test/ref/operator-lohi-problem.log index 1871a62a6..6fd30e8d8 100644 --- a/src/test/ref/operator-lohi-problem.log +++ b/src/test/ref/operator-lohi-problem.log @@ -74,8 +74,8 @@ Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to dword in (unumber~) main::$1 ← (const dword) main::dw + (byte) 1 Inferred type updated to word in (unumber~) main::$2 ← < (dword~) main::$1 -Alias (word) main::w1#0 = (word~) main::$0 -Alias (word) main::w2#0 = (word~) main::$2 +Alias main::w1#0 = main::$0 +Alias main::w2#0 = main::$2 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (word) main::w1#0 ← < (const dword) main::dw Constant right-side identified [1] (dword~) main::$1 ← (const dword) main::dw + (byte) 1 @@ -210,10 +210,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 3) ← <(const word) main::w2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 4) ← >(const word) main::w2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 3) ← <(const word) main::w2#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 4) ← >(const word) main::w2#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/optimize-unsigned-comparisons.log b/src/test/ref/optimize-unsigned-comparisons.log index 99647ac91..bc91d2228 100644 --- a/src/test/ref/optimize-unsigned-comparisons.log +++ b/src/test/ref/optimize-unsigned-comparisons.log @@ -93,10 +93,10 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [4] (bool~) main::$3 ← *((const byte*) ball_active + (byte) main::i#2) >= (byte) 0 from [3] (bool~) main::$2 ← *((const byte*) ball_active + (byte) main::i#2) < (byte) 0 Inversing boolean not [15] (bool~) main::$1 ← (byte) main::temp#2 >= (byte) 0 from [14] (bool~) main::$0 ← (byte) main::temp#2 < (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#4 -Alias (byte) main::temp#1 = (byte) main::temp#2 (byte) main::temp#3 +Alias main::i#2 = main::i#4 +Alias main::temp#1 = main::temp#2 main::temp#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 [4] if(*((const byte*) ball_active + (byte) main::i#2)>=(byte) 0) goto main::@3 Simple Condition (bool~) main::$4 [8] if((byte) main::i#1!=rangelast(0,7)) goto main::@2 @@ -182,8 +182,8 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 (byte) main::temp Initial phi equivalence classes @@ -254,7 +254,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 223 combination reg byte x [ main::i#2 main::i#1 ] @@ -351,8 +351,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::temp reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/optimize-unsigned-comparisons.sym b/src/test/ref/optimize-unsigned-comparisons.sym index 519fa4a61..ebbfe5048 100644 --- a/src/test/ref/optimize-unsigned-comparisons.sym +++ b/src/test/ref/optimize-unsigned-comparisons.sym @@ -6,8 +6,8 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::temp reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/overlap-allocation-2.log b/src/test/ref/overlap-allocation-2.log index 7c4129b47..c0103728a 100644 --- a/src/test/ref/overlap-allocation-2.log +++ b/src/test/ref/overlap-allocation-2.log @@ -124,10 +124,10 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $14 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) line::$1 ← (byte) line::l#3 + (byte) $14 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) line::l#2 = (byte) line::l#3 -Alias (byte) plot::x#1 = (byte~) line::$1 +Alias main::i#2 = main::i#3 +Alias main::j#2 = main::j#3 +Alias line::l#2 = line::l#3 +Alias plot::x#1 = line::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 Simple Condition (bool~) main::$3 [13] if((byte) main::j#1!=rangelast($a,$12)) goto main::@3 @@ -253,21 +253,21 @@ plot::@return: scope:[plot] from plot VARIABLE REGISTER WEIGHTS (void()) line((byte) line::l) (byte) line::l -(byte) line::l#0 22.0 -(byte) line::l#1 22.0 -(byte) line::l#2 8.666666666666666 +(byte) line::l#0 202.0 +(byte) line::l#1 202.0 +(byte) line::l#2 734.6666666666667 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 11.0 +(byte) main::j#1 151.5 +(byte) main::j#2 101.0 (void()) plot((byte) plot::x) (byte) plot::x -(byte) plot::x#0 4.0 -(byte) plot::x#1 4.0 -(byte) plot::x#2 6.0 +(byte) plot::x#0 2002.0 +(byte) plot::x#1 2002.0 +(byte) plot::x#2 12003.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -425,31 +425,27 @@ plot: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [23] *((const byte*) SCREEN + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) always clobbers reg byte a +Statement [23] *((const byte*) SCREEN + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] { { plot::x#0 = plot::x#2 line::l#2 line::l#0 main::i#2 } } main:2::line:12::plot:18 [ main::j#2 line::l#2 ] { { plot::x#0 = plot::x#2 line::l#2 line::l#1 main::j#2 } } main:2::line:7::plot:20 [ main::i#2 ] { { line::l#0 = line::l#2 main::i#2 } { plot::x#1 = plot::x#2 } } main:2::line:12::plot:20 [ main::j#2 ] { { line::l#1 = line::l#2 main::j#2 } { plot::x#1 = plot::x#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ line::l#2 line::l#0 line::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte) $14 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] main:2::line:12 [ main::j#2 plot::x#1 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SCREEN + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] main:2::line:12::plot:18 [ main::j#2 line::l#2 ] main:2::line:7::plot:20 [ main::i#2 ] main:2::line:12::plot:20 [ main::j#2 ] ) always clobbers reg byte a +Statement [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte) $14 [ plot::x#1 ] ( main:2::line:7 [ main::i#2 plot::x#1 ] { { line::l#0 = line::l#2 main::i#2 } { plot::x#1 = plot::x#2 } } main:2::line:12 [ main::j#2 plot::x#1 ] { { line::l#1 = line::l#2 main::j#2 } { plot::x#1 = plot::x#2 } } ) always clobbers reg byte a +Statement [23] *((const byte*) SCREEN + (byte) plot::x#2) ← (byte) '*' [ ] ( main:2::line:7::plot:18 [ main::i#2 line::l#2 ] { { plot::x#0 = plot::x#2 line::l#2 line::l#0 main::i#2 } } main:2::line:12::plot:18 [ main::j#2 line::l#2 ] { { plot::x#0 = plot::x#2 line::l#2 line::l#1 main::j#2 } } main:2::line:7::plot:20 [ main::i#2 ] { { line::l#0 = line::l#2 main::i#2 } { plot::x#1 = plot::x#2 } } main:2::line:12::plot:20 [ main::j#2 ] { { line::l#1 = line::l#2 main::j#2 } { plot::x#1 = plot::x#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ line::l#2 line::l#0 line::l#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ plot::x#2 plot::x#0 plot::x#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 27.5: zp[1]:3 [ main::j#2 main::j#1 ] -Uplift Scope [line] 52.67: zp[1]:4 [ line::l#2 line::l#0 line::l#1 ] -Uplift Scope [plot] 14: zp[1]:5 [ plot::x#2 plot::x#0 plot::x#1 ] +Uplift Scope [plot] 16,007: zp[1]:5 [ plot::x#2 plot::x#0 plot::x#1 ] +Uplift Scope [line] 1,138.67: zp[1]:4 [ line::l#2 line::l#0 line::l#1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 252.5: zp[1]:3 [ main::j#2 main::j#1 ] Uplift Scope [] -Uplifting [main] best 713 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] -Uplifting [line] best 649 combination reg byte x [ line::l#2 line::l#0 line::l#1 ] -Uplifting [plot] best 640 combination reg byte x [ plot::x#2 plot::x#0 plot::x#1 ] -Uplifting [] best 640 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 560 combination reg byte y [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] -Uplifting [main] best 480 combination reg byte y [ main::j#2 main::j#1 ] +Uplifting [plot] best 704 combination reg byte x [ plot::x#2 plot::x#0 plot::x#1 ] +Uplifting [line] best 640 combination reg byte x [ line::l#2 line::l#0 line::l#1 ] +Uplifting [main] best 480 combination reg byte y [ main::i#2 main::i#1 ] reg byte y [ main::j#2 main::j#1 ] +Uplifting [] best 480 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -631,9 +627,9 @@ FINAL SYMBOL TABLE (label) line::@1 (label) line::@return (byte) line::l -(byte) line::l#0 reg byte x 22.0 -(byte) line::l#1 reg byte x 22.0 -(byte) line::l#2 reg byte x 8.666666666666666 +(byte) line::l#0 reg byte x 202.0 +(byte) line::l#1 reg byte x 202.0 +(byte) line::l#2 reg byte x 734.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -641,17 +637,17 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 reg byte y 11.0 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 reg byte y 101.0 (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte x 4.0 -(byte) plot::x#1 reg byte x 4.0 -(byte) plot::x#2 reg byte x 6.0 +(byte) plot::x#0 reg byte x 2002.0 +(byte) plot::x#1 reg byte x 2002.0 +(byte) plot::x#2 reg byte x 12003.0 reg byte y [ main::i#2 main::i#1 ] reg byte y [ main::j#2 main::j#1 ] diff --git a/src/test/ref/overlap-allocation-2.sym b/src/test/ref/overlap-allocation-2.sym index 329ff24ef..c8b8f51b7 100644 --- a/src/test/ref/overlap-allocation-2.sym +++ b/src/test/ref/overlap-allocation-2.sym @@ -6,9 +6,9 @@ (label) line::@1 (label) line::@return (byte) line::l -(byte) line::l#0 reg byte x 22.0 -(byte) line::l#1 reg byte x 22.0 -(byte) line::l#2 reg byte x 8.666666666666666 +(byte) line::l#0 reg byte x 202.0 +(byte) line::l#1 reg byte x 202.0 +(byte) line::l#2 reg byte x 734.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -16,17 +16,17 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 reg byte y 11.0 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 reg byte y 101.0 (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte x 4.0 -(byte) plot::x#1 reg byte x 4.0 -(byte) plot::x#2 reg byte x 6.0 +(byte) plot::x#0 reg byte x 2002.0 +(byte) plot::x#1 reg byte x 2002.0 +(byte) plot::x#2 reg byte x 12003.0 reg byte y [ main::i#2 main::i#1 ] reg byte y [ main::j#2 main::j#1 ] diff --git a/src/test/ref/overlap-allocation.log b/src/test/ref/overlap-allocation.log index dd58e953a..de1fab004 100644 --- a/src/test/ref/overlap-allocation.log +++ b/src/test/ref/overlap-allocation.log @@ -112,9 +112,9 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::j#2 = (byte) main::j#3 -Alias (byte) main::k#2 = (byte) main::k#3 +Alias main::i#2 = main::i#3 +Alias main::j#2 = main::j#3 +Alias main::k#2 = main::k#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Simple Condition (bool~) main::$3 [13] if((byte) main::j#1!=rangelast(0,$a)) goto main::@3 @@ -247,20 +247,20 @@ plot::@return: scope:[plot] from plot VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 11.0 +(byte) main::j#1 151.5 +(byte) main::j#2 101.0 (byte) main::k -(byte) main::k#1 16.5 -(byte) main::k#2 11.0 +(byte) main::k#1 151.5 +(byte) main::k#2 101.0 (void()) plot((byte) plot::x) (byte) plot::x -(byte) plot::x#0 22.0 -(byte) plot::x#1 22.0 -(byte) plot::x#2 22.0 -(byte) plot::x#3 35.0 +(byte) plot::x#0 202.0 +(byte) plot::x#1 202.0 +(byte) plot::x#2 202.0 +(byte) plot::x#3 1304.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -419,19 +419,19 @@ plot: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [22] *((const byte*) SCREEN + (byte) plot::x#3) ← (byte) '*' [ ] ( main:2::plot:7 [ main::i#2 ] main:2::plot:12 [ main::j#2 ] main:2::plot:17 [ main::k#2 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN + (byte) plot::x#3) ← (byte) '*' [ ] ( main:2::plot:7 [ main::i#2 ] { { plot::x#0 = plot::x#3 main::i#2 } } main:2::plot:12 [ main::j#2 ] { { plot::x#1 = plot::x#3 main::j#2 } } main:2::plot:17 [ main::k#2 ] { { plot::x#2 = plot::x#3 main::k#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::k#2 main::k#1 ] -Statement [22] *((const byte*) SCREEN + (byte) plot::x#3) ← (byte) '*' [ ] ( main:2::plot:7 [ main::i#2 ] main:2::plot:12 [ main::j#2 ] main:2::plot:17 [ main::k#2 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN + (byte) plot::x#3) ← (byte) '*' [ ] ( main:2::plot:7 [ main::i#2 ] { { plot::x#0 = plot::x#3 main::i#2 } } main:2::plot:12 [ main::j#2 ] { { plot::x#1 = plot::x#3 main::j#2 } } main:2::plot:17 [ main::k#2 ] { { plot::x#2 = plot::x#3 main::k#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::k#2 main::k#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plot] 101: zp[1]:5 [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 27.5: zp[1]:3 [ main::j#2 main::j#1 ] 27.5: zp[1]:4 [ main::k#2 main::k#1 ] +Uplift Scope [plot] 1,910: zp[1]:5 [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 252.5: zp[1]:3 [ main::j#2 main::j#1 ] 252.5: zp[1]:4 [ main::k#2 main::k#1 ] Uplift Scope [] Uplifting [plot] best 886 combination reg byte x [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] @@ -621,21 +621,21 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 11.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 101.0 (byte) main::k -(byte) main::k#1 reg byte x 16.5 -(byte) main::k#2 reg byte x 11.0 +(byte) main::k#1 reg byte x 151.5 +(byte) main::k#2 reg byte x 101.0 (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte x 22.0 -(byte) plot::x#1 reg byte x 22.0 -(byte) plot::x#2 reg byte x 22.0 -(byte) plot::x#3 reg byte x 35.0 +(byte) plot::x#0 reg byte x 202.0 +(byte) plot::x#1 reg byte x 202.0 +(byte) plot::x#2 reg byte x 202.0 +(byte) plot::x#3 reg byte x 1304.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/overlap-allocation.sym b/src/test/ref/overlap-allocation.sym index ab4c873ef..c53a8d976 100644 --- a/src/test/ref/overlap-allocation.sym +++ b/src/test/ref/overlap-allocation.sym @@ -11,21 +11,21 @@ (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 11.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 101.0 (byte) main::k -(byte) main::k#1 reg byte x 16.5 -(byte) main::k#2 reg byte x 11.0 +(byte) main::k#1 reg byte x 151.5 +(byte) main::k#2 reg byte x 101.0 (void()) plot((byte) plot::x) (label) plot::@return (byte) plot::x -(byte) plot::x#0 reg byte x 22.0 -(byte) plot::x#1 reg byte x 22.0 -(byte) plot::x#2 reg byte x 22.0 -(byte) plot::x#3 reg byte x 35.0 +(byte) plot::x#0 reg byte x 202.0 +(byte) plot::x#1 reg byte x 202.0 +(byte) plot::x#2 reg byte x 202.0 +(byte) plot::x#3 reg byte x 1304.0 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/parse-negated-struct-ref.log b/src/test/ref/parse-negated-struct-ref.log index 9614ae164..1e667f4c6 100644 --- a/src/test/ref/parse-negated-struct-ref.log +++ b/src/test/ref/parse-negated-struct-ref.log @@ -178,8 +178,8 @@ main: { aa: .byte 1 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] if((byte) 0!=*((byte*)(const struct A*) main::a)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] if((byte) 0!=*((byte*)(const struct A*) main::a)) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[1] [ aa ] : mem[1] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/plasma-center.asm b/src/test/ref/plasma-center.asm index 802ef6cba..f3b84e51d 100644 --- a/src/test/ref/plasma-center.asm +++ b/src/test/ref/plasma-center.asm @@ -283,10 +283,9 @@ make_plasma_charset: { rts __b2: // (byte) make_plasma_charset::s#1 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#5 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#13 (byte*) heap_head#2 -Alias (byte) bsearch16u::num#3 = (byte) bsearch16u::num#4 (byte) bsearch16u::num#8 (byte) bsearch16u::num#6 -Alias (word*) bsearch16u::items#2 = (word*) bsearch16u::items#6 (word*) bsearch16u::items#3 (word*) bsearch16u::items#9 (word*) bsearch16u::items#4 (word*~) bsearch16u::$3 (word*) bsearch16u::items#5 -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#3 (word) bsearch16u::key#2 (word) bsearch16u::key#7 (word) bsearch16u::key#6 -Alias (word*) bsearch16u::pivot#0 = (word*~) bsearch16u::$7 (word*) bsearch16u::pivot#3 (word*) bsearch16u::pivot#1 (word*) bsearch16u::return#0 (word*) bsearch16u::pivot#2 -Alias (signed word) bsearch16u::result#0 = (signed word~) bsearch16u::$10 (signed word) bsearch16u::result#1 -Alias (word*) bsearch16u::return#1 = (word*) bsearch16u::return#4 -Alias (word*) bsearch16u::items#0 = (word*~) bsearch16u::$15 -Alias (word*~) bsearch16u::$2 = (word*~) bsearch16u::$1 -Alias (word*) bsearch16u::return#2 = (word*~) bsearch16u::$4 -Alias (byte*) heap_head#0 = (byte*) heap_head#37 (byte*) heap_head#32 (byte*) heap_head#23 -Alias (word) malloc::size#0 = (byte~) init_squares::$0 -Alias (void*) malloc::return#2 = (void*) malloc::return#6 -Alias (byte) NUM_SQUARES#14 = (byte) NUM_SQUARES#6 -Alias (byte*) heap_head#14 = (byte*) heap_head#3 -Alias (word) init_squares::sqr#2 = (word) init_squares::sqr#3 -Alias (word*) init_squares::squares#2 = (word*) init_squares::squares#3 -Alias (byte) init_squares::i#2 = (byte) init_squares::i#3 -Alias (byte) NUM_SQUARES#13 = (byte) NUM_SQUARES#7 -Alias (byte*) heap_head#15 = (byte*) heap_head#31 (byte*) heap_head#25 (byte*) heap_head#4 -Alias (word*) SQUARES#17 = (word*) SQUARES#26 (word*) SQUARES#8 (word*) SQUARES#2 -Alias (word) sqr::return#0 = (word) sqr::return#4 (word) sqr::return#1 -Alias (word*) bsearch16u::return#3 = (word*) bsearch16u::return#5 -Alias (word*) SQUARES#10 = (word*) SQUARES#11 -Alias (word*) sqrt::found#0 = (word*~) sqrt::$0 -Alias (byte) sqrt::return#0 = (byte) sqrt::sq#0 (byte~) sqrt::$2 (byte) sqrt::return#3 (byte) sqrt::return#1 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte) NUM_SQUARES#0 = (byte) NUM_SQUARES#41 (byte) NUM_SQUARES#37 (byte) NUM_SQUARES#32 (byte) NUM_SQUARES#27 (byte) NUM_SQUARES#24 (byte) NUM_SQUARES#19 -Alias (word*) SQUARES#0 = (word*) SQUARES#47 (word*) SQUARES#45 (word*) SQUARES#42 (word*) SQUARES#37 (word*) SQUARES#34 (word*) SQUARES#25 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#34 (byte*) print_char_cursor#41 (byte*) print_screen#12 (byte*) print_line_cursor#30 (byte*) print_char_cursor#37 (byte*) print_screen#11 (byte*) print_line_cursor#27 (byte*) print_char_cursor#35 (byte*) print_screen#10 (byte*) print_line_cursor#24 (byte*) print_char_cursor#32 (byte*) print_screen#9 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#8 -Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#13 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 -Alias (void*) malloc::return#3 = (void*) malloc::return#7 -Alias (byte*) heap_head#16 = (byte*) heap_head#5 -Alias (void*) malloc::return#4 = (void*) malloc::return#8 -Alias (byte*) SCREEN_DIST#0 = (byte*) SCREEN_DIST#12 (byte*) SCREEN_DIST#8 (byte*) SCREEN_DIST#3 -Alias (byte*) heap_head#17 = (byte*) heap_head#6 (byte*) heap_head#36 (byte*) heap_head#30 -Alias (byte*) SCREEN_ANGLE#1 = (byte*) SCREEN_ANGLE#3 (byte*) SCREEN_ANGLE#16 (byte*) SCREEN_ANGLE#13 (byte*) SCREEN_ANGLE#9 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#25 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#33 -Alias (byte*) print_screen#5 = (byte*) print_screen#6 (byte*) print_screen#7 -Alias (byte) sin_offset_x#19 = (byte) sin_offset_x#29 (byte) sin_offset_x#30 (byte) sin_offset_x#27 (byte) sin_offset_x#23 -Alias (byte) sin_offset_y#19 = (byte) sin_offset_y#29 (byte) sin_offset_y#30 (byte) sin_offset_y#27 (byte) sin_offset_y#23 -Alias (byte*) SCREEN_DIST#1 = (byte*) SCREEN_DIST#18 (byte*) SCREEN_DIST#16 (byte*) SCREEN_DIST#13 (byte*) SCREEN_DIST#9 -Alias (byte) NUM_SQUARES#1 = (byte) NUM_SQUARES#9 (byte) NUM_SQUARES#33 (byte) NUM_SQUARES#25 (byte) NUM_SQUARES#20 -Alias (byte*) heap_head#18 = (byte*) heap_head#7 (byte*) heap_head#42 (byte*) heap_head#38 (byte*) heap_head#33 -Alias (word*) SQUARES#12 = (word*) SQUARES#3 (word*) SQUARES#43 (word*) SQUARES#35 (word*) SQUARES#27 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#27 -Alias (byte) sin_offset_x#14 = (byte) sin_offset_x#16 (byte) sin_offset_x#9 (byte) sin_offset_x#2 -Alias (byte) sin_offset_y#14 = (byte) sin_offset_y#16 (byte) sin_offset_y#9 (byte) sin_offset_y#2 -Alias (byte*) SCREEN_ANGLE#10 = (byte*) SCREEN_ANGLE#4 (byte*) SCREEN_ANGLE#7 (byte*) SCREEN_ANGLE#14 (byte*) SCREEN_ANGLE#11 (byte*) SCREEN_ANGLE#8 (byte*) SCREEN_ANGLE#5 (byte*) SCREEN_ANGLE#18 (byte*) SCREEN_ANGLE#17 (byte*) SCREEN_ANGLE#15 -Alias (byte*) SCREEN_DIST#10 = (byte*) SCREEN_DIST#4 (byte*) SCREEN_DIST#6 (byte*) SCREEN_DIST#14 (byte*) SCREEN_DIST#11 (byte*) SCREEN_DIST#7 (byte*) SCREEN_DIST#5 (byte*) SCREEN_DIST#19 (byte*) SCREEN_DIST#17 (byte*) SCREEN_DIST#15 -Alias (byte) NUM_SQUARES#10 = (byte) NUM_SQUARES#48 (byte) NUM_SQUARES#17 (byte) NUM_SQUARES#47 (byte) NUM_SQUARES#46 (byte) NUM_SQUARES#44 (byte) NUM_SQUARES#42 (byte) NUM_SQUARES#38 (byte) NUM_SQUARES#34 (byte) NUM_SQUARES#26 (byte) NUM_SQUARES#21 (byte) NUM_SQUARES#2 -Alias (byte*) heap_head#19 = (byte*) heap_head#58 (byte*) heap_head#27 (byte*) heap_head#57 (byte*) heap_head#56 (byte*) heap_head#54 (byte*) heap_head#50 (byte*) heap_head#46 (byte*) heap_head#43 (byte*) heap_head#39 (byte*) heap_head#34 (byte*) heap_head#8 -Alias (word*) SQUARES#13 = (word*) SQUARES#52 (word*) SQUARES#22 (word*) SQUARES#51 (word*) SQUARES#50 (word*) SQUARES#49 (word*) SQUARES#48 (word*) SQUARES#46 (word*) SQUARES#44 (word*) SQUARES#36 (word*) SQUARES#28 (word*) SQUARES#4 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#48 (byte*) print_line_cursor#15 (byte*) print_line_cursor#46 (byte*) print_line_cursor#43 (byte*) print_line_cursor#40 (byte*) print_line_cursor#38 (byte*) print_line_cursor#35 (byte*) print_line_cursor#31 (byte*) print_line_cursor#26 (byte*) print_line_cursor#21 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#22 (byte*) print_char_cursor#52 (byte*) print_char_cursor#50 (byte*) print_char_cursor#47 (byte*) print_char_cursor#44 (byte*) print_char_cursor#42 (byte*) print_char_cursor#38 (byte*) print_char_cursor#34 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 -Alias (byte) sin_offset_x#0 = (byte) sin_offset_x#7 (byte) sin_offset_x#24 (byte) sin_offset_x#21 (byte) sin_offset_x#15 -Alias (byte) sin_offset_y#0 = (byte) sin_offset_y#7 (byte) sin_offset_y#24 (byte) sin_offset_y#21 (byte) sin_offset_y#15 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$5 -Alias (byte) sin_offset_x#1 = (byte) sin_offset_x#8 (byte) sin_offset_x#28 (byte) sin_offset_x#25 (byte) sin_offset_x#20 -Alias (byte) sin_offset_y#1 = (byte) sin_offset_y#8 (byte) sin_offset_y#28 (byte) sin_offset_y#25 (byte) sin_offset_y#20 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 -Alias (byte*) SCREEN_ANGLE#0 = (byte*) SCREEN_ANGLE#12 (byte*) SCREEN_ANGLE#6 -Alias (byte*) doplasma::sin_x#0 = (byte*~) doplasma::$0 -Alias (byte*) doplasma::sin_y#0 = (byte*~) doplasma::$1 -Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#4 -Alias (byte*) doplasma::angle#2 = (byte*) doplasma::angle#3 -Alias (byte*) doplasma::dist#2 = (byte*) doplasma::dist#3 -Alias (byte) doplasma::y#2 = (byte) doplasma::y#3 -Alias (byte) sin_offset_x#11 = (byte) sin_offset_x#17 (byte) sin_offset_x#22 -Alias (byte) sin_offset_y#11 = (byte) sin_offset_y#17 (byte) sin_offset_y#22 -Alias (byte*) doplasma::sin_x#1 = (byte*) doplasma::sin_x#3 -Alias (byte*) doplasma::sin_y#1 = (byte*) doplasma::sin_y#3 -Alias (byte) sin_offset_x#12 = (byte) sin_offset_x#4 (byte) sin_offset_x#5 -Alias (byte) sin_offset_y#12 = (byte) sin_offset_y#4 (byte) sin_offset_y#5 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 -Alias (byte*) init_dist_screen::screen#1 = (byte*) init_dist_screen::screen#2 (byte*) init_dist_screen::screen_topline#0 -Alias (byte) NUM_SQUARES#3 = (byte) NUM_SQUARES#45 -Alias (byte*) heap_head#20 = (byte*) heap_head#9 -Alias (word*) SQUARES#14 = (word*) SQUARES#5 -Alias (byte*) init_dist_screen::screen_bottomline#0 = (byte*~) init_dist_screen::$1 -Alias (byte) init_dist_screen::y2#0 = (byte~) init_dist_screen::$2 (byte) init_dist_screen::y2#1 (byte) init_dist_screen::y2#2 -Alias (word*) SQUARES#29 = (word*) SQUARES#38 (word*) SQUARES#30 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#14 (byte*) init_dist_screen::screen_topline#12 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#14 (byte*) init_dist_screen::screen_bottomline#12 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#9 (byte) init_dist_screen::y#2 -Alias (byte) NUM_SQUARES#39 = (byte) NUM_SQUARES#43 (byte) NUM_SQUARES#40 -Alias (byte*) heap_head#47 = (byte*) heap_head#51 (byte*) heap_head#48 -Alias (byte~) init_dist_screen::$7 = (byte~) init_dist_screen::$6 -Alias (byte~) init_dist_screen::$5 = (byte~) init_dist_screen::$4 -Alias (byte) init_dist_screen::yd#0 = (byte~) init_dist_screen::$8 -Alias (word) sqr::return#2 = (word) sqr::return#5 -Alias (byte*) init_dist_screen::screen_topline#6 = (byte*) init_dist_screen::screen_topline#8 -Alias (byte*) init_dist_screen::screen_bottomline#6 = (byte*) init_dist_screen::screen_bottomline#8 -Alias (byte) init_dist_screen::y#5 = (byte) init_dist_screen::y#7 -Alias (byte) NUM_SQUARES#28 = (byte) NUM_SQUARES#35 -Alias (byte*) heap_head#40 = (byte*) heap_head#44 -Alias (word*) SQUARES#19 = (word*) SQUARES#39 -Alias (word) init_dist_screen::yds#0 = (word~) init_dist_screen::$9 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#3 (byte) init_dist_screen::x#7 (byte) init_dist_screen::x#8 -Alias (word*) SQUARES#15 = (word*) SQUARES#41 (word*) SQUARES#31 (word*) SQUARES#24 (word*) SQUARES#32 (word*) SQUARES#33 (word*) SQUARES#6 -Alias (word) init_dist_screen::yds#3 = (word) init_dist_screen::yds#5 (word) init_dist_screen::yds#6 (word) init_dist_screen::yds#4 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#36 (byte) NUM_SQUARES#22 (byte) NUM_SQUARES#18 (byte) NUM_SQUARES#30 (byte) NUM_SQUARES#31 (byte) NUM_SQUARES#4 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#13 (byte*) init_dist_screen::screen_topline#4 (byte*) init_dist_screen::screen_topline#2 (byte*) init_dist_screen::screen_topline#9 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#13 (byte*) init_dist_screen::screen_bottomline#4 (byte*) init_dist_screen::screen_bottomline#2 (byte*) init_dist_screen::screen_bottomline#9 -Alias (byte) init_dist_screen::xb#5 = (byte) init_dist_screen::xb#7 (byte) init_dist_screen::xb#8 (byte) init_dist_screen::xb#6 -Alias (byte) init_dist_screen::y#12 = (byte) init_dist_screen::y#14 (byte) init_dist_screen::y#4 (byte) init_dist_screen::y#3 (byte) init_dist_screen::y#13 -Alias (byte*) heap_head#10 = (byte*) heap_head#55 (byte*) heap_head#35 (byte*) heap_head#29 (byte*) heap_head#52 (byte*) heap_head#53 (byte*) heap_head#21 -Alias (byte) init_dist_screen::x2#0 = (byte~) init_dist_screen::$11 (byte) init_dist_screen::x2#1 (byte) init_dist_screen::x2#2 -Alias (byte~) init_dist_screen::$16 = (byte~) init_dist_screen::$15 -Alias (byte~) init_dist_screen::$14 = (byte~) init_dist_screen::$13 -Alias (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$17 -Alias (word) sqr::return#3 = (word) sqr::return#6 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#2 (word) init_dist_screen::yds#7 -Alias (word*) SQUARES#18 = (word*) SQUARES#20 (word*) SQUARES#40 -Alias (byte) NUM_SQUARES#15 = (byte) NUM_SQUARES#23 (byte) NUM_SQUARES#29 -Alias (byte*) init_dist_screen::screen_topline#3 = (byte*) init_dist_screen::screen_topline#5 (byte*) init_dist_screen::screen_topline#7 -Alias (byte) init_dist_screen::x#4 = (byte) init_dist_screen::x#5 (byte) init_dist_screen::x#6 -Alias (byte*) init_dist_screen::screen_bottomline#3 = (byte*) init_dist_screen::screen_bottomline#5 (byte*) init_dist_screen::screen_bottomline#7 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#3 (byte) init_dist_screen::xb#4 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#8 (byte) init_dist_screen::y#6 -Alias (byte*) heap_head#41 = (byte*) heap_head#45 (byte*) heap_head#49 -Alias (word) init_dist_screen::xds#0 = (word~) init_dist_screen::$18 -Alias (word) init_dist_screen::ds#0 = (word~) init_dist_screen::$19 -Alias (byte) sqrt::return#2 = (byte) sqrt::return#4 -Alias (byte) init_dist_screen::d#0 = (byte~) init_dist_screen::$20 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#29 -Alias (byte*) make_plasma_charset::charset#12 = (byte*) make_plasma_charset::charset#13 (byte*) make_plasma_charset::charset#16 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#7 -Alias (word) make_plasma_charset::c#2 = (word) make_plasma_charset::c#3 -Alias (byte*) make_plasma_charset::charset#10 = (byte*) make_plasma_charset::charset#8 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 (byte*) print_char_cursor#24 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#17 (byte*) print_line_cursor#6 -Alias (word) make_plasma_charset::c#11 = (word) make_plasma_charset::c#7 (word) make_plasma_charset::c#4 (word) make_plasma_charset::c#12 (word) make_plasma_charset::c#9 -Alias (byte) make_plasma_charset::i#2 = (byte) make_plasma_charset::i#6 -Alias (byte*) make_plasma_charset::charset#14 = (byte*) make_plasma_charset::charset#4 (byte*) make_plasma_charset::charset#5 (byte*) make_plasma_charset::charset#15 (byte*) make_plasma_charset::charset#17 -Alias (byte) make_plasma_charset::s#5 = (byte) make_plasma_charset::s#6 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#36 (byte*) print_char_cursor#31 -Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#32 (byte*) print_line_cursor#29 (byte*) print_line_cursor#33 -Alias (byte) make_plasma_charset::s#1 = (byte) make_plasma_charset::s#2 (byte) make_plasma_charset::s#3 (byte) make_plasma_charset::s#8 (byte) make_plasma_charset::s#7 -Alias (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#6 (byte) make_plasma_charset::ii#5 (byte) make_plasma_charset::ii#4 -Alias (byte) make_plasma_charset::b#2 = (byte) make_plasma_charset::b#7 (byte) make_plasma_charset::b#4 (byte) make_plasma_charset::b#5 (byte) make_plasma_charset::b#3 -Alias (word) make_plasma_charset::c#13 = (word) make_plasma_charset::c#15 (word) make_plasma_charset::c#8 (word) make_plasma_charset::c#14 (word) make_plasma_charset::c#5 -Alias (byte) make_plasma_charset::i#3 = (byte) make_plasma_charset::i#9 (byte) make_plasma_charset::i#4 (byte) make_plasma_charset::i#8 (byte) make_plasma_charset::i#7 -Alias (byte*) make_plasma_charset::charset#1 = (byte*) make_plasma_charset::charset#9 (byte*) make_plasma_charset::charset#2 (byte*) make_plasma_charset::charset#7 (byte*) make_plasma_charset::charset#6 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#43 (byte*) print_char_cursor#49 (byte*) print_char_cursor#48 -Alias (byte*) print_line_cursor#37 = (byte*) print_line_cursor#47 (byte*) print_line_cursor#39 (byte*) print_line_cursor#45 (byte*) print_line_cursor#44 -Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#8 -Alias (byte) sin_offset_x#18 = (byte) sin_offset_x#3 -Alias (byte) sin_offset_y#18 = (byte) sin_offset_y#3 -Alias (byte) NUM_SQUARES#12 = (byte) NUM_SQUARES#5 -Alias (byte*) heap_head#11 = (byte*) heap_head#22 -Alias (word*) SQUARES#16 = (word*) SQUARES#7 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#19 -Alias (byte) sin_offset_x#13 = (byte) sin_offset_x#6 -Alias (byte) sin_offset_y#13 = (byte) sin_offset_y#6 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#5 malloc::return#1 +Alias heap_head#1 = heap_head#13 heap_head#2 +Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 +Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 +Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 +Alias bsearch16u::pivot#0 = bsearch16u::$7 bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 +Alias bsearch16u::result#0 = bsearch16u::$10 bsearch16u::result#1 +Alias bsearch16u::return#1 = bsearch16u::return#4 +Alias bsearch16u::items#0 = bsearch16u::$15 +Alias bsearch16u::$2 = bsearch16u::$1 +Alias bsearch16u::return#2 = bsearch16u::$4 +Alias heap_head#0 = heap_head#37 heap_head#32 heap_head#23 +Alias malloc::size#0 = init_squares::$0 +Alias malloc::return#2 = malloc::return#6 +Alias NUM_SQUARES#14 = NUM_SQUARES#6 +Alias heap_head#14 = heap_head#3 +Alias init_squares::sqr#2 = init_squares::sqr#3 +Alias init_squares::squares#2 = init_squares::squares#3 +Alias init_squares::i#2 = init_squares::i#3 +Alias NUM_SQUARES#13 = NUM_SQUARES#7 +Alias heap_head#15 = heap_head#31 heap_head#25 heap_head#4 +Alias SQUARES#17 = SQUARES#26 SQUARES#8 SQUARES#2 +Alias sqr::return#0 = sqr::return#4 sqr::return#1 +Alias bsearch16u::return#3 = bsearch16u::return#5 +Alias SQUARES#10 = SQUARES#11 +Alias sqrt::found#0 = sqrt::$0 +Alias sqrt::return#0 = sqrt::sq#0 sqrt::$2 sqrt::return#3 sqrt::return#1 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias NUM_SQUARES#0 = NUM_SQUARES#41 NUM_SQUARES#37 NUM_SQUARES#32 NUM_SQUARES#27 NUM_SQUARES#24 NUM_SQUARES#19 +Alias SQUARES#0 = SQUARES#47 SQUARES#45 SQUARES#42 SQUARES#37 SQUARES#34 SQUARES#25 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#34 print_char_cursor#41 print_screen#12 print_line_cursor#30 print_char_cursor#37 print_screen#11 print_line_cursor#27 print_char_cursor#35 print_screen#10 print_line_cursor#24 print_char_cursor#32 print_screen#9 print_line_cursor#18 print_char_cursor#25 print_screen#8 +Alias print_char_cursor#1 = print_char_cursor#12 print_char_cursor#2 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#3 print_line_cursor#8 print_char_cursor#13 print_line_cursor#2 print_char_cursor#4 +Alias sid_rnd::return#0 = sid_rnd::return#3 sid_rnd::return#1 +Alias malloc::return#3 = malloc::return#7 +Alias heap_head#16 = heap_head#5 +Alias malloc::return#4 = malloc::return#8 +Alias SCREEN_DIST#0 = SCREEN_DIST#12 SCREEN_DIST#8 SCREEN_DIST#3 +Alias heap_head#17 = heap_head#6 heap_head#36 heap_head#30 +Alias SCREEN_ANGLE#1 = SCREEN_ANGLE#3 SCREEN_ANGLE#16 SCREEN_ANGLE#13 SCREEN_ANGLE#9 +Alias print_line_cursor#14 = print_line_cursor#19 print_line_cursor#25 +Alias print_char_cursor#21 = print_char_cursor#26 print_char_cursor#33 +Alias print_screen#5 = print_screen#6 print_screen#7 +Alias sin_offset_x#19 = sin_offset_x#29 sin_offset_x#30 sin_offset_x#27 sin_offset_x#23 +Alias sin_offset_y#19 = sin_offset_y#29 sin_offset_y#30 sin_offset_y#27 sin_offset_y#23 +Alias SCREEN_DIST#1 = SCREEN_DIST#18 SCREEN_DIST#16 SCREEN_DIST#13 SCREEN_DIST#9 +Alias NUM_SQUARES#1 = NUM_SQUARES#9 NUM_SQUARES#33 NUM_SQUARES#25 NUM_SQUARES#20 +Alias heap_head#18 = heap_head#7 heap_head#42 heap_head#38 heap_head#33 +Alias SQUARES#12 = SQUARES#3 SQUARES#43 SQUARES#35 SQUARES#27 +Alias print_line_cursor#20 = print_line_cursor#3 print_line_cursor#9 +Alias print_char_cursor#14 = print_char_cursor#5 print_char_cursor#27 +Alias sin_offset_x#14 = sin_offset_x#16 sin_offset_x#9 sin_offset_x#2 +Alias sin_offset_y#14 = sin_offset_y#16 sin_offset_y#9 sin_offset_y#2 +Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#4 SCREEN_ANGLE#7 SCREEN_ANGLE#14 SCREEN_ANGLE#11 SCREEN_ANGLE#8 SCREEN_ANGLE#5 SCREEN_ANGLE#18 SCREEN_ANGLE#17 SCREEN_ANGLE#15 +Alias SCREEN_DIST#10 = SCREEN_DIST#4 SCREEN_DIST#6 SCREEN_DIST#14 SCREEN_DIST#11 SCREEN_DIST#7 SCREEN_DIST#5 SCREEN_DIST#19 SCREEN_DIST#17 SCREEN_DIST#15 +Alias NUM_SQUARES#10 = NUM_SQUARES#48 NUM_SQUARES#17 NUM_SQUARES#47 NUM_SQUARES#46 NUM_SQUARES#44 NUM_SQUARES#42 NUM_SQUARES#38 NUM_SQUARES#34 NUM_SQUARES#26 NUM_SQUARES#21 NUM_SQUARES#2 +Alias heap_head#19 = heap_head#58 heap_head#27 heap_head#57 heap_head#56 heap_head#54 heap_head#50 heap_head#46 heap_head#43 heap_head#39 heap_head#34 heap_head#8 +Alias SQUARES#13 = SQUARES#52 SQUARES#22 SQUARES#51 SQUARES#50 SQUARES#49 SQUARES#48 SQUARES#46 SQUARES#44 SQUARES#36 SQUARES#28 SQUARES#4 +Alias print_line_cursor#10 = print_line_cursor#48 print_line_cursor#15 print_line_cursor#46 print_line_cursor#43 print_line_cursor#40 print_line_cursor#38 print_line_cursor#35 print_line_cursor#31 print_line_cursor#26 print_line_cursor#21 print_line_cursor#4 +Alias print_char_cursor#15 = print_char_cursor#53 print_char_cursor#22 print_char_cursor#52 print_char_cursor#50 print_char_cursor#47 print_char_cursor#44 print_char_cursor#42 print_char_cursor#38 print_char_cursor#34 print_char_cursor#28 print_char_cursor#6 +Alias sin_offset_x#0 = sin_offset_x#7 sin_offset_x#24 sin_offset_x#21 sin_offset_x#15 +Alias sin_offset_y#0 = sin_offset_y#7 sin_offset_y#24 sin_offset_y#21 sin_offset_y#15 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$5 +Alias sin_offset_x#1 = sin_offset_x#8 sin_offset_x#28 sin_offset_x#25 sin_offset_x#20 +Alias sin_offset_y#1 = sin_offset_y#8 sin_offset_y#28 sin_offset_y#25 sin_offset_y#20 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 +Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#12 SCREEN_ANGLE#6 +Alias doplasma::sin_x#0 = doplasma::$0 +Alias doplasma::sin_y#0 = doplasma::$1 +Alias doplasma::screen#3 = doplasma::screen#4 +Alias doplasma::angle#2 = doplasma::angle#3 +Alias doplasma::dist#2 = doplasma::dist#3 +Alias doplasma::y#2 = doplasma::y#3 +Alias sin_offset_x#11 = sin_offset_x#17 sin_offset_x#22 +Alias sin_offset_y#11 = sin_offset_y#17 sin_offset_y#22 +Alias doplasma::sin_x#1 = doplasma::sin_x#3 +Alias doplasma::sin_y#1 = doplasma::sin_y#3 +Alias sin_offset_x#12 = sin_offset_x#4 sin_offset_x#5 +Alias sin_offset_y#12 = sin_offset_y#4 sin_offset_y#5 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 +Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 +Alias NUM_SQUARES#3 = NUM_SQUARES#45 +Alias heap_head#20 = heap_head#9 +Alias SQUARES#14 = SQUARES#5 +Alias init_dist_screen::screen_bottomline#0 = init_dist_screen::$1 +Alias init_dist_screen::y2#0 = init_dist_screen::$2 init_dist_screen::y2#1 init_dist_screen::y2#2 +Alias SQUARES#29 = SQUARES#38 SQUARES#30 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 +Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 +Alias NUM_SQUARES#39 = NUM_SQUARES#43 NUM_SQUARES#40 +Alias heap_head#47 = heap_head#51 heap_head#48 +Alias init_dist_screen::$7 = init_dist_screen::$6 +Alias init_dist_screen::$5 = init_dist_screen::$4 +Alias init_dist_screen::yd#0 = init_dist_screen::$8 +Alias sqr::return#2 = sqr::return#5 +Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8 +Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8 +Alias init_dist_screen::y#5 = init_dist_screen::y#7 +Alias NUM_SQUARES#28 = NUM_SQUARES#35 +Alias heap_head#40 = heap_head#44 +Alias SQUARES#19 = SQUARES#39 +Alias init_dist_screen::yds#0 = init_dist_screen::$9 +Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8 +Alias SQUARES#15 = SQUARES#41 SQUARES#31 SQUARES#24 SQUARES#32 SQUARES#33 SQUARES#6 +Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 +Alias NUM_SQUARES#11 = NUM_SQUARES#36 NUM_SQUARES#22 NUM_SQUARES#18 NUM_SQUARES#30 NUM_SQUARES#31 NUM_SQUARES#4 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9 +Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6 +Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13 +Alias heap_head#10 = heap_head#55 heap_head#35 heap_head#29 heap_head#52 heap_head#53 heap_head#21 +Alias init_dist_screen::x2#0 = init_dist_screen::$11 init_dist_screen::x2#1 init_dist_screen::x2#2 +Alias init_dist_screen::$16 = init_dist_screen::$15 +Alias init_dist_screen::$14 = init_dist_screen::$13 +Alias init_dist_screen::xd#0 = init_dist_screen::$17 +Alias sqr::return#3 = sqr::return#6 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 +Alias SQUARES#18 = SQUARES#20 SQUARES#40 +Alias NUM_SQUARES#15 = NUM_SQUARES#23 NUM_SQUARES#29 +Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7 +Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6 +Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4 +Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6 +Alias heap_head#41 = heap_head#45 heap_head#49 +Alias init_dist_screen::xds#0 = init_dist_screen::$18 +Alias init_dist_screen::ds#0 = init_dist_screen::$19 +Alias sqrt::return#2 = sqrt::return#4 +Alias init_dist_screen::d#0 = init_dist_screen::$20 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#16 = print_line_cursor#22 +Alias print_char_cursor#23 = print_char_cursor#29 +Alias make_plasma_charset::charset#12 = make_plasma_charset::charset#13 make_plasma_charset::charset#16 +Alias print_line_cursor#11 = print_line_cursor#5 +Alias print_char_cursor#16 = print_char_cursor#7 +Alias make_plasma_charset::c#2 = make_plasma_charset::c#3 +Alias make_plasma_charset::charset#10 = make_plasma_charset::charset#8 +Alias print_char_cursor#18 = print_char_cursor#39 print_char_cursor#24 print_char_cursor#9 +Alias print_line_cursor#12 = print_line_cursor#36 print_line_cursor#17 print_line_cursor#6 +Alias make_plasma_charset::c#11 = make_plasma_charset::c#7 make_plasma_charset::c#4 make_plasma_charset::c#12 make_plasma_charset::c#9 +Alias make_plasma_charset::i#2 = make_plasma_charset::i#6 +Alias make_plasma_charset::charset#14 = make_plasma_charset::charset#4 make_plasma_charset::charset#5 make_plasma_charset::charset#15 make_plasma_charset::charset#17 +Alias make_plasma_charset::s#5 = make_plasma_charset::s#6 +Alias print_char_cursor#20 = print_char_cursor#46 print_char_cursor#36 print_char_cursor#31 +Alias print_line_cursor#28 = print_line_cursor#42 print_line_cursor#32 print_line_cursor#29 print_line_cursor#33 +Alias make_plasma_charset::s#1 = make_plasma_charset::s#2 make_plasma_charset::s#3 make_plasma_charset::s#8 make_plasma_charset::s#7 +Alias make_plasma_charset::ii#2 = make_plasma_charset::ii#6 make_plasma_charset::ii#5 make_plasma_charset::ii#4 +Alias make_plasma_charset::b#2 = make_plasma_charset::b#7 make_plasma_charset::b#4 make_plasma_charset::b#5 make_plasma_charset::b#3 +Alias make_plasma_charset::c#13 = make_plasma_charset::c#15 make_plasma_charset::c#8 make_plasma_charset::c#14 make_plasma_charset::c#5 +Alias make_plasma_charset::i#3 = make_plasma_charset::i#9 make_plasma_charset::i#4 make_plasma_charset::i#8 make_plasma_charset::i#7 +Alias make_plasma_charset::charset#1 = make_plasma_charset::charset#9 make_plasma_charset::charset#2 make_plasma_charset::charset#7 make_plasma_charset::charset#6 +Alias print_char_cursor#40 = print_char_cursor#51 print_char_cursor#43 print_char_cursor#49 print_char_cursor#48 +Alias print_line_cursor#37 = print_line_cursor#47 print_line_cursor#39 print_line_cursor#45 print_line_cursor#44 +Alias sid_rnd::return#2 = sid_rnd::return#4 +Alias print_char_cursor#17 = print_char_cursor#8 +Alias sin_offset_x#18 = sin_offset_x#3 +Alias sin_offset_y#18 = sin_offset_y#3 +Alias NUM_SQUARES#12 = NUM_SQUARES#5 +Alias heap_head#11 = heap_head#22 +Alias SQUARES#16 = SQUARES#7 +Alias print_line_cursor#13 = print_line_cursor#7 +Alias print_char_cursor#10 = print_char_cursor#19 +Alias sin_offset_x#13 = sin_offset_x#6 +Alias sin_offset_y#13 = sin_offset_y#6 Successful SSA optimization Pass2AliasElimination -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#5 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 -Alias (word*) SQUARES#19 = (word*) SQUARES#29 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#6 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#6 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#5 -Alias (byte) NUM_SQUARES#28 = (byte) NUM_SQUARES#39 -Alias (byte*) heap_head#40 = (byte*) heap_head#47 -Alias (word*) SQUARES#15 = (word*) SQUARES#18 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#3 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#15 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#3 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#4 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#3 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#5 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#12 -Alias (byte*) heap_head#10 = (byte*) heap_head#41 -Alias (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#3 -Alias (word) make_plasma_charset::c#10 = (word) make_plasma_charset::c#13 -Alias (byte) make_plasma_charset::i#3 = (byte) make_plasma_charset::i#5 -Alias (byte*) make_plasma_charset::charset#1 = (byte*) make_plasma_charset::charset#3 -Alias (byte) make_plasma_charset::s#1 = (byte) make_plasma_charset::s#4 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#45 -Alias (byte*) print_line_cursor#37 = (byte*) print_line_cursor#41 -Alias (word) make_plasma_charset::c#11 = (word) make_plasma_charset::c#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#28 -Alias (byte*) make_plasma_charset::charset#11 = (byte*) make_plasma_charset::charset#14 +Alias bsearch16u::key#1 = bsearch16u::key#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 +Alias SQUARES#19 = SQUARES#29 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 +Alias init_dist_screen::y#10 = init_dist_screen::y#5 +Alias NUM_SQUARES#28 = NUM_SQUARES#39 +Alias heap_head#40 = heap_head#47 +Alias SQUARES#15 = SQUARES#18 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#3 +Alias NUM_SQUARES#11 = NUM_SQUARES#15 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3 +Alias init_dist_screen::x#2 = init_dist_screen::x#4 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#5 +Alias init_dist_screen::y#11 = init_dist_screen::y#12 +Alias heap_head#10 = heap_head#41 +Alias make_plasma_charset::ii#2 = make_plasma_charset::ii#3 +Alias make_plasma_charset::c#10 = make_plasma_charset::c#13 +Alias make_plasma_charset::i#3 = make_plasma_charset::i#5 +Alias make_plasma_charset::charset#1 = make_plasma_charset::charset#3 +Alias make_plasma_charset::s#1 = make_plasma_charset::s#4 +Alias print_char_cursor#40 = print_char_cursor#45 +Alias print_line_cursor#37 = print_line_cursor#41 +Alias make_plasma_charset::c#11 = make_plasma_charset::c#6 +Alias print_line_cursor#23 = print_line_cursor#28 +Alias make_plasma_charset::charset#11 = make_plasma_charset::charset#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -4643,201 +4643,201 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN_DIST (void*) SCREEN_DIST#0 0.05128205128205128 (word*) SQUARES -(void*) SQUARES#1 0.03225806451612903 +(void*) SQUARES#1 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 2002.0 -(word*~) bsearch16u::$2 4.0 -(byte~) bsearch16u::$6 2002.0 +(byte~) bsearch16u::$16 2.000000002E9 +(word*~) bsearch16u::$2 2000002.0 +(byte~) bsearch16u::$6 2.000000002E9 (word*) bsearch16u::items -(word*) bsearch16u::items#0 1001.0 -(word*) bsearch16u::items#1 2.0 -(word*) bsearch16u::items#2 334.5555555555556 -(word*) bsearch16u::items#8 1501.5 +(word*) bsearch16u::items#0 1.000000001E9 +(word*) bsearch16u::items#1 550001.0 +(word*) bsearch16u::items#2 3.337777785555556E8 +(word*) bsearch16u::items#8 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 0.26666666666666666 +(word) bsearch16u::key#0 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 2002.0 -(byte) bsearch16u::num#1 2002.0 -(byte) bsearch16u::num#3 556.1111111111111 -(byte) bsearch16u::num#5 3003.0 +(byte) bsearch16u::num#0 2.000000002E9 +(byte) bsearch16u::num#1 2.000000002E9 +(byte) bsearch16u::num#3 5.555555561111112E8 +(byte) bsearch16u::num#5 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 501.0 +(word*) bsearch16u::pivot#0 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 1501.5 +(signed word) bsearch16u::result#0 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 2.0 -(word*) bsearch16u::return#2 6.0 -(word*) bsearch16u::return#3 4.0 -(word*) bsearch16u::return#6 4.0 +(word*) bsearch16u::return#1 700001.0 +(word*) bsearch16u::return#2 3000003.0 +(word*) bsearch16u::return#3 200002.0 +(word*) bsearch16u::return#6 2000002.0 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 2002.0 +(byte~) doplasma::$2 2000002.0 (byte*) doplasma::angle -(byte*) doplasma::angle#0 1.0 -(byte*) doplasma::angle#1 50.5 -(byte*) doplasma::angle#4 172.14285714285714 +(byte*) doplasma::angle#0 500.5 +(byte*) doplasma::angle#1 50000.5 +(byte*) doplasma::angle#4 171571.99999999997 (byte*) doplasma::dist -(byte*) doplasma::dist#0 1.3333333333333333 -(byte*) doplasma::dist#1 67.33333333333333 -(byte*) doplasma::dist#4 150.625 +(byte*) doplasma::dist#0 667.3333333333334 +(byte*) doplasma::dist#1 66667.33333333333 +(byte*) doplasma::dist#4 150125.5 (byte*) doplasma::screen -(byte*) doplasma::screen#2 40.4 -(byte*) doplasma::screen#5 200.83333333333334 -(byte*) doplasma::screen#6 0.4 +(byte*) doplasma::screen#2 40000.4 +(byte*) doplasma::screen#5 200167.33333333334 +(byte*) doplasma::screen#6 200.2 (byte*) doplasma::sin_x -(byte*) doplasma::sin_x#0 77.15384615384616 +(byte*) doplasma::sin_x#0 77000.15384615384 (byte*) doplasma::sin_y -(byte*) doplasma::sin_y#0 83.58333333333334 +(byte*) doplasma::sin_y#0 83416.83333333334 (byte) doplasma::x -(byte) doplasma::x#1 1501.5 -(byte) doplasma::x#2 1668.3333333333335 +(byte) doplasma::x#1 1500001.5 +(byte) doplasma::x#2 1666668.3333333335 (byte) doplasma::y -(byte) doplasma::y#1 151.5 -(byte) doplasma::y#4 22.444444444444443 +(byte) doplasma::y#1 150001.5 +(byte) doplasma::y#4 22222.444444444445 (byte*) heap_head -(byte*) heap_head#1 0.6000000000000001 -(byte*) heap_head#12 6.0 +(byte*) heap_head#1 1100.4 +(byte*) heap_head#12 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 84.16666666666666 +(byte) init_angle_screen::ang_w#0 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 3.0 +(byte*) init_angle_screen::screen#0 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 4.0 -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 9.04 +(byte*) init_angle_screen::screen_bottomline#0 202.0 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 2.0 -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 101.0 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 202.0 -(byte~) init_dist_screen::$16 202.0 -(byte~) init_dist_screen::$5 22.0 -(byte~) init_dist_screen::$7 22.0 +(byte~) init_dist_screen::$14 20002.0 +(byte~) init_dist_screen::$16 20002.0 +(byte~) init_dist_screen::$5 2002.0 +(byte~) init_dist_screen::$7 2002.0 (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 126.25 +(byte) init_dist_screen::d#0 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 202.0 +(word) init_dist_screen::ds#0 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 1.5 +(byte*) init_dist_screen::screen#0 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 4.0 -(byte*) init_dist_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 202.0 +(byte*) init_dist_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 5.5 -(byte*) init_dist_screen::screen_topline#11 7.0625 +(byte*) init_dist_screen::screen_topline#1 500.5 +(byte*) init_dist_screen::screen_topline#11 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 101.0 -(byte) init_dist_screen::x#2 30.3 +(byte) init_dist_screen::x#1 10001.0 +(byte) init_dist_screen::x#2 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 202.0 +(byte) init_dist_screen::x2#0 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 202.0 -(byte) init_dist_screen::xb#2 19.238095238095237 +(byte) init_dist_screen::xb#1 20002.0 +(byte) init_dist_screen::xb#2 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 303.0 +(byte) init_dist_screen::xd#0 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 202.0 +(word) init_dist_screen::xds#0 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 16.5 -(byte) init_dist_screen::y#10 0.9705882352941178 +(byte) init_dist_screen::y#1 1501.5 +(byte) init_dist_screen::y#10 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 22.0 +(byte) init_dist_screen::y2#0 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 33.0 +(byte) init_dist_screen::yd#0 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 4.869565217391305 +(word) init_dist_screen::yds#0 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 22.0 -(byte~) init_squares::$4 22.0 +(byte~) init_squares::$3 20002.0 +(byte~) init_squares::$4 20002.0 (byte) init_squares::i -(byte) init_squares::i#1 22.0 -(byte) init_squares::i#2 6.285714285714286 +(byte) init_squares::i#1 20002.0 +(byte) init_squares::i#2 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 11.0 -(word) init_squares::sqr#2 5.5 +(word) init_squares::sqr#1 10001.0 +(word) init_squares::sqr#2 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 4.0 -(word*) init_squares::squares#1 4.4 -(word*) init_squares::squares#2 11.666666666666666 +(word*) init_squares::squares#0 2002.0 +(word*) init_squares::squares#1 4000.4 +(word*) init_squares::squares#2 10334.666666666666 (void()) main() (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -4846,44 +4846,44 @@ VARIABLE REGISTER WEIGHTS (byte) main::toD0182_return (byte*) main::toD0182_screen (void()) make_plasma_charset((byte*) make_plasma_charset::charset) -(word~) make_plasma_charset::$10 202.0 -(word~) make_plasma_charset::$11 202.0 -(byte~) make_plasma_charset::$12 22.0 -(byte*~) make_plasma_charset::$16 202.0 -(byte~) make_plasma_charset::$3 22.0 -(byte~) make_plasma_charset::$6 2002.0 -(byte~) make_plasma_charset::$7 2002.0 +(word~) make_plasma_charset::$10 20002.0 +(word~) make_plasma_charset::$11 20002.0 +(byte~) make_plasma_charset::$12 2002.0 +(byte*~) make_plasma_charset::$16 20002.0 +(byte~) make_plasma_charset::$3 2002.0 +(byte~) make_plasma_charset::$6 200002.0 +(byte~) make_plasma_charset::$7 200002.0 (byte) make_plasma_charset::b -(byte) make_plasma_charset::b#1 2002.0 -(byte) make_plasma_charset::b#2 282.1818181818182 -(byte) make_plasma_charset::b#6 1501.5 +(byte) make_plasma_charset::b#1 200002.0 +(byte) make_plasma_charset::b#2 28182.181818181816 +(byte) make_plasma_charset::b#6 150001.5 (word) make_plasma_charset::c -(word) make_plasma_charset::c#1 22.0 -(word) make_plasma_charset::c#2 5.777777777777778 +(word) make_plasma_charset::c#1 2002.0 +(word) make_plasma_charset::c#2 555.7777777777778 (byte*) make_plasma_charset::charset (byte) make_plasma_charset::i -(byte) make_plasma_charset::i#1 202.0 -(byte) make_plasma_charset::i#2 23.764705882352942 +(byte) make_plasma_charset::i#1 20002.0 +(byte) make_plasma_charset::i#2 2353.176470588235 (byte) make_plasma_charset::ii -(byte) make_plasma_charset::ii#1 2002.0 -(byte) make_plasma_charset::ii#2 400.4 +(byte) make_plasma_charset::ii#1 200002.0 +(byte) make_plasma_charset::ii#2 40000.4 (byte) make_plasma_charset::s -(byte) make_plasma_charset::s#0 53.26315789473684 +(byte) make_plasma_charset::s#0 5315.894736842105 (void*()) malloc((word) malloc::size) (byte*) malloc::mem -(byte*) malloc::mem#0 0.6666666666666666 +(byte*) malloc::mem#0 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 2.0 +(word) malloc::size#3 10001.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.5714285714285714 +(byte) memset::c#4 14285.857142857143 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 136668.3333333333 +(byte*) memset::dst#4 20002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 18333.666666666664 (word) memset::num (void*) memset::return (void*) memset::str @@ -4891,46 +4891,46 @@ VARIABLE REGISTER WEIGHTS (void()) print_char((byte) print_char::ch) (byte) print_char::ch (byte*) print_char_cursor -(byte*) print_char_cursor#1 4.333333333333333 -(byte*) print_char_cursor#18 1.0 -(byte*) print_char_cursor#30 16.5 +(byte*) print_char_cursor#1 3667.333333333333 +(byte*) print_char_cursor#18 846.3076923076923 +(byte*) print_char_cursor#30 1501.5 (void()) print_cls() (byte*) print_line_cursor (byte*) print_screen (byte()) sid_rnd() (byte) sid_rnd::return -(byte) sid_rnd::return#0 334.33333333333337 -(byte) sid_rnd::return#2 2002.0 +(byte) sid_rnd::return#0 366667.3333333334 +(byte) sid_rnd::return#2 200002.0 (void()) sid_rnd_init() (byte) sin_offset_x -(byte) sin_offset_x#10 1.625 -(byte) sin_offset_x#12 2.666666666666667 -(byte) sin_offset_x#14 11.0 +(byte) sin_offset_x#10 137.75 +(byte) sin_offset_x#12 133.66666666666669 +(byte) sin_offset_x#14 101.0 (byte) sin_offset_y -(byte) sin_offset_y#10 1.5294117647058825 -(byte) sin_offset_y#12 3.0 -(byte) sin_offset_y#14 11.0 +(byte) sin_offset_y#10 129.64705882352942 +(byte) sin_offset_y#12 150.375 +(byte) sin_offset_y#14 101.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 4.0 +(byte~) sqr::$0 200002.0 (word) sqr::return -(word) sqr::return#0 28.5 -(word) sqr::return#2 22.0 -(word) sqr::return#3 202.0 +(word) sqr::return#0 27750.75 +(word) sqr::return#2 2002.0 +(word) sqr::return#3 20002.0 (byte) sqr::val -(byte) sqr::val#0 22.0 -(byte) sqr::val#1 202.0 -(byte) sqr::val#2 114.0 +(byte) sqr::val#0 2002.0 +(byte) sqr::val#1 20002.0 +(byte) sqr::val#2 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 2.0 -(word~) sqrt::$3 4.0 +(word~) sqrt::$1 100001.0 +(word~) sqrt::$3 200002.0 (word*) sqrt::found -(word*) sqrt::found#0 4.0 +(word*) sqrt::found#0 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 34.33333333333333 -(byte) sqrt::return#2 202.0 +(byte) sqrt::return#0 36667.33333333333 +(byte) sqrt::return#2 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 103.0 +(word) sqrt::val#0 110002.0 Initial phi equivalence classes [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] @@ -7103,416 +7103,410 @@ SINTABLE: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] -Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a -Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a -Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a -Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a -Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a -Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y +Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { } ) always clobbers reg byte a +Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ doplasma::x#2 doplasma::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ doplasma::x#2 doplasma::x#1 ] -Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y -Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x +Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte y +Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] -Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x +Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] -Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a +Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ memset::c#4 ] -Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ memset::c#4 ] -Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [59] (byte~) make_plasma_charset::$3 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ) always clobbers reg byte a -Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ) always clobbers reg byte a -Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ) always clobbers reg byte a +Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] { } ) always clobbers reg byte a +Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:81 [ make_plasma_charset::s#0 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:23 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] -Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ) always clobbers reg byte a -Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ) always clobbers reg byte a -Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ) always clobbers reg byte a reg byte y +Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { } ) always clobbers reg byte a +Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { } ) always clobbers reg byte a +Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:81 [ make_plasma_charset::s#0 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] -Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a +Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] -Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:110 [ init_angle_screen::ang_w#0 ] -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:110 [ init_angle_screen::ang_w#0 ] -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:58 [ init_squares::i#2 init_squares::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:58 [ init_squares::i#2 init_squares::i#1 ] -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a -Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a -Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a -Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a -Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a -Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a -Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y -Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y -Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x -Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x -Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [59] (byte~) make_plasma_charset::$3 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ) always clobbers reg byte a -Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ) always clobbers reg byte a -Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ) always clobbers reg byte a -Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ) always clobbers reg byte a -Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ) always clobbers reg byte a -Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { } ) always clobbers reg byte a +Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte y +Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte y +Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x +Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x +Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] { } ) always clobbers reg byte a +Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { } ) always clobbers reg byte a +Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { } ) always clobbers reg byte a +Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { } ) always clobbers reg byte a +Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:131 [ init_dist_screen::d#0 ] -Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a -Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a -Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a -Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a -Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a -Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a -Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y -Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y -Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a -Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x -Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x -Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [59] (byte~) make_plasma_charset::$3 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$3 ] ) always clobbers reg byte a -Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ) always clobbers reg byte a -Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ) always clobbers reg byte a -Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ) always clobbers reg byte a -Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ) always clobbers reg byte a -Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a -Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y -Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a +Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [24] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { } ) always clobbers reg byte a +Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [28] (byte*) doplasma::sin_x#0 ← (const byte*) SINTABLE + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [29] (byte*) doplasma::sin_y#0 ← (const byte*) SINTABLE + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte y +Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte y +Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a +Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x +Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#14 } { sin_offset_y#10 = sin_offset_y#14 } } main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] { { sin_offset_x#10 = sin_offset_x#12 } { sin_offset_y#10 = sin_offset_y#12 } } ) always clobbers reg byte a reg byte x +Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [46] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [48] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::make_plasma_charset:14::print_cls:55::memset:91 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [57] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a +Statement [63] (byte~) make_plasma_charset::$12 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::$12 ] { } ) always clobbers reg byte a +Statement [71] (word~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { } ) always clobbers reg byte a +Statement [72] (word~) make_plasma_charset::$11 ← (word~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { } ) always clobbers reg byte a +Statement [73] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET + (word~) make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { } ) always clobbers reg byte a +Statement [74] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [82] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte*) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { } ) always clobbers reg byte a +Statement [87] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:7::make_plasma_charset:14::print_char:66 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#18 ] { } ) always clobbers reg byte a reg byte y +Statement [93] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [256] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [257] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] : zp[1]:2 , Potential registers zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] : zp[1]:3 , Potential registers zp[2]:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] : zp[2]:4 , @@ -7617,41 +7611,41 @@ Potential registers zp[1]:155 [ init_squares::$4 ] : zp[1]:155 , reg byte a , re Potential registers zp[2]:156 [ malloc::mem#0 ] : zp[2]:156 , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:114 [ atan2_16::$23 ] 2,002: zp[1]:115 [ atan2_16::$22 ] 1,710.04: zp[1]:35 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:104 [ atan2_16::return#2 ] 50: zp[2]:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:100 [ atan2_16::x#0 ] 2.72: zp[2]:102 [ atan2_16::y#0 ] -Uplift Scope [bsearch16u] 7,563.11: zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,855.06: zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,002: zp[1]:143 [ bsearch16u::$6 ] 2,002: zp[1]:144 [ bsearch16u::$16 ] 1,501.5: zp[2]:147 [ bsearch16u::result#0 ] 501: zp[2]:145 [ bsearch16u::pivot#0 ] 4: zp[2]:134 [ bsearch16u::return#3 ] 0.27: zp[2]:132 [ bsearch16u::key#0 ] -Uplift Scope [make_plasma_charset] 3,785.68: zp[1]:23 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] 2,402.4: zp[1]:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] 2,002: zp[1]:90 [ make_plasma_charset::$6 ] 2,002: zp[1]:91 [ make_plasma_charset::$7 ] 225.76: zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] 202: zp[2]:83 [ make_plasma_charset::$10 ] 202: zp[2]:85 [ make_plasma_charset::$11 ] 202: zp[2]:87 [ make_plasma_charset::$16 ] 53.26: zp[1]:81 [ make_plasma_charset::s#0 ] 27.78: zp[2]:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] 22: zp[1]:80 [ make_plasma_charset::$3 ] 22: zp[1]:82 [ make_plasma_charset::$12 ] -Uplift Scope [doplasma] 3,169.83: zp[1]:11 [ doplasma::x#2 doplasma::x#1 ] 2,002: zp[1]:77 [ doplasma::$2 ] 241.63: zp[2]:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] 223.64: zp[2]:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] 219.29: zp[2]:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] 173.94: zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] 83.58: zp[2]:75 [ doplasma::sin_y#0 ] 77.15: zp[2]:73 [ doplasma::sin_x#0 ] -Uplift Scope [sid_rnd] 2,002: zp[1]:89 [ sid_rnd::return#2 ] 334.33: zp[1]:92 [ sid_rnd::return#0 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:93 [ init_angle_screen::$3 ] 202: zp[1]:94 [ init_angle_screen::$4 ] 202: zp[1]:97 [ init_angle_screen::$7 ] 202: zp[2]:106 [ init_angle_screen::angle_w#0 ] 202: zp[2]:108 [ init_angle_screen::$11 ] 202: zp[1]:111 [ init_angle_screen::$13 ] 202: zp[1]:112 [ init_angle_screen::$14 ] 202: zp[1]:113 [ init_angle_screen::$15 ] 129.86: zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 84.17: zp[1]:110 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:98 [ init_angle_screen::yw#0 ] 33.67: zp[2]:95 [ init_angle_screen::xw#0 ] 21.23: zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 20.37: zp[2]:27 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 16.92: zp[2]:25 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 3: zp[2]:71 [ init_angle_screen::screen#0 ] -Uplift Scope [init_dist_screen] 707: zp[1]:53 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 221.24: zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 202: zp[1]:121 [ init_dist_screen::x2#0 ] 202: zp[2]:124 [ init_dist_screen::xds#0 ] 202: zp[2]:126 [ init_dist_screen::ds#0 ] 131.3: zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 126.25: zp[1]:131 [ init_dist_screen::d#0 ] 77: zp[1]:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 22: zp[1]:116 [ init_dist_screen::y2#0 ] 18.18: zp[2]:48 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 17.47: zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 14.06: zp[2]:46 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 4.87: zp[2]:119 [ init_dist_screen::yds#0 ] -Uplift Scope [sqr] 338: zp[1]:57 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 202: zp[2]:122 [ sqr::return#3 ] 28.5: zp[2]:150 [ sqr::return#0 ] 22: zp[2]:117 [ sqr::return#2 ] 4: zp[1]:149 [ sqr::$0 ] -Uplift Scope [sqrt] 202: zp[1]:130 [ sqrt::return#2 ] 103: zp[2]:128 [ sqrt::val#0 ] 34.33: zp[1]:142 [ sqrt::return#0 ] 4: zp[2]:136 [ sqrt::found#0 ] 4: zp[2]:138 [ sqrt::$3 ] 2: zp[2]:140 [ sqrt::$1 ] -Uplift Scope [init_squares] 28.29: zp[1]:58 [ init_squares::i#2 init_squares::i#1 ] 22: zp[1]:154 [ init_squares::$3 ] 22: zp[1]:155 [ init_squares::$4 ] 20.07: zp[2]:61 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 16.5: zp[2]:59 [ init_squares::sqr#2 init_squares::sqr#1 ] -Uplift Scope [] 21.83: zp[2]:19 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] 15.53: zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] 15.29: zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] 6.6: zp[2]:63 [ heap_head#12 heap_head#1 ] 0.05: zp[2]:69 [ SCREEN_ANGLE#0 ] 0.05: zp[2]:67 [ SCREEN_DIST#0 ] 0.03: zp[2]:152 [ SQUARES#1 ] -Uplift Scope [memset] 41.33: zp[2]:15 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:78 [ memset::end#0 ] 1.57: zp[1]:14 [ memset::c#4 ] 0: zp[2]:12 [ memset::str#3 ] -Uplift Scope [malloc] 2: zp[2]:65 [ malloc::size#3 ] 0.67: zp[2]:156 [ malloc::mem#0 ] +Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,000,000,002: zp[1]:143 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:144 [ bsearch16u::$16 ] 1,500,000,001.5: zp[2]:147 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:145 [ bsearch16u::pivot#0 ] 200,002: zp[2]:134 [ bsearch16u::return#3 ] 73,333.47: zp[2]:132 [ bsearch16u::key#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:114 [ atan2_16::$23 ] 200,000,002: zp[1]:115 [ atan2_16::$22 ] 170,833,335.04: zp[1]:35 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:104 [ atan2_16::return#2 ] 10,789.61: zp[2]:100 [ atan2_16::x#0 ] 10,250.12: zp[2]:102 [ atan2_16::y#0 ] +Uplift Scope [doplasma] 3,166,669.83: zp[1]:11 [ doplasma::x#2 doplasma::x#1 ] 2,000,002: zp[1]:77 [ doplasma::$2 ] 240,367.93: zp[2]:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] 222,073: zp[2]:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] 217,460.17: zp[2]:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] 172,223.94: zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] 83,416.83: zp[2]:75 [ doplasma::sin_y#0 ] 77,000.15: zp[2]:73 [ doplasma::sin_x#0 ] +Uplift Scope [make_plasma_charset] 378,185.68: zp[1]:23 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] 240,002.4: zp[1]:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] 200,002: zp[1]:90 [ make_plasma_charset::$6 ] 200,002: zp[1]:91 [ make_plasma_charset::$7 ] 22,355.18: zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] 20,002: zp[2]:83 [ make_plasma_charset::$10 ] 20,002: zp[2]:85 [ make_plasma_charset::$11 ] 20,002: zp[2]:87 [ make_plasma_charset::$16 ] 5,315.89: zp[1]:81 [ make_plasma_charset::s#0 ] 2,557.78: zp[2]:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] 2,002: zp[1]:80 [ make_plasma_charset::$3 ] 2,002: zp[1]:82 [ make_plasma_charset::$12 ] +Uplift Scope [sqrt] 200,002: zp[2]:136 [ sqrt::found#0 ] 200,002: zp[2]:138 [ sqrt::$3 ] 110,002: zp[2]:128 [ sqrt::val#0 ] 100,001: zp[2]:140 [ sqrt::$1 ] 36,667.33: zp[1]:142 [ sqrt::return#0 ] 20,002: zp[1]:130 [ sqrt::return#2 ] +Uplift Scope [sid_rnd] 366,667.33: zp[1]:92 [ sid_rnd::return#0 ] 200,002: zp[1]:89 [ sid_rnd::return#2 ] +Uplift Scope [memset] 356,672.33: zp[2]:15 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 18,333.67: zp[2]:78 [ memset::end#0 ] 14,285.86: zp[1]:14 [ memset::c#4 ] 0: zp[2]:12 [ memset::str#3 ] +Uplift Scope [sqr] 200,002: zp[1]:149 [ sqr::$0 ] 133,007: zp[1]:57 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:150 [ sqr::return#0 ] 20,002: zp[2]:122 [ sqr::return#3 ] 2,002: zp[2]:117 [ sqr::return#2 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:93 [ init_angle_screen::$3 ] 20,002: zp[1]:94 [ init_angle_screen::$4 ] 20,002: zp[1]:97 [ init_angle_screen::$7 ] 20,002: zp[2]:106 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:108 [ init_angle_screen::$11 ] 20,002: zp[1]:111 [ init_angle_screen::$13 ] 20,002: zp[1]:112 [ init_angle_screen::$14 ] 20,002: zp[1]:113 [ init_angle_screen::$15 ] 12,858.43: zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:110 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:98 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:95 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:27 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:25 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:71 [ init_angle_screen::screen#0 ] +Uplift Scope [init_dist_screen] 70,007: zp[1]:53 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:121 [ init_dist_screen::x2#0 ] 20,002: zp[2]:124 [ init_dist_screen::xds#0 ] 20,002: zp[2]:126 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:131 [ init_dist_screen::d#0 ] 7,007: zp[1]:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:116 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:48 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:46 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:119 [ init_dist_screen::yds#0 ] +Uplift Scope [init_squares] 25,716.86: zp[1]:58 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:154 [ init_squares::$3 ] 20,002: zp[1]:155 [ init_squares::$4 ] 16,337.07: zp[2]:61 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:59 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplift Scope [] 12,104.4: zp[2]:63 [ heap_head#12 heap_head#1 ] 6,015.14: zp[2]:19 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] 381.02: zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] 372.42: zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] 16.15: zp[2]:152 [ SQUARES#1 ] 0.05: zp[2]:69 [ SCREEN_ANGLE#0 ] 0.05: zp[2]:67 [ SCREEN_DIST#0 ] +Uplift Scope [malloc] 10,001: zp[2]:65 [ malloc::size#3 ] 3,333.67: zp[2]:156 [ malloc::mem#0 ] Uplift Scope [RADIX] Uplift Scope [print_char] Uplift Scope [print_cls] Uplift Scope [sid_rnd_init] Uplift Scope [main] -Uplifting [atan2_16] best 1415221 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:104 [ atan2_16::return#2 ] zp[2]:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:100 [ atan2_16::x#0 ] zp[2]:102 [ atan2_16::y#0 ] +Uplifting [bsearch16u] best 1510221 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:147 [ bsearch16u::result#0 ] zp[2]:145 [ bsearch16u::pivot#0 ] zp[2]:134 [ bsearch16u::return#3 ] zp[2]:132 [ bsearch16u::key#0 ] +Uplifting [atan2_16] best 1396221 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:104 [ atan2_16::return#2 ] zp[2]:100 [ atan2_16::x#0 ] zp[2]:102 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [bsearch16u] best 1396221 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:147 [ bsearch16u::result#0 ] zp[2]:145 [ bsearch16u::pivot#0 ] zp[2]:134 [ bsearch16u::return#3 ] zp[2]:132 [ bsearch16u::key#0 ] -Uplifting [make_plasma_charset] best 1373121 combination reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] reg byte a [ make_plasma_charset::$6 ] zp[1]:91 [ make_plasma_charset::$7 ] zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] zp[2]:83 [ make_plasma_charset::$10 ] zp[2]:85 [ make_plasma_charset::$11 ] zp[2]:87 [ make_plasma_charset::$16 ] zp[1]:81 [ make_plasma_charset::s#0 ] zp[2]:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] zp[1]:80 [ make_plasma_charset::$3 ] zp[1]:82 [ make_plasma_charset::$12 ] +Uplifting [doplasma] best 1385221 combination reg byte x [ doplasma::x#2 doplasma::x#1 ] reg byte a [ doplasma::$2 ] zp[2]:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] zp[2]:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] zp[2]:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] zp[2]:75 [ doplasma::sin_y#0 ] zp[2]:73 [ doplasma::sin_x#0 ] +Uplifting [make_plasma_charset] best 1362121 combination reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] reg byte a [ make_plasma_charset::$6 ] zp[1]:91 [ make_plasma_charset::$7 ] zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] zp[2]:83 [ make_plasma_charset::$10 ] zp[2]:85 [ make_plasma_charset::$11 ] zp[2]:87 [ make_plasma_charset::$16 ] zp[1]:81 [ make_plasma_charset::s#0 ] zp[2]:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] zp[1]:80 [ make_plasma_charset::$3 ] zp[1]:82 [ make_plasma_charset::$12 ] Limited combination testing to 100 combinations of 9216 possible. -Uplifting [doplasma] best 1362121 combination reg byte x [ doplasma::x#2 doplasma::x#1 ] reg byte a [ doplasma::$2 ] zp[2]:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] zp[2]:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] zp[2]:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] zp[2]:75 [ doplasma::sin_y#0 ] zp[2]:73 [ doplasma::sin_x#0 ] -Uplifting [sid_rnd] best 1353118 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [init_angle_screen] best 1351518 combination zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:106 [ init_angle_screen::angle_w#0 ] zp[2]:108 [ init_angle_screen::$11 ] zp[1]:111 [ init_angle_screen::$13 ] zp[1]:112 [ init_angle_screen::$14 ] zp[1]:113 [ init_angle_screen::$15 ] zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:110 [ init_angle_screen::ang_w#0 ] zp[2]:98 [ init_angle_screen::yw#0 ] zp[2]:95 [ init_angle_screen::xw#0 ] zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:27 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:25 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:71 [ init_angle_screen::screen#0 ] +Uplifting [sqrt] best 1361218 combination zp[2]:136 [ sqrt::found#0 ] zp[2]:138 [ sqrt::$3 ] zp[2]:128 [ sqrt::val#0 ] zp[2]:140 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] +Uplifting [sid_rnd] best 1352215 combination reg byte a [ sid_rnd::return#0 ] reg byte a [ sid_rnd::return#2 ] +Uplifting [memset] best 1352199 combination zp[2]:15 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:78 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:12 [ memset::str#3 ] +Uplifting [sqr] best 1351862 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:150 [ sqr::return#0 ] zp[2]:122 [ sqr::return#3 ] zp[2]:117 [ sqr::return#2 ] +Uplifting [init_angle_screen] best 1350262 combination zp[1]:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:106 [ init_angle_screen::angle_w#0 ] zp[2]:108 [ init_angle_screen::$11 ] zp[1]:111 [ init_angle_screen::$13 ] zp[1]:112 [ init_angle_screen::$14 ] zp[1]:113 [ init_angle_screen::$15 ] zp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:110 [ init_angle_screen::ang_w#0 ] zp[2]:98 [ init_angle_screen::yw#0 ] zp[2]:95 [ init_angle_screen::xw#0 ] zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:27 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:25 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:71 [ init_angle_screen::screen#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [init_dist_screen] best 1348318 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:124 [ init_dist_screen::xds#0 ] zp[2]:126 [ init_dist_screen::ds#0 ] zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:116 [ init_dist_screen::y2#0 ] zp[2]:48 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:46 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:119 [ init_dist_screen::yds#0 ] +Uplifting [init_dist_screen] best 1347062 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:124 [ init_dist_screen::xds#0 ] zp[2]:126 [ init_dist_screen::ds#0 ] zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:116 [ init_dist_screen::y2#0 ] zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:48 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:46 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:119 [ init_dist_screen::yds#0 ] Limited combination testing to 100 combinations of 6144 possible. -Uplifting [sqr] best 1347981 combination reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:122 [ sqr::return#3 ] zp[2]:150 [ sqr::return#0 ] zp[2]:117 [ sqr::return#2 ] reg byte a [ sqr::$0 ] -Uplifting [sqrt] best 1347078 combination reg byte a [ sqrt::return#2 ] zp[2]:128 [ sqrt::val#0 ] reg byte a [ sqrt::return#0 ] zp[2]:136 [ sqrt::found#0 ] zp[2]:138 [ sqrt::$3 ] zp[2]:140 [ sqrt::$1 ] -Uplifting [init_squares] best 1346878 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:61 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:59 [ init_squares::sqr#2 init_squares::sqr#1 ] -Uplifting [] best 1346878 combination zp[2]:19 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] zp[2]:63 [ heap_head#12 heap_head#1 ] zp[2]:69 [ SCREEN_ANGLE#0 ] zp[2]:67 [ SCREEN_DIST#0 ] zp[2]:152 [ SQUARES#1 ] -Uplifting [memset] best 1346862 combination zp[2]:15 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:78 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:12 [ memset::str#3 ] +Uplifting [init_squares] best 1346862 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:61 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:59 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplifting [] best 1346862 combination zp[2]:63 [ heap_head#12 heap_head#1 ] zp[2]:19 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] zp[2]:152 [ SQUARES#1 ] zp[2]:69 [ SCREEN_ANGLE#0 ] zp[2]:67 [ SCREEN_DIST#0 ] Uplifting [malloc] best 1346862 combination zp[2]:65 [ malloc::size#3 ] zp[2]:156 [ malloc::mem#0 ] Uplifting [RADIX] best 1346862 combination Uplifting [print_char] best 1346862 combination @@ -7660,6 +7654,8 @@ Uplifting [sid_rnd_init] best 1346862 combination Uplifting [main] best 1346862 combination Attempting to uplift remaining variables inzp[1]:91 [ make_plasma_charset::$7 ] Uplifting [make_plasma_charset] best 1346862 combination zp[1]:91 [ make_plasma_charset::$7 ] +Attempting to uplift remaining variables inzp[1]:10 [ doplasma::y#4 doplasma::y#1 ] +Uplifting [doplasma] best 1346862 combination zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] Attempting to uplift remaining variables inzp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] Uplifting [make_plasma_charset] best 1346862 combination zp[1]:21 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] Attempting to uplift remaining variables inzp[1]:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] @@ -7672,8 +7668,6 @@ Attempting to uplift remaining variables inzp[1]:112 [ init_angle_screen::$14 ] Uplifting [init_angle_screen] best 1345862 combination reg byte a [ init_angle_screen::$14 ] Attempting to uplift remaining variables inzp[1]:113 [ init_angle_screen::$15 ] Uplifting [init_angle_screen] best 1345262 combination reg byte a [ init_angle_screen::$15 ] -Attempting to uplift remaining variables inzp[1]:10 [ doplasma::y#4 doplasma::y#1 ] -Uplifting [doplasma] best 1345262 combination zp[1]:10 [ doplasma::y#4 doplasma::y#1 ] Attempting to uplift remaining variables inzp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Uplifting [init_dist_screen] best 1345262 combination zp[1]:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Attempting to uplift remaining variables inzp[1]:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] @@ -7685,19 +7679,19 @@ Uplifting [init_dist_screen] best 1345192 combination reg byte a [ init_dist_scr Attempting to uplift remaining variables inzp[1]:81 [ make_plasma_charset::s#0 ] Uplifting [make_plasma_charset] best 1345192 combination zp[1]:81 [ make_plasma_charset::s#0 ] Attempting to uplift remaining variables inzp[1]:80 [ make_plasma_charset::$3 ] -Uplifting [make_plasma_charset] best 1345152 combination reg byte a [ make_plasma_charset::$3 ] +Uplifting [make_plasma_charset] best 1345132 combination reg byte x [ make_plasma_charset::$3 ] Attempting to uplift remaining variables inzp[1]:82 [ make_plasma_charset::$12 ] -Uplifting [make_plasma_charset] best 1345092 combination reg byte a [ make_plasma_charset::$12 ] +Uplifting [make_plasma_charset] best 1345072 combination reg byte a [ make_plasma_charset::$12 ] Attempting to uplift remaining variables inzp[1]:116 [ init_dist_screen::y2#0 ] -Uplifting [init_dist_screen] best 1344992 combination reg byte a [ init_dist_screen::y2#0 ] +Uplifting [init_dist_screen] best 1344972 combination reg byte a [ init_dist_screen::y2#0 ] Attempting to uplift remaining variables inzp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Uplifting [init_angle_screen] best 1344992 combination zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] +Uplifting [init_angle_screen] best 1344972 combination zp[1]:24 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Attempting to uplift remaining variables inzp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Uplifting [init_dist_screen] best 1344992 combination zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] +Uplifting [init_dist_screen] best 1344972 combination zp[1]:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Attempting to uplift remaining variables inzp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] -Uplifting [] best 1344992 combination zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] +Uplifting [] best 1344972 combination zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] Attempting to uplift remaining variables inzp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] -Uplifting [] best 1344992 combination zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] +Uplifting [] best 1344972 combination zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] Coalescing zero page register [ zp[2]:12 [ memset::str#3 ] ] with [ zp[2]:15 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:27 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:71 [ init_angle_screen::screen#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] - score: 1 @@ -8219,11 +8213,10 @@ make_plasma_charset: { rts // make_plasma_charset::@2 __b2: - // [59] (byte~) make_plasma_charset::$3 ← < (word) make_plasma_charset::c#2 -- vbuaa=_lo_vwuz1 - lda.z c - // [60] (byte) make_plasma_charset::s#0 ← *((const byte*) SINTABLE + (byte~) make_plasma_charset::$3) -- vbuz1=pbuc1_derefidx_vbuaa - tay - lda SINTABLE,y + // [59] (byte~) make_plasma_charset::$3 ← < (word) make_plasma_charset::c#2 -- vbuxx=_lo_vwuz1 + ldx.z c + // [60] (byte) make_plasma_charset::s#0 ← *((const byte*) SINTABLE + (byte~) make_plasma_charset::$3) -- vbuz1=pbuc1_derefidx_vbuxx + lda SINTABLE,x sta.z s // [61] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3] __b3_from___b2: @@ -9740,9 +9733,9 @@ Removing instruction jmp __b2 Removing instruction jmp __b1 Removing instruction jmp __b1 Succesful ASM optimization Pass5NextJumpElimination -Fixing long branch [582] beq __b12 to bne -Fixing long branch [476] bpl __b1 to bmi -Fixing long branch [488] bpl __b4 to bmi +Fixing long branch [581] beq __b12 to bne +Fixing long branch [475] bpl __b1 to bmi +Fixing long branch [487] bpl __b4 to bmi FINAL SYMBOL TABLE (label) @1 @@ -9781,12 +9774,12 @@ FINAL SYMBOL TABLE }} (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:14 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:14 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:20 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:30 4.0 +(signed word~) atan2_16::$2 zp[2]:20 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:30 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -9810,59 +9803,59 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:28 3.0 -(word) atan2_16::angle#11 angle zp[2]:28 4.0 -(word) atan2_16::angle#12 angle zp[2]:28 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:28 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:28 2002.0 -(word) atan2_16::angle#3 angle zp[2]:28 2002.0 -(word) atan2_16::angle#4 angle zp[2]:28 4.0 -(word) atan2_16::angle#5 angle zp[2]:28 4.0 -(word) atan2_16::angle#6 angle zp[2]:28 2004.0 +(word) atan2_16::angle#1 angle zp[2]:28 150001.5 +(word) atan2_16::angle#11 angle zp[2]:28 200002.0 +(word) atan2_16::angle#12 angle zp[2]:28 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:28 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:28 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:28 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:28 200002.0 +(word) atan2_16::angle#5 angle zp[2]:28 200002.0 +(word) atan2_16::angle#6 angle zp[2]:28 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:28 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:28 202.0 +(word) atan2_16::return#0 return zp[2]:28 70001.0 +(word) atan2_16::return#2 return zp[2]:28 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:24 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:24 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:14 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:14 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:14 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:14 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:14 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:14 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:14 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:14 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:14 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:14 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:30 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:30 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:30 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:30 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:30 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:30 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:30 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:30 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:30 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:30 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:30 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:30 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:26 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:26 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:12 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:12 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:12 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:12 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:12 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:12 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:12 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:12 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:12 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:12 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:20 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:20 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:20 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:20 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:20 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:20 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:20 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:20 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:20 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:20 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:20 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:20 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:20 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:20 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -9874,66 +9867,66 @@ FINAL SYMBOL TABLE (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:20 1001.0 -(word*) bsearch16u::items#1 items zp[2]:20 2.0 -(word*) bsearch16u::items#2 items zp[2]:20 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:20 1501.5 +(word*) bsearch16u::items#0 items zp[2]:20 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:20 550001.0 +(word*) bsearch16u::items#2 items zp[2]:20 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:20 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:26 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:26 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:28 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:28 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:30 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:30 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:20 2.0 -(word*) bsearch16u::return#2 return zp[2]:20 6.0 -(word*) bsearch16u::return#3 return zp[2]:20 4.0 -(word*) bsearch16u::return#6 return zp[2]:20 4.0 +(word*) bsearch16u::return#1 return zp[2]:20 700001.0 +(word*) bsearch16u::return#2 return zp[2]:20 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:20 200002.0 +(word*) bsearch16u::return#6 return zp[2]:20 2000002.0 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 reg byte a 2002.0 +(byte~) doplasma::$2 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 (label) doplasma::@4 (label) doplasma::@return (byte*) doplasma::angle -(byte*) doplasma::angle#0 angle zp[2]:7 1.0 -(byte*) doplasma::angle#1 angle zp[2]:7 50.5 -(byte*) doplasma::angle#4 angle zp[2]:7 172.14285714285714 +(byte*) doplasma::angle#0 angle zp[2]:7 500.5 +(byte*) doplasma::angle#1 angle zp[2]:7 50000.5 +(byte*) doplasma::angle#4 angle zp[2]:7 171571.99999999997 (byte*) doplasma::dist -(byte*) doplasma::dist#0 dist zp[2]:9 1.3333333333333333 -(byte*) doplasma::dist#1 dist zp[2]:9 67.33333333333333 -(byte*) doplasma::dist#4 dist zp[2]:9 150.625 +(byte*) doplasma::dist#0 dist zp[2]:9 667.3333333333334 +(byte*) doplasma::dist#1 dist zp[2]:9 66667.33333333333 +(byte*) doplasma::dist#4 dist zp[2]:9 150125.5 (byte*) doplasma::screen -(byte*) doplasma::screen#2 screen zp[2]:4 40.4 -(byte*) doplasma::screen#5 screen zp[2]:4 200.83333333333334 -(byte*) doplasma::screen#6 screen zp[2]:4 0.4 +(byte*) doplasma::screen#2 screen zp[2]:4 40000.4 +(byte*) doplasma::screen#5 screen zp[2]:4 200167.33333333334 +(byte*) doplasma::screen#6 screen zp[2]:4 200.2 (byte*) doplasma::sin_x -(byte*) doplasma::sin_x#0 sin_x zp[2]:20 77.15384615384616 +(byte*) doplasma::sin_x#0 sin_x zp[2]:20 77000.15384615384 (byte*) doplasma::sin_y -(byte*) doplasma::sin_y#0 sin_y zp[2]:30 83.58333333333334 +(byte*) doplasma::sin_y#0 sin_y zp[2]:30 83416.83333333334 (byte) doplasma::x -(byte) doplasma::x#1 reg byte x 1501.5 -(byte) doplasma::x#2 reg byte x 1668.3333333333335 +(byte) doplasma::x#1 reg byte x 1500001.5 +(byte) doplasma::x#2 reg byte x 1666668.3333333335 (byte) doplasma::y -(byte) doplasma::y#1 y zp[1]:6 151.5 -(byte) doplasma::y#4 y zp[1]:6 22.444444444444443 +(byte) doplasma::y#1 y zp[1]:6 150001.5 +(byte) doplasma::y#4 y zp[1]:6 22222.444444444445 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:12 0.6000000000000001 -(byte*) heap_head#12 heap_head zp[2]:12 6.0 +(byte*) heap_head#1 heap_head zp[2]:12 1100.4 +(byte*) heap_head#12 heap_head zp[2]:12 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:28 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:28 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -9941,37 +9934,37 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:23 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:23 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:28 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:28 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:9 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:9 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:9 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:9 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:9 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:9 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:9 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:9 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:7 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:7 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:7 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:7 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:7 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:7 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:22 101.0 -(byte) init_angle_screen::x#2 x zp[1]:22 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:22 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:22 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:11 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:11 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:11 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:11 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:24 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:24 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:6 16.5 -(byte) init_angle_screen::y#5 y zp[1]:6 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:6 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:6 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:26 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:26 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -9988,56 +9981,56 @@ FINAL SYMBOL TABLE (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:26 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:26 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:7 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:7 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:9 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:9 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:9 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:9 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:9 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:9 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:7 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:7 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:7 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:7 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:22 101.0 -(byte) init_dist_screen::x#2 x zp[1]:22 30.3 +(byte) init_dist_screen::x#1 x zp[1]:22 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:22 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:11 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:11 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:11 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:11 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:26 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:26 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:6 16.5 -(byte) init_dist_screen::y#10 y zp[1]:6 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:6 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:6 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:24 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:24 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:30 11.0 -(word) init_squares::sqr#2 sqr zp[2]:30 5.5 +(word) init_squares::sqr#1 sqr zp[2]:30 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:30 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:28 4.0 -(word*) init_squares::squares#1 squares zp[2]:28 4.4 -(word*) init_squares::squares#2 squares zp[2]:28 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:28 2002.0 +(word*) init_squares::squares#1 squares zp[2]:28 4000.4 +(word*) init_squares::squares#2 squares zp[2]:28 10334.666666666666 (void()) main() (label) main::@1 (label) main::@2 @@ -10057,13 +10050,13 @@ FINAL SYMBOL TABLE (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) make_plasma_charset((byte*) make_plasma_charset::charset) -(word~) make_plasma_charset::$10 zp[2]:30 202.0 -(word~) make_plasma_charset::$11 zp[2]:30 202.0 -(byte~) make_plasma_charset::$12 reg byte a 22.0 -(byte*~) make_plasma_charset::$16 zp[2]:30 202.0 -(byte~) make_plasma_charset::$3 reg byte a 22.0 -(byte~) make_plasma_charset::$6 reg byte a 2002.0 -(byte~) make_plasma_charset::$7 zp[1]:22 2002.0 +(word~) make_plasma_charset::$10 zp[2]:30 20002.0 +(word~) make_plasma_charset::$11 zp[2]:30 20002.0 +(byte~) make_plasma_charset::$12 reg byte a 2002.0 +(byte*~) make_plasma_charset::$16 zp[2]:30 20002.0 +(byte~) make_plasma_charset::$3 reg byte x 2002.0 +(byte~) make_plasma_charset::$6 reg byte a 200002.0 +(byte~) make_plasma_charset::$7 zp[1]:22 200002.0 (label) make_plasma_charset::@1 (label) make_plasma_charset::@10 (label) make_plasma_charset::@11 @@ -10079,42 +10072,42 @@ FINAL SYMBOL TABLE (label) make_plasma_charset::@9 (label) make_plasma_charset::@return (byte) make_plasma_charset::b -(byte) make_plasma_charset::b#1 reg byte y 2002.0 -(byte) make_plasma_charset::b#2 reg byte y 282.1818181818182 -(byte) make_plasma_charset::b#6 reg byte y 1501.5 +(byte) make_plasma_charset::b#1 reg byte y 200002.0 +(byte) make_plasma_charset::b#2 reg byte y 28182.181818181816 +(byte) make_plasma_charset::b#6 reg byte y 150001.5 (const byte*) make_plasma_charset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) make_plasma_charset::c -(word) make_plasma_charset::c#1 c zp[2]:9 22.0 -(word) make_plasma_charset::c#2 c zp[2]:9 5.777777777777778 +(word) make_plasma_charset::c#1 c zp[2]:9 2002.0 +(word) make_plasma_charset::c#2 c zp[2]:9 555.7777777777778 (byte*) make_plasma_charset::charset (byte) make_plasma_charset::i -(byte) make_plasma_charset::i#1 i zp[1]:6 202.0 -(byte) make_plasma_charset::i#2 i zp[1]:6 23.764705882352942 +(byte) make_plasma_charset::i#1 i zp[1]:6 20002.0 +(byte) make_plasma_charset::i#2 i zp[1]:6 2353.176470588235 (byte) make_plasma_charset::ii -(byte) make_plasma_charset::ii#1 reg byte x 2002.0 -(byte) make_plasma_charset::ii#2 reg byte x 400.4 +(byte) make_plasma_charset::ii#1 reg byte x 200002.0 +(byte) make_plasma_charset::ii#2 reg byte x 40000.4 (byte) make_plasma_charset::s -(byte) make_plasma_charset::s#0 s zp[1]:23 53.26315789473684 +(byte) make_plasma_charset::s#0 s zp[1]:23 5315.894736842105 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:14 0.6666666666666666 +(byte*) malloc::mem#0 mem zp[2]:14 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 size zp[2]:14 2.0 +(word) malloc::size#3 size zp[2]:14 10001.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 14285.857142857143 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:7 4.0 +(byte*) memset::dst#1 dst zp[2]:7 200002.0 +(byte*) memset::dst#2 dst zp[2]:7 136668.3333333333 +(byte*) memset::dst#4 dst zp[2]:7 20002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:20 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:20 18333.666666666664 (word) memset::num (void*) memset::return (void*) memset::str @@ -10124,9 +10117,9 @@ FINAL SYMBOL TABLE (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:4 1.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:4 846.3076923076923 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -10135,42 +10128,42 @@ FINAL SYMBOL TABLE (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (byte) sin_offset_x -(byte) sin_offset_x#10 sin_offset_x zp[1]:2 1.625 -(byte) sin_offset_x#12 sin_offset_x zp[1]:2 2.666666666666667 -(byte) sin_offset_x#14 sin_offset_x zp[1]:2 11.0 +(byte) sin_offset_x#10 sin_offset_x zp[1]:2 137.75 +(byte) sin_offset_x#12 sin_offset_x zp[1]:2 133.66666666666669 +(byte) sin_offset_x#14 sin_offset_x zp[1]:2 101.0 (byte) sin_offset_y -(byte) sin_offset_y#10 sin_offset_y zp[1]:3 1.5294117647058825 -(byte) sin_offset_y#12 sin_offset_y zp[1]:3 3.0 -(byte) sin_offset_y#14 sin_offset_y zp[1]:3 11.0 +(byte) sin_offset_y#10 sin_offset_y zp[1]:3 129.64705882352942 +(byte) sin_offset_y#12 sin_offset_y zp[1]:3 150.375 +(byte) sin_offset_y#14 sin_offset_y zp[1]:3 101.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:26 28.5 -(word) sqr::return#2 return_1 zp[2]:24 22.0 -(word) sqr::return#3 return zp[2]:26 202.0 +(word) sqr::return#0 return zp[2]:26 27750.75 +(word) sqr::return#2 return_1 zp[2]:24 2002.0 +(word) sqr::return#3 return zp[2]:26 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:20 2.0 -(word~) sqrt::$3 zp[2]:20 4.0 +(word~) sqrt::$1 zp[2]:20 100001.0 +(word~) sqrt::$3 zp[2]:20 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:20 4.0 +(word*) sqrt::found#0 found zp[2]:20 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:26 103.0 +(word) sqrt::val#0 val zp[2]:26 110002.0 zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] @@ -10196,7 +10189,7 @@ zp[2]:16 [ SCREEN_DIST#0 ] zp[2]:18 [ SCREEN_ANGLE#0 ] reg byte a [ doplasma::$2 ] zp[2]:20 [ memset::end#0 doplasma::sin_x#0 bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] -reg byte a [ make_plasma_charset::$3 ] +reg byte x [ make_plasma_charset::$3 ] reg byte a [ make_plasma_charset::$12 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ make_plasma_charset::$6 ] @@ -10228,7 +10221,7 @@ reg byte a [ init_squares::$4 ] FINAL ASSEMBLER -Score: 1210209 +Score: 1210189 // File Comments // Plasma based on the distance/angle to the screen center @@ -10645,12 +10638,11 @@ make_plasma_charset: { // make_plasma_charset::@2 __b2: // make_plasma_charset::@3] // [61] phi (byte) make_plasma_charset::i#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuz1=vbuc1 diff --git a/src/test/ref/plasma-center.sym b/src/test/ref/plasma-center.sym index 0b891085d..5afe3c54f 100644 --- a/src/test/ref/plasma-center.sym +++ b/src/test/ref/plasma-center.sym @@ -34,12 +34,12 @@ }} (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:14 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:14 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:20 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:30 4.0 +(signed word~) atan2_16::$2 zp[2]:20 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:30 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -63,59 +63,59 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:28 3.0 -(word) atan2_16::angle#11 angle zp[2]:28 4.0 -(word) atan2_16::angle#12 angle zp[2]:28 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:28 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:28 2002.0 -(word) atan2_16::angle#3 angle zp[2]:28 2002.0 -(word) atan2_16::angle#4 angle zp[2]:28 4.0 -(word) atan2_16::angle#5 angle zp[2]:28 4.0 -(word) atan2_16::angle#6 angle zp[2]:28 2004.0 +(word) atan2_16::angle#1 angle zp[2]:28 150001.5 +(word) atan2_16::angle#11 angle zp[2]:28 200002.0 +(word) atan2_16::angle#12 angle zp[2]:28 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:28 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:28 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:28 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:28 200002.0 +(word) atan2_16::angle#5 angle zp[2]:28 200002.0 +(word) atan2_16::angle#6 angle zp[2]:28 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:28 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:28 202.0 +(word) atan2_16::return#0 return zp[2]:28 70001.0 +(word) atan2_16::return#2 return zp[2]:28 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:24 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:24 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:14 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:14 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:14 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:14 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:14 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:14 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:14 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:14 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:14 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:14 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:30 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:30 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:30 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:30 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:30 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:30 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:30 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:30 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:30 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:30 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:30 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:30 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:26 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:26 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:12 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:12 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:12 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:12 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:12 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:12 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:12 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:12 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:12 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:12 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:20 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:20 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:20 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:20 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:20 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:20 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:20 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:20 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:20 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:20 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:20 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:20 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:20 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:20 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -127,66 +127,66 @@ (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:20 1001.0 -(word*) bsearch16u::items#1 items zp[2]:20 2.0 -(word*) bsearch16u::items#2 items zp[2]:20 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:20 1501.5 +(word*) bsearch16u::items#0 items zp[2]:20 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:20 550001.0 +(word*) bsearch16u::items#2 items zp[2]:20 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:20 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:26 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:26 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:28 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:28 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:30 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:30 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:20 2.0 -(word*) bsearch16u::return#2 return zp[2]:20 6.0 -(word*) bsearch16u::return#3 return zp[2]:20 4.0 -(word*) bsearch16u::return#6 return zp[2]:20 4.0 +(word*) bsearch16u::return#1 return zp[2]:20 700001.0 +(word*) bsearch16u::return#2 return zp[2]:20 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:20 200002.0 +(word*) bsearch16u::return#6 return zp[2]:20 2000002.0 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$2 reg byte a 2002.0 +(byte~) doplasma::$2 reg byte a 2000002.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 (label) doplasma::@4 (label) doplasma::@return (byte*) doplasma::angle -(byte*) doplasma::angle#0 angle zp[2]:7 1.0 -(byte*) doplasma::angle#1 angle zp[2]:7 50.5 -(byte*) doplasma::angle#4 angle zp[2]:7 172.14285714285714 +(byte*) doplasma::angle#0 angle zp[2]:7 500.5 +(byte*) doplasma::angle#1 angle zp[2]:7 50000.5 +(byte*) doplasma::angle#4 angle zp[2]:7 171571.99999999997 (byte*) doplasma::dist -(byte*) doplasma::dist#0 dist zp[2]:9 1.3333333333333333 -(byte*) doplasma::dist#1 dist zp[2]:9 67.33333333333333 -(byte*) doplasma::dist#4 dist zp[2]:9 150.625 +(byte*) doplasma::dist#0 dist zp[2]:9 667.3333333333334 +(byte*) doplasma::dist#1 dist zp[2]:9 66667.33333333333 +(byte*) doplasma::dist#4 dist zp[2]:9 150125.5 (byte*) doplasma::screen -(byte*) doplasma::screen#2 screen zp[2]:4 40.4 -(byte*) doplasma::screen#5 screen zp[2]:4 200.83333333333334 -(byte*) doplasma::screen#6 screen zp[2]:4 0.4 +(byte*) doplasma::screen#2 screen zp[2]:4 40000.4 +(byte*) doplasma::screen#5 screen zp[2]:4 200167.33333333334 +(byte*) doplasma::screen#6 screen zp[2]:4 200.2 (byte*) doplasma::sin_x -(byte*) doplasma::sin_x#0 sin_x zp[2]:20 77.15384615384616 +(byte*) doplasma::sin_x#0 sin_x zp[2]:20 77000.15384615384 (byte*) doplasma::sin_y -(byte*) doplasma::sin_y#0 sin_y zp[2]:30 83.58333333333334 +(byte*) doplasma::sin_y#0 sin_y zp[2]:30 83416.83333333334 (byte) doplasma::x -(byte) doplasma::x#1 reg byte x 1501.5 -(byte) doplasma::x#2 reg byte x 1668.3333333333335 +(byte) doplasma::x#1 reg byte x 1500001.5 +(byte) doplasma::x#2 reg byte x 1666668.3333333335 (byte) doplasma::y -(byte) doplasma::y#1 y zp[1]:6 151.5 -(byte) doplasma::y#4 y zp[1]:6 22.444444444444443 +(byte) doplasma::y#1 y zp[1]:6 150001.5 +(byte) doplasma::y#4 y zp[1]:6 22222.444444444445 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:12 0.6000000000000001 -(byte*) heap_head#12 heap_head zp[2]:12 6.0 +(byte*) heap_head#1 heap_head zp[2]:12 1100.4 +(byte*) heap_head#12 heap_head zp[2]:12 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:28 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:28 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -194,37 +194,37 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:23 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:23 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:28 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:28 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:9 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:9 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:9 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:9 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:9 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:9 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:9 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:9 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:7 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:7 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:7 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:7 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:7 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:7 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:22 101.0 -(byte) init_angle_screen::x#2 x zp[1]:22 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:22 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:22 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:11 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:11 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:11 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:11 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:24 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:24 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:6 16.5 -(byte) init_angle_screen::y#5 y zp[1]:6 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:6 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:6 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:26 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:26 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -241,56 +241,56 @@ (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:26 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:26 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:7 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:7 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:9 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:9 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:9 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:9 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:9 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:9 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:7 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:7 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:7 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:7 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:22 101.0 -(byte) init_dist_screen::x#2 x zp[1]:22 30.3 +(byte) init_dist_screen::x#1 x zp[1]:22 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:22 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:11 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:11 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:11 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:11 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:26 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:26 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:6 16.5 -(byte) init_dist_screen::y#10 y zp[1]:6 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:6 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:6 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:24 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:24 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:30 11.0 -(word) init_squares::sqr#2 sqr zp[2]:30 5.5 +(word) init_squares::sqr#1 sqr zp[2]:30 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:30 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:28 4.0 -(word*) init_squares::squares#1 squares zp[2]:28 4.4 -(word*) init_squares::squares#2 squares zp[2]:28 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:28 2002.0 +(word*) init_squares::squares#1 squares zp[2]:28 4000.4 +(word*) init_squares::squares#2 squares zp[2]:28 10334.666666666666 (void()) main() (label) main::@1 (label) main::@2 @@ -310,13 +310,13 @@ (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) make_plasma_charset((byte*) make_plasma_charset::charset) -(word~) make_plasma_charset::$10 zp[2]:30 202.0 -(word~) make_plasma_charset::$11 zp[2]:30 202.0 -(byte~) make_plasma_charset::$12 reg byte a 22.0 -(byte*~) make_plasma_charset::$16 zp[2]:30 202.0 -(byte~) make_plasma_charset::$3 reg byte a 22.0 -(byte~) make_plasma_charset::$6 reg byte a 2002.0 -(byte~) make_plasma_charset::$7 zp[1]:22 2002.0 +(word~) make_plasma_charset::$10 zp[2]:30 20002.0 +(word~) make_plasma_charset::$11 zp[2]:30 20002.0 +(byte~) make_plasma_charset::$12 reg byte a 2002.0 +(byte*~) make_plasma_charset::$16 zp[2]:30 20002.0 +(byte~) make_plasma_charset::$3 reg byte x 2002.0 +(byte~) make_plasma_charset::$6 reg byte a 200002.0 +(byte~) make_plasma_charset::$7 zp[1]:22 200002.0 (label) make_plasma_charset::@1 (label) make_plasma_charset::@10 (label) make_plasma_charset::@11 @@ -332,42 +332,42 @@ (label) make_plasma_charset::@9 (label) make_plasma_charset::@return (byte) make_plasma_charset::b -(byte) make_plasma_charset::b#1 reg byte y 2002.0 -(byte) make_plasma_charset::b#2 reg byte y 282.1818181818182 -(byte) make_plasma_charset::b#6 reg byte y 1501.5 +(byte) make_plasma_charset::b#1 reg byte y 200002.0 +(byte) make_plasma_charset::b#2 reg byte y 28182.181818181816 +(byte) make_plasma_charset::b#6 reg byte y 150001.5 (const byte*) make_plasma_charset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (word) make_plasma_charset::c -(word) make_plasma_charset::c#1 c zp[2]:9 22.0 -(word) make_plasma_charset::c#2 c zp[2]:9 5.777777777777778 +(word) make_plasma_charset::c#1 c zp[2]:9 2002.0 +(word) make_plasma_charset::c#2 c zp[2]:9 555.7777777777778 (byte*) make_plasma_charset::charset (byte) make_plasma_charset::i -(byte) make_plasma_charset::i#1 i zp[1]:6 202.0 -(byte) make_plasma_charset::i#2 i zp[1]:6 23.764705882352942 +(byte) make_plasma_charset::i#1 i zp[1]:6 20002.0 +(byte) make_plasma_charset::i#2 i zp[1]:6 2353.176470588235 (byte) make_plasma_charset::ii -(byte) make_plasma_charset::ii#1 reg byte x 2002.0 -(byte) make_plasma_charset::ii#2 reg byte x 400.4 +(byte) make_plasma_charset::ii#1 reg byte x 200002.0 +(byte) make_plasma_charset::ii#2 reg byte x 40000.4 (byte) make_plasma_charset::s -(byte) make_plasma_charset::s#0 s zp[1]:23 53.26315789473684 +(byte) make_plasma_charset::s#0 s zp[1]:23 5315.894736842105 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:14 0.6666666666666666 +(byte*) malloc::mem#0 mem zp[2]:14 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 size zp[2]:14 2.0 +(word) malloc::size#3 size zp[2]:14 10001.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 14285.857142857143 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:7 4.0 +(byte*) memset::dst#1 dst zp[2]:7 200002.0 +(byte*) memset::dst#2 dst zp[2]:7 136668.3333333333 +(byte*) memset::dst#4 dst zp[2]:7 20002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:20 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:20 18333.666666666664 (word) memset::num (void*) memset::return (void*) memset::str @@ -377,9 +377,9 @@ (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) '.' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 4.333333333333333 -(byte*) print_char_cursor#18 print_char_cursor zp[2]:4 1.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 16.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 3667.333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:4 846.3076923076923 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:4 1501.5 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -388,42 +388,42 @@ (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return -(byte) sid_rnd::return#0 reg byte a 334.33333333333337 -(byte) sid_rnd::return#2 reg byte a 2002.0 +(byte) sid_rnd::return#0 reg byte a 366667.3333333334 +(byte) sid_rnd::return#2 reg byte a 200002.0 (void()) sid_rnd_init() (label) sid_rnd_init::@return (byte) sin_offset_x -(byte) sin_offset_x#10 sin_offset_x zp[1]:2 1.625 -(byte) sin_offset_x#12 sin_offset_x zp[1]:2 2.666666666666667 -(byte) sin_offset_x#14 sin_offset_x zp[1]:2 11.0 +(byte) sin_offset_x#10 sin_offset_x zp[1]:2 137.75 +(byte) sin_offset_x#12 sin_offset_x zp[1]:2 133.66666666666669 +(byte) sin_offset_x#14 sin_offset_x zp[1]:2 101.0 (byte) sin_offset_y -(byte) sin_offset_y#10 sin_offset_y zp[1]:3 1.5294117647058825 -(byte) sin_offset_y#12 sin_offset_y zp[1]:3 3.0 -(byte) sin_offset_y#14 sin_offset_y zp[1]:3 11.0 +(byte) sin_offset_y#10 sin_offset_y zp[1]:3 129.64705882352942 +(byte) sin_offset_y#12 sin_offset_y zp[1]:3 150.375 +(byte) sin_offset_y#14 sin_offset_y zp[1]:3 101.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:26 28.5 -(word) sqr::return#2 return_1 zp[2]:24 22.0 -(word) sqr::return#3 return zp[2]:26 202.0 +(word) sqr::return#0 return zp[2]:26 27750.75 +(word) sqr::return#2 return_1 zp[2]:24 2002.0 +(word) sqr::return#3 return zp[2]:26 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:20 2.0 -(word~) sqrt::$3 zp[2]:20 4.0 +(word~) sqrt::$1 zp[2]:20 100001.0 +(word~) sqrt::$3 zp[2]:20 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:20 4.0 +(word*) sqrt::found#0 found zp[2]:20 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:26 103.0 +(word) sqrt::val#0 val zp[2]:26 110002.0 zp[1]:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] zp[1]:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] @@ -449,7 +449,7 @@ zp[2]:16 [ SCREEN_DIST#0 ] zp[2]:18 [ SCREEN_ANGLE#0 ] reg byte a [ doplasma::$2 ] zp[2]:20 [ memset::end#0 doplasma::sin_x#0 bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] -reg byte a [ make_plasma_charset::$3 ] +reg byte x [ make_plasma_charset::$3 ] reg byte a [ make_plasma_charset::$12 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ make_plasma_charset::$6 ] diff --git a/src/test/ref/platform-asm6502.log b/src/test/ref/platform-asm6502.log index 1a0392ccd..88f76303c 100644 --- a/src/test/ref/platform-asm6502.log +++ b/src/test/ref/platform-asm6502.log @@ -54,7 +54,7 @@ Simplifying constant integer cast $a Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -111,8 +111,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 18.333333333333332 +(byte) main::i#1 202.0 +(byte) main::i#2 168.33333333333331 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -183,7 +183,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] @@ -273,8 +273,8 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/platform-asm6502.sym b/src/test/ref/platform-asm6502.sym index 1695c8157..782a24d09 100644 --- a/src/test/ref/platform-asm6502.sym +++ b/src/test/ref/platform-asm6502.sym @@ -7,7 +7,7 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 18.333333333333332 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 168.33333333333331 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/plus-0.log b/src/test/ref/plus-0.log index 29016c5dd..91e5052ef 100644 --- a/src/test/ref/plus-0.log +++ b/src/test/ref/plus-0.log @@ -117,9 +117,9 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) fill::$0 ← (byte) fill::j#2 * (byte) $28 -Alias (byte) fill::i#2 = (byte) fill::i#3 -Alias (byte*) fill::screen#2 = (byte*) fill::screen#5 -Alias (byte) fill::ch#2 = (byte) fill::ch#5 +Alias fill::i#2 = fill::i#3 +Alias fill::screen#2 = fill::screen#5 +Alias fill::ch#2 = fill::ch#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) fill::screen#2 (byte*) fill::screen#3 Identical Phi Values (byte) fill::ch#2 (byte) fill::ch#3 @@ -171,7 +171,7 @@ Simplifying expression containing zero fill::screen#4 in [7] (byte*~) fill::$1 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) fill::$0 Successful SSA optimization PassNEliminateUnusedVars -Alias (byte*) fill::screen#4 = (byte*~) fill::$1 +Alias fill::screen#4 = fill::$1 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: fill::@2_1 tails: fill::@2_1 blocks: fill::@2_1 Successful SSA optimization Pass2LoopUnroll @@ -313,16 +313,16 @@ fill::@return: scope:[fill] from fill::@3 VARIABLE REGISTER WEIGHTS (void()) fill((byte*) fill::screen , (byte) fill::ch) -(byte*~) fill::$5 22.0 -(byte*~) fill::$7 22.0 +(byte*~) fill::$5 2002.0 +(byte*~) fill::$7 2002.0 (byte) fill::ch -(byte) fill::ch#4 3.666666666666667 +(byte) fill::ch#4 333.6666666666667 (byte) fill::i -(byte) fill::i#1 16.5 -(byte) fill::i#4 9.166666666666666 +(byte) fill::i#1 1501.5 +(byte) fill::i#4 834.1666666666667 (byte) fill::j (byte*) fill::screen -(byte*) fill::screen#4 3.666666666666667 +(byte*) fill::screen#4 333.6666666666667 (void()) main() Initial phi equivalence classes @@ -480,17 +480,17 @@ fill: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] (byte*~) fill::$5 ← (byte*) fill::screen#4 + (byte) 1*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ) always clobbers reg byte a +Statement [12] (byte*~) fill::$5 ← (byte*) fill::screen#4 + (byte) 1*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ fill::ch#4 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ fill::i#4 fill::i#1 ] -Statement [13] *((byte*~) fill::$5 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] ) always clobbers reg byte a -Statement [14] (byte*~) fill::$7 ← (byte*) fill::screen#4 + (byte) 2*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ) always clobbers reg byte a -Statement [15] *((byte*~) fill::$7 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] ) always clobbers reg byte a -Statement [11] *((byte*) fill::screen#4 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] ) always clobbers reg byte a -Statement [12] (byte*~) fill::$5 ← (byte*) fill::screen#4 + (byte) 1*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ) always clobbers reg byte a -Statement [13] *((byte*~) fill::$5 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] ) always clobbers reg byte a -Statement [14] (byte*~) fill::$7 ← (byte*) fill::screen#4 + (byte) 2*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ) always clobbers reg byte a -Statement [15] *((byte*~) fill::$7 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] ) always clobbers reg byte a +Statement [13] *((byte*~) fill::$5 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } ) always clobbers reg byte a +Statement [14] (byte*~) fill::$7 ← (byte*) fill::screen#4 + (byte) 2*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] { } ) always clobbers reg byte a +Statement [15] *((byte*~) fill::$7 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) fill::screen#4 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } ) always clobbers reg byte a +Statement [12] (byte*~) fill::$5 ← (byte*) fill::screen#4 + (byte) 1*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$5 ] { } ) always clobbers reg byte a +Statement [13] *((byte*~) fill::$5 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } ) always clobbers reg byte a +Statement [14] (byte*~) fill::$7 ← (byte*) fill::screen#4 + (byte) 2*(byte) $28 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 fill::$7 ] { } ) always clobbers reg byte a +Statement [15] *((byte*~) fill::$7 + (byte) fill::i#4) ← (byte) fill::ch#4 [ fill::screen#4 fill::ch#4 fill::i#4 ] ( main:2::fill:5 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } main:2::fill:7 [ fill::screen#4 fill::ch#4 fill::i#4 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ fill::screen#4 ] : zp[2]:2 , Potential registers zp[1]:4 [ fill::ch#4 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ fill::i#4 fill::i#1 ] : zp[1]:5 , reg byte x , reg byte y , @@ -498,7 +498,7 @@ Potential registers zp[2]:6 [ fill::$5 ] : zp[2]:6 , Potential registers zp[2]:8 [ fill::$7 ] : zp[2]:8 , REGISTER UPLIFT SCOPES -Uplift Scope [fill] 25.67: zp[1]:5 [ fill::i#4 fill::i#1 ] 22: zp[2]:6 [ fill::$5 ] 22: zp[2]:8 [ fill::$7 ] 3.67: zp[2]:2 [ fill::screen#4 ] 3.67: zp[1]:4 [ fill::ch#4 ] +Uplift Scope [fill] 2,335.67: zp[1]:5 [ fill::i#4 fill::i#1 ] 2,002: zp[2]:6 [ fill::$5 ] 2,002: zp[2]:8 [ fill::$7 ] 333.67: zp[2]:2 [ fill::screen#4 ] 333.67: zp[1]:4 [ fill::ch#4 ] Uplift Scope [main] Uplift Scope [] @@ -680,8 +680,8 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) fill((byte*) fill::screen , (byte) fill::ch) -(byte*~) fill::$5 zp[2]:4 22.0 -(byte*~) fill::$7 zp[2]:6 22.0 +(byte*~) fill::$5 zp[2]:4 2002.0 +(byte*~) fill::$7 zp[2]:6 2002.0 (label) fill::@1 (label) fill::@2 (label) fill::@2_1 @@ -689,13 +689,13 @@ FINAL SYMBOL TABLE (label) fill::@3 (label) fill::@return (byte) fill::ch -(byte) fill::ch#4 reg byte x 3.666666666666667 +(byte) fill::ch#4 reg byte x 333.6666666666667 (byte) fill::i -(byte) fill::i#1 reg byte y 16.5 -(byte) fill::i#4 reg byte y 9.166666666666666 +(byte) fill::i#1 reg byte y 1501.5 +(byte) fill::i#4 reg byte y 834.1666666666667 (byte) fill::j (byte*) fill::screen -(byte*) fill::screen#4 screen zp[2]:2 3.666666666666667 +(byte*) fill::screen#4 screen zp[2]:2 333.6666666666667 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/test/ref/plus-0.sym b/src/test/ref/plus-0.sym index 4d743f6fd..636b3ab8b 100644 --- a/src/test/ref/plus-0.sym +++ b/src/test/ref/plus-0.sym @@ -2,8 +2,8 @@ (label) @begin (label) @end (void()) fill((byte*) fill::screen , (byte) fill::ch) -(byte*~) fill::$5 zp[2]:4 22.0 -(byte*~) fill::$7 zp[2]:6 22.0 +(byte*~) fill::$5 zp[2]:4 2002.0 +(byte*~) fill::$7 zp[2]:6 2002.0 (label) fill::@1 (label) fill::@2 (label) fill::@2_1 @@ -11,13 +11,13 @@ (label) fill::@3 (label) fill::@return (byte) fill::ch -(byte) fill::ch#4 reg byte x 3.666666666666667 +(byte) fill::ch#4 reg byte x 333.6666666666667 (byte) fill::i -(byte) fill::i#1 reg byte y 16.5 -(byte) fill::i#4 reg byte y 9.166666666666666 +(byte) fill::i#1 reg byte y 1501.5 +(byte) fill::i#4 reg byte y 834.1666666666667 (byte) fill::j (byte*) fill::screen -(byte*) fill::screen#4 screen zp[2]:2 3.666666666666667 +(byte*) fill::screen#4 screen zp[2]:2 333.6666666666667 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/test/ref/pointer-anding.log b/src/test/ref/pointer-anding.log index b505b2821..46c1e2b4c 100644 --- a/src/test/ref/pointer-anding.log +++ b/src/test/ref/pointer-anding.log @@ -150,19 +150,19 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(signed word~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 +(signed word~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 2.2 +(byte) main::i#1 151.5 +(byte) main::i#2 20.2 (signed word*) main::pos_ptr -(signed word*) main::pos_ptr#1 7.333333333333333 -(signed word*) main::pos_ptr#2 6.111111111111112 +(signed word*) main::pos_ptr#1 67.33333333333333 +(signed word*) main::pos_ptr#2 56.11111111111111 (byte*) main::vram_ptr -(byte*) main::vram_ptr#1 11.0 -(byte*) main::vram_ptr#2 5.5 -(byte*) main::vram_ptr#3 6.6000000000000005 +(byte*) main::vram_ptr#1 101.0 +(byte*) main::vram_ptr#2 50.5 +(byte*) main::vram_ptr#3 60.599999999999994 Initial phi equivalence classes [ main::pos_ptr#2 main::pos_ptr#1 ] @@ -318,26 +318,24 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((signed word*) main::pos_ptr#2) ← (signed word) $55aa [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((signed word*) main::pos_ptr#2) ← (signed word) $55aa [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [7] (signed word~) main::$0 ← *((signed word*) main::pos_ptr#2) & (signed word) $aa55 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte~) main::$1 ← < (signed word~) main::$0 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$1 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::vram_ptr#3) ← (byte~) main::$1 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ) always clobbers reg byte y -Statement [10] (byte*) main::vram_ptr#1 ← ++ (byte*) main::vram_ptr#3 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$2 ← > *((signed word*) main::pos_ptr#2) [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*) main::vram_ptr#1) ← (byte~) main::$2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ) always clobbers reg byte y -Statement [13] (byte*) main::vram_ptr#2 ← ++ (byte*) main::vram_ptr#1 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ) always clobbers reg byte a -Statement [14] (signed word*) main::pos_ptr#1 ← (signed word*) main::pos_ptr#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ( main:2 [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ) always clobbers reg byte a -Statement [6] *((signed word*) main::pos_ptr#2) ← (signed word) $55aa [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (signed word~) main::$0 ← *((signed word*) main::pos_ptr#2) & (signed word) $aa55 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte~) main::$1 ← < (signed word~) main::$0 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$1 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::vram_ptr#3) ← (byte~) main::$1 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ) always clobbers reg byte y -Statement [10] (byte*) main::vram_ptr#1 ← ++ (byte*) main::vram_ptr#3 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$2 ← > *((signed word*) main::pos_ptr#2) [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*) main::vram_ptr#1) ← (byte~) main::$2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ) always clobbers reg byte y -Statement [13] (byte*) main::vram_ptr#2 ← ++ (byte*) main::vram_ptr#1 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ) always clobbers reg byte a -Statement [14] (signed word*) main::pos_ptr#1 ← (signed word*) main::pos_ptr#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ( main:2 [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ) always clobbers reg byte a +Statement [7] (signed word~) main::$0 ← *((signed word*) main::pos_ptr#2) & (signed word) $aa55 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((byte*) main::vram_ptr#3) ← (byte~) main::$1 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] { } ) always clobbers reg byte y +Statement [10] (byte*) main::vram_ptr#1 ← ++ (byte*) main::vram_ptr#3 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$2 ← > *((signed word*) main::pos_ptr#2) [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) main::vram_ptr#1) ← (byte~) main::$2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] { } ) always clobbers reg byte y +Statement [13] (byte*) main::vram_ptr#2 ← ++ (byte*) main::vram_ptr#1 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] { } ) always clobbers reg byte a +Statement [14] (signed word*) main::pos_ptr#1 ← (signed word*) main::pos_ptr#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ( main:2 [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] { } ) always clobbers reg byte a +Statement [6] *((signed word*) main::pos_ptr#2) ← (signed word) $55aa [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (signed word~) main::$0 ← *((signed word*) main::pos_ptr#2) & (signed word) $aa55 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 main::$0 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((byte*) main::vram_ptr#3) ← (byte~) main::$1 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] ( main:2 [ main::pos_ptr#2 main::vram_ptr#3 main::i#2 ] { } ) always clobbers reg byte y +Statement [10] (byte*) main::vram_ptr#1 ← ++ (byte*) main::vram_ptr#3 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$2 ← > *((signed word*) main::pos_ptr#2) [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 main::$2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) main::vram_ptr#1) ← (byte~) main::$2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#1 ] { } ) always clobbers reg byte y +Statement [13] (byte*) main::vram_ptr#2 ← ++ (byte*) main::vram_ptr#1 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] ( main:2 [ main::pos_ptr#2 main::i#2 main::vram_ptr#2 ] { } ) always clobbers reg byte a +Statement [14] (signed word*) main::pos_ptr#1 ← (signed word*) main::pos_ptr#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] ( main:2 [ main::i#2 main::pos_ptr#1 main::vram_ptr#2 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x , @@ -347,7 +345,7 @@ Potential registers zp[2]:10 [ main::vram_ptr#1 ] : zp[2]:10 , Potential registers zp[1]:12 [ main::$2 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[2]:7 [ main::$0 ] 22: zp[1]:9 [ main::$1 ] 22: zp[1]:12 [ main::$2 ] 18.7: zp[1]:6 [ main::i#2 main::i#1 ] 13.44: zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] 12.1: zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 ] 11: zp[2]:10 [ main::vram_ptr#1 ] +Uplift Scope [main] 202: zp[2]:7 [ main::$0 ] 202: zp[1]:9 [ main::$1 ] 202: zp[1]:12 [ main::$2 ] 171.7: zp[1]:6 [ main::i#2 main::i#1 ] 123.44: zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] 111.1: zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 ] 101: zp[2]:10 [ main::vram_ptr#1 ] Uplift Scope [] Uplifting [main] best 1643 combination zp[2]:7 [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 ] zp[2]:10 [ main::vram_ptr#1 ] @@ -498,21 +496,21 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (void()) main() -(signed word~) main::$0 zp[2]:6 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(signed word~) main::$0 zp[2]:6 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 20.2 (signed word*) main::pos_ptr -(signed word*) main::pos_ptr#1 pos_ptr zp[2]:2 7.333333333333333 -(signed word*) main::pos_ptr#2 pos_ptr zp[2]:2 6.111111111111112 +(signed word*) main::pos_ptr#1 pos_ptr zp[2]:2 67.33333333333333 +(signed word*) main::pos_ptr#2 pos_ptr zp[2]:2 56.11111111111111 (byte*) main::vram_ptr -(byte*) main::vram_ptr#1 vram_ptr zp[2]:4 11.0 -(byte*) main::vram_ptr#2 vram_ptr zp[2]:4 5.5 -(byte*) main::vram_ptr#3 vram_ptr zp[2]:4 6.6000000000000005 +(byte*) main::vram_ptr#1 vram_ptr zp[2]:4 101.0 +(byte*) main::vram_ptr#2 vram_ptr zp[2]:4 50.5 +(byte*) main::vram_ptr#3 vram_ptr zp[2]:4 60.599999999999994 zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 main::vram_ptr#1 ] diff --git a/src/test/ref/pointer-anding.sym b/src/test/ref/pointer-anding.sym index 0063ccf99..0a9c9f835 100644 --- a/src/test/ref/pointer-anding.sym +++ b/src/test/ref/pointer-anding.sym @@ -3,21 +3,21 @@ (label) @end (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (void()) main() -(signed word~) main::$0 zp[2]:6 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 +(signed word~) main::$0 zp[2]:6 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 20.2 (signed word*) main::pos_ptr -(signed word*) main::pos_ptr#1 pos_ptr zp[2]:2 7.333333333333333 -(signed word*) main::pos_ptr#2 pos_ptr zp[2]:2 6.111111111111112 +(signed word*) main::pos_ptr#1 pos_ptr zp[2]:2 67.33333333333333 +(signed word*) main::pos_ptr#2 pos_ptr zp[2]:2 56.11111111111111 (byte*) main::vram_ptr -(byte*) main::vram_ptr#1 vram_ptr zp[2]:4 11.0 -(byte*) main::vram_ptr#2 vram_ptr zp[2]:4 5.5 -(byte*) main::vram_ptr#3 vram_ptr zp[2]:4 6.6000000000000005 +(byte*) main::vram_ptr#1 vram_ptr zp[2]:4 101.0 +(byte*) main::vram_ptr#2 vram_ptr zp[2]:4 50.5 +(byte*) main::vram_ptr#3 vram_ptr zp[2]:4 60.599999999999994 zp[2]:2 [ main::pos_ptr#2 main::pos_ptr#1 ] zp[2]:4 [ main::vram_ptr#3 main::vram_ptr#2 main::vram_ptr#1 ] diff --git a/src/test/ref/pointer-cast-2.log b/src/test/ref/pointer-cast-2.log index 1d887f326..fa2994210 100644 --- a/src/test/ref/pointer-cast-2.log +++ b/src/test/ref/pointer-cast-2.log @@ -96,8 +96,8 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(signed byte) main::sb loadstore 2.0 -(byte) main::ub loadstore 2.0 +(signed byte) main::sb loadstore 11.0 +(byte) main::ub loadstore 11.0 Initial phi equivalence classes Added variable main::ub to live range equivalence class [ main::ub ] @@ -166,17 +166,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::ub ← (byte) $ff [ main::ub ] ( main:2 [ main::ub ] ) always clobbers reg byte a -Statement [5] *((const signed byte*) main::sb_ptr) ← (signed byte) 1 [ main::ub ] ( main:2 [ main::ub ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::ub_screen) ← (byte) main::ub [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (signed byte) main::sb ← (signed byte) $7f [ main::sb ] ( main:2 [ main::sb ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::ub_ptr) ← (byte) 1 [ main::sb ] ( main:2 [ main::sb ] ) always clobbers reg byte a -Statement [9] *((const signed byte*) main::sb_screen) ← (signed byte) main::sb [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (byte) main::ub ← (byte) $ff [ main::ub ] ( main:2 [ main::ub ] { } ) always clobbers reg byte a +Statement [5] *((const signed byte*) main::sb_ptr) ← (signed byte) 1 [ main::ub ] ( main:2 [ main::ub ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::ub_screen) ← (byte) main::ub [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] (signed byte) main::sb ← (signed byte) $7f [ main::sb ] ( main:2 [ main::sb ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::ub_ptr) ← (byte) 1 [ main::sb ] ( main:2 [ main::sb ] { } ) always clobbers reg byte a +Statement [9] *((const signed byte*) main::sb_screen) ← (signed byte) main::sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::ub ] : zp[1]:2 , Potential registers zp[1]:3 [ main::sb ] : zp[1]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2: zp[1]:2 [ main::ub ] 2: zp[1]:3 [ main::sb ] +Uplift Scope [main] 11: zp[1]:2 [ main::ub ] 11: zp[1]:3 [ main::sb ] Uplift Scope [] Uplifting [main] best 55 combination zp[1]:2 [ main::ub ] zp[1]:3 [ main::sb ] @@ -266,10 +266,10 @@ FINAL SYMBOL TABLE (label) @end (void()) main() (label) main::@return -(signed byte) main::sb loadstore zp[1]:3 2.0 +(signed byte) main::sb loadstore zp[1]:3 11.0 (const signed byte*) main::sb_ptr = (signed byte*)&(byte) main::ub (const signed byte*) main::sb_screen = (signed byte*) 1064 -(byte) main::ub loadstore zp[1]:2 2.0 +(byte) main::ub loadstore zp[1]:2 11.0 (const byte*) main::ub_ptr = (byte*)&(signed byte) main::sb (const byte*) main::ub_screen = (byte*) 1024 diff --git a/src/test/ref/pointer-cast-2.sym b/src/test/ref/pointer-cast-2.sym index 6bbb1f072..721b33dc0 100644 --- a/src/test/ref/pointer-cast-2.sym +++ b/src/test/ref/pointer-cast-2.sym @@ -3,10 +3,10 @@ (label) @end (void()) main() (label) main::@return -(signed byte) main::sb loadstore zp[1]:3 2.0 +(signed byte) main::sb loadstore zp[1]:3 11.0 (const signed byte*) main::sb_ptr = (signed byte*)&(byte) main::ub (const signed byte*) main::sb_screen = (signed byte*) 1064 -(byte) main::ub loadstore zp[1]:2 2.0 +(byte) main::ub loadstore zp[1]:2 11.0 (const byte*) main::ub_ptr = (byte*)&(signed byte) main::sb (const byte*) main::ub_screen = (byte*) 1024 diff --git a/src/test/ref/pointer-cast-3.log b/src/test/ref/pointer-cast-3.log index 1c5f598c2..358800283 100644 --- a/src/test/ref/pointer-cast-3.log +++ b/src/test/ref/pointer-cast-3.log @@ -110,7 +110,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const signed byte*) main::sb_screen) ← (const signed byte) main::sb [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const signed byte*) main::sb_screen) ← (const signed byte) main::sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/pointer-cast-4.log b/src/test/ref/pointer-cast-4.log index 348e44589..3de17fcd3 100644 --- a/src/test/ref/pointer-cast-4.log +++ b/src/test/ref/pointer-cast-4.log @@ -57,7 +57,7 @@ Inlining cast (word~) main::$1 ← (word)(byte) main::i#2 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (word*) main::wscreen#0 = (word*~) main::$0 +Alias main::wscreen#0 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [8] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -130,11 +130,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$1 11.0 -(byte~) main::$3 22.0 +(word~) main::$1 101.0 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 (word*) main::wscreen Initial phi equivalence classes @@ -223,19 +223,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a -Statement [8] *((const word*) main::wscreen#0 + (byte~) main::$3) ← (word~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a -Statement [8] *((const word*) main::wscreen#0 + (byte~) main::$3) ← (word~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] { } ) always clobbers reg byte a +Statement [8] *((const word*) main::wscreen#0 + (byte~) main::$3) ← (word~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] { } ) always clobbers reg byte a +Statement [8] *((const word*) main::wscreen#0 + (byte~) main::$3) ← (word~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::$1 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$3 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$3 ] 11: zp[2]:3 [ main::$1 ] +Uplift Scope [main] 227.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$3 ] 101: zp[2]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 513 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] zp[2]:3 [ main::$1 ] @@ -339,14 +339,14 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(word~) main::$1 zp[2]:2 11.0 -(byte~) main::$3 reg byte a 22.0 +(word~) main::$1 zp[2]:2 101.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::bscreen = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (word*) main::wscreen (const word*) main::wscreen#0 wscreen = (word*)(const byte*) main::bscreen diff --git a/src/test/ref/pointer-cast-4.sym b/src/test/ref/pointer-cast-4.sym index 0c6290f94..a3967971d 100644 --- a/src/test/ref/pointer-cast-4.sym +++ b/src/test/ref/pointer-cast-4.sym @@ -2,14 +2,14 @@ (label) @begin (label) @end (void()) main() -(word~) main::$1 zp[2]:2 11.0 -(byte~) main::$3 reg byte a 22.0 +(word~) main::$1 zp[2]:2 101.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::bscreen = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (word*) main::wscreen (const word*) main::wscreen#0 wscreen = (word*)(const byte*) main::bscreen diff --git a/src/test/ref/pointer-cast.log b/src/test/ref/pointer-cast.log index 8f7b04c8c..1362cfc07 100644 --- a/src/test/ref/pointer-cast.log +++ b/src/test/ref/pointer-cast.log @@ -491,22 +491,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) ub_screen) ← (const byte) ub [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((signed byte*)(const byte*) ub_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((word*)(const byte*) ub_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((signed word*)(const byte*) ub_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*)(const signed byte*) sb_screen) ← (const byte) ub [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const signed byte*) sb_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((word*)(const signed byte*) sb_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((signed word*)(const signed byte*) sb_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((byte*)(const word*) uw_screen) ← (const byte) ub [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((signed byte*)(const word*) uw_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const word*) uw_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((signed word*)(const word*) uw_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((byte*)(const signed word*) sw_screen) ← (const byte) ub [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((signed byte*)(const signed word*) sw_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((word*)(const signed word*) sw_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const signed word*) sw_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) ub_screen) ← (const byte) ub [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((signed byte*)(const byte*) ub_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((word*)(const byte*) ub_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((signed word*)(const byte*) ub_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(const signed byte*) sb_screen) ← (const byte) ub [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const signed byte*) sb_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((word*)(const signed byte*) sb_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((signed word*)(const signed byte*) sb_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((byte*)(const word*) uw_screen) ← (const byte) ub [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((signed byte*)(const word*) uw_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const word*) uw_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((signed word*)(const word*) uw_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((byte*)(const signed word*) sw_screen) ← (const byte) ub [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((signed byte*)(const signed word*) sw_screen+(byte) 1) ← (const signed byte) sb [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((word*)(const signed word*) sw_screen+(byte) 1*(const byte) SIZEOF_WORD) ← (const word) uw [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const signed word*) sw_screen+(byte) 2*(const byte) SIZEOF_SIGNED_WORD) ← (const signed word) sw [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/pointer-plus-0.log b/src/test/ref/pointer-plus-0.log index 67c9ba3b6..cc7b1f24d 100644 --- a/src/test/ref/pointer-plus-0.log +++ b/src/test/ref/pointer-plus-0.log @@ -104,9 +104,9 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) first::return#0 = (byte*) first::return#4 -Alias (byte*) first::return#1 = (byte*) first::return#5 -Alias (byte*) first::return#2 = (byte*~) first::$1 (byte*~) first::$0 (byte*) first::return#6 (byte*) first::return#3 +Alias first::return#0 = first::return#4 +Alias first::return#1 = first::return#5 +Alias first::return#2 = first::$1 first::$0 first::return#6 first::return#3 Successful SSA optimization Pass2AliasElimination Constant (const byte*) first::msg#0 = msg1 Constant (const byte*) first::msg#1 = msg2 @@ -124,7 +124,7 @@ Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte*~) main::$1 and assignment [3] (byte*~) main::$1 ← (byte*~) main::$0 Eliminating unused variable (byte*~) main::$3 and assignment [8] (byte*~) main::$3 ← (byte*~) main::$2 Successful SSA optimization PassNEliminateUnusedVars -Alias (byte*) first::return#2 = (byte*) first::msg#2 +Alias first::return#2 = first::msg#2 Successful SSA optimization Pass2AliasElimination Constant inlined first::msg#0 = (const byte*) msg1 Constant inlined first::msg#1 = (const byte*) msg2 @@ -193,12 +193,12 @@ VARIABLE REGISTER WEIGHTS (byte*()) first((byte*) first::msg) (byte*) first::msg (byte*) first::return -(byte*) first::return#0 4.0 -(byte*) first::return#1 4.0 -(byte*) first::return#2 1.0 +(byte*) first::return#0 22.0 +(byte*) first::return#1 22.0 +(byte*) first::return#2 5.5 (void()) main() -(byte*~) main::$0 4.0 -(byte*~) main::$2 4.0 +(byte*~) main::$0 22.0 +(byte*~) main::$2 22.0 Initial phi equivalence classes [ first::return#2 ] @@ -324,12 +324,12 @@ first: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte*) first::return#0 ← (byte*) first::return#2 [ first::return#0 ] ( main:2 [ first::return#0 ] ) always clobbers reg byte a -Statement [7] (byte*~) main::$0 ← (byte*) first::return#0 [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN) ← *((byte*~) main::$0) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [10] (byte*) first::return#1 ← (byte*) first::return#2 [ first::return#1 ] ( main:2 [ first::return#1 ] ) always clobbers reg byte a -Statement [11] (byte*~) main::$2 ← (byte*) first::return#1 [ main::$2 ] ( main:2 [ main::$2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*~) main::$2) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y +Statement [6] (byte*) first::return#0 ← (byte*) first::return#2 [ first::return#0 ] ( main:2 [ first::return#0 ] { { first::return#0 = first::return#2 } } ) always clobbers reg byte a +Statement [7] (byte*~) main::$0 ← (byte*) first::return#0 [ main::$0 ] ( main:2 [ main::$0 ] { { first::return#1 = first::return#2 } } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN) ← *((byte*~) main::$0) [ ] ( main:2 [ ] { { first::return#1 = first::return#2 } } ) always clobbers reg byte a reg byte y +Statement [10] (byte*) first::return#1 ← (byte*) first::return#2 [ first::return#1 ] ( main:2 [ first::return#1 ] { { first::return#1 = first::return#2 } } ) always clobbers reg byte a +Statement [11] (byte*~) main::$2 ← (byte*) first::return#1 [ main::$2 ] ( main:2 [ main::$2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*~) main::$2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ first::return#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ first::return#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::$0 ] : zp[2]:6 , @@ -337,8 +337,8 @@ Potential registers zp[2]:8 [ first::return#1 ] : zp[2]:8 , Potential registers zp[2]:10 [ main::$2 ] : zp[2]:10 , REGISTER UPLIFT SCOPES -Uplift Scope [first] 4: zp[2]:4 [ first::return#0 ] 4: zp[2]:8 [ first::return#1 ] 1: zp[2]:2 [ first::return#2 ] -Uplift Scope [main] 4: zp[2]:6 [ main::$0 ] 4: zp[2]:10 [ main::$2 ] +Uplift Scope [first] 22: zp[2]:4 [ first::return#0 ] 22: zp[2]:8 [ first::return#1 ] 5.5: zp[2]:2 [ first::return#2 ] +Uplift Scope [main] 22: zp[2]:6 [ main::$0 ] 22: zp[2]:10 [ main::$2 ] Uplift Scope [] Uplifting [first] best 165 combination zp[2]:4 [ first::return#0 ] zp[2]:8 [ first::return#1 ] zp[2]:2 [ first::return#2 ] @@ -470,12 +470,12 @@ FINAL SYMBOL TABLE (label) first::@return (byte*) first::msg (byte*) first::return -(byte*) first::return#0 return zp[2]:2 4.0 -(byte*) first::return#1 return zp[2]:2 4.0 -(byte*) first::return#2 return zp[2]:2 1.0 +(byte*) first::return#0 return zp[2]:2 22.0 +(byte*) first::return#1 return zp[2]:2 22.0 +(byte*) first::return#2 return zp[2]:2 5.5 (void()) main() -(byte*~) main::$0 zp[2]:2 4.0 -(byte*~) main::$2 zp[2]:2 4.0 +(byte*~) main::$0 zp[2]:2 22.0 +(byte*~) main::$2 zp[2]:2 22.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/pointer-plus-0.sym b/src/test/ref/pointer-plus-0.sym index 74243010a..bf04e67ba 100644 --- a/src/test/ref/pointer-plus-0.sym +++ b/src/test/ref/pointer-plus-0.sym @@ -5,12 +5,12 @@ (label) first::@return (byte*) first::msg (byte*) first::return -(byte*) first::return#0 return zp[2]:2 4.0 -(byte*) first::return#1 return zp[2]:2 4.0 -(byte*) first::return#2 return zp[2]:2 1.0 +(byte*) first::return#0 return zp[2]:2 22.0 +(byte*) first::return#1 return zp[2]:2 22.0 +(byte*) first::return#2 return zp[2]:2 5.5 (void()) main() -(byte*~) main::$0 zp[2]:2 4.0 -(byte*~) main::$2 zp[2]:2 4.0 +(byte*~) main::$0 zp[2]:2 22.0 +(byte*~) main::$2 zp[2]:2 22.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/pointer-plus-signed-word.log b/src/test/ref/pointer-plus-signed-word.log index 118689b01..9ef903ff8 100644 --- a/src/test/ref/pointer-plus-signed-word.log +++ b/src/test/ref/pointer-plus-signed-word.log @@ -50,7 +50,7 @@ SYMBOL TABLE SSA Inlining cast (byte~) main::$1 ← (byte)(signed word) main::i#2 Successful SSA optimization Pass2InlineCast -Alias (byte*) main::sc#0 = (byte*~) main::$0 +Alias main::sc#0 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [7] if((signed word) main::i#1!=rangelast(-$a,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -116,12 +116,12 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (signed word) main::i -(signed word) main::i#1 16.5 -(signed word) main::i#2 8.25 +(signed word) main::i#1 151.5 +(signed word) main::i#2 75.75 (byte*) main::sc -(byte*) main::sc#0 11.0 +(byte*) main::sc#0 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -217,16 +217,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte*) main::sc#0 ← (const byte*) SCREEN + (signed word) main::i#2 [ main::i#2 main::sc#0 ] ( main:2 [ main::i#2 main::sc#0 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte)(signed word) main::i#2 [ main::i#2 main::sc#0 main::$1 ] ( main:2 [ main::i#2 main::sc#0 main::$1 ] ) always clobbers reg byte a -Statement [8] *((byte*) main::sc#0) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte y -Statement [10] if((signed word) main::i#1!=(signed byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Statement [6] (byte*) main::sc#0 ← (const byte*) SCREEN + (signed word) main::i#2 [ main::i#2 main::sc#0 ] ( main:2 [ main::i#2 main::sc#0 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte)(signed word) main::i#2 [ main::i#2 main::sc#0 main::$1 ] ( main:2 [ main::i#2 main::sc#0 main::$1 ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::sc#0) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte y +Statement [10] if((signed word) main::i#1!=(signed byte) $b) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sc#0 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::$1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.75: zp[2]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$1 ] 11: zp[2]:4 [ main::sc#0 ] +Uplift Scope [main] 227.25: zp[2]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$1 ] 101: zp[2]:4 [ main::sc#0 ] Uplift Scope [] Uplifting [main] best 773 combination zp[2]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] zp[2]:4 [ main::sc#0 ] @@ -341,14 +341,14 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*)(number) $400+(number) $28*(number) $a (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (signed word) main::i -(signed word) main::i#1 i zp[2]:2 16.5 -(signed word) main::i#2 i zp[2]:2 8.25 +(signed word) main::i#1 i zp[2]:2 151.5 +(signed word) main::i#2 i zp[2]:2 75.75 (byte*) main::sc -(byte*) main::sc#0 sc zp[2]:4 11.0 +(byte*) main::sc#0 sc zp[2]:4 101.0 zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ main::sc#0 ] diff --git a/src/test/ref/pointer-plus-signed-word.sym b/src/test/ref/pointer-plus-signed-word.sym index 57e0b366b..5e27a8a83 100644 --- a/src/test/ref/pointer-plus-signed-word.sym +++ b/src/test/ref/pointer-plus-signed-word.sym @@ -3,14 +3,14 @@ (label) @end (const byte*) SCREEN = (byte*)(number) $400+(number) $28*(number) $a (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (signed word) main::i -(signed word) main::i#1 i zp[2]:2 16.5 -(signed word) main::i#2 i zp[2]:2 8.25 +(signed word) main::i#1 i zp[2]:2 151.5 +(signed word) main::i#2 i zp[2]:2 75.75 (byte*) main::sc -(byte*) main::sc#0 sc zp[2]:4 11.0 +(byte*) main::sc#0 sc zp[2]:4 101.0 zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ main::sc#0 ] diff --git a/src/test/ref/pointer-pointer-1.log b/src/test/ref/pointer-pointer-1.log index 2ba1e2918..58bbfefb6 100644 --- a/src/test/ref/pointer-pointer-1.log +++ b/src/test/ref/pointer-pointer-1.log @@ -74,8 +74,8 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::b loadstore 2.0 -(byte*) main::pb loadstore 20.0 +(byte) main::b loadstore 11.0 +(byte*) main::pb loadstore 110.0 Initial phi equivalence classes Added variable main::b to live range equivalence class [ main::b ] @@ -140,14 +140,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::b ← (byte) 'a' [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte a -Statement [5] (byte*) main::pb ← &(byte) main::b [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN) ← *(*((const byte**) main::ppb)) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y +Statement [4] (byte) main::b ← (byte) 'a' [ main::b ] ( main:2 [ main::b ] { } ) always clobbers reg byte a +Statement [5] (byte*) main::pb ← &(byte) main::b [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN) ← *(*((const byte**) main::ppb)) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::b ] : zp[1]:2 , Potential registers zp[2]:3 [ main::pb ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:3 [ main::pb ] 2: zp[1]:2 [ main::b ] +Uplift Scope [main] 110: zp[2]:3 [ main::pb ] 11: zp[1]:2 [ main::b ] Uplift Scope [] Uplifting [main] best 59 combination zp[2]:3 [ main::pb ] zp[1]:2 [ main::b ] @@ -232,8 +232,8 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b loadstore zp[1]:2 2.0 -(byte*) main::pb loadstore zp[2]:3 20.0 +(byte) main::b loadstore zp[1]:2 11.0 +(byte*) main::pb loadstore zp[2]:3 110.0 (const byte**) main::ppb = &(byte*) main::pb zp[1]:2 [ main::b ] diff --git a/src/test/ref/pointer-pointer-1.sym b/src/test/ref/pointer-pointer-1.sym index ac8a183ac..2216fd337 100644 --- a/src/test/ref/pointer-pointer-1.sym +++ b/src/test/ref/pointer-pointer-1.sym @@ -4,8 +4,8 @@ (void()) main() (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::b loadstore zp[1]:2 2.0 -(byte*) main::pb loadstore zp[2]:3 20.0 +(byte) main::b loadstore zp[1]:2 11.0 +(byte*) main::pb loadstore zp[2]:3 110.0 (const byte**) main::ppb = &(byte*) main::pb zp[1]:2 [ main::b ] diff --git a/src/test/ref/pointer-pointer-2.log b/src/test/ref/pointer-pointer-2.log index 5c622a4d2..12fb19080 100644 --- a/src/test/ref/pointer-pointer-2.log +++ b/src/test/ref/pointer-pointer-2.log @@ -178,19 +178,19 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) nexttext::$0 ← (byte) textid#8 & (byte) 1 -Alias (byte*) main::screen#4 = (byte*) main::screen#5 -Alias (byte) main::i#5 = (byte) main::i#6 -Alias (byte) textid#0 = (byte) textid#6 -Alias (byte*) main::screen#2 = (byte*) main::screen#3 (byte*) main::screen#6 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3 -Alias (byte) textid#1 = (byte) textid#18 (byte) textid#17 (byte) textid#12 (byte) textid#7 -Alias (byte**) nexttext::textp#1 = (byte**) nexttext::textp#3 (byte**) nexttext::textp#2 -Alias (byte) textid#13 = (byte) textid#3 (byte) textid#14 -Alias (byte) textid#4 = (byte) textid#9 -Alias (byte) textid#15 = (byte) textid#2 -Alias (byte) textid#10 = (byte) textid#5 +Alias main::screen#4 = main::screen#5 +Alias main::i#5 = main::i#6 +Alias textid#0 = textid#6 +Alias main::screen#2 = main::screen#3 main::screen#6 +Alias main::i#2 = main::i#4 main::i#3 +Alias textid#1 = textid#18 textid#17 textid#12 textid#7 +Alias nexttext::textp#1 = nexttext::textp#3 nexttext::textp#2 +Alias textid#13 = textid#3 textid#14 +Alias textid#4 = textid#9 +Alias textid#15 = textid#2 +Alias textid#10 = textid#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) textid#13 = (byte) textid#4 +Alias textid#13 = textid#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) textid#16 (byte) textid#15 Identical Phi Values (byte) textid#0 (byte) textid#13 @@ -309,19 +309,19 @@ nexttext::@1: scope:[nexttext] from nexttext VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#5 3.142857142857143 +(byte) main::i#1 151.5 +(byte) main::i#5 28.857142857142858 (byte*) main::screen -(byte*) main::screen#1 101.0 -(byte*) main::screen#2 65.0 -(byte*) main::screen#4 11.0 -(byte*) main::text loadstore 40.6 +(byte*) main::screen#1 1001.0 +(byte*) main::screen#2 641.0 +(byte*) main::screen#4 101.0 +(byte*) main::text loadstore 401.5 (void()) nexttext((byte**) nexttext::textp) -(byte~) nexttext::$0 2.0 +(byte~) nexttext::$0 1001.0 (byte**) nexttext::textp (byte) textid -(byte) textid#11 7.5 -(byte) textid#13 1.0 +(byte) textid#11 1051.5 +(byte) textid#13 84.76923076923077 Initial phi equivalence classes [ textid#11 textid#13 ] @@ -488,22 +488,22 @@ nexttext: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::text ← (byte*) 0 [ main::text ] ( main:2 [ main::text ] ) always clobbers reg byte a -Statement [8] if((byte) 0!=*((byte*) main::text)) goto main::@3 [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [4] (byte*) main::text ← (byte*) 0 [ main::text ] ( main:2 [ main::text ] { } ) always clobbers reg byte a +Statement [8] if((byte) 0!=*((byte*) main::text)) goto main::@3 [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i#5 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::i#5 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:2 [ textid#11 textid#13 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ textid#11 textid#13 ] -Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text) [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#11 nexttext::$0 ] ) always clobbers reg byte a -Statement [18] *((const byte**) nexttext::textp#0) ← (const byte*) text2 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a -Statement [20] *((const byte**) nexttext::textp#0) ← (const byte*) text1 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a -Statement [4] (byte*) main::text ← (byte*) 0 [ main::text ] ( main:2 [ main::text ] ) always clobbers reg byte a -Statement [8] if((byte) 0!=*((byte*) main::text)) goto main::@3 [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text) [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#11 nexttext::$0 ] ) always clobbers reg byte a -Statement [18] *((const byte**) nexttext::textp#0) ← (const byte*) text2 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a -Statement [20] *((const byte**) nexttext::textp#0) ← (const byte*) text1 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] ) always clobbers reg byte a +Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text) [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#11 nexttext::$0 ] { } ) always clobbers reg byte a +Statement [18] *((const byte**) nexttext::textp#0) ← (const byte*) text2 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] { } ) always clobbers reg byte a +Statement [20] *((const byte**) nexttext::textp#0) ← (const byte*) text1 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] { } ) always clobbers reg byte a +Statement [4] (byte*) main::text ← (byte*) 0 [ main::text ] ( main:2 [ main::text ] { } ) always clobbers reg byte a +Statement [8] if((byte) 0!=*((byte*) main::text)) goto main::@3 [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*) main::screen#2) ← *((byte*) main::text) [ main::text main::i#5 textid#13 main::screen#2 ] ( main:2 [ main::text main::i#5 textid#13 main::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [15] (byte~) nexttext::$0 ← (byte) textid#11 & (byte) 1 [ textid#11 nexttext::$0 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#11 nexttext::$0 ] { } ) always clobbers reg byte a +Statement [18] *((const byte**) nexttext::textp#0) ← (const byte*) text2 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] { } ) always clobbers reg byte a +Statement [20] *((const byte**) nexttext::textp#0) ← (const byte*) text1 [ textid#13 ] ( main:2::nexttext:6 [ main::text main::screen#4 main::i#5 textid#13 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ textid#11 textid#13 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::i#5 main::i#1 ] : zp[1]:5 , reg byte x , @@ -511,9 +511,9 @@ Potential registers zp[2]:6 [ main::text ] : zp[2]:6 , Potential registers zp[1]:8 [ nexttext::$0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 177: zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] 40.6: zp[2]:6 [ main::text ] 19.64: zp[1]:5 [ main::i#5 main::i#1 ] -Uplift Scope [] 8.5: zp[1]:2 [ textid#11 textid#13 ] -Uplift Scope [nexttext] 2: zp[1]:8 [ nexttext::$0 ] +Uplift Scope [main] 1,743: zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] 401.5: zp[2]:6 [ main::text ] 180.36: zp[1]:5 [ main::i#5 main::i#1 ] +Uplift Scope [] 1,136.27: zp[1]:2 [ textid#11 textid#13 ] +Uplift Scope [nexttext] 1,001: zp[1]:8 [ nexttext::$0 ] Uplifting [main] best 6618 combination zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] zp[2]:6 [ main::text ] reg byte x [ main::i#5 main::i#1 ] Uplifting [] best 6618 combination zp[1]:2 [ textid#11 textid#13 ] @@ -713,15 +713,15 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#5 reg byte x 3.142857142857143 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#5 reg byte x 28.857142857142858 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:3 101.0 -(byte*) main::screen#2 screen zp[2]:3 65.0 -(byte*) main::screen#4 screen zp[2]:3 11.0 -(byte*) main::text loadstore zp[2]:5 40.6 +(byte*) main::screen#1 screen zp[2]:3 1001.0 +(byte*) main::screen#2 screen zp[2]:3 641.0 +(byte*) main::screen#4 screen zp[2]:3 101.0 +(byte*) main::text loadstore zp[2]:5 401.5 (void()) nexttext((byte**) nexttext::textp) -(byte~) nexttext::$0 reg byte a 2.0 +(byte~) nexttext::$0 reg byte a 1001.0 (label) nexttext::@1 (label) nexttext::@2 (label) nexttext::@return @@ -730,8 +730,8 @@ FINAL SYMBOL TABLE (const byte*) text1[] = (byte*) "camelot " (const byte*) text2[] = (byte*) "rex " (byte) textid -(byte) textid#11 textid zp[1]:2 7.5 -(byte) textid#13 textid zp[1]:2 1.0 +(byte) textid#11 textid zp[1]:2 1051.5 +(byte) textid#13 textid zp[1]:2 84.76923076923077 zp[1]:2 [ textid#11 textid#13 ] zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/pointer-pointer-2.sym b/src/test/ref/pointer-pointer-2.sym index e4176dd07..a91f43301 100644 --- a/src/test/ref/pointer-pointer-2.sym +++ b/src/test/ref/pointer-pointer-2.sym @@ -8,15 +8,15 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#5 reg byte x 3.142857142857143 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#5 reg byte x 28.857142857142858 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:3 101.0 -(byte*) main::screen#2 screen zp[2]:3 65.0 -(byte*) main::screen#4 screen zp[2]:3 11.0 -(byte*) main::text loadstore zp[2]:5 40.6 +(byte*) main::screen#1 screen zp[2]:3 1001.0 +(byte*) main::screen#2 screen zp[2]:3 641.0 +(byte*) main::screen#4 screen zp[2]:3 101.0 +(byte*) main::text loadstore zp[2]:5 401.5 (void()) nexttext((byte**) nexttext::textp) -(byte~) nexttext::$0 reg byte a 2.0 +(byte~) nexttext::$0 reg byte a 1001.0 (label) nexttext::@1 (label) nexttext::@2 (label) nexttext::@return @@ -25,8 +25,8 @@ (const byte*) text1[] = (byte*) "camelot " (const byte*) text2[] = (byte*) "rex " (byte) textid -(byte) textid#11 textid zp[1]:2 7.5 -(byte) textid#13 textid zp[1]:2 1.0 +(byte) textid#11 textid zp[1]:2 1051.5 +(byte) textid#13 textid zp[1]:2 84.76923076923077 zp[1]:2 [ textid#11 textid#13 ] zp[2]:3 [ main::screen#4 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/pointer-pointer-3.log b/src/test/ref/pointer-pointer-3.log index 802da3cf1..888221d28 100644 --- a/src/test/ref/pointer-pointer-3.log +++ b/src/test/ref/pointer-pointer-3.log @@ -152,11 +152,11 @@ setscreen::@return: scope:[setscreen] from setscreen VARIABLE REGISTER WEIGHTS (void()) main() -(byte*) screen loadstore 0.6666666666666666 +(byte*) screen loadstore 2.666666666666667 (void()) setscreen((byte**) setscreen::screen , (byte*) setscreen::val) (byte**) setscreen::screen (byte*) setscreen::val -(byte*) setscreen::val#2 2.0 +(byte*) setscreen::val#2 101.0 Initial phi equivalence classes [ setscreen::val#2 ] @@ -258,16 +258,16 @@ setscreen: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte*) screen ← (byte*) 1024 [ screen ] ( [ screen ] ) always clobbers reg byte a -Statement [6] *((byte*) screen) ← (byte) 'a' [ screen ] ( main:2 [ screen ] ) always clobbers reg byte a reg byte y -Statement [8] *((byte*) screen) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [11] *(&(byte*) screen) ← (byte*) setscreen::val#2 [ screen ] ( main:2::setscreen:5 [ screen ] main:2::setscreen:7 [ screen ] ) always clobbers reg byte a +Statement [0] (byte*) screen ← (byte*) 1024 [ screen ] ( [ screen ] { } ) always clobbers reg byte a +Statement [6] *((byte*) screen) ← (byte) 'a' [ screen ] ( main:2 [ screen ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((byte*) screen) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [11] *(&(byte*) screen) ← (byte*) setscreen::val#2 [ screen ] ( main:2::setscreen:5 [ screen ] { } main:2::setscreen:7 [ screen ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ setscreen::val#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ screen ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [setscreen] 2: zp[2]:2 [ setscreen::val#2 ] -Uplift Scope [] 0.67: zp[2]:4 [ screen ] +Uplift Scope [setscreen] 101: zp[2]:2 [ setscreen::val#2 ] +Uplift Scope [] 2.67: zp[2]:4 [ screen ] Uplift Scope [main] Uplifting [setscreen] best 110 combination zp[2]:2 [ setscreen::val#2 ] @@ -395,14 +395,14 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte*) screen loadstore zp[2]:4 0.6666666666666666 +(byte*) screen loadstore zp[2]:4 2.666666666666667 (const byte*) screen1 = (byte*) 1024 (const byte*) screen2 = (byte*)(number) $400+(number) $28 (void()) setscreen((byte**) setscreen::screen , (byte*) setscreen::val) (label) setscreen::@return (byte**) setscreen::screen (byte*) setscreen::val -(byte*) setscreen::val#2 val zp[2]:2 2.0 +(byte*) setscreen::val#2 val zp[2]:2 101.0 zp[2]:2 [ setscreen::val#2 ] zp[2]:4 [ screen ] diff --git a/src/test/ref/pointer-pointer-3.sym b/src/test/ref/pointer-pointer-3.sym index 573d02a7e..eaecf5bde 100644 --- a/src/test/ref/pointer-pointer-3.sym +++ b/src/test/ref/pointer-pointer-3.sym @@ -5,14 +5,14 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte*) screen loadstore zp[2]:4 0.6666666666666666 +(byte*) screen loadstore zp[2]:4 2.666666666666667 (const byte*) screen1 = (byte*) 1024 (const byte*) screen2 = (byte*)(number) $400+(number) $28 (void()) setscreen((byte**) setscreen::screen , (byte*) setscreen::val) (label) setscreen::@return (byte**) setscreen::screen (byte*) setscreen::val -(byte*) setscreen::val#2 val zp[2]:2 2.0 +(byte*) setscreen::val#2 val zp[2]:2 101.0 zp[2]:2 [ setscreen::val#2 ] zp[2]:4 [ screen ] diff --git a/src/test/ref/pointer-void-0.log b/src/test/ref/pointer-void-0.log index 0f87cc6f6..392d12682 100644 --- a/src/test/ref/pointer-void-0.log +++ b/src/test/ref/pointer-void-0.log @@ -87,7 +87,7 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte*) main::bp (void*) main::vp -(word) main::w loadstore 20.0 +(word) main::w loadstore 110.0 Initial phi equivalence classes Added variable main::w to live range equivalence class [ main::w ] @@ -142,12 +142,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::w ← (word) $4d2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN) ← *((const byte*) main::bp#0) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (word) main::w ← (word) $4d2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← *((const byte*) main::bp#0) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w ] : zp[2]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:2 [ main::w ] +Uplift Scope [main] 110: zp[2]:2 [ main::w ] Uplift Scope [] Uplifting [main] best 38 combination zp[2]:2 [ main::w ] @@ -227,7 +227,7 @@ FINAL SYMBOL TABLE (const byte*) main::bp#0 bp = (byte*)(const void*) main::vp#0 (void*) main::vp (const void*) main::vp#0 vp = (void*)(const word*) main::wp -(word) main::w loadstore zp[2]:2 20.0 +(word) main::w loadstore zp[2]:2 110.0 (const word*) main::wp = &(word) main::w zp[2]:2 [ main::w ] diff --git a/src/test/ref/pointer-void-0.sym b/src/test/ref/pointer-void-0.sym index 8aead839e..52cfbb5d6 100644 --- a/src/test/ref/pointer-void-0.sym +++ b/src/test/ref/pointer-void-0.sym @@ -8,7 +8,7 @@ (const byte*) main::bp#0 bp = (byte*)(const void*) main::vp#0 (void*) main::vp (const void*) main::vp#0 vp = (void*)(const word*) main::wp -(word) main::w loadstore zp[2]:2 20.0 +(word) main::w loadstore zp[2]:2 110.0 (const word*) main::wp = &(word) main::w zp[2]:2 [ main::w ] diff --git a/src/test/ref/pointer-void-1.log b/src/test/ref/pointer-void-1.log index 49ce364ce..741be1c15 100644 --- a/src/test/ref/pointer-void-1.log +++ b/src/test/ref/pointer-void-1.log @@ -115,12 +115,12 @@ Inlining cast (byte*~) print::$0 ← (byte*)(void*) print::ptr#3 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) idx#0 = (byte) idx#8 -Alias (byte) idx#1 = (byte) idx#9 -Alias (byte) idx#10 = (byte) idx#2 (byte) idx#11 (byte) idx#3 -Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#16 = (byte) idx#4 -Alias (byte) idx#14 = (byte) idx#7 +Alias idx#0 = idx#8 +Alias idx#1 = idx#9 +Alias idx#10 = idx#2 idx#11 idx#3 +Alias idx#13 = idx#5 idx#6 +Alias idx#16 = idx#4 +Alias idx#14 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#15 (byte) idx#16 Identical Phi Values (byte) idx#0 (byte) idx#13 @@ -212,12 +212,12 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#12 4.0 -(byte) idx#13 1.0 +(byte) idx#12 112.0 +(byte) idx#13 20.5 (void()) main() -(byte) main::b loadstore 20.0 -(dword) main::d loadstore 20.0 -(word) main::w loadstore 20.0 +(byte) main::b loadstore 110.0 +(dword) main::d loadstore 110.0 +(word) main::w loadstore 110.0 (void()) print((void*) print::ptr) (void*) print::ptr (void*) print::ptr#3 @@ -358,16 +358,16 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] main:2::print:11 [ idx#12 ] ) always clobbers reg byte a reg byte y +Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] { } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#12 idx#13 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#12 idx#13 ] -Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] main:2::print:11 [ idx#12 ] ) always clobbers reg byte a reg byte y +Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] { } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print::ptr#3 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#12 idx#13 ] : zp[1]:4 , reg byte x , Potential registers zp[4]:5 [ main::d ] : zp[4]:5 , @@ -375,8 +375,8 @@ Potential registers zp[2]:9 [ main::w ] : zp[2]:9 , Potential registers zp[1]:11 [ main::b ] : zp[1]:11 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[4]:5 [ main::d ] 20: zp[2]:9 [ main::w ] 20: zp[1]:11 [ main::b ] -Uplift Scope [] 5: zp[1]:4 [ idx#12 idx#13 ] +Uplift Scope [main] 110: zp[4]:5 [ main::d ] 110: zp[2]:9 [ main::w ] 110: zp[1]:11 [ main::b ] +Uplift Scope [] 132.5: zp[1]:4 [ idx#12 idx#13 ] Uplift Scope [print] 0: zp[2]:2 [ print::ptr#3 ] Uplifting [main] best 144 combination zp[4]:5 [ main::d ] zp[2]:9 [ main::w ] zp[1]:11 [ main::b ] @@ -536,18 +536,18 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::b loadstore zp[1]:10 20.0 -(dword) main::d loadstore zp[4]:4 20.0 +(byte) main::b loadstore zp[1]:10 110.0 +(dword) main::d loadstore zp[4]:4 110.0 (const void*) main::vb = (void*)&(byte) main::b (const void*) main::vd = (void*)&(dword) main::d (const void*) main::vw = (void*)&(word) main::w -(word) main::w loadstore zp[2]:8 20.0 +(word) main::w loadstore zp[2]:8 110.0 (void()) print((void*) print::ptr) (label) print::@return (void*) print::ptr diff --git a/src/test/ref/pointer-void-1.sym b/src/test/ref/pointer-void-1.sym index d0aadf934..5a3114748 100644 --- a/src/test/ref/pointer-void-1.sym +++ b/src/test/ref/pointer-void-1.sym @@ -3,18 +3,18 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::b loadstore zp[1]:10 20.0 -(dword) main::d loadstore zp[4]:4 20.0 +(byte) main::b loadstore zp[1]:10 110.0 +(dword) main::d loadstore zp[4]:4 110.0 (const void*) main::vb = (void*)&(byte) main::b (const void*) main::vd = (void*)&(dword) main::d (const void*) main::vw = (void*)&(word) main::w -(word) main::w loadstore zp[2]:8 20.0 +(word) main::w loadstore zp[2]:8 110.0 (void()) print((void*) print::ptr) (label) print::@return (void*) print::ptr diff --git a/src/test/ref/pointer-void-2.log b/src/test/ref/pointer-void-2.log index 3e3a45816..e0f5f9d55 100644 --- a/src/test/ref/pointer-void-2.log +++ b/src/test/ref/pointer-void-2.log @@ -109,12 +109,12 @@ Inlining cast (byte*~) print::$0 ← (byte*)(void*) print::ptr#3 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) idx#0 = (byte) idx#8 -Alias (byte) idx#1 = (byte) idx#9 -Alias (byte) idx#10 = (byte) idx#2 (byte) idx#11 (byte) idx#3 -Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#16 = (byte) idx#4 -Alias (byte) idx#14 = (byte) idx#7 +Alias idx#0 = idx#8 +Alias idx#1 = idx#9 +Alias idx#10 = idx#2 idx#11 idx#3 +Alias idx#13 = idx#5 idx#6 +Alias idx#16 = idx#4 +Alias idx#14 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#15 (byte) idx#16 Identical Phi Values (byte) idx#0 (byte) idx#13 @@ -206,12 +206,12 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#12 4.0 -(byte) idx#13 1.0 +(byte) idx#12 112.0 +(byte) idx#13 20.5 (void()) main() -(byte) main::b loadstore 20.0 -(dword) main::d loadstore 20.0 -(word) main::w loadstore 20.0 +(byte) main::b loadstore 110.0 +(dword) main::d loadstore 110.0 +(word) main::w loadstore 110.0 (void()) print((void*) print::ptr) (void*) print::ptr (void*) print::ptr#3 @@ -349,16 +349,16 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] main:2::print:11 [ idx#12 ] ) always clobbers reg byte a reg byte y +Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] { } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#12 idx#13 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#12 idx#13 ] -Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] main:2::print:11 [ idx#12 ] ) always clobbers reg byte a reg byte y +Statement [4] (dword) main::d ← (dword) $12345678 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] (word) main::w ← (word) $1234 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte) main::b ← (byte) $12 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#12) ← *((byte*)(void*) print::ptr#3) [ idx#12 ] ( main:2::print:7 [ idx#12 ] { } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:11 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print::ptr#3 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#12 idx#13 ] : zp[1]:4 , reg byte x , Potential registers zp[4]:5 [ main::d ] : zp[4]:5 , @@ -366,8 +366,8 @@ Potential registers zp[2]:9 [ main::w ] : zp[2]:9 , Potential registers zp[1]:11 [ main::b ] : zp[1]:11 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[4]:5 [ main::d ] 20: zp[2]:9 [ main::w ] 20: zp[1]:11 [ main::b ] -Uplift Scope [] 5: zp[1]:4 [ idx#12 idx#13 ] +Uplift Scope [main] 110: zp[4]:5 [ main::d ] 110: zp[2]:9 [ main::w ] 110: zp[1]:11 [ main::b ] +Uplift Scope [] 132.5: zp[1]:4 [ idx#12 idx#13 ] Uplift Scope [print] 0: zp[2]:2 [ print::ptr#3 ] Uplifting [main] best 144 combination zp[4]:5 [ main::d ] zp[2]:9 [ main::w ] zp[1]:11 [ main::b ] @@ -524,15 +524,15 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::b loadstore zp[1]:10 20.0 -(dword) main::d loadstore zp[4]:4 20.0 -(word) main::w loadstore zp[2]:8 20.0 +(byte) main::b loadstore zp[1]:10 110.0 +(dword) main::d loadstore zp[4]:4 110.0 +(word) main::w loadstore zp[2]:8 110.0 (void()) print((void*) print::ptr) (label) print::@return (void*) print::ptr diff --git a/src/test/ref/pointer-void-2.sym b/src/test/ref/pointer-void-2.sym index a90aadd86..566f7bcf9 100644 --- a/src/test/ref/pointer-void-2.sym +++ b/src/test/ref/pointer-void-2.sym @@ -3,15 +3,15 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::b loadstore zp[1]:10 20.0 -(dword) main::d loadstore zp[4]:4 20.0 -(word) main::w loadstore zp[2]:8 20.0 +(byte) main::b loadstore zp[1]:10 110.0 +(dword) main::d loadstore zp[4]:4 110.0 +(word) main::w loadstore zp[2]:8 110.0 (void()) print((void*) print::ptr) (label) print::@return (void*) print::ptr diff --git a/src/test/ref/pointer-void-3.log b/src/test/ref/pointer-void-3.log index dcad5d4b2..8ce274c76 100644 --- a/src/test/ref/pointer-void-3.log +++ b/src/test/ref/pointer-void-3.log @@ -123,15 +123,15 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (void*) malloc::return#0 = (void*) malloc::return#4 -Alias (byte*) heap_head#0 = (byte*) heap_head#7 -Alias (void*) malloc::return#1 = (void*) malloc::return#5 -Alias (byte*) main::buf1#0 = (byte*) main::buf1#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#8 (byte*) heap_head#9 (byte*) heap_head#2 -Alias (void*) malloc::return#2 = (void*) malloc::return#6 (void*) malloc::return#3 -Alias (byte*) heap_head#11 = (byte*) heap_head#4 (byte*) heap_head#5 -Alias (byte*) heap_head#14 = (byte*) heap_head#3 -Alias (byte*) heap_head#12 = (byte*) heap_head#6 +Alias malloc::return#0 = malloc::return#4 +Alias heap_head#0 = heap_head#7 +Alias malloc::return#1 = malloc::return#5 +Alias main::buf1#0 = main::buf1#1 +Alias heap_head#1 = heap_head#8 heap_head#9 heap_head#2 +Alias malloc::return#2 = malloc::return#6 malloc::return#3 +Alias heap_head#11 = heap_head#4 heap_head#5 +Alias heap_head#14 = heap_head#3 +Alias heap_head#12 = heap_head#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) heap_head#13 (byte*) heap_head#14 Identical Phi Values (byte*) heap_head#0 (byte*) heap_head#11 @@ -217,18 +217,18 @@ malloc::@return: scope:[malloc] from malloc VARIABLE REGISTER WEIGHTS (byte*) heap_head -(byte*) heap_head#10 4.0 -(byte*) heap_head#11 0.6666666666666666 +(byte*) heap_head#10 112.0 +(byte*) heap_head#11 18.666666666666664 (void()) main() (byte*) main::buf1 -(void*) main::buf1#0 0.3333333333333333 +(void*) main::buf1#0 1.8333333333333333 (byte*) main::buf2 -(void*) main::buf2#0 0.5 +(void*) main::buf2#0 2.75 (void*()) malloc() (void*) malloc::return -(void*) malloc::return#0 4.0 -(void*) malloc::return#1 4.0 -(void*) malloc::return#2 1.5 +(void*) malloc::return#0 22.0 +(void*) malloc::return#1 22.0 +(void*) malloc::return#2 30.75 Initial phi equivalence classes [ heap_head#10 heap_head#11 ] @@ -368,15 +368,15 @@ malloc: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (void*) malloc::return#0 ← (void*) malloc::return#2 [ malloc::return#0 heap_head#11 ] ( main:2 [ malloc::return#0 heap_head#11 ] ) always clobbers reg byte a -Statement [7] (void*) main::buf1#0 ← (void*) malloc::return#0 [ main::buf1#0 heap_head#11 ] ( main:2 [ main::buf1#0 heap_head#11 ] ) always clobbers reg byte a -Statement [9] (void*) malloc::return#1 ← (void*) malloc::return#2 [ main::buf1#0 malloc::return#1 ] ( main:2 [ main::buf1#0 malloc::return#1 ] ) always clobbers reg byte a -Statement [10] (void*) main::buf2#0 ← (void*) malloc::return#1 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] ) always clobbers reg byte a -Statement [11] *((byte*)(void*) main::buf1#0) ← (byte) 'a' [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] ) always clobbers reg byte a reg byte y -Statement [12] *((byte*)(void*) main::buf2#0) ← (byte) 'b' [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] ) always clobbers reg byte a reg byte y -Statement [13] *((const byte*) SCREEN) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [18] (void*) malloc::return#2 ← (void*)(byte*) heap_head#11 [ malloc::return#2 heap_head#11 ] ( main:2::malloc:5 [ malloc::return#2 heap_head#11 ] main:2::malloc:8 [ main::buf1#0 malloc::return#2 heap_head#11 ] ) always clobbers reg byte a +Statement [6] (void*) malloc::return#0 ← (void*) malloc::return#2 [ malloc::return#0 heap_head#11 ] ( main:2 [ malloc::return#0 heap_head#11 ] { { malloc::return#0 = malloc::return#2 } } ) always clobbers reg byte a +Statement [7] (void*) main::buf1#0 ← (void*) malloc::return#0 [ main::buf1#0 heap_head#11 ] ( main:2 [ main::buf1#0 heap_head#11 ] { { heap_head#10 = heap_head#11 } { malloc::return#1 = malloc::return#2 } } ) always clobbers reg byte a +Statement [9] (void*) malloc::return#1 ← (void*) malloc::return#2 [ main::buf1#0 malloc::return#1 ] ( main:2 [ main::buf1#0 malloc::return#1 ] { { heap_head#10 = heap_head#11 } { malloc::return#1 = malloc::return#2 } } ) always clobbers reg byte a +Statement [10] (void*) main::buf2#0 ← (void*) malloc::return#1 [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] { } ) always clobbers reg byte a +Statement [11] *((byte*)(void*) main::buf1#0) ← (byte) 'a' [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((byte*)(void*) main::buf2#0) ← (byte) 'b' [ main::buf1#0 main::buf2#0 ] ( main:2 [ main::buf1#0 main::buf2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [13] *((const byte*) SCREEN) ← *((byte*)(void*) main::buf1#0) [ main::buf2#0 ] ( main:2 [ main::buf2#0 ] { } ) always clobbers reg byte a reg byte y +Statement [14] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(void*) main::buf2#0) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [18] (void*) malloc::return#2 ← (void*)(byte*) heap_head#11 [ malloc::return#2 heap_head#11 ] ( main:2::malloc:5 [ malloc::return#2 heap_head#11 ] { { malloc::return#0 = malloc::return#2 } } main:2::malloc:8 [ main::buf1#0 malloc::return#2 heap_head#11 ] { { heap_head#10 = heap_head#11 } { malloc::return#1 = malloc::return#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ heap_head#10 heap_head#11 ] : zp[2]:2 , Potential registers zp[2]:4 [ malloc::return#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::buf1#0 ] : zp[2]:6 , @@ -385,12 +385,12 @@ Potential registers zp[2]:10 [ main::buf2#0 ] : zp[2]:10 , Potential registers zp[2]:12 [ malloc::return#2 ] : zp[2]:12 , REGISTER UPLIFT SCOPES -Uplift Scope [malloc] 4: zp[2]:4 [ malloc::return#0 ] 4: zp[2]:8 [ malloc::return#1 ] 1.5: zp[2]:12 [ malloc::return#2 ] -Uplift Scope [] 4.67: zp[2]:2 [ heap_head#10 heap_head#11 ] -Uplift Scope [main] 0.5: zp[2]:10 [ main::buf2#0 ] 0.33: zp[2]:6 [ main::buf1#0 ] +Uplift Scope [] 130.67: zp[2]:2 [ heap_head#10 heap_head#11 ] +Uplift Scope [malloc] 30.75: zp[2]:12 [ malloc::return#2 ] 22: zp[2]:4 [ malloc::return#0 ] 22: zp[2]:8 [ malloc::return#1 ] +Uplift Scope [main] 2.75: zp[2]:10 [ main::buf2#0 ] 1.83: zp[2]:6 [ main::buf1#0 ] -Uplifting [malloc] best 172 combination zp[2]:4 [ malloc::return#0 ] zp[2]:8 [ malloc::return#1 ] zp[2]:12 [ malloc::return#2 ] Uplifting [] best 172 combination zp[2]:2 [ heap_head#10 heap_head#11 ] +Uplifting [malloc] best 172 combination zp[2]:12 [ malloc::return#2 ] zp[2]:4 [ malloc::return#0 ] zp[2]:8 [ malloc::return#1 ] Uplifting [main] best 172 combination zp[2]:10 [ main::buf2#0 ] zp[2]:6 [ main::buf1#0 ] Coalescing zero page register [ zp[2]:4 [ malloc::return#0 ] ] with [ zp[2]:6 [ main::buf1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:8 [ malloc::return#1 ] ] with [ zp[2]:10 [ main::buf2#0 ] ] - score: 1 @@ -536,22 +536,22 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte*) heap_head -(byte*) heap_head#10 heap_head zp[2]:2 4.0 -(byte*) heap_head#11 heap_head zp[2]:2 0.6666666666666666 +(byte*) heap_head#10 heap_head zp[2]:2 112.0 +(byte*) heap_head#11 heap_head zp[2]:2 18.666666666666664 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte*) main::buf1 -(void*) main::buf1#0 buf1 zp[2]:4 0.3333333333333333 +(void*) main::buf1#0 buf1 zp[2]:4 1.8333333333333333 (byte*) main::buf2 -(void*) main::buf2#0 buf2 zp[2]:6 0.5 +(void*) main::buf2#0 buf2 zp[2]:6 2.75 (void*()) malloc() (label) malloc::@return (void*) malloc::return -(void*) malloc::return#0 return zp[2]:4 4.0 -(void*) malloc::return#1 return_1 zp[2]:6 4.0 -(void*) malloc::return#2 return_1 zp[2]:6 1.5 +(void*) malloc::return#0 return zp[2]:4 22.0 +(void*) malloc::return#1 return_1 zp[2]:6 22.0 +(void*) malloc::return#2 return_1 zp[2]:6 30.75 zp[2]:2 [ heap_head#10 heap_head#11 ] zp[2]:4 [ malloc::return#0 main::buf1#0 ] diff --git a/src/test/ref/pointer-void-3.sym b/src/test/ref/pointer-void-3.sym index 8f6f231c9..d3f0a0bb5 100644 --- a/src/test/ref/pointer-void-3.sym +++ b/src/test/ref/pointer-void-3.sym @@ -3,22 +3,22 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte*) heap_head -(byte*) heap_head#10 heap_head zp[2]:2 4.0 -(byte*) heap_head#11 heap_head zp[2]:2 0.6666666666666666 +(byte*) heap_head#10 heap_head zp[2]:2 112.0 +(byte*) heap_head#11 heap_head zp[2]:2 18.666666666666664 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte*) main::buf1 -(void*) main::buf1#0 buf1 zp[2]:4 0.3333333333333333 +(void*) main::buf1#0 buf1 zp[2]:4 1.8333333333333333 (byte*) main::buf2 -(void*) main::buf2#0 buf2 zp[2]:6 0.5 +(void*) main::buf2#0 buf2 zp[2]:6 2.75 (void*()) malloc() (label) malloc::@return (void*) malloc::return -(void*) malloc::return#0 return zp[2]:4 4.0 -(void*) malloc::return#1 return_1 zp[2]:6 4.0 -(void*) malloc::return#2 return_1 zp[2]:6 1.5 +(void*) malloc::return#0 return zp[2]:4 22.0 +(void*) malloc::return#1 return_1 zp[2]:6 22.0 +(void*) malloc::return#2 return_1 zp[2]:6 30.75 zp[2]:2 [ heap_head#10 heap_head#11 ] zp[2]:4 [ malloc::return#0 main::buf1#0 ] diff --git a/src/test/ref/print-problem.log b/src/test/ref/print-problem.log index bb4ed20e4..8fec584fb 100644 --- a/src/test/ref/print-problem.log +++ b/src/test/ref/print-problem.log @@ -138,16 +138,16 @@ Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) ln::$0 ← (byte) line#12 + (byte) 2 -Alias (byte) line#0 = (byte) ch#0 (byte) line#16 (byte) ch#17 -Alias (byte) line#1 = (byte) line#8 -Alias (byte) ch#1 = (byte) ch#10 -Alias (byte) line#2 = (byte) line#9 -Alias (byte) ch#11 = (byte) ch#3 -Alias (byte) line#10 = (byte) line#3 (byte) line#11 (byte) line#4 -Alias (byte) ch#12 = (byte) ch#5 (byte) ch#13 (byte) ch#6 -Alias (byte) line#13 = (byte) line#5 (byte~) ln::$0 (byte) ch#7 (byte) ch#14 (byte) line#6 (byte) ch#8 -Alias (byte) line#14 = (byte) line#7 -Alias (byte) ch#15 = (byte) ch#9 +Alias line#0 = ch#0 line#16 ch#17 +Alias line#1 = line#8 +Alias ch#1 = ch#10 +Alias line#2 = line#9 +Alias ch#11 = ch#3 +Alias line#10 = line#3 line#11 line#4 +Alias ch#12 = ch#5 ch#13 ch#6 +Alias line#13 = line#5 ln::$0 ch#7 ch#14 line#6 ch#8 +Alias line#14 = line#7 +Alias ch#15 = ch#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) line#15 (byte) line#0 Identical Phi Values (byte) ch#16 (byte) line#0 @@ -239,8 +239,8 @@ ln::@return: scope:[ln] from ln VARIABLE REGISTER WEIGHTS (byte) ch (byte) line -(byte) line#12 6.0 -(byte) line#13 1.25 +(byte) line#12 123.0 +(byte) line#13 18.125 (void()) ln() (void()) main() @@ -339,7 +339,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ line#12 line#13 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 7.25: zp[1]:2 [ line#12 line#13 ] +Uplift Scope [] 141.12: zp[1]:2 [ line#12 line#13 ] Uplift Scope [main] Uplift Scope [ln] @@ -464,8 +464,8 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (byte) ch (byte) line -(byte) line#12 reg byte a 6.0 -(byte) line#13 reg byte a 1.25 +(byte) line#12 reg byte a 123.0 +(byte) line#13 reg byte a 18.125 (void()) ln() (label) ln::@return (void()) main() diff --git a/src/test/ref/print-problem.sym b/src/test/ref/print-problem.sym index 5e76ee068..1d680a102 100644 --- a/src/test/ref/print-problem.sym +++ b/src/test/ref/print-problem.sym @@ -4,8 +4,8 @@ (const byte*) SCREEN = (byte*) 1024 (byte) ch (byte) line -(byte) line#12 reg byte a 6.0 -(byte) line#13 reg byte a 1.25 +(byte) line#12 reg byte a 123.0 +(byte) line#13 reg byte a 18.125 (void()) ln() (label) ln::@return (void()) main() diff --git a/src/test/ref/printmsg.log b/src/test/ref/printmsg.log index a44457639..ee930b7d9 100644 --- a/src/test/ref/printmsg.log +++ b/src/test/ref/printmsg.log @@ -284,22 +284,22 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#28 (byte*) print_line_cursor#20 -Alias (byte*) print_str::str#4 = (byte*) print_str::str#5 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#25 (byte*) print_char_cursor#14 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#9 (byte*) print_char_cursor#3 (byte*) print_line_cursor#10 (byte*) print_char_cursor#16 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#5 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#6 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#7 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#4 (byte*) print_line_cursor#19 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#14 (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#23 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#24 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#7 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#28 print_line_cursor#20 +Alias print_str::str#4 = print_str::str#5 +Alias print_char_cursor#13 = print_char_cursor#25 print_char_cursor#14 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#9 print_char_cursor#3 print_line_cursor#10 print_char_cursor#16 print_line_cursor#2 print_char_cursor#4 +Alias print_line_cursor#17 = print_line_cursor#21 +Alias print_char_cursor#17 = print_char_cursor#5 +Alias print_line_cursor#11 = print_line_cursor#3 print_line_cursor#18 +Alias print_char_cursor#18 = print_char_cursor#6 +Alias print_char_cursor#19 = print_char_cursor#7 +Alias print_line_cursor#12 = print_line_cursor#4 print_line_cursor#19 +Alias print_char_cursor#20 = print_char_cursor#8 +Alias print_char_cursor#21 = print_char_cursor#9 +Alias print_line_cursor#13 = print_line_cursor#5 print_line_cursor#14 print_line_cursor#6 +Alias print_char_cursor#10 = print_char_cursor#22 print_char_cursor#23 print_char_cursor#11 +Alias print_char_cursor#12 = print_char_cursor#24 +Alias print_line_cursor#15 = print_line_cursor#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#0 @@ -451,22 +451,22 @@ print_str::@2: scope:[print_str] from print_str::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#13 3.2857142857142856 -(byte*) print_char_cursor#29 6.0 -(byte*) print_char_cursor#30 4.0 -(byte*) print_char_cursor#31 4.0 +(byte*) print_char_cursor#1 1001.0 +(byte*) print_char_cursor#13 293.2142857142857 +(byte*) print_char_cursor#29 123.0 +(byte*) print_char_cursor#30 22.0 +(byte*) print_char_cursor#31 22.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 3.7272727272727275 -(byte*) print_line_cursor#16 6.0 -(byte*) print_line_cursor#8 24.0 +(byte*) print_line_cursor#1 277.0 +(byte*) print_line_cursor#16 123.0 +(byte*) print_line_cursor#8 2103.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#4 11.5 -(byte*) print_str::str#6 2.0 +(byte*) print_str::str#0 2002.0 +(byte*) print_str::str#4 1026.25 +(byte*) print_str::str#6 101.0 Initial phi equivalence classes [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] @@ -682,19 +682,19 @@ print_str: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [12] (byte*) print_char_cursor#31 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#31 ] ( main:2 [ print_line_cursor#1 print_char_cursor#31 ] ) always clobbers reg byte a -Statement [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#13 ] main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#13 ] main:2::print_ln:15 [ print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#13 ] main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#13 ] main:2::print_ln:15 [ print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [24] if((byte) 0!=*((byte*) print_str::str#4)) goto print_str::@2 [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] ) always clobbers reg byte a reg byte y -Statement [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] ) always clobbers reg byte a reg byte y +Statement [8] (byte*) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 ] { { print_char_cursor#29 = print_char_cursor#30 } } ) always clobbers reg byte a +Statement [12] (byte*) print_char_cursor#31 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#31 ] ( main:2 [ print_line_cursor#1 print_char_cursor#31 ] { { print_char_cursor#29 = print_char_cursor#31 } } ) always clobbers reg byte a +Statement [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#13 ] { } main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#13 ] { { print_line_cursor#1 = print_line_cursor#16 } } main:2::print_ln:15 [ print_line_cursor#1 print_char_cursor#13 ] { { print_line_cursor#1 = print_line_cursor#16 } } ) always clobbers reg byte a +Statement [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:7 [ print_line_cursor#1 print_char_cursor#13 ] { } main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#13 ] { { print_line_cursor#1 = print_line_cursor#16 } } main:2::print_ln:15 [ print_line_cursor#1 print_char_cursor#13 ] { { print_line_cursor#1 = print_line_cursor#16 } } ) always clobbers reg byte a +Statement [24] if((byte) 0!=*((byte*) print_str::str#4)) goto print_str::@2 [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] { } main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] { { print_char_cursor#29 = print_char_cursor#30 } } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] { { print_char_cursor#29 = print_char_cursor#31 } } ) always clobbers reg byte a reg byte y +Statement [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] { } main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] { { print_char_cursor#29 = print_char_cursor#30 } } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] { { print_char_cursor#29 = print_char_cursor#31 } } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#30 print_char_cursor#31 print_char_cursor#1 ] : zp[2]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [] 33.73: zp[2]:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] 28.29: zp[2]:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#30 print_char_cursor#31 print_char_cursor#1 ] -Uplift Scope [print_str] 35.5: zp[2]:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] +Uplift Scope [] 2,503: zp[2]:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] 1,461.21: zp[2]:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#30 print_char_cursor#31 print_char_cursor#1 ] +Uplift Scope [print_str] 3,129.25: zp[2]:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [main] @@ -977,15 +977,15 @@ FINAL SYMBOL TABLE (const byte*) msg2[] = (byte*) "hello c64! " (const byte*) msg3[] = (byte*) "hello 2017! " (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 3.2857142857142856 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 1001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 293.2142857142857 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:6 123.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 22.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3.7272727272727275 -(byte*) print_line_cursor#16 print_line_cursor zp[2]:2 6.0 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 24.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 277.0 +(byte*) print_line_cursor#16 print_line_cursor zp[2]:2 123.0 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 2103.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -995,9 +995,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 22.0 -(byte*) print_str::str#4 str zp[2]:4 11.5 -(byte*) print_str::str#6 str zp[2]:4 2.0 +(byte*) print_str::str#0 str zp[2]:4 2002.0 +(byte*) print_str::str#4 str zp[2]:4 1026.25 +(byte*) print_str::str#6 str zp[2]:4 101.0 zp[2]:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] zp[2]:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] diff --git a/src/test/ref/printmsg.sym b/src/test/ref/printmsg.sym index 68c5bd91d..fa4997435 100644 --- a/src/test/ref/printmsg.sym +++ b/src/test/ref/printmsg.sym @@ -16,15 +16,15 @@ (const byte*) msg2[] = (byte*) "hello c64! " (const byte*) msg3[] = (byte*) "hello 2017! " (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 3.2857142857142856 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 1001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 293.2142857142857 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:6 123.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:6 22.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3.7272727272727275 -(byte*) print_line_cursor#16 print_line_cursor zp[2]:2 6.0 -(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 24.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 277.0 +(byte*) print_line_cursor#16 print_line_cursor zp[2]:2 123.0 +(byte*) print_line_cursor#8 print_line_cursor zp[2]:2 2103.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -34,9 +34,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 22.0 -(byte*) print_str::str#4 str zp[2]:4 11.5 -(byte*) print_str::str#6 str zp[2]:4 2.0 +(byte*) print_str::str#0 str zp[2]:4 2002.0 +(byte*) print_str::str#4 str zp[2]:4 1026.25 +(byte*) print_str::str#6 str zp[2]:4 101.0 zp[2]:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] zp[2]:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] diff --git a/src/test/ref/problem-negative-word-const.log b/src/test/ref/problem-negative-word-const.log index f555e3c7e..69103f574 100644 --- a/src/test/ref/problem-negative-word-const.log +++ b/src/test/ref/problem-negative-word-const.log @@ -89,9 +89,9 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#2 & (byte) 1 Inversing boolean not [5] (bool~) main::$1 ← (byte) 0 == (byte~) main::$0 from [4] (bool~) main::$4 ← (byte) 0 != (byte~) main::$0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [5] if((byte) 0==(byte~) main::$0) goto main::@2 Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,7)) goto main::@1 @@ -179,14 +179,14 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$3 22.0 +(byte~) main::$0 202.0 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (word) main::w -(word) main::w#0 5.5 -(word) main::w#2 11.0 +(word) main::w#0 50.5 +(word) main::w#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -304,22 +304,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) main::w#0 ← (word)(byte) main::i#2 [ main::i#2 main::w#0 ] ( main:2 [ main::i#2 main::w#0 ] ) always clobbers reg byte a +Statement [6] (word) main::w#0 ← (word)(byte) main::i#2 [ main::i#2 main::w#0 ] ( main:2 [ main::i#2 main::w#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w#2 main::$3 ] ( main:2 [ main::i#2 main::w#2 main::$3 ] ) always clobbers reg byte a -Statement [12] *((const word*) screen + (byte~) main::$3) ← (word) main::w#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] (word) main::w#0 ← (word)(byte) main::i#2 [ main::i#2 main::w#0 ] ( main:2 [ main::i#2 main::w#0 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w#2 main::$3 ] ( main:2 [ main::i#2 main::w#2 main::$3 ] ) always clobbers reg byte a -Statement [12] *((const word*) screen + (byte~) main::$3) ← (word) main::w#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::w#0 main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w#2 main::$3 ] ( main:2 [ main::i#2 main::w#2 main::$3 ] { } ) always clobbers reg byte a +Statement [12] *((const word*) screen + (byte~) main::$3) ← (word) main::w#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] (word) main::w#0 ← (word)(byte) main::i#2 [ main::i#2 main::w#0 ] ( main:2 [ main::i#2 main::w#0 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::w#0 main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w#2 main::$3 ] ( main:2 [ main::i#2 main::w#2 main::$3 ] { } ) always clobbers reg byte a +Statement [12] *((const word*) screen + (byte~) main::$3) ← (word) main::w#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::w#2 main::w#0 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:6 [ main::$3 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$0 ] 22: zp[1]:6 [ main::$3 ] 16.5: zp[2]:3 [ main::w#2 main::w#0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$0 ] 202: zp[1]:6 [ main::$3 ] 151.5: zp[2]:3 [ main::w#2 main::w#0 ] Uplift Scope [] Uplifting [main] best 788 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$3 ] zp[2]:3 [ main::w#2 main::w#0 ] @@ -457,18 +457,18 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (word) main::w -(word) main::w#0 w zp[2]:2 5.5 -(word) main::w#2 w zp[2]:2 11.0 +(word) main::w#0 w zp[2]:2 50.5 +(word) main::w#2 w zp[2]:2 101.0 (const word*) screen = (word*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/problem-negative-word-const.sym b/src/test/ref/problem-negative-word-const.sym index 299448e7e..c1a5d2a37 100644 --- a/src/test/ref/problem-negative-word-const.sym +++ b/src/test/ref/problem-negative-word-const.sym @@ -2,18 +2,18 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (word) main::w -(word) main::w#0 w zp[2]:2 5.5 -(word) main::w#2 w zp[2]:2 11.0 +(word) main::w#0 w zp[2]:2 50.5 +(word) main::w#2 w zp[2]:2 101.0 (const word*) screen = (word*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-0.log b/src/test/ref/procedure-callingconvention-stack-0.log index 43967ba21..5a4539c6a 100644 --- a/src/test/ref/procedure-callingconvention-stack-0.log +++ b/src/test/ref/procedure-callingconvention-stack-0.log @@ -80,7 +80,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) plus::return#0 = (byte~) plus::$0 (byte) plus::return#1 +Alias plus::return#0 = plus::$0 plus::return#1 Successful SSA optimization Pass2AliasElimination Simplifying expression containing zero SCREEN in [5] *((const byte*) SCREEN + (byte) 0) ← (byte~) main::$0 Successful SSA optimization PassNSimplifyExpressionWithZero @@ -138,14 +138,14 @@ plus::@return: scope:[plus] from plus VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 +(byte~) main::$0 22.0 __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (byte) plus::a -(byte) plus::a#0 2.0 +(byte) plus::a#0 101.0 (byte) plus::b -(byte) plus::b#0 4.0 +(byte) plus::b#0 202.0 (byte) plus::return -(byte) plus::return#0 4.0 +(byte) plus::return#0 202.0 Initial phi equivalence classes Added variable main::$0 to live range equivalence class [ main::$0 ] @@ -247,32 +247,32 @@ plus: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x +Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:3 [ plus::a#0 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ plus::a#0 ] -Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte x -Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte x +Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x -Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte x +Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x +Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte x Potential registers zp[1]:2 [ main::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ plus::a#0 ] : zp[1]:3 , reg byte y , Potential registers zp[1]:4 [ plus::b#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ plus::return#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plus] 4: zp[1]:4 [ plus::b#0 ] 4: zp[1]:5 [ plus::return#0 ] 2: zp[1]:3 [ plus::a#0 ] -Uplift Scope [main] 4: zp[1]:2 [ main::$0 ] +Uplift Scope [plus] 202: zp[1]:4 [ plus::b#0 ] 202: zp[1]:5 [ plus::return#0 ] 101: zp[1]:3 [ plus::a#0 ] +Uplift Scope [main] 22: zp[1]:2 [ main::$0 ] Uplift Scope [] Uplifting [plus] best 91 combination reg byte a [ plus::b#0 ] reg byte a [ plus::return#0 ] zp[1]:3 [ plus::a#0 ] @@ -383,7 +383,7 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(byte~) main::$0 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@return __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return @@ -391,11 +391,11 @@ __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:2 2.0 +(byte) plus::a#0 a zp[1]:2 101.0 (byte) plus::b -(byte) plus::b#0 reg byte a 4.0 +(byte) plus::b#0 reg byte a 202.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 202.0 reg byte a [ main::$0 ] zp[1]:2 [ plus::a#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-0.sym b/src/test/ref/procedure-callingconvention-stack-0.sym index 304e9cb44..a7d7dd37f 100644 --- a/src/test/ref/procedure-callingconvention-stack-0.sym +++ b/src/test/ref/procedure-callingconvention-stack-0.sym @@ -4,7 +4,7 @@ (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(byte~) main::$0 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@return __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return @@ -12,11 +12,11 @@ __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:2 2.0 +(byte) plus::a#0 a zp[1]:2 101.0 (byte) plus::b -(byte) plus::b#0 reg byte a 4.0 +(byte) plus::b#0 reg byte a 202.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 202.0 reg byte a [ main::$0 ] zp[1]:2 [ plus::a#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-1.log b/src/test/ref/procedure-callingconvention-stack-1.log index 43967ba21..5a4539c6a 100644 --- a/src/test/ref/procedure-callingconvention-stack-1.log +++ b/src/test/ref/procedure-callingconvention-stack-1.log @@ -80,7 +80,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) plus::return#0 = (byte~) plus::$0 (byte) plus::return#1 +Alias plus::return#0 = plus::$0 plus::return#1 Successful SSA optimization Pass2AliasElimination Simplifying expression containing zero SCREEN in [5] *((const byte*) SCREEN + (byte) 0) ← (byte~) main::$0 Successful SSA optimization PassNSimplifyExpressionWithZero @@ -138,14 +138,14 @@ plus::@return: scope:[plus] from plus VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 +(byte~) main::$0 22.0 __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (byte) plus::a -(byte) plus::a#0 2.0 +(byte) plus::a#0 101.0 (byte) plus::b -(byte) plus::b#0 4.0 +(byte) plus::b#0 202.0 (byte) plus::return -(byte) plus::return#0 4.0 +(byte) plus::return#0 202.0 Initial phi equivalence classes Added variable main::$0 to live range equivalence class [ main::$0 ] @@ -247,32 +247,32 @@ plus: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x +Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:3 [ plus::a#0 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ plus::a#0 ] -Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte x -Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte x +Statement [4] stackpush(byte) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(byte) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x -Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte x +Statement [8] (byte~) main::$0 ← stackpull(byte) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [11] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x +Statement [13] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte x Potential registers zp[1]:2 [ main::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ plus::a#0 ] : zp[1]:3 , reg byte y , Potential registers zp[1]:4 [ plus::b#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ plus::return#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plus] 4: zp[1]:4 [ plus::b#0 ] 4: zp[1]:5 [ plus::return#0 ] 2: zp[1]:3 [ plus::a#0 ] -Uplift Scope [main] 4: zp[1]:2 [ main::$0 ] +Uplift Scope [plus] 202: zp[1]:4 [ plus::b#0 ] 202: zp[1]:5 [ plus::return#0 ] 101: zp[1]:3 [ plus::a#0 ] +Uplift Scope [main] 22: zp[1]:2 [ main::$0 ] Uplift Scope [] Uplifting [plus] best 91 combination reg byte a [ plus::b#0 ] reg byte a [ plus::return#0 ] zp[1]:3 [ plus::a#0 ] @@ -383,7 +383,7 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(byte~) main::$0 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@return __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return @@ -391,11 +391,11 @@ __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:2 2.0 +(byte) plus::a#0 a zp[1]:2 101.0 (byte) plus::b -(byte) plus::b#0 reg byte a 4.0 +(byte) plus::b#0 reg byte a 202.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 202.0 reg byte a [ main::$0 ] zp[1]:2 [ plus::a#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-1.sym b/src/test/ref/procedure-callingconvention-stack-1.sym index 304e9cb44..a7d7dd37f 100644 --- a/src/test/ref/procedure-callingconvention-stack-1.sym +++ b/src/test/ref/procedure-callingconvention-stack-1.sym @@ -4,7 +4,7 @@ (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(byte~) main::$0 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@return __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return @@ -12,11 +12,11 @@ __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:2 2.0 +(byte) plus::a#0 a zp[1]:2 101.0 (byte) plus::b -(byte) plus::b#0 reg byte a 4.0 +(byte) plus::b#0 reg byte a 202.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 202.0 reg byte a [ main::$0 ] zp[1]:2 [ plus::a#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-10.log b/src/test/ref/procedure-callingconvention-stack-10.log index 453ddac00..fa41282cd 100644 --- a/src/test/ref/procedure-callingconvention-stack-10.log +++ b/src/test/ref/procedure-callingconvention-stack-10.log @@ -189,11 +189,11 @@ Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) get::$0 ← (byte) get::i#0 / (byte) 2 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::p_x#0 = (byte~) main::$1_x -Alias (byte) main::p_y#0 = (byte~) main::$1_y -Alias (byte) get::return_x#0 = (byte) get::p_x#0 (byte) get::i#0 (byte) get::return_x#1 -Alias (byte) get::return_y#0 = (byte) get::p_y#0 (byte~) get::$0 (byte) get::return_y#1 +Alias main::i#2 = main::i#3 +Alias main::p_x#0 = main::$1_x +Alias main::p_y#0 = main::$1_y +Alias get::return_x#0 = get::p_x#0 get::i#0 get::return_x#1 +Alias get::return_y#0 = get::p_y#0 get::$0 get::return_y#1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) 5) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -298,23 +298,23 @@ __stackcall (struct Point()) get((byte) get::i) (byte) get::p_y (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 3.0 +(byte) get::return_x#0 1501.5 (byte) get::return_y -(byte) get::return_y#0 2.0 -(byte) idx loadstore 0.6363636363636365 +(byte) get::return_y#0 1001.0 +(byte) idx loadstore 273.0909090909091 __stackcall (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 4.0 +(byte) main::i#1 202.0 +(byte) main::i#2 36.72727272727273 (byte) main::p_x -(byte) main::p_x#0 11.0 +(byte) main::p_x#0 101.0 (byte) main::p_y -(byte) main::p_y#0 11.0 +(byte) main::p_y#0 101.0 __stackcall (void()) print((byte) print::p_x , (byte) print::p_y) (byte) print::p_x -(byte) print::p_x#0 2.0 +(byte) print::p_x#0 1001.0 (byte) print::p_y -(byte) print::p_y#0 1.3333333333333333 +(byte) print::p_y#0 667.3333333333334 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -492,49 +492,49 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte) print::p_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_X) [ idx print::p_x#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 ] ) always clobbers reg byte a reg byte x +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte) print::p_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_X) [ idx print::p_x#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [5] (byte) print::p_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_Y) [ idx print::p_x#0 print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 print::p_y#0 ] ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::p_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_Y) [ idx print::p_x#0 print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 print::p_y#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:4 [ print::p_x#0 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ print::p_x#0 ] -Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_x#0 [ idx print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_y#0 ] ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_x#0 [ idx print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_y#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ print::p_y#0 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ print::p_y#0 ] -Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_y#0 [ idx ] ( main:2::print:27 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [11] (byte) get::return_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_x#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) get::return_y#0 ← (byte) get::return_x#0 >> (byte) 1 [ get::return_x#0 get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 get::return_y#0 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_y#0 [ idx ] ( main:2::print:27 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [11] (byte) get::return_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_x#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) get::return_y#0 ← (byte) get::return_x#0 >> (byte) 1 [ get::return_x#0 get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 get::return_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ get::return_x#0 ] -Statement [13] stackidx(byte,(byte) 0) ← (byte) get::return_x#0 [ get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_y#0 ] ) always clobbers reg byte a reg byte x +Statement [13] stackidx(byte,(byte) 0) ← (byte) get::return_x#0 [ get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_y#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:7 [ get::return_y#0 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ get::return_y#0 ] -Statement [14] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_y#0 [ ] ( main:2::get:22 [ idx main::i#2 ] ) always clobbers reg byte a reg byte x -Statement [18] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [20] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [23] (byte) main::p_x#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 ] ( main:2 [ idx main::i#2 main::p_x#0 ] ) always clobbers reg byte a -Statement [24] (byte) main::p_y#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_x#0 main::p_y#0 ] ) always clobbers reg byte a +Statement [14] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_y#0 [ ] ( main:2::get:22 [ idx main::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [18] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [20] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [23] (byte) main::p_x#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 ] ( main:2 [ idx main::i#2 main::p_x#0 ] { } ) always clobbers reg byte a +Statement [24] (byte) main::p_y#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_x#0 main::p_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::p_x#0 ] -Statement [25] stackpush(byte) ← (byte) main::p_x#0 [ idx main::i#2 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_y#0 ] ) always clobbers reg byte a +Statement [25] stackpush(byte) ← (byte) main::p_x#0 [ idx main::i#2 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::p_y#0 ] -Statement [26] stackpush(byte) ← (byte) main::p_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [26] stackpush(byte) ← (byte) main::p_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 2) always clobbers reg byte a -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte) print::p_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_X) [ idx print::p_x#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 ] ) always clobbers reg byte a reg byte x -Statement [5] (byte) print::p_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_Y) [ idx print::p_x#0 print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 print::p_y#0 ] ) always clobbers reg byte a reg byte x -Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_x#0 [ idx print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_y#0 ] ) always clobbers reg byte a reg byte y -Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_y#0 [ idx ] ( main:2::print:27 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [11] (byte) get::return_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_x#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (byte) get::return_y#0 ← (byte) get::return_x#0 >> (byte) 1 [ get::return_x#0 get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 get::return_y#0 ] ) always clobbers reg byte a -Statement [13] stackidx(byte,(byte) 0) ← (byte) get::return_x#0 [ get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_y#0 ] ) always clobbers reg byte a reg byte x -Statement [14] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_y#0 [ ] ( main:2::get:22 [ idx main::i#2 ] ) always clobbers reg byte a reg byte x -Statement [18] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [20] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [23] (byte) main::p_x#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 ] ( main:2 [ idx main::i#2 main::p_x#0 ] ) always clobbers reg byte a -Statement [24] (byte) main::p_y#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_x#0 main::p_y#0 ] ) always clobbers reg byte a -Statement [25] stackpush(byte) ← (byte) main::p_x#0 [ idx main::i#2 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_y#0 ] ) always clobbers reg byte a -Statement [26] stackpush(byte) ← (byte) main::p_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte) print::p_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_X) [ idx print::p_x#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::p_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_P_Y) [ idx print::p_x#0 print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_x#0 print::p_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [6] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_x#0 [ idx print::p_y#0 ] ( main:2::print:27 [ main::i#2 idx print::p_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::p_y#0 [ idx ] ( main:2::print:27 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [11] (byte) get::return_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_x#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (byte) get::return_y#0 ← (byte) get::return_x#0 >> (byte) 1 [ get::return_x#0 get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_x#0 get::return_y#0 ] { } ) always clobbers reg byte a +Statement [13] stackidx(byte,(byte) 0) ← (byte) get::return_x#0 [ get::return_y#0 ] ( main:2::get:22 [ idx main::i#2 get::return_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [14] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_y#0 [ ] ( main:2::get:22 [ idx main::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [18] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [20] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [23] (byte) main::p_x#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 ] ( main:2 [ idx main::i#2 main::p_x#0 ] { } ) always clobbers reg byte a +Statement [24] (byte) main::p_y#0 ← stackpull(byte) [ idx main::i#2 main::p_x#0 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_x#0 main::p_y#0 ] { } ) always clobbers reg byte a +Statement [25] stackpush(byte) ← (byte) main::p_x#0 [ idx main::i#2 main::p_y#0 ] ( main:2 [ idx main::i#2 main::p_y#0 ] { } ) always clobbers reg byte a +Statement [26] stackpush(byte) ← (byte) main::p_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 2) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ idx ] : zp[1]:3 , @@ -546,21 +546,21 @@ Potential registers zp[1]:8 [ main::p_x#0 ] : zp[1]:8 , reg byte x , reg byte y Potential registers zp[1]:9 [ main::p_y#0 ] : zp[1]:9 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 26: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[1]:8 [ main::p_x#0 ] 11: zp[1]:9 [ main::p_y#0 ] -Uplift Scope [get] 3: zp[1]:6 [ get::return_x#0 ] 2: zp[1]:7 [ get::return_y#0 ] -Uplift Scope [print] 2: zp[1]:4 [ print::p_x#0 ] 1.33: zp[1]:5 [ print::p_y#0 ] -Uplift Scope [] 0.64: zp[1]:3 [ idx ] +Uplift Scope [get] 1,501.5: zp[1]:6 [ get::return_x#0 ] 1,001: zp[1]:7 [ get::return_y#0 ] +Uplift Scope [print] 1,001: zp[1]:4 [ print::p_x#0 ] 667.33: zp[1]:5 [ print::p_y#0 ] +Uplift Scope [main] 238.73: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[1]:8 [ main::p_x#0 ] 101: zp[1]:9 [ main::p_y#0 ] +Uplift Scope [] 273.09: zp[1]:3 [ idx ] Uplift Scope [Point] -Uplifting [main] best 903 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte y [ main::p_x#0 ] reg byte x [ main::p_y#0 ] -Uplifting [get] best 898 combination reg byte x [ get::return_x#0 ] reg byte y [ get::return_y#0 ] -Uplifting [print] best 894 combination reg byte y [ print::p_x#0 ] reg byte x [ print::p_y#0 ] +Uplifting [get] best 938 combination reg byte x [ get::return_x#0 ] reg byte y [ get::return_y#0 ] +Uplifting [print] best 934 combination reg byte y [ print::p_x#0 ] reg byte x [ print::p_y#0 ] +Uplifting [main] best 894 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte y [ main::p_x#0 ] reg byte x [ main::p_y#0 ] Uplifting [] best 894 combination zp[1]:3 [ idx ] Uplifting [Point] best 894 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 894 combination zp[1]:2 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp[1]:3 [ idx ] Uplifting [] best 894 combination zp[1]:3 [ idx ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 894 combination zp[1]:2 [ main::i#2 main::i#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -742,29 +742,29 @@ __stackcall (struct Point()) get((byte) get::i) (byte) get::p_y (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte x 3.0 +(byte) get::return_x#0 reg byte x 1501.5 (byte) get::return_y -(byte) get::return_y#0 reg byte y 2.0 -(byte) idx loadstore zp[1]:3 0.6363636363636365 +(byte) get::return_y#0 reg byte y 1001.0 +(byte) idx loadstore zp[1]:3 273.0909090909091 __stackcall (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#2 i zp[1]:2 4.0 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#2 i zp[1]:2 36.72727272727273 (byte) main::p_x -(byte) main::p_x#0 reg byte y 11.0 +(byte) main::p_x#0 reg byte y 101.0 (byte) main::p_y -(byte) main::p_y#0 reg byte x 11.0 +(byte) main::p_y#0 reg byte x 101.0 __stackcall (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (const byte) print::OFFSET_STACK_P_X = (byte) 1 (const byte) print::OFFSET_STACK_P_Y = (byte) 0 (byte) print::p_x -(byte) print::p_x#0 reg byte y 2.0 +(byte) print::p_x#0 reg byte y 1001.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 1.3333333333333333 +(byte) print::p_y#0 reg byte x 667.3333333333334 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx ] diff --git a/src/test/ref/procedure-callingconvention-stack-10.sym b/src/test/ref/procedure-callingconvention-stack-10.sym index e87adfdb3..e749eb470 100644 --- a/src/test/ref/procedure-callingconvention-stack-10.sym +++ b/src/test/ref/procedure-callingconvention-stack-10.sym @@ -14,29 +14,29 @@ __stackcall (struct Point()) get((byte) get::i) (byte) get::p_y (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte x 3.0 +(byte) get::return_x#0 reg byte x 1501.5 (byte) get::return_y -(byte) get::return_y#0 reg byte y 2.0 -(byte) idx loadstore zp[1]:3 0.6363636363636365 +(byte) get::return_y#0 reg byte y 1001.0 +(byte) idx loadstore zp[1]:3 273.0909090909091 __stackcall (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#2 i zp[1]:2 4.0 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#2 i zp[1]:2 36.72727272727273 (byte) main::p_x -(byte) main::p_x#0 reg byte y 11.0 +(byte) main::p_x#0 reg byte y 101.0 (byte) main::p_y -(byte) main::p_y#0 reg byte x 11.0 +(byte) main::p_y#0 reg byte x 101.0 __stackcall (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (const byte) print::OFFSET_STACK_P_X = (byte) 1 (const byte) print::OFFSET_STACK_P_Y = (byte) 0 (byte) print::p_x -(byte) print::p_x#0 reg byte y 2.0 +(byte) print::p_x#0 reg byte y 1001.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 1.3333333333333333 +(byte) print::p_y#0 reg byte x 667.3333333333334 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx ] diff --git a/src/test/ref/procedure-callingconvention-stack-11.log b/src/test/ref/procedure-callingconvention-stack-11.log index 4ebadd2df..4915f4e36 100644 --- a/src/test/ref/procedure-callingconvention-stack-11.log +++ b/src/test/ref/procedure-callingconvention-stack-11.log @@ -319,15 +319,15 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) get::$0 ← (byte) get::i#0 / (byte) 2 Inferred type updated to byte in (unumber~) get::$1 ← (byte) get::i#0 + (byte) 1 Inferred type updated to byte in (unumber~) get::$2 ← (byte) get::i#0 * (byte) 2 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::v_p1_x#0 = (byte~) main::$1_p1_x -Alias (byte) main::v_p1_y#0 = (byte~) main::$1_p1_y -Alias (byte) main::v_p2_x#0 = (byte~) main::$1_p2_x -Alias (byte) main::v_p2_y#0 = (byte~) main::$1_p2_y -Alias (byte) get::return_p1_x#0 = (byte) get::v_p1_x#0 (byte) get::i#0 (byte) get::return_p1_x#1 -Alias (byte) get::return_p1_y#0 = (byte) get::v_p1_y#0 (byte~) get::$0 (byte) get::return_p1_y#1 -Alias (byte) get::return_p2_x#0 = (byte) get::v_p2_x#0 (byte~) get::$1 (byte) get::return_p2_x#1 -Alias (byte) get::return_p2_y#0 = (byte) get::v_p2_y#0 (byte~) get::$2 (byte) get::return_p2_y#1 +Alias main::i#2 = main::i#3 +Alias main::v_p1_x#0 = main::$1_p1_x +Alias main::v_p1_y#0 = main::$1_p1_y +Alias main::v_p2_x#0 = main::$1_p2_x +Alias main::v_p2_y#0 = main::$1_p2_y +Alias get::return_p1_x#0 = get::v_p1_x#0 get::i#0 get::return_p1_x#1 +Alias get::return_p1_y#0 = get::v_p1_y#0 get::$0 get::return_p1_y#1 +Alias get::return_p2_x#0 = get::v_p2_x#0 get::$1 get::return_p2_x#1 +Alias get::return_p2_y#0 = get::v_p2_y#0 get::$2 get::return_p2_y#1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) 5) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -456,46 +456,46 @@ __stackcall (struct Vector()) get((byte) get::i) (struct Vector) get::return (struct Point) get::return_p1 (byte) get::return_p1_x -(byte) get::return_p1_x#0 2.5 +(byte) get::return_p1_x#0 1251.25 (byte) get::return_p1_y -(byte) get::return_p1_y#0 1.0 +(byte) get::return_p1_y#0 500.5 (struct Point) get::return_p2 (byte) get::return_p2_x -(byte) get::return_p2_x#0 1.0 +(byte) get::return_p2_x#0 500.5 (byte) get::return_p2_y -(byte) get::return_p2_y#0 1.0 +(byte) get::return_p2_y#0 500.5 (struct Point) get::v_p1 (byte) get::v_p1_x (byte) get::v_p1_y (struct Point) get::v_p2 (byte) get::v_p2_x (byte) get::v_p2_y -(byte) idx loadstore 0.9411764705882354 +(byte) idx loadstore 441.67647058823525 __stackcall (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 2.933333333333333 +(byte) main::i#1 202.0 +(byte) main::i#2 26.933333333333334 (struct Point) main::v_p1 (byte) main::v_p1_x -(byte) main::v_p1_x#0 5.5 +(byte) main::v_p1_x#0 50.5 (byte) main::v_p1_y -(byte) main::v_p1_y#0 5.5 +(byte) main::v_p1_y#0 50.5 (struct Point) main::v_p2 (byte) main::v_p2_x -(byte) main::v_p2_x#0 5.5 +(byte) main::v_p2_x#0 50.5 (byte) main::v_p2_y -(byte) main::v_p2_y#0 5.5 +(byte) main::v_p2_y#0 50.5 __stackcall (void()) print((byte) print::v_p1_x , (byte) print::v_p1_y , (byte) print::v_p2_x , (byte) print::v_p2_y) (struct Point) print::v_p1 (byte) print::v_p1_x -(byte) print::v_p1_x#0 1.0 +(byte) print::v_p1_x#0 500.5 (byte) print::v_p1_y -(byte) print::v_p1_y#0 0.8 +(byte) print::v_p1_y#0 400.4 (struct Point) print::v_p2 (byte) print::v_p2_x -(byte) print::v_p2_x#0 0.6666666666666666 +(byte) print::v_p2_x#0 333.6666666666667 (byte) print::v_p2_y -(byte) print::v_p2_y#0 0.5714285714285714 +(byte) print::v_p2_y#0 286.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -758,85 +758,85 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte) print::v_p1_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_X) [ idx print::v_p1_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 ] ) always clobbers reg byte a reg byte x +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte) print::v_p1_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_X) [ idx print::v_p1_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [5] (byte) print::v_p1_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 ] ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::v_p1_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:4 [ print::v_p1_x#0 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ print::v_p1_x#0 ] -Statement [6] (byte) print::v_p2_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_X) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ) always clobbers reg byte a reg byte x +Statement [6] (byte) print::v_p2_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_X) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:5 [ print::v_p1_y#0 ] Removing always clobbered register reg byte x as potential for zp[1]:5 [ print::v_p1_y#0 ] -Statement [7] (byte) print::v_p2_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte x +Statement [7] (byte) print::v_p2_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:6 [ print::v_p2_x#0 ] Removing always clobbered register reg byte x as potential for zp[1]:6 [ print::v_p2_x#0 ] -Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_x#0 [ idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_x#0 [ idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ print::v_p1_y#0 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ print::v_p2_x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ print::v_p2_y#0 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ print::v_p2_y#0 ] -Statement [10] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_y#0 [ idx print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y -Statement [12] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_x#0 [ idx print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_y#0 [ idx ] ( main:2::print:43 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [16] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx ] ( main:2::print:43 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [19] (byte) get::return_p1_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_p1_x#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 ] ) always clobbers reg byte a reg byte x -Statement [20] (byte) get::return_p1_y#0 ← (byte) get::return_p1_x#0 >> (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 ] ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_y#0 [ idx print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_x#0 [ idx print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_y#0 [ idx ] ( main:2::print:43 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [16] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx ] ( main:2::print:43 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [19] (byte) get::return_p1_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_p1_x#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [20] (byte) get::return_p1_y#0 ← (byte) get::return_p1_x#0 >> (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ get::return_p1_x#0 ] -Statement [22] (byte) get::return_p2_y#0 ← (byte) get::return_p1_x#0 << (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a +Statement [22] (byte) get::return_p2_y#0 ← (byte) get::return_p1_x#0 << (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ get::return_p1_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ get::return_p2_x#0 ] -Statement [23] stackidx(byte,(byte) 0) ← (byte) get::return_p1_x#0 [ get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x +Statement [23] stackidx(byte,(byte) 0) ← (byte) get::return_p1_x#0 [ get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:9 [ get::return_p1_y#0 ] Removing always clobbered register reg byte x as potential for zp[1]:10 [ get::return_p2_x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ get::return_p2_y#0 ] Removing always clobbered register reg byte x as potential for zp[1]:11 [ get::return_p2_y#0 ] -Statement [24] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p1_y#0 [ get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [25] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2) ← (byte) get::return_p2_x#0 [ get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [26] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p2_y#0 [ ] ( main:2::get:34 [ idx main::i#2 ] ) always clobbers reg byte a reg byte x -Statement [30] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [32] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [35] (byte) main::v_p1_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 ] ) always clobbers reg byte a -Statement [36] (byte) main::v_p1_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ) always clobbers reg byte a +Statement [24] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p1_y#0 [ get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [25] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2) ← (byte) get::return_p2_x#0 [ get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [26] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p2_y#0 [ ] ( main:2::get:34 [ idx main::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [30] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [32] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [35] (byte) main::v_p1_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 ] { } ) always clobbers reg byte a +Statement [36] (byte) main::v_p1_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ main::v_p1_x#0 ] -Statement [37] (byte) main::v_p2_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ) always clobbers reg byte a +Statement [37] (byte) main::v_p2_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ main::v_p1_y#0 ] -Statement [38] (byte) main::v_p2_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a +Statement [38] (byte) main::v_p2_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ main::v_p2_x#0 ] -Statement [39] stackpush(byte) ← (byte) main::v_p1_x#0 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a +Statement [39] stackpush(byte) ← (byte) main::v_p1_x#0 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ main::v_p2_y#0 ] -Statement [40] stackpush(byte) ← (byte) main::v_p1_y#0 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [41] stackpush(byte) ← (byte) main::v_p2_x#0 [ idx main::i#2 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [42] stackpush(byte) ← (byte) main::v_p2_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [40] stackpush(byte) ← (byte) main::v_p1_y#0 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [41] stackpush(byte) ← (byte) main::v_p2_x#0 [ idx main::i#2 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [42] stackpush(byte) ← (byte) main::v_p2_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 4) always clobbers reg byte a reg byte x -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte) print::v_p1_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_X) [ idx print::v_p1_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 ] ) always clobbers reg byte a reg byte x -Statement [5] (byte) print::v_p1_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 ] ) always clobbers reg byte a reg byte x -Statement [6] (byte) print::v_p2_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_X) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ) always clobbers reg byte a reg byte x -Statement [7] (byte) print::v_p2_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_x#0 [ idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y -Statement [10] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_y#0 [ idx print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_x#0 print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y -Statement [12] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_x#0 [ idx print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_y#0 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_y#0 [ idx ] ( main:2::print:43 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [16] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx ] ( main:2::print:43 [ main::i#2 idx ] ) always clobbers reg byte a reg byte y -Statement [19] (byte) get::return_p1_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_p1_x#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 ] ) always clobbers reg byte a reg byte x -Statement [20] (byte) get::return_p1_y#0 ← (byte) get::return_p1_x#0 >> (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 ] ) always clobbers reg byte a -Statement [22] (byte) get::return_p2_y#0 ← (byte) get::return_p1_x#0 << (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a -Statement [23] stackidx(byte,(byte) 0) ← (byte) get::return_p1_x#0 [ get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [24] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p1_y#0 [ get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_x#0 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [25] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2) ← (byte) get::return_p2_x#0 [ get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_y#0 ] ) always clobbers reg byte a reg byte x -Statement [26] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p2_y#0 [ ] ( main:2::get:34 [ idx main::i#2 ] ) always clobbers reg byte a reg byte x -Statement [30] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [32] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a -Statement [35] (byte) main::v_p1_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 ] ) always clobbers reg byte a -Statement [36] (byte) main::v_p1_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ) always clobbers reg byte a -Statement [37] (byte) main::v_p2_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ) always clobbers reg byte a -Statement [38] (byte) main::v_p2_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [39] stackpush(byte) ← (byte) main::v_p1_x#0 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [40] stackpush(byte) ← (byte) main::v_p1_y#0 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [41] stackpush(byte) ← (byte) main::v_p2_x#0 [ idx main::i#2 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_y#0 ] ) always clobbers reg byte a -Statement [42] stackpush(byte) ← (byte) main::v_p2_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte) print::v_p1_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_X) [ idx print::v_p1_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::v_p1_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P1_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [6] (byte) print::v_p2_x#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_X) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [7] (byte) print::v_p2_y#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_V_P2_Y) [ idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_x#0 print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [8] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_x#0 [ idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p1_y#0 print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p1_y#0 [ idx print::v_p2_x#0 print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_x#0 print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_x#0 [ idx print::v_p2_y#0 ] ( main:2::print:43 [ main::i#2 idx print::v_p2_y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) print::v_p2_y#0 [ idx ] ( main:2::print:43 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [16] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx ] ( main:2::print:43 [ main::i#2 idx ] { } ) always clobbers reg byte a reg byte y +Statement [19] (byte) get::return_p1_x#0 ← stackidx(byte,(const byte) get::OFFSET_STACK_I) [ get::return_p1_x#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 ] { } ) always clobbers reg byte a reg byte x +Statement [20] (byte) get::return_p1_y#0 ← (byte) get::return_p1_x#0 >> (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 ] { } ) always clobbers reg byte a +Statement [22] (byte) get::return_p2_y#0 ← (byte) get::return_p1_x#0 << (byte) 1 [ get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_x#0 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a +Statement [23] stackidx(byte,(byte) 0) ← (byte) get::return_p1_x#0 [ get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p1_y#0 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [24] stackidx(byte,(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p1_y#0 [ get::return_p2_x#0 get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_x#0 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [25] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2) ← (byte) get::return_p2_x#0 [ get::return_p2_y#0 ] ( main:2::get:34 [ idx main::i#2 get::return_p2_y#0 ] { } ) always clobbers reg byte a reg byte x +Statement [26] stackidx(byte,(const byte) OFFSET_STRUCT_VECTOR_P2+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) get::return_p2_y#0 [ ] ( main:2::get:34 [ idx main::i#2 ] { } ) always clobbers reg byte a reg byte x +Statement [30] if((byte) main::i#2<(byte) 5) goto main::@2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [32] stackpush(byte) ← (byte) main::i#2 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a +Statement [35] (byte) main::v_p1_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 ] { } ) always clobbers reg byte a +Statement [36] (byte) main::v_p1_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 ] { } ) always clobbers reg byte a +Statement [37] (byte) main::v_p2_x#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 ] { } ) always clobbers reg byte a +Statement [38] (byte) main::v_p2_y#0 ← stackpull(byte) [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_x#0 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [39] stackpush(byte) ← (byte) main::v_p1_x#0 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p1_y#0 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [40] stackpush(byte) ← (byte) main::v_p1_y#0 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_x#0 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [41] stackpush(byte) ← (byte) main::v_p2_x#0 [ idx main::i#2 main::v_p2_y#0 ] ( main:2 [ idx main::i#2 main::v_p2_y#0 ] { } ) always clobbers reg byte a +Statement [42] stackpush(byte) ← (byte) main::v_p2_y#0 [ idx main::i#2 ] ( main:2 [ idx main::i#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 4) always clobbers reg byte a reg byte x Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ idx ] : zp[1]:3 , @@ -854,25 +854,19 @@ Potential registers zp[1]:14 [ main::v_p2_x#0 ] : zp[1]:14 , reg byte x , reg by Potential registers zp[1]:15 [ main::v_p2_y#0 ] : zp[1]:15 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 24.93: zp[1]:2 [ main::i#2 main::i#1 ] 5.5: zp[1]:12 [ main::v_p1_x#0 ] 5.5: zp[1]:13 [ main::v_p1_y#0 ] 5.5: zp[1]:14 [ main::v_p2_x#0 ] 5.5: zp[1]:15 [ main::v_p2_y#0 ] -Uplift Scope [get] 2.5: zp[1]:8 [ get::return_p1_x#0 ] 1: zp[1]:9 [ get::return_p1_y#0 ] 1: zp[1]:10 [ get::return_p2_x#0 ] 1: zp[1]:11 [ get::return_p2_y#0 ] -Uplift Scope [print] 1: zp[1]:4 [ print::v_p1_x#0 ] 0.8: zp[1]:5 [ print::v_p1_y#0 ] 0.67: zp[1]:6 [ print::v_p2_x#0 ] 0.57: zp[1]:7 [ print::v_p2_y#0 ] -Uplift Scope [] 0.94: zp[1]:3 [ idx ] +Uplift Scope [get] 1,251.25: zp[1]:8 [ get::return_p1_x#0 ] 500.5: zp[1]:9 [ get::return_p1_y#0 ] 500.5: zp[1]:10 [ get::return_p2_x#0 ] 500.5: zp[1]:11 [ get::return_p2_y#0 ] +Uplift Scope [print] 500.5: zp[1]:4 [ print::v_p1_x#0 ] 400.4: zp[1]:5 [ print::v_p1_y#0 ] 333.67: zp[1]:6 [ print::v_p2_x#0 ] 286: zp[1]:7 [ print::v_p2_y#0 ] +Uplift Scope [] 441.68: zp[1]:3 [ idx ] +Uplift Scope [main] 228.93: zp[1]:2 [ main::i#2 main::i#1 ] 50.5: zp[1]:12 [ main::v_p1_x#0 ] 50.5: zp[1]:13 [ main::v_p1_y#0 ] 50.5: zp[1]:14 [ main::v_p2_x#0 ] 50.5: zp[1]:15 [ main::v_p2_y#0 ] Uplift Scope [Point] Uplift Scope [Vector] -Uplifting [main] best 1324 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte y [ main::v_p1_x#0 ] reg byte x [ main::v_p1_y#0 ] zp[1]:14 [ main::v_p2_x#0 ] zp[1]:15 [ main::v_p2_y#0 ] -Uplifting [get] best 1317 combination reg byte x [ get::return_p1_x#0 ] zp[1]:9 [ get::return_p1_y#0 ] reg byte y [ get::return_p2_x#0 ] zp[1]:11 [ get::return_p2_y#0 ] -Uplifting [print] best 1313 combination reg byte y [ print::v_p1_x#0 ] zp[1]:5 [ print::v_p1_y#0 ] zp[1]:6 [ print::v_p2_x#0 ] reg byte x [ print::v_p2_y#0 ] -Uplifting [] best 1313 combination zp[1]:3 [ idx ] +Uplifting [get] best 1357 combination reg byte x [ get::return_p1_x#0 ] zp[1]:9 [ get::return_p1_y#0 ] reg byte y [ get::return_p2_x#0 ] zp[1]:11 [ get::return_p2_y#0 ] +Uplifting [print] best 1353 combination reg byte y [ print::v_p1_x#0 ] zp[1]:5 [ print::v_p1_y#0 ] zp[1]:6 [ print::v_p2_x#0 ] reg byte x [ print::v_p2_y#0 ] +Uplifting [] best 1353 combination zp[1]:3 [ idx ] +Uplifting [main] best 1313 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte y [ main::v_p1_x#0 ] reg byte x [ main::v_p1_y#0 ] zp[1]:14 [ main::v_p2_x#0 ] zp[1]:15 [ main::v_p2_y#0 ] Uplifting [Point] best 1313 combination Uplifting [Vector] best 1313 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 1313 combination zp[1]:2 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:14 [ main::v_p2_x#0 ] -Uplifting [main] best 1313 combination zp[1]:14 [ main::v_p2_x#0 ] -Attempting to uplift remaining variables inzp[1]:15 [ main::v_p2_y#0 ] -Uplifting [main] best 1313 combination zp[1]:15 [ main::v_p2_y#0 ] Attempting to uplift remaining variables inzp[1]:9 [ get::return_p1_y#0 ] Uplifting [get] best 1313 combination zp[1]:9 [ get::return_p1_y#0 ] Attempting to uplift remaining variables inzp[1]:11 [ get::return_p2_y#0 ] @@ -883,6 +877,12 @@ Attempting to uplift remaining variables inzp[1]:5 [ print::v_p1_y#0 ] Uplifting [print] best 1313 combination zp[1]:5 [ print::v_p1_y#0 ] Attempting to uplift remaining variables inzp[1]:6 [ print::v_p2_x#0 ] Uplifting [print] best 1313 combination zp[1]:6 [ print::v_p2_x#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1313 combination zp[1]:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:14 [ main::v_p2_x#0 ] +Uplifting [main] best 1313 combination zp[1]:14 [ main::v_p2_x#0 ] +Attempting to uplift remaining variables inzp[1]:15 [ main::v_p2_y#0 ] +Uplifting [main] best 1313 combination zp[1]:15 [ main::v_p2_y#0 ] Coalescing zero page register [ zp[1]:9 [ get::return_p1_y#0 ] ] with [ zp[1]:5 [ print::v_p1_y#0 ] ] Coalescing zero page register [ zp[1]:11 [ get::return_p2_y#0 ] ] with [ zp[1]:6 [ print::v_p2_x#0 ] ] Coalescing zero page register [ zp[1]:14 [ main::v_p2_x#0 ] ] with [ zp[1]:9 [ get::return_p1_y#0 print::v_p1_y#0 ] ] @@ -1139,38 +1139,38 @@ __stackcall (struct Vector()) get((byte) get::i) (struct Vector) get::return (struct Point) get::return_p1 (byte) get::return_p1_x -(byte) get::return_p1_x#0 reg byte x 2.5 +(byte) get::return_p1_x#0 reg byte x 1251.25 (byte) get::return_p1_y -(byte) get::return_p1_y#0 return_p1_y zp[1]:4 1.0 +(byte) get::return_p1_y#0 return_p1_y zp[1]:4 500.5 (struct Point) get::return_p2 (byte) get::return_p2_x -(byte) get::return_p2_x#0 reg byte y 1.0 +(byte) get::return_p2_x#0 reg byte y 500.5 (byte) get::return_p2_y -(byte) get::return_p2_y#0 return_p2_y zp[1]:5 1.0 +(byte) get::return_p2_y#0 return_p2_y zp[1]:5 500.5 (struct Point) get::v_p1 (byte) get::v_p1_x (byte) get::v_p1_y (struct Point) get::v_p2 (byte) get::v_p2_x (byte) get::v_p2_y -(byte) idx loadstore zp[1]:3 0.9411764705882354 +(byte) idx loadstore zp[1]:3 441.67647058823525 __stackcall (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#2 i zp[1]:2 2.933333333333333 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#2 i zp[1]:2 26.933333333333334 (struct Point) main::v_p1 (byte) main::v_p1_x -(byte) main::v_p1_x#0 reg byte y 5.5 +(byte) main::v_p1_x#0 reg byte y 50.5 (byte) main::v_p1_y -(byte) main::v_p1_y#0 reg byte x 5.5 +(byte) main::v_p1_y#0 reg byte x 50.5 (struct Point) main::v_p2 (byte) main::v_p2_x -(byte) main::v_p2_x#0 v_p2_x zp[1]:4 5.5 +(byte) main::v_p2_x#0 v_p2_x zp[1]:4 50.5 (byte) main::v_p2_y -(byte) main::v_p2_y#0 v_p2_y zp[1]:5 5.5 +(byte) main::v_p2_y#0 v_p2_y zp[1]:5 50.5 __stackcall (void()) print((byte) print::v_p1_x , (byte) print::v_p1_y , (byte) print::v_p2_x , (byte) print::v_p2_y) (label) print::@return (const byte) print::OFFSET_STACK_V_P1_X = (byte) 3 @@ -1179,14 +1179,14 @@ __stackcall (void()) print((byte) print::v_p1_x , (byte) print::v_p1_y , (byte) (const byte) print::OFFSET_STACK_V_P2_Y = (byte) 0 (struct Point) print::v_p1 (byte) print::v_p1_x -(byte) print::v_p1_x#0 reg byte y 1.0 +(byte) print::v_p1_x#0 reg byte y 500.5 (byte) print::v_p1_y -(byte) print::v_p1_y#0 v_p1_y zp[1]:4 0.8 +(byte) print::v_p1_y#0 v_p1_y zp[1]:4 400.4 (struct Point) print::v_p2 (byte) print::v_p2_x -(byte) print::v_p2_x#0 v_p2_x zp[1]:5 0.6666666666666666 +(byte) print::v_p2_x#0 v_p2_x zp[1]:5 333.6666666666667 (byte) print::v_p2_y -(byte) print::v_p2_y#0 reg byte x 0.5714285714285714 +(byte) print::v_p2_y#0 reg byte x 286.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx ] diff --git a/src/test/ref/procedure-callingconvention-stack-11.sym b/src/test/ref/procedure-callingconvention-stack-11.sym index f5bda7e34..405f0a6bc 100644 --- a/src/test/ref/procedure-callingconvention-stack-11.sym +++ b/src/test/ref/procedure-callingconvention-stack-11.sym @@ -16,38 +16,38 @@ __stackcall (struct Vector()) get((byte) get::i) (struct Vector) get::return (struct Point) get::return_p1 (byte) get::return_p1_x -(byte) get::return_p1_x#0 reg byte x 2.5 +(byte) get::return_p1_x#0 reg byte x 1251.25 (byte) get::return_p1_y -(byte) get::return_p1_y#0 return_p1_y zp[1]:4 1.0 +(byte) get::return_p1_y#0 return_p1_y zp[1]:4 500.5 (struct Point) get::return_p2 (byte) get::return_p2_x -(byte) get::return_p2_x#0 reg byte y 1.0 +(byte) get::return_p2_x#0 reg byte y 500.5 (byte) get::return_p2_y -(byte) get::return_p2_y#0 return_p2_y zp[1]:5 1.0 +(byte) get::return_p2_y#0 return_p2_y zp[1]:5 500.5 (struct Point) get::v_p1 (byte) get::v_p1_x (byte) get::v_p1_y (struct Point) get::v_p2 (byte) get::v_p2_x (byte) get::v_p2_y -(byte) idx loadstore zp[1]:3 0.9411764705882354 +(byte) idx loadstore zp[1]:3 441.67647058823525 __stackcall (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#2 i zp[1]:2 2.933333333333333 +(byte) main::i#1 i zp[1]:2 202.0 +(byte) main::i#2 i zp[1]:2 26.933333333333334 (struct Point) main::v_p1 (byte) main::v_p1_x -(byte) main::v_p1_x#0 reg byte y 5.5 +(byte) main::v_p1_x#0 reg byte y 50.5 (byte) main::v_p1_y -(byte) main::v_p1_y#0 reg byte x 5.5 +(byte) main::v_p1_y#0 reg byte x 50.5 (struct Point) main::v_p2 (byte) main::v_p2_x -(byte) main::v_p2_x#0 v_p2_x zp[1]:4 5.5 +(byte) main::v_p2_x#0 v_p2_x zp[1]:4 50.5 (byte) main::v_p2_y -(byte) main::v_p2_y#0 v_p2_y zp[1]:5 5.5 +(byte) main::v_p2_y#0 v_p2_y zp[1]:5 50.5 __stackcall (void()) print((byte) print::v_p1_x , (byte) print::v_p1_y , (byte) print::v_p2_x , (byte) print::v_p2_y) (label) print::@return (const byte) print::OFFSET_STACK_V_P1_X = (byte) 3 @@ -56,14 +56,14 @@ __stackcall (void()) print((byte) print::v_p1_x , (byte) print::v_p1_y , (byte) (const byte) print::OFFSET_STACK_V_P2_Y = (byte) 0 (struct Point) print::v_p1 (byte) print::v_p1_x -(byte) print::v_p1_x#0 reg byte y 1.0 +(byte) print::v_p1_x#0 reg byte y 500.5 (byte) print::v_p1_y -(byte) print::v_p1_y#0 v_p1_y zp[1]:4 0.8 +(byte) print::v_p1_y#0 v_p1_y zp[1]:4 400.4 (struct Point) print::v_p2 (byte) print::v_p2_x -(byte) print::v_p2_x#0 v_p2_x zp[1]:5 0.6666666666666666 +(byte) print::v_p2_x#0 v_p2_x zp[1]:5 333.6666666666667 (byte) print::v_p2_y -(byte) print::v_p2_y#0 reg byte x 0.5714285714285714 +(byte) print::v_p2_y#0 reg byte x 286.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ idx ] diff --git a/src/test/ref/procedure-callingconvention-stack-12.log b/src/test/ref/procedure-callingconvention-stack-12.log index 29696fba9..d93db2616 100644 --- a/src/test/ref/procedure-callingconvention-stack-12.log +++ b/src/test/ref/procedure-callingconvention-stack-12.log @@ -137,11 +137,11 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) print::str#2 = (byte*) print::str#3 -Alias (byte) print::spacing#2 = (byte) print::spacing#4 -Alias (byte) print::c#2 = (byte) print::c#3 -Alias (byte) print::spacing#1 = (byte) print::spacing#3 -Alias (byte*) print::str#4 = (byte*) print::str#5 +Alias print::str#2 = print::str#3 +Alias print::spacing#2 = print::spacing#4 +Alias print::c#2 = print::c#3 +Alias print::spacing#1 = print::spacing#3 +Alias print::str#4 = print::str#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) print::spacing#1 (byte) print::spacing#2 Identical Phi Values (byte*) print::str#4 (byte*) print::str#1 @@ -230,18 +230,18 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS -(byte) idx loadstore 16.095238095238095 +(byte) idx loadstore 1571.8095238095236 __stackcall (void()) main() __stackcall (void()) print((byte*) print::str , (byte) print::spacing) (byte) print::c -(byte) print::c#1 202.0 -(byte) print::c#2 75.75 +(byte) print::c#1 20002.0 +(byte) print::c#2 7500.75 (byte) print::spacing -(byte) print::spacing#0 9.363636363636363 +(byte) print::spacing#0 918.3636363636363 (byte*) print::str -(byte*) print::str#0 2.0 -(byte*) print::str#1 18.666666666666664 -(byte*) print::str#2 34.0 +(byte*) print::str#0 101.0 +(byte*) print::str#1 1833.6666666666665 +(byte*) print::str#2 3276.25 Initial phi equivalence classes [ print::str#2 print::str#0 print::str#1 ] @@ -412,34 +412,34 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte*) print::str#0 ← stackidx(byte*,(const byte) print::OFFSET_STACK_STR) [ idx print::str#0 ] ( main:2::print:19 [ idx print::str#0 ] main:2::print:23 [ idx print::str#0 ] ) always clobbers reg byte a reg byte x -Statement [5] (byte) print::spacing#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_SPACING) [ idx print::str#0 print::spacing#0 ] ( main:2::print:19 [ idx print::str#0 print::spacing#0 ] main:2::print:23 [ idx print::str#0 print::spacing#0 ] ) always clobbers reg byte a reg byte x -Statement [7] if((byte) 0!=*((byte*) print::str#2)) goto print::@2 [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] main:2::print:23 [ idx print::spacing#0 print::str#2 ] ) always clobbers reg byte a reg byte y +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte*) print::str#0 ← stackidx(byte*,(const byte) print::OFFSET_STACK_STR) [ idx print::str#0 ] ( main:2::print:19 [ idx print::str#0 ] { } main:2::print:23 [ idx print::str#0 ] { } ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::spacing#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_SPACING) [ idx print::str#0 print::spacing#0 ] ( main:2::print:19 [ idx print::str#0 print::spacing#0 ] { } main:2::print:23 [ idx print::str#0 print::spacing#0 ] { } ) always clobbers reg byte a reg byte x +Statement [7] if((byte) 0!=*((byte*) print::str#2)) goto print::@2 [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ print::spacing#0 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ print::spacing#0 ] -Statement [9] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::str#2) [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] main:2::print:23 [ idx print::spacing#0 print::str#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [9] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::str#2) [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:6 [ print::spacing#0 ] -Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx print::spacing#0 print::str#1 print::c#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#1 print::c#2 ] main:2::print:23 [ idx print::spacing#0 print::str#1 print::c#2 ] ) always clobbers reg byte a reg byte y +Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx print::spacing#0 print::str#1 print::c#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#1 print::c#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#1 print::c#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ print::c#2 print::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ print::c#2 print::c#1 ] -Statement [17] stackpush(byte*) ← (const byte*) main::str [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a -Statement [18] stackpush(byte) ← (byte) 1 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a +Statement [17] stackpush(byte*) ← (const byte*) main::str [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a +Statement [18] stackpush(byte) ← (byte) 1 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 3) always clobbers reg byte a reg byte x -Statement [21] stackpush(byte*) ← (const byte*) main::str1 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a -Statement [22] stackpush(byte) ← (byte) 2 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a +Statement [21] stackpush(byte*) ← (const byte*) main::str1 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a +Statement [22] stackpush(byte) ← (byte) 2 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 3) always clobbers reg byte a reg byte x -Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a -Statement [4] (byte*) print::str#0 ← stackidx(byte*,(const byte) print::OFFSET_STACK_STR) [ idx print::str#0 ] ( main:2::print:19 [ idx print::str#0 ] main:2::print:23 [ idx print::str#0 ] ) always clobbers reg byte a reg byte x -Statement [5] (byte) print::spacing#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_SPACING) [ idx print::str#0 print::spacing#0 ] ( main:2::print:19 [ idx print::str#0 print::spacing#0 ] main:2::print:23 [ idx print::str#0 print::spacing#0 ] ) always clobbers reg byte a reg byte x -Statement [7] if((byte) 0!=*((byte*) print::str#2)) goto print::@2 [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] main:2::print:23 [ idx print::spacing#0 print::str#2 ] ) always clobbers reg byte a reg byte y -Statement [9] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::str#2) [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] main:2::print:23 [ idx print::spacing#0 print::str#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx print::spacing#0 print::str#1 print::c#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#1 print::c#2 ] main:2::print:23 [ idx print::spacing#0 print::str#1 print::c#2 ] ) always clobbers reg byte a reg byte y -Statement [17] stackpush(byte*) ← (const byte*) main::str [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a -Statement [18] stackpush(byte) ← (byte) 1 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a +Statement [0] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a +Statement [4] (byte*) print::str#0 ← stackidx(byte*,(const byte) print::OFFSET_STACK_STR) [ idx print::str#0 ] ( main:2::print:19 [ idx print::str#0 ] { } main:2::print:23 [ idx print::str#0 ] { } ) always clobbers reg byte a reg byte x +Statement [5] (byte) print::spacing#0 ← stackidx(byte,(const byte) print::OFFSET_STACK_SPACING) [ idx print::str#0 print::spacing#0 ] ( main:2::print:19 [ idx print::str#0 print::spacing#0 ] { } main:2::print:23 [ idx print::str#0 print::spacing#0 ] { } ) always clobbers reg byte a reg byte x +Statement [7] if((byte) 0!=*((byte*) print::str#2)) goto print::@2 [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((const byte*) SCREEN + (byte) idx) ← *((byte*) print::str#2) [ idx print::spacing#0 print::str#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [14] *((const byte*) SCREEN + (byte) idx) ← (byte) ' ' [ idx print::spacing#0 print::str#1 print::c#2 ] ( main:2::print:19 [ idx print::spacing#0 print::str#1 print::c#2 ] { } main:2::print:23 [ idx print::spacing#0 print::str#1 print::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [17] stackpush(byte*) ← (const byte*) main::str [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a +Statement [18] stackpush(byte) ← (byte) 1 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 3) always clobbers reg byte a reg byte x -Statement [21] stackpush(byte*) ← (const byte*) main::str1 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a -Statement [22] stackpush(byte) ← (byte) 2 [ idx ] ( main:2 [ idx ] ) always clobbers reg byte a +Statement [21] stackpush(byte*) ← (const byte*) main::str1 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a +Statement [22] stackpush(byte) ← (byte) 2 [ idx ] ( main:2 [ idx ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 3) always clobbers reg byte a reg byte x Potential registers zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ print::c#2 print::c#1 ] : zp[1]:4 , reg byte x , @@ -447,8 +447,8 @@ Potential registers zp[1]:5 [ idx ] : zp[1]:5 , Potential registers zp[1]:6 [ print::spacing#0 ] : zp[1]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 277.75: zp[1]:4 [ print::c#2 print::c#1 ] 54.67: zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] 9.36: zp[1]:6 [ print::spacing#0 ] -Uplift Scope [] 16.1: zp[1]:5 [ idx ] +Uplift Scope [print] 27,502.75: zp[1]:4 [ print::c#2 print::c#1 ] 5,210.92: zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] 918.36: zp[1]:6 [ print::spacing#0 ] +Uplift Scope [] 1,571.81: zp[1]:5 [ idx ] Uplift Scope [main] Uplifting [print] best 3976 combination reg byte x [ print::c#2 print::c#1 ] zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] zp[1]:6 [ print::spacing#0 ] @@ -640,7 +640,7 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 -(byte) idx loadstore zp[1]:4 16.095238095238095 +(byte) idx loadstore zp[1]:4 1571.8095238095236 __stackcall (void()) main() (label) main::@return (const byte*) main::str[(byte) 6] = (byte*) "hello" @@ -654,14 +654,14 @@ __stackcall (void()) print((byte*) print::str , (byte) print::spacing) (const byte) print::OFFSET_STACK_SPACING = (byte) 0 (const byte) print::OFFSET_STACK_STR = (byte) 1 (byte) print::c -(byte) print::c#1 reg byte x 202.0 -(byte) print::c#2 reg byte x 75.75 +(byte) print::c#1 reg byte x 20002.0 +(byte) print::c#2 reg byte x 7500.75 (byte) print::spacing -(byte) print::spacing#0 spacing zp[1]:5 9.363636363636363 +(byte) print::spacing#0 spacing zp[1]:5 918.3636363636363 (byte*) print::str -(byte*) print::str#0 str zp[2]:2 2.0 -(byte*) print::str#1 str zp[2]:2 18.666666666666664 -(byte*) print::str#2 str zp[2]:2 34.0 +(byte*) print::str#0 str zp[2]:2 101.0 +(byte*) print::str#1 str zp[2]:2 1833.6666666666665 +(byte*) print::str#2 str zp[2]:2 3276.25 zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] reg byte x [ print::c#2 print::c#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-12.sym b/src/test/ref/procedure-callingconvention-stack-12.sym index e4c6c7374..ec36a2cbe 100644 --- a/src/test/ref/procedure-callingconvention-stack-12.sym +++ b/src/test/ref/procedure-callingconvention-stack-12.sym @@ -3,7 +3,7 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 -(byte) idx loadstore zp[1]:4 16.095238095238095 +(byte) idx loadstore zp[1]:4 1571.8095238095236 __stackcall (void()) main() (label) main::@return (const byte*) main::str[(byte) 6] = (byte*) "hello" @@ -17,14 +17,14 @@ __stackcall (void()) print((byte*) print::str , (byte) print::spacing) (const byte) print::OFFSET_STACK_SPACING = (byte) 0 (const byte) print::OFFSET_STACK_STR = (byte) 1 (byte) print::c -(byte) print::c#1 reg byte x 202.0 -(byte) print::c#2 reg byte x 75.75 +(byte) print::c#1 reg byte x 20002.0 +(byte) print::c#2 reg byte x 7500.75 (byte) print::spacing -(byte) print::spacing#0 spacing zp[1]:5 9.363636363636363 +(byte) print::spacing#0 spacing zp[1]:5 918.3636363636363 (byte*) print::str -(byte*) print::str#0 str zp[2]:2 2.0 -(byte*) print::str#1 str zp[2]:2 18.666666666666664 -(byte*) print::str#2 str zp[2]:2 34.0 +(byte*) print::str#0 str zp[2]:2 101.0 +(byte*) print::str#1 str zp[2]:2 1833.6666666666665 +(byte*) print::str#2 str zp[2]:2 3276.25 zp[2]:2 [ print::str#2 print::str#0 print::str#1 ] reg byte x [ print::c#2 print::c#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-2.log b/src/test/ref/procedure-callingconvention-stack-2.log index 709eba258..6ba3b7b06 100644 --- a/src/test/ref/procedure-callingconvention-stack-2.log +++ b/src/test/ref/procedure-callingconvention-stack-2.log @@ -90,7 +90,7 @@ Finalized unsigned number type (word) $2345 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD -Alias (word) plus::return#0 = (word~) plus::$0 (word) plus::return#1 +Alias plus::return#0 = plus::$0 plus::return#1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [5] (byte~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation @@ -157,14 +157,14 @@ plus::@return: scope:[plus] from plus VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$0 4.0 +(word~) main::$0 22.0 __stackcall (word()) plus((word) plus::a , (word) plus::b) (word) plus::a -(word) plus::a#0 2.0 +(word) plus::a#0 101.0 (word) plus::b -(word) plus::b#0 4.0 +(word) plus::b#0 202.0 (word) plus::return -(word) plus::return#0 4.0 +(word) plus::return#0 202.0 Initial phi equivalence classes Added variable main::$0 to live range equivalence class [ main::$0 ] @@ -284,23 +284,23 @@ plus: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] stackpush(word) ← (word) $1234 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(word) ← (word) $2345 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] stackpush(word) ← (word) $1234 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(word) ← (word) $2345 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 2) always clobbers reg byte a -Statement [8] (word~) main::$0 ← stackpull(word) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [9] *((const word*) SCREEN) ← (word~) main::$0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] (word) plus::a#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (word) plus::b#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x -Statement [13] (word) plus::return#0 ← (word) plus::a#0 + (word) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(word,(const byte) plus::OFFSET_STACK_RETURN) ← (word) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte a reg byte x +Statement [8] (word~) main::$0 ← stackpull(word) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [9] *((const word*) SCREEN) ← (word~) main::$0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] (word) plus::a#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (word) plus::b#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x +Statement [13] (word) plus::return#0 ← (word) plus::a#0 + (word) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(word,(const byte) plus::OFFSET_STACK_RETURN) ← (word) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte a reg byte x Potential registers zp[2]:2 [ main::$0 ] : zp[2]:2 , Potential registers zp[2]:4 [ plus::a#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ plus::b#0 ] : zp[2]:6 , Potential registers zp[2]:8 [ plus::return#0 ] : zp[2]:8 , REGISTER UPLIFT SCOPES -Uplift Scope [plus] 4: zp[2]:6 [ plus::b#0 ] 4: zp[2]:8 [ plus::return#0 ] 2: zp[2]:4 [ plus::a#0 ] -Uplift Scope [main] 4: zp[2]:2 [ main::$0 ] +Uplift Scope [plus] 202: zp[2]:6 [ plus::b#0 ] 202: zp[2]:8 [ plus::return#0 ] 101: zp[2]:4 [ plus::a#0 ] +Uplift Scope [main] 22: zp[2]:2 [ main::$0 ] Uplift Scope [] Uplifting [plus] best 164 combination zp[2]:6 [ plus::b#0 ] zp[2]:8 [ plus::return#0 ] zp[2]:4 [ plus::a#0 ] @@ -436,7 +436,7 @@ FINAL SYMBOL TABLE (const word*) SCREEN = (word*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(word~) main::$0 zp[2]:2 4.0 +(word~) main::$0 zp[2]:2 22.0 (label) main::@return __stackcall (word()) plus((word) plus::a , (word) plus::b) (label) plus::@return @@ -444,11 +444,11 @@ __stackcall (word()) plus((word) plus::a , (word) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 2 (word) plus::a -(word) plus::a#0 a zp[2]:4 2.0 +(word) plus::a#0 a zp[2]:4 101.0 (word) plus::b -(word) plus::b#0 b zp[2]:6 4.0 +(word) plus::b#0 b zp[2]:6 202.0 (word) plus::return -(word) plus::return#0 return zp[2]:4 4.0 +(word) plus::return#0 return zp[2]:4 202.0 zp[2]:2 [ main::$0 ] zp[2]:4 [ plus::a#0 plus::return#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-2.sym b/src/test/ref/procedure-callingconvention-stack-2.sym index 655a22c88..8569838a4 100644 --- a/src/test/ref/procedure-callingconvention-stack-2.sym +++ b/src/test/ref/procedure-callingconvention-stack-2.sym @@ -4,7 +4,7 @@ (const word*) SCREEN = (word*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(word~) main::$0 zp[2]:2 4.0 +(word~) main::$0 zp[2]:2 22.0 (label) main::@return __stackcall (word()) plus((word) plus::a , (word) plus::b) (label) plus::@return @@ -12,11 +12,11 @@ __stackcall (word()) plus((word) plus::a , (word) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 2 (word) plus::a -(word) plus::a#0 a zp[2]:4 2.0 +(word) plus::a#0 a zp[2]:4 101.0 (word) plus::b -(word) plus::b#0 b zp[2]:6 4.0 +(word) plus::b#0 b zp[2]:6 202.0 (word) plus::return -(word) plus::return#0 return zp[2]:4 4.0 +(word) plus::return#0 return zp[2]:4 202.0 zp[2]:2 [ main::$0 ] zp[2]:4 [ plus::a#0 plus::return#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-3.log b/src/test/ref/procedure-callingconvention-stack-3.log index f5fe80f5f..473738018 100644 --- a/src/test/ref/procedure-callingconvention-stack-3.log +++ b/src/test/ref/procedure-callingconvention-stack-3.log @@ -86,7 +86,7 @@ Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD -Alias (word) plus::return#0 = (word~) plus::$0 (word) plus::return#1 +Alias plus::return#0 = plus::$0 plus::return#1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [5] (byte~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation @@ -153,14 +153,14 @@ plus::@return: scope:[plus] from plus VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$0 4.0 +(word~) main::$0 22.0 __stackcall (word()) plus((word) plus::a , (word) plus::b) (word) plus::a -(word) plus::a#0 2.0 +(word) plus::a#0 101.0 (word) plus::b -(word) plus::b#0 4.0 +(word) plus::b#0 202.0 (word) plus::return -(word) plus::return#0 4.0 +(word) plus::return#0 202.0 Initial phi equivalence classes Added variable main::$0 to live range equivalence class [ main::$0 ] @@ -283,23 +283,23 @@ plus: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] stackpush(word) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] stackpush(word) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] stackpush(word) ← (byte) '0' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] stackpush(word) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 2) always clobbers reg byte a -Statement [8] (word~) main::$0 ← stackpull(word) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [9] *((const word*) SCREEN) ← (word~) main::$0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] (word) plus::a#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [12] (word) plus::b#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x -Statement [13] (word) plus::return#0 ← (word) plus::a#0 + (word) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] ) always clobbers reg byte a -Statement [14] stackidx(word,(const byte) plus::OFFSET_STACK_RETURN) ← (word) plus::return#0 [ ] ( main:2::plus:6 [ ] ) always clobbers reg byte a reg byte x +Statement [8] (word~) main::$0 ← stackpull(word) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [9] *((const word*) SCREEN) ← (word~) main::$0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] (word) plus::a#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_A) [ plus::a#0 ] ( main:2::plus:6 [ plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [12] (word) plus::b#0 ← stackidx(word,(const byte) plus::OFFSET_STACK_B) [ plus::a#0 plus::b#0 ] ( main:2::plus:6 [ plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x +Statement [13] (word) plus::return#0 ← (word) plus::a#0 + (word) plus::b#0 [ plus::return#0 ] ( main:2::plus:6 [ plus::return#0 ] { } ) always clobbers reg byte a +Statement [14] stackidx(word,(const byte) plus::OFFSET_STACK_RETURN) ← (word) plus::return#0 [ ] ( main:2::plus:6 [ ] { } ) always clobbers reg byte a reg byte x Potential registers zp[2]:2 [ main::$0 ] : zp[2]:2 , Potential registers zp[2]:4 [ plus::a#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ plus::b#0 ] : zp[2]:6 , Potential registers zp[2]:8 [ plus::return#0 ] : zp[2]:8 , REGISTER UPLIFT SCOPES -Uplift Scope [plus] 4: zp[2]:6 [ plus::b#0 ] 4: zp[2]:8 [ plus::return#0 ] 2: zp[2]:4 [ plus::a#0 ] -Uplift Scope [main] 4: zp[2]:2 [ main::$0 ] +Uplift Scope [plus] 202: zp[2]:6 [ plus::b#0 ] 202: zp[2]:8 [ plus::return#0 ] 101: zp[2]:4 [ plus::a#0 ] +Uplift Scope [main] 22: zp[2]:2 [ main::$0 ] Uplift Scope [] Uplifting [plus] best 164 combination zp[2]:6 [ plus::b#0 ] zp[2]:8 [ plus::return#0 ] zp[2]:4 [ plus::a#0 ] @@ -438,7 +438,7 @@ FINAL SYMBOL TABLE (const word*) SCREEN = (word*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(word~) main::$0 zp[2]:2 4.0 +(word~) main::$0 zp[2]:2 22.0 (label) main::@return __stackcall (word()) plus((word) plus::a , (word) plus::b) (label) plus::@return @@ -446,11 +446,11 @@ __stackcall (word()) plus((word) plus::a , (word) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 2 (word) plus::a -(word) plus::a#0 a zp[2]:4 2.0 +(word) plus::a#0 a zp[2]:4 101.0 (word) plus::b -(word) plus::b#0 b zp[2]:6 4.0 +(word) plus::b#0 b zp[2]:6 202.0 (word) plus::return -(word) plus::return#0 return zp[2]:4 4.0 +(word) plus::return#0 return zp[2]:4 202.0 zp[2]:2 [ main::$0 ] zp[2]:4 [ plus::a#0 plus::return#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-3.sym b/src/test/ref/procedure-callingconvention-stack-3.sym index 655a22c88..8569838a4 100644 --- a/src/test/ref/procedure-callingconvention-stack-3.sym +++ b/src/test/ref/procedure-callingconvention-stack-3.sym @@ -4,7 +4,7 @@ (const word*) SCREEN = (word*) 1024 (const word) STACK_BASE = (word) $103 (void()) main() -(word~) main::$0 zp[2]:2 4.0 +(word~) main::$0 zp[2]:2 22.0 (label) main::@return __stackcall (word()) plus((word) plus::a , (word) plus::b) (label) plus::@return @@ -12,11 +12,11 @@ __stackcall (word()) plus((word) plus::a , (word) plus::b) (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 2 (word) plus::a -(word) plus::a#0 a zp[2]:4 2.0 +(word) plus::a#0 a zp[2]:4 101.0 (word) plus::b -(word) plus::b#0 b zp[2]:6 4.0 +(word) plus::b#0 b zp[2]:6 202.0 (word) plus::return -(word) plus::return#0 return zp[2]:4 4.0 +(word) plus::return#0 return zp[2]:4 202.0 zp[2]:2 [ main::$0 ] zp[2]:4 [ plus::a#0 plus::return#0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-4.log b/src/test/ref/procedure-callingconvention-stack-4.log index f9adccd64..5b5696c0a 100644 --- a/src/test/ref/procedure-callingconvention-stack-4.log +++ b/src/test/ref/procedure-callingconvention-stack-4.log @@ -105,9 +105,9 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::a#2 + (byte) 1 -Alias (byte) main::v#0 = (byte~) main::$0 -Alias (byte) main::w#0 = (byte~) main::$1 -Alias (byte) plus::return#0 = (byte~) plus::$0 (byte) plus::return#1 +Alias main::v#0 = main::$0 +Alias main::w#0 = main::$1 +Alias plus::return#0 = plus::$0 plus::return#1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 [13] if((byte) main::a#1!=rangelast(0,1)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -189,23 +189,23 @@ plus::@return: scope:[plus] from plus VARIABLE REGISTER WEIGHTS -(byte) i loadstore 0.85 +(byte) i loadstore 105.25 (void()) main() -(byte~) main::$2 22.0 +(byte~) main::$2 202.0 (byte) main::a -(byte) main::a#1 16.5 -(byte) main::a#2 4.888888888888889 +(byte) main::a#1 151.5 +(byte) main::a#2 44.888888888888886 (byte) main::v -(byte) main::v#0 11.0 +(byte) main::v#0 101.0 (byte) main::w -(byte) main::w#0 22.0 +(byte) main::w#0 202.0 __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (byte) plus::a -(byte) plus::a#0 1.3333333333333333 +(byte) plus::a#0 667.3333333333334 (byte) plus::b -(byte) plus::b#0 2.0 +(byte) plus::b#0 1001.0 (byte) plus::return -(byte) plus::return#0 4.0 +(byte) plus::return#0 2002.0 Initial phi equivalence classes [ main::a#2 main::a#1 ] @@ -359,35 +359,35 @@ plus: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) i ← (byte) 0 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [7] stackpush(byte) ← (byte) '0' [ i main::a#2 main::v#0 ] ( main:2 [ i main::a#2 main::v#0 ] ) always clobbers reg byte a +Statement [0] (byte) i ← (byte) 0 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [7] stackpush(byte) ← (byte) '0' [ i main::a#2 main::v#0 ] ( main:2 [ i main::a#2 main::v#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#2 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::v#0 ] -Statement [8] stackpush(byte) ← (byte) main::v#0 [ i main::a#2 ] ( main:2 [ i main::a#2 ] ) always clobbers reg byte a +Statement [8] stackpush(byte) ← (byte) main::v#0 [ i main::a#2 ] ( main:2 [ i main::a#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [11] (byte) main::w#0 ← stackpull(byte) [ i main::a#2 main::w#0 ] ( main:2 [ i main::a#2 main::w#0 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$2 ← (byte) main::w#0 + (byte) main::a#2 [ i main::a#2 main::$2 ] ( main:2 [ i main::a#2 main::$2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) SCREEN + (byte) i) ← (byte~) main::$2 [ i main::a#2 ] ( main:2 [ i main::a#2 ] ) always clobbers reg byte y +Statement [11] (byte) main::w#0 ← stackpull(byte) [ i main::a#2 main::w#0 ] ( main:2 [ i main::a#2 main::w#0 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$2 ← (byte) main::w#0 + (byte) main::a#2 [ i main::a#2 main::$2 ] ( main:2 [ i main::a#2 main::$2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) SCREEN + (byte) i) ← (byte~) main::$2 [ i main::a#2 ] ( main:2 [ i main::a#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::a#2 main::a#1 ] -Statement [17] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ i plus::a#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 ] ) always clobbers reg byte a reg byte x +Statement [17] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ i plus::a#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::a#2 main::a#1 ] -Statement [18] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ i plus::a#0 plus::b#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x +Statement [18] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ i plus::a#0 plus::b#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte a as potential for zp[1]:7 [ plus::a#0 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ plus::a#0 ] -Statement [20] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ i plus::return#0 ] ( main:2::plus:9 [ main::a#2 i plus::return#0 ] ) always clobbers reg byte a -Statement [21] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ i ] ( main:2::plus:9 [ main::a#2 i ] ) always clobbers reg byte x -Statement [0] (byte) i ← (byte) 0 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [7] stackpush(byte) ← (byte) '0' [ i main::a#2 main::v#0 ] ( main:2 [ i main::a#2 main::v#0 ] ) always clobbers reg byte a -Statement [8] stackpush(byte) ← (byte) main::v#0 [ i main::a#2 ] ( main:2 [ i main::a#2 ] ) always clobbers reg byte a +Statement [20] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ i plus::return#0 ] ( main:2::plus:9 [ main::a#2 i plus::return#0 ] { } ) always clobbers reg byte a +Statement [21] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ i ] ( main:2::plus:9 [ main::a#2 i ] { } ) always clobbers reg byte x +Statement [0] (byte) i ← (byte) 0 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [7] stackpush(byte) ← (byte) '0' [ i main::a#2 main::v#0 ] ( main:2 [ i main::a#2 main::v#0 ] { } ) always clobbers reg byte a +Statement [8] stackpush(byte) ← (byte) main::v#0 [ i main::a#2 ] ( main:2 [ i main::a#2 ] { } ) always clobbers reg byte a Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [11] (byte) main::w#0 ← stackpull(byte) [ i main::a#2 main::w#0 ] ( main:2 [ i main::a#2 main::w#0 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$2 ← (byte) main::w#0 + (byte) main::a#2 [ i main::a#2 main::$2 ] ( main:2 [ i main::a#2 main::$2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) SCREEN + (byte) i) ← (byte~) main::$2 [ i main::a#2 ] ( main:2 [ i main::a#2 ] ) always clobbers reg byte y -Statement [15] if((byte) main::a#1!=(byte) 2) goto main::@1 [ i main::a#1 ] ( main:2 [ i main::a#1 ] ) always clobbers reg byte a -Statement [17] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ i plus::a#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 ] ) always clobbers reg byte a reg byte x -Statement [18] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ i plus::a#0 plus::b#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 plus::b#0 ] ) always clobbers reg byte a reg byte x -Statement [20] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ i plus::return#0 ] ( main:2::plus:9 [ main::a#2 i plus::return#0 ] ) always clobbers reg byte a -Statement [21] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ i ] ( main:2::plus:9 [ main::a#2 i ] ) always clobbers reg byte x +Statement [11] (byte) main::w#0 ← stackpull(byte) [ i main::a#2 main::w#0 ] ( main:2 [ i main::a#2 main::w#0 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$2 ← (byte) main::w#0 + (byte) main::a#2 [ i main::a#2 main::$2 ] ( main:2 [ i main::a#2 main::$2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) SCREEN + (byte) i) ← (byte~) main::$2 [ i main::a#2 ] ( main:2 [ i main::a#2 ] { } ) always clobbers reg byte y +Statement [15] if((byte) main::a#1!=(byte) 2) goto main::@1 [ i main::a#1 ] ( main:2 [ i main::a#1 ] { } ) always clobbers reg byte a +Statement [17] (byte) plus::a#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_A) [ i plus::a#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 ] { } ) always clobbers reg byte a reg byte x +Statement [18] (byte) plus::b#0 ← stackidx(byte,(const byte) plus::OFFSET_STACK_B) [ i plus::a#0 plus::b#0 ] ( main:2::plus:9 [ main::a#2 i plus::a#0 plus::b#0 ] { } ) always clobbers reg byte a reg byte x +Statement [20] (byte) plus::return#0 ← (byte) plus::a#0 + (byte) plus::b#0 [ i plus::return#0 ] ( main:2::plus:9 [ main::a#2 i plus::return#0 ] { } ) always clobbers reg byte a +Statement [21] stackidx(byte,(const byte) plus::OFFSET_STACK_RETURN) ← (byte) plus::return#0 [ i ] ( main:2::plus:9 [ main::a#2 i ] { } ) always clobbers reg byte x Potential registers zp[1]:2 [ main::a#2 main::a#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ i ] : zp[1]:3 , Potential registers zp[1]:4 [ main::v#0 ] : zp[1]:4 , reg byte x , reg byte y , @@ -398,17 +398,17 @@ Potential registers zp[1]:8 [ plus::b#0 ] : zp[1]:8 , reg byte a , reg byte x , Potential registers zp[1]:9 [ plus::return#0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:5 [ main::w#0 ] 22: zp[1]:6 [ main::$2 ] 21.39: zp[1]:2 [ main::a#2 main::a#1 ] 11: zp[1]:4 [ main::v#0 ] -Uplift Scope [plus] 4: zp[1]:9 [ plus::return#0 ] 2: zp[1]:8 [ plus::b#0 ] 1.33: zp[1]:7 [ plus::a#0 ] -Uplift Scope [] 0.85: zp[1]:3 [ i ] +Uplift Scope [plus] 2,002: zp[1]:9 [ plus::return#0 ] 1,001: zp[1]:8 [ plus::b#0 ] 667.33: zp[1]:7 [ plus::a#0 ] +Uplift Scope [main] 202: zp[1]:5 [ main::w#0 ] 202: zp[1]:6 [ main::$2 ] 196.39: zp[1]:2 [ main::a#2 main::a#1 ] 101: zp[1]:4 [ main::v#0 ] +Uplift Scope [] 105.25: zp[1]:3 [ i ] -Uplifting [main] best 761 combination reg byte a [ main::w#0 ] reg byte a [ main::$2 ] zp[1]:2 [ main::a#2 main::a#1 ] reg byte x [ main::v#0 ] -Uplifting [plus] best 749 combination reg byte a [ plus::return#0 ] reg byte a [ plus::b#0 ] zp[1]:7 [ plus::a#0 ] +Uplifting [plus] best 909 combination reg byte a [ plus::return#0 ] reg byte a [ plus::b#0 ] zp[1]:7 [ plus::a#0 ] +Uplifting [main] best 749 combination reg byte a [ main::w#0 ] reg byte a [ main::$2 ] zp[1]:2 [ main::a#2 main::a#1 ] reg byte x [ main::v#0 ] Uplifting [] best 749 combination zp[1]:3 [ i ] -Attempting to uplift remaining variables inzp[1]:2 [ main::a#2 main::a#1 ] -Uplifting [main] best 749 combination zp[1]:2 [ main::a#2 main::a#1 ] Attempting to uplift remaining variables inzp[1]:7 [ plus::a#0 ] Uplifting [plus] best 749 combination zp[1]:7 [ plus::a#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::a#2 main::a#1 ] +Uplifting [main] best 749 combination zp[1]:2 [ main::a#2 main::a#1 ] Attempting to uplift remaining variables inzp[1]:3 [ i ] Uplifting [] best 749 combination zp[1]:3 [ i ] Allocated (was zp[1]:7) zp[1]:4 [ plus::a#0 ] @@ -552,29 +552,29 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 -(byte) i loadstore zp[1]:3 0.85 +(byte) i loadstore zp[1]:3 105.25 (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#2 a zp[1]:2 4.888888888888889 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#2 a zp[1]:2 44.888888888888886 (byte) main::v -(byte) main::v#0 reg byte x 11.0 +(byte) main::v#0 reg byte x 101.0 (byte) main::w -(byte) main::w#0 reg byte a 22.0 +(byte) main::w#0 reg byte a 202.0 __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return (const byte) plus::OFFSET_STACK_A = (byte) 1 (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:4 1.3333333333333333 +(byte) plus::a#0 a zp[1]:4 667.3333333333334 (byte) plus::b -(byte) plus::b#0 reg byte a 2.0 +(byte) plus::b#0 reg byte a 1001.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 2002.0 zp[1]:2 [ main::a#2 main::a#1 ] zp[1]:3 [ i ] diff --git a/src/test/ref/procedure-callingconvention-stack-4.sym b/src/test/ref/procedure-callingconvention-stack-4.sym index 4f31a7ce7..a9b2defe3 100644 --- a/src/test/ref/procedure-callingconvention-stack-4.sym +++ b/src/test/ref/procedure-callingconvention-stack-4.sym @@ -3,29 +3,29 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (const word) STACK_BASE = (word) $103 -(byte) i loadstore zp[1]:3 0.85 +(byte) i loadstore zp[1]:3 105.25 (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 16.5 -(byte) main::a#2 a zp[1]:2 4.888888888888889 +(byte) main::a#1 a zp[1]:2 151.5 +(byte) main::a#2 a zp[1]:2 44.888888888888886 (byte) main::v -(byte) main::v#0 reg byte x 11.0 +(byte) main::v#0 reg byte x 101.0 (byte) main::w -(byte) main::w#0 reg byte a 22.0 +(byte) main::w#0 reg byte a 202.0 __stackcall (byte()) plus((byte) plus::a , (byte) plus::b) (label) plus::@return (const byte) plus::OFFSET_STACK_A = (byte) 1 (const byte) plus::OFFSET_STACK_B = (byte) 0 (const byte) plus::OFFSET_STACK_RETURN = (byte) 1 (byte) plus::a -(byte) plus::a#0 a zp[1]:4 1.3333333333333333 +(byte) plus::a#0 a zp[1]:4 667.3333333333334 (byte) plus::b -(byte) plus::b#0 reg byte a 2.0 +(byte) plus::b#0 reg byte a 1001.0 (byte) plus::return -(byte) plus::return#0 reg byte a 4.0 +(byte) plus::return#0 reg byte a 2002.0 zp[1]:2 [ main::a#2 main::a#1 ] zp[1]:3 [ i ] diff --git a/src/test/ref/procedure-callingconvention-stack-5.log b/src/test/ref/procedure-callingconvention-stack-5.log index 951d71217..33a75f28a 100644 --- a/src/test/ref/procedure-callingconvention-stack-5.log +++ b/src/test/ref/procedure-callingconvention-stack-5.log @@ -86,7 +86,7 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$2 ← (byte) 0 * (const byte) SIZEOF_SIGNED_WORD Inferred type updated to byte in (unumber~) main::$3 ← (byte) 1 * (const byte) SIZEOF_SIGNED_WORD -Alias (signed word) next::return#0 = (signed word) next::return#1 +Alias next::return#0 = next::return#1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [3] (byte~) main::$2 ← (byte) 0 * (const byte) SIZEOF_SIGNED_WORD Constant right-side identified [8] (byte~) main::$3 ← (byte) 1 * (const byte) SIZEOF_SIGNED_WORD @@ -160,13 +160,13 @@ next::@return: scope:[next] from next VARIABLE REGISTER WEIGHTS -(signed word) current loadstore 0.7272727272727273 +(signed word) current loadstore 27.727272727272727 (void()) main() -(signed word~) main::$0 4.0 -(signed word~) main::$1 4.0 +(signed word~) main::$0 22.0 +(signed word~) main::$1 22.0 __stackcall (signed word()) next() (signed word) next::return -(signed word) next::return#0 2.0 +(signed word) next::return#0 101.0 Initial phi equivalence classes Added variable current to live range equivalence class [ current ] @@ -288,25 +288,25 @@ next: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (signed word) current ← (signed word) $30 [ current ] ( [ current ] ) always clobbers reg byte a -Statement [7] (signed word~) main::$0 ← stackpull(signed word) [ current main::$0 ] ( main:3 [ current main::$0 ] ) always clobbers reg byte a -Statement [8] *((const signed word*) SCREEN) ← (signed word~) main::$0 [ current ] ( main:3 [ current ] ) always clobbers reg byte a -Statement [11] (signed word~) main::$1 ← stackpull(signed word) [ main::$1 ] ( main:3 [ main::$1 ] ) always clobbers reg byte a -Statement [12] *((const signed word*) SCREEN+(byte) 1*(const byte) SIZEOF_SIGNED_WORD) ← (signed word~) main::$1 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [14] (signed word) next::return#0 ← (signed word) current [ current next::return#0 ] ( main:3::next:6 [ current next::return#0 ] main:3::next:10 [ current next::return#0 ] ) always clobbers reg byte a -Statement [16] stackidx(signed word,(const byte) next::OFFSET_STACK_RETURN) ← (signed word) next::return#0 [ current ] ( main:3::next:6 [ current ] main:3::next:10 [ current ] ) always clobbers reg byte a reg byte x +Statement [1] (signed word) current ← (signed word) $30 [ current ] ( [ current ] { } ) always clobbers reg byte a +Statement [7] (signed word~) main::$0 ← stackpull(signed word) [ current main::$0 ] ( main:3 [ current main::$0 ] { } ) always clobbers reg byte a +Statement [8] *((const signed word*) SCREEN) ← (signed word~) main::$0 [ current ] ( main:3 [ current ] { } ) always clobbers reg byte a +Statement [11] (signed word~) main::$1 ← stackpull(signed word) [ main::$1 ] ( main:3 [ main::$1 ] { } ) always clobbers reg byte a +Statement [12] *((const signed word*) SCREEN+(byte) 1*(const byte) SIZEOF_SIGNED_WORD) ← (signed word~) main::$1 [ ] ( main:3 [ ] { } ) always clobbers reg byte a +Statement [14] (signed word) next::return#0 ← (signed word) current [ current next::return#0 ] ( main:3::next:6 [ current next::return#0 ] { } main:3::next:10 [ current next::return#0 ] { } ) always clobbers reg byte a +Statement [16] stackidx(signed word,(const byte) next::OFFSET_STACK_RETURN) ← (signed word) next::return#0 [ current ] ( main:3::next:6 [ current ] { } main:3::next:10 [ current ] { } ) always clobbers reg byte a reg byte x Potential registers zp[2]:2 [ current ] : zp[2]:2 , Potential registers zp[2]:4 [ main::$0 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::$1 ] : zp[2]:6 , Potential registers zp[2]:8 [ next::return#0 ] : zp[2]:8 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[2]:4 [ main::$0 ] 4: zp[2]:6 [ main::$1 ] -Uplift Scope [next] 2: zp[2]:8 [ next::return#0 ] -Uplift Scope [] 0.73: zp[2]:2 [ current ] +Uplift Scope [next] 101: zp[2]:8 [ next::return#0 ] +Uplift Scope [main] 22: zp[2]:4 [ main::$0 ] 22: zp[2]:6 [ main::$1 ] +Uplift Scope [] 27.73: zp[2]:2 [ current ] -Uplifting [main] best 192 combination zp[2]:4 [ main::$0 ] zp[2]:6 [ main::$1 ] Uplifting [next] best 192 combination zp[2]:8 [ next::return#0 ] +Uplifting [main] best 192 combination zp[2]:4 [ main::$0 ] zp[2]:6 [ main::$1 ] Uplifting [] best 192 combination zp[2]:2 [ current ] ASSEMBLER BEFORE OPTIMIZATION @@ -439,16 +439,16 @@ FINAL SYMBOL TABLE (const signed word*) SCREEN = (signed word*) 1024 (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (const word) STACK_BASE = (word) $103 -(signed word) current loadstore zp[2]:2 0.7272727272727273 +(signed word) current loadstore zp[2]:2 27.727272727272727 (void()) main() -(signed word~) main::$0 zp[2]:4 4.0 -(signed word~) main::$1 zp[2]:6 4.0 +(signed word~) main::$0 zp[2]:4 22.0 +(signed word~) main::$1 zp[2]:6 22.0 (label) main::@return __stackcall (signed word()) next() (label) next::@return (const byte) next::OFFSET_STACK_RETURN = (byte) 0 (signed word) next::return -(signed word) next::return#0 return zp[2]:8 2.0 +(signed word) next::return#0 return zp[2]:8 101.0 zp[2]:2 [ current ] zp[2]:4 [ main::$0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-5.sym b/src/test/ref/procedure-callingconvention-stack-5.sym index d16aba4fd..6c3ae45e1 100644 --- a/src/test/ref/procedure-callingconvention-stack-5.sym +++ b/src/test/ref/procedure-callingconvention-stack-5.sym @@ -5,16 +5,16 @@ (const signed word*) SCREEN = (signed word*) 1024 (const byte) SIZEOF_SIGNED_WORD = (byte) 2 (const word) STACK_BASE = (word) $103 -(signed word) current loadstore zp[2]:2 0.7272727272727273 +(signed word) current loadstore zp[2]:2 27.727272727272727 (void()) main() -(signed word~) main::$0 zp[2]:4 4.0 -(signed word~) main::$1 zp[2]:6 4.0 +(signed word~) main::$0 zp[2]:4 22.0 +(signed word~) main::$1 zp[2]:6 22.0 (label) main::@return __stackcall (signed word()) next() (label) next::@return (const byte) next::OFFSET_STACK_RETURN = (byte) 0 (signed word) next::return -(signed word) next::return#0 return zp[2]:8 2.0 +(signed word) next::return#0 return zp[2]:8 101.0 zp[2]:2 [ current ] zp[2]:4 [ main::$0 ] diff --git a/src/test/ref/procedure-callingconvention-stack-7.log b/src/test/ref/procedure-callingconvention-stack-7.log index 2f656ecff..ddce1b21c 100644 --- a/src/test/ref/procedure-callingconvention-stack-7.log +++ b/src/test/ref/procedure-callingconvention-stack-7.log @@ -74,7 +74,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $50 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) printline::i#2 = (byte) printline::i#3 +Alias printline::i#2 = printline::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) printline::$0 [8] if((byte) printline::i#2<(byte) $28) goto printline::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -146,11 +146,11 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS __stackcall (void()) main() (byte) main::val -(byte) main::val#1 2.0 +(byte) main::val#1 11.0 __stackcall (void()) printline() (byte) printline::i -(byte) printline::i#1 22.0 -(byte) printline::i#2 14.666666666666666 +(byte) printline::i#1 2002.0 +(byte) printline::i#2 1334.6666666666667 Initial phi equivalence classes [ printline::i#2 printline::i#1 ] @@ -239,16 +239,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ main::val#1 printline::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ main::val#1 printline::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::val#1 ] Removing always clobbered register reg byte a as potential for zp[1]:2 [ printline::i#2 printline::i#1 ] -Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ main::val#1 printline::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ main::val#1 printline::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ printline::i#2 printline::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::val#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [printline] 36.67: zp[1]:2 [ printline::i#2 printline::i#1 ] -Uplift Scope [main] 2: zp[1]:3 [ main::val#1 ] +Uplift Scope [printline] 3,336.67: zp[1]:2 [ printline::i#2 printline::i#1 ] +Uplift Scope [main] 11: zp[1]:3 [ main::val#1 ] Uplift Scope [] Uplifting [printline] best 292 combination reg byte x [ printline::i#2 printline::i#1 ] @@ -355,14 +355,14 @@ FINAL SYMBOL TABLE __stackcall (void()) main() (label) main::@return (byte) main::val -(byte) main::val#1 reg byte y 2.0 +(byte) main::val#1 reg byte y 11.0 __stackcall (void()) printline() (label) printline::@1 (label) printline::@2 (label) printline::@return (byte) printline::i -(byte) printline::i#1 reg byte x 22.0 -(byte) printline::i#2 reg byte x 14.666666666666666 +(byte) printline::i#1 reg byte x 2002.0 +(byte) printline::i#2 reg byte x 1334.6666666666667 reg byte x [ printline::i#2 printline::i#1 ] reg byte y [ main::val#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-7.sym b/src/test/ref/procedure-callingconvention-stack-7.sym index 2f8ecbb6c..a95756a16 100644 --- a/src/test/ref/procedure-callingconvention-stack-7.sym +++ b/src/test/ref/procedure-callingconvention-stack-7.sym @@ -5,14 +5,14 @@ __stackcall (void()) main() (label) main::@return (byte) main::val -(byte) main::val#1 reg byte y 2.0 +(byte) main::val#1 reg byte y 11.0 __stackcall (void()) printline() (label) printline::@1 (label) printline::@2 (label) printline::@return (byte) printline::i -(byte) printline::i#1 reg byte x 22.0 -(byte) printline::i#2 reg byte x 14.666666666666666 +(byte) printline::i#1 reg byte x 2002.0 +(byte) printline::i#2 reg byte x 1334.6666666666667 reg byte x [ printline::i#2 printline::i#1 ] reg byte y [ main::val#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-8.log b/src/test/ref/procedure-callingconvention-stack-8.log index 84599fcca..f82dd42f3 100644 --- a/src/test/ref/procedure-callingconvention-stack-8.log +++ b/src/test/ref/procedure-callingconvention-stack-8.log @@ -73,7 +73,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $50 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) printline::i#2 = (byte) printline::i#3 +Alias printline::i#2 = printline::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) printline::$0 [8] if((byte) printline::i#2<(byte) $28) goto printline::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -141,9 +141,9 @@ VARIABLE REGISTER WEIGHTS __stackcall (void()) main() __stackcall (void()) printline() (byte) printline::i -(byte) printline::i#1 22.0 -(byte) printline::i#2 14.666666666666666 -(byte) val loadstore 3.0 +(byte) printline::i#1 2002.0 +(byte) printline::i#2 1334.6666666666667 +(byte) val loadstore 12.0 Initial phi equivalence classes [ printline::i#2 printline::i#1 ] @@ -235,21 +235,21 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) val ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ val printline::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) val ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ val printline::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ printline::i#2 printline::i#1 ] -Statement [10] (byte) val ← (byte) '-' [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN+(byte) $50) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [0] (byte) val ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ val printline::i#2 ] ) always clobbers reg byte a -Statement [10] (byte) val ← (byte) '-' [ val ] ( main:2 [ val ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN+(byte) $50) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] (byte) val ← (byte) '-' [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(byte) $50) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [0] (byte) val ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) printline::i#2) ← (byte) '*' [ printline::i#2 ] ( main:2::printline:11 [ val printline::i#2 ] { } ) always clobbers reg byte a +Statement [10] (byte) val ← (byte) '-' [ val ] ( main:2 [ val ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(byte) $50) ← (byte) val [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ printline::i#2 printline::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ val ] : zp[1]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [printline] 36.67: zp[1]:2 [ printline::i#2 printline::i#1 ] -Uplift Scope [] 3: zp[1]:3 [ val ] +Uplift Scope [printline] 3,336.67: zp[1]:2 [ printline::i#2 printline::i#1 ] +Uplift Scope [] 12: zp[1]:3 [ val ] Uplift Scope [main] Uplifting [printline] best 295 combination reg byte x [ printline::i#2 printline::i#1 ] @@ -366,9 +366,9 @@ __stackcall (void()) printline() (label) printline::@2 (label) printline::@return (byte) printline::i -(byte) printline::i#1 reg byte x 22.0 -(byte) printline::i#2 reg byte x 14.666666666666666 -(byte) val loadstore zp[1]:2 3.0 +(byte) printline::i#1 reg byte x 2002.0 +(byte) printline::i#2 reg byte x 1334.6666666666667 +(byte) val loadstore zp[1]:2 12.0 reg byte x [ printline::i#2 printline::i#1 ] zp[1]:2 [ val ] diff --git a/src/test/ref/procedure-callingconvention-stack-8.sym b/src/test/ref/procedure-callingconvention-stack-8.sym index 54c9c762a..4bf268561 100644 --- a/src/test/ref/procedure-callingconvention-stack-8.sym +++ b/src/test/ref/procedure-callingconvention-stack-8.sym @@ -9,9 +9,9 @@ __stackcall (void()) printline() (label) printline::@2 (label) printline::@return (byte) printline::i -(byte) printline::i#1 reg byte x 22.0 -(byte) printline::i#2 reg byte x 14.666666666666666 -(byte) val loadstore zp[1]:2 3.0 +(byte) printline::i#1 reg byte x 2002.0 +(byte) printline::i#2 reg byte x 1334.6666666666667 +(byte) val loadstore zp[1]:2 12.0 reg byte x [ printline::i#2 printline::i#1 ] zp[1]:2 [ val ] diff --git a/src/test/ref/procedure-callingconvention-stack-9.log b/src/test/ref/procedure-callingconvention-stack-9.log index ae8b97b56..fc636680e 100644 --- a/src/test/ref/procedure-callingconvention-stack-9.log +++ b/src/test/ref/procedure-callingconvention-stack-9.log @@ -267,15 +267,15 @@ __stackcall (void()) incval() __stackcall (void()) ival() __stackcall (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 __stackcall (void()) printother() (byte) printother::i -(byte) printother::i#1 16.5 -(byte) printother::i#2 22.0 +(byte) printother::i#1 15001.5 +(byte) printother::i#2 20002.0 __stackcall (void()) printval() __stackcall (void()) pval() -(byte) val loadstore 0.42105263157894735 +(byte) val loadstore 1579.2105263157896 Initial phi equivalence classes [ printother::i#2 printother::i#1 ] @@ -425,27 +425,27 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN) ← (byte) val [ val ] ( main:2::pval:22::printval:18 [ main::i#2 val ] ) always clobbers reg byte a +Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN) ← (byte) val [ val ] ( main:2::pval:22::printval:18 [ main::i#2 val ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ] -Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN) ← (byte) val [ val ] ( main:2::pval:22::printval:18 [ main::i#2 val ] ) always clobbers reg byte a +Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN) ← (byte) val [ val ] ( main:2::pval:22::printval:18 [ main::i#2 val ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ printother::i#2 printother::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ val ] : zp[1]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [printother] 38.5: zp[1]:2 [ printother::i#2 printother::i#1 ] -Uplift Scope [main] 22: zp[1]:3 [ main::i#2 main::i#1 ] -Uplift Scope [] 0.42: zp[1]:4 [ val ] +Uplift Scope [printother] 35,003.5: zp[1]:2 [ printother::i#2 printother::i#1 ] +Uplift Scope [] 1,579.21: zp[1]:4 [ val ] +Uplift Scope [main] 202: zp[1]:3 [ main::i#2 main::i#1 ] Uplift Scope [pval] Uplift Scope [ival] Uplift Scope [printval] Uplift Scope [incval] Uplifting [printother] best 779 combination reg byte x [ printother::i#2 printother::i#1 ] +Uplifting [] best 779 combination zp[1]:4 [ val ] Uplifting [main] best 689 combination reg byte y [ main::i#2 main::i#1 ] -Uplifting [] best 689 combination zp[1]:4 [ val ] Uplifting [pval] best 689 combination Uplifting [ival] best 689 combination Uplifting [printval] best 689 combination @@ -630,19 +630,19 @@ __stackcall (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 50.5 __stackcall (void()) printother() (label) printother::@1 (label) printother::@return (byte) printother::i -(byte) printother::i#1 reg byte x 16.5 -(byte) printother::i#2 reg byte x 22.0 +(byte) printother::i#1 reg byte x 15001.5 +(byte) printother::i#2 reg byte x 20002.0 __stackcall (void()) printval() (label) printval::@return __stackcall (void()) pval() (label) pval::@return -(byte) val loadstore zp[1]:2 0.42105263157894735 +(byte) val loadstore zp[1]:2 1579.2105263157896 reg byte x [ printother::i#2 printother::i#1 ] reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/procedure-callingconvention-stack-9.sym b/src/test/ref/procedure-callingconvention-stack-9.sym index 5a1dee45f..84605f0b4 100644 --- a/src/test/ref/procedure-callingconvention-stack-9.sym +++ b/src/test/ref/procedure-callingconvention-stack-9.sym @@ -10,19 +10,19 @@ __stackcall (void()) main() (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 50.5 __stackcall (void()) printother() (label) printother::@1 (label) printother::@return (byte) printother::i -(byte) printother::i#1 reg byte x 16.5 -(byte) printother::i#2 reg byte x 22.0 +(byte) printother::i#1 reg byte x 15001.5 +(byte) printother::i#2 reg byte x 20002.0 __stackcall (void()) printval() (label) printval::@return __stackcall (void()) pval() (label) pval::@return -(byte) val loadstore zp[1]:2 0.42105263157894735 +(byte) val loadstore zp[1]:2 1579.2105263157896 reg byte x [ printother::i#2 printother::i#1 ] reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/processor-port-test.log b/src/test/ref/processor-port-test.log index a6d423343..39c5b3a39 100644 --- a/src/test/ref/processor-port-test.log +++ b/src/test/ref/processor-port-test.log @@ -1438,101 +1438,101 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#9 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#72 (byte*) print_char_cursor#120 (byte*) print_screen#4 -Alias (byte*) print_str::str#10 = (byte*) print_str::str#11 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#59 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#35 (byte*) print_char_cursor#3 (byte*) print_line_cursor#36 (byte*) print_char_cursor#61 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#8 = (byte) print_byte::b#9 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#64 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#66 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#3 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#10 (byte*) print_line_cursor#37 (byte*) print_char_cursor#67 (byte*) print_line_cursor#4 (byte*) print_char_cursor#11 -Alias (byte*) print_line_cursor#38 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#69 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#68 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#69 -Alias (byte*) print_line_cursor#39 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#70 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#71 -Alias (byte*) print_line_cursor#40 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#72 -Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#73 -Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#74 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#43 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#75 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#44 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#76 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#45 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#77 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#78 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#79 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#80 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#81 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#50 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#82 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#51 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#83 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#52 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#84 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#53 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#85 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#54 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#86 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#55 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#87 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#56 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#88 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#57 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#89 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#58 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#90 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#59 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#91 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#60 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#92 -Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#61 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#93 -Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#62 -Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#73 (byte*) print_line_cursor#70 (byte*) print_line_cursor#63 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#122 (byte*) print_char_cursor#94 (byte*) print_char_cursor#38 -Alias (byte) testProcport::ddr#23 = (byte) testProcport::ddr#24 -Alias (byte) testProcport::port#23 = (byte) testProcport::port#26 (byte) testProcport::port#25 (byte) testProcport::port#24 -Alias (byte) testProcport::ddr2#23 = (byte) testProcport::ddr2#28 (byte) testProcport::ddr2#27 (byte) testProcport::ddr2#26 (byte) testProcport::ddr2#25 (byte) testProcport::ddr2#24 -Alias (byte*) print_line_cursor#71 = (byte*) print_line_cursor#88 (byte*) print_line_cursor#89 (byte*) print_line_cursor#87 (byte*) print_line_cursor#86 (byte*) print_line_cursor#85 (byte*) print_line_cursor#84 (byte*) print_line_cursor#83 (byte*) print_line_cursor#82 (byte*) print_line_cursor#81 (byte*) print_line_cursor#80 (byte*) print_line_cursor#79 (byte*) print_line_cursor#78 (byte*) print_line_cursor#77 (byte*) print_line_cursor#76 (byte*) print_line_cursor#75 (byte*) print_line_cursor#74 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#96 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#97 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#98 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#99 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#54 -Alias (byte*) print_line_cursor#31 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#65 (byte*) print_line_cursor#32 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#112 (byte*) print_char_cursor#56 -Alias (byte*) print_line_cursor#33 = (byte*) print_line_cursor#66 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#57 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#72 print_char_cursor#120 print_screen#4 +Alias print_str::str#10 = print_str::str#11 +Alias print_char_cursor#114 = print_char_cursor#58 print_char_cursor#59 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#35 print_char_cursor#3 print_line_cursor#36 print_char_cursor#61 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#8 = print_byte::b#9 +Alias print_char_cursor#5 = print_char_cursor#62 +Alias print_char_cursor#6 = print_char_cursor#63 print_char_cursor#64 print_char_cursor#7 +Alias print_char_cursor#66 = print_char_cursor#8 print_char_cursor#9 +Alias print_line_cursor#3 = print_screen#2 print_screen#1 print_char_cursor#10 print_line_cursor#37 print_char_cursor#67 print_line_cursor#4 print_char_cursor#11 +Alias print_line_cursor#38 = print_line_cursor#5 print_line_cursor#69 +Alias print_char_cursor#12 = print_char_cursor#68 +Alias print_char_cursor#13 = print_char_cursor#69 +Alias print_line_cursor#39 = print_line_cursor#6 +Alias print_char_cursor#14 = print_char_cursor#70 +Alias print_char_cursor#15 = print_char_cursor#71 +Alias print_line_cursor#40 = print_line_cursor#7 +Alias print_char_cursor#16 = print_char_cursor#72 +Alias print_line_cursor#41 = print_line_cursor#8 +Alias print_char_cursor#17 = print_char_cursor#73 +Alias print_line_cursor#42 = print_line_cursor#9 +Alias print_char_cursor#18 = print_char_cursor#74 +Alias print_line_cursor#10 = print_line_cursor#43 +Alias print_char_cursor#19 = print_char_cursor#75 +Alias print_line_cursor#11 = print_line_cursor#44 +Alias print_char_cursor#20 = print_char_cursor#76 +Alias print_line_cursor#12 = print_line_cursor#45 +Alias print_char_cursor#21 = print_char_cursor#77 +Alias print_line_cursor#13 = print_line_cursor#46 +Alias print_char_cursor#22 = print_char_cursor#78 +Alias print_line_cursor#14 = print_line_cursor#47 +Alias print_char_cursor#23 = print_char_cursor#79 +Alias print_line_cursor#15 = print_line_cursor#48 +Alias print_char_cursor#24 = print_char_cursor#80 +Alias print_line_cursor#16 = print_line_cursor#49 +Alias print_char_cursor#25 = print_char_cursor#81 +Alias print_line_cursor#17 = print_line_cursor#50 +Alias print_char_cursor#26 = print_char_cursor#82 +Alias print_line_cursor#18 = print_line_cursor#51 +Alias print_char_cursor#27 = print_char_cursor#83 +Alias print_line_cursor#19 = print_line_cursor#52 +Alias print_char_cursor#28 = print_char_cursor#84 +Alias print_line_cursor#20 = print_line_cursor#53 +Alias print_char_cursor#29 = print_char_cursor#85 +Alias print_line_cursor#21 = print_line_cursor#54 +Alias print_char_cursor#30 = print_char_cursor#86 +Alias print_line_cursor#22 = print_line_cursor#55 +Alias print_char_cursor#31 = print_char_cursor#87 +Alias print_line_cursor#23 = print_line_cursor#56 +Alias print_char_cursor#32 = print_char_cursor#88 +Alias print_line_cursor#24 = print_line_cursor#57 +Alias print_char_cursor#33 = print_char_cursor#89 +Alias print_line_cursor#25 = print_line_cursor#58 +Alias print_char_cursor#34 = print_char_cursor#90 +Alias print_line_cursor#26 = print_line_cursor#59 +Alias print_char_cursor#35 = print_char_cursor#91 +Alias print_line_cursor#27 = print_line_cursor#60 +Alias print_char_cursor#36 = print_char_cursor#92 +Alias print_line_cursor#28 = print_line_cursor#61 +Alias print_char_cursor#37 = print_char_cursor#93 +Alias print_line_cursor#29 = print_line_cursor#62 +Alias print_line_cursor#30 = print_line_cursor#73 print_line_cursor#70 print_line_cursor#63 +Alias print_char_cursor#118 = print_char_cursor#122 print_char_cursor#94 print_char_cursor#38 +Alias testProcport::ddr#23 = testProcport::ddr#24 +Alias testProcport::port#23 = testProcport::port#26 testProcport::port#25 testProcport::port#24 +Alias testProcport::ddr2#23 = testProcport::ddr2#28 testProcport::ddr2#27 testProcport::ddr2#26 testProcport::ddr2#25 testProcport::ddr2#24 +Alias print_line_cursor#71 = print_line_cursor#88 print_line_cursor#89 print_line_cursor#87 print_line_cursor#86 print_line_cursor#85 print_line_cursor#84 print_line_cursor#83 print_line_cursor#82 print_line_cursor#81 print_line_cursor#80 print_line_cursor#79 print_line_cursor#78 print_line_cursor#77 print_line_cursor#76 print_line_cursor#75 print_line_cursor#74 +Alias print_char_cursor#39 = print_char_cursor#95 +Alias print_char_cursor#40 = print_char_cursor#96 +Alias print_char_cursor#41 = print_char_cursor#97 +Alias print_char_cursor#42 = print_char_cursor#98 +Alias print_char_cursor#43 = print_char_cursor#99 +Alias print_char_cursor#100 = print_char_cursor#44 +Alias print_char_cursor#101 = print_char_cursor#45 +Alias print_char_cursor#102 = print_char_cursor#46 +Alias print_char_cursor#103 = print_char_cursor#47 +Alias print_char_cursor#104 = print_char_cursor#48 +Alias print_char_cursor#105 = print_char_cursor#49 +Alias print_char_cursor#106 = print_char_cursor#50 +Alias print_char_cursor#107 = print_char_cursor#51 +Alias print_char_cursor#108 = print_char_cursor#52 +Alias print_char_cursor#109 = print_char_cursor#53 +Alias print_char_cursor#110 = print_char_cursor#54 +Alias print_line_cursor#31 = print_line_cursor#64 print_line_cursor#65 print_line_cursor#32 +Alias print_char_cursor#111 = print_char_cursor#55 print_char_cursor#112 print_char_cursor#56 +Alias print_line_cursor#33 = print_line_cursor#66 +Alias print_char_cursor#113 = print_char_cursor#57 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -2362,57 +2362,57 @@ VARIABLE REGISTER WEIGHTS (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2002.0 +(byte~) print_byte::$2 2002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#3 4.0 -(byte) print_byte::b#4 4.0 -(byte) print_byte::b#5 4.0 -(byte) print_byte::b#6 4.0 -(byte) print_byte::b#7 4.0 -(byte) print_byte::b#8 5.0 +(byte) print_byte::b#0 202.0 +(byte) print_byte::b#1 202.0 +(byte) print_byte::b#2 202.0 +(byte) print_byte::b#3 202.0 +(byte) print_byte::b#4 202.0 +(byte) print_byte::b#5 202.0 +(byte) print_byte::b#6 202.0 +(byte) print_byte::b#7 202.0 +(byte) print_byte::b#8 702.5 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 2002.0 +(byte) print_char::ch#1 2002.0 +(byte) print_char::ch#2 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#114 1.5599999999999998 -(byte*) print_char_cursor#115 3.75 -(byte*) print_char_cursor#121 18.0 -(byte*) print_char_cursor#123 4.0 -(byte*) print_char_cursor#65 4.0 -(byte*) print_char_cursor#66 0.8695652173913042 +(byte*) print_char_cursor#1 10001.0 +(byte*) print_char_cursor#114 1280.64 +(byte*) print_char_cursor#115 2528.25 +(byte*) print_char_cursor#121 1809.0 +(byte*) print_char_cursor#123 202.0 +(byte*) print_char_cursor#65 11002.0 +(byte*) print_char_cursor#66 513.4782608695651 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 0.4111111111111111 -(byte*) print_line_cursor#34 24.0 -(byte*) print_line_cursor#67 4.0 +(byte*) print_line_cursor#1 335.6111111111111 +(byte*) print_line_cursor#34 21003.0 +(byte*) print_line_cursor#67 1102.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#10 11.5 -(byte*) print_str::str#12 2.0 +(byte*) print_str::str#0 20002.0 +(byte*) print_str::str#10 10251.25 +(byte*) print_str::str#12 1001.0 (void()) testProcport((byte) testProcport::ddr , (byte) testProcport::port , (byte) testProcport::ddr2) (byte) testProcport::ddr -(byte) testProcport::ddr#23 0.5 +(byte) testProcport::ddr#23 25.25 (byte) testProcport::ddr2 -(byte) testProcport::ddr2#23 0.25 +(byte) testProcport::ddr2#23 12.625 (byte) testProcport::port -(byte) testProcport::port#23 0.3333333333333333 +(byte) testProcport::port#23 16.833333333333332 Initial phi equivalence classes [ testProcport::ddr#23 ] @@ -3460,58 +3460,58 @@ memset: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_ALL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BASIC_ROM) ← (byte) $a0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) KERNAL_ROM) ← (byte) $e0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) IO_RAM) ← (byte) $d0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) IO_RAM) ← (byte) $dd [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [69] *((const byte*) PROCPORT_DDR) ← (byte) $ff [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_ALL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BASIC_ROM) ← (byte) $a0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) KERNAL_ROM) ← (byte) $e0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) IO_RAM) ← (byte) $d0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) IO_RAM) ← (byte) $dd [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [69] *((const byte*) PROCPORT_DDR) ← (byte) $ff [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ testProcport::ddr#23 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ testProcport::port#23 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ testProcport::ddr2#23 ] -Statement [70] *((const byte*) PROCPORT) ← (byte) 0 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [74] (byte*) print_char_cursor#123 ← (byte*) print_line_cursor#1 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [111] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#34 + (byte) $28 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] ) always clobbers reg byte a -Statement [112] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#115) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] ) always clobbers reg byte a -Statement [115] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ) always clobbers reg byte a +Statement [70] *((const byte*) PROCPORT) ← (byte) 0 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a +Statement [74] (byte*) print_char_cursor#123 ← (byte*) print_line_cursor#1 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a +Statement [111] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#34 + (byte) $28 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] { { print_char_cursor#114 = print_char_cursor#115 } } main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [112] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#115) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] { { print_char_cursor#114 = print_char_cursor#115 } } main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [115] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] -Statement [118] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#66 print_byte::$2 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] ) always clobbers reg byte a -Statement [123] *((byte*) print_char_cursor#65) ← (byte) print_char::ch#2 [ print_char_cursor#65 ] ( main:2::testProcport:19::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] ) always clobbers reg byte y +Statement [118] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#66 print_byte::$2 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [123] *((byte*) print_char_cursor#65) ← (byte) print_char::ch#2 [ print_char_cursor#65 ] ( main:2::testProcport:19::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ testProcport::port#23 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ testProcport::ddr2#23 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] -Statement [128] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Statement [128] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] { } main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ testProcport::ddr#23 ] -Statement [130] *((byte*) print_char_cursor#114) ← *((byte*) print_str::str#10) [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [138] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [140] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_ALL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) BASIC_ROM) ← (byte) $a0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) KERNAL_ROM) ← (byte) $e0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) IO_RAM) ← (byte) $d0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) IO_RAM) ← (byte) $dd [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [69] *((const byte*) PROCPORT_DDR) ← (byte) $ff [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [70] *((const byte*) PROCPORT) ← (byte) 0 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [74] (byte*) print_char_cursor#123 ← (byte*) print_line_cursor#1 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [111] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#34 + (byte) $28 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] ) always clobbers reg byte a -Statement [112] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#115) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] ) always clobbers reg byte a -Statement [115] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ) always clobbers reg byte a -Statement [118] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#66 print_byte::$2 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] ) always clobbers reg byte a -Statement [123] *((byte*) print_char_cursor#65) ← (byte) print_char::ch#2 [ print_char_cursor#65 ] ( main:2::testProcport:19::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:21::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:23::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:25::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:27::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:29::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:31::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:33::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:35::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:37::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:39::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:41::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:43::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:45::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:47::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:49::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:51::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:53::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:55::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:57::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:59::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:61::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:63::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] main:2::testProcport:19::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:19::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:21::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:23::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:25::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:27::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:29::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:31::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:33::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:35::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:37::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:39::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:41::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:43::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:45::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:47::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:49::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:51::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:53::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:55::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:57::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:59::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:61::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] main:2::testProcport:63::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] ) always clobbers reg byte y -Statement [128] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) print_char_cursor#114) ← *((byte*) print_str::str#10) [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [138] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [140] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) print_char_cursor#114) ← *((byte*) print_str::str#10) [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] { } main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [138] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [140] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_ALL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) BASIC_ROM) ← (byte) $a0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) KERNAL_ROM) ← (byte) $e0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) IO_RAM) ← (byte) $d0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) IO_RAM) ← (byte) $dd [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) PROCPORT) ← (const byte) PROCPORT_BASIC_KERNEL_IO [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [69] *((const byte*) PROCPORT_DDR) ← (byte) $ff [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a +Statement [70] *((const byte*) PROCPORT) ← (byte) 0 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a +Statement [74] (byte*) print_char_cursor#123 ← (byte*) print_line_cursor#1 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] ( main:2::testProcport:19 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_char_cursor#123 print_line_cursor#1 ] { { print_char_cursor#121 = print_char_cursor#123 } } ) always clobbers reg byte a +Statement [111] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#34 + (byte) $28 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] { { print_char_cursor#114 = print_char_cursor#115 } } main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [112] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#115) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#115 ] ( main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#115 ] { { print_char_cursor#114 = print_char_cursor#115 } } main:2::testProcport:19::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:21::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:23::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:25::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:27::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:29::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:31::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:33::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:35::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:37::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:39::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:41::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:43::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:45::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:47::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:49::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:51::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:53::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:55::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:57::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:59::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:61::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } main:2::testProcport:63::print_ln:107 [ print_line_cursor#1 print_char_cursor#115 ] { { print_line_cursor#1 = print_line_cursor#67 } { print_char_cursor#115 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [115] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_char_cursor#114 print_byte::b#8 print_byte::$0 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#114 print_byte::b#8 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [118] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#66 print_byte::$2 ] ( main:2::testProcport:19::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:77 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:81 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:85 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:89 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:93 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:97 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:101 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:105 [ print_line_cursor#1 print_char_cursor#66 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } ) always clobbers reg byte a +Statement [123] *((byte*) print_char_cursor#65) ← (byte) print_char::ch#2 [ print_char_cursor#65 ] ( main:2::testProcport:19::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:77::print_char:117 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:81::print_char:117 [ testProcport::ddr2#23 print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:85::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:89::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:93::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:97::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:101::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:21::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:23::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:25::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:27::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:29::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:31::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:33::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:35::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:37::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:39::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:41::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:43::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:45::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:47::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:49::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:51::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:53::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:55::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:57::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:59::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:61::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:63::print_byte:105::print_char:117 [ print_line_cursor#1 print_byte::b#8 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#114 = print_char_cursor#65 } } main:2::testProcport:19::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:77::print_char:120 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#0 = print_byte::b#8 testProcport::ddr#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:81::print_char:120 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#1 = print_byte::b#8 testProcport::port#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:85::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#2 = print_byte::b#8 testProcport::ddr2#23 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:89::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#3 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:93::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#4 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:97::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#5 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:101::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#6 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:19::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:21::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:23::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:25::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:27::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:29::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:31::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:33::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:35::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:37::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:39::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:41::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:43::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:45::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:47::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:49::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:51::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:53::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:55::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:57::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:59::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:61::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } main:2::testProcport:63::print_byte:105::print_char:120 [ print_line_cursor#1 print_char_cursor#65 ] { { print_byte::b#7 = print_byte::b#8 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#65 = print_char_cursor#66 } } ) always clobbers reg byte y +Statement [128] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] { } main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) print_char_cursor#114) ← *((byte*) print_str::str#10) [ print_char_cursor#114 print_str::str#10 ] ( main:2::print_str:15 [ print_char_cursor#114 print_str::str#10 ] { } main:2::testProcport:19::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:21::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:23::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:25::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:27::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:29::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:31::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:33::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:35::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:37::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:39::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:41::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:43::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:45::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:47::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:49::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:51::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:53::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:55::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:57::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:59::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:61::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:63::print_str:75 [ testProcport::ddr#23 testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#123 } } main:2::testProcport:19::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:79 [ testProcport::port#23 testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:83 [ testProcport::ddr2#23 print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:87 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:91 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:95 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:99 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:19::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:21::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:23::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:25::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:27::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:29::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:31::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:33::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:35::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:37::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:39::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:41::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:43::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:45::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:47::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:49::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:51::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:53::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:55::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:57::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:59::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:61::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } main:2::testProcport:63::print_str:103 [ print_line_cursor#1 print_char_cursor#114 print_str::str#10 ] { { print_char_cursor#121 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [138] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [140] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:13::memset:134 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ testProcport::ddr#23 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ testProcport::port#23 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ testProcport::ddr2#23 ] : zp[1]:4 , reg byte x , @@ -3525,22 +3525,22 @@ Potential registers zp[1]:15 [ print_byte::$0 ] : zp[1]:15 , reg byte a , reg by Potential registers zp[1]:16 [ print_byte::$2 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 43.18: zp[2]:9 [ print_char_cursor#121 print_char_cursor#123 print_char_cursor#65 print_char_cursor#115 print_char_cursor#114 print_char_cursor#66 print_char_cursor#1 ] 28.41: zp[2]:5 [ print_line_cursor#34 print_line_cursor#67 print_line_cursor#1 ] -Uplift Scope [print_byte] 37: zp[1]:7 [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] 4: zp[1]:15 [ print_byte::$0 ] 4: zp[1]:16 [ print_byte::$2 ] -Uplift Scope [memset] 36.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [testProcport] 0.5: zp[1]:2 [ testProcport::ddr#23 ] 0.33: zp[1]:3 [ testProcport::port#23 ] 0.25: zp[1]:4 [ testProcport::ddr2#23 ] +Uplift Scope [] 27,336.37: zp[2]:9 [ print_char_cursor#121 print_char_cursor#123 print_char_cursor#65 print_char_cursor#115 print_char_cursor#114 print_char_cursor#66 print_char_cursor#1 ] 22,440.61: zp[2]:5 [ print_line_cursor#34 print_line_cursor#67 print_line_cursor#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_str] 31,254.25: zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplift Scope [print_char] 16,007: zp[1]:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 2,318.5: zp[1]:7 [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] 2,002: zp[1]:15 [ print_byte::$0 ] 2,002: zp[1]:16 [ print_byte::$2 ] +Uplift Scope [testProcport] 25.25: zp[1]:2 [ testProcport::ddr#23 ] 16.83: zp[1]:3 [ testProcport::port#23 ] 12.62: zp[1]:4 [ testProcport::ddr2#23 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] Uplifting [] best 2856 combination zp[2]:9 [ print_char_cursor#121 print_char_cursor#123 print_char_cursor#65 print_char_cursor#115 print_char_cursor#114 print_char_cursor#66 print_char_cursor#1 ] zp[2]:5 [ print_line_cursor#34 print_line_cursor#67 print_line_cursor#1 ] -Uplifting [print_byte] best 2820 combination reg byte x [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [memset] best 2820 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 2820 combination zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [print_char] best 2811 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [memset] best 2856 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_str] best 2856 combination zp[2]:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplifting [print_char] best 2847 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 2811 combination reg byte x [ print_byte::b#8 print_byte::b#0 print_byte::b#5 print_byte::b#6 print_byte::b#7 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] Uplifting [testProcport] best 2736 combination reg byte x [ testProcport::ddr#23 ] zp[1]:3 [ testProcport::port#23 ] zp[1]:4 [ testProcport::ddr2#23 ] Uplifting [RADIX] best 2736 combination Uplifting [print_ln] best 2736 combination @@ -4801,8 +4801,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4811,41 +4811,41 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 -(byte) print_byte::b#7 reg byte x 4.0 -(byte) print_byte::b#8 reg byte x 5.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 +(byte) print_byte::b#7 reg byte x 202.0 +(byte) print_byte::b#8 reg byte x 702.5 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#114 print_char_cursor zp[2]:6 1.5599999999999998 -(byte*) print_char_cursor#115 print_char_cursor zp[2]:6 3.75 -(byte*) print_char_cursor#121 print_char_cursor zp[2]:6 18.0 -(byte*) print_char_cursor#123 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 0.8695652173913042 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 10001.0 +(byte*) print_char_cursor#114 print_char_cursor zp[2]:6 1280.64 +(byte*) print_char_cursor#115 print_char_cursor zp[2]:6 2528.25 +(byte*) print_char_cursor#121 print_char_cursor zp[2]:6 1809.0 +(byte*) print_char_cursor#123 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 11002.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 513.4782608695651 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 0.4111111111111111 -(byte*) print_line_cursor#34 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#67 print_line_cursor zp[2]:4 4.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 335.6111111111111 +(byte*) print_line_cursor#34 print_line_cursor zp[2]:4 21003.0 +(byte*) print_line_cursor#67 print_line_cursor zp[2]:4 1102.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4855,9 +4855,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:8 22.0 -(byte*) print_str::str#10 str zp[2]:8 11.5 -(byte*) print_str::str#12 str zp[2]:8 2.0 +(byte*) print_str::str#0 str zp[2]:8 20002.0 +(byte*) print_str::str#10 str zp[2]:8 10251.25 +(byte*) print_str::str#12 str zp[2]:8 1001.0 (void()) testProcport((byte) testProcport::ddr , (byte) testProcport::port , (byte) testProcport::ddr2) (label) testProcport::@1 (label) testProcport::@10 @@ -4877,11 +4877,11 @@ FINAL SYMBOL TABLE (label) testProcport::@9 (label) testProcport::@return (byte) testProcport::ddr -(byte) testProcport::ddr#23 reg byte x 0.5 +(byte) testProcport::ddr#23 reg byte x 25.25 (byte) testProcport::ddr2 -(byte) testProcport::ddr2#23 ddr2 zp[1]:3 0.25 +(byte) testProcport::ddr2#23 ddr2 zp[1]:3 12.625 (byte) testProcport::port -(byte) testProcport::port#23 port zp[1]:2 0.3333333333333333 +(byte) testProcport::port#23 port zp[1]:2 16.833333333333332 (const byte*) testProcport::str[(byte) 2] = (byte*) " " (const byte*) testProcport::str1[(byte) 4] = (byte*) " " (const byte*) testProcport::str3[(byte) 3] = (byte*) " " diff --git a/src/test/ref/processor-port-test.sym b/src/test/ref/processor-port-test.sym index 63bf8de96..1f6de2bdc 100644 --- a/src/test/ref/processor-port-test.sym +++ b/src/test/ref/processor-port-test.sym @@ -53,8 +53,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -63,41 +63,41 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 -(byte) print_byte::b#7 reg byte x 4.0 -(byte) print_byte::b#8 reg byte x 5.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 +(byte) print_byte::b#7 reg byte x 202.0 +(byte) print_byte::b#8 reg byte x 702.5 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#114 print_char_cursor zp[2]:6 1.5599999999999998 -(byte*) print_char_cursor#115 print_char_cursor zp[2]:6 3.75 -(byte*) print_char_cursor#121 print_char_cursor zp[2]:6 18.0 -(byte*) print_char_cursor#123 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 0.8695652173913042 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 10001.0 +(byte*) print_char_cursor#114 print_char_cursor zp[2]:6 1280.64 +(byte*) print_char_cursor#115 print_char_cursor zp[2]:6 2528.25 +(byte*) print_char_cursor#121 print_char_cursor zp[2]:6 1809.0 +(byte*) print_char_cursor#123 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:6 11002.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 513.4782608695651 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 0.4111111111111111 -(byte*) print_line_cursor#34 print_line_cursor zp[2]:4 24.0 -(byte*) print_line_cursor#67 print_line_cursor zp[2]:4 4.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 335.6111111111111 +(byte*) print_line_cursor#34 print_line_cursor zp[2]:4 21003.0 +(byte*) print_line_cursor#67 print_line_cursor zp[2]:4 1102.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -107,9 +107,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:8 22.0 -(byte*) print_str::str#10 str zp[2]:8 11.5 -(byte*) print_str::str#12 str zp[2]:8 2.0 +(byte*) print_str::str#0 str zp[2]:8 20002.0 +(byte*) print_str::str#10 str zp[2]:8 10251.25 +(byte*) print_str::str#12 str zp[2]:8 1001.0 (void()) testProcport((byte) testProcport::ddr , (byte) testProcport::port , (byte) testProcport::ddr2) (label) testProcport::@1 (label) testProcport::@10 @@ -129,11 +129,11 @@ (label) testProcport::@9 (label) testProcport::@return (byte) testProcport::ddr -(byte) testProcport::ddr#23 reg byte x 0.5 +(byte) testProcport::ddr#23 reg byte x 25.25 (byte) testProcport::ddr2 -(byte) testProcport::ddr2#23 ddr2 zp[1]:3 0.25 +(byte) testProcport::ddr2#23 ddr2 zp[1]:3 12.625 (byte) testProcport::port -(byte) testProcport::port#23 port zp[1]:2 0.3333333333333333 +(byte) testProcport::port#23 port zp[1]:2 16.833333333333332 (const byte*) testProcport::str[(byte) 2] = (byte*) " " (const byte*) testProcport::str1[(byte) 4] = (byte*) " " (const byte*) testProcport::str3[(byte) 3] = (byte*) " " diff --git a/src/test/ref/ptr-complex.log b/src/test/ref/ptr-complex.log index dbc4f95bf..541204e9d 100644 --- a/src/test/ref/ptr-complex.log +++ b/src/test/ref/ptr-complex.log @@ -118,7 +118,7 @@ Finalized unsigned number type (byte) $7a Finalized unsigned number type (byte) $a0 Finalized unsigned number type (byte) $c8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte*) main::sc2#0 = (byte*~) main::$1 +Alias main::sc2#0 = main::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$10 [7] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Simple Condition (bool~) main::$15 [23] if((byte) main::j#1!=rangelast(0,$a)) goto main::@3 @@ -239,11 +239,11 @@ main::@return: scope:[main] from main::@4 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 22.0 +(byte) main::i#1 151.5 +(byte) main::i#2 202.0 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 22.0 +(byte) main::j#1 151.5 +(byte) main::j#2 202.0 (byte*) main::sc2 Initial phi equivalence classes @@ -363,21 +363,21 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::screen+(byte) $28 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::screen+(byte) $28 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] *((const byte*) main::sc2#0) ← *((const byte*) main::screen+(byte) $79) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::screen+(byte) $52) ← *((const byte*) main::screen+(byte) $7a) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::screen+(byte) $a0 + (byte) main::j#2) ← *((const byte*) main::screen+(byte) $c8 + (byte) main::j#2) [ main::j#2 ] ( main:2 [ main::j#2 ] ) always clobbers reg byte a +Statement [9] *((const byte*) main::sc2#0) ← *((const byte*) main::screen+(byte) $79) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::screen+(byte) $52) ← *((const byte*) main::screen+(byte) $7a) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::screen+(byte) $a0 + (byte) main::j#2) ← *((const byte*) main::screen+(byte) $c8 + (byte) main::j#2) [ main::j#2 ] ( main:2 [ main::j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::screen+(byte) $28 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::sc2#0) ← *((const byte*) main::screen+(byte) $79) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::screen+(byte) $52) ← *((const byte*) main::screen+(byte) $7a) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::screen+(byte) $a0 + (byte) main::j#2) ← *((const byte*) main::screen+(byte) $c8 + (byte) main::j#2) [ main::j#2 ] ( main:2 [ main::j#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen + (byte) main::i#2) ← *((const byte*) main::screen+(byte) $28 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::sc2#0) ← *((const byte*) main::screen+(byte) $79) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::screen+(byte) $52) ← *((const byte*) main::screen+(byte) $7a) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::screen+(byte) $a0 + (byte) main::j#2) ← *((const byte*) main::screen+(byte) $c8 + (byte) main::j#2) [ main::j#2 ] ( main:2 [ main::j#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] 38.5: zp[1]:3 [ main::j#2 main::j#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] 353.5: zp[1]:3 [ main::j#2 main::j#1 ] Uplift Scope [] Uplifting [main] best 595 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] @@ -527,11 +527,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::BGCOL = (byte*) 53280 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte*) main::sc2 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen+(byte) $51 (const byte*) main::screen = (byte*) 1024 diff --git a/src/test/ref/ptr-complex.sym b/src/test/ref/ptr-complex.sym index 139e3e241..a6f3f5c4d 100644 --- a/src/test/ref/ptr-complex.sym +++ b/src/test/ref/ptr-complex.sym @@ -9,11 +9,11 @@ (label) main::@return (const byte*) main::BGCOL = (byte*) 53280 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 22.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 202.0 (byte) main::j -(byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 22.0 +(byte) main::j#1 reg byte x 151.5 +(byte) main::j#2 reg byte x 202.0 (byte*) main::sc2 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen+(byte) $51 (const byte*) main::screen = (byte*) 1024 diff --git a/src/test/ref/ptrptr-optimize-0.log b/src/test/ref/ptrptr-optimize-0.log index 6fcb8870a..a70280652 100644 --- a/src/test/ref/ptrptr-optimize-0.log +++ b/src/test/ref/ptrptr-optimize-0.log @@ -73,7 +73,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte*) main::screen loadstore 20.0 +(byte*) main::screen loadstore 110.0 Initial phi equivalence classes Added variable main::screen to live range equivalence class [ main::screen ] @@ -143,13 +143,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::screen ← (byte*) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *(*((const byte**) main::pscreen)) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [7] *(*((const byte**) main::pscreen)) ← (byte) 'b' [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y +Statement [4] (byte*) main::screen ← (byte*) 1024 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *(*((const byte**) main::pscreen)) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [7] *(*((const byte**) main::pscreen)) ← (byte) 'b' [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::screen ] : zp[2]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:2 [ main::screen ] +Uplift Scope [main] 110: zp[2]:2 [ main::screen ] Uplift Scope [] Uplifting [main] best 87 combination zp[2]:2 [ main::screen ] @@ -240,7 +240,7 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (const byte**) main::pscreen = &(byte*) main::screen -(byte*) main::screen loadstore zp[2]:2 20.0 +(byte*) main::screen loadstore zp[2]:2 110.0 zp[2]:2 [ main::screen ] diff --git a/src/test/ref/ptrptr-optimize-0.sym b/src/test/ref/ptrptr-optimize-0.sym index 0f6af3818..61cf31d61 100644 --- a/src/test/ref/ptrptr-optimize-0.sym +++ b/src/test/ref/ptrptr-optimize-0.sym @@ -4,6 +4,6 @@ (void()) main() (label) main::@return (const byte**) main::pscreen = &(byte*) main::screen -(byte*) main::screen loadstore zp[2]:2 20.0 +(byte*) main::screen loadstore zp[2]:2 110.0 zp[2]:2 [ main::screen ] diff --git a/src/test/ref/ptrptr-optimize-1.log b/src/test/ref/ptrptr-optimize-1.log index 04491c4b3..d1f7c2dc4 100644 --- a/src/test/ref/ptrptr-optimize-1.log +++ b/src/test/ref/ptrptr-optimize-1.log @@ -138,10 +138,10 @@ sub::@return: scope:[sub] from sub VARIABLE REGISTER WEIGHTS (void()) main() -(byte*) main::screen loadstore 20.0 +(byte*) main::screen loadstore 110.0 (void()) sub((byte) sub::ch , (byte**) sub::dst) (byte) sub::ch -(byte) sub::ch#2 2.0 +(byte) sub::ch#2 101.0 (byte**) sub::dst Initial phi equivalence classes @@ -236,14 +236,14 @@ sub: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::screen ← (byte*) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *(*((const byte**) main::pscreen)) ← (byte) sub::ch#2 [ ] ( main:2::sub:5 [ ] main:2::sub:7 [ ] ) always clobbers reg byte y +Statement [4] (byte*) main::screen ← (byte*) 1024 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *(*((const byte**) main::pscreen)) ← (byte) sub::ch#2 [ ] ( main:2::sub:5 [ ] { } main:2::sub:7 [ ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ sub::ch#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::screen ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:3 [ main::screen ] -Uplift Scope [sub] 2: zp[1]:2 [ sub::ch#2 ] +Uplift Scope [main] 110: zp[2]:3 [ main::screen ] +Uplift Scope [sub] 101: zp[1]:2 [ sub::ch#2 ] Uplift Scope [] Uplifting [main] best 100 combination zp[2]:3 [ main::screen ] @@ -361,11 +361,11 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (const byte**) main::pscreen = &(byte*) main::screen -(byte*) main::screen loadstore zp[2]:2 20.0 +(byte*) main::screen loadstore zp[2]:2 110.0 (void()) sub((byte) sub::ch , (byte**) sub::dst) (label) sub::@return (byte) sub::ch -(byte) sub::ch#2 reg byte a 2.0 +(byte) sub::ch#2 reg byte a 101.0 (byte**) sub::dst reg byte a [ sub::ch#2 ] diff --git a/src/test/ref/ptrptr-optimize-1.sym b/src/test/ref/ptrptr-optimize-1.sym index e5f55f65e..66fc36054 100644 --- a/src/test/ref/ptrptr-optimize-1.sym +++ b/src/test/ref/ptrptr-optimize-1.sym @@ -5,11 +5,11 @@ (label) main::@1 (label) main::@return (const byte**) main::pscreen = &(byte*) main::screen -(byte*) main::screen loadstore zp[2]:2 20.0 +(byte*) main::screen loadstore zp[2]:2 110.0 (void()) sub((byte) sub::ch , (byte**) sub::dst) (label) sub::@return (byte) sub::ch -(byte) sub::ch#2 reg byte a 2.0 +(byte) sub::ch#2 reg byte a 101.0 (byte**) sub::dst reg byte a [ sub::ch#2 ] diff --git a/src/test/ref/ptrptr-optimize-2.log b/src/test/ref/ptrptr-optimize-2.log index 55abba719..3eaf57802 100644 --- a/src/test/ref/ptrptr-optimize-2.log +++ b/src/test/ref/ptrptr-optimize-2.log @@ -137,10 +137,10 @@ sub::@return: scope:[sub] from sub VARIABLE REGISTER WEIGHTS (void()) main() -(byte*) main::screen loadstore 0.2857142857142857 +(byte*) main::screen loadstore 1.5714285714285714 (void()) sub((byte) sub::ch , (byte**) sub::dst) (byte) sub::ch -(byte) sub::ch#2 2.0 +(byte) sub::ch#2 101.0 (byte**) sub::dst Initial phi equivalence classes @@ -235,14 +235,14 @@ sub: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] ) always clobbers reg byte a -Statement [10] *(*(&(byte*) main::screen)) ← (byte) sub::ch#2 [ main::screen ] ( main:2::sub:5 [ main::screen ] main:2::sub:7 [ main::screen ] ) always clobbers reg byte y +Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] { } ) always clobbers reg byte a +Statement [10] *(*(&(byte*) main::screen)) ← (byte) sub::ch#2 [ main::screen ] ( main:2::sub:5 [ main::screen ] { } main:2::sub:7 [ main::screen ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ sub::ch#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::screen ] : zp[2]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [sub] 2: zp[1]:2 [ sub::ch#2 ] -Uplift Scope [main] 0.29: zp[2]:3 [ main::screen ] +Uplift Scope [sub] 101: zp[1]:2 [ sub::ch#2 ] +Uplift Scope [main] 1.57: zp[2]:3 [ main::screen ] Uplift Scope [] Uplifting [sub] best 91 combination reg byte a [ sub::ch#2 ] @@ -359,11 +359,11 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (label) main::@return -(byte*) main::screen loadstore zp[2]:2 0.2857142857142857 +(byte*) main::screen loadstore zp[2]:2 1.5714285714285714 (void()) sub((byte) sub::ch , (byte**) sub::dst) (label) sub::@return (byte) sub::ch -(byte) sub::ch#2 reg byte a 2.0 +(byte) sub::ch#2 reg byte a 101.0 (byte**) sub::dst reg byte a [ sub::ch#2 ] diff --git a/src/test/ref/ptrptr-optimize-2.sym b/src/test/ref/ptrptr-optimize-2.sym index 7e63bad26..d6f97d207 100644 --- a/src/test/ref/ptrptr-optimize-2.sym +++ b/src/test/ref/ptrptr-optimize-2.sym @@ -4,11 +4,11 @@ (void()) main() (label) main::@1 (label) main::@return -(byte*) main::screen loadstore zp[2]:2 0.2857142857142857 +(byte*) main::screen loadstore zp[2]:2 1.5714285714285714 (void()) sub((byte) sub::ch , (byte**) sub::dst) (label) sub::@return (byte) sub::ch -(byte) sub::ch#2 reg byte a 2.0 +(byte) sub::ch#2 reg byte a 101.0 (byte**) sub::dst reg byte a [ sub::ch#2 ] diff --git a/src/test/ref/ptrtest.log b/src/test/ref/ptrtest.log index b0a96d7d6..39b5abfeb 100644 --- a/src/test/ref/ptrtest.log +++ b/src/test/ref/ptrtest.log @@ -264,14 +264,14 @@ Finalized unsigned number type (byte) $a Finalized unsigned number type (byte) $a Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) lvalue::i#2 = (byte) lvalue::i#3 -Alias (byte) rvalue::i#2 = (byte) rvalue::i#3 -Alias (byte) rvalue::b#3 = (byte) rvalue::b#4 -Alias (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#3 -Alias (byte) lvaluevar::i#2 = (byte) lvaluevar::i#3 -Alias (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#3 -Alias (byte) rvaluevar::i#2 = (byte) rvaluevar::i#3 -Alias (byte) rvaluevar::b#2 = (byte) rvaluevar::b#3 +Alias lvalue::i#2 = lvalue::i#3 +Alias rvalue::i#2 = rvalue::i#3 +Alias rvalue::b#3 = rvalue::b#4 +Alias lvaluevar::screen#2 = lvaluevar::screen#3 +Alias lvaluevar::i#2 = lvaluevar::i#3 +Alias rvaluevar::screen#2 = rvaluevar::screen#3 +Alias rvaluevar::i#2 = rvaluevar::i#3 +Alias rvaluevar::b#2 = rvaluevar::b#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) lvalue::$0 [10] if((byte) lvalue::i#2<(byte) $a) goto lvalue::@2 Simple Condition (bool~) rvalue::$0 [19] if((byte) rvalue::i#2<(byte) $a) goto rvalue::@2 @@ -458,34 +458,34 @@ lvalue::@2: scope:[lvalue] from lvalue::@1 VARIABLE REGISTER WEIGHTS (void()) lvalue() (byte) lvalue::i -(byte) lvalue::i#1 22.0 -(byte) lvalue::i#2 14.666666666666666 +(byte) lvalue::i#1 2002.0 +(byte) lvalue::i#2 1334.6666666666667 (void()) lvaluevar() (byte) lvaluevar::i -(byte) lvaluevar::i#1 22.0 -(byte) lvaluevar::i#2 8.25 +(byte) lvaluevar::i#1 2002.0 +(byte) lvaluevar::i#2 750.75 (byte*) lvaluevar::screen -(byte*) lvaluevar::screen#1 11.0 -(byte*) lvaluevar::screen#2 11.0 +(byte*) lvaluevar::screen#1 1001.0 +(byte*) lvaluevar::screen#2 1001.0 (void()) main() (void()) rvalue() (byte) rvalue::b -(byte) rvalue::b#1 4.0 -(byte) rvalue::b#2 11.0 -(byte) rvalue::b#3 7.5 +(byte) rvalue::b#1 202.0 +(byte) rvalue::b#2 1001.0 +(byte) rvalue::b#3 601.5 (byte) rvalue::i -(byte) rvalue::i#1 22.0 -(byte) rvalue::i#2 14.666666666666666 +(byte) rvalue::i#1 2002.0 +(byte) rvalue::i#2 1334.6666666666667 (void()) rvaluevar() (byte) rvaluevar::b -(byte) rvaluevar::b#1 7.333333333333333 -(byte) rvaluevar::b#2 6.5 +(byte) rvaluevar::b#1 667.3333333333334 +(byte) rvaluevar::b#2 551.0 (byte) rvaluevar::i -(byte) rvaluevar::i#1 22.0 -(byte) rvaluevar::i#2 8.25 +(byte) rvaluevar::i#1 2002.0 +(byte) rvaluevar::i#2 750.75 (byte*) rvaluevar::screen -(byte*) rvaluevar::screen#1 11.0 -(byte*) rvaluevar::screen#2 11.0 +(byte*) rvaluevar::screen#1 1001.0 +(byte*) rvaluevar::screen#2 1001.0 Initial phi equivalence classes [ lvaluevar::i#2 lvaluevar::i#1 ] @@ -776,21 +776,21 @@ lvalue: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ lvaluevar::i#2 lvaluevar::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ lvaluevar::i#2 lvaluevar::i#1 ] -Statement [25] (byte) rvaluevar::b#1 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ) always clobbers reg byte a reg byte y +Statement [25] (byte) rvaluevar::b#1 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:5 [ rvaluevar::i#2 rvaluevar::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ rvaluevar::i#2 rvaluevar::i#1 ] -Statement [35] *((const byte*) lvalue::SCREEN) ← (byte) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) lvalue::SCREEN+(byte) 1) ← (byte) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) lvalue::SCREEN + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [35] *((const byte*) lvalue::SCREEN) ← (byte) 1 [ ] ( main:2::lvalue:5 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) lvalue::SCREEN+(byte) 1) ← (byte) 2 [ ] ( main:2::lvalue:5 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) lvalue::SCREEN + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ lvalue::i#2 lvalue::i#1 ] -Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [25] (byte) rvaluevar::b#1 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ) always clobbers reg byte a reg byte y -Statement [35] *((const byte*) lvalue::SCREEN) ← (byte) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) lvalue::SCREEN+(byte) 1) ← (byte) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) lvalue::SCREEN + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [25] (byte) rvaluevar::b#1 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 rvaluevar::b#1 ] { } ) always clobbers reg byte a reg byte y +Statement [35] *((const byte*) lvalue::SCREEN) ← (byte) 1 [ ] ( main:2::lvalue:5 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) lvalue::SCREEN+(byte) 1) ← (byte) 2 [ ] ( main:2::lvalue:5 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) lvalue::SCREEN + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ lvaluevar::i#2 lvaluevar::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp[1]:5 , reg byte x , @@ -801,10 +801,10 @@ Potential registers zp[1]:10 [ rvalue::b#3 rvalue::b#1 rvalue::b#2 ] : zp[1]:10 Potential registers zp[1]:11 [ lvalue::i#2 lvalue::i#1 ] : zp[1]:11 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [rvaluevar] 30.25: zp[1]:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 22: zp[2]:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] 13.83: zp[1]:8 [ rvaluevar::b#2 rvaluevar::b#1 ] -Uplift Scope [rvalue] 36.67: zp[1]:9 [ rvalue::i#2 rvalue::i#1 ] 22.5: zp[1]:10 [ rvalue::b#3 rvalue::b#1 rvalue::b#2 ] -Uplift Scope [lvaluevar] 30.25: zp[1]:2 [ lvaluevar::i#2 lvaluevar::i#1 ] 22: zp[2]:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] -Uplift Scope [lvalue] 36.67: zp[1]:11 [ lvalue::i#2 lvalue::i#1 ] +Uplift Scope [rvaluevar] 2,752.75: zp[1]:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 2,002: zp[2]:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] 1,218.33: zp[1]:8 [ rvaluevar::b#2 rvaluevar::b#1 ] +Uplift Scope [rvalue] 3,336.67: zp[1]:9 [ rvalue::i#2 rvalue::i#1 ] 1,804.5: zp[1]:10 [ rvalue::b#3 rvalue::b#1 rvalue::b#2 ] +Uplift Scope [lvaluevar] 2,752.75: zp[1]:2 [ lvaluevar::i#2 lvaluevar::i#1 ] 2,002: zp[2]:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +Uplift Scope [lvalue] 3,336.67: zp[1]:11 [ lvalue::i#2 lvalue::i#1 ] Uplift Scope [main] Uplift Scope [] @@ -1118,19 +1118,19 @@ FINAL SYMBOL TABLE (label) lvalue::@return (const byte*) lvalue::SCREEN[(number) $400] = (byte*) 1024 (byte) lvalue::i -(byte) lvalue::i#1 reg byte x 22.0 -(byte) lvalue::i#2 reg byte x 14.666666666666666 +(byte) lvalue::i#1 reg byte x 2002.0 +(byte) lvalue::i#2 reg byte x 1334.6666666666667 (void()) lvaluevar() (label) lvaluevar::@1 (label) lvaluevar::@2 (label) lvaluevar::@return (const byte) lvaluevar::b = (byte) 4 (byte) lvaluevar::i -(byte) lvaluevar::i#1 reg byte x 22.0 -(byte) lvaluevar::i#2 reg byte x 8.25 +(byte) lvaluevar::i#1 reg byte x 2002.0 +(byte) lvaluevar::i#2 reg byte x 750.75 (byte*) lvaluevar::screen -(byte*) lvaluevar::screen#1 screen zp[2]:2 11.0 -(byte*) lvaluevar::screen#2 screen zp[2]:2 11.0 +(byte*) lvaluevar::screen#1 screen zp[2]:2 1001.0 +(byte*) lvaluevar::screen#2 screen zp[2]:2 1001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -1143,12 +1143,12 @@ FINAL SYMBOL TABLE (label) rvalue::@return (const byte*) rvalue::SCREEN[(number) $400] = (byte*) 1024 (byte) rvalue::b -(byte) rvalue::b#1 reg byte a 4.0 -(byte) rvalue::b#2 reg byte a 11.0 -(byte) rvalue::b#3 reg byte a 7.5 +(byte) rvalue::b#1 reg byte a 202.0 +(byte) rvalue::b#2 reg byte a 1001.0 +(byte) rvalue::b#3 reg byte a 601.5 (byte) rvalue::i -(byte) rvalue::i#1 reg byte x 22.0 -(byte) rvalue::i#2 reg byte x 14.666666666666666 +(byte) rvalue::i#1 reg byte x 2002.0 +(byte) rvalue::i#2 reg byte x 1334.6666666666667 (const byte*) rvalue::screen2 = (byte*) 1024 (void()) rvaluevar() (label) rvaluevar::@1 @@ -1156,14 +1156,14 @@ FINAL SYMBOL TABLE (label) rvaluevar::@3 (label) rvaluevar::@return (byte) rvaluevar::b -(byte) rvaluevar::b#1 reg byte y 7.333333333333333 -(byte) rvaluevar::b#2 reg byte y 6.5 +(byte) rvaluevar::b#1 reg byte y 667.3333333333334 +(byte) rvaluevar::b#2 reg byte y 551.0 (byte) rvaluevar::i -(byte) rvaluevar::i#1 reg byte x 22.0 -(byte) rvaluevar::i#2 reg byte x 8.25 +(byte) rvaluevar::i#1 reg byte x 2002.0 +(byte) rvaluevar::i#2 reg byte x 750.75 (byte*) rvaluevar::screen -(byte*) rvaluevar::screen#1 screen zp[2]:2 11.0 -(byte*) rvaluevar::screen#2 screen zp[2]:2 11.0 +(byte*) rvaluevar::screen#1 screen zp[2]:2 1001.0 +(byte*) rvaluevar::screen#2 screen zp[2]:2 1001.0 (const byte*) rvaluevar::screen2 = (byte*) 1024 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] diff --git a/src/test/ref/ptrtest.sym b/src/test/ref/ptrtest.sym index 05ea75455..af6d354d3 100644 --- a/src/test/ref/ptrtest.sym +++ b/src/test/ref/ptrtest.sym @@ -7,19 +7,19 @@ (label) lvalue::@return (const byte*) lvalue::SCREEN[(number) $400] = (byte*) 1024 (byte) lvalue::i -(byte) lvalue::i#1 reg byte x 22.0 -(byte) lvalue::i#2 reg byte x 14.666666666666666 +(byte) lvalue::i#1 reg byte x 2002.0 +(byte) lvalue::i#2 reg byte x 1334.6666666666667 (void()) lvaluevar() (label) lvaluevar::@1 (label) lvaluevar::@2 (label) lvaluevar::@return (const byte) lvaluevar::b = (byte) 4 (byte) lvaluevar::i -(byte) lvaluevar::i#1 reg byte x 22.0 -(byte) lvaluevar::i#2 reg byte x 8.25 +(byte) lvaluevar::i#1 reg byte x 2002.0 +(byte) lvaluevar::i#2 reg byte x 750.75 (byte*) lvaluevar::screen -(byte*) lvaluevar::screen#1 screen zp[2]:2 11.0 -(byte*) lvaluevar::screen#2 screen zp[2]:2 11.0 +(byte*) lvaluevar::screen#1 screen zp[2]:2 1001.0 +(byte*) lvaluevar::screen#2 screen zp[2]:2 1001.0 (void()) main() (label) main::@1 (label) main::@2 @@ -32,12 +32,12 @@ (label) rvalue::@return (const byte*) rvalue::SCREEN[(number) $400] = (byte*) 1024 (byte) rvalue::b -(byte) rvalue::b#1 reg byte a 4.0 -(byte) rvalue::b#2 reg byte a 11.0 -(byte) rvalue::b#3 reg byte a 7.5 +(byte) rvalue::b#1 reg byte a 202.0 +(byte) rvalue::b#2 reg byte a 1001.0 +(byte) rvalue::b#3 reg byte a 601.5 (byte) rvalue::i -(byte) rvalue::i#1 reg byte x 22.0 -(byte) rvalue::i#2 reg byte x 14.666666666666666 +(byte) rvalue::i#1 reg byte x 2002.0 +(byte) rvalue::i#2 reg byte x 1334.6666666666667 (const byte*) rvalue::screen2 = (byte*) 1024 (void()) rvaluevar() (label) rvaluevar::@1 @@ -45,14 +45,14 @@ (label) rvaluevar::@3 (label) rvaluevar::@return (byte) rvaluevar::b -(byte) rvaluevar::b#1 reg byte y 7.333333333333333 -(byte) rvaluevar::b#2 reg byte y 6.5 +(byte) rvaluevar::b#1 reg byte y 667.3333333333334 +(byte) rvaluevar::b#2 reg byte y 551.0 (byte) rvaluevar::i -(byte) rvaluevar::i#1 reg byte x 22.0 -(byte) rvaluevar::i#2 reg byte x 8.25 +(byte) rvaluevar::i#1 reg byte x 2002.0 +(byte) rvaluevar::i#2 reg byte x 750.75 (byte*) rvaluevar::screen -(byte*) rvaluevar::screen#1 screen zp[2]:2 11.0 -(byte*) rvaluevar::screen#2 screen zp[2]:2 11.0 +(byte*) rvaluevar::screen#1 screen zp[2]:2 1001.0 +(byte*) rvaluevar::screen#2 screen zp[2]:2 1001.0 (const byte*) rvaluevar::screen2 = (byte*) 1024 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] diff --git a/src/test/ref/ptrtestmin.log b/src/test/ref/ptrtestmin.log index 0d6382f49..ff15c6917 100644 --- a/src/test/ref/ptrtestmin.log +++ b/src/test/ref/ptrtestmin.log @@ -69,8 +69,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $a Finalized unsigned number type (word) $3e7 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::b#2 = (byte) main::b#3 +Alias main::i#2 = main::i#3 +Alias main::b#2 = main::b#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -142,11 +142,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::b -(byte) main::b#1 11.0 -(byte) main::b#2 6.5 +(byte) main::b#1 101.0 +(byte) main::b#2 56.0 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 202.0 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -236,7 +236,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::b#2 main::b#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 36.67: zp[1]:2 [ main::i#2 main::i#1 ] 17.5: zp[1]:3 [ main::b#2 main::b#1 ] +Uplift Scope [main] 336.67: zp[1]:2 [ main::i#2 main::i#1 ] 157: zp[1]:3 [ main::b#2 main::b#1 ] Uplift Scope [] Uplifting [main] best 265 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::b#2 main::b#1 ] @@ -341,11 +341,11 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN[(number) $400] = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte a 11.0 -(byte) main::b#2 reg byte a 6.5 +(byte) main::b#1 reg byte a 101.0 +(byte) main::b#2 reg byte a 56.0 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::b#2 main::b#1 ] diff --git a/src/test/ref/ptrtestmin.sym b/src/test/ref/ptrtestmin.sym index 9f3733d92..8d6efbd1f 100644 --- a/src/test/ref/ptrtestmin.sym +++ b/src/test/ref/ptrtestmin.sym @@ -8,11 +8,11 @@ (label) main::@return (const byte*) main::SCREEN[(number) $400] = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte a 11.0 -(byte) main::b#2 reg byte a 6.5 +(byte) main::b#1 reg byte a 101.0 +(byte) main::b#2 reg byte a 56.0 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::b#2 main::b#1 ] diff --git a/src/test/ref/register-0.log b/src/test/ref/register-0.log index d796c7973..27e1be805 100644 --- a/src/test/ref/register-0.log +++ b/src/test/ref/register-0.log @@ -243,7 +243,7 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a +Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a Statement asm { ldxidx staSCREEN,x incidx } always clobbers reg byte x Potential registers reg byte a [ print::ch#3 ] : reg byte a , Potential registers zp[1]:3 [ idx ] : zp[1]:3 , diff --git a/src/test/ref/reserve-zp-global.log b/src/test/ref/reserve-zp-global.log index 2630e543c..b906b9d7e 100644 --- a/src/test/ref/reserve-zp-global.log +++ b/src/test/ref/reserve-zp-global.log @@ -73,8 +73,8 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) sub1::return#0 = (byte) sub1::return#3 -Alias (byte) sub1::return#1 = (byte~) sub1::$0 (byte) sub1::return#4 (byte) sub1::return#2 +Alias sub1::return#0 = sub1::return#3 +Alias sub1::return#1 = sub1::$0 sub1::return#4 sub1::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sub1::i#1 (byte) sub1::i#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -146,14 +146,14 @@ sub1::@return: scope:[sub1] from sub1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte) main::i loadstore 7.125 +(byte~) main::$0 202.0 +(byte) main::i loadstore 64.5 (byte()) sub1((byte) sub1::i) (byte) sub1::i -(byte) sub1::i#0 15.0 +(byte) sub1::i#0 2103.0 (byte) sub1::return -(byte) sub1::return#0 22.0 -(byte) sub1::return#1 4.333333333333333 +(byte) sub1::return#0 202.0 +(byte) sub1::return#1 367.33333333333337 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -256,10 +256,10 @@ sub1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte y +Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] { { sub1::i#0 = main::i } { sub1::return#0 = sub1::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:4 [ main::i ] : zp[1]:4 , Potential registers zp[1]:6 [ sub1::i#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:7 [ sub1::return#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , @@ -267,11 +267,11 @@ Potential registers zp[1]:8 [ main::$0 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ sub1::return#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sub1] 22: zp[1]:7 [ sub1::return#0 ] 15: zp[1]:6 [ sub1::i#0 ] 4.33: zp[1]:9 [ sub1::return#1 ] -Uplift Scope [main] 22: zp[1]:8 [ main::$0 ] 7.12: zp[1]:4 [ main::i ] +Uplift Scope [sub1] 2,103: zp[1]:6 [ sub1::i#0 ] 367.33: zp[1]:9 [ sub1::return#1 ] 202: zp[1]:7 [ sub1::return#0 ] +Uplift Scope [main] 202: zp[1]:8 [ main::$0 ] 64.5: zp[1]:4 [ main::i ] Uplift Scope [] -Uplifting [sub1] best 452 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] +Uplifting [sub1] best 452 combination reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] reg byte a [ sub1::return#0 ] Uplifting [main] best 392 combination reg byte a [ main::$0 ] zp[1]:4 [ main::i ] Uplifting [] best 392 combination Attempting to uplift remaining variables inzp[1]:4 [ main::i ] @@ -374,19 +374,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:4 7.125 +(byte) main::i loadstore zp[1]:4 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:4 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-global.sym b/src/test/ref/reserve-zp-global.sym index 61722a187..36bd8d4d0 100644 --- a/src/test/ref/reserve-zp-global.sym +++ b/src/test/ref/reserve-zp-global.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:4 7.125 +(byte) main::i loadstore zp[1]:4 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:4 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-1.log b/src/test/ref/reserve-zp-procedure-1.log index b6c331c46..ecd98c618 100644 --- a/src/test/ref/reserve-zp-procedure-1.log +++ b/src/test/ref/reserve-zp-procedure-1.log @@ -73,8 +73,8 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) sub1::return#0 = (byte) sub1::return#3 -Alias (byte) sub1::return#1 = (byte~) sub1::$0 (byte) sub1::return#4 (byte) sub1::return#2 +Alias sub1::return#0 = sub1::return#3 +Alias sub1::return#1 = sub1::$0 sub1::return#4 sub1::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sub1::i#1 (byte) sub1::i#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -146,14 +146,14 @@ sub1::@return: scope:[sub1] from sub1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte) main::i loadstore 7.125 +(byte~) main::$0 202.0 +(byte) main::i loadstore 64.5 (byte()) sub1((byte) sub1::i) (byte) sub1::i -(byte) sub1::i#0 15.0 +(byte) sub1::i#0 2103.0 (byte) sub1::return -(byte) sub1::return#0 22.0 -(byte) sub1::return#1 4.333333333333333 +(byte) sub1::return#0 202.0 +(byte) sub1::return#1 367.33333333333337 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -256,10 +256,10 @@ sub1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte y +Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] { { sub1::i#0 = main::i } { sub1::return#0 = sub1::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:5 [ main::i ] : zp[1]:5 , Potential registers zp[1]:6 [ sub1::i#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:7 [ sub1::return#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , @@ -267,11 +267,11 @@ Potential registers zp[1]:8 [ main::$0 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ sub1::return#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sub1] 22: zp[1]:7 [ sub1::return#0 ] 15: zp[1]:6 [ sub1::i#0 ] 4.33: zp[1]:9 [ sub1::return#1 ] -Uplift Scope [main] 22: zp[1]:8 [ main::$0 ] 7.12: zp[1]:5 [ main::i ] +Uplift Scope [sub1] 2,103: zp[1]:6 [ sub1::i#0 ] 367.33: zp[1]:9 [ sub1::return#1 ] 202: zp[1]:7 [ sub1::return#0 ] +Uplift Scope [main] 202: zp[1]:8 [ main::$0 ] 64.5: zp[1]:5 [ main::i ] Uplift Scope [] -Uplifting [sub1] best 452 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] +Uplifting [sub1] best 452 combination reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] reg byte a [ sub1::return#0 ] Uplifting [main] best 392 combination reg byte a [ main::$0 ] zp[1]:5 [ main::i ] Uplifting [] best 392 combination Attempting to uplift remaining variables inzp[1]:5 [ main::i ] @@ -374,19 +374,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:5 7.125 +(byte) main::i loadstore zp[1]:5 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:5 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-1.sym b/src/test/ref/reserve-zp-procedure-1.sym index 1c1a9138c..7d2bd8c65 100644 --- a/src/test/ref/reserve-zp-procedure-1.sym +++ b/src/test/ref/reserve-zp-procedure-1.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:5 7.125 +(byte) main::i loadstore zp[1]:5 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:5 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-2.log b/src/test/ref/reserve-zp-procedure-2.log index 3c984ec94..4b6a93ea7 100644 --- a/src/test/ref/reserve-zp-procedure-2.log +++ b/src/test/ref/reserve-zp-procedure-2.log @@ -116,10 +116,10 @@ Simplifying constant integer cast $28 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) sub1::return#0 = (byte) sub1::return#3 -Alias (byte) sub2::return#0 = (byte) sub2::return#3 -Alias (byte) sub1::return#1 = (byte~) sub1::$0 (byte) sub1::return#4 (byte) sub1::return#2 -Alias (byte) sub2::return#1 = (byte~) sub2::$1 (byte) sub2::return#4 (byte) sub2::return#2 +Alias sub1::return#0 = sub1::return#3 +Alias sub2::return#0 = sub2::return#3 +Alias sub1::return#1 = sub1::$0 sub1::return#4 sub1::return#2 +Alias sub2::return#1 = sub2::$1 sub2::return#4 sub2::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sub1::i#1 (byte) sub1::i#0 Identical Phi Values (byte) sub2::i#1 (byte) sub2::i#0 @@ -209,22 +209,22 @@ sub1::@return: scope:[sub1] from sub1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte) main::i loadstore 6.076923076923077 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte) main::i loadstore 55.230769230769226 (byte()) sub1((byte) sub1::i) (byte) sub1::i -(byte) sub1::i#0 15.0 +(byte) sub1::i#0 2103.0 (byte) sub1::return -(byte) sub1::return#0 22.0 -(byte) sub1::return#1 4.333333333333333 +(byte) sub1::return#0 202.0 +(byte) sub1::return#1 367.33333333333337 (byte()) sub2((byte) sub2::i) -(byte~) sub2::$0 4.0 +(byte~) sub2::$0 2002.0 (byte) sub2::i -(byte) sub2::i#0 8.5 +(byte) sub2::i#0 1552.0 (byte) sub2::return -(byte) sub2::return#0 22.0 -(byte) sub2::return#1 4.333333333333333 +(byte) sub2::return#0 202.0 +(byte) sub2::return#1 367.33333333333337 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -383,21 +383,21 @@ sub1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [14] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i) ← (byte~) main::$1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [16] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [18] (byte~) sub2::$0 ← (byte) sub2::i#0 + (byte) sub2::i#0 [ sub2::i#0 sub2::$0 ] ( main:2::sub2:11 [ main::i sub2::i#0 sub2::$0 ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte y +Statement [14] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i) ← (byte~) main::$1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte y +Statement [16] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [18] (byte~) sub2::$0 ← (byte) sub2::i#0 + (byte) sub2::i#0 [ sub2::i#0 sub2::$0 ] ( main:2::sub2:11 [ main::i sub2::i#0 sub2::$0 ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ sub2::i#0 ] -Statement [19] (byte) sub2::return#1 ← (byte~) sub2::$0 + (byte) sub2::i#0 [ sub2::return#1 ] ( main:2::sub2:11 [ main::i sub2::return#1 ] ) always clobbers reg byte a -Statement [21] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] ) always clobbers reg byte a -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [14] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i) ← (byte~) main::$1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [16] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [18] (byte~) sub2::$0 ← (byte) sub2::i#0 + (byte) sub2::i#0 [ sub2::i#0 sub2::$0 ] ( main:2::sub2:11 [ main::i sub2::i#0 sub2::$0 ] ) always clobbers reg byte a -Statement [19] (byte) sub2::return#1 ← (byte~) sub2::$0 + (byte) sub2::i#0 [ sub2::return#1 ] ( main:2::sub2:11 [ main::i sub2::return#1 ] ) always clobbers reg byte a -Statement [21] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] ) always clobbers reg byte a +Statement [19] (byte) sub2::return#1 ← (byte~) sub2::$0 + (byte) sub2::i#0 [ sub2::return#1 ] ( main:2::sub2:11 [ main::i sub2::return#1 ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte a +Statement [21] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] { { sub1::i#0 = main::i } { sub1::return#0 = sub1::return#1 } } ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte y +Statement [14] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i) ← (byte~) main::$1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte y +Statement [16] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [18] (byte~) sub2::$0 ← (byte) sub2::i#0 + (byte) sub2::i#0 [ sub2::i#0 sub2::$0 ] ( main:2::sub2:11 [ main::i sub2::i#0 sub2::$0 ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte a +Statement [19] (byte) sub2::return#1 ← (byte~) sub2::$0 + (byte) sub2::i#0 [ sub2::return#1 ] ( main:2::sub2:11 [ main::i sub2::return#1 ] { { sub2::i#0 = main::i } { sub2::return#0 = sub2::return#1 } } ) always clobbers reg byte a +Statement [21] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] { { sub1::i#0 = main::i } { sub1::return#0 = sub1::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:8 [ main::i ] : zp[1]:8 , Potential registers zp[1]:9 [ sub1::i#0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ sub1::return#0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , @@ -410,15 +410,15 @@ Potential registers zp[1]:16 [ sub2::return#1 ] : zp[1]:16 , reg byte a , reg by Potential registers zp[1]:17 [ sub1::return#1 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:11 [ main::$0 ] 22: zp[1]:14 [ main::$1 ] 6.08: zp[1]:8 [ main::i ] -Uplift Scope [sub1] 22: zp[1]:10 [ sub1::return#0 ] 15: zp[1]:9 [ sub1::i#0 ] 4.33: zp[1]:17 [ sub1::return#1 ] -Uplift Scope [sub2] 22: zp[1]:13 [ sub2::return#0 ] 8.5: zp[1]:12 [ sub2::i#0 ] 4.33: zp[1]:16 [ sub2::return#1 ] 4: zp[1]:15 [ sub2::$0 ] +Uplift Scope [sub2] 2,002: zp[1]:15 [ sub2::$0 ] 1,552: zp[1]:12 [ sub2::i#0 ] 367.33: zp[1]:16 [ sub2::return#1 ] 202: zp[1]:13 [ sub2::return#0 ] +Uplift Scope [sub1] 2,103: zp[1]:9 [ sub1::i#0 ] 367.33: zp[1]:17 [ sub1::return#1 ] 202: zp[1]:10 [ sub1::return#0 ] +Uplift Scope [main] 202: zp[1]:11 [ main::$0 ] 202: zp[1]:14 [ main::$1 ] 55.23: zp[1]:8 [ main::i ] Uplift Scope [] -Uplifting [main] best 866 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] zp[1]:8 [ main::i ] -Uplifting [sub1] best 740 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] -Uplifting [sub2] best 613 combination reg byte a [ sub2::return#0 ] reg byte x [ sub2::i#0 ] reg byte a [ sub2::return#1 ] reg byte a [ sub2::$0 ] +Uplifting [sub2] best 859 combination reg byte a [ sub2::$0 ] reg byte x [ sub2::i#0 ] reg byte a [ sub2::return#1 ] reg byte a [ sub2::return#0 ] Limited combination testing to 100 combinations of 192 possible. +Uplifting [sub1] best 733 combination reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] reg byte a [ sub1::return#0 ] +Uplifting [main] best 613 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] zp[1]:8 [ main::i ] Uplifting [] best 613 combination Attempting to uplift remaining variables inzp[1]:8 [ main::i ] Uplifting [main] best 613 combination zp[1]:8 [ main::i ] @@ -552,29 +552,29 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:8 6.076923076923077 +(byte) main::i loadstore zp[1]:8 55.230769230769226 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 (byte()) sub2((byte) sub2::i) -(byte~) sub2::$0 reg byte a 4.0 +(byte~) sub2::$0 reg byte a 2002.0 (label) sub2::@return (byte) sub2::i -(byte) sub2::i#0 reg byte x 8.5 +(byte) sub2::i#0 reg byte x 1552.0 (byte) sub2::return -(byte) sub2::return#0 reg byte a 22.0 -(byte) sub2::return#1 reg byte a 4.333333333333333 +(byte) sub2::return#0 reg byte a 202.0 +(byte) sub2::return#1 reg byte a 367.33333333333337 zp[1]:8 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-2.sym b/src/test/ref/reserve-zp-procedure-2.sym index 0f04d665a..9e0a6154b 100644 --- a/src/test/ref/reserve-zp-procedure-2.sym +++ b/src/test/ref/reserve-zp-procedure-2.sym @@ -2,29 +2,29 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:8 6.076923076923077 +(byte) main::i loadstore zp[1]:8 55.230769230769226 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 (byte()) sub2((byte) sub2::i) -(byte~) sub2::$0 reg byte a 4.0 +(byte~) sub2::$0 reg byte a 2002.0 (label) sub2::@return (byte) sub2::i -(byte) sub2::i#0 reg byte x 8.5 +(byte) sub2::i#0 reg byte x 1552.0 (byte) sub2::return -(byte) sub2::return#0 reg byte a 22.0 -(byte) sub2::return#1 reg byte a 4.333333333333333 +(byte) sub2::return#0 reg byte a 202.0 +(byte) sub2::return#1 reg byte a 367.33333333333337 zp[1]:8 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-3.log b/src/test/ref/reserve-zp-procedure-3.log index 72c5b17de..a4c0c67eb 100644 --- a/src/test/ref/reserve-zp-procedure-3.log +++ b/src/test/ref/reserve-zp-procedure-3.log @@ -74,8 +74,8 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) sub1::return#0 = (byte) sub1::return#3 -Alias (byte) sub1::return#1 = (byte~) sub1::$0 (byte) sub1::return#4 (byte) sub1::return#2 +Alias sub1::return#0 = sub1::return#3 +Alias sub1::return#1 = sub1::$0 sub1::return#4 sub1::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sub1::i#1 (byte) sub1::i#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -147,14 +147,14 @@ sub1::@return: scope:[sub1] from sub1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte) main::i loadstore 7.125 +(byte~) main::$0 202.0 +(byte) main::i loadstore 64.5 (byte()) sub1((byte) sub1::i) (byte) sub1::i -(byte) sub1::i#0 15.0 +(byte) sub1::i#0 2103.0 (byte) sub1::return -(byte) sub1::return#0 22.0 -(byte) sub1::return#1 4.333333333333333 +(byte) sub1::return#0 202.0 +(byte) sub1::return#1 367.33333333333337 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -257,10 +257,10 @@ sub1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte y -Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN + (byte) main::i) ← (byte~) main::$0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte y +Statement [11] if((byte) main::i!=(byte) 3) goto main::@1 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [13] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:6 [ main::i sub1::return#1 ] { { sub1::i#0 = main::i } { sub1::return#0 = sub1::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:5 [ main::i ] : zp[1]:5 , Potential registers zp[1]:6 [ sub1::i#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:7 [ sub1::return#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , @@ -268,11 +268,11 @@ Potential registers zp[1]:8 [ main::$0 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ sub1::return#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sub1] 22: zp[1]:7 [ sub1::return#0 ] 15: zp[1]:6 [ sub1::i#0 ] 4.33: zp[1]:9 [ sub1::return#1 ] -Uplift Scope [main] 22: zp[1]:8 [ main::$0 ] 7.12: zp[1]:5 [ main::i ] +Uplift Scope [sub1] 2,103: zp[1]:6 [ sub1::i#0 ] 367.33: zp[1]:9 [ sub1::return#1 ] 202: zp[1]:7 [ sub1::return#0 ] +Uplift Scope [main] 202: zp[1]:8 [ main::$0 ] 64.5: zp[1]:5 [ main::i ] Uplift Scope [] -Uplifting [sub1] best 452 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] +Uplifting [sub1] best 452 combination reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ] reg byte a [ sub1::return#0 ] Uplifting [main] best 392 combination reg byte a [ main::$0 ] zp[1]:5 [ main::i ] Uplifting [] best 392 combination Attempting to uplift remaining variables inzp[1]:5 [ main::i ] @@ -375,19 +375,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:5 7.125 +(byte) main::i loadstore zp[1]:5 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:5 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/reserve-zp-procedure-3.sym b/src/test/ref/reserve-zp-procedure-3.sym index 1c1a9138c..7d2bd8c65 100644 --- a/src/test/ref/reserve-zp-procedure-3.sym +++ b/src/test/ref/reserve-zp-procedure-3.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(byte) main::i loadstore zp[1]:5 7.125 +(byte) main::i loadstore zp[1]:5 64.5 (byte()) sub1((byte) sub1::i) (label) sub1::@return (byte) sub1::i -(byte) sub1::i#0 reg byte a 15.0 +(byte) sub1::i#0 reg byte a 2103.0 (byte) sub1::return -(byte) sub1::return#0 reg byte a 22.0 -(byte) sub1::return#1 reg byte a 4.333333333333333 +(byte) sub1::return#0 reg byte a 202.0 +(byte) sub1::return#1 reg byte a 367.33333333333337 zp[1]:5 [ main::i ] reg byte a [ sub1::i#0 ] diff --git a/src/test/ref/robozzle64-label-problem.log b/src/test/ref/robozzle64-label-problem.log index 871c23ddc..d65a788df 100644 --- a/src/test/ref/robozzle64-label-problem.log +++ b/src/test/ref/robozzle64-label-problem.log @@ -226,22 +226,22 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1 Inversing boolean not [9] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [8] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (word) mul8u::return#2 = (word) mul8u::return#5 -Alias (word*) main::screen#3 = (word*) main::screen#5 -Alias (byte) main::y#2 = (byte) main::y#3 (byte) main::y#4 -Alias (word) main::z1#0 = (word~) main::$0 -Alias (word) mul8u::return#3 = (word) mul8u::return#6 -Alias (word*) main::screen#1 = (word*) main::screen#4 -Alias (word) main::z2#0 = (word~) main::$1 +Alias mul8u::a#3 = mul8u::a#4 mul8u::a#7 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#4 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias mul8u::return#2 = mul8u::return#5 +Alias main::screen#3 = main::screen#5 +Alias main::y#2 = main::y#3 main::y#4 +Alias main::z1#0 = main::$0 +Alias mul8u::return#3 = mul8u::return#6 +Alias main::screen#1 = main::screen#4 +Alias main::z2#0 = main::$1 Successful SSA optimization Pass2AliasElimination -Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 +Alias mul8u::a#3 = mul8u::a#5 +Alias mul8u::mb#2 = mul8u::mb#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) mul8u::$0 [5] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [8] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 @@ -276,7 +276,7 @@ Constant inlined mul8u::b#0 = (byte) $28 Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment main::screen#2 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word*) main::screen#1 = (word*) main::screen#3 +Alias main::screen#1 = main::screen#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) mul8u::b#2 (byte) $28 Successful SSA optimization Pass2IdenticalPhiElimination @@ -397,34 +397,34 @@ mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 VARIABLE REGISTER WEIGHTS (void()) main() (word*) main::screen -(word*) main::screen#1 4.0 -(word*) main::screen#2 7.333333333333333 +(word*) main::screen#1 36.72727272727273 +(word*) main::screen#2 67.33333333333333 (byte) main::y -(byte) main::y#1 16.5 -(byte) main::y#2 3.6666666666666665 +(byte) main::y#1 151.5 +(byte) main::y#2 33.666666666666664 (word) main::z1 -(word) main::z1#0 22.0 +(word) main::z1#0 202.0 (word) main::z2 -(word) main::z2#0 22.0 +(word) main::z2#0 202.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 202.0 +(byte~) mul8u::$1 200002.0 (byte) mul8u::a -(byte) mul8u::a#0 101.0 -(byte) mul8u::a#1 22.0 -(byte) mul8u::a#2 22.0 -(byte) mul8u::a#3 67.66666666666666 -(byte) mul8u::a#6 24.0 +(byte) mul8u::a#0 100001.0 +(byte) mul8u::a#1 202.0 +(byte) mul8u::a#2 202.0 +(byte) mul8u::a#3 66834.16666666666 +(byte) mul8u::a#6 1203.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 202.0 -(word) mul8u::mb#2 43.285714285714285 +(word) mul8u::mb#1 200002.0 +(word) mul8u::mb#2 42857.57142857143 (word) mul8u::res -(word) mul8u::res#1 202.0 -(word) mul8u::res#2 46.42857142857143 -(word) mul8u::res#6 101.0 +(word) mul8u::res#1 200002.0 +(word) mul8u::res#2 42886.42857142857 +(word) mul8u::res#6 100001.0 (word) mul8u::return -(word) mul8u::return#2 22.0 -(word) mul8u::return#3 22.0 +(word) mul8u::return#2 202.0 +(word) mul8u::return#3 202.0 Initial phi equivalence classes [ main::y#2 main::y#1 ] @@ -662,26 +662,26 @@ mul8u: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#2 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#2 ] ) always clobbers reg byte a +Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#2 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#2 ] { { mul8u::a#1 = mul8u::a#6 main::y#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#2 main::y#1 ] -Statement [9] (word) main::z1#0 ← (word) mul8u::return#2 [ main::y#2 main::screen#1 main::z1#0 ] ( main:2 [ main::y#2 main::screen#1 main::z1#0 ] ) always clobbers reg byte a -Statement [10] *((word*) main::screen#1) ← (word) main::z1#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] ) always clobbers reg byte a reg byte y +Statement [9] (word) main::z1#0 ← (word) mul8u::return#2 [ main::y#2 main::screen#1 main::z1#0 ] ( main:2 [ main::y#2 main::screen#1 main::z1#0 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [10] *((word*) main::screen#1) ← (word) main::z1#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#2 main::y#1 ] -Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#3 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#3 ] ) always clobbers reg byte a -Statement [14] (word) main::z2#0 ← (word) mul8u::return#3 [ main::y#2 main::screen#1 main::z2#0 ] ( main:2 [ main::y#2 main::screen#1 main::z2#0 ] ) always clobbers reg byte a -Statement [15] *((word*) main::screen#1 + (const byte) SIZEOF_WORD) ← (word) main::z2#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [16] (word*) main::screen#2 ← (word*) main::screen#1 + (const byte) SIZEOF_WORD+(const byte) SIZEOF_WORD [ main::y#2 main::screen#2 ] ( main:2 [ main::y#2 main::screen#2 ] ) always clobbers reg byte a -Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#3 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#3 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [14] (word) main::z2#0 ← (word) mul8u::return#3 [ main::y#2 main::screen#1 main::z2#0 ] ( main:2 [ main::y#2 main::screen#1 main::z2#0 ] { } ) always clobbers reg byte a +Statement [15] *((word*) main::screen#1 + (const byte) SIZEOF_WORD) ← (word) main::z2#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (word*) main::screen#2 ← (word*) main::screen#1 + (const byte) SIZEOF_WORD+(const byte) SIZEOF_WORD [ main::y#2 main::screen#2 ] ( main:2 [ main::y#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#1 = mul8u::a#6 main::y#2 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] -Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#2 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#2 ] ) always clobbers reg byte a -Statement [9] (word) main::z1#0 ← (word) mul8u::return#2 [ main::y#2 main::screen#1 main::z1#0 ] ( main:2 [ main::y#2 main::screen#1 main::z1#0 ] ) always clobbers reg byte a -Statement [10] *((word*) main::screen#1) ← (word) main::z1#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#3 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#3 ] ) always clobbers reg byte a -Statement [14] (word) main::z2#0 ← (word) mul8u::return#3 [ main::y#2 main::screen#1 main::z2#0 ] ( main:2 [ main::y#2 main::screen#1 main::z2#0 ] ) always clobbers reg byte a -Statement [15] *((word*) main::screen#1 + (const byte) SIZEOF_WORD) ← (word) main::z2#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [16] (word*) main::screen#2 ← (word*) main::screen#1 + (const byte) SIZEOF_WORD+(const byte) SIZEOF_WORD [ main::y#2 main::screen#2 ] ( main:2 [ main::y#2 main::screen#2 ] ) always clobbers reg byte a -Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#2 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#2 ] { { mul8u::a#1 = mul8u::a#6 main::y#2 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [9] (word) main::z1#0 ← (word) mul8u::return#2 [ main::y#2 main::screen#1 main::z1#0 ] ( main:2 [ main::y#2 main::screen#1 main::z1#0 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [10] *((word*) main::screen#1) ← (word) main::z1#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a reg byte y +Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::y#2 main::screen#1 mul8u::return#3 ] ( main:2 [ main::y#2 main::screen#1 mul8u::return#3 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [14] (word) main::z2#0 ← (word) mul8u::return#3 [ main::y#2 main::screen#1 main::z2#0 ] ( main:2 [ main::y#2 main::screen#1 main::z2#0 ] { } ) always clobbers reg byte a +Statement [15] *((word*) main::screen#1 + (const byte) SIZEOF_WORD) ← (word) main::z2#0 [ main::y#2 main::screen#1 ] ( main:2 [ main::y#2 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (word*) main::screen#2 ← (word*) main::screen#1 + (const byte) SIZEOF_WORD+(const byte) SIZEOF_WORD [ main::y#2 main::screen#2 ] ( main:2 [ main::y#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [24] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8u::a#1 = mul8u::a#6 main::y#2 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [26] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#1 = mul8u::a#6 main::y#2 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::y#2 main::screen#1 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::a#2 = mul8u::a#6 main::y#2 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::y#2 main::y#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#1 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] : zp[1]:5 , reg byte x , reg byte y , @@ -694,11 +694,11 @@ Potential registers zp[2]:16 [ main::z2#0 ] : zp[2]:16 , Potential registers zp[1]:18 [ mul8u::$1 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 349.43: zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 245.29: zp[2]:8 [ mul8u::mb#2 mul8u::mb#1 ] 236.67: zp[1]:5 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 202: zp[1]:18 [ mul8u::$1 ] 22: zp[2]:10 [ mul8u::return#2 ] 22: zp[2]:14 [ mul8u::return#3 ] -Uplift Scope [main] 22: zp[2]:12 [ main::z1#0 ] 22: zp[2]:16 [ main::z2#0 ] 20.17: zp[1]:2 [ main::y#2 main::y#1 ] 11.33: zp[2]:3 [ main::screen#1 main::screen#2 ] +Uplift Scope [mul8u] 342,889.43: zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 242,859.57: zp[2]:8 [ mul8u::mb#2 mul8u::mb#1 ] 200,002: zp[1]:18 [ mul8u::$1 ] 168,442.17: zp[1]:5 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 202: zp[2]:10 [ mul8u::return#2 ] 202: zp[2]:14 [ mul8u::return#3 ] +Uplift Scope [main] 202: zp[2]:12 [ main::z1#0 ] 202: zp[2]:16 [ main::z2#0 ] 185.17: zp[1]:2 [ main::y#2 main::y#1 ] 104.06: zp[2]:3 [ main::screen#1 main::screen#2 ] Uplift Scope [] -Uplifting [mul8u] best 10016 combination zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:8 [ mul8u::mb#2 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::$1 ] zp[2]:10 [ mul8u::return#2 ] zp[2]:14 [ mul8u::return#3 ] +Uplifting [mul8u] best 10016 combination zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:8 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] zp[2]:10 [ mul8u::return#2 ] zp[2]:14 [ mul8u::return#3 ] Uplifting [main] best 10016 combination zp[2]:12 [ main::z1#0 ] zp[2]:16 [ main::z2#0 ] zp[1]:2 [ main::y#2 main::y#1 ] zp[2]:3 [ main::screen#1 main::screen#2 ] Uplifting [] best 10016 combination Attempting to uplift remaining variables inzp[1]:2 [ main::y#2 main::y#1 ] @@ -944,39 +944,39 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (word*) main::screen -(word*) main::screen#1 screen zp[2]:3 4.0 -(word*) main::screen#2 screen zp[2]:3 7.333333333333333 +(word*) main::screen#1 screen zp[2]:3 36.72727272727273 +(word*) main::screen#2 screen zp[2]:3 67.33333333333333 (byte) main::y -(byte) main::y#1 y zp[1]:2 16.5 -(byte) main::y#2 y zp[1]:2 3.6666666666666665 +(byte) main::y#1 y zp[1]:2 151.5 +(byte) main::y#2 y zp[1]:2 33.666666666666664 (word) main::z1 -(word) main::z1#0 z1 zp[2]:5 22.0 +(word) main::z1#0 z1 zp[2]:5 202.0 (word) main::z2 -(word) main::z2#0 z2 zp[2]:5 22.0 +(word) main::z2#0 z2 zp[2]:5 202.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 200002.0 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 22.0 -(byte) mul8u::a#2 reg byte x 22.0 -(byte) mul8u::a#3 reg byte x 67.66666666666666 -(byte) mul8u::a#6 reg byte x 24.0 +(byte) mul8u::a#0 reg byte x 100001.0 +(byte) mul8u::a#1 reg byte x 202.0 +(byte) mul8u::a#2 reg byte x 202.0 +(byte) mul8u::a#3 reg byte x 66834.16666666666 +(byte) mul8u::a#6 reg byte x 1203.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:7 202.0 -(word) mul8u::mb#2 mb zp[2]:7 43.285714285714285 +(word) mul8u::mb#1 mb zp[2]:7 200002.0 +(word) mul8u::mb#2 mb zp[2]:7 42857.57142857143 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:5 202.0 -(word) mul8u::res#2 res zp[2]:5 46.42857142857143 -(word) mul8u::res#6 res zp[2]:5 101.0 +(word) mul8u::res#1 res zp[2]:5 200002.0 +(word) mul8u::res#2 res zp[2]:5 42886.42857142857 +(word) mul8u::res#6 res zp[2]:5 100001.0 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:5 22.0 -(word) mul8u::return#3 return zp[2]:5 22.0 +(word) mul8u::return#2 return zp[2]:5 202.0 +(word) mul8u::return#3 return zp[2]:5 202.0 zp[1]:2 [ main::y#2 main::y#1 ] zp[2]:3 [ main::screen#1 main::screen#2 ] diff --git a/src/test/ref/robozzle64-label-problem.sym b/src/test/ref/robozzle64-label-problem.sym index 9a4705163..515bac816 100644 --- a/src/test/ref/robozzle64-label-problem.sym +++ b/src/test/ref/robozzle64-label-problem.sym @@ -8,39 +8,39 @@ (label) main::@3 (label) main::@return (word*) main::screen -(word*) main::screen#1 screen zp[2]:3 4.0 -(word*) main::screen#2 screen zp[2]:3 7.333333333333333 +(word*) main::screen#1 screen zp[2]:3 36.72727272727273 +(word*) main::screen#2 screen zp[2]:3 67.33333333333333 (byte) main::y -(byte) main::y#1 y zp[1]:2 16.5 -(byte) main::y#2 y zp[1]:2 3.6666666666666665 +(byte) main::y#1 y zp[1]:2 151.5 +(byte) main::y#2 y zp[1]:2 33.666666666666664 (word) main::z1 -(word) main::z1#0 z1 zp[2]:5 22.0 +(word) main::z1#0 z1 zp[2]:5 202.0 (word) main::z2 -(word) main::z2#0 z2 zp[2]:5 22.0 +(word) main::z2#0 z2 zp[2]:5 202.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 200002.0 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 22.0 -(byte) mul8u::a#2 reg byte x 22.0 -(byte) mul8u::a#3 reg byte x 67.66666666666666 -(byte) mul8u::a#6 reg byte x 24.0 +(byte) mul8u::a#0 reg byte x 100001.0 +(byte) mul8u::a#1 reg byte x 202.0 +(byte) mul8u::a#2 reg byte x 202.0 +(byte) mul8u::a#3 reg byte x 66834.16666666666 +(byte) mul8u::a#6 reg byte x 1203.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:7 202.0 -(word) mul8u::mb#2 mb zp[2]:7 43.285714285714285 +(word) mul8u::mb#1 mb zp[2]:7 200002.0 +(word) mul8u::mb#2 mb zp[2]:7 42857.57142857143 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:5 202.0 -(word) mul8u::res#2 res zp[2]:5 46.42857142857143 -(word) mul8u::res#6 res zp[2]:5 101.0 +(word) mul8u::res#1 res zp[2]:5 200002.0 +(word) mul8u::res#2 res zp[2]:5 42886.42857142857 +(word) mul8u::res#6 res zp[2]:5 100001.0 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:5 22.0 -(word) mul8u::return#3 return zp[2]:5 22.0 +(word) mul8u::return#2 return zp[2]:5 202.0 +(word) mul8u::return#3 return zp[2]:5 202.0 zp[1]:2 [ main::y#2 main::y#1 ] zp[2]:3 [ main::screen#1 main::screen#2 ] diff --git a/src/test/ref/roll-sprite-msb.log b/src/test/ref/roll-sprite-msb.log index c6d8e4b30..2f9328c3b 100644 --- a/src/test/ref/roll-sprite-msb.log +++ b/src/test/ref/roll-sprite-msb.log @@ -159,9 +159,9 @@ Inferred type updated to byte in (unumber~) position_sprite::$1 ← (byte) posit Inferred type updated to byte in (unumber~) position_sprite::$6 ← (byte) 1 << (byte) position_sprite::spriteno#2 Inferred type updated to byte in (unumber~) position_sprite::$4 ← (byte) 1 << (byte) position_sprite::spriteno#3 Inferred type updated to byte in (unumber~) position_sprite::$5 ← (byte~) position_sprite::$4 ^ (byte) $ff -Alias (word) main::xpos#2 = (word) main::xpos#3 -Alias (byte) main::s#2 = (byte) main::s#3 -Alias (byte) position_sprite::spriteno#1 = (byte) position_sprite::spriteno#2 (byte) position_sprite::spriteno#3 +Alias main::xpos#2 = main::xpos#3 +Alias main::s#2 = main::s#3 +Alias position_sprite::spriteno#1 = position_sprite::spriteno#2 position_sprite::spriteno#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) position_sprite::spriteno#1 (byte) position_sprite::spriteno#0 Identical Phi Values (byte) position_sprite::y#1 (byte) position_sprite::y#0 @@ -184,7 +184,7 @@ Simplifying constant integer cast 8 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) position_sprite::$1 = (byte~) position_sprite::$0 +Alias position_sprite::$1 = position_sprite::$0 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [8] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 * (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -273,21 +273,21 @@ position_sprite::@1: scope:[position_sprite] from position_sprite VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::s -(byte) main::s#1 16.5 -(byte) main::s#2 6.6000000000000005 +(byte) main::s#1 151.5 +(byte) main::s#2 60.599999999999994 (word) main::xpos -(word) main::xpos#1 7.333333333333333 -(word) main::xpos#2 8.25 +(word) main::xpos#1 67.33333333333333 +(word) main::xpos#2 75.75 (void()) position_sprite((byte) position_sprite::spriteno , (word) position_sprite::x , (byte) position_sprite::y) -(byte~) position_sprite::$1 2.0 -(byte~) position_sprite::$2 4.0 -(byte~) position_sprite::$4 4.0 -(byte~) position_sprite::$5 4.0 -(byte~) position_sprite::$6 4.0 +(byte~) position_sprite::$1 1001.0 +(byte~) position_sprite::$2 2002.0 +(byte~) position_sprite::$4 2002.0 +(byte~) position_sprite::$5 2002.0 +(byte~) position_sprite::$6 2002.0 (byte) position_sprite::spriteno -(byte) position_sprite::spriteno#0 2.4285714285714284 +(byte) position_sprite::spriteno#0 443.42857142857144 (word) position_sprite::x -(word) position_sprite::x#0 3.0 +(word) position_sprite::x#0 420.59999999999997 (byte) position_sprite::y Initial phi equivalence classes @@ -486,31 +486,29 @@ position_sprite: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (word) position_sprite::x#0 ← (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a +Statement [7] (word) position_sprite::x#0 ← (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::s#2 main::s#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ position_sprite::spriteno#0 ] -Statement [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [13] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SPRITES_YPOS + (byte~) position_sprite::$1) ← (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a +Statement [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] { } ) always clobbers reg byte a +Statement [13] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [14] *((const byte*) SPRITES_YPOS + (byte~) position_sprite::$1) ← (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ position_sprite::$1 ] -Statement [15] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a -Statement [17] if((word) position_sprite::x#0>(byte) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] ) always clobbers reg byte a -Statement [18] (byte~) position_sprite::$4 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a -Statement [19] (byte~) position_sprite::$5 ← (byte~) position_sprite::$4 ^ (byte) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a -Statement [22] (byte~) position_sprite::$6 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a -Statement [7] (word) position_sprite::x#0 ← (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a -Statement [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [13] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SPRITES_YPOS + (byte~) position_sprite::$1) ← (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a -Statement [15] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a -Statement [17] if((word) position_sprite::x#0>(byte) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] ) always clobbers reg byte a -Statement [18] (byte~) position_sprite::$4 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a -Statement [19] (byte~) position_sprite::$5 ← (byte~) position_sprite::$4 ^ (byte) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a -Statement [22] (byte~) position_sprite::$6 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a +Statement [17] if((word) position_sprite::x#0>(byte) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [18] (byte~) position_sprite::$4 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [19] (byte~) position_sprite::$5 ← (byte~) position_sprite::$4 ^ (byte) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [20] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [22] (byte~) position_sprite::$6 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [7] (word) position_sprite::x#0 ← (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] { } ) always clobbers reg byte a +Statement [13] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [14] *((const byte*) SPRITES_YPOS + (byte~) position_sprite::$1) ← (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [17] if((word) position_sprite::x#0>(byte) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [18] (byte~) position_sprite::$4 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [19] (byte~) position_sprite::$5 ← (byte~) position_sprite::$4 ^ (byte) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [20] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [22] (byte~) position_sprite::$6 ← (byte) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] { { position_sprite::spriteno#0 = main::s#2 } { position_sprite::x#0 = main::xpos#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::s#2 main::s#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ main::xpos#2 main::xpos#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ position_sprite::spriteno#0 ] : zp[1]:5 , reg byte x , reg byte y , @@ -522,18 +520,18 @@ Potential registers zp[1]:11 [ position_sprite::$5 ] : zp[1]:11 , reg byte a , r Potential registers zp[1]:12 [ position_sprite::$6 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.1: zp[1]:2 [ main::s#2 main::s#1 ] 15.58: zp[2]:3 [ main::xpos#2 main::xpos#1 ] -Uplift Scope [position_sprite] 4: zp[1]:9 [ position_sprite::$2 ] 4: zp[1]:10 [ position_sprite::$4 ] 4: zp[1]:11 [ position_sprite::$5 ] 4: zp[1]:12 [ position_sprite::$6 ] 3: zp[2]:6 [ position_sprite::x#0 ] 2.43: zp[1]:5 [ position_sprite::spriteno#0 ] 2: zp[1]:8 [ position_sprite::$1 ] +Uplift Scope [position_sprite] 2,002: zp[1]:9 [ position_sprite::$2 ] 2,002: zp[1]:10 [ position_sprite::$4 ] 2,002: zp[1]:11 [ position_sprite::$5 ] 2,002: zp[1]:12 [ position_sprite::$6 ] 1,001: zp[1]:8 [ position_sprite::$1 ] 443.43: zp[1]:5 [ position_sprite::spriteno#0 ] 420.6: zp[2]:6 [ position_sprite::x#0 ] +Uplift Scope [main] 212.1: zp[1]:2 [ main::s#2 main::s#1 ] 143.08: zp[2]:3 [ main::xpos#2 main::xpos#1 ] Uplift Scope [] -Uplifting [main] best 841 combination reg byte x [ main::s#2 main::s#1 ] zp[2]:3 [ main::xpos#2 main::xpos#1 ] -Uplifting [position_sprite] best 817 combination reg byte a [ position_sprite::$2 ] reg byte a [ position_sprite::$4 ] reg byte a [ position_sprite::$5 ] reg byte a [ position_sprite::$6 ] zp[2]:6 [ position_sprite::x#0 ] zp[1]:5 [ position_sprite::spriteno#0 ] zp[1]:8 [ position_sprite::$1 ] +Uplifting [position_sprite] best 937 combination reg byte a [ position_sprite::$2 ] reg byte a [ position_sprite::$4 ] reg byte a [ position_sprite::$5 ] reg byte a [ position_sprite::$6 ] zp[1]:8 [ position_sprite::$1 ] zp[1]:5 [ position_sprite::spriteno#0 ] zp[2]:6 [ position_sprite::x#0 ] Limited combination testing to 100 combinations of 2304 possible. +Uplifting [main] best 817 combination reg byte x [ main::s#2 main::s#1 ] zp[2]:3 [ main::xpos#2 main::xpos#1 ] Uplifting [] best 817 combination -Attempting to uplift remaining variables inzp[1]:5 [ position_sprite::spriteno#0 ] -Uplifting [position_sprite] best 817 combination zp[1]:5 [ position_sprite::spriteno#0 ] Attempting to uplift remaining variables inzp[1]:8 [ position_sprite::$1 ] Uplifting [position_sprite] best 810 combination reg byte y [ position_sprite::$1 ] +Attempting to uplift remaining variables inzp[1]:5 [ position_sprite::spriteno#0 ] +Uplifting [position_sprite] best 810 combination zp[1]:5 [ position_sprite::spriteno#0 ] Coalescing zero page register [ zp[2]:3 [ main::xpos#2 main::xpos#1 ] ] with [ zp[2]:6 [ position_sprite::x#0 ] ] - score: 1 Allocated (was zp[2]:3) zp[2]:2 [ main::xpos#2 main::xpos#1 position_sprite::x#0 ] Allocated (was zp[1]:5) zp[1]:4 [ position_sprite::spriteno#0 ] @@ -724,24 +722,24 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::s -(byte) main::s#1 reg byte x 16.5 -(byte) main::s#2 reg byte x 6.6000000000000005 +(byte) main::s#1 reg byte x 151.5 +(byte) main::s#2 reg byte x 60.599999999999994 (word) main::xpos -(word) main::xpos#1 xpos zp[2]:2 7.333333333333333 -(word) main::xpos#2 xpos zp[2]:2 8.25 +(word) main::xpos#1 xpos zp[2]:2 67.33333333333333 +(word) main::xpos#2 xpos zp[2]:2 75.75 (void()) position_sprite((byte) position_sprite::spriteno , (word) position_sprite::x , (byte) position_sprite::y) -(byte~) position_sprite::$1 reg byte y 2.0 -(byte~) position_sprite::$2 reg byte a 4.0 -(byte~) position_sprite::$4 reg byte a 4.0 -(byte~) position_sprite::$5 reg byte a 4.0 -(byte~) position_sprite::$6 reg byte a 4.0 +(byte~) position_sprite::$1 reg byte y 1001.0 +(byte~) position_sprite::$2 reg byte a 2002.0 +(byte~) position_sprite::$4 reg byte a 2002.0 +(byte~) position_sprite::$5 reg byte a 2002.0 +(byte~) position_sprite::$6 reg byte a 2002.0 (label) position_sprite::@1 (label) position_sprite::@2 (label) position_sprite::@return (byte) position_sprite::spriteno -(byte) position_sprite::spriteno#0 spriteno zp[1]:4 2.4285714285714284 +(byte) position_sprite::spriteno#0 spriteno zp[1]:4 443.42857142857144 (word) position_sprite::x -(word) position_sprite::x#0 x zp[2]:2 3.0 +(word) position_sprite::x#0 x zp[2]:2 420.59999999999997 (byte) position_sprite::y (const byte) position_sprite::y#0 y = (byte) $32 diff --git a/src/test/ref/roll-sprite-msb.sym b/src/test/ref/roll-sprite-msb.sym index 6fa6aa5d9..5ca337423 100644 --- a/src/test/ref/roll-sprite-msb.sym +++ b/src/test/ref/roll-sprite-msb.sym @@ -9,24 +9,24 @@ (label) main::@2 (label) main::@return (byte) main::s -(byte) main::s#1 reg byte x 16.5 -(byte) main::s#2 reg byte x 6.6000000000000005 +(byte) main::s#1 reg byte x 151.5 +(byte) main::s#2 reg byte x 60.599999999999994 (word) main::xpos -(word) main::xpos#1 xpos zp[2]:2 7.333333333333333 -(word) main::xpos#2 xpos zp[2]:2 8.25 +(word) main::xpos#1 xpos zp[2]:2 67.33333333333333 +(word) main::xpos#2 xpos zp[2]:2 75.75 (void()) position_sprite((byte) position_sprite::spriteno , (word) position_sprite::x , (byte) position_sprite::y) -(byte~) position_sprite::$1 reg byte y 2.0 -(byte~) position_sprite::$2 reg byte a 4.0 -(byte~) position_sprite::$4 reg byte a 4.0 -(byte~) position_sprite::$5 reg byte a 4.0 -(byte~) position_sprite::$6 reg byte a 4.0 +(byte~) position_sprite::$1 reg byte y 1001.0 +(byte~) position_sprite::$2 reg byte a 2002.0 +(byte~) position_sprite::$4 reg byte a 2002.0 +(byte~) position_sprite::$5 reg byte a 2002.0 +(byte~) position_sprite::$6 reg byte a 2002.0 (label) position_sprite::@1 (label) position_sprite::@2 (label) position_sprite::@return (byte) position_sprite::spriteno -(byte) position_sprite::spriteno#0 spriteno zp[1]:4 2.4285714285714284 +(byte) position_sprite::spriteno#0 spriteno zp[1]:4 443.42857142857144 (word) position_sprite::x -(word) position_sprite::x#0 x zp[2]:2 3.0 +(word) position_sprite::x#0 x zp[2]:2 420.59999999999997 (byte) position_sprite::y (const byte) position_sprite::y#0 y = (byte) $32 diff --git a/src/test/ref/roll-variable.log b/src/test/ref/roll-variable.log index f2c18d2f8..3830a1738 100644 --- a/src/test/ref/roll-variable.log +++ b/src/test/ref/roll-variable.log @@ -115,10 +115,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 14.666666666666666 +(byte) main::b#1 151.5 +(byte) main::b#2 134.66666666666666 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -201,14 +201,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$0 ← (byte) $55 << (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) $55 << (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::b#2 main::b#1 ] -Statement [6] (byte~) main::$0 ← (byte) $55 << (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) $55 << (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::b#2 main::b#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::b#2 main::b#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 523 combination zp[1]:2 [ main::b#2 main::b#1 ] reg byte a [ main::$0 ] @@ -313,12 +313,12 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::b -(byte) main::b#1 b zp[1]:2 16.5 -(byte) main::b#2 b zp[1]:2 14.666666666666666 +(byte) main::b#1 b zp[1]:2 151.5 +(byte) main::b#2 b zp[1]:2 134.66666666666666 (const byte*) main::screen = (byte*) 1024 zp[1]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/roll-variable.sym b/src/test/ref/roll-variable.sym index ac5f4952b..6136cda14 100644 --- a/src/test/ref/roll-variable.sym +++ b/src/test/ref/roll-variable.sym @@ -2,12 +2,12 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::b -(byte) main::b#1 b zp[1]:2 16.5 -(byte) main::b#2 b zp[1]:2 14.666666666666666 +(byte) main::b#1 b zp[1]:2 151.5 +(byte) main::b#2 b zp[1]:2 134.66666666666666 (const byte*) main::screen = (byte*) 1024 zp[1]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/runtime-unused-procedure.log b/src/test/ref/runtime-unused-procedure.log index 0477c734c..927cda6e0 100644 --- a/src/test/ref/runtime-unused-procedure.log +++ b/src/test/ref/runtime-unused-procedure.log @@ -183,7 +183,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/sandbox-ternary-error.log b/src/test/ref/sandbox-ternary-error.log index bf622203f..508952a28 100644 --- a/src/test/ref/sandbox-ternary-error.log +++ b/src/test/ref/sandbox-ternary-error.log @@ -102,12 +102,12 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::b#2 = (byte) main::b#5 (byte) main::b#3 (byte) main::b#7 (byte) main::b#8 -Alias (byte~) main::$5 = (byte~) main::$4 +Alias main::b#2 = main::b#5 main::b#3 main::b#7 main::b#8 +Alias main::$5 = main::$4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::b#2 = (byte) main::b#6 +Alias main::b#2 = main::b#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::b#2 = (byte) main::b#4 +Alias main::b#2 = main::b#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::b#2==(byte) 0) goto main::@2 Simple Condition (bool~) main::$1 [6] if((byte) main::b#2==(byte) 1) goto main::@5 @@ -203,11 +203,11 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$5 11.0 -(byte~) main::$7 22.0 +(byte~) main::$5 101.0 +(byte~) main::$7 202.0 (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 6.285714285714286 +(byte) main::b#1 151.5 +(byte) main::b#2 57.714285714285715 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -325,7 +325,7 @@ Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::$7 main::$5 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:3 [ main::$7 main::$5 ] 22.79: zp[1]:2 [ main::b#2 main::b#1 ] +Uplift Scope [main] 303: zp[1]:3 [ main::$7 main::$5 ] 209.21: zp[1]:2 [ main::b#2 main::b#1 ] Uplift Scope [] Uplifting [main] best 563 combination reg byte a [ main::$7 main::$5 ] reg byte x [ main::b#2 main::b#1 ] @@ -466,8 +466,8 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$5 reg byte a 11.0 -(byte~) main::$7 reg byte a 22.0 +(byte~) main::$5 reg byte a 101.0 +(byte~) main::$7 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -476,8 +476,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 6.285714285714286 +(byte) main::b#1 reg byte x 151.5 +(byte) main::b#2 reg byte x 57.714285714285715 reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::$7 main::$5 ] diff --git a/src/test/ref/sandbox-ternary-error.sym b/src/test/ref/sandbox-ternary-error.sym index e19aea04c..d032a088a 100644 --- a/src/test/ref/sandbox-ternary-error.sym +++ b/src/test/ref/sandbox-ternary-error.sym @@ -2,8 +2,8 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$5 reg byte a 11.0 -(byte~) main::$7 reg byte a 22.0 +(byte~) main::$5 reg byte a 101.0 +(byte~) main::$7 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -12,8 +12,8 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 6.285714285714286 +(byte) main::b#1 reg byte x 151.5 +(byte) main::b#2 reg byte x 57.714285714285715 reg byte x [ main::b#2 main::b#1 ] reg byte a [ main::$7 main::$5 ] diff --git a/src/test/ref/sandbox.log b/src/test/ref/sandbox.log index 4b6dc213c..cdcfad308 100644 --- a/src/test/ref/sandbox.log +++ b/src/test/ref/sandbox.log @@ -2734,178 +2734,178 @@ Inversing boolean not [159] (bool~) myprintf::$52 ← (byte) myprintf::b#7 != (b Inversing boolean not [163] (bool~) myprintf::$4 ← (byte) myprintf::b#8 != (byte) '0' from [162] (bool~) myprintf::$3 ← (byte) myprintf::b#8 == (byte) '0' Inversing boolean not [177] (bool~) myprintf::$11 ← (byte) myprintf::b#10 != (byte) '-' from [176] (bool~) myprintf::$10 ← (byte) myprintf::b#10 == (byte) '-' 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 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 -Alias (word) divr16u::return#2 = (word) divr16u::return#4 -Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 -Alias (byte*) append::dst#5 = (byte*) append::dst#6 -Alias (word) append::value#5 = (word) append::value#6 (word) append::value#7 (word) append::return#0 (word) append::return#6 (word) append::return#1 -Alias (word) append::sub#4 = (word) append::sub#5 -Alias (byte*) utoa::dst#15 = (byte*) utoa::dst#6 (byte*) utoa::dst#7 -Alias (word) utoa::value#5 = (word) utoa::value#7 -Alias (word) append::return#2 = (word) append::return#7 -Alias (word) utoa::value#0 = (word~) utoa::$18 -Alias (byte*) utoa::dst#16 = (byte*) utoa::dst#8 (byte*) utoa::dst#9 -Alias (word) utoa::value#6 = (word) utoa::value#9 -Alias (word) append::return#3 = (word) append::return#8 -Alias (word) utoa::value#1 = (word~) utoa::$19 -Alias (byte*) utoa::dst#10 = (byte*) utoa::dst#17 (byte*) utoa::dst#11 -Alias (word) utoa::value#11 = (word) utoa::value#8 -Alias (word) append::return#4 = (word) append::return#9 -Alias (word) utoa::value#2 = (word~) utoa::$20 -Alias (byte*) utoa::dst#13 = (byte*) utoa::dst#18 (byte*) utoa::dst#14 -Alias (word) utoa::value#10 = (word) utoa::value#13 -Alias (word) append::return#10 = (word) append::return#5 -Alias (word) utoa::value#3 = (word~) utoa::$21 -Alias (byte*) myprintf::str#12 = (byte*) myprintf::str#4 (byte*) myprintf::str#3 (byte*) myprintf::str#32 (byte*) myprintf::str#13 (byte*) myprintf::str#14 (byte*) myprintf::str#15 (byte*) myprintf::str#8 (byte*) myprintf::str#26 (byte*) myprintf::str#9 (byte*) myprintf::str#20 (byte*) myprintf::str#27 (byte*) myprintf::str#49 (byte*) myprintf::str#46 (byte*) myprintf::str#19 (byte*) myprintf::str#42 (byte*) myprintf::str#38 (byte*) myprintf::str#39 (byte*) myprintf::str#24 (byte*) myprintf::str#33 (byte*) myprintf::str#21 (byte*) myprintf::str#34 (byte*) myprintf::str#22 (byte*) myprintf::str#23 (byte*) myprintf::str#25 -Alias (byte) myprintf::bFormat#10 = (byte) myprintf::bFormat#3 (byte) myprintf::bFormat#4 (byte) myprintf::bFormat#19 (byte) myprintf::bFormat#11 (byte) myprintf::bFormat#12 (byte) myprintf::bFormat#13 (byte) myprintf::bFormat#6 (byte) myprintf::bFormat#7 (byte) myprintf::bFormat#17 (byte) myprintf::bFormat#18 -Alias (byte) myprintf::bArg#10 = (byte) myprintf::bArg#9 (byte) myprintf::bArg#5 (byte) myprintf::bArg#17 (byte) myprintf::bArg#18 (byte) myprintf::bArg#16 (byte) myprintf::bArg#19 (byte) myprintf::bArg#13 (byte) myprintf::bArg#27 (byte) myprintf::bArg#14 (byte) myprintf::bArg#24 (byte) myprintf::bArg#28 (byte) myprintf::bArg#47 (byte) myprintf::bArg#44 (byte) myprintf::bArg#23 (byte) myprintf::bArg#40 (byte) myprintf::bArg#36 (byte) myprintf::bArg#37 (byte) myprintf::bArg#25 (byte) myprintf::bArg#2 (byte) myprintf::bArg#6 (byte) myprintf::bArg#3 (byte) myprintf::bArg#7 (byte) myprintf::bArg#8 (byte) myprintf::bArg#26 -Alias (byte*) myprintf::dst#10 = (byte*) myprintf::dst#30 (byte*) myprintf::dst#2 (byte*) myprintf::dst#29 (byte*) myprintf::dst#40 (byte*) myprintf::dst#36 (byte*) myprintf::dst#35 (byte*) myprintf::dst#24 (byte*) myprintf::dst#32 (byte*) myprintf::dst#11 (byte*) myprintf::dst#33 (byte*) myprintf::dst#3 (byte*) myprintf::dst#41 (byte*) myprintf::dst#50 (byte*) myprintf::dst#47 (byte*) myprintf::dst#37 (byte*) myprintf::dst#25 (byte*) myprintf::dst#12 (byte*) myprintf::dst#13 (byte*) myprintf::dst#20 (byte*) myprintf::dst#48 (byte*) myprintf::dst#43 (byte*) myprintf::dst#49 (byte*) myprintf::dst#44 (byte*) myprintf::dst#45 (byte*) myprintf::dst#21 -Alias (byte) myprintf::bLen#16 = (byte) myprintf::bLen#35 (byte) myprintf::bLen#8 (byte) myprintf::return#0 (byte) myprintf::bLen#34 (byte) myprintf::bLen#45 (byte) myprintf::bLen#41 (byte) myprintf::bLen#40 (byte) myprintf::bLen#29 (byte) myprintf::bLen#37 (byte) myprintf::bLen#17 (byte) myprintf::bLen#38 (byte) myprintf::bLen#9 (byte) myprintf::bLen#46 (byte) myprintf::bLen#55 (byte) myprintf::bLen#52 (byte) myprintf::bLen#42 (byte) myprintf::bLen#30 (byte) myprintf::bLen#18 (byte) myprintf::bLen#19 (byte) myprintf::bLen#26 (byte) myprintf::bLen#53 (byte) myprintf::bLen#48 (byte) myprintf::bLen#54 (byte) myprintf::bLen#49 (byte) myprintf::bLen#50 (byte) myprintf::bLen#27 (byte) myprintf::return#4 (byte) myprintf::return#1 -Alias (word) myprintf::w1#10 = (word) myprintf::w1#5 (word) myprintf::w1#6 (word) myprintf::w1#4 (word) myprintf::w1#15 (word) myprintf::w1#16 (word) myprintf::w1#14 (word) myprintf::w1#17 (word) myprintf::w1#27 (word) myprintf::w1#11 (word) myprintf::w1#22 (word) myprintf::w1#28 (word) myprintf::w1#48 (word) myprintf::w1#45 (word) myprintf::w1#21 (word) myprintf::w1#41 (word) myprintf::w1#37 (word) myprintf::w1#38 (word) myprintf::w1#25 (word) myprintf::w1#3 (word) myprintf::w1#2 (word) myprintf::w#1 (word) myprintf::w1#33 (word) myprintf::w1#23 (word) myprintf::w1#24 (word) myprintf::w1#26 -Alias (word) myprintf::w2#11 = (word) myprintf::w2#6 (word) myprintf::w2#7 (word) myprintf::w2#5 (word) myprintf::w2#16 (word) myprintf::w2#17 (word) myprintf::w2#15 (word) myprintf::w2#18 (word) myprintf::w2#28 (word) myprintf::w2#12 (word) myprintf::w2#23 (word) myprintf::w2#29 (word) myprintf::w2#48 (word) myprintf::w2#45 (word) myprintf::w2#22 (word) myprintf::w2#41 (word) myprintf::w2#37 (word) myprintf::w2#38 (word) myprintf::w2#26 (word) myprintf::w2#4 (word) myprintf::w2#24 (word) myprintf::w2#3 (word) myprintf::w2#2 (word) myprintf::w#2 (word) myprintf::w2#25 (word) myprintf::w2#27 -Alias (word) myprintf::w3#11 = (word) myprintf::w3#6 (word) myprintf::w3#7 (word) myprintf::w3#5 (word) myprintf::w3#16 (word) myprintf::w3#17 (word) myprintf::w3#15 (word) myprintf::w3#18 (word) myprintf::w3#28 (word) myprintf::w3#12 (word) myprintf::w3#23 (word) myprintf::w3#29 (word) myprintf::w3#48 (word) myprintf::w3#45 (word) myprintf::w3#22 (word) myprintf::w3#41 (word) myprintf::w3#37 (word) myprintf::w3#38 (word) myprintf::w3#26 (word) myprintf::w3#4 (word) myprintf::w3#24 (word) myprintf::w3#3 (word) myprintf::w3#25 (word) myprintf::w3#2 (word) myprintf::w#3 (word) myprintf::w3#27 -Alias (word) myprintf::w#10 = (word) myprintf::w#16 (word) myprintf::w#17 (word) myprintf::w#34 (word) myprintf::w#15 (word) myprintf::w#14 (word) myprintf::w#24 (word) myprintf::w#13 (word) myprintf::w#20 (word) myprintf::w#8 (word) myprintf::w#21 (word) myprintf::w#4 (word) myprintf::w#9 (word) myprintf::w#5 (word) myprintf::w#42 (word) myprintf::w#6 (word) myprintf::w#11 (word) myprintf::w#12 (word) myprintf::w#28 (word) myprintf::w#29 -Alias (byte) myprintf::bTrailing#11 = (byte) myprintf::bTrailing#22 (byte) myprintf::bTrailing#23 (byte) myprintf::bTrailing#42 (byte) myprintf::bTrailing#21 (byte) myprintf::bTrailing#20 (byte) myprintf::bTrailing#29 (byte) myprintf::bTrailing#18 (byte) myprintf::bTrailing#26 (byte) myprintf::bTrailing#15 (byte) myprintf::bTrailing#33 (byte) myprintf::bTrailing#13 (byte) myprintf::bTrailing#8 (byte) myprintf::bTrailing#32 (byte) myprintf::bTrailing#47 (byte) myprintf::bTrailing#45 (byte) myprintf::bTrailing#46 (byte) myprintf::bTrailing#37 (byte) myprintf::bTrailing#38 -Alias (byte) myprintf::bDigits#16 = (byte) myprintf::bDigits#26 (byte) myprintf::bDigits#27 (byte) myprintf::bDigits#44 (byte) myprintf::bDigits#25 (byte) myprintf::bDigits#24 (byte) myprintf::bDigits#33 (byte) myprintf::bDigits#23 (byte) myprintf::bDigits#22 (byte) myprintf::bDigits#30 (byte) myprintf::bDigits#36 (byte) myprintf::bDigits#21 (byte) myprintf::bDigits#20 (byte) myprintf::bDigits#35 (byte) myprintf::bDigits#49 (byte) myprintf::bDigits#47 (byte) myprintf::bDigits#48 (byte) myprintf::bDigits#40 (byte) myprintf::bDigits#41 -Alias (byte) myprintf::bLeadZero#11 = (byte) myprintf::bLeadZero#18 (byte) myprintf::bLeadZero#19 (byte) myprintf::bLeadZero#40 (byte) myprintf::bLeadZero#17 (byte) myprintf::bLeadZero#16 (byte) myprintf::bLeadZero#15 (byte) myprintf::bLeadZero#22 (byte) myprintf::bLeadZero#14 (byte) myprintf::bLeadZero#23 (byte) myprintf::bLeadZero#30 (byte) myprintf::bLeadZero#13 (byte) myprintf::bLeadZero#12 (byte) myprintf::bLeadZero#29 (byte) myprintf::bLeadZero#47 (byte) myprintf::bLeadZero#45 (byte) myprintf::bLeadZero#46 (byte) myprintf::bLeadZero#34 (byte) myprintf::bLeadZero#35 -Alias (byte) myprintf::b#1 = (byte) myprintf::b#7 (byte) myprintf::b#8 (byte) myprintf::b#9 (byte) myprintf::b#10 (byte) myprintf::b#11 (byte) myprintf::b#12 (byte) myprintf::b#13 (byte) myprintf::b#14 (byte) myprintf::b#24 (byte) myprintf::b#26 -Alias (byte) myprintf::bDigits#1 = (byte~) myprintf::$9 -Alias (byte) myprintf::b#27 = (byte) myprintf::b#3 (byte~) myprintf::$20 (byte) myprintf::b#28 -Alias (byte) myprintf::b#29 = (byte) myprintf::b#4 (byte~) myprintf::$27 (byte) myprintf::b#30 -Alias (byte*) myprintf::dst#14 = (byte*) myprintf::dst#4 (byte*) myprintf::dst#15 -Alias (byte) myprintf::bLen#2 = (byte) myprintf::bLen#20 (byte) myprintf::bLen#21 -Alias (byte*) myprintf::str#28 = (byte*) myprintf::str#35 (byte*) myprintf::str#29 -Alias (byte) myprintf::bArg#29 = (byte) myprintf::bArg#33 (byte) myprintf::bArg#30 -Alias (word) myprintf::w1#29 = (word) myprintf::w1#34 (word) myprintf::w1#30 -Alias (word) myprintf::w2#30 = (word) myprintf::w2#34 (word) myprintf::w2#31 -Alias (word) myprintf::w3#30 = (word) myprintf::w3#34 (word) myprintf::w3#31 -Alias (word) myprintf::w#30 = (word) myprintf::w#7 (word) myprintf::w#31 -Alias (byte) myprintf::bTrailing#39 = (byte) myprintf::bTrailing#44 (byte) myprintf::bTrailing#40 -Alias (byte) myprintf::bDigits#42 = (byte) myprintf::bDigits#46 (byte) myprintf::bDigits#43 -Alias (byte) myprintf::bLeadZero#36 = (byte) myprintf::bLeadZero#42 (byte) myprintf::bLeadZero#37 -Alias (byte) myprintf::b#17 = (byte) myprintf::b#18 (byte) myprintf::b#19 -Alias (byte) myprintf::bTrailing#3 = (byte) myprintf::bTrailing#7 (byte) myprintf::bTrailing#5 -Alias (byte) myprintf::bDigits#11 = (byte) myprintf::bDigits#15 (byte) myprintf::bDigits#5 -Alias (byte) myprintf::bLeadZero#10 = (byte) myprintf::bLeadZero#7 (byte) myprintf::bLeadZero#5 -Alias (byte*) myprintf::dst#38 = (byte*) myprintf::dst#46 (byte*) myprintf::dst#42 -Alias (byte) myprintf::bLen#43 = (byte) myprintf::bLen#51 (byte) myprintf::bLen#47 -Alias (byte*) myprintf::str#40 = (byte*) myprintf::str#45 (byte*) myprintf::str#43 -Alias (byte) myprintf::bArg#38 = (byte) myprintf::bArg#43 (byte) myprintf::bArg#41 -Alias (word) myprintf::w1#39 = (word) myprintf::w1#44 (word) myprintf::w1#42 -Alias (word) myprintf::w2#39 = (word) myprintf::w2#44 (word) myprintf::w2#42 -Alias (word) myprintf::w3#39 = (word) myprintf::w3#44 (word) myprintf::w3#42 -Alias (word) myprintf::w#37 = (word) myprintf::w#41 (word) myprintf::w#39 -Alias (byte) myprintf::bLeadZero#3 = (byte) myprintf::bLeadZero#4 (byte) myprintf::bLeadZero#8 (byte) myprintf::bLeadZero#9 -Alias (byte*) myprintf::dst#16 = (byte*) myprintf::dst#26 (byte*) myprintf::dst#39 (byte*) myprintf::dst#17 -Alias (byte) myprintf::bLen#22 = (byte) myprintf::bLen#31 (byte) myprintf::bLen#44 (byte) myprintf::bLen#23 -Alias (byte) myprintf::bDigits#12 = (byte) myprintf::bDigits#17 (byte) myprintf::bDigits#6 (byte) myprintf::bDigits#13 -Alias (byte) myprintf::b#20 = (byte) myprintf::b#37 (byte) myprintf::b#35 (byte) myprintf::b#36 -Alias (byte) myprintf::bTrailing#12 = (byte) myprintf::bTrailing#19 (byte) myprintf::bTrailing#16 (byte) myprintf::bTrailing#17 -Alias (byte*) myprintf::str#41 = (byte*) myprintf::str#50 (byte*) myprintf::str#47 (byte*) myprintf::str#48 -Alias (byte) myprintf::bArg#39 = (byte) myprintf::bArg#48 (byte) myprintf::bArg#45 (byte) myprintf::bArg#46 -Alias (word) myprintf::w1#40 = (word) myprintf::w1#49 (word) myprintf::w1#46 (word) myprintf::w1#47 -Alias (word) myprintf::w2#40 = (word) myprintf::w2#49 (word) myprintf::w2#46 (word) myprintf::w2#47 -Alias (word) myprintf::w3#40 = (word) myprintf::w3#49 (word) myprintf::w3#46 (word) myprintf::w3#47 -Alias (word) myprintf::w#38 = (word) myprintf::w#45 (word) myprintf::w#43 (word) myprintf::w#44 -Alias (byte) myprintf::digit#3 = (byte) myprintf::digit#4 -Alias (byte*) myprintf::dst#18 = (byte*) myprintf::dst#7 (byte*) myprintf::dst#28 -Alias (byte) myprintf::bLen#13 = (byte) myprintf::bLen#24 (byte) myprintf::bLen#33 -Alias (byte) myprintf::b#21 = (byte) myprintf::b#33 (byte) myprintf::b#22 -Alias (byte) myprintf::bTrailing#10 = (byte) myprintf::bTrailing#6 (byte) myprintf::bTrailing#4 -Alias (byte) myprintf::bDigits#14 = (byte) myprintf::bDigits#19 (byte) myprintf::bDigits#8 -Alias (byte*) myprintf::str#17 = (byte*) myprintf::str#37 (byte*) myprintf::str#30 -Alias (byte) myprintf::bArg#21 = (byte) myprintf::bArg#35 (byte) myprintf::bArg#31 -Alias (word) myprintf::w1#19 = (word) myprintf::w1#36 (word) myprintf::w1#31 -Alias (word) myprintf::w2#20 = (word) myprintf::w2#36 (word) myprintf::w2#32 -Alias (word) myprintf::w3#20 = (word) myprintf::w3#36 (word) myprintf::w3#32 -Alias (word) myprintf::w#26 = (word) myprintf::w#36 (word) myprintf::w#32 -Alias (byte) myprintf::bLeadZero#27 = (byte) myprintf::bLeadZero#44 (byte) myprintf::bLeadZero#38 -Alias (byte*) myprintf::dst#19 = (byte*) myprintf::dst#8 -Alias (byte) myprintf::bLen#14 = (byte) myprintf::bLen#25 -Alias (byte) myprintf::bDigits#10 = (byte) myprintf::bDigits#9 -Alias (byte) myprintf::b#23 = (byte) myprintf::b#34 -Alias (byte*) myprintf::str#18 = (byte*) myprintf::str#31 -Alias (byte) myprintf::bArg#22 = (byte) myprintf::bArg#32 -Alias (word) myprintf::w1#20 = (word) myprintf::w1#32 -Alias (word) myprintf::w2#21 = (word) myprintf::w2#33 -Alias (word) myprintf::w3#21 = (word) myprintf::w3#33 -Alias (word) myprintf::w#27 = (word) myprintf::w#33 -Alias (byte) myprintf::bTrailing#31 = (byte) myprintf::bTrailing#41 -Alias (byte) myprintf::bLeadZero#28 = (byte) myprintf::bLeadZero#39 -Alias (byte) myprintf::bFormat#14 = (byte) myprintf::bFormat#2 (byte) myprintf::bFormat#20 (byte) myprintf::bFormat#15 (byte) myprintf::bFormat#16 -Alias (byte) myprintf::bTrailing#2 = (byte) myprintf::bTrailing#34 (byte) myprintf::bTrailing#43 (byte) myprintf::bTrailing#35 (byte) myprintf::bTrailing#36 -Alias (byte) myprintf::bDigits#37 = (byte) myprintf::bDigits#4 (byte) myprintf::bDigits#45 (byte) myprintf::bDigits#38 (byte) myprintf::bDigits#39 -Alias (byte) myprintf::bLeadZero#2 = (byte) myprintf::bLeadZero#31 (byte) myprintf::bLeadZero#41 (byte) myprintf::bLeadZero#32 (byte) myprintf::bLeadZero#33 -Alias (word) div10::val#0 = (word~) div10::$1 -Alias (word) div10::return#0 = (word~) div10::$5 (word) div10::return#3 (word) div10::return#1 -Alias (word) main::u#15 = (word) main::u#19 -Alias (word) main::v#12 = (word) main::v#7 (word) main::v#9 -Alias (word) main::u#11 = (word) main::u#5 (word) main::u#16 (word) main::u#6 (word) main::u#12 (word) main::u#7 -Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (word) main::v#1 = (word~) main::$2 -Alias (word) main::v#11 = (word) main::v#3 (word) main::v#5 (word) main::v#14 -Alias (word) myprintf::w3#0 = (word~) main::$6 -Alias (word) main::u#17 = (word) main::u#20 -Alias (word) main::v#10 = (word) main::v#8 -Alias (word) main::u#10 = (word) main::u#8 (word) main::u#13 (word) main::u#18 (word) main::u#9 (word) main::u#14 -Alias (word) div10::return#2 = (word) div10::return#4 -Alias (word) main::v#2 = (word~) main::$11 -Alias (word) main::v#13 = (word) main::v#4 (word) main::v#6 (word) main::v#15 -Alias (word) myprintf::w3#1 = (word~) main::$15 -Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#6 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#7 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#2 = divr16u::dividend#6 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#3 = divr16u::divisor#4 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#5 = divr16u::rem#7 +Alias divr16u::divisor#1 = divr16u::divisor#2 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#3 divr16u::return#1 +Alias divr16u::return#2 = divr16u::return#4 +Alias div16u::return#0 = div16u::$0 div16u::return#3 div16u::return#1 +Alias append::dst#5 = append::dst#6 +Alias append::value#5 = append::value#6 append::value#7 append::return#0 append::return#6 append::return#1 +Alias append::sub#4 = append::sub#5 +Alias utoa::dst#15 = utoa::dst#6 utoa::dst#7 +Alias utoa::value#5 = utoa::value#7 +Alias append::return#2 = append::return#7 +Alias utoa::value#0 = utoa::$18 +Alias utoa::dst#16 = utoa::dst#8 utoa::dst#9 +Alias utoa::value#6 = utoa::value#9 +Alias append::return#3 = append::return#8 +Alias utoa::value#1 = utoa::$19 +Alias utoa::dst#10 = utoa::dst#17 utoa::dst#11 +Alias utoa::value#11 = utoa::value#8 +Alias append::return#4 = append::return#9 +Alias utoa::value#2 = utoa::$20 +Alias utoa::dst#13 = utoa::dst#18 utoa::dst#14 +Alias utoa::value#10 = utoa::value#13 +Alias append::return#10 = append::return#5 +Alias utoa::value#3 = utoa::$21 +Alias myprintf::str#12 = myprintf::str#4 myprintf::str#3 myprintf::str#32 myprintf::str#13 myprintf::str#14 myprintf::str#15 myprintf::str#8 myprintf::str#26 myprintf::str#9 myprintf::str#20 myprintf::str#27 myprintf::str#49 myprintf::str#46 myprintf::str#19 myprintf::str#42 myprintf::str#38 myprintf::str#39 myprintf::str#24 myprintf::str#33 myprintf::str#21 myprintf::str#34 myprintf::str#22 myprintf::str#23 myprintf::str#25 +Alias myprintf::bFormat#10 = myprintf::bFormat#3 myprintf::bFormat#4 myprintf::bFormat#19 myprintf::bFormat#11 myprintf::bFormat#12 myprintf::bFormat#13 myprintf::bFormat#6 myprintf::bFormat#7 myprintf::bFormat#17 myprintf::bFormat#18 +Alias myprintf::bArg#10 = myprintf::bArg#9 myprintf::bArg#5 myprintf::bArg#17 myprintf::bArg#18 myprintf::bArg#16 myprintf::bArg#19 myprintf::bArg#13 myprintf::bArg#27 myprintf::bArg#14 myprintf::bArg#24 myprintf::bArg#28 myprintf::bArg#47 myprintf::bArg#44 myprintf::bArg#23 myprintf::bArg#40 myprintf::bArg#36 myprintf::bArg#37 myprintf::bArg#25 myprintf::bArg#2 myprintf::bArg#6 myprintf::bArg#3 myprintf::bArg#7 myprintf::bArg#8 myprintf::bArg#26 +Alias myprintf::dst#10 = myprintf::dst#30 myprintf::dst#2 myprintf::dst#29 myprintf::dst#40 myprintf::dst#36 myprintf::dst#35 myprintf::dst#24 myprintf::dst#32 myprintf::dst#11 myprintf::dst#33 myprintf::dst#3 myprintf::dst#41 myprintf::dst#50 myprintf::dst#47 myprintf::dst#37 myprintf::dst#25 myprintf::dst#12 myprintf::dst#13 myprintf::dst#20 myprintf::dst#48 myprintf::dst#43 myprintf::dst#49 myprintf::dst#44 myprintf::dst#45 myprintf::dst#21 +Alias myprintf::bLen#16 = myprintf::bLen#35 myprintf::bLen#8 myprintf::return#0 myprintf::bLen#34 myprintf::bLen#45 myprintf::bLen#41 myprintf::bLen#40 myprintf::bLen#29 myprintf::bLen#37 myprintf::bLen#17 myprintf::bLen#38 myprintf::bLen#9 myprintf::bLen#46 myprintf::bLen#55 myprintf::bLen#52 myprintf::bLen#42 myprintf::bLen#30 myprintf::bLen#18 myprintf::bLen#19 myprintf::bLen#26 myprintf::bLen#53 myprintf::bLen#48 myprintf::bLen#54 myprintf::bLen#49 myprintf::bLen#50 myprintf::bLen#27 myprintf::return#4 myprintf::return#1 +Alias myprintf::w1#10 = myprintf::w1#5 myprintf::w1#6 myprintf::w1#4 myprintf::w1#15 myprintf::w1#16 myprintf::w1#14 myprintf::w1#17 myprintf::w1#27 myprintf::w1#11 myprintf::w1#22 myprintf::w1#28 myprintf::w1#48 myprintf::w1#45 myprintf::w1#21 myprintf::w1#41 myprintf::w1#37 myprintf::w1#38 myprintf::w1#25 myprintf::w1#3 myprintf::w1#2 myprintf::w#1 myprintf::w1#33 myprintf::w1#23 myprintf::w1#24 myprintf::w1#26 +Alias myprintf::w2#11 = myprintf::w2#6 myprintf::w2#7 myprintf::w2#5 myprintf::w2#16 myprintf::w2#17 myprintf::w2#15 myprintf::w2#18 myprintf::w2#28 myprintf::w2#12 myprintf::w2#23 myprintf::w2#29 myprintf::w2#48 myprintf::w2#45 myprintf::w2#22 myprintf::w2#41 myprintf::w2#37 myprintf::w2#38 myprintf::w2#26 myprintf::w2#4 myprintf::w2#24 myprintf::w2#3 myprintf::w2#2 myprintf::w#2 myprintf::w2#25 myprintf::w2#27 +Alias myprintf::w3#11 = myprintf::w3#6 myprintf::w3#7 myprintf::w3#5 myprintf::w3#16 myprintf::w3#17 myprintf::w3#15 myprintf::w3#18 myprintf::w3#28 myprintf::w3#12 myprintf::w3#23 myprintf::w3#29 myprintf::w3#48 myprintf::w3#45 myprintf::w3#22 myprintf::w3#41 myprintf::w3#37 myprintf::w3#38 myprintf::w3#26 myprintf::w3#4 myprintf::w3#24 myprintf::w3#3 myprintf::w3#25 myprintf::w3#2 myprintf::w#3 myprintf::w3#27 +Alias myprintf::w#10 = myprintf::w#16 myprintf::w#17 myprintf::w#34 myprintf::w#15 myprintf::w#14 myprintf::w#24 myprintf::w#13 myprintf::w#20 myprintf::w#8 myprintf::w#21 myprintf::w#4 myprintf::w#9 myprintf::w#5 myprintf::w#42 myprintf::w#6 myprintf::w#11 myprintf::w#12 myprintf::w#28 myprintf::w#29 +Alias myprintf::bTrailing#11 = myprintf::bTrailing#22 myprintf::bTrailing#23 myprintf::bTrailing#42 myprintf::bTrailing#21 myprintf::bTrailing#20 myprintf::bTrailing#29 myprintf::bTrailing#18 myprintf::bTrailing#26 myprintf::bTrailing#15 myprintf::bTrailing#33 myprintf::bTrailing#13 myprintf::bTrailing#8 myprintf::bTrailing#32 myprintf::bTrailing#47 myprintf::bTrailing#45 myprintf::bTrailing#46 myprintf::bTrailing#37 myprintf::bTrailing#38 +Alias myprintf::bDigits#16 = myprintf::bDigits#26 myprintf::bDigits#27 myprintf::bDigits#44 myprintf::bDigits#25 myprintf::bDigits#24 myprintf::bDigits#33 myprintf::bDigits#23 myprintf::bDigits#22 myprintf::bDigits#30 myprintf::bDigits#36 myprintf::bDigits#21 myprintf::bDigits#20 myprintf::bDigits#35 myprintf::bDigits#49 myprintf::bDigits#47 myprintf::bDigits#48 myprintf::bDigits#40 myprintf::bDigits#41 +Alias myprintf::bLeadZero#11 = myprintf::bLeadZero#18 myprintf::bLeadZero#19 myprintf::bLeadZero#40 myprintf::bLeadZero#17 myprintf::bLeadZero#16 myprintf::bLeadZero#15 myprintf::bLeadZero#22 myprintf::bLeadZero#14 myprintf::bLeadZero#23 myprintf::bLeadZero#30 myprintf::bLeadZero#13 myprintf::bLeadZero#12 myprintf::bLeadZero#29 myprintf::bLeadZero#47 myprintf::bLeadZero#45 myprintf::bLeadZero#46 myprintf::bLeadZero#34 myprintf::bLeadZero#35 +Alias myprintf::b#1 = myprintf::b#7 myprintf::b#8 myprintf::b#9 myprintf::b#10 myprintf::b#11 myprintf::b#12 myprintf::b#13 myprintf::b#14 myprintf::b#24 myprintf::b#26 +Alias myprintf::bDigits#1 = myprintf::$9 +Alias myprintf::b#27 = myprintf::b#3 myprintf::$20 myprintf::b#28 +Alias myprintf::b#29 = myprintf::b#4 myprintf::$27 myprintf::b#30 +Alias myprintf::dst#14 = myprintf::dst#4 myprintf::dst#15 +Alias myprintf::bLen#2 = myprintf::bLen#20 myprintf::bLen#21 +Alias myprintf::str#28 = myprintf::str#35 myprintf::str#29 +Alias myprintf::bArg#29 = myprintf::bArg#33 myprintf::bArg#30 +Alias myprintf::w1#29 = myprintf::w1#34 myprintf::w1#30 +Alias myprintf::w2#30 = myprintf::w2#34 myprintf::w2#31 +Alias myprintf::w3#30 = myprintf::w3#34 myprintf::w3#31 +Alias myprintf::w#30 = myprintf::w#7 myprintf::w#31 +Alias myprintf::bTrailing#39 = myprintf::bTrailing#44 myprintf::bTrailing#40 +Alias myprintf::bDigits#42 = myprintf::bDigits#46 myprintf::bDigits#43 +Alias myprintf::bLeadZero#36 = myprintf::bLeadZero#42 myprintf::bLeadZero#37 +Alias myprintf::b#17 = myprintf::b#18 myprintf::b#19 +Alias myprintf::bTrailing#3 = myprintf::bTrailing#7 myprintf::bTrailing#5 +Alias myprintf::bDigits#11 = myprintf::bDigits#15 myprintf::bDigits#5 +Alias myprintf::bLeadZero#10 = myprintf::bLeadZero#7 myprintf::bLeadZero#5 +Alias myprintf::dst#38 = myprintf::dst#46 myprintf::dst#42 +Alias myprintf::bLen#43 = myprintf::bLen#51 myprintf::bLen#47 +Alias myprintf::str#40 = myprintf::str#45 myprintf::str#43 +Alias myprintf::bArg#38 = myprintf::bArg#43 myprintf::bArg#41 +Alias myprintf::w1#39 = myprintf::w1#44 myprintf::w1#42 +Alias myprintf::w2#39 = myprintf::w2#44 myprintf::w2#42 +Alias myprintf::w3#39 = myprintf::w3#44 myprintf::w3#42 +Alias myprintf::w#37 = myprintf::w#41 myprintf::w#39 +Alias myprintf::bLeadZero#3 = myprintf::bLeadZero#4 myprintf::bLeadZero#8 myprintf::bLeadZero#9 +Alias myprintf::dst#16 = myprintf::dst#26 myprintf::dst#39 myprintf::dst#17 +Alias myprintf::bLen#22 = myprintf::bLen#31 myprintf::bLen#44 myprintf::bLen#23 +Alias myprintf::bDigits#12 = myprintf::bDigits#17 myprintf::bDigits#6 myprintf::bDigits#13 +Alias myprintf::b#20 = myprintf::b#37 myprintf::b#35 myprintf::b#36 +Alias myprintf::bTrailing#12 = myprintf::bTrailing#19 myprintf::bTrailing#16 myprintf::bTrailing#17 +Alias myprintf::str#41 = myprintf::str#50 myprintf::str#47 myprintf::str#48 +Alias myprintf::bArg#39 = myprintf::bArg#48 myprintf::bArg#45 myprintf::bArg#46 +Alias myprintf::w1#40 = myprintf::w1#49 myprintf::w1#46 myprintf::w1#47 +Alias myprintf::w2#40 = myprintf::w2#49 myprintf::w2#46 myprintf::w2#47 +Alias myprintf::w3#40 = myprintf::w3#49 myprintf::w3#46 myprintf::w3#47 +Alias myprintf::w#38 = myprintf::w#45 myprintf::w#43 myprintf::w#44 +Alias myprintf::digit#3 = myprintf::digit#4 +Alias myprintf::dst#18 = myprintf::dst#7 myprintf::dst#28 +Alias myprintf::bLen#13 = myprintf::bLen#24 myprintf::bLen#33 +Alias myprintf::b#21 = myprintf::b#33 myprintf::b#22 +Alias myprintf::bTrailing#10 = myprintf::bTrailing#6 myprintf::bTrailing#4 +Alias myprintf::bDigits#14 = myprintf::bDigits#19 myprintf::bDigits#8 +Alias myprintf::str#17 = myprintf::str#37 myprintf::str#30 +Alias myprintf::bArg#21 = myprintf::bArg#35 myprintf::bArg#31 +Alias myprintf::w1#19 = myprintf::w1#36 myprintf::w1#31 +Alias myprintf::w2#20 = myprintf::w2#36 myprintf::w2#32 +Alias myprintf::w3#20 = myprintf::w3#36 myprintf::w3#32 +Alias myprintf::w#26 = myprintf::w#36 myprintf::w#32 +Alias myprintf::bLeadZero#27 = myprintf::bLeadZero#44 myprintf::bLeadZero#38 +Alias myprintf::dst#19 = myprintf::dst#8 +Alias myprintf::bLen#14 = myprintf::bLen#25 +Alias myprintf::bDigits#10 = myprintf::bDigits#9 +Alias myprintf::b#23 = myprintf::b#34 +Alias myprintf::str#18 = myprintf::str#31 +Alias myprintf::bArg#22 = myprintf::bArg#32 +Alias myprintf::w1#20 = myprintf::w1#32 +Alias myprintf::w2#21 = myprintf::w2#33 +Alias myprintf::w3#21 = myprintf::w3#33 +Alias myprintf::w#27 = myprintf::w#33 +Alias myprintf::bTrailing#31 = myprintf::bTrailing#41 +Alias myprintf::bLeadZero#28 = myprintf::bLeadZero#39 +Alias myprintf::bFormat#14 = myprintf::bFormat#2 myprintf::bFormat#20 myprintf::bFormat#15 myprintf::bFormat#16 +Alias myprintf::bTrailing#2 = myprintf::bTrailing#34 myprintf::bTrailing#43 myprintf::bTrailing#35 myprintf::bTrailing#36 +Alias myprintf::bDigits#37 = myprintf::bDigits#4 myprintf::bDigits#45 myprintf::bDigits#38 myprintf::bDigits#39 +Alias myprintf::bLeadZero#2 = myprintf::bLeadZero#31 myprintf::bLeadZero#41 myprintf::bLeadZero#32 myprintf::bLeadZero#33 +Alias div10::val#0 = div10::$1 +Alias div10::return#0 = div10::$5 div10::return#3 div10::return#1 +Alias main::u#15 = main::u#19 +Alias main::v#12 = main::v#7 main::v#9 +Alias main::u#11 = main::u#5 main::u#16 main::u#6 main::u#12 main::u#7 +Alias div16u::return#2 = div16u::return#4 +Alias main::v#1 = main::$2 +Alias main::v#11 = main::v#3 main::v#5 main::v#14 +Alias myprintf::w3#0 = main::$6 +Alias main::u#17 = main::u#20 +Alias main::v#10 = main::v#8 +Alias main::u#10 = main::u#8 main::u#13 main::u#18 main::u#9 main::u#14 +Alias div10::return#2 = div10::return#4 +Alias main::v#2 = main::$11 +Alias main::v#13 = main::v#4 main::v#6 main::v#15 +Alias myprintf::w3#1 = main::$15 +Alias main::return#0 = main::return#3 main::return#1 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (word) myprintf::w1#10 = (word) myprintf::w1#29 (word) myprintf::w1#18 (word) myprintf::w1#12 (word) myprintf::w1#13 -Alias candidate removed (phi-usage) (word) myprintf::w2#11 = (word) myprintf::w2#30 (word) myprintf::w2#19 (word) myprintf::w2#13 (word) myprintf::w2#14 -Alias candidate removed (phi-usage) (word) myprintf::w3#11 = (word) myprintf::w3#30 (word) myprintf::w3#19 (word) myprintf::w3#13 (word) myprintf::w3#14 -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 -Alias (byte) myprintf::b#15 = (byte) myprintf::b#27 -Alias (byte*) myprintf::dst#10 = (byte*) myprintf::dst#14 (byte*) myprintf::dst#5 (byte*) myprintf::dst#34 (byte*) myprintf::dst#9 -Alias (byte) myprintf::bLen#10 = (byte) myprintf::bLen#16 (byte) myprintf::bLen#39 (byte) myprintf::bLen#15 -Alias (word) myprintf::w#10 = (word) myprintf::w#30 (word) myprintf::w#25 (word) myprintf::w#23 -Alias (byte*) myprintf::str#10 = (byte*) myprintf::str#28 (byte*) myprintf::str#12 (byte*) myprintf::str#16 (byte*) myprintf::str#11 -Alias (byte) myprintf::bArg#10 = (byte) myprintf::bArg#29 (byte) myprintf::bArg#20 (byte) myprintf::bArg#4 (byte) myprintf::bArg#15 -Alias (byte) myprintf::bTrailing#11 = (byte) myprintf::bTrailing#39 (byte) myprintf::bTrailing#30 (byte) myprintf::bTrailing#28 -Alias (byte) myprintf::bDigits#16 = (byte) myprintf::bDigits#42 (byte) myprintf::bDigits#34 (byte) myprintf::bDigits#32 -Alias (byte) myprintf::bLeadZero#11 = (byte) myprintf::bLeadZero#36 (byte) myprintf::bLeadZero#26 (byte) myprintf::bLeadZero#25 -Alias (byte) myprintf::b#16 = (byte) myprintf::b#29 -Alias (byte) myprintf::bLen#11 = (byte) myprintf::bLen#2 -Alias (byte*) myprintf::dst#16 = (byte*) myprintf::dst#6 -Alias (byte) myprintf::bLen#12 = (byte) myprintf::bLen#22 -Alias (byte) myprintf::bDigits#12 = (byte) myprintf::bDigits#7 -Alias (byte) myprintf::b#20 = (byte) myprintf::b#31 -Alias (byte) myprintf::bLeadZero#3 = (byte) myprintf::bLeadZero#6 -Alias (byte) myprintf::bTrailing#12 = (byte) myprintf::bTrailing#14 -Alias (byte*) myprintf::str#41 = (byte*) myprintf::str#44 -Alias (byte) myprintf::bArg#39 = (byte) myprintf::bArg#42 -Alias (word) myprintf::w1#40 = (word) myprintf::w1#43 -Alias (word) myprintf::w2#40 = (word) myprintf::w2#43 -Alias (word) myprintf::w3#40 = (word) myprintf::w3#43 -Alias (word) myprintf::w#38 = (word) myprintf::w#40 -Alias (byte) myprintf::bFormat#14 = (byte) myprintf::bFormat#8 -Alias (byte) myprintf::bTrailing#2 = (byte) myprintf::bTrailing#27 -Alias (byte) myprintf::bDigits#31 = (byte) myprintf::bDigits#37 -Alias (byte) myprintf::bLeadZero#2 = (byte) myprintf::bLeadZero#24 -Alias (byte) myprintf::bFormat#10 = (byte) myprintf::bFormat#9 +Alias candidate removed (phi-usage) myprintf::w1#10 = myprintf::w1#29 myprintf::w1#18 myprintf::w1#12 myprintf::w1#13 +Alias candidate removed (phi-usage) myprintf::w2#11 = myprintf::w2#30 myprintf::w2#19 myprintf::w2#13 myprintf::w2#14 +Alias candidate removed (phi-usage) myprintf::w3#11 = myprintf::w3#30 myprintf::w3#19 myprintf::w3#13 myprintf::w3#14 +Alias divr16u::dividend#2 = divr16u::dividend#3 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#1 = divr16u::divisor#3 divr16u::divisor#6 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#5 +Alias myprintf::b#15 = myprintf::b#27 +Alias myprintf::dst#10 = myprintf::dst#14 myprintf::dst#5 myprintf::dst#34 myprintf::dst#9 +Alias myprintf::bLen#10 = myprintf::bLen#16 myprintf::bLen#39 myprintf::bLen#15 +Alias myprintf::w#10 = myprintf::w#30 myprintf::w#25 myprintf::w#23 +Alias myprintf::str#10 = myprintf::str#28 myprintf::str#12 myprintf::str#16 myprintf::str#11 +Alias myprintf::bArg#10 = myprintf::bArg#29 myprintf::bArg#20 myprintf::bArg#4 myprintf::bArg#15 +Alias myprintf::bTrailing#11 = myprintf::bTrailing#39 myprintf::bTrailing#30 myprintf::bTrailing#28 +Alias myprintf::bDigits#16 = myprintf::bDigits#42 myprintf::bDigits#34 myprintf::bDigits#32 +Alias myprintf::bLeadZero#11 = myprintf::bLeadZero#36 myprintf::bLeadZero#26 myprintf::bLeadZero#25 +Alias myprintf::b#16 = myprintf::b#29 +Alias myprintf::bLen#11 = myprintf::bLen#2 +Alias myprintf::dst#16 = myprintf::dst#6 +Alias myprintf::bLen#12 = myprintf::bLen#22 +Alias myprintf::bDigits#12 = myprintf::bDigits#7 +Alias myprintf::b#20 = myprintf::b#31 +Alias myprintf::bLeadZero#3 = myprintf::bLeadZero#6 +Alias myprintf::bTrailing#12 = myprintf::bTrailing#14 +Alias myprintf::str#41 = myprintf::str#44 +Alias myprintf::bArg#39 = myprintf::bArg#42 +Alias myprintf::w1#40 = myprintf::w1#43 +Alias myprintf::w2#40 = myprintf::w2#43 +Alias myprintf::w3#40 = myprintf::w3#43 +Alias myprintf::w#38 = myprintf::w#40 +Alias myprintf::bFormat#14 = myprintf::bFormat#8 +Alias myprintf::bTrailing#2 = myprintf::bTrailing#27 +Alias myprintf::bDigits#31 = myprintf::bDigits#37 +Alias myprintf::bLeadZero#2 = myprintf::bLeadZero#24 +Alias myprintf::bFormat#10 = myprintf::bFormat#9 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (word) myprintf::w1#10 = (word) myprintf::w1#29 (word) myprintf::w1#18 (word) myprintf::w1#12 (word) myprintf::w1#13 -Alias candidate removed (phi-usage) (word) myprintf::w2#11 = (word) myprintf::w2#30 (word) myprintf::w2#19 (word) myprintf::w2#13 (word) myprintf::w2#14 -Alias candidate removed (phi-usage) (word) myprintf::w3#11 = (word) myprintf::w3#30 (word) myprintf::w3#19 (word) myprintf::w3#13 (word) myprintf::w3#14 +Alias candidate removed (phi-usage) myprintf::w1#10 = myprintf::w1#29 myprintf::w1#18 myprintf::w1#12 myprintf::w1#13 +Alias candidate removed (phi-usage) myprintf::w2#11 = myprintf::w2#30 myprintf::w2#19 myprintf::w2#13 myprintf::w2#14 +Alias candidate removed (phi-usage) myprintf::w3#11 = myprintf::w3#30 myprintf::w3#19 myprintf::w3#13 myprintf::w3#14 Identical Phi Values (word) divr16u::rem#8 (word) divr16u::rem#3 Identical Phi Values (word) divr16u::dividend#4 (word) divr16u::dividend#1 Identical Phi Values (word) divr16u::divisor#5 (word) divr16u::divisor#0 @@ -3990,201 +3990,201 @@ VARIABLE REGISTER WEIGHTS (void()) Print() (word()) append((byte*) append::dst , (word) append::value , (word) append::sub) (byte*) append::dst -(byte*) append::dst#1 2.0 -(byte*) append::dst#2 2.0 -(byte*) append::dst#3 2.0 -(byte*) append::dst#4 335.0 +(byte*) append::dst#1 1000001.0 +(byte*) append::dst#2 1000001.0 +(byte*) append::dst#3 1000001.0 +(byte*) append::dst#4 3.335500001E9 (word) append::return -(word) append::return#10 4.0 -(word) append::return#2 4.0 -(word) append::return#3 4.0 -(word) append::return#4 4.0 +(word) append::return#10 2000002.0 +(word) append::return#2 2000002.0 +(word) append::return#3 2000002.0 +(word) append::return#4 2000002.0 (word) append::sub -(word) append::sub#6 333.6666666666667 +(word) append::sub#6 3.3333333336666665E9 (word) append::value -(word) append::value#0 2002.0 -(word) append::value#1 4.0 -(word) append::value#2 4.0 -(word) append::value#3 4.0 -(word) append::value#4 4.0 -(word) append::value#5 376.625 -(word) append::value#8 5.0 +(word) append::value#0 2.0000000002E10 +(word) append::value#1 2000002.0 +(word) append::value#2 2000002.0 +(word) append::value#3 2000002.0 +(word) append::value#4 2000002.0 +(word) append::value#5 3.751750001E9 +(word) append::value#8 7000002.5 (word()) div10((word) div10::val) -(word~) div10::$0 4.0 -(word~) div10::$2 4.0 -(word~) div10::$3 4.0 -(word~) div10::$4 4.0 +(word~) div10::$0 20002.0 +(word~) div10::$2 20002.0 +(word~) div10::$3 20002.0 +(word~) div10::$4 20002.0 (word) div10::return -(word) div10::return#0 34.33333333333333 -(word) div10::return#2 202.0 +(word) div10::return#0 3667.333333333333 +(word) div10::return#2 2002.0 (word) div10::val -(word) div10::val#0 3.0 -(word) div10::val#1 3.0 -(word) div10::val#2 3.0 -(word) div10::val#3 4.0 -(word) div10::val#4 103.0 +(word) div10::val#0 15001.5 +(word) div10::val#1 15001.5 +(word) div10::val#2 15001.5 +(word) div10::val#3 20002.0 +(word) div10::val#4 11002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word) div16u::dividend -(word) div16u::dividend#0 103.0 +(word) div16u::dividend#0 11002.0 (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 34.33333333333333 -(word) div16u::return#2 202.0 +(word) div16u::return#0 3667.333333333333 +(word) div16u::return#2 2002.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 2002.0 -(byte~) divr16u::$2 2002.0 +(byte~) divr16u::$1 2.00000002E8 +(byte~) divr16u::$2 2.00000002E8 (word) divr16u::dividend -(word) divr16u::dividend#0 250.25 -(word) divr16u::dividend#1 2.0 -(word) divr16u::dividend#2 429.2857142857143 +(word) divr16u::dividend#0 2.500000025E7 +(word) divr16u::dividend#1 55001.0 +(word) divr16u::dividend#2 4.287142914285715E7 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 1501.5 -(byte) divr16u::i#2 154.0 +(byte) divr16u::i#1 1.500000015E8 +(byte) divr16u::i#2 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 1501.5 -(word) divr16u::quotient#2 1001.0 -(word) divr16u::quotient#3 250.25 +(word) divr16u::quotient#1 1.500000015E8 +(word) divr16u::quotient#2 1.00000001E8 +(word) divr16u::quotient#3 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 750.75 -(word) divr16u::rem#1 2002.0 -(word) divr16u::rem#2 2002.0 -(word) divr16u::rem#4 2002.0 -(word) divr16u::rem#5 1001.0 -(word) divr16u::rem#9 1001.0 +(word) divr16u::rem#0 7.500000075E7 +(word) divr16u::rem#1 2.00000002E8 +(word) divr16u::rem#2 2.00000002E8 +(word) divr16u::rem#4 2.00000002E8 +(word) divr16u::rem#5 1.00000001E8 +(word) divr16u::rem#9 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 601.0 -(word) divr16u::return#2 4.0 +(word) divr16u::return#0 6.00020008E7 +(word) divr16u::return#2 20002.0 (signed word()) main() -(word~) main::$12 22.0 -(word~) main::$13 11.0 -(word~) main::$14 22.0 -(word~) main::$3 22.0 -(word~) main::$4 11.0 -(word~) main::$5 22.0 +(word~) main::$12 202.0 +(word~) main::$13 101.0 +(word~) main::$14 202.0 +(word~) main::$3 202.0 +(word~) main::$4 101.0 +(word~) main::$5 202.0 (signed word) main::return (word) main::u -(word) main::u#15 6.380952380952381 -(word) main::u#17 6.380952380952381 -(word) main::u#3 11.0 -(word) main::u#4 11.0 +(word) main::u#15 62.09523809523809 +(word) main::u#17 62.09523809523809 +(word) main::u#3 101.0 +(word) main::u#4 101.0 (word) main::v -(word) main::v#1 101.0 -(word) main::v#10 4.800000000000001 -(word) main::v#11 10.307692307692308 -(word) main::v#12 4.0 -(word) main::v#13 10.307692307692308 -(word) main::v#2 101.0 +(word) main::v#1 1001.0 +(word) main::v#10 42.599999999999994 +(word) main::v#11 100.3076923076923 +(word) main::v#12 35.5 +(word) main::v#13 100.3076923076923 +(word) main::v#2 1001.0 (byte()) myprintf((byte*) myprintf::dst , (byte*) myprintf::str , (word) myprintf::w1 , (word) myprintf::w2 , (word) myprintf::w3) -(byte~) myprintf::$18 202.0 -(byte~) myprintf::$19 202.0 -(byte~) myprintf::$24 101.0 -(byte~) myprintf::$25 202.0 -(byte~) myprintf::$26 202.0 -(byte~) myprintf::$31 101.0 -(byte~) myprintf::$32 202.0 -(byte~) myprintf::$43 1001.0 -(byte~) myprintf::$50 202.0 +(byte~) myprintf::$18 200002.0 +(byte~) myprintf::$19 200002.0 +(byte~) myprintf::$24 100001.0 +(byte~) myprintf::$25 200002.0 +(byte~) myprintf::$26 200002.0 +(byte~) myprintf::$31 100001.0 +(byte~) myprintf::$32 200002.0 +(byte~) myprintf::$43 1000001.0 +(byte~) myprintf::$50 200002.0 (byte) myprintf::b -(byte) myprintf::b#1 126.25000000000003 -(byte) myprintf::b#15 75.75 -(byte) myprintf::b#16 75.75 -(byte) myprintf::b#17 248.31999999999996 -(byte) myprintf::b#25 303.0 -(byte) myprintf::b#5 2002.0 -(byte) myprintf::b#6 202.0 +(byte) myprintf::b#1 125001.25000000003 +(byte) myprintf::b#15 75000.75 +(byte) myprintf::b#16 75000.75 +(byte) myprintf::b#17 248000.32000000004 +(byte) myprintf::b#25 300003.0 +(byte) myprintf::b#5 2000002.0 +(byte) myprintf::b#6 200002.0 (byte) myprintf::bArg -(byte) myprintf::bArg#1 202.0 -(byte) myprintf::bArg#10 12.120000000000001 -(byte) myprintf::bArg#11 353.5 +(byte) myprintf::bArg#1 200002.0 +(byte) myprintf::bArg#10 12000.119999999999 +(byte) myprintf::bArg#11 350003.5 (byte) myprintf::bDigits -(byte) myprintf::bDigits#1 202.0 -(byte) myprintf::bDigits#10 1026.25 -(byte) myprintf::bDigits#12 586.4285714285714 -(byte) myprintf::bDigits#16 21.956521739130434 -(byte) myprintf::bDigits#18 175.625 -(byte) myprintf::bDigits#2 2002.0 -(byte) myprintf::bDigits#28 303.0 -(byte) myprintf::bDigits#29 1506.0 -(byte) myprintf::bDigits#3 2002.0 +(byte) myprintf::bDigits#1 200002.0 +(byte) myprintf::bDigits#10 1025001.25 +(byte) myprintf::bDigits#12 585714.9999999999 +(byte) myprintf::bDigits#16 21739.347826086956 +(byte) myprintf::bDigits#18 175000.625 +(byte) myprintf::bDigits#2 2000002.0 +(byte) myprintf::bDigits#28 300003.0 +(byte) myprintf::bDigits#29 1500006.0 +(byte) myprintf::bDigits#3 2000002.0 (byte) myprintf::bFormat -(byte) myprintf::bFormat#10 37.875 -(byte) myprintf::bFormat#5 252.5 +(byte) myprintf::bFormat#10 37500.375 +(byte) myprintf::bFormat#5 250002.5 (byte) myprintf::bLeadZero -(byte) myprintf::bLeadZero#11 21.82608695652174 -(byte) myprintf::bLeadZero#20 252.5 +(byte) myprintf::bLeadZero#11 21739.217391304348 +(byte) myprintf::bLeadZero#20 250002.5 (byte) myprintf::bLen -(byte) myprintf::bLen#1 202.0 -(byte) myprintf::bLen#10 32.93023255813953 -(byte) myprintf::bLen#11 37.875 -(byte) myprintf::bLen#12 684.1666666666667 -(byte) myprintf::bLen#13 661.2 -(byte) myprintf::bLen#14 1368.3333333333335 -(byte) myprintf::bLen#28 353.5 -(byte) myprintf::bLen#3 202.0 -(byte) myprintf::bLen#32 1203.0 -(byte) myprintf::bLen#36 1506.0 -(byte) myprintf::bLen#4 1001.0 -(byte) myprintf::bLen#5 1001.0 -(byte) myprintf::bLen#6 1001.0 -(byte) myprintf::bLen#7 202.0 +(byte) myprintf::bLen#1 200002.0 +(byte) myprintf::bLen#10 32581.744186046504 +(byte) myprintf::bLen#11 37500.375 +(byte) myprintf::bLen#12 683334.1666666667 +(byte) myprintf::bLen#13 660001.2 +(byte) myprintf::bLen#14 1366668.3333333335 +(byte) myprintf::bLen#28 350003.5 +(byte) myprintf::bLen#3 200002.0 +(byte) myprintf::bLen#32 1200003.0 +(byte) myprintf::bLen#36 1500006.0 +(byte) myprintf::bLen#4 1000001.0 +(byte) myprintf::bLen#5 1000001.0 +(byte) myprintf::bLen#6 1000001.0 +(byte) myprintf::bLen#7 200002.0 (byte) myprintf::bTrailing -(byte) myprintf::bTrailing#11 10.246376811594203 -(byte) myprintf::bTrailing#24 252.5 +(byte) myprintf::bTrailing#11 10145.028985507246 +(byte) myprintf::bTrailing#24 250002.5 (byte) myprintf::digit -(byte) myprintf::digit#2 2002.0 -(byte) myprintf::digit#3 1001.0 +(byte) myprintf::digit#2 2000002.0 +(byte) myprintf::digit#3 1000001.0 (byte*) myprintf::dst (byte) myprintf::return (byte*) myprintf::str -(byte*) myprintf::str#0 202.0 -(byte*) myprintf::str#10 5.272727272727273 -(byte*) myprintf::str#6 2.0 +(byte*) myprintf::str#0 200002.0 +(byte*) myprintf::str#10 5207.857142857143 +(byte*) myprintf::str#6 1001.0 (word) myprintf::w -(word) myprintf::w#10 10.246376811594203 -(word) myprintf::w#18 353.5 -(word) myprintf::w#22 202.0 -(word) myprintf::w#53 202.0 -(word) myprintf::w#54 202.0 -(word) myprintf::w#55 202.0 +(word) myprintf::w#10 10145.028985507246 +(word) myprintf::w#18 350003.5 +(word) myprintf::w#22 200002.0 +(word) myprintf::w#53 200002.0 +(word) myprintf::w#54 200002.0 +(word) myprintf::w#55 200002.0 (word) myprintf::w1 -(word) myprintf::w1#0 11.0 -(word) myprintf::w1#1 11.0 -(word) myprintf::w1#7 1.5569620253164556 +(word) myprintf::w1#0 101.0 +(word) myprintf::w1#1 101.0 +(word) myprintf::w1#7 1268.392405063291 (word) myprintf::w2 -(word) myprintf::w2#0 22.0 -(word) myprintf::w2#1 22.0 -(word) myprintf::w2#8 1.5569620253164556 +(word) myprintf::w2#0 202.0 +(word) myprintf::w2#1 202.0 +(word) myprintf::w2#8 1268.392405063291 (word) myprintf::w3 -(word) myprintf::w3#0 7.333333333333333 -(word) myprintf::w3#1 7.333333333333333 -(word) myprintf::w3#8 1.5569620253164556 +(word) myprintf::w3#0 67.33333333333333 +(word) myprintf::w3#1 67.33333333333333 +(word) myprintf::w3#8 1268.392405063291 (void()) utoa((word) utoa::value , (byte*) utoa::dst) -(byte~) utoa::$16 4.0 -(byte~) utoa::$17 4.0 +(byte~) utoa::$16 2000002.0 +(byte~) utoa::$17 2000002.0 (byte) utoa::bStarted -(byte) utoa::bStarted#5 1.3333333333333333 -(byte) utoa::bStarted#6 2.0 -(byte) utoa::bStarted#7 4.0 +(byte) utoa::bStarted#5 666667.3333333334 +(byte) utoa::bStarted#6 1000001.0 +(byte) utoa::bStarted#7 2000002.0 (byte*) utoa::dst -(byte*) utoa::dst#1 4.0 -(byte*) utoa::dst#10 1.25 -(byte*) utoa::dst#12 2.0 -(byte*) utoa::dst#13 1.25 -(byte*) utoa::dst#16 0.75 -(byte*) utoa::dst#2 4.0 -(byte*) utoa::dst#3 4.0 -(byte*) utoa::dst#4 4.0 +(byte*) utoa::dst#1 2000002.0 +(byte*) utoa::dst#10 625000.625 +(byte*) utoa::dst#12 1000001.0 +(byte*) utoa::dst#13 625000.625 +(byte*) utoa::dst#16 375000.375 +(byte*) utoa::dst#2 2000002.0 +(byte*) utoa::dst#3 2000002.0 +(byte*) utoa::dst#4 2000002.0 (word) utoa::value -(word) utoa::value#0 4.0 -(word) utoa::value#1 2.0 -(word) utoa::value#10 2.5 -(word) utoa::value#11 2.5 -(word) utoa::value#12 4.0 -(word) utoa::value#2 2.0 -(word) utoa::value#3 2.0 -(word) utoa::value#4 35.66666666666666 -(word) utoa::value#6 2.5 +(word) utoa::value#0 2000002.0 +(word) utoa::value#1 1000001.0 +(word) utoa::value#10 1250001.25 +(word) utoa::value#11 1250001.25 +(word) utoa::value#12 2000002.0 +(word) utoa::value#2 1000001.0 +(word) utoa::value#3 1000001.0 +(word) utoa::value#4 1033334.6666666667 +(word) utoa::value#6 1250001.25 Initial phi equivalence classes [ main::u#15 main::u#3 ] @@ -6011,49 +6011,48 @@ div10: { strTemp: .fill $64, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) VICBANK) ← (byte) $17 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) zp1) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) zp1)<(byte) $a) goto main::@2 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [8] *((const byte*) zp1) ← (byte) 0 [ main::v#12 ] ( main:2 [ main::v#12 ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) zp1)<(byte) $a) goto main::@8 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [12] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [13] *((const byte*) TIMELO) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [14] *((const byte*) zp2) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) zp2)<(byte) $c8) goto main::@10 [ main::u#17 main::v#13 ] ( main:2 [ main::u#17 main::v#13 ] ) always clobbers reg byte a -Statement [17] (word~) main::$12 ← (word)*((const byte*) TIMEHI) [ main::u#17 main::v#13 main::$12 ] ( main:2 [ main::u#17 main::v#13 main::$12 ] ) always clobbers reg byte a -Statement [18] (word~) main::$13 ← (word~) main::$12 << (byte) 8 [ main::u#17 main::v#13 main::$13 ] ( main:2 [ main::u#17 main::v#13 main::$13 ] ) always clobbers reg byte a -Statement [19] (word~) main::$14 ← (word)*((const byte*) TIMELO) [ main::u#17 main::v#13 main::$13 main::$14 ] ( main:2 [ main::u#17 main::v#13 main::$13 main::$14 ] ) always clobbers reg byte a -Statement [20] (word) myprintf::w3#1 ← (word~) main::$13 + (word~) main::$14 [ main::u#17 main::v#13 myprintf::w3#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 ] ) always clobbers reg byte a -Statement [21] (word) myprintf::w1#1 ← (word) main::u#17 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ) always clobbers reg byte a -Statement [22] (word) myprintf::w2#1 ← (word) main::v#13 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ) always clobbers reg byte a -Statement [26] (word) main::u#4 ← (word) main::u#17 - (word) $4d2 [ main::u#4 main::v#13 ] ( main:2 [ main::u#4 main::v#13 ] ) always clobbers reg byte a -Statement [28] (word) div10::val#4 ← (word) main::u#17 [ main::u#17 div10::val#4 ] ( main:2 [ main::u#17 div10::val#4 ] ) always clobbers reg byte a -Statement [30] (word) div10::return#2 ← (word) div10::return#0 [ main::u#17 div10::return#2 ] ( main:2 [ main::u#17 div10::return#2 ] ) always clobbers reg byte a -Statement [31] (word) main::v#2 ← (word) div10::return#2 [ main::u#17 main::v#2 ] ( main:2 [ main::u#17 main::v#2 ] ) always clobbers reg byte a -Statement [33] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [34] *((const byte*) TIMELO) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [35] *((const byte*) zp2) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [37] if(*((const byte*) zp2)<(byte) $c8) goto main::@5 [ main::u#15 main::v#11 ] ( main:2 [ main::u#15 main::v#11 ] ) always clobbers reg byte a -Statement [38] (word~) main::$3 ← (word)*((const byte*) TIMEHI) [ main::u#15 main::v#11 main::$3 ] ( main:2 [ main::u#15 main::v#11 main::$3 ] ) always clobbers reg byte a -Statement [39] (word~) main::$4 ← (word~) main::$3 << (byte) 8 [ main::u#15 main::v#11 main::$4 ] ( main:2 [ main::u#15 main::v#11 main::$4 ] ) always clobbers reg byte a -Statement [40] (word~) main::$5 ← (word)*((const byte*) TIMELO) [ main::u#15 main::v#11 main::$4 main::$5 ] ( main:2 [ main::u#15 main::v#11 main::$4 main::$5 ] ) always clobbers reg byte a -Statement [41] (word) myprintf::w3#0 ← (word~) main::$4 + (word~) main::$5 [ main::u#15 main::v#11 myprintf::w3#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 ] ) always clobbers reg byte a -Statement [42] (word) myprintf::w1#0 ← (word) main::u#15 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ) always clobbers reg byte a -Statement [43] (word) myprintf::w2#0 ← (word) main::v#11 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ) always clobbers reg byte a -Statement [47] (word) main::u#3 ← (word) main::u#15 - (word) $4d2 [ main::u#3 main::v#11 ] ( main:2 [ main::u#3 main::v#11 ] ) always clobbers reg byte a -Statement [49] (word) div16u::dividend#0 ← (word) main::u#15 [ main::u#15 div16u::dividend#0 ] ( main:2 [ main::u#15 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [51] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#15 div16u::return#2 ] ( main:2 [ main::u#15 div16u::return#2 ] ) always clobbers reg byte a -Statement [52] (word) main::v#1 ← (word) div16u::return#2 [ main::u#15 main::v#1 ] ( main:2 [ main::u#15 main::v#1 ] ) always clobbers reg byte a -Statement [54] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:50 [ main::u#15 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [56] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::div16u:50 [ main::u#15 divr16u::return#2 ] ) always clobbers reg byte a -Statement [57] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::div16u:50 [ main::u#15 div16u::return#0 ] ) always clobbers reg byte a -Statement [62] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) VICBANK) ← (byte) $17 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) zp1) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) zp1)<(byte) $a) goto main::@2 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) zp1) ← (byte) 0 [ main::v#12 ] ( main:2 [ main::v#12 ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) zp1)<(byte) $a) goto main::@8 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) TIMELO) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) zp2) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) zp2)<(byte) $c8) goto main::@10 [ main::u#17 main::v#13 ] ( main:2 [ main::u#17 main::v#13 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$12 ← (word)*((const byte*) TIMEHI) [ main::u#17 main::v#13 main::$12 ] ( main:2 [ main::u#17 main::v#13 main::$12 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [18] (word~) main::$13 ← (word~) main::$12 << (byte) 8 [ main::u#17 main::v#13 main::$13 ] ( main:2 [ main::u#17 main::v#13 main::$13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [19] (word~) main::$14 ← (word)*((const byte*) TIMELO) [ main::u#17 main::v#13 main::$13 main::$14 ] ( main:2 [ main::u#17 main::v#13 main::$13 main::$14 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [20] (word) myprintf::w3#1 ← (word~) main::$13 + (word~) main::$14 [ main::u#17 main::v#13 myprintf::w3#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [21] (word) myprintf::w1#1 ← (word) main::u#17 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [22] (word) myprintf::w2#1 ← (word) main::v#13 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [26] (word) main::u#4 ← (word) main::u#17 - (word) $4d2 [ main::u#4 main::v#13 ] ( main:2 [ main::u#4 main::v#13 ] { } ) always clobbers reg byte a +Statement [28] (word) div10::val#4 ← (word) main::u#17 [ main::u#17 div10::val#4 ] ( main:2 [ main::u#17 div10::val#4 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [30] (word) div10::return#2 ← (word) div10::return#0 [ main::u#17 div10::return#2 ] ( main:2 [ main::u#17 div10::return#2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [31] (word) main::v#2 ← (word) div10::return#2 [ main::u#17 main::v#2 ] ( main:2 [ main::u#17 main::v#2 ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) TIMELO) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) zp2) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [37] if(*((const byte*) zp2)<(byte) $c8) goto main::@5 [ main::u#15 main::v#11 ] ( main:2 [ main::u#15 main::v#11 ] { } ) always clobbers reg byte a +Statement [38] (word~) main::$3 ← (word)*((const byte*) TIMEHI) [ main::u#15 main::v#11 main::$3 ] ( main:2 [ main::u#15 main::v#11 main::$3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [39] (word~) main::$4 ← (word~) main::$3 << (byte) 8 [ main::u#15 main::v#11 main::$4 ] ( main:2 [ main::u#15 main::v#11 main::$4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [40] (word~) main::$5 ← (word)*((const byte*) TIMELO) [ main::u#15 main::v#11 main::$4 main::$5 ] ( main:2 [ main::u#15 main::v#11 main::$4 main::$5 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [41] (word) myprintf::w3#0 ← (word~) main::$4 + (word~) main::$5 [ main::u#15 main::v#11 myprintf::w3#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [42] (word) myprintf::w1#0 ← (word) main::u#15 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [43] (word) myprintf::w2#0 ← (word) main::v#11 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [47] (word) main::u#3 ← (word) main::u#15 - (word) $4d2 [ main::u#3 main::v#11 ] ( main:2 [ main::u#3 main::v#11 ] { } ) always clobbers reg byte a +Statement [49] (word) div16u::dividend#0 ← (word) main::u#15 [ main::u#15 div16u::dividend#0 ] ( main:2 [ main::u#15 div16u::dividend#0 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [51] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#15 div16u::return#2 ] ( main:2 [ main::u#15 div16u::return#2 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [52] (word) main::v#1 ← (word) div16u::return#2 [ main::u#15 main::v#1 ] ( main:2 [ main::u#15 main::v#1 ] { } ) always clobbers reg byte a +Statement [54] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:50 [ main::u#15 divr16u::dividend#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [56] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::div16u:50 [ main::u#15 divr16u::return#2 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [57] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::div16u:50 [ main::u#15 div16u::return#0 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [65] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ divr16u::i#2 divr16u::i#1 ] -Statement [65] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [69] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [71] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [69] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [71] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Statement asm { ldy#0 loop: ldastrTemp,y beqdone jsr$FFD2 iny jmploop done: } always clobbers reg byte a reg byte x reg byte y -Statement [80] if(*((byte*) myprintf::str#10)!=(byte) 0) goto myprintf::@2 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ) always clobbers reg byte a reg byte y +Statement [80] if(*((byte*) myprintf::str#10)!=(byte) 0) goto myprintf::@2 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:23 [ myprintf::bFormat#10 myprintf::bFormat#5 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ myprintf::bFormat#10 myprintf::bFormat#5 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ myprintf::bLen#32 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#36 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] @@ -6066,156 +6065,155 @@ Removing always clobbered register reg byte a as potential for zp[1]:32 [ myprin Removing always clobbered register reg byte y as potential for zp[1]:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#29 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ myprintf::bLeadZero#11 myprintf::bLeadZero#20 ] Removing always clobbered register reg byte y as potential for zp[1]:28 [ myprintf::bLeadZero#11 myprintf::bLeadZero#20 ] -Statement [81] *((const byte*) strTemp + (byte) myprintf::bLen#10) ← (byte) 0 [ ] ( main:2::myprintf:23 [ main::u#17 main::v#13 ] main:2::myprintf:44 [ main::u#15 main::v#11 ] ) always clobbers reg byte a -Statement [83] (byte) myprintf::b#1 ← *((byte*) myprintf::str#10) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ) always clobbers reg byte a reg byte y -Statement [96] (byte~) myprintf::$18 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ) always clobbers reg byte a -Statement [97] (byte~) myprintf::$19 ← (byte~) myprintf::$18 >> (byte) 4 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ) always clobbers reg byte a -Statement [102] (byte~) myprintf::$25 ← (byte~) myprintf::$24 + (byte) myprintf::b#15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ) always clobbers reg byte a -Statement [105] (byte~) myprintf::$26 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ) always clobbers reg byte a +Statement [81] *((const byte*) strTemp + (byte) myprintf::bLen#10) ← (byte) 0 [ ] ( main:2::myprintf:23 [ main::u#17 main::v#13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [83] (byte) myprintf::b#1 ← *((byte*) myprintf::str#10) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte~) myprintf::$18 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [97] (byte~) myprintf::$19 ← (byte~) myprintf::$18 >> (byte) 4 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [102] (byte~) myprintf::$25 ← (byte~) myprintf::$24 + (byte) myprintf::b#15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [105] (byte~) myprintf::$26 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:78 [ myprintf::bLen#11 ] -Statement [110] (byte~) myprintf::$32 ← (byte~) myprintf::$31 + (byte) myprintf::b#16 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ) always clobbers reg byte a -Statement [113] (word) utoa::value#4 ← (word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ) always clobbers reg byte a -Statement [116] if(*((const byte*) myprintf::buf6 + (byte) myprintf::b#17)!=(byte) 0) goto myprintf::@15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ) always clobbers reg byte a +Statement [110] (byte~) myprintf::$32 ← (byte~) myprintf::$31 + (byte) myprintf::b#16 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [113] (word) utoa::value#4 ← (word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [116] if(*((const byte*) myprintf::buf6 + (byte) myprintf::b#17)!=(byte) 0) goto myprintf::@15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ myprintf::b#17 myprintf::b#5 ] -Statement [128] *((const byte*) strTemp + (byte) myprintf::bLen#14) ← (byte) ' ' [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ) always clobbers reg byte a -Statement [131] *((const byte*) strTemp + (byte) myprintf::bLen#13) ← *((const byte*) myprintf::buf6 + (byte) myprintf::digit#3) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ) always clobbers reg byte a +Statement [128] *((const byte*) strTemp + (byte) myprintf::bLen#14) ← (byte) ' ' [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [131] *((const byte*) strTemp + (byte) myprintf::bLen#13) ← *((const byte*) myprintf::buf6 + (byte) myprintf::digit#3) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ myprintf::digit#3 myprintf::digit#2 ] -Statement [141] (byte~) myprintf::$50 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ) always clobbers reg byte a -Statement [148] (word) myprintf::w#55 ← (word) myprintf::w3#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ) always clobbers reg byte a -Statement [151] (word) myprintf::w#54 ← (word) myprintf::w2#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ) always clobbers reg byte a -Statement [152] (word) myprintf::w#53 ← (word) myprintf::w1#7 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ) always clobbers reg byte a -Statement [155] (byte) myprintf::b#6 ← (byte) myprintf::b#1 + (byte) $20 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ) always clobbers reg byte a -Statement [160] if((word) utoa::value#4>=(word) $2710) goto utoa::@5 [ utoa::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ) always clobbers reg byte a -Statement [163] if((word) utoa::value#6>=(word) $3e8) goto utoa::@6 [ utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ) always clobbers reg byte a +Statement [141] (byte~) myprintf::$50 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [148] (word) myprintf::w#55 ← (word) myprintf::w3#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [151] (word) myprintf::w#54 ← (word) myprintf::w2#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [152] (word) myprintf::w#53 ← (word) myprintf::w1#7 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [155] (byte) myprintf::b#6 ← (byte) myprintf::b#1 + (byte) $20 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [160] if((word) utoa::value#4>=(word) $2710) goto utoa::@5 [ utoa::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [163] if((word) utoa::value#6>=(word) $3e8) goto utoa::@6 [ utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] -Statement [166] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 [ utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ) always clobbers reg byte a -Statement [169] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 [ utoa::value#10 utoa::dst#13 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] ) always clobbers reg byte a -Statement [171] (byte~) utoa::$16 ← (byte)(word) utoa::value#12 [ utoa::dst#12 utoa::$16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] ) always clobbers reg byte a -Statement [173] *((byte*) utoa::dst#12) ← (byte~) utoa::$17 [ utoa::dst#12 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] ) always clobbers reg byte y -Statement [174] (byte*) utoa::dst#3 ← ++ (byte*) utoa::dst#12 [ utoa::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] ) always clobbers reg byte a -Statement [175] *((byte*) utoa::dst#3) ← (byte) 0 [ ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ) always clobbers reg byte a reg byte y -Statement [177] (byte*) append::dst#3 ← (byte*) utoa::dst#13 [ utoa::value#10 utoa::dst#13 append::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] ) always clobbers reg byte a -Statement [178] (word) append::value#4 ← (word) utoa::value#10 [ utoa::dst#13 append::dst#3 append::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] ) always clobbers reg byte a -Statement [180] (word) append::return#10 ← (word) append::value#5 [ utoa::dst#13 append::return#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] ) always clobbers reg byte a -Statement [181] (word) utoa::value#3 ← (word) append::return#10 [ utoa::dst#13 utoa::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] ) always clobbers reg byte a -Statement [183] (byte*) append::dst#2 ← (byte*) utoa::dst#10 [ utoa::value#11 utoa::dst#10 append::dst#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] ) always clobbers reg byte a -Statement [184] (word) append::value#3 ← (word) utoa::value#11 [ utoa::dst#10 append::dst#2 append::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] ) always clobbers reg byte a -Statement [186] (word) append::return#4 ← (word) append::value#5 [ utoa::dst#10 append::return#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] ) always clobbers reg byte a -Statement [187] (word) utoa::value#2 ← (word) append::return#4 [ utoa::dst#10 utoa::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] ) always clobbers reg byte a -Statement [189] (byte*) append::dst#1 ← (byte*) utoa::dst#16 [ utoa::value#6 utoa::dst#16 append::dst#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] ) always clobbers reg byte a -Statement [190] (word) append::value#2 ← (word) utoa::value#6 [ utoa::dst#16 append::dst#1 append::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] ) always clobbers reg byte a -Statement [192] (word) append::return#3 ← (word) append::value#5 [ utoa::dst#16 append::return#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] ) always clobbers reg byte a -Statement [193] (word) utoa::value#1 ← (word) append::return#3 [ utoa::dst#16 utoa::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] ) always clobbers reg byte a -Statement [195] (word) append::value#1 ← (word) utoa::value#4 [ append::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] ) always clobbers reg byte a -Statement [197] (word) append::return#2 ← (word) append::value#5 [ append::return#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] ) always clobbers reg byte a -Statement [198] (word) utoa::value#0 ← (word) append::return#2 [ utoa::value#0 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [200] *((byte*) append::dst#4) ← (byte) '0' [ append::dst#4 append::value#8 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] ) always clobbers reg byte a reg byte y -Statement [202] if((word) append::value#5>=(word) append::sub#6) goto append::@2 [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] ) always clobbers reg byte a -Statement [204] *((byte*) append::dst#4) ← ++ *((byte*) append::dst#4) [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] ) always clobbers reg byte a reg byte y -Statement [205] (word) append::value#0 ← (word) append::value#5 - (word) append::sub#6 [ append::dst#4 append::sub#6 append::value#0 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] ) always clobbers reg byte a -Statement [206] (word~) div10::$0 ← (word) div10::val#4 >> (byte) 1 [ div10::$0 ] ( main:2::div10:29 [ main::u#17 div10::$0 ] ) always clobbers reg byte a -Statement [207] (word) div10::val#0 ← (word~) div10::$0 + (byte) 1 [ div10::val#0 ] ( main:2::div10:29 [ main::u#17 div10::val#0 ] ) always clobbers reg byte a -Statement [208] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::val#0 div10::$2 ] ( main:2::div10:29 [ main::u#17 div10::val#0 div10::$2 ] ) always clobbers reg byte a -Statement [209] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:29 [ main::u#17 div10::val#1 ] ) always clobbers reg byte a -Statement [210] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:29 [ main::u#17 div10::val#1 div10::$3 ] ) always clobbers reg byte a -Statement [211] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:29 [ main::u#17 div10::val#2 ] ) always clobbers reg byte a -Statement [212] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:29 [ main::u#17 div10::val#2 div10::$4 ] ) always clobbers reg byte a -Statement [213] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:29 [ main::u#17 div10::val#3 ] ) always clobbers reg byte a -Statement [214] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:29 [ main::u#17 div10::return#0 ] ) always clobbers reg byte a -Statement [4] *((const byte*) VICBANK) ← (byte) $17 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) zp1) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) zp1)<(byte) $a) goto main::@2 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [8] *((const byte*) zp1) ← (byte) 0 [ main::v#12 ] ( main:2 [ main::v#12 ] ) always clobbers reg byte a -Statement [10] if(*((const byte*) zp1)<(byte) $a) goto main::@8 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [12] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [13] *((const byte*) TIMELO) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [14] *((const byte*) zp2) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) zp2)<(byte) $c8) goto main::@10 [ main::u#17 main::v#13 ] ( main:2 [ main::u#17 main::v#13 ] ) always clobbers reg byte a -Statement [17] (word~) main::$12 ← (word)*((const byte*) TIMEHI) [ main::u#17 main::v#13 main::$12 ] ( main:2 [ main::u#17 main::v#13 main::$12 ] ) always clobbers reg byte a -Statement [18] (word~) main::$13 ← (word~) main::$12 << (byte) 8 [ main::u#17 main::v#13 main::$13 ] ( main:2 [ main::u#17 main::v#13 main::$13 ] ) always clobbers reg byte a -Statement [19] (word~) main::$14 ← (word)*((const byte*) TIMELO) [ main::u#17 main::v#13 main::$13 main::$14 ] ( main:2 [ main::u#17 main::v#13 main::$13 main::$14 ] ) always clobbers reg byte a -Statement [20] (word) myprintf::w3#1 ← (word~) main::$13 + (word~) main::$14 [ main::u#17 main::v#13 myprintf::w3#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 ] ) always clobbers reg byte a -Statement [21] (word) myprintf::w1#1 ← (word) main::u#17 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ) always clobbers reg byte a -Statement [22] (word) myprintf::w2#1 ← (word) main::v#13 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ) always clobbers reg byte a -Statement [26] (word) main::u#4 ← (word) main::u#17 - (word) $4d2 [ main::u#4 main::v#13 ] ( main:2 [ main::u#4 main::v#13 ] ) always clobbers reg byte a -Statement [28] (word) div10::val#4 ← (word) main::u#17 [ main::u#17 div10::val#4 ] ( main:2 [ main::u#17 div10::val#4 ] ) always clobbers reg byte a -Statement [30] (word) div10::return#2 ← (word) div10::return#0 [ main::u#17 div10::return#2 ] ( main:2 [ main::u#17 div10::return#2 ] ) always clobbers reg byte a -Statement [31] (word) main::v#2 ← (word) div10::return#2 [ main::u#17 main::v#2 ] ( main:2 [ main::u#17 main::v#2 ] ) always clobbers reg byte a -Statement [33] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [34] *((const byte*) TIMELO) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [35] *((const byte*) zp2) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] ) always clobbers reg byte a -Statement [37] if(*((const byte*) zp2)<(byte) $c8) goto main::@5 [ main::u#15 main::v#11 ] ( main:2 [ main::u#15 main::v#11 ] ) always clobbers reg byte a -Statement [38] (word~) main::$3 ← (word)*((const byte*) TIMEHI) [ main::u#15 main::v#11 main::$3 ] ( main:2 [ main::u#15 main::v#11 main::$3 ] ) always clobbers reg byte a -Statement [39] (word~) main::$4 ← (word~) main::$3 << (byte) 8 [ main::u#15 main::v#11 main::$4 ] ( main:2 [ main::u#15 main::v#11 main::$4 ] ) always clobbers reg byte a -Statement [40] (word~) main::$5 ← (word)*((const byte*) TIMELO) [ main::u#15 main::v#11 main::$4 main::$5 ] ( main:2 [ main::u#15 main::v#11 main::$4 main::$5 ] ) always clobbers reg byte a -Statement [41] (word) myprintf::w3#0 ← (word~) main::$4 + (word~) main::$5 [ main::u#15 main::v#11 myprintf::w3#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 ] ) always clobbers reg byte a -Statement [42] (word) myprintf::w1#0 ← (word) main::u#15 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ) always clobbers reg byte a -Statement [43] (word) myprintf::w2#0 ← (word) main::v#11 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ) always clobbers reg byte a -Statement [47] (word) main::u#3 ← (word) main::u#15 - (word) $4d2 [ main::u#3 main::v#11 ] ( main:2 [ main::u#3 main::v#11 ] ) always clobbers reg byte a -Statement [49] (word) div16u::dividend#0 ← (word) main::u#15 [ main::u#15 div16u::dividend#0 ] ( main:2 [ main::u#15 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [51] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#15 div16u::return#2 ] ( main:2 [ main::u#15 div16u::return#2 ] ) always clobbers reg byte a -Statement [52] (word) main::v#1 ← (word) div16u::return#2 [ main::u#15 main::v#1 ] ( main:2 [ main::u#15 main::v#1 ] ) always clobbers reg byte a -Statement [54] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:50 [ main::u#15 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [56] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::div16u:50 [ main::u#15 divr16u::return#2 ] ) always clobbers reg byte a -Statement [57] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::div16u:50 [ main::u#15 div16u::return#0 ] ) always clobbers reg byte a -Statement [62] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [65] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [69] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [71] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [166] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 [ utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [169] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 [ utoa::value#10 utoa::dst#13 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [171] (byte~) utoa::$16 ← (byte)(word) utoa::value#12 [ utoa::dst#12 utoa::$16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [173] *((byte*) utoa::dst#12) ← (byte~) utoa::$17 [ utoa::dst#12 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte y +Statement [174] (byte*) utoa::dst#3 ← ++ (byte*) utoa::dst#12 [ utoa::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [175] *((byte*) utoa::dst#3) ← (byte) 0 [ ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a reg byte y +Statement [177] (byte*) append::dst#3 ← (byte*) utoa::dst#13 [ utoa::value#10 utoa::dst#13 append::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [178] (word) append::value#4 ← (word) utoa::value#10 [ utoa::dst#13 append::dst#3 append::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [180] (word) append::return#10 ← (word) append::value#5 [ utoa::dst#13 append::return#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [181] (word) utoa::value#3 ← (word) append::return#10 [ utoa::dst#13 utoa::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [183] (byte*) append::dst#2 ← (byte*) utoa::dst#10 [ utoa::value#11 utoa::dst#10 append::dst#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [184] (word) append::value#3 ← (word) utoa::value#11 [ utoa::dst#10 append::dst#2 append::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [186] (word) append::return#4 ← (word) append::value#5 [ utoa::dst#10 append::return#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [187] (word) utoa::value#2 ← (word) append::return#4 [ utoa::dst#10 utoa::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [189] (byte*) append::dst#1 ← (byte*) utoa::dst#16 [ utoa::value#6 utoa::dst#16 append::dst#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [190] (word) append::value#2 ← (word) utoa::value#6 [ utoa::dst#16 append::dst#1 append::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [192] (word) append::return#3 ← (word) append::value#5 [ utoa::dst#16 append::return#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [193] (word) utoa::value#1 ← (word) append::return#3 [ utoa::dst#16 utoa::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [195] (word) append::value#1 ← (word) utoa::value#4 [ append::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [197] (word) append::return#2 ← (word) append::value#5 [ append::return#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [198] (word) utoa::value#0 ← (word) append::return#2 [ utoa::value#0 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [200] *((byte*) append::dst#4) ← (byte) '0' [ append::dst#4 append::value#8 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a reg byte y +Statement [202] if((word) append::value#5>=(word) append::sub#6) goto append::@2 [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [204] *((byte*) append::dst#4) ← ++ *((byte*) append::dst#4) [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a reg byte y +Statement [205] (word) append::value#0 ← (word) append::value#5 - (word) append::sub#6 [ append::dst#4 append::sub#6 append::value#0 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [206] (word~) div10::$0 ← (word) div10::val#4 >> (byte) 1 [ div10::$0 ] ( main:2::div10:29 [ main::u#17 div10::$0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [207] (word) div10::val#0 ← (word~) div10::$0 + (byte) 1 [ div10::val#0 ] ( main:2::div10:29 [ main::u#17 div10::val#0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [208] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::val#0 div10::$2 ] ( main:2::div10:29 [ main::u#17 div10::val#0 div10::$2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [209] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:29 [ main::u#17 div10::val#1 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [210] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:29 [ main::u#17 div10::val#1 div10::$3 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [211] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:29 [ main::u#17 div10::val#2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [212] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:29 [ main::u#17 div10::val#2 div10::$4 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [213] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:29 [ main::u#17 div10::val#3 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [214] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:29 [ main::u#17 div10::return#0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [4] *((const byte*) VICBANK) ← (byte) $17 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) zp1) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] if(*((const byte*) zp1)<(byte) $a) goto main::@2 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) zp1) ← (byte) 0 [ main::v#12 ] ( main:2 [ main::v#12 ] { } ) always clobbers reg byte a +Statement [10] if(*((const byte*) zp1)<(byte) $a) goto main::@8 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) TIMELO) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) zp2) ← (byte) 0 [ main::u#17 main::v#10 ] ( main:2 [ main::u#17 main::v#10 ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) zp2)<(byte) $c8) goto main::@10 [ main::u#17 main::v#13 ] ( main:2 [ main::u#17 main::v#13 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$12 ← (word)*((const byte*) TIMEHI) [ main::u#17 main::v#13 main::$12 ] ( main:2 [ main::u#17 main::v#13 main::$12 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [18] (word~) main::$13 ← (word~) main::$12 << (byte) 8 [ main::u#17 main::v#13 main::$13 ] ( main:2 [ main::u#17 main::v#13 main::$13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [19] (word~) main::$14 ← (word)*((const byte*) TIMELO) [ main::u#17 main::v#13 main::$13 main::$14 ] ( main:2 [ main::u#17 main::v#13 main::$13 main::$14 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [20] (word) myprintf::w3#1 ← (word~) main::$13 + (word~) main::$14 [ main::u#17 main::v#13 myprintf::w3#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [21] (word) myprintf::w1#1 ← (word) main::u#17 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [22] (word) myprintf::w2#1 ← (word) main::v#13 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] ( main:2 [ main::u#17 main::v#13 myprintf::w3#1 myprintf::w1#1 myprintf::w2#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [26] (word) main::u#4 ← (word) main::u#17 - (word) $4d2 [ main::u#4 main::v#13 ] ( main:2 [ main::u#4 main::v#13 ] { } ) always clobbers reg byte a +Statement [28] (word) div10::val#4 ← (word) main::u#17 [ main::u#17 div10::val#4 ] ( main:2 [ main::u#17 div10::val#4 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [30] (word) div10::return#2 ← (word) div10::return#0 [ main::u#17 div10::return#2 ] ( main:2 [ main::u#17 div10::return#2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [31] (word) main::v#2 ← (word) div10::return#2 [ main::u#17 main::v#2 ] ( main:2 [ main::u#17 main::v#2 ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) TIMEHI) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) TIMELO) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) zp2) ← (byte) 0 [ main::u#15 main::v#12 ] ( main:2 [ main::u#15 main::v#12 ] { } ) always clobbers reg byte a +Statement [37] if(*((const byte*) zp2)<(byte) $c8) goto main::@5 [ main::u#15 main::v#11 ] ( main:2 [ main::u#15 main::v#11 ] { } ) always clobbers reg byte a +Statement [38] (word~) main::$3 ← (word)*((const byte*) TIMEHI) [ main::u#15 main::v#11 main::$3 ] ( main:2 [ main::u#15 main::v#11 main::$3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [39] (word~) main::$4 ← (word~) main::$3 << (byte) 8 [ main::u#15 main::v#11 main::$4 ] ( main:2 [ main::u#15 main::v#11 main::$4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [40] (word~) main::$5 ← (word)*((const byte*) TIMELO) [ main::u#15 main::v#11 main::$4 main::$5 ] ( main:2 [ main::u#15 main::v#11 main::$4 main::$5 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [41] (word) myprintf::w3#0 ← (word~) main::$4 + (word~) main::$5 [ main::u#15 main::v#11 myprintf::w3#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [42] (word) myprintf::w1#0 ← (word) main::u#15 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [43] (word) myprintf::w2#0 ← (word) main::v#11 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] ( main:2 [ main::u#15 main::v#11 myprintf::w3#0 myprintf::w1#0 myprintf::w2#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [47] (word) main::u#3 ← (word) main::u#15 - (word) $4d2 [ main::u#3 main::v#11 ] ( main:2 [ main::u#3 main::v#11 ] { } ) always clobbers reg byte a +Statement [49] (word) div16u::dividend#0 ← (word) main::u#15 [ main::u#15 div16u::dividend#0 ] ( main:2 [ main::u#15 div16u::dividend#0 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [51] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#15 div16u::return#2 ] ( main:2 [ main::u#15 div16u::return#2 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [52] (word) main::v#1 ← (word) div16u::return#2 [ main::u#15 main::v#1 ] ( main:2 [ main::u#15 main::v#1 ] { } ) always clobbers reg byte a +Statement [54] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:50 [ main::u#15 divr16u::dividend#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [56] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::div16u:50 [ main::u#15 divr16u::return#2 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [57] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::div16u:50 [ main::u#15 div16u::return#0 ] { { div16u::dividend#0 = main::u#15 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [65] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [69] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [71] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div16u:50::divr16u:55 [ main::u#15 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::dividend#0 = main::u#15 divr16u::dividend#1 } { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Statement asm { ldy#0 loop: ldastrTemp,y beqdone jsr$FFD2 iny jmploop done: } always clobbers reg byte a reg byte x reg byte y -Statement [80] if(*((byte*) myprintf::str#10)!=(byte) 0) goto myprintf::@2 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ) always clobbers reg byte a reg byte y -Statement [81] *((const byte*) strTemp + (byte) myprintf::bLen#10) ← (byte) 0 [ ] ( main:2::myprintf:23 [ main::u#17 main::v#13 ] main:2::myprintf:44 [ main::u#15 main::v#11 ] ) always clobbers reg byte a -Statement [83] (byte) myprintf::b#1 ← *((byte*) myprintf::str#10) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ) always clobbers reg byte a reg byte y -Statement [96] (byte~) myprintf::$18 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ) always clobbers reg byte a -Statement [97] (byte~) myprintf::$19 ← (byte~) myprintf::$18 >> (byte) 4 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ) always clobbers reg byte a -Statement [102] (byte~) myprintf::$25 ← (byte~) myprintf::$24 + (byte) myprintf::b#15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ) always clobbers reg byte a -Statement [105] (byte~) myprintf::$26 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ) always clobbers reg byte a -Statement [110] (byte~) myprintf::$32 ← (byte~) myprintf::$31 + (byte) myprintf::b#16 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ) always clobbers reg byte a -Statement [113] (word) utoa::value#4 ← (word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ) always clobbers reg byte a -Statement [116] if(*((const byte*) myprintf::buf6 + (byte) myprintf::b#17)!=(byte) 0) goto myprintf::@15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ) always clobbers reg byte a -Statement [128] *((const byte*) strTemp + (byte) myprintf::bLen#14) ← (byte) ' ' [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ) always clobbers reg byte a -Statement [131] *((const byte*) strTemp + (byte) myprintf::bLen#13) ← *((const byte*) myprintf::buf6 + (byte) myprintf::digit#3) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ) always clobbers reg byte a -Statement [141] (byte~) myprintf::$50 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ) always clobbers reg byte a -Statement [148] (word) myprintf::w#55 ← (word) myprintf::w3#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ) always clobbers reg byte a -Statement [151] (word) myprintf::w#54 ← (word) myprintf::w2#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ) always clobbers reg byte a -Statement [152] (word) myprintf::w#53 ← (word) myprintf::w1#7 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ) always clobbers reg byte a -Statement [155] (byte) myprintf::b#6 ← (byte) myprintf::b#1 + (byte) $20 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ) always clobbers reg byte a -Statement [160] if((word) utoa::value#4>=(word) $2710) goto utoa::@5 [ utoa::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ) always clobbers reg byte a -Statement [163] if((word) utoa::value#6>=(word) $3e8) goto utoa::@6 [ utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ) always clobbers reg byte a -Statement [166] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 [ utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ) always clobbers reg byte a -Statement [169] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 [ utoa::value#10 utoa::dst#13 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] ) always clobbers reg byte a -Statement [171] (byte~) utoa::$16 ← (byte)(word) utoa::value#12 [ utoa::dst#12 utoa::$16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] ) always clobbers reg byte a -Statement [173] *((byte*) utoa::dst#12) ← (byte~) utoa::$17 [ utoa::dst#12 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] ) always clobbers reg byte y -Statement [174] (byte*) utoa::dst#3 ← ++ (byte*) utoa::dst#12 [ utoa::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] ) always clobbers reg byte a -Statement [175] *((byte*) utoa::dst#3) ← (byte) 0 [ ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ) always clobbers reg byte a reg byte y -Statement [177] (byte*) append::dst#3 ← (byte*) utoa::dst#13 [ utoa::value#10 utoa::dst#13 append::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] ) always clobbers reg byte a -Statement [178] (word) append::value#4 ← (word) utoa::value#10 [ utoa::dst#13 append::dst#3 append::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] ) always clobbers reg byte a -Statement [180] (word) append::return#10 ← (word) append::value#5 [ utoa::dst#13 append::return#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] ) always clobbers reg byte a -Statement [181] (word) utoa::value#3 ← (word) append::return#10 [ utoa::dst#13 utoa::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] ) always clobbers reg byte a -Statement [183] (byte*) append::dst#2 ← (byte*) utoa::dst#10 [ utoa::value#11 utoa::dst#10 append::dst#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] ) always clobbers reg byte a -Statement [184] (word) append::value#3 ← (word) utoa::value#11 [ utoa::dst#10 append::dst#2 append::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] ) always clobbers reg byte a -Statement [186] (word) append::return#4 ← (word) append::value#5 [ utoa::dst#10 append::return#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] ) always clobbers reg byte a -Statement [187] (word) utoa::value#2 ← (word) append::return#4 [ utoa::dst#10 utoa::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] ) always clobbers reg byte a -Statement [189] (byte*) append::dst#1 ← (byte*) utoa::dst#16 [ utoa::value#6 utoa::dst#16 append::dst#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] ) always clobbers reg byte a -Statement [190] (word) append::value#2 ← (word) utoa::value#6 [ utoa::dst#16 append::dst#1 append::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] ) always clobbers reg byte a -Statement [192] (word) append::return#3 ← (word) append::value#5 [ utoa::dst#16 append::return#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] ) always clobbers reg byte a -Statement [193] (word) utoa::value#1 ← (word) append::return#3 [ utoa::dst#16 utoa::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] ) always clobbers reg byte a -Statement [195] (word) append::value#1 ← (word) utoa::value#4 [ append::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] ) always clobbers reg byte a -Statement [197] (word) append::return#2 ← (word) append::value#5 [ append::return#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] ) always clobbers reg byte a -Statement [198] (word) utoa::value#0 ← (word) append::return#2 [ utoa::value#0 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [200] *((byte*) append::dst#4) ← (byte) '0' [ append::dst#4 append::value#8 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] ) always clobbers reg byte a reg byte y -Statement [202] if((word) append::value#5>=(word) append::sub#6) goto append::@2 [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] ) always clobbers reg byte a -Statement [204] *((byte*) append::dst#4) ← ++ *((byte*) append::dst#4) [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] ) always clobbers reg byte a reg byte y -Statement [205] (word) append::value#0 ← (word) append::value#5 - (word) append::sub#6 [ append::dst#4 append::sub#6 append::value#0 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] ) always clobbers reg byte a -Statement [206] (word~) div10::$0 ← (word) div10::val#4 >> (byte) 1 [ div10::$0 ] ( main:2::div10:29 [ main::u#17 div10::$0 ] ) always clobbers reg byte a -Statement [207] (word) div10::val#0 ← (word~) div10::$0 + (byte) 1 [ div10::val#0 ] ( main:2::div10:29 [ main::u#17 div10::val#0 ] ) always clobbers reg byte a -Statement [208] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::val#0 div10::$2 ] ( main:2::div10:29 [ main::u#17 div10::val#0 div10::$2 ] ) always clobbers reg byte a -Statement [209] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:29 [ main::u#17 div10::val#1 ] ) always clobbers reg byte a -Statement [210] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:29 [ main::u#17 div10::val#1 div10::$3 ] ) always clobbers reg byte a -Statement [211] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:29 [ main::u#17 div10::val#2 ] ) always clobbers reg byte a -Statement [212] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:29 [ main::u#17 div10::val#2 div10::$4 ] ) always clobbers reg byte a -Statement [213] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:29 [ main::u#17 div10::val#3 ] ) always clobbers reg byte a -Statement [214] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:29 [ main::u#17 div10::return#0 ] ) always clobbers reg byte a +Statement [80] if(*((byte*) myprintf::str#10)!=(byte) 0) goto myprintf::@2 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a reg byte y +Statement [81] *((const byte*) strTemp + (byte) myprintf::bLen#10) ← (byte) 0 [ ] ( main:2::myprintf:23 [ main::u#17 main::v#13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [83] (byte) myprintf::b#1 ← *((byte*) myprintf::str#10) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte~) myprintf::$18 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$18 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [97] (byte~) myprintf::$19 ← (byte~) myprintf::$18 >> (byte) 4 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$19 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [102] (byte~) myprintf::$25 ← (byte~) myprintf::$24 + (byte) myprintf::b#15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$25 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [105] (byte~) myprintf::$26 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$26 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [110] (byte~) myprintf::$32 ← (byte~) myprintf::$31 + (byte) myprintf::b#16 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::bLen#11 myprintf::$32 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [113] (word) utoa::value#4 ← (word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [116] if(*((const byte*) myprintf::buf6 + (byte) myprintf::b#17)!=(byte) 0) goto myprintf::@15 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#17 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [128] *((const byte*) strTemp + (byte) myprintf::bLen#14) ← (byte) ' ' [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#14 myprintf::bDigits#10 myprintf::b#17 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [131] *((const byte*) strTemp + (byte) myprintf::bLen#13) ← *((const byte*) myprintf::buf6 + (byte) myprintf::digit#3) [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bLeadZero#11 myprintf::bLen#13 myprintf::bDigits#18 myprintf::b#17 myprintf::digit#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [141] (byte~) myprintf::$50 ← (byte)(word) myprintf::w#10 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::$50 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [148] (word) myprintf::w#55 ← (word) myprintf::w3#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#55 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [151] (word) myprintf::w#54 ← (word) myprintf::w2#8 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#54 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [152] (word) myprintf::w#53 ← (word) myprintf::w1#7 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#53 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [155] (byte) myprintf::b#6 ← (byte) myprintf::b#1 + (byte) $20 [ myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] ( main:2::myprintf:23 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } } main:2::myprintf:44 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bFormat#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 myprintf::b#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } } ) always clobbers reg byte a +Statement [160] if((word) utoa::value#4>=(word) $2710) goto utoa::@5 [ utoa::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [163] if((word) utoa::value#6>=(word) $3e8) goto utoa::@6 [ utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#5 utoa::value#6 utoa::dst#16 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [166] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 [ utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::bStarted#6 utoa::value#11 utoa::dst#10 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [169] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 [ utoa::value#10 utoa::dst#13 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [171] (byte~) utoa::$16 ← (byte)(word) utoa::value#12 [ utoa::dst#12 utoa::$16 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 utoa::$16 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [173] *((byte*) utoa::dst#12) ← (byte~) utoa::$17 [ utoa::dst#12 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#12 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte y +Statement [174] (byte*) utoa::dst#3 ← ++ (byte*) utoa::dst#12 [ utoa::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [175] *((byte*) utoa::dst#3) ← (byte) 0 [ ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a reg byte y +Statement [177] (byte*) append::dst#3 ← (byte*) utoa::dst#13 [ utoa::value#10 utoa::dst#13 append::dst#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#10 utoa::dst#13 append::dst#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [178] (word) append::value#4 ← (word) utoa::value#10 [ utoa::dst#13 append::dst#3 append::value#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#3 append::value#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [180] (word) append::return#10 ← (word) append::value#5 [ utoa::dst#13 append::return#10 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::return#10 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } ) always clobbers reg byte a +Statement [181] (word) utoa::value#3 ← (word) append::return#10 [ utoa::dst#13 utoa::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 utoa::value#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [183] (byte*) append::dst#2 ← (byte*) utoa::dst#10 [ utoa::value#11 utoa::dst#10 append::dst#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#11 utoa::dst#10 append::dst#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [184] (word) append::value#3 ← (word) utoa::value#11 [ utoa::dst#10 append::dst#2 append::value#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#2 append::value#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [186] (word) append::return#4 ← (word) append::value#5 [ utoa::dst#10 append::return#4 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::return#4 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } ) always clobbers reg byte a +Statement [187] (word) utoa::value#2 ← (word) append::return#4 [ utoa::dst#10 utoa::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 utoa::value#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [189] (byte*) append::dst#1 ← (byte*) utoa::dst#16 [ utoa::value#6 utoa::dst#16 append::dst#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#6 utoa::dst#16 append::dst#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [190] (word) append::value#2 ← (word) utoa::value#6 [ utoa::dst#16 append::dst#1 append::value#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#1 append::value#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [192] (word) append::return#3 ← (word) append::value#5 [ utoa::dst#16 append::return#3 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::return#3 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } ) always clobbers reg byte a +Statement [193] (word) utoa::value#1 ← (word) append::return#3 [ utoa::dst#16 utoa::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 utoa::value#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [195] (word) append::value#1 ← (word) utoa::value#4 [ append::value#1 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#1 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [197] (word) append::return#2 ← (word) append::value#5 [ append::return#2 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::return#2 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [198] (word) utoa::value#0 ← (word) append::return#2 [ utoa::value#0 ] ( main:2::myprintf:23::utoa:114 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } main:2::myprintf:44::utoa:114 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } } ) always clobbers reg byte a +Statement [200] *((byte*) append::dst#4) ← (byte) '0' [ append::dst#4 append::value#8 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::value#8 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a reg byte y +Statement [202] if((word) append::value#5>=(word) append::sub#6) goto append::@2 [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [204] *((byte*) append::dst#4) ← ++ *((byte*) append::dst#4) [ append::value#5 append::dst#4 append::sub#6 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::value#5 append::dst#4 append::sub#6 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a reg byte y +Statement [205] (word) append::value#0 ← (word) append::value#5 - (word) append::sub#6 [ append::dst#4 append::sub#6 append::value#0 ] ( main:2::myprintf:23::utoa:114::append:179 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:44::utoa:114::append:179 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#13 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#3 = append::dst#4 utoa::dst#13 } { append::value#4 = append::value#8 utoa::value#10 } { append::return#10 = append::value#5 } } main:2::myprintf:23::utoa:114::append:185 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:44::utoa:114::append:185 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#10 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#2 = append::dst#4 utoa::dst#10 } { append::value#3 = append::value#8 utoa::value#11 } { append::return#4 = append::value#5 } } main:2::myprintf:23::utoa:114::append:191 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:44::utoa:114::append:191 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 utoa::dst#16 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { utoa::value#4 = myprintf::w#10 } { append::dst#1 = append::dst#4 utoa::dst#16 } { append::value#2 = append::value#8 utoa::value#6 } { append::return#3 = append::value#5 } } main:2::myprintf:23::utoa:114::append:196 [ main::u#17 main::v#13 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#1 = myprintf::w1#7 main::u#17 } { myprintf::w2#1 = myprintf::w2#8 main::v#13 } { myprintf::w3#1 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } main:2::myprintf:44::utoa:114::append:196 [ main::u#15 main::v#11 myprintf::w1#7 myprintf::w2#8 myprintf::w3#8 myprintf::str#10 myprintf::bLen#10 myprintf::bArg#10 myprintf::w#10 myprintf::bTrailing#11 myprintf::bDigits#16 myprintf::bLeadZero#11 append::dst#4 append::sub#6 append::value#0 ] { { myprintf::w1#0 = myprintf::w1#7 main::u#15 } { myprintf::w2#0 = myprintf::w2#8 main::v#11 } { myprintf::w3#0 = myprintf::w3#8 } { append::value#1 = append::value#8 utoa::value#4 myprintf::w#10 } { append::return#2 = append::value#5 } } ) always clobbers reg byte a +Statement [206] (word~) div10::$0 ← (word) div10::val#4 >> (byte) 1 [ div10::$0 ] ( main:2::div10:29 [ main::u#17 div10::$0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [207] (word) div10::val#0 ← (word~) div10::$0 + (byte) 1 [ div10::val#0 ] ( main:2::div10:29 [ main::u#17 div10::val#0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [208] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::val#0 div10::$2 ] ( main:2::div10:29 [ main::u#17 div10::val#0 div10::$2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [209] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:29 [ main::u#17 div10::val#1 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [210] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:29 [ main::u#17 div10::val#1 div10::$3 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [211] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:29 [ main::u#17 div10::val#2 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [212] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:29 [ main::u#17 div10::val#2 div10::$4 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [213] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:29 [ main::u#17 div10::val#3 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a +Statement [214] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:29 [ main::u#17 div10::return#0 ] { { div10::val#4 = main::u#17 } { div10::return#0 = div10::return#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::u#15 main::u#3 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::u#17 main::u#4 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] : zp[2]:6 , @@ -6287,22 +6285,22 @@ Potential registers zp[2]:109 [ div10::val#3 ] : zp[2]:109 , Potential registers zp[2]:111 [ div10::return#0 ] : zp[2]:111 , REGISTER UPLIFT SCOPES -Uplift Scope [myprintf] 9,418.13: zp[1]:33 [ myprintf::bLen#32 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#36 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] 7,825.26: zp[1]:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#29 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ] 3,003: zp[1]:34 [ myprintf::digit#3 myprintf::digit#2 ] 2,250.32: zp[1]:31 [ myprintf::b#17 myprintf::b#5 ] 1,171.75: zp[2]:25 [ myprintf::w#10 myprintf::w#18 myprintf::w#22 myprintf::w#53 myprintf::w#54 myprintf::w#55 ] 1,001: zp[1]:35 [ myprintf::$43 ] 631.25: zp[1]:36 [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] 567.62: zp[1]:24 [ myprintf::bArg#10 myprintf::bArg#11 myprintf::bArg#1 ] 290.38: zp[1]:23 [ myprintf::bFormat#10 myprintf::bFormat#5 ] 274.33: zp[1]:28 [ myprintf::bLeadZero#11 myprintf::bLeadZero#20 ] 262.75: zp[1]:27 [ myprintf::bTrailing#11 myprintf::bTrailing#24 ] 209.27: zp[2]:21 [ myprintf::str#10 myprintf::str#6 myprintf::str#0 ] 202: zp[1]:74 [ myprintf::$18 ] 202: zp[1]:75 [ myprintf::$19 ] 202: zp[1]:77 [ myprintf::$25 ] 202: zp[1]:79 [ myprintf::$26 ] 202: zp[1]:81 [ myprintf::$32 ] 202: zp[1]:82 [ myprintf::$50 ] 101: zp[1]:29 [ myprintf::$24 ] 101: zp[1]:30 [ myprintf::$31 ] 75.75: zp[1]:76 [ myprintf::b#15 ] 75.75: zp[1]:80 [ myprintf::b#16 ] 45.56: zp[2]:17 [ myprintf::w2#8 myprintf::w2#1 myprintf::w2#0 ] 37.88: zp[1]:78 [ myprintf::bLen#11 ] 23.56: zp[2]:15 [ myprintf::w1#7 myprintf::w1#1 myprintf::w1#0 ] 16.22: zp[2]:19 [ myprintf::w3#8 myprintf::w3#1 myprintf::w3#0 ] -Uplift Scope [divr16u] 8,758.75: zp[2]:8 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,353.75: zp[2]:12 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,002: zp[1]:72 [ divr16u::$1 ] 2,002: zp[1]:73 [ divr16u::$2 ] 1,655.5: zp[1]:14 [ divr16u::i#2 divr16u::i#1 ] 681.54: zp[2]:10 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 4: zp[2]:68 [ divr16u::return#2 ] -Uplift Scope [append] 2,399.62: zp[2]:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] 341: zp[2]:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] 333.67: zp[2]:44 [ append::sub#6 ] 4: zp[2]:87 [ append::return#10 ] 4: zp[2]:89 [ append::return#4 ] 4: zp[2]:91 [ append::return#3 ] 4: zp[2]:93 [ append::return#2 ] -Uplift Scope [main] 231.42: zp[2]:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] 22: zp[2]:48 [ main::$12 ] 22: zp[2]:52 [ main::$14 ] 22: zp[2]:58 [ main::$3 ] 22: zp[2]:62 [ main::$5 ] 17.38: zp[2]:2 [ main::u#15 main::u#3 ] 17.38: zp[2]:4 [ main::u#17 main::u#4 ] 11: zp[2]:50 [ main::$13 ] 11: zp[2]:60 [ main::$4 ] -Uplift Scope [div10] 202: zp[2]:56 [ div10::return#2 ] 103: zp[2]:54 [ div10::val#4 ] 34.33: zp[2]:111 [ div10::return#0 ] 4: zp[2]:95 [ div10::$0 ] 4: zp[2]:99 [ div10::$2 ] 4: zp[2]:103 [ div10::$3 ] 4: zp[2]:107 [ div10::$4 ] 4: zp[2]:109 [ div10::val#3 ] 3: zp[2]:97 [ div10::val#0 ] 3: zp[2]:101 [ div10::val#1 ] 3: zp[2]:105 [ div10::val#2 ] -Uplift Scope [div16u] 202: zp[2]:66 [ div16u::return#2 ] 103: zp[2]:64 [ div16u::dividend#0 ] 34.33: zp[2]:70 [ div16u::return#0 ] -Uplift Scope [utoa] 57.17: zp[2]:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] 17.25: zp[2]:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] 7.33: zp[1]:37 [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] 4: zp[1]:83 [ utoa::$16 ] 4: zp[1]:84 [ utoa::$17 ] 4: zp[2]:85 [ utoa::dst#3 ] +Uplift Scope [append] 23,766,750,013.5: zp[2]:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] 3,338,500,004: zp[2]:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] 3,333,333,333.67: zp[2]:44 [ append::sub#6 ] 2,000,002: zp[2]:87 [ append::return#10 ] 2,000,002: zp[2]:89 [ append::return#4 ] 2,000,002: zp[2]:91 [ append::return#3 ] 2,000,002: zp[2]:93 [ append::return#2 ] +Uplift Scope [divr16u] 875,000,008.75: zp[2]:8 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 335,002,003.55: zp[2]:12 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,000,002: zp[1]:72 [ divr16u::$1 ] 200,000,002: zp[1]:73 [ divr16u::$2 ] 165,384,617.04: zp[1]:14 [ divr16u::i#2 divr16u::i#1 ] 67,926,430.39: zp[2]:10 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 20,002: zp[2]:68 [ divr16u::return#2 ] +Uplift Scope [utoa] 11,783,345.42: zp[2]:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] 8,625,008.62: zp[2]:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] 3,666,670.33: zp[1]:37 [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] 2,000,002: zp[1]:83 [ utoa::$16 ] 2,000,002: zp[1]:84 [ utoa::$17 ] 2,000,002: zp[2]:85 [ utoa::dst#3 ] +Uplift Scope [myprintf] 9,392,606.94: zp[1]:33 [ myprintf::bLen#32 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#36 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] 7,807,471.22: zp[1]:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#29 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ] 3,000,003: zp[1]:34 [ myprintf::digit#3 myprintf::digit#2 ] 2,248,002.32: zp[1]:31 [ myprintf::b#17 myprintf::b#5 ] 1,160,156.53: zp[2]:25 [ myprintf::w#10 myprintf::w#18 myprintf::w#22 myprintf::w#53 myprintf::w#54 myprintf::w#55 ] 1,000,001: zp[1]:35 [ myprintf::$43 ] 625,006.25: zp[1]:36 [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] 562,005.62: zp[1]:24 [ myprintf::bArg#10 myprintf::bArg#11 myprintf::bArg#1 ] 287,502.88: zp[1]:23 [ myprintf::bFormat#10 myprintf::bFormat#5 ] 271,741.72: zp[1]:28 [ myprintf::bLeadZero#11 myprintf::bLeadZero#20 ] 260,147.53: zp[1]:27 [ myprintf::bTrailing#11 myprintf::bTrailing#24 ] 206,210.86: zp[2]:21 [ myprintf::str#10 myprintf::str#6 myprintf::str#0 ] 200,002: zp[1]:74 [ myprintf::$18 ] 200,002: zp[1]:75 [ myprintf::$19 ] 200,002: zp[1]:77 [ myprintf::$25 ] 200,002: zp[1]:79 [ myprintf::$26 ] 200,002: zp[1]:81 [ myprintf::$32 ] 200,002: zp[1]:82 [ myprintf::$50 ] 100,001: zp[1]:29 [ myprintf::$24 ] 100,001: zp[1]:30 [ myprintf::$31 ] 75,000.75: zp[1]:76 [ myprintf::b#15 ] 75,000.75: zp[1]:80 [ myprintf::b#16 ] 37,500.38: zp[1]:78 [ myprintf::bLen#11 ] 1,672.39: zp[2]:17 [ myprintf::w2#8 myprintf::w2#1 myprintf::w2#0 ] 1,470.39: zp[2]:15 [ myprintf::w1#7 myprintf::w1#1 myprintf::w1#0 ] 1,403.06: zp[2]:19 [ myprintf::w3#8 myprintf::w3#1 myprintf::w3#0 ] +Uplift Scope [div10] 20,002: zp[2]:95 [ div10::$0 ] 20,002: zp[2]:99 [ div10::$2 ] 20,002: zp[2]:103 [ div10::$3 ] 20,002: zp[2]:107 [ div10::$4 ] 20,002: zp[2]:109 [ div10::val#3 ] 15,001.5: zp[2]:97 [ div10::val#0 ] 15,001.5: zp[2]:101 [ div10::val#1 ] 15,001.5: zp[2]:105 [ div10::val#2 ] 11,002: zp[2]:54 [ div10::val#4 ] 3,667.33: zp[2]:111 [ div10::return#0 ] 2,002: zp[2]:56 [ div10::return#2 ] +Uplift Scope [div16u] 11,002: zp[2]:64 [ div16u::dividend#0 ] 3,667.33: zp[2]:70 [ div16u::return#0 ] 2,002: zp[2]:66 [ div16u::return#2 ] +Uplift Scope [main] 2,280.72: zp[2]:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] 202: zp[2]:48 [ main::$12 ] 202: zp[2]:52 [ main::$14 ] 202: zp[2]:58 [ main::$3 ] 202: zp[2]:62 [ main::$5 ] 163.1: zp[2]:2 [ main::u#15 main::u#3 ] 163.1: zp[2]:4 [ main::u#17 main::u#4 ] 101: zp[2]:50 [ main::$13 ] 101: zp[2]:60 [ main::$4 ] Uplift Scope [Print] Uplift Scope [] +Uplifting [append] best 491278 combination zp[2]:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp[2]:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp[2]:44 [ append::sub#6 ] zp[2]:87 [ append::return#10 ] zp[2]:89 [ append::return#4 ] zp[2]:91 [ append::return#3 ] zp[2]:93 [ append::return#2 ] Uplifting [divr16u] best 470278 combination zp[2]:8 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:12 [ 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[2]:10 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:68 [ divr16u::return#2 ] -Uplifting [append] best 470278 combination zp[2]:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp[2]:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp[2]:44 [ append::sub#6 ] zp[2]:87 [ append::return#10 ] zp[2]:89 [ append::return#4 ] zp[2]:91 [ append::return#3 ] zp[2]:93 [ append::return#2 ] -Uplifting [main] best 470278 combination zp[2]:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] zp[2]:48 [ main::$12 ] zp[2]:52 [ main::$14 ] zp[2]:58 [ main::$3 ] zp[2]:62 [ main::$5 ] zp[2]:2 [ main::u#15 main::u#3 ] zp[2]:4 [ main::u#17 main::u#4 ] zp[2]:50 [ main::$13 ] zp[2]:60 [ main::$4 ] -Uplifting [div10] best 470278 combination zp[2]:56 [ div10::return#2 ] zp[2]:54 [ div10::val#4 ] zp[2]:111 [ div10::return#0 ] zp[2]:95 [ div10::$0 ] zp[2]:99 [ div10::$2 ] zp[2]:103 [ div10::$3 ] zp[2]:107 [ div10::$4 ] zp[2]:109 [ div10::val#3 ] zp[2]:97 [ div10::val#0 ] zp[2]:101 [ div10::val#1 ] zp[2]:105 [ div10::val#2 ] -Uplifting [div16u] best 470278 combination zp[2]:66 [ div16u::return#2 ] zp[2]:64 [ div16u::dividend#0 ] zp[2]:70 [ div16u::return#0 ] Uplifting [utoa] best 470247 combination zp[2]:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] zp[2]:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] reg byte x [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] reg byte a [ utoa::$16 ] reg byte a [ utoa::$17 ] zp[2]:85 [ utoa::dst#3 ] +Uplifting [div10] best 470247 combination zp[2]:95 [ div10::$0 ] zp[2]:99 [ div10::$2 ] zp[2]:103 [ div10::$3 ] zp[2]:107 [ div10::$4 ] zp[2]:109 [ div10::val#3 ] zp[2]:97 [ div10::val#0 ] zp[2]:101 [ div10::val#1 ] zp[2]:105 [ div10::val#2 ] zp[2]:54 [ div10::val#4 ] zp[2]:111 [ div10::return#0 ] zp[2]:56 [ div10::return#2 ] +Uplifting [div16u] best 470247 combination zp[2]:64 [ div16u::dividend#0 ] zp[2]:70 [ div16u::return#0 ] zp[2]:66 [ div16u::return#2 ] +Uplifting [main] best 470247 combination zp[2]:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] zp[2]:48 [ main::$12 ] zp[2]:52 [ main::$14 ] zp[2]:58 [ main::$3 ] zp[2]:62 [ main::$5 ] zp[2]:2 [ main::u#15 main::u#3 ] zp[2]:4 [ main::u#17 main::u#4 ] zp[2]:50 [ main::$13 ] zp[2]:60 [ main::$4 ] Uplifting [Print] best 470247 combination Uplifting [] best 470247 combination Attempting to uplift remaining variables inzp[1]:33 [ myprintf::bLen#32 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#36 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] @@ -8107,53 +8105,53 @@ FINAL SYMBOL TABLE (label) append::@2 (label) append::@return (byte*) append::dst -(byte*) append::dst#1 dst zp[2]:19 2.0 -(byte*) append::dst#2 dst zp[2]:19 2.0 -(byte*) append::dst#3 dst zp[2]:19 2.0 -(byte*) append::dst#4 dst zp[2]:19 335.0 +(byte*) append::dst#1 dst zp[2]:19 1000001.0 +(byte*) append::dst#2 dst zp[2]:19 1000001.0 +(byte*) append::dst#3 dst zp[2]:19 1000001.0 +(byte*) append::dst#4 dst zp[2]:19 3.335500001E9 (word) append::return -(word) append::return#10 return zp[2]:17 4.0 -(word) append::return#2 return zp[2]:17 4.0 -(word) append::return#3 return zp[2]:17 4.0 -(word) append::return#4 return zp[2]:17 4.0 +(word) append::return#10 return zp[2]:17 2000002.0 +(word) append::return#2 return zp[2]:17 2000002.0 +(word) append::return#3 return zp[2]:17 2000002.0 +(word) append::return#4 return zp[2]:17 2000002.0 (word) append::sub -(word) append::sub#6 sub zp[2]:21 333.6666666666667 +(word) append::sub#6 sub zp[2]:21 3.3333333336666665E9 (word) append::value -(word) append::value#0 value zp[2]:17 2002.0 -(word) append::value#1 value zp[2]:17 4.0 -(word) append::value#2 value zp[2]:17 4.0 -(word) append::value#3 value zp[2]:17 4.0 -(word) append::value#4 value zp[2]:17 4.0 -(word) append::value#5 value zp[2]:17 376.625 -(word) append::value#8 value zp[2]:17 5.0 +(word) append::value#0 value zp[2]:17 2.0000000002E10 +(word) append::value#1 value zp[2]:17 2000002.0 +(word) append::value#2 value zp[2]:17 2000002.0 +(word) append::value#3 value zp[2]:17 2000002.0 +(word) append::value#4 value zp[2]:17 2000002.0 +(word) append::value#5 value zp[2]:17 3.751750001E9 +(word) append::value#8 value zp[2]:17 7000002.5 (word()) div10((word) div10::val) -(word~) div10::$0 zp[2]:19 4.0 -(word~) div10::$2 zp[2]:21 4.0 -(word~) div10::$3 zp[2]:23 4.0 -(word~) div10::$4 zp[2]:4 4.0 +(word~) div10::$0 zp[2]:19 20002.0 +(word~) div10::$2 zp[2]:21 20002.0 +(word~) div10::$3 zp[2]:23 20002.0 +(word~) div10::$4 zp[2]:4 20002.0 (label) div10::@return (word) div10::return -(word) div10::return#0 return zp[2]:4 34.33333333333333 -(word) div10::return#2 return zp[2]:4 202.0 +(word) div10::return#0 return zp[2]:4 3667.333333333333 +(word) div10::return#2 return zp[2]:4 2002.0 (word) div10::val -(word) div10::val#0 val zp[2]:19 3.0 -(word) div10::val#1 val_1 zp[2]:21 3.0 -(word) div10::val#2 val_2 zp[2]:23 3.0 -(word) div10::val#3 val_3 zp[2]:4 4.0 -(word) div10::val#4 val_4 zp[2]:2 103.0 +(word) div10::val#0 val zp[2]:19 15001.5 +(word) div10::val#1 val_1 zp[2]:21 15001.5 +(word) div10::val#2 val_2 zp[2]:23 15001.5 +(word) div10::val#3 val_3 zp[2]:4 20002.0 +(word) div10::val#4 val_4 zp[2]:2 11002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@1 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp[2]:2 103.0 +(word) div16u::dividend#0 dividend zp[2]:2 11002.0 (word) div16u::divisor (const word) div16u::divisor#0 divisor = (byte) $a (word) div16u::return -(word) div16u::return#0 return zp[2]:4 34.33333333333333 -(word) div16u::return#2 return zp[2]:4 202.0 +(word) div16u::return#0 return zp[2]:4 3667.333333333333 +(word) div16u::return#2 return zp[2]:4 2002.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 2002.0 -(byte~) divr16u::$2 reg byte a 2002.0 +(byte~) divr16u::$1 reg byte a 2.00000002E8 +(byte~) divr16u::$2 reg byte a 2.00000002E8 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -8161,34 +8159,34 @@ FINAL SYMBOL TABLE (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:23 250.25 -(word) divr16u::dividend#1 dividend zp[2]:23 2.0 -(word) divr16u::dividend#2 dividend zp[2]:23 429.2857142857143 +(word) divr16u::dividend#0 dividend zp[2]:23 2.500000025E7 +(word) divr16u::dividend#1 dividend zp[2]:23 55001.0 +(word) divr16u::dividend#2 dividend zp[2]:23 4.287142914285715E7 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 1501.5 -(byte) divr16u::i#2 reg byte x 154.0 +(byte) divr16u::i#1 reg byte x 1.500000015E8 +(byte) divr16u::i#2 reg byte x 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:4 1501.5 -(word) divr16u::quotient#2 quotient zp[2]:4 1001.0 -(word) divr16u::quotient#3 quotient zp[2]:4 250.25 +(word) divr16u::quotient#1 quotient zp[2]:4 1.500000015E8 +(word) divr16u::quotient#2 quotient zp[2]:4 1.00000001E8 +(word) divr16u::quotient#3 quotient zp[2]:4 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:6 750.75 -(word) divr16u::rem#1 rem zp[2]:6 2002.0 -(word) divr16u::rem#2 rem zp[2]:6 2002.0 -(word) divr16u::rem#4 rem zp[2]:6 2002.0 -(word) divr16u::rem#5 rem zp[2]:6 1001.0 -(word) divr16u::rem#9 rem zp[2]:6 1001.0 +(word) divr16u::rem#0 rem zp[2]:6 7.500000075E7 +(word) divr16u::rem#1 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#2 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#4 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#5 rem zp[2]:6 1.00000001E8 +(word) divr16u::rem#9 rem zp[2]:6 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:4 601.0 -(word) divr16u::return#2 return zp[2]:4 4.0 +(word) divr16u::return#0 return zp[2]:4 6.00020008E7 +(word) divr16u::return#2 return zp[2]:4 20002.0 (signed word()) main() -(word~) main::$12 zp[2]:6 22.0 -(word~) main::$13 zp[2]:6 11.0 -(word~) main::$14 zp[2]:15 22.0 -(word~) main::$3 zp[2]:6 22.0 -(word~) main::$4 zp[2]:6 11.0 -(word~) main::$5 zp[2]:17 22.0 +(word~) main::$12 zp[2]:6 202.0 +(word~) main::$13 zp[2]:6 101.0 +(word~) main::$14 zp[2]:15 202.0 +(word~) main::$3 zp[2]:6 202.0 +(word~) main::$4 zp[2]:6 101.0 +(word~) main::$5 zp[2]:17 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -8211,27 +8209,27 @@ FINAL SYMBOL TABLE (const byte*) main::str[(byte) $24] = (byte*) "200 DIV16U: %5d,%4d IN %04d FRAMESm" (const byte*) main::str1[(byte) $24] = (byte*) "200 DIV10 : %5d,%4d IN %04d FRAMESm" (word) main::u -(word) main::u#15 u zp[2]:2 6.380952380952381 -(word) main::u#17 u zp[2]:2 6.380952380952381 -(word) main::u#3 u zp[2]:2 11.0 -(word) main::u#4 u zp[2]:2 11.0 +(word) main::u#15 u zp[2]:2 62.09523809523809 +(word) main::u#17 u zp[2]:2 62.09523809523809 +(word) main::u#3 u zp[2]:2 101.0 +(word) main::u#4 u zp[2]:2 101.0 (word) main::v -(word) main::v#1 v zp[2]:4 101.0 -(word) main::v#10 v zp[2]:4 4.800000000000001 -(word) main::v#11 v zp[2]:4 10.307692307692308 -(word) main::v#12 v zp[2]:4 4.0 -(word) main::v#13 v zp[2]:4 10.307692307692308 -(word) main::v#2 v zp[2]:4 101.0 +(word) main::v#1 v zp[2]:4 1001.0 +(word) main::v#10 v zp[2]:4 42.599999999999994 +(word) main::v#11 v zp[2]:4 100.3076923076923 +(word) main::v#12 v zp[2]:4 35.5 +(word) main::v#13 v zp[2]:4 100.3076923076923 +(word) main::v#2 v zp[2]:4 1001.0 (byte()) myprintf((byte*) myprintf::dst , (byte*) myprintf::str , (word) myprintf::w1 , (word) myprintf::w2 , (word) myprintf::w3) -(byte~) myprintf::$18 reg byte a 202.0 -(byte~) myprintf::$19 reg byte a 202.0 -(byte~) myprintf::$24 reg byte a 101.0 -(byte~) myprintf::$25 reg byte a 202.0 -(byte~) myprintf::$26 reg byte a 202.0 -(byte~) myprintf::$31 reg byte a 101.0 -(byte~) myprintf::$32 reg byte a 202.0 -(byte~) myprintf::$43 reg byte a 1001.0 -(byte~) myprintf::$50 reg byte a 202.0 +(byte~) myprintf::$18 reg byte a 200002.0 +(byte~) myprintf::$19 reg byte a 200002.0 +(byte~) myprintf::$24 reg byte a 100001.0 +(byte~) myprintf::$25 reg byte a 200002.0 +(byte~) myprintf::$26 reg byte a 200002.0 +(byte~) myprintf::$31 reg byte a 100001.0 +(byte~) myprintf::$32 reg byte a 200002.0 +(byte~) myprintf::$43 reg byte a 1000001.0 +(byte~) myprintf::$50 reg byte a 200002.0 (label) myprintf::@1 (label) myprintf::@10 (label) myprintf::@11 @@ -8281,84 +8279,84 @@ FINAL SYMBOL TABLE (label) myprintf::@9 (label) myprintf::@return (byte) myprintf::b -(byte) myprintf::b#1 reg byte x 126.25000000000003 -(byte) myprintf::b#15 reg byte x 75.75 -(byte) myprintf::b#16 reg byte x 75.75 -(byte) myprintf::b#17 b zp[1]:12 248.31999999999996 -(byte) myprintf::b#25 reg byte x 303.0 -(byte) myprintf::b#5 b zp[1]:12 2002.0 -(byte) myprintf::b#6 reg byte x 202.0 +(byte) myprintf::b#1 reg byte x 125001.25000000003 +(byte) myprintf::b#15 reg byte x 75000.75 +(byte) myprintf::b#16 reg byte x 75000.75 +(byte) myprintf::b#17 b zp[1]:12 248000.32000000004 +(byte) myprintf::b#25 reg byte x 300003.0 +(byte) myprintf::b#5 b zp[1]:12 2000002.0 +(byte) myprintf::b#6 reg byte x 200002.0 (byte) myprintf::bArg -(byte) myprintf::bArg#1 bArg zp[1]:9 202.0 -(byte) myprintf::bArg#10 bArg zp[1]:9 12.120000000000001 -(byte) myprintf::bArg#11 bArg zp[1]:9 353.5 +(byte) myprintf::bArg#1 bArg zp[1]:9 200002.0 +(byte) myprintf::bArg#10 bArg zp[1]:9 12000.119999999999 +(byte) myprintf::bArg#11 bArg zp[1]:9 350003.5 (byte) myprintf::bDigits -(byte) myprintf::bDigits#1 bDigits zp[1]:13 202.0 -(byte) myprintf::bDigits#10 bDigits zp[1]:13 1026.25 -(byte) myprintf::bDigits#12 bDigits zp[1]:13 586.4285714285714 -(byte) myprintf::bDigits#16 bDigits zp[1]:13 21.956521739130434 -(byte) myprintf::bDigits#18 bDigits zp[1]:13 175.625 -(byte) myprintf::bDigits#2 bDigits zp[1]:13 2002.0 -(byte) myprintf::bDigits#28 bDigits zp[1]:13 303.0 -(byte) myprintf::bDigits#29 bDigits zp[1]:13 1506.0 -(byte) myprintf::bDigits#3 bDigits zp[1]:13 2002.0 +(byte) myprintf::bDigits#1 bDigits zp[1]:13 200002.0 +(byte) myprintf::bDigits#10 bDigits zp[1]:13 1025001.25 +(byte) myprintf::bDigits#12 bDigits zp[1]:13 585714.9999999999 +(byte) myprintf::bDigits#16 bDigits zp[1]:13 21739.347826086956 +(byte) myprintf::bDigits#18 bDigits zp[1]:13 175000.625 +(byte) myprintf::bDigits#2 bDigits zp[1]:13 2000002.0 +(byte) myprintf::bDigits#28 bDigits zp[1]:13 300003.0 +(byte) myprintf::bDigits#29 bDigits zp[1]:13 1500006.0 +(byte) myprintf::bDigits#3 bDigits zp[1]:13 2000002.0 (byte) myprintf::bFormat -(byte) myprintf::bFormat#10 bFormat zp[1]:8 37.875 -(byte) myprintf::bFormat#5 bFormat zp[1]:8 252.5 +(byte) myprintf::bFormat#10 bFormat zp[1]:8 37500.375 +(byte) myprintf::bFormat#5 bFormat zp[1]:8 250002.5 (byte) myprintf::bLeadZero -(byte) myprintf::bLeadZero#11 bLeadZero zp[1]:11 21.82608695652174 -(byte) myprintf::bLeadZero#20 bLeadZero zp[1]:11 252.5 +(byte) myprintf::bLeadZero#11 bLeadZero zp[1]:11 21739.217391304348 +(byte) myprintf::bLeadZero#20 bLeadZero zp[1]:11 250002.5 (byte) myprintf::bLen -(byte) myprintf::bLen#1 bLen zp[1]:14 202.0 -(byte) myprintf::bLen#10 bLen zp[1]:14 32.93023255813953 -(byte) myprintf::bLen#11 reg byte y 37.875 -(byte) myprintf::bLen#12 bLen zp[1]:14 684.1666666666667 -(byte) myprintf::bLen#13 bLen zp[1]:14 661.2 -(byte) myprintf::bLen#14 bLen zp[1]:14 1368.3333333333335 -(byte) myprintf::bLen#28 bLen zp[1]:14 353.5 -(byte) myprintf::bLen#3 bLen zp[1]:14 202.0 -(byte) myprintf::bLen#32 bLen zp[1]:14 1203.0 -(byte) myprintf::bLen#36 bLen zp[1]:14 1506.0 -(byte) myprintf::bLen#4 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#5 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#6 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#7 bLen zp[1]:14 202.0 +(byte) myprintf::bLen#1 bLen zp[1]:14 200002.0 +(byte) myprintf::bLen#10 bLen zp[1]:14 32581.744186046504 +(byte) myprintf::bLen#11 reg byte y 37500.375 +(byte) myprintf::bLen#12 bLen zp[1]:14 683334.1666666667 +(byte) myprintf::bLen#13 bLen zp[1]:14 660001.2 +(byte) myprintf::bLen#14 bLen zp[1]:14 1366668.3333333335 +(byte) myprintf::bLen#28 bLen zp[1]:14 350003.5 +(byte) myprintf::bLen#3 bLen zp[1]:14 200002.0 +(byte) myprintf::bLen#32 bLen zp[1]:14 1200003.0 +(byte) myprintf::bLen#36 bLen zp[1]:14 1500006.0 +(byte) myprintf::bLen#4 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#5 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#6 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#7 bLen zp[1]:14 200002.0 (byte) myprintf::bTrailing -(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10.246376811594203 -(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 252.5 +(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10145.028985507246 +(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 250002.5 (const byte*) myprintf::buf6[(number) 6] = { fill( 6, 0) } (byte) myprintf::digit -(byte) myprintf::digit#2 reg byte x 2002.0 -(byte) myprintf::digit#3 reg byte x 1001.0 +(byte) myprintf::digit#2 reg byte x 2000002.0 +(byte) myprintf::digit#3 reg byte x 1000001.0 (byte*) myprintf::dst (byte) myprintf::return (byte*) myprintf::str -(byte*) myprintf::str#0 str zp[2]:23 202.0 -(byte*) myprintf::str#10 str zp[2]:23 5.272727272727273 -(byte*) myprintf::str#6 str zp[2]:23 2.0 +(byte*) myprintf::str#0 str zp[2]:23 200002.0 +(byte*) myprintf::str#10 str zp[2]:23 5207.857142857143 +(byte*) myprintf::str#6 str zp[2]:23 1001.0 (word) myprintf::w -(word) myprintf::w#10 w zp[2]:15 10.246376811594203 -(word) myprintf::w#18 w zp[2]:15 353.5 -(word) myprintf::w#22 w zp[2]:15 202.0 -(word) myprintf::w#53 w zp[2]:15 202.0 -(word) myprintf::w#54 w zp[2]:15 202.0 -(word) myprintf::w#55 w zp[2]:15 202.0 +(word) myprintf::w#10 w zp[2]:15 10145.028985507246 +(word) myprintf::w#18 w zp[2]:15 350003.5 +(word) myprintf::w#22 w zp[2]:15 200002.0 +(word) myprintf::w#53 w zp[2]:15 200002.0 +(word) myprintf::w#54 w zp[2]:15 200002.0 +(word) myprintf::w#55 w zp[2]:15 200002.0 (word) myprintf::w1 -(word) myprintf::w1#0 w1 zp[2]:2 11.0 -(word) myprintf::w1#1 w1 zp[2]:2 11.0 -(word) myprintf::w1#7 w1 zp[2]:2 1.5569620253164556 +(word) myprintf::w1#0 w1 zp[2]:2 101.0 +(word) myprintf::w1#1 w1 zp[2]:2 101.0 +(word) myprintf::w1#7 w1 zp[2]:2 1268.392405063291 (word) myprintf::w2 -(word) myprintf::w2#0 w2 zp[2]:4 22.0 -(word) myprintf::w2#1 w2 zp[2]:4 22.0 -(word) myprintf::w2#8 w2 zp[2]:4 1.5569620253164556 +(word) myprintf::w2#0 w2 zp[2]:4 202.0 +(word) myprintf::w2#1 w2 zp[2]:4 202.0 +(word) myprintf::w2#8 w2 zp[2]:4 1268.392405063291 (word) myprintf::w3 -(word) myprintf::w3#0 w3 zp[2]:6 7.333333333333333 -(word) myprintf::w3#1 w3 zp[2]:6 7.333333333333333 -(word) myprintf::w3#8 w3 zp[2]:6 1.5569620253164556 +(word) myprintf::w3#0 w3 zp[2]:6 67.33333333333333 +(word) myprintf::w3#1 w3 zp[2]:6 67.33333333333333 +(word) myprintf::w3#8 w3 zp[2]:6 1268.392405063291 (const byte*) strTemp[(number) $64] = { fill( $64, 0) } (void()) utoa((word) utoa::value , (byte*) utoa::dst) -(byte~) utoa::$16 reg byte a 4.0 -(byte~) utoa::$17 reg byte a 4.0 +(byte~) utoa::$16 reg byte a 2000002.0 +(byte~) utoa::$17 reg byte a 2000002.0 (label) utoa::@1 (label) utoa::@10 (label) utoa::@11 @@ -8377,28 +8375,28 @@ FINAL SYMBOL TABLE (label) utoa::@9 (label) utoa::@return (byte) utoa::bStarted -(byte) utoa::bStarted#5 reg byte x 1.3333333333333333 -(byte) utoa::bStarted#6 reg byte x 2.0 -(byte) utoa::bStarted#7 reg byte x 4.0 +(byte) utoa::bStarted#5 reg byte x 666667.3333333334 +(byte) utoa::bStarted#6 reg byte x 1000001.0 +(byte) utoa::bStarted#7 reg byte x 2000002.0 (byte*) utoa::dst -(byte*) utoa::dst#1 dst zp[2]:19 4.0 -(byte*) utoa::dst#10 dst zp[2]:19 1.25 -(byte*) utoa::dst#12 dst zp[2]:19 2.0 -(byte*) utoa::dst#13 dst zp[2]:19 1.25 -(byte*) utoa::dst#16 dst zp[2]:19 0.75 -(byte*) utoa::dst#2 dst zp[2]:19 4.0 -(byte*) utoa::dst#3 dst zp[2]:19 4.0 -(byte*) utoa::dst#4 dst zp[2]:19 4.0 +(byte*) utoa::dst#1 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#10 dst zp[2]:19 625000.625 +(byte*) utoa::dst#12 dst zp[2]:19 1000001.0 +(byte*) utoa::dst#13 dst zp[2]:19 625000.625 +(byte*) utoa::dst#16 dst zp[2]:19 375000.375 +(byte*) utoa::dst#2 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#3 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#4 dst zp[2]:19 2000002.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:17 4.0 -(word) utoa::value#1 value zp[2]:17 2.0 -(word) utoa::value#10 value zp[2]:17 2.5 -(word) utoa::value#11 value zp[2]:17 2.5 -(word) utoa::value#12 value zp[2]:17 4.0 -(word) utoa::value#2 value zp[2]:17 2.0 -(word) utoa::value#3 value zp[2]:17 2.0 -(word) utoa::value#4 value zp[2]:17 35.66666666666666 -(word) utoa::value#6 value zp[2]:17 2.5 +(word) utoa::value#0 value zp[2]:17 2000002.0 +(word) utoa::value#1 value zp[2]:17 1000001.0 +(word) utoa::value#10 value zp[2]:17 1250001.25 +(word) utoa::value#11 value zp[2]:17 1250001.25 +(word) utoa::value#12 value zp[2]:17 2000002.0 +(word) utoa::value#2 value zp[2]:17 1000001.0 +(word) utoa::value#3 value zp[2]:17 1000001.0 +(word) utoa::value#4 value zp[2]:17 1033334.6666666667 +(word) utoa::value#6 value zp[2]:17 1250001.25 (const byte*) zp1 = (byte*) 97 (const byte*) zp2 = (byte*) 98 diff --git a/src/test/ref/sandbox.sym b/src/test/ref/sandbox.sym index cfb9143a0..cb67b3911 100644 --- a/src/test/ref/sandbox.sym +++ b/src/test/ref/sandbox.sym @@ -11,53 +11,53 @@ (label) append::@2 (label) append::@return (byte*) append::dst -(byte*) append::dst#1 dst zp[2]:19 2.0 -(byte*) append::dst#2 dst zp[2]:19 2.0 -(byte*) append::dst#3 dst zp[2]:19 2.0 -(byte*) append::dst#4 dst zp[2]:19 335.0 +(byte*) append::dst#1 dst zp[2]:19 1000001.0 +(byte*) append::dst#2 dst zp[2]:19 1000001.0 +(byte*) append::dst#3 dst zp[2]:19 1000001.0 +(byte*) append::dst#4 dst zp[2]:19 3.335500001E9 (word) append::return -(word) append::return#10 return zp[2]:17 4.0 -(word) append::return#2 return zp[2]:17 4.0 -(word) append::return#3 return zp[2]:17 4.0 -(word) append::return#4 return zp[2]:17 4.0 +(word) append::return#10 return zp[2]:17 2000002.0 +(word) append::return#2 return zp[2]:17 2000002.0 +(word) append::return#3 return zp[2]:17 2000002.0 +(word) append::return#4 return zp[2]:17 2000002.0 (word) append::sub -(word) append::sub#6 sub zp[2]:21 333.6666666666667 +(word) append::sub#6 sub zp[2]:21 3.3333333336666665E9 (word) append::value -(word) append::value#0 value zp[2]:17 2002.0 -(word) append::value#1 value zp[2]:17 4.0 -(word) append::value#2 value zp[2]:17 4.0 -(word) append::value#3 value zp[2]:17 4.0 -(word) append::value#4 value zp[2]:17 4.0 -(word) append::value#5 value zp[2]:17 376.625 -(word) append::value#8 value zp[2]:17 5.0 +(word) append::value#0 value zp[2]:17 2.0000000002E10 +(word) append::value#1 value zp[2]:17 2000002.0 +(word) append::value#2 value zp[2]:17 2000002.0 +(word) append::value#3 value zp[2]:17 2000002.0 +(word) append::value#4 value zp[2]:17 2000002.0 +(word) append::value#5 value zp[2]:17 3.751750001E9 +(word) append::value#8 value zp[2]:17 7000002.5 (word()) div10((word) div10::val) -(word~) div10::$0 zp[2]:19 4.0 -(word~) div10::$2 zp[2]:21 4.0 -(word~) div10::$3 zp[2]:23 4.0 -(word~) div10::$4 zp[2]:4 4.0 +(word~) div10::$0 zp[2]:19 20002.0 +(word~) div10::$2 zp[2]:21 20002.0 +(word~) div10::$3 zp[2]:23 20002.0 +(word~) div10::$4 zp[2]:4 20002.0 (label) div10::@return (word) div10::return -(word) div10::return#0 return zp[2]:4 34.33333333333333 -(word) div10::return#2 return zp[2]:4 202.0 +(word) div10::return#0 return zp[2]:4 3667.333333333333 +(word) div10::return#2 return zp[2]:4 2002.0 (word) div10::val -(word) div10::val#0 val zp[2]:19 3.0 -(word) div10::val#1 val_1 zp[2]:21 3.0 -(word) div10::val#2 val_2 zp[2]:23 3.0 -(word) div10::val#3 val_3 zp[2]:4 4.0 -(word) div10::val#4 val_4 zp[2]:2 103.0 +(word) div10::val#0 val zp[2]:19 15001.5 +(word) div10::val#1 val_1 zp[2]:21 15001.5 +(word) div10::val#2 val_2 zp[2]:23 15001.5 +(word) div10::val#3 val_3 zp[2]:4 20002.0 +(word) div10::val#4 val_4 zp[2]:2 11002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@1 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp[2]:2 103.0 +(word) div16u::dividend#0 dividend zp[2]:2 11002.0 (word) div16u::divisor (const word) div16u::divisor#0 divisor = (byte) $a (word) div16u::return -(word) div16u::return#0 return zp[2]:4 34.33333333333333 -(word) div16u::return#2 return zp[2]:4 202.0 +(word) div16u::return#0 return zp[2]:4 3667.333333333333 +(word) div16u::return#2 return zp[2]:4 2002.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 2002.0 -(byte~) divr16u::$2 reg byte a 2002.0 +(byte~) divr16u::$1 reg byte a 2.00000002E8 +(byte~) divr16u::$2 reg byte a 2.00000002E8 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -65,34 +65,34 @@ (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:23 250.25 -(word) divr16u::dividend#1 dividend zp[2]:23 2.0 -(word) divr16u::dividend#2 dividend zp[2]:23 429.2857142857143 +(word) divr16u::dividend#0 dividend zp[2]:23 2.500000025E7 +(word) divr16u::dividend#1 dividend zp[2]:23 55001.0 +(word) divr16u::dividend#2 dividend zp[2]:23 4.287142914285715E7 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 1501.5 -(byte) divr16u::i#2 reg byte x 154.0 +(byte) divr16u::i#1 reg byte x 1.500000015E8 +(byte) divr16u::i#2 reg byte x 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:4 1501.5 -(word) divr16u::quotient#2 quotient zp[2]:4 1001.0 -(word) divr16u::quotient#3 quotient zp[2]:4 250.25 +(word) divr16u::quotient#1 quotient zp[2]:4 1.500000015E8 +(word) divr16u::quotient#2 quotient zp[2]:4 1.00000001E8 +(word) divr16u::quotient#3 quotient zp[2]:4 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:6 750.75 -(word) divr16u::rem#1 rem zp[2]:6 2002.0 -(word) divr16u::rem#2 rem zp[2]:6 2002.0 -(word) divr16u::rem#4 rem zp[2]:6 2002.0 -(word) divr16u::rem#5 rem zp[2]:6 1001.0 -(word) divr16u::rem#9 rem zp[2]:6 1001.0 +(word) divr16u::rem#0 rem zp[2]:6 7.500000075E7 +(word) divr16u::rem#1 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#2 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#4 rem zp[2]:6 2.00000002E8 +(word) divr16u::rem#5 rem zp[2]:6 1.00000001E8 +(word) divr16u::rem#9 rem zp[2]:6 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:4 601.0 -(word) divr16u::return#2 return zp[2]:4 4.0 +(word) divr16u::return#0 return zp[2]:4 6.00020008E7 +(word) divr16u::return#2 return zp[2]:4 20002.0 (signed word()) main() -(word~) main::$12 zp[2]:6 22.0 -(word~) main::$13 zp[2]:6 11.0 -(word~) main::$14 zp[2]:15 22.0 -(word~) main::$3 zp[2]:6 22.0 -(word~) main::$4 zp[2]:6 11.0 -(word~) main::$5 zp[2]:17 22.0 +(word~) main::$12 zp[2]:6 202.0 +(word~) main::$13 zp[2]:6 101.0 +(word~) main::$14 zp[2]:15 202.0 +(word~) main::$3 zp[2]:6 202.0 +(word~) main::$4 zp[2]:6 101.0 +(word~) main::$5 zp[2]:17 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -115,27 +115,27 @@ (const byte*) main::str[(byte) $24] = (byte*) "200 DIV16U: %5d,%4d IN %04d FRAMESm" (const byte*) main::str1[(byte) $24] = (byte*) "200 DIV10 : %5d,%4d IN %04d FRAMESm" (word) main::u -(word) main::u#15 u zp[2]:2 6.380952380952381 -(word) main::u#17 u zp[2]:2 6.380952380952381 -(word) main::u#3 u zp[2]:2 11.0 -(word) main::u#4 u zp[2]:2 11.0 +(word) main::u#15 u zp[2]:2 62.09523809523809 +(word) main::u#17 u zp[2]:2 62.09523809523809 +(word) main::u#3 u zp[2]:2 101.0 +(word) main::u#4 u zp[2]:2 101.0 (word) main::v -(word) main::v#1 v zp[2]:4 101.0 -(word) main::v#10 v zp[2]:4 4.800000000000001 -(word) main::v#11 v zp[2]:4 10.307692307692308 -(word) main::v#12 v zp[2]:4 4.0 -(word) main::v#13 v zp[2]:4 10.307692307692308 -(word) main::v#2 v zp[2]:4 101.0 +(word) main::v#1 v zp[2]:4 1001.0 +(word) main::v#10 v zp[2]:4 42.599999999999994 +(word) main::v#11 v zp[2]:4 100.3076923076923 +(word) main::v#12 v zp[2]:4 35.5 +(word) main::v#13 v zp[2]:4 100.3076923076923 +(word) main::v#2 v zp[2]:4 1001.0 (byte()) myprintf((byte*) myprintf::dst , (byte*) myprintf::str , (word) myprintf::w1 , (word) myprintf::w2 , (word) myprintf::w3) -(byte~) myprintf::$18 reg byte a 202.0 -(byte~) myprintf::$19 reg byte a 202.0 -(byte~) myprintf::$24 reg byte a 101.0 -(byte~) myprintf::$25 reg byte a 202.0 -(byte~) myprintf::$26 reg byte a 202.0 -(byte~) myprintf::$31 reg byte a 101.0 -(byte~) myprintf::$32 reg byte a 202.0 -(byte~) myprintf::$43 reg byte a 1001.0 -(byte~) myprintf::$50 reg byte a 202.0 +(byte~) myprintf::$18 reg byte a 200002.0 +(byte~) myprintf::$19 reg byte a 200002.0 +(byte~) myprintf::$24 reg byte a 100001.0 +(byte~) myprintf::$25 reg byte a 200002.0 +(byte~) myprintf::$26 reg byte a 200002.0 +(byte~) myprintf::$31 reg byte a 100001.0 +(byte~) myprintf::$32 reg byte a 200002.0 +(byte~) myprintf::$43 reg byte a 1000001.0 +(byte~) myprintf::$50 reg byte a 200002.0 (label) myprintf::@1 (label) myprintf::@10 (label) myprintf::@11 @@ -185,84 +185,84 @@ (label) myprintf::@9 (label) myprintf::@return (byte) myprintf::b -(byte) myprintf::b#1 reg byte x 126.25000000000003 -(byte) myprintf::b#15 reg byte x 75.75 -(byte) myprintf::b#16 reg byte x 75.75 -(byte) myprintf::b#17 b zp[1]:12 248.31999999999996 -(byte) myprintf::b#25 reg byte x 303.0 -(byte) myprintf::b#5 b zp[1]:12 2002.0 -(byte) myprintf::b#6 reg byte x 202.0 +(byte) myprintf::b#1 reg byte x 125001.25000000003 +(byte) myprintf::b#15 reg byte x 75000.75 +(byte) myprintf::b#16 reg byte x 75000.75 +(byte) myprintf::b#17 b zp[1]:12 248000.32000000004 +(byte) myprintf::b#25 reg byte x 300003.0 +(byte) myprintf::b#5 b zp[1]:12 2000002.0 +(byte) myprintf::b#6 reg byte x 200002.0 (byte) myprintf::bArg -(byte) myprintf::bArg#1 bArg zp[1]:9 202.0 -(byte) myprintf::bArg#10 bArg zp[1]:9 12.120000000000001 -(byte) myprintf::bArg#11 bArg zp[1]:9 353.5 +(byte) myprintf::bArg#1 bArg zp[1]:9 200002.0 +(byte) myprintf::bArg#10 bArg zp[1]:9 12000.119999999999 +(byte) myprintf::bArg#11 bArg zp[1]:9 350003.5 (byte) myprintf::bDigits -(byte) myprintf::bDigits#1 bDigits zp[1]:13 202.0 -(byte) myprintf::bDigits#10 bDigits zp[1]:13 1026.25 -(byte) myprintf::bDigits#12 bDigits zp[1]:13 586.4285714285714 -(byte) myprintf::bDigits#16 bDigits zp[1]:13 21.956521739130434 -(byte) myprintf::bDigits#18 bDigits zp[1]:13 175.625 -(byte) myprintf::bDigits#2 bDigits zp[1]:13 2002.0 -(byte) myprintf::bDigits#28 bDigits zp[1]:13 303.0 -(byte) myprintf::bDigits#29 bDigits zp[1]:13 1506.0 -(byte) myprintf::bDigits#3 bDigits zp[1]:13 2002.0 +(byte) myprintf::bDigits#1 bDigits zp[1]:13 200002.0 +(byte) myprintf::bDigits#10 bDigits zp[1]:13 1025001.25 +(byte) myprintf::bDigits#12 bDigits zp[1]:13 585714.9999999999 +(byte) myprintf::bDigits#16 bDigits zp[1]:13 21739.347826086956 +(byte) myprintf::bDigits#18 bDigits zp[1]:13 175000.625 +(byte) myprintf::bDigits#2 bDigits zp[1]:13 2000002.0 +(byte) myprintf::bDigits#28 bDigits zp[1]:13 300003.0 +(byte) myprintf::bDigits#29 bDigits zp[1]:13 1500006.0 +(byte) myprintf::bDigits#3 bDigits zp[1]:13 2000002.0 (byte) myprintf::bFormat -(byte) myprintf::bFormat#10 bFormat zp[1]:8 37.875 -(byte) myprintf::bFormat#5 bFormat zp[1]:8 252.5 +(byte) myprintf::bFormat#10 bFormat zp[1]:8 37500.375 +(byte) myprintf::bFormat#5 bFormat zp[1]:8 250002.5 (byte) myprintf::bLeadZero -(byte) myprintf::bLeadZero#11 bLeadZero zp[1]:11 21.82608695652174 -(byte) myprintf::bLeadZero#20 bLeadZero zp[1]:11 252.5 +(byte) myprintf::bLeadZero#11 bLeadZero zp[1]:11 21739.217391304348 +(byte) myprintf::bLeadZero#20 bLeadZero zp[1]:11 250002.5 (byte) myprintf::bLen -(byte) myprintf::bLen#1 bLen zp[1]:14 202.0 -(byte) myprintf::bLen#10 bLen zp[1]:14 32.93023255813953 -(byte) myprintf::bLen#11 reg byte y 37.875 -(byte) myprintf::bLen#12 bLen zp[1]:14 684.1666666666667 -(byte) myprintf::bLen#13 bLen zp[1]:14 661.2 -(byte) myprintf::bLen#14 bLen zp[1]:14 1368.3333333333335 -(byte) myprintf::bLen#28 bLen zp[1]:14 353.5 -(byte) myprintf::bLen#3 bLen zp[1]:14 202.0 -(byte) myprintf::bLen#32 bLen zp[1]:14 1203.0 -(byte) myprintf::bLen#36 bLen zp[1]:14 1506.0 -(byte) myprintf::bLen#4 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#5 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#6 bLen zp[1]:14 1001.0 -(byte) myprintf::bLen#7 bLen zp[1]:14 202.0 +(byte) myprintf::bLen#1 bLen zp[1]:14 200002.0 +(byte) myprintf::bLen#10 bLen zp[1]:14 32581.744186046504 +(byte) myprintf::bLen#11 reg byte y 37500.375 +(byte) myprintf::bLen#12 bLen zp[1]:14 683334.1666666667 +(byte) myprintf::bLen#13 bLen zp[1]:14 660001.2 +(byte) myprintf::bLen#14 bLen zp[1]:14 1366668.3333333335 +(byte) myprintf::bLen#28 bLen zp[1]:14 350003.5 +(byte) myprintf::bLen#3 bLen zp[1]:14 200002.0 +(byte) myprintf::bLen#32 bLen zp[1]:14 1200003.0 +(byte) myprintf::bLen#36 bLen zp[1]:14 1500006.0 +(byte) myprintf::bLen#4 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#5 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#6 bLen zp[1]:14 1000001.0 +(byte) myprintf::bLen#7 bLen zp[1]:14 200002.0 (byte) myprintf::bTrailing -(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10.246376811594203 -(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 252.5 +(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10145.028985507246 +(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 250002.5 (const byte*) myprintf::buf6[(number) 6] = { fill( 6, 0) } (byte) myprintf::digit -(byte) myprintf::digit#2 reg byte x 2002.0 -(byte) myprintf::digit#3 reg byte x 1001.0 +(byte) myprintf::digit#2 reg byte x 2000002.0 +(byte) myprintf::digit#3 reg byte x 1000001.0 (byte*) myprintf::dst (byte) myprintf::return (byte*) myprintf::str -(byte*) myprintf::str#0 str zp[2]:23 202.0 -(byte*) myprintf::str#10 str zp[2]:23 5.272727272727273 -(byte*) myprintf::str#6 str zp[2]:23 2.0 +(byte*) myprintf::str#0 str zp[2]:23 200002.0 +(byte*) myprintf::str#10 str zp[2]:23 5207.857142857143 +(byte*) myprintf::str#6 str zp[2]:23 1001.0 (word) myprintf::w -(word) myprintf::w#10 w zp[2]:15 10.246376811594203 -(word) myprintf::w#18 w zp[2]:15 353.5 -(word) myprintf::w#22 w zp[2]:15 202.0 -(word) myprintf::w#53 w zp[2]:15 202.0 -(word) myprintf::w#54 w zp[2]:15 202.0 -(word) myprintf::w#55 w zp[2]:15 202.0 +(word) myprintf::w#10 w zp[2]:15 10145.028985507246 +(word) myprintf::w#18 w zp[2]:15 350003.5 +(word) myprintf::w#22 w zp[2]:15 200002.0 +(word) myprintf::w#53 w zp[2]:15 200002.0 +(word) myprintf::w#54 w zp[2]:15 200002.0 +(word) myprintf::w#55 w zp[2]:15 200002.0 (word) myprintf::w1 -(word) myprintf::w1#0 w1 zp[2]:2 11.0 -(word) myprintf::w1#1 w1 zp[2]:2 11.0 -(word) myprintf::w1#7 w1 zp[2]:2 1.5569620253164556 +(word) myprintf::w1#0 w1 zp[2]:2 101.0 +(word) myprintf::w1#1 w1 zp[2]:2 101.0 +(word) myprintf::w1#7 w1 zp[2]:2 1268.392405063291 (word) myprintf::w2 -(word) myprintf::w2#0 w2 zp[2]:4 22.0 -(word) myprintf::w2#1 w2 zp[2]:4 22.0 -(word) myprintf::w2#8 w2 zp[2]:4 1.5569620253164556 +(word) myprintf::w2#0 w2 zp[2]:4 202.0 +(word) myprintf::w2#1 w2 zp[2]:4 202.0 +(word) myprintf::w2#8 w2 zp[2]:4 1268.392405063291 (word) myprintf::w3 -(word) myprintf::w3#0 w3 zp[2]:6 7.333333333333333 -(word) myprintf::w3#1 w3 zp[2]:6 7.333333333333333 -(word) myprintf::w3#8 w3 zp[2]:6 1.5569620253164556 +(word) myprintf::w3#0 w3 zp[2]:6 67.33333333333333 +(word) myprintf::w3#1 w3 zp[2]:6 67.33333333333333 +(word) myprintf::w3#8 w3 zp[2]:6 1268.392405063291 (const byte*) strTemp[(number) $64] = { fill( $64, 0) } (void()) utoa((word) utoa::value , (byte*) utoa::dst) -(byte~) utoa::$16 reg byte a 4.0 -(byte~) utoa::$17 reg byte a 4.0 +(byte~) utoa::$16 reg byte a 2000002.0 +(byte~) utoa::$17 reg byte a 2000002.0 (label) utoa::@1 (label) utoa::@10 (label) utoa::@11 @@ -281,28 +281,28 @@ (label) utoa::@9 (label) utoa::@return (byte) utoa::bStarted -(byte) utoa::bStarted#5 reg byte x 1.3333333333333333 -(byte) utoa::bStarted#6 reg byte x 2.0 -(byte) utoa::bStarted#7 reg byte x 4.0 +(byte) utoa::bStarted#5 reg byte x 666667.3333333334 +(byte) utoa::bStarted#6 reg byte x 1000001.0 +(byte) utoa::bStarted#7 reg byte x 2000002.0 (byte*) utoa::dst -(byte*) utoa::dst#1 dst zp[2]:19 4.0 -(byte*) utoa::dst#10 dst zp[2]:19 1.25 -(byte*) utoa::dst#12 dst zp[2]:19 2.0 -(byte*) utoa::dst#13 dst zp[2]:19 1.25 -(byte*) utoa::dst#16 dst zp[2]:19 0.75 -(byte*) utoa::dst#2 dst zp[2]:19 4.0 -(byte*) utoa::dst#3 dst zp[2]:19 4.0 -(byte*) utoa::dst#4 dst zp[2]:19 4.0 +(byte*) utoa::dst#1 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#10 dst zp[2]:19 625000.625 +(byte*) utoa::dst#12 dst zp[2]:19 1000001.0 +(byte*) utoa::dst#13 dst zp[2]:19 625000.625 +(byte*) utoa::dst#16 dst zp[2]:19 375000.375 +(byte*) utoa::dst#2 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#3 dst zp[2]:19 2000002.0 +(byte*) utoa::dst#4 dst zp[2]:19 2000002.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:17 4.0 -(word) utoa::value#1 value zp[2]:17 2.0 -(word) utoa::value#10 value zp[2]:17 2.5 -(word) utoa::value#11 value zp[2]:17 2.5 -(word) utoa::value#12 value zp[2]:17 4.0 -(word) utoa::value#2 value zp[2]:17 2.0 -(word) utoa::value#3 value zp[2]:17 2.0 -(word) utoa::value#4 value zp[2]:17 35.66666666666666 -(word) utoa::value#6 value zp[2]:17 2.5 +(word) utoa::value#0 value zp[2]:17 2000002.0 +(word) utoa::value#1 value zp[2]:17 1000001.0 +(word) utoa::value#10 value zp[2]:17 1250001.25 +(word) utoa::value#11 value zp[2]:17 1250001.25 +(word) utoa::value#12 value zp[2]:17 2000002.0 +(word) utoa::value#2 value zp[2]:17 1000001.0 +(word) utoa::value#3 value zp[2]:17 1000001.0 +(word) utoa::value#4 value zp[2]:17 1033334.6666666667 +(word) utoa::value#6 value zp[2]:17 1250001.25 (const byte*) zp1 = (byte*) 97 (const byte*) zp2 = (byte*) 98 diff --git a/src/test/ref/scan-desire-problem.asm b/src/test/ref/scan-desire-problem.asm index 14e8ac7ae..62a0677dc 100644 --- a/src/test/ref/scan-desire-problem.asm +++ b/src/test/ref/scan-desire-problem.asm @@ -57,43 +57,43 @@ main: { clc adc.z y // tile = level_address[z] - tay - lda level_address,y + tax + ldy level_address,x // draw_block(tile,x,y,YELLOW) - ldy.z x - ldx.z y + ldx.z x jsr draw_block // for (byte y = 0; y < 9; y++) inc.z y jmp __b2 } -// draw_block(byte register(A) tileno, byte register(Y) x, byte register(X) y) +// draw_block(byte register(Y) tileno, byte register(X) x, byte zp(3) y) draw_block: { - .label tileno = 6 - .label x1 = $15 + .label y = 3 + .label x1 = $14 .label z = 4 - .label z_1 = $15 - .label __11 = 7 - .label __12 = 9 - .label __13 = $b - .label __14 = $d - .label __15 = $f - .label __16 = $11 - .label __17 = $13 - .label __18 = $15 + .label z_1 = $14 + .label __11 = 6 + .label __12 = 8 + .label __13 = $a + .label __14 = $c + .label __15 = $e + .label __16 = $10 + .label __17 = $12 + .label __18 = $14 // tileno = tileno << 2 - asl - asl - sta.z tileno - // x1 = x << 1 tya asl + asl + tay + // x1 = x << 1 + txa + asl sta.z x1 lda #0 rol sta.z x1+1 // y = y << 1 - txa + lda.z y asl // mul8u(y,40) tax @@ -109,7 +109,6 @@ draw_block: { adc.z z+1 sta.z z_1+1 // drawtile = tileset[tileno] - ldy.z tileno ldx tileset,y // screen[z] = drawtile lda.z z_1 @@ -199,7 +198,7 @@ draw_block: { // mul8u(byte register(X) a) mul8u: { .const b = $28 - .label mb = 7 + .label mb = 6 .label res = 4 .label return = 4 lda # (byte) 0 Inversing boolean not [29] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [28] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (byte) main::x#2 = (byte) main::x#7 -Alias (byte) main::x#3 = (byte) main::x#5 (byte) main::x#6 (byte) main::x#4 -Alias (byte) main::y#2 = (byte) main::y#3 (byte) main::y#4 -Alias (byte) main::z#0 = (byte~) main::$3 -Alias (byte*) init::toD0181_screen#0 = (byte*) init::toD0181_screen#1 -Alias (byte*) init::toD0181_gfx#0 = (byte*) init::toD0181_gfx#1 -Alias (byte) init::toD0181_return#0 = (byte~) init::toD0181_$8 (byte) init::toD0181_return#2 (byte) init::toD0181_return#1 (byte) init::toD0181_return#3 (byte~) init::$3 -Alias (byte) draw_block::tileno#1 = (byte~) draw_block::$0 (byte) draw_block::tileno#3 -Alias (word) draw_block::x1#0 = (byte~) draw_block::$1 (word) draw_block::x1#1 -Alias (byte) draw_block::y#1 = (byte~) draw_block::$2 -Alias (word) mul8u::return#2 = (word) mul8u::return#4 -Alias (word) draw_block::z#0 = (word~) draw_block::$3 -Alias (word) draw_block::z#1 = (word~) draw_block::$4 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias mul8u::a#2 = mul8u::a#3 mul8u::a#6 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#3 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias main::x#2 = main::x#7 +Alias main::x#3 = main::x#5 main::x#6 main::x#4 +Alias main::y#2 = main::y#3 main::y#4 +Alias main::z#0 = main::$3 +Alias init::toD0181_screen#0 = init::toD0181_screen#1 +Alias init::toD0181_gfx#0 = init::toD0181_gfx#1 +Alias init::toD0181_return#0 = init::toD0181_$8 init::toD0181_return#2 init::toD0181_return#1 init::toD0181_return#3 init::$3 +Alias draw_block::tileno#1 = draw_block::$0 draw_block::tileno#3 +Alias draw_block::x1#0 = draw_block::$1 draw_block::x1#1 +Alias draw_block::y#1 = draw_block::$2 +Alias mul8u::return#2 = mul8u::return#4 +Alias draw_block::z#0 = draw_block::$3 +Alias draw_block::z#1 = draw_block::$4 Successful SSA optimization Pass2AliasElimination -Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 +Alias mul8u::a#2 = mul8u::a#4 +Alias mul8u::mb#2 = mul8u::mb#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -844,7 +844,7 @@ Consolidated constant in assignment draw_block::$16 Consolidated constant in assignment draw_block::$17 Consolidated constant in assignment draw_block::$18 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word) draw_block::z#1 = (word~) draw_block::$5 (word~) draw_block::$6 (word~) draw_block::$7 (word~) draw_block::$8 (word~) draw_block::$9 (word~) draw_block::$10 +Alias draw_block::z#1 = draw_block::$5 draw_block::$6 draw_block::$7 draw_block::$8 draw_block::$9 draw_block::$10 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#2 (word) $3e8 Successful SSA optimization Pass2IdenticalPhiElimination @@ -1082,30 +1082,30 @@ init_sprites::@return: scope:[init_sprites] from init_sprites VARIABLE REGISTER WEIGHTS (void()) draw_block((byte) draw_block::tileno , (byte) draw_block::x , (byte) draw_block::y , (byte) draw_block::color) -(byte*~) draw_block::$11 4.0 -(byte*~) draw_block::$12 4.0 -(byte*~) draw_block::$13 4.0 -(byte*~) draw_block::$14 4.0 -(byte*~) draw_block::$15 4.0 -(byte*~) draw_block::$16 4.0 -(byte*~) draw_block::$17 4.0 -(byte*~) draw_block::$18 4.0 +(byte*~) draw_block::$11 20002.0 +(byte*~) draw_block::$12 20002.0 +(byte*~) draw_block::$13 20002.0 +(byte*~) draw_block::$14 20002.0 +(byte*~) draw_block::$15 20002.0 +(byte*~) draw_block::$16 20002.0 +(byte*~) draw_block::$17 20002.0 +(byte*~) draw_block::$18 20002.0 (byte) draw_block::color (byte) draw_block::drawtile -(byte) draw_block::drawtile#0 2.0 +(byte) draw_block::drawtile#0 10001.0 (byte) draw_block::tileno -(byte) draw_block::tileno#0 34.33333333333333 -(byte) draw_block::tileno#1 0.5 +(byte) draw_block::tileno#0 3667.333333333333 +(byte) draw_block::tileno#1 2500.25 (byte) draw_block::x -(byte) draw_block::x#0 34.33333333333333 +(byte) draw_block::x#0 3667.333333333333 (word) draw_block::x1 -(word) draw_block::x1#0 0.6666666666666666 +(word) draw_block::x1#0 3333.6666666666665 (byte) draw_block::y -(byte) draw_block::y#0 34.33333333333333 -(byte) draw_block::y#1 4.0 +(byte) draw_block::y#0 3667.333333333333 +(byte) draw_block::y#1 20002.0 (word) draw_block::z -(word) draw_block::z#0 4.0 -(word) draw_block::z#1 1.125 +(word) draw_block::z#0 20002.0 +(word) draw_block::z#1 5625.5625 (void()) init() (byte*) init::toD0181_gfx (byte) init::toD0181_return @@ -1113,44 +1113,44 @@ VARIABLE REGISTER WEIGHTS (void()) init_sprites() (void()) main() (byte) main::tile -(byte) main::tile#0 202.0 +(byte) main::tile#0 2002.0 (byte) main::x -(byte) main::x#1 22.0 -(byte) main::x#2 21.363636363636363 +(byte) main::x#1 202.0 +(byte) main::x#2 209.54545454545456 (byte) main::y -(byte) main::y#1 202.0 -(byte) main::y#2 63.125 +(byte) main::y#1 2002.0 +(byte) main::y#2 625.625 (byte) main::z -(byte) main::z#0 202.0 +(byte) main::z#0 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.5714285714285714 +(byte) memset::c#4 1428.7142857142858 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 2002.0 +(byte~) mul8u::$1 2.00000002E8 (byte) mul8u::a -(byte) mul8u::a#0 1001.0 -(byte) mul8u::a#1 2.0 -(byte) mul8u::a#2 667.6666666666667 +(byte) mul8u::a#0 1.00000001E8 +(byte) mul8u::a#1 55001.0 +(byte) mul8u::a#2 6.668333416666667E7 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 2002.0 -(word) mul8u::mb#2 429.0 +(word) mul8u::mb#1 2.00000002E8 +(word) mul8u::mb#2 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 2002.0 -(word) mul8u::res#2 500.83333333333337 -(word) mul8u::res#6 1001.0 +(word) mul8u::res#1 2.00000002E8 +(word) mul8u::res#2 5.0001667333333336E7 +(word) mul8u::res#6 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 4.0 +(word) mul8u::return#2 20002.0 Initial phi equivalence classes [ main::x#2 main::x#1 ] @@ -1781,100 +1781,100 @@ init_sprites: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] (byte) main::z#0 ← (byte) main::x#2 + (byte) main::y#2 [ main::x#2 main::y#2 main::z#0 ] ( main:2 [ main::x#2 main::y#2 main::z#0 ] ) always clobbers reg byte a +Statement [12] (byte) main::z#0 ← (byte) main::x#2 + (byte) main::y#2 [ main::x#2 main::y#2 main::z#0 ] ( main:2 [ main::x#2 main::y#2 main::z#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::y#2 main::y#1 ] -Statement [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 [ draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ) always clobbers reg byte a +Statement [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 [ draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ draw_block::x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ draw_block::y#0 ] -Statement [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 [ draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ) always clobbers reg byte a +Statement [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 [ draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ draw_block::tileno#1 ] -Statement [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 [ draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ) always clobbers reg byte a -Statement [24] (word) mul8u::return#2 ← (word) mul8u::res#2 [ draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [25] (word) draw_block::z#0 ← (word) mul8u::return#2 [ draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ) always clobbers reg byte a -Statement [26] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 [ draw_block::tileno#1 draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::z#1 ] ) always clobbers reg byte a -Statement [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 [ draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ) always clobbers reg byte a +Statement [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 [ draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [24] (word) mul8u::return#2 ← (word) mul8u::res#2 [ draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [25] (word) draw_block::z#0 ← (word) mul8u::return#2 [ draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [26] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 [ draw_block::tileno#1 draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 [ draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ draw_block::drawtile#0 ] -Statement [29] *((byte*~) draw_block::$11) ← (byte) draw_block::drawtile#0 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y +Statement [29] *((byte*~) draw_block::$11) ← (byte) draw_block::drawtile#0 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::y#2 main::y#1 ] -Statement [30] (byte*~) draw_block::$12 ← (const byte*) colors + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$12 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$12 ] ) always clobbers reg byte a -Statement [31] *((byte*~) draw_block::$12) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [32] (byte*~) draw_block::$13 ← (const byte*) screen+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$13 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$13 ] ) always clobbers reg byte a -Statement [33] *((byte*~) draw_block::$13) ← (byte) 1 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [34] (byte*~) draw_block::$14 ← (const byte*) colors+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$14 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$14 ] ) always clobbers reg byte a -Statement [35] *((byte*~) draw_block::$14) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [36] (byte*~) draw_block::$15 ← (const byte*) screen+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$15 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$15 ] ) always clobbers reg byte a -Statement [37] *((byte*~) draw_block::$15) ← (byte) 2 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [38] (byte*~) draw_block::$16 ← (const byte*) colors+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$16 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$16 ] ) always clobbers reg byte a -Statement [39] *((byte*~) draw_block::$16) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte*~) draw_block::$17 ← (const byte*) screen+(byte) $29 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$17 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$17 ] ) always clobbers reg byte a -Statement [41] *((byte*~) draw_block::$17) ← (byte) 3 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [42] (byte*~) draw_block::$18 ← (const byte*) colors+(byte) $29 + (word) draw_block::z#1 [ draw_block::$18 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::$18 ] ) always clobbers reg byte a -Statement [43] *((byte*~) draw_block::$18) ← (const byte) YELLOW [ ] ( main:2::draw_block:17 [ main::x#2 main::y#2 ] ) always clobbers reg byte a reg byte y -Statement [51] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [30] (byte*~) draw_block::$12 ← (const byte*) colors + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$12 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$12 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [31] *((byte*~) draw_block::$12) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [32] (byte*~) draw_block::$13 ← (const byte*) screen+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$13 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$13 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [33] *((byte*~) draw_block::$13) ← (byte) 1 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [34] (byte*~) draw_block::$14 ← (const byte*) colors+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$14 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$14 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [35] *((byte*~) draw_block::$14) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [36] (byte*~) draw_block::$15 ← (const byte*) screen+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$15 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$15 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [37] *((byte*~) draw_block::$15) ← (byte) 2 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [38] (byte*~) draw_block::$16 ← (const byte*) colors+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$16 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$16 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [39] *((byte*~) draw_block::$16) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [40] (byte*~) draw_block::$17 ← (const byte*) screen+(byte) $29 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$17 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$17 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [41] *((byte*~) draw_block::$17) ← (byte) 3 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [42] (byte*~) draw_block::$18 ← (const byte*) colors+(byte) $29 + (word) draw_block::z#1 [ draw_block::$18 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::$18 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [43] *((byte*~) draw_block::$18) ← (const byte) YELLOW [ ] ( main:2::draw_block:17 [ main::x#2 main::y#2 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [51] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [62] *((const byte*) D018) ← (const byte) init::toD0181_return#0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a +Statement [62] *((const byte*) D018) ← (const byte) init::toD0181_return#0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a Statement asm { lda#$5b sta$d011 } always clobbers reg byte a -Statement [64] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) BGCOL2) ← (const byte) RED [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [68] *((const byte*) BGCOL4) ← (const byte) GREEN [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [71] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::init:5::memset:58 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::init:5::memset:60 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a +Statement [64] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) BGCOL2) ← (const byte) RED [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [68] *((const byte*) BGCOL4) ← (const byte) GREEN [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [71] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::init:5::memset:58 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::init:5::memset:60 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ memset::c#4 ] -Statement [72] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [74] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [76] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [72] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [74] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [76] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:11 [ memset::c#4 ] -Statement [78] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [79] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [80] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [81] *((const byte*) SPRITES_XMSB) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [82] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [83] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [12] (byte) main::z#0 ← (byte) main::x#2 + (byte) main::y#2 [ main::x#2 main::y#2 main::z#0 ] ( main:2 [ main::x#2 main::y#2 main::z#0 ] ) always clobbers reg byte a -Statement [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 [ draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ) always clobbers reg byte a -Statement [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 [ draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ) always clobbers reg byte a -Statement [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 [ draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ) always clobbers reg byte a -Statement [24] (word) mul8u::return#2 ← (word) mul8u::res#2 [ draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [25] (word) draw_block::z#0 ← (word) mul8u::return#2 [ draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ) always clobbers reg byte a -Statement [26] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 [ draw_block::tileno#1 draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::z#1 ] ) always clobbers reg byte a -Statement [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 [ draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ) always clobbers reg byte a -Statement [29] *((byte*~) draw_block::$11) ← (byte) draw_block::drawtile#0 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [30] (byte*~) draw_block::$12 ← (const byte*) colors + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$12 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$12 ] ) always clobbers reg byte a -Statement [31] *((byte*~) draw_block::$12) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [32] (byte*~) draw_block::$13 ← (const byte*) screen+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$13 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$13 ] ) always clobbers reg byte a -Statement [33] *((byte*~) draw_block::$13) ← (byte) 1 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [34] (byte*~) draw_block::$14 ← (const byte*) colors+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$14 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$14 ] ) always clobbers reg byte a -Statement [35] *((byte*~) draw_block::$14) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [36] (byte*~) draw_block::$15 ← (const byte*) screen+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$15 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$15 ] ) always clobbers reg byte a -Statement [37] *((byte*~) draw_block::$15) ← (byte) 2 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [38] (byte*~) draw_block::$16 ← (const byte*) colors+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$16 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$16 ] ) always clobbers reg byte a -Statement [39] *((byte*~) draw_block::$16) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte*~) draw_block::$17 ← (const byte*) screen+(byte) $29 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$17 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$17 ] ) always clobbers reg byte a -Statement [41] *((byte*~) draw_block::$17) ← (byte) 3 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] ) always clobbers reg byte a reg byte y -Statement [42] (byte*~) draw_block::$18 ← (const byte*) colors+(byte) $29 + (word) draw_block::z#1 [ draw_block::$18 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::$18 ] ) always clobbers reg byte a -Statement [43] *((byte*~) draw_block::$18) ← (const byte) YELLOW [ ] ( main:2::draw_block:17 [ main::x#2 main::y#2 ] ) always clobbers reg byte a reg byte y -Statement [49] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [51] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [62] *((const byte*) D018) ← (const byte) init::toD0181_return#0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a +Statement [78] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [79] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [80] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [81] *((const byte*) SPRITES_XMSB) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [82] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [83] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [12] (byte) main::z#0 ← (byte) main::x#2 + (byte) main::y#2 [ main::x#2 main::y#2 main::z#0 ] ( main:2 [ main::x#2 main::y#2 main::z#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 [ draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::x#0 draw_block::y#0 draw_block::tileno#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 [ draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::y#0 draw_block::tileno#1 draw_block::x1#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 [ draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::y#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [24] (word) mul8u::return#2 ← (word) mul8u::res#2 [ draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::return#2 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [25] (word) draw_block::z#0 ← (word) mul8u::return#2 [ draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 draw_block::z#0 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [26] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 [ draw_block::tileno#1 draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 [ draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::drawtile#0 draw_block::$11 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [29] *((byte*~) draw_block::$11) ← (byte) draw_block::drawtile#0 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [30] (byte*~) draw_block::$12 ← (const byte*) colors + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$12 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$12 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [31] *((byte*~) draw_block::$12) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [32] (byte*~) draw_block::$13 ← (const byte*) screen+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$13 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$13 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [33] *((byte*~) draw_block::$13) ← (byte) 1 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [34] (byte*~) draw_block::$14 ← (const byte*) colors+(byte) 1 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$14 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$14 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [35] *((byte*~) draw_block::$14) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [36] (byte*~) draw_block::$15 ← (const byte*) screen+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$15 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$15 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [37] *((byte*~) draw_block::$15) ← (byte) 2 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [38] (byte*~) draw_block::$16 ← (const byte*) colors+(byte) $28 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$16 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$16 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [39] *((byte*~) draw_block::$16) ← (const byte) YELLOW [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [40] (byte*~) draw_block::$17 ← (const byte*) screen+(byte) $29 + (word) draw_block::z#1 [ draw_block::z#1 draw_block::$17 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 draw_block::$17 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [41] *((byte*~) draw_block::$17) ← (byte) 3 [ draw_block::z#1 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::z#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [42] (byte*~) draw_block::$18 ← (const byte*) colors+(byte) $29 + (word) draw_block::z#1 [ draw_block::$18 ] ( main:2::draw_block:17 [ main::x#2 main::y#2 draw_block::$18 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a +Statement [43] *((byte*~) draw_block::$18) ← (const byte) YELLOW [ ] ( main:2::draw_block:17 [ main::x#2 main::y#2 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y +Statement [49] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [51] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::draw_block:17::mul8u:23 [ main::x#2 main::y#2 draw_block::tileno#1 draw_block::x1#0 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { draw_block::tileno#0 = main::tile#0 } { draw_block::x#0 = main::x#2 } { draw_block::y#0 = main::y#2 } { mul8u::a#1 = draw_block::y#1 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [62] *((const byte*) D018) ← (const byte) init::toD0181_return#0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a Statement asm { lda#$5b sta$d011 } always clobbers reg byte a -Statement [64] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) BGCOL2) ← (const byte) RED [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [68] *((const byte*) BGCOL4) ← (const byte) GREEN [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [71] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::init:5::memset:58 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::init:5::memset:60 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [72] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [74] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [76] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [78] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [79] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [80] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [81] *((const byte*) SPRITES_XMSB) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [82] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a -Statement [83] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] ) always clobbers reg byte a +Statement [64] *((const byte*) BORDERCOL) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) BGCOL1) ← (const byte) BLACK [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) BGCOL2) ← (const byte) RED [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) BGCOL3) ← (const byte) BLUE [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [68] *((const byte*) BGCOL4) ← (const byte) GREEN [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [71] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::init:5::memset:58 [ memset::str#3 memset::c#4 memset::end#0 ] { } main:2::init:5::memset:60 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [72] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [74] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [76] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::init:5::memset:58 [ memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::init:5::memset:60 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [78] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [79] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [80] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [81] *((const byte*) SPRITES_XMSB) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [82] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a +Statement [83] *((const byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:2::init:5::init_sprites:56 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::x#2 main::x#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::y#2 main::y#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp[1]:4 , reg byte x , reg byte y , @@ -1907,30 +1907,31 @@ Potential registers zp[1]:46 [ mul8u::$1 ] : zp[1]:46 , reg byte a , reg byte x Potential registers zp[2]:47 [ memset::end#0 ] : zp[2]:47 , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 3,503.83: zp[2]:5 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,431: zp[2]:7 [ mul8u::mb#2 mul8u::mb#1 ] 2,002: zp[1]:46 [ mul8u::$1 ] 1,670.67: zp[1]:4 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp[2]:23 [ mul8u::return#2 ] -Uplift Scope [main] 265.12: zp[1]:3 [ main::y#2 main::y#1 ] 202: zp[1]:14 [ main::z#0 ] 202: zp[1]:15 [ main::tile#0 ] 43.36: zp[1]:2 [ main::x#2 main::x#1 ] -Uplift Scope [draw_block] 34.33: zp[1]:16 [ draw_block::tileno#0 ] 34.33: zp[1]:17 [ draw_block::x#0 ] 34.33: zp[1]:18 [ draw_block::y#0 ] 4: zp[1]:22 [ draw_block::y#1 ] 4: zp[2]:25 [ draw_block::z#0 ] 4: zp[2]:30 [ draw_block::$11 ] 4: zp[2]:32 [ draw_block::$12 ] 4: zp[2]:34 [ draw_block::$13 ] 4: zp[2]:36 [ draw_block::$14 ] 4: zp[2]:38 [ draw_block::$15 ] 4: zp[2]:40 [ draw_block::$16 ] 4: zp[2]:42 [ draw_block::$17 ] 4: zp[2]:44 [ draw_block::$18 ] 2: zp[1]:29 [ draw_block::drawtile#0 ] 1.12: zp[2]:27 [ draw_block::z#1 ] 0.67: zp[2]:20 [ draw_block::x1#0 ] 0.5: zp[1]:19 [ draw_block::tileno#1 ] -Uplift Scope [memset] 41.33: zp[2]:12 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:47 [ memset::end#0 ] 1.57: zp[1]:11 [ memset::c#4 ] 0: zp[2]:9 [ memset::str#3 ] +Uplift Scope [mul8u] 350,001,670.33: zp[2]:5 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 242,857,145.29: zp[2]:7 [ mul8u::mb#2 mul8u::mb#1 ] 200,000,002: zp[1]:46 [ mul8u::$1 ] 166,738,336.17: zp[1]:4 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 20,002: zp[2]:23 [ mul8u::return#2 ] +Uplift Scope [draw_block] 20,002: zp[1]:22 [ draw_block::y#1 ] 20,002: zp[2]:25 [ draw_block::z#0 ] 20,002: zp[2]:30 [ draw_block::$11 ] 20,002: zp[2]:32 [ draw_block::$12 ] 20,002: zp[2]:34 [ draw_block::$13 ] 20,002: zp[2]:36 [ draw_block::$14 ] 20,002: zp[2]:38 [ draw_block::$15 ] 20,002: zp[2]:40 [ draw_block::$16 ] 20,002: zp[2]:42 [ draw_block::$17 ] 20,002: zp[2]:44 [ draw_block::$18 ] 10,001: zp[1]:29 [ draw_block::drawtile#0 ] 5,625.56: zp[2]:27 [ draw_block::z#1 ] 3,667.33: zp[1]:16 [ draw_block::tileno#0 ] 3,667.33: zp[1]:17 [ draw_block::x#0 ] 3,667.33: zp[1]:18 [ draw_block::y#0 ] 3,333.67: zp[2]:20 [ draw_block::x1#0 ] 2,500.25: zp[1]:19 [ draw_block::tileno#1 ] +Uplift Scope [memset] 35,672.33: zp[2]:12 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:47 [ memset::end#0 ] 1,428.71: zp[1]:11 [ memset::c#4 ] 0: zp[2]:9 [ memset::str#3 ] +Uplift Scope [main] 2,627.62: zp[1]:3 [ main::y#2 main::y#1 ] 2,002: zp[1]:14 [ main::z#0 ] 2,002: zp[1]:15 [ main::tile#0 ] 411.55: zp[1]:2 [ main::x#2 main::x#1 ] Uplift Scope [init] Uplift Scope [init_sprites] Uplift Scope [] Uplifting [mul8u] best 92896 combination zp[2]:5 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:7 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:23 [ mul8u::return#2 ] -Uplifting [main] best 91896 combination zp[1]:3 [ main::y#2 main::y#1 ] reg byte a [ main::z#0 ] reg byte a [ main::tile#0 ] zp[1]:2 [ main::x#2 main::x#1 ] -Uplifting [draw_block] best 90987 combination reg byte a [ draw_block::tileno#0 ] reg byte y [ draw_block::x#0 ] reg byte x [ draw_block::y#0 ] reg byte a [ draw_block::y#1 ] zp[2]:25 [ draw_block::z#0 ] zp[2]:30 [ draw_block::$11 ] zp[2]:32 [ draw_block::$12 ] zp[2]:34 [ draw_block::$13 ] zp[2]:36 [ draw_block::$14 ] zp[2]:38 [ draw_block::$15 ] zp[2]:40 [ draw_block::$16 ] zp[2]:42 [ draw_block::$17 ] zp[2]:44 [ draw_block::$18 ] zp[1]:29 [ draw_block::drawtile#0 ] zp[2]:27 [ draw_block::z#1 ] zp[2]:20 [ draw_block::x1#0 ] zp[1]:19 [ draw_block::tileno#1 ] +Uplifting [draw_block] best 92286 combination reg byte a [ draw_block::y#1 ] zp[2]:25 [ draw_block::z#0 ] zp[2]:30 [ draw_block::$11 ] zp[2]:32 [ draw_block::$12 ] zp[2]:34 [ draw_block::$13 ] zp[2]:36 [ draw_block::$14 ] zp[2]:38 [ draw_block::$15 ] zp[2]:40 [ draw_block::$16 ] zp[2]:42 [ draw_block::$17 ] zp[2]:44 [ draw_block::$18 ] reg byte x [ draw_block::drawtile#0 ] zp[2]:27 [ draw_block::z#1 ] reg byte y [ draw_block::tileno#0 ] reg byte x [ draw_block::x#0 ] zp[1]:18 [ draw_block::y#0 ] zp[2]:20 [ draw_block::x1#0 ] zp[1]:19 [ draw_block::tileno#1 ] Limited combination testing to 100 combinations of 1296 possible. -Uplifting [memset] best 90971 combination zp[2]:12 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:47 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:9 [ memset::str#3 ] -Uplifting [init] best 90971 combination -Uplifting [init_sprites] best 90971 combination -Uplifting [] best 90971 combination +Uplifting [memset] best 92270 combination zp[2]:12 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:47 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:9 [ memset::str#3 ] +Uplifting [main] best 91270 combination zp[1]:3 [ main::y#2 main::y#1 ] reg byte a [ main::z#0 ] reg byte y [ main::tile#0 ] zp[1]:2 [ main::x#2 main::x#1 ] +Uplifting [init] best 91270 combination +Uplifting [init_sprites] best 91270 combination +Uplifting [] best 91270 combination +Attempting to uplift remaining variables inzp[1]:18 [ draw_block::y#0 ] +Uplifting [draw_block] best 91270 combination zp[1]:18 [ draw_block::y#0 ] Attempting to uplift remaining variables inzp[1]:3 [ main::y#2 main::y#1 ] -Uplifting [main] best 90971 combination zp[1]:3 [ main::y#2 main::y#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::x#2 main::x#1 ] -Uplifting [main] best 90971 combination zp[1]:2 [ main::x#2 main::x#1 ] -Attempting to uplift remaining variables inzp[1]:29 [ draw_block::drawtile#0 ] -Uplifting [draw_block] best 90967 combination reg byte x [ draw_block::drawtile#0 ] +Uplifting [main] best 91270 combination zp[1]:3 [ main::y#2 main::y#1 ] Attempting to uplift remaining variables inzp[1]:19 [ draw_block::tileno#1 ] -Uplifting [draw_block] best 90967 combination zp[1]:19 [ draw_block::tileno#1 ] +Uplifting [draw_block] best 91266 combination reg byte y [ draw_block::tileno#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::x#2 main::x#1 ] +Uplifting [main] best 91266 combination zp[1]:2 [ main::x#2 main::x#1 ] +Coalescing zero page register [ zp[1]:3 [ main::y#2 main::y#1 ] ] with [ zp[1]:18 [ draw_block::y#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:5 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp[2]:23 [ mul8u::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ memset::str#3 ] ] with [ zp[2]:12 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ draw_block::x1#0 ] ] with [ zp[2]:27 [ draw_block::z#1 ] ] - score: 1 @@ -1940,15 +1941,14 @@ Coalescing zero page register [ zp[2]:9 [ memset::str#3 memset::dst#2 memset::ds Coalescing zero page register [ zp[2]:30 [ draw_block::$11 ] ] with [ zp[2]:7 [ mul8u::mb#2 mul8u::mb#1 ] ] Coalescing zero page register [ zp[2]:47 [ memset::end#0 ] ] with [ zp[2]:20 [ draw_block::x1#0 draw_block::z#1 draw_block::$18 ] ] Allocated (was zp[2]:9) zp[2]:4 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 draw_block::z#0 ] -Allocated (was zp[1]:19) zp[1]:6 [ draw_block::tileno#1 ] -Allocated (was zp[2]:30) zp[2]:7 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] -Allocated (was zp[2]:32) zp[2]:9 [ draw_block::$12 ] -Allocated (was zp[2]:34) zp[2]:11 [ draw_block::$13 ] -Allocated (was zp[2]:36) zp[2]:13 [ draw_block::$14 ] -Allocated (was zp[2]:38) zp[2]:15 [ draw_block::$15 ] -Allocated (was zp[2]:40) zp[2]:17 [ draw_block::$16 ] -Allocated (was zp[2]:42) zp[2]:19 [ draw_block::$17 ] -Allocated (was zp[2]:47) zp[2]:21 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] +Allocated (was zp[2]:30) zp[2]:6 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] +Allocated (was zp[2]:32) zp[2]:8 [ draw_block::$12 ] +Allocated (was zp[2]:34) zp[2]:10 [ draw_block::$13 ] +Allocated (was zp[2]:36) zp[2]:12 [ draw_block::$14 ] +Allocated (was zp[2]:38) zp[2]:14 [ draw_block::$15 ] +Allocated (was zp[2]:40) zp[2]:16 [ draw_block::$16 ] +Allocated (was zp[2]:42) zp[2]:18 [ draw_block::$17 ] +Allocated (was zp[2]:47) zp[2]:20 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -2052,14 +2052,13 @@ main: { lda.z x clc adc.z y - // [13] (byte) main::tile#0 ← *((const byte*) level_address + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda level_address,y + // [13] (byte) main::tile#0 ← *((const byte*) level_address + (byte) main::z#0) -- vbuyy=pbuc1_derefidx_vbuaa + tax + ldy level_address,x // [14] (byte) draw_block::tileno#0 ← (byte) main::tile#0 - // [15] (byte) draw_block::x#0 ← (byte) main::x#2 -- vbuyy=vbuz1 - ldy.z x - // [16] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 - ldx.z y + // [15] (byte) draw_block::x#0 ← (byte) main::x#2 -- vbuxx=vbuz1 + ldx.z x + // [16] (byte) draw_block::y#0 ← (byte) main::y#2 // [17] call draw_block jsr draw_block jmp __b6 @@ -2073,33 +2072,34 @@ main: { jmp __b2 } // draw_block -// draw_block(byte register(A) tileno, byte register(Y) x, byte register(X) y) +// draw_block(byte register(Y) tileno, byte register(X) x, byte zp(3) y) draw_block: { - .label tileno = 6 - .label x1 = $15 + .label y = 3 + .label x1 = $14 .label z = 4 - .label z_1 = $15 - .label __11 = 7 - .label __12 = 9 - .label __13 = $b - .label __14 = $d - .label __15 = $f - .label __16 = $11 - .label __17 = $13 - .label __18 = $15 - // [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 -- vbuz1=vbuaa_rol_2 - asl - asl - sta.z tileno - // [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 -- vwuz1=vbuyy_rol_1 + .label z_1 = $14 + .label __11 = 6 + .label __12 = 8 + .label __13 = $a + .label __14 = $c + .label __15 = $e + .label __16 = $10 + .label __17 = $12 + .label __18 = $14 + // [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 -- vbuyy=vbuyy_rol_2 tya asl + asl + tay + // [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 -- vwuz1=vbuxx_rol_1 + txa + asl sta.z x1 lda #0 rol sta.z x1+1 - // [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z y asl // [22] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa tax @@ -2120,8 +2120,7 @@ draw_block: { lda.z z_1+1 adc.z z+1 sta.z z_1+1 - // [27] (byte) draw_block::drawtile#0 ← *((const byte*) tileset + (byte) draw_block::tileno#1) -- vbuxx=pbuc1_derefidx_vbuz1 - ldy.z tileno + // [27] (byte) draw_block::drawtile#0 ← *((const byte*) tileset + (byte) draw_block::tileno#1) -- vbuxx=pbuc1_derefidx_vbuyy ldx tileset,y // [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 -- pbuz1=pbuc1_plus_vwuz2 lda.z z_1 @@ -2230,7 +2229,7 @@ draw_block: { // mul8u(byte register(X) a) mul8u: { .const b = $28 - .label mb = 7 + .label mb = 6 .label res = 4 .label return = 4 // [46] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] @@ -2373,7 +2372,7 @@ init: { // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zp(4) str, byte register(X) c) memset: { - .label end = $15 + .label end = $14 .label dst = 4 .label str = 4 jmp __b1 @@ -2560,32 +2559,32 @@ FINAL SYMBOL TABLE (const byte*) charset = (byte*) 8192 (const byte*) colors = (byte*) 55296 (void()) draw_block((byte) draw_block::tileno , (byte) draw_block::x , (byte) draw_block::y , (byte) draw_block::color) -(byte*~) draw_block::$11 zp[2]:7 4.0 -(byte*~) draw_block::$12 zp[2]:9 4.0 -(byte*~) draw_block::$13 zp[2]:11 4.0 -(byte*~) draw_block::$14 zp[2]:13 4.0 -(byte*~) draw_block::$15 zp[2]:15 4.0 -(byte*~) draw_block::$16 zp[2]:17 4.0 -(byte*~) draw_block::$17 zp[2]:19 4.0 -(byte*~) draw_block::$18 zp[2]:21 4.0 +(byte*~) draw_block::$11 zp[2]:6 20002.0 +(byte*~) draw_block::$12 zp[2]:8 20002.0 +(byte*~) draw_block::$13 zp[2]:10 20002.0 +(byte*~) draw_block::$14 zp[2]:12 20002.0 +(byte*~) draw_block::$15 zp[2]:14 20002.0 +(byte*~) draw_block::$16 zp[2]:16 20002.0 +(byte*~) draw_block::$17 zp[2]:18 20002.0 +(byte*~) draw_block::$18 zp[2]:20 20002.0 (label) draw_block::@1 (label) draw_block::@return (byte) draw_block::color (byte) draw_block::drawtile -(byte) draw_block::drawtile#0 reg byte x 2.0 +(byte) draw_block::drawtile#0 reg byte x 10001.0 (byte) draw_block::tileno -(byte) draw_block::tileno#0 reg byte a 34.33333333333333 -(byte) draw_block::tileno#1 tileno zp[1]:6 0.5 +(byte) draw_block::tileno#0 reg byte y 3667.333333333333 +(byte) draw_block::tileno#1 reg byte y 2500.25 (byte) draw_block::x -(byte) draw_block::x#0 reg byte y 34.33333333333333 +(byte) draw_block::x#0 reg byte x 3667.333333333333 (word) draw_block::x1 -(word) draw_block::x1#0 x1 zp[2]:21 0.6666666666666666 +(word) draw_block::x1#0 x1 zp[2]:20 3333.6666666666665 (byte) draw_block::y -(byte) draw_block::y#0 reg byte x 34.33333333333333 -(byte) draw_block::y#1 reg byte a 4.0 +(byte) draw_block::y#0 y zp[1]:3 3667.333333333333 +(byte) draw_block::y#1 reg byte a 20002.0 (word) draw_block::z -(word) draw_block::z#0 z zp[2]:4 4.0 -(word) draw_block::z#1 z_1 zp[2]:21 1.125 +(word) draw_block::z#0 z zp[2]:4 20002.0 +(word) draw_block::z#1 z_1 zp[2]:20 5625.5625 (void()) init() (label) init::@1 (label) init::@2 @@ -2607,83 +2606,82 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@6 (byte) main::tile -(byte) main::tile#0 reg byte a 202.0 +(byte) main::tile#0 reg byte y 2002.0 (byte) main::x -(byte) main::x#1 x zp[1]:2 22.0 -(byte) main::x#2 x zp[1]:2 21.363636363636363 +(byte) main::x#1 x zp[1]:2 202.0 +(byte) main::x#2 x zp[1]:2 209.54545454545456 (byte) main::y -(byte) main::y#1 y zp[1]:3 202.0 -(byte) main::y#2 y zp[1]:3 63.125 +(byte) main::y#1 y zp[1]:3 2002.0 +(byte) main::y#2 y zp[1]:3 625.625 (byte) main::z -(byte) main::z#0 reg byte a 202.0 +(byte) main::z#0 reg byte a 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 1428.7142857142858 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:4 4.0 +(byte*) memset::dst#1 dst zp[2]:4 20002.0 +(byte*) memset::dst#2 dst zp[2]:4 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:4 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:21 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:20 1833.6666666666665 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:4 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 55001.0 +(byte) mul8u::a#2 reg byte x 6.668333416666667E7 (byte) mul8u::b (const byte) mul8u::b#0 b = (byte) $28 (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:7 2002.0 -(word) mul8u::mb#2 mb zp[2]:7 429.0 +(word) mul8u::mb#1 mb zp[2]:6 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:6 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:4 2002.0 -(word) mul8u::res#2 res zp[2]:4 500.83333333333337 -(word) mul8u::res#6 res zp[2]:4 1001.0 +(word) mul8u::res#1 res zp[2]:4 2.00000002E8 +(word) mul8u::res#2 res zp[2]:4 5.0001667333333336E7 +(word) mul8u::res#6 res zp[2]:4 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:4 4.0 +(word) mul8u::return#2 return zp[2]:4 20002.0 (const byte*) screen = (byte*) 1024 (const byte*) tileset = (byte*) 10240 zp[1]:2 [ main::x#2 main::x#1 ] -zp[1]:3 [ main::y#2 main::y#1 ] +zp[1]:3 [ main::y#2 main::y#1 draw_block::y#0 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:4 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 draw_block::z#0 ] reg byte x [ memset::c#4 ] reg byte a [ main::z#0 ] -reg byte a [ main::tile#0 ] -reg byte a [ draw_block::tileno#0 ] -reg byte y [ draw_block::x#0 ] -reg byte x [ draw_block::y#0 ] -zp[1]:6 [ draw_block::tileno#1 ] +reg byte y [ main::tile#0 ] +reg byte y [ draw_block::tileno#0 ] +reg byte x [ draw_block::x#0 ] +reg byte y [ draw_block::tileno#1 ] reg byte a [ draw_block::y#1 ] reg byte x [ draw_block::drawtile#0 ] -zp[2]:7 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] -zp[2]:9 [ draw_block::$12 ] -zp[2]:11 [ draw_block::$13 ] -zp[2]:13 [ draw_block::$14 ] -zp[2]:15 [ draw_block::$15 ] -zp[2]:17 [ draw_block::$16 ] -zp[2]:19 [ draw_block::$17 ] +zp[2]:6 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] +zp[2]:8 [ draw_block::$12 ] +zp[2]:10 [ draw_block::$13 ] +zp[2]:12 [ draw_block::$14 ] +zp[2]:14 [ draw_block::$15 ] +zp[2]:16 [ draw_block::$16 ] +zp[2]:18 [ draw_block::$17 ] reg byte a [ mul8u::$1 ] -zp[2]:21 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] +zp[2]:20 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] FINAL ASSEMBLER -Score: 75798 +Score: 75497 // File Comments // Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2 @@ -2773,15 +2771,14 @@ main: { clc adc.z y // tile = level_address[z] - // [13] (byte) main::tile#0 ← *((const byte*) level_address + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda level_address,y + // [13] (byte) main::tile#0 ← *((const byte*) level_address + (byte) main::z#0) -- vbuyy=pbuc1_derefidx_vbuaa + tax + ldy level_address,x // draw_block(tile,x,y,YELLOW) // [14] (byte) draw_block::tileno#0 ← (byte) main::tile#0 - // [15] (byte) draw_block::x#0 ← (byte) main::x#2 -- vbuyy=vbuz1 - ldy.z x - // [16] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 - ldx.z y + // [15] (byte) draw_block::x#0 ← (byte) main::x#2 -- vbuxx=vbuz1 + ldx.z x + // [16] (byte) draw_block::y#0 ← (byte) main::y#2 // [17] call draw_block jsr draw_block // main::@6 @@ -2793,36 +2790,37 @@ main: { jmp __b2 } // draw_block -// draw_block(byte register(A) tileno, byte register(Y) x, byte register(X) y) +// draw_block(byte register(Y) tileno, byte register(X) x, byte zp(3) y) draw_block: { - .label tileno = 6 - .label x1 = $15 + .label y = 3 + .label x1 = $14 .label z = 4 - .label z_1 = $15 - .label __11 = 7 - .label __12 = 9 - .label __13 = $b - .label __14 = $d - .label __15 = $f - .label __16 = $11 - .label __17 = $13 - .label __18 = $15 + .label z_1 = $14 + .label __11 = 6 + .label __12 = 8 + .label __13 = $a + .label __14 = $c + .label __15 = $e + .label __16 = $10 + .label __17 = $12 + .label __18 = $14 // tileno = tileno << 2 - // [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 -- vbuz1=vbuaa_rol_2 - asl - asl - sta.z tileno - // x1 = x << 1 - // [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 -- vwuz1=vbuyy_rol_1 + // [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte) 2 -- vbuyy=vbuyy_rol_2 tya asl + asl + tay + // x1 = x << 1 + // [20] (word) draw_block::x1#0 ← (byte) draw_block::x#0 << (byte) 1 -- vwuz1=vbuxx_rol_1 + txa + asl sta.z x1 lda #0 rol sta.z x1+1 // y = y << 1 - // [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [21] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z y asl // mul8u(y,40) // [22] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa @@ -2845,8 +2843,7 @@ draw_block: { adc.z z+1 sta.z z_1+1 // drawtile = tileset[tileno] - // [27] (byte) draw_block::drawtile#0 ← *((const byte*) tileset + (byte) draw_block::tileno#1) -- vbuxx=pbuc1_derefidx_vbuz1 - ldy.z tileno + // [27] (byte) draw_block::drawtile#0 ← *((const byte*) tileset + (byte) draw_block::tileno#1) -- vbuxx=pbuc1_derefidx_vbuyy ldx tileset,y // screen[z] = drawtile // [28] (byte*~) draw_block::$11 ← (const byte*) screen + (word) draw_block::z#1 -- pbuz1=pbuc1_plus_vwuz2 @@ -2955,7 +2952,7 @@ draw_block: { // mul8u(byte register(X) a) mul8u: { .const b = $28 - .label mb = 7 + .label mb = 6 .label res = 4 .label return = 4 // [46] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] @@ -3089,7 +3086,7 @@ init: { // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zp(4) str, byte register(X) c) memset: { - .label end = $15 + .label end = $14 .label dst = 4 .label str = 4 // memset::@1 diff --git a/src/test/ref/scan-desire-problem.sym b/src/test/ref/scan-desire-problem.sym index 4f6ac0934..a7dc76c3b 100644 --- a/src/test/ref/scan-desire-problem.sym +++ b/src/test/ref/scan-desire-problem.sym @@ -22,32 +22,32 @@ (const byte*) charset = (byte*) 8192 (const byte*) colors = (byte*) 55296 (void()) draw_block((byte) draw_block::tileno , (byte) draw_block::x , (byte) draw_block::y , (byte) draw_block::color) -(byte*~) draw_block::$11 zp[2]:7 4.0 -(byte*~) draw_block::$12 zp[2]:9 4.0 -(byte*~) draw_block::$13 zp[2]:11 4.0 -(byte*~) draw_block::$14 zp[2]:13 4.0 -(byte*~) draw_block::$15 zp[2]:15 4.0 -(byte*~) draw_block::$16 zp[2]:17 4.0 -(byte*~) draw_block::$17 zp[2]:19 4.0 -(byte*~) draw_block::$18 zp[2]:21 4.0 +(byte*~) draw_block::$11 zp[2]:6 20002.0 +(byte*~) draw_block::$12 zp[2]:8 20002.0 +(byte*~) draw_block::$13 zp[2]:10 20002.0 +(byte*~) draw_block::$14 zp[2]:12 20002.0 +(byte*~) draw_block::$15 zp[2]:14 20002.0 +(byte*~) draw_block::$16 zp[2]:16 20002.0 +(byte*~) draw_block::$17 zp[2]:18 20002.0 +(byte*~) draw_block::$18 zp[2]:20 20002.0 (label) draw_block::@1 (label) draw_block::@return (byte) draw_block::color (byte) draw_block::drawtile -(byte) draw_block::drawtile#0 reg byte x 2.0 +(byte) draw_block::drawtile#0 reg byte x 10001.0 (byte) draw_block::tileno -(byte) draw_block::tileno#0 reg byte a 34.33333333333333 -(byte) draw_block::tileno#1 tileno zp[1]:6 0.5 +(byte) draw_block::tileno#0 reg byte y 3667.333333333333 +(byte) draw_block::tileno#1 reg byte y 2500.25 (byte) draw_block::x -(byte) draw_block::x#0 reg byte y 34.33333333333333 +(byte) draw_block::x#0 reg byte x 3667.333333333333 (word) draw_block::x1 -(word) draw_block::x1#0 x1 zp[2]:21 0.6666666666666666 +(word) draw_block::x1#0 x1 zp[2]:20 3333.6666666666665 (byte) draw_block::y -(byte) draw_block::y#0 reg byte x 34.33333333333333 -(byte) draw_block::y#1 reg byte a 4.0 +(byte) draw_block::y#0 y zp[1]:3 3667.333333333333 +(byte) draw_block::y#1 reg byte a 20002.0 (word) draw_block::z -(word) draw_block::z#0 z zp[2]:4 4.0 -(word) draw_block::z#1 z_1 zp[2]:21 1.125 +(word) draw_block::z#0 z zp[2]:4 20002.0 +(word) draw_block::z#1 z_1 zp[2]:20 5625.5625 (void()) init() (label) init::@1 (label) init::@2 @@ -69,76 +69,75 @@ (label) main::@5 (label) main::@6 (byte) main::tile -(byte) main::tile#0 reg byte a 202.0 +(byte) main::tile#0 reg byte y 2002.0 (byte) main::x -(byte) main::x#1 x zp[1]:2 22.0 -(byte) main::x#2 x zp[1]:2 21.363636363636363 +(byte) main::x#1 x zp[1]:2 202.0 +(byte) main::x#2 x zp[1]:2 209.54545454545456 (byte) main::y -(byte) main::y#1 y zp[1]:3 202.0 -(byte) main::y#2 y zp[1]:3 63.125 +(byte) main::y#1 y zp[1]:3 2002.0 +(byte) main::y#2 y zp[1]:3 625.625 (byte) main::z -(byte) main::z#0 reg byte a 202.0 +(byte) main::z#0 reg byte a 2002.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.5714285714285714 +(byte) memset::c#4 reg byte x 1428.7142857142858 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:4 4.0 +(byte*) memset::dst#1 dst zp[2]:4 20002.0 +(byte*) memset::dst#2 dst zp[2]:4 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:4 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:21 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:20 1833.6666666666665 (word) memset::num (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:4 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 667.6666666666667 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 55001.0 +(byte) mul8u::a#2 reg byte x 6.668333416666667E7 (byte) mul8u::b (const byte) mul8u::b#0 b = (byte) $28 (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:7 2002.0 -(word) mul8u::mb#2 mb zp[2]:7 429.0 +(word) mul8u::mb#1 mb zp[2]:6 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:6 4.285714328571428E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:4 2002.0 -(word) mul8u::res#2 res zp[2]:4 500.83333333333337 -(word) mul8u::res#6 res zp[2]:4 1001.0 +(word) mul8u::res#1 res zp[2]:4 2.00000002E8 +(word) mul8u::res#2 res zp[2]:4 5.0001667333333336E7 +(word) mul8u::res#6 res zp[2]:4 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:4 4.0 +(word) mul8u::return#2 return zp[2]:4 20002.0 (const byte*) screen = (byte*) 1024 (const byte*) tileset = (byte*) 10240 zp[1]:2 [ main::x#2 main::x#1 ] -zp[1]:3 [ main::y#2 main::y#1 ] +zp[1]:3 [ main::y#2 main::y#1 draw_block::y#0 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:4 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 draw_block::z#0 ] reg byte x [ memset::c#4 ] reg byte a [ main::z#0 ] -reg byte a [ main::tile#0 ] -reg byte a [ draw_block::tileno#0 ] -reg byte y [ draw_block::x#0 ] -reg byte x [ draw_block::y#0 ] -zp[1]:6 [ draw_block::tileno#1 ] +reg byte y [ main::tile#0 ] +reg byte y [ draw_block::tileno#0 ] +reg byte x [ draw_block::x#0 ] +reg byte y [ draw_block::tileno#1 ] reg byte a [ draw_block::y#1 ] reg byte x [ draw_block::drawtile#0 ] -zp[2]:7 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] -zp[2]:9 [ draw_block::$12 ] -zp[2]:11 [ draw_block::$13 ] -zp[2]:13 [ draw_block::$14 ] -zp[2]:15 [ draw_block::$15 ] -zp[2]:17 [ draw_block::$16 ] -zp[2]:19 [ draw_block::$17 ] +zp[2]:6 [ draw_block::$11 mul8u::mb#2 mul8u::mb#1 ] +zp[2]:8 [ draw_block::$12 ] +zp[2]:10 [ draw_block::$13 ] +zp[2]:12 [ draw_block::$14 ] +zp[2]:14 [ draw_block::$15 ] +zp[2]:16 [ draw_block::$16 ] +zp[2]:18 [ draw_block::$17 ] reg byte a [ mul8u::$1 ] -zp[2]:21 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] +zp[2]:20 [ memset::end#0 draw_block::x1#0 draw_block::z#1 draw_block::$18 ] diff --git a/src/test/ref/screen-center-angle.log b/src/test/ref/screen-center-angle.log index d34e1d365..ee3b11534 100644 --- a/src/test/ref/screen-center-angle.log +++ b/src/test/ref/screen-center-angle.log @@ -1353,97 +1353,97 @@ Inversing boolean not [68] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 Inversing boolean not [79] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [78] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 Inversing boolean not [103] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [102] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 -Alias (byte) print_byte_at::b#0 = (byte~) print_word_at::$0 -Alias (word) print_word_at::w#2 = (word) print_word_at::w#3 -Alias (byte*) print_word_at::at#2 = (byte*) print_word_at::at#3 -Alias (byte) print_byte_at::b#1 = (byte~) print_word_at::$2 -Alias (byte*) print_byte_at::at#1 = (byte*~) print_word_at::$3 -Alias (word) print_word_at::w#0 = (word~) print_dword_at::$0 -Alias (dword) print_dword_at::dw#1 = (dword) print_dword_at::dw#2 -Alias (byte*) print_dword_at::at#1 = (byte*) print_dword_at::at#2 -Alias (word) print_word_at::w#1 = (word~) print_dword_at::$2 -Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 -Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 -Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 -Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (dword) clock::return#2 = (dword) clock::return#4 -Alias (dword) main::cyclecount#0 = (dword~) main::$5 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1 +Alias print_byte_at::b#0 = print_word_at::$0 +Alias print_word_at::w#2 = print_word_at::w#3 +Alias print_word_at::at#2 = print_word_at::at#3 +Alias print_byte_at::b#1 = print_word_at::$2 +Alias print_byte_at::at#1 = print_word_at::$3 +Alias print_word_at::w#0 = print_dword_at::$0 +Alias print_dword_at::dw#1 = print_dword_at::dw#2 +Alias print_dword_at::at#1 = print_dword_at::at#2 +Alias print_word_at::w#1 = print_dword_at::$2 +Alias print_word_at::at#1 = print_dword_at::$3 +Alias print_byte_at::b#2 = print_byte_at::b#3 +Alias print_byte_at::at#2 = print_byte_at::at#3 +Alias print_char_at::at#1 = print_byte_at::$3 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias clock::return#2 = clock::return#4 +Alias main::cyclecount#0 = main::$5 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 Successful SSA optimization Pass2AliasElimination -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1 Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4 @@ -2145,128 +2145,128 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 VARIABLE REGISTER WEIGHTS (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (dword()) clock() (dword) clock::return -(dword) clock::return#0 1.3333333333333333 -(dword) clock::return#2 4.0 +(dword) clock::return#0 37.33333333333333 +(dword) clock::return#2 22.0 (void()) clock_start() (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 84.16666666666666 +(byte) init_angle_screen::ang_w#0 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 8.96 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) main() -(dword~) main::$4 4.0 +(dword~) main::$4 22.0 (dword) main::cyclecount -(dword) main::cyclecount#0 4.0 +(dword) main::cyclecount#0 22.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -2274,36 +2274,36 @@ VARIABLE REGISTER WEIGHTS (byte) main::toD0182_return (byte*) main::toD0182_screen (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 20002.0 +(byte~) print_byte_at::$2 10001.0 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 4.0 -(byte*) print_byte_at::at#1 4.0 -(byte*) print_byte_at::at#2 1.3333333333333333 +(byte*) print_byte_at::at#0 2002.0 +(byte*) print_byte_at::at#1 2002.0 +(byte*) print_byte_at::at#2 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 2.0 -(byte) print_byte_at::b#1 2.0 -(byte) print_byte_at::b#2 1.6 +(byte) print_byte_at::b#0 1001.0 +(byte) print_byte_at::b#1 1001.0 +(byte) print_byte_at::b#2 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 2.0 -(byte*) print_char_at::at#2 6.0 +(byte*) print_char_at::at#0 20002.0 +(byte*) print_char_at::at#1 10001.0 +(byte*) print_char_at::at#2 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 2.0 -(byte) print_char_at::ch#1 4.0 -(byte) print_char_at::ch#2 6.0 +(byte) print_char_at::ch#0 10001.0 +(byte) print_char_at::ch#1 20002.0 +(byte) print_char_at::ch#2 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 2.0 +(dword) print_dword_at::dw#0 71.0 (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (byte*) print_word_at::at -(byte*) print_word_at::at#2 0.8 +(byte*) print_word_at::at#2 400.4 (word) print_word_at::w -(word) print_word_at::w#0 4.0 -(word) print_word_at::w#1 4.0 -(word) print_word_at::w#2 2.0 +(word) print_word_at::w#0 202.0 +(word) print_word_at::w#1 202.0 +(word) print_word_at::w#2 551.0 Initial phi equivalence classes [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] @@ -3542,183 +3542,177 @@ CORDIC_ATAN2_ANGLES_16: print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] -Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:60 [ print_byte_at::$2 ] -Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y +Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a -Statement [53] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [53] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [54] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [58] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [54] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [58] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [59] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [60] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [59] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [60] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [61] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [62] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [63] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [64] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [66] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [67] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [68] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [69] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [61] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [63] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [64] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [66] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [68] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [70] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:82 [ init_angle_screen::ang_w#0 ] -Statement [71] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a +Statement [71] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:82 [ init_angle_screen::ang_w#0 ] -Statement [72] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [73] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [74] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [75] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [76] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [72] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [73] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [74] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [75] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [76] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [98] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [108] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [115] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [120] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [121] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [124] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [131] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [98] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [120] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [121] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [124] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [131] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [133] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [133] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [134] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [134] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:88 [ init_font_hex::$0 ] -Statement [140] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [142] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [143] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [144] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [147] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y -Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a -Statement [53] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [54] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [58] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [59] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [60] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [61] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [62] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [63] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [64] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [66] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [67] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [68] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [69] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [71] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [72] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [73] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [74] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [75] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [76] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [98] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [108] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [115] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [120] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [121] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [124] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [126] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [131] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [133] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [134] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [140] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [142] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [143] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [144] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [147] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [140] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [143] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [144] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [147] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [53] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [54] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [58] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [59] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [60] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [61] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [63] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [64] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [66] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [67] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [68] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [70] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [71] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [72] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [73] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [74] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [75] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [76] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [98] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [120] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [121] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:65 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [124] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [126] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [131] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [133] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [134] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [140] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [143] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [144] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [147] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_word_at::at#2 ] : zp[2]:4 , Potential registers zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] : zp[1]:6 , reg byte x , @@ -3774,31 +3768,31 @@ Potential registers zp[1]:90 [ init_font_hex::$2 ] : zp[1]:90 , reg byte a , reg Potential registers zp[1]:91 [ init_font_hex::idx#3 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:86 [ atan2_16::$23 ] 2,002: zp[1]:87 [ atan2_16::$22 ] 1,710.04: zp[1]:23 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:76 [ atan2_16::return#2 ] 50: zp[2]:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:72 [ atan2_16::x#0 ] 2.72: zp[2]:74 [ atan2_16::y#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:41 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:89 [ init_font_hex::$1 ] 2,002: zp[1]:90 [ init_font_hex::$2 ] 1,151.6: zp[1]:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:88 [ init_font_hex::$0 ] 202: zp[1]:91 [ init_font_hex::idx#3 ] 165.86: zp[2]:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:65 [ init_angle_screen::$3 ] 202: zp[1]:66 [ init_angle_screen::$4 ] 202: zp[1]:69 [ init_angle_screen::$7 ] 202: zp[2]:78 [ init_angle_screen::angle_w#0 ] 202: zp[2]:80 [ init_angle_screen::$11 ] 202: zp[1]:83 [ init_angle_screen::$13 ] 202: zp[1]:84 [ init_angle_screen::$14 ] 202: zp[1]:85 [ init_angle_screen::$15 ] 129.86: zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 84.17: zp[1]:82 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:70 [ init_angle_screen::yw#0 ] 33.67: zp[2]:67 [ init_angle_screen::xw#0 ] 21.23: zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 16.29: zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 14.83: zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] -Uplift Scope [print_char_at] 12: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplift Scope [print_byte_at] 9.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp[1]:59 [ print_byte_at::$0 ] 2: zp[1]:60 [ print_byte_at::$2 ] -Uplift Scope [print_word_at] 10: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp[2]:4 [ print_word_at::at#2 ] -Uplift Scope [main] 4: zp[4]:47 [ main::$4 ] 4: zp[4]:51 [ main::cyclecount#0 ] -Uplift Scope [clock] 4: zp[4]:43 [ clock::return#2 ] 1.33: zp[4]:61 [ clock::return#0 ] -Uplift Scope [print_dword_at] 2: zp[4]:55 [ print_dword_at::dw#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:86 [ atan2_16::$23 ] 200,000,002: zp[1]:87 [ atan2_16::$22 ] 170,833,335.04: zp[1]:23 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:76 [ atan2_16::return#2 ] 10,789.61: zp[2]:72 [ atan2_16::x#0 ] 10,250.12: zp[2]:74 [ atan2_16::y#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:41 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:89 [ init_font_hex::$1 ] 200,002: zp[1]:90 [ init_font_hex::$2 ] 115,001.6: zp[1]:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:88 [ init_font_hex::$0 ] 20,002: zp[1]:91 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [print_char_at] 150,006: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:65 [ init_angle_screen::$3 ] 20,002: zp[1]:66 [ init_angle_screen::$4 ] 20,002: zp[1]:69 [ init_angle_screen::$7 ] 20,002: zp[2]:78 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:80 [ init_angle_screen::$11 ] 20,002: zp[1]:83 [ init_angle_screen::$13 ] 20,002: zp[1]:84 [ init_angle_screen::$14 ] 20,002: zp[1]:85 [ init_angle_screen::$15 ] 12,858.43: zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:82 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:70 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:67 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,547.49: zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] 1,417.33: zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] +Uplift Scope [print_byte_at] 20,002: zp[1]:59 [ print_byte_at::$0 ] 10,001: zp[1]:60 [ print_byte_at::$2 ] 7,671.33: zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 6,402.8: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplift Scope [print_word_at] 955: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 400.4: zp[2]:4 [ print_word_at::at#2 ] +Uplift Scope [print_dword_at] 71: zp[4]:55 [ print_dword_at::dw#0 ] +Uplift Scope [clock] 37.33: zp[4]:61 [ clock::return#0 ] 22: zp[4]:43 [ clock::return#2 ] +Uplift Scope [main] 22: zp[4]:47 [ main::$4 ] 22: zp[4]:51 [ main::cyclecount#0 ] Uplift Scope [RADIX] Uplift Scope [clock_start] Uplift Scope [] -Uplifting [atan2_16] best 1159771 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:76 [ atan2_16::return#2 ] zp[2]:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:72 [ atan2_16::x#0 ] zp[2]:74 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1159771 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:76 [ atan2_16::return#2 ] zp[2]:72 [ atan2_16::x#0 ] zp[2]:74 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [init_font_hex] best 1140771 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:88 [ init_font_hex::$0 ] zp[1]:91 [ init_font_hex::idx#3 ] zp[2]:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 1140771 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:88 [ init_font_hex::$0 ] zp[1]:91 [ init_font_hex::idx#3 ] zp[1]:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [init_angle_screen] best 1139171 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:78 [ init_angle_screen::angle_w#0 ] zp[2]:80 [ init_angle_screen::$11 ] zp[1]:83 [ init_angle_screen::$13 ] zp[1]:84 [ init_angle_screen::$14 ] zp[1]:85 [ init_angle_screen::$15 ] zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:82 [ init_angle_screen::ang_w#0 ] zp[2]:70 [ init_angle_screen::yw#0 ] zp[2]:67 [ init_angle_screen::xw#0 ] zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] +Uplifting [print_char_at] best 1140764 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplifting [init_angle_screen] best 1139164 combination zp[1]:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:78 [ init_angle_screen::angle_w#0 ] zp[2]:80 [ init_angle_screen::$11 ] zp[1]:83 [ init_angle_screen::$13 ] zp[1]:84 [ init_angle_screen::$14 ] zp[1]:85 [ init_angle_screen::$15 ] zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:82 [ init_angle_screen::ang_w#0 ] zp[2]:70 [ init_angle_screen::yw#0 ] zp[2]:67 [ init_angle_screen::xw#0 ] zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:15 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#1 ] zp[2]:13 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [print_char_at] best 1139164 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplifting [print_byte_at] best 1139156 combination zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] +Uplifting [print_byte_at] best 1139156 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Uplifting [print_word_at] best 1139156 combination zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 ] -Uplifting [main] best 1139156 combination zp[4]:47 [ main::$4 ] zp[4]:51 [ main::cyclecount#0 ] -Uplifting [clock] best 1139156 combination zp[4]:43 [ clock::return#2 ] zp[4]:61 [ clock::return#0 ] Uplifting [print_dword_at] best 1139156 combination zp[4]:55 [ print_dword_at::dw#0 ] +Uplifting [clock] best 1139156 combination zp[4]:61 [ clock::return#0 ] zp[4]:43 [ clock::return#2 ] +Uplifting [main] best 1139156 combination zp[4]:47 [ main::$4 ] zp[4]:51 [ main::cyclecount#0 ] Uplifting [RADIX] best 1139156 combination Uplifting [clock_start] best 1139156 combination Uplifting [] best 1139156 combination @@ -3822,12 +3816,12 @@ Attempting to uplift remaining variables inzp[1]:17 [ init_angle_screen::x#2 ini Uplifting [init_angle_screen] best 1136956 combination zp[1]:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Attempting to uplift remaining variables inzp[1]:82 [ init_angle_screen::ang_w#0 ] Uplifting [init_angle_screen] best 1136956 combination zp[1]:82 [ init_angle_screen::ang_w#0 ] +Attempting to uplift remaining variables inzp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplifting [print_byte_at] best 1136956 combination zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Attempting to uplift remaining variables inzp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Uplifting [init_angle_screen] best 1136956 combination zp[1]:12 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Attempting to uplift remaining variables inzp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] Uplifting [init_font_hex] best 1136956 combination zp[1]:35 [ init_font_hex::c#6 init_font_hex::c#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Uplifting [print_byte_at] best 1136956 combination zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Coalescing zero page register [ zp[2]:4 [ print_word_at::at#2 ] ] with [ zp[2]:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] - score: 1 Coalescing zero page register [ zp[4]:43 [ clock::return#2 ] ] with [ zp[4]:47 [ main::$4 ] ] - score: 1 @@ -5031,10 +5025,10 @@ FINAL SYMBOL TABLE (const byte) RADIX::OCTAL = (number) 8 (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:6 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:10 4.0 +(signed word~) atan2_16::$2 zp[2]:6 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:10 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -5058,70 +5052,70 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:13 3.0 -(word) atan2_16::angle#11 angle zp[2]:13 4.0 -(word) atan2_16::angle#12 angle zp[2]:13 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:13 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:13 2002.0 -(word) atan2_16::angle#3 angle zp[2]:13 2002.0 -(word) atan2_16::angle#4 angle zp[2]:13 4.0 -(word) atan2_16::angle#5 angle zp[2]:13 4.0 -(word) atan2_16::angle#6 angle zp[2]:13 2004.0 +(word) atan2_16::angle#1 angle zp[2]:13 150001.5 +(word) atan2_16::angle#11 angle zp[2]:13 200002.0 +(word) atan2_16::angle#12 angle zp[2]:13 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:13 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:13 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:13 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:13 200002.0 +(word) atan2_16::angle#5 angle zp[2]:13 200002.0 +(word) atan2_16::angle#6 angle zp[2]:13 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:13 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:13 202.0 +(word) atan2_16::return#0 return zp[2]:13 70001.0 +(word) atan2_16::return#2 return zp[2]:13 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:22 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:22 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:8 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:8 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:8 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:8 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:8 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:8 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:8 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:8 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:10 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:10 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:10 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:10 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:10 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:10 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:10 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:10 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:10 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:10 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:10 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:10 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:24 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:24 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:15 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:15 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:15 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:15 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:15 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:15 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:15 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:15 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:6 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:6 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:6 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:6 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:6 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:6 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:6 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:6 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:6 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:6 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:6 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:6 1.00000001E8 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:18 1.3333333333333333 -(dword) clock::return#2 return zp[4]:18 4.0 +(dword) clock::return#0 return zp[4]:18 37.33333333333333 +(dword) clock::return#2 return zp[4]:18 22.0 (void()) clock_start() (label) clock_start::@return (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:13 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:13 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -5129,33 +5123,33 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:26 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:26 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:13 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:13 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:4 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:4 8.96 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:4 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:4 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:2 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:2 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:2 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:2 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:12 101.0 -(byte) init_angle_screen::x#2 x zp[1]:12 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:12 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:12 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:17 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:17 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:17 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:17 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:22 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:22 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:27 16.5 -(byte) init_angle_screen::y#5 y zp[1]:27 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:27 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:27 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:24 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:24 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:27 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:27 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -5163,30 +5157,30 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:12 16.5 -(byte) init_font_hex::c#6 c zp[1]:12 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:12 1501.5 +(byte) init_font_hex::c#6 c zp[1]:12 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:17 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:17 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:17 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:17 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:13 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:13 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:13 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:13 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:13 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:13 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:26 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:26 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:26 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:26 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 9230.999999999998 (void()) main() -(dword~) main::$4 zp[4]:18 4.0 +(dword~) main::$4 zp[4]:18 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -5196,7 +5190,7 @@ FINAL SYMBOL TABLE (const byte*) main::BASE_CHARSET = (byte*) 4096 (const byte*) main::BASE_SCREEN = (byte*) 1024 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:18 4.0 +(dword) main::cyclecount#0 cyclecount zp[4]:18 22.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -5208,44 +5202,44 @@ FINAL SYMBOL TABLE (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) main::BASE_SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) main::BASE_CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 20002.0 +(byte~) print_byte_at::$2 reg byte y 10001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:27 2.0 -(byte) print_byte_at::b#1 b zp[1]:27 2.0 -(byte) print_byte_at::b#2 b zp[1]:27 1.6 +(byte) print_byte_at::b#0 b zp[1]:27 1001.0 +(byte) print_byte_at::b#1 b zp[1]:27 1001.0 +(byte) print_byte_at::b#2 b zp[1]:27 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:6 4.0 -(byte*) print_char_at::at#1 at zp[2]:6 2.0 -(byte*) print_char_at::at#2 at zp[2]:6 6.0 +(byte*) print_char_at::at#0 at zp[2]:6 20002.0 +(byte*) print_char_at::at#1 at zp[2]:6 10001.0 +(byte*) print_char_at::at#2 at zp[2]:6 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 10001.0 +(byte) print_char_at::ch#1 reg byte x 20002.0 +(byte) print_char_at::ch#2 reg byte x 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:18 2.0 +(dword) print_dword_at::dw#0 dw zp[4]:18 71.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 400.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 202.0 +(word) print_word_at::w#1 w zp[2]:2 202.0 +(word) print_word_at::w#2 w zp[2]:2 551.0 reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:2 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] diff --git a/src/test/ref/screen-center-angle.sym b/src/test/ref/screen-center-angle.sym index 27063f7a8..1c3aa1b55 100644 --- a/src/test/ref/screen-center-angle.sym +++ b/src/test/ref/screen-center-angle.sym @@ -20,10 +20,10 @@ (const byte) RADIX::OCTAL = (number) 8 (const byte*) SCREEN = (byte*) 10240 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:6 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:10 4.0 +(signed word~) atan2_16::$2 zp[2]:6 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:10 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -47,70 +47,70 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:13 3.0 -(word) atan2_16::angle#11 angle zp[2]:13 4.0 -(word) atan2_16::angle#12 angle zp[2]:13 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:13 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:13 2002.0 -(word) atan2_16::angle#3 angle zp[2]:13 2002.0 -(word) atan2_16::angle#4 angle zp[2]:13 4.0 -(word) atan2_16::angle#5 angle zp[2]:13 4.0 -(word) atan2_16::angle#6 angle zp[2]:13 2004.0 +(word) atan2_16::angle#1 angle zp[2]:13 150001.5 +(word) atan2_16::angle#11 angle zp[2]:13 200002.0 +(word) atan2_16::angle#12 angle zp[2]:13 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:13 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:13 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:13 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:13 200002.0 +(word) atan2_16::angle#5 angle zp[2]:13 200002.0 +(word) atan2_16::angle#6 angle zp[2]:13 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:13 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:13 202.0 +(word) atan2_16::return#0 return zp[2]:13 70001.0 +(word) atan2_16::return#2 return zp[2]:13 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:22 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:22 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:8 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:8 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:8 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:8 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:8 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:8 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:8 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:8 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:8 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:10 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:10 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:10 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:10 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:10 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:10 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:10 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:10 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:10 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:10 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:10 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:10 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:24 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:24 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:15 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:15 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:15 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:15 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:15 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:15 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:15 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:15 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:15 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:6 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:6 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:6 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:6 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:6 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:6 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:6 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:6 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:6 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:6 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:6 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:6 1.00000001E8 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:18 1.3333333333333333 -(dword) clock::return#2 return zp[4]:18 4.0 +(dword) clock::return#0 return zp[4]:18 37.33333333333333 +(dword) clock::return#2 return zp[4]:18 22.0 (void()) clock_start() (label) clock_start::@return (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:13 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:13 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -118,33 +118,33 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:26 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:26 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:13 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:13 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:4 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:4 8.96 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:4 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:4 880.1600000000001 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:2 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:2 9.333333333333332 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:2 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:2 916.8333333333333 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:12 101.0 -(byte) init_angle_screen::x#2 x zp[1]:12 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:12 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:12 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:17 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:17 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:17 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:17 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:22 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:22 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:27 16.5 -(byte) init_angle_screen::y#5 y zp[1]:27 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:27 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:27 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:24 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:24 5000.5 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:27 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:27 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -152,30 +152,30 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:12 16.5 -(byte) init_font_hex::c#6 c zp[1]:12 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:12 1501.5 +(byte) init_font_hex::c#6 c zp[1]:12 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:17 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:17 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:17 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:17 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:13 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:13 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:13 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:13 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:13 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:13 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:26 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:26 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:26 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:26 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:10 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:10 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:15 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:15 9230.999999999998 (void()) main() -(dword~) main::$4 zp[4]:18 4.0 +(dword~) main::$4 zp[4]:18 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -185,7 +185,7 @@ (const byte*) main::BASE_CHARSET = (byte*) 4096 (const byte*) main::BASE_SCREEN = (byte*) 1024 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:18 4.0 +(dword) main::cyclecount#0 cyclecount zp[4]:18 22.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -197,44 +197,44 @@ (const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) main::BASE_SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) main::BASE_CHARSET/(byte) 4&(byte) $f (byte*) main::toD0182_screen (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 20002.0 +(byte~) print_byte_at::$2 reg byte y 10001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:27 2.0 -(byte) print_byte_at::b#1 b zp[1]:27 2.0 -(byte) print_byte_at::b#2 b zp[1]:27 1.6 +(byte) print_byte_at::b#0 b zp[1]:27 1001.0 +(byte) print_byte_at::b#1 b zp[1]:27 1001.0 +(byte) print_byte_at::b#2 b zp[1]:27 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:6 4.0 -(byte*) print_char_at::at#1 at zp[2]:6 2.0 -(byte*) print_char_at::at#2 at zp[2]:6 6.0 +(byte*) print_char_at::at#0 at zp[2]:6 20002.0 +(byte*) print_char_at::at#1 at zp[2]:6 10001.0 +(byte*) print_char_at::at#2 at zp[2]:6 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 10001.0 +(byte) print_char_at::ch#1 reg byte x 20002.0 +(byte) print_char_at::ch#2 reg byte x 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:18 2.0 +(dword) print_dword_at::dw#0 dw zp[4]:18 71.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 400.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 202.0 +(word) print_word_at::w#1 w zp[2]:2 202.0 +(word) print_word_at::w#2 w zp[2]:2 551.0 reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:2 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#1 print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] diff --git a/src/test/ref/screen-center-distance.log b/src/test/ref/screen-center-distance.log index 10ac106a8..653813e13 100644 --- a/src/test/ref/screen-center-distance.log +++ b/src/test/ref/screen-center-distance.log @@ -1714,141 +1714,141 @@ Inferred type updated to byte for (unumber~) init_dist_screen::$17 Inversing boolean not [24] (bool~) bsearch16u::$12 ← (signed word) bsearch16u::result#0 != (signed byte) 0 from [23] (bool~) bsearch16u::$11 ← (signed word) bsearch16u::result#0 == (signed byte) 0 Inversing boolean not [31] (bool~) bsearch16u::$14 ← (signed word) bsearch16u::result#1 <= (signed byte) 0 from [30] (bool~) bsearch16u::$13 ← (signed word) bsearch16u::result#1 > (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#3 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#11 (byte*) heap_head#2 -Alias (byte) bsearch16u::num#3 = (byte) bsearch16u::num#4 (byte) bsearch16u::num#8 (byte) bsearch16u::num#6 -Alias (word*) bsearch16u::items#2 = (word*) bsearch16u::items#6 (word*) bsearch16u::items#3 (word*) bsearch16u::items#9 (word*) bsearch16u::items#4 (word*~) bsearch16u::$3 (word*) bsearch16u::items#5 -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#3 (word) bsearch16u::key#2 (word) bsearch16u::key#7 (word) bsearch16u::key#6 -Alias (word*) bsearch16u::pivot#0 = (word*~) bsearch16u::$7 (word*) bsearch16u::pivot#3 (word*) bsearch16u::pivot#1 (word*) bsearch16u::return#0 (word*) bsearch16u::pivot#2 -Alias (signed word) bsearch16u::result#0 = (signed word~) bsearch16u::$10 (signed word) bsearch16u::result#1 -Alias (word*) bsearch16u::return#1 = (word*) bsearch16u::return#4 -Alias (word*) bsearch16u::items#0 = (word*~) bsearch16u::$15 -Alias (word*~) bsearch16u::$2 = (word*~) bsearch16u::$1 -Alias (word*) bsearch16u::return#2 = (word*~) bsearch16u::$4 -Alias (byte*) heap_head#0 = (byte*) heap_head#30 (byte*) heap_head#25 -Alias (word) malloc::size#0 = (byte~) init_squares::$0 -Alias (void*) malloc::return#2 = (void*) malloc::return#4 -Alias (byte) NUM_SQUARES#14 = (byte) NUM_SQUARES#6 -Alias (byte*) heap_head#12 = (byte*) heap_head#3 -Alias (word) init_squares::sqr#2 = (word) init_squares::sqr#3 -Alias (word*) init_squares::squares#2 = (word*) init_squares::squares#3 -Alias (byte) init_squares::i#2 = (byte) init_squares::i#3 -Alias (byte) NUM_SQUARES#13 = (byte) NUM_SQUARES#7 -Alias (byte*) heap_head#13 = (byte*) heap_head#26 (byte*) heap_head#20 (byte*) heap_head#4 -Alias (word*) SQUARES#17 = (word*) SQUARES#26 (word*) SQUARES#8 (word*) SQUARES#2 -Alias (word) sqr::return#0 = (word) sqr::return#4 (word) sqr::return#1 -Alias (word*) bsearch16u::return#3 = (word*) bsearch16u::return#5 -Alias (word*) SQUARES#10 = (word*) SQUARES#11 -Alias (word*) sqrt::found#0 = (word*~) sqrt::$0 -Alias (byte) sqrt::return#0 = (byte) sqrt::sq#0 (byte~) sqrt::$2 (byte) sqrt::return#3 (byte) sqrt::return#1 -Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 -Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 -Alias (byte*) init_font_hex::proto_lo#2 = (byte*) init_font_hex::proto_lo#3 -Alias (byte) init_font_hex::c1#2 = (byte) init_font_hex::c1#3 -Alias (byte*) init_font_hex::proto_hi#2 = (byte*) init_font_hex::proto_hi#5 (byte*) init_font_hex::proto_hi#3 -Alias (byte) init_font_hex::c#2 = (byte) init_font_hex::c#3 (byte) init_font_hex::c#4 -Alias (byte*) init_font_hex::charset#0 = (byte*) init_font_hex::charset#7 -Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 -Alias (byte) print_byte_at::b#0 = (byte~) print_word_at::$0 -Alias (word) print_word_at::w#2 = (word) print_word_at::w#3 -Alias (byte*) print_word_at::at#2 = (byte*) print_word_at::at#3 -Alias (byte) print_byte_at::b#1 = (byte~) print_word_at::$2 -Alias (byte*) print_byte_at::at#1 = (byte*~) print_word_at::$3 -Alias (word) print_word_at::w#0 = (word~) print_dword_at::$0 -Alias (dword) print_dword_at::dw#1 = (dword) print_dword_at::dw#2 -Alias (byte*) print_dword_at::at#1 = (byte*) print_dword_at::at#2 -Alias (word) print_word_at::w#1 = (word~) print_dword_at::$2 -Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 -Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 -Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 -Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 -Alias (byte) NUM_SQUARES#16 = (byte) NUM_SQUARES#34 (byte) NUM_SQUARES#38 (byte) NUM_SQUARES#30 (byte) NUM_SQUARES#24 (byte) NUM_SQUARES#20 -Alias (byte*) heap_head#21 = (byte*) heap_head#39 (byte*) heap_head#44 (byte*) heap_head#35 (byte*) heap_head#31 (byte*) heap_head#27 -Alias (word*) SQUARES#21 = (word*) SQUARES#42 (word*) SQUARES#44 (word*) SQUARES#40 (word*) SQUARES#34 (word*) SQUARES#27 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 -Alias (byte) NUM_SQUARES#1 = (byte) NUM_SQUARES#9 (byte) NUM_SQUARES#35 (byte) NUM_SQUARES#31 (byte) NUM_SQUARES#25 (byte) NUM_SQUARES#21 (byte) NUM_SQUARES#17 (byte) NUM_SQUARES#10 (byte) NUM_SQUARES#2 -Alias (byte*) heap_head#14 = (byte*) heap_head#5 (byte*) heap_head#40 (byte*) heap_head#36 (byte*) heap_head#32 (byte*) heap_head#28 (byte*) heap_head#22 (byte*) heap_head#15 (byte*) heap_head#6 -Alias (word*) SQUARES#12 = (word*) SQUARES#3 (word*) SQUARES#43 (word*) SQUARES#41 (word*) SQUARES#35 (word*) SQUARES#28 (word*) SQUARES#22 (word*) SQUARES#13 (word*) SQUARES#4 -Alias (dword) clock::return#2 = (dword) clock::return#4 -Alias (dword) main::cyclecount#0 = (dword~) main::$5 -Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 -Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 -Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 -Alias (byte*) init_dist_screen::screen#1 = (byte*) init_dist_screen::screen#2 (byte*) init_dist_screen::screen_topline#0 -Alias (byte) NUM_SQUARES#3 = (byte) NUM_SQUARES#40 -Alias (byte*) heap_head#16 = (byte*) heap_head#7 -Alias (word*) SQUARES#14 = (word*) SQUARES#5 -Alias (byte*) init_dist_screen::screen_bottomline#0 = (byte*~) init_dist_screen::$1 -Alias (byte) init_dist_screen::y2#0 = (byte~) init_dist_screen::$2 (byte) init_dist_screen::y2#1 (byte) init_dist_screen::y2#2 -Alias (word*) SQUARES#29 = (word*) SQUARES#36 (word*) SQUARES#30 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#14 (byte*) init_dist_screen::screen_topline#12 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#14 (byte*) init_dist_screen::screen_bottomline#12 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#9 (byte) init_dist_screen::y#2 -Alias (byte) NUM_SQUARES#36 = (byte) NUM_SQUARES#39 (byte) NUM_SQUARES#37 -Alias (byte*) heap_head#41 = (byte*) heap_head#45 (byte*) heap_head#42 -Alias (byte~) init_dist_screen::$7 = (byte~) init_dist_screen::$6 -Alias (byte~) init_dist_screen::$5 = (byte~) init_dist_screen::$4 -Alias (byte) init_dist_screen::yd#0 = (byte~) init_dist_screen::$8 -Alias (word) sqr::return#2 = (word) sqr::return#5 -Alias (byte*) init_dist_screen::screen_topline#6 = (byte*) init_dist_screen::screen_topline#8 -Alias (byte*) init_dist_screen::screen_bottomline#6 = (byte*) init_dist_screen::screen_bottomline#8 -Alias (byte) init_dist_screen::y#5 = (byte) init_dist_screen::y#7 -Alias (byte) NUM_SQUARES#26 = (byte) NUM_SQUARES#32 -Alias (byte*) heap_head#33 = (byte*) heap_head#37 -Alias (word*) SQUARES#19 = (word*) SQUARES#37 -Alias (word) init_dist_screen::yds#0 = (word~) init_dist_screen::$9 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#3 (byte) init_dist_screen::x#7 (byte) init_dist_screen::x#8 -Alias (word*) SQUARES#15 = (word*) SQUARES#39 (word*) SQUARES#31 (word*) SQUARES#24 (word*) SQUARES#32 (word*) SQUARES#33 (word*) SQUARES#6 -Alias (word) init_dist_screen::yds#3 = (word) init_dist_screen::yds#5 (word) init_dist_screen::yds#6 (word) init_dist_screen::yds#4 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#33 (byte) NUM_SQUARES#22 (byte) NUM_SQUARES#18 (byte) NUM_SQUARES#28 (byte) NUM_SQUARES#29 (byte) NUM_SQUARES#4 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#13 (byte*) init_dist_screen::screen_topline#4 (byte*) init_dist_screen::screen_topline#2 (byte*) init_dist_screen::screen_topline#9 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#13 (byte*) init_dist_screen::screen_bottomline#4 (byte*) init_dist_screen::screen_bottomline#2 (byte*) init_dist_screen::screen_bottomline#9 -Alias (byte) init_dist_screen::xb#5 = (byte) init_dist_screen::xb#7 (byte) init_dist_screen::xb#8 (byte) init_dist_screen::xb#6 -Alias (byte) init_dist_screen::y#12 = (byte) init_dist_screen::y#14 (byte) init_dist_screen::y#4 (byte) init_dist_screen::y#3 (byte) init_dist_screen::y#13 -Alias (byte*) heap_head#17 = (byte*) heap_head#48 (byte*) heap_head#29 (byte*) heap_head#24 (byte*) heap_head#46 (byte*) heap_head#47 (byte*) heap_head#8 -Alias (byte) init_dist_screen::x2#0 = (byte~) init_dist_screen::$11 (byte) init_dist_screen::x2#1 (byte) init_dist_screen::x2#2 -Alias (byte~) init_dist_screen::$16 = (byte~) init_dist_screen::$15 -Alias (byte~) init_dist_screen::$14 = (byte~) init_dist_screen::$13 -Alias (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$17 -Alias (word) sqr::return#3 = (word) sqr::return#6 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#2 (word) init_dist_screen::yds#7 -Alias (word*) SQUARES#18 = (word*) SQUARES#20 (word*) SQUARES#38 -Alias (byte) NUM_SQUARES#15 = (byte) NUM_SQUARES#23 (byte) NUM_SQUARES#27 -Alias (byte*) init_dist_screen::screen_topline#3 = (byte*) init_dist_screen::screen_topline#5 (byte*) init_dist_screen::screen_topline#7 -Alias (byte) init_dist_screen::x#4 = (byte) init_dist_screen::x#5 (byte) init_dist_screen::x#6 -Alias (byte*) init_dist_screen::screen_bottomline#3 = (byte*) init_dist_screen::screen_bottomline#5 (byte*) init_dist_screen::screen_bottomline#7 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#3 (byte) init_dist_screen::xb#4 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#8 (byte) init_dist_screen::y#6 -Alias (byte*) heap_head#34 = (byte*) heap_head#38 (byte*) heap_head#43 -Alias (word) init_dist_screen::xds#0 = (word~) init_dist_screen::$18 -Alias (word) init_dist_screen::ds#0 = (word~) init_dist_screen::$19 -Alias (byte) sqrt::return#2 = (byte) sqrt::return#4 -Alias (byte) init_dist_screen::d#0 = (byte~) init_dist_screen::$20 -Alias (byte) NUM_SQUARES#0 = (byte) NUM_SQUARES#19 -Alias (word*) SQUARES#0 = (word*) SQUARES#25 -Alias (byte) NUM_SQUARES#12 = (byte) NUM_SQUARES#5 -Alias (byte*) heap_head#18 = (byte*) heap_head#9 -Alias (word*) SQUARES#16 = (word*) SQUARES#7 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#3 malloc::return#1 +Alias heap_head#1 = heap_head#11 heap_head#2 +Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 +Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 +Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 +Alias bsearch16u::pivot#0 = bsearch16u::$7 bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 +Alias bsearch16u::result#0 = bsearch16u::$10 bsearch16u::result#1 +Alias bsearch16u::return#1 = bsearch16u::return#4 +Alias bsearch16u::items#0 = bsearch16u::$15 +Alias bsearch16u::$2 = bsearch16u::$1 +Alias bsearch16u::return#2 = bsearch16u::$4 +Alias heap_head#0 = heap_head#30 heap_head#25 +Alias malloc::size#0 = init_squares::$0 +Alias malloc::return#2 = malloc::return#4 +Alias NUM_SQUARES#14 = NUM_SQUARES#6 +Alias heap_head#12 = heap_head#3 +Alias init_squares::sqr#2 = init_squares::sqr#3 +Alias init_squares::squares#2 = init_squares::squares#3 +Alias init_squares::i#2 = init_squares::i#3 +Alias NUM_SQUARES#13 = NUM_SQUARES#7 +Alias heap_head#13 = heap_head#26 heap_head#20 heap_head#4 +Alias SQUARES#17 = SQUARES#26 SQUARES#8 SQUARES#2 +Alias sqr::return#0 = sqr::return#4 sqr::return#1 +Alias bsearch16u::return#3 = bsearch16u::return#5 +Alias SQUARES#10 = SQUARES#11 +Alias sqrt::found#0 = sqrt::$0 +Alias sqrt::return#0 = sqrt::sq#0 sqrt::$2 sqrt::return#3 sqrt::return#1 +Alias init_font_hex::charset#3 = init_font_hex::charset#4 +Alias init_font_hex::idx#2 = init_font_hex::idx#6 +Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 +Alias init_font_hex::c1#2 = init_font_hex::c1#3 +Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 +Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 +Alias init_font_hex::charset#0 = init_font_hex::charset#7 +Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1 +Alias print_byte_at::b#0 = print_word_at::$0 +Alias print_word_at::w#2 = print_word_at::w#3 +Alias print_word_at::at#2 = print_word_at::at#3 +Alias print_byte_at::b#1 = print_word_at::$2 +Alias print_byte_at::at#1 = print_word_at::$3 +Alias print_word_at::w#0 = print_dword_at::$0 +Alias print_dword_at::dw#1 = print_dword_at::dw#2 +Alias print_dword_at::at#1 = print_dword_at::at#2 +Alias print_word_at::w#1 = print_dword_at::$2 +Alias print_word_at::at#1 = print_dword_at::$3 +Alias print_byte_at::b#2 = print_byte_at::b#3 +Alias print_byte_at::at#2 = print_byte_at::at#3 +Alias print_char_at::at#1 = print_byte_at::$3 +Alias NUM_SQUARES#16 = NUM_SQUARES#34 NUM_SQUARES#38 NUM_SQUARES#30 NUM_SQUARES#24 NUM_SQUARES#20 +Alias heap_head#21 = heap_head#39 heap_head#44 heap_head#35 heap_head#31 heap_head#27 +Alias SQUARES#21 = SQUARES#42 SQUARES#44 SQUARES#40 SQUARES#34 SQUARES#27 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 +Alias NUM_SQUARES#1 = NUM_SQUARES#9 NUM_SQUARES#35 NUM_SQUARES#31 NUM_SQUARES#25 NUM_SQUARES#21 NUM_SQUARES#17 NUM_SQUARES#10 NUM_SQUARES#2 +Alias heap_head#14 = heap_head#5 heap_head#40 heap_head#36 heap_head#32 heap_head#28 heap_head#22 heap_head#15 heap_head#6 +Alias SQUARES#12 = SQUARES#3 SQUARES#43 SQUARES#41 SQUARES#35 SQUARES#28 SQUARES#22 SQUARES#13 SQUARES#4 +Alias clock::return#2 = clock::return#4 +Alias main::cyclecount#0 = main::$5 +Alias main::toD0182_screen#0 = main::toD0182_screen#1 +Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 +Alias main::toD0182_return#0 = main::toD0182_$8 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 +Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 +Alias NUM_SQUARES#3 = NUM_SQUARES#40 +Alias heap_head#16 = heap_head#7 +Alias SQUARES#14 = SQUARES#5 +Alias init_dist_screen::screen_bottomline#0 = init_dist_screen::$1 +Alias init_dist_screen::y2#0 = init_dist_screen::$2 init_dist_screen::y2#1 init_dist_screen::y2#2 +Alias SQUARES#29 = SQUARES#36 SQUARES#30 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 +Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 +Alias NUM_SQUARES#36 = NUM_SQUARES#39 NUM_SQUARES#37 +Alias heap_head#41 = heap_head#45 heap_head#42 +Alias init_dist_screen::$7 = init_dist_screen::$6 +Alias init_dist_screen::$5 = init_dist_screen::$4 +Alias init_dist_screen::yd#0 = init_dist_screen::$8 +Alias sqr::return#2 = sqr::return#5 +Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8 +Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8 +Alias init_dist_screen::y#5 = init_dist_screen::y#7 +Alias NUM_SQUARES#26 = NUM_SQUARES#32 +Alias heap_head#33 = heap_head#37 +Alias SQUARES#19 = SQUARES#37 +Alias init_dist_screen::yds#0 = init_dist_screen::$9 +Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8 +Alias SQUARES#15 = SQUARES#39 SQUARES#31 SQUARES#24 SQUARES#32 SQUARES#33 SQUARES#6 +Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 +Alias NUM_SQUARES#11 = NUM_SQUARES#33 NUM_SQUARES#22 NUM_SQUARES#18 NUM_SQUARES#28 NUM_SQUARES#29 NUM_SQUARES#4 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9 +Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6 +Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13 +Alias heap_head#17 = heap_head#48 heap_head#29 heap_head#24 heap_head#46 heap_head#47 heap_head#8 +Alias init_dist_screen::x2#0 = init_dist_screen::$11 init_dist_screen::x2#1 init_dist_screen::x2#2 +Alias init_dist_screen::$16 = init_dist_screen::$15 +Alias init_dist_screen::$14 = init_dist_screen::$13 +Alias init_dist_screen::xd#0 = init_dist_screen::$17 +Alias sqr::return#3 = sqr::return#6 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 +Alias SQUARES#18 = SQUARES#20 SQUARES#38 +Alias NUM_SQUARES#15 = NUM_SQUARES#23 NUM_SQUARES#27 +Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7 +Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6 +Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4 +Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6 +Alias heap_head#34 = heap_head#38 heap_head#43 +Alias init_dist_screen::xds#0 = init_dist_screen::$18 +Alias init_dist_screen::ds#0 = init_dist_screen::$19 +Alias sqrt::return#2 = sqrt::return#4 +Alias init_dist_screen::d#0 = init_dist_screen::$20 +Alias NUM_SQUARES#0 = NUM_SQUARES#19 +Alias SQUARES#0 = SQUARES#25 +Alias NUM_SQUARES#12 = NUM_SQUARES#5 +Alias heap_head#18 = heap_head#9 +Alias SQUARES#16 = SQUARES#7 Successful SSA optimization Pass2AliasElimination -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#5 -Alias (word*) SQUARES#19 = (word*) SQUARES#29 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#6 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#6 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#5 -Alias (byte) NUM_SQUARES#26 = (byte) NUM_SQUARES#36 -Alias (byte*) heap_head#33 = (byte*) heap_head#41 -Alias (word*) SQUARES#15 = (word*) SQUARES#18 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#3 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#15 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#3 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#4 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#3 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#5 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#12 -Alias (byte*) heap_head#17 = (byte*) heap_head#34 +Alias bsearch16u::key#1 = bsearch16u::key#5 +Alias SQUARES#19 = SQUARES#29 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 +Alias init_dist_screen::y#10 = init_dist_screen::y#5 +Alias NUM_SQUARES#26 = NUM_SQUARES#36 +Alias heap_head#33 = heap_head#41 +Alias SQUARES#15 = SQUARES#18 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#3 +Alias NUM_SQUARES#11 = NUM_SQUARES#15 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3 +Alias init_dist_screen::x#2 = init_dist_screen::x#4 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#5 +Alias init_dist_screen::y#11 = init_dist_screen::y#12 +Alias heap_head#17 = heap_head#34 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) heap_head#10 (byte*) heap_head#19 Identical Phi Values (word) malloc::size#1 (word) malloc::size#0 @@ -2619,115 +2619,115 @@ VARIABLE REGISTER WEIGHTS (byte) NUM_SQUARES (word*) SQUARES (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 2002.0 -(word*~) bsearch16u::$2 4.0 -(byte~) bsearch16u::$6 2002.0 +(byte~) bsearch16u::$16 2.000000002E9 +(word*~) bsearch16u::$2 2000002.0 +(byte~) bsearch16u::$6 2.000000002E9 (word*) bsearch16u::items -(word*) bsearch16u::items#0 1001.0 -(word*) bsearch16u::items#2 334.33333333333337 -(word*) bsearch16u::items#8 1501.5 +(word*) bsearch16u::items#0 1.000000001E9 +(word*) bsearch16u::items#2 3.336666673333333E8 +(word*) bsearch16u::items#8 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 0.2857142857142857 +(word) bsearch16u::key#0 78571.57142857142 (byte) bsearch16u::num -(byte) bsearch16u::num#0 2002.0 -(byte) bsearch16u::num#1 2002.0 -(byte) bsearch16u::num#3 556.1111111111111 -(byte) bsearch16u::num#5 3003.0 +(byte) bsearch16u::num#0 2.000000002E9 +(byte) bsearch16u::num#1 2.000000002E9 +(byte) bsearch16u::num#3 5.555555561111112E8 +(byte) bsearch16u::num#5 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 501.0 +(word*) bsearch16u::pivot#0 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 1501.5 +(signed word) bsearch16u::result#0 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 2.0 -(word*) bsearch16u::return#2 6.0 -(word*) bsearch16u::return#3 4.0 -(word*) bsearch16u::return#6 4.0 +(word*) bsearch16u::return#1 700001.0 +(word*) bsearch16u::return#2 3000003.0 +(word*) bsearch16u::return#3 200002.0 +(word*) bsearch16u::return#6 2000002.0 (dword()) clock() (dword) clock::return -(dword) clock::return#0 1.3333333333333333 -(dword) clock::return#2 4.0 +(dword) clock::return#0 37.33333333333333 +(dword) clock::return#2 22.0 (void()) clock_start() (byte*) heap_head (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 202.0 -(byte~) init_dist_screen::$16 202.0 -(byte~) init_dist_screen::$5 22.0 -(byte~) init_dist_screen::$7 22.0 +(byte~) init_dist_screen::$14 20002.0 +(byte~) init_dist_screen::$16 20002.0 +(byte~) init_dist_screen::$5 2002.0 +(byte~) init_dist_screen::$7 2002.0 (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 126.25 +(byte) init_dist_screen::d#0 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 202.0 +(word) init_dist_screen::ds#0 20002.0 (byte*) init_dist_screen::screen (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 6.787878787878787 +(byte*) init_dist_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 666.7878787878788 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 5.5 -(byte*) init_dist_screen::screen_topline#11 7.0 +(byte*) init_dist_screen::screen_topline#1 500.5 +(byte*) init_dist_screen::screen_topline#11 687.625 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 101.0 -(byte) init_dist_screen::x#2 30.3 +(byte) init_dist_screen::x#1 10001.0 +(byte) init_dist_screen::x#2 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 202.0 +(byte) init_dist_screen::x2#0 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 202.0 -(byte) init_dist_screen::xb#2 19.238095238095237 +(byte) init_dist_screen::xb#1 20002.0 +(byte) init_dist_screen::xb#2 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 303.0 +(byte) init_dist_screen::xd#0 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 202.0 +(word) init_dist_screen::xds#0 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 16.5 -(byte) init_dist_screen::y#10 0.9705882352941178 +(byte) init_dist_screen::y#1 1501.5 +(byte) init_dist_screen::y#10 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 22.0 +(byte) init_dist_screen::y2#0 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 33.0 +(byte) init_dist_screen::yd#0 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 4.869565217391305 +(word) init_dist_screen::yds#0 478.3478260869565 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 1001.0 -(byte~) init_font_hex::$1 2002.0 -(byte~) init_font_hex::$2 2002.0 +(byte~) init_font_hex::$0 100001.0 +(byte~) init_font_hex::$1 200002.0 +(byte~) init_font_hex::$2 200002.0 (byte) init_font_hex::c -(byte) init_font_hex::c#1 16.5 -(byte) init_font_hex::c#6 1.1578947368421053 +(byte) init_font_hex::c#1 1501.5 +(byte) init_font_hex::c#6 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 151.5 -(byte) init_font_hex::c1#4 13.466666666666667 +(byte) init_font_hex::c1#1 15001.5 +(byte) init_font_hex::c1#4 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 35.5 -(byte*) init_font_hex::charset#2 108.35714285714285 -(byte*) init_font_hex::charset#5 22.0 +(byte*) init_font_hex::charset#0 3500.5 +(byte*) init_font_hex::charset#2 10786.214285714286 +(byte*) init_font_hex::charset#5 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 1501.5 -(byte) init_font_hex::i#2 667.3333333333334 +(byte) init_font_hex::i#1 150001.5 +(byte) init_font_hex::i#2 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 551.0 -(byte) init_font_hex::idx#3 202.0 -(byte) init_font_hex::idx#5 600.5999999999999 +(byte) init_font_hex::idx#2 55001.0 +(byte) init_font_hex::idx#3 20002.0 +(byte) init_font_hex::idx#5 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 50.5 -(byte*) init_font_hex::proto_lo#4 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 5000.5 +(byte*) init_font_hex::proto_lo#4 9230.999999999998 (void()) init_squares() -(byte~) init_squares::$3 22.0 -(byte~) init_squares::$4 22.0 +(byte~) init_squares::$3 20002.0 +(byte~) init_squares::$4 20002.0 (byte) init_squares::i -(byte) init_squares::i#1 22.0 -(byte) init_squares::i#2 6.285714285714286 +(byte) init_squares::i#1 20002.0 +(byte) init_squares::i#2 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 11.0 -(word) init_squares::sqr#2 5.5 +(word) init_squares::sqr#1 10001.0 +(word) init_squares::sqr#2 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#1 4.4 -(word*) init_squares::squares#2 11.0 +(word*) init_squares::squares#1 4000.4 +(word*) init_squares::squares#2 10001.0 (void()) main() -(dword~) main::$4 4.0 +(dword~) main::$4 22.0 (dword) main::cyclecount -(dword) main::cyclecount#0 4.0 +(dword) main::cyclecount#0 22.0 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen @@ -2739,57 +2739,57 @@ VARIABLE REGISTER WEIGHTS (void*) malloc::return (word) malloc::size (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 4.0 -(byte~) print_byte_at::$2 2.0 +(byte~) print_byte_at::$0 20002.0 +(byte~) print_byte_at::$2 10001.0 (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 4.0 -(byte*) print_byte_at::at#1 4.0 -(byte*) print_byte_at::at#2 1.3333333333333333 +(byte*) print_byte_at::at#0 2002.0 +(byte*) print_byte_at::at#1 2002.0 +(byte*) print_byte_at::at#2 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 2.0 -(byte) print_byte_at::b#1 2.0 -(byte) print_byte_at::b#2 1.6 +(byte) print_byte_at::b#0 1001.0 +(byte) print_byte_at::b#1 1001.0 +(byte) print_byte_at::b#2 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (byte*) print_char_at::at -(byte*) print_char_at::at#0 4.0 -(byte*) print_char_at::at#1 2.0 -(byte*) print_char_at::at#2 6.0 +(byte*) print_char_at::at#0 20002.0 +(byte*) print_char_at::at#1 10001.0 +(byte*) print_char_at::at#2 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 2.0 -(byte) print_char_at::ch#1 4.0 -(byte) print_char_at::ch#2 6.0 +(byte) print_char_at::ch#0 10001.0 +(byte) print_char_at::ch#1 20002.0 +(byte) print_char_at::ch#2 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 2.0 +(dword) print_dword_at::dw#0 71.0 (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (byte*) print_word_at::at -(byte*) print_word_at::at#2 0.8 +(byte*) print_word_at::at#2 400.4 (word) print_word_at::w -(word) print_word_at::w#0 4.0 -(word) print_word_at::w#1 4.0 -(word) print_word_at::w#2 2.0 +(word) print_word_at::w#0 202.0 +(word) print_word_at::w#1 202.0 +(word) print_word_at::w#2 551.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 4.0 +(byte~) sqr::$0 200002.0 (word) sqr::return -(word) sqr::return#0 28.5 -(word) sqr::return#2 22.0 -(word) sqr::return#3 202.0 +(word) sqr::return#0 27750.75 +(word) sqr::return#2 2002.0 +(word) sqr::return#3 20002.0 (byte) sqr::val -(byte) sqr::val#0 22.0 -(byte) sqr::val#1 202.0 -(byte) sqr::val#2 114.0 +(byte) sqr::val#0 2002.0 +(byte) sqr::val#1 20002.0 +(byte) sqr::val#2 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 2.0 -(word~) sqrt::$3 4.0 +(word~) sqrt::$1 100001.0 +(word~) sqrt::$3 200002.0 (word*) sqrt::found -(word*) sqrt::found#0 4.0 +(word*) sqrt::found#0 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 34.33333333333333 -(byte) sqrt::return#2 202.0 +(byte) sqrt::return#0 36667.33333333333 +(byte) sqrt::return#2 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 103.0 +(word) sqrt::val#0 110002.0 Initial phi equivalence classes [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] @@ -4112,231 +4112,225 @@ init_font_hex: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] -Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:59 [ print_byte_at::$2 ] -Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y +Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a -Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ) always clobbers reg byte a +Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ) always clobbers reg byte a -Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ) always clobbers reg byte a -Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ) always clobbers reg byte a -Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ) always clobbers reg byte a +Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { } ) always clobbers reg byte a +Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { } ) always clobbers reg byte a +Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ) always clobbers reg byte a -Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ) always clobbers reg byte a -Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ) always clobbers reg byte a -Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ) always clobbers reg byte a -Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ) always clobbers reg byte a -Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] ) always clobbers reg byte a -Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] ) always clobbers reg byte a -Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] ) always clobbers reg byte a -Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] ) always clobbers reg byte a -Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] ) always clobbers reg byte a -Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y +Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] { } ) always clobbers reg byte a +Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a +Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y +Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] ) always clobbers reg byte a -Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] ) always clobbers reg byte a -Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y +Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_squares::i#2 init_squares::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_squares::i#2 init_squares::i#1 ] -Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y +Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] -Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a +Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ init_font_hex::i#2 init_font_hex::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:41 [ init_font_hex::idx#5 init_font_hex::idx#2 ] -Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a +Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:102 [ init_font_hex::$0 ] -Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y -Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a -Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ) always clobbers reg byte a -Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ) always clobbers reg byte a -Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ) always clobbers reg byte a -Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ) always clobbers reg byte a -Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ) always clobbers reg byte a -Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ) always clobbers reg byte a -Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ) always clobbers reg byte a -Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ) always clobbers reg byte a -Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ) always clobbers reg byte a -Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ) always clobbers reg byte a -Statement [80] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y +Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { } ) always clobbers reg byte a +Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { } ) always clobbers reg byte a +Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { } ) always clobbers reg byte a +Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] { } ) always clobbers reg byte a +Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] { } ) always clobbers reg byte a +Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [80] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:79 [ init_dist_screen::d#0 ] -Statement [81] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y -Statement [82] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y -Statement [83] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ) always clobbers reg byte y -Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] ) always clobbers reg byte a -Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] ) always clobbers reg byte a -Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] ) always clobbers reg byte a -Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] ) always clobbers reg byte a -Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] ) always clobbers reg byte a -Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] ) always clobbers reg byte a -Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] ) always clobbers reg byte a -Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a -Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] ) always clobbers reg byte a -Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a -Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a -Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] ) always clobbers reg byte a -Statement [27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a -Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a -Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y -Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a -Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ) always clobbers reg byte a -Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ) always clobbers reg byte a -Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ) always clobbers reg byte a -Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ) always clobbers reg byte a -Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ) always clobbers reg byte a -Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ) always clobbers reg byte a -Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ) always clobbers reg byte a -Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ) always clobbers reg byte a -Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ) always clobbers reg byte a -Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ) always clobbers reg byte a -Statement [80] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y -Statement [81] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y -Statement [82] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ) always clobbers reg byte y -Statement [83] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ) always clobbers reg byte y -Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] ) always clobbers reg byte a -Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] ) always clobbers reg byte a -Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] ) always clobbers reg byte a -Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] ) always clobbers reg byte a -Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] ) always clobbers reg byte a -Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] ) always clobbers reg byte a -Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] ) always clobbers reg byte a -Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a -Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a reg byte y -Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ) always clobbers reg byte a -Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ) always clobbers reg byte a -Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ) always clobbers reg byte a -Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ) always clobbers reg byte a -Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ) always clobbers reg byte a -Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ) always clobbers reg byte a +Statement [81] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y +Statement [82] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y +Statement [83] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [14] (dword~) main::$4 ← (dword) clock::return#2 [ main::$4 ] ( main:2 [ main::$4 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [19] *((const byte*) D018) ← (const byte) main::toD0182_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:17 [ print_dword_at::dw#0 print_word_at::w#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:17 [ print_word_at::w#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } } ) always clobbers reg byte a +Statement [28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } } ) always clobbers reg byte a +Statement [31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } main:2::print_dword_at:17::print_word_at:24 [ print_byte_at::b#1 print_byte_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } ) always clobbers reg byte a +Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::at#2 print_byte_at::$2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a +Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_word_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_byte_at::at#2 print_byte_at::at#1 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#0 = print_byte_at::b#2 } { print_byte_at::at#0 = print_byte_at::at#2 print_word_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#0 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] { { print_dword_at::dw#0 = main::cyclecount#0 } { print_word_at::w#1 = print_word_at::w#2 } { print_byte_at::b#1 = print_byte_at::b#2 } { print_byte_at::at#1 = print_byte_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y +Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { } ) always clobbers reg byte a +Statement [54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { } ) always clobbers reg byte a +Statement [58] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { } ) always clobbers reg byte a +Statement [62] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [63] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [67] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] { } ) always clobbers reg byte a +Statement [69] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] { } ) always clobbers reg byte a +Statement [73] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [74] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [75] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [76] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [80] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y +Statement [81] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y +Statement [82] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] { } ) always clobbers reg byte y +Statement [83] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( main:2::init_dist_screen:10 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [88] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ bsearch16u::return#3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ sqrt::found#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [ sqrt::$3 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ sqrt::$1 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 ] ( main:2::init_dist_screen:10::sqrt:77 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [109] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:2::init_dist_screen:10::sqrt:77::bsearch16u:89 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ sqr::$0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 ] ( main:2::init_dist_screen:10::sqr:57 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:2::init_dist_screen:10::sqr:72 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [124] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [125] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [126] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [128] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:2::init_dist_screen:10::init_squares:50 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [132] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [133] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [134] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [135] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [136] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:8 [ ] { } ) always clobbers reg byte a +Statement [141] *((byte*) init_font_hex::charset#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y +Statement [143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a +Statement [144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a +Statement [150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a +Statement [152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a +Statement [153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( main:2::init_font_hex:5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a +Statement [157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( main:2::init_font_hex:5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_word_at::at#2 ] : zp[2]:4 , Potential registers zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] : zp[1]:6 , reg byte x , @@ -4400,37 +4394,37 @@ Potential registers zp[1]:104 [ init_font_hex::$2 ] : zp[1]:104 , reg byte a , r Potential registers zp[1]:105 [ init_font_hex::idx#3 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bsearch16u] 7,563.11: zp[1]:25 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,852.83: zp[2]:23 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,002: zp[1]:91 [ bsearch16u::$6 ] 2,002: zp[1]:92 [ bsearch16u::$16 ] 1,501.5: zp[2]:95 [ bsearch16u::result#0 ] 501: zp[2]:93 [ bsearch16u::pivot#0 ] 4: zp[2]:82 [ bsearch16u::return#3 ] 0.29: zp[2]:80 [ bsearch16u::key#0 ] -Uplift Scope [init_font_hex] 2,168.83: zp[1]:40 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp[1]:103 [ init_font_hex::$1 ] 2,002: zp[1]:104 [ init_font_hex::$2 ] 1,151.6: zp[1]:41 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp[1]:102 [ init_font_hex::$0 ] 202: zp[1]:105 [ init_font_hex::idx#3 ] 165.86: zp[2]:35 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp[2]:37 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp[2]:32 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] -Uplift Scope [init_dist_screen] 707: zp[1]:22 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 221.24: zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 202: zp[1]:69 [ init_dist_screen::x2#0 ] 202: zp[2]:72 [ init_dist_screen::xds#0 ] 202: zp[2]:74 [ init_dist_screen::ds#0 ] 131.3: zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 126.25: zp[1]:79 [ init_dist_screen::d#0 ] 77: zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 22: zp[1]:64 [ init_dist_screen::y2#0 ] 17.47: zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 14.12: zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] 12.5: zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] 4.87: zp[2]:67 [ init_dist_screen::yds#0 ] -Uplift Scope [sqr] 338: zp[1]:26 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 202: zp[2]:70 [ sqr::return#3 ] 28.5: zp[2]:98 [ sqr::return#0 ] 22: zp[2]:65 [ sqr::return#2 ] 4: zp[1]:97 [ sqr::$0 ] -Uplift Scope [sqrt] 202: zp[1]:78 [ sqrt::return#2 ] 103: zp[2]:76 [ sqrt::val#0 ] 34.33: zp[1]:90 [ sqrt::return#0 ] 4: zp[2]:84 [ sqrt::found#0 ] 4: zp[2]:86 [ sqrt::$3 ] 2: zp[2]:88 [ sqrt::$1 ] -Uplift Scope [init_squares] 28.29: zp[1]:27 [ init_squares::i#2 init_squares::i#1 ] 22: zp[1]:100 [ init_squares::$3 ] 22: zp[1]:101 [ init_squares::$4 ] 16.5: zp[2]:28 [ init_squares::sqr#2 init_squares::sqr#1 ] 15.4: zp[2]:30 [ init_squares::squares#2 init_squares::squares#1 ] -Uplift Scope [print_char_at] 12: zp[1]:11 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp[2]:12 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplift Scope [print_byte_at] 9.33: zp[2]:9 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp[1]:58 [ print_byte_at::$0 ] 2: zp[1]:59 [ print_byte_at::$2 ] -Uplift Scope [print_word_at] 10: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp[2]:4 [ print_word_at::at#2 ] -Uplift Scope [main] 4: zp[4]:46 [ main::$4 ] 4: zp[4]:50 [ main::cyclecount#0 ] -Uplift Scope [clock] 4: zp[4]:42 [ clock::return#2 ] 1.33: zp[4]:60 [ clock::return#0 ] -Uplift Scope [print_dword_at] 2: zp[4]:54 [ print_dword_at::dw#0 ] +Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:25 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,841,366,677.83: zp[2]:23 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,000,000,002: zp[1]:91 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:92 [ bsearch16u::$16 ] 1,500,000,001.5: zp[2]:95 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:93 [ bsearch16u::pivot#0 ] 200,002: zp[2]:82 [ bsearch16u::return#3 ] 78,571.57: zp[2]:80 [ bsearch16u::key#0 ] +Uplift Scope [init_font_hex] 216,668.83: zp[1]:40 [ init_font_hex::i#2 init_font_hex::i#1 ] 200,002: zp[1]:103 [ init_font_hex::$1 ] 200,002: zp[1]:104 [ init_font_hex::$2 ] 115,001.6: zp[1]:41 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 100,001: zp[1]:102 [ init_font_hex::$0 ] 20,002: zp[1]:105 [ init_font_hex::idx#3 ] 16,334.97: zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 16,288.71: zp[2]:35 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 14,231.5: zp[2]:37 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 6,334.17: zp[2]:32 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 1,606.87: zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplift Scope [sqrt] 200,002: zp[2]:84 [ sqrt::found#0 ] 200,002: zp[2]:86 [ sqrt::$3 ] 110,002: zp[2]:76 [ sqrt::val#0 ] 100,001: zp[2]:88 [ sqrt::$1 ] 36,667.33: zp[1]:90 [ sqrt::return#0 ] 20,002: zp[1]:78 [ sqrt::return#2 ] +Uplift Scope [sqr] 200,002: zp[1]:97 [ sqr::$0 ] 133,007: zp[1]:26 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:98 [ sqr::return#0 ] 20,002: zp[2]:70 [ sqr::return#3 ] 2,002: zp[2]:65 [ sqr::return#2 ] +Uplift Scope [print_char_at] 150,006: zp[1]:11 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:12 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [init_dist_screen] 70,007: zp[1]:22 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:69 [ init_dist_screen::x2#0 ] 20,002: zp[2]:72 [ init_dist_screen::xds#0 ] 20,002: zp[2]:74 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:79 [ init_dist_screen::d#0 ] 7,007: zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:64 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,334.12: zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] 1,188.12: zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:67 [ init_dist_screen::yds#0 ] +Uplift Scope [init_squares] 25,716.86: zp[1]:27 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:100 [ init_squares::$3 ] 20,002: zp[1]:101 [ init_squares::$4 ] 15,001.5: zp[2]:28 [ init_squares::sqr#2 init_squares::sqr#1 ] 14,001.4: zp[2]:30 [ init_squares::squares#2 init_squares::squares#1 ] +Uplift Scope [print_byte_at] 20,002: zp[1]:58 [ print_byte_at::$0 ] 10,001: zp[1]:59 [ print_byte_at::$2 ] 7,671.33: zp[2]:9 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 6,402.8: zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplift Scope [print_word_at] 955: zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 400.4: zp[2]:4 [ print_word_at::at#2 ] +Uplift Scope [print_dword_at] 71: zp[4]:54 [ print_dword_at::dw#0 ] +Uplift Scope [clock] 37.33: zp[4]:60 [ clock::return#0 ] 22: zp[4]:42 [ clock::return#2 ] +Uplift Scope [main] 22: zp[4]:46 [ main::$4 ] 22: zp[4]:50 [ main::cyclecount#0 ] Uplift Scope [malloc] Uplift Scope [RADIX] Uplift Scope [clock_start] Uplift Scope [] Uplifting [bsearch16u] best 263251 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:23 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:95 [ bsearch16u::result#0 ] zp[2]:93 [ bsearch16u::pivot#0 ] zp[2]:82 [ bsearch16u::return#3 ] zp[2]:80 [ bsearch16u::key#0 ] -Uplifting [init_font_hex] best 244251 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:41 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:102 [ init_font_hex::$0 ] zp[1]:105 [ init_font_hex::idx#3 ] zp[2]:35 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:37 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:32 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] +Uplifting [init_font_hex] best 244251 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:41 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:102 [ init_font_hex::$0 ] zp[1]:105 [ init_font_hex::idx#3 ] zp[1]:39 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:35 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:37 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:32 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [init_dist_screen] best 241051 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:72 [ init_dist_screen::xds#0 ] zp[2]:74 [ init_dist_screen::ds#0 ] zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:64 [ init_dist_screen::y2#0 ] zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] zp[2]:67 [ init_dist_screen::yds#0 ] +Uplifting [sqrt] best 243348 combination zp[2]:84 [ sqrt::found#0 ] zp[2]:86 [ sqrt::$3 ] zp[2]:76 [ sqrt::val#0 ] zp[2]:88 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] +Uplifting [sqr] best 243011 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:98 [ sqr::return#0 ] zp[2]:70 [ sqr::return#3 ] zp[2]:65 [ sqr::return#2 ] +Uplifting [print_char_at] best 243004 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:12 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplifting [init_dist_screen] best 239804 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:72 [ init_dist_screen::xds#0 ] zp[2]:74 [ init_dist_screen::ds#0 ] zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:64 [ init_dist_screen::y2#0 ] zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] zp[2]:67 [ init_dist_screen::yds#0 ] Limited combination testing to 100 combinations of 6144 possible. -Uplifting [sqr] best 240714 combination reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:70 [ sqr::return#3 ] zp[2]:98 [ sqr::return#0 ] zp[2]:65 [ sqr::return#2 ] reg byte a [ sqr::$0 ] -Uplifting [sqrt] best 239811 combination reg byte a [ sqrt::return#2 ] zp[2]:76 [ sqrt::val#0 ] reg byte a [ sqrt::return#0 ] zp[2]:84 [ sqrt::found#0 ] zp[2]:86 [ sqrt::$3 ] zp[2]:88 [ sqrt::$1 ] -Uplifting [init_squares] best 239611 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:28 [ init_squares::sqr#2 init_squares::sqr#1 ] zp[2]:30 [ init_squares::squares#2 init_squares::squares#1 ] -Uplifting [print_char_at] best 239604 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:12 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] -Uplifting [print_byte_at] best 239596 combination zp[2]:9 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] +Uplifting [init_squares] best 239604 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:28 [ init_squares::sqr#2 init_squares::sqr#1 ] zp[2]:30 [ init_squares::squares#2 init_squares::squares#1 ] +Uplifting [print_byte_at] best 239596 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp[2]:9 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Uplifting [print_word_at] best 239596 combination zp[2]:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp[2]:4 [ print_word_at::at#2 ] -Uplifting [main] best 239596 combination zp[4]:46 [ main::$4 ] zp[4]:50 [ main::cyclecount#0 ] -Uplifting [clock] best 239596 combination zp[4]:42 [ clock::return#2 ] zp[4]:60 [ clock::return#0 ] Uplifting [print_dword_at] best 239596 combination zp[4]:54 [ print_dword_at::dw#0 ] +Uplifting [clock] best 239596 combination zp[4]:60 [ clock::return#0 ] zp[4]:42 [ clock::return#2 ] +Uplifting [main] best 239596 combination zp[4]:46 [ main::$4 ] zp[4]:50 [ main::cyclecount#0 ] Uplifting [malloc] best 239596 combination Uplifting [RADIX] best 239596 combination Uplifting [clock_start] best 239596 combination @@ -4449,14 +4443,14 @@ Attempting to uplift remaining variables inzp[1]:20 [ init_dist_screen::x#2 init Uplifting [init_dist_screen] best 238996 combination zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Attempting to uplift remaining variables inzp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] Uplifting [init_dist_screen] best 238926 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] +Attempting to uplift remaining variables inzp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplifting [print_byte_at] best 238926 combination zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Attempting to uplift remaining variables inzp[1]:64 [ init_dist_screen::y2#0 ] Uplifting [init_dist_screen] best 238826 combination reg byte a [ init_dist_screen::y2#0 ] Attempting to uplift remaining variables inzp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] Uplifting [init_font_hex] best 238826 combination zp[1]:34 [ init_font_hex::c#6 init_font_hex::c#1 ] Attempting to uplift remaining variables inzp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Uplifting [init_dist_screen] best 238826 combination zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] -Uplifting [print_byte_at] best 238826 combination zp[1]:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] Coalescing zero page register [ zp[2]:4 [ print_word_at::at#2 ] ] with [ zp[2]:9 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:23 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] ] with [ zp[2]:82 [ bsearch16u::return#3 ] ] - score: 1 Coalescing zero page register [ zp[4]:42 [ clock::return#2 ] ] with [ zp[4]:46 [ main::$4 ] ] - score: 1 @@ -5695,9 +5689,9 @@ FINAL SYMBOL TABLE (word*) SQUARES (const word*) SQUARES#1 SQUARES = (word*)(const void*) malloc::return#0 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:6 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:6 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -5709,38 +5703,38 @@ FINAL SYMBOL TABLE (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:6 1001.0 -(word*) bsearch16u::items#2 items zp[2]:6 334.33333333333337 -(word*) bsearch16u::items#8 items zp[2]:6 1501.5 +(word*) bsearch16u::items#0 items zp[2]:6 1.000000001E9 +(word*) bsearch16u::items#2 items zp[2]:6 3.336666673333333E8 +(word*) bsearch16u::items#8 items zp[2]:6 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:18 0.2857142857142857 +(word) bsearch16u::key#0 key zp[2]:18 78571.57142857142 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:20 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:20 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:22 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:22 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:6 2.0 -(word*) bsearch16u::return#2 return zp[2]:6 6.0 -(word*) bsearch16u::return#3 return zp[2]:6 4.0 -(word*) bsearch16u::return#6 return zp[2]:6 4.0 +(word*) bsearch16u::return#1 return zp[2]:6 700001.0 +(word*) bsearch16u::return#2 return zp[2]:6 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:6 200002.0 +(word*) bsearch16u::return#6 return zp[2]:6 2000002.0 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:12 1.3333333333333333 -(dword) clock::return#2 return zp[4]:12 4.0 +(dword) clock::return#0 return zp[4]:12 37.33333333333333 +(dword) clock::return#2 return zp[4]:12 22.0 (void()) clock_start() (label) clock_start::@return (byte*) heap_head (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -5756,41 +5750,41 @@ FINAL SYMBOL TABLE (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:18 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:18 20002.0 (byte*) init_dist_screen::screen (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:4 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:4 6.787878787878787 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:4 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:4 666.7878787878788 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:2 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:2 7.0 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:2 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:2 687.625 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:9 101.0 -(byte) init_dist_screen::x#2 x zp[1]:9 30.3 +(byte) init_dist_screen::x#1 x zp[1]:9 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:9 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:10 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:10 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:10 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:10 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:18 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:18 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:11 16.5 -(byte) init_dist_screen::y#10 y zp[1]:11 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:11 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:11 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:16 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:16 478.3478260869565 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:24 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:24 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -5798,45 +5792,45 @@ FINAL SYMBOL TABLE (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:9 16.5 -(byte) init_font_hex::c#6 c zp[1]:9 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:9 1501.5 +(byte) init_font_hex::c#6 c zp[1]:9 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:10 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:10 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:10 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:10 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:18 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:18 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:18 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:18 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:18 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:18 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:11 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:11 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:11 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:11 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:16 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:16 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:16 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:16 9230.999999999998 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:6 11.0 -(word) init_squares::sqr#2 sqr zp[2]:6 5.5 +(word) init_squares::sqr#1 sqr zp[2]:6 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:6 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#1 squares zp[2]:18 4.4 -(word*) init_squares::squares#2 squares zp[2]:18 11.0 +(word*) init_squares::squares#1 squares zp[2]:18 4000.4 +(word*) init_squares::squares#2 squares zp[2]:18 10001.0 (void()) main() -(dword~) main::$4 zp[4]:12 4.0 +(dword~) main::$4 zp[4]:12 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -5846,7 +5840,7 @@ FINAL SYMBOL TABLE (const byte*) main::BASE_CHARSET = (byte*) 4096 (const byte*) main::BASE_SCREEN = (byte*) 1024 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:12 4.0 +(dword) main::cyclecount#0 cyclecount zp[4]:12 22.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -5866,68 +5860,68 @@ FINAL SYMBOL TABLE (word) malloc::size (const word) malloc::size#0 size = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 20002.0 +(byte~) print_byte_at::$2 reg byte y 10001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:11 2.0 -(byte) print_byte_at::b#1 b zp[1]:11 2.0 -(byte) print_byte_at::b#2 b zp[1]:11 1.6 +(byte) print_byte_at::b#0 b zp[1]:11 1001.0 +(byte) print_byte_at::b#1 b zp[1]:11 1001.0 +(byte) print_byte_at::b#2 b zp[1]:11 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:6 4.0 -(byte*) print_char_at::at#1 at zp[2]:6 2.0 -(byte*) print_char_at::at#2 at zp[2]:6 6.0 +(byte*) print_char_at::at#0 at zp[2]:6 20002.0 +(byte*) print_char_at::at#1 at zp[2]:6 10001.0 +(byte*) print_char_at::at#2 at zp[2]:6 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 10001.0 +(byte) print_char_at::ch#1 reg byte x 20002.0 +(byte) print_char_at::ch#2 reg byte x 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:12 2.0 +(dword) print_dword_at::dw#0 dw zp[4]:12 71.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 400.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 202.0 +(word) print_word_at::w#1 w zp[2]:2 202.0 +(word) print_word_at::w#2 w zp[2]:2 551.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:18 28.5 -(word) sqr::return#2 return_1 zp[2]:16 22.0 -(word) sqr::return#3 return zp[2]:18 202.0 +(word) sqr::return#0 return zp[2]:18 27750.75 +(word) sqr::return#2 return_1 zp[2]:16 2002.0 +(word) sqr::return#3 return zp[2]:18 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:6 2.0 -(word~) sqrt::$3 zp[2]:6 4.0 +(word~) sqrt::$1 zp[2]:6 100001.0 +(word~) sqrt::$3 zp[2]:6 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:6 4.0 +(word*) sqrt::found#0 found zp[2]:6 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:18 103.0 +(word) sqrt::val#0 val zp[2]:18 110002.0 reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:2 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] diff --git a/src/test/ref/screen-center-distance.sym b/src/test/ref/screen-center-distance.sym index 814a8da67..10fbc4f3a 100644 --- a/src/test/ref/screen-center-distance.sym +++ b/src/test/ref/screen-center-distance.sym @@ -22,9 +22,9 @@ (word*) SQUARES (const word*) SQUARES#1 SQUARES = (word*)(const void*) malloc::return#0 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:6 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:6 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -36,38 +36,38 @@ (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:6 1001.0 -(word*) bsearch16u::items#2 items zp[2]:6 334.33333333333337 -(word*) bsearch16u::items#8 items zp[2]:6 1501.5 +(word*) bsearch16u::items#0 items zp[2]:6 1.000000001E9 +(word*) bsearch16u::items#2 items zp[2]:6 3.336666673333333E8 +(word*) bsearch16u::items#8 items zp[2]:6 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:18 0.2857142857142857 +(word) bsearch16u::key#0 key zp[2]:18 78571.57142857142 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:20 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:20 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:22 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:22 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:6 2.0 -(word*) bsearch16u::return#2 return zp[2]:6 6.0 -(word*) bsearch16u::return#3 return zp[2]:6 4.0 -(word*) bsearch16u::return#6 return zp[2]:6 4.0 +(word*) bsearch16u::return#1 return zp[2]:6 700001.0 +(word*) bsearch16u::return#2 return zp[2]:6 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:6 200002.0 +(word*) bsearch16u::return#6 return zp[2]:6 2000002.0 (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:12 1.3333333333333333 -(dword) clock::return#2 return zp[4]:12 4.0 +(dword) clock::return#0 return zp[4]:12 37.33333333333333 +(dword) clock::return#2 return zp[4]:12 22.0 (void()) clock_start() (label) clock_start::@return (byte*) heap_head (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -83,41 +83,41 @@ (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:18 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:18 20002.0 (byte*) init_dist_screen::screen (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:4 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:4 6.787878787878787 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:4 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:4 666.7878787878788 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:2 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:2 7.0 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:2 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:2 687.625 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:9 101.0 -(byte) init_dist_screen::x#2 x zp[1]:9 30.3 +(byte) init_dist_screen::x#1 x zp[1]:9 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:9 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:10 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:10 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:10 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:10 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:18 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:18 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:11 16.5 -(byte) init_dist_screen::y#10 y zp[1]:11 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:11 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:11 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:16 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:16 478.3478260869565 (void()) init_font_hex((byte*) init_font_hex::charset) -(byte~) init_font_hex::$0 zp[1]:24 1001.0 -(byte~) init_font_hex::$1 reg byte a 2002.0 -(byte~) init_font_hex::$2 reg byte a 2002.0 +(byte~) init_font_hex::$0 zp[1]:24 100001.0 +(byte~) init_font_hex::$1 reg byte a 200002.0 +(byte~) init_font_hex::$2 reg byte a 200002.0 (label) init_font_hex::@1 (label) init_font_hex::@2 (label) init_font_hex::@3 @@ -125,45 +125,45 @@ (label) init_font_hex::@5 (label) init_font_hex::@return (byte) init_font_hex::c -(byte) init_font_hex::c#1 c zp[1]:9 16.5 -(byte) init_font_hex::c#6 c zp[1]:9 1.1578947368421053 +(byte) init_font_hex::c#1 c zp[1]:9 1501.5 +(byte) init_font_hex::c#6 c zp[1]:9 105.36842105263158 (byte) init_font_hex::c1 -(byte) init_font_hex::c1#1 c1 zp[1]:10 151.5 -(byte) init_font_hex::c1#4 c1 zp[1]:10 13.466666666666667 +(byte) init_font_hex::c1#1 c1 zp[1]:10 15001.5 +(byte) init_font_hex::c1#4 c1 zp[1]:10 1333.4666666666667 (byte*) init_font_hex::charset -(byte*) init_font_hex::charset#0 charset zp[2]:18 35.5 -(byte*) init_font_hex::charset#2 charset zp[2]:18 108.35714285714285 -(byte*) init_font_hex::charset#5 charset zp[2]:18 22.0 +(byte*) init_font_hex::charset#0 charset zp[2]:18 3500.5 +(byte*) init_font_hex::charset#2 charset zp[2]:18 10786.214285714286 +(byte*) init_font_hex::charset#5 charset zp[2]:18 2002.0 (byte) init_font_hex::i -(byte) init_font_hex::i#1 reg byte x 1501.5 -(byte) init_font_hex::i#2 reg byte x 667.3333333333334 +(byte) init_font_hex::i#1 reg byte x 150001.5 +(byte) init_font_hex::i#2 reg byte x 66667.33333333333 (byte) init_font_hex::idx -(byte) init_font_hex::idx#2 idx zp[1]:11 551.0 -(byte) init_font_hex::idx#3 reg byte y 202.0 -(byte) init_font_hex::idx#5 idx zp[1]:11 600.5999999999999 +(byte) init_font_hex::idx#2 idx zp[1]:11 55001.0 +(byte) init_font_hex::idx#3 reg byte y 20002.0 +(byte) init_font_hex::idx#5 idx zp[1]:11 60000.600000000006 (byte*) init_font_hex::proto_hi -(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 7.333333333333333 -(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 56.83333333333334 +(byte*) init_font_hex::proto_hi#1 proto_hi zp[2]:6 667.3333333333334 +(byte*) init_font_hex::proto_hi#6 proto_hi zp[2]:6 5666.833333333334 (byte*) init_font_hex::proto_lo -(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:16 50.5 -(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:16 92.53846153846155 +(byte*) init_font_hex::proto_lo#1 proto_lo zp[2]:16 5000.5 +(byte*) init_font_hex::proto_lo#4 proto_lo zp[2]:16 9230.999999999998 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:6 11.0 -(word) init_squares::sqr#2 sqr zp[2]:6 5.5 +(word) init_squares::sqr#1 sqr zp[2]:6 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:6 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#1 squares zp[2]:18 4.4 -(word*) init_squares::squares#2 squares zp[2]:18 11.0 +(word*) init_squares::squares#1 squares zp[2]:18 4000.4 +(word*) init_squares::squares#2 squares zp[2]:18 10001.0 (void()) main() -(dword~) main::$4 zp[4]:12 4.0 +(dword~) main::$4 zp[4]:12 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -173,7 +173,7 @@ (const byte*) main::BASE_CHARSET = (byte*) 4096 (const byte*) main::BASE_SCREEN = (byte*) 1024 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:12 4.0 +(dword) main::cyclecount#0 cyclecount zp[4]:12 22.0 (label) main::toD0181 (byte*) main::toD0181_gfx (byte) main::toD0181_return @@ -193,68 +193,68 @@ (word) malloc::size (const word) malloc::size#0 size = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) -(byte~) print_byte_at::$0 reg byte a 4.0 -(byte~) print_byte_at::$2 reg byte y 2.0 +(byte~) print_byte_at::$0 reg byte a 20002.0 +(byte~) print_byte_at::$2 reg byte y 10001.0 (label) print_byte_at::@1 (label) print_byte_at::@return (byte*) print_byte_at::at -(byte*) print_byte_at::at#0 at zp[2]:4 4.0 -(byte*) print_byte_at::at#1 at zp[2]:4 4.0 -(byte*) print_byte_at::at#2 at zp[2]:4 1.3333333333333333 +(byte*) print_byte_at::at#0 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#1 at zp[2]:4 2002.0 +(byte*) print_byte_at::at#2 at zp[2]:4 3667.333333333333 (byte) print_byte_at::b -(byte) print_byte_at::b#0 b zp[1]:11 2.0 -(byte) print_byte_at::b#1 b zp[1]:11 2.0 -(byte) print_byte_at::b#2 b zp[1]:11 1.6 +(byte) print_byte_at::b#0 b zp[1]:11 1001.0 +(byte) print_byte_at::b#1 b zp[1]:11 1001.0 +(byte) print_byte_at::b#2 b zp[1]:11 4400.8 (void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) (label) print_char_at::@return (byte*) print_char_at::at -(byte*) print_char_at::at#0 at zp[2]:6 4.0 -(byte*) print_char_at::at#1 at zp[2]:6 2.0 -(byte*) print_char_at::at#2 at zp[2]:6 6.0 +(byte*) print_char_at::at#0 at zp[2]:6 20002.0 +(byte*) print_char_at::at#1 at zp[2]:6 10001.0 +(byte*) print_char_at::at#2 at zp[2]:6 120003.0 (byte) print_char_at::ch -(byte) print_char_at::ch#0 reg byte x 2.0 -(byte) print_char_at::ch#1 reg byte x 4.0 -(byte) print_char_at::ch#2 reg byte x 6.0 +(byte) print_char_at::ch#0 reg byte x 10001.0 +(byte) print_char_at::ch#1 reg byte x 20002.0 +(byte) print_char_at::ch#2 reg byte x 120003.0 (void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) (label) print_dword_at::@1 (label) print_dword_at::@return (byte*) print_dword_at::at (dword) print_dword_at::dw -(dword) print_dword_at::dw#0 dw zp[4]:12 2.0 +(dword) print_dword_at::dw#0 dw zp[4]:12 71.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) (label) print_word_at::@1 (label) print_word_at::@return (byte*) print_word_at::at -(byte*) print_word_at::at#2 at zp[2]:4 0.8 +(byte*) print_word_at::at#2 at zp[2]:4 400.4 (word) print_word_at::w -(word) print_word_at::w#0 w zp[2]:2 4.0 -(word) print_word_at::w#1 w zp[2]:2 4.0 -(word) print_word_at::w#2 w zp[2]:2 2.0 +(word) print_word_at::w#0 w zp[2]:2 202.0 +(word) print_word_at::w#1 w zp[2]:2 202.0 +(word) print_word_at::w#2 w zp[2]:2 551.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:18 28.5 -(word) sqr::return#2 return_1 zp[2]:16 22.0 -(word) sqr::return#3 return zp[2]:18 202.0 +(word) sqr::return#0 return zp[2]:18 27750.75 +(word) sqr::return#2 return_1 zp[2]:16 2002.0 +(word) sqr::return#3 return zp[2]:18 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:6 2.0 -(word~) sqrt::$3 zp[2]:6 4.0 +(word~) sqrt::$1 zp[2]:6 100001.0 +(word~) sqrt::$3 zp[2]:6 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:6 4.0 +(word*) sqrt::found#0 found zp[2]:6 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:18 103.0 +(word) sqrt::val#0 val zp[2]:18 110002.0 reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:2 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] diff --git a/src/test/ref/screen-show-spiral-buckets.log b/src/test/ref/screen-show-spiral-buckets.log index dfc58e5c4..ad5157371 100644 --- a/src/test/ref/screen-show-spiral-buckets.log +++ b/src/test/ref/screen-show-spiral-buckets.log @@ -2673,259 +2673,259 @@ Inversing boolean not [268] (bool~) main::$10 ← *((byte*) main::fill#0) == (co Inversing boolean not [272] (bool~) main::$15 ← (word) main::min_offset#2 == (word) $ffff from [271] (bool~) main::$14 ← (word) main::min_offset#2 != (word) $ffff Inversing boolean not [280] (bool~) main::$13 ← *((byte*) main::angle#0) > (byte) main::min_angle#2 from [279] (bool~) main::$12 ← *((byte*) main::angle#0) <= (byte) main::min_angle#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#9 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#19 (byte*) heap_head#2 -Alias (byte) bsearch16u::num#3 = (byte) bsearch16u::num#4 (byte) bsearch16u::num#8 (byte) bsearch16u::num#6 -Alias (word*) bsearch16u::items#2 = (word*) bsearch16u::items#6 (word*) bsearch16u::items#3 (word*) bsearch16u::items#9 (word*) bsearch16u::items#4 (word*~) bsearch16u::$3 (word*) bsearch16u::items#5 -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#3 (word) bsearch16u::key#2 (word) bsearch16u::key#7 (word) bsearch16u::key#6 -Alias (word*) bsearch16u::pivot#0 = (word*~) bsearch16u::$7 (word*) bsearch16u::pivot#3 (word*) bsearch16u::pivot#1 (word*) bsearch16u::return#0 (word*) bsearch16u::pivot#2 -Alias (signed word) bsearch16u::result#0 = (signed word~) bsearch16u::$10 (signed word) bsearch16u::result#1 -Alias (word*) bsearch16u::return#1 = (word*) bsearch16u::return#4 -Alias (word*) bsearch16u::items#0 = (word*~) bsearch16u::$15 -Alias (word*~) bsearch16u::$2 = (word*~) bsearch16u::$1 -Alias (word*) bsearch16u::return#2 = (word*~) bsearch16u::$4 -Alias (byte*) heap_head#0 = (byte*) heap_head#47 (byte*) heap_head#35 -Alias (word) malloc::size#0 = (byte~) init_squares::$0 -Alias (void*) malloc::return#10 = (void*) malloc::return#2 -Alias (byte) NUM_SQUARES#14 = (byte) NUM_SQUARES#6 -Alias (byte*) heap_head#20 = (byte*) heap_head#3 -Alias (word) init_squares::sqr#2 = (word) init_squares::sqr#3 -Alias (word*) init_squares::squares#2 = (word*) init_squares::squares#3 -Alias (byte) init_squares::i#2 = (byte) init_squares::i#3 -Alias (byte) NUM_SQUARES#13 = (byte) NUM_SQUARES#7 -Alias (byte*) heap_head#21 = (byte*) heap_head#46 (byte*) heap_head#38 (byte*) heap_head#4 -Alias (word*) SQUARES#17 = (word*) SQUARES#26 (word*) SQUARES#8 (word*) SQUARES#2 -Alias (word) sqr::return#0 = (word) sqr::return#4 (word) sqr::return#1 -Alias (word*) bsearch16u::return#3 = (word*) bsearch16u::return#5 -Alias (word*) SQUARES#10 = (word*) SQUARES#11 -Alias (word*) sqrt::found#0 = (word*~) sqrt::$0 -Alias (byte) sqrt::return#0 = (byte) sqrt::sq#0 (byte~) sqrt::$2 (byte) sqrt::return#3 (byte) sqrt::return#1 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte) NUM_SQUARES#0 = (byte) NUM_SQUARES#50 (byte) NUM_SQUARES#46 (byte) NUM_SQUARES#41 (byte) NUM_SQUARES#35 (byte) NUM_SQUARES#26 (byte) NUM_SQUARES#25 (byte) NUM_SQUARES#19 -Alias (word*) SQUARES#0 = (word*) SQUARES#55 (word*) SQUARES#52 (word*) SQUARES#49 (word*) SQUARES#45 (word*) SQUARES#36 (word*) SQUARES#35 (word*) SQUARES#25 -Alias (void*) malloc::return#11 = (void*) malloc::return#3 -Alias (byte*) heap_head#22 = (byte*) heap_head#5 -Alias (void*) malloc::return#12 = (void*) malloc::return#4 -Alias (byte*) SCREEN_DIST#0 = (byte*) SCREEN_DIST#8 (byte*) SCREEN_DIST#7 (byte*) SCREEN_DIST#6 (byte*) SCREEN_DIST#5 (byte*) SCREEN_DIST#3 -Alias (byte*) heap_head#23 = (byte*) heap_head#6 -Alias (void*) malloc::return#13 = (void*) malloc::return#5 -Alias (byte*) SCREEN_ANGLE#0 = (byte*) SCREEN_ANGLE#13 (byte*) SCREEN_ANGLE#10 (byte*) SCREEN_ANGLE#9 (byte*) SCREEN_ANGLE#5 -Alias (byte*) heap_head#24 = (byte*) heap_head#7 -Alias (void*) malloc::return#14 = (void*) malloc::return#6 -Alias (byte*) BUCKET_SIZES#0 = (byte*) BUCKET_SIZES#24 (byte*) BUCKET_SIZES#23 (byte*) BUCKET_SIZES#19 -Alias (byte*) heap_head#25 = (byte*) heap_head#8 -Alias (void*) malloc::return#15 = (void*) malloc::return#7 -Alias (word**) BUCKETS#0 = (word**) BUCKETS#30 (word**) BUCKETS#26 -Alias (byte*) heap_head#26 = (byte*) heap_head#9 (byte*) heap_head#45 -Alias (byte*) SCREEN_ANGLE#1 = (byte*) SCREEN_ANGLE#3 (byte*) SCREEN_ANGLE#19 (byte*) SCREEN_ANGLE#18 -Alias (byte*) SCREEN_DIST#1 = (byte*) SCREEN_DIST#4 (byte*) SCREEN_DIST#2 -Alias (byte*) BUCKET_SIZES#11 = (byte*) BUCKET_SIZES#12 (byte*) BUCKET_SIZES#16 (byte*) BUCKET_SIZES#15 -Alias (word**) BUCKETS#12 = (word**) BUCKETS#19 (word**) BUCKETS#22 (word**) BUCKETS#15 -Alias (byte*) BUCKET_IDX#12 = (byte*) BUCKET_IDX#13 (byte*) BUCKET_IDX#14 -Alias (byte) NUM_SQUARES#1 = (byte) NUM_SQUARES#9 (byte) NUM_SQUARES#36 (byte) NUM_SQUARES#29 -Alias (byte*) heap_head#10 = (byte*) heap_head#27 (byte*) heap_head#40 -Alias (word*) SQUARES#12 = (word*) SQUARES#3 (word*) SQUARES#46 (word*) SQUARES#39 -Alias (byte*) heap_head#11 = (byte*) heap_head#28 -Alias (byte) main::bucket_idx#11 = (byte) main::bucket_idx#2 (byte) main::bucket_idx#4 -Alias (word**) BUCKETS#1 = (word**) BUCKETS#4 (word**) BUCKETS#24 -Alias (byte*) BUCKET_SIZES#1 = (byte*) BUCKET_SIZES#5 (byte*) BUCKET_SIZES#22 -Alias (byte) NUM_SQUARES#38 = (byte) NUM_SQUARES#42 (byte) NUM_SQUARES#48 -Alias (byte*) heap_head#62 = (byte*) heap_head#67 (byte*) heap_head#74 -Alias (word*) SQUARES#48 = (word*) SQUARES#50 (word*) SQUARES#54 -Alias (byte*) SCREEN_ANGLE#11 = (byte*) SCREEN_ANGLE#14 (byte*) SCREEN_ANGLE#8 -Alias (byte) main::bucket_size#0 = (byte) main::bucket_size#3 -Alias (word*) main::bucket#0 = (word*) main::bucket#4 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#5 (byte) main::i#6 -Alias (word*) main::bucket#1 = (word*) main::bucket#2 (word*) main::bucket#5 (word*) main::bucket#6 -Alias (byte*) SCREEN_ANGLE#12 = (byte*) SCREEN_ANGLE#4 (byte*) SCREEN_ANGLE#6 (byte*) SCREEN_ANGLE#20 (byte*) SCREEN_ANGLE#2 (byte*) SCREEN_ANGLE#16 -Alias (byte) main::min_angle#2 = (byte) main::min_angle#3 (byte) main::min_angle#4 -Alias (byte) main::bucket_size#1 = (byte) main::bucket_size#6 (byte) main::bucket_size#4 (byte) main::bucket_size#5 -Alias (word) main::min_offset#2 = (word) main::min_offset#7 (word) main::min_offset#4 (word) main::min_offset#6 (word) main::min_offset#3 -Alias (byte) main::bucket_idx#12 = (byte) main::bucket_idx#14 (byte) main::bucket_idx#7 (byte) main::bucket_idx#5 (byte) main::bucket_idx#13 (byte) main::bucket_idx#8 -Alias (byte) NUM_SQUARES#27 = (byte) NUM_SQUARES#53 (byte) NUM_SQUARES#43 (byte) NUM_SQUARES#37 (byte) NUM_SQUARES#51 (byte) NUM_SQUARES#52 -Alias (byte*) heap_head#54 = (byte*) heap_head#81 (byte*) heap_head#68 (byte*) heap_head#61 (byte*) heap_head#79 (byte*) heap_head#80 -Alias (word*) SQUARES#37 = (word*) SQUARES#58 (word*) SQUARES#51 (word*) SQUARES#47 (word*) SQUARES#56 (word*) SQUARES#57 -Alias (word**) BUCKETS#10 = (word**) BUCKETS#29 (word**) BUCKETS#20 (word**) BUCKETS#16 (word**) BUCKETS#27 (word**) BUCKETS#28 -Alias (byte*) BUCKET_SIZES#13 = (byte*) BUCKET_SIZES#27 (byte*) BUCKET_SIZES#20 (byte*) BUCKET_SIZES#17 (byte*) BUCKET_SIZES#25 (byte*) BUCKET_SIZES#26 -Alias (byte*) main::fill#0 = (byte*~) main::$8 -Alias (word) main::offset#0 = (word) main::offset#1 (word) main::offset#2 (word) main::min_offset#1 -Alias (byte*) main::angle#0 = (byte*~) main::$11 (byte*) main::angle#1 -Alias (byte*) main::fill1#0 = (byte*~) main::$16 -Alias (byte) main::bucket_idx#1 = (byte) main::bucket_idx#9 -Alias (word**) BUCKETS#11 = (word**) BUCKETS#17 -Alias (byte*) BUCKET_SIZES#14 = (byte*) BUCKET_SIZES#18 -Alias (byte) NUM_SQUARES#21 = (byte) NUM_SQUARES#28 (byte) NUM_SQUARES#30 -Alias (byte*) heap_head#49 = (byte*) heap_head#55 (byte*) heap_head#56 -Alias (word*) SQUARES#28 = (word*) SQUARES#38 (word*) SQUARES#40 -Alias (byte*) SCREEN_ANGLE#17 = (byte*) SCREEN_ANGLE#21 -Alias (byte) NUM_SQUARES#10 = (byte) NUM_SQUARES#22 (byte) NUM_SQUARES#17 (byte) NUM_SQUARES#2 -Alias (byte*) heap_head#12 = (byte*) heap_head#50 (byte*) heap_head#41 (byte*) heap_head#29 -Alias (word*) SQUARES#13 = (word*) SQUARES#29 (word*) SQUARES#22 (word*) SQUARES#4 -Alias (byte*) init_buckets::screen#1 = (byte*) init_buckets::screen#4 (byte*) init_buckets::dist#0 -Alias (byte*) BUCKET_SIZES#2 = (byte*) BUCKET_SIZES#7 -Alias (byte*) heap_head#63 = (byte*) heap_head#69 -Alias (word**) BUCKETS#18 = (word**) BUCKETS#21 -Alias (byte*) BUCKET_IDX#10 = (byte*) BUCKET_IDX#9 -Alias (byte*) BUCKET_SIZES#3 = (byte*) BUCKET_SIZES#9 -Alias (byte*) heap_head#51 = (byte*) heap_head#57 -Alias (word**) BUCKETS#13 = (word**) BUCKETS#8 -Alias (byte*) BUCKET_IDX#7 = (byte*) BUCKET_IDX#8 -Alias (byte*) init_buckets::screen#10 = (byte*) init_buckets::screen#11 -Alias (word) malloc::size#6 = (byte~) init_buckets::$3 -Alias (void*) malloc::return#16 = (void*) malloc::return#8 -Alias (word) init_buckets::i2#2 = (word) init_buckets::i2#3 -Alias (word**) BUCKETS#14 = (word**) BUCKETS#2 (word**) BUCKETS#5 -Alias (byte*) BUCKET_SIZES#4 = (byte*) BUCKET_SIZES#8 -Alias (byte*) BUCKET_IDX#3 = (byte*) BUCKET_IDX#5 (byte*) BUCKET_IDX#6 -Alias (byte*) init_buckets::screen#7 = (byte*) init_buckets::screen#8 (byte*) init_buckets::screen#9 -Alias (byte*) heap_head#13 = (byte*) heap_head#30 (byte*) heap_head#64 -Alias (byte*) init_buckets::screen#2 = (byte*) init_buckets::screen#5 (byte*) init_buckets::dist#2 -Alias (word**) BUCKETS#6 = (word**) BUCKETS#9 -Alias (byte*) BUCKET_IDX#1 = (byte*) BUCKET_IDX#4 -Alias (byte*) heap_head#52 = (byte*) heap_head#58 -Alias (byte*) heap_head#14 = (byte*) heap_head#31 (byte*) heap_head#42 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 -Alias (byte*) init_dist_screen::screen#1 = (byte*) init_dist_screen::screen#2 (byte*) init_dist_screen::screen_topline#0 -Alias (byte) NUM_SQUARES#3 = (byte) NUM_SQUARES#54 -Alias (byte*) heap_head#15 = (byte*) heap_head#32 -Alias (word*) SQUARES#14 = (word*) SQUARES#5 -Alias (byte*) init_dist_screen::screen_bottomline#0 = (byte*~) init_dist_screen::$1 -Alias (byte) init_dist_screen::y2#0 = (byte~) init_dist_screen::$2 (byte) init_dist_screen::y2#1 (byte) init_dist_screen::y2#2 -Alias (word*) SQUARES#30 = (word*) SQUARES#41 (word*) SQUARES#31 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#14 (byte*) init_dist_screen::screen_topline#12 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#14 (byte*) init_dist_screen::screen_bottomline#12 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#9 (byte) init_dist_screen::y#2 -Alias (byte) NUM_SQUARES#44 = (byte) NUM_SQUARES#49 (byte) NUM_SQUARES#45 -Alias (byte*) heap_head#70 = (byte*) heap_head#76 (byte*) heap_head#71 -Alias (byte~) init_dist_screen::$7 = (byte~) init_dist_screen::$6 -Alias (byte~) init_dist_screen::$5 = (byte~) init_dist_screen::$4 -Alias (byte) init_dist_screen::yd#0 = (byte~) init_dist_screen::$8 -Alias (word) sqr::return#2 = (word) sqr::return#5 -Alias (byte*) init_dist_screen::screen_topline#6 = (byte*) init_dist_screen::screen_topline#8 -Alias (byte*) init_dist_screen::screen_bottomline#6 = (byte*) init_dist_screen::screen_bottomline#8 -Alias (byte) init_dist_screen::y#5 = (byte) init_dist_screen::y#7 -Alias (byte) NUM_SQUARES#31 = (byte) NUM_SQUARES#39 -Alias (byte*) heap_head#59 = (byte*) heap_head#65 -Alias (word*) SQUARES#19 = (word*) SQUARES#42 -Alias (word) init_dist_screen::yds#0 = (word~) init_dist_screen::$9 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#3 (byte) init_dist_screen::x#7 (byte) init_dist_screen::x#8 -Alias (word*) SQUARES#15 = (word*) SQUARES#44 (word*) SQUARES#32 (word*) SQUARES#24 (word*) SQUARES#33 (word*) SQUARES#34 (word*) SQUARES#6 -Alias (word) init_dist_screen::yds#3 = (word) init_dist_screen::yds#5 (word) init_dist_screen::yds#6 (word) init_dist_screen::yds#4 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#40 (byte) NUM_SQUARES#23 (byte) NUM_SQUARES#18 (byte) NUM_SQUARES#33 (byte) NUM_SQUARES#34 (byte) NUM_SQUARES#4 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#13 (byte*) init_dist_screen::screen_topline#4 (byte*) init_dist_screen::screen_topline#2 (byte*) init_dist_screen::screen_topline#9 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#13 (byte*) init_dist_screen::screen_bottomline#4 (byte*) init_dist_screen::screen_bottomline#2 (byte*) init_dist_screen::screen_bottomline#9 -Alias (byte) init_dist_screen::xb#5 = (byte) init_dist_screen::xb#7 (byte) init_dist_screen::xb#8 (byte) init_dist_screen::xb#6 -Alias (byte) init_dist_screen::y#12 = (byte) init_dist_screen::y#14 (byte) init_dist_screen::y#4 (byte) init_dist_screen::y#3 (byte) init_dist_screen::y#13 -Alias (byte*) heap_head#16 = (byte*) heap_head#82 (byte*) heap_head#53 (byte*) heap_head#44 (byte*) heap_head#77 (byte*) heap_head#78 (byte*) heap_head#33 -Alias (byte) init_dist_screen::x2#0 = (byte~) init_dist_screen::$11 (byte) init_dist_screen::x2#1 (byte) init_dist_screen::x2#2 -Alias (byte~) init_dist_screen::$16 = (byte~) init_dist_screen::$15 -Alias (byte~) init_dist_screen::$14 = (byte~) init_dist_screen::$13 -Alias (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$17 -Alias (word) sqr::return#3 = (word) sqr::return#6 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#2 (word) init_dist_screen::yds#7 -Alias (word*) SQUARES#18 = (word*) SQUARES#20 (word*) SQUARES#43 -Alias (byte) NUM_SQUARES#15 = (byte) NUM_SQUARES#24 (byte) NUM_SQUARES#32 -Alias (byte*) init_dist_screen::screen_topline#3 = (byte*) init_dist_screen::screen_topline#5 (byte*) init_dist_screen::screen_topline#7 -Alias (byte) init_dist_screen::x#4 = (byte) init_dist_screen::x#5 (byte) init_dist_screen::x#6 -Alias (byte*) init_dist_screen::screen_bottomline#3 = (byte*) init_dist_screen::screen_bottomline#5 (byte*) init_dist_screen::screen_bottomline#7 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#3 (byte) init_dist_screen::xb#4 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#8 (byte) init_dist_screen::y#6 -Alias (byte*) heap_head#60 = (byte*) heap_head#66 (byte*) heap_head#72 -Alias (word) init_dist_screen::xds#0 = (word~) init_dist_screen::$18 -Alias (word) init_dist_screen::ds#0 = (word~) init_dist_screen::$19 -Alias (byte) sqrt::return#2 = (byte) sqrt::return#4 -Alias (byte) init_dist_screen::d#0 = (byte~) init_dist_screen::$20 -Alias (byte*) BUCKET_IDX#0 = (byte*) BUCKET_IDX#15 -Alias (byte) NUM_SQUARES#12 = (byte) NUM_SQUARES#5 -Alias (byte*) heap_head#17 = (byte*) heap_head#34 -Alias (word*) SQUARES#16 = (word*) SQUARES#7 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#9 malloc::return#1 +Alias heap_head#1 = heap_head#19 heap_head#2 +Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 +Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 +Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 +Alias bsearch16u::pivot#0 = bsearch16u::$7 bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 +Alias bsearch16u::result#0 = bsearch16u::$10 bsearch16u::result#1 +Alias bsearch16u::return#1 = bsearch16u::return#4 +Alias bsearch16u::items#0 = bsearch16u::$15 +Alias bsearch16u::$2 = bsearch16u::$1 +Alias bsearch16u::return#2 = bsearch16u::$4 +Alias heap_head#0 = heap_head#47 heap_head#35 +Alias malloc::size#0 = init_squares::$0 +Alias malloc::return#10 = malloc::return#2 +Alias NUM_SQUARES#14 = NUM_SQUARES#6 +Alias heap_head#20 = heap_head#3 +Alias init_squares::sqr#2 = init_squares::sqr#3 +Alias init_squares::squares#2 = init_squares::squares#3 +Alias init_squares::i#2 = init_squares::i#3 +Alias NUM_SQUARES#13 = NUM_SQUARES#7 +Alias heap_head#21 = heap_head#46 heap_head#38 heap_head#4 +Alias SQUARES#17 = SQUARES#26 SQUARES#8 SQUARES#2 +Alias sqr::return#0 = sqr::return#4 sqr::return#1 +Alias bsearch16u::return#3 = bsearch16u::return#5 +Alias SQUARES#10 = SQUARES#11 +Alias sqrt::found#0 = sqrt::$0 +Alias sqrt::return#0 = sqrt::sq#0 sqrt::$2 sqrt::return#3 sqrt::return#1 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias NUM_SQUARES#0 = NUM_SQUARES#50 NUM_SQUARES#46 NUM_SQUARES#41 NUM_SQUARES#35 NUM_SQUARES#26 NUM_SQUARES#25 NUM_SQUARES#19 +Alias SQUARES#0 = SQUARES#55 SQUARES#52 SQUARES#49 SQUARES#45 SQUARES#36 SQUARES#35 SQUARES#25 +Alias malloc::return#11 = malloc::return#3 +Alias heap_head#22 = heap_head#5 +Alias malloc::return#12 = malloc::return#4 +Alias SCREEN_DIST#0 = SCREEN_DIST#8 SCREEN_DIST#7 SCREEN_DIST#6 SCREEN_DIST#5 SCREEN_DIST#3 +Alias heap_head#23 = heap_head#6 +Alias malloc::return#13 = malloc::return#5 +Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#13 SCREEN_ANGLE#10 SCREEN_ANGLE#9 SCREEN_ANGLE#5 +Alias heap_head#24 = heap_head#7 +Alias malloc::return#14 = malloc::return#6 +Alias BUCKET_SIZES#0 = BUCKET_SIZES#24 BUCKET_SIZES#23 BUCKET_SIZES#19 +Alias heap_head#25 = heap_head#8 +Alias malloc::return#15 = malloc::return#7 +Alias BUCKETS#0 = BUCKETS#30 BUCKETS#26 +Alias heap_head#26 = heap_head#9 heap_head#45 +Alias SCREEN_ANGLE#1 = SCREEN_ANGLE#3 SCREEN_ANGLE#19 SCREEN_ANGLE#18 +Alias SCREEN_DIST#1 = SCREEN_DIST#4 SCREEN_DIST#2 +Alias BUCKET_SIZES#11 = BUCKET_SIZES#12 BUCKET_SIZES#16 BUCKET_SIZES#15 +Alias BUCKETS#12 = BUCKETS#19 BUCKETS#22 BUCKETS#15 +Alias BUCKET_IDX#12 = BUCKET_IDX#13 BUCKET_IDX#14 +Alias NUM_SQUARES#1 = NUM_SQUARES#9 NUM_SQUARES#36 NUM_SQUARES#29 +Alias heap_head#10 = heap_head#27 heap_head#40 +Alias SQUARES#12 = SQUARES#3 SQUARES#46 SQUARES#39 +Alias heap_head#11 = heap_head#28 +Alias main::bucket_idx#11 = main::bucket_idx#2 main::bucket_idx#4 +Alias BUCKETS#1 = BUCKETS#4 BUCKETS#24 +Alias BUCKET_SIZES#1 = BUCKET_SIZES#5 BUCKET_SIZES#22 +Alias NUM_SQUARES#38 = NUM_SQUARES#42 NUM_SQUARES#48 +Alias heap_head#62 = heap_head#67 heap_head#74 +Alias SQUARES#48 = SQUARES#50 SQUARES#54 +Alias SCREEN_ANGLE#11 = SCREEN_ANGLE#14 SCREEN_ANGLE#8 +Alias main::bucket_size#0 = main::bucket_size#3 +Alias main::bucket#0 = main::bucket#4 +Alias main::i#2 = main::i#3 main::i#5 main::i#6 +Alias main::bucket#1 = main::bucket#2 main::bucket#5 main::bucket#6 +Alias SCREEN_ANGLE#12 = SCREEN_ANGLE#4 SCREEN_ANGLE#6 SCREEN_ANGLE#20 SCREEN_ANGLE#2 SCREEN_ANGLE#16 +Alias main::min_angle#2 = main::min_angle#3 main::min_angle#4 +Alias main::bucket_size#1 = main::bucket_size#6 main::bucket_size#4 main::bucket_size#5 +Alias main::min_offset#2 = main::min_offset#7 main::min_offset#4 main::min_offset#6 main::min_offset#3 +Alias main::bucket_idx#12 = main::bucket_idx#14 main::bucket_idx#7 main::bucket_idx#5 main::bucket_idx#13 main::bucket_idx#8 +Alias NUM_SQUARES#27 = NUM_SQUARES#53 NUM_SQUARES#43 NUM_SQUARES#37 NUM_SQUARES#51 NUM_SQUARES#52 +Alias heap_head#54 = heap_head#81 heap_head#68 heap_head#61 heap_head#79 heap_head#80 +Alias SQUARES#37 = SQUARES#58 SQUARES#51 SQUARES#47 SQUARES#56 SQUARES#57 +Alias BUCKETS#10 = BUCKETS#29 BUCKETS#20 BUCKETS#16 BUCKETS#27 BUCKETS#28 +Alias BUCKET_SIZES#13 = BUCKET_SIZES#27 BUCKET_SIZES#20 BUCKET_SIZES#17 BUCKET_SIZES#25 BUCKET_SIZES#26 +Alias main::fill#0 = main::$8 +Alias main::offset#0 = main::offset#1 main::offset#2 main::min_offset#1 +Alias main::angle#0 = main::$11 main::angle#1 +Alias main::fill1#0 = main::$16 +Alias main::bucket_idx#1 = main::bucket_idx#9 +Alias BUCKETS#11 = BUCKETS#17 +Alias BUCKET_SIZES#14 = BUCKET_SIZES#18 +Alias NUM_SQUARES#21 = NUM_SQUARES#28 NUM_SQUARES#30 +Alias heap_head#49 = heap_head#55 heap_head#56 +Alias SQUARES#28 = SQUARES#38 SQUARES#40 +Alias SCREEN_ANGLE#17 = SCREEN_ANGLE#21 +Alias NUM_SQUARES#10 = NUM_SQUARES#22 NUM_SQUARES#17 NUM_SQUARES#2 +Alias heap_head#12 = heap_head#50 heap_head#41 heap_head#29 +Alias SQUARES#13 = SQUARES#29 SQUARES#22 SQUARES#4 +Alias init_buckets::screen#1 = init_buckets::screen#4 init_buckets::dist#0 +Alias BUCKET_SIZES#2 = BUCKET_SIZES#7 +Alias heap_head#63 = heap_head#69 +Alias BUCKETS#18 = BUCKETS#21 +Alias BUCKET_IDX#10 = BUCKET_IDX#9 +Alias BUCKET_SIZES#3 = BUCKET_SIZES#9 +Alias heap_head#51 = heap_head#57 +Alias BUCKETS#13 = BUCKETS#8 +Alias BUCKET_IDX#7 = BUCKET_IDX#8 +Alias init_buckets::screen#10 = init_buckets::screen#11 +Alias malloc::size#6 = init_buckets::$3 +Alias malloc::return#16 = malloc::return#8 +Alias init_buckets::i2#2 = init_buckets::i2#3 +Alias BUCKETS#14 = BUCKETS#2 BUCKETS#5 +Alias BUCKET_SIZES#4 = BUCKET_SIZES#8 +Alias BUCKET_IDX#3 = BUCKET_IDX#5 BUCKET_IDX#6 +Alias init_buckets::screen#7 = init_buckets::screen#8 init_buckets::screen#9 +Alias heap_head#13 = heap_head#30 heap_head#64 +Alias init_buckets::screen#2 = init_buckets::screen#5 init_buckets::dist#2 +Alias BUCKETS#6 = BUCKETS#9 +Alias BUCKET_IDX#1 = BUCKET_IDX#4 +Alias heap_head#52 = heap_head#58 +Alias heap_head#14 = heap_head#31 heap_head#42 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 +Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 +Alias NUM_SQUARES#3 = NUM_SQUARES#54 +Alias heap_head#15 = heap_head#32 +Alias SQUARES#14 = SQUARES#5 +Alias init_dist_screen::screen_bottomline#0 = init_dist_screen::$1 +Alias init_dist_screen::y2#0 = init_dist_screen::$2 init_dist_screen::y2#1 init_dist_screen::y2#2 +Alias SQUARES#30 = SQUARES#41 SQUARES#31 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 +Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 +Alias NUM_SQUARES#44 = NUM_SQUARES#49 NUM_SQUARES#45 +Alias heap_head#70 = heap_head#76 heap_head#71 +Alias init_dist_screen::$7 = init_dist_screen::$6 +Alias init_dist_screen::$5 = init_dist_screen::$4 +Alias init_dist_screen::yd#0 = init_dist_screen::$8 +Alias sqr::return#2 = sqr::return#5 +Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8 +Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8 +Alias init_dist_screen::y#5 = init_dist_screen::y#7 +Alias NUM_SQUARES#31 = NUM_SQUARES#39 +Alias heap_head#59 = heap_head#65 +Alias SQUARES#19 = SQUARES#42 +Alias init_dist_screen::yds#0 = init_dist_screen::$9 +Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8 +Alias SQUARES#15 = SQUARES#44 SQUARES#32 SQUARES#24 SQUARES#33 SQUARES#34 SQUARES#6 +Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 +Alias NUM_SQUARES#11 = NUM_SQUARES#40 NUM_SQUARES#23 NUM_SQUARES#18 NUM_SQUARES#33 NUM_SQUARES#34 NUM_SQUARES#4 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9 +Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6 +Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13 +Alias heap_head#16 = heap_head#82 heap_head#53 heap_head#44 heap_head#77 heap_head#78 heap_head#33 +Alias init_dist_screen::x2#0 = init_dist_screen::$11 init_dist_screen::x2#1 init_dist_screen::x2#2 +Alias init_dist_screen::$16 = init_dist_screen::$15 +Alias init_dist_screen::$14 = init_dist_screen::$13 +Alias init_dist_screen::xd#0 = init_dist_screen::$17 +Alias sqr::return#3 = sqr::return#6 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 +Alias SQUARES#18 = SQUARES#20 SQUARES#43 +Alias NUM_SQUARES#15 = NUM_SQUARES#24 NUM_SQUARES#32 +Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7 +Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6 +Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4 +Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6 +Alias heap_head#60 = heap_head#66 heap_head#72 +Alias init_dist_screen::xds#0 = init_dist_screen::$18 +Alias init_dist_screen::ds#0 = init_dist_screen::$19 +Alias sqrt::return#2 = sqrt::return#4 +Alias init_dist_screen::d#0 = init_dist_screen::$20 +Alias BUCKET_IDX#0 = BUCKET_IDX#15 +Alias NUM_SQUARES#12 = NUM_SQUARES#5 +Alias heap_head#17 = heap_head#34 +Alias SQUARES#16 = SQUARES#7 Successful SSA optimization Pass2AliasElimination -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#5 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 -Alias (byte) main::i#2 = (byte) main::i#4 -Alias (byte) main::bucket_size#1 = (byte) main::bucket_size#2 -Alias (word*) main::bucket#1 = (word*) main::bucket#3 -Alias (byte*) SCREEN_ANGLE#12 = (byte*) SCREEN_ANGLE#7 -Alias (byte) main::bucket_idx#10 = (byte) main::bucket_idx#12 -Alias (byte) NUM_SQUARES#27 = (byte) NUM_SQUARES#47 -Alias (byte*) heap_head#54 = (byte*) heap_head#73 -Alias (word*) SQUARES#37 = (word*) SQUARES#53 -Alias (word**) BUCKETS#10 = (word**) BUCKETS#23 -Alias (byte*) BUCKET_SIZES#13 = (byte*) BUCKET_SIZES#21 -Alias (word*) SQUARES#19 = (word*) SQUARES#30 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#6 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#6 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#5 -Alias (byte) NUM_SQUARES#31 = (byte) NUM_SQUARES#44 -Alias (byte*) heap_head#59 = (byte*) heap_head#70 -Alias (word*) SQUARES#15 = (word*) SQUARES#18 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#3 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#15 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#3 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#4 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#3 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#5 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#12 -Alias (byte*) heap_head#16 = (byte*) heap_head#60 +Alias bsearch16u::key#1 = bsearch16u::key#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 +Alias main::i#2 = main::i#4 +Alias main::bucket_size#1 = main::bucket_size#2 +Alias main::bucket#1 = main::bucket#3 +Alias SCREEN_ANGLE#12 = SCREEN_ANGLE#7 +Alias main::bucket_idx#10 = main::bucket_idx#12 +Alias NUM_SQUARES#27 = NUM_SQUARES#47 +Alias heap_head#54 = heap_head#73 +Alias SQUARES#37 = SQUARES#53 +Alias BUCKETS#10 = BUCKETS#23 +Alias BUCKET_SIZES#13 = BUCKET_SIZES#21 +Alias SQUARES#19 = SQUARES#30 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 +Alias init_dist_screen::y#10 = init_dist_screen::y#5 +Alias NUM_SQUARES#31 = NUM_SQUARES#44 +Alias heap_head#59 = heap_head#70 +Alias SQUARES#15 = SQUARES#18 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#3 +Alias NUM_SQUARES#11 = NUM_SQUARES#15 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3 +Alias init_dist_screen::x#2 = init_dist_screen::x#4 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#5 +Alias init_dist_screen::y#11 = init_dist_screen::y#12 +Alias heap_head#16 = heap_head#60 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bsearch16u::num#7 (byte) bsearch16u::num#2 Identical Phi Values (word*) bsearch16u::items#7 (word*) bsearch16u::items#1 @@ -4059,274 +4059,274 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN_DIST (void*) SCREEN_DIST#0 0.13333333333333333 (word*) SQUARES -(void*) SQUARES#1 0.03225806451612903 +(void*) SQUARES#1 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 2002.0 -(word*~) bsearch16u::$2 4.0 -(byte~) bsearch16u::$6 2002.0 +(byte~) bsearch16u::$16 2.000000002E9 +(word*~) bsearch16u::$2 2000002.0 +(byte~) bsearch16u::$6 2.000000002E9 (word*) bsearch16u::items -(word*) bsearch16u::items#0 1001.0 -(word*) bsearch16u::items#1 2.0 -(word*) bsearch16u::items#2 334.5555555555556 -(word*) bsearch16u::items#8 1501.5 +(word*) bsearch16u::items#0 1.000000001E9 +(word*) bsearch16u::items#1 550001.0 +(word*) bsearch16u::items#2 3.337777785555556E8 +(word*) bsearch16u::items#8 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 0.26666666666666666 +(word) bsearch16u::key#0 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 2002.0 -(byte) bsearch16u::num#1 2002.0 -(byte) bsearch16u::num#3 556.1111111111111 -(byte) bsearch16u::num#5 3003.0 +(byte) bsearch16u::num#0 2.000000002E9 +(byte) bsearch16u::num#1 2.000000002E9 +(byte) bsearch16u::num#3 5.555555561111112E8 +(byte) bsearch16u::num#5 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 501.0 +(word*) bsearch16u::pivot#0 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 1501.5 +(signed word) bsearch16u::result#0 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 2.0 -(word*) bsearch16u::return#2 6.0 -(word*) bsearch16u::return#3 4.0 -(word*) bsearch16u::return#6 4.0 +(word*) bsearch16u::return#1 700001.0 +(word*) bsearch16u::return#2 3000003.0 +(word*) bsearch16u::return#3 200002.0 +(word*) bsearch16u::return#6 2000002.0 (byte*) heap_head -(byte*) heap_head#1 0.24731182795698928 -(byte*) heap_head#18 23.0 +(byte*) heap_head#1 129.1505376344086 +(byte*) heap_head#18 12011.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 84.16666666666666 +(byte) init_angle_screen::ang_w#0 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 3.0 +(byte*) init_angle_screen::screen#0 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 4.0 -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 9.04 +(byte*) init_angle_screen::screen_bottomline#0 202.0 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 2.0 -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 101.0 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 (void()) init_buckets((byte*) init_buckets::screen) -(word~) init_buckets::$12 22.0 -(word~) init_buckets::$13 22.0 -(byte~) init_buckets::$14 22.0 -(byte*~) init_buckets::$15 22.0 -(word**~) init_buckets::$16 22.0 -(word**~) init_buckets::$17 22.0 -(void*~) init_buckets::$4 3.6666666666666665 -(word~) init_buckets::$7 22.0 -(word~) init_buckets::$8 11.0 +(word~) init_buckets::$12 2002.0 +(word~) init_buckets::$13 2002.0 +(byte~) init_buckets::$14 2002.0 +(byte*~) init_buckets::$15 2002.0 +(word**~) init_buckets::$16 2002.0 +(word**~) init_buckets::$17 2002.0 +(void*~) init_buckets::$4 333.6666666666667 +(word~) init_buckets::$7 2002.0 +(word~) init_buckets::$8 1001.0 (word*) init_buckets::bucket -(word*) init_buckets::bucket#0 7.333333333333333 +(word*) init_buckets::bucket#0 667.3333333333334 (byte*) init_buckets::dist -(byte*) init_buckets::dist#1 7.333333333333333 -(byte*) init_buckets::dist#3 7.333333333333333 -(byte*) init_buckets::dist#4 23.0 -(byte*) init_buckets::dist#5 4.6000000000000005 -(byte*) init_buckets::dist#6 4.0 -(byte*) init_buckets::dist#8 4.0 +(byte*) init_buckets::dist#1 667.3333333333334 +(byte*) init_buckets::dist#3 667.3333333333334 +(byte*) init_buckets::dist#4 2052.5 +(byte*) init_buckets::dist#5 410.5 +(byte*) init_buckets::dist#6 202.0 +(byte*) init_buckets::dist#8 202.0 (byte) init_buckets::distance -(byte) init_buckets::distance#0 5.5 +(byte) init_buckets::distance#0 500.5 (byte) init_buckets::i -(byte) init_buckets::i#1 16.5 -(byte) init_buckets::i#2 16.5 +(byte) init_buckets::i#1 1501.5 +(byte) init_buckets::i#2 1501.5 (word) init_buckets::i1 -(word) init_buckets::i1#1 16.5 -(word) init_buckets::i1#2 7.333333333333333 +(word) init_buckets::i1#1 1501.5 +(word) init_buckets::i1#2 667.3333333333334 (word) init_buckets::i2 -(word) init_buckets::i2#1 16.5 -(word) init_buckets::i2#2 5.5 +(word) init_buckets::i2#1 1501.5 +(word) init_buckets::i2#2 500.5 (byte) init_buckets::i3 -(byte) init_buckets::i3#1 16.5 -(byte) init_buckets::i3#2 16.5 +(byte) init_buckets::i3#1 1501.5 +(byte) init_buckets::i3#2 1501.5 (word) init_buckets::i4 -(word) init_buckets::i4#1 16.5 -(word) init_buckets::i4#2 2.0 +(word) init_buckets::i4#1 1501.5 +(word) init_buckets::i4#2 182.0 (byte*) init_buckets::screen -(byte*) init_buckets::screen#0 0.42500000000000004 +(byte*) init_buckets::screen#0 30.349999999999998 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 202.0 -(byte~) init_dist_screen::$16 202.0 -(byte~) init_dist_screen::$5 22.0 -(byte~) init_dist_screen::$7 22.0 +(byte~) init_dist_screen::$14 20002.0 +(byte~) init_dist_screen::$16 20002.0 +(byte~) init_dist_screen::$5 2002.0 +(byte~) init_dist_screen::$7 2002.0 (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 126.25 +(byte) init_dist_screen::d#0 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 202.0 +(word) init_dist_screen::ds#0 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 1.5 +(byte*) init_dist_screen::screen#0 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 4.0 -(byte*) init_dist_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 202.0 +(byte*) init_dist_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 5.5 -(byte*) init_dist_screen::screen_topline#11 7.0625 +(byte*) init_dist_screen::screen_topline#1 500.5 +(byte*) init_dist_screen::screen_topline#11 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 101.0 -(byte) init_dist_screen::x#2 30.3 +(byte) init_dist_screen::x#1 10001.0 +(byte) init_dist_screen::x#2 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 202.0 +(byte) init_dist_screen::x2#0 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 202.0 -(byte) init_dist_screen::xb#2 19.238095238095237 +(byte) init_dist_screen::xb#1 20002.0 +(byte) init_dist_screen::xb#2 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 303.0 +(byte) init_dist_screen::xd#0 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 202.0 +(word) init_dist_screen::xds#0 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 16.5 -(byte) init_dist_screen::y#10 0.9705882352941178 +(byte) init_dist_screen::y#1 1501.5 +(byte) init_dist_screen::y#10 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 22.0 +(byte) init_dist_screen::y2#0 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 33.0 +(byte) init_dist_screen::yd#0 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 4.869565217391305 +(word) init_dist_screen::yds#0 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 22.0 -(byte~) init_squares::$4 22.0 +(byte~) init_squares::$3 20002.0 +(byte~) init_squares::$4 20002.0 (byte) init_squares::i -(byte) init_squares::i#1 22.0 -(byte) init_squares::i#2 6.285714285714286 +(byte) init_squares::i#1 20002.0 +(byte) init_squares::i#2 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 11.0 -(word) init_squares::sqr#2 5.5 +(word) init_squares::sqr#1 10001.0 +(word) init_squares::sqr#2 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 4.0 -(word*) init_squares::squares#1 4.4 -(word*) init_squares::squares#2 11.666666666666666 +(word*) init_squares::squares#0 2002.0 +(word*) init_squares::squares#1 4000.4 +(word*) init_squares::squares#2 10334.666666666666 (void()) main() -(byte~) main::$23 22.0 -(byte~) main::$24 202.0 +(byte~) main::$23 202.0 +(byte~) main::$24 2002.0 (byte*) main::angle -(byte*) main::angle#0 151.5 +(byte*) main::angle#0 1501.5 (word*) main::bucket -(word*) main::bucket#0 6.588235294117648 +(word*) main::bucket#0 64.82352941176471 (byte) main::bucket_idx -(byte) main::bucket_idx#1 11.0 -(byte) main::bucket_idx#6 2.64 +(byte) main::bucket_idx#1 101.0 +(byte) main::bucket_idx#6 24.24 (byte) main::bucket_size -(byte) main::bucket_size#0 7.6875 +(byte) main::bucket_size#0 75.1875 (byte*) main::fill -(byte*) main::fill#0 202.0 +(byte*) main::fill#0 2002.0 (byte*) main::fill1 -(byte*) main::fill1#0 22.0 +(byte*) main::fill1#0 202.0 (byte) main::i -(byte) main::i#1 101.0 -(byte) main::i#2 33.666666666666664 +(byte) main::i#1 1001.0 +(byte) main::i#2 333.6666666666667 (byte) main::min_angle -(byte) main::min_angle#1 202.0 -(byte) main::min_angle#2 40.4 -(byte) main::min_angle#5 134.66666666666666 +(byte) main::min_angle#1 2002.0 +(byte) main::min_angle#2 400.4 +(byte) main::min_angle#5 1334.6666666666667 (word) main::min_offset -(word) main::min_offset#11 202.0 -(word) main::min_offset#2 36.11111111111111 -(word) main::min_offset#5 202.0 -(word) main::min_offset#8 202.0 -(word) main::min_offset#9 202.0 +(word) main::min_offset#11 2002.0 +(word) main::min_offset#2 356.11111111111114 +(word) main::min_offset#5 2002.0 +(word) main::min_offset#8 2002.0 +(word) main::min_offset#9 2002.0 (word) main::offset -(word) main::offset#0 67.33333333333333 +(word) main::offset#0 667.3333333333334 (void*()) malloc((word) malloc::size) (byte*) malloc::mem -(byte*) malloc::mem#0 0.4 +(byte*) malloc::mem#0 2000.2 (void*) malloc::return (word) malloc::size -(word) malloc::size#6 22.0 -(word) malloc::size#7 13.0 +(word) malloc::size#6 2002.0 +(word) malloc::size#7 11002.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 4.0 +(byte~) sqr::$0 200002.0 (word) sqr::return -(word) sqr::return#0 28.5 -(word) sqr::return#2 22.0 -(word) sqr::return#3 202.0 +(word) sqr::return#0 27750.75 +(word) sqr::return#2 2002.0 +(word) sqr::return#3 20002.0 (byte) sqr::val -(byte) sqr::val#0 22.0 -(byte) sqr::val#1 202.0 -(byte) sqr::val#2 114.0 +(byte) sqr::val#0 2002.0 +(byte) sqr::val#1 20002.0 +(byte) sqr::val#2 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 2.0 -(word~) sqrt::$3 4.0 +(word~) sqrt::$1 100001.0 +(word~) sqrt::$3 200002.0 (word*) sqrt::found -(word*) sqrt::found#0 4.0 +(word*) sqrt::found#0 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 34.33333333333333 -(byte) sqrt::return#2 202.0 +(byte) sqrt::return#0 36667.33333333333 +(byte) sqrt::return#2 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 103.0 +(word) sqrt::val#0 110002.0 Initial phi equivalence classes [ main::bucket_idx#6 main::bucket_idx#1 ] @@ -6519,458 +6519,455 @@ CORDIC_ATAN2_ANGLES_16: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ) always clobbers reg byte a -Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] -Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ) always clobbers reg byte a -Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ) always clobbers reg byte a reg byte y +Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { } ) always clobbers reg byte a +Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] -Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ) always clobbers reg byte a reg byte y -Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ) always clobbers reg byte a -Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ) always clobbers reg byte a -Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ) always clobbers reg byte a +Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { } ) always clobbers reg byte a reg byte y +Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { } ) always clobbers reg byte a +Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { } ) always clobbers reg byte a +Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:81 [ main::bucket_size#0 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] -Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y +Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:81 [ main::bucket_size#0 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] -Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ) always clobbers reg byte a -Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a -Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ) always clobbers reg byte a reg byte y -Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ) always clobbers reg byte a -Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ) always clobbers reg byte a -Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ) always clobbers reg byte a -Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ) always clobbers reg byte a +Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { } ) always clobbers reg byte a +Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y +Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { } ) always clobbers reg byte a reg byte y +Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { } ) always clobbers reg byte a +Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { } ) always clobbers reg byte a +Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { } ) always clobbers reg byte a +Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ init_buckets::i#2 init_buckets::i#1 ] -Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ) always clobbers reg byte a -Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ) always clobbers reg byte a -Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ) always clobbers reg byte a -Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ) always clobbers reg byte a -Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ) always clobbers reg byte a -Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ) always clobbers reg byte a -Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ) always clobbers reg byte a -Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ) always clobbers reg byte a +Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] { } ) always clobbers reg byte a +Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a +Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a reg byte y +Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] { } ) always clobbers reg byte a +Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] { } ) always clobbers reg byte a +Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] { } ) always clobbers reg byte a +Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ init_buckets::i3#2 init_buckets::i3#1 ] -Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ) always clobbers reg byte a -Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ) always clobbers reg byte a +Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { } ) always clobbers reg byte a +Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:97 [ init_buckets::distance#0 ] -Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ) always clobbers reg byte a -Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ) always clobbers reg byte a -Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ) always clobbers reg byte a reg byte y +Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] { } ) always clobbers reg byte a +Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { } ) always clobbers reg byte a +Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:97 [ init_buckets::distance#0 ] -Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ) always clobbers reg byte a -Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ) always clobbers reg byte a reg byte y -Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ) always clobbers reg byte a reg byte y -Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ) always clobbers reg byte a -Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] malloc:6 [ malloc::mem#0 ] malloc:8 [ malloc::mem#0 ] malloc:10 [ malloc::mem#0 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] malloc:6 [ malloc::mem#0 heap_head#1 ] malloc:8 [ malloc::mem#0 heap_head#1 ] malloc:10 [ malloc::mem#0 heap_head#1 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] { } ) always clobbers reg byte a +Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { } ) always clobbers reg byte a reg byte y +Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { } ) always clobbers reg byte a +Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } malloc:6 [ malloc::mem#0 ] { } malloc:8 [ malloc::mem#0 ] { } malloc:10 [ malloc::mem#0 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } malloc:6 [ malloc::mem#0 heap_head#1 ] { } malloc:8 [ malloc::mem#0 heap_head#1 ] { } malloc:10 [ malloc::mem#0 heap_head#1 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:128 [ init_angle_screen::ang_w#0 ] -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:128 [ init_angle_screen::ang_w#0 ] -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:36 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:57 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:57 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:59 [ init_squares::i#2 init_squares::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:59 [ init_squares::i#2 init_squares::i#1 ] -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ) always clobbers reg byte a -Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ) always clobbers reg byte a -Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ) always clobbers reg byte a reg byte y -Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ) always clobbers reg byte a reg byte y -Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ) always clobbers reg byte a -Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ) always clobbers reg byte a -Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ) always clobbers reg byte a -Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y -Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ) always clobbers reg byte a -Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a -Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ) always clobbers reg byte a reg byte y -Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ) always clobbers reg byte a -Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ) always clobbers reg byte a -Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ) always clobbers reg byte a -Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ) always clobbers reg byte a -Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ) always clobbers reg byte a -Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ) always clobbers reg byte a -Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ) always clobbers reg byte a -Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ) always clobbers reg byte a -Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ) always clobbers reg byte a -Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ) always clobbers reg byte a -Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ) always clobbers reg byte a -Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ) always clobbers reg byte a -Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ) always clobbers reg byte a -Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ) always clobbers reg byte a -Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ) always clobbers reg byte a -Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ) always clobbers reg byte a -Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ) always clobbers reg byte a reg byte y -Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ) always clobbers reg byte a -Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ) always clobbers reg byte a reg byte y -Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ) always clobbers reg byte a reg byte y -Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ) always clobbers reg byte a -Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] malloc:6 [ malloc::mem#0 ] malloc:8 [ malloc::mem#0 ] malloc:10 [ malloc::mem#0 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] malloc:6 [ malloc::mem#0 heap_head#1 ] malloc:8 [ malloc::mem#0 heap_head#1 ] malloc:10 [ malloc::mem#0 heap_head#1 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a +Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { } ) always clobbers reg byte a +Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { } ) always clobbers reg byte a reg byte y +Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { } ) always clobbers reg byte a reg byte y +Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { } ) always clobbers reg byte a +Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { } ) always clobbers reg byte a +Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { } ) always clobbers reg byte a +Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y +Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { } ) always clobbers reg byte a +Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y +Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { } ) always clobbers reg byte a reg byte y +Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { } ) always clobbers reg byte a +Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { } ) always clobbers reg byte a +Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { } ) always clobbers reg byte a +Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] { } ) always clobbers reg byte a +Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] { } ) always clobbers reg byte a +Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a +Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a reg byte y +Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] { } ) always clobbers reg byte a +Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] { } ) always clobbers reg byte a +Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] { } ) always clobbers reg byte a +Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { } ) always clobbers reg byte a +Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { } ) always clobbers reg byte a +Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] { } ) always clobbers reg byte a +Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] { } ) always clobbers reg byte a +Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { } ) always clobbers reg byte a +Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] { } ) always clobbers reg byte a +Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { } ) always clobbers reg byte a reg byte y +Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { } ) always clobbers reg byte a +Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } malloc:6 [ malloc::mem#0 ] { } malloc:8 [ malloc::mem#0 ] { } malloc:10 [ malloc::mem#0 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } malloc:6 [ malloc::mem#0 heap_head#1 ] { } malloc:8 [ malloc::mem#0 heap_head#1 ] { } malloc:10 [ malloc::mem#0 heap_head#1 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:149 [ init_dist_screen::d#0 ] -Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ) always clobbers reg byte a -Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ) always clobbers reg byte a -Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ) always clobbers reg byte a reg byte y -Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ) always clobbers reg byte a reg byte y -Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ) always clobbers reg byte a -Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ) always clobbers reg byte a -Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ) always clobbers reg byte a reg byte y -Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ) always clobbers reg byte a -Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y -Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ) always clobbers reg byte a -Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a -Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ) always clobbers reg byte a reg byte y -Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ) always clobbers reg byte a -Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ) always clobbers reg byte a -Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ) always clobbers reg byte a -Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ) always clobbers reg byte a -Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ) always clobbers reg byte a -Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ) always clobbers reg byte a -Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ) always clobbers reg byte a -Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ) always clobbers reg byte a -Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ) always clobbers reg byte a -Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ) always clobbers reg byte a -Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ) always clobbers reg byte a reg byte y -Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ) always clobbers reg byte a -Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ) always clobbers reg byte a -Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ) always clobbers reg byte a -Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ) always clobbers reg byte a -Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ) always clobbers reg byte a -Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ) always clobbers reg byte a -Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ) always clobbers reg byte a reg byte y -Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ) always clobbers reg byte a -Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ) always clobbers reg byte a reg byte y -Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ) always clobbers reg byte a reg byte y -Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ) always clobbers reg byte a -Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] malloc:6 [ malloc::mem#0 ] malloc:8 [ malloc::mem#0 ] malloc:10 [ malloc::mem#0 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] malloc:6 [ malloc::mem#0 heap_head#1 ] malloc:8 [ malloc::mem#0 heap_head#1 ] malloc:10 [ malloc::mem#0 heap_head#1 ] main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [117] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a +Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [7] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [16] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [18] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_angle_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [20] (byte*) init_buckets::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [23] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a +Statement [25] (byte~) main::$23 ← (byte) main::bucket_idx#6 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { } ) always clobbers reg byte a +Statement [26] (word*) main::bucket#0 ← *((word**)(void*) BUCKETS#0 + (byte~) main::$23) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { } ) always clobbers reg byte a reg byte y +Statement [27] (byte) main::bucket_size#0 ← *((byte*)(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { } ) always clobbers reg byte a reg byte y +Statement [31] if((word) main::min_offset#2==(word) $ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { } ) always clobbers reg byte a +Statement [32] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL + (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { } ) always clobbers reg byte a +Statement [33] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { } ) always clobbers reg byte a reg byte y +Statement [40] (byte~) main::$24 ← (byte) main::i#2 << (byte) 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { } ) always clobbers reg byte a +Statement [41] (word) main::offset#0 ← *((word*) main::bucket#0 + (byte~) main::$24) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y +Statement [42] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { } ) always clobbers reg byte a +Statement [43] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { } ) always clobbers reg byte a reg byte y +Statement [44] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 + (word) main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [45] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [46] (byte) main::min_angle#1 ← *((byte*) main::angle#0) [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { } ) always clobbers reg byte a reg byte y +Statement [49] (word) main::min_offset#8 ← (word) main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { } ) always clobbers reg byte a +Statement [50] (word) main::min_offset#9 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { } ) always clobbers reg byte a +Statement [51] (word) main::min_offset#11 ← (word) main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { } ) always clobbers reg byte a +Statement [54] *((byte*)(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i#2 heap_head#1 ] { } ) always clobbers reg byte a +Statement [57] (byte*) init_buckets::dist#6 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#6 heap_head#1 ] { } ) always clobbers reg byte a +Statement [59] *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte*)(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [62] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [64] (byte*~) init_buckets::$15 ← (byte*)(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a +Statement [65] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::size#6 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } ) always clobbers reg byte a reg byte y +Statement [67] (void*~) init_buckets::$4 ← (void*)(byte*) malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 heap_head#1 ] { } ) always clobbers reg byte a +Statement [68] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$12 heap_head#1 ] { } ) always clobbers reg byte a +Statement [69] (word**~) init_buckets::$16 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 heap_head#1 ] { } ) always clobbers reg byte a +Statement [70] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 heap_head#1 ] { } ) always clobbers reg byte a reg byte y +Statement [72] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS-(byte) 1+(byte) 1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#1 heap_head#1 ] { } ) always clobbers reg byte a +Statement [74] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { } ) always clobbers reg byte a +Statement [77] (byte*) init_buckets::dist#8 ← (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { } ) always clobbers reg byte a +Statement [79] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [80] (word~) init_buckets::$7 ← (word)(byte) init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$7 ] { } ) always clobbers reg byte a +Statement [81] (word~) init_buckets::$13 ← (word~) init_buckets::$7 << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$13 ] { } ) always clobbers reg byte a +Statement [82] (word**~) init_buckets::$17 ← (word**)(void*) BUCKETS#0 + (word~) init_buckets::$13 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { } ) always clobbers reg byte a +Statement [83] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { } ) always clobbers reg byte a reg byte y +Statement [84] (word~) init_buckets::$8 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 ] { } ) always clobbers reg byte a +Statement [85] (byte~) init_buckets::$14 ← *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$8 init_buckets::$14 ] { } ) always clobbers reg byte a reg byte y +Statement [86] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$8 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte*)(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { } ) always clobbers reg byte a reg byte y +Statement [90] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:21 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { } ) always clobbers reg byte a +Statement [93] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } malloc:6 [ malloc::mem#0 ] { } malloc:8 [ malloc::mem#0 ] { } malloc:10 [ malloc::mem#0 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [94] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } malloc:6 [ malloc::mem#0 heap_head#1 ] { } malloc:8 [ malloc::mem#0 heap_head#1 ] { } malloc:10 [ malloc::mem#0 heap_head#1 ] { } main:13::init_buckets:21::malloc:66 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } { malloc::size#6 = malloc::size#7 } } main:13::init_dist_screen:17::init_squares:171::malloc:243 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#18 } } ) always clobbers reg byte a +Statement [96] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [97] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [101] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [102] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [106] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [108] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [109] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [110] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [111] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [112] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [114] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [116] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [118] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [119] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [120] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [121] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [122] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [123] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [124] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:13::init_angle_screen:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [127] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [130] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [131] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [134] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [136] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [137] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [138] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [140] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [141] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [146] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [150] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [151] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [153] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [154] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [155] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [156] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [157] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [161] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [162] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [163] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [164] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [165] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [166] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [168] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:19::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [172] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [174] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [176] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word) sqr::return#2 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [181] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [184] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [185] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [189] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [191] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [195] (word) sqr::return#3 ← (word) sqr::return#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [196] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [197] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [198] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [202] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [203] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [204] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [205] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:13::init_dist_screen:17 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [210] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [211] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [213] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [214] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [215] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [216] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [217] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqrt:199 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [222] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [223] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [227] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [228] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [229] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [230] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [231] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [232] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [233] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [234] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:17::sqrt:199::bsearch16u:212 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [239] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [240] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:13::init_dist_screen:17::sqr:179 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:13::init_dist_screen:17::sqr:194 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#1 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [244] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ heap_head#1 SQUARES#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [245] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ heap_head#1 SQUARES#1 init_squares::squares#0 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:17::init_squares:171 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#1 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] : zp[2]:4 , @@ -7080,37 +7077,35 @@ Potential registers zp[1]:172 [ init_squares::$3 ] : zp[1]:172 , reg byte a , re Potential registers zp[1]:173 [ init_squares::$4 ] : zp[1]:173 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:41 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:42 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:44 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:37 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:32 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:34 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:132 [ atan2_16::$23 ] 2,002: zp[1]:133 [ atan2_16::$22 ] 1,710.04: zp[1]:36 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:122 [ atan2_16::return#2 ] 50: zp[2]:39 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:118 [ atan2_16::x#0 ] 2.72: zp[2]:120 [ atan2_16::y#0 ] -Uplift Scope [bsearch16u] 7,563.11: zp[1]:57 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,855.06: zp[2]:55 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,002: zp[1]:161 [ bsearch16u::$6 ] 2,002: zp[1]:162 [ bsearch16u::$16 ] 1,501.5: zp[2]:165 [ bsearch16u::result#0 ] 501: zp[2]:163 [ bsearch16u::pivot#0 ] 4: zp[2]:152 [ bsearch16u::return#3 ] 0.27: zp[2]:150 [ bsearch16u::key#0 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:111 [ init_angle_screen::$3 ] 202: zp[1]:112 [ init_angle_screen::$4 ] 202: zp[1]:115 [ init_angle_screen::$7 ] 202: zp[2]:124 [ init_angle_screen::angle_w#0 ] 202: zp[2]:126 [ init_angle_screen::$11 ] 202: zp[1]:129 [ init_angle_screen::$13 ] 202: zp[1]:130 [ init_angle_screen::$14 ] 202: zp[1]:131 [ init_angle_screen::$15 ] 129.86: zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 84.17: zp[1]:128 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:116 [ init_angle_screen::yw#0 ] 33.67: zp[2]:113 [ init_angle_screen::xw#0 ] 21.23: zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 20.37: zp[2]:28 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 16.92: zp[2]:26 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 3: zp[2]:74 [ init_angle_screen::screen#0 ] -Uplift Scope [main] 673.33: zp[2]:7 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] 377.07: zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] 238.11: zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] 202: zp[1]:84 [ main::$24 ] 202: zp[2]:85 [ main::fill#0 ] 151.5: zp[2]:87 [ main::angle#0 ] 134.67: zp[1]:3 [ main::i#2 main::i#1 ] 22: zp[1]:78 [ main::$23 ] 22: zp[2]:82 [ main::fill1#0 ] 13.64: zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] 7.69: zp[1]:81 [ main::bucket_size#0 ] 6.59: zp[2]:79 [ main::bucket#0 ] -Uplift Scope [init_dist_screen] 707: zp[1]:54 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 221.24: zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 202: zp[1]:139 [ init_dist_screen::x2#0 ] 202: zp[2]:142 [ init_dist_screen::xds#0 ] 202: zp[2]:144 [ init_dist_screen::ds#0 ] 131.3: zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 126.25: zp[1]:149 [ init_dist_screen::d#0 ] 77: zp[1]:51 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 22: zp[1]:134 [ init_dist_screen::y2#0 ] 18.18: zp[2]:49 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 17.47: zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 14.06: zp[2]:47 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 4.87: zp[2]:137 [ init_dist_screen::yds#0 ] -Uplift Scope [sqr] 338: zp[1]:58 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 202: zp[2]:140 [ sqr::return#3 ] 28.5: zp[2]:168 [ sqr::return#0 ] 22: zp[2]:135 [ sqr::return#2 ] 4: zp[1]:167 [ sqr::$0 ] -Uplift Scope [init_buckets] 34.33: zp[2]:10 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] 33: zp[1]:9 [ init_buckets::i#2 init_buckets::i#1 ] 33: zp[1]:16 [ init_buckets::i3#2 init_buckets::i3#1 ] 23.83: zp[2]:12 [ init_buckets::i1#2 init_buckets::i1#1 ] 22: zp[2]:14 [ init_buckets::i2#2 init_buckets::i2#1 ] 22: zp[2]:89 [ init_buckets::$15 ] 22: zp[2]:93 [ init_buckets::$12 ] 22: zp[2]:95 [ init_buckets::$16 ] 22: zp[2]:98 [ init_buckets::$7 ] 22: zp[2]:100 [ init_buckets::$13 ] 22: zp[2]:102 [ init_buckets::$17 ] 22: zp[1]:108 [ init_buckets::$14 ] 18.5: zp[2]:19 [ init_buckets::i4#2 init_buckets::i4#1 ] 15.93: zp[2]:17 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] 11: zp[2]:106 [ init_buckets::$8 ] 7.33: zp[2]:104 [ init_buckets::bucket#0 ] 5.5: zp[1]:97 [ init_buckets::distance#0 ] 3.67: zp[2]:91 [ init_buckets::$4 ] 0.43: zp[2]:76 [ init_buckets::screen#0 ] -Uplift Scope [sqrt] 202: zp[1]:148 [ sqrt::return#2 ] 103: zp[2]:146 [ sqrt::val#0 ] 34.33: zp[1]:160 [ sqrt::return#0 ] 4: zp[2]:154 [ sqrt::found#0 ] 4: zp[2]:156 [ sqrt::$3 ] 2: zp[2]:158 [ sqrt::$1 ] -Uplift Scope [init_squares] 28.29: zp[1]:59 [ init_squares::i#2 init_squares::i#1 ] 22: zp[1]:172 [ init_squares::$3 ] 22: zp[1]:173 [ init_squares::$4 ] 20.07: zp[2]:62 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 16.5: zp[2]:60 [ init_squares::sqr#2 init_squares::sqr#1 ] -Uplift Scope [malloc] 35: zp[2]:23 [ malloc::size#7 malloc::size#6 ] 0.4: zp[2]:109 [ malloc::mem#0 ] -Uplift Scope [] 23.25: zp[2]:21 [ heap_head#18 heap_head#1 ] 0.13: zp[2]:64 [ SCREEN_DIST#0 ] 0.05: zp[2]:66 [ SCREEN_ANGLE#0 ] 0.04: zp[2]:72 [ BUCKET_IDX#0 ] 0.03: zp[2]:170 [ SQUARES#1 ] 0.03: zp[2]:70 [ BUCKETS#0 ] 0.02: zp[2]:68 [ BUCKET_SIZES#0 ] +Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:57 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:55 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,000,000,002: zp[1]:161 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:162 [ bsearch16u::$16 ] 1,500,000,001.5: zp[2]:165 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:163 [ bsearch16u::pivot#0 ] 200,002: zp[2]:152 [ bsearch16u::return#3 ] 73,333.47: zp[2]:150 [ bsearch16u::key#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:41 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:42 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:44 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:37 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:32 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:34 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:132 [ atan2_16::$23 ] 200,000,002: zp[1]:133 [ atan2_16::$22 ] 170,833,335.04: zp[1]:36 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:39 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:122 [ atan2_16::return#2 ] 10,789.61: zp[2]:118 [ atan2_16::x#0 ] 10,250.12: zp[2]:120 [ atan2_16::y#0 ] +Uplift Scope [sqrt] 200,002: zp[2]:154 [ sqrt::found#0 ] 200,002: zp[2]:156 [ sqrt::$3 ] 110,002: zp[2]:146 [ sqrt::val#0 ] 100,001: zp[2]:158 [ sqrt::$1 ] 36,667.33: zp[1]:160 [ sqrt::return#0 ] 20,002: zp[1]:148 [ sqrt::return#2 ] +Uplift Scope [sqr] 200,002: zp[1]:167 [ sqr::$0 ] 133,007: zp[1]:58 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:168 [ sqr::return#0 ] 20,002: zp[2]:140 [ sqr::return#3 ] 2,002: zp[2]:135 [ sqr::return#2 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:111 [ init_angle_screen::$3 ] 20,002: zp[1]:112 [ init_angle_screen::$4 ] 20,002: zp[1]:115 [ init_angle_screen::$7 ] 20,002: zp[2]:124 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:126 [ init_angle_screen::$11 ] 20,002: zp[1]:129 [ init_angle_screen::$13 ] 20,002: zp[1]:130 [ init_angle_screen::$14 ] 20,002: zp[1]:131 [ init_angle_screen::$15 ] 12,858.43: zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:128 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:116 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:113 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:28 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:26 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:74 [ init_angle_screen::screen#0 ] +Uplift Scope [init_dist_screen] 70,007: zp[1]:54 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:139 [ init_dist_screen::x2#0 ] 20,002: zp[2]:142 [ init_dist_screen::xds#0 ] 20,002: zp[2]:144 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:149 [ init_dist_screen::d#0 ] 7,007: zp[1]:51 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:134 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:49 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:47 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:137 [ init_dist_screen::yds#0 ] +Uplift Scope [init_squares] 25,716.86: zp[1]:59 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:172 [ init_squares::$3 ] 20,002: zp[1]:173 [ init_squares::$4 ] 16,337.07: zp[2]:62 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:60 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplift Scope [init_buckets] 3,003: zp[1]:9 [ init_buckets::i#2 init_buckets::i#1 ] 3,003: zp[1]:16 [ init_buckets::i3#2 init_buckets::i3#1 ] 2,921.83: zp[2]:10 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] 2,168.83: zp[2]:12 [ init_buckets::i1#2 init_buckets::i1#1 ] 2,002: zp[2]:14 [ init_buckets::i2#2 init_buckets::i2#1 ] 2,002: zp[2]:89 [ init_buckets::$15 ] 2,002: zp[2]:93 [ init_buckets::$12 ] 2,002: zp[2]:95 [ init_buckets::$16 ] 2,002: zp[2]:98 [ init_buckets::$7 ] 2,002: zp[2]:100 [ init_buckets::$13 ] 2,002: zp[2]:102 [ init_buckets::$17 ] 2,002: zp[1]:108 [ init_buckets::$14 ] 1,683.5: zp[2]:19 [ init_buckets::i4#2 init_buckets::i4#1 ] 1,279.83: zp[2]:17 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] 1,001: zp[2]:106 [ init_buckets::$8 ] 667.33: zp[2]:104 [ init_buckets::bucket#0 ] 500.5: zp[1]:97 [ init_buckets::distance#0 ] 333.67: zp[2]:91 [ init_buckets::$4 ] 30.35: zp[2]:76 [ init_buckets::screen#0 ] +Uplift Scope [main] 6,673.33: zp[2]:7 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] 3,737.07: zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] 2,358.11: zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] 2,002: zp[1]:84 [ main::$24 ] 2,002: zp[2]:85 [ main::fill#0 ] 1,501.5: zp[2]:87 [ main::angle#0 ] 1,334.67: zp[1]:3 [ main::i#2 main::i#1 ] 202: zp[1]:78 [ main::$23 ] 202: zp[2]:82 [ main::fill1#0 ] 125.24: zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] 75.19: zp[1]:81 [ main::bucket_size#0 ] 64.82: zp[2]:79 [ main::bucket#0 ] +Uplift Scope [malloc] 13,004: zp[2]:23 [ malloc::size#7 malloc::size#6 ] 2,000.2: zp[2]:109 [ malloc::mem#0 ] +Uplift Scope [] 12,140.15: zp[2]:21 [ heap_head#18 heap_head#1 ] 16.15: zp[2]:170 [ SQUARES#1 ] 0.13: zp[2]:64 [ SCREEN_DIST#0 ] 0.05: zp[2]:66 [ SCREEN_ANGLE#0 ] 0.04: zp[2]:72 [ BUCKET_IDX#0 ] 0.03: zp[2]:70 [ BUCKETS#0 ] 0.02: zp[2]:68 [ BUCKET_SIZES#0 ] Uplift Scope [RADIX] -Uplifting [atan2_16] best 1253976 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:42 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:44 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:37 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:32 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:34 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:122 [ atan2_16::return#2 ] zp[2]:39 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:118 [ atan2_16::x#0 ] zp[2]:120 [ atan2_16::y#0 ] +Uplifting [bsearch16u] best 1348976 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:55 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:165 [ bsearch16u::result#0 ] zp[2]:163 [ bsearch16u::pivot#0 ] zp[2]:152 [ bsearch16u::return#3 ] zp[2]:150 [ bsearch16u::key#0 ] +Uplifting [atan2_16] best 1234976 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:42 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:44 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:37 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:32 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:34 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:39 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:122 [ atan2_16::return#2 ] zp[2]:118 [ atan2_16::x#0 ] zp[2]:120 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [bsearch16u] best 1234976 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:55 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:165 [ bsearch16u::result#0 ] zp[2]:163 [ bsearch16u::pivot#0 ] zp[2]:152 [ bsearch16u::return#3 ] zp[2]:150 [ bsearch16u::key#0 ] -Uplifting [init_angle_screen] best 1233376 combination zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:124 [ init_angle_screen::angle_w#0 ] zp[2]:126 [ init_angle_screen::$11 ] zp[1]:129 [ init_angle_screen::$13 ] zp[1]:130 [ init_angle_screen::$14 ] zp[1]:131 [ init_angle_screen::$15 ] zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:128 [ init_angle_screen::ang_w#0 ] zp[2]:116 [ init_angle_screen::yw#0 ] zp[2]:113 [ init_angle_screen::xw#0 ] zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:28 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:26 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:74 [ init_angle_screen::screen#0 ] +Uplifting [sqrt] best 1234073 combination zp[2]:154 [ sqrt::found#0 ] zp[2]:156 [ sqrt::$3 ] zp[2]:146 [ sqrt::val#0 ] zp[2]:158 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] +Uplifting [sqr] best 1233736 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:168 [ sqr::return#0 ] zp[2]:140 [ sqr::return#3 ] zp[2]:135 [ sqr::return#2 ] +Uplifting [init_angle_screen] best 1232136 combination zp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:124 [ init_angle_screen::angle_w#0 ] zp[2]:126 [ init_angle_screen::$11 ] zp[1]:129 [ init_angle_screen::$13 ] zp[1]:130 [ init_angle_screen::$14 ] zp[1]:131 [ init_angle_screen::$15 ] zp[1]:30 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:128 [ init_angle_screen::ang_w#0 ] zp[2]:116 [ init_angle_screen::yw#0 ] zp[2]:113 [ init_angle_screen::xw#0 ] zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:28 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:26 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:74 [ init_angle_screen::screen#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [main] best 1231936 combination zp[2]:7 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] reg byte a [ main::$24 ] zp[2]:85 [ main::fill#0 ] zp[2]:87 [ main::angle#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$23 ] zp[2]:82 [ main::fill1#0 ] zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] zp[1]:81 [ main::bucket_size#0 ] zp[2]:79 [ main::bucket#0 ] -Limited combination testing to 100 combinations of 256 possible. -Uplifting [init_dist_screen] best 1228736 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:142 [ init_dist_screen::xds#0 ] zp[2]:144 [ init_dist_screen::ds#0 ] zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:51 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:134 [ init_dist_screen::y2#0 ] zp[2]:49 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:47 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:137 [ init_dist_screen::yds#0 ] +Uplifting [init_dist_screen] best 1228936 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:142 [ init_dist_screen::xds#0 ] zp[2]:144 [ init_dist_screen::ds#0 ] zp[1]:52 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:51 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:134 [ init_dist_screen::y2#0 ] zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:49 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:47 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:137 [ init_dist_screen::yds#0 ] Limited combination testing to 100 combinations of 6144 possible. -Uplifting [sqr] best 1228399 combination reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:140 [ sqr::return#3 ] zp[2]:168 [ sqr::return#0 ] zp[2]:135 [ sqr::return#2 ] reg byte a [ sqr::$0 ] -Uplifting [init_buckets] best 1228119 combination zp[2]:10 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] reg byte y [ init_buckets::i#2 init_buckets::i#1 ] reg byte y [ init_buckets::i3#2 init_buckets::i3#1 ] zp[2]:12 [ init_buckets::i1#2 init_buckets::i1#1 ] zp[2]:14 [ init_buckets::i2#2 init_buckets::i2#1 ] zp[2]:89 [ init_buckets::$15 ] zp[2]:93 [ init_buckets::$12 ] zp[2]:95 [ init_buckets::$16 ] zp[2]:98 [ init_buckets::$7 ] zp[2]:100 [ init_buckets::$13 ] zp[2]:102 [ init_buckets::$17 ] reg byte a [ init_buckets::$14 ] zp[2]:19 [ init_buckets::i4#2 init_buckets::i4#1 ] zp[2]:17 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] zp[2]:106 [ init_buckets::$8 ] zp[2]:104 [ init_buckets::bucket#0 ] zp[1]:97 [ init_buckets::distance#0 ] zp[2]:91 [ init_buckets::$4 ] zp[2]:76 [ init_buckets::screen#0 ] -Uplifting [sqrt] best 1227216 combination reg byte a [ sqrt::return#2 ] zp[2]:146 [ sqrt::val#0 ] reg byte a [ sqrt::return#0 ] zp[2]:154 [ sqrt::found#0 ] zp[2]:156 [ sqrt::$3 ] zp[2]:158 [ sqrt::$1 ] -Uplifting [init_squares] best 1227016 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:62 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:60 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplifting [init_squares] best 1228736 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:62 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:60 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplifting [init_buckets] best 1228456 combination reg byte y [ init_buckets::i#2 init_buckets::i#1 ] reg byte y [ init_buckets::i3#2 init_buckets::i3#1 ] zp[2]:10 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] zp[2]:12 [ init_buckets::i1#2 init_buckets::i1#1 ] zp[2]:14 [ init_buckets::i2#2 init_buckets::i2#1 ] zp[2]:89 [ init_buckets::$15 ] zp[2]:93 [ init_buckets::$12 ] zp[2]:95 [ init_buckets::$16 ] zp[2]:98 [ init_buckets::$7 ] zp[2]:100 [ init_buckets::$13 ] zp[2]:102 [ init_buckets::$17 ] reg byte a [ init_buckets::$14 ] zp[2]:19 [ init_buckets::i4#2 init_buckets::i4#1 ] zp[2]:17 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] zp[2]:106 [ init_buckets::$8 ] zp[2]:104 [ init_buckets::bucket#0 ] zp[1]:97 [ init_buckets::distance#0 ] zp[2]:91 [ init_buckets::$4 ] zp[2]:76 [ init_buckets::screen#0 ] +Uplifting [main] best 1227016 combination zp[2]:7 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] reg byte a [ main::$24 ] zp[2]:85 [ main::fill#0 ] zp[2]:87 [ main::angle#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$23 ] zp[2]:82 [ main::fill1#0 ] zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] zp[1]:81 [ main::bucket_size#0 ] zp[2]:79 [ main::bucket#0 ] +Limited combination testing to 100 combinations of 256 possible. Uplifting [malloc] best 1227016 combination zp[2]:23 [ malloc::size#7 malloc::size#6 ] zp[2]:109 [ malloc::mem#0 ] -Uplifting [] best 1227016 combination zp[2]:21 [ heap_head#18 heap_head#1 ] zp[2]:64 [ SCREEN_DIST#0 ] zp[2]:66 [ SCREEN_ANGLE#0 ] zp[2]:72 [ BUCKET_IDX#0 ] zp[2]:170 [ SQUARES#1 ] zp[2]:70 [ BUCKETS#0 ] zp[2]:68 [ BUCKET_SIZES#0 ] +Uplifting [] best 1227016 combination zp[2]:21 [ heap_head#18 heap_head#1 ] zp[2]:170 [ SQUARES#1 ] zp[2]:64 [ SCREEN_DIST#0 ] zp[2]:66 [ SCREEN_ANGLE#0 ] zp[2]:72 [ BUCKET_IDX#0 ] zp[2]:70 [ BUCKETS#0 ] zp[2]:68 [ BUCKET_SIZES#0 ] Uplifting [RADIX] best 1227016 combination -Attempting to uplift remaining variables inzp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] -Uplifting [main] best 1227016 combination zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] Attempting to uplift remaining variables inzp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] Uplifting [init_dist_screen] best 1227016 combination zp[1]:53 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] Attempting to uplift remaining variables inzp[1]:31 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] @@ -7129,18 +7124,20 @@ Attempting to uplift remaining variables inzp[1]:128 [ init_angle_screen::ang_w# Uplifting [init_angle_screen] best 1225416 combination zp[1]:128 [ init_angle_screen::ang_w#0 ] Attempting to uplift remaining variables inzp[1]:51 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] Uplifting [init_dist_screen] best 1225346 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] +Attempting to uplift remaining variables inzp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] +Uplifting [main] best 1225346 combination zp[1]:6 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] Attempting to uplift remaining variables inzp[1]:134 [ init_dist_screen::y2#0 ] Uplifting [init_dist_screen] best 1225246 combination reg byte a [ init_dist_screen::y2#0 ] Attempting to uplift remaining variables inzp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Uplifting [init_angle_screen] best 1225246 combination zp[1]:25 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Attempting to uplift remaining variables inzp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Uplifting [init_dist_screen] best 1225246 combination zp[1]:46 [ init_dist_screen::y#10 init_dist_screen::y#1 ] +Attempting to uplift remaining variables inzp[1]:97 [ init_buckets::distance#0 ] +Uplifting [init_buckets] best 1225246 combination zp[1]:97 [ init_buckets::distance#0 ] Attempting to uplift remaining variables inzp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] Uplifting [main] best 1225246 combination zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] Attempting to uplift remaining variables inzp[1]:81 [ main::bucket_size#0 ] Uplifting [main] best 1225246 combination zp[1]:81 [ main::bucket_size#0 ] -Attempting to uplift remaining variables inzp[1]:97 [ init_buckets::distance#0 ] -Uplifting [init_buckets] best 1225246 combination zp[1]:97 [ init_buckets::distance#0 ] Coalescing zero page register [ zp[2]:4 [ main::min_offset#2 main::min_offset#8 ] ] with [ zp[2]:82 [ main::fill1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:23 [ malloc::size#7 malloc::size#6 ] ] with [ zp[2]:89 [ init_buckets::$15 ] ] - score: 1 Coalescing zero page register [ zp[2]:23 [ malloc::size#7 malloc::size#6 init_buckets::$15 ] ] with [ zp[2]:109 [ malloc::mem#0 ] ] - score: 1 @@ -9239,12 +9236,12 @@ FINAL SYMBOL TABLE (const byte) SIZEOF_POINTER = (byte) 2 (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:6 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:6 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:29 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:31 4.0 +(signed word~) atan2_16::$2 zp[2]:29 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:31 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -9268,59 +9265,59 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:36 3.0 -(word) atan2_16::angle#11 angle zp[2]:36 4.0 -(word) atan2_16::angle#12 angle zp[2]:36 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:36 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:36 2002.0 -(word) atan2_16::angle#3 angle zp[2]:36 2002.0 -(word) atan2_16::angle#4 angle zp[2]:36 4.0 -(word) atan2_16::angle#5 angle zp[2]:36 4.0 -(word) atan2_16::angle#6 angle zp[2]:36 2004.0 +(word) atan2_16::angle#1 angle zp[2]:36 150001.5 +(word) atan2_16::angle#11 angle zp[2]:36 200002.0 +(word) atan2_16::angle#12 angle zp[2]:36 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:36 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:36 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:36 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:36 200002.0 +(word) atan2_16::angle#5 angle zp[2]:36 200002.0 +(word) atan2_16::angle#6 angle zp[2]:36 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:36 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:36 202.0 +(word) atan2_16::return#0 return zp[2]:36 70001.0 +(word) atan2_16::return#2 return zp[2]:36 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:38 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:38 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:10 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:10 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:10 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:10 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:10 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:10 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:31 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:31 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:31 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:31 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:31 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:31 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:31 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:31 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:31 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:31 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:31 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:31 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:40 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:40 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:8 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:8 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:8 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:8 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:8 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:8 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:29 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:29 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:29 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:29 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:29 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:29 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:29 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:29 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:29 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:29 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:29 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:29 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:14 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:14 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -9332,37 +9329,37 @@ FINAL SYMBOL TABLE (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:14 1001.0 -(word*) bsearch16u::items#1 items zp[2]:14 2.0 -(word*) bsearch16u::items#2 items zp[2]:14 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:14 1501.5 +(word*) bsearch16u::items#0 items zp[2]:14 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:14 550001.0 +(word*) bsearch16u::items#2 items zp[2]:14 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:14 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:36 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:36 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:38 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:38 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:40 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:40 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:14 2.0 -(word*) bsearch16u::return#2 return zp[2]:14 6.0 -(word*) bsearch16u::return#3 return zp[2]:14 4.0 -(word*) bsearch16u::return#6 return zp[2]:14 4.0 +(word*) bsearch16u::return#1 return zp[2]:14 700001.0 +(word*) bsearch16u::return#2 return zp[2]:14 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:14 200002.0 +(word*) bsearch16u::return#6 return zp[2]:14 2000002.0 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:4 0.24731182795698928 -(byte*) heap_head#18 heap_head zp[2]:4 23.0 +(byte*) heap_head#1 heap_head zp[2]:4 129.1505376344086 +(byte*) heap_head#18 heap_head zp[2]:4 12011.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:36 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:36 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -9370,42 +9367,42 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:33 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:33 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:36 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:36 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:26 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:26 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:26 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:26 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:26 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:26 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:26 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:26 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:14 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:14 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:14 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:14 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:14 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:14 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:12 101.0 -(byte) init_angle_screen::x#2 x zp[1]:12 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:12 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:12 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:13 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:13 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:13 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:13 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:38 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:38 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:28 16.5 -(byte) init_angle_screen::y#5 y zp[1]:28 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:28 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:28 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:40 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:40 5000.5 (void()) init_buckets((byte*) init_buckets::screen) -(word~) init_buckets::$12 zp[2]:38 22.0 -(word~) init_buckets::$13 zp[2]:40 22.0 -(byte~) init_buckets::$14 reg byte a 22.0 -(byte*~) init_buckets::$15 zp[2]:6 22.0 -(word**~) init_buckets::$16 zp[2]:38 22.0 -(word**~) init_buckets::$17 zp[2]:40 22.0 -(void*~) init_buckets::$4 zp[2]:6 3.6666666666666665 -(word~) init_buckets::$7 zp[2]:40 22.0 -(word~) init_buckets::$8 zp[2]:34 11.0 +(word~) init_buckets::$12 zp[2]:38 2002.0 +(word~) init_buckets::$13 zp[2]:40 2002.0 +(byte~) init_buckets::$14 reg byte a 2002.0 +(byte*~) init_buckets::$15 zp[2]:6 2002.0 +(word**~) init_buckets::$16 zp[2]:38 2002.0 +(word**~) init_buckets::$17 zp[2]:40 2002.0 +(void*~) init_buckets::$4 zp[2]:6 333.6666666666667 +(word~) init_buckets::$7 zp[2]:40 2002.0 +(word~) init_buckets::$8 zp[2]:34 1001.0 (label) init_buckets::@1 (label) init_buckets::@2 (label) init_buckets::@3 @@ -9416,38 +9413,38 @@ FINAL SYMBOL TABLE (label) init_buckets::@8 (label) init_buckets::@return (word*) init_buckets::bucket -(word*) init_buckets::bucket#0 bucket zp[2]:40 7.333333333333333 +(word*) init_buckets::bucket#0 bucket zp[2]:40 667.3333333333334 (byte*) init_buckets::dist -(byte*) init_buckets::dist#1 dist zp[2]:14 7.333333333333333 -(byte*) init_buckets::dist#3 dist_1 zp[2]:31 7.333333333333333 -(byte*) init_buckets::dist#4 dist zp[2]:14 23.0 -(byte*) init_buckets::dist#5 dist_1 zp[2]:31 4.6000000000000005 -(byte*) init_buckets::dist#6 dist zp[2]:14 4.0 -(byte*) init_buckets::dist#8 dist_1 zp[2]:31 4.0 +(byte*) init_buckets::dist#1 dist zp[2]:14 667.3333333333334 +(byte*) init_buckets::dist#3 dist_1 zp[2]:31 667.3333333333334 +(byte*) init_buckets::dist#4 dist zp[2]:14 2052.5 +(byte*) init_buckets::dist#5 dist_1 zp[2]:31 410.5 +(byte*) init_buckets::dist#6 dist zp[2]:14 202.0 +(byte*) init_buckets::dist#8 dist_1 zp[2]:31 202.0 (byte) init_buckets::distance -(byte) init_buckets::distance#0 distance zp[1]:33 5.5 +(byte) init_buckets::distance#0 distance zp[1]:33 500.5 (byte) init_buckets::i -(byte) init_buckets::i#1 reg byte y 16.5 -(byte) init_buckets::i#2 reg byte y 16.5 +(byte) init_buckets::i#1 reg byte y 1501.5 +(byte) init_buckets::i#2 reg byte y 1501.5 (word) init_buckets::i1 -(word) init_buckets::i1#1 i1 zp[2]:26 16.5 -(word) init_buckets::i1#2 i1 zp[2]:26 7.333333333333333 +(word) init_buckets::i1#1 i1 zp[2]:26 1501.5 +(word) init_buckets::i1#2 i1 zp[2]:26 667.3333333333334 (word) init_buckets::i2 -(word) init_buckets::i2#1 i2 zp[2]:29 16.5 -(word) init_buckets::i2#2 i2 zp[2]:29 5.5 +(word) init_buckets::i2#1 i2 zp[2]:29 1501.5 +(word) init_buckets::i2#2 i2 zp[2]:29 500.5 (byte) init_buckets::i3 -(byte) init_buckets::i3#1 reg byte y 16.5 -(byte) init_buckets::i3#2 reg byte y 16.5 +(byte) init_buckets::i3#1 reg byte y 1501.5 +(byte) init_buckets::i3#2 reg byte y 1501.5 (word) init_buckets::i4 -(word) init_buckets::i4#1 i4 zp[2]:36 16.5 -(word) init_buckets::i4#2 i4 zp[2]:36 2.0 +(word) init_buckets::i4#1 i4 zp[2]:36 1501.5 +(word) init_buckets::i4#2 i4 zp[2]:36 182.0 (byte*) init_buckets::screen -(byte*) init_buckets::screen#0 screen zp[2]:16 0.42500000000000004 +(byte*) init_buckets::screen#0 screen zp[2]:16 30.349999999999998 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -9464,59 +9461,59 @@ FINAL SYMBOL TABLE (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:36 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:36 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:8 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:8 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:10 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:10 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:10 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:10 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:10 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:10 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:8 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:8 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:8 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:8 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:12 101.0 -(byte) init_dist_screen::x#2 x zp[1]:12 30.3 +(byte) init_dist_screen::x#1 x zp[1]:12 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:12 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:13 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:13 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:13 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:13 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:36 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:36 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:28 16.5 -(byte) init_dist_screen::y#10 y zp[1]:28 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:28 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:28 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:34 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:34 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:14 11.0 -(word) init_squares::sqr#2 sqr zp[2]:14 5.5 +(word) init_squares::sqr#1 sqr zp[2]:14 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:14 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:26 4.0 -(word*) init_squares::squares#1 squares zp[2]:26 4.4 -(word*) init_squares::squares#2 squares zp[2]:26 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:26 2002.0 +(word*) init_squares::squares#1 squares zp[2]:26 4000.4 +(word*) init_squares::squares#2 squares zp[2]:26 10334.666666666666 (void()) main() -(byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte a 202.0 +(byte~) main::$23 reg byte a 202.0 +(byte~) main::$24 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -9536,65 +9533,65 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte*) main::angle -(byte*) main::angle#0 angle zp[2]:31 151.5 +(byte*) main::angle#0 angle zp[2]:31 1501.5 (word*) main::bucket -(word*) main::bucket#0 bucket zp[2]:26 6.588235294117648 +(word*) main::bucket#0 bucket zp[2]:26 64.82352941176471 (byte) main::bucket_idx -(byte) main::bucket_idx#1 bucket_idx zp[1]:2 11.0 -(byte) main::bucket_idx#6 bucket_idx zp[1]:2 2.64 +(byte) main::bucket_idx#1 bucket_idx zp[1]:2 101.0 +(byte) main::bucket_idx#6 bucket_idx zp[1]:2 24.24 (byte) main::bucket_size -(byte) main::bucket_size#0 bucket_size zp[1]:28 7.6875 +(byte) main::bucket_size#0 bucket_size zp[1]:28 75.1875 (byte*) main::fill -(byte*) main::fill#0 fill zp[2]:29 202.0 +(byte*) main::fill#0 fill zp[2]:29 2002.0 (byte*) main::fill1 -(byte*) main::fill1#0 fill1 zp[2]:4 22.0 +(byte*) main::fill1#0 fill1 zp[2]:4 202.0 (byte) main::i -(byte) main::i#1 reg byte x 101.0 -(byte) main::i#2 reg byte x 33.666666666666664 +(byte) main::i#1 reg byte x 1001.0 +(byte) main::i#2 reg byte x 333.6666666666667 (byte) main::min_angle -(byte) main::min_angle#1 min_angle zp[1]:3 202.0 -(byte) main::min_angle#2 min_angle zp[1]:3 40.4 -(byte) main::min_angle#5 min_angle zp[1]:3 134.66666666666666 +(byte) main::min_angle#1 min_angle zp[1]:3 2002.0 +(byte) main::min_angle#2 min_angle zp[1]:3 400.4 +(byte) main::min_angle#5 min_angle zp[1]:3 1334.6666666666667 (word) main::min_offset -(word) main::min_offset#11 min_offset_1 zp[2]:24 202.0 -(word) main::min_offset#2 min_offset zp[2]:4 36.11111111111111 -(word) main::min_offset#5 min_offset_1 zp[2]:24 202.0 -(word) main::min_offset#8 min_offset zp[2]:4 202.0 -(word) main::min_offset#9 min_offset_1 zp[2]:24 202.0 +(word) main::min_offset#11 min_offset_1 zp[2]:24 2002.0 +(word) main::min_offset#2 min_offset zp[2]:4 356.11111111111114 +(word) main::min_offset#5 min_offset_1 zp[2]:24 2002.0 +(word) main::min_offset#8 min_offset zp[2]:4 2002.0 +(word) main::min_offset#9 min_offset_1 zp[2]:24 2002.0 (word) main::offset -(word) main::offset#0 offset zp[2]:24 67.33333333333333 +(word) main::offset#0 offset zp[2]:24 667.3333333333334 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:6 0.4 +(byte*) malloc::mem#0 mem zp[2]:6 2000.2 (void*) malloc::return (word) malloc::size -(word) malloc::size#6 size zp[2]:6 22.0 -(word) malloc::size#7 size zp[2]:6 13.0 +(word) malloc::size#6 size zp[2]:6 2002.0 +(word) malloc::size#7 size zp[2]:6 11002.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:36 28.5 -(word) sqr::return#2 return_1 zp[2]:34 22.0 -(word) sqr::return#3 return zp[2]:36 202.0 +(word) sqr::return#0 return zp[2]:36 27750.75 +(word) sqr::return#2 return_1 zp[2]:34 2002.0 +(word) sqr::return#3 return zp[2]:36 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:14 2.0 -(word~) sqrt::$3 zp[2]:14 4.0 +(word~) sqrt::$1 zp[2]:14 100001.0 +(word~) sqrt::$3 zp[2]:14 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:14 4.0 +(word*) sqrt::found#0 found zp[2]:14 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:36 103.0 +(word) sqrt::val#0 val zp[2]:36 110002.0 zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/screen-show-spiral-buckets.sym b/src/test/ref/screen-show-spiral-buckets.sym index 6765b6ce4..e24ad31e2 100644 --- a/src/test/ref/screen-show-spiral-buckets.sym +++ b/src/test/ref/screen-show-spiral-buckets.sym @@ -38,12 +38,12 @@ (const byte) SIZEOF_POINTER = (byte) 2 (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:6 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:6 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:29 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:31 4.0 +(signed word~) atan2_16::$2 zp[2]:29 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:31 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -67,59 +67,59 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:36 3.0 -(word) atan2_16::angle#11 angle zp[2]:36 4.0 -(word) atan2_16::angle#12 angle zp[2]:36 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:36 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:36 2002.0 -(word) atan2_16::angle#3 angle zp[2]:36 2002.0 -(word) atan2_16::angle#4 angle zp[2]:36 4.0 -(word) atan2_16::angle#5 angle zp[2]:36 4.0 -(word) atan2_16::angle#6 angle zp[2]:36 2004.0 +(word) atan2_16::angle#1 angle zp[2]:36 150001.5 +(word) atan2_16::angle#11 angle zp[2]:36 200002.0 +(word) atan2_16::angle#12 angle zp[2]:36 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:36 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:36 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:36 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:36 200002.0 +(word) atan2_16::angle#5 angle zp[2]:36 200002.0 +(word) atan2_16::angle#6 angle zp[2]:36 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:36 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:36 202.0 +(word) atan2_16::return#0 return zp[2]:36 70001.0 +(word) atan2_16::return#2 return zp[2]:36 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:38 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:38 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:10 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:10 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:10 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:10 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:10 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:10 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:10 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:10 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:31 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:31 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:31 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:31 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:31 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:31 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:31 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:31 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:31 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:31 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:31 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:31 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:40 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:40 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:8 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:8 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:8 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:8 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:8 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:8 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:8 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:8 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:29 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:29 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:29 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:29 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:29 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:29 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:29 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:29 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:29 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:29 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:29 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:29 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:14 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:14 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -131,37 +131,37 @@ (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:14 1001.0 -(word*) bsearch16u::items#1 items zp[2]:14 2.0 -(word*) bsearch16u::items#2 items zp[2]:14 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:14 1501.5 +(word*) bsearch16u::items#0 items zp[2]:14 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:14 550001.0 +(word*) bsearch16u::items#2 items zp[2]:14 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:14 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:36 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:36 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:38 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:38 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:40 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:40 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:14 2.0 -(word*) bsearch16u::return#2 return zp[2]:14 6.0 -(word*) bsearch16u::return#3 return zp[2]:14 4.0 -(word*) bsearch16u::return#6 return zp[2]:14 4.0 +(word*) bsearch16u::return#1 return zp[2]:14 700001.0 +(word*) bsearch16u::return#2 return zp[2]:14 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:14 200002.0 +(word*) bsearch16u::return#6 return zp[2]:14 2000002.0 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:4 0.24731182795698928 -(byte*) heap_head#18 heap_head zp[2]:4 23.0 +(byte*) heap_head#1 heap_head zp[2]:4 129.1505376344086 +(byte*) heap_head#18 heap_head zp[2]:4 12011.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:36 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:36 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -169,42 +169,42 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:33 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:33 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:36 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:36 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:26 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:26 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:26 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:26 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:26 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:26 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:26 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:26 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:14 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:14 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:14 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:14 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:14 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:14 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:12 101.0 -(byte) init_angle_screen::x#2 x zp[1]:12 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:12 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:12 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:13 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:13 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:13 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:13 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:38 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:38 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:28 16.5 -(byte) init_angle_screen::y#5 y zp[1]:28 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:28 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:28 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:40 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:40 5000.5 (void()) init_buckets((byte*) init_buckets::screen) -(word~) init_buckets::$12 zp[2]:38 22.0 -(word~) init_buckets::$13 zp[2]:40 22.0 -(byte~) init_buckets::$14 reg byte a 22.0 -(byte*~) init_buckets::$15 zp[2]:6 22.0 -(word**~) init_buckets::$16 zp[2]:38 22.0 -(word**~) init_buckets::$17 zp[2]:40 22.0 -(void*~) init_buckets::$4 zp[2]:6 3.6666666666666665 -(word~) init_buckets::$7 zp[2]:40 22.0 -(word~) init_buckets::$8 zp[2]:34 11.0 +(word~) init_buckets::$12 zp[2]:38 2002.0 +(word~) init_buckets::$13 zp[2]:40 2002.0 +(byte~) init_buckets::$14 reg byte a 2002.0 +(byte*~) init_buckets::$15 zp[2]:6 2002.0 +(word**~) init_buckets::$16 zp[2]:38 2002.0 +(word**~) init_buckets::$17 zp[2]:40 2002.0 +(void*~) init_buckets::$4 zp[2]:6 333.6666666666667 +(word~) init_buckets::$7 zp[2]:40 2002.0 +(word~) init_buckets::$8 zp[2]:34 1001.0 (label) init_buckets::@1 (label) init_buckets::@2 (label) init_buckets::@3 @@ -215,38 +215,38 @@ (label) init_buckets::@8 (label) init_buckets::@return (word*) init_buckets::bucket -(word*) init_buckets::bucket#0 bucket zp[2]:40 7.333333333333333 +(word*) init_buckets::bucket#0 bucket zp[2]:40 667.3333333333334 (byte*) init_buckets::dist -(byte*) init_buckets::dist#1 dist zp[2]:14 7.333333333333333 -(byte*) init_buckets::dist#3 dist_1 zp[2]:31 7.333333333333333 -(byte*) init_buckets::dist#4 dist zp[2]:14 23.0 -(byte*) init_buckets::dist#5 dist_1 zp[2]:31 4.6000000000000005 -(byte*) init_buckets::dist#6 dist zp[2]:14 4.0 -(byte*) init_buckets::dist#8 dist_1 zp[2]:31 4.0 +(byte*) init_buckets::dist#1 dist zp[2]:14 667.3333333333334 +(byte*) init_buckets::dist#3 dist_1 zp[2]:31 667.3333333333334 +(byte*) init_buckets::dist#4 dist zp[2]:14 2052.5 +(byte*) init_buckets::dist#5 dist_1 zp[2]:31 410.5 +(byte*) init_buckets::dist#6 dist zp[2]:14 202.0 +(byte*) init_buckets::dist#8 dist_1 zp[2]:31 202.0 (byte) init_buckets::distance -(byte) init_buckets::distance#0 distance zp[1]:33 5.5 +(byte) init_buckets::distance#0 distance zp[1]:33 500.5 (byte) init_buckets::i -(byte) init_buckets::i#1 reg byte y 16.5 -(byte) init_buckets::i#2 reg byte y 16.5 +(byte) init_buckets::i#1 reg byte y 1501.5 +(byte) init_buckets::i#2 reg byte y 1501.5 (word) init_buckets::i1 -(word) init_buckets::i1#1 i1 zp[2]:26 16.5 -(word) init_buckets::i1#2 i1 zp[2]:26 7.333333333333333 +(word) init_buckets::i1#1 i1 zp[2]:26 1501.5 +(word) init_buckets::i1#2 i1 zp[2]:26 667.3333333333334 (word) init_buckets::i2 -(word) init_buckets::i2#1 i2 zp[2]:29 16.5 -(word) init_buckets::i2#2 i2 zp[2]:29 5.5 +(word) init_buckets::i2#1 i2 zp[2]:29 1501.5 +(word) init_buckets::i2#2 i2 zp[2]:29 500.5 (byte) init_buckets::i3 -(byte) init_buckets::i3#1 reg byte y 16.5 -(byte) init_buckets::i3#2 reg byte y 16.5 +(byte) init_buckets::i3#1 reg byte y 1501.5 +(byte) init_buckets::i3#2 reg byte y 1501.5 (word) init_buckets::i4 -(word) init_buckets::i4#1 i4 zp[2]:36 16.5 -(word) init_buckets::i4#2 i4 zp[2]:36 2.0 +(word) init_buckets::i4#1 i4 zp[2]:36 1501.5 +(word) init_buckets::i4#2 i4 zp[2]:36 182.0 (byte*) init_buckets::screen -(byte*) init_buckets::screen#0 screen zp[2]:16 0.42500000000000004 +(byte*) init_buckets::screen#0 screen zp[2]:16 30.349999999999998 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -263,59 +263,59 @@ (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:36 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:36 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:8 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:8 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:10 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:10 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:10 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:10 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:10 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:10 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:8 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:8 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:8 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:8 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:12 101.0 -(byte) init_dist_screen::x#2 x zp[1]:12 30.3 +(byte) init_dist_screen::x#1 x zp[1]:12 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:12 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:13 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:13 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:13 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:13 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:36 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:36 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:28 16.5 -(byte) init_dist_screen::y#10 y zp[1]:28 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:28 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:28 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:34 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:34 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:14 11.0 -(word) init_squares::sqr#2 sqr zp[2]:14 5.5 +(word) init_squares::sqr#1 sqr zp[2]:14 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:14 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:26 4.0 -(word*) init_squares::squares#1 squares zp[2]:26 4.4 -(word*) init_squares::squares#2 squares zp[2]:26 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:26 2002.0 +(word*) init_squares::squares#1 squares zp[2]:26 4000.4 +(word*) init_squares::squares#2 squares zp[2]:26 10334.666666666666 (void()) main() -(byte~) main::$23 reg byte a 22.0 -(byte~) main::$24 reg byte a 202.0 +(byte~) main::$23 reg byte a 202.0 +(byte~) main::$24 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -335,65 +335,65 @@ (label) main::@8 (label) main::@9 (byte*) main::angle -(byte*) main::angle#0 angle zp[2]:31 151.5 +(byte*) main::angle#0 angle zp[2]:31 1501.5 (word*) main::bucket -(word*) main::bucket#0 bucket zp[2]:26 6.588235294117648 +(word*) main::bucket#0 bucket zp[2]:26 64.82352941176471 (byte) main::bucket_idx -(byte) main::bucket_idx#1 bucket_idx zp[1]:2 11.0 -(byte) main::bucket_idx#6 bucket_idx zp[1]:2 2.64 +(byte) main::bucket_idx#1 bucket_idx zp[1]:2 101.0 +(byte) main::bucket_idx#6 bucket_idx zp[1]:2 24.24 (byte) main::bucket_size -(byte) main::bucket_size#0 bucket_size zp[1]:28 7.6875 +(byte) main::bucket_size#0 bucket_size zp[1]:28 75.1875 (byte*) main::fill -(byte*) main::fill#0 fill zp[2]:29 202.0 +(byte*) main::fill#0 fill zp[2]:29 2002.0 (byte*) main::fill1 -(byte*) main::fill1#0 fill1 zp[2]:4 22.0 +(byte*) main::fill1#0 fill1 zp[2]:4 202.0 (byte) main::i -(byte) main::i#1 reg byte x 101.0 -(byte) main::i#2 reg byte x 33.666666666666664 +(byte) main::i#1 reg byte x 1001.0 +(byte) main::i#2 reg byte x 333.6666666666667 (byte) main::min_angle -(byte) main::min_angle#1 min_angle zp[1]:3 202.0 -(byte) main::min_angle#2 min_angle zp[1]:3 40.4 -(byte) main::min_angle#5 min_angle zp[1]:3 134.66666666666666 +(byte) main::min_angle#1 min_angle zp[1]:3 2002.0 +(byte) main::min_angle#2 min_angle zp[1]:3 400.4 +(byte) main::min_angle#5 min_angle zp[1]:3 1334.6666666666667 (word) main::min_offset -(word) main::min_offset#11 min_offset_1 zp[2]:24 202.0 -(word) main::min_offset#2 min_offset zp[2]:4 36.11111111111111 -(word) main::min_offset#5 min_offset_1 zp[2]:24 202.0 -(word) main::min_offset#8 min_offset zp[2]:4 202.0 -(word) main::min_offset#9 min_offset_1 zp[2]:24 202.0 +(word) main::min_offset#11 min_offset_1 zp[2]:24 2002.0 +(word) main::min_offset#2 min_offset zp[2]:4 356.11111111111114 +(word) main::min_offset#5 min_offset_1 zp[2]:24 2002.0 +(word) main::min_offset#8 min_offset zp[2]:4 2002.0 +(word) main::min_offset#9 min_offset_1 zp[2]:24 2002.0 (word) main::offset -(word) main::offset#0 offset zp[2]:24 67.33333333333333 +(word) main::offset#0 offset zp[2]:24 667.3333333333334 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:6 0.4 +(byte*) malloc::mem#0 mem zp[2]:6 2000.2 (void*) malloc::return (word) malloc::size -(word) malloc::size#6 size zp[2]:6 22.0 -(word) malloc::size#7 size zp[2]:6 13.0 +(word) malloc::size#6 size zp[2]:6 2002.0 +(word) malloc::size#7 size zp[2]:6 11002.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:36 28.5 -(word) sqr::return#2 return_1 zp[2]:34 22.0 -(word) sqr::return#3 return zp[2]:36 202.0 +(word) sqr::return#0 return zp[2]:36 27750.75 +(word) sqr::return#2 return_1 zp[2]:34 2002.0 +(word) sqr::return#3 return zp[2]:36 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:14 2.0 -(word~) sqrt::$3 zp[2]:14 4.0 +(word~) sqrt::$1 zp[2]:14 100001.0 +(word~) sqrt::$3 zp[2]:14 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:14 4.0 +(word*) sqrt::found#0 found zp[2]:14 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:36 103.0 +(word) sqrt::val#0 val zp[2]:36 110002.0 zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/screen-show-spiral.log b/src/test/ref/screen-show-spiral.log index 58e1818c8..8acf32211 100644 --- a/src/test/ref/screen-show-spiral.log +++ b/src/test/ref/screen-show-spiral.log @@ -2039,214 +2039,214 @@ Inversing boolean not [220] (bool~) main::$3 ← *((byte*) main::fill#2) == (con Inversing boolean not [232] (bool~) main::$5 ← (word) main::dist_angle#0 >= (word) main::min_dist_angle#2 from [231] (bool~) main::$4 ← (word) main::dist_angle#0 < (word) main::min_dist_angle#2 Inversing boolean not [239] (bool~) main::$8 ← (word) main::min_dist_angle#3 != (word) $ffff from [238] (bool~) main::$7 ← (word) main::min_dist_angle#3 == (word) $ffff Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 -Alias (void*) malloc::return#0 = (void*) malloc::return#5 (void*) malloc::return#1 -Alias (byte*) heap_head#1 = (byte*) heap_head#13 (byte*) heap_head#2 -Alias (byte) bsearch16u::num#3 = (byte) bsearch16u::num#4 (byte) bsearch16u::num#8 (byte) bsearch16u::num#6 -Alias (word*) bsearch16u::items#2 = (word*) bsearch16u::items#6 (word*) bsearch16u::items#3 (word*) bsearch16u::items#9 (word*) bsearch16u::items#4 (word*~) bsearch16u::$3 (word*) bsearch16u::items#5 -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#3 (word) bsearch16u::key#2 (word) bsearch16u::key#7 (word) bsearch16u::key#6 -Alias (word*) bsearch16u::pivot#0 = (word*~) bsearch16u::$7 (word*) bsearch16u::pivot#3 (word*) bsearch16u::pivot#1 (word*) bsearch16u::return#0 (word*) bsearch16u::pivot#2 -Alias (signed word) bsearch16u::result#0 = (signed word~) bsearch16u::$10 (signed word) bsearch16u::result#1 -Alias (word*) bsearch16u::return#1 = (word*) bsearch16u::return#4 -Alias (word*) bsearch16u::items#0 = (word*~) bsearch16u::$15 -Alias (word*~) bsearch16u::$2 = (word*~) bsearch16u::$1 -Alias (word*) bsearch16u::return#2 = (word*~) bsearch16u::$4 -Alias (byte*) heap_head#0 = (byte*) heap_head#33 (byte*) heap_head#23 -Alias (word) malloc::size#0 = (byte~) init_squares::$0 -Alias (void*) malloc::return#2 = (void*) malloc::return#6 -Alias (byte) NUM_SQUARES#14 = (byte) NUM_SQUARES#6 -Alias (byte*) heap_head#14 = (byte*) heap_head#3 -Alias (word) init_squares::sqr#2 = (word) init_squares::sqr#3 -Alias (word*) init_squares::squares#2 = (word*) init_squares::squares#3 -Alias (byte) init_squares::i#2 = (byte) init_squares::i#3 -Alias (byte) NUM_SQUARES#13 = (byte) NUM_SQUARES#7 -Alias (byte*) heap_head#15 = (byte*) heap_head#32 (byte*) heap_head#25 (byte*) heap_head#4 -Alias (word*) SQUARES#17 = (word*) SQUARES#27 (word*) SQUARES#8 (word*) SQUARES#2 -Alias (word) sqr::return#0 = (word) sqr::return#4 (word) sqr::return#1 -Alias (word*) bsearch16u::return#3 = (word*) bsearch16u::return#5 -Alias (word*) SQUARES#10 = (word*) SQUARES#11 -Alias (word*) sqrt::found#0 = (word*~) sqrt::$0 -Alias (byte) sqrt::return#0 = (byte) sqrt::sq#0 (byte~) sqrt::$2 (byte) sqrt::return#3 (byte) sqrt::return#1 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 -Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 -Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 -Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 -Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 -Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 -Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 -Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 -Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 -Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 -Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 -Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 -Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 -Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 -Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 -Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 -Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 -Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 -Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 -Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 -Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 -Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 -Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 -Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 -Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 -Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 -Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 -Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 -Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 -Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 -Alias (byte) NUM_SQUARES#0 = (byte) NUM_SQUARES#35 (byte) NUM_SQUARES#27 (byte) NUM_SQUARES#26 (byte) NUM_SQUARES#20 -Alias (word*) SQUARES#0 = (word*) SQUARES#45 (word*) SQUARES#37 (word*) SQUARES#36 (word*) SQUARES#26 -Alias (void*) malloc::return#3 = (void*) malloc::return#7 -Alias (byte*) heap_head#16 = (byte*) heap_head#5 -Alias (void*) malloc::return#4 = (void*) malloc::return#8 -Alias (byte*) SCREEN_DIST#0 = (byte*) SCREEN_DIST#7 (byte*) SCREEN_DIST#3 -Alias (byte*) heap_head#17 = (byte*) heap_head#6 (byte*) heap_head#31 -Alias (byte*) SCREEN_ANGLE#1 = (byte*) SCREEN_ANGLE#3 (byte*) SCREEN_ANGLE#7 -Alias (byte*) SCREEN_DIST#1 = (byte*) SCREEN_DIST#8 (byte*) SCREEN_DIST#6 -Alias (byte) NUM_SQUARES#1 = (byte) NUM_SQUARES#9 (byte) NUM_SQUARES#22 -Alias (byte*) heap_head#18 = (byte*) heap_head#7 (byte*) heap_head#35 -Alias (word*) SQUARES#12 = (word*) SQUARES#3 (word*) SQUARES#29 -Alias (byte*) SCREEN_DIST#2 = (byte*) SCREEN_DIST#4 -Alias (byte*) SCREEN_ANGLE#2 = (byte*) SCREEN_ANGLE#4 -Alias (byte) NUM_SQUARES#17 = (byte) NUM_SQUARES#36 -Alias (byte*) heap_head#27 = (byte*) heap_head#43 -Alias (word*) SQUARES#22 = (word*) SQUARES#46 -Alias (byte*) main::dist#3 = (byte*) main::dist#4 (byte*) main::dist#5 -Alias (byte*) main::angle#3 = (byte*) main::angle#4 (byte*) main::angle#5 -Alias (word) main::min_dist_angle#2 = (word) main::min_dist_angle#4 -Alias (byte*) main::fill#2 = (byte*) main::fill#5 (byte*) main::fill#4 (byte*) main::min_fill#1 -Alias (byte*) main::min_fill#5 = (byte*) main::min_fill#6 -Alias (byte) NUM_SQUARES#28 = (byte) NUM_SQUARES#29 (byte) NUM_SQUARES#30 -Alias (byte*) heap_head#38 = (byte*) heap_head#39 (byte*) heap_head#40 -Alias (word*) SQUARES#38 = (word*) SQUARES#39 (word*) SQUARES#40 -Alias (byte*) SCREEN_DIST#11 = (byte*) SCREEN_DIST#12 (byte*) SCREEN_DIST#13 -Alias (byte*) SCREEN_ANGLE#10 = (byte*) SCREEN_ANGLE#11 (byte*) SCREEN_ANGLE#12 -Alias (word) main::dist_angle#0 = (word~) main::$9 (word) main::dist_angle#1 (word) main::min_dist_angle#1 -Alias (word) main::min_dist_angle#3 = (word) main::min_dist_angle#5 -Alias (byte*) main::min_fill#2 = (byte*) main::min_fill#3 (byte*) main::min_fill#4 -Alias (byte) NUM_SQUARES#18 = (byte) NUM_SQUARES#23 (byte) NUM_SQUARES#21 -Alias (byte*) heap_head#28 = (byte*) heap_head#36 (byte*) heap_head#34 -Alias (word*) SQUARES#23 = (word*) SQUARES#30 (word*) SQUARES#28 -Alias (byte*) SCREEN_DIST#10 = (byte*) SCREEN_DIST#9 (byte*) SCREEN_DIST#5 -Alias (byte*) SCREEN_ANGLE#6 = (byte*) SCREEN_ANGLE#8 (byte*) SCREEN_ANGLE#9 -Alias (byte) NUM_SQUARES#10 = (byte) NUM_SQUARES#2 -Alias (byte*) heap_head#19 = (byte*) heap_head#8 -Alias (word*) SQUARES#13 = (word*) SQUARES#4 -Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 -Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 -Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 (byte) init_angle_screen::x#4 -Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#4 (byte) init_angle_screen::y#6 (byte) init_angle_screen::y#3 -Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#5 (byte*) init_angle_screen::screen_bottomline#3 -Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 (byte) init_angle_screen::xb#4 -Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#5 (byte*) init_angle_screen::screen_topline#3 -Alias (word~) init_angle_screen::$5 = (word~) init_angle_screen::$17 -Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$6 -Alias (word~) init_angle_screen::$8 = (word~) init_angle_screen::$18 -Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$9 -Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 -Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$10 -Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$12 -Alias (byte*) init_dist_screen::screen#1 = (byte*) init_dist_screen::screen#2 (byte*) init_dist_screen::screen_topline#0 -Alias (byte) NUM_SQUARES#3 = (byte) NUM_SQUARES#42 -Alias (byte*) heap_head#20 = (byte*) heap_head#9 -Alias (word*) SQUARES#14 = (word*) SQUARES#5 -Alias (byte*) init_dist_screen::screen_bottomline#0 = (byte*~) init_dist_screen::$1 -Alias (byte) init_dist_screen::y2#0 = (byte~) init_dist_screen::$2 (byte) init_dist_screen::y2#1 (byte) init_dist_screen::y2#2 -Alias (word*) SQUARES#31 = (word*) SQUARES#41 (word*) SQUARES#32 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#14 (byte*) init_dist_screen::screen_topline#12 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#14 (byte*) init_dist_screen::screen_bottomline#12 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#9 (byte) init_dist_screen::y#2 -Alias (byte) NUM_SQUARES#39 = (byte) NUM_SQUARES#41 (byte) NUM_SQUARES#40 -Alias (byte*) heap_head#46 = (byte*) heap_head#49 (byte*) heap_head#47 -Alias (byte~) init_dist_screen::$7 = (byte~) init_dist_screen::$6 -Alias (byte~) init_dist_screen::$5 = (byte~) init_dist_screen::$4 -Alias (byte) init_dist_screen::yd#0 = (byte~) init_dist_screen::$8 -Alias (word) sqr::return#2 = (word) sqr::return#5 -Alias (byte*) init_dist_screen::screen_topline#6 = (byte*) init_dist_screen::screen_topline#8 -Alias (byte*) init_dist_screen::screen_bottomline#6 = (byte*) init_dist_screen::screen_bottomline#8 -Alias (byte) init_dist_screen::y#5 = (byte) init_dist_screen::y#7 -Alias (byte) NUM_SQUARES#31 = (byte) NUM_SQUARES#37 -Alias (byte*) heap_head#41 = (byte*) heap_head#44 -Alias (word*) SQUARES#19 = (word*) SQUARES#42 -Alias (word) init_dist_screen::yds#0 = (word~) init_dist_screen::$9 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#3 (byte) init_dist_screen::x#7 (byte) init_dist_screen::x#8 -Alias (word*) SQUARES#15 = (word*) SQUARES#44 (word*) SQUARES#33 (word*) SQUARES#25 (word*) SQUARES#34 (word*) SQUARES#35 (word*) SQUARES#6 -Alias (word) init_dist_screen::yds#3 = (word) init_dist_screen::yds#5 (word) init_dist_screen::yds#6 (word) init_dist_screen::yds#4 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#38 (byte) NUM_SQUARES#24 (byte) NUM_SQUARES#19 (byte) NUM_SQUARES#33 (byte) NUM_SQUARES#34 (byte) NUM_SQUARES#4 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#13 (byte*) init_dist_screen::screen_topline#4 (byte*) init_dist_screen::screen_topline#2 (byte*) init_dist_screen::screen_topline#9 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#13 (byte*) init_dist_screen::screen_bottomline#4 (byte*) init_dist_screen::screen_bottomline#2 (byte*) init_dist_screen::screen_bottomline#9 -Alias (byte) init_dist_screen::xb#5 = (byte) init_dist_screen::xb#7 (byte) init_dist_screen::xb#8 (byte) init_dist_screen::xb#6 -Alias (byte) init_dist_screen::y#12 = (byte) init_dist_screen::y#14 (byte) init_dist_screen::y#4 (byte) init_dist_screen::y#3 (byte) init_dist_screen::y#13 -Alias (byte*) heap_head#10 = (byte*) heap_head#52 (byte*) heap_head#37 (byte*) heap_head#30 (byte*) heap_head#50 (byte*) heap_head#51 (byte*) heap_head#21 -Alias (byte) init_dist_screen::x2#0 = (byte~) init_dist_screen::$11 (byte) init_dist_screen::x2#1 (byte) init_dist_screen::x2#2 -Alias (byte~) init_dist_screen::$16 = (byte~) init_dist_screen::$15 -Alias (byte~) init_dist_screen::$14 = (byte~) init_dist_screen::$13 -Alias (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$17 -Alias (word) sqr::return#3 = (word) sqr::return#6 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#2 (word) init_dist_screen::yds#7 -Alias (word*) SQUARES#18 = (word*) SQUARES#20 (word*) SQUARES#43 -Alias (byte) NUM_SQUARES#15 = (byte) NUM_SQUARES#25 (byte) NUM_SQUARES#32 -Alias (byte*) init_dist_screen::screen_topline#3 = (byte*) init_dist_screen::screen_topline#5 (byte*) init_dist_screen::screen_topline#7 -Alias (byte) init_dist_screen::x#4 = (byte) init_dist_screen::x#5 (byte) init_dist_screen::x#6 -Alias (byte*) init_dist_screen::screen_bottomline#3 = (byte*) init_dist_screen::screen_bottomline#5 (byte*) init_dist_screen::screen_bottomline#7 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#3 (byte) init_dist_screen::xb#4 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#8 (byte) init_dist_screen::y#6 -Alias (byte*) heap_head#42 = (byte*) heap_head#45 (byte*) heap_head#48 -Alias (word) init_dist_screen::xds#0 = (word~) init_dist_screen::$18 -Alias (word) init_dist_screen::ds#0 = (word~) init_dist_screen::$19 -Alias (byte) sqrt::return#2 = (byte) sqrt::return#4 -Alias (byte) init_dist_screen::d#0 = (byte~) init_dist_screen::$20 -Alias (byte*) SCREEN_ANGLE#0 = (byte*) SCREEN_ANGLE#5 -Alias (byte) NUM_SQUARES#12 = (byte) NUM_SQUARES#5 -Alias (byte*) heap_head#11 = (byte*) heap_head#22 -Alias (word*) SQUARES#16 = (word*) SQUARES#7 +Alias malloc::mem#0 = malloc::$0 +Alias malloc::return#0 = malloc::return#5 malloc::return#1 +Alias heap_head#1 = heap_head#13 heap_head#2 +Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 +Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 +Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 +Alias bsearch16u::pivot#0 = bsearch16u::$7 bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 +Alias bsearch16u::result#0 = bsearch16u::$10 bsearch16u::result#1 +Alias bsearch16u::return#1 = bsearch16u::return#4 +Alias bsearch16u::items#0 = bsearch16u::$15 +Alias bsearch16u::$2 = bsearch16u::$1 +Alias bsearch16u::return#2 = bsearch16u::$4 +Alias heap_head#0 = heap_head#33 heap_head#23 +Alias malloc::size#0 = init_squares::$0 +Alias malloc::return#2 = malloc::return#6 +Alias NUM_SQUARES#14 = NUM_SQUARES#6 +Alias heap_head#14 = heap_head#3 +Alias init_squares::sqr#2 = init_squares::sqr#3 +Alias init_squares::squares#2 = init_squares::squares#3 +Alias init_squares::i#2 = init_squares::i#3 +Alias NUM_SQUARES#13 = NUM_SQUARES#7 +Alias heap_head#15 = heap_head#32 heap_head#25 heap_head#4 +Alias SQUARES#17 = SQUARES#27 SQUARES#8 SQUARES#2 +Alias sqr::return#0 = sqr::return#4 sqr::return#1 +Alias bsearch16u::return#3 = bsearch16u::return#5 +Alias SQUARES#10 = SQUARES#11 +Alias sqrt::found#0 = sqrt::$0 +Alias sqrt::return#0 = sqrt::sq#0 sqrt::$2 sqrt::return#3 sqrt::return#1 +Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 +Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 +Alias atan2_16::$2 = atan2_16::$1 +Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 +Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 +Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 +Alias atan2_16::$7 = atan2_16::$6 +Alias atan2_16::xi#0 = atan2_16::$9 +Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 +Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 +Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 +Alias atan2_16::angle#12 = atan2_16::angle#19 +Alias atan2_16::x#17 = atan2_16::x#7 +Alias atan2_16::y#19 = atan2_16::y#7 +Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 +Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 +Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 +Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 +Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 +Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 +Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 +Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 +Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 +Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 +Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 +Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 +Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 +Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 +Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 +Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 +Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 +Alias atan2_16::angle#1 = atan2_16::angle#9 +Alias atan2_16::y#5 = atan2_16::y#6 +Alias atan2_16::angle#4 = atan2_16::$12 +Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 +Alias atan2_16::angle#11 = atan2_16::angle#15 +Alias atan2_16::angle#5 = atan2_16::$15 +Alias NUM_SQUARES#0 = NUM_SQUARES#35 NUM_SQUARES#27 NUM_SQUARES#26 NUM_SQUARES#20 +Alias SQUARES#0 = SQUARES#45 SQUARES#37 SQUARES#36 SQUARES#26 +Alias malloc::return#3 = malloc::return#7 +Alias heap_head#16 = heap_head#5 +Alias malloc::return#4 = malloc::return#8 +Alias SCREEN_DIST#0 = SCREEN_DIST#7 SCREEN_DIST#3 +Alias heap_head#17 = heap_head#6 heap_head#31 +Alias SCREEN_ANGLE#1 = SCREEN_ANGLE#3 SCREEN_ANGLE#7 +Alias SCREEN_DIST#1 = SCREEN_DIST#8 SCREEN_DIST#6 +Alias NUM_SQUARES#1 = NUM_SQUARES#9 NUM_SQUARES#22 +Alias heap_head#18 = heap_head#7 heap_head#35 +Alias SQUARES#12 = SQUARES#3 SQUARES#29 +Alias SCREEN_DIST#2 = SCREEN_DIST#4 +Alias SCREEN_ANGLE#2 = SCREEN_ANGLE#4 +Alias NUM_SQUARES#17 = NUM_SQUARES#36 +Alias heap_head#27 = heap_head#43 +Alias SQUARES#22 = SQUARES#46 +Alias main::dist#3 = main::dist#4 main::dist#5 +Alias main::angle#3 = main::angle#4 main::angle#5 +Alias main::min_dist_angle#2 = main::min_dist_angle#4 +Alias main::fill#2 = main::fill#5 main::fill#4 main::min_fill#1 +Alias main::min_fill#5 = main::min_fill#6 +Alias NUM_SQUARES#28 = NUM_SQUARES#29 NUM_SQUARES#30 +Alias heap_head#38 = heap_head#39 heap_head#40 +Alias SQUARES#38 = SQUARES#39 SQUARES#40 +Alias SCREEN_DIST#11 = SCREEN_DIST#12 SCREEN_DIST#13 +Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#11 SCREEN_ANGLE#12 +Alias main::dist_angle#0 = main::$9 main::dist_angle#1 main::min_dist_angle#1 +Alias main::min_dist_angle#3 = main::min_dist_angle#5 +Alias main::min_fill#2 = main::min_fill#3 main::min_fill#4 +Alias NUM_SQUARES#18 = NUM_SQUARES#23 NUM_SQUARES#21 +Alias heap_head#28 = heap_head#36 heap_head#34 +Alias SQUARES#23 = SQUARES#30 SQUARES#28 +Alias SCREEN_DIST#10 = SCREEN_DIST#9 SCREEN_DIST#5 +Alias SCREEN_ANGLE#6 = SCREEN_ANGLE#8 SCREEN_ANGLE#9 +Alias NUM_SQUARES#10 = NUM_SQUARES#2 +Alias heap_head#19 = heap_head#8 +Alias SQUARES#13 = SQUARES#4 +Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0 +Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1 +Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 +Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 +Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 +Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 +Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 +Alias init_angle_screen::$5 = init_angle_screen::$17 +Alias init_angle_screen::xw#0 = init_angle_screen::$6 +Alias init_angle_screen::$8 = init_angle_screen::$18 +Alias init_angle_screen::yw#0 = init_angle_screen::$9 +Alias atan2_16::return#2 = atan2_16::return#4 +Alias init_angle_screen::angle_w#0 = init_angle_screen::$10 +Alias init_angle_screen::ang_w#0 = init_angle_screen::$12 +Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 +Alias NUM_SQUARES#3 = NUM_SQUARES#42 +Alias heap_head#20 = heap_head#9 +Alias SQUARES#14 = SQUARES#5 +Alias init_dist_screen::screen_bottomline#0 = init_dist_screen::$1 +Alias init_dist_screen::y2#0 = init_dist_screen::$2 init_dist_screen::y2#1 init_dist_screen::y2#2 +Alias SQUARES#31 = SQUARES#41 SQUARES#32 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 +Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 +Alias NUM_SQUARES#39 = NUM_SQUARES#41 NUM_SQUARES#40 +Alias heap_head#46 = heap_head#49 heap_head#47 +Alias init_dist_screen::$7 = init_dist_screen::$6 +Alias init_dist_screen::$5 = init_dist_screen::$4 +Alias init_dist_screen::yd#0 = init_dist_screen::$8 +Alias sqr::return#2 = sqr::return#5 +Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8 +Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8 +Alias init_dist_screen::y#5 = init_dist_screen::y#7 +Alias NUM_SQUARES#31 = NUM_SQUARES#37 +Alias heap_head#41 = heap_head#44 +Alias SQUARES#19 = SQUARES#42 +Alias init_dist_screen::yds#0 = init_dist_screen::$9 +Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8 +Alias SQUARES#15 = SQUARES#44 SQUARES#33 SQUARES#25 SQUARES#34 SQUARES#35 SQUARES#6 +Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 +Alias NUM_SQUARES#11 = NUM_SQUARES#38 NUM_SQUARES#24 NUM_SQUARES#19 NUM_SQUARES#33 NUM_SQUARES#34 NUM_SQUARES#4 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9 +Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6 +Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13 +Alias heap_head#10 = heap_head#52 heap_head#37 heap_head#30 heap_head#50 heap_head#51 heap_head#21 +Alias init_dist_screen::x2#0 = init_dist_screen::$11 init_dist_screen::x2#1 init_dist_screen::x2#2 +Alias init_dist_screen::$16 = init_dist_screen::$15 +Alias init_dist_screen::$14 = init_dist_screen::$13 +Alias init_dist_screen::xd#0 = init_dist_screen::$17 +Alias sqr::return#3 = sqr::return#6 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 +Alias SQUARES#18 = SQUARES#20 SQUARES#43 +Alias NUM_SQUARES#15 = NUM_SQUARES#25 NUM_SQUARES#32 +Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7 +Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6 +Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4 +Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6 +Alias heap_head#42 = heap_head#45 heap_head#48 +Alias init_dist_screen::xds#0 = init_dist_screen::$18 +Alias init_dist_screen::ds#0 = init_dist_screen::$19 +Alias sqrt::return#2 = sqrt::return#4 +Alias init_dist_screen::d#0 = init_dist_screen::$20 +Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#5 +Alias NUM_SQUARES#12 = NUM_SQUARES#5 +Alias heap_head#11 = heap_head#22 +Alias SQUARES#16 = SQUARES#7 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte*) main::fill#2 = (byte*) main::fill#3 -Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#5 -Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 -Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 -Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 -Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 -Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 -Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 -Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 -Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 -Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 -Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 -Alias (byte*) main::dist#2 = (byte*) main::dist#3 -Alias (byte*) main::angle#2 = (byte*) main::angle#3 -Alias (byte) NUM_SQUARES#18 = (byte) NUM_SQUARES#28 -Alias (byte*) heap_head#28 = (byte*) heap_head#38 -Alias (word*) SQUARES#23 = (word*) SQUARES#38 -Alias (byte*) SCREEN_DIST#10 = (byte*) SCREEN_DIST#11 -Alias (byte*) SCREEN_ANGLE#10 = (byte*) SCREEN_ANGLE#6 -Alias (word*) SQUARES#19 = (word*) SQUARES#31 -Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#6 -Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#6 -Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#5 -Alias (byte) NUM_SQUARES#31 = (byte) NUM_SQUARES#39 -Alias (byte*) heap_head#41 = (byte*) heap_head#46 -Alias (word*) SQUARES#15 = (word*) SQUARES#18 -Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#3 -Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#15 -Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#3 -Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#4 -Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#3 -Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#5 -Alias (byte) init_dist_screen::y#11 = (byte) init_dist_screen::y#12 -Alias (byte*) heap_head#10 = (byte*) heap_head#42 +Alias candidate removed (phi-usage) main::fill#2 = main::fill#3 +Alias bsearch16u::key#1 = bsearch16u::key#5 +Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 +Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 +Alias atan2_16::yi#0 = atan2_16::yi#9 +Alias atan2_16::yi#10 = atan2_16::yi#5 +Alias atan2_16::xi#10 = atan2_16::xi#4 +Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 +Alias atan2_16::angle#14 = atan2_16::angle#16 +Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 +Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 +Alias atan2_16::y#4 = atan2_16::y#5 +Alias main::dist#2 = main::dist#3 +Alias main::angle#2 = main::angle#3 +Alias NUM_SQUARES#18 = NUM_SQUARES#28 +Alias heap_head#28 = heap_head#38 +Alias SQUARES#23 = SQUARES#38 +Alias SCREEN_DIST#10 = SCREEN_DIST#11 +Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#6 +Alias SQUARES#19 = SQUARES#31 +Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 +Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 +Alias init_dist_screen::y#10 = init_dist_screen::y#5 +Alias NUM_SQUARES#31 = NUM_SQUARES#39 +Alias heap_head#41 = heap_head#46 +Alias SQUARES#15 = SQUARES#18 +Alias init_dist_screen::yds#1 = init_dist_screen::yds#3 +Alias NUM_SQUARES#11 = NUM_SQUARES#15 +Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3 +Alias init_dist_screen::x#2 = init_dist_screen::x#4 +Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3 +Alias init_dist_screen::xb#2 = init_dist_screen::xb#5 +Alias init_dist_screen::y#11 = init_dist_screen::y#12 +Alias heap_head#10 = heap_head#42 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte*) main::fill#2 = (byte*) main::fill#3 +Alias candidate removed (phi-usage) main::fill#2 = main::fill#3 Identical Phi Values (byte) bsearch16u::num#7 (byte) bsearch16u::num#2 Identical Phi Values (word*) bsearch16u::items#7 (word*) bsearch16u::items#1 Identical Phi Values (word) bsearch16u::key#4 (word) bsearch16u::key#0 @@ -3086,228 +3086,228 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN_DIST (void*) SCREEN_DIST#0 0.08 (word*) SQUARES -(void*) SQUARES#1 0.03225806451612903 +(void*) SQUARES#1 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 4.0 -(byte~) atan2_16::$22 2002.0 -(byte~) atan2_16::$23 2002.0 -(signed word~) atan2_16::$7 4.0 +(signed word~) atan2_16::$2 200002.0 +(byte~) atan2_16::$22 2.00000002E8 +(byte~) atan2_16::$23 2.00000002E8 +(signed word~) atan2_16::$7 200002.0 (word) atan2_16::angle -(word) atan2_16::angle#1 3.0 -(word) atan2_16::angle#11 4.0 -(word) atan2_16::angle#12 190.66666666666666 -(word) atan2_16::angle#13 1334.6666666666667 -(word) atan2_16::angle#2 2002.0 -(word) atan2_16::angle#3 2002.0 -(word) atan2_16::angle#4 4.0 -(word) atan2_16::angle#5 4.0 -(word) atan2_16::angle#6 2004.0 +(word) atan2_16::angle#1 150001.5 +(word) atan2_16::angle#11 200002.0 +(word) atan2_16::angle#12 1.904761923809524E7 +(word) atan2_16::angle#13 1.3333333466666667E8 +(word) atan2_16::angle#2 2.00000002E8 +(word) atan2_16::angle#3 2.00000002E8 +(word) atan2_16::angle#4 200002.0 +(word) atan2_16::angle#5 200002.0 +(word) atan2_16::angle#6 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 1501.5 -(byte) atan2_16::i#2 208.54166666666669 +(byte) atan2_16::i#1 1.500000015E8 +(byte) atan2_16::i#2 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 34.99999999999999 -(word) atan2_16::return#2 202.0 +(word) atan2_16::return#0 70001.0 +(word) atan2_16::return#2 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 20002.0 -(byte) atan2_16::shift#2 8001.25 -(byte) atan2_16::shift#5 667.3333333333334 +(byte) atan2_16::shift#1 2.000000002E9 +(byte) atan2_16::shift#2 8.0000000125E8 +(byte) atan2_16::shift#5 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 2.8684210526315796 +(signed word) atan2_16::x#0 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 6667.333333333333 -(signed word) atan2_16::xd#10 1001.0 -(signed word) atan2_16::xd#2 1001.0 -(signed word) atan2_16::xd#3 7668.333333333332 -(signed word) atan2_16::xd#5 1001.0 +(signed word) atan2_16::xd#1 6.666666673333334E8 +(signed word) atan2_16::xd#10 1.00000001E8 +(signed word) atan2_16::xd#2 1.00000001E8 +(signed word) atan2_16::xd#3 7.666666683333335E8 +(signed word) atan2_16::xd#5 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 6.0 -(signed word) atan2_16::xi#1 500.5 -(signed word) atan2_16::xi#13 4.0 -(signed word) atan2_16::xi#2 500.5 -(signed word) atan2_16::xi#3 267.0666666666667 -(signed word) atan2_16::xi#8 1001.0 +(signed word) atan2_16::xi#0 300003.0 +(signed word) atan2_16::xi#1 5.00000005E7 +(signed word) atan2_16::xi#13 200002.0 +(signed word) atan2_16::xi#2 5.00000005E7 +(signed word) atan2_16::xi#3 2.6673333666666668E7 +(signed word) atan2_16::xi#8 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 2.724999999999999 +(signed word) atan2_16::y#0 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 10001.0 -(signed word) atan2_16::yd#10 2002.0 -(signed word) atan2_16::yd#2 2002.0 -(signed word) atan2_16::yd#3 4601.0 -(signed word) atan2_16::yd#5 2002.0 +(signed word) atan2_16::yd#1 1.000000001E9 +(signed word) atan2_16::yd#10 2.00000002E8 +(signed word) atan2_16::yd#2 2.00000002E8 +(signed word) atan2_16::yd#3 4.6000000099999994E8 +(signed word) atan2_16::yd#5 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 1.2000000000000002 -(signed word) atan2_16::yi#1 667.3333333333334 -(signed word) atan2_16::yi#16 4.0 -(signed word) atan2_16::yi#2 667.3333333333334 -(signed word) atan2_16::yi#3 353.4117647058823 -(signed word) atan2_16::yi#8 1001.0 +(signed word) atan2_16::yi#0 60000.600000000006 +(signed word) atan2_16::yi#1 6.6666667333333336E7 +(signed word) atan2_16::yi#16 200002.0 +(signed word) atan2_16::yi#2 6.6666667333333336E7 +(signed word) atan2_16::yi#3 3.53000004117647E7 +(signed word) atan2_16::yi#8 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 2002.0 -(word*~) bsearch16u::$2 4.0 -(byte~) bsearch16u::$6 2002.0 +(byte~) bsearch16u::$16 2.000000002E9 +(word*~) bsearch16u::$2 2000002.0 +(byte~) bsearch16u::$6 2.000000002E9 (word*) bsearch16u::items -(word*) bsearch16u::items#0 1001.0 -(word*) bsearch16u::items#1 2.0 -(word*) bsearch16u::items#2 334.5555555555556 -(word*) bsearch16u::items#8 1501.5 +(word*) bsearch16u::items#0 1.000000001E9 +(word*) bsearch16u::items#1 550001.0 +(word*) bsearch16u::items#2 3.337777785555556E8 +(word*) bsearch16u::items#8 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 0.26666666666666666 +(word) bsearch16u::key#0 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 2002.0 -(byte) bsearch16u::num#1 2002.0 -(byte) bsearch16u::num#3 556.1111111111111 -(byte) bsearch16u::num#5 3003.0 +(byte) bsearch16u::num#0 2.000000002E9 +(byte) bsearch16u::num#1 2.000000002E9 +(byte) bsearch16u::num#3 5.555555561111112E8 +(byte) bsearch16u::num#5 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 501.0 +(word*) bsearch16u::pivot#0 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 1501.5 +(signed word) bsearch16u::result#0 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 2.0 -(word*) bsearch16u::return#2 6.0 -(word*) bsearch16u::return#3 4.0 -(word*) bsearch16u::return#6 4.0 +(word*) bsearch16u::return#1 700001.0 +(word*) bsearch16u::return#2 3000003.0 +(word*) bsearch16u::return#3 200002.0 +(word*) bsearch16u::return#6 2000002.0 (byte*) heap_head -(byte*) heap_head#1 0.6000000000000001 -(byte*) heap_head#12 6.0 +(byte*) heap_head#1 1100.4 +(byte*) heap_head#12 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 202.0 -(byte~) init_angle_screen::$13 202.0 -(byte~) init_angle_screen::$14 202.0 -(byte~) init_angle_screen::$15 202.0 -(byte~) init_angle_screen::$3 202.0 -(byte~) init_angle_screen::$4 202.0 -(byte~) init_angle_screen::$7 202.0 +(word~) init_angle_screen::$11 20002.0 +(byte~) init_angle_screen::$13 20002.0 +(byte~) init_angle_screen::$14 20002.0 +(byte~) init_angle_screen::$15 20002.0 +(byte~) init_angle_screen::$3 20002.0 +(byte~) init_angle_screen::$4 20002.0 +(byte~) init_angle_screen::$7 20002.0 (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 84.16666666666666 +(byte) init_angle_screen::ang_w#0 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 202.0 +(word) init_angle_screen::angle_w#0 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 3.0 +(byte*) init_angle_screen::screen#0 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 4.0 -(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 9.04 +(byte*) init_angle_screen::screen_bottomline#0 202.0 +(byte*) init_angle_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 2.0 -(byte*) init_angle_screen::screen_topline#1 5.5 -(byte*) init_angle_screen::screen_topline#6 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 101.0 +(byte*) init_angle_screen::screen_topline#1 500.5 +(byte*) init_angle_screen::screen_topline#6 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 101.0 -(byte) init_angle_screen::x#2 28.857142857142858 +(byte) init_angle_screen::x#1 10001.0 +(byte) init_angle_screen::x#2 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 202.0 -(byte) init_angle_screen::xb#2 18.363636363636363 +(byte) init_angle_screen::xb#1 20002.0 +(byte) init_angle_screen::xb#2 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 33.666666666666664 +(word) init_angle_screen::xw#0 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 16.5 -(byte) init_angle_screen::y#5 4.730769230769231 +(byte) init_angle_screen::y#1 1501.5 +(byte) init_angle_screen::y#5 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 50.5 +(word) init_angle_screen::yw#0 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 202.0 -(byte~) init_dist_screen::$16 202.0 -(byte~) init_dist_screen::$5 22.0 -(byte~) init_dist_screen::$7 22.0 +(byte~) init_dist_screen::$14 20002.0 +(byte~) init_dist_screen::$16 20002.0 +(byte~) init_dist_screen::$5 2002.0 +(byte~) init_dist_screen::$7 2002.0 (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 126.25 +(byte) init_dist_screen::d#0 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 202.0 +(word) init_dist_screen::ds#0 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 1.5 +(byte*) init_dist_screen::screen#0 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 4.0 -(byte*) init_dist_screen::screen_bottomline#1 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 202.0 +(byte*) init_dist_screen::screen_bottomline#1 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 5.5 -(byte*) init_dist_screen::screen_topline#11 7.0625 +(byte*) init_dist_screen::screen_topline#1 500.5 +(byte*) init_dist_screen::screen_topline#11 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 101.0 -(byte) init_dist_screen::x#2 30.3 +(byte) init_dist_screen::x#1 10001.0 +(byte) init_dist_screen::x#2 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 202.0 +(byte) init_dist_screen::x2#0 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 202.0 -(byte) init_dist_screen::xb#2 19.238095238095237 +(byte) init_dist_screen::xb#1 20002.0 +(byte) init_dist_screen::xb#2 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 303.0 +(byte) init_dist_screen::xd#0 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 202.0 +(word) init_dist_screen::xds#0 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 16.5 -(byte) init_dist_screen::y#10 0.9705882352941178 +(byte) init_dist_screen::y#1 1501.5 +(byte) init_dist_screen::y#10 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 22.0 +(byte) init_dist_screen::y2#0 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 33.0 +(byte) init_dist_screen::yd#0 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 4.869565217391305 +(word) init_dist_screen::yds#0 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 22.0 -(byte~) init_squares::$4 22.0 +(byte~) init_squares::$3 20002.0 +(byte~) init_squares::$4 20002.0 (byte) init_squares::i -(byte) init_squares::i#1 22.0 -(byte) init_squares::i#2 6.285714285714286 +(byte) init_squares::i#1 20002.0 +(byte) init_squares::i#2 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 11.0 -(word) init_squares::sqr#2 5.5 +(word) init_squares::sqr#1 10001.0 +(word) init_squares::sqr#2 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 4.0 -(word*) init_squares::squares#1 4.4 -(word*) init_squares::squares#2 11.666666666666666 +(word*) init_squares::squares#0 2002.0 +(word*) init_squares::squares#1 4000.4 +(word*) init_squares::squares#2 10334.666666666666 (void()) main() (byte*) main::angle -(byte*) main::angle#0 22.0 -(byte*) main::angle#1 50.5 -(byte*) main::angle#2 34.888888888888886 +(byte*) main::angle#0 202.0 +(byte*) main::angle#1 500.5 +(byte*) main::angle#2 344.8888888888889 (byte*) main::dist -(byte*) main::dist#0 11.0 -(byte*) main::dist#1 40.4 -(byte*) main::dist#2 39.25 +(byte*) main::dist#0 101.0 +(byte*) main::dist#1 400.4 +(byte*) main::dist#2 388.0 (word) main::dist_angle -(word) main::dist_angle#0 101.0 +(word) main::dist_angle#0 1001.0 (byte*) main::fill -(byte*) main::fill#1 101.0 -(byte*) main::fill#2 40.4 +(byte*) main::fill#1 1001.0 +(byte*) main::fill#2 400.4 (word) main::min_dist_angle -(word) main::min_dist_angle#2 101.0 -(word) main::min_dist_angle#3 83.0 -(word) main::min_dist_angle#6 202.0 -(word) main::min_dist_angle#7 202.0 -(word) main::min_dist_angle#8 202.0 +(word) main::min_dist_angle#2 1001.0 +(word) main::min_dist_angle#3 821.0 +(word) main::min_dist_angle#6 2002.0 +(word) main::min_dist_angle#7 2002.0 +(word) main::min_dist_angle#8 2002.0 (byte*) main::min_fill -(byte*) main::min_fill#10 202.0 -(byte*) main::min_fill#2 59.285714285714285 -(byte*) main::min_fill#5 50.5 +(byte*) main::min_fill#10 2002.0 +(byte*) main::min_fill#2 586.4285714285714 +(byte*) main::min_fill#5 500.5 (void*()) malloc((word) malloc::size) (byte*) malloc::mem -(byte*) malloc::mem#0 0.6666666666666666 +(byte*) malloc::mem#0 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 2.0 +(word) malloc::size#3 10001.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 4.0 +(byte~) sqr::$0 200002.0 (word) sqr::return -(word) sqr::return#0 28.5 -(word) sqr::return#2 22.0 -(word) sqr::return#3 202.0 +(word) sqr::return#0 27750.75 +(word) sqr::return#2 2002.0 +(word) sqr::return#3 20002.0 (byte) sqr::val -(byte) sqr::val#0 22.0 -(byte) sqr::val#1 202.0 -(byte) sqr::val#2 114.0 +(byte) sqr::val#0 2002.0 +(byte) sqr::val#1 20002.0 +(byte) sqr::val#2 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 2.0 -(word~) sqrt::$3 4.0 +(word~) sqrt::$1 100001.0 +(word~) sqrt::$3 200002.0 (word*) sqrt::found -(word*) sqrt::found#0 4.0 +(word*) sqrt::found#0 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 34.33333333333333 -(byte) sqrt::return#2 202.0 +(byte) sqrt::return#0 36667.33333333333 +(byte) sqrt::return#2 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 103.0 +(word) sqrt::val#0 110002.0 Initial phi equivalence classes [ main::fill#2 main::fill#1 ] @@ -4975,350 +4975,347 @@ CORDIC_ATAN2_ANGLES_16: REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ) always clobbers reg byte a -Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ) always clobbers reg byte a -Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ) always clobbers reg byte a reg byte y -Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a reg byte y -Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a -Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ) always clobbers reg byte a -Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ) always clobbers reg byte a -Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a reg byte y -Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ) always clobbers reg byte a -Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ) always clobbers reg byte a -Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ) always clobbers reg byte a -Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a +Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a +Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y +Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a +Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a +Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a +Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y +Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [52] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y +Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:80 [ init_angle_screen::ang_w#0 ] -Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a +Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:80 [ init_angle_screen::ang_w#0 ] -Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a +Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a +Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] -Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a +Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y +Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] -Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a +Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y +Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:46 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] -Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y +Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:48 [ init_squares::i#2 init_squares::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:48 [ init_squares::i#2 init_squares::i#1 ] -Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ) always clobbers reg byte a -Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ) always clobbers reg byte a -Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ) always clobbers reg byte a reg byte y -Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a reg byte y -Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a -Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ) always clobbers reg byte a -Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ) always clobbers reg byte a -Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a reg byte y -Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ) always clobbers reg byte a -Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ) always clobbers reg byte a -Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ) always clobbers reg byte a -Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [52] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [137] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y +Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a +Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a +Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y +Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a +Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a +Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [137] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:101 [ init_dist_screen::d#0 ] -Statement [138] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [139] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [140] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a -Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a -Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a -Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a -Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a -Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ) always clobbers reg byte a -Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ) always clobbers reg byte a -Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ) always clobbers reg byte a reg byte y -Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a reg byte y -Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ) always clobbers reg byte a -Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ) always clobbers reg byte a -Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ) always clobbers reg byte a -Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ) always clobbers reg byte a -Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a reg byte y -Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ) always clobbers reg byte a -Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ) always clobbers reg byte a -Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ) always clobbers reg byte a -Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a -Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a -Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a -Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a -Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a -Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ) always clobbers reg byte a -Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y -Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ) always clobbers reg byte a -Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y -Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a -Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a -Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a -Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ) always clobbers reg byte a -Statement [52] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a -Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y -Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a -Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a -Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y -Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ) always clobbers reg byte a -Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y -Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a -Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a -Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a -Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a -Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a -Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a -Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a -Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a -Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a -Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a -Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a -Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a -Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a -Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a -Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a -Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a -Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ) always clobbers reg byte a -Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a -Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ) always clobbers reg byte a -Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a -Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a -Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a -Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a -Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a -Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a -Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a -Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ) always clobbers reg byte a -Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a -Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [137] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [138] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [139] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y -Statement [140] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y -Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a -Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a -Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a -Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a -Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a -Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y -Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a -Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a -Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a -Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y -Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a -Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a -Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a -Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a -Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a -Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y -Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a -Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a -Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ) always clobbers reg byte a reg byte y -Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a -Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a -Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a -Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a +Statement [138] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [139] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [140] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] ( [ SCREEN_DIST#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] { } ) always clobbers reg byte a +Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a +Statement [13] (byte*) main::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a +Statement [16] if(*((byte*) main::fill#2)==(const byte) FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (word) main::dist_angle#0 ← *((byte*) main::dist#2) w= *((byte*) main::angle#2) [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y +Statement [18] if((word) main::dist_angle#0>=(word) main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a +Statement [19] (byte*) main::min_fill#10 ← (byte*) main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) main::fill#1<(const byte*) SCREEN_FILL+(word) $3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a +Statement [25] if((word) main::min_dist_angle#3!=(word) $ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [27] *((byte*) main::min_fill#2) ← (const byte) FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y +Statement [28] (word) main::min_dist_angle#6 ← (word) main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a +Statement [29] (word) main::min_dist_angle#8 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a +Statement [30] (word) main::min_dist_angle#7 ← (word) main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a +Statement [31] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [32] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [36] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [37] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [41] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [42] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [43] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [44] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [45] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [46] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [47] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [49] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [50] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [51] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [53] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [54] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] { } ) always clobbers reg byte a +Statement [55] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [56] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] { } ) always clobbers reg byte a +Statement [57] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [58] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$15 ] { } ) always clobbers reg byte a +Statement [59] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [62] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [63] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [65] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [66] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [69] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [71] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [72] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [73] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [75] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [76] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [80] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [81] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [85] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [86] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [88] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [89] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [90] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [91] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [92] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [96] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [97] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [98] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [99] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [100] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [101] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [103] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [104] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:48 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [107] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [109] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [111] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [115] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a +Statement [116] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [119] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [120] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [124] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [126] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [130] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [131] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [132] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [133] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [137] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [138] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [139] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [140] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] { } ) always clobbers reg byte y +Statement [145] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [146] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [148] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [149] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [150] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [151] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [152] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:134 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a +Statement [157] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [158] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [162] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [163] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [165] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y +Statement [166] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [167] (word*) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [168] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [169] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:134::bsearch16u:147 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a +Statement [174] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#1 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a +Statement [175] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:114 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#1 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:10::sqr:129 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y +Statement [179] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] { } ) always clobbers reg byte a +Statement [180] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] { } ) always clobbers reg byte a +Statement [184] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y +Statement [185] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [186] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a +Statement [188] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a +Statement [191] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ malloc::mem#0 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a +Statement [192] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] { } malloc:4 [ malloc::mem#0 heap_head#1 ] { } main:7::init_dist_screen:10::init_squares:106::malloc:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] { { heap_head#1 = heap_head#12 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::fill#2 main::fill#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ] : zp[2]:6 , @@ -5400,31 +5397,31 @@ Potential registers zp[1]:125 [ init_squares::$4 ] : zp[1]:125 , reg byte a , re Potential registers zp[2]:126 [ malloc::mem#0 ] : zp[2]:126 , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 28,670.58: zp[1]:30 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp[2]:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp[2]:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp[2]:26 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp[1]:84 [ atan2_16::$23 ] 2,002: zp[1]:85 [ atan2_16::$22 ] 1,710.04: zp[1]:25 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp[2]:74 [ atan2_16::return#2 ] 50: zp[2]:28 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp[2]:70 [ atan2_16::x#0 ] 2.72: zp[2]:72 [ atan2_16::y#0 ] -Uplift Scope [bsearch16u] 7,563.11: zp[1]:46 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,855.06: zp[2]:44 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,002: zp[1]:113 [ bsearch16u::$6 ] 2,002: zp[1]:114 [ bsearch16u::$16 ] 1,501.5: zp[2]:117 [ bsearch16u::result#0 ] 501: zp[2]:115 [ bsearch16u::pivot#0 ] 4: zp[2]:104 [ bsearch16u::return#3 ] 0.27: zp[2]:102 [ bsearch16u::key#0 ] -Uplift Scope [init_angle_screen] 220.36: zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 202: zp[1]:63 [ init_angle_screen::$3 ] 202: zp[1]:64 [ init_angle_screen::$4 ] 202: zp[1]:67 [ init_angle_screen::$7 ] 202: zp[2]:76 [ init_angle_screen::angle_w#0 ] 202: zp[2]:78 [ init_angle_screen::$11 ] 202: zp[1]:81 [ init_angle_screen::$13 ] 202: zp[1]:82 [ init_angle_screen::$14 ] 202: zp[1]:83 [ init_angle_screen::$15 ] 129.86: zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 84.17: zp[1]:80 [ init_angle_screen::ang_w#0 ] 50.5: zp[2]:68 [ init_angle_screen::yw#0 ] 33.67: zp[2]:65 [ init_angle_screen::xw#0 ] 21.23: zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 20.37: zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 16.92: zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 3: zp[2]:61 [ init_angle_screen::screen#0 ] -Uplift Scope [init_dist_screen] 707: zp[1]:43 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 221.24: zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 202: zp[1]:91 [ init_dist_screen::x2#0 ] 202: zp[2]:94 [ init_dist_screen::xds#0 ] 202: zp[2]:96 [ init_dist_screen::ds#0 ] 131.3: zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 126.25: zp[1]:101 [ init_dist_screen::d#0 ] 77: zp[1]:40 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 22: zp[1]:86 [ init_dist_screen::y2#0 ] 18.18: zp[2]:38 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 17.47: zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 14.06: zp[2]:36 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 4.87: zp[2]:89 [ init_dist_screen::yds#0 ] -Uplift Scope [main] 588: zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] 311.79: zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] 303: zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ] 141.4: zp[2]:2 [ main::fill#2 main::fill#1 ] 107.39: zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ] 90.65: zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 ] -Uplift Scope [sqr] 338: zp[1]:47 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 202: zp[2]:92 [ sqr::return#3 ] 28.5: zp[2]:120 [ sqr::return#0 ] 22: zp[2]:87 [ sqr::return#2 ] 4: zp[1]:119 [ sqr::$0 ] -Uplift Scope [sqrt] 202: zp[1]:100 [ sqrt::return#2 ] 103: zp[2]:98 [ sqrt::val#0 ] 34.33: zp[1]:112 [ sqrt::return#0 ] 4: zp[2]:106 [ sqrt::found#0 ] 4: zp[2]:108 [ sqrt::$3 ] 2: zp[2]:110 [ sqrt::$1 ] -Uplift Scope [init_squares] 28.29: zp[1]:48 [ init_squares::i#2 init_squares::i#1 ] 22: zp[1]:124 [ init_squares::$3 ] 22: zp[1]:125 [ init_squares::$4 ] 20.07: zp[2]:51 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 16.5: zp[2]:49 [ init_squares::sqr#2 init_squares::sqr#1 ] -Uplift Scope [] 6.6: zp[2]:53 [ heap_head#12 heap_head#1 ] 0.09: zp[2]:59 [ SCREEN_ANGLE#0 ] 0.08: zp[2]:57 [ SCREEN_DIST#0 ] 0.03: zp[2]:122 [ SQUARES#1 ] -Uplift Scope [malloc] 2: zp[2]:55 [ malloc::size#3 ] 0.67: zp[2]:126 [ malloc::mem#0 ] +Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:46 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:44 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,000,000,002: zp[1]:113 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:114 [ bsearch16u::$16 ] 1,500,000,001.5: zp[2]:117 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:115 [ bsearch16u::pivot#0 ] 200,002: zp[2]:104 [ bsearch16u::return#3 ] 73,333.47: zp[2]:102 [ bsearch16u::key#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:30 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:26 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:84 [ atan2_16::$23 ] 200,000,002: zp[1]:85 [ atan2_16::$22 ] 170,833,335.04: zp[1]:25 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:28 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 20,002: zp[2]:74 [ atan2_16::return#2 ] 10,789.61: zp[2]:70 [ atan2_16::x#0 ] 10,250.12: zp[2]:72 [ atan2_16::y#0 ] +Uplift Scope [sqrt] 200,002: zp[2]:106 [ sqrt::found#0 ] 200,002: zp[2]:108 [ sqrt::$3 ] 110,002: zp[2]:98 [ sqrt::val#0 ] 100,001: zp[2]:110 [ sqrt::$1 ] 36,667.33: zp[1]:112 [ sqrt::return#0 ] 20,002: zp[1]:100 [ sqrt::return#2 ] +Uplift Scope [sqr] 200,002: zp[1]:119 [ sqr::$0 ] 133,007: zp[1]:47 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:120 [ sqr::return#0 ] 20,002: zp[2]:92 [ sqr::return#3 ] 2,002: zp[2]:87 [ sqr::return#2 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:63 [ init_angle_screen::$3 ] 20,002: zp[1]:64 [ init_angle_screen::$4 ] 20,002: zp[1]:67 [ init_angle_screen::$7 ] 20,002: zp[2]:76 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:78 [ init_angle_screen::$11 ] 20,002: zp[1]:81 [ init_angle_screen::$13 ] 20,002: zp[1]:82 [ init_angle_screen::$14 ] 20,002: zp[1]:83 [ init_angle_screen::$15 ] 12,858.43: zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:80 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:68 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:65 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:61 [ init_angle_screen::screen#0 ] +Uplift Scope [init_dist_screen] 70,007: zp[1]:43 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:91 [ init_dist_screen::x2#0 ] 20,002: zp[2]:94 [ init_dist_screen::xds#0 ] 20,002: zp[2]:96 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:101 [ init_dist_screen::d#0 ] 7,007: zp[1]:40 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:86 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:38 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:36 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:89 [ init_dist_screen::yds#0 ] +Uplift Scope [init_squares] 25,716.86: zp[1]:48 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:124 [ init_squares::$3 ] 20,002: zp[1]:125 [ init_squares::$4 ] 16,337.07: zp[2]:51 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:49 [ init_squares::sqr#2 init_squares::sqr#1 ] +Uplift Scope [main] 5,826: zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] 3,088.93: zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] 3,003: zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ] 1,401.4: zp[2]:2 [ main::fill#2 main::fill#1 ] 1,047.39: zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ] 889.4: zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 ] +Uplift Scope [malloc] 10,001: zp[2]:55 [ malloc::size#3 ] 3,333.67: zp[2]:126 [ malloc::mem#0 ] +Uplift Scope [] 12,104.4: zp[2]:53 [ heap_head#12 heap_head#1 ] 16.15: zp[2]:122 [ SQUARES#1 ] 0.09: zp[2]:59 [ SCREEN_ANGLE#0 ] 0.08: zp[2]:57 [ SCREEN_DIST#0 ] Uplift Scope [RADIX] -Uplifting [atan2_16] best 1247286 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:26 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:74 [ atan2_16::return#2 ] zp[2]:28 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:70 [ atan2_16::x#0 ] zp[2]:72 [ atan2_16::y#0 ] +Uplifting [bsearch16u] best 1342286 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:44 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:117 [ bsearch16u::result#0 ] zp[2]:115 [ bsearch16u::pivot#0 ] zp[2]:104 [ bsearch16u::return#3 ] zp[2]:102 [ bsearch16u::key#0 ] +Uplifting [atan2_16] best 1228286 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:26 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:28 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp[2]:74 [ atan2_16::return#2 ] zp[2]:70 [ atan2_16::x#0 ] zp[2]:72 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [bsearch16u] best 1228286 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:44 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp[2]:117 [ bsearch16u::result#0 ] zp[2]:115 [ bsearch16u::pivot#0 ] zp[2]:104 [ bsearch16u::return#3 ] zp[2]:102 [ bsearch16u::key#0 ] -Uplifting [init_angle_screen] best 1226686 combination zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:76 [ init_angle_screen::angle_w#0 ] zp[2]:78 [ init_angle_screen::$11 ] zp[1]:81 [ init_angle_screen::$13 ] zp[1]:82 [ init_angle_screen::$14 ] zp[1]:83 [ init_angle_screen::$15 ] zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:80 [ init_angle_screen::ang_w#0 ] zp[2]:68 [ init_angle_screen::yw#0 ] zp[2]:65 [ init_angle_screen::xw#0 ] zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:61 [ init_angle_screen::screen#0 ] +Uplifting [sqrt] best 1227383 combination zp[2]:106 [ sqrt::found#0 ] zp[2]:108 [ sqrt::$3 ] zp[2]:98 [ sqrt::val#0 ] zp[2]:110 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] +Uplifting [sqr] best 1227046 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:120 [ sqr::return#0 ] zp[2]:92 [ sqr::return#3 ] zp[2]:87 [ sqr::return#2 ] +Uplifting [init_angle_screen] best 1225446 combination zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$7 ] zp[2]:76 [ init_angle_screen::angle_w#0 ] zp[2]:78 [ init_angle_screen::$11 ] zp[1]:81 [ init_angle_screen::$13 ] zp[1]:82 [ init_angle_screen::$14 ] zp[1]:83 [ init_angle_screen::$15 ] zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:80 [ init_angle_screen::ang_w#0 ] zp[2]:68 [ init_angle_screen::yw#0 ] zp[2]:65 [ init_angle_screen::xw#0 ] zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:61 [ init_angle_screen::screen#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [init_dist_screen] best 1223486 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:94 [ init_dist_screen::xds#0 ] zp[2]:96 [ init_dist_screen::ds#0 ] zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:40 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:86 [ init_dist_screen::y2#0 ] zp[2]:38 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:36 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:89 [ init_dist_screen::yds#0 ] +Uplifting [init_dist_screen] best 1222246 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:94 [ init_dist_screen::xds#0 ] zp[2]:96 [ init_dist_screen::ds#0 ] zp[1]:41 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:40 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:86 [ init_dist_screen::y2#0 ] zp[1]:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:38 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:36 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:89 [ init_dist_screen::yds#0 ] Limited combination testing to 100 combinations of 6144 possible. -Uplifting [main] best 1223486 combination zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ] zp[2]:2 [ main::fill#2 main::fill#1 ] zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ] zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 ] -Uplifting [sqr] best 1223149 combination reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:92 [ sqr::return#3 ] zp[2]:120 [ sqr::return#0 ] zp[2]:87 [ sqr::return#2 ] reg byte a [ sqr::$0 ] -Uplifting [sqrt] best 1222246 combination reg byte a [ sqrt::return#2 ] zp[2]:98 [ sqrt::val#0 ] reg byte a [ sqrt::return#0 ] zp[2]:106 [ sqrt::found#0 ] zp[2]:108 [ sqrt::$3 ] zp[2]:110 [ sqrt::$1 ] Uplifting [init_squares] best 1222046 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:51 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:49 [ init_squares::sqr#2 init_squares::sqr#1 ] -Uplifting [] best 1222046 combination zp[2]:53 [ heap_head#12 heap_head#1 ] zp[2]:59 [ SCREEN_ANGLE#0 ] zp[2]:57 [ SCREEN_DIST#0 ] zp[2]:122 [ SQUARES#1 ] +Uplifting [main] best 1222046 combination zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ] zp[2]:2 [ main::fill#2 main::fill#1 ] zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ] zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 ] Uplifting [malloc] best 1222046 combination zp[2]:55 [ malloc::size#3 ] zp[2]:126 [ malloc::mem#0 ] +Uplifting [] best 1222046 combination zp[2]:53 [ heap_head#12 heap_head#1 ] zp[2]:122 [ SQUARES#1 ] zp[2]:59 [ SCREEN_ANGLE#0 ] zp[2]:57 [ SCREEN_DIST#0 ] Uplifting [RADIX] best 1222046 combination Attempting to uplift remaining variables inzp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] Uplifting [init_dist_screen] best 1222046 combination zp[1]:42 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] @@ -7026,12 +7023,12 @@ FINAL SYMBOL TABLE (const byte*) SCREEN_FILL = (byte*) 1024 (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:23 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:23 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:17 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:36 4.0 +(signed word~) atan2_16::$2 zp[2]:17 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:36 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -7055,59 +7052,59 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:19 3.0 -(word) atan2_16::angle#11 angle zp[2]:19 4.0 -(word) atan2_16::angle#12 angle zp[2]:19 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:19 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:19 2002.0 -(word) atan2_16::angle#3 angle zp[2]:19 2002.0 -(word) atan2_16::angle#4 angle zp[2]:19 4.0 -(word) atan2_16::angle#5 angle zp[2]:19 4.0 -(word) atan2_16::angle#6 angle zp[2]:19 2004.0 +(word) atan2_16::angle#1 angle zp[2]:19 150001.5 +(word) atan2_16::angle#11 angle zp[2]:19 200002.0 +(word) atan2_16::angle#12 angle zp[2]:19 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:19 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:19 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:19 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:19 200002.0 +(word) atan2_16::angle#5 angle zp[2]:19 200002.0 +(word) atan2_16::angle#6 angle zp[2]:19 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:19 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:19 202.0 +(word) atan2_16::return#0 return zp[2]:19 70001.0 +(word) atan2_16::return#2 return zp[2]:19 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:32 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:32 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:30 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:30 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:30 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:30 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:30 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:30 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:30 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:30 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:30 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:30 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:36 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:36 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:36 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:36 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:36 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:36 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:36 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:36 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:36 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:36 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:36 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:36 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:34 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:34 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:23 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:23 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:23 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:23 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:23 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:23 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:23 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:23 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:23 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:23 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:17 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:17 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:17 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:17 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:17 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:17 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:17 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:17 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:17 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:17 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -7119,37 +7116,37 @@ FINAL SYMBOL TABLE (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:17 1001.0 -(word*) bsearch16u::items#1 items zp[2]:17 2.0 -(word*) bsearch16u::items#2 items zp[2]:17 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:17 1501.5 +(word*) bsearch16u::items#0 items zp[2]:17 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:17 550001.0 +(word*) bsearch16u::items#2 items zp[2]:17 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:17 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:32 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:32 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:34 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:34 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:36 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:36 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:17 2.0 -(word*) bsearch16u::return#2 return zp[2]:17 6.0 -(word*) bsearch16u::return#3 return zp[2]:17 4.0 -(word*) bsearch16u::return#6 return zp[2]:17 4.0 +(word*) bsearch16u::return#1 return zp[2]:17 700001.0 +(word*) bsearch16u::return#2 return zp[2]:17 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:17 200002.0 +(word*) bsearch16u::return#6 return zp[2]:17 2000002.0 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:21 0.6000000000000001 -(byte*) heap_head#12 heap_head zp[2]:21 6.0 +(byte*) heap_head#1 heap_head zp[2]:21 1100.4 +(byte*) heap_head#12 heap_head zp[2]:21 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:19 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:19 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -7157,37 +7154,37 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:19 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:19 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:21 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:21 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:21 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:21 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:21 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:21 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:21 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:21 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:13 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:13 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:13 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:13 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:13 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:13 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:15 101.0 -(byte) init_angle_screen::x#2 x zp[1]:15 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:15 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:15 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:16 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:16 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:16 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:16 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:32 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:32 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:12 16.5 -(byte) init_angle_screen::y#5 y zp[1]:12 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:12 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:12 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:34 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:34 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -7204,56 +7201,56 @@ FINAL SYMBOL TABLE (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:32 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:32 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:13 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:13 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:21 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:21 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:21 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:21 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:21 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:21 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:13 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:13 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:13 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:13 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:15 101.0 -(byte) init_dist_screen::x#2 x zp[1]:15 30.3 +(byte) init_dist_screen::x#1 x zp[1]:15 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:15 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:16 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:16 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:16 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:16 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:32 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:32 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:12 16.5 -(byte) init_dist_screen::y#10 y zp[1]:12 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:12 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:12 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:30 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:30 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:36 11.0 -(word) init_squares::sqr#2 sqr zp[2]:36 5.5 +(word) init_squares::sqr#1 sqr zp[2]:36 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:36 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:19 4.0 -(word*) init_squares::squares#1 squares zp[2]:19 4.4 -(word*) init_squares::squares#2 squares zp[2]:19 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:19 2002.0 +(word*) init_squares::squares#1 squares zp[2]:19 4000.4 +(word*) init_squares::squares#2 squares zp[2]:19 10334.666666666666 (void()) main() (label) main::@1 (label) main::@10 @@ -7268,59 +7265,59 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte*) main::angle -(byte*) main::angle#0 angle zp[2]:4 22.0 -(byte*) main::angle#1 angle zp[2]:4 50.5 -(byte*) main::angle#2 angle zp[2]:4 34.888888888888886 +(byte*) main::angle#0 angle zp[2]:4 202.0 +(byte*) main::angle#1 angle zp[2]:4 500.5 +(byte*) main::angle#2 angle zp[2]:4 344.8888888888889 (byte*) main::dist -(byte*) main::dist#0 dist zp[2]:2 11.0 -(byte*) main::dist#1 dist zp[2]:2 40.4 -(byte*) main::dist#2 dist zp[2]:2 39.25 +(byte*) main::dist#0 dist zp[2]:2 101.0 +(byte*) main::dist#1 dist zp[2]:2 400.4 +(byte*) main::dist#2 dist zp[2]:2 388.0 (word) main::dist_angle -(word) main::dist_angle#0 dist_angle zp[2]:10 101.0 +(word) main::dist_angle#0 dist_angle zp[2]:10 1001.0 (byte*) main::fill -(byte*) main::fill#1 fill zp[2]:21 101.0 -(byte*) main::fill#2 fill zp[2]:21 40.4 +(byte*) main::fill#1 fill zp[2]:21 1001.0 +(byte*) main::fill#2 fill zp[2]:21 400.4 (word) main::min_dist_angle -(word) main::min_dist_angle#2 min_dist_angle zp[2]:6 101.0 -(word) main::min_dist_angle#3 min_dist_angle_1 zp[2]:10 83.0 -(word) main::min_dist_angle#6 min_dist_angle zp[2]:6 202.0 -(word) main::min_dist_angle#7 min_dist_angle_1 zp[2]:10 202.0 -(word) main::min_dist_angle#8 min_dist_angle_1 zp[2]:10 202.0 +(word) main::min_dist_angle#2 min_dist_angle zp[2]:6 1001.0 +(word) main::min_dist_angle#3 min_dist_angle_1 zp[2]:10 821.0 +(word) main::min_dist_angle#6 min_dist_angle zp[2]:6 2002.0 +(word) main::min_dist_angle#7 min_dist_angle_1 zp[2]:10 2002.0 +(word) main::min_dist_angle#8 min_dist_angle_1 zp[2]:10 2002.0 (byte*) main::min_fill -(byte*) main::min_fill#10 min_fill zp[2]:8 202.0 -(byte*) main::min_fill#2 min_fill zp[2]:8 59.285714285714285 -(byte*) main::min_fill#5 min_fill zp[2]:8 50.5 +(byte*) main::min_fill#10 min_fill zp[2]:8 2002.0 +(byte*) main::min_fill#2 min_fill zp[2]:8 586.4285714285714 +(byte*) main::min_fill#5 min_fill zp[2]:8 500.5 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:23 0.6666666666666666 +(byte*) malloc::mem#0 mem zp[2]:23 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 size zp[2]:23 2.0 +(word) malloc::size#3 size zp[2]:23 10001.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:32 28.5 -(word) sqr::return#2 return_1 zp[2]:30 22.0 -(word) sqr::return#3 return zp[2]:32 202.0 +(word) sqr::return#0 return zp[2]:32 27750.75 +(word) sqr::return#2 return_1 zp[2]:30 2002.0 +(word) sqr::return#3 return zp[2]:32 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:17 2.0 -(word~) sqrt::$3 zp[2]:17 4.0 +(word~) sqrt::$1 zp[2]:17 100001.0 +(word~) sqrt::$3 zp[2]:17 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:17 4.0 +(word*) sqrt::found#0 found zp[2]:17 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:32 103.0 +(word) sqrt::val#0 val zp[2]:32 110002.0 zp[2]:2 [ main::dist#2 main::dist#0 main::dist#1 ] zp[2]:4 [ main::angle#2 main::angle#0 main::angle#1 ] diff --git a/src/test/ref/screen-show-spiral.sym b/src/test/ref/screen-show-spiral.sym index 47ebf05ad..a9f828171 100644 --- a/src/test/ref/screen-show-spiral.sym +++ b/src/test/ref/screen-show-spiral.sym @@ -23,12 +23,12 @@ (const byte*) SCREEN_FILL = (byte*) 1024 (const byte) SIZEOF_WORD = (byte) 2 (word*) SQUARES -(void*) SQUARES#1 SQUARES zp[2]:23 0.03225806451612903 +(void*) SQUARES#1 SQUARES zp[2]:23 16.14516129032258 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) -(signed word~) atan2_16::$2 zp[2]:17 4.0 -(byte~) atan2_16::$22 reg byte a 2002.0 -(byte~) atan2_16::$23 reg byte a 2002.0 -(signed word~) atan2_16::$7 zp[2]:36 4.0 +(signed word~) atan2_16::$2 zp[2]:17 200002.0 +(byte~) atan2_16::$22 reg byte a 2.00000002E8 +(byte~) atan2_16::$23 reg byte a 2.00000002E8 +(signed word~) atan2_16::$7 zp[2]:36 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -52,59 +52,59 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:19 3.0 -(word) atan2_16::angle#11 angle zp[2]:19 4.0 -(word) atan2_16::angle#12 angle zp[2]:19 190.66666666666666 -(word) atan2_16::angle#13 angle zp[2]:19 1334.6666666666667 -(word) atan2_16::angle#2 angle zp[2]:19 2002.0 -(word) atan2_16::angle#3 angle zp[2]:19 2002.0 -(word) atan2_16::angle#4 angle zp[2]:19 4.0 -(word) atan2_16::angle#5 angle zp[2]:19 4.0 -(word) atan2_16::angle#6 angle zp[2]:19 2004.0 +(word) atan2_16::angle#1 angle zp[2]:19 150001.5 +(word) atan2_16::angle#11 angle zp[2]:19 200002.0 +(word) atan2_16::angle#12 angle zp[2]:19 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:19 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:19 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:19 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:19 200002.0 +(word) atan2_16::angle#5 angle zp[2]:19 200002.0 +(word) atan2_16::angle#6 angle zp[2]:19 2.00100003E8 (byte) atan2_16::i -(byte) atan2_16::i#1 reg byte x 1501.5 -(byte) atan2_16::i#2 reg byte x 208.54166666666669 +(byte) atan2_16::i#1 reg byte x 1.500000015E8 +(byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:19 34.99999999999999 -(word) atan2_16::return#2 return zp[2]:19 202.0 +(word) atan2_16::return#0 return zp[2]:19 70001.0 +(word) atan2_16::return#2 return zp[2]:19 20002.0 (byte) atan2_16::shift -(byte) atan2_16::shift#1 reg byte y 20002.0 -(byte) atan2_16::shift#2 reg byte y 8001.25 -(byte) atan2_16::shift#5 reg byte y 667.3333333333334 +(byte) atan2_16::shift#1 reg byte y 2.000000002E9 +(byte) atan2_16::shift#2 reg byte y 8.0000000125E8 +(byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:32 2.8684210526315796 +(signed word) atan2_16::x#0 x zp[2]:32 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:30 6667.333333333333 -(signed word) atan2_16::xd#10 xd zp[2]:30 1001.0 -(signed word) atan2_16::xd#2 xd zp[2]:30 1001.0 -(signed word) atan2_16::xd#3 xd zp[2]:30 7668.333333333332 -(signed word) atan2_16::xd#5 xd zp[2]:30 1001.0 +(signed word) atan2_16::xd#1 xd zp[2]:30 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:30 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:30 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:30 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:30 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:36 6.0 -(signed word) atan2_16::xi#1 xi zp[2]:36 500.5 -(signed word) atan2_16::xi#13 xi zp[2]:36 4.0 -(signed word) atan2_16::xi#2 xi zp[2]:36 500.5 -(signed word) atan2_16::xi#3 xi zp[2]:36 267.0666666666667 -(signed word) atan2_16::xi#8 xi zp[2]:36 1001.0 +(signed word) atan2_16::xi#0 xi zp[2]:36 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:36 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:36 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:36 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:36 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:36 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:34 2.724999999999999 +(signed word) atan2_16::y#0 y zp[2]:34 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:23 10001.0 -(signed word) atan2_16::yd#10 yd zp[2]:23 2002.0 -(signed word) atan2_16::yd#2 yd zp[2]:23 2002.0 -(signed word) atan2_16::yd#3 yd zp[2]:23 4601.0 -(signed word) atan2_16::yd#5 yd zp[2]:23 2002.0 +(signed word) atan2_16::yd#1 yd zp[2]:23 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:23 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:23 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:23 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:23 2.00000002E8 (signed word) atan2_16::yi -(signed word) atan2_16::yi#0 yi zp[2]:17 1.2000000000000002 -(signed word) atan2_16::yi#1 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#16 yi zp[2]:17 4.0 -(signed word) atan2_16::yi#2 yi zp[2]:17 667.3333333333334 -(signed word) atan2_16::yi#3 yi zp[2]:17 353.4117647058823 -(signed word) atan2_16::yi#8 yi zp[2]:17 1001.0 +(signed word) atan2_16::yi#0 yi zp[2]:17 60000.600000000006 +(signed word) atan2_16::yi#1 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#16 yi zp[2]:17 200002.0 +(signed word) atan2_16::yi#2 yi zp[2]:17 6.6666667333333336E7 +(signed word) atan2_16::yi#3 yi zp[2]:17 3.53000004117647E7 +(signed word) atan2_16::yi#8 yi zp[2]:17 1.00000001E8 (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) -(byte~) bsearch16u::$16 reg byte a 2002.0 -(word*~) bsearch16u::$2 zp[2]:17 4.0 -(byte~) bsearch16u::$6 reg byte a 2002.0 +(byte~) bsearch16u::$16 reg byte a 2.000000002E9 +(word*~) bsearch16u::$2 zp[2]:17 2000002.0 +(byte~) bsearch16u::$6 reg byte a 2.000000002E9 (label) bsearch16u::@1 (label) bsearch16u::@2 (label) bsearch16u::@3 @@ -116,37 +116,37 @@ (label) bsearch16u::@9 (label) bsearch16u::@return (word*) bsearch16u::items -(word*) bsearch16u::items#0 items zp[2]:17 1001.0 -(word*) bsearch16u::items#1 items zp[2]:17 2.0 -(word*) bsearch16u::items#2 items zp[2]:17 334.5555555555556 -(word*) bsearch16u::items#8 items zp[2]:17 1501.5 +(word*) bsearch16u::items#0 items zp[2]:17 1.000000001E9 +(word*) bsearch16u::items#1 items zp[2]:17 550001.0 +(word*) bsearch16u::items#2 items zp[2]:17 3.337777785555556E8 +(word*) bsearch16u::items#8 items zp[2]:17 1.5000000015E9 (word) bsearch16u::key -(word) bsearch16u::key#0 key zp[2]:32 0.26666666666666666 +(word) bsearch16u::key#0 key zp[2]:32 73333.46666666667 (byte) bsearch16u::num -(byte) bsearch16u::num#0 reg byte x 2002.0 -(byte) bsearch16u::num#1 reg byte x 2002.0 -(byte) bsearch16u::num#3 reg byte x 556.1111111111111 -(byte) bsearch16u::num#5 reg byte x 3003.0 +(byte) bsearch16u::num#0 reg byte x 2.000000002E9 +(byte) bsearch16u::num#1 reg byte x 2.000000002E9 +(byte) bsearch16u::num#3 reg byte x 5.555555561111112E8 +(byte) bsearch16u::num#5 reg byte x 3.000000003E9 (word*) bsearch16u::pivot -(word*) bsearch16u::pivot#0 pivot zp[2]:34 501.0 +(word*) bsearch16u::pivot#0 pivot zp[2]:34 5.0025000075E8 (signed word) bsearch16u::result -(signed word) bsearch16u::result#0 result zp[2]:36 1501.5 +(signed word) bsearch16u::result#0 result zp[2]:36 1.5000000015E9 (word*) bsearch16u::return -(word*) bsearch16u::return#1 return zp[2]:17 2.0 -(word*) bsearch16u::return#2 return zp[2]:17 6.0 -(word*) bsearch16u::return#3 return zp[2]:17 4.0 -(word*) bsearch16u::return#6 return zp[2]:17 4.0 +(word*) bsearch16u::return#1 return zp[2]:17 700001.0 +(word*) bsearch16u::return#2 return zp[2]:17 3000003.0 +(word*) bsearch16u::return#3 return zp[2]:17 200002.0 +(word*) bsearch16u::return#6 return zp[2]:17 2000002.0 (byte*) heap_head -(byte*) heap_head#1 heap_head zp[2]:21 0.6000000000000001 -(byte*) heap_head#12 heap_head zp[2]:21 6.0 +(byte*) heap_head#1 heap_head zp[2]:21 1100.4 +(byte*) heap_head#12 heap_head zp[2]:21 11004.0 (void()) init_angle_screen((byte*) init_angle_screen::screen) -(word~) init_angle_screen::$11 zp[2]:19 202.0 -(byte~) init_angle_screen::$13 reg byte a 202.0 -(byte~) init_angle_screen::$14 reg byte a 202.0 -(byte~) init_angle_screen::$15 reg byte a 202.0 -(byte~) init_angle_screen::$3 reg byte a 202.0 -(byte~) init_angle_screen::$4 reg byte a 202.0 -(byte~) init_angle_screen::$7 reg byte a 202.0 +(word~) init_angle_screen::$11 zp[2]:19 20002.0 +(byte~) init_angle_screen::$13 reg byte a 20002.0 +(byte~) init_angle_screen::$14 reg byte a 20002.0 +(byte~) init_angle_screen::$15 reg byte a 20002.0 +(byte~) init_angle_screen::$3 reg byte a 20002.0 +(byte~) init_angle_screen::$4 reg byte a 20002.0 +(byte~) init_angle_screen::$7 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 (label) init_angle_screen::@3 @@ -154,37 +154,37 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 84.16666666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:19 202.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:19 20002.0 (byte*) init_angle_screen::screen -(byte*) init_angle_screen::screen#0 screen zp[2]:21 3.0 +(byte*) init_angle_screen::screen#0 screen zp[2]:21 106.5 (byte*) init_angle_screen::screen_bottomline -(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:21 4.0 -(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:21 7.333333333333333 -(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:21 9.04 +(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:21 202.0 +(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:21 667.3333333333334 +(byte*) init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:21 884.2 (byte*) init_angle_screen::screen_topline -(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:13 2.0 -(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:13 5.5 -(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:13 9.416666666666666 +(byte*) init_angle_screen::screen_topline#0 screen_topline zp[2]:13 101.0 +(byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:13 500.5 +(byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:13 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:15 101.0 -(byte) init_angle_screen::x#2 x zp[1]:15 28.857142857142858 +(byte) init_angle_screen::x#1 x zp[1]:15 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:15 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:16 202.0 -(byte) init_angle_screen::xb#2 xb zp[1]:16 18.363636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:16 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:16 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:32 33.666666666666664 +(word) init_angle_screen::xw#0 xw zp[2]:32 3333.6666666666665 (byte) init_angle_screen::y -(byte) init_angle_screen::y#1 y zp[1]:12 16.5 -(byte) init_angle_screen::y#5 y zp[1]:12 4.730769230769231 +(byte) init_angle_screen::y#1 y zp[1]:12 1501.5 +(byte) init_angle_screen::y#5 y zp[1]:12 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:34 50.5 +(word) init_angle_screen::yw#0 yw zp[2]:34 5000.5 (void()) init_dist_screen((byte*) init_dist_screen::screen) -(byte~) init_dist_screen::$14 reg byte a 202.0 -(byte~) init_dist_screen::$16 reg byte a 202.0 -(byte~) init_dist_screen::$5 reg byte a 22.0 -(byte~) init_dist_screen::$7 reg byte a 22.0 +(byte~) init_dist_screen::$14 reg byte a 20002.0 +(byte~) init_dist_screen::$16 reg byte a 20002.0 +(byte~) init_dist_screen::$5 reg byte a 2002.0 +(byte~) init_dist_screen::$7 reg byte a 2002.0 (label) init_dist_screen::@1 (label) init_dist_screen::@10 (label) init_dist_screen::@11 @@ -201,56 +201,56 @@ (label) init_dist_screen::@9 (label) init_dist_screen::@return (byte) init_dist_screen::d -(byte) init_dist_screen::d#0 reg byte a 126.25 +(byte) init_dist_screen::d#0 reg byte a 12501.25 (word) init_dist_screen::ds -(word) init_dist_screen::ds#0 ds zp[2]:32 202.0 +(word) init_dist_screen::ds#0 ds zp[2]:32 20002.0 (byte*) init_dist_screen::screen -(byte*) init_dist_screen::screen#0 screen zp[2]:13 1.5 +(byte*) init_dist_screen::screen#0 screen zp[2]:13 53.25 (byte*) init_dist_screen::screen_bottomline -(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:21 4.0 -(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:21 7.333333333333333 -(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:21 6.848484848484849 +(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:21 202.0 +(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:21 667.3333333333334 +(byte*) init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:21 669.8484848484848 (byte*) init_dist_screen::screen_topline -(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:13 5.5 -(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:13 7.0625 +(byte*) init_dist_screen::screen_topline#1 screen_topline zp[2]:13 500.5 +(byte*) init_dist_screen::screen_topline#11 screen_topline zp[2]:13 690.78125 (byte) init_dist_screen::x -(byte) init_dist_screen::x#1 x zp[1]:15 101.0 -(byte) init_dist_screen::x#2 x zp[1]:15 30.3 +(byte) init_dist_screen::x#1 x zp[1]:15 10001.0 +(byte) init_dist_screen::x#2 x zp[1]:15 3000.3 (byte) init_dist_screen::x2 -(byte) init_dist_screen::x2#0 reg byte a 202.0 +(byte) init_dist_screen::x2#0 reg byte a 20002.0 (byte) init_dist_screen::xb -(byte) init_dist_screen::xb#1 xb zp[1]:16 202.0 -(byte) init_dist_screen::xb#2 xb zp[1]:16 19.238095238095237 +(byte) init_dist_screen::xb#1 xb zp[1]:16 20002.0 +(byte) init_dist_screen::xb#2 xb zp[1]:16 1904.952380952381 (byte) init_dist_screen::xd -(byte) init_dist_screen::xd#0 reg byte a 303.0 +(byte) init_dist_screen::xd#0 reg byte a 30003.0 (word) init_dist_screen::xds -(word) init_dist_screen::xds#0 xds zp[2]:32 202.0 +(word) init_dist_screen::xds#0 xds zp[2]:32 20002.0 (byte) init_dist_screen::y -(byte) init_dist_screen::y#1 y zp[1]:12 16.5 -(byte) init_dist_screen::y#10 y zp[1]:12 0.9705882352941178 +(byte) init_dist_screen::y#1 y zp[1]:12 1501.5 +(byte) init_dist_screen::y#10 y zp[1]:12 88.32352941176471 (byte) init_dist_screen::y2 -(byte) init_dist_screen::y2#0 reg byte a 22.0 +(byte) init_dist_screen::y2#0 reg byte a 2002.0 (byte) init_dist_screen::yd -(byte) init_dist_screen::yd#0 reg byte a 33.0 +(byte) init_dist_screen::yd#0 reg byte a 3003.0 (word) init_dist_screen::yds -(word) init_dist_screen::yds#0 yds zp[2]:30 4.869565217391305 +(word) init_dist_screen::yds#0 yds zp[2]:30 478.3478260869565 (void()) init_squares() -(byte~) init_squares::$3 reg byte a 22.0 -(byte~) init_squares::$4 reg byte a 22.0 +(byte~) init_squares::$3 reg byte a 20002.0 +(byte~) init_squares::$4 reg byte a 20002.0 (label) init_squares::@1 (label) init_squares::@2 (label) init_squares::@3 (label) init_squares::@return (byte) init_squares::i -(byte) init_squares::i#1 reg byte x 22.0 -(byte) init_squares::i#2 reg byte x 6.285714285714286 +(byte) init_squares::i#1 reg byte x 20002.0 +(byte) init_squares::i#2 reg byte x 5714.857142857143 (word) init_squares::sqr -(word) init_squares::sqr#1 sqr zp[2]:36 11.0 -(word) init_squares::sqr#2 sqr zp[2]:36 5.5 +(word) init_squares::sqr#1 sqr zp[2]:36 10001.0 +(word) init_squares::sqr#2 sqr zp[2]:36 5000.5 (word*) init_squares::squares -(word*) init_squares::squares#0 squares zp[2]:19 4.0 -(word*) init_squares::squares#1 squares zp[2]:19 4.4 -(word*) init_squares::squares#2 squares zp[2]:19 11.666666666666666 +(word*) init_squares::squares#0 squares zp[2]:19 2002.0 +(word*) init_squares::squares#1 squares zp[2]:19 4000.4 +(word*) init_squares::squares#2 squares zp[2]:19 10334.666666666666 (void()) main() (label) main::@1 (label) main::@10 @@ -265,59 +265,59 @@ (label) main::@9 (label) main::@return (byte*) main::angle -(byte*) main::angle#0 angle zp[2]:4 22.0 -(byte*) main::angle#1 angle zp[2]:4 50.5 -(byte*) main::angle#2 angle zp[2]:4 34.888888888888886 +(byte*) main::angle#0 angle zp[2]:4 202.0 +(byte*) main::angle#1 angle zp[2]:4 500.5 +(byte*) main::angle#2 angle zp[2]:4 344.8888888888889 (byte*) main::dist -(byte*) main::dist#0 dist zp[2]:2 11.0 -(byte*) main::dist#1 dist zp[2]:2 40.4 -(byte*) main::dist#2 dist zp[2]:2 39.25 +(byte*) main::dist#0 dist zp[2]:2 101.0 +(byte*) main::dist#1 dist zp[2]:2 400.4 +(byte*) main::dist#2 dist zp[2]:2 388.0 (word) main::dist_angle -(word) main::dist_angle#0 dist_angle zp[2]:10 101.0 +(word) main::dist_angle#0 dist_angle zp[2]:10 1001.0 (byte*) main::fill -(byte*) main::fill#1 fill zp[2]:21 101.0 -(byte*) main::fill#2 fill zp[2]:21 40.4 +(byte*) main::fill#1 fill zp[2]:21 1001.0 +(byte*) main::fill#2 fill zp[2]:21 400.4 (word) main::min_dist_angle -(word) main::min_dist_angle#2 min_dist_angle zp[2]:6 101.0 -(word) main::min_dist_angle#3 min_dist_angle_1 zp[2]:10 83.0 -(word) main::min_dist_angle#6 min_dist_angle zp[2]:6 202.0 -(word) main::min_dist_angle#7 min_dist_angle_1 zp[2]:10 202.0 -(word) main::min_dist_angle#8 min_dist_angle_1 zp[2]:10 202.0 +(word) main::min_dist_angle#2 min_dist_angle zp[2]:6 1001.0 +(word) main::min_dist_angle#3 min_dist_angle_1 zp[2]:10 821.0 +(word) main::min_dist_angle#6 min_dist_angle zp[2]:6 2002.0 +(word) main::min_dist_angle#7 min_dist_angle_1 zp[2]:10 2002.0 +(word) main::min_dist_angle#8 min_dist_angle_1 zp[2]:10 2002.0 (byte*) main::min_fill -(byte*) main::min_fill#10 min_fill zp[2]:8 202.0 -(byte*) main::min_fill#2 min_fill zp[2]:8 59.285714285714285 -(byte*) main::min_fill#5 min_fill zp[2]:8 50.5 +(byte*) main::min_fill#10 min_fill zp[2]:8 2002.0 +(byte*) main::min_fill#2 min_fill zp[2]:8 586.4285714285714 +(byte*) main::min_fill#5 min_fill zp[2]:8 500.5 (void*()) malloc((word) malloc::size) (label) malloc::@return (byte*) malloc::mem -(byte*) malloc::mem#0 mem zp[2]:23 0.6666666666666666 +(byte*) malloc::mem#0 mem zp[2]:23 3333.6666666666665 (void*) malloc::return (word) malloc::size -(word) malloc::size#3 size zp[2]:23 2.0 +(word) malloc::size#3 size zp[2]:23 10001.0 (word()) sqr((byte) sqr::val) -(byte~) sqr::$0 reg byte a 4.0 +(byte~) sqr::$0 reg byte a 200002.0 (label) sqr::@return (word) sqr::return -(word) sqr::return#0 return zp[2]:32 28.5 -(word) sqr::return#2 return_1 zp[2]:30 22.0 -(word) sqr::return#3 return zp[2]:32 202.0 +(word) sqr::return#0 return zp[2]:32 27750.75 +(word) sqr::return#2 return_1 zp[2]:30 2002.0 +(word) sqr::return#3 return zp[2]:32 20002.0 (byte) sqr::val -(byte) sqr::val#0 reg byte a 22.0 -(byte) sqr::val#1 reg byte a 202.0 -(byte) sqr::val#2 reg byte a 114.0 +(byte) sqr::val#0 reg byte a 2002.0 +(byte) sqr::val#1 reg byte a 20002.0 +(byte) sqr::val#2 reg byte a 111003.0 (byte()) sqrt((word) sqrt::val) -(word~) sqrt::$1 zp[2]:17 2.0 -(word~) sqrt::$3 zp[2]:17 4.0 +(word~) sqrt::$1 zp[2]:17 100001.0 +(word~) sqrt::$3 zp[2]:17 200002.0 (label) sqrt::@1 (label) sqrt::@return (word*) sqrt::found -(word*) sqrt::found#0 found zp[2]:17 4.0 +(word*) sqrt::found#0 found zp[2]:17 200002.0 (byte) sqrt::return -(byte) sqrt::return#0 reg byte a 34.33333333333333 -(byte) sqrt::return#2 reg byte a 202.0 +(byte) sqrt::return#0 reg byte a 36667.33333333333 +(byte) sqrt::return#2 reg byte a 20002.0 (byte) sqrt::sq (word) sqrt::val -(word) sqrt::val#0 val zp[2]:32 103.0 +(word) sqrt::val#0 val zp[2]:32 110002.0 zp[2]:2 [ main::dist#2 main::dist#0 main::dist#1 ] zp[2]:4 [ main::angle#2 main::angle#0 main::angle#1 ] diff --git a/src/test/ref/scroll-clobber.log b/src/test/ref/scroll-clobber.log index 5ad3dbbff..23c960818 100644 --- a/src/test/ref/scroll-clobber.log +++ b/src/test/ref/scroll-clobber.log @@ -83,9 +83,9 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [5] (bool~) main::$1 ← (byte) main::c#0 != (byte) 0 from [4] (bool~) main::$0 ← (byte) main::c#0 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::i#3 = (byte) main::i#4 +Alias main::i#3 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [5] if((byte) main::c#0!=(byte) 0) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -163,16 +163,16 @@ main::@2: scope:[main] from main::@1 main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::c -(byte) main::c#0 16.5 -(byte) main::c#1 22.0 -(byte) main::c#2 16.5 +(byte) main::c#0 151.5 +(byte) main::c#1 202.0 +(byte) main::c#2 151.5 (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 4.4 +(byte) main::i#1 101.0 +(byte) main::i#2 40.4 (byte*) main::nxt -(byte*) main::nxt#1 22.0 -(byte*) main::nxt#3 11.0 -(byte*) main::nxt#4 7.333333333333333 +(byte*) main::nxt#1 202.0 +(byte*) main::nxt#3 101.0 +(byte*) main::nxt#4 67.33333333333333 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -281,16 +281,16 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::c#2 main::c#0 main::c#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 55: zp[1]:3 [ main::c#2 main::c#0 main::c#1 ] 40.33: zp[2]:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 15.4: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 505: zp[1]:3 [ main::c#2 main::c#0 main::c#1 ] 370.33: zp[2]:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 141.4: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 777 combination reg byte y [ main::c#2 main::c#0 main::c#1 ] zp[2]:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -423,16 +423,16 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@3 (byte) main::c -(byte) main::c#0 reg byte y 16.5 -(byte) main::c#1 reg byte y 22.0 -(byte) main::c#2 reg byte y 16.5 +(byte) main::c#0 reg byte y 151.5 +(byte) main::c#1 reg byte y 202.0 +(byte) main::c#2 reg byte y 151.5 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 4.4 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 40.4 (byte*) main::nxt -(byte*) main::nxt#1 nxt zp[2]:2 22.0 -(byte*) main::nxt#3 nxt zp[2]:2 11.0 -(byte*) main::nxt#4 nxt zp[2]:2 7.333333333333333 +(byte*) main::nxt#1 nxt zp[2]:2 202.0 +(byte*) main::nxt#3 nxt zp[2]:2 101.0 +(byte*) main::nxt#4 nxt zp[2]:2 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::c#2 main::c#0 main::c#1 ] diff --git a/src/test/ref/scroll-clobber.sym b/src/test/ref/scroll-clobber.sym index 7ec494ebe..0fc72aa88 100644 --- a/src/test/ref/scroll-clobber.sym +++ b/src/test/ref/scroll-clobber.sym @@ -8,16 +8,16 @@ (label) main::@2 (label) main::@3 (byte) main::c -(byte) main::c#0 reg byte y 16.5 -(byte) main::c#1 reg byte y 22.0 -(byte) main::c#2 reg byte y 16.5 +(byte) main::c#0 reg byte y 151.5 +(byte) main::c#1 reg byte y 202.0 +(byte) main::c#2 reg byte y 151.5 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 4.4 +(byte) main::i#1 reg byte x 101.0 +(byte) main::i#2 reg byte x 40.4 (byte*) main::nxt -(byte*) main::nxt#1 nxt zp[2]:2 22.0 -(byte*) main::nxt#3 nxt zp[2]:2 11.0 -(byte*) main::nxt#4 nxt zp[2]:2 7.333333333333333 +(byte*) main::nxt#1 nxt zp[2]:2 202.0 +(byte*) main::nxt#3 nxt zp[2]:2 101.0 +(byte*) main::nxt#4 nxt zp[2]:2 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::c#2 main::c#0 main::c#1 ] diff --git a/src/test/ref/scrollbig-clobber.asm b/src/test/ref/scrollbig-clobber.asm index 2e151a195..c08b42b79 100644 --- a/src/test/ref/scrollbig-clobber.asm +++ b/src/test/ref/scrollbig-clobber.asm @@ -2,10 +2,12 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label nxt = 2 + .label nxt = 3 main: { .label SCREEN = $400 - ldx #0 + .label i = 2 + lda #0 + sta.z i lda #TEXT @@ -13,12 +15,14 @@ main: { __b1: // next_char() jsr next_char - tya + txa // SCREEN[i] = next_char() - sta SCREEN,x + ldy.z i + sta SCREEN,y // for( byte i: 0..255) - inx - cpx #0 + inc.z i + lda.z i + cmp #0 bne __b1 // } rts @@ -28,12 +32,12 @@ next_char: { // c = *nxt ldy #0 lda (nxt),y - tay + tax // if(c==0) - cpy #0 + cpx #0 bne __b1 // c = *nxt - ldy TEXT + ldx TEXT lda #TEXT diff --git a/src/test/ref/scrollbig-clobber.log b/src/test/ref/scrollbig-clobber.log index 97853005e..984621eb3 100644 --- a/src/test/ref/scrollbig-clobber.log +++ b/src/test/ref/scrollbig-clobber.log @@ -135,13 +135,13 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [19] (bool~) next_char::$1 ← (byte) next_char::c#0 != (byte) 0 from [18] (bool~) next_char::$0 ← (byte) next_char::c#0 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) next_char::return#0 = (byte) next_char::return#3 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte*) nxt#0 = (byte*) nxt#7 (byte*) nxt#8 (byte*) nxt#1 -Alias (byte) next_char::return#1 = (byte) next_char::c#2 (byte) next_char::return#4 (byte) next_char::return#2 -Alias (byte*) nxt#11 = (byte*) nxt#3 (byte*) nxt#5 -Alias (byte*) nxt#14 = (byte*) nxt#2 -Alias (byte*) nxt#12 = (byte*) nxt#6 +Alias next_char::return#0 = next_char::return#3 +Alias main::i#2 = main::i#3 +Alias nxt#0 = nxt#7 nxt#8 nxt#1 +Alias next_char::return#1 = next_char::c#2 next_char::return#4 next_char::return#2 +Alias nxt#11 = nxt#3 nxt#5 +Alias nxt#14 = nxt#2 +Alias nxt#12 = nxt#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) nxt#15 (byte*) nxt#14 Identical Phi Values (byte*) nxt#0 (byte*) nxt#11 @@ -251,21 +251,21 @@ next_char::@return: scope:[next_char] from next_char::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.6000000000000005 +(byte) main::i#1 151.5 +(byte) main::i#2 60.599999999999994 (byte()) next_char() (byte) next_char::c -(byte) next_char::c#0 3.0 -(byte) next_char::c#1 4.0 +(byte) next_char::c#0 1501.5 +(byte) next_char::c#1 2002.0 (byte) next_char::return -(byte) next_char::return#0 22.0 -(byte) next_char::return#1 3.75 +(byte) next_char::return#0 202.0 +(byte) next_char::return#1 525.75 (byte*) nxt -(byte*) nxt#10 4.0 -(byte*) nxt#11 1.625 -(byte*) nxt#13 5.0 +(byte*) nxt#10 2002.0 +(byte*) nxt#11 137.75 +(byte*) nxt#13 701.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -413,10 +413,10 @@ next_char: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] (byte) next_char::c#0 ← *((byte*) nxt#13) [ nxt#13 next_char::c#0 ] ( main:2::next_char:6 [ main::i#2 nxt#13 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte) next_char::c#0 ← *((byte*) nxt#13) [ nxt#13 next_char::c#0 ] ( main:2::next_char:6 [ main::i#2 nxt#13 next_char::c#0 ] { { next_char::return#0 = next_char::return#1 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [13] (byte) next_char::c#0 ← *((byte*) nxt#13) [ nxt#13 next_char::c#0 ] ( main:2::next_char:6 [ main::i#2 nxt#13 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte) next_char::c#0 ← *((byte*) nxt#13) [ nxt#13 next_char::c#0 ] ( main:2::next_char:6 [ main::i#2 nxt#13 next_char::c#0 ] { { next_char::return#0 = next_char::return#1 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] : zp[2]:3 , Potential registers zp[1]:5 [ next_char::return#1 next_char::c#0 next_char::c#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -424,14 +424,15 @@ Potential registers zp[1]:6 [ next_char::return#0 ] : zp[1]:6 , reg byte a , reg Potential registers zp[1]:7 [ main::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$0 ] -Uplift Scope [next_char] 22: zp[1]:6 [ next_char::return#0 ] 10.75: zp[1]:5 [ next_char::return#1 next_char::c#0 next_char::c#1 ] -Uplift Scope [] 10.62: zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] +Uplift Scope [next_char] 4,029.25: zp[1]:5 [ next_char::return#1 next_char::c#0 next_char::c#1 ] 202: zp[1]:6 [ next_char::return#0 ] +Uplift Scope [] 2,840.75: zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] +Uplift Scope [main] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::$0 ] -Uplifting [main] best 587 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] -Uplifting [next_char] best 510 combination reg byte a [ next_char::return#0 ] reg byte y [ next_char::return#1 next_char::c#0 next_char::c#1 ] -Uplifting [] best 510 combination zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] -Allocated (was zp[2]:3) zp[2]:2 [ nxt#10 nxt#13 nxt#11 ] +Uplifting [next_char] best 670 combination reg byte x [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte x [ next_char::return#0 ] +Uplifting [] best 670 combination zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] +Uplifting [main] best 630 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 630 combination zp[1]:2 [ main::i#2 main::i#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -441,7 +442,7 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label nxt = 2 + .label nxt = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -461,10 +462,12 @@ __bend: // main main: { .label SCREEN = $400 + .label i = 2 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [5] phi (byte*) nxt#13 = (const byte*) TEXT [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #next_char::@1] __b1_from___b2: // [16] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy @@ -587,38 +592,38 @@ FINAL SYMBOL TABLE (label) @end (const byte*) TEXT = (byte*) "cml " (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 60.599999999999994 (byte()) next_char() (label) next_char::@1 (label) next_char::@2 (label) next_char::@return (byte) next_char::c -(byte) next_char::c#0 reg byte y 3.0 -(byte) next_char::c#1 reg byte y 4.0 +(byte) next_char::c#0 reg byte x 1501.5 +(byte) next_char::c#1 reg byte x 2002.0 (byte) next_char::return -(byte) next_char::return#0 reg byte a 22.0 -(byte) next_char::return#1 reg byte y 3.75 +(byte) next_char::return#0 reg byte x 202.0 +(byte) next_char::return#1 reg byte x 525.75 (byte*) nxt -(byte*) nxt#10 nxt zp[2]:2 4.0 -(byte*) nxt#11 nxt zp[2]:2 1.625 -(byte*) nxt#13 nxt zp[2]:2 5.0 +(byte*) nxt#10 nxt zp[2]:3 2002.0 +(byte*) nxt#11 nxt zp[2]:3 137.75 +(byte*) nxt#13 nxt zp[2]:3 701.0 -reg byte x [ main::i#2 main::i#1 ] -zp[2]:2 [ nxt#10 nxt#13 nxt#11 ] -reg byte y [ next_char::return#1 next_char::c#0 next_char::c#1 ] -reg byte a [ next_char::return#0 ] +zp[1]:2 [ main::i#2 main::i#1 ] +zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] +reg byte x [ next_char::return#1 next_char::c#0 next_char::c#1 ] +reg byte x [ next_char::return#0 ] reg byte a [ main::$0 ] FINAL ASSEMBLER -Score: 366 +Score: 486 // File Comments // Clobber problem in next_char return value @@ -627,7 +632,7 @@ Score: 366 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label nxt = 2 + .label nxt = 3 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -638,9 +643,11 @@ Score: 366 // main main: { .label SCREEN = $400 + .label i = 2 // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [5] phi (byte*) nxt#13 = (const byte*) TEXT [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #next_char::@1] // [16] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy // [16] phi (byte*) nxt#10 = (const byte*) TEXT [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 diff --git a/src/test/ref/scrollbig-clobber.sym b/src/test/ref/scrollbig-clobber.sym index ee31a878e..b88b0362c 100644 --- a/src/test/ref/scrollbig-clobber.sym +++ b/src/test/ref/scrollbig-clobber.sym @@ -3,31 +3,31 @@ (label) @end (const byte*) TEXT = (byte*) "cml " (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 60.599999999999994 (byte()) next_char() (label) next_char::@1 (label) next_char::@2 (label) next_char::@return (byte) next_char::c -(byte) next_char::c#0 reg byte y 3.0 -(byte) next_char::c#1 reg byte y 4.0 +(byte) next_char::c#0 reg byte x 1501.5 +(byte) next_char::c#1 reg byte x 2002.0 (byte) next_char::return -(byte) next_char::return#0 reg byte a 22.0 -(byte) next_char::return#1 reg byte y 3.75 +(byte) next_char::return#0 reg byte x 202.0 +(byte) next_char::return#1 reg byte x 525.75 (byte*) nxt -(byte*) nxt#10 nxt zp[2]:2 4.0 -(byte*) nxt#11 nxt zp[2]:2 1.625 -(byte*) nxt#13 nxt zp[2]:2 5.0 +(byte*) nxt#10 nxt zp[2]:3 2002.0 +(byte*) nxt#11 nxt zp[2]:3 137.75 +(byte*) nxt#13 nxt zp[2]:3 701.0 -reg byte x [ main::i#2 main::i#1 ] -zp[2]:2 [ nxt#10 nxt#13 nxt#11 ] -reg byte y [ next_char::return#1 next_char::c#0 next_char::c#1 ] -reg byte a [ next_char::return#0 ] +zp[1]:2 [ main::i#2 main::i#1 ] +zp[2]:3 [ nxt#10 nxt#13 nxt#11 ] +reg byte x [ next_char::return#1 next_char::c#0 next_char::c#1 ] +reg byte x [ next_char::return#0 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/semi-struct-1.log b/src/test/ref/semi-struct-1.log index 69f203873..65171ed26 100644 --- a/src/test/ref/semi-struct-1.log +++ b/src/test/ref/semi-struct-1.log @@ -927,50 +927,50 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#47 (byte*) print_screen#6 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#21 (byte*) print_char_cursor#40 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#3 (byte*) print_line_cursor#13 (byte*) print_char_cursor#24 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#27 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#14 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#10 (byte*) print_char_cursor#30 (byte*) print_line_cursor#4 (byte*) print_char_cursor#11 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#26 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#49 -Alias (byte*) print_screen#4 = (byte*) print_screen#5 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#16 (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#13 -Alias (byte) init_points::i#10 = (byte) init_points::getPoint1_idx#0 (byte) init_points::i#2 (byte) init_points::getPoint1_idx#1 (byte) init_points::i#11 (byte) init_points::i#9 (byte) init_points::i#8 (byte) init_points::i#7 (byte) init_points::i#6 (byte) init_points::i#5 (byte) init_points::i#4 (byte) init_points::i#3 -Alias (byte) init_points::pos#10 = (byte) init_points::pos#11 (byte) init_points::pos#12 (byte) init_points::pos#9 (byte) init_points::pos#7 (byte) init_points::pos#5 (byte) init_points::pos#3 -Alias (byte*) init_points::getPoint1_return#0 = (byte*~) init_points::getPoint1_$1 (byte*) init_points::getPoint1_return#2 (byte*) init_points::getPoint1_return#1 (byte*) init_points::getPoint1_return#3 (byte*~) init_points::$0 (byte*) init_points::point#0 (byte*) init_points::pointXpos1_point#0 (byte*) init_points::pointXpos1_point#1 (byte*) init_points::point#3 (byte*) init_points::point#2 (byte*) init_points::point#1 (byte*) init_points::pointYpos1_point#0 (byte*) init_points::pointYpos1_point#1 -Alias (byte*) init_points::pointXpos1_return#0 = (byte*~) init_points::pointXpos1_$1 (byte*~) init_points::pointXpos1_$0 (byte*) init_points::pointXpos1_return#2 (byte*) init_points::pointXpos1_return#1 (byte*) init_points::pointXpos1_return#3 (byte*~) init_points::$1 -Alias (byte) init_points::pos#1 = (byte) init_points::pos#8 (byte) init_points::pos#6 (byte) init_points::pos#4 -Alias (byte*) init_points::pointYpos1_return#0 = (byte*~) init_points::pointYpos1_$1 (byte*~) init_points::pointYpos1_$0 (byte*) init_points::pointYpos1_return#2 (byte*) init_points::pointYpos1_return#1 (byte*) init_points::pointYpos1_return#3 (byte*~) init_points::$2 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#33 -Alias (byte) print_points::i#10 = (byte) print_points::getPoint1_idx#0 (byte) print_points::i#2 (byte) print_points::getPoint1_idx#1 (byte) print_points::i#15 (byte) print_points::i#14 (byte) print_points::i#13 (byte) print_points::i#12 (byte) print_points::i#11 (byte) print_points::i#9 (byte) print_points::i#8 (byte) print_points::i#7 (byte) print_points::i#6 (byte) print_points::i#5 (byte) print_points::i#4 (byte) print_points::i#3 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#57 (byte*) print_char_cursor#55 (byte*) print_char_cursor#54 (byte*) print_char_cursor#52 (byte*) print_char_cursor#50 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#37 (byte*) print_line_cursor#38 (byte*) print_line_cursor#36 (byte*) print_line_cursor#35 (byte*) print_line_cursor#34 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#30 (byte*) print_line_cursor#29 (byte*) print_line_cursor#28 (byte*) print_line_cursor#27 -Alias (byte*) print_points::point#0 = (byte*) print_points::getPoint1_return#0 (byte*~) print_points::getPoint1_$1 (byte*) print_points::getPoint1_return#2 (byte*) print_points::getPoint1_return#1 (byte*) print_points::getPoint1_return#3 (byte*~) print_points::$1 (byte*) print_points::pointXpos1_point#0 (byte*) print_points::pointXpos1_point#1 (byte*) print_points::point#5 (byte*) print_points::point#4 (byte*) print_points::point#3 (byte*) print_points::point#2 (byte*) print_points::point#1 (byte*) print_points::pointYpos1_point#0 (byte*) print_points::pointYpos1_point#1 -Alias (byte*) print_points::pointXpos1_return#0 = (byte*~) print_points::pointXpos1_$1 (byte*~) print_points::pointXpos1_$0 (byte*) print_points::pointXpos1_return#2 (byte*) print_points::pointXpos1_return#1 (byte*) print_points::pointXpos1_return#3 (byte*~) print_points::$2 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#34 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#53 (byte*) print_char_cursor#51 (byte*) print_char_cursor#46 -Alias (byte*) print_points::pointYpos1_return#0 = (byte*~) print_points::pointYpos1_$1 (byte*~) print_points::pointYpos1_$0 (byte*) print_points::pointYpos1_return#2 (byte*) print_points::pointYpos1_return#1 (byte*) print_points::pointYpos1_return#3 (byte*~) print_points::$5 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#36 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#19 (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#38 (byte*) print_char_cursor#19 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#39 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#25 print_char_cursor#47 print_screen#6 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#2 = print_char_cursor#21 print_char_cursor#40 print_char_cursor#22 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#12 print_char_cursor#3 print_line_cursor#13 print_char_cursor#24 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#25 = print_char_cursor#5 +Alias print_char_cursor#26 = print_char_cursor#6 print_char_cursor#27 print_char_cursor#7 +Alias print_char_cursor#29 = print_char_cursor#8 print_char_cursor#9 +Alias print_line_cursor#14 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#10 print_char_cursor#30 print_line_cursor#4 print_char_cursor#11 +Alias print_line_cursor#22 = print_line_cursor#26 +Alias print_char_cursor#43 = print_char_cursor#49 +Alias print_screen#4 = print_screen#5 +Alias print_line_cursor#15 = print_line_cursor#5 print_line_cursor#16 print_line_cursor#6 +Alias print_char_cursor#12 = print_char_cursor#31 print_char_cursor#32 print_char_cursor#13 +Alias init_points::i#10 = init_points::getPoint1_idx#0 init_points::i#2 init_points::getPoint1_idx#1 init_points::i#11 init_points::i#9 init_points::i#8 init_points::i#7 init_points::i#6 init_points::i#5 init_points::i#4 init_points::i#3 +Alias init_points::pos#10 = init_points::pos#11 init_points::pos#12 init_points::pos#9 init_points::pos#7 init_points::pos#5 init_points::pos#3 +Alias init_points::getPoint1_return#0 = init_points::getPoint1_$1 init_points::getPoint1_return#2 init_points::getPoint1_return#1 init_points::getPoint1_return#3 init_points::$0 init_points::point#0 init_points::pointXpos1_point#0 init_points::pointXpos1_point#1 init_points::point#3 init_points::point#2 init_points::point#1 init_points::pointYpos1_point#0 init_points::pointYpos1_point#1 +Alias init_points::pointXpos1_return#0 = init_points::pointXpos1_$1 init_points::pointXpos1_$0 init_points::pointXpos1_return#2 init_points::pointXpos1_return#1 init_points::pointXpos1_return#3 init_points::$1 +Alias init_points::pos#1 = init_points::pos#8 init_points::pos#6 init_points::pos#4 +Alias init_points::pointYpos1_return#0 = init_points::pointYpos1_$1 init_points::pointYpos1_$0 init_points::pointYpos1_return#2 init_points::pointYpos1_return#1 init_points::pointYpos1_return#3 init_points::$2 +Alias print_line_cursor#17 = print_line_cursor#7 +Alias print_char_cursor#14 = print_char_cursor#33 +Alias print_points::i#10 = print_points::getPoint1_idx#0 print_points::i#2 print_points::getPoint1_idx#1 print_points::i#15 print_points::i#14 print_points::i#13 print_points::i#12 print_points::i#11 print_points::i#9 print_points::i#8 print_points::i#7 print_points::i#6 print_points::i#5 print_points::i#4 print_points::i#3 +Alias print_char_cursor#45 = print_char_cursor#56 print_char_cursor#57 print_char_cursor#55 print_char_cursor#54 print_char_cursor#52 print_char_cursor#50 +Alias print_line_cursor#24 = print_line_cursor#37 print_line_cursor#38 print_line_cursor#36 print_line_cursor#35 print_line_cursor#34 print_line_cursor#33 print_line_cursor#32 print_line_cursor#31 print_line_cursor#30 print_line_cursor#29 print_line_cursor#28 print_line_cursor#27 +Alias print_points::point#0 = print_points::getPoint1_return#0 print_points::getPoint1_$1 print_points::getPoint1_return#2 print_points::getPoint1_return#1 print_points::getPoint1_return#3 print_points::$1 print_points::pointXpos1_point#0 print_points::pointXpos1_point#1 print_points::point#5 print_points::point#4 print_points::point#3 print_points::point#2 print_points::point#1 print_points::pointYpos1_point#0 print_points::pointYpos1_point#1 +Alias print_points::pointXpos1_return#0 = print_points::pointXpos1_$1 print_points::pointXpos1_$0 print_points::pointXpos1_return#2 print_points::pointXpos1_return#1 print_points::pointXpos1_return#3 print_points::$2 +Alias print_char_cursor#15 = print_char_cursor#34 +Alias print_char_cursor#16 = print_char_cursor#35 print_char_cursor#53 print_char_cursor#51 print_char_cursor#46 +Alias print_points::pointYpos1_return#0 = print_points::pointYpos1_$1 print_points::pointYpos1_$0 print_points::pointYpos1_return#2 print_points::pointYpos1_return#1 print_points::pointYpos1_return#3 print_points::$5 +Alias print_char_cursor#17 = print_char_cursor#36 +Alias print_line_cursor#18 = print_line_cursor#8 print_line_cursor#19 print_line_cursor#9 +Alias print_char_cursor#18 = print_char_cursor#37 print_char_cursor#38 print_char_cursor#19 +Alias print_line_cursor#10 = print_line_cursor#20 +Alias print_char_cursor#20 = print_char_cursor#39 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1389,67 +1389,67 @@ init_points::@return: scope:[init_points] from init_points::@3 VARIABLE REGISTER WEIGHTS (void()) init_points() -(byte~) init_points::getPoint1_$0 11.0 +(byte~) init_points::getPoint1_$0 1001.0 (byte) init_points::getPoint1_idx (byte*) init_points::getPoint1_return -(byte*) init_points::getPoint1_return#0 4.4 +(byte*) init_points::getPoint1_return#0 400.4 (byte) init_points::i -(byte) init_points::i#1 16.5 -(byte) init_points::i#10 3.666666666666667 +(byte) init_points::i#1 1501.5 +(byte) init_points::i#10 333.6666666666667 (byte*) init_points::point (byte*) init_points::pointXpos1_point (byte*) init_points::pointXpos1_return (byte*) init_points::pointYpos1_point (byte*) init_points::pointYpos1_return (byte) init_points::pos -(byte) init_points::pos#1 11.0 -(byte) init_points::pos#10 6.6000000000000005 -(byte) init_points::pos#2 7.333333333333333 +(byte) init_points::pos#1 1001.0 +(byte) init_points::pos#10 600.5999999999999 +(byte) init_points::pos#2 667.3333333333334 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 200002.0 +(byte*) memset::dst#2 133334.66666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 22.0 -(byte) print_byte::b#1 22.0 -(byte) print_byte::b#2 6.5 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 2002.0 +(byte) print_byte::b#2 5501.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 20002.0 +(byte) print_char::ch#1 20002.0 +(byte) print_char::ch#2 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#2 45.142857142857146 -(byte*) print_char_cursor#28 4.0 -(byte*) print_char_cursor#29 6.6875 -(byte*) print_char_cursor#42 8.0 -(byte*) print_char_cursor#45 4.4 -(byte*) print_char_cursor#64 22.0 +(byte*) print_char_cursor#1 1000001.0 +(byte*) print_char_cursor#2 430143.57142857136 +(byte*) print_char_cursor#28 110002.0 +(byte*) print_char_cursor#29 70000.25 +(byte*) print_char_cursor#42 4001.0 +(byte*) print_char_cursor#45 400.4 +(byte*) print_char_cursor#64 2002.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#11 204.0 -(byte*) print_line_cursor#24 1.0 +(byte*) print_line_cursor#1 428857.85714285716 +(byte*) print_line_cursor#11 2010003.0 +(byte*) print_line_cursor#24 846.3076923076923 (void()) print_ln() (void()) print_points() -(byte~) print_points::getPoint1_$0 11.0 +(byte~) print_points::getPoint1_$0 1001.0 (byte) print_points::getPoint1_idx (byte*) print_points::getPoint1_return (byte) print_points::i -(byte) print_points::i#1 11.0 -(byte) print_points::i#10 2.5384615384615383 +(byte) print_points::i#1 1001.0 +(byte) print_points::i#10 231.0 (byte*) print_points::point -(byte*) print_points::point#0 3.142857142857143 +(byte*) print_points::point#0 286.0 (byte*) print_points::pointXpos1_point (byte*) print_points::pointXpos1_return (byte*) print_points::pointYpos1_point @@ -1457,8 +1457,8 @@ VARIABLE REGISTER WEIGHTS (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#2 101.0 +(byte*) print_str::str#0 2000002.0 +(byte*) print_str::str#2 1000001.0 Initial phi equivalence classes [ print_points::i#10 print_points::i#1 ] @@ -1995,52 +1995,52 @@ init_points: { points: .fill NUM_POINTS*SIZEOF_POINT, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] (byte~) print_points::getPoint1_$0 ← (byte) print_points::i#10 << (byte) 1 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ) always clobbers reg byte a +Statement [12] (byte~) print_points::getPoint1_$0 ← (byte) print_points::i#10 << (byte) 1 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_points::i#10 print_points::i#1 ] -Statement [13] (byte*) print_points::point#0 ← (const byte*) points + (byte~) print_points::getPoint1_$0 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ) always clobbers reg byte a +Statement [13] (byte*) print_points::point#0 ← (const byte*) points + (byte~) print_points::getPoint1_$0 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ print_points::getPoint1_$0 ] -Statement [20] (byte) print_byte::b#1 ← *((byte*) print_points::point#0 + (byte) 1) [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ( main:2::print_points:7 [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [20] (byte) print_byte::b#1 ← *((byte*) print_points::point#0 + (byte) 1) [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ( main:2::print_points:7 [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ print_points::i#10 print_points::i#1 ] -Statement [27] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ( main:2::print_points:7 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [30] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [31] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [34] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ) always clobbers reg byte a +Statement [27] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ( main:2::print_points:7 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [30] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] { } ) always clobbers reg byte a +Statement [31] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] { } ) always clobbers reg byte a +Statement [34] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#28 = print_char_cursor#42 print_char_cursor#45 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 print_char_cursor#28 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [37] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#29 print_byte::$2 ] main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_char_cursor#29 print_byte::$2 ] ) always clobbers reg byte a -Statement [42] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_points:7::print_byte:16::print_char:36 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#28 ] main:2::print_points:7::print_byte:21::print_char:36 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#28 ] main:2::print_points:7::print_byte:16::print_char:39 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#28 ] main:2::print_points:7::print_byte:21::print_char:39 [ print_points::i#10 print_line_cursor#24 print_char_cursor#28 ] ) always clobbers reg byte y +Statement [37] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#42 = print_char_cursor#45 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_points:7::print_byte:16::print_char:36 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#28 = print_char_cursor#42 print_char_cursor#45 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:21::print_char:36 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 print_char_cursor#28 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:16::print_char:39 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#42 = print_char_cursor#45 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_points:7::print_byte:21::print_char:39 [ print_points::i#10 print_line_cursor#24 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [47] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [49] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [59] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [63] (byte~) init_points::getPoint1_$0 ← (byte) init_points::i#10 << (byte) 1 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ) always clobbers reg byte a +Statement [47] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [49] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [57] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [59] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [63] (byte~) init_points::getPoint1_$0 ← (byte) init_points::i#10 << (byte) 1 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_points::i#10 init_points::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ init_points::pos#10 init_points::pos#2 ] -Statement [64] (byte*) init_points::getPoint1_return#0 ← (const byte*) points + (byte~) init_points::getPoint1_$0 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ) always clobbers reg byte a +Statement [64] (byte*) init_points::getPoint1_return#0 ← (const byte*) points + (byte~) init_points::getPoint1_$0 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_points::getPoint1_$0 ] -Statement [66] *((const byte*) points + (byte~) init_points::getPoint1_$0) ← (byte) init_points::pos#10 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ) always clobbers reg byte a -Statement [67] (byte) init_points::pos#1 ← (byte) init_points::pos#10 + (byte) $a [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ) always clobbers reg byte a -Statement [69] *((byte*) init_points::getPoint1_return#0 + (byte) 1) ← (byte) init_points::pos#1 [ init_points::i#10 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#1 ] ) always clobbers reg byte y +Statement [66] *((const byte*) points + (byte~) init_points::getPoint1_$0) ← (byte) init_points::pos#10 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] { } ) always clobbers reg byte a +Statement [67] (byte) init_points::pos#1 ← (byte) init_points::pos#10 + (byte) $a [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) init_points::getPoint1_return#0 + (byte) 1) ← (byte) init_points::pos#1 [ init_points::i#10 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:13 [ init_points::i#10 init_points::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ init_points::pos#1 ] -Statement [12] (byte~) print_points::getPoint1_$0 ← (byte) print_points::i#10 << (byte) 1 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ) always clobbers reg byte a -Statement [13] (byte*) print_points::point#0 ← (const byte*) points + (byte~) print_points::getPoint1_$0 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ) always clobbers reg byte a -Statement [20] (byte) print_byte::b#1 ← *((byte*) print_points::point#0 + (byte) 1) [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ( main:2::print_points:7 [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [27] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ( main:2::print_points:7 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [30] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [31] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [34] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ) always clobbers reg byte a -Statement [37] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#29 print_byte::$2 ] main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_char_cursor#29 print_byte::$2 ] ) always clobbers reg byte a -Statement [42] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_points:7::print_byte:16::print_char:36 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#28 ] main:2::print_points:7::print_byte:21::print_char:36 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#28 ] main:2::print_points:7::print_byte:16::print_char:39 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#28 ] main:2::print_points:7::print_byte:21::print_char:39 [ print_points::i#10 print_line_cursor#24 print_char_cursor#28 ] ) always clobbers reg byte y -Statement [47] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [49] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [59] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [63] (byte~) init_points::getPoint1_$0 ← (byte) init_points::i#10 << (byte) 1 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ) always clobbers reg byte a -Statement [64] (byte*) init_points::getPoint1_return#0 ← (const byte*) points + (byte~) init_points::getPoint1_$0 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ) always clobbers reg byte a -Statement [66] *((const byte*) points + (byte~) init_points::getPoint1_$0) ← (byte) init_points::pos#10 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ) always clobbers reg byte a -Statement [67] (byte) init_points::pos#1 ← (byte) init_points::pos#10 + (byte) $a [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ) always clobbers reg byte a -Statement [69] *((byte*) init_points::getPoint1_return#0 + (byte) 1) ← (byte) init_points::pos#1 [ init_points::i#10 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#1 ] ) always clobbers reg byte y +Statement [12] (byte~) print_points::getPoint1_$0 ← (byte) print_points::i#10 << (byte) 1 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 ] { } ) always clobbers reg byte a +Statement [13] (byte*) print_points::point#0 ← (const byte*) points + (byte~) print_points::getPoint1_$0 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] ( main:2::print_points:7 [ print_points::i#10 print_char_cursor#45 print_line_cursor#24 print_points::getPoint1_$0 print_points::point#0 ] { } ) always clobbers reg byte a +Statement [20] (byte) print_byte::b#1 ← *((byte*) print_points::point#0 + (byte) 1) [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] ( main:2::print_points:7 [ print_points::i#10 print_line_cursor#24 print_byte::b#1 print_char_cursor#2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } } ) always clobbers reg byte a reg byte y +Statement [27] (byte*) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] ( main:2::print_points:7 [ print_points::i#1 print_char_cursor#64 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [30] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] { } ) always clobbers reg byte a +Statement [31] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_points:7::print_ln:23 [ print_points::i#10 print_line_cursor#1 print_char_cursor#29 ] { } ) always clobbers reg byte a +Statement [34] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#42 print_byte::$0 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#28 = print_char_cursor#42 print_char_cursor#45 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#42 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 print_char_cursor#28 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [37] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_points:7::print_byte:16 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#42 = print_char_cursor#45 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_points:7::print_byte:21 [ print_points::i#10 print_line_cursor#24 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_points:7::print_byte:16::print_char:36 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#28 = print_char_cursor#42 print_char_cursor#45 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:21::print_char:36 [ print_points::i#10 print_line_cursor#24 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 print_char_cursor#28 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_points:7::print_byte:16::print_char:39 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#42 = print_char_cursor#45 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_points:7::print_byte:21::print_char:39 [ print_points::i#10 print_line_cursor#24 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#2 = print_char_cursor#42 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte y +Statement [47] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [49] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::print_points:7::print_str:18 [ print_points::i#10 print_line_cursor#24 print_points::point#0 print_char_cursor#2 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [57] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [59] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_points:7::print_cls:10::memset:53 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [63] (byte~) init_points::getPoint1_$0 ← (byte) init_points::i#10 << (byte) 1 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 ] { } ) always clobbers reg byte a +Statement [64] (byte*) init_points::getPoint1_return#0 ← (const byte*) points + (byte~) init_points::getPoint1_$0 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_$0 init_points::getPoint1_return#0 ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) points + (byte~) init_points::getPoint1_$0) ← (byte) init_points::pos#10 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#10 init_points::getPoint1_return#0 ] { } ) always clobbers reg byte a +Statement [67] (byte) init_points::pos#1 ← (byte) init_points::pos#10 + (byte) $a [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::getPoint1_return#0 init_points::pos#1 ] { } ) always clobbers reg byte a +Statement [69] *((byte*) init_points::getPoint1_return#0 + (byte) 1) ← (byte) init_points::pos#1 [ init_points::i#10 init_points::pos#1 ] ( main:2::init_points:5 [ init_points::i#10 init_points::pos#1 ] { } ) always clobbers reg byte y Potential registers zp[1]:2 [ print_points::i#10 print_points::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:5 , reg byte x , @@ -2059,13 +2059,13 @@ Potential registers zp[2]:21 [ init_points::getPoint1_return#0 ] : zp[2]:21 , Potential registers zp[1]:23 [ init_points::pos#1 ] : zp[1]:23 , reg byte a , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.43: zp[2]:3 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] 191.23: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#45 print_char_cursor#64 print_char_cursor#2 print_char_cursor#29 print_char_cursor#1 ] -Uplift Scope [print_str] 303: zp[2]:9 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [init_points] 20.17: zp[1]:13 [ init_points::i#10 init_points::i#1 ] 13.93: zp[1]:14 [ init_points::pos#10 init_points::pos#2 ] 11: zp[1]:20 [ init_points::getPoint1_$0 ] 11: zp[1]:23 [ init_points::pos#1 ] 4.4: zp[2]:21 [ init_points::getPoint1_return#0 ] -Uplift Scope [print_byte] 50.5: zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:18 [ print_byte::$0 ] 4: zp[1]:19 [ print_byte::$2 ] -Uplift Scope [memset] 36.67: zp[2]:11 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_points] 13.54: zp[1]:2 [ print_points::i#10 print_points::i#1 ] 11: zp[1]:15 [ print_points::getPoint1_$0 ] 3.14: zp[2]:16 [ print_points::point#0 ] -Uplift Scope [print_char] 14: zp[1]:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 2,439,707.16: zp[2]:3 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] 1,616,550.22: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#45 print_char_cursor#64 print_char_cursor#2 print_char_cursor#29 print_char_cursor#1 ] +Uplift Scope [print_str] 3,000,003: zp[2]:9 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [memset] 333,336.67: zp[2]:11 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_char] 160,007: zp[1]:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:18 [ print_byte::$0 ] 20,002: zp[1]:19 [ print_byte::$2 ] 9,505: zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [init_points] 1,835.17: zp[1]:13 [ init_points::i#10 init_points::i#1 ] 1,267.93: zp[1]:14 [ init_points::pos#10 init_points::pos#2 ] 1,001: zp[1]:20 [ init_points::getPoint1_$0 ] 1,001: zp[1]:23 [ init_points::pos#1 ] 400.4: zp[2]:21 [ init_points::getPoint1_return#0 ] +Uplift Scope [print_points] 1,232: zp[1]:2 [ print_points::i#10 print_points::i#1 ] 1,001: zp[1]:15 [ print_points::getPoint1_$0 ] 286: zp[2]:16 [ print_points::point#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -2073,11 +2073,11 @@ Uplift Scope [main] Uplifting [] best 14577 combination zp[2]:3 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#45 print_char_cursor#64 print_char_cursor#2 print_char_cursor#29 print_char_cursor#1 ] Uplifting [print_str] best 14577 combination zp[2]:9 [ print_str::str#2 print_str::str#0 ] -Uplifting [init_points] best 14377 combination reg byte x [ init_points::i#10 init_points::i#1 ] zp[1]:14 [ init_points::pos#10 init_points::pos#2 ] reg byte y [ init_points::getPoint1_$0 ] reg byte a [ init_points::pos#1 ] zp[2]:21 [ init_points::getPoint1_return#0 ] -Uplifting [print_byte] best 14325 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [memset] best 14325 combination zp[2]:11 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_points] best 14275 combination zp[1]:2 [ print_points::i#10 print_points::i#1 ] reg byte y [ print_points::getPoint1_$0 ] zp[2]:16 [ print_points::point#0 ] -Uplifting [print_char] best 14266 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [memset] best 14577 combination zp[2]:11 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_char] best 14568 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 14516 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [init_points] best 14316 combination reg byte x [ init_points::i#10 init_points::i#1 ] zp[1]:14 [ init_points::pos#10 init_points::pos#2 ] reg byte y [ init_points::getPoint1_$0 ] reg byte a [ init_points::pos#1 ] zp[2]:21 [ init_points::getPoint1_return#0 ] +Uplifting [print_points] best 14266 combination zp[1]:2 [ print_points::i#10 print_points::i#1 ] reg byte y [ print_points::getPoint1_$0 ] zp[2]:16 [ print_points::point#0 ] Uplifting [RADIX] best 14266 combination Uplifting [print_ln] best 14266 combination Uplifting [print_cls] best 14266 combination @@ -2677,13 +2677,13 @@ FINAL SYMBOL TABLE (label) init_points::@3 (label) init_points::@return (label) init_points::getPoint1 -(byte~) init_points::getPoint1_$0 reg byte y 11.0 +(byte~) init_points::getPoint1_$0 reg byte y 1001.0 (byte) init_points::getPoint1_idx (byte*) init_points::getPoint1_return -(byte*) init_points::getPoint1_return#0 getPoint1_return zp[2]:9 4.4 +(byte*) init_points::getPoint1_return#0 getPoint1_return zp[2]:9 400.4 (byte) init_points::i -(byte) init_points::i#1 reg byte x 16.5 -(byte) init_points::i#10 reg byte x 3.666666666666667 +(byte) init_points::i#1 reg byte x 1501.5 +(byte) init_points::i#10 reg byte x 333.6666666666667 (byte*) init_points::point (label) init_points::pointXpos1 (byte*) init_points::pointXpos1_point @@ -2692,9 +2692,9 @@ FINAL SYMBOL TABLE (byte*) init_points::pointYpos1_point (byte*) init_points::pointYpos1_return (byte) init_points::pos -(byte) init_points::pos#1 reg byte a 11.0 -(byte) init_points::pos#10 pos zp[1]:8 6.6000000000000005 -(byte) init_points::pos#2 pos zp[1]:8 7.333333333333333 +(byte) init_points::pos#1 reg byte a 1001.0 +(byte) init_points::pos#10 pos zp[1]:8 600.5999999999999 +(byte) init_points::pos#2 pos zp[1]:8 667.3333333333334 (void()) main() (label) main::@1 (label) main::@return @@ -2705,8 +2705,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 200002.0 +(byte*) memset::dst#2 dst zp[2]:6 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2716,35 +2716,35 @@ FINAL SYMBOL TABLE (const void*) memset::str#0 str = (void*)(byte*) 1024 (const byte*) points[(const byte) NUM_POINTS*(const byte) SIZEOF_POINT] = { fill( NUM_POINTS*SIZEOF_POINT, 0) } (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 22.0 -(byte) print_byte::b#1 reg byte x 22.0 -(byte) print_byte::b#2 reg byte x 6.5 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 6.6875 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:4 8.0 -(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 4.4 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1000001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 430143.57142857136 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 110002.0 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 70000.25 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:4 4001.0 +(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 400.4 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:4 2002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:2 1.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 428857.85714285716 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 2010003.0 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:2 846.3076923076923 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2758,14 +2758,14 @@ FINAL SYMBOL TABLE (label) print_points::@7 (label) print_points::@return (label) print_points::getPoint1 -(byte~) print_points::getPoint1_$0 reg byte y 11.0 +(byte~) print_points::getPoint1_$0 reg byte y 1001.0 (byte) print_points::getPoint1_idx (byte*) print_points::getPoint1_return (byte) print_points::i -(byte) print_points::i#1 i zp[1]:8 11.0 -(byte) print_points::i#10 i zp[1]:8 2.5384615384615383 +(byte) print_points::i#1 i zp[1]:8 1001.0 +(byte) print_points::i#10 i zp[1]:8 231.0 (byte*) print_points::point -(byte*) print_points::point#0 point zp[2]:9 3.142857142857143 +(byte*) print_points::point#0 point zp[2]:9 286.0 (label) print_points::pointXpos1 (byte*) print_points::pointXpos1_point (byte*) print_points::pointXpos1_return @@ -2779,8 +2779,8 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 202.0 -(byte*) print_str::str#2 str zp[2]:6 101.0 +(byte*) print_str::str#0 str zp[2]:6 2000002.0 +(byte*) print_str::str#2 str zp[2]:6 1000001.0 zp[2]:2 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] diff --git a/src/test/ref/semi-struct-1.sym b/src/test/ref/semi-struct-1.sym index 22786b52c..5b64353b4 100644 --- a/src/test/ref/semi-struct-1.sym +++ b/src/test/ref/semi-struct-1.sym @@ -13,13 +13,13 @@ (label) init_points::@3 (label) init_points::@return (label) init_points::getPoint1 -(byte~) init_points::getPoint1_$0 reg byte y 11.0 +(byte~) init_points::getPoint1_$0 reg byte y 1001.0 (byte) init_points::getPoint1_idx (byte*) init_points::getPoint1_return -(byte*) init_points::getPoint1_return#0 getPoint1_return zp[2]:9 4.4 +(byte*) init_points::getPoint1_return#0 getPoint1_return zp[2]:9 400.4 (byte) init_points::i -(byte) init_points::i#1 reg byte x 16.5 -(byte) init_points::i#10 reg byte x 3.666666666666667 +(byte) init_points::i#1 reg byte x 1501.5 +(byte) init_points::i#10 reg byte x 333.6666666666667 (byte*) init_points::point (label) init_points::pointXpos1 (byte*) init_points::pointXpos1_point @@ -28,9 +28,9 @@ (byte*) init_points::pointYpos1_point (byte*) init_points::pointYpos1_return (byte) init_points::pos -(byte) init_points::pos#1 reg byte a 11.0 -(byte) init_points::pos#10 pos zp[1]:8 6.6000000000000005 -(byte) init_points::pos#2 pos zp[1]:8 7.333333333333333 +(byte) init_points::pos#1 reg byte a 1001.0 +(byte) init_points::pos#10 pos zp[1]:8 600.5999999999999 +(byte) init_points::pos#2 pos zp[1]:8 667.3333333333334 (void()) main() (label) main::@1 (label) main::@return @@ -41,8 +41,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 200002.0 +(byte*) memset::dst#2 dst zp[2]:6 133334.66666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -52,35 +52,35 @@ (const void*) memset::str#0 str = (void*)(byte*) 1024 (const byte*) points[(const byte) NUM_POINTS*(const byte) SIZEOF_POINT] = { fill( NUM_POINTS*SIZEOF_POINT, 0) } (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 22.0 -(byte) print_byte::b#1 reg byte x 22.0 -(byte) print_byte::b#2 reg byte x 6.5 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 6.6875 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:4 8.0 -(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 4.4 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1000001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 430143.57142857136 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 110002.0 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 70000.25 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:4 4001.0 +(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 400.4 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:4 2002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:2 1.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 428857.85714285716 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 2010003.0 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:2 846.3076923076923 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -94,14 +94,14 @@ (label) print_points::@7 (label) print_points::@return (label) print_points::getPoint1 -(byte~) print_points::getPoint1_$0 reg byte y 11.0 +(byte~) print_points::getPoint1_$0 reg byte y 1001.0 (byte) print_points::getPoint1_idx (byte*) print_points::getPoint1_return (byte) print_points::i -(byte) print_points::i#1 i zp[1]:8 11.0 -(byte) print_points::i#10 i zp[1]:8 2.5384615384615383 +(byte) print_points::i#1 i zp[1]:8 1001.0 +(byte) print_points::i#10 i zp[1]:8 231.0 (byte*) print_points::point -(byte*) print_points::point#0 point zp[2]:9 3.142857142857143 +(byte*) print_points::point#0 point zp[2]:9 286.0 (label) print_points::pointXpos1 (byte*) print_points::pointXpos1_point (byte*) print_points::pointXpos1_return @@ -115,8 +115,8 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 202.0 -(byte*) print_str::str#2 str zp[2]:6 101.0 +(byte*) print_str::str#0 str zp[2]:6 2000002.0 +(byte*) print_str::str#2 str zp[2]:6 1000001.0 zp[2]:2 [ print_line_cursor#11 print_line_cursor#24 print_line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] diff --git a/src/test/ref/semi-struct-2.asm b/src/test/ref/semi-struct-2.asm index cbf24b315..333662712 100644 --- a/src/test/ref/semi-struct-2.asm +++ b/src/test/ref/semi-struct-2.asm @@ -705,12 +705,10 @@ print_char: { print_word: { .label w = 8 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#82 (byte*) print_char_cursor#163 (byte*) print_screen#35 -Alias (byte*) print_str::str#18 = (byte*) print_str::str#19 -Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#33 (byte*) print_char_cursor#3 (byte*) print_line_cursor#34 (byte*) print_char_cursor#75 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#76 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#10 = (byte) print_byte::b#11 -Alias (byte*) print_char_cursor#79 = (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#80 (byte*) print_char_cursor#81 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#12 -Alias (byte*) print_line_cursor#3 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#13 (byte*) print_line_cursor#35 (byte*) print_char_cursor#84 (byte*) print_line_cursor#4 (byte*) print_char_cursor#14 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::return#1 -Alias (byte*) print_screen#12 = (byte*) print_screen#33 (byte*) print_screen#34 (byte*) print_screen#30 (byte*) print_screen#27 (byte*) print_screen#24 (byte*) print_screen#21 (byte*) print_screen#18 (byte*) print_screen#15 (byte*) print_screen#9 (byte*) print_screen#6 (byte*) print_screen#3 (byte*) print_screen#31 (byte*) print_screen#28 (byte*) print_screen#25 (byte*) print_screen#22 (byte*) print_screen#19 (byte*) print_screen#16 (byte*) print_screen#13 -Alias (byte*) print_line_cursor#115 = (byte*) print_line_cursor#151 (byte*) print_line_cursor#152 (byte*) print_line_cursor#150 (byte*) print_line_cursor#149 (byte*) print_line_cursor#148 (byte*) print_line_cursor#147 (byte*) print_line_cursor#145 (byte*) print_line_cursor#131 (byte*) print_line_cursor#99 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 -Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#204 (byte*) print_char_cursor#205 (byte*) print_char_cursor#203 (byte*) print_char_cursor#202 (byte*) print_char_cursor#201 (byte*) print_char_cursor#200 (byte*) print_char_cursor#199 (byte*) print_char_cursor#198 (byte*) print_char_cursor#197 (byte*) print_char_cursor#181 (byte*) print_char_cursor#165 -Alias (byte) main::fileEntry1_idx#0 = (byte) main::fileEntry1_idx#1 -Alias (word) mul8u::return#2 = (word) mul8u::return#5 -Alias (byte*) main::entry1#0 = (byte*) main::fileEntry1_return#0 (byte*~) main::fileEntry1_$1 (byte*) main::fileEntry1_return#2 (byte*) main::fileEntry1_return#1 (byte*) main::fileEntry1_return#3 (byte*~) main::$1 (byte*) main::entry1#7 (byte*) main::entry1#5 (byte*) main::entry1#3 (byte*) main::entry1#1 (byte*) main::entry1#10 (byte*) main::entry1#9 (byte*) main::entry1#8 (byte*) main::entry1#6 (byte*) main::entry1#4 (byte*) main::entry1#2 -Alias (byte) main::fileEntry2_idx#0 = (byte) main::fileEntry2_idx#1 -Alias (word) mul8u::return#3 = (word) mul8u::return#6 -Alias (byte*) main::entry2#0 = (byte*) main::fileEntry2_return#0 (byte*~) main::fileEntry2_$1 (byte*) main::fileEntry2_return#2 (byte*) main::fileEntry2_return#1 (byte*) main::fileEntry2_return#3 (byte*~) main::$2 (byte*) main::entry2#1 (byte*) main::entry2#16 (byte*) main::entry2#15 (byte*) main::entry2#14 (byte*) main::entry2#13 (byte*) main::entry2#12 (byte*) main::entry2#11 (byte*) main::entry2#10 (byte*) main::entry2#9 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#65 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#85 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#86 -Alias (byte*) print_line_cursor#37 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#87 -Alias (byte*) print_line_cursor#38 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#88 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#89 -Alias (byte*) print_line_cursor#39 = (byte*) print_line_cursor#8 -Alias (byte*) print_line_cursor#116 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#40 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#90 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#91 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 -Alias (byte*) print_screen#10 = (byte*) print_screen#7 (byte*) print_screen#4 (byte*) print_screen#32 (byte*) print_screen#29 (byte*) print_screen#26 (byte*) print_screen#23 (byte*) print_screen#20 (byte*) print_screen#17 (byte*) print_screen#14 -Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#66 -Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#166 (byte*) print_char_cursor#182 -Alias (byte*) main::entry2#2 = (byte*) main::entry2#7 (byte*) main::entry2#8 (byte*) main::entry2#6 (byte*) main::entry2#5 (byte*) main::entry2#4 (byte*) main::entry2#3 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#41 (byte*) print_line_cursor#67 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#92 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#93 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#42 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#94 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#43 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#96 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#44 -Alias (byte*) print_line_cursor#117 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#45 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#97 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#98 -Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 -Alias (byte*) print_screen#11 = (byte*) print_screen#8 (byte*) print_screen#5 -Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#85 (byte*) print_line_cursor#68 -Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#183 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#47 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#99 (byte*) print_char_cursor#30 -Alias (byte*) initEntry::entry#10 = (byte*) initEntry::entryBufDisk1_entry#0 (byte*) initEntry::entry#2 (byte*) initEntry::entryBufDisk1_entry#1 (byte*) initEntry::entry#27 (byte*) initEntry::entry#15 (byte*) initEntry::entry#3 (byte*) initEntry::entryBufEdit1_entry#0 (byte*) initEntry::entryBufEdit1_entry#1 (byte*) initEntry::entry#28 (byte*) initEntry::entry#16 (byte*) initEntry::entry#4 (byte*) initEntry::entryTsLen1_entry#0 (byte*) initEntry::entryTsLen1_entry#1 (byte*) initEntry::entry#29 (byte*) initEntry::entry#17 (byte*) initEntry::entry#5 (byte*) initEntry::entryTsOrder1_entry#0 (byte*) initEntry::entryTsOrder1_entry#1 (byte*) initEntry::entry#30 (byte*) initEntry::entry#18 (byte*) initEntry::entry#6 (byte*) initEntry::entryTLastLink1_entry#0 (byte*) initEntry::entryTLastLink1_entry#1 (byte*) initEntry::entry#31 (byte*) initEntry::entry#19 (byte*) initEntry::entry#7 (byte*) initEntry::entrySLastLink1_entry#0 (byte*) initEntry::entrySLastLink1_entry#1 (byte*) initEntry::entry#32 (byte*) initEntry::entry#20 (byte*) initEntry::entry#8 (byte*) initEntry::entryBFlag1_entry#0 (byte*) initEntry::entryBFlag1_entry#1 (byte*) initEntry::entry#33 (byte*) initEntry::entry#21 (byte*) initEntry::entry#9 (byte*) initEntry::entryBError1_entry#0 (byte*) initEntry::entryBError1_entry#1 (byte*) initEntry::entry#34 (byte*) initEntry::entry#22 (byte*) initEntry::entryUCross1_entry#0 (byte*) initEntry::entryUCross1_entry#1 (byte*) initEntry::entry#35 (byte*) initEntry::entry#23 (byte*) initEntry::entry#11 (byte*) initEntry::entryBAddrLo1_entry#0 (byte*) initEntry::entryBAddrLo1_entry#1 (byte*) initEntry::entry#36 (byte*) initEntry::entry#24 (byte*) initEntry::entry#12 (byte*) initEntry::entryBAddrHi1_entry#0 (byte*) initEntry::entryBAddrHi1_entry#1 (byte*) initEntry::entry#37 (byte*) initEntry::entry#25 (byte*) initEntry::entry#13 (byte*) initEntry::entryTHi1_entry#0 (byte*) initEntry::entryTHi1_entry#1 (byte*) initEntry::entry#38 (byte*) initEntry::entry#26 (byte*) initEntry::entry#14 (byte*) initEntry::entryTLo1_entry#0 (byte*) initEntry::entryTLo1_entry#1 -Alias (byte) initEntry::n#10 = (byte) initEntry::n#28 (byte) initEntry::n#41 (byte) initEntry::n#15 (byte) initEntry::n#2 (byte) initEntry::n#29 (byte) initEntry::n#16 (byte) initEntry::n#3 (byte) initEntry::n#30 (byte) initEntry::n#17 (byte) initEntry::n#4 (byte) initEntry::n#31 (byte) initEntry::n#18 (byte) initEntry::n#5 (byte) initEntry::n#32 (byte) initEntry::n#19 (byte) initEntry::n#6 (byte) initEntry::n#33 (byte) initEntry::n#20 (byte) initEntry::n#7 (byte) initEntry::n#34 (byte) initEntry::n#21 (byte) initEntry::n#8 (byte) initEntry::n#35 (byte) initEntry::n#22 (byte) initEntry::n#9 (byte) initEntry::n#36 (byte) initEntry::n#23 (byte) initEntry::n#37 (byte) initEntry::n#24 (byte) initEntry::n#11 (byte) initEntry::n#38 (byte) initEntry::n#25 (byte) initEntry::n#12 (byte) initEntry::n#39 (byte) initEntry::n#26 (byte) initEntry::n#13 (byte) initEntry::n#40 (byte) initEntry::n#27 (byte) initEntry::n#14 -Alias (byte**) initEntry::entryBufDisk1_return#0 = (byte**~) initEntry::entryBufDisk1_$1 (byte**) initEntry::entryBufDisk1_return#2 (byte**) initEntry::entryBufDisk1_return#1 (byte**) initEntry::entryBufDisk1_return#3 (byte**~) initEntry::$0 -Alias (byte**) initEntry::entryBufEdit1_return#0 = (byte**~) initEntry::entryBufEdit1_$1 (byte**) initEntry::entryBufEdit1_return#2 (byte**) initEntry::entryBufEdit1_return#1 (byte**) initEntry::entryBufEdit1_return#3 (byte**~) initEntry::$2 -Alias (word*) initEntry::entryTsLen1_return#0 = (word*~) initEntry::entryTsLen1_$1 (word*) initEntry::entryTsLen1_return#2 (word*) initEntry::entryTsLen1_return#1 (word*) initEntry::entryTsLen1_return#3 (word*~) initEntry::$4 -Alias (word**) initEntry::entryTsOrder1_return#0 = (word**~) initEntry::entryTsOrder1_$1 (word**) initEntry::entryTsOrder1_return#2 (word**) initEntry::entryTsOrder1_return#1 (word**) initEntry::entryTsOrder1_return#3 (word**~) initEntry::$6 -Alias (byte*) initEntry::entryTLastLink1_return#0 = (byte*~) initEntry::entryTLastLink1_$1 (byte*~) initEntry::entryTLastLink1_$0 (byte*) initEntry::entryTLastLink1_return#2 (byte*) initEntry::entryTLastLink1_return#1 (byte*) initEntry::entryTLastLink1_return#3 (byte*~) initEntry::$8 -Alias (byte*) initEntry::entrySLastLink1_return#0 = (byte*~) initEntry::entrySLastLink1_$1 (byte*~) initEntry::entrySLastLink1_$0 (byte*) initEntry::entrySLastLink1_return#2 (byte*) initEntry::entrySLastLink1_return#1 (byte*) initEntry::entrySLastLink1_return#3 (byte*~) initEntry::$10 -Alias (byte*) initEntry::entryBFlag1_return#0 = (byte*~) initEntry::entryBFlag1_$1 (byte*~) initEntry::entryBFlag1_$0 (byte*) initEntry::entryBFlag1_return#2 (byte*) initEntry::entryBFlag1_return#1 (byte*) initEntry::entryBFlag1_return#3 (byte*~) initEntry::$12 -Alias (byte*) initEntry::entryBError1_return#0 = (byte*~) initEntry::entryBError1_$0 (byte*) initEntry::entryBError1_return#2 (byte*) initEntry::entryBError1_return#1 (byte*) initEntry::entryBError1_return#3 (byte*~) initEntry::$14 -Alias (word*) initEntry::entryUCross1_return#0 = (word*~) initEntry::entryUCross1_$1 (word*) initEntry::entryUCross1_return#2 (word*) initEntry::entryUCross1_return#1 (word*) initEntry::entryUCross1_return#3 (word*~) initEntry::$16 -Alias (byte*) initEntry::entryBAddrLo1_return#0 = (byte*~) initEntry::entryBAddrLo1_$1 (byte*~) initEntry::entryBAddrLo1_$0 (byte*) initEntry::entryBAddrLo1_return#2 (byte*) initEntry::entryBAddrLo1_return#1 (byte*) initEntry::entryBAddrLo1_return#3 (byte*~) initEntry::$18 -Alias (byte*) initEntry::entryBAddrHi1_return#0 = (byte*~) initEntry::entryBAddrHi1_$1 (byte*~) initEntry::entryBAddrHi1_$0 (byte*) initEntry::entryBAddrHi1_return#2 (byte*) initEntry::entryBAddrHi1_return#1 (byte*) initEntry::entryBAddrHi1_return#3 (byte*~) initEntry::$20 -Alias (byte*) initEntry::entryTHi1_return#0 = (byte*~) initEntry::entryTHi1_$1 (byte*~) initEntry::entryTHi1_$0 (byte*) initEntry::entryTHi1_return#2 (byte*) initEntry::entryTHi1_return#1 (byte*) initEntry::entryTHi1_return#3 (byte*~) initEntry::$22 -Alias (byte*) initEntry::entryTLo1_return#0 = (byte*~) initEntry::entryTLo1_$1 (byte*~) initEntry::entryTLo1_$0 (byte*) initEntry::entryTLo1_return#2 (byte*) initEntry::entryTLo1_return#1 (byte*) initEntry::entryTLo1_return#3 (byte*~) initEntry::$24 -Alias (byte*) printEntry::entry#10 = (byte*) printEntry::entry#2 (byte*) printEntry::entry#15 (byte*) printEntry::entryBufDisk1_entry#0 (byte*) printEntry::entryBufDisk1_entry#1 (byte*) printEntry::entry#64 (byte*) printEntry::entry#52 (byte*) printEntry::entry#40 (byte*) printEntry::entry#28 (byte*) printEntry::entry#16 (byte*) printEntry::entry#3 (byte*) printEntry::entryBufEdit1_entry#0 (byte*) printEntry::entryBufEdit1_entry#1 (byte*) printEntry::entry#65 (byte*) printEntry::entry#53 (byte*) printEntry::entry#41 (byte*) printEntry::entry#29 (byte*) printEntry::entry#17 (byte*) printEntry::entry#4 (byte*) printEntry::entryTsLen1_entry#0 (byte*) printEntry::entryTsLen1_entry#1 (byte*) printEntry::entry#66 (byte*) printEntry::entry#54 (byte*) printEntry::entry#42 (byte*) printEntry::entry#30 (byte*) printEntry::entry#18 (byte*) printEntry::entry#5 (byte*) printEntry::entryTsOrder1_entry#0 (byte*) printEntry::entryTsOrder1_entry#1 (byte*) printEntry::entry#67 (byte*) printEntry::entry#55 (byte*) printEntry::entry#43 (byte*) printEntry::entry#31 (byte*) printEntry::entry#19 (byte*) printEntry::entry#6 (byte*) printEntry::entryTLastLink1_entry#0 (byte*) printEntry::entryTLastLink1_entry#1 (byte*) printEntry::entry#68 (byte*) printEntry::entry#56 (byte*) printEntry::entry#44 (byte*) printEntry::entry#32 (byte*) printEntry::entry#20 (byte*) printEntry::entry#7 (byte*) printEntry::entrySLastLink1_entry#0 (byte*) printEntry::entrySLastLink1_entry#1 (byte*) printEntry::entry#69 (byte*) printEntry::entry#57 (byte*) printEntry::entry#45 (byte*) printEntry::entry#33 (byte*) printEntry::entry#21 (byte*) printEntry::entry#8 (byte*) printEntry::entryBFlag1_entry#0 (byte*) printEntry::entryBFlag1_entry#1 (byte*) printEntry::entry#70 (byte*) printEntry::entry#58 (byte*) printEntry::entry#46 (byte*) printEntry::entry#34 (byte*) printEntry::entry#22 (byte*) printEntry::entry#9 (byte*) printEntry::entryBError1_entry#0 (byte*) printEntry::entryBError1_entry#1 (byte*) printEntry::entry#71 (byte*) printEntry::entry#59 (byte*) printEntry::entry#47 (byte*) printEntry::entry#35 (byte*) printEntry::entry#23 (byte*) printEntry::entryUCross1_entry#0 (byte*) printEntry::entryUCross1_entry#1 (byte*) printEntry::entry#72 (byte*) printEntry::entry#60 (byte*) printEntry::entry#48 (byte*) printEntry::entry#36 (byte*) printEntry::entry#24 (byte*) printEntry::entry#11 (byte*) printEntry::entryBAddrLo1_entry#0 (byte*) printEntry::entryBAddrLo1_entry#1 (byte*) printEntry::entry#73 (byte*) printEntry::entry#61 (byte*) printEntry::entry#49 (byte*) printEntry::entry#37 (byte*) printEntry::entry#25 (byte*) printEntry::entry#12 (byte*) printEntry::entryBAddrHi1_entry#0 (byte*) printEntry::entryBAddrHi1_entry#1 (byte*) printEntry::entry#74 (byte*) printEntry::entry#62 (byte*) printEntry::entry#50 (byte*) printEntry::entry#38 (byte*) printEntry::entry#26 (byte*) printEntry::entry#13 (byte*) printEntry::entryTHi1_entry#0 (byte*) printEntry::entryTHi1_entry#1 (byte*) printEntry::entry#75 (byte*) printEntry::entry#63 (byte*) printEntry::entry#51 (byte*) printEntry::entry#39 (byte*) printEntry::entry#27 (byte*) printEntry::entry#14 (byte*) printEntry::entryTLo1_entry#0 (byte*) printEntry::entryTLo1_entry#1 -Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#132 (byte*) print_line_cursor#146 (byte*) print_line_cursor#118 (byte*) print_line_cursor#86 (byte*) print_line_cursor#69 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#184 (byte*) print_char_cursor#168 (byte*) print_char_cursor#150 -Alias (byte**) printEntry::entryBufDisk1_return#0 = (byte**~) printEntry::entryBufDisk1_$1 (byte**) printEntry::entryBufDisk1_return#2 (byte**) printEntry::entryBufDisk1_return#1 (byte**) printEntry::entryBufDisk1_return#3 (byte**~) printEntry::$1 -Alias (word) print_word::w#0 = (word~) printEntry::$2 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#48 (byte*) print_line_cursor#133 (byte*) print_line_cursor#119 (byte*) print_line_cursor#87 (byte*) print_line_cursor#70 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#185 (byte*) print_char_cursor#169 (byte*) print_char_cursor#151 -Alias (byte**) printEntry::entryBufEdit1_return#0 = (byte**~) printEntry::entryBufEdit1_$1 (byte**) printEntry::entryBufEdit1_return#2 (byte**) printEntry::entryBufEdit1_return#1 (byte**) printEntry::entryBufEdit1_return#3 (byte**~) printEntry::$6 -Alias (word) print_word::w#1 = (word~) printEntry::$7 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#35 -Alias (byte*) print_line_cursor#104 = (byte*) print_line_cursor#18 (byte*) print_line_cursor#49 (byte*) print_line_cursor#134 (byte*) print_line_cursor#120 (byte*) print_line_cursor#88 (byte*) print_line_cursor#71 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#186 (byte*) print_char_cursor#170 (byte*) print_char_cursor#152 -Alias (word*) printEntry::entryTsLen1_return#0 = (word*~) printEntry::entryTsLen1_$1 (word*) printEntry::entryTsLen1_return#2 (word*) printEntry::entryTsLen1_return#1 (word*) printEntry::entryTsLen1_return#3 (word*~) printEntry::$11 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#38 -Alias (byte*) print_line_cursor#105 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#50 (byte*) print_line_cursor#135 (byte*) print_line_cursor#121 (byte*) print_line_cursor#89 (byte*) print_line_cursor#72 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#187 (byte*) print_char_cursor#171 (byte*) print_char_cursor#153 -Alias (word**) printEntry::entryTsOrder1_return#0 = (word**~) printEntry::entryTsOrder1_$1 (word**) printEntry::entryTsOrder1_return#2 (word**) printEntry::entryTsOrder1_return#1 (word**) printEntry::entryTsOrder1_return#3 (word**~) printEntry::$15 -Alias (word) print_word::w#3 = (word~) printEntry::$16 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#106 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#51 (byte*) print_line_cursor#136 (byte*) print_line_cursor#122 (byte*) print_line_cursor#90 (byte*) print_line_cursor#73 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#188 (byte*) print_char_cursor#172 (byte*) print_char_cursor#154 -Alias (byte*) printEntry::entryTLastLink1_return#0 = (byte*~) printEntry::entryTLastLink1_$1 (byte*~) printEntry::entryTLastLink1_$0 (byte*) printEntry::entryTLastLink1_return#2 (byte*) printEntry::entryTLastLink1_return#1 (byte*) printEntry::entryTLastLink1_return#3 (byte*~) printEntry::$20 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#107 = (byte*) print_line_cursor#21 (byte*) print_line_cursor#52 (byte*) print_line_cursor#137 (byte*) print_line_cursor#123 (byte*) print_line_cursor#91 (byte*) print_line_cursor#74 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#189 (byte*) print_char_cursor#173 (byte*) print_char_cursor#155 -Alias (byte*) printEntry::entrySLastLink1_return#0 = (byte*~) printEntry::entrySLastLink1_$1 (byte*~) printEntry::entrySLastLink1_$0 (byte*) printEntry::entrySLastLink1_return#2 (byte*) printEntry::entrySLastLink1_return#1 (byte*) printEntry::entrySLastLink1_return#3 (byte*~) printEntry::$24 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#47 -Alias (byte*) print_line_cursor#108 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#53 (byte*) print_line_cursor#138 (byte*) print_line_cursor#124 (byte*) print_line_cursor#92 (byte*) print_line_cursor#75 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#190 (byte*) print_char_cursor#174 (byte*) print_char_cursor#156 -Alias (byte*) printEntry::entryBFlag1_return#0 = (byte*~) printEntry::entryBFlag1_$1 (byte*~) printEntry::entryBFlag1_$0 (byte*) printEntry::entryBFlag1_return#2 (byte*) printEntry::entryBFlag1_return#1 (byte*) printEntry::entryBFlag1_return#3 (byte*~) printEntry::$28 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#50 -Alias (byte*) print_line_cursor#109 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#54 (byte*) print_line_cursor#139 (byte*) print_line_cursor#125 (byte*) print_line_cursor#93 (byte*) print_line_cursor#76 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#52 (byte*) print_char_cursor#191 (byte*) print_char_cursor#175 (byte*) print_char_cursor#157 -Alias (byte*) printEntry::entryBError1_return#0 = (byte*~) printEntry::entryBError1_$0 (byte*) printEntry::entryBError1_return#2 (byte*) printEntry::entryBError1_return#1 (byte*) printEntry::entryBError1_return#3 (byte*~) printEntry::$32 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#53 -Alias (byte*) print_line_cursor#110 = (byte*) print_line_cursor#24 (byte*) print_line_cursor#55 (byte*) print_line_cursor#140 (byte*) print_line_cursor#126 (byte*) print_line_cursor#94 (byte*) print_line_cursor#77 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#192 (byte*) print_char_cursor#176 (byte*) print_char_cursor#158 -Alias (word*) printEntry::entryUCross1_return#0 = (word*~) printEntry::entryUCross1_$1 (word*) printEntry::entryUCross1_return#2 (word*) printEntry::entryUCross1_return#1 (word*) printEntry::entryUCross1_return#3 (word*~) printEntry::$36 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#56 -Alias (byte*) print_line_cursor#111 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#56 (byte*) print_line_cursor#141 (byte*) print_line_cursor#127 (byte*) print_line_cursor#95 (byte*) print_line_cursor#78 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#193 (byte*) print_char_cursor#177 (byte*) print_char_cursor#159 -Alias (byte*) printEntry::entryBAddrLo1_return#0 = (byte*~) printEntry::entryBAddrLo1_$1 (byte*~) printEntry::entryBAddrLo1_$0 (byte*) printEntry::entryBAddrLo1_return#2 (byte*) printEntry::entryBAddrLo1_return#1 (byte*) printEntry::entryBAddrLo1_return#3 (byte*~) printEntry::$40 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#59 -Alias (byte*) print_line_cursor#112 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#57 (byte*) print_line_cursor#142 (byte*) print_line_cursor#128 (byte*) print_line_cursor#96 (byte*) print_line_cursor#79 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#194 (byte*) print_char_cursor#178 (byte*) print_char_cursor#160 -Alias (byte*) printEntry::entryBAddrHi1_return#0 = (byte*~) printEntry::entryBAddrHi1_$1 (byte*~) printEntry::entryBAddrHi1_$0 (byte*) printEntry::entryBAddrHi1_return#2 (byte*) printEntry::entryBAddrHi1_return#1 (byte*) printEntry::entryBAddrHi1_return#3 (byte*~) printEntry::$44 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#113 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#58 (byte*) print_line_cursor#143 (byte*) print_line_cursor#129 (byte*) print_line_cursor#97 (byte*) print_line_cursor#80 -Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#195 (byte*) print_char_cursor#179 (byte*) print_char_cursor#161 -Alias (byte*) printEntry::entryTHi1_return#0 = (byte*~) printEntry::entryTHi1_$1 (byte*~) printEntry::entryTHi1_$0 (byte*) printEntry::entryTHi1_return#2 (byte*) printEntry::entryTHi1_return#1 (byte*) printEntry::entryTHi1_return#3 (byte*~) printEntry::$48 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#65 -Alias (byte*) print_line_cursor#114 = (byte*) print_line_cursor#28 (byte*) print_line_cursor#59 (byte*) print_line_cursor#144 (byte*) print_line_cursor#130 (byte*) print_line_cursor#98 (byte*) print_line_cursor#81 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#66 -Alias (byte*) print_char_cursor#137 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#196 (byte*) print_char_cursor#180 (byte*) print_char_cursor#162 -Alias (byte*) printEntry::entryTLo1_return#0 = (byte*~) printEntry::entryTLo1_$1 (byte*~) printEntry::entryTLo1_$0 (byte*) printEntry::entryTLo1_return#2 (byte*) printEntry::entryTLo1_return#1 (byte*) printEntry::entryTLo1_return#3 (byte*~) printEntry::$52 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#68 -Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#30 -Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#140 (byte*) print_char_cursor#70 -Alias (byte*) print_line_cursor#31 = (byte*) print_line_cursor#62 -Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#71 +Alias mul8u::a#3 = mul8u::a#4 mul8u::a#7 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#4 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#82 print_char_cursor#163 print_screen#35 +Alias print_str::str#18 = print_str::str#19 +Alias print_char_cursor#142 = print_char_cursor#72 print_char_cursor#73 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#33 print_char_cursor#3 print_line_cursor#34 print_char_cursor#75 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#5 = print_word::w#6 +Alias print_char_cursor#5 = print_char_cursor#76 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#6 = print_char_cursor#77 print_char_cursor#78 print_char_cursor#7 +Alias print_byte::b#10 = print_byte::b#11 +Alias print_char_cursor#79 = print_char_cursor#8 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#80 print_char_cursor#81 +Alias print_char_cursor#11 = print_char_cursor#83 print_char_cursor#12 +Alias print_line_cursor#3 = print_screen#2 print_screen#1 print_char_cursor#13 print_line_cursor#35 print_char_cursor#84 print_line_cursor#4 print_char_cursor#14 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#4 keyboard_key_pressed::return#1 +Alias print_screen#12 = print_screen#33 print_screen#34 print_screen#30 print_screen#27 print_screen#24 print_screen#21 print_screen#18 print_screen#15 print_screen#9 print_screen#6 print_screen#3 print_screen#31 print_screen#28 print_screen#25 print_screen#22 print_screen#19 print_screen#16 print_screen#13 +Alias print_line_cursor#115 = print_line_cursor#151 print_line_cursor#152 print_line_cursor#150 print_line_cursor#149 print_line_cursor#148 print_line_cursor#147 print_line_cursor#145 print_line_cursor#131 print_line_cursor#99 print_line_cursor#83 print_line_cursor#64 +Alias print_char_cursor#146 = print_char_cursor#204 print_char_cursor#205 print_char_cursor#203 print_char_cursor#202 print_char_cursor#201 print_char_cursor#200 print_char_cursor#199 print_char_cursor#198 print_char_cursor#197 print_char_cursor#181 print_char_cursor#165 +Alias main::fileEntry1_idx#0 = main::fileEntry1_idx#1 +Alias mul8u::return#2 = mul8u::return#5 +Alias main::entry1#0 = main::fileEntry1_return#0 main::fileEntry1_$1 main::fileEntry1_return#2 main::fileEntry1_return#1 main::fileEntry1_return#3 main::$1 main::entry1#7 main::entry1#5 main::entry1#3 main::entry1#1 main::entry1#10 main::entry1#9 main::entry1#8 main::entry1#6 main::entry1#4 main::entry1#2 +Alias main::fileEntry2_idx#0 = main::fileEntry2_idx#1 +Alias mul8u::return#3 = mul8u::return#6 +Alias main::entry2#0 = main::fileEntry2_return#0 main::fileEntry2_$1 main::fileEntry2_return#2 main::fileEntry2_return#1 main::fileEntry2_return#3 main::$2 main::entry2#1 main::entry2#16 main::entry2#15 main::entry2#14 main::entry2#13 main::entry2#12 main::entry2#11 main::entry2#10 main::entry2#9 +Alias print_line_cursor#36 = print_line_cursor#5 print_line_cursor#65 +Alias print_char_cursor#15 = print_char_cursor#85 +Alias print_char_cursor#16 = print_char_cursor#86 +Alias print_line_cursor#37 = print_line_cursor#6 +Alias print_char_cursor#17 = print_char_cursor#87 +Alias print_line_cursor#38 = print_line_cursor#7 +Alias print_char_cursor#18 = print_char_cursor#88 +Alias print_char_cursor#19 = print_char_cursor#89 +Alias print_line_cursor#39 = print_line_cursor#8 +Alias print_line_cursor#116 = print_line_cursor#9 print_line_cursor#40 +Alias print_char_cursor#20 = print_char_cursor#90 +Alias print_char_cursor#21 = print_char_cursor#91 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#5 +Alias print_screen#10 = print_screen#7 print_screen#4 print_screen#32 print_screen#29 print_screen#26 print_screen#23 print_screen#20 print_screen#17 print_screen#14 +Alias print_line_cursor#100 = print_line_cursor#84 print_line_cursor#66 +Alias print_char_cursor#147 = print_char_cursor#166 print_char_cursor#182 +Alias main::entry2#2 = main::entry2#7 main::entry2#8 main::entry2#6 main::entry2#5 main::entry2#4 main::entry2#3 +Alias print_line_cursor#10 = print_line_cursor#41 print_line_cursor#67 +Alias print_char_cursor#22 = print_char_cursor#92 +Alias print_char_cursor#23 = print_char_cursor#93 +Alias print_line_cursor#11 = print_line_cursor#42 +Alias print_char_cursor#24 = print_char_cursor#94 +Alias print_line_cursor#12 = print_line_cursor#43 +Alias print_char_cursor#25 = print_char_cursor#95 +Alias print_char_cursor#26 = print_char_cursor#96 +Alias print_line_cursor#13 = print_line_cursor#44 +Alias print_line_cursor#117 = print_line_cursor#14 print_line_cursor#45 +Alias print_char_cursor#27 = print_char_cursor#97 +Alias print_char_cursor#28 = print_char_cursor#98 +Alias keyboard_key_pressed::return#3 = keyboard_key_pressed::return#6 +Alias print_screen#11 = print_screen#8 print_screen#5 +Alias print_line_cursor#101 = print_line_cursor#85 print_line_cursor#68 +Alias print_char_cursor#148 = print_char_cursor#167 print_char_cursor#183 +Alias print_line_cursor#15 = print_line_cursor#46 print_line_cursor#47 print_line_cursor#16 +Alias print_char_cursor#100 = print_char_cursor#29 print_char_cursor#99 print_char_cursor#30 +Alias initEntry::entry#10 = initEntry::entryBufDisk1_entry#0 initEntry::entry#2 initEntry::entryBufDisk1_entry#1 initEntry::entry#27 initEntry::entry#15 initEntry::entry#3 initEntry::entryBufEdit1_entry#0 initEntry::entryBufEdit1_entry#1 initEntry::entry#28 initEntry::entry#16 initEntry::entry#4 initEntry::entryTsLen1_entry#0 initEntry::entryTsLen1_entry#1 initEntry::entry#29 initEntry::entry#17 initEntry::entry#5 initEntry::entryTsOrder1_entry#0 initEntry::entryTsOrder1_entry#1 initEntry::entry#30 initEntry::entry#18 initEntry::entry#6 initEntry::entryTLastLink1_entry#0 initEntry::entryTLastLink1_entry#1 initEntry::entry#31 initEntry::entry#19 initEntry::entry#7 initEntry::entrySLastLink1_entry#0 initEntry::entrySLastLink1_entry#1 initEntry::entry#32 initEntry::entry#20 initEntry::entry#8 initEntry::entryBFlag1_entry#0 initEntry::entryBFlag1_entry#1 initEntry::entry#33 initEntry::entry#21 initEntry::entry#9 initEntry::entryBError1_entry#0 initEntry::entryBError1_entry#1 initEntry::entry#34 initEntry::entry#22 initEntry::entryUCross1_entry#0 initEntry::entryUCross1_entry#1 initEntry::entry#35 initEntry::entry#23 initEntry::entry#11 initEntry::entryBAddrLo1_entry#0 initEntry::entryBAddrLo1_entry#1 initEntry::entry#36 initEntry::entry#24 initEntry::entry#12 initEntry::entryBAddrHi1_entry#0 initEntry::entryBAddrHi1_entry#1 initEntry::entry#37 initEntry::entry#25 initEntry::entry#13 initEntry::entryTHi1_entry#0 initEntry::entryTHi1_entry#1 initEntry::entry#38 initEntry::entry#26 initEntry::entry#14 initEntry::entryTLo1_entry#0 initEntry::entryTLo1_entry#1 +Alias initEntry::n#10 = initEntry::n#28 initEntry::n#41 initEntry::n#15 initEntry::n#2 initEntry::n#29 initEntry::n#16 initEntry::n#3 initEntry::n#30 initEntry::n#17 initEntry::n#4 initEntry::n#31 initEntry::n#18 initEntry::n#5 initEntry::n#32 initEntry::n#19 initEntry::n#6 initEntry::n#33 initEntry::n#20 initEntry::n#7 initEntry::n#34 initEntry::n#21 initEntry::n#8 initEntry::n#35 initEntry::n#22 initEntry::n#9 initEntry::n#36 initEntry::n#23 initEntry::n#37 initEntry::n#24 initEntry::n#11 initEntry::n#38 initEntry::n#25 initEntry::n#12 initEntry::n#39 initEntry::n#26 initEntry::n#13 initEntry::n#40 initEntry::n#27 initEntry::n#14 +Alias initEntry::entryBufDisk1_return#0 = initEntry::entryBufDisk1_$1 initEntry::entryBufDisk1_return#2 initEntry::entryBufDisk1_return#1 initEntry::entryBufDisk1_return#3 initEntry::$0 +Alias initEntry::entryBufEdit1_return#0 = initEntry::entryBufEdit1_$1 initEntry::entryBufEdit1_return#2 initEntry::entryBufEdit1_return#1 initEntry::entryBufEdit1_return#3 initEntry::$2 +Alias initEntry::entryTsLen1_return#0 = initEntry::entryTsLen1_$1 initEntry::entryTsLen1_return#2 initEntry::entryTsLen1_return#1 initEntry::entryTsLen1_return#3 initEntry::$4 +Alias initEntry::entryTsOrder1_return#0 = initEntry::entryTsOrder1_$1 initEntry::entryTsOrder1_return#2 initEntry::entryTsOrder1_return#1 initEntry::entryTsOrder1_return#3 initEntry::$6 +Alias initEntry::entryTLastLink1_return#0 = initEntry::entryTLastLink1_$1 initEntry::entryTLastLink1_$0 initEntry::entryTLastLink1_return#2 initEntry::entryTLastLink1_return#1 initEntry::entryTLastLink1_return#3 initEntry::$8 +Alias initEntry::entrySLastLink1_return#0 = initEntry::entrySLastLink1_$1 initEntry::entrySLastLink1_$0 initEntry::entrySLastLink1_return#2 initEntry::entrySLastLink1_return#1 initEntry::entrySLastLink1_return#3 initEntry::$10 +Alias initEntry::entryBFlag1_return#0 = initEntry::entryBFlag1_$1 initEntry::entryBFlag1_$0 initEntry::entryBFlag1_return#2 initEntry::entryBFlag1_return#1 initEntry::entryBFlag1_return#3 initEntry::$12 +Alias initEntry::entryBError1_return#0 = initEntry::entryBError1_$0 initEntry::entryBError1_return#2 initEntry::entryBError1_return#1 initEntry::entryBError1_return#3 initEntry::$14 +Alias initEntry::entryUCross1_return#0 = initEntry::entryUCross1_$1 initEntry::entryUCross1_return#2 initEntry::entryUCross1_return#1 initEntry::entryUCross1_return#3 initEntry::$16 +Alias initEntry::entryBAddrLo1_return#0 = initEntry::entryBAddrLo1_$1 initEntry::entryBAddrLo1_$0 initEntry::entryBAddrLo1_return#2 initEntry::entryBAddrLo1_return#1 initEntry::entryBAddrLo1_return#3 initEntry::$18 +Alias initEntry::entryBAddrHi1_return#0 = initEntry::entryBAddrHi1_$1 initEntry::entryBAddrHi1_$0 initEntry::entryBAddrHi1_return#2 initEntry::entryBAddrHi1_return#1 initEntry::entryBAddrHi1_return#3 initEntry::$20 +Alias initEntry::entryTHi1_return#0 = initEntry::entryTHi1_$1 initEntry::entryTHi1_$0 initEntry::entryTHi1_return#2 initEntry::entryTHi1_return#1 initEntry::entryTHi1_return#3 initEntry::$22 +Alias initEntry::entryTLo1_return#0 = initEntry::entryTLo1_$1 initEntry::entryTLo1_$0 initEntry::entryTLo1_return#2 initEntry::entryTLo1_return#1 initEntry::entryTLo1_return#3 initEntry::$24 +Alias printEntry::entry#10 = printEntry::entry#2 printEntry::entry#15 printEntry::entryBufDisk1_entry#0 printEntry::entryBufDisk1_entry#1 printEntry::entry#64 printEntry::entry#52 printEntry::entry#40 printEntry::entry#28 printEntry::entry#16 printEntry::entry#3 printEntry::entryBufEdit1_entry#0 printEntry::entryBufEdit1_entry#1 printEntry::entry#65 printEntry::entry#53 printEntry::entry#41 printEntry::entry#29 printEntry::entry#17 printEntry::entry#4 printEntry::entryTsLen1_entry#0 printEntry::entryTsLen1_entry#1 printEntry::entry#66 printEntry::entry#54 printEntry::entry#42 printEntry::entry#30 printEntry::entry#18 printEntry::entry#5 printEntry::entryTsOrder1_entry#0 printEntry::entryTsOrder1_entry#1 printEntry::entry#67 printEntry::entry#55 printEntry::entry#43 printEntry::entry#31 printEntry::entry#19 printEntry::entry#6 printEntry::entryTLastLink1_entry#0 printEntry::entryTLastLink1_entry#1 printEntry::entry#68 printEntry::entry#56 printEntry::entry#44 printEntry::entry#32 printEntry::entry#20 printEntry::entry#7 printEntry::entrySLastLink1_entry#0 printEntry::entrySLastLink1_entry#1 printEntry::entry#69 printEntry::entry#57 printEntry::entry#45 printEntry::entry#33 printEntry::entry#21 printEntry::entry#8 printEntry::entryBFlag1_entry#0 printEntry::entryBFlag1_entry#1 printEntry::entry#70 printEntry::entry#58 printEntry::entry#46 printEntry::entry#34 printEntry::entry#22 printEntry::entry#9 printEntry::entryBError1_entry#0 printEntry::entryBError1_entry#1 printEntry::entry#71 printEntry::entry#59 printEntry::entry#47 printEntry::entry#35 printEntry::entry#23 printEntry::entryUCross1_entry#0 printEntry::entryUCross1_entry#1 printEntry::entry#72 printEntry::entry#60 printEntry::entry#48 printEntry::entry#36 printEntry::entry#24 printEntry::entry#11 printEntry::entryBAddrLo1_entry#0 printEntry::entryBAddrLo1_entry#1 printEntry::entry#73 printEntry::entry#61 printEntry::entry#49 printEntry::entry#37 printEntry::entry#25 printEntry::entry#12 printEntry::entryBAddrHi1_entry#0 printEntry::entryBAddrHi1_entry#1 printEntry::entry#74 printEntry::entry#62 printEntry::entry#50 printEntry::entry#38 printEntry::entry#26 printEntry::entry#13 printEntry::entryTHi1_entry#0 printEntry::entryTHi1_entry#1 printEntry::entry#75 printEntry::entry#63 printEntry::entry#51 printEntry::entry#39 printEntry::entry#27 printEntry::entry#14 printEntry::entryTLo1_entry#0 printEntry::entryTLo1_entry#1 +Alias print_line_cursor#102 = print_line_cursor#132 print_line_cursor#146 print_line_cursor#118 print_line_cursor#86 print_line_cursor#69 +Alias print_char_cursor#101 = print_char_cursor#31 print_char_cursor#184 print_char_cursor#168 print_char_cursor#150 +Alias printEntry::entryBufDisk1_return#0 = printEntry::entryBufDisk1_$1 printEntry::entryBufDisk1_return#2 printEntry::entryBufDisk1_return#1 printEntry::entryBufDisk1_return#3 printEntry::$1 +Alias print_word::w#0 = printEntry::$2 +Alias print_char_cursor#102 = print_char_cursor#32 +Alias print_line_cursor#103 = print_line_cursor#17 print_line_cursor#48 print_line_cursor#133 print_line_cursor#119 print_line_cursor#87 print_line_cursor#70 +Alias print_char_cursor#103 = print_char_cursor#33 +Alias print_char_cursor#104 = print_char_cursor#34 print_char_cursor#185 print_char_cursor#169 print_char_cursor#151 +Alias printEntry::entryBufEdit1_return#0 = printEntry::entryBufEdit1_$1 printEntry::entryBufEdit1_return#2 printEntry::entryBufEdit1_return#1 printEntry::entryBufEdit1_return#3 printEntry::$6 +Alias print_word::w#1 = printEntry::$7 +Alias print_char_cursor#105 = print_char_cursor#35 +Alias print_line_cursor#104 = print_line_cursor#18 print_line_cursor#49 print_line_cursor#134 print_line_cursor#120 print_line_cursor#88 print_line_cursor#71 +Alias print_char_cursor#106 = print_char_cursor#36 +Alias print_char_cursor#107 = print_char_cursor#37 print_char_cursor#186 print_char_cursor#170 print_char_cursor#152 +Alias printEntry::entryTsLen1_return#0 = printEntry::entryTsLen1_$1 printEntry::entryTsLen1_return#2 printEntry::entryTsLen1_return#1 printEntry::entryTsLen1_return#3 printEntry::$11 +Alias print_char_cursor#108 = print_char_cursor#38 +Alias print_line_cursor#105 = print_line_cursor#19 print_line_cursor#50 print_line_cursor#135 print_line_cursor#121 print_line_cursor#89 print_line_cursor#72 +Alias print_char_cursor#109 = print_char_cursor#39 +Alias print_char_cursor#110 = print_char_cursor#40 print_char_cursor#187 print_char_cursor#171 print_char_cursor#153 +Alias printEntry::entryTsOrder1_return#0 = printEntry::entryTsOrder1_$1 printEntry::entryTsOrder1_return#2 printEntry::entryTsOrder1_return#1 printEntry::entryTsOrder1_return#3 printEntry::$15 +Alias print_word::w#3 = printEntry::$16 +Alias print_char_cursor#111 = print_char_cursor#41 +Alias print_line_cursor#106 = print_line_cursor#20 print_line_cursor#51 print_line_cursor#136 print_line_cursor#122 print_line_cursor#90 print_line_cursor#73 +Alias print_char_cursor#112 = print_char_cursor#42 +Alias print_char_cursor#113 = print_char_cursor#43 print_char_cursor#188 print_char_cursor#172 print_char_cursor#154 +Alias printEntry::entryTLastLink1_return#0 = printEntry::entryTLastLink1_$1 printEntry::entryTLastLink1_$0 printEntry::entryTLastLink1_return#2 printEntry::entryTLastLink1_return#1 printEntry::entryTLastLink1_return#3 printEntry::$20 +Alias print_char_cursor#114 = print_char_cursor#44 +Alias print_line_cursor#107 = print_line_cursor#21 print_line_cursor#52 print_line_cursor#137 print_line_cursor#123 print_line_cursor#91 print_line_cursor#74 +Alias print_char_cursor#115 = print_char_cursor#45 +Alias print_char_cursor#116 = print_char_cursor#46 print_char_cursor#189 print_char_cursor#173 print_char_cursor#155 +Alias printEntry::entrySLastLink1_return#0 = printEntry::entrySLastLink1_$1 printEntry::entrySLastLink1_$0 printEntry::entrySLastLink1_return#2 printEntry::entrySLastLink1_return#1 printEntry::entrySLastLink1_return#3 printEntry::$24 +Alias print_char_cursor#117 = print_char_cursor#47 +Alias print_line_cursor#108 = print_line_cursor#22 print_line_cursor#53 print_line_cursor#138 print_line_cursor#124 print_line_cursor#92 print_line_cursor#75 +Alias print_char_cursor#118 = print_char_cursor#48 +Alias print_char_cursor#119 = print_char_cursor#49 print_char_cursor#190 print_char_cursor#174 print_char_cursor#156 +Alias printEntry::entryBFlag1_return#0 = printEntry::entryBFlag1_$1 printEntry::entryBFlag1_$0 printEntry::entryBFlag1_return#2 printEntry::entryBFlag1_return#1 printEntry::entryBFlag1_return#3 printEntry::$28 +Alias print_char_cursor#120 = print_char_cursor#50 +Alias print_line_cursor#109 = print_line_cursor#23 print_line_cursor#54 print_line_cursor#139 print_line_cursor#125 print_line_cursor#93 print_line_cursor#76 +Alias print_char_cursor#121 = print_char_cursor#51 +Alias print_char_cursor#122 = print_char_cursor#52 print_char_cursor#191 print_char_cursor#175 print_char_cursor#157 +Alias printEntry::entryBError1_return#0 = printEntry::entryBError1_$0 printEntry::entryBError1_return#2 printEntry::entryBError1_return#1 printEntry::entryBError1_return#3 printEntry::$32 +Alias print_char_cursor#123 = print_char_cursor#53 +Alias print_line_cursor#110 = print_line_cursor#24 print_line_cursor#55 print_line_cursor#140 print_line_cursor#126 print_line_cursor#94 print_line_cursor#77 +Alias print_char_cursor#124 = print_char_cursor#54 +Alias print_char_cursor#125 = print_char_cursor#55 print_char_cursor#192 print_char_cursor#176 print_char_cursor#158 +Alias printEntry::entryUCross1_return#0 = printEntry::entryUCross1_$1 printEntry::entryUCross1_return#2 printEntry::entryUCross1_return#1 printEntry::entryUCross1_return#3 printEntry::$36 +Alias print_char_cursor#126 = print_char_cursor#56 +Alias print_line_cursor#111 = print_line_cursor#25 print_line_cursor#56 print_line_cursor#141 print_line_cursor#127 print_line_cursor#95 print_line_cursor#78 +Alias print_char_cursor#127 = print_char_cursor#57 +Alias print_char_cursor#128 = print_char_cursor#58 print_char_cursor#193 print_char_cursor#177 print_char_cursor#159 +Alias printEntry::entryBAddrLo1_return#0 = printEntry::entryBAddrLo1_$1 printEntry::entryBAddrLo1_$0 printEntry::entryBAddrLo1_return#2 printEntry::entryBAddrLo1_return#1 printEntry::entryBAddrLo1_return#3 printEntry::$40 +Alias print_char_cursor#129 = print_char_cursor#59 +Alias print_line_cursor#112 = print_line_cursor#26 print_line_cursor#57 print_line_cursor#142 print_line_cursor#128 print_line_cursor#96 print_line_cursor#79 +Alias print_char_cursor#130 = print_char_cursor#60 +Alias print_char_cursor#131 = print_char_cursor#61 print_char_cursor#194 print_char_cursor#178 print_char_cursor#160 +Alias printEntry::entryBAddrHi1_return#0 = printEntry::entryBAddrHi1_$1 printEntry::entryBAddrHi1_$0 printEntry::entryBAddrHi1_return#2 printEntry::entryBAddrHi1_return#1 printEntry::entryBAddrHi1_return#3 printEntry::$44 +Alias print_char_cursor#132 = print_char_cursor#62 +Alias print_line_cursor#113 = print_line_cursor#27 print_line_cursor#58 print_line_cursor#143 print_line_cursor#129 print_line_cursor#97 print_line_cursor#80 +Alias print_char_cursor#133 = print_char_cursor#63 +Alias print_char_cursor#134 = print_char_cursor#64 print_char_cursor#195 print_char_cursor#179 print_char_cursor#161 +Alias printEntry::entryTHi1_return#0 = printEntry::entryTHi1_$1 printEntry::entryTHi1_$0 printEntry::entryTHi1_return#2 printEntry::entryTHi1_return#1 printEntry::entryTHi1_return#3 printEntry::$48 +Alias print_char_cursor#135 = print_char_cursor#65 +Alias print_line_cursor#114 = print_line_cursor#28 print_line_cursor#59 print_line_cursor#144 print_line_cursor#130 print_line_cursor#98 print_line_cursor#81 +Alias print_char_cursor#136 = print_char_cursor#66 +Alias print_char_cursor#137 = print_char_cursor#67 print_char_cursor#196 print_char_cursor#180 print_char_cursor#162 +Alias printEntry::entryTLo1_return#0 = printEntry::entryTLo1_$1 printEntry::entryTLo1_$0 printEntry::entryTLo1_return#2 printEntry::entryTLo1_return#1 printEntry::entryTLo1_return#3 printEntry::$52 +Alias print_char_cursor#138 = print_char_cursor#68 +Alias print_line_cursor#29 = print_line_cursor#60 print_line_cursor#61 print_line_cursor#30 +Alias print_char_cursor#139 = print_char_cursor#69 print_char_cursor#140 print_char_cursor#70 +Alias print_line_cursor#31 = print_line_cursor#62 +Alias print_char_cursor#141 = print_char_cursor#71 Successful SSA optimization Pass2AliasElimination -Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 +Alias mul8u::a#3 = mul8u::a#5 +Alias mul8u::mb#2 = mul8u::mb#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -4727,23 +4727,23 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS (void()) initEntry((byte*) initEntry::entry , (byte) initEntry::n) -(word~) initEntry::$1 2.0 -(byte~) initEntry::$11 4.0 -(byte~) initEntry::$13 4.0 -(byte~) initEntry::$15 4.0 -(word~) initEntry::$17 4.0 -(byte~) initEntry::$19 4.0 -(byte~) initEntry::$21 4.0 -(byte~) initEntry::$23 4.0 -(byte~) initEntry::$25 4.0 -(word~) initEntry::$3 2.0 -(word~) initEntry::$5 4.0 -(word~) initEntry::$7 2.0 -(byte~) initEntry::$9 4.0 +(word~) initEntry::$1 101.0 +(byte~) initEntry::$11 202.0 +(byte~) initEntry::$13 202.0 +(byte~) initEntry::$15 202.0 +(word~) initEntry::$17 202.0 +(byte~) initEntry::$19 202.0 +(byte~) initEntry::$21 202.0 +(byte~) initEntry::$23 202.0 +(byte~) initEntry::$25 202.0 +(word~) initEntry::$3 101.0 +(word~) initEntry::$5 202.0 +(word~) initEntry::$7 101.0 +(byte~) initEntry::$9 202.0 (byte*) initEntry::entry -(byte*) initEntry::entry#0 4.0 -(byte*) initEntry::entry#1 4.0 -(byte*) initEntry::entry#10 0.5128205128205128 +(byte*) initEntry::entry#0 22.0 +(byte*) initEntry::entry#1 22.0 +(byte*) initEntry::entry#10 21.282051282051285 (byte*) initEntry::entryBAddrHi1_entry (byte*) initEntry::entryBAddrHi1_return (byte*) initEntry::entryBAddrLo1_entry @@ -4771,67 +4771,67 @@ VARIABLE REGISTER WEIGHTS (byte*) initEntry::entryUCross1_entry (word*) initEntry::entryUCross1_return (byte) initEntry::n -(byte) initEntry::n#10 0.6842105263157894 +(byte) initEntry::n#10 34.55263157894738 (void()) keyboard_init() (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2002.0 (byte) keyboard_key_pressed::colidx (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 6.0 -(byte) keyboard_key_pressed::return#2 22.0 -(byte) keyboard_key_pressed::return#3 22.0 +(byte) keyboard_key_pressed::return#0 300.75 +(byte) keyboard_key_pressed::return#2 202.0 +(byte) keyboard_key_pressed::return#3 202.0 (byte) keyboard_key_pressed::rowidx (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3667.333333333333 +(byte) keyboard_matrix_read::return#2 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) main() -(byte~) main::$20 22.0 -(byte~) main::$22 22.0 +(byte~) main::$20 202.0 +(byte~) main::$22 202.0 (byte*) main::entry1 -(byte*) main::entry1#0 0.3157894736842105 +(byte*) main::entry1#0 1.736842105263158 (byte*) main::entry2 -(byte*) main::entry2#0 0.17142857142857143 -(word~) main::fileEntry1_$0 4.0 +(byte*) main::entry2#0 0.9428571428571428 +(word~) main::fileEntry1_$0 22.0 (byte) main::fileEntry1_idx (byte*) main::fileEntry1_return -(word~) main::fileEntry2_$0 4.0 +(word~) main::fileEntry2_$0 22.0 (byte) main::fileEntry2_idx (byte*) main::fileEntry2_return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 22.0 +(byte~) mul8u::$1 2002.0 (byte) mul8u::a -(byte) mul8u::a#0 11.0 -(byte) mul8u::a#3 7.666666666666666 -(byte) mul8u::a#6 2.0 +(byte) mul8u::a#0 1001.0 +(byte) mul8u::a#3 684.1666666666667 +(byte) mul8u::a#6 101.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 22.0 -(word) mul8u::mb#2 4.714285714285714 +(word) mul8u::mb#1 2002.0 +(word) mul8u::mb#2 429.0 (word) mul8u::res -(word) mul8u::res#1 22.0 -(word) mul8u::res#2 5.285714285714286 -(word) mul8u::res#6 11.0 +(word) mul8u::res#1 2002.0 +(word) mul8u::res#2 432.1428571428571 +(word) mul8u::res#6 1001.0 (word) mul8u::return -(word) mul8u::return#2 4.0 -(word) mul8u::return#3 4.0 +(word) mul8u::return#2 22.0 +(word) mul8u::return#3 22.0 (void()) printEntry((byte*) printEntry::entry) (byte*) printEntry::entry -(byte*) printEntry::entry#0 4.0 -(byte*) printEntry::entry#1 4.0 -(byte*) printEntry::entry#10 0.22727272727272732 +(byte*) printEntry::entry#0 22.0 +(byte*) printEntry::entry#1 22.0 +(byte*) printEntry::entry#10 9.431818181818182 (byte*) printEntry::entryBAddrHi1_entry (byte*) printEntry::entryBAddrHi1_return (byte*) printEntry::entryBAddrLo1_entry @@ -4859,90 +4859,90 @@ VARIABLE REGISTER WEIGHTS (byte*) printEntry::entryUCross1_entry (word*) printEntry::entryUCross1_return (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#10 6.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#3 4.0 -(byte) print_byte::b#4 4.0 -(byte) print_byte::b#5 4.0 -(byte) print_byte::b#6 4.0 -(byte) print_byte::b#7 4.0 -(byte) print_byte::b#8 4.0 -(byte) print_byte::b#9 4.0 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 2002.0 +(byte) print_byte::b#10 5703.0 +(byte) print_byte::b#2 202.0 +(byte) print_byte::b#3 202.0 +(byte) print_byte::b#4 202.0 +(byte) print_byte::b#5 202.0 +(byte) print_byte::b#6 202.0 +(byte) print_byte::b#7 202.0 +(byte) print_byte::b#8 202.0 +(byte) print_byte::b#9 202.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 20002.0 +(byte) print_char::ch#1 20002.0 +(byte) print_char::ch#2 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#11 0.8648648648648649 -(byte*) print_char_cursor#142 1.1632653061224494 -(byte*) print_char_cursor#143 9.800000000000002 -(byte*) print_char_cursor#145 7.333333333333334 -(byte*) print_char_cursor#164 32.0 -(byte*) print_char_cursor#206 4.0 -(byte*) print_char_cursor#207 4.0 -(byte*) print_char_cursor#208 4.0 -(byte*) print_char_cursor#209 4.0 -(byte*) print_char_cursor#210 4.0 -(byte*) print_char_cursor#211 4.0 -(byte*) print_char_cursor#212 4.0 -(byte*) print_char_cursor#213 4.0 -(byte*) print_char_cursor#214 4.0 -(byte*) print_char_cursor#215 4.0 -(byte*) print_char_cursor#216 4.0 -(byte*) print_char_cursor#217 4.0 -(byte*) print_char_cursor#218 4.0 -(byte*) print_char_cursor#219 4.0 -(byte*) print_char_cursor#220 4.0 -(byte*) print_char_cursor#224 4.0 -(byte*) print_char_cursor#225 4.0 -(byte*) print_char_cursor#227 4.0 -(byte*) print_char_cursor#228 4.0 -(byte*) print_char_cursor#82 4.0 +(byte*) print_char_cursor#1 10001.0 +(byte*) print_char_cursor#11 3035.5675675675675 +(byte*) print_char_cursor#142 670.1020408163263 +(byte*) print_char_cursor#143 2276.0 +(byte*) print_char_cursor#145 4270.333333333333 +(byte*) print_char_cursor#164 2336.0 +(byte*) print_char_cursor#206 22.0 +(byte*) print_char_cursor#207 22.0 +(byte*) print_char_cursor#208 202.0 +(byte*) print_char_cursor#209 202.0 +(byte*) print_char_cursor#210 202.0 +(byte*) print_char_cursor#211 202.0 +(byte*) print_char_cursor#212 202.0 +(byte*) print_char_cursor#213 202.0 +(byte*) print_char_cursor#214 202.0 +(byte*) print_char_cursor#215 202.0 +(byte*) print_char_cursor#216 202.0 +(byte*) print_char_cursor#217 202.0 +(byte*) print_char_cursor#218 202.0 +(byte*) print_char_cursor#219 202.0 +(byte*) print_char_cursor#220 202.0 +(byte*) print_char_cursor#224 22.0 +(byte*) print_char_cursor#225 22.0 +(byte*) print_char_cursor#227 22.0 +(byte*) print_char_cursor#228 22.0 +(byte*) print_char_cursor#82 110002.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 1.0824742268041243 -(byte*) print_line_cursor#153 2.0 -(byte*) print_line_cursor#154 2.0 -(byte*) print_line_cursor#155 2.0 -(byte*) print_line_cursor#156 2.0 -(byte*) print_line_cursor#157 4.0 -(byte*) print_line_cursor#158 4.0 -(byte*) print_line_cursor#159 4.0 -(byte*) print_line_cursor#160 4.0 -(byte*) print_line_cursor#161 4.0 -(byte*) print_line_cursor#162 4.0 -(byte*) print_line_cursor#163 4.0 -(byte*) print_line_cursor#164 4.0 -(byte*) print_line_cursor#165 4.0 -(byte*) print_line_cursor#166 4.0 -(byte*) print_line_cursor#167 4.0 -(byte*) print_line_cursor#168 4.0 -(byte*) print_line_cursor#169 4.0 -(byte*) print_line_cursor#171 22.0 -(byte*) print_line_cursor#32 24.0 -(byte*) print_line_cursor#63 36.0 +(byte*) print_line_cursor#1 337.5154639175262 +(byte*) print_line_cursor#153 11.0 +(byte*) print_line_cursor#154 11.0 +(byte*) print_line_cursor#155 11.0 +(byte*) print_line_cursor#156 11.0 +(byte*) print_line_cursor#157 202.0 +(byte*) print_line_cursor#158 202.0 +(byte*) print_line_cursor#159 202.0 +(byte*) print_line_cursor#160 202.0 +(byte*) print_line_cursor#161 202.0 +(byte*) print_line_cursor#162 202.0 +(byte*) print_line_cursor#163 202.0 +(byte*) print_line_cursor#164 202.0 +(byte*) print_line_cursor#165 202.0 +(byte*) print_line_cursor#166 202.0 +(byte*) print_line_cursor#167 202.0 +(byte*) print_line_cursor#168 202.0 +(byte*) print_line_cursor#169 202.0 +(byte*) print_line_cursor#171 20002.0 +(byte*) print_line_cursor#32 21003.0 +(byte*) print_line_cursor#63 2358.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#18 11.5 -(byte*) print_str::str#20 2.0 +(byte*) print_str::str#0 20002.0 +(byte*) print_str::str#18 10251.25 +(byte*) print_str::str#20 1001.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#10 4.0 -(word) print_word::w#2 4.0 -(word) print_word::w#4 4.0 -(word) print_word::w#5 4.666666666666666 -(word) print_word::w#7 4.0 -(word) print_word::w#8 4.0 +(word) print_word::w#10 202.0 +(word) print_word::w#2 202.0 +(word) print_word::w#4 202.0 +(word) print_word::w#5 835.6666666666667 +(word) print_word::w#7 202.0 +(word) print_word::w#8 202.0 Initial phi equivalence classes [ memset::dst#2 memset::dst#1 ] @@ -6902,216 +6902,212 @@ keyboard_init: { files: .fill MAX_FILES*SIZEOF_ENTRY, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8u::return#2 ] ( main:2 [ mul8u::return#2 ] ) always clobbers reg byte a -Statement [9] (word~) main::fileEntry1_$0 ← (word) mul8u::return#2 [ main::fileEntry1_$0 ] ( main:2 [ main::fileEntry1_$0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::entry1#0 ← (const byte*) files + (word~) main::fileEntry1_$0 [ main::entry1#0 ] ( main:2 [ main::entry1#0 ] ) always clobbers reg byte a -Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::entry1#0 mul8u::return#3 ] ( main:2 [ main::entry1#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::entry1#0 main::fileEntry2_$0 ] ( main:2 [ main::entry1#0 main::fileEntry2_$0 ] ) always clobbers reg byte a -Statement [15] (byte*) main::entry2#0 ← (const byte*) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte a -Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ) always clobbers reg byte a -Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ) always clobbers reg byte a -Statement [26] (byte*) print_line_cursor#153 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [27] (byte*) print_char_cursor#224 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ) always clobbers reg byte a -Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ) always clobbers reg byte a -Statement [31] (byte*) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ) always clobbers reg byte a -Statement [32] (byte*) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ) always clobbers reg byte a -Statement [34] (byte*) print_char_cursor#206 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#206 ] ( main:2 [ main::entry2#0 print_char_cursor#206 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ) always clobbers reg byte a -Statement [48] (byte*) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ) always clobbers reg byte a -Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] ) always clobbers reg byte a -Statement [52] (byte*) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a -Statement [53] (byte*) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ print_line_cursor#156 print_char_cursor#228 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ print_char_cursor#207 ] ( main:2 [ print_char_cursor#207 ] ) always clobbers reg byte a -Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] ) always clobbers reg byte a -Statement [81] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y -Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [95] (byte*) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#171 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#171 ] ) always clobbers reg byte a -Statement [97] (byte*) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [100] (word) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ) always clobbers reg byte a reg byte y -Statement [102] (byte*) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [104] (byte*) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [107] (word) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ) always clobbers reg byte a reg byte y -Statement [109] (byte*) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [111] (byte*) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte*) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [118] (byte*) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [121] (word) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [125] (byte*) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte*) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [132] (byte*) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte*) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [139] (byte*) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ) always clobbers reg byte a reg byte y -Statement [144] (byte*) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [146] (byte*) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ) always clobbers reg byte a reg byte y -Statement [151] (byte*) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [153] (byte*) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ) always clobbers reg byte a reg byte y -Statement [158] (byte*) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [160] (byte*) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ) always clobbers reg byte a reg byte y -Statement [165] (byte*) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [167] (byte*) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ) always clobbers reg byte a reg byte y -Statement [172] (byte*) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [174] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ) always clobbers reg byte a reg byte y -Statement [179] (byte*) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [181] (byte*) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ) always clobbers reg byte a reg byte y -Statement [186] (byte*) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 ] ) always clobbers reg byte a -Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ) always clobbers reg byte a +Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8u::return#2 ] ( main:2 [ mul8u::return#2 ] { { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [9] (word~) main::fileEntry1_$0 ← (word) mul8u::return#2 [ main::fileEntry1_$0 ] ( main:2 [ main::fileEntry1_$0 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::entry1#0 ← (const byte*) files + (word~) main::fileEntry1_$0 [ main::entry1#0 ] ( main:2 [ main::entry1#0 ] { } ) always clobbers reg byte a +Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::entry1#0 mul8u::return#3 ] ( main:2 [ main::entry1#0 mul8u::return#3 ] { { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::entry1#0 main::fileEntry2_$0 ] ( main:2 [ main::entry1#0 main::fileEntry2_$0 ] { } ) always clobbers reg byte a +Statement [15] (byte*) main::entry2#0 ← (const byte*) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] { } ) always clobbers reg byte a +Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } ) always clobbers reg byte a +Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [26] (byte*) print_line_cursor#153 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } ) always clobbers reg byte a +Statement [27] (byte*) print_char_cursor#224 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } ) always clobbers reg byte a +Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } } ) always clobbers reg byte a +Statement [31] (byte*) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } ) always clobbers reg byte a +Statement [32] (byte*) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } ) always clobbers reg byte a +Statement [34] (byte*) print_char_cursor#206 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#206 ] ( main:2 [ main::entry2#0 print_char_cursor#206 ] { { print_char_cursor#164 = print_char_cursor#206 } } ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } ) always clobbers reg byte a +Statement [48] (byte*) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } ) always clobbers reg byte a +Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [52] (byte*) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ print_line_cursor#1 print_line_cursor#156 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } ) always clobbers reg byte a +Statement [53] (byte*) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ print_line_cursor#156 print_char_cursor#228 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } ) always clobbers reg byte a +Statement [55] (byte*) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ print_char_cursor#207 ] ( main:2 [ print_char_cursor#207 ] { { print_char_cursor#164 = print_char_cursor#207 } } ) always clobbers reg byte a +Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] { } main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] { } main:2::print_cls:63::memset:66 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] { } main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] { } main:2::print_cls:63::memset:66 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [81] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#206 } } main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#207 } } main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#206 } } main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#207 } } main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a reg byte y +Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [95] (byte*) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#171 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [97] (byte*) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } ) always clobbers reg byte a +Statement [100] (word) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } } ) always clobbers reg byte a reg byte y +Statement [102] (byte*) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [104] (byte*) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } ) always clobbers reg byte a +Statement [107] (word) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } } ) always clobbers reg byte a reg byte y +Statement [109] (byte*) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [111] (byte*) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } ) always clobbers reg byte a +Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [116] (byte*) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [118] (byte*) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } ) always clobbers reg byte a +Statement [121] (word) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [123] (byte*) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [125] (byte*) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } ) always clobbers reg byte a +Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [130] (byte*) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [132] (byte*) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } ) always clobbers reg byte a +Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [137] (byte*) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [139] (byte*) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } ) always clobbers reg byte a +Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [144] (byte*) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [146] (byte*) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } ) always clobbers reg byte a +Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [151] (byte*) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [153] (byte*) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } ) always clobbers reg byte a +Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [158] (byte*) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [160] (byte*) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } ) always clobbers reg byte a +Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [165] (byte*) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [167] (byte*) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } ) always clobbers reg byte a +Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [172] (byte*) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [174] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } ) always clobbers reg byte a +Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [179] (byte*) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [181] (byte*) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a +Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [186] (byte*) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] -Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [198] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2 [ print_char_cursor#82 ] ( main:2::printEntry:30::print_byte:129::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:192 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:192 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:129::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:195 [ main::entry2#0 print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:195 [ print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] ) always clobbers reg byte y +Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [198] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2 [ print_char_cursor#82 ] ( main:2::printEntry:30::print_byte:129::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:129::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:136::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:136::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:143::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:143::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:150::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:150::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:164::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:164::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:171::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:171::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:178::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:178::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:185::print_char:192 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:185::print_char:192 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:129::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:129::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:136::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:136::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:143::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:143::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:150::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:150::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:164::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:164::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:171::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:171::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:178::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:178::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:185::print_char:195 [ main::entry2#0 print_line_cursor#1 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:185::print_char:195 [ print_line_cursor#1 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:101::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:108::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:108::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:115::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:115::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:122::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:122::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:157::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:157::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] -Statement [202] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_char_cursor#142 print_byte::b#0 print_word::w#5 ] ( main:2::printEntry:30::print_word:101 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:101 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:108 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:108 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:115 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:115 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:122 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:122 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:157 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:157 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] ) always clobbers reg byte a -Statement [204] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::printEntry:30::print_word:101 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:101 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:108 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:108 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:115 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:115 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:122 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:122 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:157 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:157 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [209] (word~) initEntry::$1 ← (word) $1111 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ) always clobbers reg byte a +Statement [209] (word~) initEntry::$1 ← (word) $1111 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ initEntry::n#10 ] -Statement [210] *((byte**)(byte*) initEntry::entry#10) ← (byte*)(word~) initEntry::$1 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y +Statement [210] *((byte**)(byte*) initEntry::entry#10) ← (byte*)(word~) initEntry::$1 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:18 [ initEntry::n#10 ] -Statement [212] (word~) initEntry::$3 ← (word) $2222 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ) always clobbers reg byte a -Statement [213] *((byte**)(byte*) initEntry::entry#10 + (byte) 2) ← (byte*)(word~) initEntry::$3 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [215] (word~) initEntry::$5 ← (word) $3333 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ) always clobbers reg byte a -Statement [216] *((word*)(byte*) initEntry::entry#10 + (byte) 4) ← (word~) initEntry::$5 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [218] (word~) initEntry::$7 ← (word) $4444 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ) always clobbers reg byte a -Statement [219] *((word**)(byte*) initEntry::entry#10 + (byte) 6) ← (word*)(word~) initEntry::$7 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [221] (byte~) initEntry::$9 ← (byte) $55 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ) always clobbers reg byte a -Statement [222] *((byte*) initEntry::entry#10 + (byte) 8) ← (byte~) initEntry::$9 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [224] (byte~) initEntry::$11 ← (byte) $66 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ) always clobbers reg byte a -Statement [225] *((byte*) initEntry::entry#10 + (byte) 9) ← (byte~) initEntry::$11 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [227] (byte~) initEntry::$13 ← (byte) $77 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ) always clobbers reg byte a -Statement [228] *((byte*) initEntry::entry#10 + (byte) $a) ← (byte~) initEntry::$13 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [230] (byte~) initEntry::$15 ← (byte) $88 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ) always clobbers reg byte a -Statement [231] *((byte*) initEntry::entry#10 + (byte) $b) ← (byte~) initEntry::$15 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [233] (word~) initEntry::$17 ← (word) $9999 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ) always clobbers reg byte a -Statement [234] *((word*)(byte*) initEntry::entry#10 + (byte) $c) ← (word~) initEntry::$17 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [236] (byte~) initEntry::$19 ← (byte) $aa + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ) always clobbers reg byte a -Statement [237] *((byte*) initEntry::entry#10 + (byte) $e) ← (byte~) initEntry::$19 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [239] (byte~) initEntry::$21 ← (byte) $bb + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ) always clobbers reg byte a -Statement [240] *((byte*) initEntry::entry#10 + (byte) $f) ← (byte~) initEntry::$21 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [242] (byte~) initEntry::$23 ← (byte) $cc + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ) always clobbers reg byte a -Statement [243] *((byte*) initEntry::entry#10 + (byte) $10) ← (byte~) initEntry::$23 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [245] (byte~) initEntry::$25 ← (byte) $dd + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::$25 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] ) always clobbers reg byte a -Statement [246] *((byte*) initEntry::entry#10 + (byte) $11) ← (byte~) initEntry::$25 [ ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte y -Statement [254] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u:12 [ main::entry1#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [212] (word~) initEntry::$3 ← (word) $2222 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [213] *((byte**)(byte*) initEntry::entry#10 + (byte) 2) ← (byte*)(word~) initEntry::$3 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [215] (word~) initEntry::$5 ← (word) $3333 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [216] *((word*)(byte*) initEntry::entry#10 + (byte) 4) ← (word~) initEntry::$5 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [218] (word~) initEntry::$7 ← (word) $4444 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [219] *((word**)(byte*) initEntry::entry#10 + (byte) 6) ← (word*)(word~) initEntry::$7 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [221] (byte~) initEntry::$9 ← (byte) $55 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [222] *((byte*) initEntry::entry#10 + (byte) 8) ← (byte~) initEntry::$9 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [224] (byte~) initEntry::$11 ← (byte) $66 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [225] *((byte*) initEntry::entry#10 + (byte) 9) ← (byte~) initEntry::$11 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [227] (byte~) initEntry::$13 ← (byte) $77 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [228] *((byte*) initEntry::entry#10 + (byte) $a) ← (byte~) initEntry::$13 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [230] (byte~) initEntry::$15 ← (byte) $88 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [231] *((byte*) initEntry::entry#10 + (byte) $b) ← (byte~) initEntry::$15 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [233] (word~) initEntry::$17 ← (word) $9999 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [234] *((word*)(byte*) initEntry::entry#10 + (byte) $c) ← (word~) initEntry::$17 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [236] (byte~) initEntry::$19 ← (byte) $aa + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [237] *((byte*) initEntry::entry#10 + (byte) $e) ← (byte~) initEntry::$19 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [239] (byte~) initEntry::$21 ← (byte) $bb + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [240] *((byte*) initEntry::entry#10 + (byte) $f) ← (byte~) initEntry::$21 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [242] (byte~) initEntry::$23 ← (byte) $cc + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [243] *((byte*) initEntry::entry#10 + (byte) $10) ← (byte~) initEntry::$23 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [245] (byte~) initEntry::$25 ← (byte) $dd + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::$25 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [246] *((byte*) initEntry::entry#10 + (byte) $11) ← (byte~) initEntry::$25 [ ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [254] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::entry1#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] -Statement [258] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a -Statement [259] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a -Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8u::return#2 ] ( main:2 [ mul8u::return#2 ] ) always clobbers reg byte a -Statement [9] (word~) main::fileEntry1_$0 ← (word) mul8u::return#2 [ main::fileEntry1_$0 ] ( main:2 [ main::fileEntry1_$0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::entry1#0 ← (const byte*) files + (word~) main::fileEntry1_$0 [ main::entry1#0 ] ( main:2 [ main::entry1#0 ] ) always clobbers reg byte a -Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::entry1#0 mul8u::return#3 ] ( main:2 [ main::entry1#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::entry1#0 main::fileEntry2_$0 ] ( main:2 [ main::entry1#0 main::fileEntry2_$0 ] ) always clobbers reg byte a -Statement [15] (byte*) main::entry2#0 ← (const byte*) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte a -Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ) always clobbers reg byte a -Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ) always clobbers reg byte a -Statement [26] (byte*) print_line_cursor#153 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [27] (byte*) print_char_cursor#224 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ) always clobbers reg byte a -Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ) always clobbers reg byte a -Statement [31] (byte*) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ) always clobbers reg byte a -Statement [32] (byte*) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ) always clobbers reg byte a -Statement [34] (byte*) print_char_cursor#206 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#206 ] ( main:2 [ main::entry2#0 print_char_cursor#206 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ) always clobbers reg byte a -Statement [48] (byte*) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ) always clobbers reg byte a -Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] ) always clobbers reg byte a -Statement [52] (byte*) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a -Statement [53] (byte*) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ print_line_cursor#156 print_char_cursor#228 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ print_char_cursor#207 ] ( main:2 [ print_char_cursor#207 ] ) always clobbers reg byte a -Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] ) always clobbers reg byte a -Statement [81] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y -Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y -Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [95] (byte*) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#171 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#171 ] ) always clobbers reg byte a -Statement [97] (byte*) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [100] (word) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ) always clobbers reg byte a reg byte y -Statement [102] (byte*) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [104] (byte*) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [107] (word) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ) always clobbers reg byte a reg byte y -Statement [109] (byte*) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [111] (byte*) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte*) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [118] (byte*) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [121] (word) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [125] (byte*) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte*) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [132] (byte*) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte*) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [139] (byte*) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ) always clobbers reg byte a reg byte y -Statement [144] (byte*) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [146] (byte*) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ) always clobbers reg byte a reg byte y -Statement [151] (byte*) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [153] (byte*) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ) always clobbers reg byte a reg byte y -Statement [158] (byte*) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [160] (byte*) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ) always clobbers reg byte a reg byte y -Statement [165] (byte*) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [167] (byte*) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ) always clobbers reg byte a reg byte y -Statement [172] (byte*) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [174] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ) always clobbers reg byte a reg byte y -Statement [179] (byte*) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [181] (byte*) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ) always clobbers reg byte a reg byte y -Statement [186] (byte*) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 ] ) always clobbers reg byte a -Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ) always clobbers reg byte a -Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [198] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2 [ print_char_cursor#82 ] ( main:2::printEntry:30::print_byte:129::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:192 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:192 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:129::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:195 [ main::entry2#0 print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:195 [ print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] ) always clobbers reg byte y -Statement [202] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_char_cursor#142 print_byte::b#0 print_word::w#5 ] ( main:2::printEntry:30::print_word:101 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:101 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:108 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:108 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:115 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:115 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:122 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:122 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:30::print_word:157 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] main:2::printEntry:51::print_word:157 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#142 print_byte::b#0 print_word::w#5 ] ) always clobbers reg byte a -Statement [204] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::printEntry:30::print_word:101 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:101 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:108 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:108 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:115 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:115 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:122 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:122 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:30::print_word:157 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] main:2::printEntry:51::print_word:157 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [209] (word~) initEntry::$1 ← (word) $1111 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ) always clobbers reg byte a -Statement [210] *((byte**)(byte*) initEntry::entry#10) ← (byte*)(word~) initEntry::$1 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [212] (word~) initEntry::$3 ← (word) $2222 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ) always clobbers reg byte a -Statement [213] *((byte**)(byte*) initEntry::entry#10 + (byte) 2) ← (byte*)(word~) initEntry::$3 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [215] (word~) initEntry::$5 ← (word) $3333 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ) always clobbers reg byte a -Statement [216] *((word*)(byte*) initEntry::entry#10 + (byte) 4) ← (word~) initEntry::$5 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [218] (word~) initEntry::$7 ← (word) $4444 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ) always clobbers reg byte a -Statement [219] *((word**)(byte*) initEntry::entry#10 + (byte) 6) ← (word*)(word~) initEntry::$7 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [221] (byte~) initEntry::$9 ← (byte) $55 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ) always clobbers reg byte a -Statement [222] *((byte*) initEntry::entry#10 + (byte) 8) ← (byte~) initEntry::$9 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [224] (byte~) initEntry::$11 ← (byte) $66 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ) always clobbers reg byte a -Statement [225] *((byte*) initEntry::entry#10 + (byte) 9) ← (byte~) initEntry::$11 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [227] (byte~) initEntry::$13 ← (byte) $77 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ) always clobbers reg byte a -Statement [228] *((byte*) initEntry::entry#10 + (byte) $a) ← (byte~) initEntry::$13 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [230] (byte~) initEntry::$15 ← (byte) $88 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ) always clobbers reg byte a -Statement [231] *((byte*) initEntry::entry#10 + (byte) $b) ← (byte~) initEntry::$15 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [233] (word~) initEntry::$17 ← (word) $9999 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ) always clobbers reg byte a -Statement [234] *((word*)(byte*) initEntry::entry#10 + (byte) $c) ← (word~) initEntry::$17 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte a reg byte y -Statement [236] (byte~) initEntry::$19 ← (byte) $aa + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ) always clobbers reg byte a -Statement [237] *((byte*) initEntry::entry#10 + (byte) $e) ← (byte~) initEntry::$19 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [239] (byte~) initEntry::$21 ← (byte) $bb + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ) always clobbers reg byte a -Statement [240] *((byte*) initEntry::entry#10 + (byte) $f) ← (byte~) initEntry::$21 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [242] (byte~) initEntry::$23 ← (byte) $cc + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ) always clobbers reg byte a -Statement [243] *((byte*) initEntry::entry#10 + (byte) $10) ← (byte~) initEntry::$23 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] ) always clobbers reg byte y -Statement [245] (byte~) initEntry::$25 ← (byte) $dd + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::$25 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] ) always clobbers reg byte a -Statement [246] *((byte*) initEntry::entry#10 + (byte) $11) ← (byte~) initEntry::$25 [ ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 ] main:2::initEntry:19 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte y -Statement [252] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:7 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u:12 [ main::entry1#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [254] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u:12 [ main::entry1#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [258] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a -Statement [259] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a +Statement [258] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a +Statement [259] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a +Statement [8] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8u::return#2 ] ( main:2 [ mul8u::return#2 ] { { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [9] (word~) main::fileEntry1_$0 ← (word) mul8u::return#2 [ main::fileEntry1_$0 ] ( main:2 [ main::fileEntry1_$0 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::entry1#0 ← (const byte*) files + (word~) main::fileEntry1_$0 [ main::entry1#0 ] ( main:2 [ main::entry1#0 ] { } ) always clobbers reg byte a +Statement [13] (word) mul8u::return#3 ← (word) mul8u::res#2 [ main::entry1#0 mul8u::return#3 ] ( main:2 [ main::entry1#0 mul8u::return#3 ] { { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::entry1#0 main::fileEntry2_$0 ] ( main:2 [ main::entry1#0 main::fileEntry2_$0 ] { } ) always clobbers reg byte a +Statement [15] (byte*) main::entry2#0 ← (const byte*) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] { } ) always clobbers reg byte a +Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } ) always clobbers reg byte a +Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [26] (byte*) print_line_cursor#153 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_line_cursor#1 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } ) always clobbers reg byte a +Statement [27] (byte*) print_char_cursor#224 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#153 print_char_cursor#224 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } ) always clobbers reg byte a +Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } } ) always clobbers reg byte a +Statement [31] (byte*) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#154 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } ) always clobbers reg byte a +Statement [32] (byte*) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } ) always clobbers reg byte a +Statement [34] (byte*) print_char_cursor#206 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#206 ] ( main:2 [ main::entry2#0 print_char_cursor#206 ] { { print_char_cursor#164 = print_char_cursor#206 } } ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } ) always clobbers reg byte a +Statement [48] (byte*) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#227 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } ) always clobbers reg byte a +Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [52] (byte*) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ print_line_cursor#1 print_line_cursor#156 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } ) always clobbers reg byte a +Statement [53] (byte*) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ print_line_cursor#156 print_char_cursor#228 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } ) always clobbers reg byte a +Statement [55] (byte*) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ print_char_cursor#207 ] ( main:2 [ print_char_cursor#207 ] { { print_char_cursor#164 = print_char_cursor#207 } } ) always clobbers reg byte a +Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] { } main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] { } main:2::print_cls:63::memset:66 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] { } main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] { } main:2::print_cls:63::memset:66 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [81] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#3 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#206 } } main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#207 } } main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a reg byte y +Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#206 } } main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] { } main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] { { print_char_cursor#164 = print_char_cursor#207 } } main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a reg byte y +Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [95] (byte*) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#171 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#153 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#224 } } main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#154 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#225 } } main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_char_cursor#142 = print_char_cursor#143 } } main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#155 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#227 } } main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#171 ] { { print_line_cursor#156 = print_line_cursor#63 } { print_char_cursor#143 = print_char_cursor#228 } } main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#171 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [97] (byte*) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#208 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#208 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#208 } } ) always clobbers reg byte a +Statement [100] (word) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } } ) always clobbers reg byte a reg byte y +Statement [102] (byte*) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_line_cursor#157 print_char_cursor#11 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#157 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [104] (byte*) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#209 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#209 } } ) always clobbers reg byte a +Statement [107] (word) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } } ) always clobbers reg byte a reg byte y +Statement [109] (byte*) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#158 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#158 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [111] (byte*) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#210 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#210 } } ) always clobbers reg byte a +Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [116] (byte*) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#159 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [118] (byte*) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#211 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#211 } } ) always clobbers reg byte a +Statement [121] (word) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [123] (byte*) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#160 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [125] (byte*) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#212 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#212 } } ) always clobbers reg byte a +Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [130] (byte*) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#161 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [132] (byte*) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#213 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#213 } } ) always clobbers reg byte a +Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [137] (byte*) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#162 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [139] (byte*) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#214 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#214 } } ) always clobbers reg byte a +Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [144] (byte*) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#163 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [146] (byte*) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#215 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#215 } } ) always clobbers reg byte a +Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [151] (byte*) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#164 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [153] (byte*) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#216 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#216 } } ) always clobbers reg byte a +Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } } ) always clobbers reg byte a reg byte y +Statement [158] (byte*) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#165 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [160] (byte*) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#217 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#217 } } ) always clobbers reg byte a +Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [165] (byte*) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#166 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [167] (byte*) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#218 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#218 } } ) always clobbers reg byte a +Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [172] (byte*) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#167 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [174] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#219 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#219 } } ) always clobbers reg byte a +Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [179] (byte*) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#168 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [181] (byte*) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_char_cursor#164 = print_char_cursor#220 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_char_cursor#164 = print_char_cursor#220 } } ) always clobbers reg byte a +Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } } main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } } ) always clobbers reg byte a reg byte y +Statement [186] (byte*) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_line_cursor#169 = print_line_cursor#63 } { print_char_cursor#11 = print_char_cursor#143 } } ) always clobbers reg byte a +Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [198] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2 [ print_char_cursor#82 ] ( main:2::printEntry:30::print_byte:129::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:129::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:136::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:136::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:143::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:143::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:150::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:150::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:164::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:164::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:171::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:171::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:178::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:178::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:185::print_char:192 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_byte:185::print_char:192 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:101::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#0 = print_char::ch#2 } } main:2::printEntry:30::print_byte:129::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:129::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:136::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:136::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#3 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:143::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:143::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#4 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:150::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:150::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#5 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:164::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:164::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#6 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:171::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:171::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#7 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:178::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:178::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#8 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_byte:185::print_char:195 [ main::entry2#0 print_line_cursor#1 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_byte:185::print_char:195 [ print_line_cursor#1 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_byte::b#10 = print_byte::b#9 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:101::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:108::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:108::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:115::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:115::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:122::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:122::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:157::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:51::print_word:157::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#0 = print_byte::b#10 } { print_char_cursor#142 = print_char_cursor#145 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#11 = print_char_cursor#82 } } main:2::printEntry:30::print_word:101::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:101::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#7 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:108::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:108::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#5 = print_word::w#8 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:115::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:115::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:122::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:122::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#10 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:30::print_word:157::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#0 = printEntry::entry#10 main::entry1#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } main:2::printEntry:51::print_word:157::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] { { printEntry::entry#1 = printEntry::entry#10 main::entry2#0 } { print_word::w#4 = print_word::w#5 } { print_byte::b#1 = print_byte::b#10 } { print_char_cursor#11 = print_char_cursor#145 print_char_cursor#82 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y +Statement [209] (word~) initEntry::$1 ← (word) $1111 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$1 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$1 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [210] *((byte**)(byte*) initEntry::entry#10) ← (byte*)(word~) initEntry::$1 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [212] (word~) initEntry::$3 ← (word) $2222 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$3 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$3 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [213] *((byte**)(byte*) initEntry::entry#10 + (byte) 2) ← (byte*)(word~) initEntry::$3 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [215] (word~) initEntry::$5 ← (word) $3333 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$5 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$5 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [216] *((word*)(byte*) initEntry::entry#10 + (byte) 4) ← (word~) initEntry::$5 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [218] (word~) initEntry::$7 ← (word) $4444 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$7 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$7 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [219] *((word**)(byte*) initEntry::entry#10 + (byte) 6) ← (word*)(word~) initEntry::$7 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [221] (byte~) initEntry::$9 ← (byte) $55 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$9 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$9 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [222] *((byte*) initEntry::entry#10 + (byte) 8) ← (byte~) initEntry::$9 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [224] (byte~) initEntry::$11 ← (byte) $66 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$11 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$11 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [225] *((byte*) initEntry::entry#10 + (byte) 9) ← (byte~) initEntry::$11 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [227] (byte~) initEntry::$13 ← (byte) $77 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$13 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$13 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [228] *((byte*) initEntry::entry#10 + (byte) $a) ← (byte~) initEntry::$13 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [230] (byte~) initEntry::$15 ← (byte) $88 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$15 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$15 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [231] *((byte*) initEntry::entry#10 + (byte) $b) ← (byte~) initEntry::$15 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [233] (word~) initEntry::$17 ← (word) $9999 + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$17 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$17 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [234] *((word*)(byte*) initEntry::entry#10 + (byte) $c) ← (word~) initEntry::$17 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a reg byte y +Statement [236] (byte~) initEntry::$19 ← (byte) $aa + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$19 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$19 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [237] *((byte*) initEntry::entry#10 + (byte) $e) ← (byte~) initEntry::$19 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [239] (byte~) initEntry::$21 ← (byte) $bb + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$21 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$21 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [240] *((byte*) initEntry::entry#10 + (byte) $f) ← (byte~) initEntry::$21 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [242] (byte~) initEntry::$23 ← (byte) $cc + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::n#10 initEntry::$23 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 initEntry::$23 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [243] *((byte*) initEntry::entry#10 + (byte) $10) ← (byte~) initEntry::$23 [ initEntry::entry#10 initEntry::n#10 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::n#10 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [245] (byte~) initEntry::$25 ← (byte) $dd + (byte) initEntry::n#10 [ initEntry::entry#10 initEntry::$25 ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 initEntry::entry#10 initEntry::$25 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte a +Statement [246] *((byte*) initEntry::entry#10 + (byte) $11) ← (byte~) initEntry::$25 [ ] ( main:2::initEntry:17 [ main::entry1#0 main::entry2#0 ] { { initEntry::entry#0 = initEntry::entry#10 main::entry1#0 } } main:2::initEntry:19 [ main::entry1#0 main::entry2#0 ] { { initEntry::entry#1 = initEntry::entry#10 main::entry2#0 } } ) always clobbers reg byte y +Statement [252] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u:7 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::entry1#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [254] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u:7 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u:12 [ main::entry1#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [258] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a +Statement [259] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ memset::dst#2 memset::dst#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 ] : zp[2]:6 , @@ -7158,51 +7154,51 @@ Potential registers zp[1]:65 [ initEntry::$25 ] : zp[1]:65 , reg byte a , reg by Potential registers zp[1]:66 [ mul8u::$1 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 142.16: zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#206 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#1 print_char_cursor#224 print_char_cursor#225 print_char_cursor#227 print_char_cursor#228 print_char_cursor#11 ] 142: zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 ] 1.08: zp[2]:44 [ print_line_cursor#1 ] -Uplift Scope [mul8u] 38.29: zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 26.71: zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] 22: zp[1]:66 [ mul8u::$1 ] 20.67: zp[1]:19 [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] 4: zp[2]:24 [ mul8u::return#2 ] 4: zp[2]:30 [ mul8u::return#3 ] -Uplift Scope [initEntry] 8.51: zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] 4: zp[2]:52 [ initEntry::$5 ] 4: zp[1]:56 [ initEntry::$9 ] 4: zp[1]:57 [ initEntry::$11 ] 4: zp[1]:58 [ initEntry::$13 ] 4: zp[1]:59 [ initEntry::$15 ] 4: zp[2]:60 [ initEntry::$17 ] 4: zp[1]:62 [ initEntry::$19 ] 4: zp[1]:63 [ initEntry::$21 ] 4: zp[1]:64 [ initEntry::$23 ] 4: zp[1]:65 [ initEntry::$25 ] 2: zp[2]:48 [ initEntry::$1 ] 2: zp[2]:50 [ initEntry::$3 ] 2: zp[2]:54 [ initEntry::$7 ] 0.68: zp[1]:18 [ initEntry::n#10 ] -Uplift Scope [print_byte] 46: zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:46 [ print_byte::$0 ] 4: zp[1]:47 [ print_byte::$2 ] -Uplift Scope [keyboard_key_pressed] 22: zp[1]:36 [ keyboard_key_pressed::return#2 ] 22: zp[1]:38 [ keyboard_key_pressed::return#3 ] 6: zp[1]:42 [ keyboard_key_pressed::return#0 ] 4: zp[1]:41 [ keyboard_key_pressed::$2 ] -Uplift Scope [main] 22: zp[1]:37 [ main::$20 ] 22: zp[1]:39 [ main::$22 ] 4: zp[2]:26 [ main::fileEntry1_$0 ] 4: zp[2]:32 [ main::fileEntry2_$0 ] 0.32: zp[2]:28 [ main::entry1#0 ] 0.17: zp[2]:34 [ main::entry2#0 ] -Uplift Scope [memset] 36.67: zp[2]:2 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] -Uplift Scope [print_word] 24.67: zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] -Uplift Scope [print_char] 14: zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [printEntry] 8.23: zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:40 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:43 [ keyboard_matrix_read::return#0 ] +Uplift Scope [] 135,349: zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#206 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#1 print_char_cursor#224 print_char_cursor#225 print_char_cursor#227 print_char_cursor#228 print_char_cursor#11 ] 46,033: zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 ] 337.52: zp[2]:44 [ print_line_cursor#1 ] +Uplift Scope [print_char] 160,007: zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:46 [ print_byte::$0 ] 20,002: zp[1]:47 [ print_byte::$2 ] 11,323: zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:2 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_str] 31,254.25: zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] +Uplift Scope [mul8u] 3,435.14: zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,431: zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] 2,002: zp[1]:66 [ mul8u::$1 ] 1,786.17: zp[1]:19 [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] 22: zp[2]:24 [ mul8u::return#2 ] 22: zp[2]:30 [ mul8u::return#3 ] +Uplift Scope [keyboard_matrix_read] 3,667.33: zp[1]:43 [ keyboard_matrix_read::return#0 ] 2,002: zp[1]:40 [ keyboard_matrix_read::return#2 ] +Uplift Scope [keyboard_key_pressed] 2,002: zp[1]:41 [ keyboard_key_pressed::$2 ] 300.75: zp[1]:42 [ keyboard_key_pressed::return#0 ] 202: zp[1]:36 [ keyboard_key_pressed::return#2 ] 202: zp[1]:38 [ keyboard_key_pressed::return#3 ] +Uplift Scope [initEntry] 202: zp[2]:52 [ initEntry::$5 ] 202: zp[1]:56 [ initEntry::$9 ] 202: zp[1]:57 [ initEntry::$11 ] 202: zp[1]:58 [ initEntry::$13 ] 202: zp[1]:59 [ initEntry::$15 ] 202: zp[2]:60 [ initEntry::$17 ] 202: zp[1]:62 [ initEntry::$19 ] 202: zp[1]:63 [ initEntry::$21 ] 202: zp[1]:64 [ initEntry::$23 ] 202: zp[1]:65 [ initEntry::$25 ] 101: zp[2]:48 [ initEntry::$1 ] 101: zp[2]:50 [ initEntry::$3 ] 101: zp[2]:54 [ initEntry::$7 ] 65.28: zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] 34.55: zp[1]:18 [ initEntry::n#10 ] +Uplift Scope [print_word] 1,845.67: zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] +Uplift Scope [main] 202: zp[1]:37 [ main::$20 ] 202: zp[1]:39 [ main::$22 ] 22: zp[2]:26 [ main::fileEntry1_$0 ] 22: zp[2]:32 [ main::fileEntry2_$0 ] 1.74: zp[2]:28 [ main::entry1#0 ] 0.94: zp[2]:34 [ main::entry2#0 ] +Uplift Scope [printEntry] 53.43: zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [keyboard_init] Uplifting [] best 6192 combination zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#206 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#1 print_char_cursor#224 print_char_cursor#225 print_char_cursor#227 print_char_cursor#228 print_char_cursor#11 ] zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 ] zp[2]:44 [ print_line_cursor#1 ] -Uplifting [mul8u] best 6096 combination zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] zp[2]:24 [ mul8u::return#2 ] zp[2]:30 [ mul8u::return#3 ] -Uplifting [initEntry] best 6080 combination zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] zp[2]:52 [ initEntry::$5 ] reg byte a [ initEntry::$9 ] reg byte a [ initEntry::$11 ] reg byte a [ initEntry::$13 ] reg byte a [ initEntry::$15 ] zp[2]:60 [ initEntry::$17 ] zp[1]:62 [ initEntry::$19 ] zp[1]:63 [ initEntry::$21 ] zp[1]:64 [ initEntry::$23 ] zp[1]:65 [ initEntry::$25 ] zp[2]:48 [ initEntry::$1 ] zp[2]:50 [ initEntry::$3 ] zp[2]:54 [ initEntry::$7 ] zp[1]:18 [ initEntry::n#10 ] -Limited combination testing to 100 combinations of 131072 possible. -Uplifting [print_byte] best 6058 combination reg byte x [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [keyboard_key_pressed] best 5869 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] +Uplifting [print_char] best 6183 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 6157 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] +Uplifting [memset] best 6157 combination zp[2]:2 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_str] best 6157 combination zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] +Uplifting [mul8u] best 6061 combination zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] zp[2]:24 [ mul8u::return#2 ] zp[2]:30 [ mul8u::return#3 ] +Uplifting [keyboard_matrix_read] best 6049 combination reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_key_pressed] best 5860 combination reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#3 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [main] best 5749 combination reg byte a [ main::$20 ] reg byte a [ main::$22 ] zp[2]:26 [ main::fileEntry1_$0 ] zp[2]:32 [ main::fileEntry2_$0 ] zp[2]:28 [ main::entry1#0 ] zp[2]:34 [ main::entry2#0 ] -Uplifting [memset] best 5749 combination zp[2]:2 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 5749 combination zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] -Uplifting [print_word] best 5749 combination zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] -Uplifting [print_char] best 5740 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [printEntry] best 5740 combination zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] -Uplifting [keyboard_matrix_read] best 5728 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [RADIX] best 5728 combination -Uplifting [print_ln] best 5728 combination -Uplifting [print_cls] best 5728 combination -Uplifting [keyboard_init] best 5728 combination +Uplifting [initEntry] best 5844 combination zp[2]:52 [ initEntry::$5 ] reg byte a [ initEntry::$9 ] reg byte a [ initEntry::$11 ] reg byte a [ initEntry::$13 ] reg byte a [ initEntry::$15 ] zp[2]:60 [ initEntry::$17 ] zp[1]:62 [ initEntry::$19 ] zp[1]:63 [ initEntry::$21 ] zp[1]:64 [ initEntry::$23 ] zp[1]:65 [ initEntry::$25 ] zp[2]:48 [ initEntry::$1 ] zp[2]:50 [ initEntry::$3 ] zp[2]:54 [ initEntry::$7 ] zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] zp[1]:18 [ initEntry::n#10 ] +Limited combination testing to 100 combinations of 131072 possible. +Uplifting [print_word] best 5844 combination zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] +Uplifting [main] best 5724 combination reg byte a [ main::$20 ] reg byte a [ main::$22 ] zp[2]:26 [ main::fileEntry1_$0 ] zp[2]:32 [ main::fileEntry2_$0 ] zp[2]:28 [ main::entry1#0 ] zp[2]:34 [ main::entry2#0 ] +Uplifting [printEntry] best 5724 combination zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] +Uplifting [RADIX] best 5724 combination +Uplifting [print_ln] best 5724 combination +Uplifting [print_cls] best 5724 combination +Uplifting [keyboard_init] best 5724 combination Attempting to uplift remaining variables inzp[1]:62 [ initEntry::$19 ] -Uplifting [initEntry] best 5724 combination reg byte a [ initEntry::$19 ] +Uplifting [initEntry] best 5720 combination reg byte a [ initEntry::$19 ] Attempting to uplift remaining variables inzp[1]:63 [ initEntry::$21 ] -Uplifting [initEntry] best 5720 combination reg byte a [ initEntry::$21 ] +Uplifting [initEntry] best 5716 combination reg byte a [ initEntry::$21 ] Attempting to uplift remaining variables inzp[1]:64 [ initEntry::$23 ] -Uplifting [initEntry] best 5716 combination reg byte a [ initEntry::$23 ] +Uplifting [initEntry] best 5712 combination reg byte a [ initEntry::$23 ] Attempting to uplift remaining variables inzp[1]:65 [ initEntry::$25 ] -Uplifting [initEntry] best 5712 combination reg byte a [ initEntry::$25 ] +Uplifting [initEntry] best 5708 combination reg byte a [ initEntry::$25 ] Attempting to uplift remaining variables inzp[1]:18 [ initEntry::n#10 ] -Uplifting [initEntry] best 5693 combination reg byte x [ initEntry::n#10 ] +Uplifting [initEntry] best 5689 combination reg byte x [ initEntry::n#10 ] Coalescing zero page register [ zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] ] with [ zp[2]:28 [ main::entry1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp[2]:24 [ mul8u::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp[2]:30 [ mul8u::return#3 ] ] - score: 1 @@ -8595,8 +8591,7 @@ print_char: { print_word: { .label w = 8 // [202] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [203] call print_byte // [189] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -8607,8 +8602,7 @@ print_word: { // print_word::@1 __b1: // [204] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [205] call print_byte // [189] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -9370,19 +9364,19 @@ FINAL SYMBOL TABLE (const byte) SIZEOF_ENTRY = (byte) $12 (const byte*) files[(word)(const byte) MAX_FILES*(const byte) SIZEOF_ENTRY] = { fill( (word)MAX_FILES*SIZEOF_ENTRY, 0) } (void()) initEntry((byte*) initEntry::entry , (byte) initEntry::n) -(word~) initEntry::$1 zp[2]:14 2.0 -(byte~) initEntry::$11 reg byte a 4.0 -(byte~) initEntry::$13 reg byte a 4.0 -(byte~) initEntry::$15 reg byte a 4.0 -(word~) initEntry::$17 zp[2]:22 4.0 -(byte~) initEntry::$19 reg byte a 4.0 -(byte~) initEntry::$21 reg byte a 4.0 -(byte~) initEntry::$23 reg byte a 4.0 -(byte~) initEntry::$25 reg byte a 4.0 -(word~) initEntry::$3 zp[2]:16 2.0 -(word~) initEntry::$5 zp[2]:18 4.0 -(word~) initEntry::$7 zp[2]:20 2.0 -(byte~) initEntry::$9 reg byte a 4.0 +(word~) initEntry::$1 zp[2]:14 101.0 +(byte~) initEntry::$11 reg byte a 202.0 +(byte~) initEntry::$13 reg byte a 202.0 +(byte~) initEntry::$15 reg byte a 202.0 +(word~) initEntry::$17 zp[2]:22 202.0 +(byte~) initEntry::$19 reg byte a 202.0 +(byte~) initEntry::$21 reg byte a 202.0 +(byte~) initEntry::$23 reg byte a 202.0 +(byte~) initEntry::$25 reg byte a 202.0 +(word~) initEntry::$3 zp[2]:16 101.0 +(word~) initEntry::$5 zp[2]:18 202.0 +(word~) initEntry::$7 zp[2]:20 101.0 +(byte~) initEntry::$9 reg byte a 202.0 (label) initEntry::@1 (label) initEntry::@10 (label) initEntry::@11 @@ -9398,9 +9392,9 @@ FINAL SYMBOL TABLE (label) initEntry::@9 (label) initEntry::@return (byte*) initEntry::entry -(byte*) initEntry::entry#0 entry zp[2]:8 4.0 -(byte*) initEntry::entry#1 entry zp[2]:8 4.0 -(byte*) initEntry::entry#10 entry zp[2]:8 0.5128205128205128 +(byte*) initEntry::entry#0 entry zp[2]:8 22.0 +(byte*) initEntry::entry#1 entry zp[2]:8 22.0 +(byte*) initEntry::entry#10 entry zp[2]:8 21.282051282051285 (label) initEntry::entryBAddrHi1 (byte*) initEntry::entryBAddrHi1_entry (byte*) initEntry::entryBAddrHi1_return @@ -9441,34 +9435,34 @@ FINAL SYMBOL TABLE (byte*) initEntry::entryUCross1_entry (word*) initEntry::entryUCross1_return (byte) initEntry::n -(byte) initEntry::n#10 reg byte x 0.6842105263157894 +(byte) initEntry::n#10 reg byte x 34.55263157894738 (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$20 reg byte a 22.0 -(byte~) main::$22 reg byte a 22.0 +(byte~) main::$20 reg byte a 202.0 +(byte~) main::$22 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -9494,16 +9488,16 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte*) main::entry1 -(byte*) main::entry1#0 entry1 zp[2]:4 0.3157894736842105 +(byte*) main::entry1#0 entry1 zp[2]:4 1.736842105263158 (byte*) main::entry2 -(byte*) main::entry2#0 entry2 zp[2]:10 0.17142857142857143 +(byte*) main::entry2#0 entry2 zp[2]:10 0.9428571428571428 (label) main::fileEntry1 -(word~) main::fileEntry1_$0 zp[2]:4 4.0 +(word~) main::fileEntry1_$0 zp[2]:4 22.0 (byte) main::fileEntry1_idx (const byte) main::fileEntry1_idx#0 fileEntry1_idx = (byte) 1 (byte*) main::fileEntry1_return (label) main::fileEntry2 -(word~) main::fileEntry2_$0 zp[2]:10 4.0 +(word~) main::fileEntry2_$0 zp[2]:10 22.0 (byte) main::fileEntry2_idx (const byte) main::fileEntry2_idx#0 fileEntry2_idx = (byte) 2 (byte*) main::fileEntry2_return @@ -9517,8 +9511,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:2 22.0 -(byte*) memset::dst#2 dst zp[2]:2 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:2 20002.0 +(byte*) memset::dst#2 dst zp[2]:2 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -9527,27 +9521,27 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 22.0 +(byte~) mul8u::$1 reg byte a 2002.0 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 11.0 -(byte) mul8u::a#3 reg byte x 7.666666666666666 -(byte) mul8u::a#6 reg byte x 2.0 +(byte) mul8u::a#0 reg byte x 1001.0 +(byte) mul8u::a#3 reg byte x 684.1666666666667 +(byte) mul8u::a#6 reg byte x 101.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:12 22.0 -(word) mul8u::mb#2 mb zp[2]:12 4.714285714285714 +(word) mul8u::mb#1 mb zp[2]:12 2002.0 +(word) mul8u::mb#2 mb zp[2]:12 429.0 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:10 22.0 -(word) mul8u::res#2 res zp[2]:10 5.285714285714286 -(word) mul8u::res#6 res zp[2]:10 11.0 +(word) mul8u::res#1 res zp[2]:10 2002.0 +(word) mul8u::res#2 res zp[2]:10 432.1428571428571 +(word) mul8u::res#6 res zp[2]:10 1001.0 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:10 4.0 -(word) mul8u::return#3 return zp[2]:10 4.0 +(word) mul8u::return#2 return zp[2]:10 22.0 +(word) mul8u::return#3 return zp[2]:10 22.0 (void()) printEntry((byte*) printEntry::entry) (label) printEntry::@1 (label) printEntry::@10 @@ -9589,9 +9583,9 @@ FINAL SYMBOL TABLE (label) printEntry::@9 (label) printEntry::@return (byte*) printEntry::entry -(byte*) printEntry::entry#0 entry zp[2]:4 4.0 -(byte*) printEntry::entry#1 entry zp[2]:4 4.0 -(byte*) printEntry::entry#10 entry zp[2]:4 0.22727272727272732 +(byte*) printEntry::entry#0 entry zp[2]:4 22.0 +(byte*) printEntry::entry#1 entry zp[2]:4 22.0 +(byte*) printEntry::entry#10 entry zp[2]:4 9.431818181818182 (label) printEntry::entryBAddrHi1 (byte*) printEntry::entryBAddrHi1_entry (byte*) printEntry::entryBAddrHi1_return @@ -9645,80 +9639,80 @@ FINAL SYMBOL TABLE (const byte*) printEntry::str8[(byte) $b] = (byte*) "ucross " (const byte*) printEntry::str9[(byte) $d] = (byte*) "baddrlo " (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#10 reg byte x 6.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 -(byte) print_byte::b#7 reg byte x 4.0 -(byte) print_byte::b#8 reg byte x 4.0 -(byte) print_byte::b#9 reg byte x 4.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#10 reg byte x 5703.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 +(byte) print_byte::b#7 reg byte x 202.0 +(byte) print_byte::b#8 reg byte x 202.0 +(byte) print_byte::b#9 reg byte x 202.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:6 0.8648648648648649 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:6 1.1632653061224494 -(byte*) print_char_cursor#143 print_char_cursor zp[2]:6 9.800000000000002 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:6 7.333333333333334 -(byte*) print_char_cursor#164 print_char_cursor zp[2]:6 32.0 -(byte*) print_char_cursor#206 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#207 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#208 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#209 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#210 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#211 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#212 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#213 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#214 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#215 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#216 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#217 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#218 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#219 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#220 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#224 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#225 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#227 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#228 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#82 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 10001.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:6 3035.5675675675675 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:6 670.1020408163263 +(byte*) print_char_cursor#143 print_char_cursor zp[2]:6 2276.0 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:6 4270.333333333333 +(byte*) print_char_cursor#164 print_char_cursor zp[2]:6 2336.0 +(byte*) print_char_cursor#206 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#207 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#208 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#209 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#210 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#211 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#212 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#213 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#214 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#215 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#216 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#217 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#218 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#219 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#220 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#224 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#225 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#227 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#228 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#82 print_char_cursor zp[2]:6 110002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 1.0824742268041243 -(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#154 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#155 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#156 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#157 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#158 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#159 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#160 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#161 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#162 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#163 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#164 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#165 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#166 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#167 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#168 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#169 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#171 print_line_cursor_1 zp[2]:2 22.0 -(byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:2 24.0 -(byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:2 36.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 337.5154639175262 +(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#154 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#155 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#156 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#157 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#158 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#159 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#160 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#161 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#162 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#163 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#164 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#165 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#166 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#167 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#168 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#169 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#171 print_line_cursor_1 zp[2]:2 20002.0 +(byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:2 21003.0 +(byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:2 2358.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@2 @@ -9729,19 +9723,19 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:2 22.0 -(byte*) print_str::str#18 str zp[2]:2 11.5 -(byte*) print_str::str#20 str zp[2]:2 2.0 +(byte*) print_str::str#0 str zp[2]:2 20002.0 +(byte*) print_str::str#18 str zp[2]:2 10251.25 +(byte*) print_str::str#20 str zp[2]:2 1001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#10 w zp[2]:8 4.0 -(word) print_word::w#2 w zp[2]:8 4.0 -(word) print_word::w#4 w zp[2]:8 4.0 -(word) print_word::w#5 w zp[2]:8 4.666666666666666 -(word) print_word::w#7 w zp[2]:8 4.0 -(word) print_word::w#8 w zp[2]:8 4.0 +(word) print_word::w#10 w zp[2]:8 202.0 +(word) print_word::w#2 w zp[2]:8 202.0 +(word) print_word::w#4 w zp[2]:8 202.0 +(word) print_word::w#5 w zp[2]:8 835.6666666666667 +(word) print_word::w#7 w zp[2]:8 202.0 +(word) print_word::w#8 w zp[2]:8 202.0 zp[2]:2 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] zp[2]:4 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 main::fileEntry1_$0 ] @@ -9780,7 +9774,7 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER -Score: 4108 +Score: 4104 // File Comments // Implementing a semi-struct without the struct keyword by using pointer math and inline functions @@ -10967,8 +10961,7 @@ print_word: { .label w = 8 // print_byte(>w) // [202] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [203] call print_byte // [189] phi from print_word to print_byte [phi:print_word->print_byte] // [189] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy @@ -10977,8 +10970,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [189] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/semi-struct-2.sym b/src/test/ref/semi-struct-2.sym index 9c6e0cb03..bb4f7df3b 100644 --- a/src/test/ref/semi-struct-2.sym +++ b/src/test/ref/semi-struct-2.sym @@ -14,19 +14,19 @@ (const byte) SIZEOF_ENTRY = (byte) $12 (const byte*) files[(word)(const byte) MAX_FILES*(const byte) SIZEOF_ENTRY] = { fill( (word)MAX_FILES*SIZEOF_ENTRY, 0) } (void()) initEntry((byte*) initEntry::entry , (byte) initEntry::n) -(word~) initEntry::$1 zp[2]:14 2.0 -(byte~) initEntry::$11 reg byte a 4.0 -(byte~) initEntry::$13 reg byte a 4.0 -(byte~) initEntry::$15 reg byte a 4.0 -(word~) initEntry::$17 zp[2]:22 4.0 -(byte~) initEntry::$19 reg byte a 4.0 -(byte~) initEntry::$21 reg byte a 4.0 -(byte~) initEntry::$23 reg byte a 4.0 -(byte~) initEntry::$25 reg byte a 4.0 -(word~) initEntry::$3 zp[2]:16 2.0 -(word~) initEntry::$5 zp[2]:18 4.0 -(word~) initEntry::$7 zp[2]:20 2.0 -(byte~) initEntry::$9 reg byte a 4.0 +(word~) initEntry::$1 zp[2]:14 101.0 +(byte~) initEntry::$11 reg byte a 202.0 +(byte~) initEntry::$13 reg byte a 202.0 +(byte~) initEntry::$15 reg byte a 202.0 +(word~) initEntry::$17 zp[2]:22 202.0 +(byte~) initEntry::$19 reg byte a 202.0 +(byte~) initEntry::$21 reg byte a 202.0 +(byte~) initEntry::$23 reg byte a 202.0 +(byte~) initEntry::$25 reg byte a 202.0 +(word~) initEntry::$3 zp[2]:16 101.0 +(word~) initEntry::$5 zp[2]:18 202.0 +(word~) initEntry::$7 zp[2]:20 101.0 +(byte~) initEntry::$9 reg byte a 202.0 (label) initEntry::@1 (label) initEntry::@10 (label) initEntry::@11 @@ -42,9 +42,9 @@ (label) initEntry::@9 (label) initEntry::@return (byte*) initEntry::entry -(byte*) initEntry::entry#0 entry zp[2]:8 4.0 -(byte*) initEntry::entry#1 entry zp[2]:8 4.0 -(byte*) initEntry::entry#10 entry zp[2]:8 0.5128205128205128 +(byte*) initEntry::entry#0 entry zp[2]:8 22.0 +(byte*) initEntry::entry#1 entry zp[2]:8 22.0 +(byte*) initEntry::entry#10 entry zp[2]:8 21.282051282051285 (label) initEntry::entryBAddrHi1 (byte*) initEntry::entryBAddrHi1_entry (byte*) initEntry::entryBAddrHi1_return @@ -85,34 +85,34 @@ (byte*) initEntry::entryUCross1_entry (word*) initEntry::entryUCross1_return (byte) initEntry::n -(byte) initEntry::n#10 reg byte x 0.6842105263157894 +(byte) initEntry::n#10 reg byte x 34.55263157894738 (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 6.0 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 -(byte) keyboard_key_pressed::return#3 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 300.75 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#3 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$20 reg byte a 22.0 -(byte~) main::$22 reg byte a 22.0 +(byte~) main::$20 reg byte a 202.0 +(byte~) main::$22 reg byte a 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -138,16 +138,16 @@ (label) main::@9 (label) main::@return (byte*) main::entry1 -(byte*) main::entry1#0 entry1 zp[2]:4 0.3157894736842105 +(byte*) main::entry1#0 entry1 zp[2]:4 1.736842105263158 (byte*) main::entry2 -(byte*) main::entry2#0 entry2 zp[2]:10 0.17142857142857143 +(byte*) main::entry2#0 entry2 zp[2]:10 0.9428571428571428 (label) main::fileEntry1 -(word~) main::fileEntry1_$0 zp[2]:4 4.0 +(word~) main::fileEntry1_$0 zp[2]:4 22.0 (byte) main::fileEntry1_idx (const byte) main::fileEntry1_idx#0 fileEntry1_idx = (byte) 1 (byte*) main::fileEntry1_return (label) main::fileEntry2 -(word~) main::fileEntry2_$0 zp[2]:10 4.0 +(word~) main::fileEntry2_$0 zp[2]:10 22.0 (byte) main::fileEntry2_idx (const byte) main::fileEntry2_idx#0 fileEntry2_idx = (byte) 2 (byte*) main::fileEntry2_return @@ -161,8 +161,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:2 22.0 -(byte*) memset::dst#2 dst zp[2]:2 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:2 20002.0 +(byte*) memset::dst#2 dst zp[2]:2 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -171,27 +171,27 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 22.0 +(byte~) mul8u::$1 reg byte a 2002.0 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 11.0 -(byte) mul8u::a#3 reg byte x 7.666666666666666 -(byte) mul8u::a#6 reg byte x 2.0 +(byte) mul8u::a#0 reg byte x 1001.0 +(byte) mul8u::a#3 reg byte x 684.1666666666667 +(byte) mul8u::a#6 reg byte x 101.0 (byte) mul8u::b (word) mul8u::mb -(word) mul8u::mb#1 mb zp[2]:12 22.0 -(word) mul8u::mb#2 mb zp[2]:12 4.714285714285714 +(word) mul8u::mb#1 mb zp[2]:12 2002.0 +(word) mul8u::mb#2 mb zp[2]:12 429.0 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:10 22.0 -(word) mul8u::res#2 res zp[2]:10 5.285714285714286 -(word) mul8u::res#6 res zp[2]:10 11.0 +(word) mul8u::res#1 res zp[2]:10 2002.0 +(word) mul8u::res#2 res zp[2]:10 432.1428571428571 +(word) mul8u::res#6 res zp[2]:10 1001.0 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:10 4.0 -(word) mul8u::return#3 return zp[2]:10 4.0 +(word) mul8u::return#2 return zp[2]:10 22.0 +(word) mul8u::return#3 return zp[2]:10 22.0 (void()) printEntry((byte*) printEntry::entry) (label) printEntry::@1 (label) printEntry::@10 @@ -233,9 +233,9 @@ (label) printEntry::@9 (label) printEntry::@return (byte*) printEntry::entry -(byte*) printEntry::entry#0 entry zp[2]:4 4.0 -(byte*) printEntry::entry#1 entry zp[2]:4 4.0 -(byte*) printEntry::entry#10 entry zp[2]:4 0.22727272727272732 +(byte*) printEntry::entry#0 entry zp[2]:4 22.0 +(byte*) printEntry::entry#1 entry zp[2]:4 22.0 +(byte*) printEntry::entry#10 entry zp[2]:4 9.431818181818182 (label) printEntry::entryBAddrHi1 (byte*) printEntry::entryBAddrHi1_entry (byte*) printEntry::entryBAddrHi1_return @@ -289,80 +289,80 @@ (const byte*) printEntry::str8[(byte) $b] = (byte*) "ucross " (const byte*) printEntry::str9[(byte) $d] = (byte*) "baddrlo " (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#10 reg byte x 6.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 4.0 -(byte) print_byte::b#6 reg byte x 4.0 -(byte) print_byte::b#7 reg byte x 4.0 -(byte) print_byte::b#8 reg byte x 4.0 -(byte) print_byte::b#9 reg byte x 4.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#10 reg byte x 5703.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 202.0 +(byte) print_byte::b#7 reg byte x 202.0 +(byte) print_byte::b#8 reg byte x 202.0 +(byte) print_byte::b#9 reg byte x 202.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:6 0.8648648648648649 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:6 1.1632653061224494 -(byte*) print_char_cursor#143 print_char_cursor zp[2]:6 9.800000000000002 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:6 7.333333333333334 -(byte*) print_char_cursor#164 print_char_cursor zp[2]:6 32.0 -(byte*) print_char_cursor#206 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#207 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#208 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#209 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#210 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#211 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#212 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#213 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#214 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#215 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#216 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#217 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#218 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#219 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#220 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#224 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#225 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#227 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#228 print_char_cursor zp[2]:6 4.0 -(byte*) print_char_cursor#82 print_char_cursor zp[2]:6 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 10001.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:6 3035.5675675675675 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:6 670.1020408163263 +(byte*) print_char_cursor#143 print_char_cursor zp[2]:6 2276.0 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:6 4270.333333333333 +(byte*) print_char_cursor#164 print_char_cursor zp[2]:6 2336.0 +(byte*) print_char_cursor#206 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#207 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#208 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#209 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#210 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#211 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#212 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#213 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#214 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#215 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#216 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#217 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#218 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#219 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#220 print_char_cursor zp[2]:6 202.0 +(byte*) print_char_cursor#224 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#225 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#227 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#228 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#82 print_char_cursor zp[2]:6 110002.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 1.0824742268041243 -(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#154 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#155 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#156 print_line_cursor_1 zp[2]:2 2.0 -(byte*) print_line_cursor#157 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#158 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#159 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#160 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#161 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#162 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#163 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#164 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#165 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#166 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#167 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#168 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#169 print_line_cursor_1 zp[2]:2 4.0 -(byte*) print_line_cursor#171 print_line_cursor_1 zp[2]:2 22.0 -(byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:2 24.0 -(byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:2 36.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 337.5154639175262 +(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#154 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#155 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#156 print_line_cursor_1 zp[2]:2 11.0 +(byte*) print_line_cursor#157 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#158 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#159 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#160 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#161 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#162 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#163 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#164 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#165 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#166 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#167 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#168 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#169 print_line_cursor_1 zp[2]:2 202.0 +(byte*) print_line_cursor#171 print_line_cursor_1 zp[2]:2 20002.0 +(byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:2 21003.0 +(byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:2 2358.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@2 @@ -373,19 +373,19 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:2 22.0 -(byte*) print_str::str#18 str zp[2]:2 11.5 -(byte*) print_str::str#20 str zp[2]:2 2.0 +(byte*) print_str::str#0 str zp[2]:2 20002.0 +(byte*) print_str::str#18 str zp[2]:2 10251.25 +(byte*) print_str::str#20 str zp[2]:2 1001.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#10 w zp[2]:8 4.0 -(word) print_word::w#2 w zp[2]:8 4.0 -(word) print_word::w#4 w zp[2]:8 4.0 -(word) print_word::w#5 w zp[2]:8 4.666666666666666 -(word) print_word::w#7 w zp[2]:8 4.0 -(word) print_word::w#8 w zp[2]:8 4.0 +(word) print_word::w#10 w zp[2]:8 202.0 +(word) print_word::w#2 w zp[2]:8 202.0 +(word) print_word::w#4 w zp[2]:8 202.0 +(word) print_word::w#5 w zp[2]:8 835.6666666666667 +(word) print_word::w#7 w zp[2]:8 202.0 +(word) print_word::w#8 w zp[2]:8 202.0 zp[2]:2 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#153 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#171 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] zp[2]:4 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 main::fileEntry1_$0 ] diff --git a/src/test/ref/sequence-locality-0.log b/src/test/ref/sequence-locality-0.log index 9e4359f63..0b8ec0500 100644 --- a/src/test/ref/sequence-locality-0.log +++ b/src/test/ref/sequence-locality-0.log @@ -89,10 +89,10 @@ Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#4 - (byte) 5 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte) main::idx#3 = (byte) main::idx#5 (byte) main::idx#4 +Alias main::i#2 = main::i#3 main::i#4 +Alias main::idx#3 = main::idx#5 main::idx#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2>(byte) 5) goto main::@2 Simple Condition (bool~) main::$2 [13] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 @@ -182,15 +182,15 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.875 +(byte) main::i#1 151.5 +(byte) main::i#2 63.125 (byte) main::idx -(byte) main::idx#1 22.0 -(byte) main::idx#2 22.0 -(byte) main::idx#3 11.0 -(byte) main::idx#6 11.0 +(byte) main::idx#1 202.0 +(byte) main::idx#2 202.0 +(byte) main::idx#3 101.0 +(byte) main::idx#6 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -304,7 +304,7 @@ Potential registers zp[1]:3 [ main::idx#3 main::idx#6 main::idx#1 main::idx#2 ] Potential registers zp[1]:4 [ main::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 66: zp[1]:3 [ main::idx#3 main::idx#6 main::idx#1 main::idx#2 ] 23.38: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$1 ] +Uplift Scope [main] 606: zp[1]:3 [ main::idx#3 main::idx#6 main::idx#1 main::idx#2 ] 214.62: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:4 [ main::$1 ] Uplift Scope [] Uplifting [main] best 568 combination reg byte y [ main::idx#3 main::idx#6 main::idx#1 main::idx#2 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -429,20 +429,20 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.875 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 63.125 (byte) main::idx -(byte) main::idx#1 reg byte y 22.0 -(byte) main::idx#2 reg byte y 22.0 -(byte) main::idx#3 reg byte y 11.0 -(byte) main::idx#6 reg byte y 11.0 +(byte) main::idx#1 reg byte y 202.0 +(byte) main::idx#2 reg byte y 202.0 +(byte) main::idx#3 reg byte y 101.0 +(byte) main::idx#6 reg byte y 101.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/sequence-locality-0.sym b/src/test/ref/sequence-locality-0.sym index e2e2dbb11..518e53a8b 100644 --- a/src/test/ref/sequence-locality-0.sym +++ b/src/test/ref/sequence-locality-0.sym @@ -2,20 +2,20 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.875 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 63.125 (byte) main::idx -(byte) main::idx#1 reg byte y 22.0 -(byte) main::idx#2 reg byte y 22.0 -(byte) main::idx#3 reg byte y 11.0 -(byte) main::idx#6 reg byte y 11.0 +(byte) main::idx#1 reg byte y 202.0 +(byte) main::idx#2 reg byte y 202.0 +(byte) main::idx#3 reg byte y 101.0 +(byte) main::idx#6 reg byte y 101.0 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/sequence-locality-1.log b/src/test/ref/sequence-locality-1.log index 0daaf1e82..f6f048676 100644 --- a/src/test/ref/sequence-locality-1.log +++ b/src/test/ref/sequence-locality-1.log @@ -84,11 +84,11 @@ Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [5] (bool~) main::$1 ← (byte) main::i#2 <= (byte) 5 from [4] (bool~) main::$0 ← (byte) main::i#2 > (byte) 5 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::j#0 = (byte) main::i#2 (byte) main::j#3 (byte) main::i#4 -Alias (byte) main::idx#3 = (byte) main::idx#4 +Alias main::j#0 = main::i#2 main::j#3 main::i#4 +Alias main::idx#3 = main::idx#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::idx#2 = (byte) main::idx#3 -Alias (byte) main::i#3 = (byte) main::j#0 +Alias main::idx#2 = main::idx#3 +Alias main::i#3 = main::j#0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [4] if((byte) main::i#3<=(byte) 5) goto main::@2 Simple Condition (bool~) main::$2 [10] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 @@ -180,15 +180,15 @@ main::@4: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#3 9.428571428571429 +(byte) main::i#1 151.5 +(byte) main::i#3 86.57142857142857 (byte) main::idx -(byte) main::idx#1 7.333333333333333 -(byte) main::idx#2 5.5 +(byte) main::idx#1 67.33333333333333 +(byte) main::idx#2 50.5 (byte) main::j -(byte) main::j#1 22.0 -(byte) main::j#2 33.0 -(byte) main::j#4 22.0 +(byte) main::j#1 202.0 +(byte) main::j#2 303.0 +(byte) main::j#4 202.0 Initial phi equivalence classes [ main::i#3 main::i#1 ] @@ -294,16 +294,16 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte) main::j#1 ← (byte) main::i#3 + (byte) main::i#3 [ main::i#3 main::idx#2 main::j#1 ] ( main:2 [ main::i#3 main::idx#2 main::j#1 ] ) always clobbers reg byte a +Statement [7] (byte) main::j#1 ← (byte) main::i#3 + (byte) main::i#3 [ main::i#3 main::idx#2 main::j#1 ] ( main:2 [ main::i#3 main::idx#2 main::j#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#3 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#2 main::idx#1 ] -Statement [7] (byte) main::j#1 ← (byte) main::i#3 + (byte) main::i#3 [ main::i#3 main::idx#2 main::j#1 ] ( main:2 [ main::i#3 main::idx#2 main::j#1 ] ) always clobbers reg byte a +Statement [7] (byte) main::j#1 ← (byte) main::i#3 + (byte) main::i#3 [ main::i#3 main::idx#2 main::j#1 ] ( main:2 [ main::i#3 main::idx#2 main::j#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#3 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#2 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::j#2 main::j#4 main::j#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 77: zp[1]:4 [ main::j#2 main::j#4 main::j#1 ] 25.93: zp[1]:2 [ main::i#3 main::i#1 ] 12.83: zp[1]:3 [ main::idx#2 main::idx#1 ] +Uplift Scope [main] 707: zp[1]:4 [ main::j#2 main::j#4 main::j#1 ] 238.07: zp[1]:2 [ main::i#3 main::i#1 ] 117.83: zp[1]:3 [ main::idx#2 main::idx#1 ] Uplift Scope [] Uplifting [main] best 478 combination reg byte a [ main::j#2 main::j#4 main::j#1 ] reg byte y [ main::i#3 main::i#1 ] reg byte x [ main::idx#2 main::idx#1 ] @@ -430,15 +430,15 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#3 reg byte y 9.428571428571429 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#3 reg byte y 86.57142857142857 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 5.5 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 50.5 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 33.0 -(byte) main::j#4 reg byte a 22.0 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 303.0 +(byte) main::j#4 reg byte a 202.0 (const byte*) main::screen = (byte*) 1024 reg byte y [ main::i#3 main::i#1 ] diff --git a/src/test/ref/sequence-locality-1.sym b/src/test/ref/sequence-locality-1.sym index d136b959a..efd5c03c8 100644 --- a/src/test/ref/sequence-locality-1.sym +++ b/src/test/ref/sequence-locality-1.sym @@ -8,15 +8,15 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#3 reg byte y 9.428571428571429 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#3 reg byte y 86.57142857142857 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#2 reg byte x 5.5 +(byte) main::idx#1 reg byte x 67.33333333333333 +(byte) main::idx#2 reg byte x 50.5 (byte) main::j -(byte) main::j#1 reg byte a 22.0 -(byte) main::j#2 reg byte a 33.0 -(byte) main::j#4 reg byte a 22.0 +(byte) main::j#1 reg byte a 202.0 +(byte) main::j#2 reg byte a 303.0 +(byte) main::j#4 reg byte a 202.0 (const byte*) main::screen = (byte*) 1024 reg byte y [ main::i#3 main::i#1 ] diff --git a/src/test/ref/sieve-min.asm b/src/test/ref/sieve-min.asm index e3ba7d7d5..8dcc2fd76 100644 --- a/src/test/ref/sieve-min.asm +++ b/src/test/ref/sieve-min.asm @@ -168,12 +168,10 @@ print_char: { print_word: { .label w = 4 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (word) print_word::w#0 [ print_char_cursor#27 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:14 [ main::i#10 print_char_cursor#27 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [35] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#10 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [39] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#3 } } main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#0 = print_char::ch#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [42] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#20 print_byte::$2 ] main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [48] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [50] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ main::i#12 main::sieve_i#2 ] ( main:2 [ main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a -Statement [9] if((word) main::i#10<(word) $4c7) goto main::@8 [ main::i#10 print_char_cursor#27 ] ( main:2 [ main::i#10 print_char_cursor#27 ] ) always clobbers reg byte a -Statement [11] (byte*~) main::$16 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#27 main::$16 ] ( main:2 [ main::i#10 print_char_cursor#27 main::$16 ] ) always clobbers reg byte a -Statement [12] if((byte) 0!=*((byte*~) main::$16)) goto main::@9 [ main::i#10 print_char_cursor#27 ] ( main:2 [ main::i#10 print_char_cursor#27 ] ) always clobbers reg byte a reg byte y -Statement [13] (word) print_word::w#0 ← (word) main::i#10 [ main::i#10 print_char_cursor#27 print_word::w#0 ] ( main:2 [ main::i#10 print_char_cursor#27 print_word::w#0 ] ) always clobbers reg byte a -Statement [19] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@3 [ main::i#12 main::sieve_i#2 ] ( main:2 [ main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a reg byte y -Statement [20] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#0 ] ) always clobbers reg byte a -Statement [21] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ) always clobbers reg byte a -Statement [23] if((word) main::j#2<(const word) COUNT) goto main::@5 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a -Statement [26] *((byte*) main::s#2) ← (byte) 1 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a reg byte y -Statement [27] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ) always clobbers reg byte a -Statement [28] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ) always clobbers reg byte a -Statement [30] *((byte*) print_char_cursor#19) ← (byte) print_char::ch#3 [ print_char_cursor#19 ] ( main:2::print_char:16 [ main::i#10 print_char_cursor#19 ] main:2::print_word:14::print_byte:34::print_char:41 [ main::i#10 print_word::w#0 print_byte::b#2 print_char_cursor#19 ] main:2::print_word:14::print_byte:36::print_char:41 [ main::i#10 print_byte::b#2 print_char_cursor#19 ] main:2::print_word:14::print_byte:34::print_char:44 [ main::i#10 print_word::w#0 print_char_cursor#19 ] main:2::print_word:14::print_byte:36::print_char:44 [ main::i#10 print_char_cursor#19 ] ) always clobbers reg byte y -Statement [33] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#27 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:14 [ main::i#10 print_char_cursor#27 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [35] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#10 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [42] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#20 print_byte::$2 ] main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [48] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [50] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [42] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#20 print_byte::$2 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#26 = print_char_cursor#27 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#19 = print_char_cursor#20 } } main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#20 print_byte::$2 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [48] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ main::i#12 main::sieve_i#2 ] ( main:2 [ main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a +Statement [9] if((word) main::i#10<(word) $4c7) goto main::@8 [ main::i#10 print_char_cursor#27 ] ( main:2 [ main::i#10 print_char_cursor#27 ] { } ) always clobbers reg byte a +Statement [11] (byte*~) main::$16 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#27 main::$16 ] ( main:2 [ main::i#10 print_char_cursor#27 main::$16 ] { } ) always clobbers reg byte a +Statement [12] if((byte) 0!=*((byte*~) main::$16)) goto main::@9 [ main::i#10 print_char_cursor#27 ] ( main:2 [ main::i#10 print_char_cursor#27 ] { } ) always clobbers reg byte a reg byte y +Statement [13] (word) print_word::w#0 ← (word) main::i#10 [ main::i#10 print_char_cursor#27 print_word::w#0 ] ( main:2 [ main::i#10 print_char_cursor#27 print_word::w#0 ] { { print_word::w#0 = main::i#10 } } ) always clobbers reg byte a +Statement [19] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@3 [ main::i#12 main::sieve_i#2 ] ( main:2 [ main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [20] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#0 ] { } ) always clobbers reg byte a +Statement [21] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] { } ) always clobbers reg byte a +Statement [23] if((word) main::j#2<(const word) COUNT) goto main::@5 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a +Statement [26] *((byte*) main::s#2) ← (byte) 1 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a reg byte y +Statement [27] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] { } ) always clobbers reg byte a +Statement [28] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] { } ) always clobbers reg byte a +Statement [30] *((byte*) print_char_cursor#19) ← (byte) print_char::ch#3 [ print_char_cursor#19 ] ( main:2::print_char:16 [ main::i#10 print_char_cursor#19 ] { { print_char_cursor#19 = print_char_cursor#20 } } main:2::print_word:14::print_byte:34::print_char:41 [ main::i#10 print_word::w#0 print_byte::b#2 print_char_cursor#19 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#3 } } main:2::print_word:14::print_byte:36::print_char:41 [ main::i#10 print_byte::b#2 print_char_cursor#19 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#0 = print_char::ch#3 } } main:2::print_word:14::print_byte:34::print_char:44 [ main::i#10 print_word::w#0 print_char_cursor#19 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#26 = print_char_cursor#27 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#19 = print_char_cursor#20 } } main:2::print_word:14::print_byte:36::print_char:44 [ main::i#10 print_char_cursor#19 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte y +Statement [39] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#26 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#27 } { print_char::ch#0 = print_char::ch#3 } } main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#26 print_byte::b#2 print_byte::$0 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#0 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [42] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::print_word:14::print_byte:34 [ main::i#10 print_word::w#0 print_char_cursor#20 print_byte::$2 ] { { print_word::w#0 = main::i#10 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#26 = print_char_cursor#27 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#19 = print_char_cursor#20 } } main:2::print_word:14::print_byte:36 [ main::i#10 print_char_cursor#20 print_byte::$2 ] { { print_word::w#0 = main::i#10 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#19 = print_char_cursor#26 print_char_cursor#20 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [48] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [50] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::memset:5 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::i#12 main::i#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::i#10 main::i#3 ] : zp[2]:6 , @@ -1448,21 +1444,21 @@ Potential registers zp[1]:22 [ print_byte::$0 ] : zp[1]:22 , reg byte a , reg by Potential registers zp[1]:23 [ print_byte::$2 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 297: zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] 227.67: zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] 35.6: zp[2]:2 [ main::i#12 main::i#2 ] 28.11: zp[2]:6 [ main::i#10 main::i#3 ] 25: zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] 22: zp[2]:18 [ main::$16 ] -Uplift Scope [memset] 36.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [] 34: zp[2]:13 [ print_char_cursor#19 print_char_cursor#27 print_char_cursor#33 print_char_cursor#20 print_char_cursor#26 ] -Uplift Scope [print_byte] 10: zp[1]:15 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:22 [ print_byte::$0 ] 4: zp[1]:23 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:12 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word] 5: zp[2]:20 [ print_word::w#0 ] +Uplift Scope [print_char] 160,007: zp[1]:12 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 122,348.71: zp[2]:13 [ print_char_cursor#19 print_char_cursor#27 print_char_cursor#33 print_char_cursor#20 print_char_cursor#26 ] +Uplift Scope [print_byte] 20,002: zp[1]:22 [ print_byte::$0 ] 20,002: zp[1]:23 [ print_byte::$2 ] 9,505: zp[1]:15 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [main] 2,929.5: zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] 2,237.67: zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] 341.6: zp[2]:2 [ main::i#12 main::i#2 ] 258.11: zp[2]:6 [ main::i#10 main::i#3 ] 229.55: zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] 202: zp[2]:18 [ main::$16 ] +Uplift Scope [memset] 3,336.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 701: zp[2]:20 [ print_word::w#0 ] Uplift Scope [RADIX] -Uplifting [main] best 10809 combination zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] zp[2]:2 [ main::i#12 main::i#2 ] zp[2]:6 [ main::i#10 main::i#3 ] zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:18 [ main::$16 ] -Uplifting [memset] best 10809 combination zp[2]:16 [ memset::dst#2 memset::dst#1 ] -Uplifting [] best 10809 combination zp[2]:13 [ print_char_cursor#19 print_char_cursor#27 print_char_cursor#33 print_char_cursor#20 print_char_cursor#26 ] -Uplifting [print_byte] best 10795 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 10783 combination reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word] best 10783 combination zp[2]:20 [ print_word::w#0 ] -Uplifting [RADIX] best 10783 combination +Uplifting [print_char] best 10797 combination reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 ] +Uplifting [] best 10797 combination zp[2]:13 [ print_char_cursor#19 print_char_cursor#27 print_char_cursor#33 print_char_cursor#20 print_char_cursor#26 ] +Uplifting [print_byte] best 10779 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [main] best 10779 combination zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] zp[2]:2 [ main::i#12 main::i#2 ] zp[2]:6 [ main::i#10 main::i#3 ] zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:18 [ main::$16 ] +Uplifting [memset] best 10779 combination zp[2]:16 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 10779 combination zp[2]:20 [ print_word::w#0 ] +Uplifting [RADIX] best 10779 combination Coalescing zero page register [ zp[2]:6 [ main::i#10 main::i#3 ] ] with [ zp[2]:20 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:13 [ print_char_cursor#19 print_char_cursor#27 print_char_cursor#33 print_char_cursor#20 print_char_cursor#26 ] ] with [ zp[2]:2 [ main::i#12 main::i#2 ] ] Coalescing zero page register [ zp[2]:18 [ main::$16 ] ] with [ zp[2]:16 [ memset::dst#2 memset::dst#1 ] ] @@ -1728,8 +1724,7 @@ print_char: { print_word: { .label w = 4 // [33] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [34] call print_byte // [38] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -1740,8 +1735,7 @@ print_word: { // print_word::@1 __b1: // [35] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [36] call print_byte // [38] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -1915,7 +1909,7 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SQRT_COUNT = (byte) $80 (void()) main() -(byte*~) main::$16 zp[2]:12 22.0 +(byte*~) main::$16 zp[2]:12 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -1929,21 +1923,21 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (word) main::i -(word) main::i#10 i_1 zp[2]:4 6.111111111111112 -(word) main::i#12 i zp[2]:10 24.6 -(word) main::i#2 i zp[2]:10 11.0 -(word) main::i#3 i_1 zp[2]:4 22.0 +(word) main::i#10 i_1 zp[2]:4 56.11111111111111 +(word) main::i#12 i zp[2]:10 240.6 +(word) main::i#2 i zp[2]:10 101.0 +(word) main::i#3 i_1 zp[2]:4 202.0 (word) main::j -(word) main::j#0 j zp[2]:6 16.5 -(word) main::j#1 j zp[2]:6 202.0 -(word) main::j#2 j zp[2]:6 78.5 +(word) main::j#0 j zp[2]:6 151.5 +(word) main::j#1 j zp[2]:6 2002.0 +(word) main::j#2 j zp[2]:6 776.0 (byte*) main::s -(byte*) main::s#0 s zp[2]:8 22.0 -(byte*) main::s#1 s zp[2]:8 101.0 -(byte*) main::s#2 s zp[2]:8 104.66666666666666 +(byte*) main::s#0 s zp[2]:8 202.0 +(byte*) main::s#1 s zp[2]:8 1001.0 +(byte*) main::s#2 s zp[2]:8 1034.6666666666667 (byte*) main::sieve_i -(byte*) main::sieve_i#1 sieve_i zp[2]:2 22.0 -(byte*) main::sieve_i#2 sieve_i zp[2]:2 3.0 +(byte*) main::sieve_i#1 sieve_i zp[2]:2 202.0 +(byte*) main::sieve_i#2 sieve_i zp[2]:2 27.545454545454547 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -1951,8 +1945,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 2002.0 +(byte*) memset::dst#2 dst zp[2]:12 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) COUNT (word) memset::num @@ -1960,26 +1954,26 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) sieve (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#19 print_char_cursor zp[2]:10 9.5 -(byte*) print_char_cursor#20 print_char_cursor zp[2]:10 1.9999999999999998 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:10 2.0 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#33 print_char_cursor zp[2]:10 16.5 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:10 110052.5 +(byte*) print_char_cursor#20 print_char_cursor zp[2]:10 7943.214285714286 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:10 4000.9999999999995 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:10 200.5 +(byte*) print_char_cursor#33 print_char_cursor zp[2]:10 151.5 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -1987,7 +1981,7 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 5.0 +(word) print_word::w#0 w zp[2]:4 701.0 (const byte*) sieve = (byte*) 4096 zp[2]:2 [ main::sieve_i#2 main::sieve_i#1 ] @@ -2003,7 +1997,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 9766 +Score: 9762 // File Comments // Upstart @@ -2246,8 +2240,7 @@ print_word: { .label w = 4 // print_byte(>w) // [33] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [34] call print_byte // [38] phi from print_word to print_byte [phi:print_word->print_byte] // [38] phi (byte*) print_char_cursor#26 = (byte*) print_char_cursor#27 [phi:print_word->print_byte#0] -- register_copy @@ -2256,8 +2249,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [38] phi (byte*) print_char_cursor#26 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/sieve-min.sym b/src/test/ref/sieve-min.sym index 8578dfa28..e24a7ea25 100644 --- a/src/test/ref/sieve-min.sym +++ b/src/test/ref/sieve-min.sym @@ -9,7 +9,7 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SQRT_COUNT = (byte) $80 (void()) main() -(byte*~) main::$16 zp[2]:12 22.0 +(byte*~) main::$16 zp[2]:12 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -23,21 +23,21 @@ (label) main::@8 (label) main::@9 (word) main::i -(word) main::i#10 i_1 zp[2]:4 6.111111111111112 -(word) main::i#12 i zp[2]:10 24.6 -(word) main::i#2 i zp[2]:10 11.0 -(word) main::i#3 i_1 zp[2]:4 22.0 +(word) main::i#10 i_1 zp[2]:4 56.11111111111111 +(word) main::i#12 i zp[2]:10 240.6 +(word) main::i#2 i zp[2]:10 101.0 +(word) main::i#3 i_1 zp[2]:4 202.0 (word) main::j -(word) main::j#0 j zp[2]:6 16.5 -(word) main::j#1 j zp[2]:6 202.0 -(word) main::j#2 j zp[2]:6 78.5 +(word) main::j#0 j zp[2]:6 151.5 +(word) main::j#1 j zp[2]:6 2002.0 +(word) main::j#2 j zp[2]:6 776.0 (byte*) main::s -(byte*) main::s#0 s zp[2]:8 22.0 -(byte*) main::s#1 s zp[2]:8 101.0 -(byte*) main::s#2 s zp[2]:8 104.66666666666666 +(byte*) main::s#0 s zp[2]:8 202.0 +(byte*) main::s#1 s zp[2]:8 1001.0 +(byte*) main::s#2 s zp[2]:8 1034.6666666666667 (byte*) main::sieve_i -(byte*) main::sieve_i#1 sieve_i zp[2]:2 22.0 -(byte*) main::sieve_i#2 sieve_i zp[2]:2 3.0 +(byte*) main::sieve_i#1 sieve_i zp[2]:2 202.0 +(byte*) main::sieve_i#2 sieve_i zp[2]:2 27.545454545454547 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -45,8 +45,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) 0 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 2002.0 +(byte*) memset::dst#2 dst zp[2]:12 1334.6666666666667 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) COUNT (word) memset::num @@ -54,26 +54,26 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) sieve (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#19 print_char_cursor zp[2]:10 9.5 -(byte*) print_char_cursor#20 print_char_cursor zp[2]:10 1.9999999999999998 -(byte*) print_char_cursor#26 print_char_cursor zp[2]:10 2.0 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#33 print_char_cursor zp[2]:10 16.5 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:10 110052.5 +(byte*) print_char_cursor#20 print_char_cursor zp[2]:10 7943.214285714286 +(byte*) print_char_cursor#26 print_char_cursor zp[2]:10 4000.9999999999995 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:10 200.5 +(byte*) print_char_cursor#33 print_char_cursor zp[2]:10 151.5 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -81,7 +81,7 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 5.0 +(word) print_word::w#0 w zp[2]:4 701.0 (const byte*) sieve = (byte*) 4096 zp[2]:2 [ main::sieve_i#2 main::sieve_i#1 ] diff --git a/src/test/ref/sieve.log b/src/test/ref/sieve.log index b517da7a7..9d4c5b4f1 100644 --- a/src/test/ref/sieve.log +++ b/src/test/ref/sieve.log @@ -2260,159 +2260,159 @@ Inversing boolean not [391] (bool~) main::$22 ← (byte) 0 != *((byte*) main::si Inversing boolean not [450] (bool~) main::$27 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) from [449] (bool~) main::$33 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) Inversing boolean not [451] (bool~) main::$28 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) from [450] (bool~) main::$27 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 -Alias (void*) memset::str#3 = (void*) memset::str#4 -Alias (word) memset::num#2 = (word) memset::num#3 -Alias (byte) memset::c#4 = (byte) memset::c#5 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#2 = (byte) memset::c#3 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#5 = (void*) memset::str#6 -Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#9 (word) rem16u#2 -Alias (word) divr16u::dividend#1 = (word~) div32u16u::$0 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (dword) div32u16u::dividend#1 = (dword) div32u16u::dividend#2 -Alias (word) div32u16u::divisor#1 = (word) div32u16u::divisor#2 -Alias (word) rem16u#10 = (word) rem16u#3 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$2 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#11 = (word) rem16u#4 (word) rem16u#12 (word) rem16u#5 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (word) utoa::value#10 = (word) utoa::value#8 (word) utoa::value#12 (word) utoa::value#13 (word) utoa::value#9 (word) utoa::value#14 (word) utoa::value#15 (word) utoa::value#11 -Alias (byte*) utoa::buffer#10 = (byte*) utoa::buffer#17 (byte*) utoa::buffer#21 (byte*) utoa::buffer#16 (byte*) utoa::buffer#18 (byte*) utoa::buffer#13 (byte*) utoa::buffer#19 (byte*) utoa::buffer#20 (byte*) utoa::buffer#6 -Alias (byte) utoa::radix#1 = (byte) utoa::radix#2 (byte) utoa::radix#3 (byte) utoa::radix#4 -Alias (byte) utoa::digit#2 = (byte) utoa::digit#3 (byte) utoa::digit#6 (byte) utoa::digit#5 -Alias (word*) utoa::digit_values#10 = (word*) utoa::digit_values#5 (word*) utoa::digit_values#6 (word*) utoa::digit_values#9 -Alias (word) utoa::value#2 = (word) utoa::value#5 (word) utoa::value#3 (word) utoa::value#4 -Alias (byte) utoa::started#2 = (byte) utoa::started#3 -Alias (byte*) utoa::buffer#11 = (byte*) utoa::buffer#12 (byte*) utoa::buffer#7 (byte*) utoa::buffer#8 (byte*) utoa::buffer#9 -Alias (byte) utoa::max_digits#10 = (byte) utoa::max_digits#8 (byte) utoa::max_digits#5 (byte) utoa::max_digits#9 -Alias (word) utoa::digit_value#0 = (word) utoa::digit_value#1 -Alias (word) utoa_append::return#0 = (word) utoa_append::return#3 -Alias (word) utoa::value#0 = (word~) utoa::$10 -Alias (byte) utoa_append::digit#2 = (byte) utoa_append::digit#4 (byte) utoa_append::digit#3 -Alias (word) utoa_append::value#2 = (word) utoa_append::value#3 (word) utoa_append::value#4 (word) utoa_append::return#1 (word) utoa_append::return#4 (word) utoa_append::return#2 -Alias (word) utoa_append::sub#1 = (word) utoa_append::sub#2 -Alias (byte*) utoa_append::buffer#1 = (byte*) utoa_append::buffer#4 (byte*) utoa_append::buffer#2 -Alias (dword) ultoa::value#10 = (dword) ultoa::value#8 (dword) ultoa::value#12 (dword) ultoa::value#13 (dword) ultoa::value#9 (dword) ultoa::value#14 (dword) ultoa::value#15 (dword) ultoa::value#11 -Alias (byte*) ultoa::buffer#10 = (byte*) ultoa::buffer#17 (byte*) ultoa::buffer#21 (byte*) ultoa::buffer#16 (byte*) ultoa::buffer#18 (byte*) ultoa::buffer#13 (byte*) ultoa::buffer#19 (byte*) ultoa::buffer#20 (byte*) ultoa::buffer#6 -Alias (byte) ultoa::radix#1 = (byte) ultoa::radix#2 (byte) ultoa::radix#3 (byte) ultoa::radix#4 -Alias (byte) ultoa::digit#2 = (byte) ultoa::digit#3 (byte) ultoa::digit#6 (byte) ultoa::digit#5 -Alias (dword*) ultoa::digit_values#10 = (dword*) ultoa::digit_values#5 (dword*) ultoa::digit_values#6 (dword*) ultoa::digit_values#9 -Alias (dword) ultoa::value#2 = (dword) ultoa::value#5 (dword) ultoa::value#3 (dword) ultoa::value#4 -Alias (byte) ultoa::started#2 = (byte) ultoa::started#3 -Alias (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#12 (byte*) ultoa::buffer#7 (byte*) ultoa::buffer#8 (byte*) ultoa::buffer#9 -Alias (byte) ultoa::max_digits#10 = (byte) ultoa::max_digits#8 (byte) ultoa::max_digits#5 (byte) ultoa::max_digits#9 -Alias (dword) ultoa::digit_value#0 = (dword) ultoa::digit_value#1 -Alias (dword) ultoa_append::return#0 = (dword) ultoa_append::return#3 -Alias (dword) ultoa::value#0 = (dword~) ultoa::$10 -Alias (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#4 (byte) ultoa_append::digit#3 -Alias (dword) ultoa_append::value#2 = (dword) ultoa_append::value#3 (dword) ultoa_append::value#4 (dword) ultoa_append::return#1 (dword) ultoa_append::return#4 (dword) ultoa_append::return#2 -Alias (dword) ultoa_append::sub#1 = (dword) ultoa_append::sub#2 -Alias (byte*) ultoa_append::buffer#1 = (byte*) ultoa_append::buffer#4 (byte*) ultoa_append::buffer#2 -Alias (word) rem16u#0 = (word) rem16u#23 (word) rem16u#19 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#27 (byte*) print_char_cursor#65 (byte*) print_screen#7 -Alias (byte*) print_str::str#8 = (byte*) print_str::str#9 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#56 (byte*) print_char_cursor#30 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#3 (byte*) print_line_cursor#13 (byte*) print_char_cursor#32 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#58 = (byte*) print_char_cursor#67 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#34 (byte*) print_char_cursor#6 -Alias (byte*) print_char_cursor#59 = (byte*) print_char_cursor#68 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#36 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#14 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#11 (byte*) print_char_cursor#39 (byte*) print_line_cursor#4 (byte*) print_char_cursor#12 -Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 -Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 -Alias (byte*) print_screen#3 = (byte*) print_screen#5 (byte*) print_screen#6 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#36 (byte*) print_line_cursor#28 -Alias (byte*) print_char_cursor#60 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#77 (byte*) print_char_cursor#69 -Alias (word) rem16u#26 = (word) rem16u#52 (word) rem16u#53 (word) rem16u#51 (word) rem16u#50 (word) rem16u#49 (word) rem16u#48 (word) rem16u#46 (word) rem16u#43 (word) rem16u#40 (word) rem16u#34 (word) rem16u#29 -Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#23 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#29 (byte*) print_line_cursor#24 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#50 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#81 (byte*) print_char_cursor#79 -Alias (byte*) main::sieve_i#0 = (byte*~) main::$9 -Alias (byte*) main::sieve_i#2 = (byte*) main::sieve_i#4 (byte*) main::sieve_i#6 -Alias (word) main::i#12 = (word) main::i#4 (word) main::i#6 -Alias (word) rem16u#17 = (word) rem16u#30 (word) rem16u#24 (word) rem16u#20 (word) rem16u#36 -Alias (byte*) print_char_cursor#61 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#78 (byte*) print_char_cursor#75 (byte*) print_char_cursor#70 (byte*) print_char_cursor#84 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#51 (byte*) print_line_cursor#46 (byte*) print_line_cursor#44 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#37 (byte*) print_line_cursor#34 (byte*) print_line_cursor#30 (byte*) print_line_cursor#53 -Alias (dword) clock::return#2 = (dword) clock::return#4 -Alias (dword) main::cyclecount#0 = (dword~) main::$11 (dword) main::cyclecount#4 (dword) main::cyclecount#3 (dword) main::cyclecount#2 (dword) main::cyclecount#1 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) rem16u#13 = (word) rem16u#6 (word) rem16u#47 (word) rem16u#44 (word) rem16u#41 (word) rem16u#35 (word) rem16u#33 -Alias (word) main::sec100s#0 = (word~) main::$13 (word) main::sec100s#1 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#49 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#50 -Alias (word) main::j#0 = (word~) main::$23 -Alias (byte*) main::s#0 = (byte*~) main::$24 -Alias (byte*) main::s#2 = (byte*) main::s#3 -Alias (word) main::i#13 = (word) main::i#7 -Alias (word) main::j#2 = (word) main::j#3 -Alias (byte*) main::sieve_i#5 = (byte*) main::sieve_i#7 -Alias (word) rem16u#31 = (word) rem16u#37 -Alias (byte*) print_char_cursor#83 = (byte*) print_char_cursor#85 -Alias (byte*) print_line_cursor#52 = (byte*) print_line_cursor#54 -Alias (word) main::i#11 = (word) main::i#9 (word) main::i#8 (word) main::i#15 (word) main::i#14 -Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#71 (byte*) print_char_cursor#63 -Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#38 (byte*) print_line_cursor#35 (byte*) print_line_cursor#47 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 -Alias (word) rem16u#22 = (word) rem16u#38 (word) rem16u#28 (word) rem16u#25 (word) rem16u#45 (word) rem16u#42 (word) rem16u#39 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#53 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#31 (byte*) print_line_cursor#26 (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#73 (byte*) print_char_cursor#64 (byte*) print_char_cursor#54 -Alias (word) rem16u#14 = (word) rem16u#21 (word) rem16u#18 (word) rem16u#7 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#55 -Alias (word) rem16u#15 = (word) rem16u#8 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$3 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#9 rem16u#2 +Alias divr16u::dividend#1 = div32u16u::$0 +Alias divr16u::return#2 = divr16u::return#5 +Alias div32u16u::dividend#1 = div32u16u::dividend#2 +Alias div32u16u::divisor#1 = div32u16u::divisor#2 +Alias rem16u#10 = rem16u#3 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#2 = div32u16u::$2 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#11 = rem16u#4 rem16u#12 rem16u#5 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1 +Alias utoa::value#10 = utoa::value#8 utoa::value#12 utoa::value#13 utoa::value#9 utoa::value#14 utoa::value#15 utoa::value#11 +Alias utoa::buffer#10 = utoa::buffer#17 utoa::buffer#21 utoa::buffer#16 utoa::buffer#18 utoa::buffer#13 utoa::buffer#19 utoa::buffer#20 utoa::buffer#6 +Alias utoa::radix#1 = utoa::radix#2 utoa::radix#3 utoa::radix#4 +Alias utoa::digit#2 = utoa::digit#3 utoa::digit#6 utoa::digit#5 +Alias utoa::digit_values#10 = utoa::digit_values#5 utoa::digit_values#6 utoa::digit_values#9 +Alias utoa::value#2 = utoa::value#5 utoa::value#3 utoa::value#4 +Alias utoa::started#2 = utoa::started#3 +Alias utoa::buffer#11 = utoa::buffer#12 utoa::buffer#7 utoa::buffer#8 utoa::buffer#9 +Alias utoa::max_digits#10 = utoa::max_digits#8 utoa::max_digits#5 utoa::max_digits#9 +Alias utoa::digit_value#0 = utoa::digit_value#1 +Alias utoa_append::return#0 = utoa_append::return#3 +Alias utoa::value#0 = utoa::$10 +Alias utoa_append::digit#2 = utoa_append::digit#4 utoa_append::digit#3 +Alias utoa_append::value#2 = utoa_append::value#3 utoa_append::value#4 utoa_append::return#1 utoa_append::return#4 utoa_append::return#2 +Alias utoa_append::sub#1 = utoa_append::sub#2 +Alias utoa_append::buffer#1 = utoa_append::buffer#4 utoa_append::buffer#2 +Alias ultoa::value#10 = ultoa::value#8 ultoa::value#12 ultoa::value#13 ultoa::value#9 ultoa::value#14 ultoa::value#15 ultoa::value#11 +Alias ultoa::buffer#10 = ultoa::buffer#17 ultoa::buffer#21 ultoa::buffer#16 ultoa::buffer#18 ultoa::buffer#13 ultoa::buffer#19 ultoa::buffer#20 ultoa::buffer#6 +Alias ultoa::radix#1 = ultoa::radix#2 ultoa::radix#3 ultoa::radix#4 +Alias ultoa::digit#2 = ultoa::digit#3 ultoa::digit#6 ultoa::digit#5 +Alias ultoa::digit_values#10 = ultoa::digit_values#5 ultoa::digit_values#6 ultoa::digit_values#9 +Alias ultoa::value#2 = ultoa::value#5 ultoa::value#3 ultoa::value#4 +Alias ultoa::started#2 = ultoa::started#3 +Alias ultoa::buffer#11 = ultoa::buffer#12 ultoa::buffer#7 ultoa::buffer#8 ultoa::buffer#9 +Alias ultoa::max_digits#10 = ultoa::max_digits#8 ultoa::max_digits#5 ultoa::max_digits#9 +Alias ultoa::digit_value#0 = ultoa::digit_value#1 +Alias ultoa_append::return#0 = ultoa_append::return#3 +Alias ultoa::value#0 = ultoa::$10 +Alias ultoa_append::digit#2 = ultoa_append::digit#4 ultoa_append::digit#3 +Alias ultoa_append::value#2 = ultoa_append::value#3 ultoa_append::value#4 ultoa_append::return#1 ultoa_append::return#4 ultoa_append::return#2 +Alias ultoa_append::sub#1 = ultoa_append::sub#2 +Alias ultoa_append::buffer#1 = ultoa_append::buffer#4 ultoa_append::buffer#2 +Alias rem16u#0 = rem16u#23 rem16u#19 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#27 print_char_cursor#65 print_screen#7 +Alias print_str::str#8 = print_str::str#9 +Alias print_char_cursor#2 = print_char_cursor#29 print_char_cursor#56 print_char_cursor#30 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#12 print_char_cursor#3 print_line_cursor#13 print_char_cursor#32 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#58 = print_char_cursor#67 +Alias print_char_cursor#33 = print_char_cursor#5 print_char_cursor#34 print_char_cursor#6 +Alias print_char_cursor#59 = print_char_cursor#68 +Alias print_char_cursor#35 = print_char_cursor#7 print_char_cursor#36 print_char_cursor#8 +Alias print_char_cursor#10 = print_char_cursor#38 print_char_cursor#9 +Alias print_line_cursor#14 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#11 print_char_cursor#39 print_line_cursor#4 print_char_cursor#12 +Alias main::toD0181_screen#0 = main::toD0181_screen#1 +Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 +Alias print_screen#3 = print_screen#5 print_screen#6 print_screen#4 +Alias print_line_cursor#22 = print_line_cursor#33 print_line_cursor#36 print_line_cursor#28 +Alias print_char_cursor#60 = print_char_cursor#74 print_char_cursor#77 print_char_cursor#69 +Alias rem16u#26 = rem16u#52 rem16u#53 rem16u#51 rem16u#50 rem16u#49 rem16u#48 rem16u#46 rem16u#43 rem16u#40 rem16u#34 rem16u#29 +Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$0 +Alias print_line_cursor#15 = print_line_cursor#5 print_line_cursor#23 +Alias print_char_cursor#13 = print_char_cursor#40 +Alias print_char_cursor#14 = print_char_cursor#41 +Alias print_line_cursor#16 = print_line_cursor#6 print_line_cursor#29 print_line_cursor#24 +Alias print_char_cursor#15 = print_char_cursor#42 +Alias print_char_cursor#16 = print_char_cursor#43 +Alias print_char_cursor#17 = print_char_cursor#44 +Alias print_line_cursor#17 = print_line_cursor#7 print_line_cursor#50 print_line_cursor#48 +Alias print_char_cursor#18 = print_char_cursor#45 print_char_cursor#81 print_char_cursor#79 +Alias main::sieve_i#0 = main::$9 +Alias main::sieve_i#2 = main::sieve_i#4 main::sieve_i#6 +Alias main::i#12 = main::i#4 main::i#6 +Alias rem16u#17 = rem16u#30 rem16u#24 rem16u#20 rem16u#36 +Alias print_char_cursor#61 = print_char_cursor#82 print_char_cursor#78 print_char_cursor#75 print_char_cursor#70 print_char_cursor#84 +Alias print_line_cursor#25 = print_line_cursor#51 print_line_cursor#46 print_line_cursor#44 print_line_cursor#41 print_line_cursor#39 print_line_cursor#37 print_line_cursor#34 print_line_cursor#30 print_line_cursor#53 +Alias clock::return#2 = clock::return#4 +Alias main::cyclecount#0 = main::$11 main::cyclecount#4 main::cyclecount#3 main::cyclecount#2 main::cyclecount#1 +Alias div32u16u::return#2 = div32u16u::return#4 +Alias rem16u#13 = rem16u#6 rem16u#47 rem16u#44 rem16u#41 rem16u#35 rem16u#33 +Alias main::sec100s#0 = main::$13 main::sec100s#1 +Alias print_char_cursor#19 = print_char_cursor#46 +Alias print_char_cursor#20 = print_char_cursor#47 +Alias print_char_cursor#21 = print_char_cursor#48 +Alias print_char_cursor#22 = print_char_cursor#49 +Alias print_line_cursor#18 = print_line_cursor#8 +Alias print_char_cursor#23 = print_char_cursor#50 +Alias main::j#0 = main::$23 +Alias main::s#0 = main::$24 +Alias main::s#2 = main::s#3 +Alias main::i#13 = main::i#7 +Alias main::j#2 = main::j#3 +Alias main::sieve_i#5 = main::sieve_i#7 +Alias rem16u#31 = rem16u#37 +Alias print_char_cursor#83 = print_char_cursor#85 +Alias print_line_cursor#52 = print_line_cursor#54 +Alias main::i#11 = main::i#9 main::i#8 main::i#15 main::i#14 +Alias print_char_cursor#62 = print_char_cursor#72 print_char_cursor#71 print_char_cursor#63 +Alias print_line_cursor#32 = print_line_cursor#42 print_line_cursor#38 print_line_cursor#35 print_line_cursor#47 print_line_cursor#45 print_line_cursor#43 +Alias rem16u#22 = rem16u#38 rem16u#28 rem16u#25 rem16u#45 rem16u#42 rem16u#39 +Alias print_char_cursor#24 = print_char_cursor#51 +Alias print_char_cursor#25 = print_char_cursor#52 +Alias print_char_cursor#26 = print_char_cursor#53 +Alias print_line_cursor#19 = print_line_cursor#31 print_line_cursor#26 print_line_cursor#9 +Alias print_char_cursor#27 = print_char_cursor#73 print_char_cursor#64 print_char_cursor#54 +Alias rem16u#14 = rem16u#21 rem16u#18 rem16u#7 +Alias print_line_cursor#10 = print_line_cursor#20 +Alias print_char_cursor#28 = print_char_cursor#55 +Alias rem16u#15 = rem16u#8 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (word) utoa::value#10 = (word) utoa::value#7 -Alias (byte*) utoa::buffer#10 = (byte*) utoa::buffer#15 -Alias (byte) utoa::digit#2 = (byte) utoa::digit#4 -Alias (byte) utoa::max_digits#10 = (byte) utoa::max_digits#6 -Alias (word*) utoa::digit_values#10 = (word*) utoa::digit_values#7 -Alias (dword) ultoa::value#10 = (dword) ultoa::value#7 -Alias (byte*) ultoa::buffer#10 = (byte*) ultoa::buffer#15 -Alias (byte) ultoa::digit#2 = (byte) ultoa::digit#4 -Alias (byte) ultoa::max_digits#10 = (byte) ultoa::max_digits#6 -Alias (dword*) ultoa::digit_values#10 = (dword*) ultoa::digit_values#7 -Alias (word) main::i#10 = (word) main::i#11 -Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#40 -Alias (word) rem16u#22 = (word) rem16u#32 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias utoa::value#10 = utoa::value#7 +Alias utoa::buffer#10 = utoa::buffer#15 +Alias utoa::digit#2 = utoa::digit#4 +Alias utoa::max_digits#10 = utoa::max_digits#6 +Alias utoa::digit_values#10 = utoa::digit_values#7 +Alias ultoa::value#10 = ultoa::value#7 +Alias ultoa::buffer#10 = ultoa::buffer#15 +Alias ultoa::digit#2 = ultoa::digit#4 +Alias ultoa::max_digits#10 = ultoa::max_digits#6 +Alias ultoa::digit_values#10 = ultoa::digit_values#7 +Alias main::i#10 = main::i#11 +Alias print_line_cursor#32 = print_line_cursor#40 +Alias rem16u#22 = rem16u#32 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -3505,204 +3505,204 @@ print_cls::@return: scope:[print_cls] from print_cls VARIABLE REGISTER WEIGHTS (dword()) clock() (dword) clock::return -(dword) clock::return#0 1.3333333333333333 -(dword) clock::return#2 4.0 +(dword) clock::return#0 37.33333333333333 +(dword) clock::return#2 22.0 (void()) clock_start() (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend -(dword) div32u16u::dividend#0 1.2000000000000002 +(dword) div32u16u::dividend#0 42.599999999999994 (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.6666666666666666 +(word) div32u16u::quotient_hi#0 33.666666666666664 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 202.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 37.33333333333333 +(dword) div32u16u::return#2 22.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 20002.0 +(byte~) divr16u::$2 20002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#1 4.0 -(word) divr16u::dividend#2 2.0 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 6.0 +(word) divr16u::dividend#0 2500.25 +(word) divr16u::dividend#1 202.0 +(word) divr16u::dividend#2 101.0 +(word) divr16u::dividend#3 4429.142857142857 +(word) divr16u::dividend#5 1203.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 15001.5 +(byte) divr16u::i#2 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 15001.5 +(word) divr16u::quotient#2 10001.0 +(word) divr16u::quotient#3 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 7500.75 +(word) divr16u::rem#1 20002.0 +(word) divr16u::rem#10 1102.0 +(word) divr16u::rem#11 10334.666666666666 +(word) divr16u::rem#2 20002.0 +(word) divr16u::rem#4 202.0 +(word) divr16u::rem#5 21003.0 +(word) divr16u::rem#6 10001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 4315.0 +(word) divr16u::return#2 202.0 +(word) divr16u::return#3 202.0 (void()) main() -(dword~) main::$10 4.0 -(dword~) main::$12 2.0 -(byte*~) main::$34 22.0 +(dword~) main::$10 22.0 +(dword~) main::$12 11.0 +(byte*~) main::$34 202.0 (dword) main::cyclecount -(dword) main::cyclecount#0 0.5 +(dword) main::cyclecount#0 2.75 (word) main::i -(word) main::i#10 5.5 -(word) main::i#12 24.6 -(word) main::i#2 11.0 -(word) main::i#3 22.0 +(word) main::i#10 50.5 +(word) main::i#12 240.6 +(word) main::i#2 101.0 +(word) main::i#3 202.0 (word) main::j -(word) main::j#0 16.5 -(word) main::j#1 202.0 -(word) main::j#2 78.5 +(word) main::j#0 151.5 +(word) main::j#1 2002.0 +(word) main::j#2 776.0 (byte*) main::s -(byte*) main::s#0 22.0 -(byte*) main::s#1 101.0 -(byte*) main::s#2 104.66666666666666 +(byte*) main::s#0 202.0 +(byte*) main::s#1 1001.0 +(byte*) main::s#2 1034.6666666666667 (word) main::sec100s -(word) main::sec100s#0 1.3333333333333333 +(word) main::sec100s#0 7.333333333333333 (byte*) main::sieve_i -(byte*) main::sieve_i#1 22.0 -(byte*) main::sieve_i#2 3.0 +(byte*) main::sieve_i#1 202.0 +(byte*) main::sieve_i#2 27.545454545454547 (byte*) main::toD0181_gfx (byte) main::toD0181_return (byte*) main::toD0181_screen (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.375 +(byte) memset::c#4 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 15.333333333333332 -(byte*) memset::dst#4 4.0 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13668.333333333332 +(byte*) memset::dst#4 2002.0 (byte*) memset::end -(byte*) memset::end#0 2.1666666666666665 +(byte*) memset::end#0 1833.6666666666665 (word) memset::num -(word) memset::num#2 2.0 +(word) memset::num#2 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 (void()) print_char((byte) print_char::ch) (byte) print_char::ch (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#10 4.333333333333333 -(byte*) print_char_cursor#2 10.25 -(byte*) print_char_cursor#58 4.25 -(byte*) print_char_cursor#62 7.4 -(byte*) print_char_cursor#66 14.0 -(byte*) print_char_cursor#76 16.5 -(byte*) print_char_cursor#86 4.0 -(byte*) print_char_cursor#87 4.0 -(byte*) print_char_cursor#88 4.0 -(byte*) print_char_cursor#94 22.0 +(byte*) print_char_cursor#1 1000001.0 +(byte*) print_char_cursor#10 367.33333333333337 +(byte*) print_char_cursor#2 94160.65625 +(byte*) print_char_cursor#58 281.0 +(byte*) print_char_cursor#62 65.0 +(byte*) print_char_cursor#66 11147.0 +(byte*) print_char_cursor#76 151.5 +(byte*) print_char_cursor#86 22.0 +(byte*) print_char_cursor#87 22.0 +(byte*) print_char_cursor#88 22.0 +(byte*) print_char_cursor#94 202.0 (void()) print_cls() (void()) print_dword_decimal((dword) print_dword_decimal::w) (dword) print_dword_decimal::w -(dword) print_dword_decimal::w#0 4.0 +(dword) print_dword_decimal::w#0 112.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 0.9347826086956521 -(byte*) print_line_cursor#11 24.0 -(byte*) print_line_cursor#21 6.0 +(byte*) print_line_cursor#1 66.47826086956522 +(byte*) print_line_cursor#11 2103.0 +(byte*) print_line_cursor#21 123.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#10 2.0 -(byte*) print_str::str#8 101.5 +(byte*) print_str::str#0 2000002.0 +(byte*) print_str::str#10 10001.0 +(byte*) print_str::str#8 1002501.25 (void()) print_word_decimal((word) print_word_decimal::w) (word) print_word_decimal::w -(word) print_word_decimal::w#1 4.0 -(word) print_word_decimal::w#2 11.0 -(word) print_word_decimal::w#3 15.0 +(word) print_word_decimal::w#1 22.0 +(word) print_word_decimal::w#2 101.0 +(word) print_word_decimal::w#3 1113.0 (word) rem16u -(word) rem16u#1 0.6666666666666666 +(word) rem16u#1 183.66666666666669 (void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) -(byte~) ultoa::$11 22.0 -(byte~) ultoa::$4 4.0 +(byte~) ultoa::$11 20002.0 +(byte~) ultoa::$4 2002.0 (byte*) ultoa::buffer -(byte*) ultoa::buffer#11 3.4285714285714284 -(byte*) ultoa::buffer#14 16.5 -(byte*) ultoa::buffer#3 4.0 -(byte*) ultoa::buffer#4 22.0 +(byte*) ultoa::buffer#11 3000.4285714285716 +(byte*) ultoa::buffer#14 15001.5 +(byte*) ultoa::buffer#3 2002.0 +(byte*) ultoa::buffer#4 20002.0 (byte) ultoa::digit -(byte) ultoa::digit#1 22.0 -(byte) ultoa::digit#2 3.142857142857143 +(byte) ultoa::digit#1 20002.0 +(byte) ultoa::digit#2 2857.4285714285716 (dword) ultoa::digit_value -(dword) ultoa::digit_value#0 6.6000000000000005 +(dword) ultoa::digit_value#0 6000.6 (dword*) ultoa::digit_values (byte) ultoa::max_digits (byte) ultoa::radix (byte) ultoa::started -(byte) ultoa::started#2 5.5 -(byte) ultoa::started#4 11.0 +(byte) ultoa::started#2 5000.5 +(byte) ultoa::started#4 10001.0 (dword) ultoa::value -(dword) ultoa::value#0 11.0 -(dword) ultoa::value#1 2.0 -(dword) ultoa::value#2 6.571428571428571 -(dword) ultoa::value#6 16.5 +(dword) ultoa::value#0 10001.0 +(dword) ultoa::value#1 551.0 +(dword) ultoa::value#2 5857.857142857143 +(dword) ultoa::value#6 15001.5 (dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) (byte*) ultoa_append::buffer -(byte*) ultoa_append::buffer#0 1.625 +(byte*) ultoa_append::buffer#0 13750.25 (byte) ultoa_append::digit -(byte) ultoa_append::digit#1 101.0 -(byte) ultoa_append::digit#2 102.0 +(byte) ultoa_append::digit#1 1.0000001E7 +(byte) ultoa_append::digit#2 1.00500015E7 (dword) ultoa_append::return -(dword) ultoa_append::return#0 22.0 +(dword) ultoa_append::return#0 20002.0 (dword) ultoa_append::sub -(dword) ultoa_append::sub#0 35.5 +(dword) ultoa_append::sub#0 3335000.5 (dword) ultoa_append::value -(dword) ultoa_append::value#0 4.333333333333333 -(dword) ultoa_append::value#1 202.0 -(dword) ultoa_append::value#2 52.66666666666666 +(dword) ultoa_append::value#0 36667.33333333333 +(dword) ultoa_append::value#1 2.0000002E7 +(dword) ultoa_append::value#2 5018334.166666666 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) -(byte~) utoa::$11 202.0 -(byte~) utoa::$4 4.0 +(byte~) utoa::$11 2000002.0 +(byte~) utoa::$4 20002.0 (byte*) utoa::buffer -(byte*) utoa::buffer#11 29.142857142857146 -(byte*) utoa::buffer#14 151.5 -(byte*) utoa::buffer#3 4.0 -(byte*) utoa::buffer#4 202.0 +(byte*) utoa::buffer#11 287143.2857142857 +(byte*) utoa::buffer#14 1500001.5 +(byte*) utoa::buffer#3 20002.0 +(byte*) utoa::buffer#4 2000002.0 (byte) utoa::digit -(byte) utoa::digit#1 202.0 -(byte) utoa::digit#2 28.857142857142858 +(byte) utoa::digit#1 2000002.0 +(byte) utoa::digit#2 285714.5714285714 (word) utoa::digit_value -(word) utoa::digit_value#0 60.599999999999994 +(word) utoa::digit_value#0 600000.6000000001 (word*) utoa::digit_values (byte) utoa::max_digits (byte) utoa::radix (byte) utoa::started -(byte) utoa::started#2 50.5 -(byte) utoa::started#4 101.0 +(byte) utoa::started#2 500000.5 +(byte) utoa::started#4 1000001.0 (word) utoa::value -(word) utoa::value#0 101.0 -(word) utoa::value#1 2.0 -(word) utoa::value#2 58.00000000000001 -(word) utoa::value#6 151.5 +(word) utoa::value#0 1000001.0 +(word) utoa::value#1 5501.0 +(word) utoa::value#2 572857.857142857 +(word) utoa::value#6 1500001.5 (word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) (byte*) utoa_append::buffer -(byte*) utoa_append::buffer#0 12.875 +(byte*) utoa_append::buffer#0 1375000.25 (byte) utoa_append::digit -(byte) utoa_append::digit#1 1001.0 -(byte) utoa_append::digit#2 1002.0 +(byte) utoa_append::digit#1 1.0000000001E10 +(byte) utoa_append::digit#2 1.00050000015E10 (word) utoa_append::return -(word) utoa_append::return#0 202.0 +(word) utoa_append::return#0 2000002.0 (word) utoa_append::sub -(word) utoa_append::sub#0 350.5 +(word) utoa_append::sub#0 3.3335000005E9 (word) utoa_append::value -(word) utoa_append::value#0 34.33333333333333 -(word) utoa_append::value#1 2002.0 -(word) utoa_append::value#2 517.6666666666667 +(word) utoa_append::value#0 3666667.333333333 +(word) utoa_append::value#1 2.0000000002E10 +(word) utoa_append::value#2 5.001833334166666E9 Initial phi equivalence classes [ main::i#12 main::i#2 ] @@ -5481,193 +5481,191 @@ print_cls: { decimal_digits_long: .fill $b, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (byte*) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ print_char_cursor#87 print_line_cursor#1 ] ( main:2 [ print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a -Statement [26] (dword) clock::return#2 ← (dword) clock::return#0 [ print_line_cursor#1 clock::return#2 ] ( main:2 [ print_line_cursor#1 clock::return#2 ] ) always clobbers reg byte a -Statement [27] (dword~) main::$10 ← (dword) clock::return#2 [ print_line_cursor#1 main::$10 ] ( main:2 [ print_line_cursor#1 main::$10 ] ) always clobbers reg byte a -Statement [28] (dword) main::cyclecount#0 ← (dword~) main::$10 - (const dword) CLOCKS_PER_INIT [ print_line_cursor#1 main::cyclecount#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 ] ) always clobbers reg byte a -Statement [29] (dword) div32u16u::dividend#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ) always clobbers reg byte a -Statement [31] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ) always clobbers reg byte a -Statement [32] (dword~) main::$12 ← (dword) div32u16u::return#2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ) always clobbers reg byte a -Statement [33] (word) main::sec100s#0 ← (word)(dword~) main::$12 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ) always clobbers reg byte a -Statement [34] (byte*) print_char_cursor#88 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ) always clobbers reg byte a -Statement [36] (word) print_word_decimal::w#1 ← (word) main::sec100s#0 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [40] (dword) print_dword_decimal::w#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [45] if((word) main::i#10<(word) $514) goto main::@9 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] ) always clobbers reg byte a -Statement [46] (byte*) print_char_cursor#86 ← (byte*) print_char_cursor#62 [ print_char_cursor#86 ] ( main:2 [ print_char_cursor#86 ] ) always clobbers reg byte a -Statement [49] (byte*~) main::$34 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#62 main::$34 ] ( main:2 [ main::i#10 print_char_cursor#62 main::$34 ] ) always clobbers reg byte a -Statement [50] if((byte) 0!=*((byte*~) main::$34)) goto main::@11 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] ) always clobbers reg byte a reg byte y -Statement [51] (word) print_word_decimal::w#2 ← (word) main::i#10 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ( main:2 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_cursor#94 ← (byte*) print_char_cursor#62 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ( main:2 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ) always clobbers reg byte a -Statement [58] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a reg byte y -Statement [59] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ) always clobbers reg byte a -Statement [60] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ) always clobbers reg byte a -Statement [62] if((word) main::j#2<(const word) COUNT) goto main::@6 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a -Statement [65] *((byte*) main::s#2) ← (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ) always clobbers reg byte a -Statement [67] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ) always clobbers reg byte a -Statement [68] *((byte*) print_char_cursor#2) ← (const byte) print_char::ch#0 [ print_char_cursor#2 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [69] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#2 [ print_char_cursor#10 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [72] (word) utoa::value#1 ← (word) print_word_decimal::w#3 [ print_char_cursor#58 utoa::value#1 ] ( main:2::print_word_decimal:15 [ print_line_cursor#1 print_char_cursor#58 utoa::value#1 ] main:2::print_word_decimal:37 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::value#1 ] main:2::print_word_decimal:53 [ main::i#10 print_char_cursor#58 utoa::value#1 ] ) always clobbers reg byte a -Statement [79] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#8) [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] ) always clobbers reg byte a reg byte y -Statement [87] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] ) always clobbers reg byte a -Statement [88] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 ] ) always clobbers reg byte a reg byte y -Statement [89] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#3 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#3 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#3 ] ) always clobbers reg byte a -Statement [90] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 ] ) always clobbers reg byte a reg byte y -Statement [92] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ) always clobbers reg byte a +Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (byte*) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ print_char_cursor#87 print_line_cursor#1 ] ( main:2 [ print_char_cursor#87 print_line_cursor#1 ] { { print_char_cursor#66 = print_char_cursor#87 } } ) always clobbers reg byte a +Statement [23] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a +Statement [26] (dword) clock::return#2 ← (dword) clock::return#0 [ print_line_cursor#1 clock::return#2 ] ( main:2 [ print_line_cursor#1 clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [27] (dword~) main::$10 ← (dword) clock::return#2 [ print_line_cursor#1 main::$10 ] ( main:2 [ print_line_cursor#1 main::$10 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [28] (dword) main::cyclecount#0 ← (dword~) main::$10 - (const dword) CLOCKS_PER_INIT [ print_line_cursor#1 main::cyclecount#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [29] (dword) div32u16u::dividend#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [31] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [32] (dword~) main::$12 ← (dword) div32u16u::return#2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [33] (word) main::sec100s#0 ← (word)(dword~) main::$12 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [34] (byte*) print_char_cursor#88 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [36] (word) print_word_decimal::w#1 ← (word) main::sec100s#0 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [40] (dword) print_dword_decimal::w#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [45] if((word) main::i#10<(word) $514) goto main::@9 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] { } ) always clobbers reg byte a +Statement [46] (byte*) print_char_cursor#86 ← (byte*) print_char_cursor#62 [ print_char_cursor#86 ] ( main:2 [ print_char_cursor#86 ] { { print_char_cursor#66 = print_char_cursor#86 } } ) always clobbers reg byte a +Statement [49] (byte*~) main::$34 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#62 main::$34 ] ( main:2 [ main::i#10 print_char_cursor#62 main::$34 ] { } ) always clobbers reg byte a +Statement [50] if((byte) 0!=*((byte*~) main::$34)) goto main::@11 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] { } ) always clobbers reg byte a reg byte y +Statement [51] (word) print_word_decimal::w#2 ← (word) main::i#10 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ( main:2 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [52] (byte*) print_char_cursor#94 ← (byte*) print_char_cursor#62 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ( main:2 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [58] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [59] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] { } ) always clobbers reg byte a +Statement [60] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] { } ) always clobbers reg byte a +Statement [62] if((word) main::j#2<(const word) COUNT) goto main::@6 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a +Statement [65] *((byte*) main::s#2) ← (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a reg byte y +Statement [66] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] { } ) always clobbers reg byte a +Statement [67] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] { } ) always clobbers reg byte a +Statement [68] *((byte*) print_char_cursor#2) ← (const byte) print_char::ch#0 [ print_char_cursor#2 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [69] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#2 [ print_char_cursor#10 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [72] (word) utoa::value#1 ← (word) print_word_decimal::w#3 [ print_char_cursor#58 utoa::value#1 ] ( main:2::print_word_decimal:15 [ print_line_cursor#1 print_char_cursor#58 utoa::value#1 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::value#1 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53 [ main::i#10 print_char_cursor#58 utoa::value#1 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [79] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] { } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#87 } } main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#88 } } main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#66 } } main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#86 } } main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 print_char_cursor#66 } } main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#8) [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] { } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#87 } } main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#88 } } main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#66 } } main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#86 } } main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 print_char_cursor#66 } } main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [87] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [88] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a reg byte y +Statement [89] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#3 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#3 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#3 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [90] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a reg byte y +Statement [92] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ utoa::started#2 utoa::started#4 ] -Statement [93] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [95] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [98] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [99] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ) always clobbers reg byte a -Statement [100] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ) always clobbers reg byte a -Statement [102] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ) always clobbers reg byte a -Statement [103] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [107] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ) always clobbers reg byte a +Statement [93] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [95] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [98] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [99] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [100] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [102] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [103] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [107] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ utoa_append::digit#2 utoa_append::digit#1 ] -Statement [108] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] ) always clobbers reg byte a reg byte y +Statement [108] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] -Statement [111] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ) always clobbers reg byte a -Statement [114] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [115] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [117] (dword) ultoa::value#1 ← (dword) print_dword_decimal::w#0 [ print_char_cursor#2 ultoa::value#1 ] ( main:2::print_dword_decimal:41 [ print_line_cursor#1 print_char_cursor#2 ultoa::value#1 ] ) always clobbers reg byte a -Statement [125] (byte~) ultoa::$4 ← (byte)(dword) ultoa::value#2 [ ultoa::buffer#11 ultoa::$4 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ultoa::$4 ] ) always clobbers reg byte a -Statement [126] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$4) [ ultoa::buffer#11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ] ) always clobbers reg byte a reg byte y -Statement [127] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ ultoa::buffer#3 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#3 ] ) always clobbers reg byte a -Statement [128] *((byte*) ultoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte~) ultoa::$11 ← (byte) ultoa::digit#2 << (byte) 2 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ) always clobbers reg byte a +Statement [111] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [114] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] { } main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [115] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] { } main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [117] (dword) ultoa::value#1 ← (dword) print_dword_decimal::w#0 [ print_char_cursor#2 ultoa::value#1 ] ( main:2::print_dword_decimal:41 [ print_line_cursor#1 print_char_cursor#2 ultoa::value#1 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [125] (byte~) ultoa::$4 ← (byte)(dword) ultoa::value#2 [ ultoa::buffer#11 ultoa::$4 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ultoa::$4 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [126] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$4) [ ultoa::buffer#11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [127] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ ultoa::buffer#3 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#3 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [128] *((byte*) ultoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [130] (byte~) ultoa::$11 ← (byte) ultoa::digit#2 << (byte) 2 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:29 [ ultoa::digit#2 ultoa::digit#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ ultoa::started#2 ultoa::started#4 ] -Statement [131] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$11) [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ) always clobbers reg byte a -Statement [133] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ) always clobbers reg byte a -Statement [136] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [137] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ) always clobbers reg byte a -Statement [138] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ) always clobbers reg byte a -Statement [140] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ) always clobbers reg byte a -Statement [141] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ) always clobbers reg byte a -Statement [145] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ) always clobbers reg byte a +Statement [131] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$11) [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [133] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [136] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [137] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [138] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [140] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [141] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [145] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ ultoa_append::digit#2 ultoa_append::digit#1 ] -Statement [146] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] ) always clobbers reg byte a reg byte y +Statement [146] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:29 [ ultoa::digit#2 ultoa::digit#1 ] -Statement [149] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ) always clobbers reg byte a -Statement [150] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#0 [ div32u16u::dividend#0 divr16u::dividend#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [152] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [153] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [154] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#0 [ div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ) always clobbers reg byte a -Statement [155] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [157] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [158] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [159] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#0 ] ) always clobbers reg byte a -Statement [164] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [149] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [150] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#0 [ div32u16u::dividend#0 divr16u::dividend#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [152] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [153] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [154] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#0 [ div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [155] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [157] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [158] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [159] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [167] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] -Statement [167] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [171] if((word) divr16u::rem#6<(const word) div32u16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [173] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) div32u16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [177] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#0 rem16u#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [179] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:25 [ print_line_cursor#1 clock::return#0 ] ) always clobbers reg byte a -Statement [181] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [182] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [183] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [184] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [185] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [188] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::num#2 memset::str#3 memset::c#4 ] main:2::print_cls:7::memset:197 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a +Statement [171] if((word) divr16u::rem#6<(const word) div32u16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [173] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) div32u16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [177] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [179] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:25 [ print_line_cursor#1 clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [181] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [182] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [183] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [184] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [185] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [188] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::num#2 memset::str#3 memset::c#4 ] { } main:2::print_cls:7::memset:197 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:53 [ memset::c#4 ] -Statement [189] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::memset:19 [ print_line_cursor#1 memset::str#3 memset::c#4 memset::end#0 ] main:2::print_cls:7::memset:197 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [190] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#4 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [192] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [189] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::memset:19 [ print_line_cursor#1 memset::str#3 memset::c#4 memset::end#0 ] { } main:2::print_cls:7::memset:197 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [190] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [192] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:53 [ memset::c#4 ] -Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] (byte*) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ print_char_cursor#87 print_line_cursor#1 ] ( main:2 [ print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a -Statement [26] (dword) clock::return#2 ← (dword) clock::return#0 [ print_line_cursor#1 clock::return#2 ] ( main:2 [ print_line_cursor#1 clock::return#2 ] ) always clobbers reg byte a -Statement [27] (dword~) main::$10 ← (dword) clock::return#2 [ print_line_cursor#1 main::$10 ] ( main:2 [ print_line_cursor#1 main::$10 ] ) always clobbers reg byte a -Statement [28] (dword) main::cyclecount#0 ← (dword~) main::$10 - (const dword) CLOCKS_PER_INIT [ print_line_cursor#1 main::cyclecount#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 ] ) always clobbers reg byte a -Statement [29] (dword) div32u16u::dividend#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ) always clobbers reg byte a -Statement [31] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ) always clobbers reg byte a -Statement [32] (dword~) main::$12 ← (dword) div32u16u::return#2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ) always clobbers reg byte a -Statement [33] (word) main::sec100s#0 ← (word)(dword~) main::$12 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ) always clobbers reg byte a -Statement [34] (byte*) print_char_cursor#88 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ) always clobbers reg byte a -Statement [36] (word) print_word_decimal::w#1 ← (word) main::sec100s#0 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [40] (dword) print_dword_decimal::w#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [45] if((word) main::i#10<(word) $514) goto main::@9 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] ) always clobbers reg byte a -Statement [46] (byte*) print_char_cursor#86 ← (byte*) print_char_cursor#62 [ print_char_cursor#86 ] ( main:2 [ print_char_cursor#86 ] ) always clobbers reg byte a -Statement [49] (byte*~) main::$34 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#62 main::$34 ] ( main:2 [ main::i#10 print_char_cursor#62 main::$34 ] ) always clobbers reg byte a -Statement [50] if((byte) 0!=*((byte*~) main::$34)) goto main::@11 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] ) always clobbers reg byte a reg byte y -Statement [51] (word) print_word_decimal::w#2 ← (word) main::i#10 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ( main:2 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_cursor#94 ← (byte*) print_char_cursor#62 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ( main:2 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ) always clobbers reg byte a -Statement [58] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ) always clobbers reg byte a reg byte y -Statement [59] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ) always clobbers reg byte a -Statement [60] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ) always clobbers reg byte a -Statement [62] if((word) main::j#2<(const word) COUNT) goto main::@6 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a -Statement [65] *((byte*) main::s#2) ← (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ) always clobbers reg byte a -Statement [67] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ) always clobbers reg byte a -Statement [68] *((byte*) print_char_cursor#2) ← (const byte) print_char::ch#0 [ print_char_cursor#2 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [69] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#2 [ print_char_cursor#10 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [72] (word) utoa::value#1 ← (word) print_word_decimal::w#3 [ print_char_cursor#58 utoa::value#1 ] ( main:2::print_word_decimal:15 [ print_line_cursor#1 print_char_cursor#58 utoa::value#1 ] main:2::print_word_decimal:37 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::value#1 ] main:2::print_word_decimal:53 [ main::i#10 print_char_cursor#58 utoa::value#1 ] ) always clobbers reg byte a -Statement [79] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#8) [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] ) always clobbers reg byte a reg byte y -Statement [87] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] ) always clobbers reg byte a -Statement [88] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 ] ) always clobbers reg byte a reg byte y -Statement [89] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#3 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#3 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#3 ] ) always clobbers reg byte a -Statement [90] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 ] ) always clobbers reg byte a reg byte y -Statement [92] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ) always clobbers reg byte a -Statement [93] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [95] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ) always clobbers reg byte a -Statement [98] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [99] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ) always clobbers reg byte a -Statement [100] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ) always clobbers reg byte a -Statement [102] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ) always clobbers reg byte a -Statement [103] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ) always clobbers reg byte a -Statement [107] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ) always clobbers reg byte a -Statement [108] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ) always clobbers reg byte a -Statement [114] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [115] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [117] (dword) ultoa::value#1 ← (dword) print_dword_decimal::w#0 [ print_char_cursor#2 ultoa::value#1 ] ( main:2::print_dword_decimal:41 [ print_line_cursor#1 print_char_cursor#2 ultoa::value#1 ] ) always clobbers reg byte a -Statement [125] (byte~) ultoa::$4 ← (byte)(dword) ultoa::value#2 [ ultoa::buffer#11 ultoa::$4 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ultoa::$4 ] ) always clobbers reg byte a -Statement [126] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$4) [ ultoa::buffer#11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ] ) always clobbers reg byte a reg byte y -Statement [127] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ ultoa::buffer#3 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#3 ] ) always clobbers reg byte a -Statement [128] *((byte*) ultoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte~) ultoa::$11 ← (byte) ultoa::digit#2 << (byte) 2 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ) always clobbers reg byte a -Statement [131] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$11) [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ) always clobbers reg byte a -Statement [133] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ) always clobbers reg byte a -Statement [136] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ) always clobbers reg byte a -Statement [137] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ) always clobbers reg byte a -Statement [138] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ) always clobbers reg byte a -Statement [140] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ) always clobbers reg byte a -Statement [141] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ) always clobbers reg byte a -Statement [145] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ) always clobbers reg byte a -Statement [146] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] ) always clobbers reg byte a reg byte y -Statement [149] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ) always clobbers reg byte a -Statement [150] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#0 [ div32u16u::dividend#0 divr16u::dividend#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [152] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [153] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [154] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#0 [ div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ) always clobbers reg byte a -Statement [155] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [157] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [158] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [159] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#0 ] ) always clobbers reg byte a -Statement [164] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [167] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [171] if((word) divr16u::rem#6<(const word) div32u16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [173] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) div32u16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [177] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#0 rem16u#1 ] main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [179] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:25 [ print_line_cursor#1 clock::return#0 ] ) always clobbers reg byte a -Statement [181] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [182] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [183] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [184] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [185] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] ) always clobbers reg byte a -Statement [188] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::num#2 memset::str#3 memset::c#4 ] main:2::print_cls:7::memset:197 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a -Statement [189] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::memset:19 [ print_line_cursor#1 memset::str#3 memset::c#4 memset::end#0 ] main:2::print_cls:7::memset:197 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a -Statement [190] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#4 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a -Statement [192] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a -Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] (byte*) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ print_char_cursor#87 print_line_cursor#1 ] ( main:2 [ print_char_cursor#87 print_line_cursor#1 ] { { print_char_cursor#66 = print_char_cursor#87 } } ) always clobbers reg byte a +Statement [23] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a +Statement [26] (dword) clock::return#2 ← (dword) clock::return#0 [ print_line_cursor#1 clock::return#2 ] ( main:2 [ print_line_cursor#1 clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [27] (dword~) main::$10 ← (dword) clock::return#2 [ print_line_cursor#1 main::$10 ] ( main:2 [ print_line_cursor#1 main::$10 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [28] (dword) main::cyclecount#0 ← (dword~) main::$10 - (const dword) CLOCKS_PER_INIT [ print_line_cursor#1 main::cyclecount#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [29] (dword) div32u16u::dividend#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [31] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [32] (dword~) main::$12 ← (dword) div32u16u::return#2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::$12 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [33] (word) main::sec100s#0 ← (word)(dword~) main::$12 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [34] (byte*) print_char_cursor#88 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#88 ] { { print_char_cursor#66 = print_char_cursor#88 } } ) always clobbers reg byte a +Statement [36] (word) print_word_decimal::w#1 ← (word) main::sec100s#0 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 main::cyclecount#0 print_word_decimal::w#1 print_char_cursor#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [40] (dword) print_dword_decimal::w#0 ← (dword) main::cyclecount#0 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] ( main:2 [ print_line_cursor#1 print_dword_decimal::w#0 print_char_cursor#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } } ) always clobbers reg byte a +Statement [45] if((word) main::i#10<(word) $514) goto main::@9 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] { } ) always clobbers reg byte a +Statement [46] (byte*) print_char_cursor#86 ← (byte*) print_char_cursor#62 [ print_char_cursor#86 ] ( main:2 [ print_char_cursor#86 ] { { print_char_cursor#66 = print_char_cursor#86 } } ) always clobbers reg byte a +Statement [49] (byte*~) main::$34 ← (const byte*) sieve + (word) main::i#10 [ main::i#10 print_char_cursor#62 main::$34 ] ( main:2 [ main::i#10 print_char_cursor#62 main::$34 ] { } ) always clobbers reg byte a +Statement [50] if((byte) 0!=*((byte*~) main::$34)) goto main::@11 [ main::i#10 print_char_cursor#62 ] ( main:2 [ main::i#10 print_char_cursor#62 ] { } ) always clobbers reg byte a reg byte y +Statement [51] (word) print_word_decimal::w#2 ← (word) main::i#10 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] ( main:2 [ main::i#10 print_char_cursor#62 print_word_decimal::w#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [52] (byte*) print_char_cursor#94 ← (byte*) print_char_cursor#62 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] ( main:2 [ main::i#10 print_word_decimal::w#2 print_char_cursor#94 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [58] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [59] (word) main::j#0 ← (word) main::i#12 << (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 ] { } ) always clobbers reg byte a +Statement [60] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#0 main::s#0 ] { } ) always clobbers reg byte a +Statement [62] if((word) main::j#2<(const word) COUNT) goto main::@6 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a +Statement [65] *((byte*) main::s#2) ← (byte) 1 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#2 ] { } ) always clobbers reg byte a reg byte y +Statement [66] (byte*) main::s#1 ← (byte*) main::s#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#2 main::s#1 ] { } ) always clobbers reg byte a +Statement [67] (word) main::j#1 ← (word) main::j#2 + (word) main::i#12 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] ( main:2 [ print_line_cursor#1 main::i#12 main::sieve_i#2 main::j#1 main::s#1 ] { } ) always clobbers reg byte a +Statement [68] *((byte*) print_char_cursor#2) ← (const byte) print_char::ch#0 [ print_char_cursor#2 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#2 ] { } ) always clobbers reg byte a reg byte y +Statement [69] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#2 [ print_char_cursor#10 ] ( main:2::print_char:55 [ main::i#10 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [72] (word) utoa::value#1 ← (word) print_word_decimal::w#3 [ print_char_cursor#58 utoa::value#1 ] ( main:2::print_word_decimal:15 [ print_line_cursor#1 print_char_cursor#58 utoa::value#1 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::value#1 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53 [ main::i#10 print_char_cursor#58 utoa::value#1 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [79] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] { } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#87 } } main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#88 } } main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#66 } } main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#86 } } main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 print_char_cursor#66 } } main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [81] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#8) [ print_char_cursor#2 print_str::str#8 ] ( main:2::print_str:9 [ print_char_cursor#2 print_str::str#8 ] { } main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#87 } } main:2::print_str:35 [ print_line_cursor#1 main::cyclecount#0 main::sec100s#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#88 } } main:2::print_str:39 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#66 } } main:2::print_str:47 [ print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#66 = print_char_cursor#86 } } main:2::print_word_decimal:15::print_str:75 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:37::print_str:75 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#66 } } main:2::print_word_decimal:53::print_str:75 [ main::i#10 print_char_cursor#2 print_str::str#8 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 } { print_char_cursor#58 = print_char_cursor#94 print_char_cursor#66 } } main:2::print_dword_decimal:41::print_str:120 [ print_line_cursor#1 print_char_cursor#2 print_str::str#8 ] { { print_dword_decimal::w#0 = main::cyclecount#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte a reg byte y +Statement [87] (byte~) utoa::$4 ← (byte)(word) utoa::value#2 [ utoa::buffer#11 utoa::$4 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 utoa::$4 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [88] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4) [ utoa::buffer#11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#11 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#11 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#11 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a reg byte y +Statement [89] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ utoa::buffer#3 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::buffer#3 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::buffer#3 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::buffer#3 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [90] *((byte*) utoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a reg byte y +Statement [92] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$11 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [93] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11) [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [95] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [98] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [99] (word) utoa_append::value#0 ← (word) utoa::value#2 [ utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [100] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [102] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [103] (word) utoa::value#0 ← (word) utoa_append::return#0 [ utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:2::print_word_decimal:15::utoa:73 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } } main:2::print_word_decimal:37::utoa:73 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } } main:2::print_word_decimal:53::utoa:73 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } } ) always clobbers reg byte a +Statement [107] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [108] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [111] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:2::print_word_decimal:15::utoa:73::utoa_append:101 [ print_line_cursor#1 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_char_cursor#2 = print_char_cursor#58 } { utoa::value#1 = print_word_decimal::w#3 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:37::utoa:73::utoa_append:101 [ print_line_cursor#1 main::cyclecount#0 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#1 = print_word_decimal::w#3 main::sec100s#0 utoa::value#1 } { print_char_cursor#2 = print_char_cursor#58 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:2::print_word_decimal:53::utoa:73::utoa_append:101 [ main::i#10 print_char_cursor#58 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { print_word_decimal::w#2 = print_word_decimal::w#3 main::i#10 utoa::value#1 } { print_char_cursor#58 = print_char_cursor#94 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [114] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] { } main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [115] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::print_ln:11 [ print_line_cursor#1 print_char_cursor#2 ] { } main:2::print_ln:17 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } main:2::print_ln:43 [ print_line_cursor#1 print_char_cursor#2 ] { { print_line_cursor#1 = print_line_cursor#21 } } ) always clobbers reg byte a +Statement [117] (dword) ultoa::value#1 ← (dword) print_dword_decimal::w#0 [ print_char_cursor#2 ultoa::value#1 ] ( main:2::print_dword_decimal:41 [ print_line_cursor#1 print_char_cursor#2 ultoa::value#1 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [125] (byte~) ultoa::$4 ← (byte)(dword) ultoa::value#2 [ ultoa::buffer#11 ultoa::$4 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ultoa::$4 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [126] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$4) [ ultoa::buffer#11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#11 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [127] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ ultoa::buffer#3 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::buffer#3 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [128] *((byte*) ultoa::buffer#3) ← (byte) 0 [ ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [130] (byte~) ultoa::$11 ← (byte) ultoa::digit#2 << (byte) 2 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$11 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [131] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$11) [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [133] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [136] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [137] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [138] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [140] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [141] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:2::print_dword_decimal:41::ultoa:118 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [145] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [146] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [149] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:2::print_dword_decimal:41::ultoa:118::ultoa_append:139 [ print_line_cursor#1 print_char_cursor#2 ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { print_dword_decimal::w#0 = main::cyclecount#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [150] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#0 [ div32u16u::dividend#0 divr16u::dividend#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [152] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#2 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [153] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [154] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#0 [ div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [155] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::rem#4 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [157] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [158] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [159] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::div32u16u:30 [ print_line_cursor#1 main::cyclecount#0 div32u16u::return#0 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [167] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [171] if((word) divr16u::rem#6<(const word) div32u16u::divisor#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [173] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) div32u16u::divisor#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [177] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::div32u16u:30::divr16u:151 [ print_line_cursor#1 main::cyclecount#0 div32u16u::dividend#0 divr16u::return#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#2 } } main:2::div32u16u:30::divr16u:156 [ print_line_cursor#1 main::cyclecount#0 div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::dividend#0 = main::cyclecount#0 } { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::dividend#2 = divr16u::dividend#5 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [179] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB) [ clock::return#0 ] ( main:2::clock:25 [ print_line_cursor#1 clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a +Statement [181] *((const byte*) CIA2_TIMER_A_CONTROL) ← (byte) 0 [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [182] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [183] *((const dword*) CIA2_TIMER_AB) ← (dword) $ffffffff [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [184] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [185] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START [ ] ( main:2::clock_start:21 [ print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [188] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::num#2 memset::str#3 memset::c#4 ] { } main:2::print_cls:7::memset:197 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [189] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::memset:19 [ print_line_cursor#1 memset::str#3 memset::c#4 memset::end#0 ] { } main:2::print_cls:7::memset:197 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [190] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#4 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [192] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::memset:19 [ print_line_cursor#1 memset::c#4 memset::end#0 memset::dst#2 ] { } main:2::print_cls:7::memset:197 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::i#12 main::i#2 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::i#10 main::i#3 ] : zp[2]:6 , @@ -5732,19 +5730,19 @@ Potential registers zp[4]:134 [ clock::return#0 ] : zp[4]:134 , Potential registers zp[2]:138 [ memset::end#0 ] : zp[2]:138 , REGISTER UPLIFT SCOPES -Uplift Scope [utoa_append] 2,554: zp[2]:24 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 2,003: zp[1]:26 [ utoa_append::digit#2 utoa_append::digit#1 ] 350.5: zp[2]:96 [ utoa_append::sub#0 ] 202: zp[2]:98 [ utoa_append::return#0 ] 12.88: zp[2]:94 [ utoa_append::buffer#0 ] -Uplift Scope [utoa] 382.64: zp[2]:22 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 312.5: zp[2]:19 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 230.86: zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] 202: zp[1]:91 [ utoa::$11 ] 151.5: zp[1]:21 [ utoa::started#2 utoa::started#4 ] 60.6: zp[2]:92 [ utoa::digit_value#0 ] 4: zp[1]:88 [ utoa::$4 ] 4: zp[2]:89 [ utoa::buffer#3 ] -Uplift Scope [main] 297: zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] 227.67: zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] 35.6: zp[2]:2 [ main::i#12 main::i#2 ] 27.5: zp[2]:6 [ main::i#10 main::i#3 ] 25: zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] 22: zp[2]:86 [ main::$34 ] 4: zp[4]:60 [ main::$10 ] 2: zp[4]:76 [ main::$12 ] 1.33: zp[2]:80 [ main::sec100s#0 ] 0.5: zp[4]:64 [ main::cyclecount#0 ] -Uplift Scope [ultoa_append] 259: zp[4]:37 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] 203: zp[1]:41 [ ultoa_append::digit#2 ultoa_append::digit#1 ] 35.5: zp[4]:110 [ ultoa_append::sub#0 ] 22: zp[4]:114 [ ultoa_append::return#0 ] 1.62: zp[2]:108 [ ultoa_append::buffer#0 ] -Uplift Scope [print_str] 305.5: zp[2]:16 [ print_str::str#8 print_str::str#10 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:42 [ 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[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:130 [ divr16u::$1 ] 22: zp[1]:131 [ divr16u::$2 ] 19.75: zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 18.19: zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] 4: zp[2]:118 [ divr16u::return#2 ] 4: zp[2]:122 [ divr16u::return#3 ] -Uplift Scope [] 163.5: zp[2]:14 [ print_char_cursor#66 print_char_cursor#86 print_char_cursor#87 print_char_cursor#88 print_char_cursor#58 print_char_cursor#94 print_char_cursor#2 print_char_cursor#1 ] 59.17: zp[2]:27 [ print_line_cursor#11 print_line_cursor#21 print_char_cursor#62 print_char_cursor#76 print_line_cursor#1 print_char_cursor#10 ] 0.67: zp[2]:132 [ rem16u#1 ] -Uplift Scope [ultoa] 41.93: zp[2]:35 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] 36.07: zp[4]:30 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] 25.14: zp[1]:29 [ ultoa::digit#2 ultoa::digit#1 ] 22: zp[1]:103 [ ultoa::$11 ] 16.5: zp[1]:34 [ ultoa::started#2 ultoa::started#4 ] 6.6: zp[4]:104 [ ultoa::digit_value#0 ] 4: zp[1]:100 [ ultoa::$4 ] 4: zp[2]:101 [ ultoa::buffer#3 ] -Uplift Scope [memset] 41.33: zp[2]:54 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:138 [ memset::end#0 ] 2: zp[2]:49 [ memset::num#2 ] 1.38: zp[1]:53 [ memset::c#4 ] 0: zp[2]:51 [ memset::str#3 ] -Uplift Scope [print_word_decimal] 30: zp[2]:12 [ print_word_decimal::w#3 print_word_decimal::w#2 print_word_decimal::w#1 ] -Uplift Scope [div32u16u] 4: zp[4]:72 [ div32u16u::return#2 ] 4: zp[2]:124 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:126 [ div32u16u::return#0 ] 1.2: zp[4]:68 [ div32u16u::dividend#0 ] 0.67: zp[2]:120 [ div32u16u::quotient_hi#0 ] -Uplift Scope [clock] 4: zp[4]:56 [ clock::return#2 ] 1.33: zp[4]:134 [ clock::return#0 ] -Uplift Scope [print_dword_decimal] 4: zp[4]:82 [ print_dword_decimal::w#0 ] +Uplift Scope [utoa_append] 25,005,500,003.5: zp[2]:24 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 20,005,000,002.5: zp[1]:26 [ utoa_append::digit#2 utoa_append::digit#1 ] 3,333,500,000.5: zp[2]:96 [ utoa_append::sub#0 ] 2,000,002: zp[2]:98 [ utoa_append::return#0 ] 1,375,000.25: zp[2]:94 [ utoa_append::buffer#0 ] +Uplift Scope [ultoa_append] 25,055,003.5: zp[4]:37 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] 20,050,002.5: zp[1]:41 [ ultoa_append::digit#2 ultoa_append::digit#1 ] 3,335,000.5: zp[4]:110 [ ultoa_append::sub#0 ] 20,002: zp[4]:114 [ ultoa_append::return#0 ] 13,750.25: zp[2]:108 [ ultoa_append::buffer#0 ] +Uplift Scope [utoa] 3,787,146.79: zp[2]:22 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 3,078,361.36: zp[2]:19 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 2,285,716.57: zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] 2,000,002: zp[1]:91 [ utoa::$11 ] 1,500,001.5: zp[1]:21 [ utoa::started#2 utoa::started#4 ] 600,000.6: zp[2]:92 [ utoa::digit_value#0 ] 20,002: zp[1]:88 [ utoa::$4 ] 20,002: zp[2]:89 [ utoa::buffer#3 ] +Uplift Scope [print_str] 3,012,504.25: zp[2]:16 [ print_str::str#8 print_str::str#10 print_str::str#0 ] +Uplift Scope [] 1,105,857.66: zp[2]:14 [ print_char_cursor#66 print_char_cursor#86 print_char_cursor#87 print_char_cursor#88 print_char_cursor#58 print_char_cursor#94 print_char_cursor#2 print_char_cursor#1 ] 2,876.31: zp[2]:27 [ print_line_cursor#11 print_line_cursor#21 print_char_cursor#62 print_char_cursor#76 print_line_cursor#1 print_char_cursor#10 ] 183.67: zp[2]:132 [ rem16u#1 ] +Uplift Scope [divr16u] 90,147.42: zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 31,817.75: zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 20,002: zp[1]:130 [ divr16u::$1 ] 20,002: zp[1]:131 [ divr16u::$2 ] 16,540.12: zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] 8,435.39: zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 202: zp[2]:118 [ divr16u::return#2 ] 202: zp[2]:122 [ divr16u::return#3 ] +Uplift Scope [ultoa] 38,003.93: zp[2]:35 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] 31,411.36: zp[4]:30 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] 22,859.43: zp[1]:29 [ ultoa::digit#2 ultoa::digit#1 ] 20,002: zp[1]:103 [ ultoa::$11 ] 15,001.5: zp[1]:34 [ ultoa::started#2 ultoa::started#4 ] 6,000.6: zp[4]:104 [ ultoa::digit_value#0 ] 2,002: zp[1]:100 [ ultoa::$4 ] 2,002: zp[2]:101 [ ultoa::buffer#3 ] +Uplift Scope [memset] 35,672.33: zp[2]:54 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:138 [ memset::end#0 ] 1,250.12: zp[1]:53 [ memset::c#4 ] 1,001: zp[2]:49 [ memset::num#2 ] 0: zp[2]:51 [ memset::str#3 ] +Uplift Scope [main] 2,929.5: zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] 2,237.67: zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] 341.6: zp[2]:2 [ main::i#12 main::i#2 ] 252.5: zp[2]:6 [ main::i#10 main::i#3 ] 229.55: zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] 202: zp[2]:86 [ main::$34 ] 22: zp[4]:60 [ main::$10 ] 11: zp[4]:76 [ main::$12 ] 7.33: zp[2]:80 [ main::sec100s#0 ] 2.75: zp[4]:64 [ main::cyclecount#0 ] +Uplift Scope [print_word_decimal] 1,236: zp[2]:12 [ print_word_decimal::w#3 print_word_decimal::w#2 print_word_decimal::w#1 ] +Uplift Scope [div32u16u] 202: zp[2]:124 [ div32u16u::quotient_lo#0 ] 42.6: zp[4]:68 [ div32u16u::dividend#0 ] 37.33: zp[4]:126 [ div32u16u::return#0 ] 33.67: zp[2]:120 [ div32u16u::quotient_hi#0 ] 22: zp[4]:72 [ div32u16u::return#2 ] +Uplift Scope [print_dword_decimal] 112: zp[4]:82 [ print_dword_decimal::w#0 ] +Uplift Scope [clock] 37.33: zp[4]:134 [ clock::return#0 ] 22: zp[4]:56 [ clock::return#2 ] Uplift Scope [clock_start] Uplift Scope [RADIX] Uplift Scope [print_ln] @@ -5752,18 +5750,18 @@ Uplift Scope [print_char] Uplift Scope [print_cls] Uplifting [utoa_append] best 103419 combination zp[2]:24 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:96 [ utoa_append::sub#0 ] zp[2]:98 [ utoa_append::return#0 ] zp[2]:94 [ utoa_append::buffer#0 ] -Uplifting [utoa] best 102115 combination zp[2]:22 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:19 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$11 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:92 [ utoa::digit_value#0 ] reg byte a [ utoa::$4 ] zp[2]:89 [ utoa::buffer#3 ] -Uplifting [main] best 102115 combination zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] zp[2]:2 [ main::i#12 main::i#2 ] zp[2]:6 [ main::i#10 main::i#3 ] zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:86 [ main::$34 ] zp[4]:60 [ main::$10 ] zp[4]:76 [ main::$12 ] zp[2]:80 [ main::sec100s#0 ] zp[4]:64 [ main::cyclecount#0 ] -Uplifting [ultoa_append] best 101512 combination zp[4]:37 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ] zp[4]:110 [ ultoa_append::sub#0 ] zp[4]:114 [ ultoa_append::return#0 ] zp[2]:108 [ ultoa_append::buffer#0 ] +Uplifting [ultoa_append] best 102816 combination zp[4]:37 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ] zp[4]:110 [ ultoa_append::sub#0 ] zp[4]:114 [ ultoa_append::return#0 ] zp[2]:108 [ ultoa_append::buffer#0 ] +Uplifting [utoa] best 101512 combination zp[2]:22 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:19 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:18 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$11 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:92 [ utoa::digit_value#0 ] reg byte a [ utoa::$4 ] zp[2]:89 [ utoa::buffer#3 ] Uplifting [print_str] best 101512 combination zp[2]:16 [ print_str::str#8 print_str::str#10 print_str::str#0 ] -Uplifting [divr16u] best 101302 combination zp[2]:42 [ 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[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:118 [ divr16u::return#2 ] zp[2]:122 [ divr16u::return#3 ] -Uplifting [] best 101302 combination zp[2]:14 [ print_char_cursor#66 print_char_cursor#86 print_char_cursor#87 print_char_cursor#88 print_char_cursor#58 print_char_cursor#94 print_char_cursor#2 print_char_cursor#1 ] zp[2]:27 [ print_line_cursor#11 print_line_cursor#21 print_char_cursor#62 print_char_cursor#76 print_line_cursor#1 print_char_cursor#10 ] zp[2]:132 [ rem16u#1 ] +Uplifting [] best 101512 combination zp[2]:14 [ print_char_cursor#66 print_char_cursor#86 print_char_cursor#87 print_char_cursor#88 print_char_cursor#58 print_char_cursor#94 print_char_cursor#2 print_char_cursor#1 ] zp[2]:27 [ print_line_cursor#11 print_line_cursor#21 print_char_cursor#62 print_char_cursor#76 print_line_cursor#1 print_char_cursor#10 ] zp[2]:132 [ rem16u#1 ] +Uplifting [divr16u] best 101302 combination zp[2]:42 [ 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[2]:46 [ 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[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:118 [ divr16u::return#2 ] zp[2]:122 [ divr16u::return#3 ] Uplifting [ultoa] best 101168 combination zp[2]:35 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] zp[4]:30 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] zp[1]:29 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$11 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:104 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$4 ] zp[2]:101 [ ultoa::buffer#3 ] -Uplifting [memset] best 101152 combination zp[2]:54 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:138 [ memset::end#0 ] zp[2]:49 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:51 [ memset::str#3 ] +Uplifting [memset] best 101152 combination zp[2]:54 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:138 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:49 [ memset::num#2 ] zp[2]:51 [ memset::str#3 ] +Uplifting [main] best 101152 combination zp[2]:8 [ main::j#2 main::j#0 main::j#1 ] zp[2]:10 [ main::s#2 main::s#0 main::s#1 ] zp[2]:2 [ main::i#12 main::i#2 ] zp[2]:6 [ main::i#10 main::i#3 ] zp[2]:4 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:86 [ main::$34 ] zp[4]:60 [ main::$10 ] zp[4]:76 [ main::$12 ] zp[2]:80 [ main::sec100s#0 ] zp[4]:64 [ main::cyclecount#0 ] Uplifting [print_word_decimal] best 101152 combination zp[2]:12 [ print_word_decimal::w#3 print_word_decimal::w#2 print_word_decimal::w#1 ] -Uplifting [div32u16u] best 101152 combination zp[4]:72 [ div32u16u::return#2 ] zp[2]:124 [ div32u16u::quotient_lo#0 ] zp[4]:126 [ div32u16u::return#0 ] zp[4]:68 [ div32u16u::dividend#0 ] zp[2]:120 [ div32u16u::quotient_hi#0 ] -Uplifting [clock] best 101152 combination zp[4]:56 [ clock::return#2 ] zp[4]:134 [ clock::return#0 ] +Uplifting [div32u16u] best 101152 combination zp[2]:124 [ div32u16u::quotient_lo#0 ] zp[4]:68 [ div32u16u::dividend#0 ] zp[4]:126 [ div32u16u::return#0 ] zp[2]:120 [ div32u16u::quotient_hi#0 ] zp[4]:72 [ div32u16u::return#2 ] Uplifting [print_dword_decimal] best 101152 combination zp[4]:82 [ print_dword_decimal::w#0 ] +Uplifting [clock] best 101152 combination zp[4]:134 [ clock::return#0 ] zp[4]:56 [ clock::return#2 ] Uplifting [clock_start] best 101152 combination Uplifting [RADIX] best 101152 combination Uplifting [print_ln] best 101152 combination @@ -7475,8 +7473,8 @@ FINAL SYMBOL TABLE (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:15 1.3333333333333333 -(dword) clock::return#2 return zp[4]:15 4.0 +(dword) clock::return#0 return zp[4]:15 37.33333333333333 +(dword) clock::return#2 return zp[4]:15 22.0 (void()) clock_start() (label) clock_start::@return (const byte*) decimal_digits[(number) 6] = { fill( 6, 0) } @@ -7486,20 +7484,20 @@ FINAL SYMBOL TABLE (label) div32u16u::@2 (label) div32u16u::@return (dword) div32u16u::dividend -(dword) div32u16u::dividend#0 dividend zp[4]:15 1.2000000000000002 +(dword) div32u16u::dividend#0 dividend zp[4]:15 42.599999999999994 (word) div32u16u::divisor (const word) div32u16u::divisor#0 divisor = (word)(const dword) CLOCKS_PER_SEC/(byte) $64 (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 0.6666666666666666 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 33.666666666666664 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:27 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:27 202.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:23 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:23 4.0 +(dword) div32u16u::return#0 return zp[4]:23 37.33333333333333 +(dword) div32u16u::return#2 return zp[4]:23 22.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 20002.0 +(byte~) divr16u::$2 reg byte a 20002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -7508,36 +7506,36 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:21 2.75 -(word) divr16u::dividend#1 dividend zp[2]:21 4.0 -(word) divr16u::dividend#2 dividend zp[2]:21 2.0 -(word) divr16u::dividend#3 dividend zp[2]:21 5.0 -(word) divr16u::dividend#5 dividend zp[2]:21 6.0 +(word) divr16u::dividend#0 dividend zp[2]:21 2500.25 +(word) divr16u::dividend#1 dividend zp[2]:21 202.0 +(word) divr16u::dividend#2 dividend zp[2]:21 101.0 +(word) divr16u::dividend#3 dividend zp[2]:21 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:21 1203.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 15001.5 +(byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:27 16.5 -(word) divr16u::quotient#2 quotient zp[2]:27 11.0 -(word) divr16u::quotient#3 quotient zp[2]:27 2.75 +(word) divr16u::quotient#1 quotient zp[2]:27 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:27 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:27 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:19 8.25 -(word) divr16u::rem#1 rem zp[2]:19 22.0 -(word) divr16u::rem#10 rem zp[2]:19 4.0 -(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:19 22.0 -(word) divr16u::rem#4 rem zp[2]:19 4.0 -(word) divr16u::rem#5 rem zp[2]:19 24.0 -(word) divr16u::rem#6 rem zp[2]:19 11.0 +(word) divr16u::rem#0 rem zp[2]:19 7500.75 +(word) divr16u::rem#1 rem zp[2]:19 20002.0 +(word) divr16u::rem#10 rem zp[2]:19 1102.0 +(word) divr16u::rem#11 rem zp[2]:19 10334.666666666666 +(word) divr16u::rem#2 rem zp[2]:19 20002.0 +(word) divr16u::rem#4 rem zp[2]:19 202.0 +(word) divr16u::rem#5 rem zp[2]:19 21003.0 +(word) divr16u::rem#6 rem zp[2]:19 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:27 5.285714285714286 -(word) divr16u::return#2 return zp[2]:27 4.0 -(word) divr16u::return#3 return zp[2]:27 4.0 +(word) divr16u::return#0 return zp[2]:27 4315.0 +(word) divr16u::return#2 return zp[2]:27 202.0 +(word) divr16u::return#3 return zp[2]:27 202.0 (void()) main() -(dword~) main::$10 zp[4]:15 4.0 -(dword~) main::$12 zp[4]:23 2.0 -(byte*~) main::$34 zp[2]:27 22.0 +(dword~) main::$10 zp[4]:15 22.0 +(dword~) main::$12 zp[4]:23 11.0 +(byte*~) main::$34 zp[2]:27 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -7567,25 +7565,25 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:15 0.5 +(dword) main::cyclecount#0 cyclecount zp[4]:15 2.75 (word) main::i -(word) main::i#10 i_1 zp[2]:4 5.5 -(word) main::i#12 i zp[2]:10 24.6 -(word) main::i#2 i zp[2]:10 11.0 -(word) main::i#3 i_1 zp[2]:4 22.0 +(word) main::i#10 i_1 zp[2]:4 50.5 +(word) main::i#12 i zp[2]:10 240.6 +(word) main::i#2 i zp[2]:10 101.0 +(word) main::i#3 i_1 zp[2]:4 202.0 (word) main::j -(word) main::j#0 j zp[2]:6 16.5 -(word) main::j#1 j zp[2]:6 202.0 -(word) main::j#2 j zp[2]:6 78.5 +(word) main::j#0 j zp[2]:6 151.5 +(word) main::j#1 j zp[2]:6 2002.0 +(word) main::j#2 j zp[2]:6 776.0 (byte*) main::s -(byte*) main::s#0 s zp[2]:8 22.0 -(byte*) main::s#1 s zp[2]:8 101.0 -(byte*) main::s#2 s zp[2]:8 104.66666666666666 +(byte*) main::s#0 s zp[2]:8 202.0 +(byte*) main::s#1 s zp[2]:8 1001.0 +(byte*) main::s#2 s zp[2]:8 1034.6666666666667 (word) main::sec100s -(word) main::sec100s#0 sec100s zp[2]:4 1.3333333333333333 +(word) main::sec100s#0 sec100s zp[2]:4 7.333333333333333 (byte*) main::sieve_i -(byte*) main::sieve_i#1 sieve_i zp[2]:2 22.0 -(byte*) main::sieve_i#2 sieve_i zp[2]:2 3.0 +(byte*) main::sieve_i#1 sieve_i zp[2]:2 202.0 +(byte*) main::sieve_i#2 sieve_i zp[2]:2 27.545454545454547 (const byte*) main::str[(byte) $25] = (byte*) "Sieve benchmark - calculating primes" (const byte*) main::str1[(byte) $f] = (byte*) "between 2 and " (const byte*) main::str2[(byte) $16] = (byte*) "100ths seconds used: " @@ -7603,15 +7601,15 @@ FINAL SYMBOL TABLE (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:27 22.0 -(byte*) memset::dst#2 dst zp[2]:27 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:27 4.0 +(byte*) memset::dst#1 dst zp[2]:27 20002.0 +(byte*) memset::dst#2 dst zp[2]:27 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:27 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:21 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:21 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:21 2.0 +(word) memset::num#2 num zp[2]:21 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:27 @@ -7620,28 +7618,28 @@ FINAL SYMBOL TABLE (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) ' ' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 101.0 -(byte*) print_char_cursor#10 print_char_cursor_1 zp[2]:12 4.333333333333333 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 10.25 -(byte*) print_char_cursor#58 print_char_cursor zp[2]:10 4.25 -(byte*) print_char_cursor#62 print_char_cursor_1 zp[2]:12 7.4 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:10 14.0 -(byte*) print_char_cursor#76 print_char_cursor_1 zp[2]:12 16.5 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#87 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#88 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 1000001.0 +(byte*) print_char_cursor#10 print_char_cursor_1 zp[2]:12 367.33333333333337 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 94160.65625 +(byte*) print_char_cursor#58 print_char_cursor zp[2]:10 281.0 +(byte*) print_char_cursor#62 print_char_cursor_1 zp[2]:12 65.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:10 11147.0 +(byte*) print_char_cursor#76 print_char_cursor_1 zp[2]:12 151.5 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#87 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#88 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:10 202.0 (void()) print_cls() (label) print_cls::@return (void()) print_dword_decimal((dword) print_dword_decimal::w) (label) print_dword_decimal::@1 (label) print_dword_decimal::@return (dword) print_dword_decimal::w -(dword) print_dword_decimal::w#0 w zp[4]:15 4.0 +(dword) print_dword_decimal::w#0 w zp[4]:15 112.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 0.9347826086956521 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:12 24.0 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:12 6.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 66.47826086956522 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:12 2103.0 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:12 123.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -7651,22 +7649,22 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:19 202.0 -(byte*) print_str::str#10 str zp[2]:19 2.0 -(byte*) print_str::str#8 str zp[2]:19 101.5 +(byte*) print_str::str#0 str zp[2]:19 2000002.0 +(byte*) print_str::str#10 str zp[2]:19 10001.0 +(byte*) print_str::str#8 str zp[2]:19 1002501.25 (void()) print_word_decimal((word) print_word_decimal::w) (label) print_word_decimal::@1 (label) print_word_decimal::@return (word) print_word_decimal::w -(word) print_word_decimal::w#1 w zp[2]:4 4.0 -(word) print_word_decimal::w#2 w zp[2]:4 11.0 -(word) print_word_decimal::w#3 w zp[2]:4 15.0 +(word) print_word_decimal::w#1 w zp[2]:4 22.0 +(word) print_word_decimal::w#2 w zp[2]:4 101.0 +(word) print_word_decimal::w#3 w zp[2]:4 1113.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:19 0.6666666666666666 +(word) rem16u#1 rem16u zp[2]:19 183.66666666666669 (const byte*) sieve = (byte*) 4096 (void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) -(byte~) ultoa::$11 reg byte a 22.0 -(byte~) ultoa::$4 reg byte a 4.0 +(byte~) ultoa::$11 reg byte a 20002.0 +(byte~) ultoa::$4 reg byte a 2002.0 (label) ultoa::@1 (label) ultoa::@2 (label) ultoa::@3 @@ -7676,48 +7674,48 @@ FINAL SYMBOL TABLE (label) ultoa::@7 (label) ultoa::@return (byte*) ultoa::buffer -(byte*) ultoa::buffer#11 buffer zp[2]:21 3.4285714285714284 -(byte*) ultoa::buffer#14 buffer zp[2]:21 16.5 -(byte*) ultoa::buffer#3 buffer zp[2]:21 4.0 -(byte*) ultoa::buffer#4 buffer zp[2]:21 22.0 +(byte*) ultoa::buffer#11 buffer zp[2]:21 3000.4285714285716 +(byte*) ultoa::buffer#14 buffer zp[2]:21 15001.5 +(byte*) ultoa::buffer#3 buffer zp[2]:21 2002.0 +(byte*) ultoa::buffer#4 buffer zp[2]:21 20002.0 (byte) ultoa::digit -(byte) ultoa::digit#1 digit zp[1]:14 22.0 -(byte) ultoa::digit#2 digit zp[1]:14 3.142857142857143 +(byte) ultoa::digit#1 digit zp[1]:14 20002.0 +(byte) ultoa::digit#2 digit zp[1]:14 2857.4285714285716 (dword) ultoa::digit_value -(dword) ultoa::digit_value#0 digit_value zp[4]:29 6.6000000000000005 +(dword) ultoa::digit_value#0 digit_value zp[4]:29 6000.6 (dword*) ultoa::digit_values (byte) ultoa::max_digits (const byte) ultoa::max_digits#1 max_digits = (byte) $a (byte) ultoa::radix (byte) ultoa::started -(byte) ultoa::started#2 reg byte x 5.5 -(byte) ultoa::started#4 reg byte x 11.0 +(byte) ultoa::started#2 reg byte x 5000.5 +(byte) ultoa::started#4 reg byte x 10001.0 (dword) ultoa::value -(dword) ultoa::value#0 value zp[4]:15 11.0 -(dword) ultoa::value#1 value zp[4]:15 2.0 -(dword) ultoa::value#2 value zp[4]:15 6.571428571428571 -(dword) ultoa::value#6 value zp[4]:15 16.5 +(dword) ultoa::value#0 value zp[4]:15 10001.0 +(dword) ultoa::value#1 value zp[4]:15 551.0 +(dword) ultoa::value#2 value zp[4]:15 5857.857142857143 +(dword) ultoa::value#6 value zp[4]:15 15001.5 (dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) (label) ultoa_append::@1 (label) ultoa_append::@2 (label) ultoa_append::@3 (label) ultoa_append::@return (byte*) ultoa_append::buffer -(byte*) ultoa_append::buffer#0 buffer zp[2]:21 1.625 +(byte*) ultoa_append::buffer#0 buffer zp[2]:21 13750.25 (byte) ultoa_append::digit -(byte) ultoa_append::digit#1 reg byte x 101.0 -(byte) ultoa_append::digit#2 reg byte x 102.0 +(byte) ultoa_append::digit#1 reg byte x 1.0000001E7 +(byte) ultoa_append::digit#2 reg byte x 1.00500015E7 (dword) ultoa_append::return -(dword) ultoa_append::return#0 return zp[4]:15 22.0 +(dword) ultoa_append::return#0 return zp[4]:15 20002.0 (dword) ultoa_append::sub -(dword) ultoa_append::sub#0 sub zp[4]:29 35.5 +(dword) ultoa_append::sub#0 sub zp[4]:29 3335000.5 (dword) ultoa_append::value -(dword) ultoa_append::value#0 value zp[4]:15 4.333333333333333 -(dword) ultoa_append::value#1 value zp[4]:15 202.0 -(dword) ultoa_append::value#2 value zp[4]:15 52.66666666666666 +(dword) ultoa_append::value#0 value zp[4]:15 36667.33333333333 +(dword) ultoa_append::value#1 value zp[4]:15 2.0000002E7 +(dword) ultoa_append::value#2 value zp[4]:15 5018334.166666666 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) -(byte~) utoa::$11 reg byte a 202.0 -(byte~) utoa::$4 reg byte a 4.0 +(byte~) utoa::$11 reg byte a 2000002.0 +(byte~) utoa::$4 reg byte a 20002.0 (label) utoa::@1 (label) utoa::@2 (label) utoa::@3 @@ -7727,45 +7725,45 @@ FINAL SYMBOL TABLE (label) utoa::@7 (label) utoa::@return (byte*) utoa::buffer -(byte*) utoa::buffer#11 buffer zp[2]:21 29.142857142857146 -(byte*) utoa::buffer#14 buffer zp[2]:21 151.5 -(byte*) utoa::buffer#3 buffer zp[2]:21 4.0 -(byte*) utoa::buffer#4 buffer zp[2]:21 202.0 +(byte*) utoa::buffer#11 buffer zp[2]:21 287143.2857142857 +(byte*) utoa::buffer#14 buffer zp[2]:21 1500001.5 +(byte*) utoa::buffer#3 buffer zp[2]:21 20002.0 +(byte*) utoa::buffer#4 buffer zp[2]:21 2000002.0 (byte) utoa::digit -(byte) utoa::digit#1 digit zp[1]:14 202.0 -(byte) utoa::digit#2 digit zp[1]:14 28.857142857142858 +(byte) utoa::digit#1 digit zp[1]:14 2000002.0 +(byte) utoa::digit#2 digit zp[1]:14 285714.5714285714 (word) utoa::digit_value -(word) utoa::digit_value#0 digit_value zp[2]:33 60.599999999999994 +(word) utoa::digit_value#0 digit_value zp[2]:33 600000.6000000001 (word*) utoa::digit_values (byte) utoa::max_digits (const byte) utoa::max_digits#1 max_digits = (byte) 5 (byte) utoa::radix (byte) utoa::started -(byte) utoa::started#2 reg byte x 50.5 -(byte) utoa::started#4 reg byte x 101.0 +(byte) utoa::started#2 reg byte x 500000.5 +(byte) utoa::started#4 reg byte x 1000001.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:19 101.0 -(word) utoa::value#1 value zp[2]:19 2.0 -(word) utoa::value#2 value zp[2]:19 58.00000000000001 -(word) utoa::value#6 value zp[2]:19 151.5 +(word) utoa::value#0 value zp[2]:19 1000001.0 +(word) utoa::value#1 value zp[2]:19 5501.0 +(word) utoa::value#2 value zp[2]:19 572857.857142857 +(word) utoa::value#6 value zp[2]:19 1500001.5 (word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) (label) utoa_append::@1 (label) utoa_append::@2 (label) utoa_append::@3 (label) utoa_append::@return (byte*) utoa_append::buffer -(byte*) utoa_append::buffer#0 buffer zp[2]:21 12.875 +(byte*) utoa_append::buffer#0 buffer zp[2]:21 1375000.25 (byte) utoa_append::digit -(byte) utoa_append::digit#1 reg byte x 1001.0 -(byte) utoa_append::digit#2 reg byte x 1002.0 +(byte) utoa_append::digit#1 reg byte x 1.0000000001E10 +(byte) utoa_append::digit#2 reg byte x 1.00050000015E10 (word) utoa_append::return -(word) utoa_append::return#0 return zp[2]:19 202.0 +(word) utoa_append::return#0 return zp[2]:19 2000002.0 (word) utoa_append::sub -(word) utoa_append::sub#0 sub zp[2]:33 350.5 +(word) utoa_append::sub#0 sub zp[2]:33 3.3335000005E9 (word) utoa_append::value -(word) utoa_append::value#0 value zp[2]:19 34.33333333333333 -(word) utoa_append::value#1 value zp[2]:19 2002.0 -(word) utoa_append::value#2 value zp[2]:19 517.6666666666667 +(word) utoa_append::value#0 value zp[2]:19 3666667.333333333 +(word) utoa_append::value#1 value zp[2]:19 2.0000000002E10 +(word) utoa_append::value#2 value zp[2]:19 5.001833334166666E9 zp[2]:2 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:4 [ main::i#10 main::i#3 print_word_decimal::w#3 print_word_decimal::w#2 print_word_decimal::w#1 main::sec100s#0 ] diff --git a/src/test/ref/sieve.sym b/src/test/ref/sieve.sym index c5e7b2665..636381fe1 100644 --- a/src/test/ref/sieve.sym +++ b/src/test/ref/sieve.sym @@ -24,8 +24,8 @@ (dword()) clock() (label) clock::@return (dword) clock::return -(dword) clock::return#0 return zp[4]:15 1.3333333333333333 -(dword) clock::return#2 return zp[4]:15 4.0 +(dword) clock::return#0 return zp[4]:15 37.33333333333333 +(dword) clock::return#2 return zp[4]:15 22.0 (void()) clock_start() (label) clock_start::@return (const byte*) decimal_digits[(number) 6] = { fill( 6, 0) } @@ -35,20 +35,20 @@ (label) div32u16u::@2 (label) div32u16u::@return (dword) div32u16u::dividend -(dword) div32u16u::dividend#0 dividend zp[4]:15 1.2000000000000002 +(dword) div32u16u::dividend#0 dividend zp[4]:15 42.599999999999994 (word) div32u16u::divisor (const word) div32u16u::divisor#0 divisor = (word)(const dword) CLOCKS_PER_SEC/(byte) $64 (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 0.6666666666666666 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 33.666666666666664 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:27 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:27 202.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:23 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:23 4.0 +(dword) div32u16u::return#0 return zp[4]:23 37.33333333333333 +(dword) div32u16u::return#2 return zp[4]:23 22.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 20002.0 +(byte~) divr16u::$2 reg byte a 20002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -57,36 +57,36 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:21 2.75 -(word) divr16u::dividend#1 dividend zp[2]:21 4.0 -(word) divr16u::dividend#2 dividend zp[2]:21 2.0 -(word) divr16u::dividend#3 dividend zp[2]:21 5.0 -(word) divr16u::dividend#5 dividend zp[2]:21 6.0 +(word) divr16u::dividend#0 dividend zp[2]:21 2500.25 +(word) divr16u::dividend#1 dividend zp[2]:21 202.0 +(word) divr16u::dividend#2 dividend zp[2]:21 101.0 +(word) divr16u::dividend#3 dividend zp[2]:21 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:21 1203.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 15001.5 +(byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:27 16.5 -(word) divr16u::quotient#2 quotient zp[2]:27 11.0 -(word) divr16u::quotient#3 quotient zp[2]:27 2.75 +(word) divr16u::quotient#1 quotient zp[2]:27 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:27 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:27 2500.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:19 8.25 -(word) divr16u::rem#1 rem zp[2]:19 22.0 -(word) divr16u::rem#10 rem zp[2]:19 4.0 -(word) divr16u::rem#11 rem zp[2]:19 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:19 22.0 -(word) divr16u::rem#4 rem zp[2]:19 4.0 -(word) divr16u::rem#5 rem zp[2]:19 24.0 -(word) divr16u::rem#6 rem zp[2]:19 11.0 +(word) divr16u::rem#0 rem zp[2]:19 7500.75 +(word) divr16u::rem#1 rem zp[2]:19 20002.0 +(word) divr16u::rem#10 rem zp[2]:19 1102.0 +(word) divr16u::rem#11 rem zp[2]:19 10334.666666666666 +(word) divr16u::rem#2 rem zp[2]:19 20002.0 +(word) divr16u::rem#4 rem zp[2]:19 202.0 +(word) divr16u::rem#5 rem zp[2]:19 21003.0 +(word) divr16u::rem#6 rem zp[2]:19 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:27 5.285714285714286 -(word) divr16u::return#2 return zp[2]:27 4.0 -(word) divr16u::return#3 return zp[2]:27 4.0 +(word) divr16u::return#0 return zp[2]:27 4315.0 +(word) divr16u::return#2 return zp[2]:27 202.0 +(word) divr16u::return#3 return zp[2]:27 202.0 (void()) main() -(dword~) main::$10 zp[4]:15 4.0 -(dword~) main::$12 zp[4]:23 2.0 -(byte*~) main::$34 zp[2]:27 22.0 +(dword~) main::$10 zp[4]:15 22.0 +(dword~) main::$12 zp[4]:23 11.0 +(byte*~) main::$34 zp[2]:27 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -116,25 +116,25 @@ (label) main::@8 (label) main::@9 (dword) main::cyclecount -(dword) main::cyclecount#0 cyclecount zp[4]:15 0.5 +(dword) main::cyclecount#0 cyclecount zp[4]:15 2.75 (word) main::i -(word) main::i#10 i_1 zp[2]:4 5.5 -(word) main::i#12 i zp[2]:10 24.6 -(word) main::i#2 i zp[2]:10 11.0 -(word) main::i#3 i_1 zp[2]:4 22.0 +(word) main::i#10 i_1 zp[2]:4 50.5 +(word) main::i#12 i zp[2]:10 240.6 +(word) main::i#2 i zp[2]:10 101.0 +(word) main::i#3 i_1 zp[2]:4 202.0 (word) main::j -(word) main::j#0 j zp[2]:6 16.5 -(word) main::j#1 j zp[2]:6 202.0 -(word) main::j#2 j zp[2]:6 78.5 +(word) main::j#0 j zp[2]:6 151.5 +(word) main::j#1 j zp[2]:6 2002.0 +(word) main::j#2 j zp[2]:6 776.0 (byte*) main::s -(byte*) main::s#0 s zp[2]:8 22.0 -(byte*) main::s#1 s zp[2]:8 101.0 -(byte*) main::s#2 s zp[2]:8 104.66666666666666 +(byte*) main::s#0 s zp[2]:8 202.0 +(byte*) main::s#1 s zp[2]:8 1001.0 +(byte*) main::s#2 s zp[2]:8 1034.6666666666667 (word) main::sec100s -(word) main::sec100s#0 sec100s zp[2]:4 1.3333333333333333 +(word) main::sec100s#0 sec100s zp[2]:4 7.333333333333333 (byte*) main::sieve_i -(byte*) main::sieve_i#1 sieve_i zp[2]:2 22.0 -(byte*) main::sieve_i#2 sieve_i zp[2]:2 3.0 +(byte*) main::sieve_i#1 sieve_i zp[2]:2 202.0 +(byte*) main::sieve_i#2 sieve_i zp[2]:2 27.545454545454547 (const byte*) main::str[(byte) $25] = (byte*) "Sieve benchmark - calculating primes" (const byte*) main::str1[(byte) $f] = (byte*) "between 2 and " (const byte*) main::str2[(byte) $16] = (byte*) "100ths seconds used: " @@ -152,15 +152,15 @@ (label) memset::@3 (label) memset::@return (byte) memset::c -(byte) memset::c#4 reg byte x 1.375 +(byte) memset::c#4 reg byte x 1250.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:27 22.0 -(byte*) memset::dst#2 dst zp[2]:27 15.333333333333332 -(byte*) memset::dst#4 dst zp[2]:27 4.0 +(byte*) memset::dst#1 dst zp[2]:27 20002.0 +(byte*) memset::dst#2 dst zp[2]:27 13668.333333333332 +(byte*) memset::dst#4 dst zp[2]:27 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:21 2.1666666666666665 +(byte*) memset::end#0 end zp[2]:21 1833.6666666666665 (word) memset::num -(word) memset::num#2 num zp[2]:21 2.0 +(word) memset::num#2 num zp[2]:21 1001.0 (void*) memset::return (void*) memset::str (void*) memset::str#3 str zp[2]:27 @@ -169,28 +169,28 @@ (byte) print_char::ch (const byte) print_char::ch#0 ch = (byte) ' ' (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 101.0 -(byte*) print_char_cursor#10 print_char_cursor_1 zp[2]:12 4.333333333333333 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 10.25 -(byte*) print_char_cursor#58 print_char_cursor zp[2]:10 4.25 -(byte*) print_char_cursor#62 print_char_cursor_1 zp[2]:12 7.4 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:10 14.0 -(byte*) print_char_cursor#76 print_char_cursor_1 zp[2]:12 16.5 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#87 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#88 print_char_cursor zp[2]:10 4.0 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 1000001.0 +(byte*) print_char_cursor#10 print_char_cursor_1 zp[2]:12 367.33333333333337 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 94160.65625 +(byte*) print_char_cursor#58 print_char_cursor zp[2]:10 281.0 +(byte*) print_char_cursor#62 print_char_cursor_1 zp[2]:12 65.0 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:10 11147.0 +(byte*) print_char_cursor#76 print_char_cursor_1 zp[2]:12 151.5 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#87 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#88 print_char_cursor zp[2]:10 22.0 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:10 202.0 (void()) print_cls() (label) print_cls::@return (void()) print_dword_decimal((dword) print_dword_decimal::w) (label) print_dword_decimal::@1 (label) print_dword_decimal::@return (dword) print_dword_decimal::w -(dword) print_dword_decimal::w#0 w zp[4]:15 4.0 +(dword) print_dword_decimal::w#0 w zp[4]:15 112.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 0.9347826086956521 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:12 24.0 -(byte*) print_line_cursor#21 print_line_cursor zp[2]:12 6.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:12 66.47826086956522 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:12 2103.0 +(byte*) print_line_cursor#21 print_line_cursor zp[2]:12 123.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -200,22 +200,22 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:19 202.0 -(byte*) print_str::str#10 str zp[2]:19 2.0 -(byte*) print_str::str#8 str zp[2]:19 101.5 +(byte*) print_str::str#0 str zp[2]:19 2000002.0 +(byte*) print_str::str#10 str zp[2]:19 10001.0 +(byte*) print_str::str#8 str zp[2]:19 1002501.25 (void()) print_word_decimal((word) print_word_decimal::w) (label) print_word_decimal::@1 (label) print_word_decimal::@return (word) print_word_decimal::w -(word) print_word_decimal::w#1 w zp[2]:4 4.0 -(word) print_word_decimal::w#2 w zp[2]:4 11.0 -(word) print_word_decimal::w#3 w zp[2]:4 15.0 +(word) print_word_decimal::w#1 w zp[2]:4 22.0 +(word) print_word_decimal::w#2 w zp[2]:4 101.0 +(word) print_word_decimal::w#3 w zp[2]:4 1113.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:19 0.6666666666666666 +(word) rem16u#1 rem16u zp[2]:19 183.66666666666669 (const byte*) sieve = (byte*) 4096 (void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) -(byte~) ultoa::$11 reg byte a 22.0 -(byte~) ultoa::$4 reg byte a 4.0 +(byte~) ultoa::$11 reg byte a 20002.0 +(byte~) ultoa::$4 reg byte a 2002.0 (label) ultoa::@1 (label) ultoa::@2 (label) ultoa::@3 @@ -225,48 +225,48 @@ (label) ultoa::@7 (label) ultoa::@return (byte*) ultoa::buffer -(byte*) ultoa::buffer#11 buffer zp[2]:21 3.4285714285714284 -(byte*) ultoa::buffer#14 buffer zp[2]:21 16.5 -(byte*) ultoa::buffer#3 buffer zp[2]:21 4.0 -(byte*) ultoa::buffer#4 buffer zp[2]:21 22.0 +(byte*) ultoa::buffer#11 buffer zp[2]:21 3000.4285714285716 +(byte*) ultoa::buffer#14 buffer zp[2]:21 15001.5 +(byte*) ultoa::buffer#3 buffer zp[2]:21 2002.0 +(byte*) ultoa::buffer#4 buffer zp[2]:21 20002.0 (byte) ultoa::digit -(byte) ultoa::digit#1 digit zp[1]:14 22.0 -(byte) ultoa::digit#2 digit zp[1]:14 3.142857142857143 +(byte) ultoa::digit#1 digit zp[1]:14 20002.0 +(byte) ultoa::digit#2 digit zp[1]:14 2857.4285714285716 (dword) ultoa::digit_value -(dword) ultoa::digit_value#0 digit_value zp[4]:29 6.6000000000000005 +(dword) ultoa::digit_value#0 digit_value zp[4]:29 6000.6 (dword*) ultoa::digit_values (byte) ultoa::max_digits (const byte) ultoa::max_digits#1 max_digits = (byte) $a (byte) ultoa::radix (byte) ultoa::started -(byte) ultoa::started#2 reg byte x 5.5 -(byte) ultoa::started#4 reg byte x 11.0 +(byte) ultoa::started#2 reg byte x 5000.5 +(byte) ultoa::started#4 reg byte x 10001.0 (dword) ultoa::value -(dword) ultoa::value#0 value zp[4]:15 11.0 -(dword) ultoa::value#1 value zp[4]:15 2.0 -(dword) ultoa::value#2 value zp[4]:15 6.571428571428571 -(dword) ultoa::value#6 value zp[4]:15 16.5 +(dword) ultoa::value#0 value zp[4]:15 10001.0 +(dword) ultoa::value#1 value zp[4]:15 551.0 +(dword) ultoa::value#2 value zp[4]:15 5857.857142857143 +(dword) ultoa::value#6 value zp[4]:15 15001.5 (dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) (label) ultoa_append::@1 (label) ultoa_append::@2 (label) ultoa_append::@3 (label) ultoa_append::@return (byte*) ultoa_append::buffer -(byte*) ultoa_append::buffer#0 buffer zp[2]:21 1.625 +(byte*) ultoa_append::buffer#0 buffer zp[2]:21 13750.25 (byte) ultoa_append::digit -(byte) ultoa_append::digit#1 reg byte x 101.0 -(byte) ultoa_append::digit#2 reg byte x 102.0 +(byte) ultoa_append::digit#1 reg byte x 1.0000001E7 +(byte) ultoa_append::digit#2 reg byte x 1.00500015E7 (dword) ultoa_append::return -(dword) ultoa_append::return#0 return zp[4]:15 22.0 +(dword) ultoa_append::return#0 return zp[4]:15 20002.0 (dword) ultoa_append::sub -(dword) ultoa_append::sub#0 sub zp[4]:29 35.5 +(dword) ultoa_append::sub#0 sub zp[4]:29 3335000.5 (dword) ultoa_append::value -(dword) ultoa_append::value#0 value zp[4]:15 4.333333333333333 -(dword) ultoa_append::value#1 value zp[4]:15 202.0 -(dword) ultoa_append::value#2 value zp[4]:15 52.66666666666666 +(dword) ultoa_append::value#0 value zp[4]:15 36667.33333333333 +(dword) ultoa_append::value#1 value zp[4]:15 2.0000002E7 +(dword) ultoa_append::value#2 value zp[4]:15 5018334.166666666 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) -(byte~) utoa::$11 reg byte a 202.0 -(byte~) utoa::$4 reg byte a 4.0 +(byte~) utoa::$11 reg byte a 2000002.0 +(byte~) utoa::$4 reg byte a 20002.0 (label) utoa::@1 (label) utoa::@2 (label) utoa::@3 @@ -276,45 +276,45 @@ (label) utoa::@7 (label) utoa::@return (byte*) utoa::buffer -(byte*) utoa::buffer#11 buffer zp[2]:21 29.142857142857146 -(byte*) utoa::buffer#14 buffer zp[2]:21 151.5 -(byte*) utoa::buffer#3 buffer zp[2]:21 4.0 -(byte*) utoa::buffer#4 buffer zp[2]:21 202.0 +(byte*) utoa::buffer#11 buffer zp[2]:21 287143.2857142857 +(byte*) utoa::buffer#14 buffer zp[2]:21 1500001.5 +(byte*) utoa::buffer#3 buffer zp[2]:21 20002.0 +(byte*) utoa::buffer#4 buffer zp[2]:21 2000002.0 (byte) utoa::digit -(byte) utoa::digit#1 digit zp[1]:14 202.0 -(byte) utoa::digit#2 digit zp[1]:14 28.857142857142858 +(byte) utoa::digit#1 digit zp[1]:14 2000002.0 +(byte) utoa::digit#2 digit zp[1]:14 285714.5714285714 (word) utoa::digit_value -(word) utoa::digit_value#0 digit_value zp[2]:33 60.599999999999994 +(word) utoa::digit_value#0 digit_value zp[2]:33 600000.6000000001 (word*) utoa::digit_values (byte) utoa::max_digits (const byte) utoa::max_digits#1 max_digits = (byte) 5 (byte) utoa::radix (byte) utoa::started -(byte) utoa::started#2 reg byte x 50.5 -(byte) utoa::started#4 reg byte x 101.0 +(byte) utoa::started#2 reg byte x 500000.5 +(byte) utoa::started#4 reg byte x 1000001.0 (word) utoa::value -(word) utoa::value#0 value zp[2]:19 101.0 -(word) utoa::value#1 value zp[2]:19 2.0 -(word) utoa::value#2 value zp[2]:19 58.00000000000001 -(word) utoa::value#6 value zp[2]:19 151.5 +(word) utoa::value#0 value zp[2]:19 1000001.0 +(word) utoa::value#1 value zp[2]:19 5501.0 +(word) utoa::value#2 value zp[2]:19 572857.857142857 +(word) utoa::value#6 value zp[2]:19 1500001.5 (word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) (label) utoa_append::@1 (label) utoa_append::@2 (label) utoa_append::@3 (label) utoa_append::@return (byte*) utoa_append::buffer -(byte*) utoa_append::buffer#0 buffer zp[2]:21 12.875 +(byte*) utoa_append::buffer#0 buffer zp[2]:21 1375000.25 (byte) utoa_append::digit -(byte) utoa_append::digit#1 reg byte x 1001.0 -(byte) utoa_append::digit#2 reg byte x 1002.0 +(byte) utoa_append::digit#1 reg byte x 1.0000000001E10 +(byte) utoa_append::digit#2 reg byte x 1.00050000015E10 (word) utoa_append::return -(word) utoa_append::return#0 return zp[2]:19 202.0 +(word) utoa_append::return#0 return zp[2]:19 2000002.0 (word) utoa_append::sub -(word) utoa_append::sub#0 sub zp[2]:33 350.5 +(word) utoa_append::sub#0 sub zp[2]:33 3.3335000005E9 (word) utoa_append::value -(word) utoa_append::value#0 value zp[2]:19 34.33333333333333 -(word) utoa_append::value#1 value zp[2]:19 2002.0 -(word) utoa_append::value#2 value zp[2]:19 517.6666666666667 +(word) utoa_append::value#0 value zp[2]:19 3666667.333333333 +(word) utoa_append::value#1 value zp[2]:19 2.0000000002E10 +(word) utoa_append::value#2 value zp[2]:19 5.001833334166666E9 zp[2]:2 [ main::sieve_i#2 main::sieve_i#1 ] zp[2]:4 [ main::i#10 main::i#3 print_word_decimal::w#3 print_word_decimal::w#2 print_word_decimal::w#1 main::sec100s#0 ] diff --git a/src/test/ref/signed-bytes.log b/src/test/ref/signed-bytes.log index e73418c2f..d56a17bf8 100644 --- a/src/test/ref/signed-bytes.log +++ b/src/test/ref/signed-bytes.log @@ -69,8 +69,8 @@ Simplifying constant integer cast $7f Successful SSA optimization PassNCastSimplification Finalized signed number type (signed byte) $7f Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (signed byte) main::i#2 = (signed byte) main::i#3 -Alias (byte) main::j#2 = (byte) main::j#3 +Alias main::i#2 = main::i#3 +Alias main::j#2 = main::j#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((signed byte) main::i#2<(signed byte) $7f) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -135,11 +135,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (signed byte) main::i -(signed byte) main::i#1 11.0 -(signed byte) main::i#2 11.0 +(signed byte) main::i#1 101.0 +(signed byte) main::i#2 101.0 (byte) main::j -(byte) main::j#1 22.0 -(byte) main::j#2 8.25 +(byte) main::j#1 202.0 +(byte) main::j#2 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -222,17 +222,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((signed byte) main::i#2<(signed byte) $7f) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a +Statement [6] if((signed byte) main::i#2<(signed byte) $7f) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [8] *((const byte*) main::screen + (byte) main::j#2) ← (byte)(signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a -Statement [6] if((signed byte) main::i#2<(signed byte) $7f) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::screen + (byte) main::j#2) ← (byte)(signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::j#2) ← (byte)(signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] { } ) always clobbers reg byte a +Statement [6] if((signed byte) main::i#2<(signed byte) $7f) goto main::@2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen + (byte) main::j#2) ← (byte)(signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:2 [ main::i#2 main::j#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[1]:3 [ main::j#2 main::j#1 ] 22: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 277.75: zp[1]:3 [ main::j#2 main::j#1 ] 202: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 388 combination reg byte y [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -334,11 +334,11 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 reg byte x 11.0 -(signed byte) main::i#2 reg byte x 11.0 +(signed byte) main::i#1 reg byte x 101.0 +(signed byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte y 22.0 -(byte) main::j#2 reg byte y 8.25 +(byte) main::j#1 reg byte y 202.0 +(byte) main::j#2 reg byte y 75.75 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/signed-bytes.sym b/src/test/ref/signed-bytes.sym index a24c1438b..0045cc746 100644 --- a/src/test/ref/signed-bytes.sym +++ b/src/test/ref/signed-bytes.sym @@ -6,11 +6,11 @@ (label) main::@2 (label) main::@return (signed byte) main::i -(signed byte) main::i#1 reg byte x 11.0 -(signed byte) main::i#2 reg byte x 11.0 +(signed byte) main::i#1 reg byte x 101.0 +(signed byte) main::i#2 reg byte x 101.0 (byte) main::j -(byte) main::j#1 reg byte y 22.0 -(byte) main::j#2 reg byte y 8.25 +(byte) main::j#1 reg byte y 202.0 +(byte) main::j#2 reg byte y 75.75 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/signed-char-comparison.log b/src/test/ref/signed-char-comparison.log index f7b7224ba..08c8fc5b8 100644 --- a/src/test/ref/signed-char-comparison.log +++ b/src/test/ref/signed-char-comparison.log @@ -93,8 +93,8 @@ Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [13] (bool~) debug::$2 ← (signed byte) debug::dy#1 <= (signed byte) -$78 from [12] (bool~) debug::$1 ← (signed byte) debug::dy#1 > (signed byte) -$78 Successful SSA optimization Pass2UnaryNotSimplification -Alias (signed byte) main::dy#2 = (signed byte) main::dy#3 -Alias (byte) debug::i#0 = (byte~) debug::$0 (byte) debug::i#1 +Alias main::dy#2 = main::dy#3 +Alias debug::i#0 = debug::$0 debug::i#1 Successful SSA optimization Pass2AliasElimination Identical Phi Values (signed byte) debug::dy#1 (signed byte) debug::dy#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -182,12 +182,12 @@ debug::@return: scope:[debug] from debug debug::@1 VARIABLE REGISTER WEIGHTS (void()) debug((signed byte) debug::dy) (signed byte) debug::dy -(signed byte) debug::dy#0 6.5 +(signed byte) debug::dy#0 551.0 (byte) debug::i (void()) main() (signed byte) main::dy -(signed byte) main::dy#1 16.5 -(signed byte) main::dy#2 11.0 +(signed byte) main::dy#1 151.5 +(signed byte) main::dy#2 101.0 Initial phi equivalence classes [ main::dy#2 main::dy#1 ] @@ -288,22 +288,22 @@ debug: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] if((signed byte) debug::dy#0<=(signed byte) -$78) goto debug::@return [ debug::dy#0 ] ( main:2::debug:7 [ main::dy#2 debug::dy#0 ] ) always clobbers reg byte a +Statement [11] if((signed byte) debug::dy#0<=(signed byte) -$78) goto debug::@return [ debug::dy#0 ] ( main:2::debug:7 [ main::dy#2 debug::dy#0 ] { { debug::dy#0 = main::dy#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::dy#2 main::dy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ debug::dy#0 ] -Statement [12] *((const byte*) SCREEN + (byte)(signed byte) debug::dy#0) ← (byte) $a [ ] ( main:2::debug:7 [ main::dy#2 ] ) always clobbers reg byte a -Statement [11] if((signed byte) debug::dy#0<=(signed byte) -$78) goto debug::@return [ debug::dy#0 ] ( main:2::debug:7 [ main::dy#2 debug::dy#0 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte)(signed byte) debug::dy#0) ← (byte) $a [ ] ( main:2::debug:7 [ main::dy#2 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte)(signed byte) debug::dy#0) ← (byte) $a [ ] ( main:2::debug:7 [ main::dy#2 ] { { debug::dy#0 = main::dy#2 } } ) always clobbers reg byte a +Statement [11] if((signed byte) debug::dy#0<=(signed byte) -$78) goto debug::@return [ debug::dy#0 ] ( main:2::debug:7 [ main::dy#2 debug::dy#0 ] { { debug::dy#0 = main::dy#2 } } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte)(signed byte) debug::dy#0) ← (byte) $a [ ] ( main:2::debug:7 [ main::dy#2 ] { { debug::dy#0 = main::dy#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::dy#2 main::dy#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ debug::dy#0 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::dy#2 main::dy#1 ] -Uplift Scope [debug] 6.5: zp[1]:3 [ debug::dy#0 ] +Uplift Scope [debug] 551: zp[1]:3 [ debug::dy#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::dy#2 main::dy#1 ] Uplift Scope [] -Uplifting [main] best 349 combination reg byte x [ main::dy#2 main::dy#1 ] -Uplifting [debug] best 317 combination reg byte x [ debug::dy#0 ] +Uplifting [debug] best 437 combination reg byte x [ debug::dy#0 ] +Uplifting [main] best 317 combination reg byte x [ main::dy#2 main::dy#1 ] Uplifting [] best 317 combination ASSEMBLER BEFORE OPTIMIZATION @@ -427,15 +427,15 @@ FINAL SYMBOL TABLE (label) debug::@1 (label) debug::@return (signed byte) debug::dy -(signed byte) debug::dy#0 reg byte x 6.5 +(signed byte) debug::dy#0 reg byte x 551.0 (byte) debug::i (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (signed byte) main::dy -(signed byte) main::dy#1 reg byte x 16.5 -(signed byte) main::dy#2 reg byte x 11.0 +(signed byte) main::dy#1 reg byte x 151.5 +(signed byte) main::dy#2 reg byte x 101.0 reg byte x [ main::dy#2 main::dy#1 ] reg byte x [ debug::dy#0 ] diff --git a/src/test/ref/signed-char-comparison.sym b/src/test/ref/signed-char-comparison.sym index 994ffb7e7..b17bafef7 100644 --- a/src/test/ref/signed-char-comparison.sym +++ b/src/test/ref/signed-char-comparison.sym @@ -6,15 +6,15 @@ (label) debug::@1 (label) debug::@return (signed byte) debug::dy -(signed byte) debug::dy#0 reg byte x 6.5 +(signed byte) debug::dy#0 reg byte x 551.0 (byte) debug::i (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (signed byte) main::dy -(signed byte) main::dy#1 reg byte x 16.5 -(signed byte) main::dy#2 reg byte x 11.0 +(signed byte) main::dy#1 reg byte x 151.5 +(signed byte) main::dy#2 reg byte x 101.0 reg byte x [ main::dy#2 main::dy#1 ] reg byte x [ debug::dy#0 ] diff --git a/src/test/ref/signed-indexed-subtract.asm b/src/test/ref/signed-indexed-subtract.asm index 8b3887230..bd5fa6c70 100644 --- a/src/test/ref/signed-indexed-subtract.asm +++ b/src/test/ref/signed-indexed-subtract.asm @@ -2,9 +2,10 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_line_cursor = 2 - .label print_char_cursor = 4 + .label print_line_cursor = 3 + .label print_char_cursor = 5 main: { + .label j = 2 ldy #0 __b1: // sub(i, $80) @@ -33,10 +34,11 @@ main: { sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 - ldx #0 + lda #0 + sta.z j __b3: // print_sword(words[j]) - txa + lda.z j asl tay lda words,y @@ -47,8 +49,9 @@ main: { // print_ln() jsr print_ln // for(byte j: 0..8) - inx - cpx #9 + inc.z j + lda #9 + cmp.z j bne __b9 // } rts @@ -130,22 +133,19 @@ print_char: { print_word: { .label w = 7 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -157,10 +157,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log index 5c44f1115..7b56d12c1 100644 --- a/src/test/ref/signed-indexed-subtract.log +++ b/src/test/ref/signed-indexed-subtract.log @@ -679,47 +679,47 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#20 (byte*) print_char_cursor#50 (byte*) print_screen#9 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#23 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#44 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#3 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#27 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#30 (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#31 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#33 (byte*) print_char_cursor#12 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#15 (byte*) print_char_cursor#36 (byte*) print_line_cursor#4 (byte*) print_char_cursor#16 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 -Alias (byte*) print_screen#3 = (byte*) print_screen#6 (byte*) print_screen#7 (byte*) print_screen#5 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#24 (byte*) print_line_cursor#25 (byte*) print_line_cursor#23 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#48 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 (byte*) print_char_cursor#53 (byte*) print_char_cursor#52 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 -Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#15 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#41 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#20 print_char_cursor#50 print_screen#9 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#1 print_line_cursor#11 print_char_cursor#23 print_line_cursor#2 print_char_cursor#2 +Alias print_char_cursor#43 = print_char_cursor#51 print_char_cursor#44 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#24 = print_char_cursor#3 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#25 = print_char_cursor#4 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#26 = print_char_cursor#5 print_char_cursor#27 print_char_cursor#6 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#28 = print_char_cursor#7 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#29 = print_char_cursor#8 print_char_cursor#30 print_char_cursor#9 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#10 = print_char_cursor#31 +Alias print_char_cursor#11 = print_char_cursor#32 print_char_cursor#33 print_char_cursor#12 +Alias print_char_cursor#13 = print_char_cursor#35 print_char_cursor#14 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#15 print_char_cursor#36 print_line_cursor#4 print_char_cursor#16 +Alias main::i#2 = main::i#3 main::i#4 main::i#5 +Alias print_screen#3 = print_screen#6 print_screen#7 print_screen#5 print_screen#4 +Alias print_line_cursor#18 = print_line_cursor#24 print_line_cursor#25 print_line_cursor#23 print_line_cursor#21 +Alias print_char_cursor#48 = print_char_cursor#54 print_char_cursor#55 print_char_cursor#53 print_char_cursor#52 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#17 = print_char_cursor#37 +Alias print_line_cursor#19 = print_line_cursor#22 +Alias main::j#2 = main::j#4 main::j#3 +Alias print_char_cursor#18 = print_char_cursor#38 +Alias print_line_cursor#14 = print_line_cursor#6 print_line_cursor#15 print_line_cursor#7 +Alias print_char_cursor#19 = print_char_cursor#39 print_char_cursor#40 print_char_cursor#20 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#21 = print_char_cursor#41 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1092,63 +1092,63 @@ sub::@return: scope:[sub] from sub VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$8 22.0 +(byte~) main::$8 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.857142857142857 +(byte) main::i#1 151.5 +(byte) main::i#2 72.14285714285714 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#2 5.5 +(byte) main::j#1 101.0 +(byte) main::j#2 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 55001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#3 200002.0 +(byte) print_char::ch#4 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 3.821428571428572 -(byte*) print_char_cursor#34 6.0 -(byte*) print_char_cursor#49 2.5 -(byte*) print_char_cursor#61 22.0 +(byte*) print_char_cursor#13 46428.71428571428 +(byte*) print_char_cursor#34 1101003.0 +(byte*) print_char_cursor#49 350.5 +(byte*) print_char_cursor#61 202.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#19 2.1666666666666665 -(byte*) print_line_cursor#9 204.0 +(byte*) print_line_cursor#1 42886.42857142857 +(byte*) print_line_cursor#19 183.66666666666669 +(byte*) print_line_cursor#9 201003.0 (void()) print_ln() (byte*) print_screen (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 2.8333333333333335 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 517.3333333333334 +(signed word) print_sword::w#4 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 7001.0 (void()) sub((byte) sub::idx , (byte) sub::s) -(byte~) sub::$0 6.0 +(byte~) sub::$0 3003.0 (byte) sub::idx -(byte) sub::idx#0 22.0 -(byte) sub::idx#1 22.0 -(byte) sub::idx#2 22.0 -(byte) sub::idx#3 35.0 +(byte) sub::idx#0 202.0 +(byte) sub::idx#1 202.0 +(byte) sub::idx#2 202.0 +(byte) sub::idx#3 1304.0 (byte) sub::s -(byte) sub::s#3 1.0 +(byte) sub::s#3 500.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -1652,46 +1652,42 @@ sub: { words: .word -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [25] (byte*) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] ) always clobbers reg byte y +Statement [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] { } ) always clobbers reg byte a +Statement [25] (byte*) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] { } ) always clobbers reg byte a +Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] { } ) always clobbers reg byte a +Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] { } ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] { { print_char_cursor#34 = print_char_cursor#49 } } main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] { { print_char_cursor#34 = print_char_cursor#49 } } main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [63] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [65] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a +Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [63] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [65] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [68] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#0 = sub::idx#3 main::i#2 } } main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#1 = sub::idx#3 main::i#2 } } main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#2 = sub::idx#3 main::i#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ sub::s#3 ] -Statement [69] *((const signed word*) words + (byte~) sub::$0) ← *((const signed word*) words + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a -Statement [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [25] (byte*) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] ) always clobbers reg byte y -Statement [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [63] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [65] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a -Statement [69] *((const signed word*) words + (byte~) sub::$0) ← *((const signed word*) words + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a +Statement [69] *((const signed word*) words + (byte~) sub::$0) ← *((const signed word*) words + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] { { sub::idx#0 = sub::idx#3 main::i#2 } } main:2::sub:9 [ main::i#2 ] { { sub::idx#1 = sub::idx#3 main::i#2 } } main:2::sub:11 [ main::i#2 ] { { sub::idx#2 = sub::idx#3 main::i#2 } } ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] { } ) always clobbers reg byte a +Statement [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] { } ) always clobbers reg byte a +Statement [25] (byte*) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] { } ) always clobbers reg byte a +Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] { } ) always clobbers reg byte a +Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] { } ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] { { print_char_cursor#34 = print_char_cursor#49 } } main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] { { print_char_cursor#34 = print_char_cursor#49 } } main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte y +Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#34 } } ) always clobbers reg byte a +Statement [63] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [65] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:15::memset:59 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [68] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#0 = sub::idx#3 main::i#2 } } main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#1 = sub::idx#3 main::i#2 } } main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] { { sub::idx#2 = sub::idx#3 main::i#2 } } ) always clobbers reg byte a +Statement [69] *((const signed word*) words + (byte~) sub::$0) ← *((const signed word*) words + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] { { sub::idx#0 = sub::idx#3 main::i#2 } } main:2::sub:9 [ main::i#2 ] { { sub::idx#1 = sub::idx#3 main::i#2 } } main:2::sub:11 [ main::i#2 ] { { sub::idx#2 = sub::idx#3 main::i#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp[2]:4 , @@ -1709,36 +1705,36 @@ Potential registers zp[1]:20 [ print_byte::$2 ] : zp[1]:20 , reg byte a , reg by Potential registers zp[1]:21 [ sub::$0 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 252.6: zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 34.32: zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] -Uplift Scope [sub] 101: zp[1]:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 6: zp[1]:21 [ sub::$0 ] 1: zp[1]:15 [ sub::s#3 ] -Uplift Scope [main] 24.36: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:16 [ main::$8 ] 16.5: zp[1]:3 [ main::j#2 main::j#1 ] -Uplift Scope [memset] 36.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_byte] 10: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:19 [ print_byte::$0 ] 4: zp[1]:20 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sword] 10.83: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplift Scope [print_word] 2: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [print_char] 1,600,007: zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [] 1,147,984.21: zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] 244,073.1: zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +Uplift Scope [print_byte] 200,002: zp[1]:19 [ print_byte::$0 ] 200,002: zp[1]:20 [ print_byte::$2 ] 95,005: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 7,001: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [sub] 3,003: zp[1]:21 [ sub::$0 ] 1,910: zp[1]:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 500.5: zp[1]:15 [ sub::s#3 ] +Uplift Scope [print_sword] 4,521.33: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [main] 223.64: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:16 [ main::$8 ] 151.5: zp[1]:3 [ main::j#2 main::j#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 6585 combination zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] -Uplifting [sub] best 6482 combination reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::$0 ] reg byte x [ sub::s#3 ] -Uplifting [main] best 6222 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] reg byte x [ main::j#2 main::j#1 ] -Uplifting [memset] best 6222 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_byte] best 6214 combination zp[1]:11 [ 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 6199 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sword] best 6199 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [print_word] best 6199 combination zp[2]:17 [ print_word::w#0 ] -Uplifting [RADIX] best 6199 combination -Uplifting [print_ln] best 6199 combination -Uplifting [print_cls] best 6199 combination -Attempting to uplift remaining variables inzp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6199 combination zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_char] best 6570 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [] best 6570 combination zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +Uplifting [print_byte] best 6552 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [memset] best 6552 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 6552 combination zp[2]:17 [ print_word::w#0 ] +Uplifting [sub] best 6449 combination reg byte a [ sub::$0 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte x [ sub::s#3 ] +Uplifting [print_sword] best 6449 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [main] best 6289 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] zp[1]:3 [ main::j#2 main::j#1 ] +Uplifting [RADIX] best 6289 combination +Uplifting [print_ln] best 6289 combination +Uplifting [print_cls] best 6289 combination +Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] +Uplifting [main] best 6289 combination zp[1]:3 [ main::j#2 main::j#1 ] Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp[2]:17 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:12 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] ] -Allocated (was zp[2]:4) zp[2]:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated (was zp[2]:9) zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] -Allocated (was zp[1]:11) zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[1]:3) zp[1]:2 [ main::j#2 main::j#1 ] +Allocated (was zp[2]:4) zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +Allocated (was zp[2]:9) zp[2]:5 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] Allocated (was zp[2]:12) zp[2]:7 [ memset::dst#2 memset::dst#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] ASSEMBLER BEFORE OPTIMIZATION @@ -1749,8 +1745,8 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 2 - .label print_char_cursor = 4 + .label print_line_cursor = 3 + .label print_char_cursor = 5 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -1769,6 +1765,7 @@ __bend_from___b1: __bend: // main main: { + .label j = 2 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 @@ -1842,13 +1839,14 @@ main: { sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 - // [16] phi (byte) main::j#2 = (byte) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 - ldx #0 + // [16] phi (byte) main::j#2 = (byte) 0 [phi:main::@2->main::@3#2] -- vbuz1=vbuc1 + lda #0 + sta.z j jmp __b3 // main::@3 __b3: - // [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z j asl // [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) -- vwsz1=pwsc1_derefidx_vbuaa tay @@ -1870,10 +1868,11 @@ main: { jmp __b8 // main::@8 __b8: - // [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx - inx - // [23] if((byte) main::j#1!=(byte) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 - cpx #9 + // [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [23] if((byte) main::j#1!=(byte) 9) goto main::@9 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp.z j bne __b9 jmp __breturn // main::@return @@ -2010,9 +2009,8 @@ print_char: { // print_word(word zp(7) w) print_word: { .label w = 7 - // [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [46] call print_byte // [50] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -2021,9 +2019,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + ldx.z w // [48] call print_byte // [50] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2037,11 +2034,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(6) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 6 - // [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -2059,12 +2055,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [55] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [55] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [56] call print_char // [41] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -2264,7 +2259,7 @@ FINAL SYMBOL TABLE (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (void()) main() -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -2276,11 +2271,11 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 7.857142857142857 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 72.14285714285714 (byte) main::j -(byte) main::j#1 reg byte x 11.0 -(byte) main::j#2 reg byte x 5.5 +(byte) main::j#1 j zp[1]:2 101.0 +(byte) main::j#2 j zp[1]:2 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -2288,8 +2283,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2298,32 +2293,32 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:6 4.0 -(byte) print_byte::b#1 b zp[1]:6 4.0 -(byte) print_byte::b#2 b zp[1]:6 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:4 3.821428571428572 -(byte*) print_char_cursor#34 print_char_cursor zp[2]:4 6.0 -(byte*) print_char_cursor#49 print_char_cursor zp[2]:4 2.5 -(byte*) print_char_cursor#61 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:5 46428.71428571428 +(byte*) print_char_cursor#34 print_char_cursor zp[2]:5 1101003.0 +(byte*) print_char_cursor#49 print_char_cursor zp[2]:5 350.5 +(byte*) print_char_cursor#61 print_char_cursor zp[2]:5 202.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 2.1666666666666665 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 42886.42857142857 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:3 183.66666666666669 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:3 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2335,43 +2330,43 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:7 4.0 -(signed word) print_sword::w#1 w zp[2]:7 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:7 4.0 +(signed word) print_sword::w#0 w zp[2]:7 2002.0 +(signed word) print_sword::w#1 w zp[2]:7 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:7 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 2.0 +(word) print_word::w#0 w zp[2]:7 7001.0 (void()) sub((byte) sub::idx , (byte) sub::s) -(byte~) sub::$0 reg byte a 6.0 +(byte~) sub::$0 reg byte a 3003.0 (label) sub::@return (byte) sub::idx -(byte) sub::idx#0 reg byte a 22.0 -(byte) sub::idx#1 reg byte a 22.0 -(byte) sub::idx#2 reg byte a 22.0 -(byte) sub::idx#3 reg byte a 35.0 +(byte) sub::idx#0 reg byte a 202.0 +(byte) sub::idx#1 reg byte a 202.0 +(byte) sub::idx#2 reg byte a 202.0 +(byte) sub::idx#3 reg byte a 1304.0 (byte) sub::s -(byte) sub::s#3 reg byte x 1.0 +(byte) sub::s#3 reg byte x 500.5 (const signed word*) words[] = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 } reg byte y [ main::i#2 main::i#1 ] -reg byte x [ main::j#2 main::j#1 ] -zp[2]:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +zp[1]:2 [ main::j#2 main::j#1 ] +zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] -zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:5 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:7 [ memset::dst#2 memset::dst#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte x [ sub::s#3 ] reg byte a [ main::$8 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] reg byte a [ sub::$0 ] FINAL ASSEMBLER -Score: 5314 +Score: 5404 // File Comments // Tests that signed indexed subtract works as intended @@ -2380,8 +2375,8 @@ Score: 5314 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 2 - .label print_char_cursor = 4 + .label print_line_cursor = 3 + .label print_char_cursor = 5 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -2391,6 +2386,7 @@ Score: 5314 // @end // main main: { + .label j = 2 // [5] phi from main to main::@1 [phi:main->main::@1] // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 @@ -2451,13 +2447,14 @@ main: { sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 - // [16] phi (byte) main::j#2 = (byte) 0 [phi:main::@2->main::@3#2] -- vbuxx=vbuc1 - ldx #0 + // [16] phi (byte) main::j#2 = (byte) 0 [phi:main::@2->main::@3#2] -- vbuz1=vbuc1 + lda #0 + sta.z j // main::@3 __b3: // print_sword(words[j]) - // [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z j asl // [18] (signed word) print_sword::w#1 ← *((const signed word*) words + (byte~) main::$8) -- vwsz1=pwsc1_derefidx_vbuaa tay @@ -2475,10 +2472,11 @@ main: { jsr print_ln // main::@8 // for(byte j: 0..8) - // [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx - inx - // [23] if((byte) main::j#1!=(byte) 9) goto main::@9 -- vbuxx_neq_vbuc1_then_la1 - cpx #9 + // [22] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [23] if((byte) main::j#1!=(byte) 9) goto main::@9 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp.z j bne __b9 // main::@return // } @@ -2605,18 +2603,16 @@ print_char: { print_word: { .label w = 7 // print_byte(>w) - // [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [46] call print_byte // [50] phi from print_word to print_byte [phi:print_word->print_byte] // [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] // [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy @@ -2628,12 +2624,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(6) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 6 // b>>4 - // [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -2650,13 +2645,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [55] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [55] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [56] call print_char // [41] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/signed-indexed-subtract.sym b/src/test/ref/signed-indexed-subtract.sym index e05c5cbd7..99f223175 100644 --- a/src/test/ref/signed-indexed-subtract.sym +++ b/src/test/ref/signed-indexed-subtract.sym @@ -6,7 +6,7 @@ (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (void()) main() -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -18,11 +18,11 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 7.857142857142857 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 72.14285714285714 (byte) main::j -(byte) main::j#1 reg byte x 11.0 -(byte) main::j#2 reg byte x 5.5 +(byte) main::j#1 j zp[1]:2 101.0 +(byte) main::j#2 j zp[1]:2 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -30,8 +30,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:7 22.0 -(byte*) memset::dst#2 dst zp[2]:7 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:7 20002.0 +(byte*) memset::dst#2 dst zp[2]:7 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -40,32 +40,32 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:6 4.0 -(byte) print_byte::b#1 b zp[1]:6 4.0 -(byte) print_byte::b#2 b zp[1]:6 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:4 3.821428571428572 -(byte*) print_char_cursor#34 print_char_cursor zp[2]:4 6.0 -(byte*) print_char_cursor#49 print_char_cursor zp[2]:4 2.5 -(byte*) print_char_cursor#61 print_char_cursor zp[2]:4 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:5 46428.71428571428 +(byte*) print_char_cursor#34 print_char_cursor zp[2]:5 1101003.0 +(byte*) print_char_cursor#49 print_char_cursor zp[2]:5 350.5 +(byte*) print_char_cursor#61 print_char_cursor zp[2]:5 202.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 2.1666666666666665 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:2 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 42886.42857142857 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:3 183.66666666666669 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:3 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -77,36 +77,36 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:7 4.0 -(signed word) print_sword::w#1 w zp[2]:7 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:7 4.0 +(signed word) print_sword::w#0 w zp[2]:7 2002.0 +(signed word) print_sword::w#1 w zp[2]:7 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:7 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 2.0 +(word) print_word::w#0 w zp[2]:7 7001.0 (void()) sub((byte) sub::idx , (byte) sub::s) -(byte~) sub::$0 reg byte a 6.0 +(byte~) sub::$0 reg byte a 3003.0 (label) sub::@return (byte) sub::idx -(byte) sub::idx#0 reg byte a 22.0 -(byte) sub::idx#1 reg byte a 22.0 -(byte) sub::idx#2 reg byte a 22.0 -(byte) sub::idx#3 reg byte a 35.0 +(byte) sub::idx#0 reg byte a 202.0 +(byte) sub::idx#1 reg byte a 202.0 +(byte) sub::idx#2 reg byte a 202.0 +(byte) sub::idx#3 reg byte a 1304.0 (byte) sub::s -(byte) sub::s#3 reg byte x 1.0 +(byte) sub::s#3 reg byte x 500.5 (const signed word*) words[] = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 } reg byte y [ main::i#2 main::i#1 ] -reg byte x [ main::j#2 main::j#1 ] -zp[2]:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +zp[1]:2 [ main::j#2 main::j#1 ] +zp[2]:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] -zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:5 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:7 [ memset::dst#2 memset::dst#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte x [ sub::s#3 ] reg byte a [ main::$8 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] reg byte a [ sub::$0 ] diff --git a/src/test/ref/signed-word-minus-byte-2.log b/src/test/ref/signed-word-minus-byte-2.log index 3e04f0ddb..15f2b2ae9 100644 --- a/src/test/ref/signed-word-minus-byte-2.log +++ b/src/test/ref/signed-word-minus-byte-2.log @@ -63,7 +63,7 @@ Successful SSA optimization PassNCastSimplification Finalized signed number type (signed byte) $29 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to signed word in (snumber~) main::$0 ← (signed word) main::w1#2 - (signed byte) $29 -Alias (signed word) main::w1#1 = (signed word~) main::$0 +Alias main::w1#1 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [8] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -138,13 +138,13 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$2 22.0 +(byte~) main::$2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 (signed word) main::w1 -(signed word) main::w1#1 6.6000000000000005 -(signed word) main::w1#2 22.0 +(signed word) main::w1#1 60.599999999999994 +(signed word) main::w1#2 202.0 Initial phi equivalence classes [ main::w1#2 main::w1#1 ] @@ -240,19 +240,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed word) main::w1#1 ← (signed word) main::w1#2 - (signed byte) $29 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::w1#1 ← (signed word) main::w1#2 - (signed byte) $29 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w1#1 main::$2 ] ( main:2 [ main::i#2 main::w1#1 main::$2 ] ) always clobbers reg byte a -Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::w1#1 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] ) always clobbers reg byte a -Statement [6] (signed word) main::w1#1 ← (signed word) main::w1#2 - (signed byte) $29 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w1#1 main::$2 ] ( main:2 [ main::i#2 main::w1#1 main::$2 ] ) always clobbers reg byte a -Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::w1#1 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w1#1 main::$2 ] ( main:2 [ main::i#2 main::w1#1 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::w1#1 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] { } ) always clobbers reg byte a +Statement [6] (signed word) main::w1#1 ← (signed word) main::w1#2 - (signed byte) $29 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::w1#1 main::$2 ] ( main:2 [ main::i#2 main::w1#1 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((const signed word*) main::screen + (byte~) main::$2) ← (signed word) main::w1#1 [ main::i#2 main::w1#1 ] ( main:2 [ main::i#2 main::w1#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w1#2 main::w1#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 28.6: zp[2]:2 [ main::w1#2 main::w1#1 ] 24.75: zp[1]:4 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$2 ] +Uplift Scope [main] 262.6: zp[2]:2 [ main::w1#2 main::w1#1 ] 227.25: zp[1]:4 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$2 ] Uplift Scope [] Uplifting [main] best 693 combination zp[2]:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] @@ -363,16 +363,16 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (const signed word*) main::screen = (signed word*) 1024 (signed word) main::w1 -(signed word) main::w1#1 w1 zp[2]:2 6.6000000000000005 -(signed word) main::w1#2 w1 zp[2]:2 22.0 +(signed word) main::w1#1 w1 zp[2]:2 60.599999999999994 +(signed word) main::w1#2 w1 zp[2]:2 202.0 zp[2]:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/signed-word-minus-byte-2.sym b/src/test/ref/signed-word-minus-byte-2.sym index b45206c6a..0d368a180 100644 --- a/src/test/ref/signed-word-minus-byte-2.sym +++ b/src/test/ref/signed-word-minus-byte-2.sym @@ -2,16 +2,16 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (const signed word*) main::screen = (signed word*) 1024 (signed word) main::w1 -(signed word) main::w1#1 w1 zp[2]:2 6.6000000000000005 -(signed word) main::w1#2 w1 zp[2]:2 22.0 +(signed word) main::w1#1 w1 zp[2]:2 60.599999999999994 +(signed word) main::w1#2 w1 zp[2]:2 202.0 zp[2]:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/signed-words.log b/src/test/ref/signed-words.log index 99adf78f7..2e1be98fa 100644 --- a/src/test/ref/signed-words.log +++ b/src/test/ref/signed-words.log @@ -499,49 +499,49 @@ Inferred type updated to signed word in (snumber~) anim::$13 ← (signed word) y Inversing boolean not [50] (bool~) anim::$1 ← (signed word) ypos#9 >= (signed byte) 0 from [49] (bool~) anim::$0 ← (signed word) ypos#9 < (signed byte) 0 Inversing boolean not [79] (bool~) anim::$15 ← (signed word) yvel_init#3 >= (signed word) -$c8 from [78] (bool~) anim::$14 ← (signed word) yvel_init#3 < (signed word) -$c8 Successful SSA optimization Pass2UnaryNotSimplification -Alias (signed word) yvel#16 = (signed word) yvel#17 -Alias (signed word) xpos#18 = (signed word) xpos#19 -Alias (signed word) ypos#18 = (signed word) ypos#19 -Alias (signed word) xvel#18 = (signed word) xvel#19 -Alias (signed word) yvel_init#18 = (signed word) yvel_init#19 -Alias (signed word) yvel#12 = (signed word) yvel#15 -Alias (signed word) xpos#12 = (signed word) xpos#16 -Alias (signed word) ypos#13 = (signed word) ypos#16 -Alias (signed word) xvel#12 = (signed word) xvel#16 -Alias (signed word) yvel_init#13 = (signed word) yvel_init#17 -Alias (signed word) yvel#0 = (signed word) yvel#7 (signed word) yvel#8 (signed word) yvel#1 -Alias (signed word) xpos#0 = (signed word) xpos#7 (signed word) xpos#8 (signed word) xpos#1 -Alias (signed word) ypos#0 = (signed word) ypos#7 (signed word) ypos#8 (signed word) ypos#1 -Alias (signed word) xvel#0 = (signed word) xvel#6 (signed word) xvel#7 (signed word) xvel#1 -Alias (signed word) yvel_init#0 = (signed word) yvel_init#7 (signed word) yvel_init#8 (signed word) yvel_init#1 -Alias (byte*) init::sc#2 = (byte*) init::sc#3 -Alias (signed word) yvel#14 = (signed word) yvel#2 (signed word) yvel_init#2 (signed word) yvel_init#16 -Alias (signed word) yvel#10 = (signed word) yvel#3 (signed word~) anim::$2 (signed word) yvel#5 -Alias (signed word) xpos#10 = (signed word) xpos#3 (signed word~) anim::$3 (signed word) xpos#5 -Alias (signed word) ypos#11 = (signed word) ypos#3 (signed word~) anim::$4 (signed word) ypos#5 -Alias (signed word) anim::sprite_x#0 = (signed word~) anim::$6 -Alias (signed word) anim::sprite_y#0 = (signed word~) anim::$8 -Alias (signed word) xvel#13 = (signed word) xvel#9 -Alias (signed word) yvel_init#14 = (signed word) yvel_init#9 -Alias (signed word) xvel#17 = (signed word) xvel#3 (signed word~) anim::$12 -Alias (signed word) yvel_init#3 = (signed word~) anim::$13 -Alias (signed word) yvel#4 = (signed word) yvel_init#10 -Alias (signed word) xpos#17 = (signed word) xpos#4 -Alias (signed word) ypos#17 = (signed word) ypos#4 -Alias (signed word) xvel#10 = (signed word) xvel#8 (signed word) xvel#4 -Alias (signed word) yvel_init#11 = (signed word) yvel_init#15 (signed word) yvel_init#5 -Alias (signed word) xpos#15 = (signed word) xpos#2 -Alias (signed word) ypos#15 = (signed word) ypos#2 -Alias (signed word) xvel#15 = (signed word) xvel#2 -Alias (signed word) yvel#11 = (signed word) yvel#6 -Alias (signed word) xpos#11 = (signed word) xpos#6 -Alias (signed word) ypos#12 = (signed word) ypos#6 -Alias (signed word) xvel#11 = (signed word) xvel#5 -Alias (signed word) yvel_init#12 = (signed word) yvel_init#6 +Alias yvel#16 = yvel#17 +Alias xpos#18 = xpos#19 +Alias ypos#18 = ypos#19 +Alias xvel#18 = xvel#19 +Alias yvel_init#18 = yvel_init#19 +Alias yvel#12 = yvel#15 +Alias xpos#12 = xpos#16 +Alias ypos#13 = ypos#16 +Alias xvel#12 = xvel#16 +Alias yvel_init#13 = yvel_init#17 +Alias yvel#0 = yvel#7 yvel#8 yvel#1 +Alias xpos#0 = xpos#7 xpos#8 xpos#1 +Alias ypos#0 = ypos#7 ypos#8 ypos#1 +Alias xvel#0 = xvel#6 xvel#7 xvel#1 +Alias yvel_init#0 = yvel_init#7 yvel_init#8 yvel_init#1 +Alias init::sc#2 = init::sc#3 +Alias yvel#14 = yvel#2 yvel_init#2 yvel_init#16 +Alias yvel#10 = yvel#3 anim::$2 yvel#5 +Alias xpos#10 = xpos#3 anim::$3 xpos#5 +Alias ypos#11 = ypos#3 anim::$4 ypos#5 +Alias anim::sprite_x#0 = anim::$6 +Alias anim::sprite_y#0 = anim::$8 +Alias xvel#13 = xvel#9 +Alias yvel_init#14 = yvel_init#9 +Alias xvel#17 = xvel#3 anim::$12 +Alias yvel_init#3 = anim::$13 +Alias yvel#4 = yvel_init#10 +Alias xpos#17 = xpos#4 +Alias ypos#17 = ypos#4 +Alias xvel#10 = xvel#8 xvel#4 +Alias yvel_init#11 = yvel_init#15 yvel_init#5 +Alias xpos#15 = xpos#2 +Alias ypos#15 = ypos#2 +Alias xvel#15 = xvel#2 +Alias yvel#11 = yvel#6 +Alias xpos#11 = xpos#6 +Alias ypos#12 = ypos#6 +Alias xvel#11 = xvel#5 +Alias yvel_init#12 = yvel_init#6 Successful SSA optimization Pass2AliasElimination -Alias (signed word) xpos#14 = (signed word) xpos#17 -Alias (signed word) xvel#14 = (signed word) xvel#17 -Alias (signed word) ypos#14 = (signed word) ypos#17 +Alias xpos#14 = xpos#17 +Alias xvel#14 = xvel#17 +Alias ypos#14 = ypos#17 Successful SSA optimization Pass2AliasElimination Identical Phi Values (signed word) yvel#16 (signed word) yvel#14 Identical Phi Values (signed word) xpos#18 (signed word) xpos#15 @@ -781,45 +781,45 @@ init::@2: scope:[init] from init::@1 VARIABLE REGISTER WEIGHTS (void()) anim() -(byte~) anim::$10 4.0 -(byte~) anim::$11 4.0 -(signed word~) anim::$5 4.0 -(signed word~) anim::$7 4.0 -(byte~) anim::$9 4.0 +(byte~) anim::$10 2002.0 +(byte~) anim::$11 2002.0 +(signed word~) anim::$5 2002.0 +(signed word~) anim::$7 2002.0 +(byte~) anim::$9 2002.0 (signed word) anim::sprite_x -(signed word) anim::sprite_x#0 0.5714285714285714 +(signed word) anim::sprite_x#0 286.0 (signed word) anim::sprite_y -(signed word) anim::sprite_y#0 0.6666666666666666 +(signed word) anim::sprite_y#0 333.6666666666667 (void()) init() (byte) init::i -(byte) init::i#1 16.5 -(byte) init::i#2 16.5 +(byte) init::i#1 1501.5 +(byte) init::i#2 1501.5 (byte*) init::sc -(byte*) init::sc#1 22.0 -(byte*) init::sc#2 14.666666666666666 +(byte*) init::sc#1 2002.0 +(byte*) init::sc#2 1334.6666666666667 (void()) main() (signed word) xpos -(signed word) xpos#10 1.0714285714285714 -(signed word) xpos#12 53.75 -(signed word) xpos#9 2.0 +(signed word) xpos#10 150.21428571428572 +(signed word) xpos#12 776.0 +(signed word) xpos#9 1001.0 (signed word) xvel -(signed word) xvel#10 1.0625 -(signed word) xvel#12 54.25 -(signed word) xvel#14 0.6666666666666666 +(signed word) xvel#10 194.0 +(signed word) xvel#12 1026.25 +(signed word) xvel#14 333.6666666666667 (signed word) ypos -(signed word) ypos#10 1.3333333333333333 -(signed word) ypos#11 1.1538461538461537 -(signed word) ypos#13 54.25 +(signed word) ypos#10 667.3333333333334 +(signed word) ypos#11 161.76923076923077 +(signed word) ypos#13 1026.25 (signed word) yvel -(signed word) yvel#10 0.9999999999999999 -(signed word) yvel#12 53.75 -(signed word) yvel#21 4.0 -(signed word) yvel#4 3.0 -(signed word) yvel#9 6.0 +(signed word) yvel#10 140.2 +(signed word) yvel#12 776.0 +(signed word) yvel#21 2002.0 +(signed word) yvel#4 1501.5 +(signed word) yvel#9 3003.0 (signed word) yvel_init -(signed word) yvel_init#11 0.9375 -(signed word) yvel_init#13 43.39999999999999 -(signed word) yvel_init#3 2.0 +(signed word) yvel_init#11 131.4375 +(signed word) yvel_init#13 821.0 +(signed word) yvel_init#3 1001.0 Initial phi equivalence classes [ xvel#12 xvel#10 xvel#14 ] @@ -1244,59 +1244,57 @@ init: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) always clobbers reg byte a -Statement [10] if((signed word) ypos#13>=(signed byte) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) always clobbers reg byte a -Statement [11] (signed word) xvel#14 ← - (signed word) xvel#12 [ yvel_init#13 xvel#14 ] ( main:2::anim:9 [ yvel_init#13 xvel#14 ] ) always clobbers reg byte a -Statement [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (signed byte) $a [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] ) always clobbers reg byte a -Statement [13] if((signed word) yvel_init#3>=(signed word) -$c8) goto anim::@4 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] ) always clobbers reg byte a -Statement [16] (signed word) yvel#21 ← (signed word) yvel#4 [ xvel#14 yvel#4 yvel#21 ] ( main:2::anim:9 [ xvel#14 yvel#4 yvel#21 ] ) always clobbers reg byte a -Statement [18] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ) always clobbers reg byte a -Statement [19] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) always clobbers reg byte a -Statement [20] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) always clobbers reg byte a -Statement [21] (signed word~) anim::$5 ← (signed word) xpos#10 >> (signed byte) 7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ) always clobbers reg byte a -Statement [22] (signed word) anim::sprite_x#0 ← (signed word~) anim::$5 + (signed word) $a0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ) always clobbers reg byte a -Statement [23] (signed word~) anim::$7 ← (signed word) ypos#11 >> (signed byte) 5 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ) always clobbers reg byte a -Statement [24] (signed word) anim::sprite_y#0 ← (signed word) $e6 - (signed word~) anim::$7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ) always clobbers reg byte a -Statement [25] (byte~) anim::$9 ← (byte)(signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ) always clobbers reg byte a -Statement [27] (byte~) anim::$10 ← (byte)(signed word) anim::sprite_y#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ) always clobbers reg byte a -Statement [29] (byte~) anim::$11 ← > (signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$11 ] ) always clobbers reg byte a -Statement [32] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [37] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [38] *((const byte*) SPRITES_PTR) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [40] if((byte*) init::sc#2!=(const byte*) SCREEN+(word) $3e8) goto init::@2 [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) always clobbers reg byte a -Statement [42] *((const byte*) SPRITE + (byte) init::i#2) ← (byte) $ff [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] { } ) always clobbers reg byte a +Statement [10] if((signed word) ypos#13>=(signed byte) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] { } ) always clobbers reg byte a +Statement [11] (signed word) xvel#14 ← - (signed word) xvel#12 [ yvel_init#13 xvel#14 ] ( main:2::anim:9 [ yvel_init#13 xvel#14 ] { } ) always clobbers reg byte a +Statement [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (signed byte) $a [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] { } ) always clobbers reg byte a +Statement [13] if((signed word) yvel_init#3>=(signed word) -$c8) goto anim::@4 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] { } ) always clobbers reg byte a +Statement [16] (signed word) yvel#21 ← (signed word) yvel#4 [ xvel#14 yvel#4 yvel#21 ] ( main:2::anim:9 [ xvel#14 yvel#4 yvel#21 ] { } ) always clobbers reg byte a +Statement [18] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] { } ) always clobbers reg byte a +Statement [19] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] { } ) always clobbers reg byte a +Statement [20] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] { } ) always clobbers reg byte a +Statement [21] (signed word~) anim::$5 ← (signed word) xpos#10 >> (signed byte) 7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] { } ) always clobbers reg byte a +Statement [22] (signed word) anim::sprite_x#0 ← (signed word~) anim::$5 + (signed word) $a0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] { } ) always clobbers reg byte a +Statement [23] (signed word~) anim::$7 ← (signed word) ypos#11 >> (signed byte) 5 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] { } ) always clobbers reg byte a +Statement [24] (signed word) anim::sprite_y#0 ← (signed word) $e6 - (signed word~) anim::$7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] { } ) always clobbers reg byte a +Statement [25] (byte~) anim::$9 ← (byte)(signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] { } ) always clobbers reg byte a +Statement [27] (byte~) anim::$10 ← (byte)(signed word) anim::sprite_y#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [37] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) SPRITES_PTR) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [40] if((byte*) init::sc#2!=(const byte*) SCREEN+(word) $3e8) goto init::@2 [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) SPRITE + (byte) init::i#2) ← (byte) $ff [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ init::i#2 init::i#1 ] -Statement [46] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) always clobbers reg byte a -Statement [10] if((signed word) ypos#13>=(signed byte) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) always clobbers reg byte a -Statement [11] (signed word) xvel#14 ← - (signed word) xvel#12 [ yvel_init#13 xvel#14 ] ( main:2::anim:9 [ yvel_init#13 xvel#14 ] ) always clobbers reg byte a -Statement [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (signed byte) $a [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] ) always clobbers reg byte a -Statement [13] if((signed word) yvel_init#3>=(signed word) -$c8) goto anim::@4 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] ) always clobbers reg byte a -Statement [16] (signed word) yvel#21 ← (signed word) yvel#4 [ xvel#14 yvel#4 yvel#21 ] ( main:2::anim:9 [ xvel#14 yvel#4 yvel#21 ] ) always clobbers reg byte a -Statement [18] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ) always clobbers reg byte a -Statement [19] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) always clobbers reg byte a -Statement [20] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) always clobbers reg byte a -Statement [21] (signed word~) anim::$5 ← (signed word) xpos#10 >> (signed byte) 7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ) always clobbers reg byte a -Statement [22] (signed word) anim::sprite_x#0 ← (signed word~) anim::$5 + (signed word) $a0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ) always clobbers reg byte a -Statement [23] (signed word~) anim::$7 ← (signed word) ypos#11 >> (signed byte) 5 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ) always clobbers reg byte a -Statement [24] (signed word) anim::sprite_y#0 ← (signed word) $e6 - (signed word~) anim::$7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ) always clobbers reg byte a -Statement [25] (byte~) anim::$9 ← (byte)(signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ) always clobbers reg byte a -Statement [27] (byte~) anim::$10 ← (byte)(signed word) anim::sprite_y#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ) always clobbers reg byte a -Statement [29] (byte~) anim::$11 ← > (signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$11 ] ) always clobbers reg byte a -Statement [32] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [37] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [38] *((const byte*) SPRITES_PTR) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2::init:5 [ ] ) always clobbers reg byte a -Statement [40] if((byte*) init::sc#2!=(const byte*) SCREEN+(word) $3e8) goto init::@2 [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) always clobbers reg byte a -Statement [42] *((const byte*) SPRITE + (byte) init::i#2) ← (byte) $ff [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [46] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [46] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] { } ) always clobbers reg byte a +Statement [10] if((signed word) ypos#13>=(signed byte) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] { } ) always clobbers reg byte a +Statement [11] (signed word) xvel#14 ← - (signed word) xvel#12 [ yvel_init#13 xvel#14 ] ( main:2::anim:9 [ yvel_init#13 xvel#14 ] { } ) always clobbers reg byte a +Statement [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (signed byte) $a [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] { } ) always clobbers reg byte a +Statement [13] if((signed word) yvel_init#3>=(signed word) -$c8) goto anim::@4 [ xvel#14 yvel_init#3 ] ( main:2::anim:9 [ xvel#14 yvel_init#3 ] { } ) always clobbers reg byte a +Statement [16] (signed word) yvel#21 ← (signed word) yvel#4 [ xvel#14 yvel#4 yvel#21 ] ( main:2::anim:9 [ xvel#14 yvel#4 yvel#21 ] { } ) always clobbers reg byte a +Statement [18] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] { } ) always clobbers reg byte a +Statement [19] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] { } ) always clobbers reg byte a +Statement [20] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] { } ) always clobbers reg byte a +Statement [21] (signed word~) anim::$5 ← (signed word) xpos#10 >> (signed byte) 7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::$5 ] { } ) always clobbers reg byte a +Statement [22] (signed word) anim::sprite_x#0 ← (signed word~) anim::$5 + (signed word) $a0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] { } ) always clobbers reg byte a +Statement [23] (signed word~) anim::$7 ← (signed word) ypos#11 >> (signed byte) 5 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$7 ] { } ) always clobbers reg byte a +Statement [24] (signed word) anim::sprite_y#0 ← (signed word) $e6 - (signed word~) anim::$7 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 ] { } ) always clobbers reg byte a +Statement [25] (byte~) anim::$9 ← (byte)(signed word) anim::sprite_x#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::sprite_y#0 anim::$9 ] { } ) always clobbers reg byte a +Statement [27] (byte~) anim::$10 ← (byte)(signed word) anim::sprite_y#0 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 anim::$10 ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [37] *((const byte*) SPRITES_COLS) ← (const byte) WHITE [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) SPRITES_PTR) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2::init:5 [ ] { } ) always clobbers reg byte a +Statement [40] if((byte*) init::sc#2!=(const byte*) SCREEN+(word) $3e8) goto init::@2 [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) SPRITE + (byte) init::i#2) ← (byte) $ff [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] { } ) always clobbers reg byte a +Statement [46] *((byte*) init::sc#2) ← (byte) ' ' [ init::sc#2 ] ( main:2::init:5 [ init::sc#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] : zp[2]:2 , Potential registers zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] : zp[2]:4 , Potential registers zp[2]:6 [ yvel#9 yvel#12 yvel#10 yvel#21 ] : zp[2]:6 , @@ -1313,14 +1311,14 @@ Potential registers zp[1]:24 [ anim::$10 ] : zp[1]:24 , reg byte a , reg byte x Potential registers zp[1]:25 [ anim::$11 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 64.75: zp[2]:6 [ yvel#9 yvel#12 yvel#10 yvel#21 ] 56.82: zp[2]:8 [ xpos#9 xpos#12 xpos#10 ] 56.74: zp[2]:10 [ ypos#10 ypos#13 ypos#11 ] 55.98: zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] 49.34: zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] -Uplift Scope [init] 36.67: zp[2]:12 [ init::sc#2 init::sc#1 ] 33: zp[1]:14 [ init::i#2 init::i#1 ] -Uplift Scope [anim] 4: zp[2]:15 [ anim::$5 ] 4: zp[2]:19 [ anim::$7 ] 4: zp[1]:23 [ anim::$9 ] 4: zp[1]:24 [ anim::$10 ] 4: zp[1]:25 [ anim::$11 ] 0.67: zp[2]:21 [ anim::sprite_y#0 ] 0.57: zp[2]:17 [ anim::sprite_x#0 ] +Uplift Scope [] 5,921.2: zp[2]:6 [ yvel#9 yvel#12 yvel#10 yvel#21 ] 3,454.94: zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] 1,927.21: zp[2]:8 [ xpos#9 xpos#12 xpos#10 ] 1,855.35: zp[2]:10 [ ypos#10 ypos#13 ypos#11 ] 1,553.92: zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] +Uplift Scope [anim] 2,002: zp[2]:15 [ anim::$5 ] 2,002: zp[2]:19 [ anim::$7 ] 2,002: zp[1]:23 [ anim::$9 ] 2,002: zp[1]:24 [ anim::$10 ] 2,002: zp[1]:25 [ anim::$11 ] 333.67: zp[2]:21 [ anim::sprite_y#0 ] 286: zp[2]:17 [ anim::sprite_x#0 ] +Uplift Scope [init] 3,336.67: zp[2]:12 [ init::sc#2 init::sc#1 ] 3,003: zp[1]:14 [ init::i#2 init::i#1 ] Uplift Scope [main] -Uplifting [] best 7904 combination zp[2]:6 [ yvel#9 yvel#12 yvel#10 yvel#21 ] zp[2]:8 [ xpos#9 xpos#12 xpos#10 ] zp[2]:10 [ ypos#10 ypos#13 ypos#11 ] zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] -Uplifting [init] best 7784 combination zp[2]:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ] -Uplifting [anim] best 7766 combination zp[2]:15 [ anim::$5 ] zp[2]:19 [ anim::$7 ] reg byte a [ anim::$9 ] reg byte a [ anim::$10 ] reg byte a [ anim::$11 ] zp[2]:21 [ anim::sprite_y#0 ] zp[2]:17 [ anim::sprite_x#0 ] +Uplifting [] best 7904 combination zp[2]:6 [ yvel#9 yvel#12 yvel#10 yvel#21 ] zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp[2]:8 [ xpos#9 xpos#12 xpos#10 ] zp[2]:10 [ ypos#10 ypos#13 ypos#11 ] zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] +Uplifting [anim] best 7886 combination zp[2]:15 [ anim::$5 ] zp[2]:19 [ anim::$7 ] reg byte a [ anim::$9 ] reg byte a [ anim::$10 ] reg byte a [ anim::$11 ] zp[2]:21 [ anim::sprite_y#0 ] zp[2]:17 [ anim::sprite_x#0 ] +Uplifting [init] best 7766 combination zp[2]:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ] Uplifting [main] best 7766 combination Coalescing zero page register [ zp[2]:15 [ anim::$5 ] ] with [ zp[2]:17 [ anim::sprite_x#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:19 [ anim::$7 ] ] with [ zp[2]:21 [ anim::sprite_y#0 ] ] - score: 1 @@ -1772,20 +1770,20 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_YPOS = (byte*) 53249 (const byte) WHITE = (byte) 1 (void()) anim() -(byte~) anim::$10 reg byte a 4.0 -(byte~) anim::$11 reg byte a 4.0 -(signed word~) anim::$5 zp[2]:12 4.0 -(signed word~) anim::$7 zp[2]:14 4.0 -(byte~) anim::$9 reg byte a 4.0 +(byte~) anim::$10 reg byte a 2002.0 +(byte~) anim::$11 reg byte a 2002.0 +(signed word~) anim::$5 zp[2]:12 2002.0 +(signed word~) anim::$7 zp[2]:14 2002.0 +(byte~) anim::$9 reg byte a 2002.0 (label) anim::@1 (label) anim::@2 (label) anim::@3 (label) anim::@4 (label) anim::@return (signed word) anim::sprite_x -(signed word) anim::sprite_x#0 sprite_x zp[2]:12 0.5714285714285714 +(signed word) anim::sprite_x#0 sprite_x zp[2]:12 286.0 (signed word) anim::sprite_y -(signed word) anim::sprite_y#0 sprite_y zp[2]:14 0.6666666666666666 +(signed word) anim::sprite_y#0 sprite_y zp[2]:14 333.6666666666667 (const signed word) g = (signed word) -5 (void()) init() (label) init::@1 @@ -1793,36 +1791,36 @@ FINAL SYMBOL TABLE (label) init::@3 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 16.5 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1501.5 (byte*) init::sc -(byte*) init::sc#1 sc zp[2]:12 22.0 -(byte*) init::sc#2 sc zp[2]:12 14.666666666666666 +(byte*) init::sc#1 sc zp[2]:12 2002.0 +(byte*) init::sc#2 sc zp[2]:12 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (signed word) xpos -(signed word) xpos#10 xpos zp[2]:8 1.0714285714285714 -(signed word) xpos#12 xpos zp[2]:8 53.75 -(signed word) xpos#9 xpos zp[2]:8 2.0 +(signed word) xpos#10 xpos zp[2]:8 150.21428571428572 +(signed word) xpos#12 xpos zp[2]:8 776.0 +(signed word) xpos#9 xpos zp[2]:8 1001.0 (signed word) xvel -(signed word) xvel#10 xvel zp[2]:2 1.0625 -(signed word) xvel#12 xvel zp[2]:2 54.25 -(signed word) xvel#14 xvel zp[2]:2 0.6666666666666666 +(signed word) xvel#10 xvel zp[2]:2 194.0 +(signed word) xvel#12 xvel zp[2]:2 1026.25 +(signed word) xvel#14 xvel zp[2]:2 333.6666666666667 (signed word) ypos -(signed word) ypos#10 ypos zp[2]:10 1.3333333333333333 -(signed word) ypos#11 ypos zp[2]:10 1.1538461538461537 -(signed word) ypos#13 ypos zp[2]:10 54.25 +(signed word) ypos#10 ypos zp[2]:10 667.3333333333334 +(signed word) ypos#11 ypos zp[2]:10 161.76923076923077 +(signed word) ypos#13 ypos zp[2]:10 1026.25 (signed word) yvel -(signed word) yvel#10 yvel_1 zp[2]:6 0.9999999999999999 -(signed word) yvel#12 yvel_1 zp[2]:6 53.75 -(signed word) yvel#21 yvel_1 zp[2]:6 4.0 -(signed word) yvel#4 yvel zp[2]:4 3.0 -(signed word) yvel#9 yvel_1 zp[2]:6 6.0 +(signed word) yvel#10 yvel_1 zp[2]:6 140.2 +(signed word) yvel#12 yvel_1 zp[2]:6 776.0 +(signed word) yvel#21 yvel_1 zp[2]:6 2002.0 +(signed word) yvel#4 yvel zp[2]:4 1501.5 +(signed word) yvel#9 yvel_1 zp[2]:6 3003.0 (signed word) yvel_init -(signed word) yvel_init#11 yvel_init zp[2]:4 0.9375 -(signed word) yvel_init#13 yvel_init zp[2]:4 43.39999999999999 -(signed word) yvel_init#3 yvel_init zp[2]:4 2.0 +(signed word) yvel_init#11 yvel_init zp[2]:4 131.4375 +(signed word) yvel_init#13 yvel_init zp[2]:4 821.0 +(signed word) yvel_init#3 yvel_init zp[2]:4 1001.0 zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] diff --git a/src/test/ref/signed-words.sym b/src/test/ref/signed-words.sym index 92230f2cc..ab48250d3 100644 --- a/src/test/ref/signed-words.sym +++ b/src/test/ref/signed-words.sym @@ -14,20 +14,20 @@ (const byte*) SPRITES_YPOS = (byte*) 53249 (const byte) WHITE = (byte) 1 (void()) anim() -(byte~) anim::$10 reg byte a 4.0 -(byte~) anim::$11 reg byte a 4.0 -(signed word~) anim::$5 zp[2]:12 4.0 -(signed word~) anim::$7 zp[2]:14 4.0 -(byte~) anim::$9 reg byte a 4.0 +(byte~) anim::$10 reg byte a 2002.0 +(byte~) anim::$11 reg byte a 2002.0 +(signed word~) anim::$5 zp[2]:12 2002.0 +(signed word~) anim::$7 zp[2]:14 2002.0 +(byte~) anim::$9 reg byte a 2002.0 (label) anim::@1 (label) anim::@2 (label) anim::@3 (label) anim::@4 (label) anim::@return (signed word) anim::sprite_x -(signed word) anim::sprite_x#0 sprite_x zp[2]:12 0.5714285714285714 +(signed word) anim::sprite_x#0 sprite_x zp[2]:12 286.0 (signed word) anim::sprite_y -(signed word) anim::sprite_y#0 sprite_y zp[2]:14 0.6666666666666666 +(signed word) anim::sprite_y#0 sprite_y zp[2]:14 333.6666666666667 (const signed word) g = (signed word) -5 (void()) init() (label) init::@1 @@ -35,36 +35,36 @@ (label) init::@3 (label) init::@return (byte) init::i -(byte) init::i#1 reg byte x 16.5 -(byte) init::i#2 reg byte x 16.5 +(byte) init::i#1 reg byte x 1501.5 +(byte) init::i#2 reg byte x 1501.5 (byte*) init::sc -(byte*) init::sc#1 sc zp[2]:12 22.0 -(byte*) init::sc#2 sc zp[2]:12 14.666666666666666 +(byte*) init::sc#1 sc zp[2]:12 2002.0 +(byte*) init::sc#2 sc zp[2]:12 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (signed word) xpos -(signed word) xpos#10 xpos zp[2]:8 1.0714285714285714 -(signed word) xpos#12 xpos zp[2]:8 53.75 -(signed word) xpos#9 xpos zp[2]:8 2.0 +(signed word) xpos#10 xpos zp[2]:8 150.21428571428572 +(signed word) xpos#12 xpos zp[2]:8 776.0 +(signed word) xpos#9 xpos zp[2]:8 1001.0 (signed word) xvel -(signed word) xvel#10 xvel zp[2]:2 1.0625 -(signed word) xvel#12 xvel zp[2]:2 54.25 -(signed word) xvel#14 xvel zp[2]:2 0.6666666666666666 +(signed word) xvel#10 xvel zp[2]:2 194.0 +(signed word) xvel#12 xvel zp[2]:2 1026.25 +(signed word) xvel#14 xvel zp[2]:2 333.6666666666667 (signed word) ypos -(signed word) ypos#10 ypos zp[2]:10 1.3333333333333333 -(signed word) ypos#11 ypos zp[2]:10 1.1538461538461537 -(signed word) ypos#13 ypos zp[2]:10 54.25 +(signed word) ypos#10 ypos zp[2]:10 667.3333333333334 +(signed word) ypos#11 ypos zp[2]:10 161.76923076923077 +(signed word) ypos#13 ypos zp[2]:10 1026.25 (signed word) yvel -(signed word) yvel#10 yvel_1 zp[2]:6 0.9999999999999999 -(signed word) yvel#12 yvel_1 zp[2]:6 53.75 -(signed word) yvel#21 yvel_1 zp[2]:6 4.0 -(signed word) yvel#4 yvel zp[2]:4 3.0 -(signed word) yvel#9 yvel_1 zp[2]:6 6.0 +(signed word) yvel#10 yvel_1 zp[2]:6 140.2 +(signed word) yvel#12 yvel_1 zp[2]:6 776.0 +(signed word) yvel#21 yvel_1 zp[2]:6 2002.0 +(signed word) yvel#4 yvel zp[2]:4 1501.5 +(signed word) yvel#9 yvel_1 zp[2]:6 3003.0 (signed word) yvel_init -(signed word) yvel_init#11 yvel_init zp[2]:4 0.9375 -(signed word) yvel_init#13 yvel_init zp[2]:4 43.39999999999999 -(signed word) yvel_init#3 yvel_init zp[2]:4 2.0 +(signed word) yvel_init#11 yvel_init zp[2]:4 131.4375 +(signed word) yvel_init#13 yvel_init zp[2]:4 821.0 +(signed word) yvel_init#3 yvel_init zp[2]:4 1001.0 zp[2]:2 [ xvel#12 xvel#10 xvel#14 ] zp[2]:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] diff --git a/src/test/ref/simple-loop.log b/src/test/ref/simple-loop.log index 61f8ed7f3..d5ec82264 100644 --- a/src/test/ref/simple-loop.log +++ b/src/test/ref/simple-loop.log @@ -65,7 +65,7 @@ Finalized unsigned number type (byte) $80 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) $80) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -123,8 +123,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 11.0 +(byte) main::i#1 202.0 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -199,15 +199,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] *((byte*) 53280) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [9] *((byte*) 53280) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [9] *((byte*) 53280) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) 53280) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 343 combination reg byte x [ main::i#2 main::i#1 ] @@ -304,8 +304,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/simple-loop.sym b/src/test/ref/simple-loop.sym index ea44b5602..23befa9ed 100644 --- a/src/test/ref/simple-loop.sym +++ b/src/test/ref/simple-loop.sym @@ -7,7 +7,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/sinus-basic.asm b/src/test/ref/sinus-basic.asm index 02b4a58b8..bad3b0c8c 100644 --- a/src/test/ref/sinus-basic.asm +++ b/src/test/ref/sinus-basic.asm @@ -120,12 +120,10 @@ print_ln: { print_word: { .label w = 7 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (word) print_word::w#0 [ print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) always clobbers reg byte a +Statement [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] { { print_word::w#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [37] (byte*) print_char_cursor#51 ← (byte*) print_line_cursor#1 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] ( main:2 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#23 = print_char_cursor#31 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] ) always clobbers reg byte y +Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#31 = print_char_cursor#32 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#23 } } main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#23 = print_char_cursor#31 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#31 = print_char_cursor#32 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#23 } } main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement asm { jsr$b1aa stymemLo stamemHi } always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#10 main::i#1 ] -Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a -Statement [64] *((const byte*) memLo) ← <(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a -Statement [65] *((const byte*) memHi) ← >(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a +Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [64] *((const byte*) memLo) ← <(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) memHi) ← >(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$b867 } always clobbers reg byte a reg byte x reg byte y -Statement [69] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::mulFACbyMEM:14 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::mulFACbyMEM:24 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [71] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::mulFACbyMEM:14 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::mulFACbyMEM:24 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$ba28 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$e26b } always clobbers reg byte a reg byte x reg byte y -Statement [78] *((const byte*) memLo) ← <(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a -Statement [79] *((const byte*) memHi) ← >(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a +Statement [78] *((const byte*) memLo) ← <(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a +Statement [79] *((const byte*) memHi) ← >(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$bb0f } always clobbers reg byte a reg byte x reg byte y -Statement [83] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::setFAC:5 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::setFAC:12 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::setFAC:18 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [85] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::setFAC:5 [ setFAC::prepareMEM1_$1 ] main:2::setFAC:12 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_$1 ] main:2::setFAC:18 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldymemLo ldamemHi jsr$b391 } always clobbers reg byte a reg byte x reg byte y -Statement [90] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#2 [ setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] main:2::setMEMtoFAC:16 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [92] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#2 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::prepareMEM1_$1 ] main:2::setMEMtoFAC:16 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldxmemLo ldymemHi jsr$bbd4 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$bafe } always clobbers reg byte a reg byte x reg byte y -Statement [11] (word) setFAC::w#1 ← (word)(byte) main::i#10 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::w#1 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::w#1 ] ) always clobbers reg byte a -Statement [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a -Statement [30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [35] if((byte) main::i#1!=(byte) $1a) goto main::@15 [ main::i#1 print_line_cursor#1 ] ( main:2 [ main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_cursor#51 ← (byte*) print_line_cursor#1 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] ( main:2 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) always clobbers reg byte a -Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] ) always clobbers reg byte y +Statement [11] (word) setFAC::w#1 ← (word)(byte) main::i#10 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::w#1 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } } ) always clobbers reg byte a +Statement [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 print_char_cursor#32 print_line_cursor#13 print_word::w#0 ] { { print_word::w#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [35] if((byte) main::i#1!=(byte) $1a) goto main::@15 [ main::i#1 print_line_cursor#1 ] ( main:2 [ main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [37] (byte*) print_char_cursor#51 ← (byte*) print_line_cursor#1 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] ( main:2 [ main::i#1 print_char_cursor#51 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] { } ) always clobbers reg byte a +Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#23 = print_char_cursor#31 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#31 = print_char_cursor#32 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#23 } } main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#23 = print_char_cursor#31 print_char_cursor#32 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#0 = print_byte::b#2 } { print_char_cursor#31 = print_char_cursor#32 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#10 = print_char_cursor#23 } } main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] { { print_word::w#0 = getFAC::return#2 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#10 = print_char_cursor#31 print_char_cursor#23 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Statement asm { jsr$b1aa stymemLo stamemHi } always clobbers reg byte a reg byte x reg byte y -Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a -Statement [64] *((const byte*) memLo) ← <(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a -Statement [65] *((const byte*) memHi) ← >(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a +Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } } ) always clobbers reg byte a +Statement [64] *((const byte*) memLo) ← <(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) memHi) ← >(const word) addMEMtoFAC::prepareMEM1_mem#0 [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$b867 } always clobbers reg byte a reg byte x reg byte y -Statement [69] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::mulFACbyMEM:14 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::mulFACbyMEM:24 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [71] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::mulFACbyMEM:14 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::mulFACbyMEM:24 [ main::i#10 print_char_cursor#32 print_line_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$ba28 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$e26b } always clobbers reg byte a reg byte x reg byte y -Statement [78] *((const byte*) memLo) ← <(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a -Statement [79] *((const byte*) memHi) ← >(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] ) always clobbers reg byte a +Statement [78] *((const byte*) memLo) ← <(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a +Statement [79] *((const byte*) memHi) ← >(const word) divMEMbyFAC::prepareMEM1_mem#0 [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 print_char_cursor#32 print_line_cursor#13 ] { } ) always clobbers reg byte a Statement asm { ldamemLo ldymemHi jsr$bb0f } always clobbers reg byte a reg byte x reg byte y -Statement [83] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::setFAC:5 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::setFAC:12 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::setFAC:18 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [85] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::setFAC:5 [ setFAC::prepareMEM1_$1 ] main:2::setFAC:12 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_$1 ] main:2::setFAC:18 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldymemLo ldamemHi jsr$b391 } always clobbers reg byte a reg byte x reg byte y -Statement [90] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#2 [ setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] main:2::setMEMtoFAC:16 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setMEMtoFAC::mem#2 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a -Statement [92] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#2 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::prepareMEM1_$1 ] main:2::setMEMtoFAC:16 [ main::i#10 print_char_cursor#32 print_line_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a Statement asm { ldxmemLo ldymemHi jsr$bbd4 } always clobbers reg byte a reg byte x reg byte y Statement asm { jsr$bafe } always clobbers reg byte a reg byte x reg byte y Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , @@ -1973,15 +1957,15 @@ Potential registers zp[1]:27 [ setMEMtoFAC::prepareMEM1_$0 ] : zp[1]:27 , reg by Potential registers zp[1]:28 [ setMEMtoFAC::prepareMEM1_$1 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 250.97: zp[2]:3 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] 34.89: zp[2]:7 [ print_char_cursor#23 print_char_cursor#31 print_char_cursor#32 print_char_cursor#51 print_char_cursor#10 ] -Uplift Scope [setFAC] 27: zp[2]:11 [ setFAC::prepareMEM1_mem#0 setFAC::w#1 ] 4: zp[1]:25 [ setFAC::prepareMEM1_$0 ] 4: zp[1]:26 [ setFAC::prepareMEM1_$1 ] -Uplift Scope [getFAC] 22: zp[2]:15 [ getFAC::return#2 ] 4.33: zp[2]:21 [ getFAC::return#0 ] -Uplift Scope [print_byte] 10: zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:19 [ print_byte::$0 ] 4: zp[1]:20 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [main] 11.92: zp[1]:2 [ main::i#10 main::i#1 ] -Uplift Scope [setMEMtoFAC] 4: zp[1]:27 [ setMEMtoFAC::prepareMEM1_$0 ] 4: zp[1]:28 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:13 [ setMEMtoFAC::mem#2 ] -Uplift Scope [mulFACbyMEM] 4: zp[1]:23 [ mulFACbyMEM::prepareMEM1_$0 ] 4: zp[1]:24 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:9 [ mulFACbyMEM::mem#2 ] -Uplift Scope [print_word] 5: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [] 243,935.35: zp[2]:3 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] 126,667.09: zp[2]:7 [ print_char_cursor#23 print_char_cursor#31 print_char_cursor#32 print_char_cursor#51 print_char_cursor#10 ] +Uplift Scope [print_char] 160,007: zp[1]:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,002: zp[1]:19 [ print_byte::$0 ] 20,002: zp[1]:20 [ print_byte::$2 ] 9,505: zp[1]:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [setFAC] 2,002: zp[1]:25 [ setFAC::prepareMEM1_$0 ] 2,002: zp[1]:26 [ setFAC::prepareMEM1_$1 ] 903: zp[2]:11 [ setFAC::prepareMEM1_mem#0 setFAC::w#1 ] +Uplift Scope [setMEMtoFAC] 2,002: zp[1]:27 [ setMEMtoFAC::prepareMEM1_$0 ] 2,002: zp[1]:28 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:13 [ setMEMtoFAC::mem#2 ] +Uplift Scope [mulFACbyMEM] 2,002: zp[1]:23 [ mulFACbyMEM::prepareMEM1_$0 ] 2,002: zp[1]:24 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:9 [ mulFACbyMEM::mem#2 ] +Uplift Scope [print_word] 701: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [getFAC] 367.33: zp[2]:21 [ getFAC::return#0 ] 202: zp[2]:15 [ getFAC::return#2 ] +Uplift Scope [main] 109.42: zp[1]:2 [ main::i#10 main::i#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [addMEMtoFAC] @@ -1990,22 +1974,22 @@ Uplift Scope [sinFAC] Uplift Scope [divFACby10] Uplifting [] best 6457 combination zp[2]:3 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp[2]:7 [ print_char_cursor#23 print_char_cursor#31 print_char_cursor#32 print_char_cursor#51 print_char_cursor#10 ] -Uplifting [setFAC] best 6445 combination zp[2]:11 [ setFAC::prepareMEM1_mem#0 setFAC::w#1 ] reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] -Uplifting [getFAC] best 6445 combination zp[2]:15 [ getFAC::return#2 ] zp[2]:21 [ getFAC::return#0 ] -Uplifting [print_byte] best 6431 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 6422 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [main] best 6422 combination zp[1]:2 [ main::i#10 main::i#1 ] -Uplifting [setMEMtoFAC] best 6410 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:13 [ setMEMtoFAC::mem#2 ] -Uplifting [mulFACbyMEM] best 6398 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:9 [ mulFACbyMEM::mem#2 ] -Uplifting [print_word] best 6398 combination zp[2]:17 [ print_word::w#0 ] -Uplifting [RADIX] best 6398 combination -Uplifting [print_ln] best 6398 combination -Uplifting [addMEMtoFAC] best 6398 combination -Uplifting [divMEMbyFAC] best 6398 combination -Uplifting [sinFAC] best 6398 combination -Uplifting [divFACby10] best 6398 combination +Uplifting [print_char] best 6448 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 6430 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [setFAC] best 6418 combination reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] zp[2]:11 [ setFAC::prepareMEM1_mem#0 setFAC::w#1 ] +Uplifting [setMEMtoFAC] best 6406 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:13 [ setMEMtoFAC::mem#2 ] +Uplifting [mulFACbyMEM] best 6394 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:9 [ mulFACbyMEM::mem#2 ] +Uplifting [print_word] best 6394 combination zp[2]:17 [ print_word::w#0 ] +Uplifting [getFAC] best 6394 combination zp[2]:21 [ getFAC::return#0 ] zp[2]:15 [ getFAC::return#2 ] +Uplifting [main] best 6394 combination zp[1]:2 [ main::i#10 main::i#1 ] +Uplifting [RADIX] best 6394 combination +Uplifting [print_ln] best 6394 combination +Uplifting [addMEMtoFAC] best 6394 combination +Uplifting [divMEMbyFAC] best 6394 combination +Uplifting [sinFAC] best 6394 combination +Uplifting [divFACby10] best 6394 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#10 main::i#1 ] -Uplifting [main] best 6398 combination zp[1]:2 [ main::i#10 main::i#1 ] +Uplifting [main] best 6394 combination zp[1]:2 [ main::i#10 main::i#1 ] Coalescing zero page register [ zp[2]:15 [ getFAC::return#2 ] ] with [ zp[2]:17 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:15 [ getFAC::return#2 print_word::w#0 ] ] with [ zp[2]:21 [ getFAC::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:11 [ setFAC::prepareMEM1_mem#0 setFAC::w#1 ] ] with [ zp[2]:9 [ mulFACbyMEM::mem#2 ] ] @@ -2277,8 +2261,7 @@ print_ln: { print_word: { .label w = 7 // [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [44] call print_byte // [48] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -2289,8 +2272,7 @@ print_word: { // print_word::@1 __b1: // [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [46] call print_byte // [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2718,8 +2700,8 @@ FINAL SYMBOL TABLE (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp[2]:7 4.333333333333333 -(word) getFAC::return#2 return zp[2]:7 22.0 +(word) getFAC::return#0 return zp[2]:7 367.33333333333337 +(word) getFAC::return#2 return zp[2]:7 202.0 (word) getFAC::w (void()) main() (label) main::@1 @@ -2742,8 +2724,8 @@ FINAL SYMBOL TABLE (const byte*) main::f_2pi = (byte*) 58085 (const byte*) main::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte) main::i -(byte) main::i#1 i zp[1]:2 11.0 -(byte) main::i#10 i zp[1]:2 0.9166666666666666 +(byte) main::i#1 i zp[1]:2 101.0 +(byte) main::i#10 i zp[1]:2 8.416666666666666 (const byte*) memHi = (byte*) 255 (const byte*) memLo = (byte*) 254 (void()) mulFACbyMEM((byte*) mulFACbyMEM::mem) @@ -2752,35 +2734,35 @@ FINAL SYMBOL TABLE (byte*) mulFACbyMEM::mem (byte*) mulFACbyMEM::mem#2 mem zp[2]:7 (label) mulFACbyMEM::prepareMEM1 -(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 4.0 -(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 4.0 +(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 2002.0 +(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 2002.0 (word) mulFACbyMEM::prepareMEM1_mem (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:5 6.2941176470588225 -(byte*) print_char_cursor#23 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 2.0 -(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 0.5909090909090909 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 22.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:5 12412.0 +(byte*) print_char_cursor#23 print_char_cursor zp[2]:5 110002.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 4001.0 +(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 50.09090909090909 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 202.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 46.42857142857143 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 0.5416666666666666 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:3 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 42886.42857142857 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 45.91666666666667 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:3 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2789,25 +2771,25 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 5.0 +(word) print_word::w#0 w zp[2]:7 701.0 (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return (label) setFAC::prepareMEM1 -(byte~) setFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setFAC::prepareMEM1_$0 reg byte a 2002.0 +(byte~) setFAC::prepareMEM1_$1 reg byte a 2002.0 (word) setFAC::prepareMEM1_mem -(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:7 5.0 +(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:7 701.0 (word) setFAC::w -(word) setFAC::w#1 w zp[2]:7 22.0 +(word) setFAC::w#1 w zp[2]:7 202.0 (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem) (label) setMEMtoFAC::@1 (label) setMEMtoFAC::@return (byte*) setMEMtoFAC::mem (byte*) setMEMtoFAC::mem#2 mem zp[2]:7 (label) setMEMtoFAC::prepareMEM1 -(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 2002.0 +(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 2002.0 (word) setMEMtoFAC::prepareMEM1_mem (void()) sinFAC() (label) sinFAC::@return @@ -2829,7 +2811,7 @@ reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] FINAL ASSEMBLER -Score: 4965 +Score: 4961 // File Comments // Upstart @@ -3047,8 +3029,7 @@ print_word: { .label w = 7 // print_byte(>w) // [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [44] call print_byte // [48] phi from print_word to print_byte [phi:print_word->print_byte] // [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy @@ -3057,8 +3038,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/sinus-basic.sym b/src/test/ref/sinus-basic.sym index 4252404fc..b427b1ca3 100644 --- a/src/test/ref/sinus-basic.sym +++ b/src/test/ref/sinus-basic.sym @@ -24,8 +24,8 @@ (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp[2]:7 4.333333333333333 -(word) getFAC::return#2 return zp[2]:7 22.0 +(word) getFAC::return#0 return zp[2]:7 367.33333333333337 +(word) getFAC::return#2 return zp[2]:7 202.0 (word) getFAC::w (void()) main() (label) main::@1 @@ -48,8 +48,8 @@ (const byte*) main::f_2pi = (byte*) 58085 (const byte*) main::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } (byte) main::i -(byte) main::i#1 i zp[1]:2 11.0 -(byte) main::i#10 i zp[1]:2 0.9166666666666666 +(byte) main::i#1 i zp[1]:2 101.0 +(byte) main::i#10 i zp[1]:2 8.416666666666666 (const byte*) memHi = (byte*) 255 (const byte*) memLo = (byte*) 254 (void()) mulFACbyMEM((byte*) mulFACbyMEM::mem) @@ -58,35 +58,35 @@ (byte*) mulFACbyMEM::mem (byte*) mulFACbyMEM::mem#2 mem zp[2]:7 (label) mulFACbyMEM::prepareMEM1 -(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 4.0 -(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 4.0 +(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 2002.0 +(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 2002.0 (word) mulFACbyMEM::prepareMEM1_mem (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#2 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#10 print_char_cursor zp[2]:5 6.2941176470588225 -(byte*) print_char_cursor#23 print_char_cursor zp[2]:5 4.0 -(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 2.0 -(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 0.5909090909090909 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 22.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:5 12412.0 +(byte*) print_char_cursor#23 print_char_cursor zp[2]:5 110002.0 +(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 4001.0 +(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 50.09090909090909 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 202.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 46.42857142857143 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 0.5416666666666666 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:3 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 42886.42857142857 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 45.91666666666667 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:3 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -95,25 +95,25 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 5.0 +(word) print_word::w#0 w zp[2]:7 701.0 (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return (label) setFAC::prepareMEM1 -(byte~) setFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setFAC::prepareMEM1_$0 reg byte a 2002.0 +(byte~) setFAC::prepareMEM1_$1 reg byte a 2002.0 (word) setFAC::prepareMEM1_mem -(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:7 5.0 +(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:7 701.0 (word) setFAC::w -(word) setFAC::w#1 w zp[2]:7 22.0 +(word) setFAC::w#1 w zp[2]:7 202.0 (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem) (label) setMEMtoFAC::@1 (label) setMEMtoFAC::@return (byte*) setMEMtoFAC::mem (byte*) setMEMtoFAC::mem#2 mem zp[2]:7 (label) setMEMtoFAC::prepareMEM1 -(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 4.0 -(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 4.0 +(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 2002.0 +(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 2002.0 (word) setMEMtoFAC::prepareMEM1_mem (void()) sinFAC() (label) sinFAC::@return diff --git a/src/test/ref/sinusgen16.asm b/src/test/ref/sinusgen16.asm index e34f1d9ea..6ef60116e 100644 --- a/src/test/ref/sinusgen16.asm +++ b/src/test/ref/sinusgen16.asm @@ -157,12 +157,10 @@ print_char: { print_word: { .label w = 4 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (byte) 0 Inversing boolean not [336] (bool~) main::$5 ← (signed word) main::sw#0 < (signed byte) 0 from [335] (bool~) main::$4 ← (signed word) main::sw#0 >= (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#11 (word) rem16u#2 -Alias (word) divr16u::dividend#1 = (word~) div32u16u::$0 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (dword) div32u16u::dividend#1 = (dword) div32u16u::dividend#2 -Alias (word) div32u16u::divisor#1 = (word) div32u16u::divisor#2 -Alias (word) rem16u#12 = (word) rem16u#3 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$2 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#3 -Alias (signed word*) sin16s_gen::sintab#5 = (signed word*) sin16s_gen::sintab#6 -Alias (word) rem16u#15 = (word) rem16u#6 -Alias (dword) sin16s_gen::step#0 = (dword~) sin16s_gen::$0 -Alias (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#4 (dword) sin16s_gen::x#3 -Alias (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 -Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 (dword) sin16s_gen::step#3 -Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#4 (word) sin16s_gen::i#3 -Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#5 (word) sin16s_gen::wavelength#4 -Alias (word) rem16u#16 = (word) rem16u#30 (word) rem16u#22 (word) rem16u#26 (word) rem16u#7 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$17 -Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#7 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$6 -Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#8 -Alias (word) sin16s::x3#0 = (word~) sin16s::$7 (word) sin16s::x3#1 -Alias (word) mulu16_sel::return#2 = (word) mulu16_sel::return#9 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$8 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$9 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$10 -Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$11 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$12 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$13 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$14 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$18 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 -Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 -Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (word) rem16u#0 = (word) rem16u#29 (word) rem16u#25 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#54 (byte*) print_screen#5 -Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 (byte*) print_char_cursor#24 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#46 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#3 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#31 (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#32 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#12 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#15 (byte*) print_line_cursor#6 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#16 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 -Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#57 -Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#27 -Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#38 -Alias (signed word*) main::st1#2 = (signed word*) main::st1#3 (signed word*) main::st1#8 (signed word*) main::st1#7 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#53 (byte*) print_char_cursor#52 (byte*) print_char_cursor#42 -Alias (word) rem16u#18 = (word) rem16u#34 (word) rem16u#24 (word) rem16u#35 (word) rem16u#33 (word) rem16u#9 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#18 (byte*) print_line_cursor#19 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (signed word*) main::st1#4 = (signed word*) main::st1#5 (signed word*) main::st1#6 -Alias (word) rem16u#28 = (word) rem16u#31 (word) rem16u#32 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#15 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#40 -Alias (signed word) main::sw#0 = (signed word) main::sw#3 (signed word) main::sw#2 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 -Alias (word) rem16u#10 = (word) rem16u#19 -Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#43 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#11 rem16u#2 +Alias divr16u::dividend#1 = div32u16u::$0 +Alias divr16u::return#2 = divr16u::return#5 +Alias div32u16u::dividend#1 = div32u16u::dividend#2 +Alias div32u16u::divisor#1 = div32u16u::divisor#2 +Alias rem16u#12 = rem16u#3 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#2 = div32u16u::$2 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#13 = rem16u#4 rem16u#14 rem16u#5 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1 +Alias mul16u::a#2 = mul16u::a#3 mul16u::a#6 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#3 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias div32u16u::return#2 = div32u16u::return#4 +Alias sin16s_gen::wavelength#1 = sin16s_gen::wavelength#3 +Alias sin16s_gen::sintab#5 = sin16s_gen::sintab#6 +Alias rem16u#15 = rem16u#6 +Alias sin16s_gen::step#0 = sin16s_gen::$0 +Alias sin16s_gen::x#2 = sin16s_gen::x#4 sin16s_gen::x#3 +Alias sin16s_gen::sintab#2 = sin16s_gen::sintab#3 sin16s_gen::sintab#4 +Alias sin16s_gen::step#1 = sin16s_gen::step#2 sin16s_gen::step#3 +Alias sin16s_gen::i#2 = sin16s_gen::i#4 sin16s_gen::i#3 +Alias sin16s_gen::wavelength#2 = sin16s_gen::wavelength#5 sin16s_gen::wavelength#4 +Alias rem16u#16 = rem16u#30 rem16u#22 rem16u#26 rem16u#7 +Alias sin16s::return#0 = sin16s::return#3 +Alias sin16s_gen::x#1 = sin16s_gen::$3 +Alias sin16s::x#3 = sin16s::x#5 +Alias sin16s::x#1 = sin16s::$17 +Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3 +Alias mulu16_sel::return#0 = mulu16_sel::return#7 +Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3 +Alias sin16s::x2#0 = sin16s::$6 +Alias mulu16_sel::return#1 = mulu16_sel::return#8 +Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1 +Alias mulu16_sel::return#2 = mulu16_sel::return#9 +Alias sin16s::x3_6#0 = sin16s::$8 +Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2 +Alias mulu16_sel::return#10 = mulu16_sel::return#3 +Alias sin16s::x4#0 = sin16s::$10 +Alias mulu16_sel::return#11 = mulu16_sel::return#4 +Alias sin16s::x5#0 = sin16s::$11 +Alias sin16s::x5_128#0 = sin16s::$12 +Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3 +Alias sin16s::sinx#0 = sin16s::$14 +Alias sin16s::x#4 = sin16s::x#7 +Alias sin16s::isUpper#8 = sin16s::isUpper#9 +Alias sin16s::x#2 = sin16s::$18 +Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2 +Alias sin16s::sinx#1 = sin16s::$20 +Alias mul16u::return#2 = mul16u::return#4 +Alias mulu16_sel::select#5 = mulu16_sel::select#6 +Alias mulu16_sel::return#12 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias rem16u#0 = rem16u#29 rem16u#25 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#12 print_char_cursor#54 print_screen#5 +Alias print_str::str#3 = print_str::str#4 +Alias print_char_cursor#2 = print_char_cursor#23 print_char_cursor#44 print_char_cursor#24 +Alias print_char_cursor#45 = print_char_cursor#56 print_char_cursor#46 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#25 = print_char_cursor#3 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#26 = print_char_cursor#4 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#27 = print_char_cursor#5 print_char_cursor#28 print_char_cursor#6 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#29 = print_char_cursor#7 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#30 = print_char_cursor#8 print_char_cursor#31 print_char_cursor#9 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#10 = print_char_cursor#32 +Alias print_char_cursor#11 = print_char_cursor#33 print_char_cursor#34 print_char_cursor#12 +Alias print_char_cursor#13 = print_char_cursor#36 print_char_cursor#14 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#15 print_line_cursor#6 print_char_cursor#37 print_line_cursor#2 print_char_cursor#16 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#10 = print_line_cursor#13 +Alias print_char_cursor#50 = print_char_cursor#57 +Alias rem16u#17 = rem16u#8 rem16u#27 +Alias print_line_cursor#3 = print_line_cursor#7 +Alias print_char_cursor#17 = print_char_cursor#38 +Alias main::st1#2 = main::st1#3 main::st1#8 main::st1#7 +Alias print_char_cursor#21 = print_char_cursor#58 print_char_cursor#53 print_char_cursor#52 print_char_cursor#42 +Alias rem16u#18 = rem16u#34 rem16u#24 rem16u#35 rem16u#33 rem16u#9 +Alias print_line_cursor#11 = print_line_cursor#18 print_line_cursor#19 print_line_cursor#17 print_line_cursor#8 print_line_cursor#4 +Alias main::st1#4 = main::st1#5 main::st1#6 +Alias rem16u#28 = rem16u#31 rem16u#32 +Alias print_line_cursor#14 = print_line_cursor#15 print_line_cursor#16 +Alias print_char_cursor#18 = print_char_cursor#39 +Alias print_char_cursor#19 = print_char_cursor#40 +Alias main::sw#0 = main::sw#3 main::sw#2 +Alias print_char_cursor#20 = print_char_cursor#41 +Alias rem16u#10 = rem16u#19 +Alias print_line_cursor#5 = print_line_cursor#9 +Alias print_char_cursor#22 = print_char_cursor#43 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (word) mul16u::a#2 = (word) mul16u::a#4 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 -Alias (signed word) main::sw#0 = (signed word) main::sw#1 -Alias (signed word*) main::st1#2 = (signed word*) main::st1#4 -Alias (word) rem16u#18 = (word) rem16u#28 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias mul16u::a#2 = mul16u::a#4 +Alias mul16u::mb#2 = mul16u::mb#3 +Alias sin16s::isUpper#2 = sin16s::isUpper#8 +Alias main::sw#0 = main::sw#1 +Alias main::st1#2 = main::st1#4 +Alias rem16u#18 = rem16u#28 +Alias print_line_cursor#11 = print_line_cursor#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6 Identical Phi Values (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0 @@ -2406,183 +2406,183 @@ VARIABLE REGISTER WEIGHTS (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 (void()) main() (signed word*) main::st1 -(signed word*) main::st1#1 22.0 -(signed word*) main::st1#2 4.0 +(signed word*) main::st1#1 202.0 +(signed word*) main::st1#2 36.72727272727273 (signed word) main::sw -(signed word) main::sw#0 6.6000000000000005 +(signed word) main::sw#0 60.599999999999994 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 1.3333333333333333 -(word) mul16u::a#2 67.66666666666666 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 366667.3333333334 +(word) mul16u::a#2 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 2.0 +(word) mul16u::b#0 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 50.83333333333333 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 5.0016667333333336E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 +(dword) mul16u::return#2 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 55001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#3 200002.0 +(byte) print_char::ch#4 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#13 0.7083333333333334 -(byte*) print_char_cursor#2 46.714285714285715 -(byte*) print_char_cursor#21 6.6000000000000005 -(byte*) print_char_cursor#35 6.0 -(byte*) print_char_cursor#51 5.200000000000001 -(byte*) print_char_cursor#55 24.0 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#13 50004.333333333336 +(byte*) print_char_cursor#2 43029.42857142857 +(byte*) print_char_cursor#21 60.599999999999994 +(byte*) print_char_cursor#35 1101003.0 +(byte*) print_char_cursor#51 440.79999999999995 +(byte*) print_char_cursor#55 1203.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#3 101.5 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#3 100251.25 +(byte*) print_str::str#5 1001.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 2.8333333333333335 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 517.3333333333334 +(signed word) print_sword::w#4 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 7001.0 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 22.0 +(signed word~) sin16s_gen::$2 2002.0 (word) sin16s_gen::i -(word) sin16s_gen::i#1 22.0 -(word) sin16s_gen::i#2 3.666666666666667 +(word) sin16s_gen::i#1 2002.0 +(word) sin16s_gen::i#2 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 1.1818181818181819 +(dword) sin16s_gen::step#0 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 11.0 -(dword) sin16s_gen::x#2 4.125 +(dword) sin16s_gen::x#1 1001.0 +(dword) sin16s_gen::x#2 375.375 Initial phi equivalence classes [ main::st1#2 main::st1#1 ] @@ -4079,165 +4079,159 @@ divr16u: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] if((signed word*) main::st1#2<(const signed word*) main::sintab1+(const word) main::wavelength*(const byte) SIZEOF_SIGNED_WORD) goto main::@2 [ main::st1#2 print_char_cursor#21 ] ( main:2 [ main::st1#2 print_char_cursor#21 ] ) always clobbers reg byte a -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@3 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [23] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [9] if((signed word*) main::st1#2<(const signed word*) main::sintab1+(const word) main::wavelength*(const byte) SIZEOF_SIGNED_WORD) goto main::@2 [ main::st1#2 print_char_cursor#21 ] ( main:2 [ main::st1#2 print_char_cursor#21 ] { } ) always clobbers reg byte a +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@3 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] { } ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [23] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#21 = print_char_cursor#55 } } main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#55 } } ) always clobbers reg byte a reg byte y +Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#21 = print_char_cursor#55 } } main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#55 } } ) always clobbers reg byte a reg byte y +Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:33 [ main::st1#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:33 [ main::st1#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [60] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [62] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [67] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [69] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [73] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [74] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [75] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [76] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [77] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [79] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [80] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [82] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [60] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [62] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [66] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [67] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [69] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [71] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [73] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [74] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [75] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [77] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [79] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [80] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [82] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:22 [ sin16s::isUpper#2 ] -Statement [83] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [85] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [86] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [87] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [91] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [92] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [96] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [99] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [100] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [101] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [103] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [106] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [107] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [111] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [112] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [113] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [115] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [118] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Statement [83] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [85] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [86] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [96] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [100] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [101] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [103] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [106] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [111] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [113] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [115] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [118] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ mulu16_sel::select#5 ] -Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ divr16u::i#2 divr16u::i#1 ] -Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [9] if((signed word*) main::st1#2<(const signed word*) main::sintab1+(const word) main::wavelength*(const byte) SIZEOF_SIGNED_WORD) goto main::@2 [ main::st1#2 print_char_cursor#21 ] ( main:2 [ main::st1#2 print_char_cursor#21 ] ) always clobbers reg byte a -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@3 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [23] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] ) always clobbers reg byte y -Statement [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:33 [ main::st1#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:33 [ main::st1#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [60] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [62] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [66] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [67] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [69] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [73] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [74] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [75] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [76] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [77] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [79] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [80] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [82] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [83] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [85] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [86] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [87] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [91] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [92] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [96] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [99] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [100] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [101] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [103] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [106] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [107] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [111] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [112] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [113] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [115] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [118] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a -Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [9] if((signed word*) main::st1#2<(const signed word*) main::sintab1+(const word) main::wavelength*(const byte) SIZEOF_SIGNED_WORD) goto main::@2 [ main::st1#2 print_char_cursor#21 ] ( main:2 [ main::st1#2 print_char_cursor#21 ] { } ) always clobbers reg byte a +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@3 [ main::st1#2 print_char_cursor#21 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#21 main::sw#0 ] { } ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [23] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#21 = print_char_cursor#55 } } main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#55 } } ) always clobbers reg byte a reg byte y +Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#21 = print_char_cursor#55 } } main:2::print_str:19 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#55 } } ) always clobbers reg byte a reg byte y +Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte y +Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [60] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [62] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:56 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [66] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [67] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [69] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [71] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [73] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [74] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [75] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [77] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [79] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [80] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [82] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [83] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [85] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [86] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [96] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [100] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [101] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [103] (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:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [106] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [111] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [113] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [115] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [118] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:72 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [128] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:72::mulu16_sel:89::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:94::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:98::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:104::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:72::mulu16_sel:109::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:65 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:65::divr16u:139 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:65::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::st1#2 main::st1#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp[2]:4 , Potential registers zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp[2]:6 , @@ -4300,39 +4294,39 @@ Potential registers zp[1]:131 [ divr16u::$2 ] : zp[1]:131 , reg byte a , reg byt Potential registers zp[2]:132 [ rem16u#1 ] : zp[2]:132 , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 353.83: zp[4]:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:40 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:117 [ mul16u::$1 ] 170: zp[2]:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 4: zp[4]:103 [ mul16u::return#2 ] 2: zp[2]:101 [ mul16u::b#0 ] -Uplift Scope [print_str] 305.5: zp[2]:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:44 [ 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[2]:48 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:130 [ divr16u::$1 ] 22: zp[1]:131 [ divr16u::$2 ] 18.19: zp[1]:50 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:46 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:118 [ divr16u::return#2 ] 4: zp[2]:122 [ divr16u::return#3 ] -Uplift Scope [] 190.22: zp[2]:9 [ print_char_cursor#35 print_char_cursor#55 print_char_cursor#13 print_char_cursor#51 print_char_cursor#21 print_char_cursor#2 print_char_cursor#1 ] 0.8: zp[2]:132 [ rem16u#1 ] -Uplift Scope [sin16s] 27.5: zp[4]:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:65 [ sin16s::return#0 ] 13: zp[2]:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:69 [ sin16s::$4 ] 4: zp[2]:77 [ sin16s::x2#0 ] 4: zp[2]:85 [ sin16s::x3_6#0 ] 4: zp[2]:91 [ sin16s::x4#0 ] 4: zp[2]:95 [ sin16s::x5#0 ] 4: zp[2]:97 [ sin16s::x5_128#0 ] 1: zp[2]:81 [ sin16s::x3#0 ] 1: zp[2]:99 [ sin16s::usinx#1 ] 0.64: zp[2]:73 [ sin16s::x1#0 ] 0.33: zp[2]:87 [ sin16s::usinx#0 ] 0.06: zp[1]:22 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen] 25.67: zp[2]:14 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 22: zp[2]:67 [ sin16s_gen::$2 ] 15.12: zp[4]:16 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 12.05: zp[2]:20 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 1.18: zp[4]:61 [ sin16s_gen::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]:29 [ 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[2]:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:75 [ mulu16_sel::return#0 ] 4: zp[2]:79 [ mulu16_sel::return#1 ] 4: zp[2]:83 [ mulu16_sel::return#2 ] 4: zp[2]:89 [ mulu16_sel::return#10 ] 4: zp[2]:93 [ mulu16_sel::return#11 ] 4: zp[4]:107 [ mulu16_sel::$0 ] 4: zp[4]:111 [ mulu16_sel::$1 ] 1.71: zp[2]:115 [ mulu16_sel::return#12 ] 0.33: zp[1]:33 [ mulu16_sel::select#5 ] -Uplift Scope [memset] 36.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [main] 26: zp[2]:2 [ main::st1#2 main::st1#1 ] 6.6: zp[2]:51 [ main::sw#0 ] -Uplift Scope [print_byte] 10: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:55 [ print_byte::$0 ] 4: zp[1]:56 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sword] 10.83: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplift Scope [div32u16u] 4: zp[4]:57 [ div32u16u::return#2 ] 4: zp[2]:124 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:126 [ div32u16u::return#0 ] 0.8: zp[2]:120 [ div32u16u::quotient_hi#0 ] -Uplift Scope [print_word] 2: zp[2]:53 [ print_word::w#0 ] +Uplift Scope [mul16u] 350,016,670.33: zp[4]:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:40 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:117 [ mul16u::$1 ] 167,200,002.5: zp[2]:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 200,002: zp[4]:103 [ mul16u::return#2 ] 100,001: zp[2]:101 [ mul16u::b#0 ] +Uplift Scope [divr16u] 901,347.42: zp[2]:44 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 318,146.32: zp[2]:48 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:130 [ divr16u::$1 ] 200,002: zp[1]:131 [ divr16u::$2 ] 165,386.27: zp[1]:50 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:46 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:118 [ divr16u::return#2 ] 2,002: zp[2]:122 [ divr16u::return#3 ] +Uplift Scope [print_char] 1,600,007: zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [] 1,295,742.16: zp[2]:9 [ print_char_cursor#35 print_char_cursor#55 print_char_cursor#13 print_char_cursor#51 print_char_cursor#21 print_char_cursor#2 print_char_cursor#1 ] 2,200.4: zp[2]:132 [ rem16u#1 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 200,002: zp[4]:107 [ mulu16_sel::$0 ] 200,002: zp[4]:111 [ mulu16_sel::$1 ] 150,010.5: zp[2]:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:115 [ mulu16_sel::return#12 ] 20,002: zp[2]:75 [ mulu16_sel::return#0 ] 20,002: zp[2]:79 [ mulu16_sel::return#1 ] 20,002: zp[2]:83 [ mulu16_sel::return#2 ] 20,002: zp[2]:89 [ mulu16_sel::return#10 ] 20,002: zp[2]:93 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:33 [ mulu16_sel::select#5 ] +Uplift Scope [print_byte] 200,002: zp[1]:55 [ print_byte::$0 ] 200,002: zp[1]:56 [ print_byte::$2 ] 95,005: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_str] 301,254.25: zp[2]:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:69 [ sin16s::$4 ] 20,002: zp[2]:77 [ sin16s::x2#0 ] 20,002: zp[2]:85 [ sin16s::x3_6#0 ] 20,002: zp[2]:91 [ sin16s::x4#0 ] 20,002: zp[2]:95 [ sin16s::x5#0 ] 20,002: zp[2]:97 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:81 [ sin16s::x3#0 ] 5,000.5: zp[2]:99 [ sin16s::usinx#1 ] 3,182.14: zp[2]:73 [ sin16s::x1#0 ] 2,002: zp[2]:65 [ sin16s::return#0 ] 1,666.83: zp[2]:87 [ sin16s::usinx#0 ] 303.06: zp[1]:22 [ sin16s::isUpper#2 ] +Uplift Scope [memset] 33,336.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 7,001: zp[2]:53 [ print_word::w#0 ] +Uplift Scope [sin16s_gen] 2,335.67: zp[2]:14 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 2,002: zp[2]:67 [ sin16s_gen::$2 ] 1,376.38: zp[4]:16 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 1,096.33: zp[2]:20 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 100.18: zp[4]:61 [ sin16s_gen::step#0 ] +Uplift Scope [print_sword] 4,521.33: zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [div32u16u] 2,002: zp[2]:124 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:120 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:126 [ div32u16u::return#0 ] 202: zp[4]:57 [ div32u16u::return#2 ] +Uplift Scope [main] 238.73: zp[2]:2 [ main::st1#2 main::st1#1 ] 60.6: zp[2]:51 [ main::sw#0 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplifting [mul16u] best 25385 combination zp[4]:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:40 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp[4]:103 [ mul16u::return#2 ] zp[2]:101 [ mul16u::b#0 ] -Uplifting [print_str] best 25385 combination zp[2]:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] Uplifting [divr16u] best 25175 combination zp[2]:44 [ 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[2]:48 [ 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[2]:46 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:118 [ divr16u::return#2 ] zp[2]:122 [ divr16u::return#3 ] -Uplifting [] best 25175 combination zp[2]:9 [ print_char_cursor#35 print_char_cursor#55 print_char_cursor#13 print_char_cursor#51 print_char_cursor#21 print_char_cursor#2 print_char_cursor#1 ] zp[2]:132 [ rem16u#1 ] -Uplifting [sin16s] best 25166 combination zp[4]:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:65 [ sin16s::return#0 ] zp[2]:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:69 [ sin16s::$4 ] zp[2]:77 [ sin16s::x2#0 ] zp[2]:85 [ sin16s::x3_6#0 ] zp[2]:91 [ sin16s::x4#0 ] zp[2]:95 [ sin16s::x5#0 ] zp[2]:97 [ sin16s::x5_128#0 ] zp[2]:81 [ sin16s::x3#0 ] zp[2]:99 [ sin16s::usinx#1 ] zp[2]:73 [ sin16s::x1#0 ] zp[2]:87 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen] best 25166 combination zp[2]:14 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:67 [ sin16s_gen::$2 ] zp[4]:16 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:20 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:61 [ sin16s_gen::step#0 ] -Uplifting [mulu16_sel] best 25150 combination zp[2]:29 [ 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[2]:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:75 [ mulu16_sel::return#0 ] zp[2]:79 [ mulu16_sel::return#1 ] zp[2]:83 [ mulu16_sel::return#2 ] zp[2]:89 [ mulu16_sel::return#10 ] zp[2]:93 [ mulu16_sel::return#11 ] zp[4]:107 [ mulu16_sel::$0 ] zp[4]:111 [ mulu16_sel::$1 ] zp[2]:115 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [memset] best 25150 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] -Uplifting [main] best 25150 combination zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:51 [ main::sw#0 ] -Uplifting [print_byte] best 25136 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 25121 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sword] best 25121 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [div32u16u] best 25121 combination zp[4]:57 [ div32u16u::return#2 ] zp[2]:124 [ div32u16u::quotient_lo#0 ] zp[4]:126 [ div32u16u::return#0 ] zp[2]:120 [ div32u16u::quotient_hi#0 ] -Uplifting [print_word] best 25121 combination zp[2]:53 [ print_word::w#0 ] -Uplifting [RADIX] best 25121 combination -Uplifting [print_cls] best 25121 combination +Uplifting [print_char] best 25160 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [] best 25160 combination zp[2]:9 [ print_char_cursor#35 print_char_cursor#55 print_char_cursor#13 print_char_cursor#51 print_char_cursor#21 print_char_cursor#2 print_char_cursor#1 ] zp[2]:132 [ rem16u#1 ] +Uplifting [mulu16_sel] best 25144 combination zp[2]:29 [ 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[4]:107 [ mulu16_sel::$0 ] zp[4]:111 [ mulu16_sel::$1 ] zp[2]:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:115 [ mulu16_sel::return#12 ] zp[2]:75 [ mulu16_sel::return#0 ] zp[2]:79 [ mulu16_sel::return#1 ] zp[2]:83 [ mulu16_sel::return#2 ] zp[2]:89 [ mulu16_sel::return#10 ] zp[2]:93 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [print_byte] best 25126 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_str] best 25126 combination zp[2]:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [sin16s] best 25117 combination zp[4]:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:69 [ sin16s::$4 ] zp[2]:77 [ sin16s::x2#0 ] zp[2]:85 [ sin16s::x3_6#0 ] zp[2]:91 [ sin16s::x4#0 ] zp[2]:95 [ sin16s::x5#0 ] zp[2]:97 [ sin16s::x5_128#0 ] zp[2]:81 [ sin16s::x3#0 ] zp[2]:99 [ sin16s::usinx#1 ] zp[2]:73 [ sin16s::x1#0 ] zp[2]:65 [ sin16s::return#0 ] zp[2]:87 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [memset] best 25117 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 25117 combination zp[2]:53 [ print_word::w#0 ] +Uplifting [sin16s_gen] best 25117 combination zp[2]:14 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:67 [ sin16s_gen::$2 ] zp[4]:16 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:20 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:61 [ sin16s_gen::step#0 ] +Uplifting [print_sword] best 25117 combination zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [div32u16u] best 25117 combination zp[2]:124 [ div32u16u::quotient_lo#0 ] zp[2]:120 [ div32u16u::quotient_hi#0 ] zp[4]:126 [ div32u16u::return#0 ] zp[4]:57 [ div32u16u::return#2 ] +Uplifting [main] best 25117 combination zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:51 [ main::sw#0 ] +Uplifting [RADIX] best 25117 combination +Uplifting [print_cls] best 25117 combination Coalescing zero page register [ zp[2]:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:99 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:29 [ 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[2]:81 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:44 [ 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[2]:132 [ rem16u#1 ] ] - score: 2 @@ -4665,8 +4659,7 @@ print_char: { print_word: { .label w = 4 // [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [43] call print_byte // [47] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -4676,8 +4669,7 @@ print_word: { // print_word::@1 __b1: // [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [45] call print_byte // [47] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -5733,15 +5725,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:38 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:38 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:30 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:30 4.0 +(dword) div32u16u::return#0 return zp[4]:30 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:30 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -5750,30 +5742,30 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:28 2.75 -(word) divr16u::dividend#3 dividend zp[2]:28 5.0 -(word) divr16u::dividend#5 dividend zp[2]:28 2.0 +(word) divr16u::dividend#0 dividend zp[2]:28 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:28 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:28 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:38 16.5 -(word) divr16u::quotient#2 quotient zp[2]:38 11.0 -(word) divr16u::quotient#3 quotient zp[2]:38 2.75 +(word) divr16u::quotient#1 quotient zp[2]:38 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:38 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:38 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:26 8.25 -(word) divr16u::rem#1 rem zp[2]:26 22.0 -(word) divr16u::rem#10 rem zp[2]:26 4.0 -(word) divr16u::rem#11 rem zp[2]:26 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:26 22.0 -(word) divr16u::rem#4 rem zp[2]:26 4.0 -(word) divr16u::rem#5 rem zp[2]:26 24.0 -(word) divr16u::rem#6 rem zp[2]:26 11.0 +(word) divr16u::rem#0 rem zp[2]:26 75000.75 +(word) divr16u::rem#1 rem zp[2]:26 200002.0 +(word) divr16u::rem#10 rem zp[2]:26 11002.0 +(word) divr16u::rem#11 rem zp[2]:26 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:26 200002.0 +(word) divr16u::rem#4 rem zp[2]:26 2002.0 +(word) divr16u::rem#5 rem zp[2]:26 210003.0 +(word) divr16u::rem#6 rem zp[2]:26 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:38 5.285714285714286 -(word) divr16u::return#2 return zp[2]:38 4.0 -(word) divr16u::return#3 return zp[2]:38 4.0 +(word) divr16u::return#0 return zp[2]:38 43143.57142857143 +(word) divr16u::return#2 return zp[2]:38 2002.0 +(word) divr16u::return#3 return zp[2]:38 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -5785,12 +5777,12 @@ FINAL SYMBOL TABLE (label) main::@return (const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) } (signed word*) main::st1 -(signed word*) main::st1#1 st1 zp[2]:2 22.0 -(signed word*) main::st1#2 st1 zp[2]:2 4.0 +(signed word*) main::st1#1 st1 zp[2]:2 202.0 +(signed word*) main::st1#2 st1 zp[2]:2 36.72727272727273 (const byte*) main::str[(byte) 4] = (byte*) " " (const byte*) main::str1[(byte) 2] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:4 6.6000000000000005 +(signed word) main::sw#0 sw zp[2]:4 60.599999999999994 (const word) main::wavelength = (word) $78 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -5799,8 +5791,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -5809,78 +5801,78 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:38 101.0 -(word) mul16u::a#1 a zp[2]:38 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:38 67.66666666666666 +(word) mul16u::a#0 a zp[2]:38 1.00000001E8 +(word) mul16u::a#1 a zp[2]:38 366667.3333333334 +(word) mul16u::a#2 a zp[2]:38 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:28 2.0 +(word) mul16u::b#0 b zp[2]:28 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:22 4.0 -(dword) mul16u::mb#1 mb zp[4]:22 202.0 -(dword) mul16u::mb#2 mb zp[4]:22 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:22 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:22 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:22 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:34 202.0 -(dword) mul16u::res#2 res zp[4]:34 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:34 101.0 +(dword) mul16u::res#1 res zp[4]:34 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:34 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:34 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:34 4.0 +(dword) mul16u::return#2 return zp[4]:34 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:34 4.0 -(dword~) mulu16_sel::$1 zp[4]:34 4.0 +(dword~) mulu16_sel::$0 zp[4]:34 200002.0 +(dword~) mulu16_sel::$1 zp[4]:34 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:38 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#11 return zp[2]:38 4.0 -(word) mulu16_sel::return#12 return zp[2]:38 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:38 4.0 +(word) mulu16_sel::return#0 return zp[2]:38 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#11 return zp[2]:38 20002.0 +(word) mulu16_sel::return#12 return zp[2]:38 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:38 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:26 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:26 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:26 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:26 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:28 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:28 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 0.7083333333333334 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:6 46.714285714285715 -(byte*) print_char_cursor#21 print_char_cursor zp[2]:6 6.6000000000000005 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 5.200000000000001 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:6 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 100001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 50004.333333333336 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:6 43029.42857142857 +(byte*) print_char_cursor#21 print_char_cursor zp[2]:6 60.599999999999994 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 1101003.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 440.79999999999995 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:6 1203.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -5892,9 +5884,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:8 202.0 -(byte*) print_str::str#3 str zp[2]:8 101.5 -(byte*) print_str::str#5 str zp[2]:8 2.0 +(byte*) print_str::str#0 str zp[2]:8 200002.0 +(byte*) print_str::str#3 str zp[2]:8 100251.25 +(byte*) print_str::str#5 str zp[2]:8 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -5902,18 +5894,18 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:4 4.0 -(signed word) print_sword::w#1 w zp[2]:4 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:4 4.0 +(signed word) print_sword::w#0 w zp[2]:4 2002.0 +(signed word) print_sword::w#1 w zp[2]:4 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:4 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 7001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:26 0.8 +(word) rem16u#1 rem16u zp[2]:26 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:34 4.0 +(dword~) sin16s::$4 zp[4]:34 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -5928,55 +5920,55 @@ FINAL SYMBOL TABLE (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:20 22.0 -(signed word) sin16s::return#1 return zp[2]:20 5.0 -(signed word) sin16s::return#5 return zp[2]:20 4.0 +(signed word) sin16s::return#0 return zp[2]:20 2002.0 +(signed word) sin16s::return#1 return zp[2]:20 7001.0 +(signed word) sin16s::return#5 return zp[2]:20 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:20 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:20 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:20 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:20 1.0 +(word) sin16s::usinx#0 usinx zp[2]:20 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:20 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:16 8.5 -(dword) sin16s::x#1 x zp[4]:16 4.0 -(dword) sin16s::x#2 x zp[4]:16 4.0 -(dword) sin16s::x#4 x zp[4]:16 5.0 -(dword) sin16s::x#6 x zp[4]:16 6.0 +(dword) sin16s::x#0 x zp[4]:16 15502.0 +(dword) sin16s::x#1 x zp[4]:16 20002.0 +(dword) sin16s::x#2 x zp[4]:16 20002.0 +(dword) sin16s::x#4 x zp[4]:16 25002.5 +(dword) sin16s::x#6 x zp[4]:16 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:40 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:40 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:26 4.0 +(word) sin16s::x2#0 x2 zp[2]:26 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:26 1.0 +(word) sin16s::x3#0 x3 zp[2]:26 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:38 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:38 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:26 4.0 +(word) sin16s::x4#0 x4 zp[2]:26 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:38 4.0 +(word) sin16s::x5#0 x5 zp[2]:38 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:38 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:38 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:20 22.0 +(signed word~) sin16s_gen::$2 zp[2]:20 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:8 22.0 -(word) sin16s_gen::i#2 i zp[2]:8 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:8 2002.0 +(word) sin16s_gen::i#2 i zp[2]:8 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:14 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:14 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:14 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:14 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:30 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:30 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:10 11.0 -(dword) sin16s_gen::x#2 x zp[4]:10 4.125 +(dword) sin16s_gen::x#1 x zp[4]:10 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:10 375.375 zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] @@ -6006,7 +5998,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 21267 +Score: 21263 // File Comments // Generates a 16-bit signed sinus @@ -6258,8 +6250,7 @@ print_word: { .label w = 4 // print_byte(>w) // [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [43] call print_byte // [47] phi from print_word to print_byte [phi:print_word->print_byte] // [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy @@ -6267,8 +6258,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/sinusgen16.sym b/src/test/ref/sinusgen16.sym index 08b76d2f0..b251b054e 100644 --- a/src/test/ref/sinusgen16.sym +++ b/src/test/ref/sinusgen16.sym @@ -17,15 +17,15 @@ (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:38 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:38 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:30 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:30 4.0 +(dword) div32u16u::return#0 return zp[4]:30 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:30 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -34,30 +34,30 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:28 2.75 -(word) divr16u::dividend#3 dividend zp[2]:28 5.0 -(word) divr16u::dividend#5 dividend zp[2]:28 2.0 +(word) divr16u::dividend#0 dividend zp[2]:28 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:28 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:28 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:38 16.5 -(word) divr16u::quotient#2 quotient zp[2]:38 11.0 -(word) divr16u::quotient#3 quotient zp[2]:38 2.75 +(word) divr16u::quotient#1 quotient zp[2]:38 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:38 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:38 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:26 8.25 -(word) divr16u::rem#1 rem zp[2]:26 22.0 -(word) divr16u::rem#10 rem zp[2]:26 4.0 -(word) divr16u::rem#11 rem zp[2]:26 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:26 22.0 -(word) divr16u::rem#4 rem zp[2]:26 4.0 -(word) divr16u::rem#5 rem zp[2]:26 24.0 -(word) divr16u::rem#6 rem zp[2]:26 11.0 +(word) divr16u::rem#0 rem zp[2]:26 75000.75 +(word) divr16u::rem#1 rem zp[2]:26 200002.0 +(word) divr16u::rem#10 rem zp[2]:26 11002.0 +(word) divr16u::rem#11 rem zp[2]:26 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:26 200002.0 +(word) divr16u::rem#4 rem zp[2]:26 2002.0 +(word) divr16u::rem#5 rem zp[2]:26 210003.0 +(word) divr16u::rem#6 rem zp[2]:26 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:38 5.285714285714286 -(word) divr16u::return#2 return zp[2]:38 4.0 -(word) divr16u::return#3 return zp[2]:38 4.0 +(word) divr16u::return#0 return zp[2]:38 43143.57142857143 +(word) divr16u::return#2 return zp[2]:38 2002.0 +(word) divr16u::return#3 return zp[2]:38 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -69,12 +69,12 @@ (label) main::@return (const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) } (signed word*) main::st1 -(signed word*) main::st1#1 st1 zp[2]:2 22.0 -(signed word*) main::st1#2 st1 zp[2]:2 4.0 +(signed word*) main::st1#1 st1 zp[2]:2 202.0 +(signed word*) main::st1#2 st1 zp[2]:2 36.72727272727273 (const byte*) main::str[(byte) 4] = (byte*) " " (const byte*) main::str1[(byte) 2] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:4 6.6000000000000005 +(signed word) main::sw#0 sw zp[2]:4 60.599999999999994 (const word) main::wavelength = (word) $78 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -83,8 +83,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:8 22.0 -(byte*) memset::dst#2 dst zp[2]:8 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:8 20002.0 +(byte*) memset::dst#2 dst zp[2]:8 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -93,78 +93,78 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:38 101.0 -(word) mul16u::a#1 a zp[2]:38 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:38 67.66666666666666 +(word) mul16u::a#0 a zp[2]:38 1.00000001E8 +(word) mul16u::a#1 a zp[2]:38 366667.3333333334 +(word) mul16u::a#2 a zp[2]:38 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:28 2.0 +(word) mul16u::b#0 b zp[2]:28 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:22 4.0 -(dword) mul16u::mb#1 mb zp[4]:22 202.0 -(dword) mul16u::mb#2 mb zp[4]:22 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:22 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:22 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:22 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:34 202.0 -(dword) mul16u::res#2 res zp[4]:34 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:34 101.0 +(dword) mul16u::res#1 res zp[4]:34 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:34 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:34 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:34 4.0 +(dword) mul16u::return#2 return zp[4]:34 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:34 4.0 -(dword~) mulu16_sel::$1 zp[4]:34 4.0 +(dword~) mulu16_sel::$0 zp[4]:34 200002.0 +(dword~) mulu16_sel::$1 zp[4]:34 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:38 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:26 4.0 -(word) mulu16_sel::return#11 return zp[2]:38 4.0 -(word) mulu16_sel::return#12 return zp[2]:38 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:38 4.0 +(word) mulu16_sel::return#0 return zp[2]:38 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:26 20002.0 +(word) mulu16_sel::return#11 return zp[2]:38 20002.0 +(word) mulu16_sel::return#12 return zp[2]:38 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:38 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:26 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:26 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:26 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:26 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:26 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:26 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:28 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:28 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:28 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 0.7083333333333334 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:6 46.714285714285715 -(byte*) print_char_cursor#21 print_char_cursor zp[2]:6 6.6000000000000005 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 6.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 5.200000000000001 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:6 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 100001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 50004.333333333336 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:6 43029.42857142857 +(byte*) print_char_cursor#21 print_char_cursor zp[2]:6 60.599999999999994 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 1101003.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:6 440.79999999999995 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:6 1203.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -176,9 +176,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:8 202.0 -(byte*) print_str::str#3 str zp[2]:8 101.5 -(byte*) print_str::str#5 str zp[2]:8 2.0 +(byte*) print_str::str#0 str zp[2]:8 200002.0 +(byte*) print_str::str#3 str zp[2]:8 100251.25 +(byte*) print_str::str#5 str zp[2]:8 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -186,18 +186,18 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:4 4.0 -(signed word) print_sword::w#1 w zp[2]:4 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:4 4.0 +(signed word) print_sword::w#0 w zp[2]:4 2002.0 +(signed word) print_sword::w#1 w zp[2]:4 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:4 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 7001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:26 0.8 +(word) rem16u#1 rem16u zp[2]:26 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:34 4.0 +(dword~) sin16s::$4 zp[4]:34 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -212,55 +212,55 @@ (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:20 22.0 -(signed word) sin16s::return#1 return zp[2]:20 5.0 -(signed word) sin16s::return#5 return zp[2]:20 4.0 +(signed word) sin16s::return#0 return zp[2]:20 2002.0 +(signed word) sin16s::return#1 return zp[2]:20 7001.0 +(signed word) sin16s::return#5 return zp[2]:20 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:20 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:20 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:20 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:20 1.0 +(word) sin16s::usinx#0 usinx zp[2]:20 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:20 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:16 8.5 -(dword) sin16s::x#1 x zp[4]:16 4.0 -(dword) sin16s::x#2 x zp[4]:16 4.0 -(dword) sin16s::x#4 x zp[4]:16 5.0 -(dword) sin16s::x#6 x zp[4]:16 6.0 +(dword) sin16s::x#0 x zp[4]:16 15502.0 +(dword) sin16s::x#1 x zp[4]:16 20002.0 +(dword) sin16s::x#2 x zp[4]:16 20002.0 +(dword) sin16s::x#4 x zp[4]:16 25002.5 +(dword) sin16s::x#6 x zp[4]:16 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:40 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:40 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:26 4.0 +(word) sin16s::x2#0 x2 zp[2]:26 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:26 1.0 +(word) sin16s::x3#0 x3 zp[2]:26 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:38 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:38 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:26 4.0 +(word) sin16s::x4#0 x4 zp[2]:26 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:38 4.0 +(word) sin16s::x5#0 x5 zp[2]:38 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:38 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:38 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:20 22.0 +(signed word~) sin16s_gen::$2 zp[2]:20 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:8 22.0 -(word) sin16s_gen::i#2 i zp[2]:8 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:8 2002.0 +(word) sin16s_gen::i#2 i zp[2]:8 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:14 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:14 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:14 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:14 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:30 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:30 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:10 11.0 -(dword) sin16s_gen::x#2 x zp[4]:10 4.125 +(dword) sin16s_gen::x#1 x zp[4]:10 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:10 375.375 zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] diff --git a/src/test/ref/sinusgen16b.asm b/src/test/ref/sinusgen16b.asm index d4b254aa3..63a4a3af1 100644 --- a/src/test/ref/sinusgen16b.asm +++ b/src/test/ref/sinusgen16b.asm @@ -16,19 +16,21 @@ .label print_line_cursor = $400 // Remainder after unsigned 16-bit division .label rem16u = $b - .label print_char_cursor = 8 + .label print_char_cursor = 9 main: { .label wavelength = $78 - .label sw = 6 + .label sw = 7 .label st1 = 2 .label st2 = 4 + .label i = 6 // sin16s_gen(sintab1, wavelength) jsr sin16s_gen // sin16s_genb(sintab2, wavelength) jsr sin16s_genb // print_cls() jsr print_cls - ldx #0 + lda #0 + sta.z i lda #print_line_cursor @@ -86,8 +88,9 @@ main: { inc.z st2+1 !: // for( byte i: 0..119) - inx - cpx #$78 + inc.z i + lda #$78 + cmp.z i bne __b1 // } rts @@ -127,9 +130,9 @@ print_str: { jmp __b1 } // Print a signed word as HEX -// print_sword(signed word zp(6) w) +// print_sword(signed word zp(7) w) print_sword: { - .label w = 6 + .label w = 7 // if(w<0) lda.z w+1 bmi __b1 @@ -170,26 +173,23 @@ print_char: { rts } // Print a word as HEX -// print_word(word zp(6) w) +// print_word(word zp(7) w) print_word: { - .label w = 6 + .label w = 7 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -201,10 +201,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index c8e8323f2..b01948e76 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -1989,185 +1989,185 @@ Inversing boolean not [305] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 = Inversing boolean not [321] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [320] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Inversing boolean not [447] (bool~) main::$5 ← (signed word) main::sw#0 < (signed byte) 0 from [446] (bool~) main::$4 ← (signed word) main::sw#0 >= (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#14 (word) rem16u#2 -Alias (word) divr16u::dividend#1 = (word~) div32u16u::$0 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (dword) div32u16u::dividend#2 = (dword) div32u16u::dividend#3 -Alias (word) div32u16u::divisor#2 = (word) div32u16u::divisor#3 -Alias (word) rem16u#15 = (word) rem16u#3 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$2 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#16 = (word) rem16u#4 (word) rem16u#17 (word) rem16u#5 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#4 (dword) div32u16u::return#1 -Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#5 -Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#3 -Alias (signed word*) sin16s_gen::sintab#5 = (signed word*) sin16s_gen::sintab#6 -Alias (word) rem16u#18 = (word) rem16u#6 -Alias (dword) sin16s_gen::step#0 = (dword~) sin16s_gen::$0 -Alias (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#4 (dword) sin16s_gen::x#3 -Alias (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 -Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 (dword) sin16s_gen::step#3 -Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#4 (word) sin16s_gen::i#3 -Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#5 (word) sin16s_gen::wavelength#4 -Alias (word) rem16u#19 = (word) rem16u#38 (word) rem16u#28 (word) rem16u#34 (word) rem16u#7 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$17 -Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$6 -Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#13 -Alias (word) sin16s::x3#0 = (word~) sin16s::$7 (word) sin16s::x3#1 -Alias (word) mulu16_sel::return#14 = (word) mulu16_sel::return#2 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$8 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$9 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mulu16_sel::return#15 = (word) mulu16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$10 -Alias (word) mulu16_sel::return#16 = (word) mulu16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$11 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$12 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$13 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$14 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$18 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 -Alias (byte) mulu16_sel::select#10 = (byte) mulu16_sel::select#11 -Alias (word) mulu16_sel::return#17 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (dword) div32u16u::return#3 = (dword) div32u16u::return#6 -Alias (word) sin16s_genb::wavelength#1 = (word) sin16s_genb::wavelength#3 -Alias (signed word*) sin16s_genb::sintab#5 = (signed word*) sin16s_genb::sintab#6 -Alias (word) rem16u#20 = (word) rem16u#8 -Alias (dword) sin16s_genb::step#0 = (dword~) sin16s_genb::$0 -Alias (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#4 (dword) sin16s_genb::x#3 -Alias (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#3 (signed word*) sin16s_genb::sintab#4 -Alias (dword) sin16s_genb::step#1 = (dword) sin16s_genb::step#2 (dword) sin16s_genb::step#3 -Alias (word) sin16s_genb::i#2 = (word) sin16s_genb::i#4 (word) sin16s_genb::i#3 -Alias (word) sin16s_genb::wavelength#2 = (word) sin16s_genb::wavelength#5 (word) sin16s_genb::wavelength#4 -Alias (word) rem16u#21 = (word) rem16u#39 (word) rem16u#30 (word) rem16u#35 (word) rem16u#9 -Alias (word) sin16sb::x#0 = (word~) sin16s_genb::$2 -Alias (signed word) sin16sb::return#0 = (signed word) sin16sb::return#3 -Alias (dword) sin16s_genb::x#1 = (dword~) sin16s_genb::$4 -Alias (word) sin16sb::x#3 = (word) sin16sb::x#5 -Alias (word) sin16sb::x#1 = (word~) sin16sb::$16 -Alias (word) sin16sb::x1#0 = (word~) sin16sb::$4 (word) sin16sb::x1#1 (word) sin16sb::x1#4 (word) sin16sb::x1#2 (word) sin16sb::x1#3 -Alias (word) mulu16_sel::return#18 = (word) mulu16_sel::return#7 -Alias (byte) sin16sb::isUpper#2 = (byte) sin16sb::isUpper#6 (byte) sin16sb::isUpper#7 (byte) sin16sb::isUpper#5 (byte) sin16sb::isUpper#4 (byte) sin16sb::isUpper#3 -Alias (word) sin16sb::x2#0 = (word~) sin16sb::$5 -Alias (word) mulu16_sel::return#19 = (word) mulu16_sel::return#8 -Alias (word) sin16sb::x3#0 = (word~) sin16sb::$6 (word) sin16sb::x3#1 -Alias (word) mulu16_sel::return#20 = (word) mulu16_sel::return#9 -Alias (word) sin16sb::x3_6#0 = (word~) sin16sb::$7 -Alias (word) sin16sb::usinx#0 = (word~) sin16sb::$8 (word) sin16sb::usinx#4 (word) sin16sb::usinx#2 -Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#21 -Alias (word) sin16sb::x4#0 = (word~) sin16sb::$9 -Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#22 -Alias (word) sin16sb::x5#0 = (word~) sin16sb::$10 -Alias (word) sin16sb::x5_128#0 = (word~) sin16sb::$11 -Alias (word) sin16sb::usinx#1 = (word~) sin16sb::$12 (word) sin16sb::usinx#3 -Alias (signed word) sin16sb::sinx#0 = (signed word~) sin16sb::$13 -Alias (word) sin16sb::x#4 = (word) sin16sb::x#7 -Alias (byte) sin16sb::isUpper#8 = (byte) sin16sb::isUpper#9 -Alias (word) sin16sb::x#2 = (word~) sin16sb::$17 -Alias (signed word) sin16sb::return#1 = (signed word) sin16sb::sinx#2 (signed word) sin16sb::return#4 (signed word) sin16sb::return#2 -Alias (signed word) sin16sb::sinx#1 = (signed word~) sin16sb::$19 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (word) rem16u#0 = (word) rem16u#37 (word) rem16u#33 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#53 (byte*) print_screen#6 -Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 (byte*) print_char_cursor#24 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#46 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#3 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#31 (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#32 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#12 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#15 (byte*) print_line_cursor#6 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#16 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 (byte*) print_screen#5 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 (byte*) print_line_cursor#15 -Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#58 -Alias (word) rem16u#10 = (word) rem16u#22 -Alias (word) rem16u#11 = (word) rem16u#23 (word) rem16u#43 -Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#38 -Alias (signed word) main::sw#0 = (signed word~) main::$3 (signed word) main::sw#3 (signed word) main::sw#2 -Alias (signed word*) main::st1#3 = (signed word*) main::st1#4 (signed word*) main::st1#5 -Alias (signed word*) main::st2#3 = (signed word*) main::st2#4 (signed word*) main::st2#5 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (word) rem16u#12 = (word) rem16u#36 (word) rem16u#40 (word) rem16u#32 (word) rem16u#24 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#16 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#42 (byte*) print_char_cursor#21 -Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#57 -Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 -Alias (signed word*) main::st2#2 = (signed word*) main::st2#7 (signed word*) main::st2#6 -Alias (byte) main::i#5 = (byte) main::i#7 (byte) main::i#6 -Alias (word) rem16u#41 = (word) rem16u#44 (word) rem16u#42 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 -Alias (word) rem16u#13 = (word) rem16u#25 -Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#43 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#14 rem16u#2 +Alias divr16u::dividend#1 = div32u16u::$0 +Alias divr16u::return#2 = divr16u::return#5 +Alias div32u16u::dividend#2 = div32u16u::dividend#3 +Alias div32u16u::divisor#2 = div32u16u::divisor#3 +Alias rem16u#15 = rem16u#3 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#2 = div32u16u::$2 +Alias divr16u::return#3 = divr16u::return#6 +Alias rem16u#16 = rem16u#4 rem16u#17 rem16u#5 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#4 div32u16u::return#1 +Alias mul16u::a#2 = mul16u::a#3 mul16u::a#6 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#3 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias div32u16u::return#2 = div32u16u::return#5 +Alias sin16s_gen::wavelength#1 = sin16s_gen::wavelength#3 +Alias sin16s_gen::sintab#5 = sin16s_gen::sintab#6 +Alias rem16u#18 = rem16u#6 +Alias sin16s_gen::step#0 = sin16s_gen::$0 +Alias sin16s_gen::x#2 = sin16s_gen::x#4 sin16s_gen::x#3 +Alias sin16s_gen::sintab#2 = sin16s_gen::sintab#3 sin16s_gen::sintab#4 +Alias sin16s_gen::step#1 = sin16s_gen::step#2 sin16s_gen::step#3 +Alias sin16s_gen::i#2 = sin16s_gen::i#4 sin16s_gen::i#3 +Alias sin16s_gen::wavelength#2 = sin16s_gen::wavelength#5 sin16s_gen::wavelength#4 +Alias rem16u#19 = rem16u#38 rem16u#28 rem16u#34 rem16u#7 +Alias sin16s::return#0 = sin16s::return#3 +Alias sin16s_gen::x#1 = sin16s_gen::$3 +Alias sin16s::x#3 = sin16s::x#5 +Alias sin16s::x#1 = sin16s::$17 +Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3 +Alias mulu16_sel::return#0 = mulu16_sel::return#12 +Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3 +Alias sin16s::x2#0 = sin16s::$6 +Alias mulu16_sel::return#1 = mulu16_sel::return#13 +Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1 +Alias mulu16_sel::return#14 = mulu16_sel::return#2 +Alias sin16s::x3_6#0 = sin16s::$8 +Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2 +Alias mulu16_sel::return#15 = mulu16_sel::return#3 +Alias sin16s::x4#0 = sin16s::$10 +Alias mulu16_sel::return#16 = mulu16_sel::return#4 +Alias sin16s::x5#0 = sin16s::$11 +Alias sin16s::x5_128#0 = sin16s::$12 +Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3 +Alias sin16s::sinx#0 = sin16s::$14 +Alias sin16s::x#4 = sin16s::x#7 +Alias sin16s::isUpper#8 = sin16s::isUpper#9 +Alias sin16s::x#2 = sin16s::$18 +Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2 +Alias sin16s::sinx#1 = sin16s::$20 +Alias mul16u::return#2 = mul16u::return#4 +Alias mulu16_sel::select#10 = mulu16_sel::select#11 +Alias mulu16_sel::return#17 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6 +Alias div32u16u::return#3 = div32u16u::return#6 +Alias sin16s_genb::wavelength#1 = sin16s_genb::wavelength#3 +Alias sin16s_genb::sintab#5 = sin16s_genb::sintab#6 +Alias rem16u#20 = rem16u#8 +Alias sin16s_genb::step#0 = sin16s_genb::$0 +Alias sin16s_genb::x#2 = sin16s_genb::x#4 sin16s_genb::x#3 +Alias sin16s_genb::sintab#2 = sin16s_genb::sintab#3 sin16s_genb::sintab#4 +Alias sin16s_genb::step#1 = sin16s_genb::step#2 sin16s_genb::step#3 +Alias sin16s_genb::i#2 = sin16s_genb::i#4 sin16s_genb::i#3 +Alias sin16s_genb::wavelength#2 = sin16s_genb::wavelength#5 sin16s_genb::wavelength#4 +Alias rem16u#21 = rem16u#39 rem16u#30 rem16u#35 rem16u#9 +Alias sin16sb::x#0 = sin16s_genb::$2 +Alias sin16sb::return#0 = sin16sb::return#3 +Alias sin16s_genb::x#1 = sin16s_genb::$4 +Alias sin16sb::x#3 = sin16sb::x#5 +Alias sin16sb::x#1 = sin16sb::$16 +Alias sin16sb::x1#0 = sin16sb::$4 sin16sb::x1#1 sin16sb::x1#4 sin16sb::x1#2 sin16sb::x1#3 +Alias mulu16_sel::return#18 = mulu16_sel::return#7 +Alias sin16sb::isUpper#2 = sin16sb::isUpper#6 sin16sb::isUpper#7 sin16sb::isUpper#5 sin16sb::isUpper#4 sin16sb::isUpper#3 +Alias sin16sb::x2#0 = sin16sb::$5 +Alias mulu16_sel::return#19 = mulu16_sel::return#8 +Alias sin16sb::x3#0 = sin16sb::$6 sin16sb::x3#1 +Alias mulu16_sel::return#20 = mulu16_sel::return#9 +Alias sin16sb::x3_6#0 = sin16sb::$7 +Alias sin16sb::usinx#0 = sin16sb::$8 sin16sb::usinx#4 sin16sb::usinx#2 +Alias mulu16_sel::return#10 = mulu16_sel::return#21 +Alias sin16sb::x4#0 = sin16sb::$9 +Alias mulu16_sel::return#11 = mulu16_sel::return#22 +Alias sin16sb::x5#0 = sin16sb::$10 +Alias sin16sb::x5_128#0 = sin16sb::$11 +Alias sin16sb::usinx#1 = sin16sb::$12 sin16sb::usinx#3 +Alias sin16sb::sinx#0 = sin16sb::$13 +Alias sin16sb::x#4 = sin16sb::x#7 +Alias sin16sb::isUpper#8 = sin16sb::isUpper#9 +Alias sin16sb::x#2 = sin16sb::$17 +Alias sin16sb::return#1 = sin16sb::sinx#2 sin16sb::return#4 sin16sb::return#2 +Alias sin16sb::sinx#1 = sin16sb::$19 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias rem16u#0 = rem16u#37 rem16u#33 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#12 print_char_cursor#53 print_screen#6 +Alias print_str::str#3 = print_str::str#4 +Alias print_char_cursor#2 = print_char_cursor#23 print_char_cursor#44 print_char_cursor#24 +Alias print_char_cursor#45 = print_char_cursor#55 print_char_cursor#46 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#25 = print_char_cursor#3 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#26 = print_char_cursor#4 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#27 = print_char_cursor#5 print_char_cursor#28 print_char_cursor#6 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#29 = print_char_cursor#7 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#30 = print_char_cursor#8 print_char_cursor#31 print_char_cursor#9 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#10 = print_char_cursor#32 +Alias print_char_cursor#11 = print_char_cursor#33 print_char_cursor#34 print_char_cursor#12 +Alias print_char_cursor#13 = print_char_cursor#36 print_char_cursor#14 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#15 print_line_cursor#6 print_char_cursor#37 print_line_cursor#2 print_char_cursor#16 +Alias print_screen#3 = print_screen#4 print_screen#5 +Alias print_line_cursor#10 = print_line_cursor#13 print_line_cursor#15 +Alias print_char_cursor#50 = print_char_cursor#56 print_char_cursor#58 +Alias rem16u#10 = rem16u#22 +Alias rem16u#11 = rem16u#23 rem16u#43 +Alias print_line_cursor#3 = print_line_cursor#7 +Alias print_char_cursor#17 = print_char_cursor#38 +Alias main::sw#0 = main::$3 main::sw#3 main::sw#2 +Alias main::st1#3 = main::st1#4 main::st1#5 +Alias main::st2#3 = main::st2#4 main::st2#5 +Alias main::i#2 = main::i#3 main::i#4 +Alias rem16u#12 = rem16u#36 rem16u#40 rem16u#32 rem16u#24 +Alias print_line_cursor#11 = print_line_cursor#14 print_line_cursor#16 print_line_cursor#8 print_line_cursor#4 +Alias print_char_cursor#18 = print_char_cursor#39 +Alias print_char_cursor#19 = print_char_cursor#40 print_char_cursor#42 print_char_cursor#21 +Alias print_char_cursor#52 = print_char_cursor#57 +Alias main::st1#2 = main::st1#7 main::st1#6 +Alias main::st2#2 = main::st2#7 main::st2#6 +Alias main::i#5 = main::i#7 main::i#6 +Alias rem16u#41 = rem16u#44 rem16u#42 +Alias print_line_cursor#17 = print_line_cursor#19 print_line_cursor#18 +Alias print_char_cursor#20 = print_char_cursor#41 +Alias rem16u#13 = rem16u#25 +Alias print_line_cursor#5 = print_line_cursor#9 +Alias print_char_cursor#22 = print_char_cursor#43 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (word) mul16u::a#2 = (word) mul16u::a#4 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 -Alias (byte) sin16sb::isUpper#2 = (byte) sin16sb::isUpper#8 -Alias (signed word) main::sw#0 = (signed word) main::sw#1 -Alias (signed word*) main::st1#2 = (signed word*) main::st1#3 -Alias (signed word*) main::st2#2 = (signed word*) main::st2#3 -Alias (byte) main::i#2 = (byte) main::i#5 -Alias (word) rem16u#12 = (word) rem16u#41 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#17 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias mul16u::a#2 = mul16u::a#4 +Alias mul16u::mb#2 = mul16u::mb#3 +Alias sin16s::isUpper#2 = sin16s::isUpper#8 +Alias sin16sb::isUpper#2 = sin16sb::isUpper#8 +Alias main::sw#0 = main::sw#1 +Alias main::st1#2 = main::st1#3 +Alias main::st2#2 = main::st2#3 +Alias main::i#2 = main::i#5 +Alias rem16u#12 = rem16u#41 +Alias print_line_cursor#11 = print_line_cursor#17 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6 Identical Phi Values (word) rem16u#15 (word) rem16u#1 @@ -3113,250 +3113,250 @@ VARIABLE REGISTER WEIGHTS (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.5 -(dword) div32u16u::return#2 4.0 -(dword) div32u16u::return#3 4.0 +(dword) div32u16u::return#0 300.75 +(dword) div32u16u::return#2 202.0 +(dword) div32u16u::return#3 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#3 44286.28571428572 +(word) divr16u::dividend#5 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 4.0 -(word) divr16u::rem#5 24.0 -(word) divr16u::rem#6 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 11002.0 +(word) divr16u::rem#11 103334.66666666667 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 2002.0 +(word) divr16u::rem#5 210003.0 +(word) divr16u::rem#6 100001.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 43143.57142857143 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 1.8333333333333333 +(byte) main::i#1 151.5 +(byte) main::i#2 16.833333333333332 (signed word*) main::st1 -(signed word*) main::st1#1 5.5 -(signed word*) main::st1#2 3.3000000000000003 +(signed word*) main::st1#1 50.5 +(signed word*) main::st1#2 30.299999999999997 (signed word*) main::st2 -(signed word*) main::st2#1 7.333333333333333 -(signed word*) main::st2#2 3.0 +(signed word*) main::st2#1 67.33333333333333 +(signed word*) main::st2#2 27.545454545454547 (signed word) main::sw -(signed word) main::sw#0 6.6000000000000005 +(signed word) main::sw#0 60.599999999999994 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 1.3333333333333333 -(word) mul16u::a#2 67.66666666666666 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 366667.3333333334 +(word) mul16u::a#2 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 2.0 +(word) mul16u::b#0 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 50.83333333333333 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 5.0016667333333336E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 +(dword) mul16u::return#2 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#14 4.0 -(word) mulu16_sel::return#15 4.0 -(word) mulu16_sel::return#16 4.0 -(word) mulu16_sel::return#17 1.8333333333333335 -(word) mulu16_sel::return#18 4.0 -(word) mulu16_sel::return#19 4.0 -(word) mulu16_sel::return#20 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#14 20002.0 +(word) mulu16_sel::return#15 20002.0 +(word) mulu16_sel::return#16 20002.0 +(word) mulu16_sel::return#17 16667.583333333332 +(word) mulu16_sel::return#18 20002.0 +(word) mulu16_sel::return#19 20002.0 +(word) mulu16_sel::return#20 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#10 0.3333333333333333 +(byte) mulu16_sel::select#10 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#10 22.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 2.0 -(word) mulu16_sel::v1#6 2.0 -(word) mulu16_sel::v1#7 4.0 -(word) mulu16_sel::v1#8 2.0 -(word) mulu16_sel::v1#9 2.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#10 200011.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 10001.0 +(word) mulu16_sel::v1#6 10001.0 +(word) mulu16_sel::v1#7 20002.0 +(word) mulu16_sel::v1#8 10001.0 +(word) mulu16_sel::v1#9 10001.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#10 9.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 4.0 -(word) mulu16_sel::v2#6 4.0 -(word) mulu16_sel::v2#8 4.0 -(word) mulu16_sel::v2#9 4.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#10 90004.5 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 20002.0 +(word) mulu16_sel::v2#6 20002.0 +(word) mulu16_sel::v2#8 20002.0 +(word) mulu16_sel::v2#9 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 55001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#3 200002.0 +(byte) print_char::ch#4 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#13 0.7083333333333334 -(byte*) print_char_cursor#2 32.7 -(byte*) print_char_cursor#35 6.0 -(byte*) print_char_cursor#51 5.200000000000001 -(byte*) print_char_cursor#52 8.25 -(byte*) print_char_cursor#54 24.0 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#13 50004.333333333336 +(byte*) print_char_cursor#2 30120.6 +(byte*) print_char_cursor#35 1101003.0 +(byte*) print_char_cursor#51 440.79999999999995 +(byte*) print_char_cursor#52 75.75 +(byte*) print_char_cursor#54 1203.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#3 101.5 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#3 100251.25 +(byte*) print_str::str#5 1001.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 2.8333333333333335 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 517.3333333333334 +(signed word) print_sword::w#4 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 7001.0 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 22.0 +(signed word~) sin16s_gen::$2 2002.0 (word) sin16s_gen::i -(word) sin16s_gen::i#1 22.0 -(word) sin16s_gen::i#2 3.666666666666667 +(word) sin16s_gen::i#1 2002.0 +(word) sin16s_gen::i#2 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 1.1818181818181819 +(dword) sin16s_gen::step#0 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 11.0 -(dword) sin16s_gen::x#2 4.125 +(dword) sin16s_gen::x#1 1001.0 +(dword) sin16s_gen::x#2 375.375 (void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength) -(signed word~) sin16s_genb::$3 22.0 +(signed word~) sin16s_genb::$3 2002.0 (word) sin16s_genb::i -(word) sin16s_genb::i#1 22.0 -(word) sin16s_genb::i#2 3.666666666666667 +(word) sin16s_genb::i#1 2002.0 +(word) sin16s_genb::i#2 333.6666666666667 (signed word*) sin16s_genb::sintab -(signed word*) sin16s_genb::sintab#0 7.333333333333333 -(signed word*) sin16s_genb::sintab#2 4.714285714285714 +(signed word*) sin16s_genb::sintab#0 667.3333333333334 +(signed word*) sin16s_genb::sintab#2 429.0 (dword) sin16s_genb::step -(dword) sin16s_genb::step#0 1.1818181818181819 +(dword) sin16s_genb::step#0 100.18181818181819 (word) sin16s_genb::wavelength (dword) sin16s_genb::x -(dword) sin16s_genb::x#1 11.0 -(dword) sin16s_genb::x#2 4.125 +(dword) sin16s_genb::x#1 1001.0 +(dword) sin16s_genb::x#2 375.375 (signed word()) sin16sb((word) sin16sb::x) (byte) sin16sb::isUpper -(byte) sin16sb::isUpper#2 0.0625 +(byte) sin16sb::isUpper#2 312.53125 (signed word) sin16sb::return -(signed word) sin16sb::return#0 22.0 -(signed word) sin16sb::return#1 5.0 -(signed word) sin16sb::return#5 4.0 +(signed word) sin16sb::return#0 2002.0 +(signed word) sin16sb::return#1 7001.0 +(signed word) sin16sb::return#5 20002.0 (signed word) sin16sb::sinx -(signed word) sin16sb::sinx#1 4.0 +(signed word) sin16sb::sinx#1 20002.0 (word) sin16sb::usinx -(word) sin16sb::usinx#0 0.3333333333333333 -(word) sin16sb::usinx#1 1.0 +(word) sin16sb::usinx#0 1666.8333333333333 +(word) sin16sb::usinx#1 5000.5 (word) sin16sb::x -(word) sin16sb::x#0 8.5 -(word) sin16sb::x#1 4.0 -(word) sin16sb::x#2 4.0 -(word) sin16sb::x#4 5.0 -(word) sin16sb::x#6 6.0 +(word) sin16sb::x#0 15502.0 +(word) sin16sb::x#1 20002.0 +(word) sin16sb::x#2 20002.0 +(word) sin16sb::x#4 25002.5 +(word) sin16sb::x#6 30003.0 (word) sin16sb::x1 -(word) sin16sb::x1#0 0.6363636363636365 +(word) sin16sb::x1#0 3182.1363636363635 (word) sin16sb::x2 -(word) sin16sb::x2#0 4.0 +(word) sin16sb::x2#0 20002.0 (word) sin16sb::x3 -(word) sin16sb::x3#0 1.0 +(word) sin16sb::x3#0 5000.5 (word) sin16sb::x3_6 -(word) sin16sb::x3_6#0 4.0 +(word) sin16sb::x3_6#0 20002.0 (word) sin16sb::x4 -(word) sin16sb::x4#0 4.0 +(word) sin16sb::x4#0 20002.0 (word) sin16sb::x5 -(word) sin16sb::x5#0 4.0 +(word) sin16sb::x5#0 20002.0 (word) sin16sb::x5_128 -(word) sin16sb::x5_128#0 4.0 +(word) sin16sb::x5_128#0 20002.0 Initial phi equivalence classes [ main::st1#2 main::st1#1 ] @@ -5428,244 +5428,238 @@ sin16s: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [27] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] { } ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [27] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#52 = print_char_cursor#54 } } main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#54 } } ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#52 = print_char_cursor#54 } } main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#54 } } ) always clobbers reg byte a reg byte y +Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [64] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [66] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [70] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a -Statement [73] if((word) sin16s_genb::i#2<(const word) main::wavelength) goto sin16s_genb::@2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ) always clobbers reg byte a -Statement [75] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [77] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ) always clobbers reg byte a -Statement [78] (signed word~) sin16s_genb::$3 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ) always clobbers reg byte a -Statement [79] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$3 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [80] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [81] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [83] if((word) sin16sb::x#0<(const word) PI_u4f12) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [84] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#1 ] ) always clobbers reg byte a -Statement [86] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [64] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [66] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [70] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#3 } } ) always clobbers reg byte a +Statement [71] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] { } ) always clobbers reg byte a +Statement [73] if((word) sin16s_genb::i#2<(const word) main::wavelength) goto sin16s_genb::@2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] { } ) always clobbers reg byte a +Statement [75] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [77] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [78] (signed word~) sin16s_genb::$3 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] { } ) always clobbers reg byte a +Statement [79] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$3 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [80] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] { } ) always clobbers reg byte a +Statement [81] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] { } ) always clobbers reg byte a +Statement [83] if((word) sin16sb::x#0<(const word) PI_u4f12) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [84] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [86] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#4 sin16sb::isUpper#2 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ sin16sb::isUpper#2 ] -Statement [87] (word) sin16sb::x#2 ← (const word) PI_u4f12 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a -Statement [89] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a -Statement [94] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a -Statement [96] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a -Statement [98] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a -Statement [99] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a -Statement [103] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a -Statement [104] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [109] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a -Statement [110] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a -Statement [111] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a -Statement [113] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [114] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a -Statement [115] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a -Statement [116] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a -Statement [118] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::sinx#1 ] ) always clobbers reg byte a -Statement [121] (signed word) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#5 ] ) always clobbers reg byte a -Statement [123] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a +Statement [87] (word) sin16sb::x#2 ← (const word) PI_u4f12 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x#2 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [89] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [94] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [98] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [99] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [103] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [104] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [106] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [109] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [111] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [113] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [114] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [115] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [116] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [118] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::sinx#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [121] (signed word) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#5 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [123] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ mulu16_sel::select#10 ] Removing always clobbered register reg byte a as potential for zp[1]:60 [ sin16s::isUpper#2 ] -Statement [124] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [126] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a -Statement [127] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [128] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [129] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a -Statement [131] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [133] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [135] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 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#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [143] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [144] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [145] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [147] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [148] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [149] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [154] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [124] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [126] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [127] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [128] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [131] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [133] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [135] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [143] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [144] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [145] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [147] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [148] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [149] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [157] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] -Statement [157] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [161] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [167] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [171] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [172] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [174] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [176] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [178] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [179] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [180] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [181] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [182] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [184] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [185] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [187] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [188] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [190] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [192] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [193] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [196] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [197] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [198] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [200] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [201] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [202] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a -Statement [205] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [206] (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:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [207] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [208] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [210] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a -Statement [211] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [212] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [213] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [215] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a -Statement [216] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [217] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [218] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [220] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [223] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [27] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a -Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] ) always clobbers reg byte y -Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [64] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [66] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [70] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a -Statement [73] if((word) sin16s_genb::i#2<(const word) main::wavelength) goto sin16s_genb::@2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ) always clobbers reg byte a -Statement [75] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [77] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ) always clobbers reg byte a -Statement [78] (signed word~) sin16s_genb::$3 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ) always clobbers reg byte a -Statement [79] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$3 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [80] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [81] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [83] if((word) sin16sb::x#0<(const word) PI_u4f12) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [84] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#1 ] ) always clobbers reg byte a -Statement [86] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a -Statement [87] (word) sin16sb::x#2 ← (const word) PI_u4f12 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a -Statement [89] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a -Statement [94] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a -Statement [96] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a -Statement [98] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a -Statement [99] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a -Statement [103] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a -Statement [104] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [109] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a -Statement [110] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a -Statement [111] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a -Statement [113] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [114] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a -Statement [115] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a -Statement [116] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a -Statement [118] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::sinx#1 ] ) always clobbers reg byte a -Statement [121] (signed word) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#5 ] ) always clobbers reg byte a -Statement [123] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a -Statement [124] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [126] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a -Statement [127] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [128] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [129] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a -Statement [131] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [133] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [135] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 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#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [143] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [144] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [145] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [147] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [148] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [149] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [154] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [157] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [161] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [167] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [171] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [172] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [174] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [176] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [178] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [179] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [180] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [181] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [182] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [184] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [185] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [187] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [188] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [190] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [192] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [193] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [196] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [197] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [198] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [200] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [201] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [202] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a -Statement [205] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [206] (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:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [207] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [208] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [210] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a -Statement [211] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [212] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [213] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [215] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a -Statement [216] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [217] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [218] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [220] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [223] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [161] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [167] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [171] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [172] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [174] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [176] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [178] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [179] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [180] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [181] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [182] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [184] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [185] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [187] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [188] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [190] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [191] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [192] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [193] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [196] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [197] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [198] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [200] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [201] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [202] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [205] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [206] (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:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [207] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [208] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [210] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [211] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [212] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [213] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [215] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [216] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [217] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [218] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [220] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [223] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] { } ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] { } ) always clobbers reg byte a +Statement [27] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#52 = print_char_cursor#54 } } main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#54 } } ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#52 = print_char_cursor#54 } } main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#13 = print_char_cursor#54 } } ) always clobbers reg byte a reg byte y +Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::sw#0 } } ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_char_cursor#35 = print_char_cursor#51 } } main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte y +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::sw#0 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#13 = print_char_cursor#35 } } ) always clobbers reg byte a +Statement [64] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [66] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:60 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [70] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#3 } } ) always clobbers reg byte a +Statement [71] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] { } ) always clobbers reg byte a +Statement [73] if((word) sin16s_genb::i#2<(const word) main::wavelength) goto sin16s_genb::@2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] { } ) always clobbers reg byte a +Statement [75] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [77] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [78] (signed word~) sin16s_genb::$3 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::$3 ] { } ) always clobbers reg byte a +Statement [79] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$3 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [80] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#0 ] { } ) always clobbers reg byte a +Statement [81] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] { } ) always clobbers reg byte a +Statement [83] if((word) sin16sb::x#0<(const word) PI_u4f12) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [84] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [86] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::x#4 sin16sb::isUpper#2 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [87] (word) sin16sb::x#2 ← (const word) PI_u4f12 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x#2 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [89] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } ) always clobbers reg byte a +Statement [94] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [98] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } ) always clobbers reg byte a +Statement [99] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } ) always clobbers reg byte a +Statement [103] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [104] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [106] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [109] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [111] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [113] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [114] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [115] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [116] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [118] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::sinx#1 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [121] (signed word) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:76 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::return#5 ] { { sin16sb::return#0 = sin16sb::return#1 } } ) always clobbers reg byte a +Statement [123] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [124] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [126] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [127] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [128] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 } { mulu16_sel::return#17 = mulu16_sel::return#20 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [131] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [133] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [135] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:92::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#5 mulu16_sel::v1#10 mulu16_sel::v1#5 sin16sb::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#18 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:97::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#6 sin16sb::x2#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#6 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#17 = mulu16_sel::return#19 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:101::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#7 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::return#17 = mulu16_sel::return#20 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:107::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#8 sin16sb::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#8 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_genb:7::sin16sb:76::mulu16_sel:112::mul16u:125 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16sb::return#0 = sin16sb::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#9 sin16sb::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#9 sin16sb::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:194::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:199::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:203::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#14 = mulu16_sel::return#17 } { mul16u::b#0 = mulu16_sel::v2#10 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:209::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:5::sin16s:177::mulu16_sel:214::mul16u:125 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [143] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170 [ divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [144] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [145] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [147] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [148] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [149] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:69 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [157] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [161] if((word) divr16u::rem#6<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [167] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:69::divr16u:142 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:142 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:2::sin16s_genb:7::div32u16u:69::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#3 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:5::div32u16u:170::divr16u:146 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [171] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [172] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [174] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [176] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [178] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [179] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [180] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [181] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [182] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [184] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [185] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [187] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [188] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [190] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [191] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [192] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [193] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#10 mulu16_sel::v1#10 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [196] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [197] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [198] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [200] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#10 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#10 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [201] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [202] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#2 sin16s::x3#0 } { mulu16_sel::return#14 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [205] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [206] (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:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [207] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [208] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [210] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#3 sin16s::x3#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#3 sin16s::x1#0 } { mulu16_sel::return#15 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [211] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [212] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [213] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [215] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#10 = mulu16_sel::v1#4 sin16s::x4#0 } { mulu16_sel::v2#10 = mulu16_sel::v2#4 sin16s::x1#0 } { mulu16_sel::return#16 = mulu16_sel::return#17 } } ) always clobbers reg byte a +Statement [216] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [217] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [218] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [220] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [223] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:177 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::st1#2 main::st1#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::st2#2 main::st2#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x , @@ -5754,45 +5748,45 @@ Potential registers zp[2]:186 [ sin16s::x5_128#0 ] : zp[2]:186 , Potential registers zp[2]:188 [ sin16s::usinx#1 ] : zp[2]:188 , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 353.83: zp[4]:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:41 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:129 [ mul16u::$1 ] 170: zp[2]:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 4: zp[4]:115 [ mul16u::return#2 ] 2: zp[2]:113 [ mul16u::b#0 ] -Uplift Scope [print_str] 305.5: zp[2]:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp[2]: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[2]:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:142 [ divr16u::$1 ] 22: zp[1]:143 [ divr16u::$2 ] 18.19: zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp[2]:130 [ divr16u::return#2 ] 4: zp[2]:134 [ divr16u::return#3 ] -Uplift Scope [] 177.86: zp[2]:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] 0.8: zp[2]:144 [ rem16u#1 ] -Uplift Scope [mulu16_sel] 46: zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] 41: zp[2]:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] 4: zp[2]:87 [ mulu16_sel::return#18 ] 4: zp[2]:91 [ mulu16_sel::return#19 ] 4: zp[2]:95 [ mulu16_sel::return#20 ] 4: zp[2]:101 [ mulu16_sel::return#10 ] 4: zp[2]:105 [ mulu16_sel::return#11 ] 4: zp[4]:119 [ mulu16_sel::$0 ] 4: zp[4]:123 [ mulu16_sel::$1 ] 4: zp[2]:164 [ mulu16_sel::return#0 ] 4: zp[2]:168 [ mulu16_sel::return#1 ] 4: zp[2]:172 [ mulu16_sel::return#14 ] 4: zp[2]:178 [ mulu16_sel::return#15 ] 4: zp[2]:182 [ mulu16_sel::return#16 ] 1.83: zp[2]:127 [ mulu16_sel::return#17 ] 0.33: zp[1]:34 [ mulu16_sel::select#10 ] -Uplift Scope [sin16s] 27.5: zp[4]:61 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:154 [ sin16s::return#0 ] 13: zp[2]:65 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:158 [ sin16s::$4 ] 4: zp[2]:166 [ sin16s::x2#0 ] 4: zp[2]:174 [ sin16s::x3_6#0 ] 4: zp[2]:180 [ sin16s::x4#0 ] 4: zp[2]:184 [ sin16s::x5#0 ] 4: zp[2]:186 [ sin16s::x5_128#0 ] 1: zp[2]:170 [ sin16s::x3#0 ] 1: zp[2]:188 [ sin16s::usinx#1 ] 0.64: zp[2]:162 [ sin16s::x1#0 ] 0.33: zp[2]:176 [ sin16s::usinx#0 ] 0.06: zp[1]:60 [ sin16s::isUpper#2 ] -Uplift Scope [sin16sb] 27.5: zp[2]:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] 22: zp[2]:81 [ sin16sb::return#0 ] 13: zp[2]:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] 4: zp[2]:89 [ sin16sb::x2#0 ] 4: zp[2]:97 [ sin16sb::x3_6#0 ] 4: zp[2]:103 [ sin16sb::x4#0 ] 4: zp[2]:107 [ sin16sb::x5#0 ] 4: zp[2]:109 [ sin16sb::x5_128#0 ] 1: zp[2]:93 [ sin16sb::x3#0 ] 1: zp[2]:111 [ sin16sb::usinx#1 ] 0.64: zp[2]:85 [ sin16sb::x1#0 ] 0.33: zp[2]:99 [ sin16sb::usinx#0 ] 0.06: zp[1]:25 [ sin16sb::isUpper#2 ] -Uplift Scope [sin16s_gen] 25.67: zp[2]:52 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 22: zp[2]:156 [ sin16s_gen::$2 ] 15.12: zp[4]:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 12.05: zp[2]:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 1.18: zp[4]:150 [ sin16s_gen::step#0 ] -Uplift Scope [sin16s_genb] 25.67: zp[2]:17 [ sin16s_genb::i#2 sin16s_genb::i#1 ] 22: zp[2]:83 [ sin16s_genb::$3 ] 15.12: zp[4]:19 [ sin16s_genb::x#2 sin16s_genb::x#1 ] 12.05: zp[2]:23 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] 1.18: zp[4]:77 [ sin16s_genb::step#0 ] -Uplift Scope [main] 18.33: zp[1]:6 [ main::i#2 main::i#1 ] 10.33: zp[2]:4 [ main::st2#2 main::st2#1 ] 8.8: zp[2]:2 [ main::st1#2 main::st1#1 ] 6.6: zp[2]:67 [ main::sw#0 ] -Uplift Scope [memset] 36.67: zp[2]:15 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_byte] 10: zp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:71 [ print_byte::$0 ] 4: zp[1]:72 [ print_byte::$2 ] -Uplift Scope [div32u16u] 4: zp[4]:73 [ div32u16u::return#3 ] 4: zp[2]:136 [ div32u16u::quotient_lo#0 ] 4: zp[4]:146 [ div32u16u::return#2 ] 1.5: zp[4]:138 [ div32u16u::return#0 ] 0.8: zp[2]:132 [ div32u16u::quotient_hi#0 ] -Uplift Scope [print_char] 14: zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sword] 10.83: zp[2]:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplift Scope [print_word] 2: zp[2]:69 [ print_word::w#0 ] +Uplift Scope [mul16u] 350,016,670.33: zp[4]:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:41 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:129 [ mul16u::$1 ] 167,200,002.5: zp[2]:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 200,002: zp[4]:115 [ mul16u::return#2 ] 100,001: zp[2]:113 [ mul16u::b#0 ] +Uplift Scope [divr16u] 901,347.42: zp[2]: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 ] 318,146.32: zp[2]:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:142 [ divr16u::$1 ] 200,002: zp[1]:143 [ divr16u::$2 ] 165,386.27: zp[1]:51 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:130 [ divr16u::return#2 ] 2,002: zp[2]:134 [ divr16u::return#3 ] +Uplift Scope [print_char] 1,600,007: zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [] 1,282,848.48: zp[2]:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] 2,200.4: zp[2]:144 [ rem16u#1 ] +Uplift Scope [mulu16_sel] 320,023: zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] 250,020.5: zp[2]:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] 200,002: zp[4]:119 [ mulu16_sel::$0 ] 200,002: zp[4]:123 [ mulu16_sel::$1 ] 20,002: zp[2]:87 [ mulu16_sel::return#18 ] 20,002: zp[2]:91 [ mulu16_sel::return#19 ] 20,002: zp[2]:95 [ mulu16_sel::return#20 ] 20,002: zp[2]:101 [ mulu16_sel::return#10 ] 20,002: zp[2]:105 [ mulu16_sel::return#11 ] 20,002: zp[2]:164 [ mulu16_sel::return#0 ] 20,002: zp[2]:168 [ mulu16_sel::return#1 ] 20,002: zp[2]:172 [ mulu16_sel::return#14 ] 20,002: zp[2]:178 [ mulu16_sel::return#15 ] 20,002: zp[2]:182 [ mulu16_sel::return#16 ] 16,667.58: zp[2]:127 [ mulu16_sel::return#17 ] 16,666.83: zp[1]:34 [ mulu16_sel::select#10 ] +Uplift Scope [print_byte] 200,002: zp[1]:71 [ print_byte::$0 ] 200,002: zp[1]:72 [ print_byte::$2 ] 95,005: zp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_str] 301,254.25: zp[2]:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:61 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:65 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:158 [ sin16s::$4 ] 20,002: zp[2]:166 [ sin16s::x2#0 ] 20,002: zp[2]:174 [ sin16s::x3_6#0 ] 20,002: zp[2]:180 [ sin16s::x4#0 ] 20,002: zp[2]:184 [ sin16s::x5#0 ] 20,002: zp[2]:186 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:170 [ sin16s::x3#0 ] 5,000.5: zp[2]:188 [ sin16s::usinx#1 ] 3,182.14: zp[2]:162 [ sin16s::x1#0 ] 2,002: zp[2]:154 [ sin16s::return#0 ] 1,666.83: zp[2]:176 [ sin16s::usinx#0 ] 303.06: zp[1]:60 [ sin16s::isUpper#2 ] +Uplift Scope [sin16sb] 110,511.5: zp[2]:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] 47,005: zp[2]:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] 20,002: zp[2]:89 [ sin16sb::x2#0 ] 20,002: zp[2]:97 [ sin16sb::x3_6#0 ] 20,002: zp[2]:103 [ sin16sb::x4#0 ] 20,002: zp[2]:107 [ sin16sb::x5#0 ] 20,002: zp[2]:109 [ sin16sb::x5_128#0 ] 5,000.5: zp[2]:93 [ sin16sb::x3#0 ] 5,000.5: zp[2]:111 [ sin16sb::usinx#1 ] 3,182.14: zp[2]:85 [ sin16sb::x1#0 ] 2,002: zp[2]:81 [ sin16sb::return#0 ] 1,666.83: zp[2]:99 [ sin16sb::usinx#0 ] 312.53: zp[1]:25 [ sin16sb::isUpper#2 ] +Uplift Scope [memset] 33,336.67: zp[2]:15 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 7,001: zp[2]:69 [ print_word::w#0 ] +Uplift Scope [sin16s_gen] 2,335.67: zp[2]:52 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 2,002: zp[2]:156 [ sin16s_gen::$2 ] 1,376.38: zp[4]:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 1,096.33: zp[2]:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 100.18: zp[4]:150 [ sin16s_gen::step#0 ] +Uplift Scope [sin16s_genb] 2,335.67: zp[2]:17 [ sin16s_genb::i#2 sin16s_genb::i#1 ] 2,002: zp[2]:83 [ sin16s_genb::$3 ] 1,376.38: zp[4]:19 [ sin16s_genb::x#2 sin16s_genb::x#1 ] 1,096.33: zp[2]:23 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] 100.18: zp[4]:77 [ sin16s_genb::step#0 ] +Uplift Scope [print_sword] 4,521.33: zp[2]:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [div32u16u] 2,002: zp[2]:136 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:132 [ div32u16u::quotient_hi#0 ] 300.75: zp[4]:138 [ div32u16u::return#0 ] 202: zp[4]:73 [ div32u16u::return#3 ] 202: zp[4]:146 [ div32u16u::return#2 ] +Uplift Scope [main] 168.33: zp[1]:6 [ main::i#2 main::i#1 ] 94.88: zp[2]:4 [ main::st2#2 main::st2#1 ] 80.8: zp[2]:2 [ main::st1#2 main::st1#1 ] 60.6: zp[2]:67 [ main::sw#0 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplifting [mul16u] best 28484 combination zp[4]:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:41 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp[4]:115 [ mul16u::return#2 ] zp[2]:113 [ mul16u::b#0 ] -Uplifting [print_str] best 28484 combination zp[2]:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] Uplifting [divr16u] best 28274 combination zp[2]: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[2]: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[2]:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:130 [ divr16u::return#2 ] zp[2]:134 [ divr16u::return#3 ] -Uplifting [] best 28274 combination zp[2]:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] zp[2]:144 [ rem16u#1 ] -Uplifting [mulu16_sel] best 28243 combination zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp[2]:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp[2]:87 [ mulu16_sel::return#18 ] zp[2]:91 [ mulu16_sel::return#19 ] zp[2]:95 [ mulu16_sel::return#20 ] zp[2]:101 [ mulu16_sel::return#10 ] zp[2]:105 [ mulu16_sel::return#11 ] zp[4]:119 [ mulu16_sel::$0 ] zp[4]:123 [ mulu16_sel::$1 ] zp[2]:164 [ mulu16_sel::return#0 ] zp[2]:168 [ mulu16_sel::return#1 ] zp[2]:172 [ mulu16_sel::return#14 ] zp[2]:178 [ mulu16_sel::return#15 ] zp[2]:182 [ mulu16_sel::return#16 ] zp[2]:127 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] -Uplifting [sin16s] best 28234 combination zp[4]:61 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:154 [ sin16s::return#0 ] zp[2]:65 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:158 [ sin16s::$4 ] zp[2]:166 [ sin16s::x2#0 ] zp[2]:174 [ sin16s::x3_6#0 ] zp[2]:180 [ sin16s::x4#0 ] zp[2]:184 [ sin16s::x5#0 ] zp[2]:186 [ sin16s::x5_128#0 ] zp[2]:170 [ sin16s::x3#0 ] zp[2]:188 [ sin16s::usinx#1 ] zp[2]:162 [ sin16s::x1#0 ] zp[2]:176 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16sb] best 28225 combination zp[2]:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp[2]:81 [ sin16sb::return#0 ] zp[2]:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp[2]:89 [ sin16sb::x2#0 ] zp[2]:97 [ sin16sb::x3_6#0 ] zp[2]:103 [ sin16sb::x4#0 ] zp[2]:107 [ sin16sb::x5#0 ] zp[2]:109 [ sin16sb::x5_128#0 ] zp[2]:93 [ sin16sb::x3#0 ] zp[2]:111 [ sin16sb::usinx#1 ] zp[2]:85 [ sin16sb::x1#0 ] zp[2]:99 [ sin16sb::usinx#0 ] reg byte y [ sin16sb::isUpper#2 ] -Uplifting [sin16s_gen] best 28225 combination zp[2]:52 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:156 [ sin16s_gen::$2 ] zp[4]:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:150 [ sin16s_gen::step#0 ] -Uplifting [sin16s_genb] best 28225 combination zp[2]:17 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp[2]:83 [ sin16s_genb::$3 ] zp[4]:19 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp[2]:23 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp[4]:77 [ sin16s_genb::step#0 ] -Uplifting [main] best 28135 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:4 [ main::st2#2 main::st2#1 ] zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:67 [ main::sw#0 ] -Uplifting [memset] best 28135 combination zp[2]:15 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_byte] best 28127 combination zp[1]:14 [ 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 [div32u16u] best 28127 combination zp[4]:73 [ div32u16u::return#3 ] zp[2]:136 [ div32u16u::quotient_lo#0 ] zp[4]:146 [ div32u16u::return#2 ] zp[4]:138 [ div32u16u::return#0 ] zp[2]:132 [ div32u16u::quotient_hi#0 ] -Uplifting [print_char] best 28112 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sword] best 28112 combination zp[2]:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [print_word] best 28112 combination zp[2]:69 [ print_word::w#0 ] -Uplifting [RADIX] best 28112 combination -Uplifting [print_cls] best 28112 combination -Attempting to uplift remaining variables inzp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 28112 combination zp[1]:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_char] best 28259 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [] best 28259 combination zp[2]:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] zp[2]:144 [ rem16u#1 ] +Uplifting [mulu16_sel] best 28228 combination zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp[2]:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp[4]:119 [ mulu16_sel::$0 ] zp[4]:123 [ mulu16_sel::$1 ] zp[2]:87 [ mulu16_sel::return#18 ] zp[2]:91 [ mulu16_sel::return#19 ] zp[2]:95 [ mulu16_sel::return#20 ] zp[2]:101 [ mulu16_sel::return#10 ] zp[2]:105 [ mulu16_sel::return#11 ] zp[2]:164 [ mulu16_sel::return#0 ] zp[2]:168 [ mulu16_sel::return#1 ] zp[2]:172 [ mulu16_sel::return#14 ] zp[2]:178 [ mulu16_sel::return#15 ] zp[2]:182 [ mulu16_sel::return#16 ] zp[2]:127 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] +Uplifting [print_byte] best 28210 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_str] best 28210 combination zp[2]:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [sin16s] best 28201 combination zp[4]:61 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:65 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:158 [ sin16s::$4 ] zp[2]:166 [ sin16s::x2#0 ] zp[2]:174 [ sin16s::x3_6#0 ] zp[2]:180 [ sin16s::x4#0 ] zp[2]:184 [ sin16s::x5#0 ] zp[2]:186 [ sin16s::x5_128#0 ] zp[2]:170 [ sin16s::x3#0 ] zp[2]:188 [ sin16s::usinx#1 ] zp[2]:162 [ sin16s::x1#0 ] zp[2]:154 [ sin16s::return#0 ] zp[2]:176 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [sin16sb] best 28192 combination zp[2]:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp[2]:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp[2]:89 [ sin16sb::x2#0 ] zp[2]:97 [ sin16sb::x3_6#0 ] zp[2]:103 [ sin16sb::x4#0 ] zp[2]:107 [ sin16sb::x5#0 ] zp[2]:109 [ sin16sb::x5_128#0 ] zp[2]:93 [ sin16sb::x3#0 ] zp[2]:111 [ sin16sb::usinx#1 ] zp[2]:85 [ sin16sb::x1#0 ] zp[2]:81 [ sin16sb::return#0 ] zp[2]:99 [ sin16sb::usinx#0 ] reg byte y [ sin16sb::isUpper#2 ] +Uplifting [memset] best 28192 combination zp[2]:15 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 28192 combination zp[2]:69 [ print_word::w#0 ] +Uplifting [sin16s_gen] best 28192 combination zp[2]:52 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:156 [ sin16s_gen::$2 ] zp[4]:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:150 [ sin16s_gen::step#0 ] +Uplifting [sin16s_genb] best 28192 combination zp[2]:17 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp[2]:83 [ sin16s_genb::$3 ] zp[4]:19 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp[2]:23 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp[4]:77 [ sin16s_genb::step#0 ] +Uplifting [print_sword] best 28192 combination zp[2]:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [div32u16u] best 28192 combination zp[2]:136 [ div32u16u::quotient_lo#0 ] zp[2]:132 [ div32u16u::quotient_hi#0 ] zp[4]:138 [ div32u16u::return#0 ] zp[4]:73 [ div32u16u::return#3 ] zp[4]:146 [ div32u16u::return#2 ] +Uplifting [main] best 28192 combination zp[1]:6 [ main::i#2 main::i#1 ] zp[2]:4 [ main::st2#2 main::st2#1 ] zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:67 [ main::sw#0 ] +Uplifting [RADIX] best 28192 combination +Uplifting [print_cls] best 28192 combination +Attempting to uplift remaining variables inzp[1]:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 28192 combination zp[1]:6 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] ] with [ zp[2]:111 [ sin16sb::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] ] with [ zp[2]:93 [ sin16sb::x3#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 ] ] with [ zp[2]:170 [ sin16s::x3#0 ] ] - score: 2 @@ -5851,9 +5845,8 @@ Coalescing zero page register [ zp[2]:87 [ mulu16_sel::return#18 mulu16_sel::ret Coalescing zero page register [ zp[4]:158 [ sin16s::$4 ] ] with [ zp[4]:41 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] Coalescing zero page register [ zp[2]:162 [ sin16s::x1#0 ] ] with [ zp[2]:132 [ div32u16u::quotient_hi#0 ] ] Coalescing zero page register [ zp[2]: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 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 ] ] with [ zp[2]:15 [ memset::dst#2 memset::dst#1 print_str::str#3 print_str::str#5 print_str::str#0 ] ] -Allocated (was zp[2]:9) zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] -Allocated (was zp[2]:12) zp[2]:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] -Allocated (was zp[1]:14) zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[2]:9) zp[2]:7 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +Allocated (was zp[2]:12) zp[2]:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] Allocated (was zp[2]:45) zp[2]:11 [ 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 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 memset::dst#2 memset::dst#1 print_str::str#3 print_str::str#5 print_str::str#0 ] Allocated (was zp[2]:47) zp[2]:13 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 sin16sb::x2#0 sin16sb::x4#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#19 mulu16_sel::return#10 mulu16_sel::return#0 mulu16_sel::return#1 mulu16_sel::return#15 ] Allocated (was zp[2]:49) zp[2]:15 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 mul16u::b#0 ] @@ -5889,7 +5882,7 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $400 // Remainder after unsigned 16-bit division .label rem16u = $b - .label print_char_cursor = 8 + .label print_char_cursor = 9 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -5909,9 +5902,10 @@ __bend: // main main: { .label wavelength = $78 - .label sw = 6 + .label sw = 7 .label st1 = 2 .label st2 = 4 + .label i = 6 // [5] call sin16s_gen // [169] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: @@ -5936,8 +5930,9 @@ main: { jsr print_cls // [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] __b1_from___b5: - // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [10] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 lda # (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + .label w = 7 + // [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [47] call print_byte // [51] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -6188,9 +6183,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + ldx.z w // [49] call print_byte // [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -6204,11 +6198,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a - // [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -6226,12 +6219,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [56] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [56] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [57] call print_char // [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -7674,16 +7666,16 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:15 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:15 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:31 1.5 -(dword) div32u16u::return#2 return zp[4]:31 4.0 -(dword) div32u16u::return#3 return zp[4]:31 4.0 +(dword) div32u16u::return#0 return zp[4]:31 300.75 +(dword) div32u16u::return#2 return zp[4]:31 202.0 +(dword) div32u16u::return#3 return zp[4]:31 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -7692,30 +7684,30 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:13 2.75 -(word) divr16u::dividend#3 dividend zp[2]:13 5.0 -(word) divr16u::dividend#5 dividend zp[2]:13 2.0 +(word) divr16u::dividend#0 dividend zp[2]:13 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:13 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:13 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:15 16.5 -(word) divr16u::quotient#2 quotient zp[2]:15 11.0 -(word) divr16u::quotient#3 quotient zp[2]:15 2.75 +(word) divr16u::quotient#1 quotient zp[2]:15 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:15 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:15 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:11 8.25 -(word) divr16u::rem#1 rem zp[2]:11 22.0 -(word) divr16u::rem#10 rem zp[2]:11 4.0 -(word) divr16u::rem#11 rem zp[2]:11 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:11 22.0 -(word) divr16u::rem#4 rem zp[2]:11 4.0 -(word) divr16u::rem#5 rem zp[2]:11 24.0 -(word) divr16u::rem#6 rem zp[2]:11 11.0 +(word) divr16u::rem#0 rem zp[2]:11 75000.75 +(word) divr16u::rem#1 rem zp[2]:11 200002.0 +(word) divr16u::rem#10 rem zp[2]:11 11002.0 +(word) divr16u::rem#11 rem zp[2]:11 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:11 200002.0 +(word) divr16u::rem#4 rem zp[2]:11 2002.0 +(word) divr16u::rem#5 rem zp[2]:11 210003.0 +(word) divr16u::rem#6 rem zp[2]:11 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:15 5.285714285714286 -(word) divr16u::return#2 return zp[2]:15 4.0 -(word) divr16u::return#3 return zp[2]:15 4.0 +(word) divr16u::return#0 return zp[2]:15 43143.57142857143 +(word) divr16u::return#2 return zp[2]:15 2002.0 +(word) divr16u::return#3 return zp[2]:15 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -7726,20 +7718,20 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 1.8333333333333333 +(byte) main::i#1 i zp[1]:6 151.5 +(byte) main::i#2 i zp[1]:6 16.833333333333332 (const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) } (const signed word*) main::sintab2[(number) $78] = { fill( $78, 0) } (signed word*) main::st1 -(signed word*) main::st1#1 st1 zp[2]:2 5.5 -(signed word*) main::st1#2 st1 zp[2]:2 3.3000000000000003 +(signed word*) main::st1#1 st1 zp[2]:2 50.5 +(signed word*) main::st1#2 st1 zp[2]:2 30.299999999999997 (signed word*) main::st2 -(signed word*) main::st2#1 st2 zp[2]:4 7.333333333333333 -(signed word*) main::st2#2 st2 zp[2]:4 3.0 +(signed word*) main::st2#1 st2 zp[2]:4 67.33333333333333 +(signed word*) main::st2#2 st2 zp[2]:4 27.545454545454547 (const byte*) main::str[(byte) 4] = (byte*) " " (const byte*) main::str1[(byte) 2] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:6 6.6000000000000005 +(signed word) main::sw#0 sw zp[2]:7 60.599999999999994 (const word) main::wavelength = (word) $78 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -7748,8 +7740,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:11 22.0 -(byte*) memset::dst#2 dst zp[2]:11 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:11 20002.0 +(byte*) memset::dst#2 dst zp[2]:11 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -7758,92 +7750,92 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:35 101.0 -(word) mul16u::a#1 a zp[2]:35 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:35 67.66666666666666 +(word) mul16u::a#0 a zp[2]:35 1.00000001E8 +(word) mul16u::a#1 a zp[2]:35 366667.3333333334 +(word) mul16u::a#2 a zp[2]:35 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:15 2.0 +(word) mul16u::b#0 b zp[2]:15 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:37 4.0 -(dword) mul16u::mb#1 mb zp[4]:37 202.0 -(dword) mul16u::mb#2 mb zp[4]:37 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:37 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:37 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:37 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:25 202.0 -(dword) mul16u::res#2 res zp[4]:25 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:25 101.0 +(dword) mul16u::res#1 res zp[4]:25 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:25 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:25 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:25 4.0 +(dword) mul16u::return#2 return zp[4]:25 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:25 4.0 -(dword~) mulu16_sel::$1 zp[4]:25 4.0 +(dword~) mulu16_sel::$0 zp[4]:25 200002.0 +(dword~) mulu16_sel::$1 zp[4]:25 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:13 4.0 -(word) mulu16_sel::return#1 return zp[2]:13 4.0 -(word) mulu16_sel::return#10 return zp[2]:13 4.0 -(word) mulu16_sel::return#11 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#14 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#15 return zp[2]:13 4.0 -(word) mulu16_sel::return#16 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#17 return_1 zp[2]:35 1.8333333333333335 -(word) mulu16_sel::return#18 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#19 return zp[2]:13 4.0 -(word) mulu16_sel::return#20 return_1 zp[2]:35 4.0 +(word) mulu16_sel::return#0 return zp[2]:13 20002.0 +(word) mulu16_sel::return#1 return zp[2]:13 20002.0 +(word) mulu16_sel::return#10 return zp[2]:13 20002.0 +(word) mulu16_sel::return#11 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#14 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#15 return zp[2]:13 20002.0 +(word) mulu16_sel::return#16 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#17 return_1 zp[2]:35 16667.583333333332 +(word) mulu16_sel::return#18 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#19 return zp[2]:13 20002.0 +(word) mulu16_sel::return#20 return_1 zp[2]:35 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#10 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#10 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#10 v1 zp[2]:13 22.0 -(word) mulu16_sel::v1#2 v1 zp[2]:13 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#6 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#7 v1 zp[2]:13 4.0 -(word) mulu16_sel::v1#8 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#9 v1 zp[2]:13 2.0 +(word) mulu16_sel::v1#0 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#10 v1 zp[2]:13 200011.0 +(word) mulu16_sel::v1#2 v1 zp[2]:13 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#6 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#7 v1 zp[2]:13 20002.0 +(word) mulu16_sel::v1#8 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#9 v1 zp[2]:13 10001.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#10 v2 zp[2]:15 9.0 -(word) mulu16_sel::v2#3 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#6 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#8 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#9 v2 zp[2]:15 4.0 +(word) mulu16_sel::v2#0 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#10 v2 zp[2]:15 90004.5 +(word) mulu16_sel::v2#3 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#6 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#8 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#9 v2 zp[2]:15 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 4.0 -(byte) print_byte::b#1 b zp[1]:10 4.0 -(byte) print_byte::b#2 b zp[1]:10 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:8 0.7083333333333334 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 32.7 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:8 5.200000000000001 -(byte*) print_char_cursor#52 print_char_cursor zp[2]:8 8.25 -(byte*) print_char_cursor#54 print_char_cursor zp[2]:8 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 100001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 50004.333333333336 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 30120.6 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 1101003.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 440.79999999999995 +(byte*) print_char_cursor#52 print_char_cursor zp[2]:9 75.75 +(byte*) print_char_cursor#54 print_char_cursor zp[2]:9 1203.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -7855,9 +7847,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:11 202.0 -(byte*) print_str::str#3 str zp[2]:11 101.5 -(byte*) print_str::str#5 str zp[2]:11 2.0 +(byte*) print_str::str#0 str zp[2]:11 200002.0 +(byte*) print_str::str#3 str zp[2]:11 100251.25 +(byte*) print_str::str#5 str zp[2]:11 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -7865,18 +7857,18 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:6 4.0 -(signed word) print_sword::w#1 w zp[2]:6 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:6 4.0 +(signed word) print_sword::w#0 w zp[2]:7 2002.0 +(signed word) print_sword::w#1 w zp[2]:7 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:7 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:6 2.0 +(word) print_word::w#0 w zp[2]:7 7001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:11 0.8 +(word) rem16u#1 rem16u zp[2]:11 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:37 4.0 +(dword~) sin16s::$4 zp[4]:37 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -7891,74 +7883,74 @@ FINAL SYMBOL TABLE (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:29 22.0 -(signed word) sin16s::return#1 return zp[2]:29 5.0 -(signed word) sin16s::return#5 return zp[2]:29 4.0 +(signed word) sin16s::return#0 return zp[2]:29 2002.0 +(signed word) sin16s::return#1 return zp[2]:29 7001.0 +(signed word) sin16s::return#5 return zp[2]:29 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:29 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:29 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:29 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:29 1.0 +(word) sin16s::usinx#0 usinx zp[2]:29 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:29 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:25 8.5 -(dword) sin16s::x#1 x zp[4]:25 4.0 -(dword) sin16s::x#2 x zp[4]:25 4.0 -(dword) sin16s::x#4 x zp[4]:25 5.0 -(dword) sin16s::x#6 x zp[4]:25 6.0 +(dword) sin16s::x#0 x zp[4]:25 15502.0 +(dword) sin16s::x#1 x zp[4]:25 20002.0 +(dword) sin16s::x#2 x zp[4]:25 20002.0 +(dword) sin16s::x#4 x zp[4]:25 25002.5 +(dword) sin16s::x#6 x zp[4]:25 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:41 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:41 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:13 4.0 +(word) sin16s::x2#0 x2 zp[2]:13 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:13 1.0 +(word) sin16s::x3#0 x3 zp[2]:13 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:35 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:35 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:13 4.0 +(word) sin16s::x4#0 x4 zp[2]:13 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:35 4.0 +(word) sin16s::x5#0 x5 zp[2]:35 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:35 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:35 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:29 22.0 +(signed word~) sin16s_gen::$2 zp[2]:29 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:17 22.0 -(word) sin16s_gen::i#2 i zp[2]:17 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:17 2002.0 +(word) sin16s_gen::i#2 i zp[2]:17 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:31 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:19 11.0 -(dword) sin16s_gen::x#2 x zp[4]:19 4.125 +(dword) sin16s_gen::x#1 x zp[4]:19 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:19 375.375 (void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength) -(signed word~) sin16s_genb::$3 zp[2]:29 22.0 +(signed word~) sin16s_genb::$3 zp[2]:29 2002.0 (label) sin16s_genb::@1 (label) sin16s_genb::@2 (label) sin16s_genb::@3 (label) sin16s_genb::@4 (label) sin16s_genb::@return (word) sin16s_genb::i -(word) sin16s_genb::i#1 i zp[2]:17 22.0 -(word) sin16s_genb::i#2 i zp[2]:17 3.666666666666667 +(word) sin16s_genb::i#1 i zp[2]:17 2002.0 +(word) sin16s_genb::i#2 i zp[2]:17 333.6666666666667 (signed word*) sin16s_genb::sintab -(signed word*) sin16s_genb::sintab#0 sintab zp[2]:23 7.333333333333333 -(signed word*) sin16s_genb::sintab#2 sintab zp[2]:23 4.714285714285714 +(signed word*) sin16s_genb::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_genb::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_genb::step -(dword) sin16s_genb::step#0 step zp[4]:31 1.1818181818181819 +(dword) sin16s_genb::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_genb::wavelength (dword) sin16s_genb::x -(dword) sin16s_genb::x#1 x zp[4]:19 11.0 -(dword) sin16s_genb::x#2 x zp[4]:19 4.125 +(dword) sin16s_genb::x#1 x zp[4]:19 1001.0 +(dword) sin16s_genb::x#2 x zp[4]:19 375.375 (signed word()) sin16sb((word) sin16sb::x) (label) sin16sb::@1 (label) sin16sb::@10 @@ -7974,44 +7966,44 @@ FINAL SYMBOL TABLE (label) sin16sb::@9 (label) sin16sb::@return (byte) sin16sb::isUpper -(byte) sin16sb::isUpper#2 reg byte y 0.0625 +(byte) sin16sb::isUpper#2 reg byte y 312.53125 (signed word) sin16sb::return -(signed word) sin16sb::return#0 return zp[2]:29 22.0 -(signed word) sin16sb::return#1 return zp[2]:29 5.0 -(signed word) sin16sb::return#5 return zp[2]:29 4.0 +(signed word) sin16sb::return#0 return zp[2]:29 2002.0 +(signed word) sin16sb::return#1 return zp[2]:29 7001.0 +(signed word) sin16sb::return#5 return zp[2]:29 20002.0 (signed word) sin16sb::sinx -(signed word) sin16sb::sinx#1 sinx zp[2]:29 4.0 +(signed word) sin16sb::sinx#1 sinx zp[2]:29 20002.0 (word) sin16sb::usinx -(word) sin16sb::usinx#0 usinx zp[2]:29 0.3333333333333333 -(word) sin16sb::usinx#1 usinx zp[2]:29 1.0 +(word) sin16sb::usinx#0 usinx zp[2]:29 1666.8333333333333 +(word) sin16sb::usinx#1 usinx zp[2]:29 5000.5 (word) sin16sb::x -(word) sin16sb::x#0 x zp[2]:11 8.5 -(word) sin16sb::x#1 x zp[2]:11 4.0 -(word) sin16sb::x#2 x zp[2]:11 4.0 -(word) sin16sb::x#4 x zp[2]:11 5.0 -(word) sin16sb::x#6 x zp[2]:11 6.0 +(word) sin16sb::x#0 x zp[2]:11 15502.0 +(word) sin16sb::x#1 x zp[2]:11 20002.0 +(word) sin16sb::x#2 x zp[2]:11 20002.0 +(word) sin16sb::x#4 x zp[2]:11 25002.5 +(word) sin16sb::x#6 x zp[2]:11 30003.0 (word) sin16sb::x1 -(word) sin16sb::x1#0 x1 zp[2]:11 0.6363636363636365 +(word) sin16sb::x1#0 x1 zp[2]:11 3182.1363636363635 (word) sin16sb::x2 -(word) sin16sb::x2#0 x2 zp[2]:13 4.0 +(word) sin16sb::x2#0 x2 zp[2]:13 20002.0 (word) sin16sb::x3 -(word) sin16sb::x3#0 x3 zp[2]:13 1.0 +(word) sin16sb::x3#0 x3 zp[2]:13 5000.5 (word) sin16sb::x3_6 -(word) sin16sb::x3_6#0 x3_6 zp[2]:35 4.0 +(word) sin16sb::x3_6#0 x3_6 zp[2]:35 20002.0 (word) sin16sb::x4 -(word) sin16sb::x4#0 x4 zp[2]:13 4.0 +(word) sin16sb::x4#0 x4 zp[2]:13 20002.0 (word) sin16sb::x5 -(word) sin16sb::x5#0 x5 zp[2]:35 4.0 +(word) sin16sb::x5#0 x5 zp[2]:35 20002.0 (word) sin16sb::x5_128 -(word) sin16sb::x5_128#0 x5_128 zp[2]:35 4.0 +(word) sin16sb::x5_128#0 x5_128 zp[2]:35 20002.0 zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:4 [ main::st2#2 main::st2#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +zp[1]:6 [ main::i#2 main::i#1 ] +zp[2]:7 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] -zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ sin16sb::isUpper#2 ] reg byte x [ mulu16_sel::select#10 ] zp[2]:11 [ 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 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 memset::dst#2 memset::dst#1 print_str::str#3 print_str::str#5 print_str::str#0 ] @@ -8025,7 +8017,7 @@ reg byte y [ sin16s::isUpper#2 ] zp[4]:25 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] zp[2]:29 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$3 sin16sb::usinx#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] zp[4]:31 [ div32u16u::return#3 sin16s_genb::step#0 div32u16u::return#0 div32u16u::return#2 sin16s_gen::step#0 ] zp[2]:35 [ mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] reg byte a [ mul16u::$1 ] @@ -8036,7 +8028,7 @@ zp[2]:41 [ sin16s::x1#0 div32u16u::quotient_hi#0 ] FINAL ASSEMBLER -Score: 23582 +Score: 23662 // File Comments // Generates a 16-bit signed sinus @@ -8059,7 +8051,7 @@ Score: 23582 .label print_line_cursor = $400 // Remainder after unsigned 16-bit division .label rem16u = $b - .label print_char_cursor = 8 + .label print_char_cursor = 9 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -8070,9 +8062,10 @@ Score: 23582 // main main: { .label wavelength = $78 - .label sw = 6 + .label sw = 7 .label st1 = 2 .label st2 = 4 + .label i = 6 // sin16s_gen(sintab1, wavelength) // [5] call sin16s_gen // [169] phi from main to sin16s_gen [phi:main->sin16s_gen] @@ -8090,8 +8083,9 @@ main: { // [59] phi from main::@5 to print_cls [phi:main::@5->print_cls] jsr print_cls // [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [10] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 lda #w) - // [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [47] call print_byte // [51] phi from print_word to print_byte [phi:print_word->print_byte] // [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] // [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy @@ -8336,12 +8329,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a // b>>4 - // [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -8358,13 +8350,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [56] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [56] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [57] call print_char // [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/sinusgen16b.sym b/src/test/ref/sinusgen16b.sym index 785a9756d..d454323ca 100644 --- a/src/test/ref/sinusgen16b.sym +++ b/src/test/ref/sinusgen16b.sym @@ -19,16 +19,16 @@ (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:15 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:15 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:31 1.5 -(dword) div32u16u::return#2 return zp[4]:31 4.0 -(dword) div32u16u::return#3 return zp[4]:31 4.0 +(dword) div32u16u::return#0 return zp[4]:31 300.75 +(dword) div32u16u::return#2 return zp[4]:31 202.0 +(dword) div32u16u::return#3 return zp[4]:31 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -37,30 +37,30 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:13 2.75 -(word) divr16u::dividend#3 dividend zp[2]:13 5.0 -(word) divr16u::dividend#5 dividend zp[2]:13 2.0 +(word) divr16u::dividend#0 dividend zp[2]:13 25000.25 +(word) divr16u::dividend#3 dividend zp[2]:13 44286.28571428572 +(word) divr16u::dividend#5 dividend zp[2]:13 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:15 16.5 -(word) divr16u::quotient#2 quotient zp[2]:15 11.0 -(word) divr16u::quotient#3 quotient zp[2]:15 2.75 +(word) divr16u::quotient#1 quotient zp[2]:15 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:15 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:15 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:11 8.25 -(word) divr16u::rem#1 rem zp[2]:11 22.0 -(word) divr16u::rem#10 rem zp[2]:11 4.0 -(word) divr16u::rem#11 rem zp[2]:11 11.666666666666666 -(word) divr16u::rem#2 rem zp[2]:11 22.0 -(word) divr16u::rem#4 rem zp[2]:11 4.0 -(word) divr16u::rem#5 rem zp[2]:11 24.0 -(word) divr16u::rem#6 rem zp[2]:11 11.0 +(word) divr16u::rem#0 rem zp[2]:11 75000.75 +(word) divr16u::rem#1 rem zp[2]:11 200002.0 +(word) divr16u::rem#10 rem zp[2]:11 11002.0 +(word) divr16u::rem#11 rem zp[2]:11 103334.66666666667 +(word) divr16u::rem#2 rem zp[2]:11 200002.0 +(word) divr16u::rem#4 rem zp[2]:11 2002.0 +(word) divr16u::rem#5 rem zp[2]:11 210003.0 +(word) divr16u::rem#6 rem zp[2]:11 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:15 5.285714285714286 -(word) divr16u::return#2 return zp[2]:15 4.0 -(word) divr16u::return#3 return zp[2]:15 4.0 +(word) divr16u::return#0 return zp[2]:15 43143.57142857143 +(word) divr16u::return#2 return zp[2]:15 2002.0 +(word) divr16u::return#3 return zp[2]:15 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -71,20 +71,20 @@ (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 1.8333333333333333 +(byte) main::i#1 i zp[1]:6 151.5 +(byte) main::i#2 i zp[1]:6 16.833333333333332 (const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) } (const signed word*) main::sintab2[(number) $78] = { fill( $78, 0) } (signed word*) main::st1 -(signed word*) main::st1#1 st1 zp[2]:2 5.5 -(signed word*) main::st1#2 st1 zp[2]:2 3.3000000000000003 +(signed word*) main::st1#1 st1 zp[2]:2 50.5 +(signed word*) main::st1#2 st1 zp[2]:2 30.299999999999997 (signed word*) main::st2 -(signed word*) main::st2#1 st2 zp[2]:4 7.333333333333333 -(signed word*) main::st2#2 st2 zp[2]:4 3.0 +(signed word*) main::st2#1 st2 zp[2]:4 67.33333333333333 +(signed word*) main::st2#2 st2 zp[2]:4 27.545454545454547 (const byte*) main::str[(byte) 4] = (byte*) " " (const byte*) main::str1[(byte) 2] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:6 6.6000000000000005 +(signed word) main::sw#0 sw zp[2]:7 60.599999999999994 (const word) main::wavelength = (word) $78 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -93,8 +93,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:11 22.0 -(byte*) memset::dst#2 dst zp[2]:11 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:11 20002.0 +(byte*) memset::dst#2 dst zp[2]:11 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -103,92 +103,92 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:35 101.0 -(word) mul16u::a#1 a zp[2]:35 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:35 67.66666666666666 +(word) mul16u::a#0 a zp[2]:35 1.00000001E8 +(word) mul16u::a#1 a zp[2]:35 366667.3333333334 +(word) mul16u::a#2 a zp[2]:35 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:15 2.0 +(word) mul16u::b#0 b zp[2]:15 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:37 4.0 -(dword) mul16u::mb#1 mb zp[4]:37 202.0 -(dword) mul16u::mb#2 mb zp[4]:37 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:37 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:37 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:37 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:25 202.0 -(dword) mul16u::res#2 res zp[4]:25 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:25 101.0 +(dword) mul16u::res#1 res zp[4]:25 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:25 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:25 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:25 4.0 +(dword) mul16u::return#2 return zp[4]:25 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:25 4.0 -(dword~) mulu16_sel::$1 zp[4]:25 4.0 +(dword~) mulu16_sel::$0 zp[4]:25 200002.0 +(dword~) mulu16_sel::$1 zp[4]:25 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:13 4.0 -(word) mulu16_sel::return#1 return zp[2]:13 4.0 -(word) mulu16_sel::return#10 return zp[2]:13 4.0 -(word) mulu16_sel::return#11 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#14 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#15 return zp[2]:13 4.0 -(word) mulu16_sel::return#16 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#17 return_1 zp[2]:35 1.8333333333333335 -(word) mulu16_sel::return#18 return_1 zp[2]:35 4.0 -(word) mulu16_sel::return#19 return zp[2]:13 4.0 -(word) mulu16_sel::return#20 return_1 zp[2]:35 4.0 +(word) mulu16_sel::return#0 return zp[2]:13 20002.0 +(word) mulu16_sel::return#1 return zp[2]:13 20002.0 +(word) mulu16_sel::return#10 return zp[2]:13 20002.0 +(word) mulu16_sel::return#11 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#14 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#15 return zp[2]:13 20002.0 +(word) mulu16_sel::return#16 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#17 return_1 zp[2]:35 16667.583333333332 +(word) mulu16_sel::return#18 return_1 zp[2]:35 20002.0 +(word) mulu16_sel::return#19 return zp[2]:13 20002.0 +(word) mulu16_sel::return#20 return_1 zp[2]:35 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#10 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#10 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#10 v1 zp[2]:13 22.0 -(word) mulu16_sel::v1#2 v1 zp[2]:13 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#6 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#7 v1 zp[2]:13 4.0 -(word) mulu16_sel::v1#8 v1 zp[2]:13 2.0 -(word) mulu16_sel::v1#9 v1 zp[2]:13 2.0 +(word) mulu16_sel::v1#0 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#10 v1 zp[2]:13 200011.0 +(word) mulu16_sel::v1#2 v1 zp[2]:13 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#6 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#7 v1 zp[2]:13 20002.0 +(word) mulu16_sel::v1#8 v1 zp[2]:13 10001.0 +(word) mulu16_sel::v1#9 v1 zp[2]:13 10001.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#10 v2 zp[2]:15 9.0 -(word) mulu16_sel::v2#3 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#6 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#8 v2 zp[2]:15 4.0 -(word) mulu16_sel::v2#9 v2 zp[2]:15 4.0 +(word) mulu16_sel::v2#0 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#10 v2 zp[2]:15 90004.5 +(word) mulu16_sel::v2#3 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#6 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#8 v2 zp[2]:15 20002.0 +(word) mulu16_sel::v2#9 v2 zp[2]:15 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 4.0 -(byte) print_byte::b#1 b zp[1]:10 4.0 -(byte) print_byte::b#2 b zp[1]:10 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 101.0 -(byte*) print_char_cursor#13 print_char_cursor zp[2]:8 0.7083333333333334 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 32.7 -(byte*) print_char_cursor#35 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#51 print_char_cursor zp[2]:8 5.200000000000001 -(byte*) print_char_cursor#52 print_char_cursor zp[2]:8 8.25 -(byte*) print_char_cursor#54 print_char_cursor zp[2]:8 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 100001.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:9 50004.333333333336 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 30120.6 +(byte*) print_char_cursor#35 print_char_cursor zp[2]:9 1101003.0 +(byte*) print_char_cursor#51 print_char_cursor zp[2]:9 440.79999999999995 +(byte*) print_char_cursor#52 print_char_cursor zp[2]:9 75.75 +(byte*) print_char_cursor#54 print_char_cursor zp[2]:9 1203.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -200,9 +200,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:11 202.0 -(byte*) print_str::str#3 str zp[2]:11 101.5 -(byte*) print_str::str#5 str zp[2]:11 2.0 +(byte*) print_str::str#0 str zp[2]:11 200002.0 +(byte*) print_str::str#3 str zp[2]:11 100251.25 +(byte*) print_str::str#5 str zp[2]:11 1001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -210,18 +210,18 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:6 4.0 -(signed word) print_sword::w#1 w zp[2]:6 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:6 4.0 +(signed word) print_sword::w#0 w zp[2]:7 2002.0 +(signed word) print_sword::w#1 w zp[2]:7 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:7 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:6 2.0 +(word) print_word::w#0 w zp[2]:7 7001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:11 0.8 +(word) rem16u#1 rem16u zp[2]:11 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:37 4.0 +(dword~) sin16s::$4 zp[4]:37 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -236,74 +236,74 @@ (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:29 22.0 -(signed word) sin16s::return#1 return zp[2]:29 5.0 -(signed word) sin16s::return#5 return zp[2]:29 4.0 +(signed word) sin16s::return#0 return zp[2]:29 2002.0 +(signed word) sin16s::return#1 return zp[2]:29 7001.0 +(signed word) sin16s::return#5 return zp[2]:29 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:29 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:29 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:29 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:29 1.0 +(word) sin16s::usinx#0 usinx zp[2]:29 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:29 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:25 8.5 -(dword) sin16s::x#1 x zp[4]:25 4.0 -(dword) sin16s::x#2 x zp[4]:25 4.0 -(dword) sin16s::x#4 x zp[4]:25 5.0 -(dword) sin16s::x#6 x zp[4]:25 6.0 +(dword) sin16s::x#0 x zp[4]:25 15502.0 +(dword) sin16s::x#1 x zp[4]:25 20002.0 +(dword) sin16s::x#2 x zp[4]:25 20002.0 +(dword) sin16s::x#4 x zp[4]:25 25002.5 +(dword) sin16s::x#6 x zp[4]:25 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:41 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:41 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:13 4.0 +(word) sin16s::x2#0 x2 zp[2]:13 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:13 1.0 +(word) sin16s::x3#0 x3 zp[2]:13 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:35 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:35 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:13 4.0 +(word) sin16s::x4#0 x4 zp[2]:13 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:35 4.0 +(word) sin16s::x5#0 x5 zp[2]:35 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:35 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:35 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:29 22.0 +(signed word~) sin16s_gen::$2 zp[2]:29 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:17 22.0 -(word) sin16s_gen::i#2 i zp[2]:17 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:17 2002.0 +(word) sin16s_gen::i#2 i zp[2]:17 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:31 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:19 11.0 -(dword) sin16s_gen::x#2 x zp[4]:19 4.125 +(dword) sin16s_gen::x#1 x zp[4]:19 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:19 375.375 (void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength) -(signed word~) sin16s_genb::$3 zp[2]:29 22.0 +(signed word~) sin16s_genb::$3 zp[2]:29 2002.0 (label) sin16s_genb::@1 (label) sin16s_genb::@2 (label) sin16s_genb::@3 (label) sin16s_genb::@4 (label) sin16s_genb::@return (word) sin16s_genb::i -(word) sin16s_genb::i#1 i zp[2]:17 22.0 -(word) sin16s_genb::i#2 i zp[2]:17 3.666666666666667 +(word) sin16s_genb::i#1 i zp[2]:17 2002.0 +(word) sin16s_genb::i#2 i zp[2]:17 333.6666666666667 (signed word*) sin16s_genb::sintab -(signed word*) sin16s_genb::sintab#0 sintab zp[2]:23 7.333333333333333 -(signed word*) sin16s_genb::sintab#2 sintab zp[2]:23 4.714285714285714 +(signed word*) sin16s_genb::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_genb::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_genb::step -(dword) sin16s_genb::step#0 step zp[4]:31 1.1818181818181819 +(dword) sin16s_genb::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_genb::wavelength (dword) sin16s_genb::x -(dword) sin16s_genb::x#1 x zp[4]:19 11.0 -(dword) sin16s_genb::x#2 x zp[4]:19 4.125 +(dword) sin16s_genb::x#1 x zp[4]:19 1001.0 +(dword) sin16s_genb::x#2 x zp[4]:19 375.375 (signed word()) sin16sb((word) sin16sb::x) (label) sin16sb::@1 (label) sin16sb::@10 @@ -319,44 +319,44 @@ (label) sin16sb::@9 (label) sin16sb::@return (byte) sin16sb::isUpper -(byte) sin16sb::isUpper#2 reg byte y 0.0625 +(byte) sin16sb::isUpper#2 reg byte y 312.53125 (signed word) sin16sb::return -(signed word) sin16sb::return#0 return zp[2]:29 22.0 -(signed word) sin16sb::return#1 return zp[2]:29 5.0 -(signed word) sin16sb::return#5 return zp[2]:29 4.0 +(signed word) sin16sb::return#0 return zp[2]:29 2002.0 +(signed word) sin16sb::return#1 return zp[2]:29 7001.0 +(signed word) sin16sb::return#5 return zp[2]:29 20002.0 (signed word) sin16sb::sinx -(signed word) sin16sb::sinx#1 sinx zp[2]:29 4.0 +(signed word) sin16sb::sinx#1 sinx zp[2]:29 20002.0 (word) sin16sb::usinx -(word) sin16sb::usinx#0 usinx zp[2]:29 0.3333333333333333 -(word) sin16sb::usinx#1 usinx zp[2]:29 1.0 +(word) sin16sb::usinx#0 usinx zp[2]:29 1666.8333333333333 +(word) sin16sb::usinx#1 usinx zp[2]:29 5000.5 (word) sin16sb::x -(word) sin16sb::x#0 x zp[2]:11 8.5 -(word) sin16sb::x#1 x zp[2]:11 4.0 -(word) sin16sb::x#2 x zp[2]:11 4.0 -(word) sin16sb::x#4 x zp[2]:11 5.0 -(word) sin16sb::x#6 x zp[2]:11 6.0 +(word) sin16sb::x#0 x zp[2]:11 15502.0 +(word) sin16sb::x#1 x zp[2]:11 20002.0 +(word) sin16sb::x#2 x zp[2]:11 20002.0 +(word) sin16sb::x#4 x zp[2]:11 25002.5 +(word) sin16sb::x#6 x zp[2]:11 30003.0 (word) sin16sb::x1 -(word) sin16sb::x1#0 x1 zp[2]:11 0.6363636363636365 +(word) sin16sb::x1#0 x1 zp[2]:11 3182.1363636363635 (word) sin16sb::x2 -(word) sin16sb::x2#0 x2 zp[2]:13 4.0 +(word) sin16sb::x2#0 x2 zp[2]:13 20002.0 (word) sin16sb::x3 -(word) sin16sb::x3#0 x3 zp[2]:13 1.0 +(word) sin16sb::x3#0 x3 zp[2]:13 5000.5 (word) sin16sb::x3_6 -(word) sin16sb::x3_6#0 x3_6 zp[2]:35 4.0 +(word) sin16sb::x3_6#0 x3_6 zp[2]:35 20002.0 (word) sin16sb::x4 -(word) sin16sb::x4#0 x4 zp[2]:13 4.0 +(word) sin16sb::x4#0 x4 zp[2]:13 20002.0 (word) sin16sb::x5 -(word) sin16sb::x5#0 x5 zp[2]:35 4.0 +(word) sin16sb::x5#0 x5 zp[2]:35 20002.0 (word) sin16sb::x5_128 -(word) sin16sb::x5_128#0 x5_128 zp[2]:35 4.0 +(word) sin16sb::x5_128#0 x5_128 zp[2]:35 20002.0 zp[2]:2 [ main::st1#2 main::st1#1 ] zp[2]:4 [ main::st2#2 main::st2#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +zp[1]:6 [ main::i#2 main::i#1 ] +zp[2]:7 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] -zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ sin16sb::isUpper#2 ] reg byte x [ mulu16_sel::select#10 ] zp[2]:11 [ 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 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 memset::dst#2 memset::dst#1 print_str::str#3 print_str::str#5 print_str::str#0 ] @@ -370,7 +370,7 @@ reg byte y [ sin16s::isUpper#2 ] zp[4]:25 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] zp[2]:29 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$3 sin16sb::usinx#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] zp[4]:31 [ div32u16u::return#3 sin16s_genb::step#0 div32u16u::return#0 div32u16u::return#2 sin16s_gen::step#0 ] zp[2]:35 [ mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] reg byte a [ mul16u::$1 ] diff --git a/src/test/ref/sinusgen8.asm b/src/test/ref/sinusgen8.asm index f0928be3c..6f46fa26d 100644 --- a/src/test/ref/sinusgen8.asm +++ b/src/test/ref/sinusgen8.asm @@ -9,8 +9,9 @@ .const PI_HALF_u4f12 = $1922 .const wavelength = $c0 .label print_line_cursor = $400 - .label print_char_cursor = 2 + .label print_char_cursor = 3 main: { + .label i = 2 // sin8s_gen(sintab2, wavelength) jsr sin8s_gen // print_cls() @@ -19,20 +20,23 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - ldx #0 + lda #0 + sta.z i __b1: // sb = sintab2[i]-(signed byte)sintabref[i] - lda sintab2,x + ldy.z i + lda sintab2,y sec - sbc sintabref,x + sbc sintabref,y // print_sbyte(sb) - sta.z print_sbyte.b + tax jsr print_sbyte // print_str(" ") jsr print_str // for(byte i: 0..191) - inx - cpx #$c0 + inc.z i + lda #$c0 + cmp.z i bne __b1 // } rts @@ -40,9 +44,9 @@ main: { .byte 0 } // Print a zero-terminated string -// print_str(byte* zp(4) str) +// print_str(byte* zp(5) str) print_str: { - .label str = 4 + .label str = 5 lda #main.str @@ -72,11 +76,10 @@ print_str: { jmp __b1 } // Print a signed byte as HEX -// print_sbyte(signed byte zp($a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $a // if(b<0) - lda.z b + cpx #0 bmi __b1 // print_char(' ') lda #' ' @@ -91,11 +94,11 @@ print_sbyte: { lda #'-' jsr print_char // b = -b - lda.z b + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2 } // Print a single char @@ -113,11 +116,10 @@ print_char: { rts } // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a // b>>4 - lda.z b + txa lsr lsr lsr @@ -129,10 +131,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts @@ -150,7 +151,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = 4 + .label dst = 5 lda #str @@ -180,14 +181,14 @@ memset: { // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin8s_gen(signed byte* zp(8) sintab) +// sin8s_gen(signed byte* zp(9) sintab) sin8s_gen: { - .label step = $10 - .label sintab = 8 + .label step = $11 + .label sintab = 9 // u[4.12] // Iterate over the table - .label x = 6 - .label i = 4 + .label x = 7 + .label i = 5 // div16u(PI2_u4f12, wavelength) jsr div16u // div16u(PI2_u4f12, wavelength) @@ -247,17 +248,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($c) x) +// sin8s(word zp($d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $c - .label x = $c - .label x1 = $12 - .label x3 = $13 - .label usinx = $14 + .label __4 = $d + .label x = $d + .label x1 = $13 + .label x3 = $14 + .label usinx = $15 // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $a + .label isUpper = $b // if(x >= PI_u4f12 ) lda.z x+1 cmp #>PI_u4f12 @@ -388,11 +389,11 @@ sin8s: { } // 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 zp($b) select) +// mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zp($c) select) mulu8_sel: { - .label __0 = $e - .label __1 = $e - .label select = $b + .label __0 = $f + .label __1 = $f + .label select = $c // mul8u(v1, v2) tya jsr mul8u @@ -413,9 +414,9 @@ mulu8_sel: { // 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 = $c - .label res = $e - .label return = $e + .label mb = $d + .label res = $f + .label return = $f // mb = b sta.z mb lda #0 @@ -458,7 +459,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $10 + .label return = $11 // divr16u(dividend, divisor, 0) jsr divr16u // divr16u(dividend, divisor, 0) @@ -469,12 +470,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($e) dividend, word zp($c) rem) +// divr16u(word zp($f) dividend, word zp($d) rem) divr16u: { - .label rem = $c - .label dividend = $e - .label quotient = $10 - .label return = $10 + .label rem = $d + .label dividend = $f + .label quotient = $11 + .label return = $11 ldx #0 txa sta.z quotient diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log index 921d9c1ef..cd28db780 100644 --- a/src/test/ref/sinusgen8.log +++ b/src/test/ref/sinusgen8.log @@ -1349,110 +1349,110 @@ Inversing boolean not [160] (bool~) sin8s::$15 ← (byte) sin8s::usinx#1 < (byte Inversing boolean not [169] (bool~) sin8s::$18 ← (byte) sin8s::isUpper#2 == (byte) 0 from [168] (bool~) sin8s::$17 ← (byte) sin8s::isUpper#2 != (byte) 0 Inversing boolean not [197] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [196] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 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 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 -Alias (word) divr16u::return#2 = (word) divr16u::return#4 -Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 -Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (word) sin8s_gen::wavelength#1 = (word) sin8s_gen::wavelength#3 -Alias (signed byte*) sin8s_gen::sintab#5 = (signed byte*) sin8s_gen::sintab#6 -Alias (word) sin8s_gen::step#0 = (word~) sin8s_gen::$0 -Alias (word) sin8s_gen::x#2 = (word) sin8s_gen::x#4 (word) sin8s_gen::x#3 -Alias (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#3 (signed byte*) sin8s_gen::sintab#4 -Alias (word) sin8s_gen::step#1 = (word) sin8s_gen::step#2 (word) sin8s_gen::step#3 -Alias (word) sin8s_gen::i#2 = (word) sin8s_gen::i#4 (word) sin8s_gen::i#3 -Alias (word) sin8s_gen::wavelength#2 = (word) sin8s_gen::wavelength#5 (word) sin8s_gen::wavelength#4 -Alias (signed byte) sin8s::return#0 = (signed byte) sin8s::return#3 -Alias (word) sin8s_gen::x#1 = (word~) sin8s_gen::$3 -Alias (word) sin8s::x#3 = (word) sin8s::x#5 -Alias (word) sin8s::x#1 = (word~) sin8s::$19 -Alias (byte) sin8s::x1#0 = (byte~) sin8s::$5 (byte) sin8s::x1#1 (byte) sin8s::x1#4 (byte) sin8s::x1#2 (byte) sin8s::x1#3 -Alias (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#7 -Alias (byte) sin8s::isUpper#3 = (byte) sin8s::isUpper#8 (byte) sin8s::isUpper#9 (byte) sin8s::isUpper#7 (byte) sin8s::isUpper#6 (byte) sin8s::isUpper#5 (byte) sin8s::isUpper#4 -Alias (byte) sin8s::x2#0 = (byte~) sin8s::$6 -Alias (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#8 -Alias (byte) sin8s::x3#0 = (byte~) sin8s::$7 (byte) sin8s::x3#1 -Alias (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#9 -Alias (byte) sin8s::x3_6#0 = (byte~) sin8s::$8 -Alias (byte) sin8s::usinx#0 = (byte~) sin8s::$9 (byte) sin8s::usinx#7 (byte) sin8s::usinx#3 -Alias (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#3 -Alias (byte) sin8s::x4#0 = (byte~) sin8s::$10 -Alias (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#4 -Alias (byte) sin8s::x5#0 = (byte~) sin8s::$11 -Alias (byte) sin8s::x5_128#0 = (byte~) sin8s::$12 -Alias (byte) sin8s::usinx#1 = (byte~) sin8s::$13 (byte) sin8s::usinx#5 -Alias (word) sin8s::x#4 = (word) sin8s::x#7 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#11 -Alias (word) sin8s::x#2 = (word~) sin8s::$20 -Alias (signed byte) sin8s::sinx#0 = (signed byte~) sin8s::$16 -Alias (signed byte) sin8s::return#1 = (signed byte) sin8s::sinx#2 (signed byte) sin8s::return#4 (signed byte) sin8s::return#2 -Alias (byte) sin8s::usinx#4 = (byte) sin8s::usinx#6 -Alias (signed byte) sin8s::sinx#1 = (signed byte~) sin8s::$22 -Alias (word) mul8u::return#2 = (word) mul8u::return#4 -Alias (byte) mulu8_sel::select#5 = (byte) mulu8_sel::select#6 -Alias (byte) mulu8_sel::return#12 = (byte) mulu8_sel::return#5 (byte~) mulu8_sel::$2 (byte) mulu8_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#43 (byte*) print_screen#5 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#20 (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#38 -Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#3 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#24 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#1 = (byte) print_byte::b#2 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#27 (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#11 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#12 (byte*) print_line_cursor#6 (byte*) print_char_cursor#30 (byte*) print_line_cursor#2 (byte*) print_char_cursor#13 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 -Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31 -Alias (signed byte) main::sb#0 = (signed byte~) main::$3 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#15 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#17 -Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#35 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#6 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#7 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#2 = divr16u::dividend#6 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#3 = divr16u::divisor#4 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#5 = divr16u::rem#7 +Alias divr16u::divisor#1 = divr16u::divisor#2 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#3 divr16u::return#1 +Alias divr16u::return#2 = divr16u::return#4 +Alias div16u::return#0 = div16u::$0 div16u::return#3 div16u::return#1 +Alias mul8u::a#2 = mul8u::a#3 mul8u::a#6 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#3 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias div16u::return#2 = div16u::return#4 +Alias sin8s_gen::wavelength#1 = sin8s_gen::wavelength#3 +Alias sin8s_gen::sintab#5 = sin8s_gen::sintab#6 +Alias sin8s_gen::step#0 = sin8s_gen::$0 +Alias sin8s_gen::x#2 = sin8s_gen::x#4 sin8s_gen::x#3 +Alias sin8s_gen::sintab#2 = sin8s_gen::sintab#3 sin8s_gen::sintab#4 +Alias sin8s_gen::step#1 = sin8s_gen::step#2 sin8s_gen::step#3 +Alias sin8s_gen::i#2 = sin8s_gen::i#4 sin8s_gen::i#3 +Alias sin8s_gen::wavelength#2 = sin8s_gen::wavelength#5 sin8s_gen::wavelength#4 +Alias sin8s::return#0 = sin8s::return#3 +Alias sin8s_gen::x#1 = sin8s_gen::$3 +Alias sin8s::x#3 = sin8s::x#5 +Alias sin8s::x#1 = sin8s::$19 +Alias sin8s::x1#0 = sin8s::$5 sin8s::x1#1 sin8s::x1#4 sin8s::x1#2 sin8s::x1#3 +Alias mulu8_sel::return#0 = mulu8_sel::return#7 +Alias sin8s::isUpper#3 = sin8s::isUpper#8 sin8s::isUpper#9 sin8s::isUpper#7 sin8s::isUpper#6 sin8s::isUpper#5 sin8s::isUpper#4 +Alias sin8s::x2#0 = sin8s::$6 +Alias mulu8_sel::return#1 = mulu8_sel::return#8 +Alias sin8s::x3#0 = sin8s::$7 sin8s::x3#1 +Alias mulu8_sel::return#2 = mulu8_sel::return#9 +Alias sin8s::x3_6#0 = sin8s::$8 +Alias sin8s::usinx#0 = sin8s::$9 sin8s::usinx#7 sin8s::usinx#3 +Alias mulu8_sel::return#10 = mulu8_sel::return#3 +Alias sin8s::x4#0 = sin8s::$10 +Alias mulu8_sel::return#11 = mulu8_sel::return#4 +Alias sin8s::x5#0 = sin8s::$11 +Alias sin8s::x5_128#0 = sin8s::$12 +Alias sin8s::usinx#1 = sin8s::$13 sin8s::usinx#5 +Alias sin8s::x#4 = sin8s::x#7 +Alias sin8s::isUpper#10 = sin8s::isUpper#11 +Alias sin8s::x#2 = sin8s::$20 +Alias sin8s::sinx#0 = sin8s::$16 +Alias sin8s::return#1 = sin8s::sinx#2 sin8s::return#4 sin8s::return#2 +Alias sin8s::usinx#4 = sin8s::usinx#6 +Alias sin8s::sinx#1 = sin8s::$22 +Alias mul8u::return#2 = mul8u::return#4 +Alias mulu8_sel::select#5 = mulu8_sel::select#6 +Alias mulu8_sel::return#12 = mulu8_sel::return#5 mulu8_sel::$2 mulu8_sel::return#6 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#12 print_char_cursor#43 print_screen#5 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#19 = print_char_cursor#36 print_char_cursor#20 print_char_cursor#2 +Alias print_char_cursor#37 = print_char_cursor#45 print_char_cursor#38 +Alias print_sbyte::b#2 = print_sbyte::b#5 print_sbyte::b#3 print_sbyte::b#7 print_sbyte::b#6 +Alias print_char_cursor#21 = print_char_cursor#3 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#22 = print_char_cursor#4 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#23 = print_char_cursor#5 print_char_cursor#24 print_char_cursor#6 +Alias print_byte::b#1 = print_byte::b#2 +Alias print_char_cursor#25 = print_char_cursor#7 +Alias print_char_cursor#26 = print_char_cursor#8 print_char_cursor#27 print_char_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#29 print_char_cursor#11 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#12 print_line_cursor#6 print_char_cursor#30 print_line_cursor#2 print_char_cursor#13 +Alias print_screen#3 = print_screen#4 +Alias print_line_cursor#10 = print_line_cursor#13 +Alias print_char_cursor#41 = print_char_cursor#46 +Alias print_line_cursor#3 = print_line_cursor#7 +Alias print_char_cursor#14 = print_char_cursor#31 +Alias main::sb#0 = main::$3 +Alias main::i#2 = main::i#4 main::i#3 +Alias print_line_cursor#11 = print_line_cursor#14 print_line_cursor#15 print_line_cursor#8 print_line_cursor#4 +Alias print_char_cursor#15 = print_char_cursor#32 +Alias print_char_cursor#16 = print_char_cursor#33 print_char_cursor#34 print_char_cursor#17 +Alias print_line_cursor#5 = print_line_cursor#9 +Alias print_char_cursor#18 = print_char_cursor#35 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 -Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#3 (byte) sin8s::isUpper#2 +Alias divr16u::dividend#2 = divr16u::dividend#3 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#1 = divr16u::divisor#3 divr16u::divisor#6 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#5 +Alias mul8u::a#2 = mul8u::a#4 +Alias mul8u::mb#2 = mul8u::mb#3 +Alias sin8s::isUpper#10 = sin8s::isUpper#3 sin8s::isUpper#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::rem#8 (word) divr16u::rem#3 Identical Phi Values (word) divr16u::dividend#4 (word) divr16u::dividend#1 @@ -2111,167 +2111,167 @@ VARIABLE REGISTER WEIGHTS (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 1.3333333333333333 -(word) div16u::return#2 4.0 +(word) div16u::return#0 367.33333333333337 +(word) div16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#2 4.714285714285714 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#2 42857.57142857143 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 22.0 -(word) divr16u::rem#5 11.0 -(word) divr16u::rem#9 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 200002.0 +(word) divr16u::rem#5 100001.0 +(word) divr16u::rem#9 100001.0 (word) divr16u::return -(word) divr16u::return#0 7.000000000000001 -(word) divr16u::return#2 4.0 +(word) divr16u::return#0 60200.8 +(word) divr16u::return#2 2002.0 (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (signed byte) main::sb -(signed byte) main::sb#0 22.0 +(signed byte) main::sb#0 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 202.0 +(byte~) mul8u::$1 2.00000002E8 (byte) mul8u::a -(byte) mul8u::a#0 101.0 -(byte) mul8u::a#1 1.3333333333333333 -(byte) mul8u::a#2 67.66666666666666 +(byte) mul8u::a#0 1.00000001E8 +(byte) mul8u::a#1 366667.3333333334 +(byte) mul8u::a#2 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 2.0 +(byte) mul8u::b#0 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 4.0 -(word) mul8u::mb#1 202.0 -(word) mul8u::mb#2 43.57142857142858 +(word) mul8u::mb#0 2000002.0 +(word) mul8u::mb#1 2.00000002E8 +(word) mul8u::mb#2 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 202.0 -(word) mul8u::res#2 50.83333333333333 -(word) mul8u::res#6 101.0 +(word) mul8u::res#1 2.00000002E8 +(word) mul8u::res#2 5.0016667333333336E7 +(word) mul8u::res#6 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 4.0 +(word) mul8u::return#2 200002.0 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 4.0 -(word~) mulu8_sel::$1 4.0 +(word~) mulu8_sel::$0 200002.0 +(word~) mulu8_sel::$1 200002.0 (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 4.0 -(byte) mulu8_sel::return#1 4.0 -(byte) mulu8_sel::return#10 4.0 -(byte) mulu8_sel::return#11 4.0 -(byte) mulu8_sel::return#12 1.714285714285714 -(byte) mulu8_sel::return#2 4.0 +(byte) mulu8_sel::return#0 20002.0 +(byte) mulu8_sel::return#1 20002.0 +(byte) mulu8_sel::return#10 20002.0 +(byte) mulu8_sel::return#11 20002.0 +(byte) mulu8_sel::return#12 21429.428571428572 +(byte) mulu8_sel::return#2 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 0.3333333333333333 +(byte) mulu8_sel::select#5 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 2.0 -(byte) mulu8_sel::v1#1 2.0 -(byte) mulu8_sel::v1#2 4.0 -(byte) mulu8_sel::v1#3 2.0 -(byte) mulu8_sel::v1#4 2.0 -(byte) mulu8_sel::v1#5 12.0 +(byte) mulu8_sel::v1#0 10001.0 +(byte) mulu8_sel::v1#1 10001.0 +(byte) mulu8_sel::v1#2 20002.0 +(byte) mulu8_sel::v1#3 10001.0 +(byte) mulu8_sel::v1#4 10001.0 +(byte) mulu8_sel::v1#5 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 4.0 -(byte) mulu8_sel::v2#1 4.0 -(byte) mulu8_sel::v2#3 4.0 -(byte) mulu8_sel::v2#4 4.0 -(byte) mulu8_sel::v2#5 5.0 +(byte) mulu8_sel::v2#0 20002.0 +(byte) mulu8_sel::v2#1 20002.0 +(byte) mulu8_sel::v2#3 20002.0 +(byte) mulu8_sel::v2#4 20002.0 +(byte) mulu8_sel::v2#5 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 1.5 +(byte) print_byte::b#0 5250.75 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 20002.0 +(byte) print_char::ch#3 20002.0 +(byte) print_char::ch#4 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#10 0.42105263157894735 -(byte*) print_char_cursor#19 45.142857142857146 -(byte*) print_char_cursor#28 6.0 -(byte*) print_char_cursor#42 2.5 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#10 6368.631578947368 +(byte*) print_char_cursor#19 43015.0 +(byte*) print_char_cursor#28 111003.0 +(byte*) print_char_cursor#42 350.5 (void()) print_cls() (byte*) print_line_cursor (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#1 2.8333333333333335 -(signed byte) print_sbyte::b#4 4.0 +(signed byte) print_sbyte::b#0 2002.0 +(signed byte) print_sbyte::b#1 517.3333333333334 +(signed byte) print_sbyte::b#4 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#2 101.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#2 100001.0 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 4.0 +(word~) sin8s::$4 20002.0 (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 0.05555555555555555 +(byte) sin8s::isUpper#10 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 22.0 -(signed byte) sin8s::return#1 5.0 -(signed byte) sin8s::return#5 4.0 +(signed byte) sin8s::return#0 2002.0 +(signed byte) sin8s::return#1 7001.0 +(signed byte) sin8s::return#5 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 4.0 +(signed byte) sin8s::sinx#1 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 0.3333333333333333 -(byte) sin8s::usinx#1 4.0 -(byte) sin8s::usinx#2 4.0 -(byte) sin8s::usinx#4 2.0 +(byte) sin8s::usinx#0 1666.8333333333333 +(byte) sin8s::usinx#1 20002.0 +(byte) sin8s::usinx#2 20002.0 +(byte) sin8s::usinx#4 10001.0 (word) sin8s::x -(word) sin8s::x#0 8.5 -(word) sin8s::x#1 4.0 -(word) sin8s::x#2 4.0 -(word) sin8s::x#4 5.0 -(word) sin8s::x#6 6.0 +(word) sin8s::x#0 15502.0 +(word) sin8s::x#1 20002.0 +(word) sin8s::x#2 20002.0 +(word) sin8s::x#4 25002.5 +(word) sin8s::x#6 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 0.6363636363636365 +(byte) sin8s::x1#0 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 4.0 +(byte) sin8s::x2#0 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 1.0 +(byte) sin8s::x3#0 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 4.0 +(byte) sin8s::x3_6#0 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 4.0 +(byte) sin8s::x4#0 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 4.0 +(byte) sin8s::x5#0 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 4.0 +(byte) sin8s::x5_128#0 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 22.0 +(signed byte~) sin8s_gen::$2 2002.0 (word) sin8s_gen::i -(word) sin8s_gen::i#1 22.0 -(word) sin8s_gen::i#2 3.666666666666667 +(word) sin8s_gen::i#1 2002.0 +(word) sin8s_gen::i#2 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 1.1818181818181819 +(word) sin8s_gen::step#0 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 11.0 -(word) sin8s_gen::x#2 4.125 +(word) sin8s_gen::x#1 1001.0 +(word) sin8s_gen::x#2 375.375 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -3478,94 +3478,88 @@ divr16u: { sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a +Statement [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] { { print_sbyte::b#1 = main::sb#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [21] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:11 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [35] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:11::print_char:26 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:11::print_char:32 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:11::print_byte:29::print_char:40 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] main:2::print_sbyte:11::print_byte:29::print_char:43 [ main::i#2 print_char_cursor#28 ] ) always clobbers reg byte y +Statement [21] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:11 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] { { print_sbyte::b#1 = main::sb#0 } } ) always clobbers reg byte a +Statement [35] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:11::print_char:26 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:11::print_char:32 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:11::print_byte:29::print_char:40 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } main:2::print_sbyte:11::print_byte:29::print_char:43 [ main::i#2 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Removing always clobbered register reg byte y as potential for zp[1]:38 [ print_byte::b#0 ] -Statement [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ) always clobbers reg byte a +Statement [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:38 [ print_byte::b#0 ] -Statement [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a -Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a -Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y -Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] ) always clobbers reg byte a -Statement [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::$2 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte y +Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:17 [ sin8s::isUpper#10 ] -Statement [73] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] ) always clobbers reg byte a -Statement [75] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [91] (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::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [73] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [75] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (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::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:49 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:53 [ sin8s::x3#0 ] -Statement [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ sin8s::usinx#0 ] -Statement [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [116] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a +Statement [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [116] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ mulu8_sel::select#5 ] -Statement [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:55 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:55 [ divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55 [ div16u::return#0 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:36 [ divr16u::i#2 divr16u::i#1 ] -Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a -Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [21] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:11 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [35] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:11::print_char:26 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:11::print_char:32 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:11::print_byte:29::print_char:40 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] main:2::print_sbyte:11::print_byte:29::print_char:43 [ main::i#2 print_char_cursor#28 ] ) always clobbers reg byte y -Statement [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ) always clobbers reg byte a -Statement [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a -Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a -Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y -Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] ) always clobbers reg byte a -Statement [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [73] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] ) always clobbers reg byte a -Statement [75] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [91] (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::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [116] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a -Statement [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:55 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] { { print_sbyte::b#1 = main::sb#0 } } ) always clobbers reg byte a +Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [21] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:11 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] { { print_sbyte::b#1 = main::sb#0 } } ) always clobbers reg byte a +Statement [35] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:11::print_char:26 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:11::print_char:32 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:11::print_byte:29::print_char:40 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } main:2::print_sbyte:11::print_byte:29::print_char:43 [ main::i#2 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte y +Statement [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:11::print_byte:29 [ main::i#2 print_char_cursor#10 print_byte::$2 ] { { print_sbyte::b#1 = main::sb#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte y +Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [73] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [75] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (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::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:62 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [116] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:62::mulu8_sel:79::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:84::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:88::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:94::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:62::mulu8_sel:99::mul8u:115 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:55 [ divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55 [ div16u::return#0 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_str::str#2 print_str::str#0 ] : zp[2]:3 , Potential registers zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] : zp[1]:5 , reg byte a , reg byte x , @@ -3623,72 +3617,67 @@ Potential registers zp[1]:75 [ divr16u::$1 ] : zp[1]:75 , reg byte a , reg byte Potential registers zp[1]:76 [ divr16u::$2 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 353.83: zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp[2]:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp[1]:70 [ mul8u::$1 ] 170: zp[1]:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp[2]:63 [ mul8u::return#2 ] 2: zp[1]:62 [ mul8u::b#0 ] -Uplift Scope [print_str] 303: zp[2]:3 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [divr16u] 96.25: zp[2]:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp[2]:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:75 [ divr16u::$1 ] 22: zp[1]:76 [ divr16u::$2 ] 18.19: zp[1]:36 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp[2]:32 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp[2]:71 [ divr16u::return#2 ] -Uplift Scope [] 155.06: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -Uplift Scope [sin8s] 27.5: zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 22: zp[1]:45 [ sin8s::return#0 ] 13: zp[1]:21 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 10: zp[1]:20 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp[2]:47 [ sin8s::$4 ] 4: zp[1]:51 [ sin8s::x2#0 ] 4: zp[1]:55 [ sin8s::x3_6#0 ] 4: zp[1]:58 [ sin8s::x4#0 ] 4: zp[1]:60 [ sin8s::x5#0 ] 4: zp[1]:61 [ sin8s::x5_128#0 ] 1: zp[1]:53 [ sin8s::x3#0 ] 0.64: zp[1]:49 [ sin8s::x1#0 ] 0.33: zp[1]:56 [ sin8s::usinx#0 ] 0.06: zp[1]:17 [ sin8s::isUpper#10 ] -Uplift Scope [sin8s_gen] 25.67: zp[2]:11 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 22: zp[1]:46 [ sin8s_gen::$2 ] 15.12: zp[2]:13 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 12.05: zp[2]:15 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 1.18: zp[2]:43 [ sin8s_gen::step#0 ] -Uplift Scope [mulu8_sel] 24: zp[1]:22 [ 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[1]:23 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp[1]:50 [ mulu8_sel::return#0 ] 4: zp[1]:52 [ mulu8_sel::return#1 ] 4: zp[1]:54 [ mulu8_sel::return#2 ] 4: zp[1]:57 [ mulu8_sel::return#10 ] 4: zp[1]:59 [ mulu8_sel::return#11 ] 4: zp[2]:65 [ mulu8_sel::$0 ] 4: zp[2]:67 [ mulu8_sel::$1 ] 1.71: zp[1]:69 [ mulu8_sel::return#12 ] 0.33: zp[1]:24 [ mulu8_sel::select#5 ] -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:37 [ main::sb#0 ] -Uplift Scope [memset] 36.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 14: zp[1]:6 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sbyte] 10.83: zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplift Scope [print_byte] 4: zp[1]:39 [ print_byte::$0 ] 4: zp[1]:40 [ print_byte::$2 ] 1.5: zp[1]:38 [ print_byte::b#0 ] -Uplift Scope [div16u] 4: zp[2]:41 [ div16u::return#2 ] 1.33: zp[2]:73 [ div16u::return#0 ] +Uplift Scope [mul8u] 350,016,670.33: zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 245,000,004.57: zp[2]:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 200,000,002: zp[1]:70 [ mul8u::$1 ] 167,200,002.5: zp[1]:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 200,002: zp[2]:63 [ mul8u::return#2 ] 100,001: zp[1]:62 [ mul8u::b#0 ] +Uplift Scope [divr16u] 875,008.75: zp[2]:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 335,203.55: zp[2]:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:75 [ divr16u::$1 ] 200,002: zp[1]:76 [ divr16u::$2 ] 165,386.27: zp[1]:36 [ divr16u::i#2 divr16u::i#1 ] 67,857.82: zp[2]:32 [ divr16u::dividend#2 divr16u::dividend#0 ] 2,002: zp[2]:71 [ divr16u::return#2 ] +Uplift Scope [mulu8_sel] 210,012: zp[1]:22 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 200,002: zp[2]:65 [ mulu8_sel::$0 ] 200,002: zp[2]:67 [ mulu8_sel::$1 ] 150,010.5: zp[1]:23 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 21,429.43: zp[1]:69 [ mulu8_sel::return#12 ] 20,002: zp[1]:50 [ mulu8_sel::return#0 ] 20,002: zp[1]:52 [ mulu8_sel::return#1 ] 20,002: zp[1]:54 [ mulu8_sel::return#2 ] 20,002: zp[1]:57 [ mulu8_sel::return#10 ] 20,002: zp[1]:59 [ mulu8_sel::return#11 ] 16,666.83: zp[1]:24 [ mulu8_sel::select#5 ] +Uplift Scope [sin8s] 110,511.5: zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 50,005: zp[1]:20 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 47,005: zp[1]:21 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 20,002: zp[2]:47 [ sin8s::$4 ] 20,002: zp[1]:51 [ sin8s::x2#0 ] 20,002: zp[1]:55 [ sin8s::x3_6#0 ] 20,002: zp[1]:58 [ sin8s::x4#0 ] 20,002: zp[1]:60 [ sin8s::x5#0 ] 20,002: zp[1]:61 [ sin8s::x5_128#0 ] 5,000.5: zp[1]:53 [ sin8s::x3#0 ] 3,182.14: zp[1]:49 [ sin8s::x1#0 ] 2,002: zp[1]:45 [ sin8s::return#0 ] 1,666.83: zp[1]:56 [ sin8s::usinx#0 ] 277.81: zp[1]:17 [ sin8s::isUpper#10 ] +Uplift Scope [print_str] 300,003: zp[2]:3 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [] 260,738.13: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +Uplift Scope [print_char] 160,007: zp[1]:6 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_byte] 20,002: zp[1]:39 [ print_byte::$0 ] 20,002: zp[1]:40 [ print_byte::$2 ] 5,250.75: zp[1]:38 [ print_byte::b#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [sin8s_gen] 2,335.67: zp[2]:11 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 2,002: zp[1]:46 [ sin8s_gen::$2 ] 1,376.38: zp[2]:13 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 1,096.33: zp[2]:15 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 100.18: zp[2]:43 [ sin8s_gen::step#0 ] +Uplift Scope [print_sbyte] 4,521.33: zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplift Scope [div16u] 367.33: zp[2]:73 [ div16u::return#0 ] 202: zp[2]:41 [ div16u::return#2 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:37 [ main::sb#0 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplifting [mul8u] best 19894 combination zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:63 [ mul8u::return#2 ] reg byte a [ mul8u::b#0 ] -Uplifting [print_str] best 19894 combination zp[2]:3 [ print_str::str#2 print_str::str#0 ] Uplifting [divr16u] best 19684 combination zp[2]:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:34 [ 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[2]:32 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:71 [ divr16u::return#2 ] -Uplifting [] best 19684 combination zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -Uplifting [sin8s] best 19579 combination zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp[2]:47 [ sin8s::$4 ] zp[1]:51 [ sin8s::x2#0 ] zp[1]:55 [ sin8s::x3_6#0 ] zp[1]:58 [ sin8s::x4#0 ] zp[1]:60 [ sin8s::x5#0 ] zp[1]:61 [ sin8s::x5_128#0 ] zp[1]:53 [ sin8s::x3#0 ] zp[1]:49 [ sin8s::x1#0 ] zp[1]:56 [ sin8s::usinx#0 ] zp[1]:17 [ sin8s::isUpper#10 ] -Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [sin8s_gen] best 19519 combination zp[2]:11 [ sin8s_gen::i#2 sin8s_gen::i#1 ] reg byte a [ sin8s_gen::$2 ] zp[2]:13 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp[2]:15 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp[2]:43 [ sin8s_gen::step#0 ] -Uplifting [mulu8_sel] best 19473 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[1]:54 [ mulu8_sel::return#2 ] zp[1]:57 [ mulu8_sel::return#10 ] zp[1]:59 [ mulu8_sel::return#11 ] zp[2]:65 [ mulu8_sel::$0 ] zp[2]:67 [ mulu8_sel::$1 ] zp[1]:69 [ mulu8_sel::return#12 ] zp[1]:24 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 19626 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 ] zp[2]:65 [ mulu8_sel::$0 ] zp[2]:67 [ mulu8_sel::$1 ] 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#12 ] reg byte a [ mulu8_sel::return#0 ] zp[1]:52 [ mulu8_sel::return#1 ] zp[1]:54 [ mulu8_sel::return#2 ] zp[1]:57 [ mulu8_sel::return#10 ] zp[1]:59 [ mulu8_sel::return#11 ] zp[1]:24 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [main] best 19293 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::sb#0 ] -Uplifting [memset] best 19293 combination zp[2]:9 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 19278 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sbyte] best 19278 combination zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_byte] best 19270 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp[1]:38 [ print_byte::b#0 ] -Uplifting [div16u] best 19270 combination zp[2]:41 [ div16u::return#2 ] zp[2]:73 [ div16u::return#0 ] -Uplifting [RADIX] best 19270 combination -Uplifting [print_cls] best 19270 combination -Attempting to uplift remaining variables inzp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 19270 combination zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Attempting to uplift remaining variables inzp[1]:51 [ sin8s::x2#0 ] -Uplifting [sin8s] best 19266 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 19573 combination zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] zp[2]:47 [ sin8s::$4 ] reg byte a [ sin8s::x2#0 ] reg byte a [ sin8s::x3_6#0 ] zp[1]:58 [ sin8s::x4#0 ] zp[1]:60 [ sin8s::x5#0 ] zp[1]:61 [ sin8s::x5_128#0 ] zp[1]:53 [ sin8s::x3#0 ] zp[1]:49 [ sin8s::x1#0 ] zp[1]:45 [ sin8s::return#0 ] zp[1]:56 [ sin8s::usinx#0 ] zp[1]:17 [ sin8s::isUpper#10 ] +Limited combination testing to 100 combinations of 5308416 possible. +Uplifting [print_str] best 19573 combination zp[2]:3 [ print_str::str#2 print_str::str#0 ] +Uplifting [] best 19573 combination zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +Uplifting [print_char] best 19558 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 19543 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#0 ] +Uplifting [memset] best 19543 combination zp[2]:9 [ memset::dst#2 memset::dst#1 ] +Uplifting [sin8s_gen] best 19483 combination zp[2]:11 [ sin8s_gen::i#2 sin8s_gen::i#1 ] reg byte a [ sin8s_gen::$2 ] zp[2]:13 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp[2]:15 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp[2]:43 [ sin8s_gen::step#0 ] +Uplifting [print_sbyte] best 19447 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 19447 combination zp[2]:73 [ div16u::return#0 ] zp[2]:41 [ div16u::return#2 ] +Uplifting [main] best 19407 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::sb#0 ] +Uplifting [RADIX] best 19407 combination +Uplifting [print_cls] best 19407 combination +Attempting to uplift remaining variables inzp[1]:52 [ mulu8_sel::return#1 ] +Uplifting [mulu8_sel] best 19401 combination reg byte a [ mulu8_sel::return#1 ] Attempting to uplift remaining variables inzp[1]:54 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 19260 combination reg byte a [ mulu8_sel::return#2 ] -Attempting to uplift remaining variables inzp[1]:55 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 19256 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [mulu8_sel] best 19395 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp[1]:57 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 19250 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 19389 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp[1]:58 [ sin8s::x4#0 ] -Uplifting [sin8s] best 19246 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 19385 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp[1]:59 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 19240 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 19379 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp[1]:60 [ sin8s::x5#0 ] -Uplifting [sin8s] best 19234 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 19373 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp[1]:61 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 19228 combination reg byte a [ sin8s::x5_128#0 ] -Attempting to uplift remaining variables inzp[1]:69 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 19210 combination reg byte a [ mulu8_sel::return#12 ] -Attempting to uplift remaining variables inzp[1]:38 [ print_byte::b#0 ] -Uplifting [print_byte] best 19210 combination zp[1]:38 [ print_byte::b#0 ] -Attempting to uplift remaining variables inzp[1]:53 [ sin8s::x3#0 ] -Uplifting [sin8s] best 19210 combination zp[1]:53 [ sin8s::x3#0 ] -Attempting to uplift remaining variables inzp[1]:49 [ sin8s::x1#0 ] -Uplifting [sin8s] best 19210 combination zp[1]:49 [ sin8s::x1#0 ] +Uplifting [sin8s] best 19367 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp[1]:24 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 19210 combination zp[1]:24 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 19367 combination zp[1]:24 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp[1]:53 [ sin8s::x3#0 ] +Uplifting [sin8s] best 19367 combination zp[1]:53 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp[1]:49 [ sin8s::x1#0 ] +Uplifting [sin8s] best 19367 combination zp[1]:49 [ sin8s::x1#0 ] +Attempting to uplift remaining variables inzp[1]:45 [ sin8s::return#0 ] +Uplifting [sin8s] best 19307 combination reg byte a [ sin8s::return#0 ] Attempting to uplift remaining variables inzp[1]:56 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 19210 combination zp[1]:56 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 19307 combination zp[1]:56 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp[1]:17 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 19210 combination zp[1]:17 [ sin8s::isUpper#10 ] -Coalescing zero page register [ zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] with [ zp[1]:38 [ print_byte::b#0 ] ] - score: 1 +Uplifting [sin8s] best 19307 combination zp[1]:17 [ sin8s::isUpper#10 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 19307 combination zp[1]:2 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] ] with [ zp[2]:47 [ sin8s::$4 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp[2]:63 [ mul8u::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:71 [ divr16u::return#2 ] ] - score: 1 @@ -3698,23 +3687,22 @@ Coalescing zero page register [ zp[2]:65 [ mulu8_sel::$0 ] ] with [ zp[2]:67 [ m Coalescing zero page register [ zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp[2]:65 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 Coalescing zero page register [ zp[2]:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:41 [ div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:3 [ print_str::str#2 print_str::str#0 ] ] -Coalescing zero page register [ zp[1]:17 [ sin8s::isUpper#10 ] ] with [ zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] ] Coalescing zero page register [ zp[2]:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ] Coalescing zero page register [ zp[2]:32 [ divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp[2]:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] Coalescing zero page register [ zp[2]:11 [ sin8s_gen::i#2 sin8s_gen::i#1 ] ] with [ zp[2]:9 [ memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] ] Coalescing zero page register [ zp[2]:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ] with [ zp[2]:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ] -Allocated (was zp[2]:7) zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -Allocated (was zp[2]:11) zp[2]:4 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -Allocated (was zp[2]:13) zp[2]:6 [ sin8s_gen::x#2 sin8s_gen::x#1 ] -Allocated (was zp[2]:15) zp[2]:8 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] -Allocated (was zp[1]:17) zp[1]:10 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] -Allocated (was zp[1]:24) zp[1]:11 [ mulu8_sel::select#5 ] -Allocated (was zp[2]:30) zp[2]:12 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated (was zp[2]:32) zp[2]:14 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] -Allocated (was zp[2]:34) zp[2]:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] -Allocated (was zp[1]:49) zp[1]:18 [ sin8s::x1#0 ] -Allocated (was zp[1]:53) zp[1]:19 [ sin8s::x3#0 ] -Allocated (was zp[1]:56) zp[1]:20 [ sin8s::usinx#0 ] +Allocated (was zp[2]:7) zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +Allocated (was zp[2]:11) zp[2]:5 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +Allocated (was zp[2]:13) zp[2]:7 [ sin8s_gen::x#2 sin8s_gen::x#1 ] +Allocated (was zp[2]:15) zp[2]:9 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +Allocated (was zp[1]:17) zp[1]:11 [ sin8s::isUpper#10 ] +Allocated (was zp[1]:24) zp[1]:12 [ mulu8_sel::select#5 ] +Allocated (was zp[2]:30) zp[2]:13 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated (was zp[2]:32) zp[2]:15 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +Allocated (was zp[2]:34) zp[2]:17 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +Allocated (was zp[1]:49) zp[1]:19 [ sin8s::x1#0 ] +Allocated (was zp[1]:53) zp[1]:20 [ sin8s::x3#0 ] +Allocated (was zp[1]:56) zp[1]:21 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -3731,7 +3719,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const PI_HALF_u4f12 = $1922 .const wavelength = $c0 .label print_line_cursor = $400 - .label print_char_cursor = 2 + .label print_char_cursor = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -3750,6 +3738,7 @@ __bend_from___b1: __bend: // main main: { + .label i = 2 // [5] call sin8s_gen // [54] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: @@ -3770,8 +3759,9 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - // [8] phi (byte) main::i#2 = (byte) 0 [phi:main::@2->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [8] phi (byte) main::i#2 = (byte) 0 [phi:main::@2->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i jmp __b1 // [8] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: @@ -3780,12 +3770,13 @@ main: { jmp __b1 // main::@1 __b1: - // [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx - lda sintab2,x + // [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1_minus_pbsc2_derefidx_vbuz1 + ldy.z i + lda sintab2,y sec - sbc sintabref,x - // [10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsz1=vbsaa - sta.z print_sbyte.b + sbc sintabref,y + // [10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsxx=vbsaa + tax // [11] call print_sbyte jsr print_sbyte // [12] phi from main::@1 to main::@3 [phi:main::@1->main::@3] @@ -3800,10 +3791,11 @@ main: { jmp __b4 // main::@4 __b4: - // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [15] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c0 + // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [15] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$c0 + cmp.z i bne __b1_from___b4 jmp __breturn // main::@return @@ -3815,9 +3807,9 @@ main: { } // print_str // Print a zero-terminated string -// print_str(byte* zp(4) str) +// print_str(byte* zp(5) str) print_str: { - .label str = 4 + .label str = 5 // [18] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] __b1_from_print_str: // [18] phi (byte*) print_char_cursor#19 = (byte*) print_char_cursor#10 [phi:print_str->print_str::@1#0] -- register_copy @@ -3864,11 +3856,10 @@ print_str: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $a - // [24] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [24] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1_from_print_sbyte // [25] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] __b3_from_print_sbyte: @@ -3912,12 +3903,12 @@ print_sbyte: { jmp __b4 // print_sbyte::@4 __b4: - // [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2_from___b4 } // print_char @@ -3940,11 +3931,10 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a - // [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -3962,12 +3952,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [42] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [42] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [43] call print_char // [34] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -4000,7 +3989,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = 4 + .label dst = 5 // [49] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: // [49] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 @@ -4043,14 +4032,14 @@ memset: { // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin8s_gen(signed byte* zp(8) sintab) +// sin8s_gen(signed byte* zp(9) sintab) sin8s_gen: { - .label step = $10 - .label sintab = 8 + .label step = $11 + .label sintab = 9 // u[4.12] // Iterate over the table - .label x = 6 - .label i = 4 + .label x = 7 + .label i = 5 // [55] call div16u // [131] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: @@ -4141,17 +4130,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($c) x) +// sin8s(word zp($d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $c - .label x = $c - .label x1 = $12 - .label x3 = $13 - .label usinx = $14 + .label __4 = $d + .label x = $d + .label x1 = $13 + .label x3 = $14 + .label usinx = $15 // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $a + .label isUpper = $b // [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 cmp #>PI_u4f12 @@ -4377,11 +4366,11 @@ sin8s: { // 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 zp($b) select) +// mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zp($c) select) mulu8_sel: { - .label __0 = $e - .label __1 = $e - .label select = $b + .label __0 = $f + .label __1 = $f + .label select = $c // [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 // [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya @@ -4413,9 +4402,9 @@ mulu8_sel: { // 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 = $c - .label res = $e - .label return = $e + .label mb = $d + .label res = $f + .label return = $f // [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta.z mb lda #0 @@ -4486,7 +4475,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $10 + .label return = $11 // [132] call divr16u // [136] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: @@ -4507,12 +4496,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($e) dividend, word zp($c) rem) +// divr16u(word zp($f) dividend, word zp($d) rem) divr16u: { - .label rem = $c - .label dividend = $e - .label quotient = $10 - .label return = $10 + .label rem = $d + .label dividend = $f + .label quotient = $11 + .label return = $11 // [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: // [137] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 @@ -4822,11 +4811,11 @@ FINAL SYMBOL TABLE (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 return zp[2]:16 1.3333333333333333 -(word) div16u::return#2 return zp[2]:16 4.0 +(word) div16u::return#0 return zp[2]:17 367.33333333333337 +(word) div16u::return#2 return zp[2]:17 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -4834,26 +4823,26 @@ FINAL SYMBOL TABLE (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:14 2.75 -(word) divr16u::dividend#2 dividend zp[2]:14 4.714285714285714 +(word) divr16u::dividend#0 dividend zp[2]:15 25000.25 +(word) divr16u::dividend#2 dividend zp[2]:15 42857.57142857143 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:16 16.5 -(word) divr16u::quotient#2 quotient zp[2]:16 11.0 -(word) divr16u::quotient#3 quotient zp[2]:16 2.75 +(word) divr16u::quotient#1 quotient zp[2]:17 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:17 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:17 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:12 8.25 -(word) divr16u::rem#1 rem zp[2]:12 22.0 -(word) divr16u::rem#2 rem zp[2]:12 22.0 -(word) divr16u::rem#4 rem zp[2]:12 22.0 -(word) divr16u::rem#5 rem zp[2]:12 11.0 -(word) divr16u::rem#9 rem zp[2]:12 11.0 +(word) divr16u::rem#0 rem zp[2]:13 75000.75 +(word) divr16u::rem#1 rem zp[2]:13 200002.0 +(word) divr16u::rem#2 rem zp[2]:13 200002.0 +(word) divr16u::rem#4 rem zp[2]:13 200002.0 +(word) divr16u::rem#5 rem zp[2]:13 100001.0 +(word) divr16u::rem#9 rem zp[2]:13 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:16 7.000000000000001 -(word) divr16u::return#2 return zp[2]:16 4.0 +(word) divr16u::return#0 return zp[2]:17 60200.8 +(word) divr16u::return#2 return zp[2]:17 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -4861,10 +4850,10 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 50.5 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 (const byte*) main::str[(byte) 3] = (byte*) " " (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -4873,8 +4862,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:5 20002.0 +(byte*) memset::dst#2 dst zp[2]:5 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4883,74 +4872,74 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 1.3333333333333333 -(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 366667.3333333334 +(byte) mul8u::a#2 reg byte x 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 2.0 +(byte) mul8u::b#0 reg byte a 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:12 4.0 -(word) mul8u::mb#1 mb zp[2]:12 202.0 -(word) mul8u::mb#2 mb zp[2]:12 43.57142857142858 +(word) mul8u::mb#0 mb zp[2]:13 2000002.0 +(word) mul8u::mb#1 mb zp[2]:13 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:13 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 202.0 -(word) mul8u::res#2 res zp[2]:14 50.83333333333333 -(word) mul8u::res#6 res zp[2]:14 101.0 +(word) mul8u::res#1 res zp[2]:15 2.00000002E8 +(word) mul8u::res#2 res zp[2]:15 5.0016667333333336E7 +(word) mul8u::res#6 res zp[2]:15 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 +(word) mul8u::return#2 return zp[2]:15 200002.0 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 zp[2]:14 4.0 -(word~) mulu8_sel::$1 zp[2]:14 4.0 +(word~) mulu8_sel::$0 zp[2]:15 200002.0 +(word~) mulu8_sel::$1 zp[2]:15 200002.0 (label) mulu8_sel::@1 (label) mulu8_sel::@return (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 reg byte a 4.0 -(byte) mulu8_sel::return#1 reg byte a 4.0 -(byte) mulu8_sel::return#10 reg byte a 4.0 -(byte) mulu8_sel::return#11 reg byte a 4.0 -(byte) mulu8_sel::return#12 reg byte a 1.714285714285714 -(byte) mulu8_sel::return#2 reg byte a 4.0 +(byte) mulu8_sel::return#0 reg byte a 20002.0 +(byte) mulu8_sel::return#1 reg byte a 20002.0 +(byte) mulu8_sel::return#10 reg byte a 20002.0 +(byte) mulu8_sel::return#11 reg byte a 20002.0 +(byte) mulu8_sel::return#12 reg byte a 21429.428571428572 +(byte) mulu8_sel::return#2 reg byte a 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 select zp[1]:11 0.3333333333333333 +(byte) mulu8_sel::select#5 select zp[1]:12 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 reg byte x 2.0 -(byte) mulu8_sel::v1#1 reg byte x 2.0 -(byte) mulu8_sel::v1#2 reg byte x 4.0 -(byte) mulu8_sel::v1#3 reg byte x 2.0 -(byte) mulu8_sel::v1#4 reg byte x 2.0 -(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v1#0 reg byte x 10001.0 +(byte) mulu8_sel::v1#1 reg byte x 10001.0 +(byte) mulu8_sel::v1#2 reg byte x 20002.0 +(byte) mulu8_sel::v1#3 reg byte x 10001.0 +(byte) mulu8_sel::v1#4 reg byte x 10001.0 +(byte) mulu8_sel::v1#5 reg byte x 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 reg byte y 4.0 -(byte) mulu8_sel::v2#1 reg byte y 4.0 -(byte) mulu8_sel::v2#3 reg byte y 4.0 -(byte) mulu8_sel::v2#4 reg byte y 4.0 -(byte) mulu8_sel::v2#5 reg byte y 5.0 +(byte) mulu8_sel::v2#0 reg byte y 20002.0 +(byte) mulu8_sel::v2#1 reg byte y 20002.0 +(byte) mulu8_sel::v2#3 reg byte y 20002.0 +(byte) mulu8_sel::v2#4 reg byte y 20002.0 +(byte) mulu8_sel::v2#5 reg byte y 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 1.5 +(byte) print_byte::b#0 reg byte x 5250.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 101.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.42105263157894735 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:2 6.0 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 2.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:3 100001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:3 6368.631578947368 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:3 43015.0 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:3 111003.0 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:3 350.5 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -4963,19 +4952,19 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:10 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:10 2.8333333333333335 -(signed byte) print_sbyte::b#4 b zp[1]:10 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#1 reg byte x 517.3333333333334 +(signed byte) print_sbyte::b#4 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 202.0 -(byte*) print_str::str#2 str zp[2]:4 101.0 +(byte*) print_str::str#0 str zp[2]:5 200002.0 +(byte*) print_str::str#2 str zp[2]:5 100001.0 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 zp[2]:12 4.0 +(word~) sin8s::$4 zp[2]:13 20002.0 (label) sin8s::@1 (label) sin8s::@10 (label) sin8s::@11 @@ -4993,91 +4982,93 @@ FINAL SYMBOL TABLE (label) sin8s::@return (const byte) sin8s::DIV_6 = (byte) $2b (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 isUpper zp[1]:10 0.05555555555555555 +(byte) sin8s::isUpper#10 isUpper zp[1]:11 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 reg byte a 22.0 -(signed byte) sin8s::return#1 reg byte a 5.0 -(signed byte) sin8s::return#5 reg byte a 4.0 +(signed byte) sin8s::return#0 reg byte a 2002.0 +(signed byte) sin8s::return#1 reg byte a 7001.0 +(signed byte) sin8s::return#5 reg byte a 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 reg byte a 4.0 +(signed byte) sin8s::sinx#1 reg byte a 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 usinx zp[1]:20 0.3333333333333333 -(byte) sin8s::usinx#1 reg byte x 4.0 -(byte) sin8s::usinx#2 reg byte x 4.0 -(byte) sin8s::usinx#4 reg byte x 2.0 +(byte) sin8s::usinx#0 usinx zp[1]:21 1666.8333333333333 +(byte) sin8s::usinx#1 reg byte x 20002.0 +(byte) sin8s::usinx#2 reg byte x 20002.0 +(byte) sin8s::usinx#4 reg byte x 10001.0 (word) sin8s::x -(word) sin8s::x#0 x zp[2]:12 8.5 -(word) sin8s::x#1 x zp[2]:12 4.0 -(word) sin8s::x#2 x zp[2]:12 4.0 -(word) sin8s::x#4 x zp[2]:12 5.0 -(word) sin8s::x#6 x zp[2]:12 6.0 +(word) sin8s::x#0 x zp[2]:13 15502.0 +(word) sin8s::x#1 x zp[2]:13 20002.0 +(word) sin8s::x#2 x zp[2]:13 20002.0 +(word) sin8s::x#4 x zp[2]:13 25002.5 +(word) sin8s::x#6 x zp[2]:13 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 x1 zp[1]:18 0.6363636363636365 +(byte) sin8s::x1#0 x1 zp[1]:19 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 reg byte a 4.0 +(byte) sin8s::x2#0 reg byte a 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 x3 zp[1]:19 1.0 +(byte) sin8s::x3#0 x3 zp[1]:20 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x3_6#0 reg byte a 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x4#0 reg byte a 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5#0 reg byte a 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 reg byte a 4.0 +(byte) sin8s::x5_128#0 reg byte a 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 reg byte a 22.0 +(signed byte~) sin8s_gen::$2 reg byte a 2002.0 (label) sin8s_gen::@1 (label) sin8s_gen::@2 (label) sin8s_gen::@3 (label) sin8s_gen::@4 (label) sin8s_gen::@return (word) sin8s_gen::i -(word) sin8s_gen::i#1 i zp[2]:4 22.0 -(word) sin8s_gen::i#2 i zp[2]:4 3.666666666666667 +(word) sin8s_gen::i#1 i zp[2]:5 2002.0 +(word) sin8s_gen::i#2 i zp[2]:5 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:8 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:8 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:9 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:9 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 step zp[2]:16 1.1818181818181819 +(word) sin8s_gen::step#0 step zp[2]:17 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 x zp[2]:6 11.0 -(word) sin8s_gen::x#2 x zp[2]:6 4.125 +(word) sin8s_gen::x#1 x zp[2]:7 1001.0 +(word) sin8s_gen::x#2 x zp[2]:7 375.375 (const signed byte*) sintab2[(number) $c0] = { fill( $c0, 0) } (const byte*) sintabref[] = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc } (const word) wavelength = (word) $c0 -reg byte x [ main::i#2 main::i#1 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -zp[2]:4 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -zp[2]:6 [ sin8s_gen::x#2 sin8s_gen::x#1 ] -zp[2]:8 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] -zp[1]:10 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] +zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +zp[2]:5 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +zp[2]:7 [ sin8s_gen::x#2 sin8s_gen::x#1 ] +zp[2]:9 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +zp[1]:11 [ sin8s::isUpper#10 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 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 ] -zp[1]:11 [ mulu8_sel::select#5 ] +zp[1]:12 [ mulu8_sel::select#5 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp[2]:12 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -zp[2]:14 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] -zp[2]:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +zp[2]:13 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp[2]:15 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +zp[2]:17 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ main::sb#0 ] +reg byte x [ print_byte::b#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s_gen::$2 ] -zp[1]:18 [ sin8s::x1#0 ] +zp[1]:19 [ sin8s::x1#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ sin8s::x2#0 ] reg byte a [ mulu8_sel::return#1 ] -zp[1]:19 [ sin8s::x3#0 ] +zp[1]:20 [ sin8s::x3#0 ] reg byte a [ mulu8_sel::return#2 ] reg byte a [ sin8s::x3_6#0 ] -zp[1]:20 [ sin8s::usinx#0 ] +zp[1]:21 [ sin8s::usinx#0 ] reg byte a [ mulu8_sel::return#10 ] reg byte a [ sin8s::x4#0 ] reg byte a [ mulu8_sel::return#11 ] @@ -5091,7 +5082,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 16005 +Score: 16108 // File Comments // Upstart @@ -5107,7 +5098,7 @@ Score: 16005 .const PI_HALF_u4f12 = $1922 .const wavelength = $c0 .label print_line_cursor = $400 - .label print_char_cursor = 2 + .label print_char_cursor = 3 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -5117,6 +5108,7 @@ Score: 16005 // @end // main main: { + .label i = 2 // sin8s_gen(sintab2, wavelength) // [5] call sin8s_gen // [54] phi from main to sin8s_gen [phi:main->sin8s_gen] @@ -5133,21 +5125,23 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - // [8] phi (byte) main::i#2 = (byte) 0 [phi:main::@2->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [8] phi (byte) main::i#2 = (byte) 0 [phi:main::@2->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i // [8] phi from main::@4 to main::@1 [phi:main::@4->main::@1] // [8] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#19 [phi:main::@4->main::@1#0] -- register_copy // [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#1] -- register_copy // main::@1 __b1: // sb = sintab2[i]-(signed byte)sintabref[i] - // [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx - lda sintab2,x + // [9] (signed byte) main::sb#0 ← *((const signed byte*) sintab2 + (byte) main::i#2) - (signed byte)*((const byte*) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1_minus_pbsc2_derefidx_vbuz1 + ldy.z i + lda sintab2,y sec - sbc sintabref,x + sbc sintabref,y // print_sbyte(sb) - // [10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsz1=vbsaa - sta.z print_sbyte.b + // [10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsxx=vbsaa + tax // [11] call print_sbyte jsr print_sbyte // [12] phi from main::@1 to main::@3 [phi:main::@1->main::@3] @@ -5158,10 +5152,11 @@ main: { jsr print_str // main::@4 // for(byte i: 0..191) - // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [15] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c0 + // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [15] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$c0 + cmp.z i bne __b1 // main::@return // } @@ -5172,9 +5167,9 @@ main: { } // print_str // Print a zero-terminated string -// print_str(byte* zp(4) str) +// print_str(byte* zp(5) str) print_str: { - .label str = 4 + .label str = 5 // [18] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] // [18] phi (byte*) print_char_cursor#19 = (byte*) print_char_cursor#10 [phi:print_str->print_str::@1#0] -- register_copy // [18] phi (byte*) print_str::str#2 = (const byte*) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 @@ -5219,12 +5214,11 @@ print_str: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $a // if(b<0) - // [24] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [24] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1 // [25] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] // print_sbyte::@3 @@ -5259,12 +5253,12 @@ print_sbyte: { jsr print_char // print_sbyte::@4 // b = -b - // [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2 } // print_char @@ -5288,12 +5282,11 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a // b>>4 - // [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [38] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -5310,13 +5303,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [41] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [42] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [42] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [43] call print_char // [34] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [34] phi (byte*) print_char_cursor#28 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy @@ -5346,7 +5338,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = 4 + .label dst = 5 // [49] phi from memset to memset::@1 [phi:memset->memset::@1] // [49] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #div16u] @@ -5483,17 +5475,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($c) x) +// sin8s(word zp($d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $c - .label x = $c - .label x1 = $12 - .label x3 = $13 - .label usinx = $14 + .label __4 = $d + .label x = $d + .label x1 = $13 + .label x3 = $14 + .label usinx = $15 // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $a + .label isUpper = $b // if(x >= PI_u4f12 ) // [69] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 @@ -5711,11 +5703,11 @@ sin8s: { // 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 zp($b) select) +// mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zp($c) select) mulu8_sel: { - .label __0 = $e - .label __1 = $e - .label select = $b + .label __0 = $f + .label __1 = $f + .label select = $c // mul8u(v1, v2) // [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 // [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy @@ -5747,9 +5739,9 @@ mulu8_sel: { // 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 = $c - .label res = $e - .label return = $e + .label mb = $d + .label res = $f + .label return = $f // mb = b // [121] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta.z mb @@ -5816,7 +5808,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $10 + .label return = $11 // divr16u(dividend, divisor, 0) // [132] call divr16u // [136] phi from div16u to divr16u [phi:div16u->divr16u] @@ -5835,12 +5827,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($e) dividend, word zp($c) rem) +// divr16u(word zp($f) dividend, word zp($d) rem) divr16u: { - .label rem = $c - .label dividend = $e - .label quotient = $10 - .label return = $10 + .label rem = $d + .label dividend = $f + .label quotient = $11 + .label return = $11 // [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] // [137] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 diff --git a/src/test/ref/sinusgen8.sym b/src/test/ref/sinusgen8.sym index 55abce905..226e45c20 100644 --- a/src/test/ref/sinusgen8.sym +++ b/src/test/ref/sinusgen8.sym @@ -14,11 +14,11 @@ (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 return zp[2]:16 1.3333333333333333 -(word) div16u::return#2 return zp[2]:16 4.0 +(word) div16u::return#0 return zp[2]:17 367.33333333333337 +(word) div16u::return#2 return zp[2]:17 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -26,26 +26,26 @@ (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:14 2.75 -(word) divr16u::dividend#2 dividend zp[2]:14 4.714285714285714 +(word) divr16u::dividend#0 dividend zp[2]:15 25000.25 +(word) divr16u::dividend#2 dividend zp[2]:15 42857.57142857143 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:16 16.5 -(word) divr16u::quotient#2 quotient zp[2]:16 11.0 -(word) divr16u::quotient#3 quotient zp[2]:16 2.75 +(word) divr16u::quotient#1 quotient zp[2]:17 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:17 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:17 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:12 8.25 -(word) divr16u::rem#1 rem zp[2]:12 22.0 -(word) divr16u::rem#2 rem zp[2]:12 22.0 -(word) divr16u::rem#4 rem zp[2]:12 22.0 -(word) divr16u::rem#5 rem zp[2]:12 11.0 -(word) divr16u::rem#9 rem zp[2]:12 11.0 +(word) divr16u::rem#0 rem zp[2]:13 75000.75 +(word) divr16u::rem#1 rem zp[2]:13 200002.0 +(word) divr16u::rem#2 rem zp[2]:13 200002.0 +(word) divr16u::rem#4 rem zp[2]:13 200002.0 +(word) divr16u::rem#5 rem zp[2]:13 100001.0 +(word) divr16u::rem#9 rem zp[2]:13 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:16 7.000000000000001 -(word) divr16u::return#2 return zp[2]:16 4.0 +(word) divr16u::return#0 return zp[2]:17 60200.8 +(word) divr16u::return#2 return zp[2]:17 2002.0 (void()) main() (label) main::@1 (label) main::@2 @@ -53,10 +53,10 @@ (label) main::@4 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 50.5 (signed byte) main::sb -(signed byte) main::sb#0 reg byte a 22.0 +(signed byte) main::sb#0 reg byte a 202.0 (const byte*) main::str[(byte) 3] = (byte*) " " (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -65,8 +65,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:4 22.0 -(byte*) memset::dst#2 dst zp[2]:4 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:5 20002.0 +(byte*) memset::dst#2 dst zp[2]:5 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -75,74 +75,74 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 1.3333333333333333 -(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 366667.3333333334 +(byte) mul8u::a#2 reg byte x 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 2.0 +(byte) mul8u::b#0 reg byte a 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:12 4.0 -(word) mul8u::mb#1 mb zp[2]:12 202.0 -(word) mul8u::mb#2 mb zp[2]:12 43.57142857142858 +(word) mul8u::mb#0 mb zp[2]:13 2000002.0 +(word) mul8u::mb#1 mb zp[2]:13 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:13 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 202.0 -(word) mul8u::res#2 res zp[2]:14 50.83333333333333 -(word) mul8u::res#6 res zp[2]:14 101.0 +(word) mul8u::res#1 res zp[2]:15 2.00000002E8 +(word) mul8u::res#2 res zp[2]:15 5.0016667333333336E7 +(word) mul8u::res#6 res zp[2]:15 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 +(word) mul8u::return#2 return zp[2]:15 200002.0 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 zp[2]:14 4.0 -(word~) mulu8_sel::$1 zp[2]:14 4.0 +(word~) mulu8_sel::$0 zp[2]:15 200002.0 +(word~) mulu8_sel::$1 zp[2]:15 200002.0 (label) mulu8_sel::@1 (label) mulu8_sel::@return (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 reg byte a 4.0 -(byte) mulu8_sel::return#1 reg byte a 4.0 -(byte) mulu8_sel::return#10 reg byte a 4.0 -(byte) mulu8_sel::return#11 reg byte a 4.0 -(byte) mulu8_sel::return#12 reg byte a 1.714285714285714 -(byte) mulu8_sel::return#2 reg byte a 4.0 +(byte) mulu8_sel::return#0 reg byte a 20002.0 +(byte) mulu8_sel::return#1 reg byte a 20002.0 +(byte) mulu8_sel::return#10 reg byte a 20002.0 +(byte) mulu8_sel::return#11 reg byte a 20002.0 +(byte) mulu8_sel::return#12 reg byte a 21429.428571428572 +(byte) mulu8_sel::return#2 reg byte a 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 select zp[1]:11 0.3333333333333333 +(byte) mulu8_sel::select#5 select zp[1]:12 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 reg byte x 2.0 -(byte) mulu8_sel::v1#1 reg byte x 2.0 -(byte) mulu8_sel::v1#2 reg byte x 4.0 -(byte) mulu8_sel::v1#3 reg byte x 2.0 -(byte) mulu8_sel::v1#4 reg byte x 2.0 -(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v1#0 reg byte x 10001.0 +(byte) mulu8_sel::v1#1 reg byte x 10001.0 +(byte) mulu8_sel::v1#2 reg byte x 20002.0 +(byte) mulu8_sel::v1#3 reg byte x 10001.0 +(byte) mulu8_sel::v1#4 reg byte x 10001.0 +(byte) mulu8_sel::v1#5 reg byte x 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 reg byte y 4.0 -(byte) mulu8_sel::v2#1 reg byte y 4.0 -(byte) mulu8_sel::v2#3 reg byte y 4.0 -(byte) mulu8_sel::v2#4 reg byte y 4.0 -(byte) mulu8_sel::v2#5 reg byte y 5.0 +(byte) mulu8_sel::v2#0 reg byte y 20002.0 +(byte) mulu8_sel::v2#1 reg byte y 20002.0 +(byte) mulu8_sel::v2#3 reg byte y 20002.0 +(byte) mulu8_sel::v2#4 reg byte y 20002.0 +(byte) mulu8_sel::v2#5 reg byte y 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 1.5 +(byte) print_byte::b#0 reg byte x 5250.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 101.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.42105263157894735 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:2 6.0 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 2.5 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:3 100001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:3 6368.631578947368 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:3 43015.0 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:3 111003.0 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:3 350.5 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -155,19 +155,19 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:10 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:10 2.8333333333333335 -(signed byte) print_sbyte::b#4 b zp[1]:10 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#1 reg byte x 517.3333333333334 +(signed byte) print_sbyte::b#4 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:4 202.0 -(byte*) print_str::str#2 str zp[2]:4 101.0 +(byte*) print_str::str#0 str zp[2]:5 200002.0 +(byte*) print_str::str#2 str zp[2]:5 100001.0 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 zp[2]:12 4.0 +(word~) sin8s::$4 zp[2]:13 20002.0 (label) sin8s::@1 (label) sin8s::@10 (label) sin8s::@11 @@ -185,91 +185,93 @@ (label) sin8s::@return (const byte) sin8s::DIV_6 = (byte) $2b (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 isUpper zp[1]:10 0.05555555555555555 +(byte) sin8s::isUpper#10 isUpper zp[1]:11 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 reg byte a 22.0 -(signed byte) sin8s::return#1 reg byte a 5.0 -(signed byte) sin8s::return#5 reg byte a 4.0 +(signed byte) sin8s::return#0 reg byte a 2002.0 +(signed byte) sin8s::return#1 reg byte a 7001.0 +(signed byte) sin8s::return#5 reg byte a 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 reg byte a 4.0 +(signed byte) sin8s::sinx#1 reg byte a 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 usinx zp[1]:20 0.3333333333333333 -(byte) sin8s::usinx#1 reg byte x 4.0 -(byte) sin8s::usinx#2 reg byte x 4.0 -(byte) sin8s::usinx#4 reg byte x 2.0 +(byte) sin8s::usinx#0 usinx zp[1]:21 1666.8333333333333 +(byte) sin8s::usinx#1 reg byte x 20002.0 +(byte) sin8s::usinx#2 reg byte x 20002.0 +(byte) sin8s::usinx#4 reg byte x 10001.0 (word) sin8s::x -(word) sin8s::x#0 x zp[2]:12 8.5 -(word) sin8s::x#1 x zp[2]:12 4.0 -(word) sin8s::x#2 x zp[2]:12 4.0 -(word) sin8s::x#4 x zp[2]:12 5.0 -(word) sin8s::x#6 x zp[2]:12 6.0 +(word) sin8s::x#0 x zp[2]:13 15502.0 +(word) sin8s::x#1 x zp[2]:13 20002.0 +(word) sin8s::x#2 x zp[2]:13 20002.0 +(word) sin8s::x#4 x zp[2]:13 25002.5 +(word) sin8s::x#6 x zp[2]:13 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 x1 zp[1]:18 0.6363636363636365 +(byte) sin8s::x1#0 x1 zp[1]:19 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 reg byte a 4.0 +(byte) sin8s::x2#0 reg byte a 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 x3 zp[1]:19 1.0 +(byte) sin8s::x3#0 x3 zp[1]:20 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x3_6#0 reg byte a 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x4#0 reg byte a 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5#0 reg byte a 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 reg byte a 4.0 +(byte) sin8s::x5_128#0 reg byte a 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 reg byte a 22.0 +(signed byte~) sin8s_gen::$2 reg byte a 2002.0 (label) sin8s_gen::@1 (label) sin8s_gen::@2 (label) sin8s_gen::@3 (label) sin8s_gen::@4 (label) sin8s_gen::@return (word) sin8s_gen::i -(word) sin8s_gen::i#1 i zp[2]:4 22.0 -(word) sin8s_gen::i#2 i zp[2]:4 3.666666666666667 +(word) sin8s_gen::i#1 i zp[2]:5 2002.0 +(word) sin8s_gen::i#2 i zp[2]:5 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:8 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:8 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:9 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:9 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 step zp[2]:16 1.1818181818181819 +(word) sin8s_gen::step#0 step zp[2]:17 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 x zp[2]:6 11.0 -(word) sin8s_gen::x#2 x zp[2]:6 4.125 +(word) sin8s_gen::x#1 x zp[2]:7 1001.0 +(word) sin8s_gen::x#2 x zp[2]:7 375.375 (const signed byte*) sintab2[(number) $c0] = { fill( $c0, 0) } (const byte*) sintabref[] = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc } (const word) wavelength = (word) $c0 -reg byte x [ main::i#2 main::i#1 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -zp[2]:4 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -zp[2]:6 [ sin8s_gen::x#2 sin8s_gen::x#1 ] -zp[2]:8 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] -zp[1]:10 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] +zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +zp[2]:5 [ sin8s_gen::i#2 sin8s_gen::i#1 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +zp[2]:7 [ sin8s_gen::x#2 sin8s_gen::x#1 ] +zp[2]:9 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +zp[1]:11 [ sin8s::isUpper#10 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 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 ] -zp[1]:11 [ mulu8_sel::select#5 ] +zp[1]:12 [ mulu8_sel::select#5 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp[2]:12 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -zp[2]:14 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] -zp[2]:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +zp[2]:13 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp[2]:15 [ divr16u::dividend#2 divr16u::dividend#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +zp[2]:17 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ main::sb#0 ] +reg byte x [ print_byte::b#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s_gen::$2 ] -zp[1]:18 [ sin8s::x1#0 ] +zp[1]:19 [ sin8s::x1#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ sin8s::x2#0 ] reg byte a [ mulu8_sel::return#1 ] -zp[1]:19 [ sin8s::x3#0 ] +zp[1]:20 [ sin8s::x3#0 ] reg byte a [ mulu8_sel::return#2 ] reg byte a [ sin8s::x3_6#0 ] -zp[1]:20 [ sin8s::usinx#0 ] +zp[1]:21 [ sin8s::usinx#0 ] reg byte a [ mulu8_sel::return#10 ] reg byte a [ sin8s::x4#0 ] reg byte a [ mulu8_sel::return#11 ] diff --git a/src/test/ref/sinusgen8b.asm b/src/test/ref/sinusgen8b.asm index 79b0e2253..b2e49c5f8 100644 --- a/src/test/ref/sinusgen8b.asm +++ b/src/test/ref/sinusgen8b.asm @@ -16,15 +16,16 @@ .const SIZEOF_SIGNED_WORD = 2 .label print_line_cursor = $400 // Remainder after unsigned 16-bit division - .label rem16u = $10 - .label print_char_cursor = 2 + .label rem16u = $11 + .label print_char_cursor = 3 main: { .label wavelength = $c0 - .label __3 = $1c - .label __4 = $1c - .label __11 = $1c - .label sb = $1b - .label sw = $1c + .label __3 = $1d + .label __4 = $1d + .label __11 = $1d + .label sb = $1c + .label sw = $1d + .label i = 2 // sin8s_gen(sintabb, wavelength) jsr sin8s_gen // sin16s_gen(sintabw, wavelength) @@ -35,13 +36,15 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - ldx #0 + lda #0 + sta.z i __b1: // sb = sintabb[i] - lda sintabb,x + ldy.z i + lda sintabb,y sta.z sb // (word)i - txa + tya sta.z __3 lda #0 sta.z __3+1 @@ -71,13 +74,14 @@ main: { sec adc.z sb // print_sbyte(sd) - sta.z print_sbyte.b + tax jsr print_sbyte // print_str(" ") jsr print_str // for(byte i: 0..191) - inx - cpx #$c0 + inc.z i + lda #$c0 + cmp.z i bne __b1 // } rts @@ -87,9 +91,9 @@ main: { .byte 0 } // Print a zero-terminated string -// print_str(byte* zp($10) str) +// print_str(byte* zp($11) str) print_str: { - .label str = $10 + .label str = $11 lda #main.str @@ -119,11 +123,10 @@ print_str: { jmp __b1 } // Print a signed byte as HEX -// print_sbyte(signed byte zp($1a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $1a // if(b<0) - lda.z b + cpx #0 bmi __b1 // print_char(' ') lda #' ' @@ -138,11 +141,11 @@ print_sbyte: { lda #'-' jsr print_char // b = -b - lda.z b + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2 } // Print a single char @@ -160,11 +163,10 @@ print_char: { rts } // Print a byte as HEX -// print_byte(byte zp($1a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $1a // b>>4 - lda.z b + txa lsr lsr lsr @@ -176,10 +178,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts @@ -197,7 +198,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = $10 + .label dst = $11 lda #str @@ -227,15 +228,15 @@ memset: { // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin16s_gen(signed word* zp($16) sintab) +// sin16s_gen(signed word* zp($17) sintab) sin16s_gen: { - .label __2 = $18 - .label step = $1e - .label sintab = $16 + .label __2 = $19 + .label step = $1f + .label sintab = $17 // u[4.28] // Iterate over the table - .label x = 4 - .label i = $14 + .label x = 5 + .label i = $15 // div32u16u(PI2_u4f28, wavelength) jsr div32u16u // div32u16u(PI2_u4f28, wavelength) @@ -317,20 +318,20 @@ sin16s_gen: { // 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 zp(8) x) +// sin16s(dword zp(9) x) sin16s: { - .label __4 = $22 - .label x = 8 - .label return = $18 - .label x1 = $28 - .label x2 = $10 - .label x3 = $10 - .label x3_6 = $26 - .label usinx = $18 - .label x4 = $10 - .label x5 = $26 - .label x5_128 = $26 - .label sinx = $18 + .label __4 = $23 + .label x = 9 + .label return = $19 + .label x1 = $29 + .label x2 = $11 + .label x3 = $11 + .label x3_6 = $27 + .label usinx = $19 + .label x4 = $11 + .label x5 = $27 + .label x5_128 = $27 + .label sinx = $19 // if(x >= PI_u4f28 ) lda.z x+3 cmp #>PI_u4f28>>$10 @@ -528,14 +529,14 @@ sin16s: { } // 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 zp($10) v1, word zp($1c) v2, byte register(X) select) +// mulu16_sel(word zp($11) v1, word zp($1d) v2, byte register(X) select) mulu16_sel: { - .label __0 = $22 - .label __1 = $22 - .label v1 = $10 - .label v2 = $1c - .label return = $26 - .label return_1 = $10 + .label __0 = $23 + .label __1 = $23 + .label v1 = $11 + .label v2 = $1d + .label return = $27 + .label return_1 = $11 // mul16u(v1, v2) lda.z v1 sta.z mul16u.a @@ -562,13 +563,13 @@ mulu16_sel: { rts } // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word -// mul16u(word zp($12) a, word zp($1c) b) +// mul16u(word zp($13) a, word zp($1d) b) mul16u: { - .label mb = $c - .label a = $12 - .label res = $22 - .label b = $1c - .label return = $22 + .label mb = $d + .label a = $13 + .label res = $23 + .label b = $1d + .label return = $23 // mb = b lda.z b sta.z mb @@ -626,9 +627,9 @@ mul16u: { // 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 = $28 - .label quotient_lo = $12 - .label return = $1e + .label quotient_hi = $29 + .label quotient_lo = $13 + .label return = $1f // divr16u(>dividend, divisor, 0) lda #>$10 sta.z divr16u.dividend @@ -668,12 +669,12 @@ div32u16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($1c) dividend, word zp($10) rem) +// divr16u(word zp($1d) dividend, word zp($11) rem) divr16u: { - .label rem = $10 - .label dividend = $1c - .label quotient = $12 - .label return = $12 + .label rem = $11 + .label dividend = $1d + .label quotient = $13 + .label return = $13 ldx #0 txa sta.z quotient @@ -734,14 +735,14 @@ divr16u: { // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin8s_gen(signed byte* zp($18) sintab) +// sin8s_gen(signed byte* zp($19) sintab) sin8s_gen: { - .label step = $12 - .label sintab = $18 + .label step = $13 + .label sintab = $19 // u[4.12] // Iterate over the table - .label x = $16 - .label i = $14 + .label x = $17 + .label i = $15 // div16u(PI2_u4f12, wavelength) jsr div16u // div16u(PI2_u4f12, wavelength) @@ -801,17 +802,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($1c) x) +// sin8s(word zp($1d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $1c - .label x = $1c - .label x1 = $2a - .label x3 = $2b - .label usinx = $2c + .label __4 = $1d + .label x = $1d + .label x1 = $2b + .label x3 = $2c + .label usinx = $2d // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $1a + .label isUpper = $1c // if(x >= PI_u4f12 ) lda.z x+1 cmp #>PI_u4f12 @@ -944,8 +945,8 @@ sin8s: { // 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 zp($1b) select) mulu8_sel: { - .label __0 = $28 - .label __1 = $28 + .label __0 = $29 + .label __1 = $29 .label select = $1b // mul8u(v1, v2) tya @@ -967,9 +968,9 @@ mulu8_sel: { // 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 = $26 - .label res = $28 - .label return = $28 + .label mb = $27 + .label res = $29 + .label return = $29 // mb = b sta.z mb lda #0 @@ -1012,7 +1013,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $12 + .label return = $13 // divr16u(dividend, divisor, 0) lda # (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#8 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#9 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#4 = (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#5 = (word) divr16u::divisor#6 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#7 = (word) divr16u::rem#9 -Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#10 = (word) divr16u::rem#12 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#5 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#16 (word) rem16u#2 -Alias (word) divr16u::return#2 = (word) divr16u::return#6 -Alias (word) rem16u#17 = (word) rem16u#3 (word) rem16u#18 (word) rem16u#4 -Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 -Alias (word) divr16u::dividend#2 = (word~) div32u16u::$0 -Alias (word) divr16u::return#3 = (word) divr16u::return#7 -Alias (dword) div32u16u::dividend#1 = (dword) div32u16u::dividend#2 -Alias (word) div32u16u::divisor#1 = (word) div32u16u::divisor#2 -Alias (word) rem16u#19 = (word) rem16u#5 -Alias (word) div32u16u::quotient_hi#0 = (word~) div32u16u::$1 (word) div32u16u::quotient_hi#1 -Alias (word) divr16u::dividend#3 = (word~) div32u16u::$2 -Alias (word) divr16u::return#4 = (word) divr16u::return#8 -Alias (word) rem16u#20 = (word) rem16u#6 (word) rem16u#21 (word) rem16u#7 -Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 -Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 -Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 -Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 -Alias (word) mul16u::a#0 = (word~) mul16u::$5 -Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 -Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#3 -Alias (signed word*) sin16s_gen::sintab#5 = (signed word*) sin16s_gen::sintab#6 -Alias (word) rem16u#22 = (word) rem16u#8 -Alias (dword) sin16s_gen::step#0 = (dword~) sin16s_gen::$0 -Alias (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#4 (dword) sin16s_gen::x#3 -Alias (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 -Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 (dword) sin16s_gen::step#3 -Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#4 (word) sin16s_gen::i#3 -Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#5 (word) sin16s_gen::wavelength#4 -Alias (word) rem16u#23 = (word) rem16u#43 (word) rem16u#33 (word) rem16u#39 (word) rem16u#9 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 -Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (word) sin8s_gen::wavelength#1 = (word) sin8s_gen::wavelength#3 -Alias (signed byte*) sin8s_gen::sintab#5 = (signed byte*) sin8s_gen::sintab#6 -Alias (word) rem16u#10 = (word) rem16u#24 -Alias (word) sin8s_gen::step#0 = (word~) sin8s_gen::$0 -Alias (word) sin8s_gen::x#2 = (word) sin8s_gen::x#4 (word) sin8s_gen::x#3 -Alias (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#3 (signed byte*) sin8s_gen::sintab#4 -Alias (word) sin8s_gen::step#1 = (word) sin8s_gen::step#2 (word) sin8s_gen::step#3 -Alias (word) sin8s_gen::i#2 = (word) sin8s_gen::i#4 (word) sin8s_gen::i#3 -Alias (word) sin8s_gen::wavelength#2 = (word) sin8s_gen::wavelength#5 (word) sin8s_gen::wavelength#4 -Alias (word) rem16u#11 = (word) rem16u#44 (word) rem16u#35 (word) rem16u#40 (word) rem16u#25 -Alias (signed byte) sin8s::return#0 = (signed byte) sin8s::return#3 -Alias (word) sin8s_gen::x#1 = (word~) sin8s_gen::$3 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$17 -Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#7 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$6 -Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#8 -Alias (word) sin16s::x3#0 = (word~) sin16s::$7 (word) sin16s::x3#1 -Alias (word) mulu16_sel::return#2 = (word) mulu16_sel::return#9 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$8 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$9 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$10 -Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$11 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$12 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$13 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$14 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$18 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 -Alias (word) sin8s::x#3 = (word) sin8s::x#5 -Alias (word) sin8s::x#1 = (word~) sin8s::$19 -Alias (byte) sin8s::x1#0 = (byte~) sin8s::$5 (byte) sin8s::x1#1 (byte) sin8s::x1#4 (byte) sin8s::x1#2 (byte) sin8s::x1#3 -Alias (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#7 -Alias (byte) sin8s::isUpper#3 = (byte) sin8s::isUpper#8 (byte) sin8s::isUpper#9 (byte) sin8s::isUpper#7 (byte) sin8s::isUpper#6 (byte) sin8s::isUpper#5 (byte) sin8s::isUpper#4 -Alias (byte) sin8s::x2#0 = (byte~) sin8s::$6 -Alias (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#8 -Alias (byte) sin8s::x3#0 = (byte~) sin8s::$7 (byte) sin8s::x3#1 -Alias (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#9 -Alias (byte) sin8s::x3_6#0 = (byte~) sin8s::$8 -Alias (byte) sin8s::usinx#0 = (byte~) sin8s::$9 (byte) sin8s::usinx#7 (byte) sin8s::usinx#3 -Alias (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#3 -Alias (byte) sin8s::x4#0 = (byte~) sin8s::$10 -Alias (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#4 -Alias (byte) sin8s::x5#0 = (byte~) sin8s::$11 -Alias (byte) sin8s::x5_128#0 = (byte~) sin8s::$12 -Alias (byte) sin8s::usinx#1 = (byte~) sin8s::$13 (byte) sin8s::usinx#5 -Alias (word) sin8s::x#4 = (word) sin8s::x#7 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#11 -Alias (word) sin8s::x#2 = (word~) sin8s::$20 -Alias (signed byte) sin8s::sinx#0 = (signed byte~) sin8s::$16 -Alias (signed byte) sin8s::return#1 = (signed byte) sin8s::sinx#2 (signed byte) sin8s::return#4 (signed byte) sin8s::return#2 -Alias (byte) sin8s::usinx#4 = (byte) sin8s::usinx#6 -Alias (signed byte) sin8s::sinx#1 = (signed byte~) sin8s::$22 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 -Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 -Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (word) mul8u::return#2 = (word) mul8u::return#4 -Alias (byte) mulu8_sel::select#5 = (byte) mulu8_sel::select#6 -Alias (byte) mulu8_sel::return#12 = (byte) mulu8_sel::return#5 (byte~) mulu8_sel::$2 (byte) mulu8_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (word) rem16u#0 = (word) rem16u#42 (word) rem16u#38 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#12 (byte*) print_char_cursor#43 (byte*) print_screen#6 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#20 (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#38 -Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#3 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#24 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#1 = (byte) print_byte::b#2 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#27 (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#11 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#12 (byte*) print_line_cursor#6 (byte*) print_char_cursor#30 (byte*) print_line_cursor#2 (byte*) print_char_cursor#13 -Alias (byte*) print_screen#3 = (byte*) print_screen#4 (byte*) print_screen#5 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 (byte*) print_line_cursor#15 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#47 -Alias (word) rem16u#12 = (word) rem16u#26 -Alias (word) rem16u#13 = (word) rem16u#27 (word) rem16u#46 -Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31 -Alias (signed byte) main::sd#0 = (signed byte~) main::$7 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3 -Alias (word) rem16u#14 = (word) rem16u#41 (word) rem16u#45 (word) rem16u#37 (word) rem16u#28 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#16 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#17 -Alias (word) rem16u#15 = (word) rem16u#29 -Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#35 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#8 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#9 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#4 = divr16u::dividend#8 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#5 = divr16u::divisor#6 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#7 = divr16u::rem#9 +Alias divr16u::divisor#3 = divr16u::divisor#4 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#10 = divr16u::rem#12 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#5 divr16u::return#1 +Alias rem16u#1 = rem16u#16 rem16u#2 +Alias divr16u::return#2 = divr16u::return#6 +Alias rem16u#17 = rem16u#3 rem16u#18 rem16u#4 +Alias div16u::return#0 = div16u::$0 div16u::return#3 div16u::return#1 +Alias divr16u::dividend#2 = div32u16u::$0 +Alias divr16u::return#3 = divr16u::return#7 +Alias div32u16u::dividend#1 = div32u16u::dividend#2 +Alias div32u16u::divisor#1 = div32u16u::divisor#2 +Alias rem16u#19 = rem16u#5 +Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1 +Alias divr16u::dividend#3 = div32u16u::$2 +Alias divr16u::return#4 = divr16u::return#8 +Alias rem16u#20 = rem16u#6 rem16u#21 rem16u#7 +Alias div32u16u::quotient_lo#0 = div32u16u::$3 +Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1 +Alias mul8u::a#2 = mul8u::a#3 mul8u::a#6 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#3 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias mul16u::a#2 = mul16u::a#3 mul16u::a#6 +Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5 +Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#3 mul16u::return#1 +Alias mul16u::a#0 = mul16u::$5 +Alias mul16u::mb#1 = mul16u::$6 +Alias mul16u::res#1 = mul16u::$4 +Alias div32u16u::return#2 = div32u16u::return#4 +Alias sin16s_gen::wavelength#1 = sin16s_gen::wavelength#3 +Alias sin16s_gen::sintab#5 = sin16s_gen::sintab#6 +Alias rem16u#22 = rem16u#8 +Alias sin16s_gen::step#0 = sin16s_gen::$0 +Alias sin16s_gen::x#2 = sin16s_gen::x#4 sin16s_gen::x#3 +Alias sin16s_gen::sintab#2 = sin16s_gen::sintab#3 sin16s_gen::sintab#4 +Alias sin16s_gen::step#1 = sin16s_gen::step#2 sin16s_gen::step#3 +Alias sin16s_gen::i#2 = sin16s_gen::i#4 sin16s_gen::i#3 +Alias sin16s_gen::wavelength#2 = sin16s_gen::wavelength#5 sin16s_gen::wavelength#4 +Alias rem16u#23 = rem16u#43 rem16u#33 rem16u#39 rem16u#9 +Alias sin16s::return#0 = sin16s::return#3 +Alias sin16s_gen::x#1 = sin16s_gen::$3 +Alias div16u::return#2 = div16u::return#4 +Alias sin8s_gen::wavelength#1 = sin8s_gen::wavelength#3 +Alias sin8s_gen::sintab#5 = sin8s_gen::sintab#6 +Alias rem16u#10 = rem16u#24 +Alias sin8s_gen::step#0 = sin8s_gen::$0 +Alias sin8s_gen::x#2 = sin8s_gen::x#4 sin8s_gen::x#3 +Alias sin8s_gen::sintab#2 = sin8s_gen::sintab#3 sin8s_gen::sintab#4 +Alias sin8s_gen::step#1 = sin8s_gen::step#2 sin8s_gen::step#3 +Alias sin8s_gen::i#2 = sin8s_gen::i#4 sin8s_gen::i#3 +Alias sin8s_gen::wavelength#2 = sin8s_gen::wavelength#5 sin8s_gen::wavelength#4 +Alias rem16u#11 = rem16u#44 rem16u#35 rem16u#40 rem16u#25 +Alias sin8s::return#0 = sin8s::return#3 +Alias sin8s_gen::x#1 = sin8s_gen::$3 +Alias sin16s::x#3 = sin16s::x#5 +Alias sin16s::x#1 = sin16s::$17 +Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3 +Alias mulu16_sel::return#0 = mulu16_sel::return#7 +Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3 +Alias sin16s::x2#0 = sin16s::$6 +Alias mulu16_sel::return#1 = mulu16_sel::return#8 +Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1 +Alias mulu16_sel::return#2 = mulu16_sel::return#9 +Alias sin16s::x3_6#0 = sin16s::$8 +Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2 +Alias mulu16_sel::return#10 = mulu16_sel::return#3 +Alias sin16s::x4#0 = sin16s::$10 +Alias mulu16_sel::return#11 = mulu16_sel::return#4 +Alias sin16s::x5#0 = sin16s::$11 +Alias sin16s::x5_128#0 = sin16s::$12 +Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3 +Alias sin16s::sinx#0 = sin16s::$14 +Alias sin16s::x#4 = sin16s::x#7 +Alias sin16s::isUpper#8 = sin16s::isUpper#9 +Alias sin16s::x#2 = sin16s::$18 +Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2 +Alias sin16s::sinx#1 = sin16s::$20 +Alias sin8s::x#3 = sin8s::x#5 +Alias sin8s::x#1 = sin8s::$19 +Alias sin8s::x1#0 = sin8s::$5 sin8s::x1#1 sin8s::x1#4 sin8s::x1#2 sin8s::x1#3 +Alias mulu8_sel::return#0 = mulu8_sel::return#7 +Alias sin8s::isUpper#3 = sin8s::isUpper#8 sin8s::isUpper#9 sin8s::isUpper#7 sin8s::isUpper#6 sin8s::isUpper#5 sin8s::isUpper#4 +Alias sin8s::x2#0 = sin8s::$6 +Alias mulu8_sel::return#1 = mulu8_sel::return#8 +Alias sin8s::x3#0 = sin8s::$7 sin8s::x3#1 +Alias mulu8_sel::return#2 = mulu8_sel::return#9 +Alias sin8s::x3_6#0 = sin8s::$8 +Alias sin8s::usinx#0 = sin8s::$9 sin8s::usinx#7 sin8s::usinx#3 +Alias mulu8_sel::return#10 = mulu8_sel::return#3 +Alias sin8s::x4#0 = sin8s::$10 +Alias mulu8_sel::return#11 = mulu8_sel::return#4 +Alias sin8s::x5#0 = sin8s::$11 +Alias sin8s::x5_128#0 = sin8s::$12 +Alias sin8s::usinx#1 = sin8s::$13 sin8s::usinx#5 +Alias sin8s::x#4 = sin8s::x#7 +Alias sin8s::isUpper#10 = sin8s::isUpper#11 +Alias sin8s::x#2 = sin8s::$20 +Alias sin8s::sinx#0 = sin8s::$16 +Alias sin8s::return#1 = sin8s::sinx#2 sin8s::return#4 sin8s::return#2 +Alias sin8s::usinx#4 = sin8s::usinx#6 +Alias sin8s::sinx#1 = sin8s::$22 +Alias mul16u::return#2 = mul16u::return#4 +Alias mulu16_sel::select#5 = mulu16_sel::select#6 +Alias mulu16_sel::return#12 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6 +Alias mul8u::return#2 = mul8u::return#4 +Alias mulu8_sel::select#5 = mulu8_sel::select#6 +Alias mulu8_sel::return#12 = mulu8_sel::return#5 mulu8_sel::$2 mulu8_sel::return#6 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias rem16u#0 = rem16u#42 rem16u#38 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#12 print_char_cursor#43 print_screen#6 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#19 = print_char_cursor#36 print_char_cursor#20 print_char_cursor#2 +Alias print_char_cursor#37 = print_char_cursor#45 print_char_cursor#38 +Alias print_sbyte::b#2 = print_sbyte::b#5 print_sbyte::b#3 print_sbyte::b#7 print_sbyte::b#6 +Alias print_char_cursor#21 = print_char_cursor#3 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#22 = print_char_cursor#4 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#23 = print_char_cursor#5 print_char_cursor#24 print_char_cursor#6 +Alias print_byte::b#1 = print_byte::b#2 +Alias print_char_cursor#25 = print_char_cursor#7 +Alias print_char_cursor#26 = print_char_cursor#8 print_char_cursor#27 print_char_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#29 print_char_cursor#11 +Alias print_line_cursor#1 = print_screen#2 print_screen#1 print_char_cursor#12 print_line_cursor#6 print_char_cursor#30 print_line_cursor#2 print_char_cursor#13 +Alias print_screen#3 = print_screen#4 print_screen#5 +Alias print_line_cursor#10 = print_line_cursor#13 print_line_cursor#15 +Alias print_char_cursor#41 = print_char_cursor#46 print_char_cursor#47 +Alias rem16u#12 = rem16u#26 +Alias rem16u#13 = rem16u#27 rem16u#46 +Alias print_line_cursor#3 = print_line_cursor#7 +Alias print_char_cursor#14 = print_char_cursor#31 +Alias main::sd#0 = main::$7 +Alias main::i#2 = main::i#4 main::i#3 +Alias rem16u#14 = rem16u#41 rem16u#45 rem16u#37 rem16u#28 +Alias print_line_cursor#11 = print_line_cursor#14 print_line_cursor#16 print_line_cursor#8 print_line_cursor#4 +Alias print_char_cursor#15 = print_char_cursor#32 +Alias print_char_cursor#16 = print_char_cursor#33 print_char_cursor#34 print_char_cursor#17 +Alias rem16u#15 = rem16u#29 +Alias print_line_cursor#5 = print_line_cursor#9 +Alias print_char_cursor#18 = print_char_cursor#35 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#4 = (word) divr16u::dividend#5 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#5 (word) divr16u::divisor#8 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#7 -Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 -Alias (word) mul16u::a#2 = (word) mul16u::a#4 -Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#3 (byte) sin8s::isUpper#2 +Alias divr16u::dividend#4 = divr16u::dividend#5 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#3 = divr16u::divisor#5 divr16u::divisor#8 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#7 +Alias mul8u::a#2 = mul8u::a#4 +Alias mul8u::mb#2 = mul8u::mb#3 +Alias mul16u::a#2 = mul16u::a#4 +Alias mul16u::mb#2 = mul16u::mb#3 +Alias sin16s::isUpper#2 = sin16s::isUpper#8 +Alias sin8s::isUpper#10 = sin8s::isUpper#3 sin8s::isUpper#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#3 (word) divr16u::divisor#7 Identical Phi Values (word) div16u::dividend#1 (word) div16u::dividend#0 @@ -3274,283 +3274,283 @@ VARIABLE REGISTER WEIGHTS (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 1.3333333333333333 -(word) div16u::return#2 4.0 +(word) div16u::return#0 367.33333333333337 +(word) div16u::return#2 202.0 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 0.8 +(word) div32u16u::quotient_hi#0 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 4.0 +(word) div32u16u::quotient_lo#0 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 1.3333333333333333 -(dword) div32u16u::return#2 4.0 +(dword) div32u16u::return#0 367.33333333333337 +(dword) div32u16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#4 5.0 -(word) divr16u::dividend#6 2.0 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#4 44286.28571428572 +(word) divr16u::dividend#6 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#10 11.666666666666666 -(word) divr16u::rem#11 4.0 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#5 4.0 -(word) divr16u::rem#6 24.0 -(word) divr16u::rem#7 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#10 103334.66666666667 +(word) divr16u::rem#11 11002.0 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#5 2002.0 +(word) divr16u::rem#6 210003.0 +(word) divr16u::rem#7 100001.0 (word) divr16u::return -(word) divr16u::return#0 4.875 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 -(word) divr16u::return#4 4.0 +(word) divr16u::return#0 37875.75 +(word) divr16u::return#2 2002.0 +(word) divr16u::return#3 2002.0 +(word) divr16u::return#4 2002.0 (void()) main() -(word~) main::$11 22.0 -(word~) main::$3 22.0 -(signed word*~) main::$4 22.0 -(byte~) main::$6 11.0 +(word~) main::$11 202.0 +(word~) main::$3 202.0 +(signed word*~) main::$4 202.0 +(byte~) main::$6 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 2.75 +(byte) main::i#1 151.5 +(byte) main::i#2 25.25 (signed byte) main::sb -(signed byte) main::sb#0 3.6666666666666665 +(signed byte) main::sb#0 33.666666666666664 (signed byte) main::sd -(signed byte) main::sd#0 22.0 +(signed byte) main::sd#0 202.0 (signed word) main::sw -(signed word) main::sw#0 22.0 +(signed word) main::sw#0 202.0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 202.0 +(byte~) mul16u::$1 2.00000002E8 (word) mul16u::a -(word) mul16u::a#0 101.0 -(word) mul16u::a#1 1.3333333333333333 -(word) mul16u::a#2 67.66666666666666 +(word) mul16u::a#0 1.00000001E8 +(word) mul16u::a#1 366667.3333333334 +(word) mul16u::a#2 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 2.0 +(word) mul16u::b#0 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 4.0 -(dword) mul16u::mb#1 202.0 -(dword) mul16u::mb#2 43.57142857142858 +(dword) mul16u::mb#0 2000002.0 +(dword) mul16u::mb#1 2.00000002E8 +(dword) mul16u::mb#2 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 202.0 -(dword) mul16u::res#2 50.83333333333333 -(dword) mul16u::res#6 101.0 +(dword) mul16u::res#1 2.00000002E8 +(dword) mul16u::res#2 5.0016667333333336E7 +(dword) mul16u::res#6 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 4.0 +(dword) mul16u::return#2 200002.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 202.0 +(byte~) mul8u::$1 2.00000002E8 (byte) mul8u::a -(byte) mul8u::a#0 101.0 -(byte) mul8u::a#1 1.3333333333333333 -(byte) mul8u::a#2 67.66666666666666 +(byte) mul8u::a#0 1.00000001E8 +(byte) mul8u::a#1 366667.3333333334 +(byte) mul8u::a#2 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 2.0 +(byte) mul8u::b#0 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 4.0 -(word) mul8u::mb#1 202.0 -(word) mul8u::mb#2 43.57142857142858 +(word) mul8u::mb#0 2000002.0 +(word) mul8u::mb#1 2.00000002E8 +(word) mul8u::mb#2 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 202.0 -(word) mul8u::res#2 50.83333333333333 -(word) mul8u::res#6 101.0 +(word) mul8u::res#1 2.00000002E8 +(word) mul8u::res#2 5.0016667333333336E7 +(word) mul8u::res#6 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 4.0 +(word) mul8u::return#2 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 4.0 -(dword~) mulu16_sel::$1 4.0 +(dword~) mulu16_sel::$0 200002.0 +(dword~) mulu16_sel::$1 200002.0 (word) mulu16_sel::return -(word) mulu16_sel::return#0 4.0 -(word) mulu16_sel::return#1 4.0 -(word) mulu16_sel::return#10 4.0 -(word) mulu16_sel::return#11 4.0 -(word) mulu16_sel::return#12 1.714285714285714 -(word) mulu16_sel::return#2 4.0 +(word) mulu16_sel::return#0 20002.0 +(word) mulu16_sel::return#1 20002.0 +(word) mulu16_sel::return#10 20002.0 +(word) mulu16_sel::return#11 20002.0 +(word) mulu16_sel::return#12 21429.428571428572 +(word) mulu16_sel::return#2 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 0.3333333333333333 +(byte) mulu16_sel::select#5 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 2.0 -(word) mulu16_sel::v1#1 2.0 -(word) mulu16_sel::v1#2 4.0 -(word) mulu16_sel::v1#3 2.0 -(word) mulu16_sel::v1#4 2.0 -(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v1#0 10001.0 +(word) mulu16_sel::v1#1 10001.0 +(word) mulu16_sel::v1#2 20002.0 +(word) mulu16_sel::v1#3 10001.0 +(word) mulu16_sel::v1#4 10001.0 +(word) mulu16_sel::v1#5 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 4.0 -(word) mulu16_sel::v2#1 4.0 -(word) mulu16_sel::v2#3 4.0 -(word) mulu16_sel::v2#4 4.0 -(word) mulu16_sel::v2#5 5.0 +(word) mulu16_sel::v2#0 20002.0 +(word) mulu16_sel::v2#1 20002.0 +(word) mulu16_sel::v2#3 20002.0 +(word) mulu16_sel::v2#4 20002.0 +(word) mulu16_sel::v2#5 70002.5 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 4.0 -(word~) mulu8_sel::$1 4.0 +(word~) mulu8_sel::$0 200002.0 +(word~) mulu8_sel::$1 200002.0 (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 4.0 -(byte) mulu8_sel::return#1 4.0 -(byte) mulu8_sel::return#10 4.0 -(byte) mulu8_sel::return#11 4.0 -(byte) mulu8_sel::return#12 1.714285714285714 -(byte) mulu8_sel::return#2 4.0 +(byte) mulu8_sel::return#0 20002.0 +(byte) mulu8_sel::return#1 20002.0 +(byte) mulu8_sel::return#10 20002.0 +(byte) mulu8_sel::return#11 20002.0 +(byte) mulu8_sel::return#12 21429.428571428572 +(byte) mulu8_sel::return#2 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 0.3333333333333333 +(byte) mulu8_sel::select#5 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 2.0 -(byte) mulu8_sel::v1#1 2.0 -(byte) mulu8_sel::v1#2 4.0 -(byte) mulu8_sel::v1#3 2.0 -(byte) mulu8_sel::v1#4 2.0 -(byte) mulu8_sel::v1#5 12.0 +(byte) mulu8_sel::v1#0 10001.0 +(byte) mulu8_sel::v1#1 10001.0 +(byte) mulu8_sel::v1#2 20002.0 +(byte) mulu8_sel::v1#3 10001.0 +(byte) mulu8_sel::v1#4 10001.0 +(byte) mulu8_sel::v1#5 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 4.0 -(byte) mulu8_sel::v2#1 4.0 -(byte) mulu8_sel::v2#3 4.0 -(byte) mulu8_sel::v2#4 4.0 -(byte) mulu8_sel::v2#5 5.0 +(byte) mulu8_sel::v2#0 20002.0 +(byte) mulu8_sel::v2#1 20002.0 +(byte) mulu8_sel::v2#3 20002.0 +(byte) mulu8_sel::v2#4 20002.0 +(byte) mulu8_sel::v2#5 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 1.5 +(byte) print_byte::b#0 5250.75 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#2 20002.0 +(byte) print_char::ch#3 20002.0 +(byte) print_char::ch#4 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#10 0.42105263157894735 -(byte*) print_char_cursor#19 45.142857142857146 -(byte*) print_char_cursor#28 6.0 -(byte*) print_char_cursor#42 1.25 +(byte*) print_char_cursor#1 100001.0 +(byte*) print_char_cursor#10 6368.631578947368 +(byte*) print_char_cursor#19 43015.0 +(byte*) print_char_cursor#28 111003.0 +(byte*) print_char_cursor#42 175.25 (void()) print_cls() (byte*) print_line_cursor (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#1 2.8333333333333335 -(signed byte) print_sbyte::b#4 4.0 +(signed byte) print_sbyte::b#0 2002.0 +(signed byte) print_sbyte::b#1 517.3333333333334 +(signed byte) print_sbyte::b#4 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#2 101.0 +(byte*) print_str::str#0 200002.0 +(byte*) print_str::str#2 100001.0 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#1 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 4.0 +(dword~) sin16s::$4 20002.0 (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 0.06060606060606061 +(byte) sin16s::isUpper#2 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 22.0 -(signed word) sin16s::return#1 5.0 -(signed word) sin16s::return#5 4.0 +(signed word) sin16s::return#0 2002.0 +(signed word) sin16s::return#1 7001.0 +(signed word) sin16s::return#5 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 4.0 +(signed word) sin16s::sinx#1 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 0.3333333333333333 -(word) sin16s::usinx#1 1.0 +(word) sin16s::usinx#0 1666.8333333333333 +(word) sin16s::usinx#1 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 8.5 -(dword) sin16s::x#1 4.0 -(dword) sin16s::x#2 4.0 -(dword) sin16s::x#4 5.0 -(dword) sin16s::x#6 6.0 +(dword) sin16s::x#0 15502.0 +(dword) sin16s::x#1 20002.0 +(dword) sin16s::x#2 20002.0 +(dword) sin16s::x#4 25002.5 +(dword) sin16s::x#6 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 0.6363636363636365 +(word) sin16s::x1#0 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 4.0 +(word) sin16s::x2#0 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 1.0 +(word) sin16s::x3#0 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 4.0 +(word) sin16s::x3_6#0 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 4.0 +(word) sin16s::x4#0 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 4.0 +(word) sin16s::x5#0 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 4.0 +(word) sin16s::x5_128#0 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 22.0 +(signed word~) sin16s_gen::$2 2002.0 (word) sin16s_gen::i -(word) sin16s_gen::i#1 22.0 -(word) sin16s_gen::i#2 3.666666666666667 +(word) sin16s_gen::i#1 2002.0 +(word) sin16s_gen::i#2 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 1.1818181818181819 +(dword) sin16s_gen::step#0 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 11.0 -(dword) sin16s_gen::x#2 4.125 +(dword) sin16s_gen::x#1 1001.0 +(dword) sin16s_gen::x#2 375.375 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 4.0 +(word~) sin8s::$4 20002.0 (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 0.05555555555555555 +(byte) sin8s::isUpper#10 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 22.0 -(signed byte) sin8s::return#1 5.0 -(signed byte) sin8s::return#5 4.0 +(signed byte) sin8s::return#0 2002.0 +(signed byte) sin8s::return#1 7001.0 +(signed byte) sin8s::return#5 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 4.0 +(signed byte) sin8s::sinx#1 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 0.3333333333333333 -(byte) sin8s::usinx#1 4.0 -(byte) sin8s::usinx#2 4.0 -(byte) sin8s::usinx#4 2.0 +(byte) sin8s::usinx#0 1666.8333333333333 +(byte) sin8s::usinx#1 20002.0 +(byte) sin8s::usinx#2 20002.0 +(byte) sin8s::usinx#4 10001.0 (word) sin8s::x -(word) sin8s::x#0 8.5 -(word) sin8s::x#1 4.0 -(word) sin8s::x#2 4.0 -(word) sin8s::x#4 5.0 -(word) sin8s::x#6 6.0 +(word) sin8s::x#0 15502.0 +(word) sin8s::x#1 20002.0 +(word) sin8s::x#2 20002.0 +(word) sin8s::x#4 25002.5 +(word) sin8s::x#6 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 0.6363636363636365 +(byte) sin8s::x1#0 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 4.0 +(byte) sin8s::x2#0 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 1.0 +(byte) sin8s::x3#0 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 4.0 +(byte) sin8s::x3_6#0 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 4.0 +(byte) sin8s::x4#0 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 4.0 +(byte) sin8s::x5#0 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 4.0 +(byte) sin8s::x5_128#0 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 22.0 +(signed byte~) sin8s_gen::$2 2002.0 (word) sin8s_gen::i -(word) sin8s_gen::i#1 22.0 -(word) sin8s_gen::i#2 3.666666666666667 +(word) sin8s_gen::i#1 2002.0 +(word) sin8s_gen::i#2 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 1.1818181818181819 +(word) sin8s_gen::step#0 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 11.0 -(word) sin8s_gen::x#2 4.125 +(word) sin8s_gen::x#1 1001.0 +(word) sin8s_gen::x#2 375.375 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -5729,220 +5729,212 @@ div16u: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] (word~) main::$3 ← (word)(byte) main::i#2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ) always clobbers reg byte a +Statement [12] (word~) main::$3 ← (word)(byte) main::i#2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:67 [ main::sb#0 ] -Statement [13] (word~) main::$11 ← (word~) main::$3 << (byte) 1 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ) always clobbers reg byte a -Statement [14] (signed word*~) main::$4 ← (const signed word*) main::sintabw + (word~) main::$11 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ) always clobbers reg byte a -Statement [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [13] (word~) main::$11 ← (word~) main::$3 << (byte) 1 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [14] (signed word*~) main::$4 ← (const signed word*) main::sintabw + (word~) main::$11 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:67 [ main::sb#0 ] -Statement [16] (byte~) main::$6 ← > (signed word) main::sw#0 [ main::i#2 print_char_cursor#42 main::sb#0 main::$6 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$6 ] ) always clobbers reg byte a -Statement [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 [ main::i#2 print_char_cursor#42 main::sd#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sd#0 ] ) always clobbers reg byte a -Statement [27] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [29] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:19 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [43] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:19::print_char:34 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:19::print_char:40 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:19::print_byte:37::print_char:48 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] main:2::print_sbyte:19::print_byte:37::print_char:51 [ main::i#2 print_char_cursor#28 ] ) always clobbers reg byte y +Statement [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 [ main::i#2 print_char_cursor#42 main::sd#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sd#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [27] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:19 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:19::print_char:34 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:19::print_char:40 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:19::print_byte:37::print_char:48 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } main:2::print_sbyte:19::print_byte:37::print_char:51 [ main::i#2 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Removing always clobbered register reg byte y as potential for zp[1]:78 [ print_byte::b#0 ] -Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ) always clobbers reg byte a +Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:78 [ print_byte::b#0 ] -Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [58] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [60] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:7 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [67] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [69] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [71] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [72] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [73] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [75] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::$2 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [58] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [60] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:7 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [67] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [69] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [71] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [72] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [73] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [75] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ sin16s::isUpper#2 ] -Statement [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [83] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [99] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [101] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [116] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Statement [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [83] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [99] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [101] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [116] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ mulu16_sel::select#5 ] -Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::return#3 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::rem#5 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::return#4 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ) always clobbers reg byte a -Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [138] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::return#3 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ divr16u::return#3 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [140] (word) divr16u::rem#5 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::return#4 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:47 [ divr16u::i#2 divr16u::i#1 ] -Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [156] if((word) divr16u::rem#7<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [162] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a -Statement [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a -Statement [169] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [171] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [175] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y -Statement [177] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] ) always clobbers reg byte a -Statement [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [156] if((word) divr16u::rem#7<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [162] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::return#0 rem16u#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [166] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [169] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [171] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [175] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte y +Statement [177] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:54 [ sin8s::isUpper#10 ] -Statement [183] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] ) always clobbers reg byte a -Statement [185] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [201] (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::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [183] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [185] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [201] (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::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:166 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:170 [ sin8s::x3#0 ] -Statement [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:173 [ sin8s::usinx#0 ] -Statement [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [226] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a +Statement [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [226] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:61 [ mulu8_sel::select#5 ] -Statement [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:62 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -Statement [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [243] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:165 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [244] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:165 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [12] (word~) main::$3 ← (word)(byte) main::i#2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ) always clobbers reg byte a -Statement [13] (word~) main::$11 ← (word~) main::$3 << (byte) 1 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ) always clobbers reg byte a -Statement [14] (signed word*~) main::$4 ← (const signed word*) main::sintabw + (word~) main::$11 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ) always clobbers reg byte a -Statement [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [16] (byte~) main::$6 ← > (signed word) main::sw#0 [ main::i#2 print_char_cursor#42 main::sb#0 main::$6 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$6 ] ) always clobbers reg byte a -Statement [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 [ main::i#2 print_char_cursor#42 main::sd#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sd#0 ] ) always clobbers reg byte a -Statement [27] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [29] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:19 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [43] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:19::print_char:34 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:19::print_char:40 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] main:2::print_sbyte:19::print_byte:37::print_char:48 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] main:2::print_sbyte:19::print_byte:37::print_char:51 [ main::i#2 print_char_cursor#28 ] ) always clobbers reg byte y -Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ) always clobbers reg byte a -Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [58] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [60] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:7 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [67] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [69] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [71] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [72] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ) always clobbers reg byte a -Statement [73] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ) always clobbers reg byte a reg byte y -Statement [74] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [75] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [83] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a -Statement [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [99] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [101] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [116] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a -Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::return#3 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::rem#5 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::return#4 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ) always clobbers reg byte a -Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [156] if((word) divr16u::rem#7<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [162] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a -Statement [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a -Statement [169] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a -Statement [171] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [175] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y -Statement [177] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a -Statement [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] ) always clobbers reg byte a -Statement [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [183] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] ) always clobbers reg byte a -Statement [185] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [201] (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::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [226] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a -Statement [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [243] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:165 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [244] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:165 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [243] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:165 [ divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [244] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:165 [ div16u::return#0 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [12] (word~) main::$3 ← (word)(byte) main::i#2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$3 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [13] (word~) main::$11 ← (word~) main::$3 << (byte) 1 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$11 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [14] (signed word*~) main::$4 ← (const signed word*) main::sintabw + (word~) main::$11 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::$4 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 main::sw#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a reg byte y +Statement [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 [ main::i#2 print_char_cursor#42 main::sd#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sd#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [27] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:21 [ main::i#2 print_char_cursor#19 print_str::str#2 ] { } ) always clobbers reg byte a reg byte y +Statement [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:19 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] { { print_sbyte::b#1 = main::sd#0 } } ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#4 [ print_char_cursor#28 ] ( main:2::print_sbyte:19::print_char:34 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:19::print_char:40 [ main::i#2 print_sbyte::b#1 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char_cursor#28 = print_char_cursor#42 } } main:2::print_sbyte:19::print_byte:37::print_char:48 [ main::i#2 print_byte::b#0 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } main:2::print_sbyte:19::print_byte:37::print_char:51 [ main::i#2 print_char_cursor#28 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte y +Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 [ print_char_cursor#10 print_byte::b#0 print_byte::$0 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::b#0 print_byte::$0 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#2 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:19::print_byte:37 [ main::i#2 print_char_cursor#10 print_byte::$2 ] { { print_sbyte::b#1 = main::sd#0 } { print_char::ch#3 = print_char::ch#4 } { print_char_cursor#10 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [58] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [60] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:9::memset:54 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:7 [ div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [67] if((word) sin16s_gen::i#2<(const word) main::wavelength) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [69] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [71] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [72] (signed word~) sin16s_gen::$2 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::$2 ] { } ) always clobbers reg byte a +Statement [73] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$2 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 ] { } ) always clobbers reg byte a reg byte y +Statement [74] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [75] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:7 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28 [ sin16s::x#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [83] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [99] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [101] (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:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [116] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:7::sin16s:70 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:7::sin16s:70::mulu16_sel:87::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 mul16u::a#1 mul16u::b#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:92::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 mul16u::a#1 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:96::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#0 = mulu16_sel::v2#5 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:102::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 mul16u::a#1 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } main:2::sin16s_gen:7::sin16s:70::mulu16_sel:107::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 mul16u::a#1 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 mul16u::b#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [138] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::return#3 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ divr16u::return#3 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [140] (word) divr16u::rem#5 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::rem#5 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::return#4 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#4 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } ) always clobbers reg byte a +Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:63 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [156] if((word) divr16u::rem#7<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [162] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:63::divr16u:137 [ divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#3 } } main:2::sin16s_gen:7::div32u16u:63::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#11 = divr16u::rem#5 rem16u#1 } { divr16u::return#0 = divr16u::return#4 } } main:2::sin8s_gen:5::div16u:165::divr16u:242 [ divr16u::return#0 rem16u#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [166] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] { } ) always clobbers reg byte a +Statement [169] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte a +Statement [171] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [175] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] { } ) always clobbers reg byte y +Statement [177] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] { } ) always clobbers reg byte a +Statement [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [183] (word) sin8s::x#2 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [185] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [201] (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::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:172 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::sinx#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } } ) always clobbers reg byte a +Statement [226] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:172::mulu8_sel:189::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 mul8u::a#1 mul8u::b#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:194::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 mul8u::a#1 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:198::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#0 = mulu8_sel::v2#5 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:204::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 mul8u::a#1 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8s_gen:5::sin8s:172::mulu8_sel:209::mul8u:225 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#0 = sin8s_gen::x#2 } { sin8s::return#0 = sin8s::return#1 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 mul8u::a#1 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 mul8u::b#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [243] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:165 [ divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [244] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:165 [ div16u::return#0 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_str::str#2 print_str::str#0 ] : zp[2]:3 , Potential registers zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] : zp[1]:5 , reg byte a , reg byte x , @@ -6049,87 +6041,82 @@ Potential registers zp[2]:188 [ divr16u::return#2 ] : zp[2]:188 , Potential registers zp[2]:190 [ div16u::return#0 ] : zp[2]:190 , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 353.83: zp[2]:63 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp[2]:65 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp[1]:187 [ mul8u::$1 ] 170: zp[1]:62 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp[2]:180 [ mul8u::return#2 ] 2: zp[1]:179 [ mul8u::b#0 ] -Uplift Scope [mul16u] 353.83: zp[4]:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp[4]:37 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp[1]:141 [ mul16u::$1 ] 170: zp[2]:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 4: zp[4]:127 [ mul16u::return#2 ] 2: zp[2]:125 [ mul16u::b#0 ] -Uplift Scope [print_str] 303: zp[2]:3 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp[2]:41 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.12: zp[2]:45 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:154 [ divr16u::$1 ] 22: zp[1]:155 [ divr16u::$2 ] 18.19: zp[1]:47 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp[2]:43 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 ] 4: zp[2]:142 [ divr16u::return#3 ] 4: zp[2]:146 [ divr16u::return#4 ] 4: zp[2]:188 [ divr16u::return#2 ] -Uplift Scope [] 153.81: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] 0.8: zp[2]:156 [ rem16u#1 ] -Uplift Scope [main] 22: zp[2]:68 [ main::$3 ] 22: zp[2]:70 [ main::$11 ] 22: zp[2]:72 [ main::$4 ] 22: zp[2]:74 [ main::sw#0 ] 22: zp[1]:77 [ main::sd#0 ] 19.25: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[1]:76 [ main::$6 ] 3.67: zp[1]:67 [ main::sb#0 ] -Uplift Scope [sin8s] 27.5: zp[2]:55 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 22: zp[1]:162 [ sin8s::return#0 ] 13: zp[1]:58 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 10: zp[1]:57 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp[2]:164 [ sin8s::$4 ] 4: zp[1]:168 [ sin8s::x2#0 ] 4: zp[1]:172 [ sin8s::x3_6#0 ] 4: zp[1]:175 [ sin8s::x4#0 ] 4: zp[1]:177 [ sin8s::x5#0 ] 4: zp[1]:178 [ sin8s::x5_128#0 ] 1: zp[1]:170 [ sin8s::x3#0 ] 0.64: zp[1]:166 [ sin8s::x1#0 ] 0.33: zp[1]:173 [ sin8s::usinx#0 ] 0.06: zp[1]:54 [ sin8s::isUpper#10 ] -Uplift Scope [sin16s] 27.5: zp[4]:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp[2]:89 [ sin16s::return#0 ] 13: zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp[4]:93 [ sin16s::$4 ] 4: zp[2]:101 [ sin16s::x2#0 ] 4: zp[2]:109 [ sin16s::x3_6#0 ] 4: zp[2]:115 [ sin16s::x4#0 ] 4: zp[2]:119 [ sin16s::x5#0 ] 4: zp[2]:121 [ sin16s::x5_128#0 ] 1: zp[2]:105 [ sin16s::x3#0 ] 1: zp[2]:123 [ sin16s::usinx#1 ] 0.64: zp[2]:97 [ sin16s::x1#0 ] 0.33: zp[2]:111 [ sin16s::usinx#0 ] 0.06: zp[1]:19 [ sin16s::isUpper#2 ] -Uplift Scope [sin16s_gen] 25.67: zp[2]:11 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 22: zp[2]:91 [ sin16s_gen::$2 ] 15.12: zp[4]:13 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 12.05: zp[2]:17 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 1.18: zp[4]:85 [ sin16s_gen::step#0 ] -Uplift Scope [sin8s_gen] 25.67: zp[2]:48 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 22: zp[1]:163 [ sin8s_gen::$2 ] 15.12: zp[2]:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 12.05: zp[2]:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 1.18: zp[2]:160 [ sin8s_gen::step#0 ] -Uplift Scope [mulu16_sel] 24: zp[2]:26 [ 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[2]:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp[2]:99 [ mulu16_sel::return#0 ] 4: zp[2]:103 [ mulu16_sel::return#1 ] 4: zp[2]:107 [ mulu16_sel::return#2 ] 4: zp[2]:113 [ mulu16_sel::return#10 ] 4: zp[2]:117 [ mulu16_sel::return#11 ] 4: zp[4]:131 [ mulu16_sel::$0 ] 4: zp[4]:135 [ mulu16_sel::$1 ] 1.71: zp[2]:139 [ mulu16_sel::return#12 ] 0.33: zp[1]:30 [ mulu16_sel::select#5 ] -Uplift Scope [mulu8_sel] 24: zp[1]:59 [ 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[1]:60 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp[1]:167 [ mulu8_sel::return#0 ] 4: zp[1]:169 [ mulu8_sel::return#1 ] 4: zp[1]:171 [ mulu8_sel::return#2 ] 4: zp[1]:174 [ mulu8_sel::return#10 ] 4: zp[1]:176 [ mulu8_sel::return#11 ] 4: zp[2]:182 [ mulu8_sel::$0 ] 4: zp[2]:184 [ mulu8_sel::$1 ] 1.71: zp[1]:186 [ mulu8_sel::return#12 ] 0.33: zp[1]:61 [ mulu8_sel::select#5 ] -Uplift Scope [memset] 36.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 14: zp[1]:6 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sbyte] 10.83: zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplift Scope [div32u16u] 4: zp[4]:81 [ div32u16u::return#2 ] 4: zp[2]:148 [ div32u16u::quotient_lo#0 ] 1.33: zp[4]:150 [ div32u16u::return#0 ] 0.8: zp[2]:144 [ div32u16u::quotient_hi#0 ] -Uplift Scope [print_byte] 4: zp[1]:79 [ print_byte::$0 ] 4: zp[1]:80 [ print_byte::$2 ] 1.5: zp[1]:78 [ print_byte::b#0 ] -Uplift Scope [div16u] 4: zp[2]:158 [ div16u::return#2 ] 1.33: zp[2]:190 [ div16u::return#0 ] +Uplift Scope [mul8u] 350,016,670.33: zp[2]:63 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 245,000,004.57: zp[2]:65 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 200,000,002: zp[1]:187 [ mul8u::$1 ] 167,200,002.5: zp[1]:62 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 200,002: zp[2]:180 [ mul8u::return#2 ] 100,001: zp[1]:179 [ mul8u::b#0 ] +Uplift Scope [mul16u] 350,016,670.33: zp[4]:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:37 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:141 [ mul16u::$1 ] 167,200,002.5: zp[2]:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 200,002: zp[4]:127 [ mul16u::return#2 ] 100,001: zp[2]:125 [ mul16u::b#0 ] +Uplift Scope [divr16u] 901,347.42: zp[2]:41 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 312,878.5: zp[2]:45 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:154 [ divr16u::$1 ] 200,002: zp[1]:155 [ divr16u::$2 ] 165,386.27: zp[1]:47 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:43 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 ] 2,002: zp[2]:142 [ divr16u::return#3 ] 2,002: zp[2]:146 [ divr16u::return#4 ] 2,002: zp[2]:188 [ divr16u::return#2 ] +Uplift Scope [mulu16_sel] 210,012: zp[2]:26 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 200,002: zp[4]:131 [ mulu16_sel::$0 ] 200,002: zp[4]:135 [ mulu16_sel::$1 ] 150,010.5: zp[2]:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 21,429.43: zp[2]:139 [ mulu16_sel::return#12 ] 20,002: zp[2]:99 [ mulu16_sel::return#0 ] 20,002: zp[2]:103 [ mulu16_sel::return#1 ] 20,002: zp[2]:107 [ mulu16_sel::return#2 ] 20,002: zp[2]:113 [ mulu16_sel::return#10 ] 20,002: zp[2]:117 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:30 [ mulu16_sel::select#5 ] +Uplift Scope [mulu8_sel] 210,012: zp[1]:59 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 200,002: zp[2]:182 [ mulu8_sel::$0 ] 200,002: zp[2]:184 [ mulu8_sel::$1 ] 150,010.5: zp[1]:60 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 21,429.43: zp[1]:186 [ mulu8_sel::return#12 ] 20,002: zp[1]:167 [ mulu8_sel::return#0 ] 20,002: zp[1]:169 [ mulu8_sel::return#1 ] 20,002: zp[1]:171 [ mulu8_sel::return#2 ] 20,002: zp[1]:174 [ mulu8_sel::return#10 ] 20,002: zp[1]:176 [ mulu8_sel::return#11 ] 16,666.83: zp[1]:61 [ mulu8_sel::select#5 ] +Uplift Scope [sin8s] 110,511.5: zp[2]:55 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 50,005: zp[1]:57 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 47,005: zp[1]:58 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 20,002: zp[2]:164 [ sin8s::$4 ] 20,002: zp[1]:168 [ sin8s::x2#0 ] 20,002: zp[1]:172 [ sin8s::x3_6#0 ] 20,002: zp[1]:175 [ sin8s::x4#0 ] 20,002: zp[1]:177 [ sin8s::x5#0 ] 20,002: zp[1]:178 [ sin8s::x5_128#0 ] 5,000.5: zp[1]:170 [ sin8s::x3#0 ] 3,182.14: zp[1]:166 [ sin8s::x1#0 ] 2,002: zp[1]:162 [ sin8s::return#0 ] 1,666.83: zp[1]:173 [ sin8s::usinx#0 ] 277.81: zp[1]:54 [ sin8s::isUpper#10 ] +Uplift Scope [print_str] 300,003: zp[2]:3 [ print_str::str#2 print_str::str#0 ] +Uplift Scope [sin16s] 110,511.5: zp[4]:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:93 [ sin16s::$4 ] 20,002: zp[2]:101 [ sin16s::x2#0 ] 20,002: zp[2]:109 [ sin16s::x3_6#0 ] 20,002: zp[2]:115 [ sin16s::x4#0 ] 20,002: zp[2]:119 [ sin16s::x5#0 ] 20,002: zp[2]:121 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:105 [ sin16s::x3#0 ] 5,000.5: zp[2]:123 [ sin16s::usinx#1 ] 3,182.14: zp[2]:97 [ sin16s::x1#0 ] 2,002: zp[2]:89 [ sin16s::return#0 ] 1,666.83: zp[2]:111 [ sin16s::usinx#0 ] 303.06: zp[1]:19 [ sin16s::isUpper#2 ] +Uplift Scope [] 260,562.88: zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] 2,200.4: zp[2]:156 [ rem16u#1 ] +Uplift Scope [print_char] 160,007: zp[1]:6 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_byte] 20,002: zp[1]:79 [ print_byte::$0 ] 20,002: zp[1]:80 [ print_byte::$2 ] 5,250.75: zp[1]:78 [ print_byte::b#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:9 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [sin16s_gen] 2,335.67: zp[2]:11 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 2,002: zp[2]:91 [ sin16s_gen::$2 ] 1,376.38: zp[4]:13 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 1,096.33: zp[2]:17 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 100.18: zp[4]:85 [ sin16s_gen::step#0 ] +Uplift Scope [sin8s_gen] 2,335.67: zp[2]:48 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 2,002: zp[1]:163 [ sin8s_gen::$2 ] 1,376.38: zp[2]:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 1,096.33: zp[2]:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 100.18: zp[2]:160 [ sin8s_gen::step#0 ] +Uplift Scope [print_sbyte] 4,521.33: zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplift Scope [div32u16u] 2,002: zp[2]:148 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:144 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:150 [ div32u16u::return#0 ] 202: zp[4]:81 [ div32u16u::return#2 ] +Uplift Scope [main] 202: zp[2]:68 [ main::$3 ] 202: zp[2]:70 [ main::$11 ] 202: zp[2]:72 [ main::$4 ] 202: zp[2]:74 [ main::sw#0 ] 202: zp[1]:77 [ main::sd#0 ] 176.75: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[1]:76 [ main::$6 ] 33.67: zp[1]:67 [ main::sb#0 ] +Uplift Scope [div16u] 367.33: zp[2]:190 [ div16u::return#0 ] 202: zp[2]:158 [ div16u::return#2 ] Uplift Scope [RADIX] Uplift Scope [print_cls] Uplifting [mul8u] best 36701 combination zp[2]:63 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:65 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] zp[2]:180 [ mul8u::return#2 ] reg byte a [ mul8u::b#0 ] Uplifting [mul16u] best 36101 combination zp[4]:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:37 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp[4]:127 [ mul16u::return#2 ] zp[2]:125 [ mul16u::b#0 ] -Uplifting [print_str] best 36101 combination zp[2]:3 [ print_str::str#2 print_str::str#0 ] Uplifting [divr16u] best 35891 combination zp[2]:41 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:45 [ 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[2]:43 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 ] zp[2]:142 [ divr16u::return#3 ] zp[2]:146 [ divr16u::return#4 ] zp[2]:188 [ divr16u::return#2 ] -Uplifting [] best 35891 combination zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] zp[2]:156 [ rem16u#1 ] -Uplifting [main] best 35661 combination zp[2]:68 [ main::$3 ] zp[2]:70 [ main::$11 ] zp[2]:72 [ main::$4 ] zp[2]:74 [ main::sw#0 ] reg byte a [ main::sd#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$6 ] zp[1]:67 [ main::sb#0 ] -Uplifting [sin8s] best 35556 combination zp[2]:55 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp[2]:164 [ sin8s::$4 ] zp[1]:168 [ sin8s::x2#0 ] zp[1]:172 [ sin8s::x3_6#0 ] zp[1]:175 [ sin8s::x4#0 ] zp[1]:177 [ sin8s::x5#0 ] zp[1]:178 [ sin8s::x5_128#0 ] zp[1]:170 [ sin8s::x3#0 ] zp[1]:166 [ sin8s::x1#0 ] zp[1]:173 [ sin8s::usinx#0 ] zp[1]:54 [ sin8s::isUpper#10 ] -Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [sin16s] best 35547 combination zp[4]:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:89 [ sin16s::return#0 ] zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:93 [ sin16s::$4 ] zp[2]:101 [ sin16s::x2#0 ] zp[2]:109 [ sin16s::x3_6#0 ] zp[2]:115 [ sin16s::x4#0 ] zp[2]:119 [ sin16s::x5#0 ] zp[2]:121 [ sin16s::x5_128#0 ] zp[2]:105 [ sin16s::x3#0 ] zp[2]:123 [ sin16s::usinx#1 ] zp[2]:97 [ sin16s::x1#0 ] zp[2]:111 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [sin16s_gen] best 35547 combination zp[2]:11 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:91 [ sin16s_gen::$2 ] zp[4]:13 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:17 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:85 [ sin16s_gen::step#0 ] -Uplifting [sin8s_gen] best 35487 combination zp[2]:48 [ sin8s_gen::i#2 sin8s_gen::i#1 ] reg byte a [ sin8s_gen::$2 ] zp[2]:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp[2]:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp[2]:160 [ sin8s_gen::step#0 ] -Uplifting [mulu16_sel] best 35471 combination zp[2]:26 [ 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[2]:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:99 [ mulu16_sel::return#0 ] zp[2]:103 [ mulu16_sel::return#1 ] zp[2]:107 [ mulu16_sel::return#2 ] zp[2]:113 [ mulu16_sel::return#10 ] zp[2]:117 [ mulu16_sel::return#11 ] zp[4]:131 [ mulu16_sel::$0 ] zp[4]:135 [ mulu16_sel::$1 ] zp[2]:139 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mulu8_sel] best 35425 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[1]:171 [ mulu8_sel::return#2 ] zp[1]:174 [ mulu8_sel::return#10 ] zp[1]:176 [ mulu8_sel::return#11 ] zp[2]:182 [ mulu8_sel::$0 ] zp[2]:184 [ mulu8_sel::$1 ] zp[1]:186 [ mulu8_sel::return#12 ] zp[1]:61 [ mulu8_sel::select#5 ] +Uplifting [mulu16_sel] best 35875 combination zp[2]:26 [ 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[4]:131 [ mulu16_sel::$0 ] zp[4]:135 [ mulu16_sel::$1 ] zp[2]:28 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp[2]:139 [ mulu16_sel::return#12 ] zp[2]:99 [ mulu16_sel::return#0 ] zp[2]:103 [ mulu16_sel::return#1 ] zp[2]:107 [ mulu16_sel::return#2 ] zp[2]:113 [ mulu16_sel::return#10 ] zp[2]:117 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mulu8_sel] best 35817 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 ] zp[2]:182 [ mulu8_sel::$0 ] zp[2]:184 [ mulu8_sel::$1 ] 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#12 ] reg byte a [ mulu8_sel::return#0 ] zp[1]:169 [ mulu8_sel::return#1 ] zp[1]:171 [ mulu8_sel::return#2 ] zp[1]:174 [ mulu8_sel::return#10 ] zp[1]:176 [ mulu8_sel::return#11 ] zp[1]:61 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [memset] best 35425 combination zp[2]:9 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 35410 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sbyte] best 35410 combination zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div32u16u] best 35410 combination zp[4]:81 [ div32u16u::return#2 ] zp[2]:148 [ div32u16u::quotient_lo#0 ] zp[4]:150 [ div32u16u::return#0 ] zp[2]:144 [ div32u16u::quotient_hi#0 ] -Uplifting [print_byte] best 35402 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp[1]:78 [ print_byte::b#0 ] -Uplifting [div16u] best 35402 combination zp[2]:158 [ div16u::return#2 ] zp[2]:190 [ div16u::return#0 ] -Uplifting [RADIX] best 35402 combination -Uplifting [print_cls] best 35402 combination -Attempting to uplift remaining variables inzp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 35402 combination zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Attempting to uplift remaining variables inzp[1]:168 [ sin8s::x2#0 ] -Uplifting [sin8s] best 35398 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 35764 combination zp[2]:55 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] zp[2]:164 [ sin8s::$4 ] reg byte a [ sin8s::x2#0 ] reg byte a [ sin8s::x3_6#0 ] zp[1]:175 [ sin8s::x4#0 ] zp[1]:177 [ sin8s::x5#0 ] zp[1]:178 [ sin8s::x5_128#0 ] zp[1]:170 [ sin8s::x3#0 ] zp[1]:166 [ sin8s::x1#0 ] zp[1]:162 [ sin8s::return#0 ] zp[1]:173 [ sin8s::usinx#0 ] zp[1]:54 [ sin8s::isUpper#10 ] +Limited combination testing to 100 combinations of 5308416 possible. +Uplifting [print_str] best 35764 combination zp[2]:3 [ print_str::str#2 print_str::str#0 ] +Uplifting [sin16s] best 35755 combination zp[4]:20 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:93 [ sin16s::$4 ] zp[2]:101 [ sin16s::x2#0 ] zp[2]:109 [ sin16s::x3_6#0 ] zp[2]:115 [ sin16s::x4#0 ] zp[2]:119 [ sin16s::x5#0 ] zp[2]:121 [ sin16s::x5_128#0 ] zp[2]:105 [ sin16s::x3#0 ] zp[2]:123 [ sin16s::usinx#1 ] zp[2]:97 [ sin16s::x1#0 ] zp[2]:89 [ sin16s::return#0 ] zp[2]:111 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [] best 35755 combination zp[2]:7 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] zp[2]:156 [ rem16u#1 ] +Uplifting [print_char] best 35740 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 35725 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#0 ] +Uplifting [memset] best 35725 combination zp[2]:9 [ memset::dst#2 memset::dst#1 ] +Uplifting [sin16s_gen] best 35725 combination zp[2]:11 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp[2]:91 [ sin16s_gen::$2 ] zp[4]:13 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp[2]:17 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp[4]:85 [ sin16s_gen::step#0 ] +Uplifting [sin8s_gen] best 35665 combination zp[2]:48 [ sin8s_gen::i#2 sin8s_gen::i#1 ] reg byte a [ sin8s_gen::$2 ] zp[2]:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp[2]:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp[2]:160 [ sin8s_gen::step#0 ] +Uplifting [print_sbyte] best 35629 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div32u16u] best 35629 combination zp[2]:148 [ div32u16u::quotient_lo#0 ] zp[2]:144 [ div32u16u::quotient_hi#0 ] zp[4]:150 [ div32u16u::return#0 ] zp[4]:81 [ div32u16u::return#2 ] +Uplifting [main] best 35549 combination zp[2]:68 [ main::$3 ] zp[2]:70 [ main::$11 ] zp[2]:72 [ main::$4 ] zp[2]:74 [ main::sw#0 ] reg byte a [ main::sd#0 ] zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$6 ] zp[1]:67 [ main::sb#0 ] +Uplifting [div16u] best 35549 combination zp[2]:190 [ div16u::return#0 ] zp[2]:158 [ div16u::return#2 ] +Uplifting [RADIX] best 35549 combination +Uplifting [print_cls] best 35549 combination +Attempting to uplift remaining variables inzp[1]:169 [ mulu8_sel::return#1 ] +Uplifting [mulu8_sel] best 35543 combination reg byte a [ mulu8_sel::return#1 ] Attempting to uplift remaining variables inzp[1]:171 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 35392 combination reg byte a [ mulu8_sel::return#2 ] -Attempting to uplift remaining variables inzp[1]:172 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 35388 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [mulu8_sel] best 35537 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp[1]:174 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 35382 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 35531 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp[1]:175 [ sin8s::x4#0 ] -Uplifting [sin8s] best 35378 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 35527 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp[1]:176 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 35372 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 35521 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp[1]:177 [ sin8s::x5#0 ] -Uplifting [sin8s] best 35366 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 35515 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp[1]:178 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 35360 combination reg byte a [ sin8s::x5_128#0 ] -Attempting to uplift remaining variables inzp[1]:67 [ main::sb#0 ] -Uplifting [main] best 35360 combination zp[1]:67 [ main::sb#0 ] -Attempting to uplift remaining variables inzp[1]:186 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 35342 combination reg byte a [ mulu8_sel::return#12 ] -Attempting to uplift remaining variables inzp[1]:78 [ print_byte::b#0 ] -Uplifting [print_byte] best 35342 combination zp[1]:78 [ print_byte::b#0 ] -Attempting to uplift remaining variables inzp[1]:170 [ sin8s::x3#0 ] -Uplifting [sin8s] best 35342 combination zp[1]:170 [ sin8s::x3#0 ] -Attempting to uplift remaining variables inzp[1]:166 [ sin8s::x1#0 ] -Uplifting [sin8s] best 35342 combination zp[1]:166 [ sin8s::x1#0 ] +Uplifting [sin8s] best 35509 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp[1]:61 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 35342 combination zp[1]:61 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 35509 combination zp[1]:61 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp[1]:170 [ sin8s::x3#0 ] +Uplifting [sin8s] best 35509 combination zp[1]:170 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp[1]:166 [ sin8s::x1#0 ] +Uplifting [sin8s] best 35509 combination zp[1]:166 [ sin8s::x1#0 ] +Attempting to uplift remaining variables inzp[1]:162 [ sin8s::return#0 ] +Uplifting [sin8s] best 35449 combination reg byte a [ sin8s::return#0 ] Attempting to uplift remaining variables inzp[1]:173 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 35342 combination zp[1]:173 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 35449 combination zp[1]:173 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp[1]:54 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 35342 combination zp[1]:54 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 35449 combination zp[1]:54 [ sin8s::isUpper#10 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 35449 combination zp[1]:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:67 [ main::sb#0 ] +Uplifting [main] best 35449 combination zp[1]:67 [ main::sb#0 ] Coalescing zero page register [ zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:123 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register [ zp[2]:26 [ 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[2]:105 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:41 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:156 [ rem16u#1 ] ] - score: 2 -Coalescing zero page register [ zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] with [ zp[1]:78 [ print_byte::b#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp[2]:89 [ sin16s::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ 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[2]:101 [ sin16s::x2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ 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[2]:115 [ sin16s::x4#0 ] ] - score: 1 @@ -6170,8 +6157,7 @@ Coalescing zero page register [ zp[2]:45 [ divr16u::quotient#3 divr16u::return#0 Coalescing zero page register [ zp[2]:48 [ sin8s_gen::i#2 sin8s_gen::i#1 ] ] with [ zp[2]:11 [ sin16s_gen::i#2 sin16s_gen::i#1 ] ] Coalescing zero page register [ zp[2]:50 [ sin8s_gen::x#2 sin8s_gen::x#1 ] ] with [ zp[2]:17 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] ] Coalescing zero page register [ zp[2]:52 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] with [ zp[2]:24 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] ] -Coalescing zero page register [ zp[1]:54 [ sin8s::isUpper#10 ] ] with [ zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] ] -Coalescing zero page register [ zp[1]:67 [ main::sb#0 ] ] with [ zp[1]:61 [ mulu8_sel::select#5 ] ] +Coalescing zero page register [ zp[1]:67 [ main::sb#0 ] ] with [ zp[1]:54 [ sin8s::isUpper#10 ] ] Coalescing zero page register [ zp[2]:68 [ main::$3 main::$11 main::$4 main::sw#0 ] ] with [ zp[2]:55 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ] Coalescing zero page register [ zp[4]:93 [ sin16s::$4 ] ] with [ zp[4]:33 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] ] Coalescing zero page register [ zp[2]:97 [ sin16s::x1#0 ] ] with [ zp[2]:63 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] @@ -6179,25 +6165,25 @@ Coalescing zero page register [ zp[2]:99 [ mulu16_sel::return#0 mulu16_sel::retu Coalescing zero page register [ zp[2]:41 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 ] ] with [ zp[2]:9 [ memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] ] Coalescing zero page register [ zp[2]:68 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ] with [ zp[2]:43 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] ] Coalescing zero page register [ zp[2]:144 [ div32u16u::quotient_hi#0 ] ] with [ zp[2]:97 [ sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] -Allocated (was zp[2]:7) zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -Allocated (was zp[4]:13) zp[4]:4 [ sin16s_gen::x#2 sin16s_gen::x#1 ] -Allocated (was zp[4]:20) zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] -Allocated (was zp[4]:37) zp[4]:12 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -Allocated (was zp[2]:41) zp[2]:16 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -Allocated (was zp[2]:45) zp[2]:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] -Allocated (was zp[2]:48) zp[2]:20 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] -Allocated (was zp[2]:50) zp[2]:22 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] -Allocated (was zp[2]:52) zp[2]:24 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] -Allocated (was zp[1]:54) zp[1]:26 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] -Allocated (was zp[1]:67) zp[1]:27 [ main::sb#0 mulu8_sel::select#5 ] -Allocated (was zp[2]:68) zp[2]:28 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] -Allocated (was zp[4]:81) zp[4]:30 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] -Allocated (was zp[4]:93) zp[4]:34 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] -Allocated (was zp[2]:99) zp[2]:38 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated (was zp[2]:144) zp[2]:40 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] -Allocated (was zp[1]:166) zp[1]:42 [ sin8s::x1#0 ] -Allocated (was zp[1]:170) zp[1]:43 [ sin8s::x3#0 ] -Allocated (was zp[1]:173) zp[1]:44 [ sin8s::usinx#0 ] +Allocated (was zp[2]:7) zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +Allocated (was zp[4]:13) zp[4]:5 [ sin16s_gen::x#2 sin16s_gen::x#1 ] +Allocated (was zp[4]:20) zp[4]:9 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] +Allocated (was zp[4]:37) zp[4]:13 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +Allocated (was zp[2]:41) zp[2]:17 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +Allocated (was zp[2]:45) zp[2]:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] +Allocated (was zp[2]:48) zp[2]:21 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] +Allocated (was zp[2]:50) zp[2]:23 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] +Allocated (was zp[2]:52) zp[2]:25 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] +Allocated (was zp[1]:61) zp[1]:27 [ mulu8_sel::select#5 ] +Allocated (was zp[1]:67) zp[1]:28 [ main::sb#0 sin8s::isUpper#10 ] +Allocated (was zp[2]:68) zp[2]:29 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] +Allocated (was zp[4]:81) zp[4]:31 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] +Allocated (was zp[4]:93) zp[4]:35 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +Allocated (was zp[2]:99) zp[2]:39 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated (was zp[2]:144) zp[2]:41 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +Allocated (was zp[1]:166) zp[1]:43 [ sin8s::x1#0 ] +Allocated (was zp[1]:170) zp[1]:44 [ sin8s::x3#0 ] +Allocated (was zp[1]:173) zp[1]:45 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -6221,8 +6207,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const SIZEOF_SIGNED_WORD = 2 .label print_line_cursor = $400 // Remainder after unsigned 16-bit division - .label rem16u = $10 - .label print_char_cursor = 2 + .label rem16u = $11 + .label print_char_cursor = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -6242,11 +6228,12 @@ __bend: // main main: { .label wavelength = $c0 - .label __3 = $1c - .label __4 = $1c - .label __11 = $1c - .label sb = $1b - .label sw = $1c + .label __3 = $1d + .label __4 = $1d + .label __11 = $1d + .label sb = $1c + .label sw = $1d + .label i = 2 // [5] call sin8s_gen // [164] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: @@ -6276,8 +6263,9 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@3->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@3->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i jmp __b1 // [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] __b1_from___b5: @@ -6286,11 +6274,12 @@ main: { jmp __b1 // main::@1 __b1: - // [11] (signed byte) main::sb#0 ← *((const signed byte*) main::sintabb + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx - lda sintabb,x + // [11] (signed byte) main::sb#0 ← *((const signed byte*) main::sintabb + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + ldy.z i + lda sintabb,y sta.z sb - // [12] (word~) main::$3 ← (word)(byte) main::i#2 -- vwuz1=_word_vbuxx - txa + // [12] (word~) main::$3 ← (word)(byte) main::i#2 -- vwuz1=_word_vbuz2 + lda.z i sta.z __3 lda #0 sta.z __3+1 @@ -6320,8 +6309,8 @@ main: { eor #$ff sec adc.z sb - // [18] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsz1=vbsaa - sta.z print_sbyte.b + // [18] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsxx=vbsaa + tax // [19] call print_sbyte jsr print_sbyte // [20] phi from main::@1 to main::@4 [phi:main::@1->main::@4] @@ -6336,10 +6325,11 @@ main: { jmp __b5 // main::@5 __b5: - // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [23] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c0 + // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [23] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$c0 + cmp.z i bne __b1_from___b5 jmp __breturn // main::@return @@ -6353,9 +6343,9 @@ main: { } // print_str // Print a zero-terminated string -// print_str(byte* zp($10) str) +// print_str(byte* zp($11) str) print_str: { - .label str = $10 + .label str = $11 // [26] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] __b1_from_print_str: // [26] phi (byte*) print_char_cursor#19 = (byte*) print_char_cursor#10 [phi:print_str->print_str::@1#0] -- register_copy @@ -6402,11 +6392,10 @@ print_str: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($1a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $1a - // [32] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [32] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1_from_print_sbyte // [33] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] __b3_from_print_sbyte: @@ -6450,12 +6439,12 @@ print_sbyte: { jmp __b4 // print_sbyte::@4 __b4: - // [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2_from___b4 } // print_char @@ -6478,11 +6467,10 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($1a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $1a - // [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -6500,12 +6488,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [50] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [50] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [51] call print_char // [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -6538,7 +6525,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = $10 + .label dst = $11 // [57] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: // [57] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 @@ -6581,15 +6568,15 @@ memset: { // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin16s_gen(signed word* zp($16) sintab) +// sin16s_gen(signed word* zp($17) sintab) sin16s_gen: { - .label __2 = $18 - .label step = $1e - .label sintab = $16 + .label __2 = $19 + .label step = $1f + .label sintab = $17 // u[4.28] // Iterate over the table - .label x = 4 - .label i = $14 + .label x = 5 + .label i = $15 // [63] call div32u16u // [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: @@ -6701,20 +6688,20 @@ sin16s_gen: { // 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 zp(8) x) +// sin16s(dword zp(9) x) sin16s: { - .label __4 = $22 - .label x = 8 - .label return = $18 - .label x1 = $28 - .label x2 = $10 - .label x3 = $10 - .label x3_6 = $26 - .label usinx = $18 - .label x4 = $10 - .label x5 = $26 - .label x5_128 = $26 - .label sinx = $18 + .label __4 = $23 + .label x = 9 + .label return = $19 + .label x1 = $29 + .label x2 = $11 + .label x3 = $11 + .label x3_6 = $27 + .label usinx = $19 + .label x4 = $11 + .label x5 = $27 + .label x5_128 = $27 + .label sinx = $19 // [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_u4f28>>$10 @@ -6999,14 +6986,14 @@ sin16s: { // 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 zp($10) v1, word zp($1c) v2, byte register(X) select) +// mulu16_sel(word zp($11) v1, word zp($1d) v2, byte register(X) select) mulu16_sel: { - .label __0 = $22 - .label __1 = $22 - .label v1 = $10 - .label v2 = $1c - .label return = $26 - .label return_1 = $10 + .label __0 = $23 + .label __1 = $23 + .label v1 = $11 + .label v2 = $1d + .label return = $27 + .label return_1 = $11 // [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda.z v1 sta.z mul16u.a @@ -7044,13 +7031,13 @@ mulu16_sel: { } // mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word -// mul16u(word zp($12) a, word zp($1c) b) +// mul16u(word zp($13) a, word zp($1d) b) mul16u: { - .label mb = $c - .label a = $12 - .label res = $22 - .label b = $1c - .label return = $22 + .label mb = $d + .label a = $13 + .label res = $23 + .label b = $1d + .label return = $23 // [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda.z b sta.z mb @@ -7136,9 +7123,9 @@ mul16u: { // 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 = $28 - .label quotient_lo = $12 - .label return = $1e + .label quotient_hi = $29 + .label quotient_lo = $13 + .label return = $1f // [137] call divr16u // [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: @@ -7198,12 +7185,12 @@ div32u16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($1c) dividend, word zp($10) rem) +// divr16u(word zp($1d) dividend, word zp($11) rem) divr16u: { - .label rem = $10 - .label dividend = $1c - .label quotient = $12 - .label return = $12 + .label rem = $11 + .label dividend = $1d + .label quotient = $13 + .label return = $13 // [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: // [147] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 @@ -7307,14 +7294,14 @@ divr16u: { // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin8s_gen(signed byte* zp($18) sintab) +// sin8s_gen(signed byte* zp($19) sintab) sin8s_gen: { - .label step = $12 - .label sintab = $18 + .label step = $13 + .label sintab = $19 // u[4.12] // Iterate over the table - .label x = $16 - .label i = $14 + .label x = $17 + .label i = $15 // [165] call div16u // [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: @@ -7405,17 +7392,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($1c) x) +// sin8s(word zp($1d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $1c - .label x = $1c - .label x1 = $2a - .label x3 = $2b - .label usinx = $2c + .label __4 = $1d + .label x = $1d + .label x1 = $2b + .label x3 = $2c + .label usinx = $2d // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $1a + .label isUpper = $1c // [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 cmp #>PI_u4f12 @@ -7643,8 +7630,8 @@ sin8s: { // 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 zp($1b) select) mulu8_sel: { - .label __0 = $28 - .label __1 = $28 + .label __0 = $29 + .label __1 = $29 .label select = $1b // [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 // [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy @@ -7677,9 +7664,9 @@ mulu8_sel: { // 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 = $26 - .label res = $28 - .label return = $28 + .label mb = $27 + .label res = $29 + .label return = $29 // [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta.z mb lda #0 @@ -7750,7 +7737,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $12 + .label return = $13 // [242] call divr16u // [146] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: @@ -7860,6 +7847,7 @@ Removing instruction jmp __b3 Removing instruction jmp __b1 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda.z i with TYA Removing instruction ldy #0 Removing instruction lda #>0 Removing instruction lda #>0 @@ -8068,8 +8056,8 @@ FINAL SYMBOL TABLE (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 return zp[2]:18 1.3333333333333333 -(word) div16u::return#2 return zp[2]:18 4.0 +(word) div16u::return#0 return zp[2]:19 367.33333333333337 +(word) div16u::return#2 return zp[2]:19 202.0 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@1 (label) div32u16u::@2 @@ -8078,15 +8066,15 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:18 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:19 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:30 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:30 4.0 +(dword) div32u16u::return#0 return zp[4]:31 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:31 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -8095,36 +8083,36 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:28 2.75 -(word) divr16u::dividend#4 dividend zp[2]:28 5.0 -(word) divr16u::dividend#6 dividend zp[2]:28 2.0 +(word) divr16u::dividend#0 dividend zp[2]:29 25000.25 +(word) divr16u::dividend#4 dividend zp[2]:29 44286.28571428572 +(word) divr16u::dividend#6 dividend zp[2]:29 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:18 16.5 -(word) divr16u::quotient#2 quotient zp[2]:18 11.0 -(word) divr16u::quotient#3 quotient zp[2]:18 2.75 +(word) divr16u::quotient#1 quotient zp[2]:19 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:19 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:19 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:16 8.25 -(word) divr16u::rem#1 rem zp[2]:16 22.0 -(word) divr16u::rem#10 rem zp[2]:16 11.666666666666666 -(word) divr16u::rem#11 rem zp[2]:16 4.0 -(word) divr16u::rem#2 rem zp[2]:16 22.0 -(word) divr16u::rem#5 rem zp[2]:16 4.0 -(word) divr16u::rem#6 rem zp[2]:16 24.0 -(word) divr16u::rem#7 rem zp[2]:16 11.0 +(word) divr16u::rem#0 rem zp[2]:17 75000.75 +(word) divr16u::rem#1 rem zp[2]:17 200002.0 +(word) divr16u::rem#10 rem zp[2]:17 103334.66666666667 +(word) divr16u::rem#11 rem zp[2]:17 11002.0 +(word) divr16u::rem#2 rem zp[2]:17 200002.0 +(word) divr16u::rem#5 rem zp[2]:17 2002.0 +(word) divr16u::rem#6 rem zp[2]:17 210003.0 +(word) divr16u::rem#7 rem zp[2]:17 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:18 4.875 -(word) divr16u::return#2 return zp[2]:18 4.0 -(word) divr16u::return#3 return zp[2]:18 4.0 -(word) divr16u::return#4 return zp[2]:18 4.0 +(word) divr16u::return#0 return zp[2]:19 37875.75 +(word) divr16u::return#2 return zp[2]:19 2002.0 +(word) divr16u::return#3 return zp[2]:19 2002.0 +(word) divr16u::return#4 return zp[2]:19 2002.0 (void()) main() -(word~) main::$11 zp[2]:28 22.0 -(word~) main::$3 zp[2]:28 22.0 -(signed word*~) main::$4 zp[2]:28 22.0 -(byte~) main::$6 reg byte a 11.0 +(word~) main::$11 zp[2]:29 202.0 +(word~) main::$3 zp[2]:29 202.0 +(signed word*~) main::$4 zp[2]:29 202.0 +(byte~) main::$6 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -8132,17 +8120,17 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.75 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 25.25 (signed byte) main::sb -(signed byte) main::sb#0 sb zp[1]:27 3.6666666666666665 +(signed byte) main::sb#0 sb zp[1]:28 33.666666666666664 (signed byte) main::sd -(signed byte) main::sd#0 reg byte a 22.0 +(signed byte) main::sd#0 reg byte a 202.0 (const signed byte*) main::sintabb[(number) $c0] = { fill( $c0, 0) } (const signed word*) main::sintabw[(number) $c0] = { fill( $c0, 0) } (const byte*) main::str[(byte) 3] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:28 22.0 +(signed word) main::sw#0 sw zp[2]:29 202.0 (const word) main::wavelength = (word) $c0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -8151,8 +8139,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:17 20002.0 +(byte*) memset::dst#2 dst zp[2]:17 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -8161,124 +8149,124 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:18 101.0 -(word) mul16u::a#1 a zp[2]:18 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:18 67.66666666666666 +(word) mul16u::a#0 a zp[2]:19 1.00000001E8 +(word) mul16u::a#1 a zp[2]:19 366667.3333333334 +(word) mul16u::a#2 a zp[2]:19 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:28 2.0 +(word) mul16u::b#0 b zp[2]:29 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:12 4.0 -(dword) mul16u::mb#1 mb zp[4]:12 202.0 -(dword) mul16u::mb#2 mb zp[4]:12 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:13 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:13 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:13 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:34 202.0 -(dword) mul16u::res#2 res zp[4]:34 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:34 101.0 +(dword) mul16u::res#1 res zp[4]:35 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:35 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:35 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:34 4.0 +(dword) mul16u::return#2 return zp[4]:35 200002.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 1.3333333333333333 -(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 366667.3333333334 +(byte) mul8u::a#2 reg byte x 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 2.0 +(byte) mul8u::b#0 reg byte a 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:38 4.0 -(word) mul8u::mb#1 mb zp[2]:38 202.0 -(word) mul8u::mb#2 mb zp[2]:38 43.57142857142858 +(word) mul8u::mb#0 mb zp[2]:39 2000002.0 +(word) mul8u::mb#1 mb zp[2]:39 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:39 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:40 202.0 -(word) mul8u::res#2 res zp[2]:40 50.83333333333333 -(word) mul8u::res#6 res zp[2]:40 101.0 +(word) mul8u::res#1 res zp[2]:41 2.00000002E8 +(word) mul8u::res#2 res zp[2]:41 5.0016667333333336E7 +(word) mul8u::res#6 res zp[2]:41 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:40 4.0 +(word) mul8u::return#2 return zp[2]:41 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:34 4.0 -(dword~) mulu16_sel::$1 zp[4]:34 4.0 +(dword~) mulu16_sel::$0 zp[4]:35 200002.0 +(dword~) mulu16_sel::$1 zp[4]:35 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:38 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:16 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:16 4.0 -(word) mulu16_sel::return#11 return zp[2]:38 4.0 -(word) mulu16_sel::return#12 return zp[2]:38 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:38 4.0 +(word) mulu16_sel::return#0 return zp[2]:39 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:17 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:17 20002.0 +(word) mulu16_sel::return#11 return zp[2]:39 20002.0 +(word) mulu16_sel::return#12 return zp[2]:39 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:39 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:16 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:16 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:17 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:17 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:28 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:29 70002.5 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 zp[2]:40 4.0 -(word~) mulu8_sel::$1 zp[2]:40 4.0 +(word~) mulu8_sel::$0 zp[2]:41 200002.0 +(word~) mulu8_sel::$1 zp[2]:41 200002.0 (label) mulu8_sel::@1 (label) mulu8_sel::@return (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 reg byte a 4.0 -(byte) mulu8_sel::return#1 reg byte a 4.0 -(byte) mulu8_sel::return#10 reg byte a 4.0 -(byte) mulu8_sel::return#11 reg byte a 4.0 -(byte) mulu8_sel::return#12 reg byte a 1.714285714285714 -(byte) mulu8_sel::return#2 reg byte a 4.0 +(byte) mulu8_sel::return#0 reg byte a 20002.0 +(byte) mulu8_sel::return#1 reg byte a 20002.0 +(byte) mulu8_sel::return#10 reg byte a 20002.0 +(byte) mulu8_sel::return#11 reg byte a 20002.0 +(byte) mulu8_sel::return#12 reg byte a 21429.428571428572 +(byte) mulu8_sel::return#2 reg byte a 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 select zp[1]:27 0.3333333333333333 +(byte) mulu8_sel::select#5 select zp[1]:27 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 reg byte x 2.0 -(byte) mulu8_sel::v1#1 reg byte x 2.0 -(byte) mulu8_sel::v1#2 reg byte x 4.0 -(byte) mulu8_sel::v1#3 reg byte x 2.0 -(byte) mulu8_sel::v1#4 reg byte x 2.0 -(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v1#0 reg byte x 10001.0 +(byte) mulu8_sel::v1#1 reg byte x 10001.0 +(byte) mulu8_sel::v1#2 reg byte x 20002.0 +(byte) mulu8_sel::v1#3 reg byte x 10001.0 +(byte) mulu8_sel::v1#4 reg byte x 10001.0 +(byte) mulu8_sel::v1#5 reg byte x 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 reg byte y 4.0 -(byte) mulu8_sel::v2#1 reg byte y 4.0 -(byte) mulu8_sel::v2#3 reg byte y 4.0 -(byte) mulu8_sel::v2#4 reg byte y 4.0 -(byte) mulu8_sel::v2#5 reg byte y 5.0 +(byte) mulu8_sel::v2#0 reg byte y 20002.0 +(byte) mulu8_sel::v2#1 reg byte y 20002.0 +(byte) mulu8_sel::v2#3 reg byte y 20002.0 +(byte) mulu8_sel::v2#4 reg byte y 20002.0 +(byte) mulu8_sel::v2#5 reg byte y 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:26 1.5 +(byte) print_byte::b#0 reg byte x 5250.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 101.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.42105263157894735 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:2 6.0 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 1.25 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:3 100001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:3 6368.631578947368 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:3 43015.0 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:3 111003.0 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:3 175.25 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -8291,21 +8279,21 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:26 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:26 2.8333333333333335 -(signed byte) print_sbyte::b#4 b zp[1]:26 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#1 reg byte x 517.3333333333334 +(signed byte) print_sbyte::b#4 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:16 202.0 -(byte*) print_str::str#2 str zp[2]:16 101.0 +(byte*) print_str::str#0 str zp[2]:17 200002.0 +(byte*) print_str::str#2 str zp[2]:17 100001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:16 0.8 +(word) rem16u#1 rem16u zp[2]:17 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:34 4.0 +(dword~) sin16s::$4 zp[4]:35 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -8320,57 +8308,57 @@ FINAL SYMBOL TABLE (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:24 22.0 -(signed word) sin16s::return#1 return zp[2]:24 5.0 -(signed word) sin16s::return#5 return zp[2]:24 4.0 +(signed word) sin16s::return#0 return zp[2]:25 2002.0 +(signed word) sin16s::return#1 return zp[2]:25 7001.0 +(signed word) sin16s::return#5 return zp[2]:25 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:24 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:25 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:24 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:24 1.0 +(word) sin16s::usinx#0 usinx zp[2]:25 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:25 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:8 8.5 -(dword) sin16s::x#1 x zp[4]:8 4.0 -(dword) sin16s::x#2 x zp[4]:8 4.0 -(dword) sin16s::x#4 x zp[4]:8 5.0 -(dword) sin16s::x#6 x zp[4]:8 6.0 +(dword) sin16s::x#0 x zp[4]:9 15502.0 +(dword) sin16s::x#1 x zp[4]:9 20002.0 +(dword) sin16s::x#2 x zp[4]:9 20002.0 +(dword) sin16s::x#4 x zp[4]:9 25002.5 +(dword) sin16s::x#6 x zp[4]:9 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:40 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:41 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:16 4.0 +(word) sin16s::x2#0 x2 zp[2]:17 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:16 1.0 +(word) sin16s::x3#0 x3 zp[2]:17 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:38 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:39 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:16 4.0 +(word) sin16s::x4#0 x4 zp[2]:17 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:38 4.0 +(word) sin16s::x5#0 x5 zp[2]:39 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:38 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:39 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:24 22.0 +(signed word~) sin16s_gen::$2 zp[2]:25 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:20 22.0 -(word) sin16s_gen::i#2 i zp[2]:20 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:21 2002.0 +(word) sin16s_gen::i#2 i zp[2]:21 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:22 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:22 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:30 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:4 11.0 -(dword) sin16s_gen::x#2 x zp[4]:4 4.125 +(dword) sin16s_gen::x#1 x zp[4]:5 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:5 375.375 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 zp[2]:28 4.0 +(word~) sin8s::$4 zp[2]:29 20002.0 (label) sin8s::@1 (label) sin8s::@10 (label) sin8s::@11 @@ -8388,101 +8376,103 @@ FINAL SYMBOL TABLE (label) sin8s::@return (const byte) sin8s::DIV_6 = (byte) $2b (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 isUpper zp[1]:26 0.05555555555555555 +(byte) sin8s::isUpper#10 isUpper zp[1]:28 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 reg byte a 22.0 -(signed byte) sin8s::return#1 reg byte a 5.0 -(signed byte) sin8s::return#5 reg byte a 4.0 +(signed byte) sin8s::return#0 reg byte a 2002.0 +(signed byte) sin8s::return#1 reg byte a 7001.0 +(signed byte) sin8s::return#5 reg byte a 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 reg byte a 4.0 +(signed byte) sin8s::sinx#1 reg byte a 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 usinx zp[1]:44 0.3333333333333333 -(byte) sin8s::usinx#1 reg byte x 4.0 -(byte) sin8s::usinx#2 reg byte x 4.0 -(byte) sin8s::usinx#4 reg byte x 2.0 +(byte) sin8s::usinx#0 usinx zp[1]:45 1666.8333333333333 +(byte) sin8s::usinx#1 reg byte x 20002.0 +(byte) sin8s::usinx#2 reg byte x 20002.0 +(byte) sin8s::usinx#4 reg byte x 10001.0 (word) sin8s::x -(word) sin8s::x#0 x zp[2]:28 8.5 -(word) sin8s::x#1 x zp[2]:28 4.0 -(word) sin8s::x#2 x zp[2]:28 4.0 -(word) sin8s::x#4 x zp[2]:28 5.0 -(word) sin8s::x#6 x zp[2]:28 6.0 +(word) sin8s::x#0 x zp[2]:29 15502.0 +(word) sin8s::x#1 x zp[2]:29 20002.0 +(word) sin8s::x#2 x zp[2]:29 20002.0 +(word) sin8s::x#4 x zp[2]:29 25002.5 +(word) sin8s::x#6 x zp[2]:29 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 x1 zp[1]:42 0.6363636363636365 +(byte) sin8s::x1#0 x1 zp[1]:43 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 reg byte a 4.0 +(byte) sin8s::x2#0 reg byte a 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 x3 zp[1]:43 1.0 +(byte) sin8s::x3#0 x3 zp[1]:44 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x3_6#0 reg byte a 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x4#0 reg byte a 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5#0 reg byte a 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 reg byte a 4.0 +(byte) sin8s::x5_128#0 reg byte a 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 reg byte a 22.0 +(signed byte~) sin8s_gen::$2 reg byte a 2002.0 (label) sin8s_gen::@1 (label) sin8s_gen::@2 (label) sin8s_gen::@3 (label) sin8s_gen::@4 (label) sin8s_gen::@return (word) sin8s_gen::i -(word) sin8s_gen::i#1 i zp[2]:20 22.0 -(word) sin8s_gen::i#2 i zp[2]:20 3.666666666666667 +(word) sin8s_gen::i#1 i zp[2]:21 2002.0 +(word) sin8s_gen::i#2 i zp[2]:21 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:24 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:24 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:25 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:25 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 step zp[2]:18 1.1818181818181819 +(word) sin8s_gen::step#0 step zp[2]:19 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 x zp[2]:22 11.0 -(word) sin8s_gen::x#2 x zp[2]:22 4.125 +(word) sin8s_gen::x#1 x zp[2]:23 1001.0 +(word) sin8s_gen::x#2 x zp[2]:23 375.375 -reg byte x [ main::i#2 main::i#1 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -zp[4]:4 [ sin16s_gen::x#2 sin16s_gen::x#1 ] +zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +zp[4]:5 [ sin16s_gen::x#2 sin16s_gen::x#1 ] reg byte y [ sin16s::isUpper#2 ] -zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] +zp[4]:9 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] reg byte x [ mulu16_sel::select#5 ] -zp[4]:12 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -zp[2]:16 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -zp[2]:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] +zp[4]:13 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +zp[2]:17 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +zp[2]:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] -zp[2]:20 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] -zp[2]:22 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] -zp[2]:24 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] -zp[1]:26 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] +zp[2]:21 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] +zp[2]:23 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] +zp[2]:25 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 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 ] +zp[1]:27 [ mulu8_sel::select#5 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp[1]:27 [ main::sb#0 mulu8_sel::select#5 ] -zp[2]:28 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] +zp[1]:28 [ main::sb#0 sin8s::isUpper#10 ] +zp[2]:29 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] reg byte a [ main::$6 ] reg byte a [ main::sd#0 ] +reg byte x [ print_byte::b#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] -zp[4]:30 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] -zp[4]:34 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] -zp[2]:38 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +reg byte x [ print_byte::$2 ] +zp[4]:31 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] +zp[4]:35 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +zp[2]:39 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul16u::$1 ] -zp[2]:40 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +zp[2]:41 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s_gen::$2 ] -zp[1]:42 [ sin8s::x1#0 ] +zp[1]:43 [ sin8s::x1#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ sin8s::x2#0 ] reg byte a [ mulu8_sel::return#1 ] -zp[1]:43 [ sin8s::x3#0 ] +zp[1]:44 [ sin8s::x3#0 ] reg byte a [ mulu8_sel::return#2 ] reg byte a [ sin8s::x3_6#0 ] -zp[1]:44 [ sin8s::usinx#0 ] +zp[1]:45 [ sin8s::usinx#0 ] reg byte a [ mulu8_sel::return#10 ] reg byte a [ sin8s::x4#0 ] reg byte a [ mulu8_sel::return#11 ] @@ -8494,7 +8484,7 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER -Score: 29761 +Score: 29864 // File Comments // Upstart @@ -8517,8 +8507,8 @@ Score: 29761 .const SIZEOF_SIGNED_WORD = 2 .label print_line_cursor = $400 // Remainder after unsigned 16-bit division - .label rem16u = $10 - .label print_char_cursor = 2 + .label rem16u = $11 + .label print_char_cursor = 3 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -8529,11 +8519,12 @@ Score: 29761 // main main: { .label wavelength = $c0 - .label __3 = $1c - .label __4 = $1c - .label __11 = $1c - .label sb = $1b - .label sw = $1c + .label __3 = $1d + .label __4 = $1d + .label __11 = $1d + .label sb = $1c + .label sw = $1d + .label i = 2 // sin8s_gen(sintabb, wavelength) // [5] call sin8s_gen // [164] phi from main to sin8s_gen [phi:main->sin8s_gen] @@ -8556,20 +8547,22 @@ main: { sta.z print_char_cursor lda #>print_line_cursor sta.z print_char_cursor+1 - // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@3->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@3->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i // [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] // [10] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#19 [phi:main::@5->main::@1#0] -- register_copy // [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#1] -- register_copy // main::@1 __b1: // sb = sintabb[i] - // [11] (signed byte) main::sb#0 ← *((const signed byte*) main::sintabb + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx - lda sintabb,x + // [11] (signed byte) main::sb#0 ← *((const signed byte*) main::sintabb + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + ldy.z i + lda sintabb,y sta.z sb // (word)i - // [12] (word~) main::$3 ← (word)(byte) main::i#2 -- vwuz1=_word_vbuxx - txa + // [12] (word~) main::$3 ← (word)(byte) main::i#2 -- vwuz1=_word_vbuz2 + tya sta.z __3 lda #0 sta.z __3+1 @@ -8604,8 +8597,8 @@ main: { sec adc.z sb // print_sbyte(sd) - // [18] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsz1=vbsaa - sta.z print_sbyte.b + // [18] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsxx=vbsaa + tax // [19] call print_sbyte jsr print_sbyte // [20] phi from main::@1 to main::@4 [phi:main::@1->main::@4] @@ -8616,10 +8609,11 @@ main: { jsr print_str // main::@5 // for(byte i: 0..191) - // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [23] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c0 + // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [23] if((byte) main::i#1!=(byte) $c0) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$c0 + cmp.z i bne __b1 // main::@return // } @@ -8632,9 +8626,9 @@ main: { } // print_str // Print a zero-terminated string -// print_str(byte* zp($10) str) +// print_str(byte* zp($11) str) print_str: { - .label str = $10 + .label str = $11 // [26] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] // [26] phi (byte*) print_char_cursor#19 = (byte*) print_char_cursor#10 [phi:print_str->print_str::@1#0] -- register_copy // [26] phi (byte*) print_str::str#2 = (const byte*) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 @@ -8679,12 +8673,11 @@ print_str: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($1a) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $1a // if(b<0) - // [32] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [32] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1 // [33] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] // print_sbyte::@3 @@ -8719,12 +8712,12 @@ print_sbyte: { jsr print_char // print_sbyte::@4 // b = -b - // [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [41] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2 } // print_char @@ -8748,12 +8741,11 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($1a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $1a // b>>4 - // [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [46] (byte~) print_byte::$0 ← (byte) print_byte::b#0 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -8770,13 +8762,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [49] (byte~) print_byte::$2 ← (byte) print_byte::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [50] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [50] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [51] call print_char // [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [42] phi (byte*) print_char_cursor#28 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy @@ -8806,7 +8797,7 @@ memset: { .const num = $3e8 .label str = print_line_cursor .label end = str+num - .label dst = $10 + .label dst = $11 // [57] phi from memset to memset::@1 [phi:memset->memset::@1] // [57] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #div32u16u] @@ -8966,20 +8957,20 @@ sin16s_gen: { // 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 zp(8) x) +// sin16s(dword zp(9) x) sin16s: { - .label __4 = $22 - .label x = 8 - .label return = $18 - .label x1 = $28 - .label x2 = $10 - .label x3 = $10 - .label x3_6 = $26 - .label usinx = $18 - .label x4 = $10 - .label x5 = $26 - .label x5_128 = $26 - .label sinx = $18 + .label __4 = $23 + .label x = 9 + .label return = $19 + .label x1 = $29 + .label x2 = $11 + .label x3 = $11 + .label x3_6 = $27 + .label usinx = $19 + .label x4 = $11 + .label x5 = $27 + .label x5_128 = $27 + .label sinx = $19 // if(x >= PI_u4f28 ) // [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda.z x+3 @@ -9258,14 +9249,14 @@ sin16s: { // 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 zp($10) v1, word zp($1c) v2, byte register(X) select) +// mulu16_sel(word zp($11) v1, word zp($1d) v2, byte register(X) select) mulu16_sel: { - .label __0 = $22 - .label __1 = $22 - .label v1 = $10 - .label v2 = $1c - .label return = $26 - .label return_1 = $10 + .label __0 = $23 + .label __1 = $23 + .label v1 = $11 + .label v2 = $1d + .label return = $27 + .label return_1 = $11 // mul16u(v1, v2) // [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda.z v1 @@ -9303,13 +9294,13 @@ mulu16_sel: { } // mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word -// mul16u(word zp($12) a, word zp($1c) b) +// mul16u(word zp($13) a, word zp($1d) b) mul16u: { - .label mb = $c - .label a = $12 - .label res = $22 - .label b = $1c - .label return = $22 + .label mb = $d + .label a = $13 + .label res = $23 + .label b = $1d + .label return = $23 // mb = b // [126] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda.z b @@ -9391,9 +9382,9 @@ mul16u: { // 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 = $28 - .label quotient_lo = $12 - .label return = $1e + .label quotient_hi = $29 + .label quotient_lo = $13 + .label return = $1f // divr16u(>dividend, divisor, 0) // [137] call divr16u // [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] @@ -9452,12 +9443,12 @@ div32u16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($1c) dividend, word zp($10) rem) +// divr16u(word zp($1d) dividend, word zp($11) rem) divr16u: { - .label rem = $10 - .label dividend = $1c - .label quotient = $12 - .label return = $12 + .label rem = $11 + .label dividend = $1d + .label quotient = $13 + .label return = $13 // [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] // [147] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -9555,14 +9546,14 @@ divr16u: { // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) -// sin8s_gen(signed byte* zp($18) sintab) +// sin8s_gen(signed byte* zp($19) sintab) sin8s_gen: { - .label step = $12 - .label sintab = $18 + .label step = $13 + .label sintab = $19 // u[4.12] // Iterate over the table - .label x = $16 - .label i = $14 + .label x = $17 + .label i = $15 // div16u(PI2_u4f12, wavelength) // [165] call div16u // [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] @@ -9650,17 +9641,17 @@ sin8s_gen: { // 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 -// sin8s(word zp($1c) x) +// sin8s(word zp($1d) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $1c - .label x = $1c - .label x1 = $2a - .label x3 = $2b - .label usinx = $2c + .label __4 = $1d + .label x = $1d + .label x1 = $2b + .label x3 = $2c + .label usinx = $2d // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $1a + .label isUpper = $1c // if(x >= PI_u4f12 ) // [179] if((word) sin8s::x#0<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 @@ -9880,8 +9871,8 @@ sin8s: { // 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 zp($1b) select) mulu8_sel: { - .label __0 = $28 - .label __1 = $28 + .label __0 = $29 + .label __1 = $29 .label select = $1b // mul8u(v1, v2) // [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 @@ -9914,9 +9905,9 @@ mulu8_sel: { // 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 = $26 - .label res = $28 - .label return = $28 + .label mb = $27 + .label res = $29 + .label return = $29 // mb = b // [231] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta.z mb @@ -9983,7 +9974,7 @@ mul8u: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $12 + .label return = $13 // divr16u(dividend, divisor, 0) // [242] call divr16u // [146] phi from div16u to divr16u [phi:div16u->divr16u] diff --git a/src/test/ref/sinusgen8b.sym b/src/test/ref/sinusgen8b.sym index 942540ee5..a96e026f4 100644 --- a/src/test/ref/sinusgen8b.sym +++ b/src/test/ref/sinusgen8b.sym @@ -18,8 +18,8 @@ (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 return zp[2]:18 1.3333333333333333 -(word) div16u::return#2 return zp[2]:18 4.0 +(word) div16u::return#0 return zp[2]:19 367.33333333333337 +(word) div16u::return#2 return zp[2]:19 202.0 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@1 (label) div32u16u::@2 @@ -28,15 +28,15 @@ (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:40 0.8 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:41 400.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:18 4.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:19 2002.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:30 1.3333333333333333 -(dword) div32u16u::return#2 return zp[4]:30 4.0 +(dword) div32u16u::return#0 return zp[4]:31 367.33333333333337 +(dword) div32u16u::return#2 return zp[4]:31 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -45,36 +45,36 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:28 2.75 -(word) divr16u::dividend#4 dividend zp[2]:28 5.0 -(word) divr16u::dividend#6 dividend zp[2]:28 2.0 +(word) divr16u::dividend#0 dividend zp[2]:29 25000.25 +(word) divr16u::dividend#4 dividend zp[2]:29 44286.28571428572 +(word) divr16u::dividend#6 dividend zp[2]:29 10001.0 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:18 16.5 -(word) divr16u::quotient#2 quotient zp[2]:18 11.0 -(word) divr16u::quotient#3 quotient zp[2]:18 2.75 +(word) divr16u::quotient#1 quotient zp[2]:19 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:19 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:19 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:16 8.25 -(word) divr16u::rem#1 rem zp[2]:16 22.0 -(word) divr16u::rem#10 rem zp[2]:16 11.666666666666666 -(word) divr16u::rem#11 rem zp[2]:16 4.0 -(word) divr16u::rem#2 rem zp[2]:16 22.0 -(word) divr16u::rem#5 rem zp[2]:16 4.0 -(word) divr16u::rem#6 rem zp[2]:16 24.0 -(word) divr16u::rem#7 rem zp[2]:16 11.0 +(word) divr16u::rem#0 rem zp[2]:17 75000.75 +(word) divr16u::rem#1 rem zp[2]:17 200002.0 +(word) divr16u::rem#10 rem zp[2]:17 103334.66666666667 +(word) divr16u::rem#11 rem zp[2]:17 11002.0 +(word) divr16u::rem#2 rem zp[2]:17 200002.0 +(word) divr16u::rem#5 rem zp[2]:17 2002.0 +(word) divr16u::rem#6 rem zp[2]:17 210003.0 +(word) divr16u::rem#7 rem zp[2]:17 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:18 4.875 -(word) divr16u::return#2 return zp[2]:18 4.0 -(word) divr16u::return#3 return zp[2]:18 4.0 -(word) divr16u::return#4 return zp[2]:18 4.0 +(word) divr16u::return#0 return zp[2]:19 37875.75 +(word) divr16u::return#2 return zp[2]:19 2002.0 +(word) divr16u::return#3 return zp[2]:19 2002.0 +(word) divr16u::return#4 return zp[2]:19 2002.0 (void()) main() -(word~) main::$11 zp[2]:28 22.0 -(word~) main::$3 zp[2]:28 22.0 -(signed word*~) main::$4 zp[2]:28 22.0 -(byte~) main::$6 reg byte a 11.0 +(word~) main::$11 zp[2]:29 202.0 +(word~) main::$3 zp[2]:29 202.0 +(signed word*~) main::$4 zp[2]:29 202.0 +(byte~) main::$6 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -82,17 +82,17 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.75 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 25.25 (signed byte) main::sb -(signed byte) main::sb#0 sb zp[1]:27 3.6666666666666665 +(signed byte) main::sb#0 sb zp[1]:28 33.666666666666664 (signed byte) main::sd -(signed byte) main::sd#0 reg byte a 22.0 +(signed byte) main::sd#0 reg byte a 202.0 (const signed byte*) main::sintabb[(number) $c0] = { fill( $c0, 0) } (const signed word*) main::sintabw[(number) $c0] = { fill( $c0, 0) } (const byte*) main::str[(byte) 3] = (byte*) " " (signed word) main::sw -(signed word) main::sw#0 sw zp[2]:28 22.0 +(signed word) main::sw#0 sw zp[2]:29 202.0 (const word) main::wavelength = (word) $c0 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 @@ -101,8 +101,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:17 20002.0 +(byte*) memset::dst#2 dst zp[2]:17 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -111,124 +111,124 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0 (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 202.0 +(byte~) mul16u::$1 reg byte a 2.00000002E8 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:18 101.0 -(word) mul16u::a#1 a zp[2]:18 1.3333333333333333 -(word) mul16u::a#2 a zp[2]:18 67.66666666666666 +(word) mul16u::a#0 a zp[2]:19 1.00000001E8 +(word) mul16u::a#1 a zp[2]:19 366667.3333333334 +(word) mul16u::a#2 a zp[2]:19 6.683333416666667E7 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:28 2.0 +(word) mul16u::b#0 b zp[2]:29 100001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:12 4.0 -(dword) mul16u::mb#1 mb zp[4]:12 202.0 -(dword) mul16u::mb#2 mb zp[4]:12 43.57142857142858 +(dword) mul16u::mb#0 mb zp[4]:13 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:13 2.00000002E8 +(dword) mul16u::mb#2 mb zp[4]:13 4.300000057142857E7 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:34 202.0 -(dword) mul16u::res#2 res zp[4]:34 50.83333333333333 -(dword) mul16u::res#6 res zp[4]:34 101.0 +(dword) mul16u::res#1 res zp[4]:35 2.00000002E8 +(dword) mul16u::res#2 res zp[4]:35 5.0016667333333336E7 +(dword) mul16u::res#6 res zp[4]:35 1.00000001E8 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:34 4.0 +(dword) mul16u::return#2 return zp[4]:35 200002.0 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 1.3333333333333333 -(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 366667.3333333334 +(byte) mul8u::a#2 reg byte x 6.683333416666667E7 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 2.0 +(byte) mul8u::b#0 reg byte a 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:38 4.0 -(word) mul8u::mb#1 mb zp[2]:38 202.0 -(word) mul8u::mb#2 mb zp[2]:38 43.57142857142858 +(word) mul8u::mb#0 mb zp[2]:39 2000002.0 +(word) mul8u::mb#1 mb zp[2]:39 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:39 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:40 202.0 -(word) mul8u::res#2 res zp[2]:40 50.83333333333333 -(word) mul8u::res#6 res zp[2]:40 101.0 +(word) mul8u::res#1 res zp[2]:41 2.00000002E8 +(word) mul8u::res#2 res zp[2]:41 5.0016667333333336E7 +(word) mul8u::res#6 res zp[2]:41 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:40 4.0 +(word) mul8u::return#2 return zp[2]:41 200002.0 (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) -(dword~) mulu16_sel::$0 zp[4]:34 4.0 -(dword~) mulu16_sel::$1 zp[4]:34 4.0 +(dword~) mulu16_sel::$0 zp[4]:35 200002.0 +(dword~) mulu16_sel::$1 zp[4]:35 200002.0 (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:38 4.0 -(word) mulu16_sel::return#1 return_1 zp[2]:16 4.0 -(word) mulu16_sel::return#10 return_1 zp[2]:16 4.0 -(word) mulu16_sel::return#11 return zp[2]:38 4.0 -(word) mulu16_sel::return#12 return zp[2]:38 1.714285714285714 -(word) mulu16_sel::return#2 return zp[2]:38 4.0 +(word) mulu16_sel::return#0 return zp[2]:39 20002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:17 20002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:17 20002.0 +(word) mulu16_sel::return#11 return zp[2]:39 20002.0 +(word) mulu16_sel::return#12 return zp[2]:39 21429.428571428572 +(word) mulu16_sel::return#2 return zp[2]:39 20002.0 (byte) mulu16_sel::select -(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(byte) mulu16_sel::select#5 reg byte x 16666.833333333332 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#1 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#2 v1 zp[2]:16 4.0 -(word) mulu16_sel::v1#3 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#4 v1 zp[2]:16 2.0 -(word) mulu16_sel::v1#5 v1 zp[2]:16 12.0 +(word) mulu16_sel::v1#0 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:17 20002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:17 10001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:17 150006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#1 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#3 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#4 v2 zp[2]:28 4.0 -(word) mulu16_sel::v2#5 v2 zp[2]:28 5.0 +(word) mulu16_sel::v2#0 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:29 20002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:29 70002.5 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 zp[2]:40 4.0 -(word~) mulu8_sel::$1 zp[2]:40 4.0 +(word~) mulu8_sel::$0 zp[2]:41 200002.0 +(word~) mulu8_sel::$1 zp[2]:41 200002.0 (label) mulu8_sel::@1 (label) mulu8_sel::@return (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 reg byte a 4.0 -(byte) mulu8_sel::return#1 reg byte a 4.0 -(byte) mulu8_sel::return#10 reg byte a 4.0 -(byte) mulu8_sel::return#11 reg byte a 4.0 -(byte) mulu8_sel::return#12 reg byte a 1.714285714285714 -(byte) mulu8_sel::return#2 reg byte a 4.0 +(byte) mulu8_sel::return#0 reg byte a 20002.0 +(byte) mulu8_sel::return#1 reg byte a 20002.0 +(byte) mulu8_sel::return#10 reg byte a 20002.0 +(byte) mulu8_sel::return#11 reg byte a 20002.0 +(byte) mulu8_sel::return#12 reg byte a 21429.428571428572 +(byte) mulu8_sel::return#2 reg byte a 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 select zp[1]:27 0.3333333333333333 +(byte) mulu8_sel::select#5 select zp[1]:27 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 reg byte x 2.0 -(byte) mulu8_sel::v1#1 reg byte x 2.0 -(byte) mulu8_sel::v1#2 reg byte x 4.0 -(byte) mulu8_sel::v1#3 reg byte x 2.0 -(byte) mulu8_sel::v1#4 reg byte x 2.0 -(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v1#0 reg byte x 10001.0 +(byte) mulu8_sel::v1#1 reg byte x 10001.0 +(byte) mulu8_sel::v1#2 reg byte x 20002.0 +(byte) mulu8_sel::v1#3 reg byte x 10001.0 +(byte) mulu8_sel::v1#4 reg byte x 10001.0 +(byte) mulu8_sel::v1#5 reg byte x 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 reg byte y 4.0 -(byte) mulu8_sel::v2#1 reg byte y 4.0 -(byte) mulu8_sel::v2#3 reg byte y 4.0 -(byte) mulu8_sel::v2#4 reg byte y 4.0 -(byte) mulu8_sel::v2#5 reg byte y 5.0 +(byte) mulu8_sel::v2#0 reg byte y 20002.0 +(byte) mulu8_sel::v2#1 reg byte y 20002.0 +(byte) mulu8_sel::v2#3 reg byte y 20002.0 +(byte) mulu8_sel::v2#4 reg byte y 20002.0 +(byte) mulu8_sel::v2#5 reg byte y 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte x 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:26 1.5 +(byte) print_byte::b#0 reg byte x 5250.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 20002.0 +(byte) print_char::ch#3 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 120003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 101.0 -(byte*) print_char_cursor#10 print_char_cursor zp[2]:2 0.42105263157894735 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 45.142857142857146 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:2 6.0 -(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 1.25 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:3 100001.0 +(byte*) print_char_cursor#10 print_char_cursor zp[2]:3 6368.631578947368 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:3 43015.0 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:3 111003.0 +(byte*) print_char_cursor#42 print_char_cursor zp[2]:3 175.25 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z @@ -241,21 +241,21 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:26 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:26 2.8333333333333335 -(signed byte) print_sbyte::b#4 b zp[1]:26 4.0 +(signed byte) print_sbyte::b#0 reg byte x 2002.0 +(signed byte) print_sbyte::b#1 reg byte x 517.3333333333334 +(signed byte) print_sbyte::b#4 reg byte x 2002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:16 202.0 -(byte*) print_str::str#2 str zp[2]:16 101.0 +(byte*) print_str::str#0 str zp[2]:17 200002.0 +(byte*) print_str::str#2 str zp[2]:17 100001.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:16 0.8 +(word) rem16u#1 rem16u zp[2]:17 2200.4 (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:34 4.0 +(dword~) sin16s::$4 zp[4]:35 20002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -270,57 +270,57 @@ (label) sin16s::@9 (label) sin16s::@return (byte) sin16s::isUpper -(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061 +(byte) sin16s::isUpper#2 reg byte y 303.06060606060606 (signed word) sin16s::return -(signed word) sin16s::return#0 return zp[2]:24 22.0 -(signed word) sin16s::return#1 return zp[2]:24 5.0 -(signed word) sin16s::return#5 return zp[2]:24 4.0 +(signed word) sin16s::return#0 return zp[2]:25 2002.0 +(signed word) sin16s::return#1 return zp[2]:25 7001.0 +(signed word) sin16s::return#5 return zp[2]:25 20002.0 (signed word) sin16s::sinx -(signed word) sin16s::sinx#1 sinx zp[2]:24 4.0 +(signed word) sin16s::sinx#1 sinx zp[2]:25 20002.0 (word) sin16s::usinx -(word) sin16s::usinx#0 usinx zp[2]:24 0.3333333333333333 -(word) sin16s::usinx#1 usinx zp[2]:24 1.0 +(word) sin16s::usinx#0 usinx zp[2]:25 1666.8333333333333 +(word) sin16s::usinx#1 usinx zp[2]:25 5000.5 (dword) sin16s::x -(dword) sin16s::x#0 x zp[4]:8 8.5 -(dword) sin16s::x#1 x zp[4]:8 4.0 -(dword) sin16s::x#2 x zp[4]:8 4.0 -(dword) sin16s::x#4 x zp[4]:8 5.0 -(dword) sin16s::x#6 x zp[4]:8 6.0 +(dword) sin16s::x#0 x zp[4]:9 15502.0 +(dword) sin16s::x#1 x zp[4]:9 20002.0 +(dword) sin16s::x#2 x zp[4]:9 20002.0 +(dword) sin16s::x#4 x zp[4]:9 25002.5 +(dword) sin16s::x#6 x zp[4]:9 30003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:40 0.6363636363636365 +(word) sin16s::x1#0 x1 zp[2]:41 3182.1363636363635 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:16 4.0 +(word) sin16s::x2#0 x2 zp[2]:17 20002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:16 1.0 +(word) sin16s::x3#0 x3 zp[2]:17 5000.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:38 4.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:39 20002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:16 4.0 +(word) sin16s::x4#0 x4 zp[2]:17 20002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:38 4.0 +(word) sin16s::x5#0 x5 zp[2]:39 20002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:38 4.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:39 20002.0 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(signed word~) sin16s_gen::$2 zp[2]:24 22.0 +(signed word~) sin16s_gen::$2 zp[2]:25 2002.0 (label) sin16s_gen::@1 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@return (word) sin16s_gen::i -(word) sin16s_gen::i#1 i zp[2]:20 22.0 -(word) sin16s_gen::i#2 i zp[2]:20 3.666666666666667 +(word) sin16s_gen::i#1 i zp[2]:21 2002.0 +(word) sin16s_gen::i#2 i zp[2]:21 333.6666666666667 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#0 sintab zp[2]:22 7.333333333333333 -(signed word*) sin16s_gen::sintab#2 sintab zp[2]:22 4.714285714285714 +(signed word*) sin16s_gen::sintab#0 sintab zp[2]:23 667.3333333333334 +(signed word*) sin16s_gen::sintab#2 sintab zp[2]:23 429.0 (dword) sin16s_gen::step -(dword) sin16s_gen::step#0 step zp[4]:30 1.1818181818181819 +(dword) sin16s_gen::step#0 step zp[4]:31 100.18181818181819 (word) sin16s_gen::wavelength (dword) sin16s_gen::x -(dword) sin16s_gen::x#1 x zp[4]:4 11.0 -(dword) sin16s_gen::x#2 x zp[4]:4 4.125 +(dword) sin16s_gen::x#1 x zp[4]:5 1001.0 +(dword) sin16s_gen::x#2 x zp[4]:5 375.375 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 zp[2]:28 4.0 +(word~) sin8s::$4 zp[2]:29 20002.0 (label) sin8s::@1 (label) sin8s::@10 (label) sin8s::@11 @@ -338,101 +338,103 @@ (label) sin8s::@return (const byte) sin8s::DIV_6 = (byte) $2b (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 isUpper zp[1]:26 0.05555555555555555 +(byte) sin8s::isUpper#10 isUpper zp[1]:28 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 reg byte a 22.0 -(signed byte) sin8s::return#1 reg byte a 5.0 -(signed byte) sin8s::return#5 reg byte a 4.0 +(signed byte) sin8s::return#0 reg byte a 2002.0 +(signed byte) sin8s::return#1 reg byte a 7001.0 +(signed byte) sin8s::return#5 reg byte a 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 reg byte a 4.0 +(signed byte) sin8s::sinx#1 reg byte a 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 usinx zp[1]:44 0.3333333333333333 -(byte) sin8s::usinx#1 reg byte x 4.0 -(byte) sin8s::usinx#2 reg byte x 4.0 -(byte) sin8s::usinx#4 reg byte x 2.0 +(byte) sin8s::usinx#0 usinx zp[1]:45 1666.8333333333333 +(byte) sin8s::usinx#1 reg byte x 20002.0 +(byte) sin8s::usinx#2 reg byte x 20002.0 +(byte) sin8s::usinx#4 reg byte x 10001.0 (word) sin8s::x -(word) sin8s::x#0 x zp[2]:28 8.5 -(word) sin8s::x#1 x zp[2]:28 4.0 -(word) sin8s::x#2 x zp[2]:28 4.0 -(word) sin8s::x#4 x zp[2]:28 5.0 -(word) sin8s::x#6 x zp[2]:28 6.0 +(word) sin8s::x#0 x zp[2]:29 15502.0 +(word) sin8s::x#1 x zp[2]:29 20002.0 +(word) sin8s::x#2 x zp[2]:29 20002.0 +(word) sin8s::x#4 x zp[2]:29 25002.5 +(word) sin8s::x#6 x zp[2]:29 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 x1 zp[1]:42 0.6363636363636365 +(byte) sin8s::x1#0 x1 zp[1]:43 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 reg byte a 4.0 +(byte) sin8s::x2#0 reg byte a 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 x3 zp[1]:43 1.0 +(byte) sin8s::x3#0 x3 zp[1]:44 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x3_6#0 reg byte a 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x4#0 reg byte a 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5#0 reg byte a 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 reg byte a 4.0 +(byte) sin8s::x5_128#0 reg byte a 20002.0 (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) -(signed byte~) sin8s_gen::$2 reg byte a 22.0 +(signed byte~) sin8s_gen::$2 reg byte a 2002.0 (label) sin8s_gen::@1 (label) sin8s_gen::@2 (label) sin8s_gen::@3 (label) sin8s_gen::@4 (label) sin8s_gen::@return (word) sin8s_gen::i -(word) sin8s_gen::i#1 i zp[2]:20 22.0 -(word) sin8s_gen::i#2 i zp[2]:20 3.666666666666667 +(word) sin8s_gen::i#1 i zp[2]:21 2002.0 +(word) sin8s_gen::i#2 i zp[2]:21 333.6666666666667 (signed byte*) sin8s_gen::sintab -(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:24 7.333333333333333 -(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:24 4.714285714285714 +(signed byte*) sin8s_gen::sintab#0 sintab zp[2]:25 667.3333333333334 +(signed byte*) sin8s_gen::sintab#2 sintab zp[2]:25 429.0 (word) sin8s_gen::step -(word) sin8s_gen::step#0 step zp[2]:18 1.1818181818181819 +(word) sin8s_gen::step#0 step zp[2]:19 100.18181818181819 (word) sin8s_gen::wavelength (word) sin8s_gen::x -(word) sin8s_gen::x#1 x zp[2]:22 11.0 -(word) sin8s_gen::x#2 x zp[2]:22 4.125 +(word) sin8s_gen::x#1 x zp[2]:23 1001.0 +(word) sin8s_gen::x#2 x zp[2]:23 375.375 -reg byte x [ main::i#2 main::i#1 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:2 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] -zp[4]:4 [ sin16s_gen::x#2 sin16s_gen::x#1 ] +zp[2]:3 [ print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] +zp[4]:5 [ sin16s_gen::x#2 sin16s_gen::x#1 ] reg byte y [ sin16s::isUpper#2 ] -zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] +zp[4]:9 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] reg byte x [ mulu16_sel::select#5 ] -zp[4]:12 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -zp[2]:16 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] -zp[2]:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] +zp[4]:13 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +zp[2]:17 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 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 memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] +zp[2]:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] -zp[2]:20 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] -zp[2]:22 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] -zp[2]:24 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] -zp[1]:26 [ sin8s::isUpper#10 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] +zp[2]:21 [ sin8s_gen::i#2 sin8s_gen::i#1 sin16s_gen::i#2 sin16s_gen::i#1 ] +zp[2]:23 [ sin8s_gen::x#2 sin8s_gen::x#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] +zp[2]:25 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 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 ] +zp[1]:27 [ mulu8_sel::select#5 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] -zp[1]:27 [ main::sb#0 mulu8_sel::select#5 ] -zp[2]:28 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] +zp[1]:28 [ main::sb#0 sin8s::isUpper#10 ] +zp[2]:29 [ main::$3 main::$11 main::$4 main::sw#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] reg byte a [ main::$6 ] reg byte a [ main::sd#0 ] +reg byte x [ print_byte::b#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] -zp[4]:30 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] -zp[4]:34 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] -zp[2]:38 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +reg byte x [ print_byte::$2 ] +zp[4]:31 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] +zp[4]:35 [ sin16s::$4 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +zp[2]:39 [ 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 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul16u::$1 ] -zp[2]:40 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +zp[2]:41 [ div32u16u::quotient_hi#0 sin16s::x1#0 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s_gen::$2 ] -zp[1]:42 [ sin8s::x1#0 ] +zp[1]:43 [ sin8s::x1#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ sin8s::x2#0 ] reg byte a [ mulu8_sel::return#1 ] -zp[1]:43 [ sin8s::x3#0 ] +zp[1]:44 [ sin8s::x3#0 ] reg byte a [ mulu8_sel::return#2 ] reg byte a [ sin8s::x3_6#0 ] -zp[1]:44 [ sin8s::usinx#0 ] +zp[1]:45 [ sin8s::usinx#0 ] reg byte a [ mulu8_sel::return#10 ] reg byte a [ sin8s::x4#0 ] reg byte a [ mulu8_sel::return#11 ] diff --git a/src/test/ref/sinusgenscale8.asm b/src/test/ref/sinusgenscale8.asm index c95c70f4f..7b5da6edc 100644 --- a/src/test/ref/sinusgenscale8.asm +++ b/src/test/ref/sinusgenscale8.asm @@ -31,13 +31,14 @@ sin8u_table: { .label amplitude = max-min .const sum = min+max .const mid = sum/2+1 - .label step = $f - .label sinx = $13 + .label step = $e + .label sinx = $12 .label sinx_sc = $a + .label sinx_tr = $13 .label sintab = 4 // Iterate over the table .label x = 2 - .label i = $11 + .label i = $10 // div16u(PI2_u4f12, tabsize) jsr div16u // div16u(PI2_u4f12, tabsize) @@ -66,8 +67,7 @@ sin8u_table: { sta.z print_str.str+1 jsr print_str // print_byte(min) - lda #min - sta.z print_byte.b + ldx #min jsr print_byte // print_str(" max:") lda #sinx_sc lda.z sinx_sc+1 // sinx_tr = mid+>sinx_sc - tax - axs #-[mid] + clc + adc #mid + sta.z sinx_tr // *sintab++ = sinx_tr - txa ldy #0 sta (sintab),y // *sintab++ = sinx_tr; @@ -177,8 +174,7 @@ sin8u_table: { sta.z print_str.str+1 jsr print_str // print_sbyte(sinx) - lda.z sinx - sta.z print_sbyte.b + ldx.z sinx jsr print_sbyte // print_str(" scaled: ") lda #>4 - lda.z b + txa lsr lsr lsr @@ -276,10 +271,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts @@ -299,9 +293,9 @@ print_char: { rts } // Print a zero-terminated string -// print_str(byte* zp($d) str) +// print_str(byte* zp($c) str) print_str: { - .label str = $d + .label str = $c __b1: // while(*str) ldy #0 @@ -327,9 +321,9 @@ print_str: { jmp __b1 } // Print a signed word as HEX -// print_sword(signed word zp($d) w) +// print_sword(signed word zp($c) w) print_sword: { - .label w = $d + .label w = $c // if(w<0) lda.z w+1 bmi __b1 @@ -356,26 +350,23 @@ print_sword: { jmp __b2 } // Print a word as HEX -// print_word(word zp($d) w) +// print_word(word zp($c) w) print_word: { - .label w = $d + .label w = $c // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(= PI_u4f12 ) lda.z x+1 cmp #>PI_u4f12 @@ -638,7 +629,7 @@ mulu8_sel: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $f + .label return = $e // divr16u(dividend, divisor, 0) jsr divr16u // divr16u(dividend, divisor, 0) @@ -649,12 +640,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($d) dividend, word zp($11) rem) +// divr16u(word zp($c) dividend, word zp($10) rem) divr16u: { - .label rem = $11 - .label dividend = $d - .label quotient = $f - .label return = $f + .label rem = $10 + .label dividend = $c + .label quotient = $e + .label return = $e ldx #0 txa sta.z quotient @@ -731,7 +722,7 @@ memset: { .const num = $3e8 .label str = $400 .label end = str+num - .label dst = $11 + .label dst = $10 lda #str diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index c7f1caab9..81c02cc6b 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -2243,163 +2243,163 @@ Inversing boolean not [160] (bool~) sin8s::$15 ← (byte) sin8s::usinx#1 < (byte Inversing boolean not [169] (bool~) sin8s::$18 ← (byte) sin8s::isUpper#2 == (byte) 0 from [168] (bool~) sin8s::$17 ← (byte) sin8s::isUpper#2 != (byte) 0 Inversing boolean not [197] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [196] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 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 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 -Alias (word) divr16u::return#2 = (word) divr16u::return#4 -Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 -Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 -Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 -Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1 -Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 -Alias (word) mul8u::mb#1 = (word~) mul8u::$6 -Alias (word) mul8u::res#1 = (word~) mul8u::$4 -Alias (byte) mul8su::b#1 = (byte~) mul8su::$1 (byte) mul8u::b#0 (byte) mul8su::b#3 (byte) mul8su::b#2 (byte~) mul8su::$8 -Alias (byte) mul8u::a#1 = (byte~) mul8su::$0 -Alias (word) mul8u::return#2 = (word) mul8u::return#5 -Alias (signed byte) mul8su::a#1 = (signed byte) mul8su::a#2 -Alias (word) mul8su::m#0 = (word~) mul8su::$2 (word) mul8su::m#3 -Alias (signed word) mul8su::return#0 = (signed word~) mul8su::$5 (signed word) mul8su::return#3 (signed word) mul8su::return#1 -Alias (byte~) mul8su::$10 = (byte~) mul8su::$9 -Alias (word) sin8s::x#3 = (word) sin8s::x#5 -Alias (word) sin8s::x#0 = (word~) sin8s::$19 -Alias (byte) sin8s::x1#0 = (byte~) sin8s::$5 (byte) sin8s::x1#1 (byte) sin8s::x1#4 (byte) sin8s::x1#2 (byte) sin8s::x1#3 -Alias (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#7 -Alias (byte) sin8s::isUpper#3 = (byte) sin8s::isUpper#8 (byte) sin8s::isUpper#9 (byte) sin8s::isUpper#7 (byte) sin8s::isUpper#6 (byte) sin8s::isUpper#5 (byte) sin8s::isUpper#4 -Alias (byte) sin8s::x2#0 = (byte~) sin8s::$6 -Alias (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#8 -Alias (byte) sin8s::x3#0 = (byte~) sin8s::$7 (byte) sin8s::x3#1 -Alias (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#9 -Alias (byte) sin8s::x3_6#0 = (byte~) sin8s::$8 -Alias (byte) sin8s::usinx#0 = (byte~) sin8s::$9 (byte) sin8s::usinx#7 (byte) sin8s::usinx#3 -Alias (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#3 -Alias (byte) sin8s::x4#0 = (byte~) sin8s::$10 -Alias (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#4 -Alias (byte) sin8s::x5#0 = (byte~) sin8s::$11 -Alias (byte) sin8s::x5_128#0 = (byte~) sin8s::$12 -Alias (byte) sin8s::usinx#1 = (byte~) sin8s::$13 (byte) sin8s::usinx#5 -Alias (word) sin8s::x#4 = (word) sin8s::x#7 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#11 -Alias (word) sin8s::x#1 = (word~) sin8s::$20 -Alias (signed byte) sin8s::sinx#0 = (signed byte~) sin8s::$16 -Alias (signed byte) sin8s::return#0 = (signed byte) sin8s::sinx#2 (signed byte) sin8s::return#3 (signed byte) sin8s::return#1 -Alias (byte) sin8s::usinx#4 = (byte) sin8s::usinx#6 -Alias (signed byte) sin8s::sinx#1 = (signed byte~) sin8s::$22 -Alias (word) mul8u::return#3 = (word) mul8u::return#6 -Alias (byte) mulu8_sel::select#5 = (byte) mulu8_sel::select#6 -Alias (byte) mulu8_sel::return#12 = (byte) mulu8_sel::return#5 (byte~) mulu8_sel::$2 (byte) mulu8_sel::return#6 -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#28 (byte*) print_char_cursor#108 (byte*) print_screen#4 -Alias (byte*) print_str::str#10 = (byte*) print_str::str#11 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#94 (byte*) print_char_cursor#49 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#13 (byte*) print_char_cursor#3 (byte*) print_line_cursor#14 (byte*) print_char_cursor#51 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#52 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#53 = (byte*) print_char_cursor#6 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#54 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#55 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 (byte*) print_char_cursor#111 -Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#56 = (byte*) print_char_cursor#9 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#57 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#59 (byte*) print_char_cursor#12 -Alias (byte) print_byte::b#1 = (byte~) print_word::$0 -Alias (word) print_word::w#3 = (word) print_word::w#4 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#60 -Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#62 (byte*) print_char_cursor#15 -Alias (byte) print_byte::b#8 = (byte) print_byte::b#9 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#65 (byte*) print_char_cursor#18 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#20 -Alias (byte*) print_line_cursor#15 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#68 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#69 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#70 (byte*) print_char_cursor#71 (byte*) print_char_cursor#25 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#18 (byte*) print_line_cursor#7 -Alias (byte) sin8u_table::amplitude#0 = (byte~) sin8u_table::$0 (byte) sin8u_table::amplitude#19 (byte) sin8u_table::amplitude#16 (byte) sin8u_table::amplitude#13 (byte) sin8u_table::amplitude#10 (byte) sin8u_table::amplitude#7 (byte) sin8u_table::amplitude#5 (byte) sin8u_table::amplitude#3 (byte) sin8u_table::amplitude#1 (byte) sin8u_table::amplitude#17 (byte) sin8u_table::amplitude#14 (byte) sin8u_table::amplitude#11 (byte) sin8u_table::amplitude#8 -Alias (word) sin8u_table::sum#0 = (word~) sin8u_table::$2 -Alias (byte) sin8u_table::mid#0 = (byte~) sin8u_table::$5 (byte) sin8u_table::mid#21 (byte) sin8u_table::mid#19 (byte) sin8u_table::mid#17 (byte) sin8u_table::mid#15 (byte) sin8u_table::mid#12 (byte) sin8u_table::mid#9 (byte) sin8u_table::mid#7 (byte) sin8u_table::mid#5 (byte) sin8u_table::mid#3 (byte) sin8u_table::mid#1 (byte) sin8u_table::mid#13 (byte) sin8u_table::mid#10 -Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#112 -Alias (byte) sin8u_table::min#1 = (byte) sin8u_table::min#5 (byte) sin8u_table::min#4 (byte) sin8u_table::min#3 (byte) sin8u_table::min#2 -Alias (byte) sin8u_table::max#1 = (byte) sin8u_table::max#7 (byte) sin8u_table::max#6 (byte) sin8u_table::max#5 (byte) sin8u_table::max#4 (byte) sin8u_table::max#3 (byte) sin8u_table::max#2 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#47 (byte*) print_line_cursor#49 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#37 (byte*) print_line_cursor#35 (byte*) print_line_cursor#33 (byte*) print_line_cursor#31 (byte*) print_line_cursor#29 -Alias (word) sin8u_table::tabsize#1 = (word) sin8u_table::tabsize#25 (word) sin8u_table::tabsize#23 (word) sin8u_table::tabsize#21 (word) sin8u_table::tabsize#19 (word) sin8u_table::tabsize#17 (word) sin8u_table::tabsize#15 (word) sin8u_table::tabsize#13 (word) sin8u_table::tabsize#11 (word) sin8u_table::tabsize#9 (word) sin8u_table::tabsize#7 (word) sin8u_table::tabsize#5 (word) sin8u_table::tabsize#3 -Alias (byte*) sin8u_table::sintab#10 = (byte*) sin8u_table::sintab#26 (byte*) sin8u_table::sintab#27 (byte*) sin8u_table::sintab#25 (byte*) sin8u_table::sintab#24 (byte*) sin8u_table::sintab#22 (byte*) sin8u_table::sintab#20 (byte*) sin8u_table::sintab#18 (byte*) sin8u_table::sintab#16 (byte*) sin8u_table::sintab#14 (byte*) sin8u_table::sintab#12 (byte*) sin8u_table::sintab#8 (byte*) sin8u_table::sintab#6 -Alias (word) sin8u_table::step#0 = (word~) sin8u_table::$6 (word) sin8u_table::step#1 (word) sin8u_table::step#24 (word) sin8u_table::step#23 (word) sin8u_table::step#22 (word) sin8u_table::step#21 (word) sin8u_table::step#20 (word) sin8u_table::step#19 (word) sin8u_table::step#18 (word) sin8u_table::step#17 (word) sin8u_table::step#16 (word) sin8u_table::step#15 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#72 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#73 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#74 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#75 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#76 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#77 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#78 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#79 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#80 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#81 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#82 -Alias (word) sin8u_table::x#10 = (word) sin8u_table::x#2 (word) sin8u_table::x#5 (word) sin8u_table::x#8 (word) sin8u_table::x#6 (word) sin8u_table::x#3 (word) sin8u_table::x#14 (word) sin8u_table::x#13 (word) sin8u_table::x#12 (word) sin8u_table::x#11 (word) sin8u_table::x#9 (word) sin8u_table::x#7 (word) sin8u_table::x#4 -Alias (byte) sin8u_table::amplitude#12 = (byte) sin8u_table::amplitude#4 (byte) sin8u_table::amplitude#6 (byte) sin8u_table::amplitude#2 (byte) sin8u_table::amplitude#25 (byte) sin8u_table::amplitude#24 (byte) sin8u_table::amplitude#23 (byte) sin8u_table::amplitude#22 (byte) sin8u_table::amplitude#21 (byte) sin8u_table::amplitude#20 (byte) sin8u_table::amplitude#18 (byte) sin8u_table::amplitude#15 (byte) sin8u_table::amplitude#9 -Alias (byte) sin8u_table::mid#11 = (byte) sin8u_table::mid#6 (byte) sin8u_table::mid#8 (byte) sin8u_table::mid#4 (byte) sin8u_table::mid#2 (byte) sin8u_table::mid#25 (byte) sin8u_table::mid#24 (byte) sin8u_table::mid#23 (byte) sin8u_table::mid#22 (byte) sin8u_table::mid#20 (byte) sin8u_table::mid#18 (byte) sin8u_table::mid#16 (byte) sin8u_table::mid#14 -Alias (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#4 (byte*) sin8u_table::sintab#5 (byte*) sin8u_table::sintab#3 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#114 (byte*) print_char_cursor#107 (byte*) print_char_cursor#113 (byte*) print_char_cursor#92 (byte*) print_char_cursor#46 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#48 (byte*) print_line_cursor#27 (byte*) print_line_cursor#46 (byte*) print_line_cursor#44 (byte*) print_line_cursor#42 (byte*) print_line_cursor#40 (byte*) print_line_cursor#38 (byte*) print_line_cursor#36 (byte*) print_line_cursor#34 (byte*) print_line_cursor#32 (byte*) print_line_cursor#30 (byte*) print_line_cursor#26 (byte*) print_line_cursor#21 -Alias (word) sin8u_table::step#10 = (word) sin8u_table::step#13 (word) sin8u_table::step#14 (word) sin8u_table::step#12 (word) sin8u_table::step#11 (word) sin8u_table::step#9 (word) sin8u_table::step#8 (word) sin8u_table::step#7 (word) sin8u_table::step#6 (word) sin8u_table::step#5 (word) sin8u_table::step#4 (word) sin8u_table::step#3 (word) sin8u_table::step#2 -Alias (word) sin8u_table::i#10 = (word) sin8u_table::i#14 (word) sin8u_table::i#2 (word) sin8u_table::i#13 (word) sin8u_table::i#12 (word) sin8u_table::i#11 (word) sin8u_table::i#9 (word) sin8u_table::i#8 (word) sin8u_table::i#7 (word) sin8u_table::i#6 (word) sin8u_table::i#5 (word) sin8u_table::i#4 (word) sin8u_table::i#3 -Alias (word) sin8u_table::tabsize#10 = (word) sin8u_table::tabsize#26 (word) sin8u_table::tabsize#2 (word) sin8u_table::tabsize#24 (word) sin8u_table::tabsize#22 (word) sin8u_table::tabsize#20 (word) sin8u_table::tabsize#18 (word) sin8u_table::tabsize#16 (word) sin8u_table::tabsize#14 (word) sin8u_table::tabsize#12 (word) sin8u_table::tabsize#8 (word) sin8u_table::tabsize#6 (word) sin8u_table::tabsize#4 -Alias (signed byte) sin8s::return#2 = (signed byte) sin8s::return#4 -Alias (signed byte) sin8u_table::sinx#0 = (signed byte~) sin8u_table::$19 (signed byte) sin8u_table::sinx#4 (signed byte) sin8u_table::sinx#3 (signed byte) sin8u_table::sinx#2 (signed byte) sin8u_table::sinx#1 -Alias (byte) mul8su::b#0 = (byte~) sin8u_table::$20 -Alias (signed word) mul8su::return#2 = (signed word) mul8su::return#4 -Alias (signed word) sin8u_table::sinx_sc#0 = (signed word~) sin8u_table::$21 (signed word) sin8u_table::sinx_sc#5 (signed word) sin8u_table::sinx_sc#4 (signed word) sin8u_table::sinx_sc#3 (signed word) sin8u_table::sinx_sc#2 (signed word) sin8u_table::sinx_sc#1 -Alias (byte) sin8u_table::sinx_tr#0 = (byte~) sin8u_table::$23 (byte) sin8u_table::sinx_tr#7 (byte) sin8u_table::sinx_tr#6 (byte) sin8u_table::sinx_tr#5 (byte) sin8u_table::sinx_tr#4 (byte) sin8u_table::sinx_tr#3 (byte) sin8u_table::sinx_tr#2 (byte) sin8u_table::sinx_tr#1 -Alias (byte*) sin8u_table::sintab#1 = (byte*) sin8u_table::sintab#23 (byte*) sin8u_table::sintab#21 (byte*) sin8u_table::sintab#19 (byte*) sin8u_table::sintab#17 (byte*) sin8u_table::sintab#15 (byte*) sin8u_table::sintab#13 (byte*) sin8u_table::sintab#11 (byte*) sin8u_table::sintab#9 (byte*) sin8u_table::sintab#7 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#83 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#84 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#85 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#86 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#87 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#88 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#89 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#90 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#91 -Alias (word) sin8u_table::x#1 = (word~) sin8u_table::$33 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#93 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#6 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#7 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#2 = divr16u::dividend#6 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#3 = divr16u::divisor#4 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#5 = divr16u::rem#7 +Alias divr16u::divisor#1 = divr16u::divisor#2 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#3 divr16u::return#1 +Alias divr16u::return#2 = divr16u::return#4 +Alias div16u::return#0 = div16u::$0 div16u::return#3 div16u::return#1 +Alias mul8u::a#3 = mul8u::a#4 mul8u::a#7 +Alias mul8u::mb#3 = mul8u::mb#4 mul8u::mb#5 +Alias mul8u::res#2 = mul8u::res#5 mul8u::res#4 mul8u::return#0 mul8u::res#3 mul8u::return#4 mul8u::return#1 +Alias mul8u::a#0 = mul8u::$5 +Alias mul8u::mb#1 = mul8u::$6 +Alias mul8u::res#1 = mul8u::$4 +Alias mul8su::b#1 = mul8su::$1 mul8u::b#0 mul8su::b#3 mul8su::b#2 mul8su::$8 +Alias mul8u::a#1 = mul8su::$0 +Alias mul8u::return#2 = mul8u::return#5 +Alias mul8su::a#1 = mul8su::a#2 +Alias mul8su::m#0 = mul8su::$2 mul8su::m#3 +Alias mul8su::return#0 = mul8su::$5 mul8su::return#3 mul8su::return#1 +Alias mul8su::$10 = mul8su::$9 +Alias sin8s::x#3 = sin8s::x#5 +Alias sin8s::x#0 = sin8s::$19 +Alias sin8s::x1#0 = sin8s::$5 sin8s::x1#1 sin8s::x1#4 sin8s::x1#2 sin8s::x1#3 +Alias mulu8_sel::return#0 = mulu8_sel::return#7 +Alias sin8s::isUpper#3 = sin8s::isUpper#8 sin8s::isUpper#9 sin8s::isUpper#7 sin8s::isUpper#6 sin8s::isUpper#5 sin8s::isUpper#4 +Alias sin8s::x2#0 = sin8s::$6 +Alias mulu8_sel::return#1 = mulu8_sel::return#8 +Alias sin8s::x3#0 = sin8s::$7 sin8s::x3#1 +Alias mulu8_sel::return#2 = mulu8_sel::return#9 +Alias sin8s::x3_6#0 = sin8s::$8 +Alias sin8s::usinx#0 = sin8s::$9 sin8s::usinx#7 sin8s::usinx#3 +Alias mulu8_sel::return#10 = mulu8_sel::return#3 +Alias sin8s::x4#0 = sin8s::$10 +Alias mulu8_sel::return#11 = mulu8_sel::return#4 +Alias sin8s::x5#0 = sin8s::$11 +Alias sin8s::x5_128#0 = sin8s::$12 +Alias sin8s::usinx#1 = sin8s::$13 sin8s::usinx#5 +Alias sin8s::x#4 = sin8s::x#7 +Alias sin8s::isUpper#10 = sin8s::isUpper#11 +Alias sin8s::x#1 = sin8s::$20 +Alias sin8s::sinx#0 = sin8s::$16 +Alias sin8s::return#0 = sin8s::sinx#2 sin8s::return#3 sin8s::return#1 +Alias sin8s::usinx#4 = sin8s::usinx#6 +Alias sin8s::sinx#1 = sin8s::$22 +Alias mul8u::return#3 = mul8u::return#6 +Alias mulu8_sel::select#5 = mulu8_sel::select#6 +Alias mulu8_sel::return#12 = mulu8_sel::return#5 mulu8_sel::$2 mulu8_sel::return#6 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#28 print_char_cursor#108 print_screen#4 +Alias print_str::str#10 = print_str::str#11 +Alias print_char_cursor#2 = print_char_cursor#48 print_char_cursor#94 print_char_cursor#49 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#13 print_char_cursor#3 print_line_cursor#14 print_char_cursor#51 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#110 = print_char_cursor#96 print_char_cursor#97 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#5 = print_char_cursor#52 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#53 = print_char_cursor#6 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#54 = print_char_cursor#7 print_char_cursor#55 print_char_cursor#8 +Alias print_char_cursor#100 = print_char_cursor#99 print_char_cursor#111 +Alias print_sbyte::b#2 = print_sbyte::b#5 print_sbyte::b#3 print_sbyte::b#7 print_sbyte::b#6 +Alias print_char_cursor#56 = print_char_cursor#9 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#10 = print_char_cursor#57 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#11 = print_char_cursor#58 print_char_cursor#59 print_char_cursor#12 +Alias print_byte::b#1 = print_word::$0 +Alias print_word::w#3 = print_word::w#4 +Alias print_char_cursor#13 = print_char_cursor#60 +Alias print_byte::b#2 = print_word::$2 +Alias print_char_cursor#14 = print_char_cursor#61 print_char_cursor#62 print_char_cursor#15 +Alias print_byte::b#8 = print_byte::b#9 +Alias print_char_cursor#16 = print_char_cursor#63 +Alias print_char_cursor#17 = print_char_cursor#64 print_char_cursor#65 print_char_cursor#18 +Alias print_char_cursor#19 = print_char_cursor#67 print_char_cursor#20 +Alias print_line_cursor#15 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#21 print_char_cursor#68 print_line_cursor#4 print_char_cursor#22 +Alias print_line_cursor#16 = print_line_cursor#5 +Alias print_char_cursor#23 = print_char_cursor#69 +Alias print_char_cursor#24 = print_char_cursor#70 print_char_cursor#71 print_char_cursor#25 +Alias print_line_cursor#17 = print_line_cursor#6 print_line_cursor#18 print_line_cursor#7 +Alias sin8u_table::amplitude#0 = sin8u_table::$0 sin8u_table::amplitude#19 sin8u_table::amplitude#16 sin8u_table::amplitude#13 sin8u_table::amplitude#10 sin8u_table::amplitude#7 sin8u_table::amplitude#5 sin8u_table::amplitude#3 sin8u_table::amplitude#1 sin8u_table::amplitude#17 sin8u_table::amplitude#14 sin8u_table::amplitude#11 sin8u_table::amplitude#8 +Alias sin8u_table::sum#0 = sin8u_table::$2 +Alias sin8u_table::mid#0 = sin8u_table::$5 sin8u_table::mid#21 sin8u_table::mid#19 sin8u_table::mid#17 sin8u_table::mid#15 sin8u_table::mid#12 sin8u_table::mid#9 sin8u_table::mid#7 sin8u_table::mid#5 sin8u_table::mid#3 sin8u_table::mid#1 sin8u_table::mid#13 sin8u_table::mid#10 +Alias div16u::return#2 = div16u::return#4 +Alias print_char_cursor#105 = print_char_cursor#112 +Alias sin8u_table::min#1 = sin8u_table::min#5 sin8u_table::min#4 sin8u_table::min#3 sin8u_table::min#2 +Alias sin8u_table::max#1 = sin8u_table::max#7 sin8u_table::max#6 sin8u_table::max#5 sin8u_table::max#4 sin8u_table::max#3 sin8u_table::max#2 +Alias print_line_cursor#25 = print_line_cursor#47 print_line_cursor#49 print_line_cursor#45 print_line_cursor#43 print_line_cursor#41 print_line_cursor#39 print_line_cursor#37 print_line_cursor#35 print_line_cursor#33 print_line_cursor#31 print_line_cursor#29 +Alias sin8u_table::tabsize#1 = sin8u_table::tabsize#25 sin8u_table::tabsize#23 sin8u_table::tabsize#21 sin8u_table::tabsize#19 sin8u_table::tabsize#17 sin8u_table::tabsize#15 sin8u_table::tabsize#13 sin8u_table::tabsize#11 sin8u_table::tabsize#9 sin8u_table::tabsize#7 sin8u_table::tabsize#5 sin8u_table::tabsize#3 +Alias sin8u_table::sintab#10 = sin8u_table::sintab#26 sin8u_table::sintab#27 sin8u_table::sintab#25 sin8u_table::sintab#24 sin8u_table::sintab#22 sin8u_table::sintab#20 sin8u_table::sintab#18 sin8u_table::sintab#16 sin8u_table::sintab#14 sin8u_table::sintab#12 sin8u_table::sintab#8 sin8u_table::sintab#6 +Alias sin8u_table::step#0 = sin8u_table::$6 sin8u_table::step#1 sin8u_table::step#24 sin8u_table::step#23 sin8u_table::step#22 sin8u_table::step#21 sin8u_table::step#20 sin8u_table::step#19 sin8u_table::step#18 sin8u_table::step#17 sin8u_table::step#16 sin8u_table::step#15 +Alias print_char_cursor#26 = print_char_cursor#72 +Alias print_char_cursor#27 = print_char_cursor#73 +Alias print_char_cursor#28 = print_char_cursor#74 +Alias print_char_cursor#29 = print_char_cursor#75 +Alias print_char_cursor#30 = print_char_cursor#76 +Alias print_char_cursor#31 = print_char_cursor#77 +Alias print_char_cursor#32 = print_char_cursor#78 +Alias print_char_cursor#33 = print_char_cursor#79 +Alias print_char_cursor#34 = print_char_cursor#80 +Alias print_char_cursor#35 = print_char_cursor#81 +Alias print_line_cursor#19 = print_line_cursor#8 +Alias print_char_cursor#36 = print_char_cursor#82 +Alias sin8u_table::x#10 = sin8u_table::x#2 sin8u_table::x#5 sin8u_table::x#8 sin8u_table::x#6 sin8u_table::x#3 sin8u_table::x#14 sin8u_table::x#13 sin8u_table::x#12 sin8u_table::x#11 sin8u_table::x#9 sin8u_table::x#7 sin8u_table::x#4 +Alias sin8u_table::amplitude#12 = sin8u_table::amplitude#4 sin8u_table::amplitude#6 sin8u_table::amplitude#2 sin8u_table::amplitude#25 sin8u_table::amplitude#24 sin8u_table::amplitude#23 sin8u_table::amplitude#22 sin8u_table::amplitude#21 sin8u_table::amplitude#20 sin8u_table::amplitude#18 sin8u_table::amplitude#15 sin8u_table::amplitude#9 +Alias sin8u_table::mid#11 = sin8u_table::mid#6 sin8u_table::mid#8 sin8u_table::mid#4 sin8u_table::mid#2 sin8u_table::mid#25 sin8u_table::mid#24 sin8u_table::mid#23 sin8u_table::mid#22 sin8u_table::mid#20 sin8u_table::mid#18 sin8u_table::mid#16 sin8u_table::mid#14 +Alias sin8u_table::sintab#2 = sin8u_table::sintab#4 sin8u_table::sintab#5 sin8u_table::sintab#3 +Alias print_char_cursor#106 = print_char_cursor#114 print_char_cursor#107 print_char_cursor#113 print_char_cursor#92 print_char_cursor#46 +Alias print_line_cursor#10 = print_line_cursor#48 print_line_cursor#27 print_line_cursor#46 print_line_cursor#44 print_line_cursor#42 print_line_cursor#40 print_line_cursor#38 print_line_cursor#36 print_line_cursor#34 print_line_cursor#32 print_line_cursor#30 print_line_cursor#26 print_line_cursor#21 +Alias sin8u_table::step#10 = sin8u_table::step#13 sin8u_table::step#14 sin8u_table::step#12 sin8u_table::step#11 sin8u_table::step#9 sin8u_table::step#8 sin8u_table::step#7 sin8u_table::step#6 sin8u_table::step#5 sin8u_table::step#4 sin8u_table::step#3 sin8u_table::step#2 +Alias sin8u_table::i#10 = sin8u_table::i#14 sin8u_table::i#2 sin8u_table::i#13 sin8u_table::i#12 sin8u_table::i#11 sin8u_table::i#9 sin8u_table::i#8 sin8u_table::i#7 sin8u_table::i#6 sin8u_table::i#5 sin8u_table::i#4 sin8u_table::i#3 +Alias sin8u_table::tabsize#10 = sin8u_table::tabsize#26 sin8u_table::tabsize#2 sin8u_table::tabsize#24 sin8u_table::tabsize#22 sin8u_table::tabsize#20 sin8u_table::tabsize#18 sin8u_table::tabsize#16 sin8u_table::tabsize#14 sin8u_table::tabsize#12 sin8u_table::tabsize#8 sin8u_table::tabsize#6 sin8u_table::tabsize#4 +Alias sin8s::return#2 = sin8s::return#4 +Alias sin8u_table::sinx#0 = sin8u_table::$19 sin8u_table::sinx#4 sin8u_table::sinx#3 sin8u_table::sinx#2 sin8u_table::sinx#1 +Alias mul8su::b#0 = sin8u_table::$20 +Alias mul8su::return#2 = mul8su::return#4 +Alias sin8u_table::sinx_sc#0 = sin8u_table::$21 sin8u_table::sinx_sc#5 sin8u_table::sinx_sc#4 sin8u_table::sinx_sc#3 sin8u_table::sinx_sc#2 sin8u_table::sinx_sc#1 +Alias sin8u_table::sinx_tr#0 = sin8u_table::$23 sin8u_table::sinx_tr#7 sin8u_table::sinx_tr#6 sin8u_table::sinx_tr#5 sin8u_table::sinx_tr#4 sin8u_table::sinx_tr#3 sin8u_table::sinx_tr#2 sin8u_table::sinx_tr#1 +Alias sin8u_table::sintab#1 = sin8u_table::sintab#23 sin8u_table::sintab#21 sin8u_table::sintab#19 sin8u_table::sintab#17 sin8u_table::sintab#15 sin8u_table::sintab#13 sin8u_table::sintab#11 sin8u_table::sintab#9 sin8u_table::sintab#7 +Alias print_char_cursor#37 = print_char_cursor#83 +Alias print_char_cursor#38 = print_char_cursor#84 +Alias print_char_cursor#39 = print_char_cursor#85 +Alias print_char_cursor#40 = print_char_cursor#86 +Alias print_char_cursor#41 = print_char_cursor#87 +Alias print_char_cursor#42 = print_char_cursor#88 +Alias print_char_cursor#43 = print_char_cursor#89 +Alias print_char_cursor#44 = print_char_cursor#90 +Alias print_line_cursor#20 = print_line_cursor#9 +Alias print_char_cursor#45 = print_char_cursor#91 +Alias sin8u_table::x#1 = sin8u_table::$33 +Alias print_line_cursor#11 = print_line_cursor#22 +Alias print_char_cursor#47 = print_char_cursor#93 Successful SSA optimization Pass2AliasElimination -Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 -Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 -Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 -Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#3 (byte) sin8s::isUpper#2 +Alias divr16u::dividend#2 = divr16u::dividend#3 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#1 = divr16u::divisor#3 divr16u::divisor#6 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#5 +Alias mul8u::a#3 = mul8u::a#5 +Alias mul8u::mb#2 = mul8u::mb#3 +Alias sin8s::isUpper#10 = sin8s::isUpper#3 sin8s::isUpper#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::rem#8 (word) divr16u::rem#3 Identical Phi Values (word) divr16u::dividend#4 (word) divr16u::dividend#1 @@ -3388,211 +3388,211 @@ VARIABLE REGISTER WEIGHTS (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 1.3333333333333333 -(word) div16u::return#2 4.0 +(word) div16u::return#0 367.33333333333337 +(word) div16u::return#2 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 22.0 -(byte~) divr16u::$2 22.0 +(byte~) divr16u::$1 200002.0 +(byte~) divr16u::$2 200002.0 (word) divr16u::dividend -(word) divr16u::dividend#0 2.75 -(word) divr16u::dividend#2 4.714285714285714 +(word) divr16u::dividend#0 25000.25 +(word) divr16u::dividend#2 42857.57142857143 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 16.5 -(byte) divr16u::i#2 1.6923076923076923 +(byte) divr16u::i#1 150001.5 +(byte) divr16u::i#2 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 16.5 -(word) divr16u::quotient#2 11.0 -(word) divr16u::quotient#3 2.75 +(word) divr16u::quotient#1 150001.5 +(word) divr16u::quotient#2 100001.0 +(word) divr16u::quotient#3 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 8.25 -(word) divr16u::rem#1 22.0 -(word) divr16u::rem#2 22.0 -(word) divr16u::rem#4 22.0 -(word) divr16u::rem#5 11.0 -(word) divr16u::rem#9 11.0 +(word) divr16u::rem#0 75000.75 +(word) divr16u::rem#1 200002.0 +(word) divr16u::rem#2 200002.0 +(word) divr16u::rem#4 200002.0 +(word) divr16u::rem#5 100001.0 +(word) divr16u::rem#9 100001.0 (word) divr16u::return -(word) divr16u::return#0 7.000000000000001 -(word) divr16u::return#2 4.0 +(word) divr16u::return#0 60200.8 +(word) divr16u::return#2 2002.0 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) -(byte~) mul8su::$10 4.0 -(byte~) mul8su::$7 4.0 +(byte~) mul8su::$10 20002.0 +(byte~) mul8su::$7 20002.0 (signed byte) mul8su::a -(signed byte) mul8su::a#0 2.6 +(signed byte) mul8su::a#0 2200.4 (byte) mul8su::b (word) mul8su::m -(word) mul8su::m#0 2.0 -(word) mul8su::m#1 4.0 -(word) mul8su::m#2 1.3333333333333333 +(word) mul8su::m#0 10001.0 +(word) mul8su::m#1 20002.0 +(word) mul8su::m#2 6667.333333333333 (signed word) mul8su::return (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 202.0 +(byte~) mul8u::$1 2.00000002E8 (byte) mul8u::a -(byte) mul8u::a#0 101.0 -(byte) mul8u::a#1 4.0 -(byte) mul8u::a#2 2.0 -(byte) mul8u::a#3 67.66666666666666 -(byte) mul8u::a#6 3.0 +(byte) mul8u::a#0 1.00000001E8 +(byte) mul8u::a#1 20002.0 +(byte) mul8u::a#2 100001.0 +(byte) mul8u::a#3 6.683333416666667E7 +(byte) mul8u::a#6 555001.5 (byte) mul8u::b -(byte) mul8u::b#1 4.0 -(byte) mul8u::b#2 2.0 +(byte) mul8u::b#1 200002.0 +(byte) mul8u::b#2 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 4.0 -(word) mul8u::mb#1 202.0 -(word) mul8u::mb#2 43.57142857142858 +(word) mul8u::mb#0 2000002.0 +(word) mul8u::mb#1 2.00000002E8 +(word) mul8u::mb#2 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 202.0 -(word) mul8u::res#2 43.85714285714286 -(word) mul8u::res#6 101.0 +(word) mul8u::res#1 2.00000002E8 +(word) mul8u::res#2 4.287285785714286E7 +(word) mul8u::res#6 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 4.0 -(word) mul8u::return#3 4.0 +(word) mul8u::return#2 20002.0 +(word) mul8u::return#3 200002.0 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 4.0 -(word~) mulu8_sel::$1 4.0 +(word~) mulu8_sel::$0 200002.0 +(word~) mulu8_sel::$1 200002.0 (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 4.0 -(byte) mulu8_sel::return#1 4.0 -(byte) mulu8_sel::return#10 4.0 -(byte) mulu8_sel::return#11 4.0 -(byte) mulu8_sel::return#12 1.714285714285714 -(byte) mulu8_sel::return#2 4.0 +(byte) mulu8_sel::return#0 20002.0 +(byte) mulu8_sel::return#1 20002.0 +(byte) mulu8_sel::return#10 20002.0 +(byte) mulu8_sel::return#11 20002.0 +(byte) mulu8_sel::return#12 21429.428571428572 +(byte) mulu8_sel::return#2 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 0.3333333333333333 +(byte) mulu8_sel::select#5 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 2.0 -(byte) mulu8_sel::v1#1 2.0 -(byte) mulu8_sel::v1#2 4.0 -(byte) mulu8_sel::v1#3 2.0 -(byte) mulu8_sel::v1#4 2.0 -(byte) mulu8_sel::v1#5 12.0 +(byte) mulu8_sel::v1#0 10001.0 +(byte) mulu8_sel::v1#1 10001.0 +(byte) mulu8_sel::v1#2 20002.0 +(byte) mulu8_sel::v1#3 10001.0 +(byte) mulu8_sel::v1#4 10001.0 +(byte) mulu8_sel::v1#5 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 4.0 -(byte) mulu8_sel::v2#1 4.0 -(byte) mulu8_sel::v2#3 4.0 -(byte) mulu8_sel::v2#4 4.0 -(byte) mulu8_sel::v2#5 5.0 +(byte) mulu8_sel::v2#0 20002.0 +(byte) mulu8_sel::v2#1 20002.0 +(byte) mulu8_sel::v2#3 20002.0 +(byte) mulu8_sel::v2#4 20002.0 +(byte) mulu8_sel::v2#5 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2000002.0 +(byte~) print_byte::$2 2000002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#7 22.0 -(byte) print_byte::b#8 5.25 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 200002.0 +(byte) print_byte::b#2 200002.0 +(byte) print_byte::b#7 2002.0 +(byte) print_byte::b#8 552751.5 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 4.0 -(byte) print_char::ch#6 6.0 +(byte) print_char::ch#4 2000002.0 +(byte) print_char::ch#5 2000002.0 +(byte) print_char::ch#6 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#102 8.5 -(byte*) print_char_cursor#103 8.999999999999998 -(byte*) print_char_cursor#109 54.0 -(byte*) print_char_cursor#118 22.0 -(byte*) print_char_cursor#19 3.2340425531914887 -(byte*) print_char_cursor#2 12.321428571428571 -(byte*) print_char_cursor#66 8.0 +(byte*) print_char_cursor#1 1000001.0 +(byte*) print_char_cursor#102 55552.0 +(byte*) print_char_cursor#103 403803.00000000006 +(byte*) print_char_cursor#109 14409.0 +(byte*) print_char_cursor#118 2002.0 +(byte*) print_char_cursor#19 257944.95744680852 +(byte*) print_char_cursor#2 109018.39285714286 +(byte*) print_char_cursor#66 1.1020004E7 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 8.783783783783784 -(byte*) print_line_cursor#12 204.0 -(byte*) print_line_cursor#23 13.0 +(byte*) print_line_cursor#1 81135.27027027027 +(byte*) print_line_cursor#12 2010003.0 +(byte*) print_line_cursor#23 11002.0 (void()) print_ln() (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#1 2.8333333333333335 -(signed byte) print_sbyte::b#4 4.0 +(signed byte) print_sbyte::b#0 20002.0 +(signed byte) print_sbyte::b#1 5167.333333333333 +(signed byte) print_sbyte::b#4 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#10 101.5 -(byte*) print_str::str#12 2.0 +(byte*) print_str::str#0 2000002.0 +(byte*) print_str::str#10 1002501.25 +(byte*) print_str::str#12 10001.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 2.8333333333333335 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 20002.0 +(signed word) print_sword::w#1 5167.333333333333 +(signed word) print_sword::w#4 20002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 4.0 -(word) print_word::w#2 22.0 -(word) print_word::w#3 6.333333333333334 +(word) print_word::w#0 20002.0 +(word) print_word::w#1 202.0 +(word) print_word::w#2 2002.0 +(word) print_word::w#3 70368.33333333333 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 4.0 +(word~) sin8s::$4 20002.0 (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 0.05555555555555555 +(byte) sin8s::isUpper#10 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 5.0 -(signed byte) sin8s::return#2 22.0 -(signed byte) sin8s::return#5 4.0 +(signed byte) sin8s::return#0 7001.0 +(signed byte) sin8s::return#2 2002.0 +(signed byte) sin8s::return#5 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 4.0 +(signed byte) sin8s::sinx#1 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 0.3333333333333333 -(byte) sin8s::usinx#1 4.0 -(byte) sin8s::usinx#2 4.0 -(byte) sin8s::usinx#4 2.0 +(byte) sin8s::usinx#0 1666.8333333333333 +(byte) sin8s::usinx#1 20002.0 +(byte) sin8s::usinx#2 20002.0 +(byte) sin8s::usinx#4 10001.0 (word) sin8s::x -(word) sin8s::x#0 4.0 -(word) sin8s::x#1 4.0 -(word) sin8s::x#2 8.5 -(word) sin8s::x#4 5.0 -(word) sin8s::x#6 6.0 +(word) sin8s::x#0 20002.0 +(word) sin8s::x#1 20002.0 +(word) sin8s::x#2 15502.0 +(word) sin8s::x#4 25002.5 +(word) sin8s::x#6 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 0.6363636363636365 +(byte) sin8s::x1#0 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 4.0 +(byte) sin8s::x2#0 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 1.0 +(byte) sin8s::x3#0 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 4.0 +(byte) sin8s::x3_6#0 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 4.0 +(byte) sin8s::x4#0 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 4.0 +(byte) sin8s::x5#0 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 4.0 +(byte) sin8s::x5_128#0 20002.0 (void()) sin8u_table((byte*) sin8u_table::sintab , (word) sin8u_table::tabsize , (byte) sin8u_table::min , (byte) sin8u_table::max) -(byte~) sin8u_table::$22 22.0 +(byte~) sin8u_table::$22 2002.0 (byte) sin8u_table::amplitude (word) sin8u_table::i -(word) sin8u_table::i#1 22.0 -(word) sin8u_table::i#10 1.03125 +(word) sin8u_table::i#1 2002.0 +(word) sin8u_table::i#10 93.84375 (byte) sin8u_table::max (byte) sin8u_table::mid (byte) sin8u_table::min (byte*) sin8u_table::sintab -(byte*) sin8u_table::sintab#1 1.0476190476190477 -(byte*) sin8u_table::sintab#2 2.75 +(byte*) sin8u_table::sintab#1 95.33333333333333 +(byte*) sin8u_table::sintab#2 250.25 (signed byte) sin8u_table::sinx -(signed byte) sin8u_table::sinx#0 2.357142857142857 +(signed byte) sin8u_table::sinx#0 214.5 (signed word) sin8u_table::sinx_sc -(signed word) sin8u_table::sinx_sc#0 2.1999999999999997 +(signed word) sin8u_table::sinx_sc#0 200.2 (byte) sin8u_table::sinx_tr -(byte) sin8u_table::sinx_tr#0 1.9411764705882355 +(byte) sin8u_table::sinx_tr#0 176.64705882352942 (word) sin8u_table::step -(word) sin8u_table::step#0 0.2727272727272727 +(word) sin8u_table::step#0 21.87272727272727 (word) sin8u_table::sum (word) sin8u_table::tabsize (word) sin8u_table::x -(word) sin8u_table::x#1 11.0 -(word) sin8u_table::x#10 1.4193548387096775 +(word) sin8u_table::x#1 1001.0 +(word) sin8u_table::x#10 129.16129032258064 Initial phi equivalence classes [ sin8u_table::i#10 sin8u_table::i#1 ] @@ -5294,125 +5294,113 @@ memset: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:55 [ sin8u_table::$22 ] has ALU potential. -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 -Statement [35] if((word) sin8u_table::i#10<(const word) main::tabsize) goto sin8u_table::@2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [37] (word) sin8s::x#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#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 ] { { div16u::return#0 = 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 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } } ) always clobbers reg byte a +Statement [35] if((word) sin8u_table::i#10<(const word) main::tabsize) goto sin8u_table::@2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [37] (word) sin8s::x#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:51 [ sin8u_table::sinx#0 ] -Statement [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ) always clobbers reg byte y +Statement [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:51 [ sin8u_table::sinx#0 ] Removing always clobbered register reg byte y as potential for zp[1]:56 [ sin8u_table::sinx_tr#0 ] -Statement [48] (byte*) print_char_cursor#118 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [48] (byte*) print_char_cursor#118 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ sin8u_table::sinx_tr#0 ] -Statement [50] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [58] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [66] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ) always clobbers reg byte a +Statement [50] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } } ) always clobbers reg byte a +Statement [58] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [66] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] { } main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] { } main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:63::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:63::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_char:94 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_char:100 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_char:110 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_char:116 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] ) always clobbers reg byte y +Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:63::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:63::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_char:94 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_char:100 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sbyte:55::print_char:110 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sbyte:55::print_char:116 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Statement [87] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_word:51 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_sword:59::print_word:97 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_word:51 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:59::print_word:97 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:55 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [87] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { } main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#118 } } main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { } main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#118 } } main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:55 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } } ) always clobbers reg byte a +Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ mul8su::a#0 ] -Statement [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] { { mul8su::a#0 = sin8u_table::sinx#0 } } ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:29 [ sin8s::isUpper#10 ] Removing always clobbered register reg byte a as potential for zp[1]:66 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:36 [ mulu8_sel::select#5 ] Removing always clobbered register reg byte a as potential for zp[1]:70 [ sin8s::x3#0 ] Removing always clobbered register reg byte a as potential for zp[1]:73 [ sin8s::usinx#0 ] -Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [145] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#2 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [145] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::sinx#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = 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 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:43 [ divr16u::i#2 divr16u::i#1 ] -Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 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) 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 [ 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 [218] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [220] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -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 -Statement [35] if((word) sin8u_table::i#10<(const word) main::tabsize) goto sin8u_table::@2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [37] (word) sin8s::x#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ) always clobbers reg byte a reg byte y -Statement [48] (byte*) print_char_cursor#118 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [50] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [58] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [66] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ) always clobbers reg byte a -Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:63::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:63::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_char:94 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:59::print_char:100 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_char:110 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:55::print_char:116 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] ) always clobbers reg byte y -Statement [87] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_word:51 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_sword:59::print_word:97 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_word:51 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:59::print_word:97 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:55 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [145] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 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) 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 [ 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 [218] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [220] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize) 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize [ 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [218] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [220] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [11] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8u_table:7 [ div16u::return#2 ] { { div16u::return#0 = 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 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } } ) always clobbers reg byte a +Statement [35] if((word) sin8u_table::i#10<(const word) main::tabsize) goto sin8u_table::@2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [37] (word) sin8s::x#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8s::x#2 print_line_cursor#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte a +Statement [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte a reg byte y +Statement [48] (byte*) print_char_cursor#118 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#118 print_line_cursor#1 ] { { print_char_cursor#109 = print_char_cursor#118 } } ) always clobbers reg byte a +Statement [50] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } } ) always clobbers reg byte a +Statement [58] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [66] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] { } main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] { } main:2::sin8u_table:7::print_ln:65 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:63 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:51::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:63::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#4 = print_char::ch#6 } } main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_byte:63::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] { { print_byte::b#7 = print_byte::b#8 sin8u_table::sinx_tr#0 } { print_char_cursor#103 = print_char_cursor#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_word:51::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 print_char_cursor#103 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#1 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] { { print_word::w#1 = print_word::w#3 sin8u_table::step#0 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_word:51::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_word::w#2 = print_word::w#3 sin8u_table::x#10 } { print_char_cursor#102 = print_char_cursor#2 } { print_byte::b#2 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 print_char_cursor#103 print_char_cursor#66 } { print_byte::b#2 = print_byte::b#8 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sbyte:55::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_byte::b#0 = print_byte::b#8 } { print_char_cursor#103 = print_char_cursor#19 print_char_cursor#66 } { print_char::ch#5 = print_char::ch#6 } } main:2::sin8u_table:7::print_sword:59::print_char:94 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sword:59::print_char:100 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sbyte:55::print_char:110 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_char_cursor#2 = print_char_cursor#66 } } main:2::sin8u_table:7::print_sbyte:55::print_char:116 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } { print_char_cursor#2 = print_char_cursor#66 } } ) always clobbers reg byte y +Statement [87] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { } main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#118 } } main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { } main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:49 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#118 } } main:2::sin8u_table:7::print_str:53 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:57 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } main:2::sin8u_table:7::print_str:61 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] { { print_char_cursor#109 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } { print_word::w#0 = print_word::w#3 } { print_char_cursor#102 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:59 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = sin8u_table::sinx_sc#0 } } ) always clobbers reg byte a +Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:55 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = sin8u_table::sinx#0 } } ) always clobbers reg byte a +Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:42 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] { { mul8su::a#0 = sin8u_table::sinx#0 } } ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) 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:42::mul8u:119 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8su::a#0 = sin8u_table::sinx#0 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 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 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#2 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) always clobbers reg byte a +Statement [145] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } ) always clobbers reg byte a +Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::sinx#1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#0 = mulu8_sel::return#12 } { mul8u::a#2 = mul8u::a#6 mul8u::b#2 mul8u::b#1 mulu8_sel::v2#5 mulu8_sel::v2#0 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#1 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#1 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#1 sin8s::x2#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#12 = mulu8_sel::return#2 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#2 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#10 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#3 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#3 sin8s::x3#0 } { mul8u::return#3 = mul8u::res#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::return#11 = mulu8_sel::return#12 } { mul8u::b#1 = mul8u::b#2 mulu8_sel::v2#5 mulu8_sel::v2#4 sin8s::x1#0 } { mul8u::a#2 = mul8u::a#6 mulu8_sel::v1#5 mulu8_sel::v1#4 sin8s::x4#0 } { mul8u::return#3 = mul8u::res#2 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = mulu8_sel::return#12 } } ) 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:38::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v2#0 = mulu8_sel::v2#5 mulu8_sel::v1#5 mulu8_sel::v1#0 sin8s::x1#0 } { mulu8_sel::return#0 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#1 = mulu8_sel::v1#5 sin8s::x2#0 } { mulu8_sel::v2#1 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#1 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#2 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::return#12 = mulu8_sel::return#2 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#3 = mulu8_sel::v1#5 sin8s::x3#0 } { mulu8_sel::v2#3 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#10 = mulu8_sel::return#12 } } main:2::sin8u_table:7::sin8s:38::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#10 sin8u_table::sintab#2 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] { { sin8s::x#2 = sin8u_table::x#10 } { sin8s::return#0 = sin8s::return#2 } { mulu8_sel::v1#4 = mulu8_sel::v1#5 sin8s::x4#0 } { mulu8_sel::v2#4 = mulu8_sel::v2#5 sin8s::x1#0 } { mulu8_sel::return#11 = 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = 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 ] { { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize) 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize [ 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 ] { { div16u::return#0 = div16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [218] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [220] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:214 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ sin8u_table::x#10 sin8u_table::x#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] : zp[2]:6 , @@ -5479,82 +5467,77 @@ Potential registers zp[1]:90 [ divr16u::$1 ] : zp[1]:90 , reg byte a , reg byte Potential registers zp[1]:91 [ divr16u::$2 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 346.86: zp[2]:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp[2]:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp[1]:63 [ mul8u::$1 ] 177.67: zp[1]:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 6: zp[1]:23 [ mul8u::b#2 mul8u::b#1 ] 4: zp[2]:59 [ mul8u::return#2 ] 4: zp[2]:79 [ mul8u::return#3 ] -Uplift Scope [] 225.78: zp[2]:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 218.06: zp[2]:12 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] -Uplift Scope [print_str] 305.5: zp[2]:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplift Scope [divr16u] 96.25: zp[2]:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp[2]:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp[1]:90 [ divr16u::$1 ] 22: zp[1]:91 [ divr16u::$2 ] 18.19: zp[1]:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp[2]:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp[2]:86 [ divr16u::return#2 ] -Uplift Scope [sin8s] 27.5: zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp[1]:50 [ sin8s::return#2 ] 13: zp[1]:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp[1]:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp[2]:64 [ sin8s::$4 ] 4: zp[1]:68 [ sin8s::x2#0 ] 4: zp[1]:72 [ sin8s::x3_6#0 ] 4: zp[1]:75 [ sin8s::x4#0 ] 4: zp[1]:77 [ sin8s::x5#0 ] 4: zp[1]:78 [ sin8s::x5_128#0 ] 1: zp[1]:70 [ sin8s::x3#0 ] 0.64: zp[1]:66 [ sin8s::x1#0 ] 0.33: zp[1]:73 [ sin8s::usinx#0 ] 0.06: zp[1]:29 [ sin8s::isUpper#10 ] -Uplift Scope [mulu8_sel] 24: zp[1]: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[1]:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp[1]:67 [ mulu8_sel::return#0 ] 4: zp[1]:69 [ mulu8_sel::return#1 ] 4: zp[1]:71 [ mulu8_sel::return#2 ] 4: zp[1]:74 [ mulu8_sel::return#10 ] 4: zp[1]:76 [ mulu8_sel::return#11 ] 4: zp[2]:81 [ mulu8_sel::$0 ] 4: zp[2]:83 [ mulu8_sel::$1 ] 1.71: zp[1]:85 [ mulu8_sel::return#12 ] 0.33: zp[1]:36 [ mulu8_sel::select#5 ] -Uplift Scope [sin8u_table] 23.03: zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] 22: zp[1]:55 [ sin8u_table::$22 ] 12.42: zp[2]:4 [ sin8u_table::x#10 sin8u_table::x#1 ] 3.8: zp[2]:6 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] 2.36: zp[1]:51 [ sin8u_table::sinx#0 ] 2.2: zp[2]:53 [ sin8u_table::sinx_sc#0 ] 1.94: zp[1]:56 [ sin8u_table::sinx_tr#0 ] 0.27: zp[2]:48 [ sin8u_table::step#0 ] -Uplift Scope [print_byte] 39.25: zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] 4: zp[1]:57 [ print_byte::$0 ] 4: zp[1]:58 [ print_byte::$2 ] -Uplift Scope [memset] 36.67: zp[2]:44 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_word] 36.33: zp[2]:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -Uplift Scope [mul8su] 7.33: zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp[1]:61 [ mul8su::$7 ] 4: zp[1]:62 [ mul8su::$10 ] 2.6: zp[1]:52 [ mul8su::a#0 ] -Uplift Scope [print_char] 14: zp[1]:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplift Scope [print_sword] 10.83: zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplift Scope [print_sbyte] 10.83: zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplift Scope [div16u] 4: zp[2]:46 [ div16u::return#2 ] 1.33: zp[2]:88 [ div16u::return#0 ] +Uplift Scope [mul8u] 342,872,860.86: zp[2]:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 245,000,004.57: zp[2]:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 200,000,002: zp[1]:63 [ mul8u::$1 ] 167,508,339.67: zp[1]:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 300,003: zp[1]:23 [ mul8u::b#2 mul8u::b#1 ] 200,002: zp[2]:79 [ mul8u::return#3 ] 20,002: zp[2]:59 [ mul8u::return#2 ] +Uplift Scope [print_char] 16,000,007: zp[1]:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [] 12,862,734.35: zp[2]:12 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] 2,102,140.27: zp[2]:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] +Uplift Scope [print_byte] 2,000,002: zp[1]:57 [ print_byte::$0 ] 2,000,002: zp[1]:58 [ print_byte::$2 ] 974,759.5: zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] +Uplift Scope [print_str] 3,012,504.25: zp[2]:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplift Scope [divr16u] 875,008.75: zp[2]:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 335,203.55: zp[2]:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:90 [ divr16u::$1 ] 200,002: zp[1]:91 [ divr16u::$2 ] 165,386.27: zp[1]:43 [ divr16u::i#2 divr16u::i#1 ] 67,857.82: zp[2]:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 2,002: zp[2]:86 [ divr16u::return#2 ] +Uplift Scope [mulu8_sel] 210,012: zp[1]: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 ] 200,002: zp[2]:81 [ mulu8_sel::$0 ] 200,002: zp[2]:83 [ mulu8_sel::$1 ] 150,010.5: zp[1]:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 21,429.43: zp[1]:85 [ mulu8_sel::return#12 ] 20,002: zp[1]:67 [ mulu8_sel::return#0 ] 20,002: zp[1]:69 [ mulu8_sel::return#1 ] 20,002: zp[1]:71 [ mulu8_sel::return#2 ] 20,002: zp[1]:74 [ mulu8_sel::return#10 ] 20,002: zp[1]:76 [ mulu8_sel::return#11 ] 16,666.83: zp[1]:36 [ mulu8_sel::select#5 ] +Uplift Scope [sin8s] 110,511.5: zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 50,005: zp[1]:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 47,005: zp[1]:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 20,002: zp[2]:64 [ sin8s::$4 ] 20,002: zp[1]:68 [ sin8s::x2#0 ] 20,002: zp[1]:72 [ sin8s::x3_6#0 ] 20,002: zp[1]:75 [ sin8s::x4#0 ] 20,002: zp[1]:77 [ sin8s::x5#0 ] 20,002: zp[1]:78 [ sin8s::x5_128#0 ] 5,000.5: zp[1]:70 [ sin8s::x3#0 ] 3,182.14: zp[1]:66 [ sin8s::x1#0 ] 2,002: zp[1]:50 [ sin8s::return#2 ] 1,666.83: zp[1]:73 [ sin8s::usinx#0 ] 277.81: zp[1]:29 [ sin8s::isUpper#10 ] +Uplift Scope [print_word] 92,574.33: zp[2]:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] +Uplift Scope [mul8su] 36,670.33: zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 20,002: zp[1]:61 [ mul8su::$7 ] 20,002: zp[1]:62 [ mul8su::$10 ] 2,200.4: zp[1]:52 [ mul8su::a#0 ] +Uplift Scope [print_sword] 45,171.33: zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [print_sbyte] 45,171.33: zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:44 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [sin8u_table] 2,095.84: zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] 2,002: zp[1]:55 [ sin8u_table::$22 ] 1,130.16: zp[2]:4 [ sin8u_table::x#10 sin8u_table::x#1 ] 345.58: zp[2]:6 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] 214.5: zp[1]:51 [ sin8u_table::sinx#0 ] 200.2: zp[2]:53 [ sin8u_table::sinx_sc#0 ] 176.65: zp[1]:56 [ sin8u_table::sinx_tr#0 ] 21.87: zp[2]:48 [ sin8u_table::step#0 ] +Uplift Scope [div16u] 367.33: zp[2]:88 [ div16u::return#0 ] 202: zp[2]:46 [ div16u::return#2 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] -Uplifting [mul8u] best 24164 combination zp[2]:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]: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#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp[2]:59 [ mul8u::return#2 ] zp[2]:79 [ mul8u::return#3 ] -Uplifting [] best 24164 combination zp[2]:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp[2]:12 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] -Uplifting [print_str] best 24164 combination zp[2]:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [divr16u] best 23954 combination zp[2]:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]: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[2]:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:86 [ divr16u::return#2 ] -Uplifting [sin8s] best 23849 combination zp[2]: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[2]:64 [ sin8s::$4 ] zp[1]:68 [ sin8s::x2#0 ] zp[1]:72 [ sin8s::x3_6#0 ] zp[1]:75 [ sin8s::x4#0 ] zp[1]:77 [ sin8s::x5#0 ] zp[1]:78 [ sin8s::x5_128#0 ] zp[1]:70 [ sin8s::x3#0 ] zp[1]:66 [ sin8s::x1#0 ] zp[1]:73 [ sin8s::usinx#0 ] zp[1]:29 [ sin8s::isUpper#10 ] -Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [mulu8_sel] best 23803 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[1]:71 [ mulu8_sel::return#2 ] zp[1]:74 [ mulu8_sel::return#10 ] zp[1]:76 [ mulu8_sel::return#11 ] zp[2]:81 [ mulu8_sel::$0 ] zp[2]:83 [ mulu8_sel::$1 ] zp[1]:85 [ mulu8_sel::return#12 ] zp[1]:36 [ mulu8_sel::select#5 ] +Uplifting [mul8u] best 24164 combination zp[2]:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]: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#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp[2]:79 [ mul8u::return#3 ] zp[2]:59 [ mul8u::return#2 ] +Uplifting [print_char] best 24143 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [] best 24143 combination zp[2]:12 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] zp[2]:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] +Uplifting [print_byte] best 24080 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] +Uplifting [print_str] best 24080 combination zp[2]:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplifting [divr16u] best 23870 combination zp[2]:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]: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[2]:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:86 [ divr16u::return#2 ] +Uplifting [mulu8_sel] best 23812 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 ] zp[2]:81 [ mulu8_sel::$0 ] zp[2]:83 [ mulu8_sel::$1 ] 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#12 ] reg byte a [ mulu8_sel::return#0 ] zp[1]:69 [ mulu8_sel::return#1 ] zp[1]:71 [ mulu8_sel::return#2 ] zp[1]:74 [ mulu8_sel::return#10 ] zp[1]:76 [ mulu8_sel::return#11 ] zp[1]:36 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [sin8u_table] best 23693 combination zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] reg byte a [ sin8u_table::$22 ] zp[2]:4 [ sin8u_table::x#10 sin8u_table::x#1 ] zp[2]:6 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp[1]:51 [ sin8u_table::sinx#0 ] zp[2]:53 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp[2]:48 [ sin8u_table::step#0 ] -Uplifting [print_byte] best 23685 combination zp[1]:10 [ print_byte::b#8 print_byte::b#0 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 [memset] best 23685 combination zp[2]:44 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_word] best 23685 combination zp[2]:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -Uplifting [mul8su] best 23643 combination zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$7 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] -Uplifting [print_char] best 23622 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplifting [print_sword] best 23622 combination zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [print_sbyte] best 23622 combination zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 23622 combination zp[2]:46 [ div16u::return#2 ] zp[2]:88 [ div16u::return#0 ] -Uplifting [RADIX] best 23622 combination -Uplifting [print_ln] best 23622 combination -Uplifting [print_cls] best 23622 combination -Uplifting [main] best 23622 combination -Attempting to uplift remaining variables inzp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Uplifting [print_byte] best 23622 combination zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Attempting to uplift remaining variables inzp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 23622 combination zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Attempting to uplift remaining variables inzp[1]:68 [ sin8s::x2#0 ] -Uplifting [sin8s] best 23618 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 23759 combination zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] zp[2]:64 [ sin8s::$4 ] reg byte a [ sin8s::x2#0 ] reg byte a [ sin8s::x3_6#0 ] zp[1]:75 [ sin8s::x4#0 ] zp[1]:77 [ sin8s::x5#0 ] zp[1]:78 [ sin8s::x5_128#0 ] zp[1]:70 [ sin8s::x3#0 ] zp[1]:66 [ sin8s::x1#0 ] zp[1]:50 [ sin8s::return#2 ] zp[1]:73 [ sin8s::usinx#0 ] zp[1]:29 [ sin8s::isUpper#10 ] +Limited combination testing to 100 combinations of 5308416 possible. +Uplifting [print_word] best 23759 combination zp[2]:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] +Uplifting [mul8su] best 23717 combination zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$7 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] +Uplifting [print_sword] best 23717 combination zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_sbyte] best 23681 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [memset] best 23681 combination zp[2]:44 [ memset::dst#2 memset::dst#1 ] +Uplifting [sin8u_table] best 23641 combination zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] reg byte a [ sin8u_table::$22 ] zp[2]:4 [ sin8u_table::x#10 sin8u_table::x#1 ] zp[2]:6 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp[1]:51 [ sin8u_table::sinx#0 ] zp[2]:53 [ sin8u_table::sinx_sc#0 ] zp[1]:56 [ sin8u_table::sinx_tr#0 ] zp[2]:48 [ sin8u_table::step#0 ] +Uplifting [div16u] best 23641 combination zp[2]:88 [ div16u::return#0 ] zp[2]:46 [ div16u::return#2 ] +Uplifting [RADIX] best 23641 combination +Uplifting [print_ln] best 23641 combination +Uplifting [print_cls] best 23641 combination +Uplifting [main] best 23641 combination +Attempting to uplift remaining variables inzp[1]:69 [ mulu8_sel::return#1 ] +Uplifting [mulu8_sel] best 23635 combination reg byte a [ mulu8_sel::return#1 ] Attempting to uplift remaining variables inzp[1]:71 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 23612 combination reg byte a [ mulu8_sel::return#2 ] -Attempting to uplift remaining variables inzp[1]:72 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 23608 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [mulu8_sel] best 23629 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp[1]:74 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 23602 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 23623 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp[1]:75 [ sin8s::x4#0 ] -Uplifting [sin8s] best 23598 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 23619 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp[1]:76 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 23592 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 23613 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp[1]:77 [ sin8s::x5#0 ] -Uplifting [sin8s] best 23586 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 23607 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp[1]:78 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 23580 combination reg byte a [ sin8s::x5_128#0 ] -Attempting to uplift remaining variables inzp[1]:51 [ sin8u_table::sinx#0 ] -Uplifting [sin8u_table] best 23580 combination zp[1]:51 [ sin8u_table::sinx#0 ] -Attempting to uplift remaining variables inzp[1]:85 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 23562 combination reg byte a [ mulu8_sel::return#12 ] -Attempting to uplift remaining variables inzp[1]:70 [ sin8s::x3#0 ] -Uplifting [sin8s] best 23562 combination zp[1]:70 [ sin8s::x3#0 ] -Attempting to uplift remaining variables inzp[1]:66 [ sin8s::x1#0 ] -Uplifting [sin8s] best 23562 combination zp[1]:66 [ sin8s::x1#0 ] +Uplifting [sin8s] best 23601 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp[1]:36 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 23562 combination zp[1]:36 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 23601 combination zp[1]:36 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp[1]:70 [ sin8s::x3#0 ] +Uplifting [sin8s] best 23601 combination zp[1]:70 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp[1]:66 [ sin8s::x1#0 ] +Uplifting [sin8s] best 23601 combination zp[1]:66 [ sin8s::x1#0 ] +Attempting to uplift remaining variables inzp[1]:50 [ sin8s::return#2 ] +Uplifting [sin8s] best 23541 combination reg byte a [ sin8s::return#2 ] Attempting to uplift remaining variables inzp[1]:73 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 23562 combination zp[1]:73 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 23541 combination zp[1]:73 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp[1]:29 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 23562 combination zp[1]:29 [ sin8s::isUpper#10 ] -Coalescing zero page register [ zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] ] with [ zp[1]:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] - score: 1 +Uplifting [sin8s] best 23541 combination zp[1]:29 [ sin8s::isUpper#10 ] +Attempting to uplift remaining variables inzp[1]:51 [ sin8u_table::sinx#0 ] +Uplifting [sin8u_table] best 23541 combination zp[1]:51 [ sin8u_table::sinx#0 ] +Attempting to uplift remaining variables inzp[1]:56 [ sin8u_table::sinx_tr#0 ] +Uplifting [sin8u_table] best 23541 combination zp[1]:56 [ sin8u_table::sinx_tr#0 ] Coalescing zero page register [ zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp[2]:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] ] with [ zp[2]:53 [ sin8u_table::sinx_sc#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 ] ] with [ zp[2]:59 [ mul8u::return#2 ] ] - score: 1 @@ -5568,10 +5551,10 @@ Coalescing zero page register [ zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 s Coalescing zero page register [ zp[2]:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:46 [ div16u::return#2 sin8u_table::step#0 div16u::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp[2]:81 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 Coalescing zero page register [ zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] ] with [ zp[2]:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] ] -Coalescing zero page register [ zp[1]:29 [ sin8s::isUpper#10 ] ] with [ zp[1]:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] Coalescing zero page register [ zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 ] ] with [ zp[2]:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ] Coalescing zero page register [ zp[2]:44 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:2 [ sin8u_table::i#10 sin8u_table::i#1 ] ] -Coalescing zero page register [ zp[1]:51 [ sin8u_table::sinx#0 ] ] with [ zp[1]:36 [ mulu8_sel::select#5 ] ] +Coalescing zero page register [ zp[1]:51 [ sin8u_table::sinx#0 ] ] with [ zp[1]:29 [ sin8s::isUpper#10 ] ] +Coalescing zero page register [ zp[1]:56 [ sin8u_table::sinx_tr#0 ] ] with [ zp[1]:36 [ mulu8_sel::select#5 ] ] Coalescing zero page register [ zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ] with [ zp[2]:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] ] Coalescing zero page register [ zp[2]:44 [ memset::dst#2 memset::dst#1 sin8u_table::i#10 sin8u_table::i#1 ] ] with [ zp[2]:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] Coalescing zero page register [ zp[2]:39 [ divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp[2]:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] ] @@ -5580,11 +5563,11 @@ Allocated (was zp[2]:6) zp[2]:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] Allocated (was zp[2]:8) zp[2]:6 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] Allocated (was zp[2]:12) zp[2]:8 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] Allocated (was zp[2]:21) zp[2]:10 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ] -Allocated (was zp[1]:29) zp[1]:12 [ sin8s::isUpper#10 print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Allocated (was zp[2]:39) zp[2]:13 [ divr16u::dividend#2 divr16u::dividend#0 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] -Allocated (was zp[2]:41) zp[2]:15 [ 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[2]:44) zp[2]:17 [ memset::dst#2 memset::dst#1 sin8u_table::i#10 sin8u_table::i#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] -Allocated (was zp[1]:51) zp[1]:19 [ sin8u_table::sinx#0 mulu8_sel::select#5 ] +Allocated (was zp[2]:39) zp[2]:12 [ divr16u::dividend#2 divr16u::dividend#0 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] +Allocated (was zp[2]:41) zp[2]:14 [ 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[2]:44) zp[2]:16 [ memset::dst#2 memset::dst#1 sin8u_table::i#10 sin8u_table::i#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated (was zp[1]:51) zp[1]:18 [ sin8u_table::sinx#0 sin8s::isUpper#10 ] +Allocated (was zp[1]:56) zp[1]:19 [ sin8u_table::sinx_tr#0 mulu8_sel::select#5 ] Allocated (was zp[1]:66) zp[1]:20 [ sin8s::x1#0 ] Allocated (was zp[1]:70) zp[1]:21 [ sin8s::x3#0 ] Allocated (was zp[1]:73) zp[1]:22 [ sin8s::usinx#0 ] @@ -5656,13 +5639,14 @@ sin8u_table: { .label amplitude = max-min .const sum = min+max .const mid = sum/2+1 - .label step = $f - .label sinx = $13 + .label step = $e + .label sinx = $12 .label sinx_sc = $a + .label sinx_tr = $13 .label sintab = 4 // Iterate over the table .label x = 2 - .label i = $11 + .label i = $10 // [10] call div16u // [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: @@ -5725,9 +5709,8 @@ sin8u_table: { // [73] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] print_byte_from___b6: // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 - lda #min - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuxx=vbuc1 + ldx #min jsr print_byte // [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] __b7_from___b6: @@ -5753,9 +5736,8 @@ sin8u_table: { // [73] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] print_byte_from___b8: // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 - lda #max - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuxx=vbuc1 + ldx #max jsr print_byte // [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] __b9_from___b8: @@ -5781,9 +5763,8 @@ sin8u_table: { // [73] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] print_byte_from___b10: // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 - lda #amplitude - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuxx=vbuc1 + ldx #amplitude jsr print_byte // [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] __b11_from___b10: @@ -5809,9 +5790,8 @@ sin8u_table: { // [73] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] print_byte_from___b12: // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 - lda #mid - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuxx=vbuc1 + ldx #mid jsr print_byte // [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] __b13_from___b12: @@ -5887,11 +5867,12 @@ sin8u_table: { // [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 // [44] (byte~) sin8u_table::$22 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 lda.z sinx_sc+1 - // [45] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$22 -- vbuxx=vbuc1_plus_vbuaa - tax - axs #-[mid] - // [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx - txa + // [45] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$22 -- vbuz1=vbuc1_plus_vbuaa + clc + adc #mid + sta.z sinx_tr + // [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuz2 + lda.z sinx_tr ldy #0 sta (sintab),y // [47] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 @@ -5946,9 +5927,8 @@ sin8u_table: { jmp __b18 // sin8u_table::@18 __b18: - // [54] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 - lda.z sinx - sta.z print_sbyte.b + // [54] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsxx=vbsz1 + ldx.z sinx // [55] call print_sbyte jsr print_sbyte // [56] phi from sin8u_table::@18 to sin8u_table::@19 [phi:sin8u_table::@18->sin8u_table::@19] @@ -5994,8 +5974,8 @@ sin8u_table: { jmp __b22 // sin8u_table::@22 __b22: - // [62] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx - stx.z print_byte.b + // [62] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuxx=vbuz1 + ldx.z sinx_tr // [63] call print_byte // [73] phi from sin8u_table::@22 to print_byte [phi:sin8u_table::@22->print_byte] print_byte_from___b22: @@ -6088,11 +6068,10 @@ print_ln: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c - // [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -6110,12 +6089,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [78] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [78] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [79] call print_char // [81] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -6148,9 +6126,9 @@ print_char: { } // print_str // Print a zero-terminated string -// print_str(byte* zp($d) str) +// print_str(byte* zp($c) str) print_str: { - .label str = $d + .label str = $c // [86] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] __b1_from_print_str: __b1_from___b2: @@ -6190,9 +6168,9 @@ print_str: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp($d) w) +// print_sword(signed word zp($c) w) print_sword: { - .label w = $d + .label w = $c // [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 bmi __b1_from_print_sword @@ -6254,12 +6232,11 @@ print_sword: { } // print_word // Print a word as HEX -// print_word(word zp($d) w) +// print_word(word zp($c) w) print_word: { - .label w = $d - // [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + .label w = $c + // [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [104] call print_byte // [73] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -6269,9 +6246,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuxx=_lo_vwuz1 + ldx.z w // [106] call print_byte // [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -6286,11 +6262,10 @@ print_word: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($c) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $c - // [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1_from_print_sbyte // [109] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] __b3_from_print_sbyte: @@ -6338,12 +6313,12 @@ print_sbyte: { jmp __b4 // print_sbyte::@4 __b4: - // [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2_from___b4 } // mul8su @@ -6398,7 +6373,7 @@ mul8su: { // 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 = $d + .label mb = $c .label res = $a .label return = $a // [129] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 -- vwuz1=_word_vbuaa @@ -6469,17 +6444,17 @@ mul8u: { // 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 -// sin8s(word zp($d) x) +// sin8s(word zp($c) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $d - .label x = $d + .label __4 = $c + .label x = $c .label x1 = $14 .label x3 = $15 .label usinx = $16 // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $c + .label isUpper = $12 // [139] if((word) sin8s::x#2<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 cmp #>PI_u4f12 @@ -6747,7 +6722,7 @@ mulu8_sel: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $f + .label return = $e // [192] call divr16u // [196] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: @@ -6768,12 +6743,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($d) dividend, word zp($11) rem) +// divr16u(word zp($c) dividend, word zp($10) rem) divr16u: { - .label rem = $11 - .label dividend = $d - .label quotient = $f - .label return = $f + .label rem = $10 + .label dividend = $c + .label quotient = $e + .label return = $e // [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: // [197] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 @@ -6897,7 +6872,7 @@ memset: { .const num = $3e8 .label str = $400 .label end = str+num - .label dst = $11 + .label dst = $10 // [217] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: // [217] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 @@ -7027,6 +7002,7 @@ Removing instruction lda #>0 Removing instruction lda #<0 Removing instruction lda #>0 Replacing instruction ldy.z sinx with TAY +Removing instruction lda.z sinx_tr Removing instruction ldy #0 Removing instruction lda #>0 Replacing instruction ldx.z x1 with TAX @@ -7244,11 +7220,11 @@ FINAL SYMBOL TABLE (word) div16u::dividend (word) div16u::divisor (word) div16u::return -(word) div16u::return#0 return zp[2]:15 1.3333333333333333 -(word) div16u::return#2 return zp[2]:15 4.0 +(word) div16u::return#0 return zp[2]:14 367.33333333333337 +(word) div16u::return#2 return zp[2]:14 202.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 22.0 -(byte~) divr16u::$2 reg byte a 22.0 +(byte~) divr16u::$1 reg byte a 200002.0 +(byte~) divr16u::$2 reg byte a 200002.0 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -7256,26 +7232,26 @@ FINAL SYMBOL TABLE (label) divr16u::@5 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:13 2.75 -(word) divr16u::dividend#2 dividend zp[2]:13 4.714285714285714 +(word) divr16u::dividend#0 dividend zp[2]:12 25000.25 +(word) divr16u::dividend#2 dividend zp[2]:12 42857.57142857143 (word) divr16u::divisor (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 16.5 -(byte) divr16u::i#2 reg byte x 1.6923076923076923 +(byte) divr16u::i#1 reg byte x 150001.5 +(byte) divr16u::i#2 reg byte x 15384.76923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:15 16.5 -(word) divr16u::quotient#2 quotient zp[2]:15 11.0 -(word) divr16u::quotient#3 quotient zp[2]:15 2.75 +(word) divr16u::quotient#1 quotient zp[2]:14 150001.5 +(word) divr16u::quotient#2 quotient zp[2]:14 100001.0 +(word) divr16u::quotient#3 quotient zp[2]:14 25000.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:17 8.25 -(word) divr16u::rem#1 rem zp[2]:17 22.0 -(word) divr16u::rem#2 rem zp[2]:17 22.0 -(word) divr16u::rem#4 rem zp[2]:17 22.0 -(word) divr16u::rem#5 rem zp[2]:17 11.0 -(word) divr16u::rem#9 rem zp[2]:17 11.0 +(word) divr16u::rem#0 rem zp[2]:16 75000.75 +(word) divr16u::rem#1 rem zp[2]:16 200002.0 +(word) divr16u::rem#2 rem zp[2]:16 200002.0 +(word) divr16u::rem#4 rem zp[2]:16 200002.0 +(word) divr16u::rem#5 rem zp[2]:16 100001.0 +(word) divr16u::rem#9 rem zp[2]:16 100001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:15 7.000000000000001 -(word) divr16u::return#2 return zp[2]:15 4.0 +(word) divr16u::return#0 return zp[2]:14 60200.8 +(word) divr16u::return#2 return zp[2]:14 2002.0 (void()) main() (label) main::@1 (label) main::@return @@ -7288,8 +7264,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:17 22.0 -(byte*) memset::dst#2 dst zp[2]:17 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 20002.0 +(byte*) memset::dst#2 dst zp[2]:16 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -7298,108 +7274,108 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) -(byte~) mul8su::$10 reg byte a 4.0 -(byte~) mul8su::$7 reg byte a 4.0 +(byte~) mul8su::$10 reg byte a 20002.0 +(byte~) mul8su::$7 reg byte a 20002.0 (label) mul8su::@1 (label) mul8su::@2 (label) mul8su::@3 (label) mul8su::@return (signed byte) mul8su::a -(signed byte) mul8su::a#0 reg byte y 2.6 +(signed byte) mul8su::a#0 reg byte y 2200.4 (byte) mul8su::b (const byte) mul8su::b#0 b = (const byte) sin8u_table::amplitude#0+(byte) 1 (word) mul8su::m -(word) mul8su::m#0 m zp[2]:10 2.0 -(word) mul8su::m#1 m zp[2]:10 4.0 -(word) mul8su::m#2 m zp[2]:10 1.3333333333333333 +(word) mul8su::m#0 m zp[2]:10 10001.0 +(word) mul8su::m#1 m zp[2]:10 20002.0 +(word) mul8su::m#2 m zp[2]:10 6667.333333333333 (signed word) mul8su::return (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 202.0 +(byte~) mul8u::$1 reg byte a 2.00000002E8 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 101.0 -(byte) mul8u::a#1 reg byte x 4.0 -(byte) mul8u::a#2 reg byte x 2.0 -(byte) mul8u::a#3 reg byte x 67.66666666666666 -(byte) mul8u::a#6 reg byte x 3.0 +(byte) mul8u::a#0 reg byte x 1.00000001E8 +(byte) mul8u::a#1 reg byte x 20002.0 +(byte) mul8u::a#2 reg byte x 100001.0 +(byte) mul8u::a#3 reg byte x 6.683333416666667E7 +(byte) mul8u::a#6 reg byte x 555001.5 (byte) mul8u::b -(byte) mul8u::b#1 reg byte a 4.0 -(byte) mul8u::b#2 reg byte a 2.0 +(byte) mul8u::b#1 reg byte a 200002.0 +(byte) mul8u::b#2 reg byte a 100001.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:13 4.0 -(word) mul8u::mb#1 mb zp[2]:13 202.0 -(word) mul8u::mb#2 mb zp[2]:13 43.57142857142858 +(word) mul8u::mb#0 mb zp[2]:12 2000002.0 +(word) mul8u::mb#1 mb zp[2]:12 2.00000002E8 +(word) mul8u::mb#2 mb zp[2]:12 4.300000057142857E7 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:10 202.0 -(word) mul8u::res#2 res zp[2]:10 43.85714285714286 -(word) mul8u::res#6 res zp[2]:10 101.0 +(word) mul8u::res#1 res zp[2]:10 2.00000002E8 +(word) mul8u::res#2 res zp[2]:10 4.287285785714286E7 +(word) mul8u::res#6 res zp[2]:10 1.00000001E8 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:10 4.0 -(word) mul8u::return#3 return zp[2]:10 4.0 +(word) mul8u::return#2 return zp[2]:10 20002.0 +(word) mul8u::return#3 return zp[2]:10 200002.0 (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) -(word~) mulu8_sel::$0 zp[2]:10 4.0 -(word~) mulu8_sel::$1 zp[2]:10 4.0 +(word~) mulu8_sel::$0 zp[2]:10 200002.0 +(word~) mulu8_sel::$1 zp[2]:10 200002.0 (label) mulu8_sel::@1 (label) mulu8_sel::@return (byte) mulu8_sel::return -(byte) mulu8_sel::return#0 reg byte a 4.0 -(byte) mulu8_sel::return#1 reg byte a 4.0 -(byte) mulu8_sel::return#10 reg byte a 4.0 -(byte) mulu8_sel::return#11 reg byte a 4.0 -(byte) mulu8_sel::return#12 reg byte a 1.714285714285714 -(byte) mulu8_sel::return#2 reg byte a 4.0 +(byte) mulu8_sel::return#0 reg byte a 20002.0 +(byte) mulu8_sel::return#1 reg byte a 20002.0 +(byte) mulu8_sel::return#10 reg byte a 20002.0 +(byte) mulu8_sel::return#11 reg byte a 20002.0 +(byte) mulu8_sel::return#12 reg byte a 21429.428571428572 +(byte) mulu8_sel::return#2 reg byte a 20002.0 (byte) mulu8_sel::select -(byte) mulu8_sel::select#5 select zp[1]:19 0.3333333333333333 +(byte) mulu8_sel::select#5 select zp[1]:19 16666.833333333332 (byte) mulu8_sel::v1 -(byte) mulu8_sel::v1#0 reg byte x 2.0 -(byte) mulu8_sel::v1#1 reg byte x 2.0 -(byte) mulu8_sel::v1#2 reg byte x 4.0 -(byte) mulu8_sel::v1#3 reg byte x 2.0 -(byte) mulu8_sel::v1#4 reg byte x 2.0 -(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v1#0 reg byte x 10001.0 +(byte) mulu8_sel::v1#1 reg byte x 10001.0 +(byte) mulu8_sel::v1#2 reg byte x 20002.0 +(byte) mulu8_sel::v1#3 reg byte x 10001.0 +(byte) mulu8_sel::v1#4 reg byte x 10001.0 +(byte) mulu8_sel::v1#5 reg byte x 150006.0 (byte) mulu8_sel::v2 -(byte) mulu8_sel::v2#0 reg byte y 4.0 -(byte) mulu8_sel::v2#1 reg byte y 4.0 -(byte) mulu8_sel::v2#3 reg byte y 4.0 -(byte) mulu8_sel::v2#4 reg byte y 4.0 -(byte) mulu8_sel::v2#5 reg byte y 5.0 +(byte) mulu8_sel::v2#0 reg byte y 20002.0 +(byte) mulu8_sel::v2#1 reg byte y 20002.0 +(byte) mulu8_sel::v2#3 reg byte y 20002.0 +(byte) mulu8_sel::v2#4 reg byte y 20002.0 +(byte) mulu8_sel::v2#5 reg byte y 70002.5 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte x 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:12 4.0 -(byte) print_byte::b#1 b zp[1]:12 4.0 -(byte) print_byte::b#2 b zp[1]:12 4.0 -(byte) print_byte::b#7 b zp[1]:12 22.0 -(byte) print_byte::b#8 b zp[1]:12 5.25 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 200002.0 +(byte) print_byte::b#2 reg byte x 200002.0 +(byte) print_byte::b#7 reg byte x 2002.0 +(byte) print_byte::b#8 reg byte x 552751.5 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2000002.0 +(byte) print_char::ch#5 reg byte a 2000002.0 +(byte) print_char::ch#6 reg byte a 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 101.0 -(byte*) print_char_cursor#102 print_char_cursor zp[2]:8 8.5 -(byte*) print_char_cursor#103 print_char_cursor zp[2]:8 8.999999999999998 -(byte*) print_char_cursor#109 print_char_cursor zp[2]:8 54.0 -(byte*) print_char_cursor#118 print_char_cursor zp[2]:8 22.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 3.2340425531914887 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 12.321428571428571 -(byte*) print_char_cursor#66 print_char_cursor zp[2]:8 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 1000001.0 +(byte*) print_char_cursor#102 print_char_cursor zp[2]:8 55552.0 +(byte*) print_char_cursor#103 print_char_cursor zp[2]:8 403803.00000000006 +(byte*) print_char_cursor#109 print_char_cursor zp[2]:8 14409.0 +(byte*) print_char_cursor#118 print_char_cursor zp[2]:8 2002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:8 257944.95744680852 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 109018.39285714286 +(byte*) print_char_cursor#66 print_char_cursor zp[2]:8 1.1020004E7 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 8.783783783783784 -(byte*) print_line_cursor#12 print_line_cursor zp[2]:6 204.0 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 13.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 81135.27027027027 +(byte*) print_line_cursor#12 print_line_cursor zp[2]:6 2010003.0 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 11002.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -7410,18 +7386,18 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:12 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:12 2.8333333333333335 -(signed byte) print_sbyte::b#4 b zp[1]:12 4.0 +(signed byte) print_sbyte::b#0 reg byte x 20002.0 +(signed byte) print_sbyte::b#1 reg byte x 5167.333333333333 +(signed byte) print_sbyte::b#4 reg byte x 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:13 202.0 -(byte*) print_str::str#10 str zp[2]:13 101.5 -(byte*) print_str::str#12 str zp[2]:13 2.0 +(byte*) print_str::str#0 str zp[2]:12 2000002.0 +(byte*) print_str::str#10 str zp[2]:12 1002501.25 +(byte*) print_str::str#12 str zp[2]:12 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -7429,19 +7405,19 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:13 4.0 -(signed word) print_sword::w#1 w zp[2]:13 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:13 4.0 +(signed word) print_sword::w#0 w zp[2]:12 20002.0 +(signed word) print_sword::w#1 w zp[2]:12 5167.333333333333 +(signed word) print_sword::w#4 w zp[2]:12 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:13 4.0 -(word) print_word::w#1 w zp[2]:13 4.0 -(word) print_word::w#2 w zp[2]:13 22.0 -(word) print_word::w#3 w zp[2]:13 6.333333333333334 +(word) print_word::w#0 w zp[2]:12 20002.0 +(word) print_word::w#1 w zp[2]:12 202.0 +(word) print_word::w#2 w zp[2]:12 2002.0 +(word) print_word::w#3 w zp[2]:12 70368.33333333333 (signed byte()) sin8s((word) sin8s::x) -(word~) sin8s::$4 zp[2]:13 4.0 +(word~) sin8s::$4 zp[2]:12 20002.0 (label) sin8s::@1 (label) sin8s::@10 (label) sin8s::@11 @@ -7459,40 +7435,40 @@ FINAL SYMBOL TABLE (label) sin8s::@return (const byte) sin8s::DIV_6 = (byte) $2b (byte) sin8s::isUpper -(byte) sin8s::isUpper#10 isUpper zp[1]:12 0.05555555555555555 +(byte) sin8s::isUpper#10 isUpper zp[1]:18 277.80555555555554 (signed byte) sin8s::return -(signed byte) sin8s::return#0 reg byte a 5.0 -(signed byte) sin8s::return#2 reg byte a 22.0 -(signed byte) sin8s::return#5 reg byte a 4.0 +(signed byte) sin8s::return#0 reg byte a 7001.0 +(signed byte) sin8s::return#2 reg byte a 2002.0 +(signed byte) sin8s::return#5 reg byte a 20002.0 (signed byte) sin8s::sinx -(signed byte) sin8s::sinx#1 reg byte a 4.0 +(signed byte) sin8s::sinx#1 reg byte a 20002.0 (byte) sin8s::usinx -(byte) sin8s::usinx#0 usinx zp[1]:22 0.3333333333333333 -(byte) sin8s::usinx#1 reg byte x 4.0 -(byte) sin8s::usinx#2 reg byte x 4.0 -(byte) sin8s::usinx#4 reg byte x 2.0 +(byte) sin8s::usinx#0 usinx zp[1]:22 1666.8333333333333 +(byte) sin8s::usinx#1 reg byte x 20002.0 +(byte) sin8s::usinx#2 reg byte x 20002.0 +(byte) sin8s::usinx#4 reg byte x 10001.0 (word) sin8s::x -(word) sin8s::x#0 x zp[2]:13 4.0 -(word) sin8s::x#1 x zp[2]:13 4.0 -(word) sin8s::x#2 x zp[2]:13 8.5 -(word) sin8s::x#4 x zp[2]:13 5.0 -(word) sin8s::x#6 x zp[2]:13 6.0 +(word) sin8s::x#0 x zp[2]:12 20002.0 +(word) sin8s::x#1 x zp[2]:12 20002.0 +(word) sin8s::x#2 x zp[2]:12 15502.0 +(word) sin8s::x#4 x zp[2]:12 25002.5 +(word) sin8s::x#6 x zp[2]:12 30003.0 (byte) sin8s::x1 -(byte) sin8s::x1#0 x1 zp[1]:20 0.6363636363636365 +(byte) sin8s::x1#0 x1 zp[1]:20 3182.1363636363635 (byte) sin8s::x2 -(byte) sin8s::x2#0 reg byte a 4.0 +(byte) sin8s::x2#0 reg byte a 20002.0 (byte) sin8s::x3 -(byte) sin8s::x3#0 x3 zp[1]:21 1.0 +(byte) sin8s::x3#0 x3 zp[1]:21 5000.5 (byte) sin8s::x3_6 -(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x3_6#0 reg byte a 20002.0 (byte) sin8s::x4 -(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x4#0 reg byte a 20002.0 (byte) sin8s::x5 -(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5#0 reg byte a 20002.0 (byte) sin8s::x5_128 -(byte) sin8s::x5_128#0 reg byte a 4.0 +(byte) sin8s::x5_128#0 reg byte a 20002.0 (void()) sin8u_table((byte*) sin8u_table::sintab , (word) sin8u_table::tabsize , (byte) sin8u_table::min , (byte) sin8u_table::max) -(byte~) sin8u_table::$22 reg byte a 22.0 +(byte~) sin8u_table::$22 reg byte a 2002.0 (label) sin8u_table::@1 (label) sin8u_table::@10 (label) sin8u_table::@11 @@ -7521,8 +7497,8 @@ FINAL SYMBOL TABLE (byte) sin8u_table::amplitude (const byte) sin8u_table::amplitude#0 amplitude = (const byte) sin8u_table::max#0-(const byte) sin8u_table::min#0 (word) sin8u_table::i -(word) sin8u_table::i#1 i zp[2]:17 22.0 -(word) sin8u_table::i#10 i zp[2]:17 1.03125 +(word) sin8u_table::i#1 i zp[2]:16 2002.0 +(word) sin8u_table::i#10 i zp[2]:16 93.84375 (byte) sin8u_table::max (const byte) sin8u_table::max#0 max = (byte) $ff (byte) sin8u_table::mid @@ -7530,16 +7506,16 @@ FINAL SYMBOL TABLE (byte) sin8u_table::min (const byte) sin8u_table::min#0 min = (byte) $a (byte*) sin8u_table::sintab -(byte*) sin8u_table::sintab#1 sintab zp[2]:4 1.0476190476190477 -(byte*) sin8u_table::sintab#2 sintab zp[2]:4 2.75 +(byte*) sin8u_table::sintab#1 sintab zp[2]:4 95.33333333333333 +(byte*) sin8u_table::sintab#2 sintab zp[2]:4 250.25 (signed byte) sin8u_table::sinx -(signed byte) sin8u_table::sinx#0 sinx zp[1]:19 2.357142857142857 +(signed byte) sin8u_table::sinx#0 sinx zp[1]:18 214.5 (signed word) sin8u_table::sinx_sc -(signed word) sin8u_table::sinx_sc#0 sinx_sc zp[2]:10 2.1999999999999997 +(signed word) sin8u_table::sinx_sc#0 sinx_sc zp[2]:10 200.2 (byte) sin8u_table::sinx_tr -(byte) sin8u_table::sinx_tr#0 reg byte x 1.9411764705882355 +(byte) sin8u_table::sinx_tr#0 sinx_tr zp[1]:19 176.64705882352942 (word) sin8u_table::step -(word) sin8u_table::step#0 step zp[2]:15 0.2727272727272727 +(word) sin8u_table::step#0 step zp[2]:14 21.87272727272727 (const byte*) sin8u_table::str[(byte) 6] = (byte*) "step:" (const byte*) sin8u_table::str1[(byte) 6] = (byte*) " min:" (const byte*) sin8u_table::str2[(byte) 6] = (byte*) " max:" @@ -7553,33 +7529,34 @@ FINAL SYMBOL TABLE (const word) sin8u_table::sum#0 sum = (word)(const byte) sin8u_table::min#0+(const byte) sin8u_table::max#0 (word) sin8u_table::tabsize (word) sin8u_table::x -(word) sin8u_table::x#1 x zp[2]:2 11.0 -(word) sin8u_table::x#10 x zp[2]:2 1.4193548387096775 +(word) sin8u_table::x#1 x zp[2]:2 1001.0 +(word) sin8u_table::x#10 x zp[2]:2 129.16129032258064 zp[2]:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp[2]:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp[2]:6 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] +reg byte x [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] zp[2]:8 [ print_char_cursor#109 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#118 print_char_cursor#1 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] zp[2]:10 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] -zp[1]:12 [ sin8s::isUpper#10 print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 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 ] -zp[2]:13 [ divr16u::dividend#2 divr16u::dividend#0 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] -zp[2]:15 [ 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 ] +zp[2]:12 [ divr16u::dividend#2 divr16u::dividend#0 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$4 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 print_str::str#10 print_str::str#12 print_str::str#0 ] +zp[2]:14 [ 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 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] -zp[2]:17 [ memset::dst#2 memset::dst#1 sin8u_table::i#10 sin8u_table::i#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +zp[2]:16 [ memset::dst#2 memset::dst#1 sin8u_table::i#10 sin8u_table::i#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] reg byte a [ sin8s::return#2 ] -zp[1]:19 [ sin8u_table::sinx#0 mulu8_sel::select#5 ] +zp[1]:18 [ sin8u_table::sinx#0 sin8s::isUpper#10 ] reg byte y [ mul8su::a#0 ] reg byte a [ sin8u_table::$22 ] -reg byte x [ sin8u_table::sinx_tr#0 ] +zp[1]:19 [ sin8u_table::sinx_tr#0 mulu8_sel::select#5 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] reg byte a [ mul8su::$7 ] reg byte a [ mul8su::$10 ] reg byte a [ mul8u::$1 ] @@ -7602,7 +7579,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 19456 +Score: 19411 // File Comments // Upstart @@ -7657,13 +7634,14 @@ sin8u_table: { .label amplitude = max-min .const sum = min+max .const mid = sum/2+1 - .label step = $f - .label sinx = $13 + .label step = $e + .label sinx = $12 .label sinx_sc = $a + .label sinx_tr = $13 .label sintab = 4 // Iterate over the table .label x = 2 - .label i = $11 + .label i = $10 // div16u(PI2_u4f12, tabsize) // [10] call div16u // [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] @@ -7718,9 +7696,8 @@ sin8u_table: { // [19] call print_byte // [73] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 - lda #min - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuxx=vbuc1 + ldx #min jsr print_byte // [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] // sin8u_table::@7 @@ -7740,9 +7717,8 @@ sin8u_table: { // [23] call print_byte // [73] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 - lda #max - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuxx=vbuc1 + ldx #max jsr print_byte // [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] // sin8u_table::@9 @@ -7762,9 +7738,8 @@ sin8u_table: { // [27] call print_byte // [73] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 - lda #amplitude - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuxx=vbuc1 + ldx #amplitude jsr print_byte // [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] // sin8u_table::@11 @@ -7784,9 +7759,8 @@ sin8u_table: { // [31] call print_byte // [73] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy - // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 - lda #mid - sta.z print_byte.b + // [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuxx=vbuc1 + ldx #mid jsr print_byte // [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] // sin8u_table::@13 @@ -7856,12 +7830,12 @@ sin8u_table: { // [44] (byte~) sin8u_table::$22 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 lda.z sinx_sc+1 // sinx_tr = mid+>sinx_sc - // [45] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$22 -- vbuxx=vbuc1_plus_vbuaa - tax - axs #-[mid] + // [45] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$22 -- vbuz1=vbuc1_plus_vbuaa + clc + adc #mid + sta.z sinx_tr // *sintab++ = sinx_tr - // [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx - txa + // [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuz2 ldy #0 sta (sintab),y // *sintab++ = sinx_tr; @@ -7911,9 +7885,8 @@ sin8u_table: { jsr print_str // sin8u_table::@18 // print_sbyte(sinx) - // [54] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 - lda.z sinx - sta.z print_sbyte.b + // [54] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsxx=vbsz1 + ldx.z sinx // [55] call print_sbyte jsr print_sbyte // [56] phi from sin8u_table::@18 to sin8u_table::@19 [phi:sin8u_table::@18->sin8u_table::@19] @@ -7951,8 +7924,8 @@ sin8u_table: { jsr print_str // sin8u_table::@22 // print_byte(sinx_tr) - // [62] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx - stx.z print_byte.b + // [62] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuxx=vbuz1 + ldx.z sinx_tr // [63] call print_byte // [73] phi from sin8u_table::@22 to print_byte [phi:sin8u_table::@22->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@22->print_byte#0] -- register_copy @@ -8038,12 +8011,11 @@ print_ln: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c // b>>4 - // [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -8060,13 +8032,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [78] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [78] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [79] call print_char // [81] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy @@ -8098,9 +8069,9 @@ print_char: { } // print_str // Print a zero-terminated string -// print_str(byte* zp($d) str) +// print_str(byte* zp($c) str) print_str: { - .label str = $d + .label str = $c // [86] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] // [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#109 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy // [86] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy @@ -8138,9 +8109,9 @@ print_str: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp($d) w) +// print_sword(signed word zp($c) w) print_sword: { - .label w = $d + .label w = $c // if(w<0) // [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 @@ -8193,13 +8164,12 @@ print_sword: { } // print_word // Print a word as HEX -// print_word(word zp($d) w) +// print_word(word zp($c) w) print_word: { - .label w = $d + .label w = $c // print_byte(>w) - // [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [104] call print_byte // [73] phi from print_word to print_byte [phi:print_word->print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#102 [phi:print_word->print_byte#0] -- register_copy @@ -8207,9 +8177,8 @@ print_word: { jsr print_byte // print_word::@1 // print_byte(print_byte] // [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy @@ -8222,12 +8191,11 @@ print_word: { } // print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zp($c) b) +// print_sbyte(signed byte register(X) b) print_sbyte: { - .label b = $c // if(b<0) - // [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 - lda.z b + // [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1 // [109] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] // print_sbyte::@3 @@ -8265,12 +8233,12 @@ print_sbyte: { jsr print_char // print_sbyte::@4 // b = -b - // [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 - lda.z b + // [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsxx=_neg_vbsxx + txa eor #$ff clc adc #1 - sta.z b + tax jmp __b2 } // mul8su @@ -8322,7 +8290,7 @@ mul8su: { // 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 = $d + .label mb = $c .label res = $a .label return = $a // mb = b @@ -8389,17 +8357,17 @@ mul8u: { // 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 -// sin8s(word zp($d) x) +// sin8s(word zp($c) x) sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label __4 = $d - .label x = $d + .label __4 = $c + .label x = $c .label x1 = $14 .label x3 = $15 .label usinx = $16 // Move x1 into the range 0-PI/2 using sinus mirror symmetries - .label isUpper = $c + .label isUpper = $12 // if(x >= PI_u4f12 ) // [139] if((word) sin8s::x#2<(const word) PI_u4f12) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda.z x+1 @@ -8659,7 +8627,7 @@ mulu8_sel: { // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { - .label return = $f + .label return = $e // divr16u(dividend, divisor, 0) // [192] call divr16u // [196] phi from div16u to divr16u [phi:div16u->divr16u] @@ -8678,12 +8646,12 @@ div16u: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($d) dividend, word zp($11) rem) +// divr16u(word zp($c) dividend, word zp($10) rem) divr16u: { - .label rem = $11 - .label dividend = $d - .label quotient = $f - .label return = $f + .label rem = $10 + .label dividend = $c + .label quotient = $e + .label return = $e // [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] // [197] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -8800,7 +8768,7 @@ memset: { .const num = $3e8 .label str = $400 .label end = str+num - .label dst = $11 + .label dst = $10 // [217] phi from memset to memset::@1 [phi:memset->memset::@1] // [217] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #print] print_from_main: @@ -372,10 +372,10 @@ main: { jmp __b1 // main::@1 __b1: - // [9] (byte) print::p_x#1 ← *((byte*)&(struct Point) main::point2) -- vbuaa=_deref_pbuc1 - lda.z point2 - // [10] (byte) print::p_y#1 ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx point2+OFFSET_STRUCT_POINT_Y + // [9] (byte) print::p_x#1 ← *((byte*)&(struct Point) main::point2) -- vbuxx=_deref_pbuc1 + ldx.z point2 + // [10] (byte) print::p_y#1 ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuaa=_deref_pbuc1 + lda point2+OFFSET_STRUCT_POINT_Y // [11] call print // [13] phi from main::@1 to print [phi:main::@1->print] print_from___b1: @@ -389,12 +389,12 @@ main: { rts } // print -// print(byte register(A) p_x, byte register(X) p_y) +// print(byte register(X) p_x, byte register(A) p_y) print: { - // [14] *((const byte*) SCREEN) ← (byte) print::p_x#2 -- _deref_pbuc1=vbuaa - sta SCREEN - // [15] *((const byte*) SCREEN+(byte) 1) ← (byte) print::p_y#2 -- _deref_pbuc1=vbuxx - stx SCREEN+1 + // [14] *((const byte*) SCREEN) ← (byte) print::p_x#2 -- _deref_pbuc1=vbuxx + stx SCREEN + // [15] *((const byte*) SCREEN+(byte) 1) ← (byte) print::p_y#2 -- _deref_pbuc1=vbuaa + sta SCREEN+1 jmp __breturn // print::@return __breturn: @@ -449,16 +449,16 @@ FINAL SYMBOL TABLE (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 reg byte a 2.0 -(byte) print::p_x#1 reg byte a 2.0 -(byte) print::p_x#2 reg byte a 6.0 +(byte) print::p_x#0 reg byte x 11.0 +(byte) print::p_x#1 reg byte x 11.0 +(byte) print::p_x#2 reg byte x 123.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 4.0 -(byte) print::p_y#1 reg byte x 4.0 -(byte) print::p_y#2 reg byte x 3.0 +(byte) print::p_y#0 reg byte a 22.0 +(byte) print::p_y#1 reg byte a 22.0 +(byte) print::p_y#2 reg byte a 61.5 -reg byte a [ print::p_x#2 print::p_x#0 print::p_x#1 ] -reg byte x [ print::p_y#2 print::p_y#0 print::p_y#1 ] +reg byte x [ print::p_x#2 print::p_x#0 print::p_x#1 ] +reg byte a [ print::p_y#2 print::p_y#0 print::p_y#1 ] zp[2]:2 [ main::point1 ] zp[2]:4 [ main::point2 ] @@ -503,10 +503,10 @@ main: { dey bne !- // print(point1) - // [6] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point1) -- vbuaa=_deref_pbuc1 - lda.z point1 - // [7] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx point1+OFFSET_STRUCT_POINT_Y + // [6] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point1) -- vbuxx=_deref_pbuc1 + ldx.z point1 + // [7] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuaa=_deref_pbuc1 + lda point1+OFFSET_STRUCT_POINT_Y // [8] call print // [13] phi from main to print [phi:main->print] // [13] phi (byte) print::p_y#2 = (byte) print::p_y#0 [phi:main->print#0] -- register_copy @@ -514,10 +514,10 @@ main: { jsr print // main::@1 // print(point2) - // [9] (byte) print::p_x#1 ← *((byte*)&(struct Point) main::point2) -- vbuaa=_deref_pbuc1 - lda.z point2 - // [10] (byte) print::p_y#1 ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx point2+OFFSET_STRUCT_POINT_Y + // [9] (byte) print::p_x#1 ← *((byte*)&(struct Point) main::point2) -- vbuxx=_deref_pbuc1 + ldx.z point2 + // [10] (byte) print::p_y#1 ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuaa=_deref_pbuc1 + lda point2+OFFSET_STRUCT_POINT_Y // [11] call print // [13] phi from main::@1 to print [phi:main::@1->print] // [13] phi (byte) print::p_y#2 = (byte) print::p_y#1 [phi:main::@1->print#0] -- register_copy @@ -529,14 +529,14 @@ main: { rts } // print -// print(byte register(A) p_x, byte register(X) p_y) +// print(byte register(X) p_x, byte register(A) p_y) print: { // SCREEN[0] = p.x - // [14] *((const byte*) SCREEN) ← (byte) print::p_x#2 -- _deref_pbuc1=vbuaa - sta SCREEN + // [14] *((const byte*) SCREEN) ← (byte) print::p_x#2 -- _deref_pbuc1=vbuxx + stx SCREEN // SCREEN[1] = p.y - // [15] *((const byte*) SCREEN+(byte) 1) ← (byte) print::p_y#2 -- _deref_pbuc1=vbuxx - stx SCREEN+1 + // [15] *((const byte*) SCREEN+(byte) 1) ← (byte) print::p_y#2 -- _deref_pbuc1=vbuaa + sta SCREEN+1 // print::@return // } // [16] return diff --git a/src/test/ref/struct-22.sym b/src/test/ref/struct-22.sym index 8d2731bad..73984d915 100644 --- a/src/test/ref/struct-22.sym +++ b/src/test/ref/struct-22.sym @@ -17,15 +17,15 @@ (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 reg byte a 2.0 -(byte) print::p_x#1 reg byte a 2.0 -(byte) print::p_x#2 reg byte a 6.0 +(byte) print::p_x#0 reg byte x 11.0 +(byte) print::p_x#1 reg byte x 11.0 +(byte) print::p_x#2 reg byte x 123.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 4.0 -(byte) print::p_y#1 reg byte x 4.0 -(byte) print::p_y#2 reg byte x 3.0 +(byte) print::p_y#0 reg byte a 22.0 +(byte) print::p_y#1 reg byte a 22.0 +(byte) print::p_y#2 reg byte a 61.5 -reg byte a [ print::p_x#2 print::p_x#0 print::p_x#1 ] -reg byte x [ print::p_y#2 print::p_y#0 print::p_y#1 ] +reg byte x [ print::p_x#2 print::p_x#0 print::p_x#1 ] +reg byte a [ print::p_y#2 print::p_y#0 print::p_y#1 ] zp[2]:2 [ main::point1 ] zp[2]:4 [ main::point2 ] diff --git a/src/test/ref/struct-23.log b/src/test/ref/struct-23.log index e4e584758..1150675f7 100644 --- a/src/test/ref/struct-23.log +++ b/src/test/ref/struct-23.log @@ -196,12 +196,12 @@ Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) getPoint::return_x#0 = (byte) getPoint::return_x#4 -Alias (byte) getPoint::return_y#0 = (byte) getPoint::return_y#4 -Alias (byte) getPoint::return_x#1 = (byte) getPoint::return_x#5 -Alias (byte) getPoint::return_y#1 = (byte) getPoint::return_y#5 -Alias (byte) getPoint::return_x#2 = (byte) getPoint::p_x#0 (byte) getPoint::x#2 (byte) getPoint::return_x#6 (byte) getPoint::return_x#3 -Alias (byte) getPoint::return_y#2 = (byte) getPoint::p_y#0 (byte) getPoint::y#2 (byte) getPoint::return_y#6 (byte) getPoint::return_y#3 +Alias getPoint::return_x#0 = getPoint::return_x#4 +Alias getPoint::return_y#0 = getPoint::return_y#4 +Alias getPoint::return_x#1 = getPoint::return_x#5 +Alias getPoint::return_y#1 = getPoint::return_y#5 +Alias getPoint::return_x#2 = getPoint::p_x#0 getPoint::x#2 getPoint::return_x#6 getPoint::return_x#3 +Alias getPoint::return_y#2 = getPoint::p_y#0 getPoint::y#2 getPoint::return_y#6 getPoint::return_y#3 Successful SSA optimization Pass2AliasElimination Removing C-classic struct-unwound assignment [9] (struct Point) main::point1 ← struct-unwound {*((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_X), *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y)} Removing C-classic struct-unwound assignment [21] (struct Point) main::point2 ← struct-unwound {*((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_X), *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y)} @@ -310,20 +310,20 @@ VARIABLE REGISTER WEIGHTS (byte) getPoint::p_y (struct Point) getPoint::return (byte) getPoint::return_x -(byte) getPoint::return_x#0 2.0 -(byte) getPoint::return_x#1 2.0 -(byte) getPoint::return_x#2 1.0 +(byte) getPoint::return_x#0 11.0 +(byte) getPoint::return_x#1 11.0 +(byte) getPoint::return_x#2 5.5 (byte) getPoint::return_y -(byte) getPoint::return_y#0 2.0 -(byte) getPoint::return_y#1 2.0 -(byte) getPoint::return_y#2 0.6666666666666666 +(byte) getPoint::return_y#0 11.0 +(byte) getPoint::return_y#1 11.0 +(byte) getPoint::return_y#2 3.6666666666666665 (byte) getPoint::x (byte) getPoint::y (void()) main() -(byte~) main::$0_x 2.0 -(byte~) main::$0_y 2.0 -(byte~) main::$1_x 2.0 -(byte~) main::$1_y 2.0 +(byte~) main::$0_x 11.0 +(byte~) main::$0_y 11.0 +(byte~) main::$1_x 11.0 +(byte~) main::$1_y 11.0 (struct Point) main::point1 loadstore (struct Point) main::point2 loadstore @@ -498,10 +498,10 @@ getPoint: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a -Statement [22] *((const byte*) SCREEN+(byte) 3) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { { getPoint::return_x#1 = getPoint::return_x#2 } { getPoint::return_y#1 = getPoint::return_y#2 } } ) always clobbers reg byte a +Statement [13] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) [ main::point2 ] ( main:2 [ main::point2 ] { { getPoint::return_x#1 = getPoint::return_x#2 } { getPoint::return_y#1 = getPoint::return_y#2 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN+(byte) 3) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ getPoint::return_x#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ getPoint::return_y#2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ getPoint::return_x#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -516,8 +516,8 @@ Potential registers zp[2]:12 [ main::point1 ] : zp[2]:12 , Potential registers zp[2]:14 [ main::point2 ] : zp[2]:14 , REGISTER UPLIFT SCOPES -Uplift Scope [getPoint] 2: zp[1]:4 [ getPoint::return_x#0 ] 2: zp[1]:5 [ getPoint::return_y#0 ] 2: zp[1]:8 [ getPoint::return_x#1 ] 2: zp[1]:9 [ getPoint::return_y#1 ] 1: zp[1]:2 [ getPoint::return_x#2 ] 0.67: zp[1]:3 [ getPoint::return_y#2 ] -Uplift Scope [main] 2: zp[1]:6 [ main::$0_x ] 2: zp[1]:7 [ main::$0_y ] 2: zp[1]:10 [ main::$1_x ] 2: zp[1]:11 [ main::$1_y ] 0: zp[2]:12 [ main::point1 ] 0: zp[2]:14 [ main::point2 ] +Uplift Scope [getPoint] 11: zp[1]:4 [ getPoint::return_x#0 ] 11: zp[1]:5 [ getPoint::return_y#0 ] 11: zp[1]:8 [ getPoint::return_x#1 ] 11: zp[1]:9 [ getPoint::return_y#1 ] 5.5: zp[1]:2 [ getPoint::return_x#2 ] 3.67: zp[1]:3 [ getPoint::return_y#2 ] +Uplift Scope [main] 11: zp[1]:6 [ main::$0_x ] 11: zp[1]:7 [ main::$0_y ] 11: zp[1]:10 [ main::$1_x ] 11: zp[1]:11 [ main::$1_y ] 0: zp[2]:12 [ main::point1 ] 0: zp[2]:14 [ main::point2 ] Uplift Scope [Point] Uplift Scope [] @@ -677,20 +677,20 @@ FINAL SYMBOL TABLE (byte) getPoint::p_y (struct Point) getPoint::return (byte) getPoint::return_x -(byte) getPoint::return_x#0 reg byte x 2.0 -(byte) getPoint::return_x#1 reg byte x 2.0 -(byte) getPoint::return_x#2 reg byte x 1.0 +(byte) getPoint::return_x#0 reg byte x 11.0 +(byte) getPoint::return_x#1 reg byte x 11.0 +(byte) getPoint::return_x#2 reg byte x 5.5 (byte) getPoint::return_y -(byte) getPoint::return_y#0 reg byte a 2.0 -(byte) getPoint::return_y#1 reg byte a 2.0 -(byte) getPoint::return_y#2 reg byte a 0.6666666666666666 +(byte) getPoint::return_y#0 reg byte a 11.0 +(byte) getPoint::return_y#1 reg byte a 11.0 +(byte) getPoint::return_y#2 reg byte a 3.6666666666666665 (byte) getPoint::x (byte) getPoint::y (void()) main() -(byte~) main::$0_x reg byte x 2.0 -(byte~) main::$0_y reg byte a 2.0 -(byte~) main::$1_x reg byte x 2.0 -(byte~) main::$1_y reg byte a 2.0 +(byte~) main::$0_x reg byte x 11.0 +(byte~) main::$0_y reg byte a 11.0 +(byte~) main::$1_x reg byte x 11.0 +(byte~) main::$1_y reg byte a 11.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/struct-23.sym b/src/test/ref/struct-23.sym index fa33a88b0..0f0239152 100644 --- a/src/test/ref/struct-23.sym +++ b/src/test/ref/struct-23.sym @@ -11,20 +11,20 @@ (byte) getPoint::p_y (struct Point) getPoint::return (byte) getPoint::return_x -(byte) getPoint::return_x#0 reg byte x 2.0 -(byte) getPoint::return_x#1 reg byte x 2.0 -(byte) getPoint::return_x#2 reg byte x 1.0 +(byte) getPoint::return_x#0 reg byte x 11.0 +(byte) getPoint::return_x#1 reg byte x 11.0 +(byte) getPoint::return_x#2 reg byte x 5.5 (byte) getPoint::return_y -(byte) getPoint::return_y#0 reg byte a 2.0 -(byte) getPoint::return_y#1 reg byte a 2.0 -(byte) getPoint::return_y#2 reg byte a 0.6666666666666666 +(byte) getPoint::return_y#0 reg byte a 11.0 +(byte) getPoint::return_y#1 reg byte a 11.0 +(byte) getPoint::return_y#2 reg byte a 3.6666666666666665 (byte) getPoint::x (byte) getPoint::y (void()) main() -(byte~) main::$0_x reg byte x 2.0 -(byte~) main::$0_y reg byte a 2.0 -(byte~) main::$1_x reg byte x 2.0 -(byte~) main::$1_y reg byte a 2.0 +(byte~) main::$0_x reg byte x 11.0 +(byte~) main::$0_y reg byte a 11.0 +(byte~) main::$1_x reg byte x 11.0 +(byte~) main::$1_y reg byte a 11.0 (label) main::@1 (label) main::@2 (label) main::@return diff --git a/src/test/ref/struct-24.log b/src/test/ref/struct-24.log index a7fc68ebe..67c79980f 100644 --- a/src/test/ref/struct-24.log +++ b/src/test/ref/struct-24.log @@ -207,13 +207,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a reg byte y -Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) ← (byte) 'j' [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [7] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) ← (byte) 'g' [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) ← (byte) 'j' [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) ← (byte) 'g' [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[3]:2 [ main::point1 ] : zp[3]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-25.log b/src/test/ref/struct-25.log index a5f0f6893..dbf0732e2 100644 --- a/src/test/ref/struct-25.log +++ b/src/test/ref/struct-25.log @@ -119,7 +119,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) SIZEOF_STRUCT_POINT [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) SIZEOF_STRUCT_POINT [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-26.log b/src/test/ref/struct-26.log index 2fa3df6e4..ab63e5fa1 100644 --- a/src/test/ref/struct-26.log +++ b/src/test/ref/struct-26.log @@ -226,14 +226,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a reg byte y -Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) ← (byte) 'j' [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [7] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) ← (byte) 'g' [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [8] *(&(struct Point) main::point2) ← memcpy(*(&(struct Point) main::point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a reg byte y -Statement [9] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) ← (byte) 'j' [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) ← (byte) 'g' [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a +Statement [8] *(&(struct Point) main::point2) ← memcpy(*(&(struct Point) main::point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[3]:2 [ main::point1 ] : zp[3]:2 , Potential registers zp[3]:5 [ main::point2 ] : zp[3]:5 , diff --git a/src/test/ref/struct-27.log b/src/test/ref/struct-27.log index 975e3a41e..0a84f157b 100644 --- a/src/test/ref/struct-27.log +++ b/src/test/ref/struct-27.log @@ -179,10 +179,10 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::point1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[4]:2 [ main::point1 ] : zp[4]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-28.log b/src/test/ref/struct-28.log index 781de70a6..14f8af95f 100644 --- a/src/test/ref/struct-28.log +++ b/src/test/ref/struct-28.log @@ -177,10 +177,10 @@ main: { __0: .byte 2, 'j', 'g' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::point1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point1) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ main::point1 ] ( main:2 [ main::point1 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[3]:2 [ main::point1 ] : zp[3]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-29.log b/src/test/ref/struct-29.log index 971191df3..36a02d874 100644 --- a/src/test/ref/struct-29.log +++ b/src/test/ref/struct-29.log @@ -161,9 +161,9 @@ main: { point1: .byte 2, 'j', 'g' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point1) [ point1 ] ( main:2 [ point1 ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ point1 ] ( main:2 [ point1 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point1) [ point1 ] ( main:2 [ point1 ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ point1 ] ( main:2 [ point1 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[3] [ point1 ] : mem[3] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-3.log b/src/test/ref/struct-3.log index 86e76a3c8..e55fc3a72 100644 --- a/src/test/ref/struct-3.log +++ b/src/test/ref/struct-3.log @@ -145,12 +145,12 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::p1_y#1 = (byte) main::p1_y#2 -Alias (byte) idx#0 = (byte) idx#8 -Alias (byte) idx#1 = (byte) idx#9 (byte) idx#10 (byte) idx#2 -Alias (byte) idx#12 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#15 = (byte) idx#3 -Alias (byte) idx#13 = (byte) idx#7 +Alias main::p1_y#1 = main::p1_y#2 +Alias idx#0 = idx#8 +Alias idx#1 = idx#9 idx#10 idx#2 +Alias idx#12 = idx#5 idx#6 +Alias idx#15 = idx#3 +Alias idx#13 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#14 (byte) idx#15 Identical Phi Values (byte) idx#0 (byte) idx#12 @@ -255,16 +255,16 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (byte) idx -(byte) idx#11 3.0 -(byte) idx#12 1.0 -(byte) idx#4 3.0 +(byte) idx#11 106.5 +(byte) idx#12 28.0 +(byte) idx#4 151.5 (void()) main() (byte) main::p1_x (byte) main::p1_y (void()) print((byte) print::p_x , (byte) print::p_y) (struct Point) print::p (byte) print::p_x -(byte) print::p_x#2 2.0 +(byte) print::p_x#2 101.0 (byte) print::p_y Initial phi equivalence classes @@ -368,20 +368,20 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (const byte) main::p1_y#1 [ idx#4 ] ( main:2::print:5 [ idx#4 ] main:2::print:7 [ idx#4 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (const byte) main::p1_y#1 [ idx#4 ] ( main:2::print:5 [ idx#4 ] { } main:2::print:7 [ idx#4 ] { { idx#11 = idx#12 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#4 ] -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (const byte) main::p1_y#1 [ idx#4 ] ( main:2::print:5 [ idx#4 ] main:2::print:7 [ idx#4 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (const byte) main::p1_y#1 [ idx#4 ] ( main:2::print:5 [ idx#4 ] { } main:2::print:7 [ idx#4 ] { { idx#11 = idx#12 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ print::p_x#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#11 idx#12 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ idx#4 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 4: zp[1]:3 [ idx#11 idx#12 ] 3: zp[1]:4 [ idx#4 ] -Uplift Scope [print] 2: zp[1]:2 [ print::p_x#2 ] +Uplift Scope [] 151.5: zp[1]:4 [ idx#4 ] 134.5: zp[1]:3 [ idx#11 idx#12 ] +Uplift Scope [print] 101: zp[1]:2 [ print::p_x#2 ] Uplift Scope [Point] Uplift Scope [main] -Uplifting [] best 76 combination reg byte x [ idx#11 idx#12 ] reg byte x [ idx#4 ] +Uplifting [] best 76 combination reg byte x [ idx#4 ] reg byte x [ idx#11 idx#12 ] Uplifting [print] best 67 combination reg byte a [ print::p_x#2 ] Uplifting [Point] best 67 combination Uplifting [main] best 67 combination @@ -494,9 +494,9 @@ FINAL SYMBOL TABLE (byte) Point::y (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#11 reg byte x 3.0 -(byte) idx#12 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 +(byte) idx#11 reg byte x 106.5 +(byte) idx#12 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return @@ -507,7 +507,7 @@ FINAL SYMBOL TABLE (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#2 reg byte a 2.0 +(byte) print::p_x#2 reg byte a 101.0 (byte) print::p_y reg byte a [ print::p_x#2 ] diff --git a/src/test/ref/struct-3.sym b/src/test/ref/struct-3.sym index 271c9ea23..6c36bc054 100644 --- a/src/test/ref/struct-3.sym +++ b/src/test/ref/struct-3.sym @@ -5,9 +5,9 @@ (byte) Point::y (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#11 reg byte x 3.0 -(byte) idx#12 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 +(byte) idx#11 reg byte x 106.5 +(byte) idx#12 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return @@ -18,7 +18,7 @@ (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#2 reg byte a 2.0 +(byte) print::p_x#2 reg byte a 101.0 (byte) print::p_y reg byte a [ print::p_x#2 ] diff --git a/src/test/ref/struct-30.log b/src/test/ref/struct-30.log index 7a98ecbb5..18724ba5c 100644 --- a/src/test/ref/struct-30.log +++ b/src/test/ref/struct-30.log @@ -172,10 +172,10 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::point1_initials) ← memcpy(*(&(const byte*) $0), byte, (number) 3) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) SCREEN) ← (const byte) main::point1_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) main::point1_initials) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) main::point1_initials+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::point1_initials) ← memcpy(*(&(const byte*) $0), byte, (number) 3) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) SCREEN) ← (const byte) main::point1_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) main::point1_initials) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) main::point1_initials+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-31.log b/src/test/ref/struct-31.log index b128e6040..df10d4aa8 100644 --- a/src/test/ref/struct-31.log +++ b/src/test/ref/struct-31.log @@ -141,8 +141,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) main::point1_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::point1_y [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) main::point1_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::point1_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-32.log b/src/test/ref/struct-32.log index e9e6bf95d..de0c9de93 100644 --- a/src/test/ref/struct-32.log +++ b/src/test/ref/struct-32.log @@ -195,12 +195,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a reg byte y -Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] ) always clobbers reg byte a -Statement [7] *(&(struct Point) main::point2) ← memcpy(*(&(struct Point) main::point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a reg byte y -Statement [8] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::point1) ← memset(struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((byte*)&(struct Point) main::point1) ← (byte) 2 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)&(struct Point) main::point1+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ main::point1 main::point2 ] ( main:2 [ main::point1 main::point2 ] { } ) always clobbers reg byte a +Statement [7] *(&(struct Point) main::point2) ← memcpy(*(&(struct Point) main::point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a reg byte y +Statement [8] *((const byte*) SCREEN) ← *((byte*)&(struct Point) main::point2) [ main::point2 ] ( main:2 [ main::point2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) main::point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::point1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::point2 ] : zp[2]:4 , diff --git a/src/test/ref/struct-33.log b/src/test/ref/struct-33.log index 90eb1c9e1..722494196 100644 --- a/src/test/ref/struct-33.log +++ b/src/test/ref/struct-33.log @@ -163,10 +163,10 @@ main: { point: .fill SIZEOF_STRUCT_POINT, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)&(struct Point) point) ← (byte) 2 [ point ] ( main:2 [ point ] ) always clobbers reg byte a -Statement [5] *((byte*)&(struct Point) point+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ point ] ( main:2 [ point ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point) [ point ] ( main:2 [ point ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((byte*)&(struct Point) point) ← (byte) 2 [ point ] ( main:2 [ point ] { } ) always clobbers reg byte a +Statement [5] *((byte*)&(struct Point) point+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ point ] ( main:2 [ point ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point) [ point ] ( main:2 [ point ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[2] [ point ] : mem[2] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-34.log b/src/test/ref/struct-34.log index 5b787553a..27e94e7e2 100644 --- a/src/test/ref/struct-34.log +++ b/src/test/ref/struct-34.log @@ -88,12 +88,12 @@ Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) point_x#1 = (byte) point_x#4 (byte) point_x#2 -Alias (byte) point_y#1 = (byte) point_y#4 (byte) point_y#2 -Alias (byte) point_x#0 = (byte) point_x#6 -Alias (byte) point_y#0 = (byte) point_y#6 -Alias (byte) point_x#3 = (byte) point_x#5 -Alias (byte) point_y#3 = (byte) point_y#5 +Alias point_x#1 = point_x#4 point_x#2 +Alias point_y#1 = point_y#4 point_y#2 +Alias point_x#0 = point_x#6 +Alias point_y#0 = point_y#6 +Alias point_x#3 = point_x#5 +Alias point_y#3 = point_y#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) point_x#3 (byte) point_x#1 Identical Phi Values (byte) point_y#3 (byte) point_y#1 @@ -198,8 +198,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) point_x#1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) point_y#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) point_x#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) point_y#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-35.log b/src/test/ref/struct-35.log index cfd48eed3..4b857b2b0 100644 --- a/src/test/ref/struct-35.log +++ b/src/test/ref/struct-35.log @@ -163,9 +163,9 @@ main: { point2: .fill SIZEOF_STRUCT_POINT, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const struct Point*) main::p2) ← memcpy(*(&(struct Point) point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ point2 ] ( main:2 [ point2 ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point2) [ point2 ] ( main:2 [ point2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const struct Point*) main::p2) ← memcpy(*(&(struct Point) point1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ point2 ] ( main:2 [ point2 ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point2) [ point2 ] ( main:2 [ point2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point2+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[2] [ point1 ] : mem[2] , Potential registers mem[2] [ point2 ] : mem[2] , diff --git a/src/test/ref/struct-36.log b/src/test/ref/struct-36.log index c4e2b1eea..f3f439668 100644 --- a/src/test/ref/struct-36.log +++ b/src/test/ref/struct-36.log @@ -163,9 +163,9 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point1) [ point1 ] ( main:2 [ point1 ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ point1 ] ( main:2 [ point1 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← *((byte*)&(struct Point) point1) [ point1 ] ( main:2 [ point1 ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS) [ point1 ] ( main:2 [ point1 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 2) ← *((byte*)&(struct Point) point1+(const byte) OFFSET_STRUCT_POINT_INITIALS+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers mem[3] [ point1 ] : mem[3] , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-37.log b/src/test/ref/struct-37.log index a5e3caf46..69d2c78ad 100644 --- a/src/test/ref/struct-37.log +++ b/src/test/ref/struct-37.log @@ -107,7 +107,7 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Constant inlined main::j#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$1 = (byte~) main::$3 +Alias main::$1 = main::$3 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_SEGMENT Successful SSA optimization PassNEliminateUnusedVars @@ -172,19 +172,19 @@ VARIABLE REGISTER WEIGHTS (byte) SplineVector16::x (byte) SplineVector16::y (void()) main() -(byte~) main::$1 16.5 -(byte~) main::$2 22.0 +(byte~) main::$1 151.5 +(byte~) main::$2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.888888888888889 +(byte) main::i#1 151.5 +(byte) main::i#2 44.888888888888886 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#2 7.333333333333333 -(byte) main::j#3 5.5 +(byte) main::j#1 151.5 +(byte) main::j#2 67.33333333333333 +(byte) main::j#3 50.5 (byte) main::to_x -(byte) main::to_x#0 11.0 +(byte) main::to_x#0 101.0 (byte) main::to_y -(byte) main::to_y#0 7.333333333333333 +(byte) main::to_y#0 67.33333333333333 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -316,12 +316,12 @@ main: { letter_c: .byte MOVE_TO, 'a', 'b', 0, 0, SPLINE_TO, 'c', 'd', $67, $a9, SPLINE_TO, 'e', 'f', $4b, $c3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::j#3 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::j#3 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#3 main::j#2 ] -Statement [7] (byte~) main::$1 ← (byte~) main::$2 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::j#3 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::$2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte~) main::$2 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$2 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::j#3 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::$2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$2 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#3 main::j#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -331,7 +331,7 @@ Potential registers zp[1]:7 [ main::to_y#0 ] : zp[1]:7 , reg byte a , reg byte x Potential registers zp[1]:8 [ main::j#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$2 ] 21.39: zp[1]:2 [ main::i#2 main::i#1 ] 16.5: zp[1]:5 [ main::$1 ] 16.5: zp[1]:8 [ main::j#1 ] 12.83: zp[1]:3 [ main::j#3 main::j#2 ] 11: zp[1]:6 [ main::to_x#0 ] 7.33: zp[1]:7 [ main::to_y#0 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$2 ] 196.39: zp[1]:2 [ main::i#2 main::i#1 ] 151.5: zp[1]:5 [ main::$1 ] 151.5: zp[1]:8 [ main::j#1 ] 117.83: zp[1]:3 [ main::j#3 main::j#2 ] 101: zp[1]:6 [ main::to_x#0 ] 67.33: zp[1]:7 [ main::to_y#0 ] Uplift Scope [SplineVector16] Uplift Scope [Segment] Uplift Scope [Segment::SegmentType] @@ -494,21 +494,21 @@ FINAL SYMBOL TABLE (byte) SplineVector16::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (byte) 'a', y: (byte) 'b' }, via: { x: (byte) 0, y: (byte) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (byte) 'c', y: (byte) 'd' }, via: { x: (byte) $67, y: (byte) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (byte) 'e', y: (byte) 'f' }, via: { x: (byte) $4b, y: (byte) $c3 } } } (void()) main() -(byte~) main::$1 reg byte y 16.5 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$1 reg byte y 151.5 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.888888888888889 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 44.888888888888886 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 j zp[1]:2 7.333333333333333 -(byte) main::j#3 j zp[1]:2 5.5 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 j zp[1]:2 67.33333333333333 +(byte) main::j#3 j zp[1]:2 50.5 (byte) main::to_x -(byte) main::to_x#0 to_x zp[1]:3 11.0 +(byte) main::to_x#0 to_x zp[1]:3 101.0 (byte) main::to_y -(byte) main::to_y#0 to_y zp[1]:4 7.333333333333333 +(byte) main::to_y#0 to_y zp[1]:4 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::j#3 main::j#2 ] diff --git a/src/test/ref/struct-37.sym b/src/test/ref/struct-37.sym index 2df825859..2142375da 100644 --- a/src/test/ref/struct-37.sym +++ b/src/test/ref/struct-37.sym @@ -16,21 +16,21 @@ (byte) SplineVector16::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (byte) 'a', y: (byte) 'b' }, via: { x: (byte) 0, y: (byte) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (byte) 'c', y: (byte) 'd' }, via: { x: (byte) $67, y: (byte) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (byte) 'e', y: (byte) 'f' }, via: { x: (byte) $4b, y: (byte) $c3 } } } (void()) main() -(byte~) main::$1 reg byte y 16.5 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$1 reg byte y 151.5 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.888888888888889 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 44.888888888888886 (byte) main::j -(byte) main::j#1 reg byte y 16.5 -(byte) main::j#2 j zp[1]:2 7.333333333333333 -(byte) main::j#3 j zp[1]:2 5.5 +(byte) main::j#1 reg byte y 151.5 +(byte) main::j#2 j zp[1]:2 67.33333333333333 +(byte) main::j#3 j zp[1]:2 50.5 (byte) main::to_x -(byte) main::to_x#0 to_x zp[1]:3 11.0 +(byte) main::to_x#0 to_x zp[1]:3 101.0 (byte) main::to_y -(byte) main::to_y#0 to_y zp[1]:4 7.333333333333333 +(byte) main::to_y#0 to_y zp[1]:4 67.33333333333333 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::j#3 main::j#2 ] diff --git a/src/test/ref/struct-38.log b/src/test/ref/struct-38.log index 644544d24..eb4632d88 100644 --- a/src/test/ref/struct-38.log +++ b/src/test/ref/struct-38.log @@ -117,7 +117,7 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Constant inlined main::j#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$1 = (byte~) main::$5 +Alias main::$1 = main::$5 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_SEGMENT Eliminating unused constant (const byte) SIZEOF_SIGNED_WORD @@ -185,21 +185,21 @@ VARIABLE REGISTER WEIGHTS (signed word) SplineVector16::x (signed word) SplineVector16::y (void()) main() -(byte~) main::$1 16.5 -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 +(byte~) main::$1 151.5 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(byte~) main::$4 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.0 +(byte) main::i#1 151.5 +(byte) main::i#2 36.72727272727273 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#2 7.333333333333333 -(byte) main::j#3 4.714285714285714 +(byte) main::j#1 101.0 +(byte) main::j#2 67.33333333333333 +(byte) main::j#3 43.285714285714285 (signed word) main::to_x -(signed word) main::to_x#0 7.333333333333333 +(signed word) main::to_x#0 67.33333333333333 (signed word) main::to_y -(signed word) main::to_y#0 4.4 +(signed word) main::to_y#0 40.4 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -361,26 +361,26 @@ main: { .word 'e', 'f', $4b, $c3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 ] ( main:2 [ main::i#2 main::j#3 main::$4 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 ] ( main:2 [ main::i#2 main::j#3 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#3 main::j#2 ] -Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] ) always clobbers reg byte a -Statement [8] (signed word) main::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1) [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] { } ) always clobbers reg byte a +Statement [8] (signed word) main::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1) [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to_x#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$1 ] -Statement [9] (signed word) main::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$1) [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const signed word*) SCREEN + (byte~) main::$2) ← (signed word) main::to_x#0 [ main::i#2 main::j#3 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_y#0 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ) always clobbers reg byte a +Statement [9] (signed word) main::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$1) [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const signed word*) SCREEN + (byte~) main::$2) ← (signed word) main::to_x#0 [ main::i#2 main::j#3 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_y#0 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ main::j#1 ] -Statement [14] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::to_y#0 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 ] ( main:2 [ main::i#2 main::j#3 main::$4 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] ) always clobbers reg byte a -Statement [8] (signed word) main::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1) [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ) always clobbers reg byte a -Statement [9] (signed word) main::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$1) [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ) always clobbers reg byte a -Statement [11] *((const signed word*) SCREEN + (byte~) main::$2) ← (signed word) main::to_x#0 [ main::i#2 main::j#3 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_y#0 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ) always clobbers reg byte a -Statement [14] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::to_y#0 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) always clobbers reg byte a +Statement [14] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::to_y#0 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 ] ( main:2 [ main::i#2 main::j#3 main::$4 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 ] ( main:2 [ main::i#2 main::j#3 main::$1 ] { } ) always clobbers reg byte a +Statement [8] (signed word) main::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1) [ main::i#2 main::j#3 main::$1 main::to_x#0 ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to_x#0 ] { } ) always clobbers reg byte a +Statement [9] (signed word) main::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$1) [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to_x#0 main::to_y#0 main::$2 ] { } ) always clobbers reg byte a +Statement [11] *((const signed word*) SCREEN + (byte~) main::$2) ← (signed word) main::to_x#0 [ main::i#2 main::j#3 main::to_y#0 ] ( main:2 [ main::i#2 main::j#3 main::to_y#0 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to_y#0 main::j#1 main::$3 ] { } ) always clobbers reg byte a +Statement [14] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::to_y#0 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::j#3 main::j#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -392,7 +392,7 @@ Potential registers zp[1]:11 [ main::j#1 ] : zp[1]:11 , reg byte x , reg byte y Potential registers zp[1]:12 [ main::$3 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$4 ] 22: zp[1]:10 [ main::$2 ] 22: zp[1]:12 [ main::$3 ] 20.5: zp[1]:2 [ main::i#2 main::i#1 ] 16.5: zp[1]:5 [ main::$1 ] 12.05: zp[1]:3 [ main::j#3 main::j#2 ] 11: zp[1]:11 [ main::j#1 ] 7.33: zp[2]:6 [ main::to_x#0 ] 4.4: zp[2]:8 [ main::to_y#0 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$4 ] 202: zp[1]:10 [ main::$2 ] 202: zp[1]:12 [ main::$3 ] 188.23: zp[1]:2 [ main::i#2 main::i#1 ] 151.5: zp[1]:5 [ main::$1 ] 110.62: zp[1]:3 [ main::j#3 main::j#2 ] 101: zp[1]:11 [ main::j#1 ] 67.33: zp[2]:6 [ main::to_x#0 ] 40.4: zp[2]:8 [ main::to_y#0 ] Uplift Scope [SplineVector16] Uplift Scope [Segment] Uplift Scope [Segment::SegmentType] @@ -571,23 +571,23 @@ FINAL SYMBOL TABLE (signed word) SplineVector16::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (signed word)(byte) 'a', y: (signed word)(byte) 'b' }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'c', y: (signed word)(byte) 'd' }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'e', y: (signed word)(byte) 'f' }, via: { x: (signed word) $4b, y: (signed word) $c3 } } } (void()) main() -(byte~) main::$1 reg byte y 16.5 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte y 151.5 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 36.72727272727273 (byte) main::j -(byte) main::j#1 j zp[1]:2 11.0 -(byte) main::j#2 j zp[1]:2 7.333333333333333 -(byte) main::j#3 j zp[1]:2 4.714285714285714 +(byte) main::j#1 j zp[1]:2 101.0 +(byte) main::j#2 j zp[1]:2 67.33333333333333 +(byte) main::j#3 j zp[1]:2 43.285714285714285 (signed word) main::to_x -(signed word) main::to_x#0 to_x zp[2]:3 7.333333333333333 +(signed word) main::to_x#0 to_x zp[2]:3 67.33333333333333 (signed word) main::to_y -(signed word) main::to_y#0 to_y zp[2]:5 4.4 +(signed word) main::to_y#0 to_y zp[2]:5 40.4 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::j#3 main::j#2 main::j#1 ] diff --git a/src/test/ref/struct-38.sym b/src/test/ref/struct-38.sym index 629e8c192..6ac704a57 100644 --- a/src/test/ref/struct-38.sym +++ b/src/test/ref/struct-38.sym @@ -16,23 +16,23 @@ (signed word) SplineVector16::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (signed word)(byte) 'a', y: (signed word)(byte) 'b' }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'c', y: (signed word)(byte) 'd' }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'e', y: (signed word)(byte) 'f' }, via: { x: (signed word) $4b, y: (signed word) $c3 } } } (void()) main() -(byte~) main::$1 reg byte y 16.5 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte y 151.5 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 36.72727272727273 (byte) main::j -(byte) main::j#1 j zp[1]:2 11.0 -(byte) main::j#2 j zp[1]:2 7.333333333333333 -(byte) main::j#3 j zp[1]:2 4.714285714285714 +(byte) main::j#1 j zp[1]:2 101.0 +(byte) main::j#2 j zp[1]:2 67.33333333333333 +(byte) main::j#3 j zp[1]:2 43.285714285714285 (signed word) main::to_x -(signed word) main::to_x#0 to_x zp[2]:3 7.333333333333333 +(signed word) main::to_x#0 to_x zp[2]:3 67.33333333333333 (signed word) main::to_y -(signed word) main::to_y#0 to_y zp[2]:5 4.4 +(signed word) main::to_y#0 to_y zp[2]:5 40.4 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::j#3 main::j#2 main::j#1 ] diff --git a/src/test/ref/struct-39.log b/src/test/ref/struct-39.log index dc08dd9da..abeb975c8 100644 --- a/src/test/ref/struct-39.log +++ b/src/test/ref/struct-39.log @@ -111,7 +111,7 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 Constant inlined main::j#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$1 = (byte~) main::$5 +Alias main::$1 = main::$5 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_SEGMENT Eliminating unused constant (const byte) SIZEOF_SIGNED_WORD @@ -178,17 +178,17 @@ VARIABLE REGISTER WEIGHTS (signed word) Vector::x (signed word) Vector::y (void()) main() -(byte~) main::$1 11.0 -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 +(byte~) main::$1 101.0 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(byte~) main::$4 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.4 +(byte) main::i#1 151.5 +(byte) main::i#2 40.4 (byte) main::j -(byte) main::j#1 11.0 -(byte) main::j#2 7.333333333333333 -(byte) main::j#3 5.5 +(byte) main::j#1 101.0 +(byte) main::j#2 67.33333333333333 +(byte) main::j#3 50.5 (struct Vector) main::to loadstore Initial phi equivalence classes @@ -346,29 +346,29 @@ main: { .word 'e', 'f', $4b, $c3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 main::to ] ( main:2 [ main::i#2 main::j#3 main::$4 main::to ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 main::to ] ( main:2 [ main::i#2 main::j#3 main::$4 main::to ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#3 main::j#2 ] -Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 main::to ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to ] ) always clobbers reg byte a -Statement [8] *(&(struct Vector) main::to) ← memcpy(*((struct Vector*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] ) always clobbers reg byte a reg byte x reg byte y +Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 main::to ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to ] { } ) always clobbers reg byte a +Statement [8] *(&(struct Vector) main::to) ← memcpy(*((struct Vector*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::j#3 main::j#2 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::j#3 main::j#2 ] -Statement [9] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to main::$2 ] ) always clobbers reg byte a -Statement [10] *((const signed word*) SCREEN + (byte~) main::$2) ← *((signed word*)&(struct Vector) main::to) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to main::j#1 main::$3 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to main::$2 ] { } ) always clobbers reg byte a +Statement [10] *((const signed word*) SCREEN + (byte~) main::$2) ← *((signed word*)&(struct Vector) main::to) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to main::j#1 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::j#1 ] -Statement [13] *((const signed word*) SCREEN + (byte~) main::$3) ← *((signed word*)&(struct Vector) main::to+(const byte) OFFSET_STRUCT_VECTOR_Y) [ main::i#2 main::to main::j#1 ] ( main:2 [ main::i#2 main::to main::j#1 ] ) always clobbers reg byte a -Statement [16] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 main::j#2 main::to ] ( main:2 [ main::i#1 main::j#2 main::to ] ) always clobbers reg byte a -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 main::to ] ( main:2 [ main::i#2 main::j#3 main::$4 main::to ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 main::to ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to ] ) always clobbers reg byte a -Statement [8] *(&(struct Vector) main::to) ← memcpy(*((struct Vector*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] ) always clobbers reg byte a reg byte x reg byte y -Statement [9] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to main::$2 ] ) always clobbers reg byte a -Statement [10] *((const signed word*) SCREEN + (byte~) main::$2) ← *((signed word*)&(struct Vector) main::to) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to main::j#1 main::$3 ] ) always clobbers reg byte a -Statement [13] *((const signed word*) SCREEN + (byte~) main::$3) ← *((signed word*)&(struct Vector) main::to+(const byte) OFFSET_STRUCT_VECTOR_Y) [ main::i#2 main::to main::j#1 ] ( main:2 [ main::i#2 main::to main::j#1 ] ) always clobbers reg byte a -Statement [16] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 main::j#2 main::to ] ( main:2 [ main::i#1 main::j#2 main::to ] ) always clobbers reg byte a +Statement [13] *((const signed word*) SCREEN + (byte~) main::$3) ← *((signed word*)&(struct Vector) main::to+(const byte) OFFSET_STRUCT_VECTOR_Y) [ main::i#2 main::to main::j#1 ] ( main:2 [ main::i#2 main::to main::j#1 ] { } ) always clobbers reg byte a +Statement [16] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 main::j#2 main::to ] ( main:2 [ main::i#1 main::j#2 main::to ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::j#3 main::$4 main::to ] ( main:2 [ main::i#2 main::j#3 main::$4 main::to ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$4 + (byte) main::i#2 [ main::i#2 main::j#3 main::$1 main::to ] ( main:2 [ main::i#2 main::j#3 main::$1 main::to ] { } ) always clobbers reg byte a +Statement [8] *(&(struct Vector) main::to) ← memcpy(*((struct Vector*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$1), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [9] (byte~) main::$2 ← (byte) main::j#3 << (byte) 1 [ main::i#2 main::j#3 main::to main::$2 ] ( main:2 [ main::i#2 main::j#3 main::to main::$2 ] { } ) always clobbers reg byte a +Statement [10] *((const signed word*) SCREEN + (byte~) main::$2) ← *((signed word*)&(struct Vector) main::to) [ main::i#2 main::j#3 main::to ] ( main:2 [ main::i#2 main::j#3 main::to ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::j#1 << (byte) 1 [ main::i#2 main::to main::j#1 main::$3 ] ( main:2 [ main::i#2 main::to main::j#1 main::$3 ] { } ) always clobbers reg byte a +Statement [13] *((const signed word*) SCREEN + (byte~) main::$3) ← *((signed word*)&(struct Vector) main::to+(const byte) OFFSET_STRUCT_VECTOR_Y) [ main::i#2 main::to main::j#1 ] ( main:2 [ main::i#2 main::to main::j#1 ] { } ) always clobbers reg byte a +Statement [16] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 main::j#2 main::to ] ( main:2 [ main::i#1 main::j#2 main::to ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::j#3 main::j#2 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -379,7 +379,7 @@ Potential registers zp[1]:8 [ main::$3 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[4]:9 [ main::to ] : zp[4]:9 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$4 ] 22: zp[1]:6 [ main::$2 ] 22: zp[1]:8 [ main::$3 ] 20.9: zp[1]:2 [ main::i#2 main::i#1 ] 12.83: zp[1]:3 [ main::j#3 main::j#2 ] 11: zp[1]:5 [ main::$1 ] 11: zp[1]:7 [ main::j#1 ] 0: zp[4]:9 [ main::to ] +Uplift Scope [main] 202: zp[1]:4 [ main::$4 ] 202: zp[1]:6 [ main::$2 ] 202: zp[1]:8 [ main::$3 ] 191.9: zp[1]:2 [ main::i#2 main::i#1 ] 117.83: zp[1]:3 [ main::j#3 main::j#2 ] 101: zp[1]:5 [ main::$1 ] 101: zp[1]:7 [ main::j#1 ] 0: zp[4]:9 [ main::to ] Uplift Scope [Vector] Uplift Scope [Segment] Uplift Scope [Segment::SegmentType] @@ -560,19 +560,19 @@ FINAL SYMBOL TABLE (signed word) Vector::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (signed word)(byte) 'a', y: (signed word)(byte) 'b' }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'c', y: (signed word)(byte) 'd' }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'e', y: (signed word)(byte) 'f' }, via: { x: (signed word) $4b, y: (signed word) $c3 } } } (void()) main() -(byte~) main::$1 reg byte a 11.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte a 101.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.4 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 40.4 (byte) main::j -(byte) main::j#1 reg byte x 11.0 -(byte) main::j#2 j zp[1]:3 7.333333333333333 -(byte) main::j#3 j zp[1]:3 5.5 +(byte) main::j#1 reg byte x 101.0 +(byte) main::j#2 j zp[1]:3 67.33333333333333 +(byte) main::j#3 j zp[1]:3 50.5 (struct Vector) main::to loadstore zp[4]:4 zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-39.sym b/src/test/ref/struct-39.sym index 4868ebc35..b2979e340 100644 --- a/src/test/ref/struct-39.sym +++ b/src/test/ref/struct-39.sym @@ -17,19 +17,19 @@ (signed word) Vector::y (const struct Segment*) letter_c[] = { { type: (const byte) MOVE_TO, to: { x: (signed word)(byte) 'a', y: (signed word)(byte) 'b' }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'c', y: (signed word)(byte) 'd' }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(byte) 'e', y: (signed word)(byte) 'f' }, via: { x: (signed word) $4b, y: (signed word) $c3 } } } (void()) main() -(byte~) main::$1 reg byte a 11.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte a 101.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.4 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 40.4 (byte) main::j -(byte) main::j#1 reg byte x 11.0 -(byte) main::j#2 j zp[1]:3 7.333333333333333 -(byte) main::j#3 j zp[1]:3 5.5 +(byte) main::j#1 reg byte x 101.0 +(byte) main::j#2 j zp[1]:3 67.33333333333333 +(byte) main::j#3 j zp[1]:3 50.5 (struct Vector) main::to loadstore zp[4]:4 zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-4.log b/src/test/ref/struct-4.log index ba429155d..69f3c277f 100644 --- a/src/test/ref/struct-4.log +++ b/src/test/ref/struct-4.log @@ -64,7 +64,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (const byte) main::y + (byte) 1 -Alias (byte) main::p_y#0 = (byte~) main::$0 +Alias main::p_y#0 = main::$0 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte) main::p_y#0 ← (const byte) main::y + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -166,8 +166,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-40.log b/src/test/ref/struct-40.log index 0a73c58ea..e4345503b 100644 --- a/src/test/ref/struct-40.log +++ b/src/test/ref/struct-40.log @@ -539,22 +539,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(byte) 4) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN+(byte) 5) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN+(byte) 6) ← (const byte) main::v1_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte) 7) ← (const byte) main::v1_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN+(byte) 8) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) SCREEN+(byte) 9) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN+(byte) $a) ← (const byte) main::v3_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) SCREEN+(byte) $b) ← (const byte) main::v3_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN+(byte) $c) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN+(byte) $d) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN+(byte) $e) ← (const byte) main::v4_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN+(byte) $f) ← (const byte) main::v4_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) 4) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN+(byte) 5) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN+(byte) 6) ← (const byte) main::v1_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte) 7) ← (const byte) main::v1_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN+(byte) 8) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) SCREEN+(byte) 9) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN+(byte) $a) ← (const byte) main::v3_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN+(byte) $b) ← (const byte) main::v3_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN+(byte) $c) ← (const byte) main::v1_p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN+(byte) $d) ← (const byte) main::v1_p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN+(byte) $e) ← (const byte) main::v4_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN+(byte) $f) ← (const byte) main::v4_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-41.log b/src/test/ref/struct-41.log index d3b5e7253..1a560d5c6 100644 --- a/src/test/ref/struct-41.log +++ b/src/test/ref/struct-41.log @@ -483,9 +483,9 @@ VARIABLE REGISTER WEIGHTS (struct Vector) main::v4 loadstore (struct Point) main::v5_p (byte) main::v5_p_x -(byte) main::v5_p_x#0 0.2222222222222222 +(byte) main::v5_p_x#0 1.2222222222222223 (byte) main::v5_p_y -(byte) main::v5_p_y#0 0.2222222222222222 +(byte) main::v5_p_y#0 1.2222222222222223 (struct Point) main::v5_q Initial phi equivalence classes @@ -656,58 +656,58 @@ main: { __0: .byte 6, 7 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(struct Point*)&(struct Vector) main::v2) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [5] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [6] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [7] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [8] *((struct Point*)&(struct Vector) main::v3) ← memcpy(*((struct Point*)&(struct Vector) main::v2), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [9] *((struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [10] *(&(struct Vector) main::v4) ← memcpy(*(&(struct Vector) main::v3), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [13] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a +Statement [4] *((byte*)(struct Point*)&(struct Vector) main::v2) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [8] *((struct Point*)&(struct Vector) main::v3) ← memcpy(*((struct Point*)&(struct Vector) main::v2), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [10] *(&(struct Vector) main::v4) ← memcpy(*(&(struct Vector) main::v3), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [13] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::v5_p_x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::v5_p_y#0 ] -Statement [14] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [15] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN+(byte) 4) ← *((byte*)(struct Point*)&(struct Vector) main::v2) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN+(byte) 5) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN+(byte) 6) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SCREEN+(byte) 7) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN+(byte) 8) ← *((byte*)(struct Point*)&(struct Vector) main::v3) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [22] *((const byte*) SCREEN+(byte) 9) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SCREEN+(byte) $a) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [24] *((const byte*) SCREEN+(byte) $b) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [25] *((const byte*) SCREEN+(byte) $c) ← *((byte*)(struct Point*)&(struct Vector) main::v4) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [26] *((const byte*) SCREEN+(byte) $d) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [27] *((const byte*) SCREEN+(byte) $e) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN+(byte) $f) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [31] *((const byte*) SCREEN+(byte) $12) ← (const byte) main::v5_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) SCREEN+(byte) $13) ← (const byte) main::v5_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [4] *((byte*)(struct Point*)&(struct Vector) main::v2) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [5] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [6] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [7] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a -Statement [8] *((struct Point*)&(struct Vector) main::v3) ← memcpy(*((struct Point*)&(struct Vector) main::v2), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [9] *((struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [10] *(&(struct Vector) main::v4) ← memcpy(*(&(struct Vector) main::v3), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] ) always clobbers reg byte a reg byte y -Statement [13] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [15] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN+(byte) 4) ← *((byte*)(struct Point*)&(struct Vector) main::v2) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN+(byte) 5) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN+(byte) 6) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [20] *((const byte*) SCREEN+(byte) 7) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN+(byte) 8) ← *((byte*)(struct Point*)&(struct Vector) main::v3) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [22] *((const byte*) SCREEN+(byte) 9) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SCREEN+(byte) $a) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [24] *((const byte*) SCREEN+(byte) $b) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [25] *((const byte*) SCREEN+(byte) $c) ← *((byte*)(struct Point*)&(struct Vector) main::v4) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [26] *((const byte*) SCREEN+(byte) $d) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [27] *((const byte*) SCREEN+(byte) $e) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [28] *((const byte*) SCREEN+(byte) $f) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v5_p_x#0 main::v5_p_y#0 ] ) always clobbers reg byte a -Statement [31] *((const byte*) SCREEN+(byte) $12) ← (const byte) main::v5_q_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) SCREEN+(byte) $13) ← (const byte) main::v5_q_y [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN+(byte) 4) ← *((byte*)(struct Point*)&(struct Vector) main::v2) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN+(byte) 5) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN+(byte) 6) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) SCREEN+(byte) 7) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN+(byte) 8) ← *((byte*)(struct Point*)&(struct Vector) main::v3) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN+(byte) 9) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) SCREEN+(byte) $a) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) SCREEN+(byte) $b) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) SCREEN+(byte) $c) ← *((byte*)(struct Point*)&(struct Vector) main::v4) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) SCREEN+(byte) $d) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) SCREEN+(byte) $e) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN+(byte) $f) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) SCREEN+(byte) $12) ← (const byte) main::v5_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) SCREEN+(byte) $13) ← (const byte) main::v5_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [4] *((byte*)(struct Point*)&(struct Vector) main::v2) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a +Statement [8] *((struct Point*)&(struct Vector) main::v3) ← memcpy(*((struct Point*)&(struct Vector) main::v2), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [10] *(&(struct Vector) main::v4) ← memcpy(*(&(struct Vector) main::v3), struct Vector, (const byte) SIZEOF_STRUCT_VECTOR) [ main::v2 main::v3 main::v4 ] ( main:2 [ main::v2 main::v3 main::v4 ] { } ) always clobbers reg byte a reg byte y +Statement [13] *((const byte*) SCREEN) ← (const byte) main::v1_p_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN+(byte) 1) ← (const byte) main::v1_p_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN+(byte) 2) ← (const byte) main::v1_q_x [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN+(byte) 3) ← (const byte) main::v1_q_y [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN+(byte) 4) ← *((byte*)(struct Point*)&(struct Vector) main::v2) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN+(byte) 5) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN+(byte) 6) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v2 main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) SCREEN+(byte) 7) ← *((byte*)(struct Point*)&(struct Vector) main::v2+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN+(byte) 8) ← *((byte*)(struct Point*)&(struct Vector) main::v3) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN+(byte) 9) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) SCREEN+(byte) $a) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v3 main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) SCREEN+(byte) $b) ← *((byte*)(struct Point*)&(struct Vector) main::v3+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) SCREEN+(byte) $c) ← *((byte*)(struct Point*)&(struct Vector) main::v4) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) SCREEN+(byte) $d) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) SCREEN+(byte) $e) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q) [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v4 main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) SCREEN+(byte) $f) ← *((byte*)(struct Point*)&(struct Vector) main::v4+(const byte) OFFSET_STRUCT_VECTOR_Q+(const byte) OFFSET_STRUCT_POINT_Y) [ main::v5_p_x#0 main::v5_p_y#0 ] ( main:2 [ main::v5_p_x#0 main::v5_p_y#0 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) SCREEN+(byte) $12) ← (const byte) main::v5_q_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) SCREEN+(byte) $13) ← (const byte) main::v5_q_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::v5_p_x#0 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::v5_p_y#0 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[4]:4 [ main::v2 ] : zp[4]:4 , @@ -715,7 +715,7 @@ Potential registers zp[4]:8 [ main::v3 ] : zp[4]:8 , Potential registers zp[4]:12 [ main::v4 ] : zp[4]:12 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 0.22: zp[1]:2 [ main::v5_p_x#0 ] 0.22: zp[1]:3 [ main::v5_p_y#0 ] 0: zp[4]:4 [ main::v2 ] 0: zp[4]:8 [ main::v3 ] 0: zp[4]:12 [ main::v4 ] +Uplift Scope [main] 1.22: zp[1]:2 [ main::v5_p_x#0 ] 1.22: zp[1]:3 [ main::v5_p_y#0 ] 0: zp[4]:4 [ main::v2 ] 0: zp[4]:8 [ main::v3 ] 0: zp[4]:12 [ main::v4 ] Uplift Scope [Point] Uplift Scope [Vector] Uplift Scope [] @@ -918,9 +918,9 @@ FINAL SYMBOL TABLE (struct Vector) main::v4 loadstore zp[4]:10 (struct Point) main::v5_p (byte) main::v5_p_x -(byte) main::v5_p_x#0 reg byte y 0.2222222222222222 +(byte) main::v5_p_x#0 reg byte y 1.2222222222222223 (byte) main::v5_p_y -(byte) main::v5_p_y#0 reg byte x 0.2222222222222222 +(byte) main::v5_p_y#0 reg byte x 1.2222222222222223 (struct Point) main::v5_q (const byte) main::v5_q_x = (byte) 8 (const byte) main::v5_q_y = (byte) 9 diff --git a/src/test/ref/struct-41.sym b/src/test/ref/struct-41.sym index f23a0e454..82e922e2e 100644 --- a/src/test/ref/struct-41.sym +++ b/src/test/ref/struct-41.sym @@ -25,9 +25,9 @@ (struct Vector) main::v4 loadstore zp[4]:10 (struct Point) main::v5_p (byte) main::v5_p_x -(byte) main::v5_p_x#0 reg byte y 0.2222222222222222 +(byte) main::v5_p_x#0 reg byte y 1.2222222222222223 (byte) main::v5_p_y -(byte) main::v5_p_y#0 reg byte x 0.2222222222222222 +(byte) main::v5_p_y#0 reg byte x 1.2222222222222223 (struct Point) main::v5_q (const byte) main::v5_q_x = (byte) 8 (const byte) main::v5_q_y = (byte) 9 diff --git a/src/test/ref/struct-42.log b/src/test/ref/struct-42.log index d225cb5b1..2073c7564 100644 --- a/src/test/ref/struct-42.log +++ b/src/test/ref/struct-42.log @@ -171,10 +171,10 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -269,24 +269,24 @@ main: { __0: .byte 2, 3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const struct Point*) points + (byte~) main::$1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [7] *((const struct Point*) points + (byte~) main::$1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN) ← *((byte*)(const struct Point*) points+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [7] *((const struct Point*) points + (byte~) main::$1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [9] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN) ← *((byte*)(const struct Point*) points+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [9] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN) ← *((byte*)(const struct Point*) points+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [7] *((const struct Point*) points + (byte~) main::$1) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [9] if((byte) main::i#1!=(byte) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN) ← *((byte*)(const struct Point*) points+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 2*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] Uplift Scope [Point] Uplift Scope [] @@ -414,13 +414,13 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 11.0 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 101.0 (const struct Point*) points[(number) 3] = { fill( 3, 0) } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-42.sym b/src/test/ref/struct-42.sym index 1d31138f2..4a06ab0c7 100644 --- a/src/test/ref/struct-42.sym +++ b/src/test/ref/struct-42.sym @@ -8,13 +8,13 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 11.0 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 101.0 (const struct Point*) points[(number) 3] = { fill( 3, 0) } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-5.log b/src/test/ref/struct-5.log index fb313e2a1..2b4b2fcfb 100644 --- a/src/test/ref/struct-5.log +++ b/src/test/ref/struct-5.log @@ -133,12 +133,12 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) point::return_x#0 = (byte) point::return_x#3 -Alias (byte) point::return_y#0 = (byte) point::return_y#3 -Alias (byte) main::q_x#1 = (byte~) main::$0_x -Alias (byte) main::q_y#1 = (byte~) main::$0_y -Alias (byte) point::return_x#1 = (byte) point::return_x#4 (byte) point::return_x#2 -Alias (byte) point::return_y#1 = (byte) point::return_y#4 (byte) point::return_y#2 +Alias point::return_x#0 = point::return_x#3 +Alias point::return_y#0 = point::return_y#3 +Alias main::q_x#1 = main::$0_x +Alias main::q_y#1 = main::$0_y +Alias point::return_x#1 = point::return_x#4 point::return_x#2 +Alias point::return_y#1 = point::return_y#4 point::return_y#2 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::q_x#0 = 0 Constant (const byte) main::q_y#0 = 0 @@ -294,8 +294,8 @@ point: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN) ← (const byte) point::p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) point::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN) ← (const byte) point::p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) point::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-6.log b/src/test/ref/struct-6.log index 386c57c68..4ceffa0ef 100644 --- a/src/test/ref/struct-6.log +++ b/src/test/ref/struct-6.log @@ -185,9 +185,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::c_radius [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::c_radius [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-7.log b/src/test/ref/struct-7.log index 10a6f7dba..b573e5f4e 100644 --- a/src/test/ref/struct-7.log +++ b/src/test/ref/struct-7.log @@ -229,12 +229,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::t_c1_center_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::t_c1_center_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::t_c1_radius [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← (const byte) main::t_c2_center_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) 4) ← (const byte) main::t_c2_center_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) 5) ← (const byte) main::t_c2_radius [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::t_c1_center_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::t_c1_center_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::t_c1_radius [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← (const byte) main::t_c2_center_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) 4) ← (const byte) main::t_c2_center_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) 5) ← (const byte) main::t_c2_radius [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-8.log b/src/test/ref/struct-8.log index 76a171543..7e1bd8ce2 100644 --- a/src/test/ref/struct-8.log +++ b/src/test/ref/struct-8.log @@ -90,8 +90,8 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::point_x#0 = (byte) main::c_center_x#0 -Alias (byte) main::point_y#0 = (byte) main::c_center_y#0 +Alias main::point_x#0 = main::c_center_x#0 +Alias main::point_y#0 = main::c_center_y#0 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::point_x#0 = main::p_x Constant (const byte) main::point_y#0 = main::p_y @@ -202,9 +202,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::c_radius [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::c_radius [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-9.log b/src/test/ref/struct-9.log index 6b1c1ed49..698240629 100644 --- a/src/test/ref/struct-9.log +++ b/src/test/ref/struct-9.log @@ -210,9 +210,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::c_radius#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) main::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) main::c_radius#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-pos-fill.log b/src/test/ref/struct-pos-fill.log index c374f20ef..bda8094d4 100644 --- a/src/test/ref/struct-pos-fill.log +++ b/src/test/ref/struct-pos-fill.log @@ -228,26 +228,26 @@ Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) x#3 = (byte) x#5 (byte) x#9 (byte) x#7 -Alias (byte) idx#12 = (byte) idx#8 (byte) idx#5 (byte) idx#2 -Alias (byte) y#12 = (byte) y#9 (byte) y#6 (byte) y#2 -Alias (byte) line#11 = (byte) line#5 (byte) line#7 (byte) line#3 -Alias (byte) idx#11 = (byte) idx#4 (byte) idx#7 -Alias (byte) y#4 = (byte) y#8 (byte) y#5 -Alias (byte) x#10 = (byte) x#6 (byte) x#13 -Alias (byte) row#12 = (byte) row#6 (byte) row#5 -Alias (byte) line#12 = (byte) line#9 (byte) line#6 -Alias (byte) row#3 = (byte) row#7 (byte) row#9 -Alias (byte) line#0 = (byte) line#10 -Alias (byte) x#0 = (byte) x#11 -Alias (byte) row#0 = (byte) row#10 -Alias (byte) idx#0 = (byte) idx#9 -Alias (byte) y#0 = (byte) y#10 -Alias (byte) line#4 = (byte) line#8 -Alias (byte) x#4 = (byte) x#8 -Alias (byte) row#4 = (byte) row#8 -Alias (byte) idx#3 = (byte) idx#6 -Alias (byte) y#3 = (byte) y#7 +Alias x#3 = x#5 x#9 x#7 +Alias idx#12 = idx#8 idx#5 idx#2 +Alias y#12 = y#9 y#6 y#2 +Alias line#11 = line#5 line#7 line#3 +Alias idx#11 = idx#4 idx#7 +Alias y#4 = y#8 y#5 +Alias x#10 = x#6 x#13 +Alias row#12 = row#6 row#5 +Alias line#12 = line#9 line#6 +Alias row#3 = row#7 row#9 +Alias line#0 = line#10 +Alias x#0 = x#11 +Alias row#0 = row#10 +Alias idx#0 = idx#9 +Alias y#0 = y#10 +Alias line#4 = line#8 +Alias x#4 = x#8 +Alias row#4 = row#8 +Alias idx#3 = idx#6 +Alias y#3 = y#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) x#12 (byte) x#0 Identical Phi Values (byte) row#11 (byte) row#0 @@ -282,7 +282,7 @@ Eliminating unused constant (const byte) line#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const byte) row#0 Successful SSA optimization PassNEliminateUnusedVars -Alias (byte~) main::$3 = (byte~) main::$2 +Alias main::$3 = main::$2 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [5] (byte~) main::$3 ← (byte) idx#11 * (const byte) SIZEOF_STRUCT_POS Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -377,27 +377,27 @@ main::@4: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#1 67.33333333333333 -(byte) idx#11 46.42857142857143 -(byte) idx#12 7.333333333333333 +(byte) idx#1 667.3333333333334 +(byte) idx#11 457.8571428571429 +(byte) idx#12 67.33333333333333 (byte) line -(byte) line#11 2.75 -(byte) line#2 22.0 +(byte) line#11 25.25 +(byte) line#2 202.0 (void()) main() -(byte~) main::$3 151.5 +(byte~) main::$3 1501.5 (byte) pos::x (byte) pos::y (byte) row -(byte) row#12 43.285714285714285 -(byte) row#2 202.0 +(byte) row#12 429.0 +(byte) row#2 2002.0 (byte) x -(byte) x#1 22.0 -(byte) x#10 40.625 -(byte) x#2 101.0 -(byte) x#3 11.0 +(byte) x#1 202.0 +(byte) x#10 400.625 +(byte) x#2 1001.0 +(byte) x#3 101.0 (byte) y -(byte) y#1 11.0 -(byte) y#12 11.181818181818182 +(byte) y#1 101.0 +(byte) y#12 109.36363636363636 Initial phi equivalence classes [ line#11 line#2 ] @@ -550,22 +550,22 @@ main: { p: .fill 2*$40, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (byte) y#1 ← (byte) y#12 + (const byte) YSPACE [ line#11 x#10 idx#11 y#1 ] ( main:2 [ line#11 x#10 idx#11 y#1 ] ) always clobbers reg byte a +Statement [11] (byte) y#1 ← (byte) y#12 + (const byte) YSPACE [ line#11 x#10 idx#11 y#1 ] ( main:2 [ line#11 x#10 idx#11 y#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ line#11 line#2 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ x#3 x#10 x#1 x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#12 idx#11 idx#1 ] -Statement [13] (byte~) main::$3 ← (byte) idx#11 << (byte) 1 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ) always clobbers reg byte a +Statement [13] (byte~) main::$3 ← (byte) idx#11 << (byte) 1 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ y#12 y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ row#12 row#2 ] -Statement [14] *((byte*)(const struct pos*) p+(const byte) OFFSET_STRUCT_POS_Y + (byte~) main::$3) ← (byte) y#12 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ) always clobbers reg byte a +Statement [14] *((byte*)(const struct pos*) p+(const byte) OFFSET_STRUCT_POS_Y + (byte~) main::$3) ← (byte) y#12 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::$3 ] -Statement [15] *((byte*)(const struct pos*) p + (byte~) main::$3) ← (byte) x#10 [ line#11 y#12 x#10 idx#11 row#12 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 ] ) always clobbers reg byte a -Statement [17] (byte) x#2 ← (byte) x#10 + (const byte) XSPACE [ line#11 y#12 row#12 idx#1 x#2 ] ( main:2 [ line#11 y#12 row#12 idx#1 x#2 ] ) always clobbers reg byte a -Statement [11] (byte) y#1 ← (byte) y#12 + (const byte) YSPACE [ line#11 x#10 idx#11 y#1 ] ( main:2 [ line#11 x#10 idx#11 y#1 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$3 ← (byte) idx#11 << (byte) 1 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ) always clobbers reg byte a -Statement [14] *((byte*)(const struct pos*) p+(const byte) OFFSET_STRUCT_POS_Y + (byte~) main::$3) ← (byte) y#12 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ) always clobbers reg byte a -Statement [15] *((byte*)(const struct pos*) p + (byte~) main::$3) ← (byte) x#10 [ line#11 y#12 x#10 idx#11 row#12 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 ] ) always clobbers reg byte a -Statement [17] (byte) x#2 ← (byte) x#10 + (const byte) XSPACE [ line#11 y#12 row#12 idx#1 x#2 ] ( main:2 [ line#11 y#12 row#12 idx#1 x#2 ] ) always clobbers reg byte a +Statement [15] *((byte*)(const struct pos*) p + (byte~) main::$3) ← (byte) x#10 [ line#11 y#12 x#10 idx#11 row#12 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 ] { } ) always clobbers reg byte a +Statement [17] (byte) x#2 ← (byte) x#10 + (const byte) XSPACE [ line#11 y#12 row#12 idx#1 x#2 ] ( main:2 [ line#11 y#12 row#12 idx#1 x#2 ] { } ) always clobbers reg byte a +Statement [11] (byte) y#1 ← (byte) y#12 + (const byte) YSPACE [ line#11 x#10 idx#11 y#1 ] ( main:2 [ line#11 x#10 idx#11 y#1 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$3 ← (byte) idx#11 << (byte) 1 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] { } ) always clobbers reg byte a +Statement [14] *((byte*)(const struct pos*) p+(const byte) OFFSET_STRUCT_POS_Y + (byte~) main::$3) ← (byte) y#12 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 main::$3 ] { } ) always clobbers reg byte a +Statement [15] *((byte*)(const struct pos*) p + (byte~) main::$3) ← (byte) x#10 [ line#11 y#12 x#10 idx#11 row#12 ] ( main:2 [ line#11 y#12 x#10 idx#11 row#12 ] { } ) always clobbers reg byte a +Statement [17] (byte) x#2 ← (byte) x#10 + (const byte) XSPACE [ line#11 y#12 row#12 idx#1 x#2 ] ( main:2 [ line#11 y#12 row#12 idx#1 x#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ line#11 line#2 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ x#3 x#10 x#1 x#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ idx#12 idx#11 idx#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -574,8 +574,8 @@ Potential registers zp[1]:6 [ row#12 row#2 ] : zp[1]:6 , reg byte x , reg byte y Potential registers zp[1]:7 [ main::$3 ] : zp[1]:7 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 245.29: zp[1]:6 [ row#12 row#2 ] 174.62: zp[1]:3 [ x#3 x#10 x#1 x#2 ] 121.1: zp[1]:4 [ idx#12 idx#11 idx#1 ] 24.75: zp[1]:2 [ line#11 line#2 ] 22.18: zp[1]:5 [ y#12 y#1 ] -Uplift Scope [main] 151.5: zp[1]:7 [ main::$3 ] +Uplift Scope [] 2,431: zp[1]:6 [ row#12 row#2 ] 1,704.62: zp[1]:3 [ x#3 x#10 x#1 x#2 ] 1,192.52: zp[1]:4 [ idx#12 idx#11 idx#1 ] 227.25: zp[1]:2 [ line#11 line#2 ] 210.36: zp[1]:5 [ y#12 y#1 ] +Uplift Scope [main] 1,501.5: zp[1]:7 [ main::$3 ] Uplift Scope [pos] Uplifting [] best 7513 combination zp[1]:6 [ row#12 row#2 ] zp[1]:3 [ x#3 x#10 x#1 x#2 ] zp[1]:4 [ idx#12 idx#11 idx#1 ] zp[1]:2 [ line#11 line#2 ] zp[1]:5 [ y#12 y#1 ] @@ -754,14 +754,14 @@ FINAL SYMBOL TABLE (const byte) XSPACE = (byte) $14 (const byte) YSPACE = (byte) $14 (byte) idx -(byte) idx#1 idx zp[1]:4 67.33333333333333 -(byte) idx#11 idx zp[1]:4 46.42857142857143 -(byte) idx#12 idx zp[1]:4 7.333333333333333 +(byte) idx#1 idx zp[1]:4 667.3333333333334 +(byte) idx#11 idx zp[1]:4 457.8571428571429 +(byte) idx#12 idx zp[1]:4 67.33333333333333 (byte) line -(byte) line#11 line zp[1]:2 2.75 -(byte) line#2 line zp[1]:2 22.0 +(byte) line#11 line zp[1]:2 25.25 +(byte) line#2 line zp[1]:2 202.0 (void()) main() -(byte~) main::$3 reg byte x 151.5 +(byte~) main::$3 reg byte x 1501.5 (label) main::@1 (label) main::@2 (label) main::@3 @@ -772,16 +772,16 @@ FINAL SYMBOL TABLE (byte) pos::x (byte) pos::y (byte) row -(byte) row#12 reg byte y 43.285714285714285 -(byte) row#2 reg byte y 202.0 +(byte) row#12 reg byte y 429.0 +(byte) row#2 reg byte y 2002.0 (byte) x -(byte) x#1 x zp[1]:3 22.0 -(byte) x#10 x zp[1]:3 40.625 -(byte) x#2 x zp[1]:3 101.0 -(byte) x#3 x zp[1]:3 11.0 +(byte) x#1 x zp[1]:3 202.0 +(byte) x#10 x zp[1]:3 400.625 +(byte) x#2 x zp[1]:3 1001.0 +(byte) x#3 x zp[1]:3 101.0 (byte) y -(byte) y#1 y zp[1]:5 11.0 -(byte) y#12 y zp[1]:5 11.181818181818182 +(byte) y#1 y zp[1]:5 101.0 +(byte) y#12 y zp[1]:5 109.36363636363636 zp[1]:2 [ line#11 line#2 ] zp[1]:3 [ x#3 x#10 x#1 x#2 ] diff --git a/src/test/ref/struct-pos-fill.sym b/src/test/ref/struct-pos-fill.sym index 02940b9d7..b904abf4e 100644 --- a/src/test/ref/struct-pos-fill.sym +++ b/src/test/ref/struct-pos-fill.sym @@ -5,14 +5,14 @@ (const byte) XSPACE = (byte) $14 (const byte) YSPACE = (byte) $14 (byte) idx -(byte) idx#1 idx zp[1]:4 67.33333333333333 -(byte) idx#11 idx zp[1]:4 46.42857142857143 -(byte) idx#12 idx zp[1]:4 7.333333333333333 +(byte) idx#1 idx zp[1]:4 667.3333333333334 +(byte) idx#11 idx zp[1]:4 457.8571428571429 +(byte) idx#12 idx zp[1]:4 67.33333333333333 (byte) line -(byte) line#11 line zp[1]:2 2.75 -(byte) line#2 line zp[1]:2 22.0 +(byte) line#11 line zp[1]:2 25.25 +(byte) line#2 line zp[1]:2 202.0 (void()) main() -(byte~) main::$3 reg byte x 151.5 +(byte~) main::$3 reg byte x 1501.5 (label) main::@1 (label) main::@2 (label) main::@3 @@ -23,16 +23,16 @@ (byte) pos::x (byte) pos::y (byte) row -(byte) row#12 reg byte y 43.285714285714285 -(byte) row#2 reg byte y 202.0 +(byte) row#12 reg byte y 429.0 +(byte) row#2 reg byte y 2002.0 (byte) x -(byte) x#1 x zp[1]:3 22.0 -(byte) x#10 x zp[1]:3 40.625 -(byte) x#2 x zp[1]:3 101.0 -(byte) x#3 x zp[1]:3 11.0 +(byte) x#1 x zp[1]:3 202.0 +(byte) x#10 x zp[1]:3 400.625 +(byte) x#2 x zp[1]:3 1001.0 +(byte) x#3 x zp[1]:3 101.0 (byte) y -(byte) y#1 y zp[1]:5 11.0 -(byte) y#12 y zp[1]:5 11.181818181818182 +(byte) y#1 y zp[1]:5 101.0 +(byte) y#12 y zp[1]:5 109.36363636363636 zp[1]:2 [ line#11 line#2 ] zp[1]:3 [ x#3 x#10 x#1 x#2 ] diff --git a/src/test/ref/struct-ptr-0.log b/src/test/ref/struct-ptr-0.log index 84138d51f..333134c80 100644 --- a/src/test/ref/struct-ptr-0.log +++ b/src/test/ref/struct-ptr-0.log @@ -122,8 +122,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$4 = (byte~) main::$3 -Alias (byte~) main::$6 = (byte~) main::$5 +Alias main::$4 = main::$3 +Alias main::$6 = main::$5 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT Rewriting multiplication to use shift [8] (byte~) main::$6 ← (byte) main::i1#2 * (const byte) SIZEOF_STRUCT_POINT @@ -201,15 +201,15 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$4 11.0 -(byte~) main::$6 16.5 +(byte~) main::$0 202.0 +(byte~) main::$4 101.0 +(byte~) main::$6 151.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 13.75 +(byte) main::i1#1 151.5 +(byte) main::i1#2 126.25 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -339,20 +339,20 @@ main: { points: .fill 2*4, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$4) ← (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$4) ← (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$4 ] -Statement [13] (byte~) main::$6 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] ) always clobbers reg byte a +Statement [13] (byte~) main::$6 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$6) [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$6) [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$6 ] -Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$4) ← (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$6 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$6) [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$4) ← (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$6 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$6) [ main::i1#2 main::$6 ] ( main:2 [ main::i1#2 main::$6 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte x , reg byte y , @@ -360,7 +360,7 @@ Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , r Potential registers zp[1]:6 [ main::$6 ] : zp[1]:6 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[1]:3 [ main::i1#2 main::i1#1 ] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$0 ] 16.5: zp[1]:6 [ main::$6 ] 11: zp[1]:4 [ main::$4 ] +Uplift Scope [main] 277.75: zp[1]:3 [ main::i1#2 main::i1#1 ] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$0 ] 151.5: zp[1]:6 [ main::$6 ] 101: zp[1]:4 [ main::$4 ] Uplift Scope [Point] Uplift Scope [] @@ -507,19 +507,19 @@ FINAL SYMBOL TABLE (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 reg byte y 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$6 reg byte x 16.5 +(byte~) main::$0 reg byte y 202.0 +(byte~) main::$4 zp[1]:2 101.0 +(byte~) main::$6 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 13.75 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 126.25 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-0.sym b/src/test/ref/struct-ptr-0.sym index 94d36e85e..9b412a501 100644 --- a/src/test/ref/struct-ptr-0.sym +++ b/src/test/ref/struct-ptr-0.sym @@ -5,19 +5,19 @@ (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 reg byte y 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$6 reg byte x 16.5 +(byte~) main::$0 reg byte y 202.0 +(byte~) main::$4 zp[1]:2 101.0 +(byte~) main::$6 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 13.75 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 126.25 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-1.log b/src/test/ref/struct-ptr-1.log index 2a8f6b815..13ccd3b3e 100644 --- a/src/test/ref/struct-ptr-1.log +++ b/src/test/ref/struct-ptr-1.log @@ -133,8 +133,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$2 = (byte~) main::$0 -Alias (byte~) main::$8 = (byte~) main::$6 +Alias main::$2 = main::$0 +Alias main::$8 = main::$6 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$2 ← (byte) main::i#2 * (const byte) SIZEOF_POINT Rewriting multiplication to use shift [8] (byte~) main::$8 ← (byte) main::i1#2 * (const byte) SIZEOF_POINT @@ -212,15 +212,15 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 11.0 -(byte~) main::$4 22.0 -(byte~) main::$8 16.5 +(byte~) main::$2 101.0 +(byte~) main::$4 202.0 +(byte~) main::$8 151.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 13.75 +(byte) main::i1#1 151.5 +(byte) main::i1#2 126.25 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -352,22 +352,22 @@ main: { points: .fill 2*4, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$2 ] -Statement [8] (byte~) main::$4 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::$2 main::$4 ] ( main:2 [ main::i#2 main::$2 main::$4 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$8 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$4 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::$2 main::$4 ] ( main:2 [ main::i#2 main::$2 main::$4 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$8 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$8) [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$8) [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$8 ] -Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFS_Y + (byte~) main::$8) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$4 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::$2 main::$4 ] ( main:2 [ main::i#2 main::$2 main::$4 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$8 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$8) [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFS_Y + (byte~) main::$8) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFS_Y + (byte~) main::$8) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$4 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::$2 main::$4 ] ( main:2 [ main::i#2 main::$2 main::$4 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$8 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$8) [ main::i1#2 main::$8 ] ( main:2 [ main::i1#2 main::$8 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(const struct Point*) points+(const byte) OFFS_Y + (byte~) main::$8) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte x , reg byte y , @@ -375,7 +375,7 @@ Potential registers zp[1]:5 [ main::$4 ] : zp[1]:5 , reg byte a , reg byte x , r Potential registers zp[1]:6 [ main::$8 ] : zp[1]:6 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp[1]:3 [ main::i1#2 main::i1#1 ] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$4 ] 16.5: zp[1]:6 [ main::$8 ] 11: zp[1]:4 [ main::$2 ] +Uplift Scope [main] 277.75: zp[1]:3 [ main::i1#2 main::i1#1 ] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$4 ] 151.5: zp[1]:6 [ main::$8 ] 101: zp[1]:4 [ main::$2 ] Uplift Scope [Point] Uplift Scope [] @@ -518,19 +518,19 @@ FINAL SYMBOL TABLE (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 reg byte y 11.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$8 reg byte x 16.5 +(byte~) main::$2 reg byte y 101.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$8 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 13.75 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 126.25 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-1.sym b/src/test/ref/struct-ptr-1.sym index 117c28026..d11e15295 100644 --- a/src/test/ref/struct-ptr-1.sym +++ b/src/test/ref/struct-ptr-1.sym @@ -5,19 +5,19 @@ (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 reg byte y 11.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$8 reg byte x 16.5 +(byte~) main::$2 reg byte y 101.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$8 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (byte) main::i1 -(byte) main::i1#1 reg byte y 16.5 -(byte) main::i1#2 reg byte y 13.75 +(byte) main::i1#1 reg byte y 151.5 +(byte) main::i1#2 reg byte y 126.25 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-10.log b/src/test/ref/struct-ptr-10.log index edb24857d..93b8c46d9 100644 --- a/src/test/ref/struct-ptr-10.log +++ b/src/test/ref/struct-ptr-10.log @@ -187,19 +187,19 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 4.4 -(word~) main::$3 11.0 -(word~) main::$4 16.5 -(byte*~) main::$5 22.0 -(byte*~) main::$6 22.0 -(struct Point*~) main::$7 5.5 -(struct Point*~) main::$8 22.0 +(byte~) main::$0 40.4 +(word~) main::$3 101.0 +(word~) main::$4 151.5 +(byte*~) main::$5 202.0 +(byte*~) main::$6 202.0 +(struct Point*~) main::$7 50.5 +(struct Point*~) main::$8 202.0 (word) main::i -(word) main::i#1 16.5 -(word) main::i#2 4.714285714285714 +(word) main::i#1 151.5 +(word) main::i#2 43.285714285714285 (word) main::i1 -(word) main::i1#1 16.5 -(word) main::i1#2 6.6000000000000005 +(word) main::i1#1 151.5 +(word) main::i1#2 60.599999999999994 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -397,32 +397,32 @@ main: { points: .fill 2*$1f4, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$0 ← (byte)(word) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (word~) main::$3 ← (word) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte)(word) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] (word~) main::$3 ← (word) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$0 ] -Statement [8] (byte*~) main::$5 ← (byte*)(const struct Point*) points + (word~) main::$3 [ main::i#2 main::$0 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$3 main::$5 ] ) always clobbers reg byte a -Statement [9] *((byte*~) main::$5) ← (byte) 2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a reg byte y +Statement [8] (byte*~) main::$5 ← (byte*)(const struct Point*) points + (word~) main::$3 [ main::i#2 main::$0 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$3 main::$5 ] { } ) always clobbers reg byte a +Statement [9] *((byte*~) main::$5) ← (byte) 2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::$0 ] -Statement [10] (byte*~) main::$6 ← (byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (word~) main::$3 [ main::i#2 main::$0 main::$6 ] ( main:2 [ main::i#2 main::$0 main::$6 ] ) always clobbers reg byte a -Statement [11] *((byte*~) main::$6) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [13] if((word) main::i#1!=(word) $1f4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [15] (word~) main::$4 ← (word) main::i1#2 << (byte) 1 [ main::i1#2 main::$4 ] ( main:2 [ main::i1#2 main::$4 ] ) always clobbers reg byte a -Statement [16] (struct Point*~) main::$7 ← (const struct Point*) points + (word~) main::$4 [ main::i1#2 main::$4 main::$7 ] ( main:2 [ main::i1#2 main::$4 main::$7 ] ) always clobbers reg byte a -Statement [17] (struct Point*~) main::$8 ← (const struct Point*) main::SCREEN + (word~) main::$4 [ main::i1#2 main::$7 main::$8 ] ( main:2 [ main::i1#2 main::$7 main::$8 ] ) always clobbers reg byte a -Statement [18] *((struct Point*~) main::$8) ← memcpy(*((struct Point*~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [20] if((word) main::i1#1!=(word) $1f4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte)(word) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (word~) main::$3 ← (word) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a -Statement [8] (byte*~) main::$5 ← (byte*)(const struct Point*) points + (word~) main::$3 [ main::i#2 main::$0 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$3 main::$5 ] ) always clobbers reg byte a -Statement [9] *((byte*~) main::$5) ← (byte) 2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte*~) main::$6 ← (byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (word~) main::$3 [ main::i#2 main::$0 main::$6 ] ( main:2 [ main::i#2 main::$0 main::$6 ] ) always clobbers reg byte a -Statement [11] *((byte*~) main::$6) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [13] if((word) main::i#1!=(word) $1f4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a -Statement [15] (word~) main::$4 ← (word) main::i1#2 << (byte) 1 [ main::i1#2 main::$4 ] ( main:2 [ main::i1#2 main::$4 ] ) always clobbers reg byte a -Statement [16] (struct Point*~) main::$7 ← (const struct Point*) points + (word~) main::$4 [ main::i1#2 main::$4 main::$7 ] ( main:2 [ main::i1#2 main::$4 main::$7 ] ) always clobbers reg byte a -Statement [17] (struct Point*~) main::$8 ← (const struct Point*) main::SCREEN + (word~) main::$4 [ main::i1#2 main::$7 main::$8 ] ( main:2 [ main::i1#2 main::$7 main::$8 ] ) always clobbers reg byte a -Statement [18] *((struct Point*~) main::$8) ← memcpy(*((struct Point*~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [20] if((word) main::i1#1!=(word) $1f4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a +Statement [10] (byte*~) main::$6 ← (byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (word~) main::$3 [ main::i#2 main::$0 main::$6 ] ( main:2 [ main::i#2 main::$0 main::$6 ] { } ) always clobbers reg byte a +Statement [11] *((byte*~) main::$6) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [13] if((word) main::i#1!=(word) $1f4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [15] (word~) main::$4 ← (word) main::i1#2 << (byte) 1 [ main::i1#2 main::$4 ] ( main:2 [ main::i1#2 main::$4 ] { } ) always clobbers reg byte a +Statement [16] (struct Point*~) main::$7 ← (const struct Point*) points + (word~) main::$4 [ main::i1#2 main::$4 main::$7 ] ( main:2 [ main::i1#2 main::$4 main::$7 ] { } ) always clobbers reg byte a +Statement [17] (struct Point*~) main::$8 ← (const struct Point*) main::SCREEN + (word~) main::$4 [ main::i1#2 main::$7 main::$8 ] ( main:2 [ main::i1#2 main::$7 main::$8 ] { } ) always clobbers reg byte a +Statement [18] *((struct Point*~) main::$8) ← memcpy(*((struct Point*~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [20] if((word) main::i1#1!=(word) $1f4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte)(word) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] (word~) main::$3 ← (word) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a +Statement [8] (byte*~) main::$5 ← (byte*)(const struct Point*) points + (word~) main::$3 [ main::i#2 main::$0 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$3 main::$5 ] { } ) always clobbers reg byte a +Statement [9] *((byte*~) main::$5) ← (byte) 2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte*~) main::$6 ← (byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (word~) main::$3 [ main::i#2 main::$0 main::$6 ] ( main:2 [ main::i#2 main::$0 main::$6 ] { } ) always clobbers reg byte a +Statement [11] *((byte*~) main::$6) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [13] if((word) main::i#1!=(word) $1f4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] { } ) always clobbers reg byte a +Statement [15] (word~) main::$4 ← (word) main::i1#2 << (byte) 1 [ main::i1#2 main::$4 ] ( main:2 [ main::i1#2 main::$4 ] { } ) always clobbers reg byte a +Statement [16] (struct Point*~) main::$7 ← (const struct Point*) points + (word~) main::$4 [ main::i1#2 main::$4 main::$7 ] ( main:2 [ main::i1#2 main::$4 main::$7 ] { } ) always clobbers reg byte a +Statement [17] (struct Point*~) main::$8 ← (const struct Point*) main::SCREEN + (word~) main::$4 [ main::i1#2 main::$7 main::$8 ] ( main:2 [ main::i1#2 main::$7 main::$8 ] { } ) always clobbers reg byte a +Statement [18] *((struct Point*~) main::$8) ← memcpy(*((struct Point*~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [20] if((word) main::i1#1!=(word) $1f4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::i1#2 main::i1#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte x , @@ -434,7 +434,7 @@ Potential registers zp[2]:15 [ main::$7 ] : zp[2]:15 , Potential registers zp[2]:17 [ main::$8 ] : zp[2]:17 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.1: zp[2]:4 [ main::i1#2 main::i1#1 ] 22: zp[2]:9 [ main::$5 ] 22: zp[2]:11 [ main::$6 ] 22: zp[2]:17 [ main::$8 ] 21.21: zp[2]:2 [ main::i#2 main::i#1 ] 16.5: zp[2]:13 [ main::$4 ] 11: zp[2]:7 [ main::$3 ] 5.5: zp[2]:15 [ main::$7 ] 4.4: zp[1]:6 [ main::$0 ] +Uplift Scope [main] 212.1: zp[2]:4 [ main::i1#2 main::i1#1 ] 202: zp[2]:9 [ main::$5 ] 202: zp[2]:11 [ main::$6 ] 202: zp[2]:17 [ main::$8 ] 194.79: zp[2]:2 [ main::i#2 main::i#1 ] 151.5: zp[2]:13 [ main::$4 ] 101: zp[2]:7 [ main::$3 ] 50.5: zp[2]:15 [ main::$7 ] 40.4: zp[1]:6 [ main::$0 ] Uplift Scope [Point] Uplift Scope [] @@ -657,23 +657,23 @@ FINAL SYMBOL TABLE (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$0 reg byte x 4.4 -(word~) main::$3 zp[2]:6 11.0 -(word~) main::$4 zp[2]:10 16.5 -(byte*~) main::$5 zp[2]:8 22.0 -(byte*~) main::$6 zp[2]:6 22.0 -(struct Point*~) main::$7 zp[2]:12 5.5 -(struct Point*~) main::$8 zp[2]:10 22.0 +(byte~) main::$0 reg byte x 40.4 +(word~) main::$3 zp[2]:6 101.0 +(word~) main::$4 zp[2]:10 151.5 +(byte*~) main::$5 zp[2]:8 202.0 +(byte*~) main::$6 zp[2]:6 202.0 +(struct Point*~) main::$7 zp[2]:12 50.5 +(struct Point*~) main::$8 zp[2]:10 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (word) main::i -(word) main::i#1 i zp[2]:2 16.5 -(word) main::i#2 i zp[2]:2 4.714285714285714 +(word) main::i#1 i zp[2]:2 151.5 +(word) main::i#2 i zp[2]:2 43.285714285714285 (word) main::i1 -(word) main::i1#1 i1 zp[2]:4 16.5 -(word) main::i1#2 i1 zp[2]:4 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:4 151.5 +(word) main::i1#2 i1 zp[2]:4 60.599999999999994 (const struct Point*) points[(number) $1f4] = { fill( $1f4, 0) } zp[2]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-10.sym b/src/test/ref/struct-ptr-10.sym index b42fd65c5..2f7f7860f 100644 --- a/src/test/ref/struct-ptr-10.sym +++ b/src/test/ref/struct-ptr-10.sym @@ -6,23 +6,23 @@ (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$0 reg byte x 4.4 -(word~) main::$3 zp[2]:6 11.0 -(word~) main::$4 zp[2]:10 16.5 -(byte*~) main::$5 zp[2]:8 22.0 -(byte*~) main::$6 zp[2]:6 22.0 -(struct Point*~) main::$7 zp[2]:12 5.5 -(struct Point*~) main::$8 zp[2]:10 22.0 +(byte~) main::$0 reg byte x 40.4 +(word~) main::$3 zp[2]:6 101.0 +(word~) main::$4 zp[2]:10 151.5 +(byte*~) main::$5 zp[2]:8 202.0 +(byte*~) main::$6 zp[2]:6 202.0 +(struct Point*~) main::$7 zp[2]:12 50.5 +(struct Point*~) main::$8 zp[2]:10 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (word) main::i -(word) main::i#1 i zp[2]:2 16.5 -(word) main::i#2 i zp[2]:2 4.714285714285714 +(word) main::i#1 i zp[2]:2 151.5 +(word) main::i#2 i zp[2]:2 43.285714285714285 (word) main::i1 -(word) main::i1#1 i1 zp[2]:4 16.5 -(word) main::i1#2 i1 zp[2]:4 6.6000000000000005 +(word) main::i1#1 i1 zp[2]:4 151.5 +(word) main::i1#2 i1 zp[2]:4 60.599999999999994 (const struct Point*) points[(number) $1f4] = { fill( $1f4, 0) } zp[2]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-11.log b/src/test/ref/struct-ptr-11.log index de184f2f2..19b90f63d 100644 --- a/src/test/ref/struct-ptr-11.log +++ b/src/test/ref/struct-ptr-11.log @@ -128,8 +128,8 @@ Inlining constant with var siblings (const byte) main::i1#0 Constant inlined main::i#0 = (byte) 0 Constant inlined main::i1#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$6 = (byte~) main::$9 -Alias (byte~) main::$7 = (byte~) main::$11 +Alias main::$6 = main::$9 +Alias main::$7 = main::$11 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@5(between main::@1 and main::@1) Added new block during phi lifting main::@6(between main::@3 and main::@3) @@ -200,17 +200,17 @@ VARIABLE REGISTER WEIGHTS (signed byte) Point::y (signed byte) Point::z (void()) main() -(byte~) main::$10 22.0 -(signed byte~) main::$2 5.5 -(byte~) main::$6 14.666666666666666 -(byte~) main::$7 22.0 -(byte~) main::$8 22.0 +(byte~) main::$10 202.0 +(signed byte~) main::$2 50.5 +(byte~) main::$6 134.66666666666666 +(byte~) main::$7 202.0 +(byte~) main::$8 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.285714285714286 +(byte) main::i#1 151.5 +(byte) main::i#2 57.714285714285715 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 11.0 +(byte) main::i1#1 151.5 +(byte) main::i1#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -365,32 +365,32 @@ main: { points: .fill 3*4, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed byte~) main::$2 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [6] (signed byte~) main::$2 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 main::$8 ] ( main:2 [ main::i#2 main::$2 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 main::$8 ] ( main:2 [ main::i#2 main::$2 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$2 ] -Statement [8] (byte~) main::$6 ← (byte~) main::$8 + (byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] ) always clobbers reg byte a -Statement [9] *((signed byte*)(const struct Point*) points + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$6 ← (byte~) main::$8 + (byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] { } ) always clobbers reg byte a +Statement [9] *((signed byte*)(const struct Point*) points + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$6 ] -Statement [10] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) ← (signed byte~) main::$2 [ main::i#2 main::$6 ] ( main:2 [ main::i#2 main::$6 ] ) always clobbers reg byte a -Statement [11] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Z + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$10 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$10 ] ( main:2 [ main::i1#2 main::$10 ] ) always clobbers reg byte a +Statement [10] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) ← (signed byte~) main::$2 [ main::i#2 main::$6 ] ( main:2 [ main::i#2 main::$6 ] { } ) always clobbers reg byte a +Statement [11] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Z + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$10 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$10 ] ( main:2 [ main::i1#2 main::$10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [16] (byte~) main::$7 ← (byte~) main::$10 + (byte) main::i1#2 [ main::i1#2 main::$7 ] ( main:2 [ main::i1#2 main::$7 ] ) always clobbers reg byte a -Statement [17] *((const struct Point*) main::SCREEN + (byte~) main::$7) ← memcpy(*((const struct Point*) points + (byte~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [16] (byte~) main::$7 ← (byte~) main::$10 + (byte) main::i1#2 [ main::i1#2 main::$7 ] ( main:2 [ main::i1#2 main::$7 ] { } ) always clobbers reg byte a +Statement [17] *((const struct Point*) main::SCREEN + (byte~) main::$7) ← memcpy(*((const struct Point*) points + (byte~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [19] if((byte) main::i1#1!=(byte) 4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a -Statement [6] (signed byte~) main::$2 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 main::$8 ] ( main:2 [ main::i#2 main::$2 main::$8 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$6 ← (byte~) main::$8 + (byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] ) always clobbers reg byte a -Statement [9] *((signed byte*)(const struct Point*) points + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] ) always clobbers reg byte a -Statement [10] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) ← (signed byte~) main::$2 [ main::i#2 main::$6 ] ( main:2 [ main::i#2 main::$6 ] ) always clobbers reg byte a -Statement [11] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Z + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$10 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$10 ] ( main:2 [ main::i1#2 main::$10 ] ) always clobbers reg byte a -Statement [16] (byte~) main::$7 ← (byte~) main::$10 + (byte) main::i1#2 [ main::i1#2 main::$7 ] ( main:2 [ main::i1#2 main::$7 ] ) always clobbers reg byte a -Statement [17] *((const struct Point*) main::SCREEN + (byte~) main::$7) ← memcpy(*((const struct Point*) points + (byte~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [19] if((byte) main::i1#1!=(byte) 4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a +Statement [19] if((byte) main::i1#1!=(byte) 4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a +Statement [6] (signed byte~) main::$2 ← - (signed byte)(byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 main::$8 ] ( main:2 [ main::i#2 main::$2 main::$8 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$6 ← (byte~) main::$8 + (byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] { } ) always clobbers reg byte a +Statement [9] *((signed byte*)(const struct Point*) points + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 main::$2 main::$6 ] ( main:2 [ main::i#2 main::$2 main::$6 ] { } ) always clobbers reg byte a +Statement [10] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$6) ← (signed byte~) main::$2 [ main::i#2 main::$6 ] ( main:2 [ main::i#2 main::$6 ] { } ) always clobbers reg byte a +Statement [11] *((signed byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Z + (byte~) main::$6) ← (signed byte)(byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$10 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$10 ] ( main:2 [ main::i1#2 main::$10 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$7 ← (byte~) main::$10 + (byte) main::i1#2 [ main::i1#2 main::$7 ] ( main:2 [ main::i1#2 main::$7 ] { } ) always clobbers reg byte a +Statement [17] *((const struct Point*) main::SCREEN + (byte~) main::$7) ← memcpy(*((const struct Point*) points + (byte~) main::$7), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [19] if((byte) main::i1#1!=(byte) 4) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte x , reg byte y , @@ -400,7 +400,7 @@ Potential registers zp[1]:7 [ main::$10 ] : zp[1]:7 , reg byte a , reg byte x , Potential registers zp[1]:8 [ main::$7 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 22.79: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$8 ] 22: zp[1]:7 [ main::$10 ] 22: zp[1]:8 [ main::$7 ] 14.67: zp[1]:6 [ main::$6 ] 5.5: zp[1]:4 [ main::$2 ] +Uplift Scope [main] 252.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 209.21: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$8 ] 202: zp[1]:7 [ main::$10 ] 202: zp[1]:8 [ main::$7 ] 134.67: zp[1]:6 [ main::$6 ] 50.5: zp[1]:4 [ main::$2 ] Uplift Scope [Point] Uplift Scope [] @@ -571,21 +571,21 @@ FINAL SYMBOL TABLE (signed byte) Point::z (const byte) SIZEOF_STRUCT_POINT = (byte) 3 (void()) main() -(byte~) main::$10 reg byte a 22.0 -(signed byte~) main::$2 zp[1]:3 5.5 -(byte~) main::$6 reg byte y 14.666666666666666 -(byte~) main::$7 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(signed byte~) main::$2 zp[1]:3 50.5 +(byte~) main::$6 reg byte y 134.66666666666666 +(byte~) main::$7 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.285714285714286 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 57.714285714285715 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:2 16.5 -(byte) main::i1#2 i1 zp[1]:2 11.0 +(byte) main::i1#1 i1 zp[1]:2 151.5 +(byte) main::i1#2 i1 zp[1]:2 101.0 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-11.sym b/src/test/ref/struct-ptr-11.sym index dfc3ccab0..7b4a300f1 100644 --- a/src/test/ref/struct-ptr-11.sym +++ b/src/test/ref/struct-ptr-11.sym @@ -8,21 +8,21 @@ (signed byte) Point::z (const byte) SIZEOF_STRUCT_POINT = (byte) 3 (void()) main() -(byte~) main::$10 reg byte a 22.0 -(signed byte~) main::$2 zp[1]:3 5.5 -(byte~) main::$6 reg byte y 14.666666666666666 -(byte~) main::$7 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$10 reg byte a 202.0 +(signed byte~) main::$2 zp[1]:3 50.5 +(byte~) main::$6 reg byte y 134.66666666666666 +(byte~) main::$7 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.285714285714286 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 57.714285714285715 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:2 16.5 -(byte) main::i1#2 i1 zp[1]:2 11.0 +(byte) main::i1#1 i1 zp[1]:2 151.5 +(byte) main::i1#2 i1 zp[1]:2 101.0 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-12-ref.log b/src/test/ref/struct-ptr-12-ref.log index 93ae4e440..2f9cc62b1 100644 --- a/src/test/ref/struct-ptr-12-ref.log +++ b/src/test/ref/struct-ptr-12-ref.log @@ -90,9 +90,9 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(word) main::p loadstore 20.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(word) main::p loadstore 110.0 Initial phi equivalence classes Added variable main::p to live range equivalence class [ main::p ] @@ -162,13 +162,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::p ← (byte) 2*(word) $100+(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (word) main::p ← (byte) 2*(word) $100+(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::p ] : zp[2]:2 , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[2]:2 [ main::p ] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:5 [ main::$1 ] +Uplift Scope [main] 110: zp[2]:2 [ main::p ] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$1 ] Uplift Scope [] Uplifting [main] best 45 combination zp[2]:2 [ main::p ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] @@ -245,11 +245,11 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(word) main::p loadstore zp[2]:2 20.0 +(word) main::p loadstore zp[2]:2 110.0 (const word*) main::q = &(word) main::p zp[2]:2 [ main::p ] diff --git a/src/test/ref/struct-ptr-12-ref.sym b/src/test/ref/struct-ptr-12-ref.sym index b64d16d78..48dbb3d06 100644 --- a/src/test/ref/struct-ptr-12-ref.sym +++ b/src/test/ref/struct-ptr-12-ref.sym @@ -2,11 +2,11 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 -(word) main::p loadstore zp[2]:2 20.0 +(word) main::p loadstore zp[2]:2 110.0 (const word*) main::q = &(word) main::p zp[2]:2 [ main::p ] diff --git a/src/test/ref/struct-ptr-12.log b/src/test/ref/struct-ptr-12.log index db9f54fa9..cbe48cb58 100644 --- a/src/test/ref/struct-ptr-12.log +++ b/src/test/ref/struct-ptr-12.log @@ -174,9 +174,9 @@ main: { __0: .byte 2, 3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::p) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [5] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) main::q) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::p) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) main::q) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::p ] : zp[2]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-ptr-13.log b/src/test/ref/struct-ptr-13.log index 06e354c21..3a81961ad 100644 --- a/src/test/ref/struct-ptr-13.log +++ b/src/test/ref/struct-ptr-13.log @@ -198,10 +198,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(const struct Point*) points) ← *((byte*)(const struct Point*) points) + (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) + (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) points) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((byte*)(const struct Point*) points) ← *((byte*)(const struct Point*) points) + (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) + (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) points) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-ptr-14.log b/src/test/ref/struct-ptr-14.log index e96666872..82b955934 100644 --- a/src/test/ref/struct-ptr-14.log +++ b/src/test/ref/struct-ptr-14.log @@ -260,11 +260,11 @@ set: { __0: .byte 2, 3 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::p) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [6] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) main::q) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Point*) main::q) ← (byte) 4 [ ] ( main:2::set:5 [ ] ) always clobbers reg byte a -Statement [10] *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 5 [ ] ( main:2::set:5 [ ] ) always clobbers reg byte a +Statement [4] *(&(struct Point) main::p) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) main::q) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Point*) main::q) ← (byte) 4 [ ] ( main:2::set:5 [ ] { } ) always clobbers reg byte a +Statement [10] *((byte*)(const struct Point*) main::q+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 5 [ ] ( main:2::set:5 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::p ] : zp[2]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/struct-ptr-15.log b/src/test/ref/struct-ptr-15.log index 3ed29a61b..fb1e2687e 100644 --- a/src/test/ref/struct-ptr-15.log +++ b/src/test/ref/struct-ptr-15.log @@ -308,21 +308,21 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(struct Point*~) main::$9 11.0 +(struct Point*~) main::$9 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 2.4444444444444446 +(byte) main::i#1 151.5 +(byte) main::i#2 22.444444444444443 (byte) main::idx -(byte) main::idx#1 16.5 -(byte) main::idx#2 5.5 -(byte) main::idx#3 6.6000000000000005 +(byte) main::idx#1 151.5 +(byte) main::idx#2 50.5 +(byte) main::idx#3 60.599999999999994 (struct Circle*) main::ptr -(struct Circle*) main::ptr#1 7.333333333333333 -(struct Circle*) main::ptr#2 2.75 +(struct Circle*) main::ptr#1 67.33333333333333 +(struct Circle*) main::ptr#2 25.25 (byte) main::x -(byte) main::x#0 7.333333333333333 +(byte) main::x#0 67.33333333333333 (byte) main::y -(byte) main::y#0 7.333333333333333 +(byte) main::y#0 67.33333333333333 Initial phi equivalence classes [ main::ptr#2 main::ptr#1 ] @@ -480,38 +480,38 @@ main: { circles: .fill 3*2, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((byte*)(const struct Circle*) circles) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Circle*) circles+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) $f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] (byte) main::x#0 ← *((byte*)(struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ) always clobbers reg byte a reg byte y +Statement [4] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(const struct Circle*) circles) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Circle*) circles+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) $f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] (byte) main::x#0 ← *((byte*)(struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#3 main::idx#2 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::idx#3 main::idx#2 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::i#2 main::i#1 ] -Statement [12] (struct Point*~) main::$9 ← (struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ) always clobbers reg byte a +Statement [12] (struct Point*~) main::$9 ← (struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::x#0 ] -Statement [13] (byte) main::y#0 ← *((byte*)(struct Point*~) main::$9 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte) main::y#0 ← *((byte*)(struct Point*~) main::$9 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::x#0 ] -Statement [14] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) main::x#0 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) main::x#0 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::y#0 ] -Statement [16] *((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte) main::y#0 [ main::ptr#2 main::i#2 main::idx#1 ] ( main:2 [ main::ptr#2 main::i#2 main::idx#1 ] ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte) main::y#0 [ main::ptr#2 main::i#2 main::idx#1 ] ( main:2 [ main::ptr#2 main::i#2 main::idx#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::idx#1 ] -Statement [18] (struct Circle*) main::ptr#1 ← (struct Circle*) main::ptr#2 + (const byte) SIZEOF_STRUCT_CIRCLE [ main::i#2 main::ptr#1 main::idx#2 ] ( main:2 [ main::i#2 main::ptr#1 main::idx#2 ] ) always clobbers reg byte a -Statement [4] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((byte*)(const struct Circle*) circles) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Circle*) circles+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) $f [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] (byte) main::x#0 ← *((byte*)(struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ) always clobbers reg byte a reg byte y -Statement [12] (struct Point*~) main::$9 ← (struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ) always clobbers reg byte a -Statement [13] (byte) main::y#0 ← *((byte*)(struct Point*~) main::$9 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) main::x#0 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte) main::y#0 [ main::ptr#2 main::i#2 main::idx#1 ] ( main:2 [ main::ptr#2 main::i#2 main::idx#1 ] ) always clobbers reg byte a -Statement [18] (struct Circle*) main::ptr#1 ← (struct Circle*) main::ptr#2 + (const byte) SIZEOF_STRUCT_CIRCLE [ main::i#2 main::ptr#1 main::idx#2 ] ( main:2 [ main::i#2 main::ptr#1 main::idx#2 ] ) always clobbers reg byte a +Statement [18] (struct Circle*) main::ptr#1 ← (struct Circle*) main::ptr#2 + (const byte) SIZEOF_STRUCT_CIRCLE [ main::i#2 main::ptr#1 main::idx#2 ] ( main:2 [ main::i#2 main::ptr#1 main::idx#2 ] { } ) always clobbers reg byte a +Statement [4] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(const struct Circle*) circles) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(struct Point*)(const struct Circle*) circles+(const byte) OFFSET_STRUCT_CIRCLE_CENTER+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Circle*) circles+(byte) 1*(const byte) SIZEOF_STRUCT_CIRCLE) ← (byte) $f [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] (byte) main::x#0 ← *((byte*)(struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 ] { } ) always clobbers reg byte a reg byte y +Statement [12] (struct Point*~) main::$9 ← (struct Point*)(struct Circle*) main::ptr#2 + (const byte) OFFSET_STRUCT_CIRCLE_CENTER [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::$9 ] { } ) always clobbers reg byte a +Statement [13] (byte) main::y#0 ← *((byte*)(struct Point*~) main::$9 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::x#0 main::y#0 ] { } ) always clobbers reg byte a reg byte y +Statement [14] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) main::x#0 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] ( main:2 [ main::ptr#2 main::idx#3 main::i#2 main::y#0 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte) main::y#0 [ main::ptr#2 main::i#2 main::idx#1 ] ( main:2 [ main::ptr#2 main::i#2 main::idx#1 ] { } ) always clobbers reg byte a +Statement [18] (struct Circle*) main::ptr#1 ← (struct Circle*) main::ptr#2 + (const byte) SIZEOF_STRUCT_CIRCLE [ main::i#2 main::ptr#1 main::idx#2 ] ( main:2 [ main::i#2 main::ptr#1 main::idx#2 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::ptr#2 main::ptr#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::idx#3 main::idx#2 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::i#2 main::i#1 ] : zp[1]:5 , reg byte x , @@ -521,7 +521,7 @@ Potential registers zp[1]:9 [ main::y#0 ] : zp[1]:9 , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::idx#1 ] : zp[1]:10 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 18.94: zp[1]:5 [ main::i#2 main::i#1 ] 16.5: zp[1]:10 [ main::idx#1 ] 12.1: zp[1]:4 [ main::idx#3 main::idx#2 ] 11: zp[2]:7 [ main::$9 ] 10.08: zp[2]:2 [ main::ptr#2 main::ptr#1 ] 7.33: zp[1]:6 [ main::x#0 ] 7.33: zp[1]:9 [ main::y#0 ] +Uplift Scope [main] 173.94: zp[1]:5 [ main::i#2 main::i#1 ] 151.5: zp[1]:10 [ main::idx#1 ] 111.1: zp[1]:4 [ main::idx#3 main::idx#2 ] 101: zp[2]:7 [ main::$9 ] 92.58: zp[2]:2 [ main::ptr#2 main::ptr#1 ] 67.33: zp[1]:6 [ main::x#0 ] 67.33: zp[1]:9 [ main::y#0 ] Uplift Scope [Point] Uplift Scope [Circle] Uplift Scope [] @@ -697,24 +697,24 @@ FINAL SYMBOL TABLE (const byte) SIZEOF_STRUCT_CIRCLE = (byte) 3 (const struct Circle*) circles[(number) 2] = { fill( 2, 0) } (void()) main() -(struct Point*~) main::$9 zp[2]:6 11.0 +(struct Point*~) main::$9 zp[2]:6 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 2.4444444444444446 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 22.444444444444443 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 5.5 -(byte) main::idx#3 reg byte x 6.6000000000000005 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 50.5 +(byte) main::idx#3 reg byte x 60.599999999999994 (struct Circle*) main::ptr -(struct Circle*) main::ptr#1 ptr zp[2]:2 7.333333333333333 -(struct Circle*) main::ptr#2 ptr zp[2]:2 2.75 +(struct Circle*) main::ptr#1 ptr zp[2]:2 67.33333333333333 +(struct Circle*) main::ptr#2 ptr zp[2]:2 25.25 (byte) main::x -(byte) main::x#0 x zp[1]:5 7.333333333333333 +(byte) main::x#0 x zp[1]:5 67.33333333333333 (byte) main::y -(byte) main::y#0 reg byte y 7.333333333333333 +(byte) main::y#0 reg byte y 67.33333333333333 zp[2]:2 [ main::ptr#2 main::ptr#1 ] reg byte x [ main::idx#3 main::idx#2 ] diff --git a/src/test/ref/struct-ptr-15.sym b/src/test/ref/struct-ptr-15.sym index f81fa2e29..865a0c898 100644 --- a/src/test/ref/struct-ptr-15.sym +++ b/src/test/ref/struct-ptr-15.sym @@ -10,24 +10,24 @@ (const byte) SIZEOF_STRUCT_CIRCLE = (byte) 3 (const struct Circle*) circles[(number) 2] = { fill( 2, 0) } (void()) main() -(struct Point*~) main::$9 zp[2]:6 11.0 +(struct Point*~) main::$9 zp[2]:6 101.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:4 16.5 -(byte) main::i#2 i zp[1]:4 2.4444444444444446 +(byte) main::i#1 i zp[1]:4 151.5 +(byte) main::i#2 i zp[1]:4 22.444444444444443 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 5.5 -(byte) main::idx#3 reg byte x 6.6000000000000005 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 50.5 +(byte) main::idx#3 reg byte x 60.599999999999994 (struct Circle*) main::ptr -(struct Circle*) main::ptr#1 ptr zp[2]:2 7.333333333333333 -(struct Circle*) main::ptr#2 ptr zp[2]:2 2.75 +(struct Circle*) main::ptr#1 ptr zp[2]:2 67.33333333333333 +(struct Circle*) main::ptr#2 ptr zp[2]:2 25.25 (byte) main::x -(byte) main::x#0 x zp[1]:5 7.333333333333333 +(byte) main::x#0 x zp[1]:5 67.33333333333333 (byte) main::y -(byte) main::y#0 reg byte y 7.333333333333333 +(byte) main::y#0 reg byte y 67.33333333333333 zp[2]:2 [ main::ptr#2 main::ptr#1 ] reg byte x [ main::idx#3 main::idx#2 ] diff --git a/src/test/ref/struct-ptr-16.asm b/src/test/ref/struct-ptr-16.asm index 2895a17b4..bb6eb224b 100644 --- a/src/test/ref/struct-ptr-16.asm +++ b/src/test/ref/struct-ptr-16.asm @@ -14,19 +14,17 @@ main: { lda #0 jsr get // get(0) - lda.z get.return_y // *SCREEN = get(0) - stx SCREEN - sta SCREEN+OFFSET_STRUCT_POINT_Y + sta SCREEN + stx SCREEN+OFFSET_STRUCT_POINT_Y ldy #1 __b1: // get(i) tya jsr get // get(i) - lda.z get.return_y - stx.z __1_x - sta.z __1_y + sta.z __1_x + stx.z __1_y // SCREEN[i] = get(i) tya asl @@ -44,7 +42,6 @@ main: { } // get(byte register(A) i) get: { - .label return_y = 2 // if(i==0) cmp #0 beq __b1 @@ -52,21 +49,18 @@ get: { cmp #1 beq __b2 // return *p2; - ldx p2 - lda p2+OFFSET_STRUCT_POINT_Y - sta.z return_y + lda p2 + ldx p2+OFFSET_STRUCT_POINT_Y // } rts __b2: // return *p1; - ldx p1 - lda p1+OFFSET_STRUCT_POINT_Y - sta.z return_y + lda p1 + ldx p1+OFFSET_STRUCT_POINT_Y rts __b1: // return *p0; - ldx p0 - lda p0+OFFSET_STRUCT_POINT_Y - sta.z return_y + lda p0 + ldx p0+OFFSET_STRUCT_POINT_Y rts } diff --git a/src/test/ref/struct-ptr-16.log b/src/test/ref/struct-ptr-16.log index 33d9750c2..1ace3216c 100644 --- a/src/test/ref/struct-ptr-16.log +++ b/src/test/ref/struct-ptr-16.log @@ -233,14 +233,14 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) get::return_x#0 = (byte) get::return_x#6 -Alias (byte) get::return_y#0 = (byte) get::return_y#6 -Alias (byte) get::return_x#1 = (byte) get::return_x#7 -Alias (byte) get::return_y#1 = (byte) get::return_y#7 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) get::i#2 = (byte) get::i#3 -Alias (byte) get::return_x#5 = (byte) get::return_x#8 -Alias (byte) get::return_y#5 = (byte) get::return_y#8 +Alias get::return_x#0 = get::return_x#6 +Alias get::return_y#0 = get::return_y#6 +Alias get::return_x#1 = get::return_x#7 +Alias get::return_y#1 = get::return_y#7 +Alias main::i#2 = main::i#3 +Alias get::i#2 = get::i#3 +Alias get::return_x#5 = get::return_x#8 +Alias get::return_y#5 = get::return_y#8 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [21] if((byte) main::i#1!=rangelast(1,2)) goto main::@1 Simple Condition (bool~) get::$0 [25] if((byte) get::i#2==(byte) 0) goto get::@1 @@ -405,32 +405,32 @@ VARIABLE REGISTER WEIGHTS (byte) Point::y (struct Point()) get((byte) get::i) (byte) get::i -(byte) get::i#1 22.0 -(byte) get::i#2 7.5 +(byte) get::i#1 202.0 +(byte) get::i#2 1051.5 (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 2.0 -(byte) get::return_x#1 11.0 -(byte) get::return_x#2 2.0 -(byte) get::return_x#3 2.0 -(byte) get::return_x#4 2.0 -(byte) get::return_x#5 4.75 +(byte) get::return_x#0 11.0 +(byte) get::return_x#1 101.0 +(byte) get::return_x#2 1001.0 +(byte) get::return_x#3 1001.0 +(byte) get::return_x#4 1001.0 +(byte) get::return_x#5 778.75 (byte) get::return_y -(byte) get::return_y#0 2.0 -(byte) get::return_y#1 11.0 -(byte) get::return_y#2 4.0 -(byte) get::return_y#3 4.0 -(byte) get::return_y#4 4.0 -(byte) get::return_y#5 3.166666666666667 +(byte) get::return_y#0 11.0 +(byte) get::return_y#1 101.0 +(byte) get::return_y#2 2002.0 +(byte) get::return_y#3 2002.0 +(byte) get::return_y#4 2002.0 +(byte) get::return_y#5 519.1666666666667 (void()) main() -(byte~) main::$0_x 2.0 -(byte~) main::$0_y 2.0 -(byte~) main::$1_x 7.333333333333333 -(byte~) main::$1_y 7.333333333333333 -(byte~) main::$3 16.5 +(byte~) main::$0_x 11.0 +(byte~) main::$0_y 11.0 +(byte~) main::$1_x 67.33333333333333 +(byte~) main::$1_y 67.33333333333333 +(byte~) main::$3 151.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.4 +(byte) main::i#1 151.5 +(byte) main::i#2 40.4 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -662,16 +662,16 @@ get: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$1_y main::$3 ] ) always clobbers reg byte a +Statement [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$1_y main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ main::$1_x ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ main::$1_y ] -Statement [20] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_y main::$3 ] ) always clobbers reg byte a +Statement [20] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_y main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ main::$3 ] -Statement [21] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (byte~) main::$1_y [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$1_y main::$3 ] ) always clobbers reg byte a -Statement [20] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_y main::$3 ] ) always clobbers reg byte a -Statement [21] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (byte~) main::$1_y [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [21] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (byte~) main::$1_y [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$1_y main::$3 ] { } ) always clobbers reg byte a +Statement [20] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$1_y main::$3 ] ( main:2 [ main::i#2 main::$1_y main::$3 ] { } ) always clobbers reg byte a +Statement [21] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (byte~) main::$1_y [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ get::i#2 get::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -687,35 +687,32 @@ Potential registers zp[1]:13 [ main::$1_y ] : zp[1]:13 , reg byte x , reg byte y Potential registers zp[1]:14 [ main::$3 ] : zp[1]:14 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [get] 29.5: zp[1]:3 [ get::i#2 get::i#1 ] 15.17: zp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] 11: zp[1]:10 [ get::return_x#1 ] 11: zp[1]:11 [ get::return_y#1 ] 10.75: zp[1]:4 [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] 2: zp[1]:6 [ get::return_x#0 ] 2: zp[1]:7 [ get::return_y#0 ] -Uplift Scope [main] 20.9: zp[1]:2 [ main::i#2 main::i#1 ] 16.5: zp[1]:14 [ main::$3 ] 7.33: zp[1]:12 [ main::$1_x ] 7.33: zp[1]:13 [ main::$1_y ] 2: zp[1]:8 [ main::$0_x ] 2: zp[1]:9 [ main::$0_y ] +Uplift Scope [get] 6,525.17: zp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] 3,781.75: zp[1]:4 [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] 1,253.5: zp[1]:3 [ get::i#2 get::i#1 ] 101: zp[1]:10 [ get::return_x#1 ] 101: zp[1]:11 [ get::return_y#1 ] 11: zp[1]:6 [ get::return_x#0 ] 11: zp[1]:7 [ get::return_y#0 ] +Uplift Scope [main] 191.9: zp[1]:2 [ main::i#2 main::i#1 ] 151.5: zp[1]:14 [ main::$3 ] 67.33: zp[1]:12 [ main::$1_x ] 67.33: zp[1]:13 [ main::$1_y ] 11: zp[1]:8 [ main::$0_x ] 11: zp[1]:9 [ main::$0_y ] Uplift Scope [Point] Uplift Scope [] -Uplifting [get] best 889 combination reg byte a [ get::i#2 get::i#1 ] zp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] reg byte x [ get::return_x#1 ] reg byte a [ get::return_y#1 ] zp[1]:4 [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] zp[1]:6 [ get::return_x#0 ] zp[1]:7 [ get::return_y#0 ] +Uplifting [get] best 865 combination reg byte x [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] reg byte a [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] reg byte a [ get::i#2 get::i#1 ] reg byte a [ get::return_x#1 ] zp[1]:11 [ get::return_y#1 ] zp[1]:6 [ get::return_x#0 ] zp[1]:7 [ get::return_y#0 ] Limited combination testing to 100 combinations of 16384 possible. -Uplifting [main] best 709 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::$3 ] zp[1]:12 [ main::$1_x ] zp[1]:13 [ main::$1_y ] zp[1]:8 [ main::$0_x ] zp[1]:9 [ main::$0_y ] +Uplifting [main] best 685 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::$3 ] zp[1]:12 [ main::$1_x ] zp[1]:13 [ main::$1_y ] zp[1]:8 [ main::$0_x ] zp[1]:9 [ main::$0_y ] Limited combination testing to 100 combinations of 1296 possible. -Uplifting [Point] best 709 combination -Uplifting [] best 709 combination -Attempting to uplift remaining variables inzp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] -Uplifting [get] best 709 combination zp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] -Attempting to uplift remaining variables inzp[1]:4 [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] -Uplifting [get] best 667 combination reg byte x [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] +Uplifting [Point] best 685 combination +Uplifting [] best 685 combination +Attempting to uplift remaining variables inzp[1]:11 [ get::return_y#1 ] +Uplifting [get] best 625 combination reg byte x [ get::return_y#1 ] Attempting to uplift remaining variables inzp[1]:12 [ main::$1_x ] -Uplifting [main] best 667 combination zp[1]:12 [ main::$1_x ] +Uplifting [main] best 625 combination zp[1]:12 [ main::$1_x ] Attempting to uplift remaining variables inzp[1]:13 [ main::$1_y ] -Uplifting [main] best 667 combination zp[1]:13 [ main::$1_y ] +Uplifting [main] best 625 combination zp[1]:13 [ main::$1_y ] Attempting to uplift remaining variables inzp[1]:6 [ get::return_x#0 ] -Uplifting [get] best 661 combination reg byte x [ get::return_x#0 ] +Uplifting [get] best 619 combination reg byte a [ get::return_x#0 ] Attempting to uplift remaining variables inzp[1]:7 [ get::return_y#0 ] -Uplifting [get] best 655 combination reg byte a [ get::return_y#0 ] +Uplifting [get] best 613 combination reg byte x [ get::return_y#0 ] Attempting to uplift remaining variables inzp[1]:8 [ main::$0_x ] -Uplifting [main] best 649 combination reg byte x [ main::$0_x ] +Uplifting [main] best 607 combination reg byte a [ main::$0_x ] Attempting to uplift remaining variables inzp[1]:9 [ main::$0_y ] -Uplifting [main] best 643 combination reg byte a [ main::$0_y ] -Coalescing zero page register [ zp[1]:12 [ main::$1_x ] ] with [ zp[1]:5 [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] ] -Allocated (was zp[1]:12) zp[1]:2 [ main::$1_x get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] +Uplifting [main] best 601 combination reg byte x [ main::$0_y ] +Allocated (was zp[1]:12) zp[1]:2 [ main::$1_x ] Allocated (was zp[1]:13) zp[1]:3 [ main::$1_y ] ASSEMBLER BEFORE OPTIMIZATION @@ -758,17 +755,16 @@ main: { lda #0 jsr get // [6] (byte) get::return_x#0 ← (byte) get::return_x#5 - // [7] (byte) get::return_y#0 ← (byte) get::return_y#5 -- vbuaa=vbuz1 - lda.z get.return_y + // [7] (byte) get::return_y#0 ← (byte) get::return_y#5 jmp __b2 // main::@2 __b2: // [8] (byte~) main::$0_x ← (byte) get::return_x#0 // [9] (byte~) main::$0_y ← (byte) get::return_y#0 - // [10] *((byte*)(const struct Point*) SCREEN) ← (byte~) main::$0_x -- _deref_pbuc1=vbuxx - stx SCREEN - // [11] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0_y -- _deref_pbuc1=vbuaa - sta SCREEN+OFFSET_STRUCT_POINT_Y + // [10] *((byte*)(const struct Point*) SCREEN) ← (byte~) main::$0_x -- _deref_pbuc1=vbuaa + sta SCREEN + // [11] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0_y -- _deref_pbuc1=vbuxx + stx SCREEN+OFFSET_STRUCT_POINT_Y // [12] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: // [12] phi (byte) main::i#2 = (byte) 1 [phi:main::@2->main::@1#0] -- vbuyy=vbuc1 @@ -788,15 +784,14 @@ main: { // [25] phi (byte) get::i#2 = (byte) get::i#1 [phi:main::@1->get#0] -- register_copy jsr get // [15] (byte) get::return_x#1 ← (byte) get::return_x#5 - // [16] (byte) get::return_y#1 ← (byte) get::return_y#5 -- vbuaa=vbuz1 - lda.z get.return_y + // [16] (byte) get::return_y#1 ← (byte) get::return_y#5 jmp __b3 // main::@3 __b3: - // [17] (byte~) main::$1_x ← (byte) get::return_x#1 -- vbuz1=vbuxx - stx.z __1_x - // [18] (byte~) main::$1_y ← (byte) get::return_y#1 -- vbuz1=vbuaa - sta.z __1_y + // [17] (byte~) main::$1_x ← (byte) get::return_x#1 -- vbuz1=vbuaa + sta.z __1_x + // [18] (byte~) main::$1_y ← (byte) get::return_y#1 -- vbuz1=vbuxx + stx.z __1_y // [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl @@ -821,7 +816,6 @@ main: { // get // get(byte register(A) i) get: { - .label return_y = 2 // [26] if((byte) get::i#2==(byte) 0) goto get::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq __b1 @@ -834,11 +828,10 @@ get: { jmp __b4 // get::@4 __b4: - // [28] (byte) get::return_x#4 ← *((byte*)(const struct Point*) p2) -- vbuxx=_deref_pbuc1 - ldx p2 - // [29] (byte) get::return_y#4 ← *((byte*)(const struct Point*) p2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p2+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [28] (byte) get::return_x#4 ← *((byte*)(const struct Point*) p2) -- vbuaa=_deref_pbuc1 + lda p2 + // [29] (byte) get::return_y#4 ← *((byte*)(const struct Point*) p2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p2+OFFSET_STRUCT_POINT_Y // [30] phi from get::@1 get::@2 get::@4 to get::@return [phi:get::@1/get::@2/get::@4->get::@return] __breturn_from___b1: __breturn_from___b2: @@ -852,19 +845,17 @@ get: { rts // get::@2 __b2: - // [32] (byte) get::return_x#3 ← *((byte*)(const struct Point*) p1) -- vbuxx=_deref_pbuc1 - ldx p1 - // [33] (byte) get::return_y#3 ← *((byte*)(const struct Point*) p1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p1+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [32] (byte) get::return_x#3 ← *((byte*)(const struct Point*) p1) -- vbuaa=_deref_pbuc1 + lda p1 + // [33] (byte) get::return_y#3 ← *((byte*)(const struct Point*) p1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p1+OFFSET_STRUCT_POINT_Y jmp __breturn_from___b2 // get::@1 __b1: - // [34] (byte) get::return_x#2 ← *((byte*)(const struct Point*) p0) -- vbuxx=_deref_pbuc1 - ldx p0 - // [35] (byte) get::return_y#2 ← *((byte*)(const struct Point*) p0+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p0+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [34] (byte) get::return_x#2 ← *((byte*)(const struct Point*) p0) -- vbuaa=_deref_pbuc1 + lda p0 + // [35] (byte) get::return_y#2 ← *((byte*)(const struct Point*) p0+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p0+OFFSET_STRUCT_POINT_Y jmp __breturn_from___b1 } // File Data @@ -929,56 +920,57 @@ FINAL SYMBOL TABLE (label) get::@4 (label) get::@return (byte) get::i -(byte) get::i#1 reg byte a 22.0 -(byte) get::i#2 reg byte a 7.5 +(byte) get::i#1 reg byte a 202.0 +(byte) get::i#2 reg byte a 1051.5 (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte x 2.0 -(byte) get::return_x#1 reg byte x 11.0 -(byte) get::return_x#2 reg byte x 2.0 -(byte) get::return_x#3 reg byte x 2.0 -(byte) get::return_x#4 reg byte x 2.0 -(byte) get::return_x#5 reg byte x 4.75 +(byte) get::return_x#0 reg byte a 11.0 +(byte) get::return_x#1 reg byte a 101.0 +(byte) get::return_x#2 reg byte a 1001.0 +(byte) get::return_x#3 reg byte a 1001.0 +(byte) get::return_x#4 reg byte a 1001.0 +(byte) get::return_x#5 reg byte a 778.75 (byte) get::return_y -(byte) get::return_y#0 reg byte a 2.0 -(byte) get::return_y#1 reg byte a 11.0 -(byte) get::return_y#2 return_y zp[1]:2 4.0 -(byte) get::return_y#3 return_y zp[1]:2 4.0 -(byte) get::return_y#4 return_y zp[1]:2 4.0 -(byte) get::return_y#5 return_y zp[1]:2 3.166666666666667 +(byte) get::return_y#0 reg byte x 11.0 +(byte) get::return_y#1 reg byte x 101.0 +(byte) get::return_y#2 reg byte x 2002.0 +(byte) get::return_y#3 reg byte x 2002.0 +(byte) get::return_y#4 reg byte x 2002.0 +(byte) get::return_y#5 reg byte x 519.1666666666667 (void()) main() -(byte~) main::$0_x reg byte x 2.0 -(byte~) main::$0_y reg byte a 2.0 -(byte~) main::$1_x zp[1]:2 7.333333333333333 -(byte~) main::$1_y zp[1]:3 7.333333333333333 -(byte~) main::$3 reg byte x 16.5 +(byte~) main::$0_x reg byte a 11.0 +(byte~) main::$0_y reg byte x 11.0 +(byte~) main::$1_x zp[1]:2 67.33333333333333 +(byte~) main::$1_y zp[1]:3 67.33333333333333 +(byte~) main::$3 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.4 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 40.4 (const struct Point*) p0 = (struct Point*) 40960 (const struct Point*) p1 = (struct Point*) 45056 (const struct Point*) p2 = (struct Point*) 57344 reg byte y [ main::i#2 main::i#1 ] reg byte a [ get::i#2 get::i#1 ] -reg byte x [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] -reg byte x [ get::return_x#0 ] -reg byte a [ get::return_y#0 ] -reg byte x [ main::$0_x ] -reg byte a [ main::$0_y ] -reg byte x [ get::return_x#1 ] -reg byte a [ get::return_y#1 ] -zp[1]:2 [ main::$1_x get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] +reg byte a [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] +reg byte x [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] +reg byte a [ get::return_x#0 ] +reg byte x [ get::return_y#0 ] +reg byte a [ main::$0_x ] +reg byte x [ main::$0_y ] +reg byte a [ get::return_x#1 ] +reg byte x [ get::return_y#1 ] +zp[1]:2 [ main::$1_x ] zp[1]:3 [ main::$1_y ] reg byte x [ main::$3 ] FINAL ASSEMBLER -Score: 505 +Score: 463 // File Comments // Demonstrates problem with returning a dereferenced pointer to a struct @@ -1011,16 +1003,15 @@ main: { jsr get // get(0) // [6] (byte) get::return_x#0 ← (byte) get::return_x#5 - // [7] (byte) get::return_y#0 ← (byte) get::return_y#5 -- vbuaa=vbuz1 - lda.z get.return_y + // [7] (byte) get::return_y#0 ← (byte) get::return_y#5 // main::@2 // [8] (byte~) main::$0_x ← (byte) get::return_x#0 // [9] (byte~) main::$0_y ← (byte) get::return_y#0 // *SCREEN = get(0) - // [10] *((byte*)(const struct Point*) SCREEN) ← (byte~) main::$0_x -- _deref_pbuc1=vbuxx - stx SCREEN - // [11] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0_y -- _deref_pbuc1=vbuaa - sta SCREEN+OFFSET_STRUCT_POINT_Y + // [10] *((byte*)(const struct Point*) SCREEN) ← (byte~) main::$0_x -- _deref_pbuc1=vbuaa + sta SCREEN + // [11] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0_y -- _deref_pbuc1=vbuxx + stx SCREEN+OFFSET_STRUCT_POINT_Y // [12] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [12] phi (byte) main::i#2 = (byte) 1 [phi:main::@2->main::@1#0] -- vbuyy=vbuc1 ldy #1 @@ -1037,13 +1028,12 @@ main: { jsr get // get(i) // [15] (byte) get::return_x#1 ← (byte) get::return_x#5 - // [16] (byte) get::return_y#1 ← (byte) get::return_y#5 -- vbuaa=vbuz1 - lda.z get.return_y + // [16] (byte) get::return_y#1 ← (byte) get::return_y#5 // main::@3 - // [17] (byte~) main::$1_x ← (byte) get::return_x#1 -- vbuz1=vbuxx - stx.z __1_x - // [18] (byte~) main::$1_y ← (byte) get::return_y#1 -- vbuz1=vbuaa - sta.z __1_y + // [17] (byte~) main::$1_x ← (byte) get::return_x#1 -- vbuz1=vbuaa + sta.z __1_x + // [18] (byte~) main::$1_y ← (byte) get::return_y#1 -- vbuz1=vbuxx + stx.z __1_y // SCREEN[i] = get(i) // [19] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya @@ -1069,7 +1059,6 @@ main: { // get // get(byte register(A) i) get: { - .label return_y = 2 // if(i==0) // [26] if((byte) get::i#2==(byte) 0) goto get::@1 -- vbuaa_eq_0_then_la1 cmp #0 @@ -1081,11 +1070,10 @@ get: { beq __b2 // get::@4 // return *p2; - // [28] (byte) get::return_x#4 ← *((byte*)(const struct Point*) p2) -- vbuxx=_deref_pbuc1 - ldx p2 - // [29] (byte) get::return_y#4 ← *((byte*)(const struct Point*) p2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p2+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [28] (byte) get::return_x#4 ← *((byte*)(const struct Point*) p2) -- vbuaa=_deref_pbuc1 + lda p2 + // [29] (byte) get::return_y#4 ← *((byte*)(const struct Point*) p2+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p2+OFFSET_STRUCT_POINT_Y // [30] phi from get::@1 get::@2 get::@4 to get::@return [phi:get::@1/get::@2/get::@4->get::@return] // [30] phi (byte) get::return_y#5 = (byte) get::return_y#2 [phi:get::@1/get::@2/get::@4->get::@return#0] -- register_copy // [30] phi (byte) get::return_x#5 = (byte) get::return_x#2 [phi:get::@1/get::@2/get::@4->get::@return#1] -- register_copy @@ -1096,20 +1084,18 @@ get: { // get::@2 __b2: // return *p1; - // [32] (byte) get::return_x#3 ← *((byte*)(const struct Point*) p1) -- vbuxx=_deref_pbuc1 - ldx p1 - // [33] (byte) get::return_y#3 ← *((byte*)(const struct Point*) p1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p1+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [32] (byte) get::return_x#3 ← *((byte*)(const struct Point*) p1) -- vbuaa=_deref_pbuc1 + lda p1 + // [33] (byte) get::return_y#3 ← *((byte*)(const struct Point*) p1+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p1+OFFSET_STRUCT_POINT_Y rts // get::@1 __b1: // return *p0; - // [34] (byte) get::return_x#2 ← *((byte*)(const struct Point*) p0) -- vbuxx=_deref_pbuc1 - ldx p0 - // [35] (byte) get::return_y#2 ← *((byte*)(const struct Point*) p0+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuz1=_deref_pbuc1 - lda p0+OFFSET_STRUCT_POINT_Y - sta.z return_y + // [34] (byte) get::return_x#2 ← *((byte*)(const struct Point*) p0) -- vbuaa=_deref_pbuc1 + lda p0 + // [35] (byte) get::return_y#2 ← *((byte*)(const struct Point*) p0+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 + ldx p0+OFFSET_STRUCT_POINT_Y rts } // File Data diff --git a/src/test/ref/struct-ptr-16.sym b/src/test/ref/struct-ptr-16.sym index 7a7818ca6..ca42181c9 100644 --- a/src/test/ref/struct-ptr-16.sym +++ b/src/test/ref/struct-ptr-16.sym @@ -12,49 +12,50 @@ (label) get::@4 (label) get::@return (byte) get::i -(byte) get::i#1 reg byte a 22.0 -(byte) get::i#2 reg byte a 7.5 +(byte) get::i#1 reg byte a 202.0 +(byte) get::i#2 reg byte a 1051.5 (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte x 2.0 -(byte) get::return_x#1 reg byte x 11.0 -(byte) get::return_x#2 reg byte x 2.0 -(byte) get::return_x#3 reg byte x 2.0 -(byte) get::return_x#4 reg byte x 2.0 -(byte) get::return_x#5 reg byte x 4.75 +(byte) get::return_x#0 reg byte a 11.0 +(byte) get::return_x#1 reg byte a 101.0 +(byte) get::return_x#2 reg byte a 1001.0 +(byte) get::return_x#3 reg byte a 1001.0 +(byte) get::return_x#4 reg byte a 1001.0 +(byte) get::return_x#5 reg byte a 778.75 (byte) get::return_y -(byte) get::return_y#0 reg byte a 2.0 -(byte) get::return_y#1 reg byte a 11.0 -(byte) get::return_y#2 return_y zp[1]:2 4.0 -(byte) get::return_y#3 return_y zp[1]:2 4.0 -(byte) get::return_y#4 return_y zp[1]:2 4.0 -(byte) get::return_y#5 return_y zp[1]:2 3.166666666666667 +(byte) get::return_y#0 reg byte x 11.0 +(byte) get::return_y#1 reg byte x 101.0 +(byte) get::return_y#2 reg byte x 2002.0 +(byte) get::return_y#3 reg byte x 2002.0 +(byte) get::return_y#4 reg byte x 2002.0 +(byte) get::return_y#5 reg byte x 519.1666666666667 (void()) main() -(byte~) main::$0_x reg byte x 2.0 -(byte~) main::$0_y reg byte a 2.0 -(byte~) main::$1_x zp[1]:2 7.333333333333333 -(byte~) main::$1_y zp[1]:3 7.333333333333333 -(byte~) main::$3 reg byte x 16.5 +(byte~) main::$0_x reg byte a 11.0 +(byte~) main::$0_y reg byte x 11.0 +(byte~) main::$1_x zp[1]:2 67.33333333333333 +(byte~) main::$1_y zp[1]:3 67.33333333333333 +(byte~) main::$3 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.4 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 40.4 (const struct Point*) p0 = (struct Point*) 40960 (const struct Point*) p1 = (struct Point*) 45056 (const struct Point*) p2 = (struct Point*) 57344 reg byte y [ main::i#2 main::i#1 ] reg byte a [ get::i#2 get::i#1 ] -reg byte x [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] -reg byte x [ get::return_x#0 ] -reg byte a [ get::return_y#0 ] -reg byte x [ main::$0_x ] -reg byte a [ main::$0_y ] -reg byte x [ get::return_x#1 ] -reg byte a [ get::return_y#1 ] -zp[1]:2 [ main::$1_x get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] +reg byte a [ get::return_x#5 get::return_x#2 get::return_x#3 get::return_x#4 ] +reg byte x [ get::return_y#5 get::return_y#2 get::return_y#3 get::return_y#4 ] +reg byte a [ get::return_x#0 ] +reg byte x [ get::return_y#0 ] +reg byte a [ main::$0_x ] +reg byte x [ main::$0_y ] +reg byte a [ get::return_x#1 ] +reg byte x [ get::return_y#1 ] +zp[1]:2 [ main::$1_x ] zp[1]:3 [ main::$1_y ] reg byte x [ main::$3 ] diff --git a/src/test/ref/struct-ptr-17.log b/src/test/ref/struct-ptr-17.log index 654718033..76cb41751 100644 --- a/src/test/ref/struct-ptr-17.log +++ b/src/test/ref/struct-ptr-17.log @@ -173,13 +173,13 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) get::return_x#0 = (byte) get::return_x#4 -Alias (byte) get::return_y#0 = (byte) get::return_y#4 -Alias (byte) get::return_x#1 = (byte) get::return_x#5 -Alias (byte) get::return_y#1 = (byte) get::return_y#5 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) get::return_x#2 = (byte) get::p_x#0 (byte) get::i#2 (byte) get::return_x#6 (byte) get::return_x#3 -Alias (byte) get::return_y#2 = (byte) get::return_y#6 (byte) get::return_y#3 +Alias get::return_x#0 = get::return_x#4 +Alias get::return_y#0 = get::return_y#4 +Alias get::return_x#1 = get::return_x#5 +Alias get::return_y#1 = get::return_y#5 +Alias main::i#2 = main::i#3 +Alias get::return_x#2 = get::p_x#0 get::i#2 get::return_x#6 get::return_x#3 +Alias get::return_y#2 = get::return_y#6 get::return_y#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [21] if((byte) main::i#1!=rangelast(1,2)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -300,21 +300,21 @@ VARIABLE REGISTER WEIGHTS (byte) Point::y (struct Point()) get((byte) get::i) (byte) get::i -(byte) get::i#1 22.0 +(byte) get::i#1 202.0 (byte) get::p_x (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 4.0 -(byte) get::return_x#1 22.0 -(byte) get::return_x#2 6.0 +(byte) get::return_x#0 22.0 +(byte) get::return_x#1 202.0 +(byte) get::return_x#2 53.25 (byte) get::return_y (void()) main() -(byte~) main::$0_x 4.0 -(byte~) main::$1_x 11.0 -(byte~) main::$3 16.5 +(byte~) main::$0_x 22.0 +(byte~) main::$1_x 101.0 +(byte~) main::$3 151.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -465,17 +465,17 @@ get: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) get::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$3 ] ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) get::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::$1_x ] -Statement [16] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a +Statement [16] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$3 ] -Statement [17] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (const byte) get::p_y [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) get::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$3 ] ) always clobbers reg byte a -Statement [16] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a -Statement [17] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (const byte) get::p_y [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [17] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (const byte) get::p_y [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y) ← (const byte) get::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1_x main::$3 ] ( main:2 [ main::i#2 main::$1_x main::$3 ] { } ) always clobbers reg byte a +Statement [16] *((byte*)(const struct Point*) SCREEN + (byte~) main::$3) ← (byte~) main::$1_x [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] { } ) always clobbers reg byte a +Statement [17] *((byte*)(const struct Point*) SCREEN+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$3) ← (const byte) get::p_y [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ get::return_x#2 get::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ get::return_x#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -485,8 +485,8 @@ Potential registers zp[1]:7 [ main::$1_x ] : zp[1]:7 , reg byte x , reg byte y , Potential registers zp[1]:8 [ main::$3 ] : zp[1]:8 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [get] 28: zp[1]:3 [ get::return_x#2 get::i#1 ] 22: zp[1]:6 [ get::return_x#1 ] 4: zp[1]:4 [ get::return_x#0 ] -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 16.5: zp[1]:8 [ main::$3 ] 11: zp[1]:7 [ main::$1_x ] 4: zp[1]:5 [ main::$0_x ] +Uplift Scope [get] 255.25: zp[1]:3 [ get::return_x#2 get::i#1 ] 202: zp[1]:6 [ get::return_x#1 ] 22: zp[1]:4 [ get::return_x#0 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 151.5: zp[1]:8 [ main::$3 ] 101: zp[1]:7 [ main::$1_x ] 22: zp[1]:5 [ main::$0_x ] Uplift Scope [Point] Uplift Scope [] @@ -645,26 +645,26 @@ FINAL SYMBOL TABLE (struct Point()) get((byte) get::i) (label) get::@return (byte) get::i -(byte) get::i#1 reg byte a 22.0 +(byte) get::i#1 reg byte a 202.0 (byte) get::p_x (const byte) get::p_y = (byte) 7 (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte a 4.0 -(byte) get::return_x#1 reg byte a 22.0 -(byte) get::return_x#2 reg byte a 6.0 +(byte) get::return_x#0 reg byte a 22.0 +(byte) get::return_x#1 reg byte a 202.0 +(byte) get::return_x#2 reg byte a 53.25 (byte) get::return_y (void()) main() -(byte~) main::$0_x reg byte a 4.0 -(byte~) main::$1_x zp[1]:2 11.0 -(byte~) main::$3 reg byte x 16.5 +(byte~) main::$0_x reg byte a 22.0 +(byte~) main::$1_x zp[1]:2 101.0 +(byte~) main::$3 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 50.5 reg byte y [ main::i#2 main::i#1 ] reg byte a [ get::return_x#2 get::i#1 ] diff --git a/src/test/ref/struct-ptr-17.sym b/src/test/ref/struct-ptr-17.sym index 3fd189683..18d343968 100644 --- a/src/test/ref/struct-ptr-17.sym +++ b/src/test/ref/struct-ptr-17.sym @@ -8,26 +8,26 @@ (struct Point()) get((byte) get::i) (label) get::@return (byte) get::i -(byte) get::i#1 reg byte a 22.0 +(byte) get::i#1 reg byte a 202.0 (byte) get::p_x (const byte) get::p_y = (byte) 7 (struct Point) get::return (byte) get::return_x -(byte) get::return_x#0 reg byte a 4.0 -(byte) get::return_x#1 reg byte a 22.0 -(byte) get::return_x#2 reg byte a 6.0 +(byte) get::return_x#0 reg byte a 22.0 +(byte) get::return_x#1 reg byte a 202.0 +(byte) get::return_x#2 reg byte a 53.25 (byte) get::return_y (void()) main() -(byte~) main::$0_x reg byte a 4.0 -(byte~) main::$1_x zp[1]:2 11.0 -(byte~) main::$3 reg byte x 16.5 +(byte~) main::$0_x reg byte a 22.0 +(byte~) main::$1_x zp[1]:2 101.0 +(byte~) main::$3 reg byte x 151.5 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 50.5 reg byte y [ main::i#2 main::i#1 ] reg byte a [ get::return_x#2 get::i#1 ] diff --git a/src/test/ref/struct-ptr-18.asm b/src/test/ref/struct-ptr-18.asm index 5c10c63dc..642e2da89 100644 --- a/src/test/ref/struct-ptr-18.asm +++ b/src/test/ref/struct-ptr-18.asm @@ -5,8 +5,8 @@ .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 main: { + .label i = 2 // points[0] = { 1, 2 } ldy #SIZEOF_STRUCT_POINT !: @@ -21,42 +21,40 @@ main: { sta points+1*SIZEOF_STRUCT_POINT-1,y dey bne !- - lda #0 - sta.z idx - tax + ldx #0 + txa + sta.z i __b1: // print(points[i]) - txa + lda.z i asl tay lda points,y sta.z print.p_x lda points+OFFSET_STRUCT_POINT_Y,y - sta.z print.p_y + tay jsr print // for ( char i: 0..1) - inx - cpx #2 + inc.z i + lda #2 + cmp.z i bne __b1 // } rts } -// print(byte zp(3) p_x, byte zp(4) p_y) +// print(byte zp(3) p_x, byte register(Y) p_y) print: { .label p_x = 3 - .label p_y = 4 // SCREEN[idx++] = p.x lda.z p_x - ldy.z idx - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = p.x; - iny + inx // SCREEN[idx++] = p.y - lda.z p_y - sta SCREEN,y + tya + sta SCREEN,x // SCREEN[idx++] = p.y; - iny - sty.z idx + inx // } rts } diff --git a/src/test/ref/struct-ptr-18.log b/src/test/ref/struct-ptr-18.log index 427d8af63..9397f9e49 100644 --- a/src/test/ref/struct-ptr-18.log +++ b/src/test/ref/struct-ptr-18.log @@ -143,11 +143,11 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$2 ← (byte) 0 * (const byte) SIZEOF_STRUCT_POINT Inferred type updated to byte in (unumber~) main::$3 ← (byte) 1 * (const byte) SIZEOF_STRUCT_POINT -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) idx#1 = (byte) idx#7 (byte) idx#8 (byte) idx#2 -Alias (byte) idx#10 = (byte) idx#4 (byte) idx#5 -Alias (byte) idx#0 = (byte) idx#13 -Alias (byte) idx#11 = (byte) idx#6 +Alias main::i#2 = main::i#3 +Alias idx#1 = idx#7 idx#8 idx#2 +Alias idx#10 = idx#4 idx#5 +Alias idx#0 = idx#13 +Alias idx#11 = idx#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#14 (byte) idx#0 Identical Phi Values (byte) idx#1 (byte) idx#10 @@ -261,20 +261,20 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (byte) idx -(byte) idx#10 2.6 -(byte) idx#12 3.0 -(byte) idx#3 3.0 +(byte) idx#10 220.39999999999998 +(byte) idx#12 420.59999999999997 +(byte) idx#3 1501.5 (void()) main() -(byte~) main::$4 16.5 +(byte~) main::$4 151.5 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 6.6000000000000005 +(byte) main::i#1 151.5 +(byte) main::i#2 60.599999999999994 (void()) print((byte) print::p_x , (byte) print::p_y) (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 6.5 +(byte) print::p_x#0 551.0 (byte) print::p_y -(byte) print::p_y#0 4.333333333333333 +(byte) print::p_y#0 367.33333333333337 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -421,14 +421,14 @@ print: { __1: .byte 3, 4 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [5] *((const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← memcpy(*(&(const struct Point) $1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#12 main::$4 ] ( main:2 [ main::i#2 idx#12 main::$4 ] ) always clobbers reg byte a +Statement [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← memcpy(*(&(const struct Point) $1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#12 main::$4 ] ( main:2 [ main::i#2 idx#12 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#12 idx#10 ] -Statement [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [5] *((const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← memcpy(*(&(const struct Point) $1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#12 main::$4 ] ( main:2 [ main::i#2 idx#12 main::$4 ] ) always clobbers reg byte a +Statement [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [5] *((const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← memcpy(*(&(const struct Point) $1), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#12 main::$4 ] ( main:2 [ main::i#2 idx#12 main::$4 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#12 idx#10 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -437,24 +437,22 @@ Potential registers zp[1]:6 [ print::p_y#0 ] : zp[1]:6 , reg byte a , reg byte x Potential registers zp[1]:7 [ idx#3 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 16.5: zp[1]:4 [ main::$4 ] -Uplift Scope [print] 6.5: zp[1]:5 [ print::p_x#0 ] 4.33: zp[1]:6 [ print::p_y#0 ] -Uplift Scope [] 5.6: zp[1]:3 [ idx#12 idx#10 ] 3: zp[1]:7 [ idx#3 ] +Uplift Scope [] 1,501.5: zp[1]:7 [ idx#3 ] 641: zp[1]:3 [ idx#12 idx#10 ] +Uplift Scope [print] 551: zp[1]:5 [ print::p_x#0 ] 367.33: zp[1]:6 [ print::p_y#0 ] +Uplift Scope [main] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 151.5: zp[1]:4 [ main::$4 ] Uplift Scope [Point] -Uplifting [main] best 622 combination reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::$4 ] -Uplifting [print] best 622 combination zp[1]:5 [ print::p_x#0 ] zp[1]:6 [ print::p_y#0 ] -Uplifting [] best 613 combination zp[1]:3 [ idx#12 idx#10 ] reg byte y [ idx#3 ] -Uplifting [Point] best 613 combination +Uplifting [] best 744 combination reg byte x [ idx#3 ] reg byte x [ idx#12 idx#10 ] +Uplifting [print] best 744 combination zp[1]:5 [ print::p_x#0 ] zp[1]:6 [ print::p_y#0 ] +Uplifting [main] best 674 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte y [ main::$4 ] +Uplifting [Point] best 674 combination Attempting to uplift remaining variables inzp[1]:5 [ print::p_x#0 ] -Uplifting [print] best 613 combination zp[1]:5 [ print::p_x#0 ] -Attempting to uplift remaining variables inzp[1]:3 [ idx#12 idx#10 ] -Uplifting [] best 613 combination zp[1]:3 [ idx#12 idx#10 ] +Uplifting [print] best 674 combination zp[1]:5 [ print::p_x#0 ] Attempting to uplift remaining variables inzp[1]:6 [ print::p_y#0 ] -Uplifting [print] best 613 combination zp[1]:6 [ print::p_y#0 ] -Allocated (was zp[1]:3) zp[1]:2 [ idx#12 idx#10 ] +Uplifting [print] best 663 combination reg byte y [ print::p_y#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 663 combination zp[1]:2 [ main::i#2 main::i#1 ] Allocated (was zp[1]:5) zp[1]:3 [ print::p_x#0 ] -Allocated (was zp[1]:6) zp[1]:4 [ print::p_y#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -467,7 +465,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -484,6 +481,7 @@ __bend_from___b1: __bend: // main main: { + .label i = 2 // [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) -- _deref_pssc1=_deref_pssc2_memcpy_vbuc3 ldy #SIZEOF_STRUCT_POINT !: @@ -500,11 +498,11 @@ main: { bne !- // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte) idx#12 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z idx - // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + // [6] phi (byte) idx#12 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 + // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i jmp __b1 // [6] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: @@ -513,25 +511,26 @@ main: { jmp __b1 // main::@1 __b1: - // [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 -- vbuyy=vbuxx_rol_1 - txa + // [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 -- vbuyy=vbuz1_rol_1 + lda.z i asl tay // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$4) -- vbuz1=pbuc1_derefidx_vbuyy lda points,y sta.z print.p_x - // [9] (byte) print::p_y#0 ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) -- vbuz1=pbuc1_derefidx_vbuyy + // [9] (byte) print::p_y#0 ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) -- vbuyy=pbuc1_derefidx_vbuyy lda points+OFFSET_STRUCT_POINT_Y,y - sta.z print.p_y + tay // [10] call print jsr print jmp __b2 // main::@2 __b2: - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::i#1!=(byte) 2) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #2 + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [12] if((byte) main::i#1!=(byte) 2) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #2 + cmp.z i bne __b1_from___b2 jmp __breturn // main::@return @@ -540,23 +539,19 @@ main: { rts } // print -// print(byte zp(3) p_x, byte zp(4) p_y) +// print(byte zp(3) p_x, byte register(Y) p_y) print: { .label p_x = 3 - .label p_y = 4 - // [14] *((const byte*) SCREEN + (byte) idx#12) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 + // [14] *((const byte*) SCREEN + (byte) idx#12) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z p_x - ldy.z idx - sta SCREEN,y - // [15] (byte) idx#3 ← ++ (byte) idx#12 -- vbuyy=_inc_vbuz1 - ldy.z idx - iny - // [16] *((const byte*) SCREEN + (byte) idx#3) ← (byte) print::p_y#0 -- pbuc1_derefidx_vbuyy=vbuz1 - lda.z p_y - sta SCREEN,y - // [17] (byte) idx#10 ← ++ (byte) idx#3 -- vbuz1=_inc_vbuyy - iny - sty.z idx + sta SCREEN,x + // [15] (byte) idx#3 ← ++ (byte) idx#12 -- vbuxx=_inc_vbuxx + inx + // [16] *((const byte*) SCREEN + (byte) idx#3) ← (byte) print::p_y#0 -- pbuc1_derefidx_vbuxx=vbuyy + tya + sta SCREEN,x + // [17] (byte) idx#10 ← ++ (byte) idx#3 -- vbuxx=_inc_vbuxx + inx jmp __breturn // print::@return __breturn: @@ -576,9 +571,7 @@ Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldx #0 with TAX -Removing instruction ldy.z idx -Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing instruction lda #0 with TXA Replacing label __b1_from___b2 with __b1 Removing instruction __b1_from___bbegin: Removing instruction __b1: @@ -611,36 +604,36 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (byte) idx -(byte) idx#10 idx zp[1]:2 2.6 -(byte) idx#12 idx zp[1]:2 3.0 -(byte) idx#3 reg byte y 3.0 +(byte) idx#10 reg byte x 220.39999999999998 +(byte) idx#12 reg byte x 420.59999999999997 +(byte) idx#3 reg byte x 1501.5 (void()) main() -(byte~) main::$4 reg byte y 16.5 +(byte~) main::$4 reg byte y 151.5 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 60.599999999999994 (const struct Point*) points[(number) 2] = { fill( 2, 0) } (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 p_x zp[1]:3 6.5 +(byte) print::p_x#0 p_x zp[1]:3 551.0 (byte) print::p_y -(byte) print::p_y#0 p_y zp[1]:4 4.333333333333333 +(byte) print::p_y#0 reg byte y 367.33333333333337 -reg byte x [ main::i#2 main::i#1 ] -zp[1]:2 [ idx#12 idx#10 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ idx#12 idx#10 ] reg byte y [ main::$4 ] zp[1]:3 [ print::p_x#0 ] -zp[1]:4 [ print::p_y#0 ] -reg byte y [ idx#3 ] +reg byte y [ print::p_y#0 ] +reg byte x [ idx#3 ] FINAL ASSEMBLER -Score: 475 +Score: 528 // File Comments // Demonstrates problem with passing struct array element as parameter to call @@ -652,7 +645,6 @@ Score: 475 .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -661,6 +653,7 @@ Score: 475 // @end // main main: { + .label i = 2 // points[0] = { 1, 2 } // [4] *((const struct Point*) points) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) -- _deref_pssc1=_deref_pssc2_memcpy_vbuc3 ldy #SIZEOF_STRUCT_POINT @@ -678,35 +671,36 @@ main: { dey bne !- // [6] phi from main to main::@1 [phi:main->main::@1] - // [6] phi (byte) idx#12 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z idx - // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 - tax + // [6] phi (byte) idx#12 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + txa + sta.z i // [6] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [6] phi (byte) idx#12 = (byte) idx#10 [phi:main::@2->main::@1#0] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy // main::@1 __b1: // print(points[i]) - // [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 -- vbuyy=vbuxx_rol_1 - txa + // [7] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 -- vbuyy=vbuz1_rol_1 + lda.z i asl tay // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$4) -- vbuz1=pbuc1_derefidx_vbuyy lda points,y sta.z print.p_x - // [9] (byte) print::p_y#0 ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) -- vbuz1=pbuc1_derefidx_vbuyy + // [9] (byte) print::p_y#0 ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$4) -- vbuyy=pbuc1_derefidx_vbuyy lda points+OFFSET_STRUCT_POINT_Y,y - sta.z print.p_y + tay // [10] call print jsr print // main::@2 // for ( char i: 0..1) - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::i#1!=(byte) 2) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #2 + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [12] if((byte) main::i#1!=(byte) 2) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #2 + cmp.z i bne __b1 // main::@return // } @@ -714,26 +708,23 @@ main: { rts } // print -// print(byte zp(3) p_x, byte zp(4) p_y) +// print(byte zp(3) p_x, byte register(Y) p_y) print: { .label p_x = 3 - .label p_y = 4 // SCREEN[idx++] = p.x - // [14] *((const byte*) SCREEN + (byte) idx#12) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 + // [14] *((const byte*) SCREEN + (byte) idx#12) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z p_x - ldy.z idx - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = p.x; - // [15] (byte) idx#3 ← ++ (byte) idx#12 -- vbuyy=_inc_vbuz1 - iny + // [15] (byte) idx#3 ← ++ (byte) idx#12 -- vbuxx=_inc_vbuxx + inx // SCREEN[idx++] = p.y - // [16] *((const byte*) SCREEN + (byte) idx#3) ← (byte) print::p_y#0 -- pbuc1_derefidx_vbuyy=vbuz1 - lda.z p_y - sta SCREEN,y + // [16] *((const byte*) SCREEN + (byte) idx#3) ← (byte) print::p_y#0 -- pbuc1_derefidx_vbuxx=vbuyy + tya + sta SCREEN,x // SCREEN[idx++] = p.y; - // [17] (byte) idx#10 ← ++ (byte) idx#3 -- vbuz1=_inc_vbuyy - iny - sty.z idx + // [17] (byte) idx#10 ← ++ (byte) idx#3 -- vbuxx=_inc_vbuxx + inx // print::@return // } // [18] return diff --git a/src/test/ref/struct-ptr-18.sym b/src/test/ref/struct-ptr-18.sym index 230580b3a..3a17f4984 100644 --- a/src/test/ref/struct-ptr-18.sym +++ b/src/test/ref/struct-ptr-18.sym @@ -9,29 +9,29 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (byte) idx -(byte) idx#10 idx zp[1]:2 2.6 -(byte) idx#12 idx zp[1]:2 3.0 -(byte) idx#3 reg byte y 3.0 +(byte) idx#10 reg byte x 220.39999999999998 +(byte) idx#12 reg byte x 420.59999999999997 +(byte) idx#3 reg byte x 1501.5 (void()) main() -(byte~) main::$4 reg byte y 16.5 +(byte~) main::$4 reg byte y 151.5 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 6.6000000000000005 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 60.599999999999994 (const struct Point*) points[(number) 2] = { fill( 2, 0) } (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 p_x zp[1]:3 6.5 +(byte) print::p_x#0 p_x zp[1]:3 551.0 (byte) print::p_y -(byte) print::p_y#0 p_y zp[1]:4 4.333333333333333 +(byte) print::p_y#0 reg byte y 367.33333333333337 -reg byte x [ main::i#2 main::i#1 ] -zp[1]:2 [ idx#12 idx#10 ] +zp[1]:2 [ main::i#2 main::i#1 ] +reg byte x [ idx#12 idx#10 ] reg byte y [ main::$4 ] zp[1]:3 [ print::p_x#0 ] -zp[1]:4 [ print::p_y#0 ] -reg byte y [ idx#3 ] +reg byte y [ print::p_y#0 ] +reg byte x [ idx#3 ] diff --git a/src/test/ref/struct-ptr-19.asm b/src/test/ref/struct-ptr-19.asm index 4101c023a..bf889d990 100644 --- a/src/test/ref/struct-ptr-19.asm +++ b/src/test/ref/struct-ptr-19.asm @@ -5,10 +5,9 @@ .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 main: { .label ptr = point - .label point = 3 + .label point = 2 // point = { 1, 2 } ldy #SIZEOF_STRUCT_POINT !: @@ -17,32 +16,28 @@ main: { dey bne !- // print(point) - ldy.z point - ldx point+OFFSET_STRUCT_POINT_Y - lda #0 - sta.z idx + lda.z point + ldy point+OFFSET_STRUCT_POINT_Y + ldx #0 jsr print // print(*ptr) - ldy.z ptr - ldx ptr+OFFSET_STRUCT_POINT_Y + lda.z ptr + ldy ptr+OFFSET_STRUCT_POINT_Y jsr print // } rts } -// print(byte register(Y) p_x, byte register(X) p_y) +// print(byte register(A) p_x, byte register(Y) p_y) print: { // SCREEN[idx++] = p.x - tya - ldy.z idx - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = p.x; - iny + inx // SCREEN[idx++] = p.y - txa - sta SCREEN,y + tya + sta SCREEN,x // SCREEN[idx++] = p.y; - iny - sty.z idx + inx // } rts } diff --git a/src/test/ref/struct-ptr-19.log b/src/test/ref/struct-ptr-19.log index 009df6f41..b15ab0fc2 100644 --- a/src/test/ref/struct-ptr-19.log +++ b/src/test/ref/struct-ptr-19.log @@ -120,11 +120,11 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) idx#1 = (byte) idx#8 -Alias (byte) idx#10 = (byte) idx#2 (byte) idx#9 (byte) idx#3 -Alias (byte) idx#12 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#0 = (byte) idx#15 -Alias (byte) idx#13 = (byte) idx#7 +Alias idx#1 = idx#8 +Alias idx#10 = idx#2 idx#9 idx#3 +Alias idx#12 = idx#5 idx#6 +Alias idx#0 = idx#15 +Alias idx#13 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#14 (byte) idx#0 Identical Phi Values (byte) idx#1 (byte) idx#12 @@ -218,21 +218,21 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (byte) idx -(byte) idx#11 3.0 -(byte) idx#12 0.8 -(byte) idx#4 3.0 +(byte) idx#11 106.5 +(byte) idx#12 22.4 +(byte) idx#4 151.5 (void()) main() (struct Point) main::point loadstore (void()) print((byte) print::p_x , (byte) print::p_y) (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 2.0 -(byte) print::p_x#1 2.0 -(byte) print::p_x#2 6.0 +(byte) print::p_x#0 11.0 +(byte) print::p_x#1 11.0 +(byte) print::p_x#2 123.0 (byte) print::p_y -(byte) print::p_y#0 4.0 -(byte) print::p_y#1 4.0 -(byte) print::p_y#2 2.0 +(byte) print::p_y#0 22.0 +(byte) print::p_y#1 22.0 +(byte) print::p_y#2 41.0 Initial phi equivalence classes [ print::p_x#2 print::p_x#0 print::p_x#1 ] @@ -359,7 +359,7 @@ print: { __0: .byte 1, 2 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Point) main::point) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point ] ( main:2 [ main::point ] ) always clobbers reg byte a reg byte y +Statement [4] *(&(struct Point) main::point) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::point ] ( main:2 [ main::point ] { { print::p_x#0 = print::p_x#2 } { print::p_y#0 = print::p_y#2 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ print::p_x#2 print::p_x#0 print::p_x#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#11 idx#12 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ print::p_y#2 print::p_y#0 print::p_y#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -367,19 +367,16 @@ Potential registers zp[1]:5 [ idx#4 ] : zp[1]:5 , reg byte a , reg byte x , reg Potential registers zp[2]:6 [ main::point ] : zp[2]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [print] 10: zp[1]:2 [ print::p_x#2 print::p_x#0 print::p_x#1 ] 10: zp[1]:4 [ print::p_y#2 print::p_y#0 print::p_y#1 ] -Uplift Scope [] 3.8: zp[1]:3 [ idx#11 idx#12 ] 3: zp[1]:5 [ idx#4 ] +Uplift Scope [] 151.5: zp[1]:5 [ idx#4 ] 128.9: zp[1]:3 [ idx#11 idx#12 ] +Uplift Scope [print] 145: zp[1]:2 [ print::p_x#2 print::p_x#0 print::p_x#1 ] 85: zp[1]:4 [ print::p_y#2 print::p_y#0 print::p_y#1 ] Uplift Scope [Point] Uplift Scope [main] 0: zp[2]:6 [ main::point ] -Uplifting [print] best 116 combination reg byte y [ print::p_x#2 print::p_x#0 print::p_x#1 ] reg byte x [ print::p_y#2 print::p_y#0 print::p_y#1 ] -Uplifting [] best 107 combination zp[1]:3 [ idx#11 idx#12 ] reg byte y [ idx#4 ] -Uplifting [Point] best 107 combination -Uplifting [main] best 107 combination zp[2]:6 [ main::point ] -Attempting to uplift remaining variables inzp[1]:3 [ idx#11 idx#12 ] -Uplifting [] best 107 combination zp[1]:3 [ idx#11 idx#12 ] -Allocated (was zp[1]:3) zp[1]:2 [ idx#11 idx#12 ] -Allocated (was zp[2]:6) zp[2]:3 [ main::point ] +Uplifting [] best 109 combination reg byte x [ idx#4 ] reg byte x [ idx#11 idx#12 ] +Uplifting [print] best 93 combination reg byte a [ print::p_x#2 print::p_x#0 print::p_x#1 ] reg byte y [ print::p_y#2 print::p_y#0 print::p_y#1 ] +Uplifting [Point] best 93 combination +Uplifting [main] best 93 combination zp[2]:6 [ main::point ] +Allocated (was zp[2]:6) zp[2]:2 [ main::point ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -392,7 +389,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -410,7 +406,7 @@ __bend: // main main: { .label ptr = point - .label point = 3 + .label point = 2 // [4] *(&(struct Point) main::point) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) -- _deref_pssc1=_deref_pssc2_memcpy_vbuc3 ldy #SIZEOF_STRUCT_POINT !: @@ -418,26 +414,25 @@ main: { sta point-1,y dey bne !- - // [5] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point) -- vbuyy=_deref_pbuc1 - ldy.z point - // [6] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx point+OFFSET_STRUCT_POINT_Y + // [5] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point) -- vbuaa=_deref_pbuc1 + lda.z point + // [6] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuyy=_deref_pbuc1 + ldy point+OFFSET_STRUCT_POINT_Y // [7] call print // [12] phi from main to print [phi:main->print] print_from_main: // [12] phi (byte) print::p_y#2 = (byte) print::p_y#0 [phi:main->print#0] -- register_copy - // [12] phi (byte) idx#11 = (byte) 0 [phi:main->print#1] -- vbuz1=vbuc1 - lda #0 - sta.z idx + // [12] phi (byte) idx#11 = (byte) 0 [phi:main->print#1] -- vbuxx=vbuc1 + ldx #0 // [12] phi (byte) print::p_x#2 = (byte) print::p_x#0 [phi:main->print#2] -- register_copy jsr print jmp __b1 // main::@1 __b1: - // [8] (byte) print::p_x#1 ← *((byte*)(const struct Point*) main::ptr) -- vbuyy=_deref_pbuc1 - ldy.z ptr - // [9] (byte) print::p_y#1 ← *((byte*)(const struct Point*) main::ptr+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx ptr+OFFSET_STRUCT_POINT_Y + // [8] (byte) print::p_x#1 ← *((byte*)(const struct Point*) main::ptr) -- vbuaa=_deref_pbuc1 + lda.z ptr + // [9] (byte) print::p_y#1 ← *((byte*)(const struct Point*) main::ptr+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuyy=_deref_pbuc1 + ldy ptr+OFFSET_STRUCT_POINT_Y // [10] call print // [12] phi from main::@1 to print [phi:main::@1->print] print_from___b1: @@ -452,21 +447,17 @@ main: { rts } // print -// print(byte register(Y) p_x, byte register(X) p_y) +// print(byte register(A) p_x, byte register(Y) p_y) print: { - // [13] *((const byte*) SCREEN + (byte) idx#11) ← (byte) print::p_x#2 -- pbuc1_derefidx_vbuz1=vbuyy + // [13] *((const byte*) SCREEN + (byte) idx#11) ← (byte) print::p_x#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [14] (byte) idx#4 ← ++ (byte) idx#11 -- vbuxx=_inc_vbuxx + inx + // [15] *((const byte*) SCREEN + (byte) idx#4) ← (byte) print::p_y#2 -- pbuc1_derefidx_vbuxx=vbuyy tya - ldy.z idx - sta SCREEN,y - // [14] (byte) idx#4 ← ++ (byte) idx#11 -- vbuyy=_inc_vbuz1 - ldy.z idx - iny - // [15] *((const byte*) SCREEN + (byte) idx#4) ← (byte) print::p_y#2 -- pbuc1_derefidx_vbuyy=vbuxx - txa - sta SCREEN,y - // [16] (byte) idx#12 ← ++ (byte) idx#4 -- vbuz1=_inc_vbuyy - iny - sty.z idx + sta SCREEN,x + // [16] (byte) idx#12 ← ++ (byte) idx#4 -- vbuxx=_inc_vbuxx + inx jmp __breturn // print::@return __breturn: @@ -483,8 +474,6 @@ Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Removing instruction ldy.z idx -Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __b1_from___bbegin: Removing instruction __b1: Removing instruction __bend_from___b1: @@ -513,35 +502,35 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (byte) idx -(byte) idx#11 idx zp[1]:2 3.0 -(byte) idx#12 idx zp[1]:2 0.8 -(byte) idx#4 reg byte y 3.0 +(byte) idx#11 reg byte x 106.5 +(byte) idx#12 reg byte x 22.4 +(byte) idx#4 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return -(struct Point) main::point loadstore zp[2]:3 +(struct Point) main::point loadstore zp[2]:2 (const struct Point*) main::ptr = &(struct Point) main::point (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 reg byte y 2.0 -(byte) print::p_x#1 reg byte y 2.0 -(byte) print::p_x#2 reg byte y 6.0 +(byte) print::p_x#0 reg byte a 11.0 +(byte) print::p_x#1 reg byte a 11.0 +(byte) print::p_x#2 reg byte a 123.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 4.0 -(byte) print::p_y#1 reg byte x 4.0 -(byte) print::p_y#2 reg byte x 2.0 +(byte) print::p_y#0 reg byte y 22.0 +(byte) print::p_y#1 reg byte y 22.0 +(byte) print::p_y#2 reg byte y 41.0 -reg byte y [ print::p_x#2 print::p_x#0 print::p_x#1 ] -zp[1]:2 [ idx#11 idx#12 ] -reg byte x [ print::p_y#2 print::p_y#0 print::p_y#1 ] -reg byte y [ idx#4 ] -zp[2]:3 [ main::point ] +reg byte a [ print::p_x#2 print::p_x#0 print::p_x#1 ] +reg byte x [ idx#11 idx#12 ] +reg byte y [ print::p_y#2 print::p_y#0 print::p_y#1 ] +reg byte x [ idx#4 ] +zp[2]:2 [ main::point ] FINAL ASSEMBLER -Score: 83 +Score: 72 // File Comments // Demonstrates problem with passing struct pointer deref as parameter to call @@ -553,7 +542,6 @@ Score: 83 .label SCREEN = $400 .const SIZEOF_STRUCT_POINT = 2 .const OFFSET_STRUCT_POINT_Y = 1 - .label idx = 2 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -563,7 +551,7 @@ Score: 83 // main main: { .label ptr = point - .label point = 3 + .label point = 2 // point = { 1, 2 } // [4] *(&(struct Point) main::point) ← memcpy(*(&(const struct Point) $0), struct Point, (const byte) SIZEOF_STRUCT_POINT) -- _deref_pssc1=_deref_pssc2_memcpy_vbuc3 ldy #SIZEOF_STRUCT_POINT @@ -573,24 +561,23 @@ main: { dey bne !- // print(point) - // [5] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point) -- vbuyy=_deref_pbuc1 - ldy.z point - // [6] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx point+OFFSET_STRUCT_POINT_Y + // [5] (byte) print::p_x#0 ← *((byte*)&(struct Point) main::point) -- vbuaa=_deref_pbuc1 + lda.z point + // [6] (byte) print::p_y#0 ← *((byte*)&(struct Point) main::point+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuyy=_deref_pbuc1 + ldy point+OFFSET_STRUCT_POINT_Y // [7] call print // [12] phi from main to print [phi:main->print] // [12] phi (byte) print::p_y#2 = (byte) print::p_y#0 [phi:main->print#0] -- register_copy - // [12] phi (byte) idx#11 = (byte) 0 [phi:main->print#1] -- vbuz1=vbuc1 - lda #0 - sta.z idx + // [12] phi (byte) idx#11 = (byte) 0 [phi:main->print#1] -- vbuxx=vbuc1 + ldx #0 // [12] phi (byte) print::p_x#2 = (byte) print::p_x#0 [phi:main->print#2] -- register_copy jsr print // main::@1 // print(*ptr) - // [8] (byte) print::p_x#1 ← *((byte*)(const struct Point*) main::ptr) -- vbuyy=_deref_pbuc1 - ldy.z ptr - // [9] (byte) print::p_y#1 ← *((byte*)(const struct Point*) main::ptr+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuxx=_deref_pbuc1 - ldx ptr+OFFSET_STRUCT_POINT_Y + // [8] (byte) print::p_x#1 ← *((byte*)(const struct Point*) main::ptr) -- vbuaa=_deref_pbuc1 + lda.z ptr + // [9] (byte) print::p_y#1 ← *((byte*)(const struct Point*) main::ptr+(const byte) OFFSET_STRUCT_POINT_Y) -- vbuyy=_deref_pbuc1 + ldy ptr+OFFSET_STRUCT_POINT_Y // [10] call print // [12] phi from main::@1 to print [phi:main::@1->print] // [12] phi (byte) print::p_y#2 = (byte) print::p_y#1 [phi:main::@1->print#0] -- register_copy @@ -603,24 +590,21 @@ main: { rts } // print -// print(byte register(Y) p_x, byte register(X) p_y) +// print(byte register(A) p_x, byte register(Y) p_y) print: { // SCREEN[idx++] = p.x - // [13] *((const byte*) SCREEN + (byte) idx#11) ← (byte) print::p_x#2 -- pbuc1_derefidx_vbuz1=vbuyy - tya - ldy.z idx - sta SCREEN,y + // [13] *((const byte*) SCREEN + (byte) idx#11) ← (byte) print::p_x#2 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x // SCREEN[idx++] = p.x; - // [14] (byte) idx#4 ← ++ (byte) idx#11 -- vbuyy=_inc_vbuz1 - iny + // [14] (byte) idx#4 ← ++ (byte) idx#11 -- vbuxx=_inc_vbuxx + inx // SCREEN[idx++] = p.y - // [15] *((const byte*) SCREEN + (byte) idx#4) ← (byte) print::p_y#2 -- pbuc1_derefidx_vbuyy=vbuxx - txa - sta SCREEN,y + // [15] *((const byte*) SCREEN + (byte) idx#4) ← (byte) print::p_y#2 -- pbuc1_derefidx_vbuxx=vbuyy + tya + sta SCREEN,x // SCREEN[idx++] = p.y; - // [16] (byte) idx#12 ← ++ (byte) idx#4 -- vbuz1=_inc_vbuyy - iny - sty.z idx + // [16] (byte) idx#12 ← ++ (byte) idx#4 -- vbuxx=_inc_vbuxx + inx // print::@return // } // [17] return diff --git a/src/test/ref/struct-ptr-19.sym b/src/test/ref/struct-ptr-19.sym index ebe6b8af3..a8bfcd720 100644 --- a/src/test/ref/struct-ptr-19.sym +++ b/src/test/ref/struct-ptr-19.sym @@ -8,28 +8,28 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (byte) idx -(byte) idx#11 idx zp[1]:2 3.0 -(byte) idx#12 idx zp[1]:2 0.8 -(byte) idx#4 reg byte y 3.0 +(byte) idx#11 reg byte x 106.5 +(byte) idx#12 reg byte x 22.4 +(byte) idx#4 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return -(struct Point) main::point loadstore zp[2]:3 +(struct Point) main::point loadstore zp[2]:2 (const struct Point*) main::ptr = &(struct Point) main::point (void()) print((byte) print::p_x , (byte) print::p_y) (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 reg byte y 2.0 -(byte) print::p_x#1 reg byte y 2.0 -(byte) print::p_x#2 reg byte y 6.0 +(byte) print::p_x#0 reg byte a 11.0 +(byte) print::p_x#1 reg byte a 11.0 +(byte) print::p_x#2 reg byte a 123.0 (byte) print::p_y -(byte) print::p_y#0 reg byte x 4.0 -(byte) print::p_y#1 reg byte x 4.0 -(byte) print::p_y#2 reg byte x 2.0 +(byte) print::p_y#0 reg byte y 22.0 +(byte) print::p_y#1 reg byte y 22.0 +(byte) print::p_y#2 reg byte y 41.0 -reg byte y [ print::p_x#2 print::p_x#0 print::p_x#1 ] -zp[1]:2 [ idx#11 idx#12 ] -reg byte x [ print::p_y#2 print::p_y#0 print::p_y#1 ] -reg byte y [ idx#4 ] -zp[2]:3 [ main::point ] +reg byte a [ print::p_x#2 print::p_x#0 print::p_x#1 ] +reg byte x [ idx#11 idx#12 ] +reg byte y [ print::p_y#2 print::p_y#0 print::p_y#1 ] +reg byte x [ idx#4 ] +zp[2]:2 [ main::point ] diff --git a/src/test/ref/struct-ptr-2.log b/src/test/ref/struct-ptr-2.log index 5cc7f597b..e8cb060f2 100644 --- a/src/test/ref/struct-ptr-2.log +++ b/src/test/ref/struct-ptr-2.log @@ -116,8 +116,8 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$5 ← (byte) main::i#2 + (byte) 4 -Alias (struct Point*) main::point_i#0 = (struct Point*~) main::$0 -Alias (struct Point*) main::point_i1#0 = (struct Point*~) main::$7 +Alias main::point_i#0 = main::$0 +Alias main::point_i1#0 = main::$7 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$6 [13] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Simple Condition (bool~) main::$12 [26] if((byte) main::i1#1!=rangelast(0,3)) goto main::@3 @@ -244,19 +244,19 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$13 16.5 -(byte~) main::$14 16.5 -(byte~) main::$5 22.0 +(byte~) main::$13 151.5 +(byte~) main::$14 151.5 +(byte~) main::$5 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 9.166666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 11.0 +(byte) main::i1#1 151.5 +(byte) main::i1#2 101.0 (struct Point*) main::point_i -(struct Point*) main::point_i#0 3.6666666666666665 +(struct Point*) main::point_i#0 33.666666666666664 (struct Point*) main::point_i1 -(struct Point*) main::point_i1#0 5.5 +(struct Point*) main::point_i1#0 50.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -412,30 +412,30 @@ main: { points: .fill 2*4, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$13 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$13 ] ( main:2 [ main::i#2 main::$13 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$13 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$13 ] ( main:2 [ main::i#2 main::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (struct Point*) main::point_i#0 ← (const struct Point*) points + (byte~) main::$13 [ main::i#2 main::$13 main::point_i#0 ] ( main:2 [ main::i#2 main::$13 main::point_i#0 ] ) always clobbers reg byte a +Statement [7] (struct Point*) main::point_i#0 ← (const struct Point*) points + (byte~) main::$13 [ main::i#2 main::$13 main::point_i#0 ] ( main:2 [ main::i#2 main::$13 main::point_i#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$13 ] -Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$13) ← (byte) main::i#2 [ main::i#2 main::point_i#0 ] ( main:2 [ main::i#2 main::point_i#0 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$5 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::point_i#0 main::$5 ] ( main:2 [ main::i#2 main::point_i#0 main::$5 ] ) always clobbers reg byte a -Statement [10] *((byte*)(struct Point*) main::point_i#0 + (const byte) OFFS_Y) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte y +Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$13) ← (byte) main::i#2 [ main::i#2 main::point_i#0 ] ( main:2 [ main::i#2 main::point_i#0 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$5 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::point_i#0 main::$5 ] ( main:2 [ main::i#2 main::point_i#0 main::$5 ] { } ) always clobbers reg byte a +Statement [10] *((byte*)(struct Point*) main::point_i#0 + (const byte) OFFS_Y) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [14] (byte~) main::$14 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$14 ] ( main:2 [ main::i1#2 main::$14 ] ) always clobbers reg byte a +Statement [14] (byte~) main::$14 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$14 ] ( main:2 [ main::i1#2 main::$14 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [15] (struct Point*) main::point_i1#0 ← (const struct Point*) points + (byte~) main::$14 [ main::i1#2 main::$14 main::point_i1#0 ] ( main:2 [ main::i1#2 main::$14 main::point_i1#0 ] ) always clobbers reg byte a +Statement [15] (struct Point*) main::point_i1#0 ← (const struct Point*) points + (byte~) main::$14 [ main::i1#2 main::$14 main::point_i1#0 ] ( main:2 [ main::i1#2 main::$14 main::point_i1#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$14 ] -Statement [16] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$14) [ main::i1#2 main::point_i1#0 ] ( main:2 [ main::i1#2 main::point_i1#0 ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(struct Point*) main::point_i1#0 + (const byte) OFFS_Y) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [16] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$14) [ main::i1#2 main::point_i1#0 ] ( main:2 [ main::i1#2 main::point_i1#0 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(struct Point*) main::point_i1#0 + (const byte) OFFS_Y) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [6] (byte~) main::$13 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$13 ] ( main:2 [ main::i#2 main::$13 ] ) always clobbers reg byte a -Statement [7] (struct Point*) main::point_i#0 ← (const struct Point*) points + (byte~) main::$13 [ main::i#2 main::$13 main::point_i#0 ] ( main:2 [ main::i#2 main::$13 main::point_i#0 ] ) always clobbers reg byte a -Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$13) ← (byte) main::i#2 [ main::i#2 main::point_i#0 ] ( main:2 [ main::i#2 main::point_i#0 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$5 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::point_i#0 main::$5 ] ( main:2 [ main::i#2 main::point_i#0 main::$5 ] ) always clobbers reg byte a -Statement [10] *((byte*)(struct Point*) main::point_i#0 + (const byte) OFFS_Y) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte y -Statement [14] (byte~) main::$14 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$14 ] ( main:2 [ main::i1#2 main::$14 ] ) always clobbers reg byte a -Statement [15] (struct Point*) main::point_i1#0 ← (const struct Point*) points + (byte~) main::$14 [ main::i1#2 main::$14 main::point_i1#0 ] ( main:2 [ main::i1#2 main::$14 main::point_i1#0 ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$14) [ main::i1#2 main::point_i1#0 ] ( main:2 [ main::i1#2 main::point_i1#0 ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(struct Point*) main::point_i1#0 + (const byte) OFFS_Y) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte~) main::$13 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$13 ] ( main:2 [ main::i#2 main::$13 ] { } ) always clobbers reg byte a +Statement [7] (struct Point*) main::point_i#0 ← (const struct Point*) points + (byte~) main::$13 [ main::i#2 main::$13 main::point_i#0 ] ( main:2 [ main::i#2 main::$13 main::point_i#0 ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$13) ← (byte) main::i#2 [ main::i#2 main::point_i#0 ] ( main:2 [ main::i#2 main::point_i#0 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$5 ← (byte) main::i#2 + (byte) 4 [ main::i#2 main::point_i#0 main::$5 ] ( main:2 [ main::i#2 main::point_i#0 main::$5 ] { } ) always clobbers reg byte a +Statement [10] *((byte*)(struct Point*) main::point_i#0 + (const byte) OFFS_Y) ← (byte~) main::$5 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte y +Statement [14] (byte~) main::$14 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$14 ] ( main:2 [ main::i1#2 main::$14 ] { } ) always clobbers reg byte a +Statement [15] (struct Point*) main::point_i1#0 ← (const struct Point*) points + (byte~) main::$14 [ main::i1#2 main::$14 main::point_i1#0 ] ( main:2 [ main::i1#2 main::$14 main::point_i1#0 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN + (byte) main::i1#2) ← *((byte*)(const struct Point*) points + (byte~) main::$14) [ main::i1#2 main::point_i1#0 ] ( main:2 [ main::i1#2 main::point_i1#0 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i1#2) ← *((byte*)(struct Point*) main::point_i1#0 + (const byte) OFFS_Y) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::$13 ] : zp[1]:4 , reg byte x , reg byte y , @@ -445,7 +445,7 @@ Potential registers zp[1]:8 [ main::$14 ] : zp[1]:8 , reg byte x , reg byte y , Potential registers zp[2]:9 [ main::point_i1#0 ] : zp[2]:9 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$5 ] 16.5: zp[1]:4 [ main::$13 ] 16.5: zp[1]:8 [ main::$14 ] 5.5: zp[2]:9 [ main::point_i1#0 ] 3.67: zp[2]:5 [ main::point_i#0 ] +Uplift Scope [main] 252.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::$5 ] 151.5: zp[1]:4 [ main::$13 ] 151.5: zp[1]:8 [ main::$14 ] 50.5: zp[2]:9 [ main::point_i1#0 ] 33.67: zp[2]:5 [ main::point_i#0 ] Uplift Scope [Point] Uplift Scope [] @@ -610,23 +610,23 @@ FINAL SYMBOL TABLE (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$13 reg byte y 16.5 -(byte~) main::$14 reg byte y 16.5 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$13 reg byte y 151.5 +(byte~) main::$14 reg byte y 151.5 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 11.0 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 101.0 (struct Point*) main::point_i -(struct Point*) main::point_i#0 point_i zp[2]:2 3.6666666666666665 +(struct Point*) main::point_i#0 point_i zp[2]:2 33.666666666666664 (struct Point*) main::point_i1 -(struct Point*) main::point_i1#0 point_i1 zp[2]:4 5.5 +(struct Point*) main::point_i1#0 point_i1 zp[2]:4 50.5 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-2.sym b/src/test/ref/struct-ptr-2.sym index b688111a7..69061ec89 100644 --- a/src/test/ref/struct-ptr-2.sym +++ b/src/test/ref/struct-ptr-2.sym @@ -5,23 +5,23 @@ (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$13 reg byte y 16.5 -(byte~) main::$14 reg byte y 16.5 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$13 reg byte y 151.5 +(byte~) main::$14 reg byte y 151.5 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 reg byte x 16.5 -(byte) main::i1#2 reg byte x 11.0 +(byte) main::i1#1 reg byte x 151.5 +(byte) main::i1#2 reg byte x 101.0 (struct Point*) main::point_i -(struct Point*) main::point_i#0 point_i zp[2]:2 3.6666666666666665 +(struct Point*) main::point_i#0 point_i zp[2]:2 33.666666666666664 (struct Point*) main::point_i1 -(struct Point*) main::point_i1#0 point_i1 zp[2]:4 5.5 +(struct Point*) main::point_i1#0 point_i1 zp[2]:4 50.5 (const struct Point*) points[(number) 4] = { fill( 4, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-20.log b/src/test/ref/struct-ptr-20.log index c5548c5fd..2e3b77e72 100644 --- a/src/test/ref/struct-ptr-20.log +++ b/src/test/ref/struct-ptr-20.log @@ -122,13 +122,13 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [13] (bool~) main::$4 ← (byte) 0 == *((byte*~) main::$7) from [12] (bool~) main::$9 ← (byte) 0 != *((byte*~) main::$7) Inversing boolean not [14] (bool~) main::$5 ← (byte) 0 != *((byte*~) main::$7) from [13] (bool~) main::$4 ← (byte) 0 == *((byte*~) main::$7) Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::len#0 = (byte~) main::$1 -Alias (struct Setting*) main::setting#2 = (struct Setting*) main::setting#3 (struct Setting*) main::setting#5 -Alias (byte) main::idx#2 = (byte) main::idx#3 (byte) main::idx#4 -Alias (byte) main::len#1 = (byte) main::len#3 (byte) main::len#4 +Alias main::len#0 = main::$1 +Alias main::setting#2 = main::setting#3 main::setting#5 +Alias main::idx#2 = main::idx#3 main::idx#4 +Alias main::len#1 = main::len#3 main::len#4 Successful SSA optimization Pass2AliasElimination -Alias (struct Setting*) main::setting#2 = (struct Setting*) main::setting#4 -Alias (byte) main::len#1 = (byte) main::len#2 +Alias main::setting#2 = main::setting#4 +Alias main::len#1 = main::len#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::len#1 (byte) main::len#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -244,13 +244,13 @@ VARIABLE REGISTER WEIGHTS (byte) Setting::off (void()) main() (byte) main::idx -(byte) main::idx#1 22.0 -(byte) main::idx#2 11.0 -(byte) main::idx#5 16.5 +(byte) main::idx#1 202.0 +(byte) main::idx#2 101.0 +(byte) main::idx#5 151.5 (byte) main::len (struct Setting*) main::setting -(struct Setting*) main::setting#1 22.0 -(struct Setting*) main::setting#2 5.5 +(struct Setting*) main::setting#1 202.0 +(struct Setting*) main::setting#2 50.5 Initial phi equivalence classes [ main::setting#2 main::setting#1 ] @@ -363,21 +363,21 @@ main: { settings: .byte 0, 'a', 1, 'b', 0, 'c' REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((struct Setting*) main::setting#2<(const struct Setting*) settings+(const byte) main::len#0*(const byte) SIZEOF_STRUCT_SETTING) goto main::@2 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a +Statement [6] if((struct Setting*) main::setting#2<(const struct Setting*) settings+(const byte) main::len#0*(const byte) SIZEOF_STRUCT_SETTING) goto main::@2 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#2 main::idx#5 main::idx#1 ] -Statement [8] if((byte) 0!=*((byte*)(struct Setting*) main::setting#2)) goto main::@3 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a reg byte y +Statement [8] if((byte) 0!=*((byte*)(struct Setting*) main::setting#2)) goto main::@3 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::idx#2 main::idx#5 main::idx#1 ] -Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((byte*)(struct Setting*) main::setting#2 + (const byte) OFFSET_STRUCT_SETTING_ID) [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a reg byte y -Statement [12] (struct Setting*) main::setting#1 ← (struct Setting*) main::setting#2 + (const byte) SIZEOF_STRUCT_SETTING [ main::setting#1 main::idx#5 ] ( main:2 [ main::setting#1 main::idx#5 ] ) always clobbers reg byte a -Statement [6] if((struct Setting*) main::setting#2<(const struct Setting*) settings+(const byte) main::len#0*(const byte) SIZEOF_STRUCT_SETTING) goto main::@2 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a -Statement [8] if((byte) 0!=*((byte*)(struct Setting*) main::setting#2)) goto main::@3 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a reg byte y -Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((byte*)(struct Setting*) main::setting#2 + (const byte) OFFSET_STRUCT_SETTING_ID) [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] ) always clobbers reg byte a reg byte y -Statement [12] (struct Setting*) main::setting#1 ← (struct Setting*) main::setting#2 + (const byte) SIZEOF_STRUCT_SETTING [ main::setting#1 main::idx#5 ] ( main:2 [ main::setting#1 main::idx#5 ] ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((byte*)(struct Setting*) main::setting#2 + (const byte) OFFSET_STRUCT_SETTING_ID) [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] (struct Setting*) main::setting#1 ← (struct Setting*) main::setting#2 + (const byte) SIZEOF_STRUCT_SETTING [ main::setting#1 main::idx#5 ] ( main:2 [ main::setting#1 main::idx#5 ] { } ) always clobbers reg byte a +Statement [6] if((struct Setting*) main::setting#2<(const struct Setting*) settings+(const byte) main::len#0*(const byte) SIZEOF_STRUCT_SETTING) goto main::@2 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [8] if((byte) 0!=*((byte*)(struct Setting*) main::setting#2)) goto main::@3 [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [9] *((const byte*) SCREEN + (byte) main::idx#2) ← *((byte*)(struct Setting*) main::setting#2 + (const byte) OFFSET_STRUCT_SETTING_ID) [ main::setting#2 main::idx#2 ] ( main:2 [ main::setting#2 main::idx#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] (struct Setting*) main::setting#1 ← (struct Setting*) main::setting#2 + (const byte) SIZEOF_STRUCT_SETTING [ main::setting#1 main::idx#5 ] ( main:2 [ main::setting#1 main::idx#5 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::setting#2 main::setting#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::idx#2 main::idx#5 main::idx#1 ] : zp[1]:4 , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [main] 49.5: zp[1]:4 [ main::idx#2 main::idx#5 main::idx#1 ] 27.5: zp[2]:2 [ main::setting#2 main::setting#1 ] +Uplift Scope [main] 454.5: zp[1]:4 [ main::idx#2 main::idx#5 main::idx#1 ] 252.5: zp[2]:2 [ main::setting#2 main::setting#1 ] Uplift Scope [Setting] Uplift Scope [] @@ -526,14 +526,14 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte) main::idx -(byte) main::idx#1 reg byte x 22.0 -(byte) main::idx#2 reg byte x 11.0 -(byte) main::idx#5 reg byte x 16.5 +(byte) main::idx#1 reg byte x 202.0 +(byte) main::idx#2 reg byte x 101.0 +(byte) main::idx#5 reg byte x 151.5 (byte) main::len (const byte) main::len#0 len = (byte) 3*(const byte) SIZEOF_STRUCT_SETTING/(const byte) SIZEOF_STRUCT_SETTING (struct Setting*) main::setting -(struct Setting*) main::setting#1 setting zp[2]:2 22.0 -(struct Setting*) main::setting#2 setting zp[2]:2 5.5 +(struct Setting*) main::setting#1 setting zp[2]:2 202.0 +(struct Setting*) main::setting#2 setting zp[2]:2 50.5 (const struct Setting*) settings[] = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } } zp[2]:2 [ main::setting#2 main::setting#1 ] diff --git a/src/test/ref/struct-ptr-20.sym b/src/test/ref/struct-ptr-20.sym index c56578f55..dc8da405a 100644 --- a/src/test/ref/struct-ptr-20.sym +++ b/src/test/ref/struct-ptr-20.sym @@ -13,14 +13,14 @@ (label) main::@4 (label) main::@return (byte) main::idx -(byte) main::idx#1 reg byte x 22.0 -(byte) main::idx#2 reg byte x 11.0 -(byte) main::idx#5 reg byte x 16.5 +(byte) main::idx#1 reg byte x 202.0 +(byte) main::idx#2 reg byte x 101.0 +(byte) main::idx#5 reg byte x 151.5 (byte) main::len (const byte) main::len#0 len = (byte) 3*(const byte) SIZEOF_STRUCT_SETTING/(const byte) SIZEOF_STRUCT_SETTING (struct Setting*) main::setting -(struct Setting*) main::setting#1 setting zp[2]:2 22.0 -(struct Setting*) main::setting#2 setting zp[2]:2 5.5 +(struct Setting*) main::setting#1 setting zp[2]:2 202.0 +(struct Setting*) main::setting#2 setting zp[2]:2 50.5 (const struct Setting*) settings[] = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } } zp[2]:2 [ main::setting#2 main::setting#1 ] diff --git a/src/test/ref/struct-ptr-21.log b/src/test/ref/struct-ptr-21.log index e2289f203..a12fa3cc7 100644 --- a/src/test/ref/struct-ptr-21.log +++ b/src/test/ref/struct-ptr-21.log @@ -85,7 +85,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<*((byte*~) main::$2)) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -166,10 +166,10 @@ VARIABLE REGISTER WEIGHTS (word*) Setting::buf (byte) Setting::len (void()) main() -(byte~) main::$1 33.0 +(byte~) main::$1 303.0 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 11.0 +(byte) main::i#1 202.0 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -258,17 +258,17 @@ main: { .word seq REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] *((const word*) SCREEN + (byte~) main::$1) ← *(*((word**)(const struct Setting*) settings+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [9] *((const word*) SCREEN + (byte~) main::$1) ← *(*((word**)(const struct Setting*) settings+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((const word*) SCREEN + (byte~) main::$1) ← *(*((word**)(const struct Setting*) settings+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [8] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] *((const word*) SCREEN + (byte~) main::$1) ← *(*((word**)(const struct Setting*) settings+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::i#2 main::i#1 ] 33: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::i#2 main::i#1 ] 303: zp[1]:3 [ main::$1 ] Uplift Scope [Setting] Uplift Scope [] @@ -378,13 +378,13 @@ FINAL SYMBOL TABLE (word*) Setting::buf (byte) Setting::len (void()) main() -(byte~) main::$1 reg byte a 33.0 +(byte~) main::$1 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 (const word*) seq[] = { (word) 1, (word) 2, (word) 3 } (const struct Setting*) settings[] = { { len: (byte) 3, buf: (const word*) seq } } diff --git a/src/test/ref/struct-ptr-21.sym b/src/test/ref/struct-ptr-21.sym index 4e85c78da..ddf38a90e 100644 --- a/src/test/ref/struct-ptr-21.sym +++ b/src/test/ref/struct-ptr-21.sym @@ -6,13 +6,13 @@ (word*) Setting::buf (byte) Setting::len (void()) main() -(byte~) main::$1 reg byte a 33.0 +(byte~) main::$1 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 101.0 (const word*) seq[] = { (word) 1, (word) 2, (word) 3 } (const struct Setting*) settings[] = { { len: (byte) 3, buf: (const word*) seq } } diff --git a/src/test/ref/struct-ptr-22.log b/src/test/ref/struct-ptr-22.log index 95d48057a..154dbbee1 100644 --- a/src/test/ref/struct-ptr-22.log +++ b/src/test/ref/struct-ptr-22.log @@ -597,40 +597,40 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#26 (byte*) print_char_cursor#46 (byte*) print_screen#5 (byte*) print_line_cursor#23 (byte*) print_char_cursor#44 (byte*) print_screen#4 -Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#21 (byte*) print_char_cursor#40 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#11 (byte*) print_char_cursor#3 (byte*) print_line_cursor#12 (byte*) print_char_cursor#24 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#27 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#13 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#10 (byte*) print_char_cursor#30 (byte*) print_line_cursor#4 (byte*) print_char_cursor#11 -Alias (struct fileentry*) file#1 = (struct fileentry*) file#13 (struct fileentry*) file#12 (struct fileentry*) file#11 (struct fileentry*) file#10 (struct fileentry*) file#9 (struct fileentry*) file#8 (struct fileentry*) file#6 (struct fileentry*) file#4 (struct fileentry*) file#2 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#24 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#31 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#32 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#33 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#25 (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#34 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#35 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#36 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#38 (byte*) print_char_cursor#19 -Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1 -Alias (struct fileentry*) file#0 = (struct fileentry*) file#7 -Alias (struct fileentry*) file#3 = (struct fileentry*) file#5 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#39 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#26 print_char_cursor#46 print_screen#5 print_line_cursor#23 print_char_cursor#44 print_screen#4 +Alias print_str::str#3 = print_str::str#4 +Alias print_char_cursor#2 = print_char_cursor#21 print_char_cursor#40 print_char_cursor#22 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#11 print_char_cursor#3 print_line_cursor#12 print_char_cursor#24 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#25 = print_char_cursor#5 +Alias print_char_cursor#26 = print_char_cursor#6 print_char_cursor#27 print_char_cursor#7 +Alias print_char_cursor#29 = print_char_cursor#8 print_char_cursor#9 +Alias print_line_cursor#13 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#10 print_char_cursor#30 print_line_cursor#4 print_char_cursor#11 +Alias file#1 = file#13 file#12 file#11 file#10 file#9 file#8 file#6 file#4 file#2 +Alias print_line_cursor#14 = print_line_cursor#5 print_line_cursor#24 print_line_cursor#21 +Alias print_char_cursor#12 = print_char_cursor#31 +Alias print_char_cursor#13 = print_char_cursor#32 +Alias print_char_cursor#14 = print_char_cursor#33 +Alias print_line_cursor#15 = print_line_cursor#6 print_line_cursor#25 print_line_cursor#22 +Alias print_char_cursor#15 = print_char_cursor#34 +Alias print_char_cursor#16 = print_char_cursor#35 +Alias print_char_cursor#17 = print_char_cursor#36 +Alias print_line_cursor#16 = print_line_cursor#7 print_line_cursor#17 print_line_cursor#8 +Alias print_char_cursor#18 = print_char_cursor#37 print_char_cursor#38 print_char_cursor#19 +Alias main::return#0 = main::return#3 main::return#1 +Alias file#0 = file#7 +Alias file#3 = file#5 +Alias print_line_cursor#18 = print_line_cursor#9 +Alias print_char_cursor#20 = print_char_cursor#39 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -930,48 +930,48 @@ VARIABLE REGISTER WEIGHTS (struct fileentry*) file (byte*) fileentry::bufEdit (signed word()) main() -(byte*~) main::$0 4.0 +(byte*~) main::$0 22.0 (signed word) main::return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 202.0 +(byte~) print_byte::$2 202.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 22.0 +(byte) print_byte::b#1 22.0 +(byte) print_byte::b#2 56.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#0 202.0 +(byte) print_char::ch#1 202.0 +(byte) print_char::ch#2 1203.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#2 3.3636363636363638 -(byte*) print_char_cursor#28 4.0 -(byte*) print_char_cursor#29 0.9999999999999999 -(byte*) print_char_cursor#45 4.0 -(byte*) print_char_cursor#47 4.0 +(byte*) print_char_cursor#1 1001.0 +(byte*) print_char_cursor#2 291.3636363636364 +(byte*) print_char_cursor#28 1102.0 +(byte*) print_char_cursor#29 140.2 +(byte*) print_char_cursor#45 112.0 +(byte*) print_char_cursor#47 22.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 4.111111111111112 -(byte*) print_line_cursor#10 24.0 -(byte*) print_line_cursor#19 4.0 +(byte*) print_line_cursor#1 336.11111111111114 +(byte*) print_line_cursor#10 2103.0 +(byte*) print_line_cursor#19 112.0 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 22.0 -(byte*) print_str::str#3 11.5 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#0 2002.0 +(byte*) print_str::str#3 1026.25 +(byte*) print_str::str#5 101.0 Initial phi equivalence classes [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] @@ -1360,36 +1360,36 @@ memset: { files: .fill 2*$a, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte**)(const struct fileentry*) files) ← (byte*) 16384 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *(*((byte**)(const struct fileentry*) files) + (byte) 3) ← (byte) $aa [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry*) files) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [7] *((byte*~) main::$0 + (byte) 4) ← (byte) $cc [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [15] (byte*) print_char_cursor#47 ← (byte*) print_line_cursor#1 [ print_char_cursor#47 print_line_cursor#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [24] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#10 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [25] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [28] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ( main:2::print_byte:12 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] main:2::print_byte:18 [ print_line_cursor#1 print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [4] *((byte**)(const struct fileentry*) files) ← (byte*) 16384 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *(*((byte**)(const struct fileentry*) files) + (byte) 3) ← (byte) $aa [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry*) files) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [7] *((byte*~) main::$0 + (byte) 4) ← (byte) $cc [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [15] (byte*) print_char_cursor#47 ← (byte*) print_line_cursor#1 [ print_char_cursor#47 print_line_cursor#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#1 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [24] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#10 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] { } main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] { { print_line_cursor#1 = print_line_cursor#19 } } ) always clobbers reg byte a +Statement [25] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] { } main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] { { print_line_cursor#1 = print_line_cursor#19 } } ) always clobbers reg byte a +Statement [28] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ( main:2::print_byte:12 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:18 [ print_line_cursor#1 print_byte::b#2 print_byte::$0 print_char_cursor#2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [31] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_byte:12 [ print_char_cursor#29 print_byte::$2 ] main:2::print_byte:18 [ print_line_cursor#1 print_char_cursor#29 print_byte::$2 ] ) always clobbers reg byte a -Statement [36] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_byte:12::print_char:30 [ print_byte::b#2 print_char_cursor#28 ] main:2::print_byte:18::print_char:30 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#28 ] main:2::print_byte:12::print_char:33 [ print_char_cursor#28 ] main:2::print_byte:18::print_char:33 [ print_line_cursor#1 print_char_cursor#28 ] ) always clobbers reg byte y +Statement [31] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_byte:12 [ print_char_cursor#29 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_byte:18 [ print_line_cursor#1 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte a +Statement [36] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_byte:12::print_char:30 [ print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:18::print_char:30 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:12::print_char:33 [ print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_byte:18::print_char:33 [ print_line_cursor#1 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [41] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [43] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [51] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [53] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [4] *((byte**)(const struct fileentry*) files) ← (byte*) 16384 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *(*((byte**)(const struct fileentry*) files) + (byte) 3) ← (byte) $aa [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry*) files) [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a -Statement [7] *((byte*~) main::$0 + (byte) 4) ← (byte) $cc [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [15] (byte*) print_char_cursor#47 ← (byte*) print_line_cursor#1 [ print_char_cursor#47 print_line_cursor#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [24] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#10 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [25] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] ) always clobbers reg byte a -Statement [28] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ( main:2::print_byte:12 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] main:2::print_byte:18 [ print_line_cursor#1 print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [31] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_byte:12 [ print_char_cursor#29 print_byte::$2 ] main:2::print_byte:18 [ print_line_cursor#1 print_char_cursor#29 print_byte::$2 ] ) always clobbers reg byte a -Statement [36] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_byte:12::print_char:30 [ print_byte::b#2 print_char_cursor#28 ] main:2::print_byte:18::print_char:30 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#28 ] main:2::print_byte:12::print_char:33 [ print_char_cursor#28 ] main:2::print_byte:18::print_char:33 [ print_line_cursor#1 print_char_cursor#28 ] ) always clobbers reg byte y -Statement [41] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [43] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [51] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [53] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [41] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] { } main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a reg byte y +Statement [43] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] { } main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a reg byte y +Statement [51] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [53] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [4] *((byte**)(const struct fileentry*) files) ← (byte*) 16384 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *(*((byte**)(const struct fileentry*) files) + (byte) 3) ← (byte) $aa [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry*) files) [ main::$0 ] ( main:2 [ main::$0 ] { } ) always clobbers reg byte a +Statement [7] *((byte*~) main::$0 + (byte) 4) ← (byte) $cc [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [15] (byte*) print_char_cursor#47 ← (byte*) print_line_cursor#1 [ print_char_cursor#47 print_line_cursor#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#1 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [24] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#10 + (byte) $28 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] { } main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] { { print_line_cursor#1 = print_line_cursor#19 } } ) always clobbers reg byte a +Statement [25] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#29 ] ( main:2::print_ln:14 [ print_line_cursor#1 print_char_cursor#29 ] { } main:2::print_ln:20 [ print_line_cursor#1 print_char_cursor#29 ] { { print_line_cursor#1 = print_line_cursor#19 } } ) always clobbers reg byte a +Statement [28] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] ( main:2::print_byte:12 [ print_byte::b#2 print_byte::$0 print_char_cursor#2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:18 [ print_line_cursor#1 print_byte::b#2 print_byte::$0 print_char_cursor#2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } ) always clobbers reg byte a +Statement [31] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#29 print_byte::$2 ] ( main:2::print_byte:12 [ print_char_cursor#29 print_byte::$2 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_byte:18 [ print_line_cursor#1 print_char_cursor#29 print_byte::$2 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte a +Statement [36] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2 [ print_char_cursor#28 ] ( main:2::print_byte:12::print_char:30 [ print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:18::print_char:30 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#2 = print_char_cursor#28 } } main:2::print_byte:12::print_char:33 [ print_char_cursor#28 ] { { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } main:2::print_byte:18::print_char:33 [ print_line_cursor#1 print_char_cursor#28 ] { { print_byte::b#1 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#28 = print_char_cursor#29 } } ) always clobbers reg byte y +Statement [41] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] { } main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a reg byte y +Statement [43] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:10 [ print_char_cursor#2 print_str::str#3 ] { } main:2::print_str:16 [ print_line_cursor#1 print_char_cursor#2 print_str::str#3 ] { { print_char_cursor#45 = print_char_cursor#47 } } ) always clobbers reg byte a reg byte y +Statement [51] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [53] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:8::memset:47 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -1401,22 +1401,22 @@ Potential registers zp[1]:14 [ print_byte::$0 ] : zp[1]:14 , reg byte a , reg by Potential registers zp[1]:15 [ print_byte::$2 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 32.11: zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] 27.36: zp[2]:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#47 print_char_cursor#1 ] -Uplift Scope [memset] 36.67: zp[2]:10 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [print_byte] 10: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:14 [ print_byte::$0 ] 4: zp[1]:15 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [main] 4: zp[2]:12 [ main::$0 ] +Uplift Scope [memset] 33,336.67: zp[2]:10 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [] 2,668.56: zp[2]:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#47 print_char_cursor#1 ] 2,551.11: zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] +Uplift Scope [print_str] 3,129.25: zp[2]:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplift Scope [print_char] 1,607: zp[1]:5 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 202: zp[1]:14 [ print_byte::$0 ] 202: zp[1]:15 [ print_byte::$2 ] 100: zp[1]:4 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [main] 22: zp[2]:12 [ main::$0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [fileentry] -Uplifting [] best 1948 combination zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] zp[2]:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#47 print_char_cursor#1 ] Uplifting [memset] best 1948 combination zp[2]:10 [ memset::dst#2 memset::dst#1 ] +Uplifting [] best 1948 combination zp[2]:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#47 print_char_cursor#1 ] zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] Uplifting [print_str] best 1948 combination zp[2]:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [print_byte] best 1930 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 1921 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_char] best 1939 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 1921 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Uplifting [main] best 1921 combination zp[2]:12 [ main::$0 ] Uplifting [RADIX] best 1921 combination Uplifting [print_ln] best 1921 combination @@ -1853,7 +1853,7 @@ FINAL SYMBOL TABLE (byte*) fileentry::bufEdit (const struct fileentry*) files[(number) $a] = { fill( $a, 0) } (signed word()) main() -(byte*~) main::$0 zp[2]:6 4.0 +(byte*~) main::$0 zp[2]:6 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -1871,8 +1871,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -1881,34 +1881,34 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 202.0 +(byte~) print_byte::$2 reg byte x 202.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 22.0 +(byte) print_byte::b#1 reg byte x 22.0 +(byte) print_byte::b#2 reg byte x 56.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 202.0 +(byte) print_char::ch#1 reg byte a 202.0 +(byte) print_char::ch#2 reg byte a 1203.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 3.3636363636363638 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 0.9999999999999999 -(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:4 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 291.3636363636364 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 1102.0 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 140.2 +(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 112.0 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:4 22.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 4.111111111111112 -(byte*) print_line_cursor#10 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 4.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 336.11111111111114 +(byte*) print_line_cursor#10 print_line_cursor zp[2]:2 2103.0 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 112.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1918,9 +1918,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 22.0 -(byte*) print_str::str#3 str zp[2]:6 11.5 -(byte*) print_str::str#5 str zp[2]:6 2.0 +(byte*) print_str::str#0 str zp[2]:6 2002.0 +(byte*) print_str::str#3 str zp[2]:6 1026.25 +(byte*) print_str::str#5 str zp[2]:6 101.0 zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] diff --git a/src/test/ref/struct-ptr-22.sym b/src/test/ref/struct-ptr-22.sym index 2af1768e1..48f93ab06 100644 --- a/src/test/ref/struct-ptr-22.sym +++ b/src/test/ref/struct-ptr-22.sym @@ -9,7 +9,7 @@ (byte*) fileentry::bufEdit (const struct fileentry*) files[(number) $a] = { fill( $a, 0) } (signed word()) main() -(byte*~) main::$0 zp[2]:6 4.0 +(byte*~) main::$0 zp[2]:6 22.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -27,8 +27,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:6 22.0 -(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:6 20002.0 +(byte*) memset::dst#2 dst zp[2]:6 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -37,34 +37,34 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 202.0 +(byte~) print_byte::$2 reg byte x 202.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 22.0 +(byte) print_byte::b#1 reg byte x 22.0 +(byte) print_byte::b#2 reg byte x 56.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 202.0 +(byte) print_char::ch#1 reg byte a 202.0 +(byte) print_char::ch#2 reg byte a 1203.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 3.3636363636363638 -(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 0.9999999999999999 -(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:4 4.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1001.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:4 291.3636363636364 +(byte*) print_char_cursor#28 print_char_cursor zp[2]:4 1102.0 +(byte*) print_char_cursor#29 print_char_cursor zp[2]:4 140.2 +(byte*) print_char_cursor#45 print_char_cursor zp[2]:4 112.0 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:4 22.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 4.111111111111112 -(byte*) print_line_cursor#10 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 4.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 336.11111111111114 +(byte*) print_line_cursor#10 print_line_cursor zp[2]:2 2103.0 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 112.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -74,9 +74,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:6 22.0 -(byte*) print_str::str#3 str zp[2]:6 11.5 -(byte*) print_str::str#5 str zp[2]:6 2.0 +(byte*) print_str::str#0 str zp[2]:6 2002.0 +(byte*) print_str::str#3 str zp[2]:6 1026.25 +(byte*) print_str::str#5 str zp[2]:6 101.0 zp[2]:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] diff --git a/src/test/ref/struct-ptr-23.log b/src/test/ref/struct-ptr-23.log index f49d2cd48..17519106c 100644 --- a/src/test/ref/struct-ptr-23.log +++ b/src/test/ref/struct-ptr-23.log @@ -145,12 +145,12 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (struct Person*) main::person#0 = (struct Person*) main::person#2 -Alias (byte) idx#0 = (byte) idx#12 -Alias (byte) idx#1 = (byte) idx#13 (byte) idx#14 (byte) idx#2 -Alias (byte) idx#10 = (byte) idx#16 (byte) idx#9 -Alias (byte) idx#19 = (byte) idx#3 -Alias (byte) idx#11 = (byte) idx#17 +Alias main::person#0 = main::person#2 +Alias idx#0 = idx#12 +Alias idx#1 = idx#13 idx#14 idx#2 +Alias idx#10 = idx#16 idx#9 +Alias idx#19 = idx#3 +Alias idx#11 = idx#17 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#18 (byte) idx#19 Identical Phi Values (byte) idx#0 (byte) idx#10 @@ -266,19 +266,19 @@ print_person::@return: scope:[print_person] from print_person VARIABLE REGISTER WEIGHTS (byte) Person::id (byte) idx -(byte) idx#10 1.0 -(byte) idx#15 2.0 -(byte) idx#4 3.0 -(byte) idx#5 3.0 -(byte) idx#6 2.0 -(byte) idx#7 2.0 -(byte) idx#8 3.0 +(byte) idx#10 28.0 +(byte) idx#15 71.0 +(byte) idx#4 151.5 +(byte) idx#5 151.5 +(byte) idx#6 101.0 +(byte) idx#7 101.0 +(byte) idx#8 151.5 (void()) main() (struct Person*) main::person (void()) print_person((struct Person*) print_person::person) -(byte~) print_person::$0 4.0 -(byte*~) print_person::$3 4.0 -(byte*~) print_person::$4 4.0 +(byte~) print_person::$0 202.0 +(byte*~) print_person::$3 202.0 +(byte*~) print_person::$4 202.0 (struct Person*) print_person::person (struct Person*) print_person::person#2 @@ -479,32 +479,32 @@ print_person: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] (byte~) print_person::$0 ← (byte) '0' + *((byte*)(struct Person*) print_person::person#2) [ print_person::person#2 idx#15 print_person::$0 ] ( main:2::print_person:5 [ print_person::person#2 idx#15 print_person::$0 ] main:2::print_person:7 [ print_person::person#2 idx#15 print_person::$0 ] ) always clobbers reg byte a reg byte y +Statement [10] (byte~) print_person::$0 ← (byte) '0' + *((byte*)(struct Person*) print_person::person#2) [ print_person::person#2 idx#15 print_person::$0 ] ( main:2::print_person:5 [ print_person::person#2 idx#15 print_person::$0 ] { } main:2::print_person:7 [ print_person::person#2 idx#15 print_person::$0 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#15 idx#10 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#15 idx#10 ] -Statement [13] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] main:2::print_person:7 [ print_person::person#2 idx#4 ] ) always clobbers reg byte a +Statement [13] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] { } main:2::print_person:7 [ print_person::person#2 idx#4 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#4 ] -Statement [15] *((const byte*) SCREEN + (byte) idx#5) ← *((byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS) [ print_person::person#2 idx#5 ] ( main:2::print_person:5 [ print_person::person#2 idx#5 ] main:2::print_person:7 [ print_person::person#2 idx#5 ] ) always clobbers reg byte a reg byte y +Statement [15] *((const byte*) SCREEN + (byte) idx#5) ← *((byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS) [ print_person::person#2 idx#5 ] ( main:2::print_person:5 [ print_person::person#2 idx#5 ] { } main:2::print_person:7 [ print_person::person#2 idx#5 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:7 [ idx#5 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ idx#5 ] -Statement [17] (byte*~) print_person::$3 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ print_person::person#2 idx#6 print_person::$3 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 print_person::$3 ] main:2::print_person:7 [ print_person::person#2 idx#6 print_person::$3 ] ) always clobbers reg byte a +Statement [17] (byte*~) print_person::$3 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ print_person::person#2 idx#6 print_person::$3 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 print_person::$3 ] { } main:2::print_person:7 [ print_person::person#2 idx#6 print_person::$3 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ idx#6 ] -Statement [18] *((const byte*) SCREEN + (byte) idx#6) ← *((byte*~) print_person::$3 + (byte) 1) [ print_person::person#2 idx#6 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 ] main:2::print_person:7 [ print_person::person#2 idx#6 ] ) always clobbers reg byte a reg byte y +Statement [18] *((const byte*) SCREEN + (byte) idx#6) ← *((byte*~) print_person::$3 + (byte) 1) [ print_person::person#2 idx#6 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 ] { } main:2::print_person:7 [ print_person::person#2 idx#6 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:8 [ idx#6 ] -Statement [20] (byte*~) print_person::$4 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ idx#7 print_person::$4 ] ( main:2::print_person:5 [ idx#7 print_person::$4 ] main:2::print_person:7 [ idx#7 print_person::$4 ] ) always clobbers reg byte a +Statement [20] (byte*~) print_person::$4 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ idx#7 print_person::$4 ] ( main:2::print_person:5 [ idx#7 print_person::$4 ] { } main:2::print_person:7 [ idx#7 print_person::$4 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ idx#7 ] -Statement [21] *((const byte*) SCREEN + (byte) idx#7) ← *((byte*~) print_person::$4 + (byte) 2) [ idx#7 ] ( main:2::print_person:5 [ idx#7 ] main:2::print_person:7 [ idx#7 ] ) always clobbers reg byte a reg byte y +Statement [21] *((const byte*) SCREEN + (byte) idx#7) ← *((byte*~) print_person::$4 + (byte) 2) [ idx#7 ] ( main:2::print_person:5 [ idx#7 ] { } main:2::print_person:7 [ idx#7 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:11 [ idx#7 ] -Statement [23] *((const byte*) SCREEN + (byte) idx#8) ← (byte) ' ' [ idx#8 ] ( main:2::print_person:5 [ idx#8 ] main:2::print_person:7 [ idx#8 ] ) always clobbers reg byte a +Statement [23] *((const byte*) SCREEN + (byte) idx#8) ← (byte) ' ' [ idx#8 ] ( main:2::print_person:5 [ idx#8 ] { } main:2::print_person:7 [ idx#8 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ idx#8 ] -Statement [10] (byte~) print_person::$0 ← (byte) '0' + *((byte*)(struct Person*) print_person::person#2) [ print_person::person#2 idx#15 print_person::$0 ] ( main:2::print_person:5 [ print_person::person#2 idx#15 print_person::$0 ] main:2::print_person:7 [ print_person::person#2 idx#15 print_person::$0 ] ) always clobbers reg byte a reg byte y -Statement [13] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] main:2::print_person:7 [ print_person::person#2 idx#4 ] ) always clobbers reg byte a -Statement [15] *((const byte*) SCREEN + (byte) idx#5) ← *((byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS) [ print_person::person#2 idx#5 ] ( main:2::print_person:5 [ print_person::person#2 idx#5 ] main:2::print_person:7 [ print_person::person#2 idx#5 ] ) always clobbers reg byte a reg byte y -Statement [17] (byte*~) print_person::$3 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ print_person::person#2 idx#6 print_person::$3 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 print_person::$3 ] main:2::print_person:7 [ print_person::person#2 idx#6 print_person::$3 ] ) always clobbers reg byte a -Statement [18] *((const byte*) SCREEN + (byte) idx#6) ← *((byte*~) print_person::$3 + (byte) 1) [ print_person::person#2 idx#6 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 ] main:2::print_person:7 [ print_person::person#2 idx#6 ] ) always clobbers reg byte a reg byte y -Statement [20] (byte*~) print_person::$4 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ idx#7 print_person::$4 ] ( main:2::print_person:5 [ idx#7 print_person::$4 ] main:2::print_person:7 [ idx#7 print_person::$4 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx#7) ← *((byte*~) print_person::$4 + (byte) 2) [ idx#7 ] ( main:2::print_person:5 [ idx#7 ] main:2::print_person:7 [ idx#7 ] ) always clobbers reg byte a reg byte y -Statement [23] *((const byte*) SCREEN + (byte) idx#8) ← (byte) ' ' [ idx#8 ] ( main:2::print_person:5 [ idx#8 ] main:2::print_person:7 [ idx#8 ] ) always clobbers reg byte a +Statement [10] (byte~) print_person::$0 ← (byte) '0' + *((byte*)(struct Person*) print_person::person#2) [ print_person::person#2 idx#15 print_person::$0 ] ( main:2::print_person:5 [ print_person::person#2 idx#15 print_person::$0 ] { } main:2::print_person:7 [ print_person::person#2 idx#15 print_person::$0 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y +Statement [13] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] { } main:2::print_person:7 [ print_person::person#2 idx#4 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a +Statement [15] *((const byte*) SCREEN + (byte) idx#5) ← *((byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS) [ print_person::person#2 idx#5 ] ( main:2::print_person:5 [ print_person::person#2 idx#5 ] { } main:2::print_person:7 [ print_person::person#2 idx#5 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y +Statement [17] (byte*~) print_person::$3 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ print_person::person#2 idx#6 print_person::$3 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 print_person::$3 ] { } main:2::print_person:7 [ print_person::person#2 idx#6 print_person::$3 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a +Statement [18] *((const byte*) SCREEN + (byte) idx#6) ← *((byte*~) print_person::$3 + (byte) 1) [ print_person::person#2 idx#6 ] ( main:2::print_person:5 [ print_person::person#2 idx#6 ] { } main:2::print_person:7 [ print_person::person#2 idx#6 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y +Statement [20] (byte*~) print_person::$4 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_INITIALS [ idx#7 print_person::$4 ] ( main:2::print_person:5 [ idx#7 print_person::$4 ] { } main:2::print_person:7 [ idx#7 print_person::$4 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx#7) ← *((byte*~) print_person::$4 + (byte) 2) [ idx#7 ] ( main:2::print_person:5 [ idx#7 ] { } main:2::print_person:7 [ idx#7 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a reg byte y +Statement [23] *((const byte*) SCREEN + (byte) idx#8) ← (byte) ' ' [ idx#8 ] ( main:2::print_person:5 [ idx#8 ] { } main:2::print_person:7 [ idx#8 ] { { idx#10 = idx#15 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_person::person#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#15 idx#10 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_person::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -517,18 +517,18 @@ Potential registers zp[2]:12 [ print_person::$4 ] : zp[2]:12 , Potential registers zp[1]:14 [ idx#8 ] : zp[1]:14 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 3: zp[1]:4 [ idx#15 idx#10 ] 3: zp[1]:6 [ idx#4 ] 3: zp[1]:7 [ idx#5 ] 3: zp[1]:14 [ idx#8 ] 2: zp[1]:8 [ idx#6 ] 2: zp[1]:11 [ idx#7 ] -Uplift Scope [print_person] 4: zp[1]:5 [ print_person::$0 ] 4: zp[2]:9 [ print_person::$3 ] 4: zp[2]:12 [ print_person::$4 ] 0: zp[2]:2 [ print_person::person#2 ] +Uplift Scope [] 151.5: zp[1]:6 [ idx#4 ] 151.5: zp[1]:7 [ idx#5 ] 151.5: zp[1]:14 [ idx#8 ] 101: zp[1]:8 [ idx#6 ] 101: zp[1]:11 [ idx#7 ] 99: zp[1]:4 [ idx#15 idx#10 ] +Uplift Scope [print_person] 202: zp[1]:5 [ print_person::$0 ] 202: zp[2]:9 [ print_person::$3 ] 202: zp[2]:12 [ print_person::$4 ] 0: zp[2]:2 [ print_person::person#2 ] Uplift Scope [Person] Uplift Scope [main] -Uplifting [] best 196 combination reg byte x [ idx#15 idx#10 ] reg byte x [ idx#4 ] reg byte x [ idx#5 ] reg byte x [ idx#8 ] reg byte x [ idx#6 ] zp[1]:11 [ idx#7 ] +Uplifting [] best 199 combination reg byte x [ idx#4 ] reg byte x [ idx#5 ] reg byte x [ idx#8 ] reg byte x [ idx#6 ] reg byte x [ idx#7 ] zp[1]:4 [ idx#15 idx#10 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [print_person] best 190 combination reg byte a [ print_person::$0 ] zp[2]:9 [ print_person::$3 ] zp[2]:12 [ print_person::$4 ] zp[2]:2 [ print_person::person#2 ] -Uplifting [Person] best 190 combination -Uplifting [main] best 190 combination -Attempting to uplift remaining variables inzp[1]:11 [ idx#7 ] -Uplifting [] best 181 combination reg byte x [ idx#7 ] +Uplifting [print_person] best 193 combination reg byte a [ print_person::$0 ] zp[2]:9 [ print_person::$3 ] zp[2]:12 [ print_person::$4 ] zp[2]:2 [ print_person::person#2 ] +Uplifting [Person] best 193 combination +Uplifting [main] best 193 combination +Attempting to uplift remaining variables inzp[1]:4 [ idx#15 idx#10 ] +Uplifting [] best 181 combination reg byte x [ idx#15 idx#10 ] Coalescing zero page register [ zp[2]:2 [ print_person::person#2 ] ] with [ zp[2]:12 [ print_person::$4 ] ] - score: 1 Allocated (was zp[2]:9) zp[2]:4 [ print_person::$3 ] @@ -703,13 +703,13 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) 5 (byte) idx -(byte) idx#10 reg byte x 1.0 -(byte) idx#15 reg byte x 2.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 3.0 -(byte) idx#6 reg byte x 2.0 -(byte) idx#7 reg byte x 2.0 -(byte) idx#8 reg byte x 3.0 +(byte) idx#10 reg byte x 28.0 +(byte) idx#15 reg byte x 71.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 151.5 +(byte) idx#6 reg byte x 101.0 +(byte) idx#7 reg byte x 101.0 +(byte) idx#8 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return @@ -717,9 +717,9 @@ FINAL SYMBOL TABLE (const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON (const struct Person*) persons[] = { { id: (byte) 1, initials: (byte*) "jgr" }, { id: (byte) 8, initials: (byte*) "hbg" } } (void()) print_person((struct Person*) print_person::person) -(byte~) print_person::$0 reg byte a 4.0 -(byte*~) print_person::$3 zp[2]:4 4.0 -(byte*~) print_person::$4 zp[2]:2 4.0 +(byte~) print_person::$0 reg byte a 202.0 +(byte*~) print_person::$3 zp[2]:4 202.0 +(byte*~) print_person::$4 zp[2]:2 202.0 (label) print_person::@return (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-23.sym b/src/test/ref/struct-ptr-23.sym index 408b2c285..3ca20c6c9 100644 --- a/src/test/ref/struct-ptr-23.sym +++ b/src/test/ref/struct-ptr-23.sym @@ -7,13 +7,13 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) 5 (byte) idx -(byte) idx#10 reg byte x 1.0 -(byte) idx#15 reg byte x 2.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 3.0 -(byte) idx#6 reg byte x 2.0 -(byte) idx#7 reg byte x 2.0 -(byte) idx#8 reg byte x 3.0 +(byte) idx#10 reg byte x 28.0 +(byte) idx#15 reg byte x 71.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 151.5 +(byte) idx#6 reg byte x 101.0 +(byte) idx#7 reg byte x 101.0 +(byte) idx#8 reg byte x 151.5 (void()) main() (label) main::@1 (label) main::@return @@ -21,9 +21,9 @@ (const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON (const struct Person*) persons[] = { { id: (byte) 1, initials: (byte*) "jgr" }, { id: (byte) 8, initials: (byte*) "hbg" } } (void()) print_person((struct Person*) print_person::person) -(byte~) print_person::$0 reg byte a 4.0 -(byte*~) print_person::$3 zp[2]:4 4.0 -(byte*~) print_person::$4 zp[2]:2 4.0 +(byte~) print_person::$0 reg byte a 202.0 +(byte*~) print_person::$3 zp[2]:4 202.0 +(byte*~) print_person::$4 zp[2]:2 202.0 (label) print_person::@return (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-24.log b/src/test/ref/struct-ptr-24.log index 0908e7145..a5381893d 100644 --- a/src/test/ref/struct-ptr-24.log +++ b/src/test/ref/struct-ptr-24.log @@ -96,7 +96,7 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [12] (bool~) PrintName::$1 ← (struct fileentry*) PrintName::file#1 != (const struct fileentry*) dir from [11] (bool~) PrintName::$0 ← (struct fileentry*) PrintName::file#1 == (const struct fileentry*) dir Successful SSA optimization Pass2UnaryNotSimplification -Alias (struct fileentry*) main::file#2 = (struct fileentry*) main::file#3 (struct fileentry*) main::file#4 +Alias main::file#2 = main::file#3 main::file#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (struct fileentry*) PrintName::file#1 (struct fileentry*) PrintName::file#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -174,13 +174,13 @@ PrintName::@return: scope:[PrintName] from PrintName PrintName::@1 VARIABLE REGISTER WEIGHTS (void()) PrintName((struct fileentry*) PrintName::file) (struct fileentry*) PrintName::file -(struct fileentry*) PrintName::file#0 13.0 +(struct fileentry*) PrintName::file#0 1102.0 (byte) fileentry::bError (byte) fileentry::bFlag (void()) main() (struct fileentry*) main::file -(struct fileentry*) main::file#1 22.0 -(struct fileentry*) main::file#2 11.0 +(struct fileentry*) main::file#1 202.0 +(struct fileentry*) main::file#2 101.0 Initial phi equivalence classes [ main::file#2 main::file#1 ] @@ -294,22 +294,22 @@ PrintName: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((struct fileentry*) main::file#2!=(const struct fileentry*) filesEnd) goto main::@2 [ main::file#2 ] ( main:2 [ main::file#2 ] ) always clobbers reg byte a -Statement [8] (struct fileentry*) PrintName::file#0 ← (struct fileentry*) main::file#2 [ main::file#2 PrintName::file#0 ] ( main:2 [ main::file#2 PrintName::file#0 ] ) always clobbers reg byte a -Statement [10] (struct fileentry*) main::file#1 ← (struct fileentry*) main::file#2 + (const byte) SIZEOF_STRUCT_FILEENTRY [ main::file#1 ] ( main:2 [ main::file#1 ] ) always clobbers reg byte a -Statement [11] if((struct fileentry*) PrintName::file#0!=(const struct fileentry*) dir) goto PrintName::@return [ ] ( main:2::PrintName:9 [ main::file#2 ] ) always clobbers reg byte a -Statement [12] *((byte*) 199) ← (byte) 1 [ ] ( main:2::PrintName:9 [ main::file#2 ] ) always clobbers reg byte a +Statement [6] if((struct fileentry*) main::file#2!=(const struct fileentry*) filesEnd) goto main::@2 [ main::file#2 ] ( main:2 [ main::file#2 ] { } ) always clobbers reg byte a +Statement [8] (struct fileentry*) PrintName::file#0 ← (struct fileentry*) main::file#2 [ main::file#2 PrintName::file#0 ] ( main:2 [ main::file#2 PrintName::file#0 ] { { PrintName::file#0 = main::file#2 } } ) always clobbers reg byte a +Statement [10] (struct fileentry*) main::file#1 ← (struct fileentry*) main::file#2 + (const byte) SIZEOF_STRUCT_FILEENTRY [ main::file#1 ] ( main:2 [ main::file#1 ] { } ) always clobbers reg byte a +Statement [11] if((struct fileentry*) PrintName::file#0!=(const struct fileentry*) dir) goto PrintName::@return [ ] ( main:2::PrintName:9 [ main::file#2 ] { { PrintName::file#0 = main::file#2 } } ) always clobbers reg byte a +Statement [12] *((byte*) 199) ← (byte) 1 [ ] ( main:2::PrintName:9 [ main::file#2 ] { { PrintName::file#0 = main::file#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::file#2 main::file#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ PrintName::file#0 ] : zp[2]:4 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[2]:2 [ main::file#2 main::file#1 ] -Uplift Scope [PrintName] 13: zp[2]:4 [ PrintName::file#0 ] +Uplift Scope [PrintName] 1,102: zp[2]:4 [ PrintName::file#0 ] +Uplift Scope [main] 303: zp[2]:2 [ main::file#2 main::file#1 ] Uplift Scope [fileentry] Uplift Scope [] -Uplifting [main] best 776 combination zp[2]:2 [ main::file#2 main::file#1 ] Uplifting [PrintName] best 776 combination zp[2]:4 [ PrintName::file#0 ] +Uplifting [main] best 776 combination zp[2]:2 [ main::file#2 main::file#1 ] Uplifting [fileentry] best 776 combination Uplifting [] best 776 combination Coalescing zero page register [ zp[2]:2 [ main::file#2 main::file#1 ] ] with [ zp[2]:4 [ PrintName::file#0 ] ] - score: 1 @@ -448,7 +448,7 @@ FINAL SYMBOL TABLE (label) PrintName::@1 (label) PrintName::@return (struct fileentry*) PrintName::file -(struct fileentry*) PrintName::file#0 file zp[2]:2 13.0 +(struct fileentry*) PrintName::file#0 file zp[2]:2 1102.0 (const byte) SIZEOF_STRUCT_FILEENTRY = (byte) 2 (const struct fileentry*) dir = (struct fileentry*) 0 (byte) fileentry::bError @@ -460,8 +460,8 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (struct fileentry*) main::file -(struct fileentry*) main::file#1 file zp[2]:2 22.0 -(struct fileentry*) main::file#2 file zp[2]:2 11.0 +(struct fileentry*) main::file#1 file zp[2]:2 202.0 +(struct fileentry*) main::file#2 file zp[2]:2 101.0 zp[2]:2 [ main::file#2 main::file#1 PrintName::file#0 ] diff --git a/src/test/ref/struct-ptr-24.sym b/src/test/ref/struct-ptr-24.sym index 296e5aa75..600765e07 100644 --- a/src/test/ref/struct-ptr-24.sym +++ b/src/test/ref/struct-ptr-24.sym @@ -5,7 +5,7 @@ (label) PrintName::@1 (label) PrintName::@return (struct fileentry*) PrintName::file -(struct fileentry*) PrintName::file#0 file zp[2]:2 13.0 +(struct fileentry*) PrintName::file#0 file zp[2]:2 1102.0 (const byte) SIZEOF_STRUCT_FILEENTRY = (byte) 2 (const struct fileentry*) dir = (struct fileentry*) 0 (byte) fileentry::bError @@ -17,7 +17,7 @@ (label) main::@3 (label) main::@return (struct fileentry*) main::file -(struct fileentry*) main::file#1 file zp[2]:2 22.0 -(struct fileentry*) main::file#2 file zp[2]:2 11.0 +(struct fileentry*) main::file#1 file zp[2]:2 202.0 +(struct fileentry*) main::file#2 file zp[2]:2 101.0 zp[2]:2 [ main::file#2 main::file#1 PrintName::file#0 ] diff --git a/src/test/ref/struct-ptr-25.log b/src/test/ref/struct-ptr-25.log index 57f764d96..4e1d07bc3 100644 --- a/src/test/ref/struct-ptr-25.log +++ b/src/test/ref/struct-ptr-25.log @@ -117,22 +117,22 @@ Inversing boolean not [4] (bool~) main::$1 ← (byte*) fileTop#4 != (const byte* Inversing boolean not [8] (bool~) main::$3 ← (const byte*) file > (byte*) fileCur#5 from [7] (bool~) main::$2 ← (const byte*) file <= (byte*) fileCur#5 Inversing boolean not [14] (bool~) main::$5 ← (byte*) fileCur#6 >= (byte*) fileTop#6 from [13] (bool~) main::$4 ← (byte*) fileCur#6 < (byte*) fileTop#6 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) fileTop#4 = (byte*) fileTop#5 -Alias (byte*) fileCur#10 = (byte*) fileCur#11 -Alias (byte*) fileCur#5 = (byte*) fileCur#7 -Alias (byte*) fileTop#11 = (byte*) fileTop#12 -Alias (byte*) fileTop#6 = (byte*) fileTop#7 (byte*) fileCur#2 -Alias (byte*) fileTop#2 = (byte*) fileTop#8 -Alias (byte*) fileCur#3 = (byte*) fileCur#8 -Alias (byte*) fileTop#0 = (byte*) fileTop#10 -Alias (byte*) fileCur#0 = (byte*) fileCur#12 -Alias (byte*) fileTop#3 = (byte*) fileTop#9 -Alias (byte*) fileCur#4 = (byte*) fileCur#9 +Alias fileTop#4 = fileTop#5 +Alias fileCur#10 = fileCur#11 +Alias fileCur#5 = fileCur#7 +Alias fileTop#11 = fileTop#12 +Alias fileTop#6 = fileTop#7 fileCur#2 +Alias fileTop#2 = fileTop#8 +Alias fileCur#3 = fileCur#8 +Alias fileTop#0 = fileTop#10 +Alias fileCur#0 = fileCur#12 +Alias fileTop#3 = fileTop#9 +Alias fileCur#4 = fileCur#9 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte*) fileTop#11 = (byte*) fileTop#6 (byte*) fileTop#2 -Alias (byte*) fileCur#10 = (byte*) fileCur#5 +Alias candidate removed (phi-usage) fileTop#11 = fileTop#6 fileTop#2 +Alias fileCur#10 = fileCur#5 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (phi-usage) (byte*) fileTop#11 = (byte*) fileTop#6 (byte*) fileTop#2 +Alias candidate removed (phi-usage) fileTop#11 = fileTop#6 fileTop#2 Identical Phi Values (byte*) fileTop#4 (byte*) fileTop#0 Identical Phi Values (byte*) fileCur#10 (byte*) fileCur#0 Identical Phi Values (byte*) fileTop#6 (byte*) fileTop#11 @@ -156,8 +156,8 @@ Eliminating unused variable - keeping the phi block (byte*) fileCur#3 Eliminating unused constant (const byte*) filesEnd Eliminating unused constant (const byte*) file Successful SSA optimization PassNEliminateUnusedVars -Alias (byte*) fileTop#1 = (byte*) fileTop#11 -Alias (byte*) fileCur#1 = (byte*) fileCur#6 +Alias fileTop#1 = fileTop#11 +Alias fileCur#1 = fileCur#6 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (byte*) fileTop#1 ← -- (const byte*) fileTop#0 Constant right-side identified [2] (byte*) fileCur#1 ← -- (const byte*) fileCur#0 diff --git a/src/test/ref/struct-ptr-26.asm b/src/test/ref/struct-ptr-26.asm index fae71a909..c3fde02eb 100644 --- a/src/test/ref/struct-ptr-26.asm +++ b/src/test/ref/struct-ptr-26.asm @@ -31,16 +31,14 @@ main: { print_word: { .label w = 4 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 lda #<$400 sta.z print_char_cursor lda #>$400 sta.z print_char_cursor+1 jsr print_byte // print_byte( (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:2::print_word:7 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [11] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_byte::b#1 print_char_cursor#19 ] ( main:2::print_word:7 [ print_byte::b#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [15] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] main:2::print_word:7::print_byte:12 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ) always clobbers reg byte a +Statement [4] *((byte**)(const struct fileentry*) main::file#1) ← (byte*) 4 [ ] ( main:2 [ ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a +Statement [5] (word) main::uSize#1 ← *((word*)*((byte**)(const struct fileentry*) main::file#1) + (byte) $1e) [ main::uSize#1 ] ( main:2 [ main::uSize#1 ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a reg byte y +Statement [6] (word) print_word::w#0 ← (word) main::uSize#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a +Statement [15] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:7::print_byte:12 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [18] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] main:2::print_word:7::print_byte:12 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [23] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:7::print_byte:10::print_char:17 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] main:2::print_word:7::print_byte:12::print_char:17 [ print_byte::b#2 print_char_cursor#18 ] main:2::print_word:7::print_byte:10::print_char:20 [ print_word::w#0 print_char_cursor#18 ] main:2::print_word:7::print_byte:12::print_char:20 [ print_char_cursor#18 ] ) always clobbers reg byte y +Statement [18] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:7::print_byte:12 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [23] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:7::print_byte:10::print_char:17 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:7::print_byte:12::print_char:17 [ print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:7::print_byte:10::print_char:20 [ print_word::w#0 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:7::print_byte:12::print_char:20 [ print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [4] *((byte**)(const struct fileentry*) main::file#1) ← (byte*) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] (word) main::uSize#1 ← *((word*)*((byte**)(const struct fileentry*) main::file#1) + (byte) $1e) [ main::uSize#1 ] ( main:2 [ main::uSize#1 ] ) always clobbers reg byte a reg byte y -Statement [6] (word) print_word::w#0 ← (word) main::uSize#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] ) always clobbers reg byte a -Statement [9] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:2::print_word:7 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [11] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_byte::b#1 print_char_cursor#19 ] ( main:2::print_word:7 [ print_byte::b#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [15] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] main:2::print_word:7::print_byte:12 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ) always clobbers reg byte a -Statement [18] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] main:2::print_word:7::print_byte:12 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [23] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:7::print_byte:10::print_char:17 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] main:2::print_word:7::print_byte:12::print_char:17 [ print_byte::b#2 print_char_cursor#18 ] main:2::print_word:7::print_byte:10::print_char:20 [ print_word::w#0 print_char_cursor#18 ] main:2::print_word:7::print_byte:12::print_char:20 [ print_char_cursor#18 ] ) always clobbers reg byte y +Statement [4] *((byte**)(const struct fileentry*) main::file#1) ← (byte*) 4 [ ] ( main:2 [ ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a +Statement [5] (word) main::uSize#1 ← *((word*)*((byte**)(const struct fileentry*) main::file#1) + (byte) $1e) [ main::uSize#1 ] ( main:2 [ main::uSize#1 ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a reg byte y +Statement [6] (word) print_word::w#0 ← (word) main::uSize#1 [ print_word::w#0 ] ( main:2 [ print_word::w#0 ] { { print_word::w#0 = main::uSize#1 } } ) always clobbers reg byte a +Statement [15] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:7::print_byte:12 [ print_byte::b#2 print_char_cursor#24 print_byte::$0 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [18] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::print_word:7::print_byte:10 [ print_word::w#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:7::print_byte:12 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte a +Statement [23] *((byte*) print_char_cursor#18) ← (byte) print_char::ch#2 [ print_char_cursor#18 ] ( main:2::print_word:7::print_byte:10::print_char:17 [ print_word::w#0 print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#24 } } main:2::print_word:7::print_byte:12::print_char:17 [ print_byte::b#2 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#0 = print_char::ch#2 } } main:2::print_word:7::print_byte:10::print_char:20 [ print_word::w#0 print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#2 } { print_char_cursor#18 = print_char_cursor#19 } } main:2::print_word:7::print_byte:12::print_char:20 [ print_char_cursor#18 ] { { print_word::w#0 = main::uSize#1 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#18 = print_char_cursor#24 print_char_cursor#19 } { print_char::ch#1 = print_char::ch#2 } } ) always clobbers reg byte y Potential registers zp[1]:2 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:4 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] : zp[2]:4 , @@ -667,21 +663,21 @@ Potential registers zp[1]:10 [ print_byte::$0 ] : zp[1]:10 , reg byte a , reg by Potential registers zp[1]:11 [ print_byte::$2 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print_byte] 10: zp[1]:2 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:10 [ print_byte::$0 ] 4: zp[1]:11 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:3 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [] 6: zp[2]:4 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] -Uplift Scope [main] 4: zp[2]:6 [ main::uSize#1 ] -Uplift Scope [print_word] 2: zp[2]:8 [ print_word::w#0 ] +Uplift Scope [print_char] 16,007: zp[1]:3 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [] 12,603: zp[2]:4 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] +Uplift Scope [print_byte] 2,002: zp[1]:10 [ print_byte::$0 ] 2,002: zp[1]:11 [ print_byte::$2 ] 955: zp[1]:2 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 71: zp[2]:8 [ print_word::w#0 ] +Uplift Scope [main] 22: zp[2]:6 [ main::uSize#1 ] Uplift Scope [RADIX] Uplift Scope [fileentry] -Uplifting [print_byte] best 216 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 207 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [] best 207 combination zp[2]:4 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] -Uplifting [main] best 207 combination zp[2]:6 [ main::uSize#1 ] -Uplifting [print_word] best 207 combination zp[2]:8 [ print_word::w#0 ] -Uplifting [RADIX] best 207 combination -Uplifting [fileentry] best 207 combination +Uplifting [print_char] best 221 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [] best 221 combination zp[2]:4 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] +Uplifting [print_byte] best 203 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 203 combination zp[2]:8 [ print_word::w#0 ] +Uplifting [main] best 203 combination zp[2]:6 [ main::uSize#1 ] +Uplifting [RADIX] best 203 combination +Uplifting [fileentry] best 203 combination Coalescing zero page register [ zp[2]:6 [ main::uSize#1 ] ] with [ zp[2]:8 [ print_word::w#0 ] ] - score: 1 Allocated (was zp[2]:4) zp[2]:2 [ print_char_cursor#18 print_char_cursor#24 print_char_cursor#19 ] Allocated (was zp[2]:6) zp[2]:4 [ main::uSize#1 print_word::w#0 ] @@ -743,8 +739,7 @@ main: { print_word: { .label w = 4 // [9] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [10] call print_byte // [14] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -759,8 +754,7 @@ print_word: { // print_word::@1 __b1: // [11] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [12] call print_byte // [14] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -883,26 +877,26 @@ FINAL SYMBOL TABLE (const struct fileentry*) main::file#1 file = (struct fileentry*) 16384 (word*) main::ptrw (word) main::uSize -(word) main::uSize#1 uSize zp[2]:4 4.0 +(word) main::uSize#1 uSize zp[2]:4 22.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 551.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 0.6666666666666666 -(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 1.3333333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 11002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 1233.6666666666665 +(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 367.33333333333337 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -910,7 +904,7 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 71.0 reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] @@ -921,7 +915,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 165 +Score: 161 // File Comments // Upstart @@ -974,8 +968,7 @@ print_word: { .label w = 4 // print_byte(>w) // [9] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [10] call print_byte // [14] phi from print_word to print_byte [phi:print_word->print_byte] // [14] phi (byte*) print_char_cursor#24 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1 @@ -988,8 +981,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [14] phi (byte*) print_char_cursor#24 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/struct-ptr-26.sym b/src/test/ref/struct-ptr-26.sym index f942344ec..f6275f287 100644 --- a/src/test/ref/struct-ptr-26.sym +++ b/src/test/ref/struct-ptr-26.sym @@ -14,26 +14,26 @@ (const struct fileentry*) main::file#1 file = (struct fileentry*) 16384 (word*) main::ptrw (word) main::uSize -(word) main::uSize#1 uSize zp[2]:4 4.0 +(word) main::uSize#1 uSize zp[2]:4 22.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2002.0 +(byte~) print_byte::$2 reg byte x 2002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 202.0 +(byte) print_byte::b#1 reg byte x 202.0 +(byte) print_byte::b#2 reg byte x 551.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 2002.0 +(byte) print_char::ch#1 reg byte a 2002.0 +(byte) print_char::ch#2 reg byte a 12003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 0.6666666666666666 -(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 1.3333333333333333 +(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 11002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 1233.6666666666665 +(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 367.33333333333337 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_screen @@ -41,7 +41,7 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:4 2.0 +(word) print_word::w#0 w zp[2]:4 71.0 reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] diff --git a/src/test/ref/struct-ptr-28.log b/src/test/ref/struct-ptr-28.log index c26a43e38..8fd357fa2 100644 --- a/src/test/ref/struct-ptr-28.log +++ b/src/test/ref/struct-ptr-28.log @@ -167,14 +167,14 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) idx#0 = (byte) idx#10 -Alias (byte) idx#1 = (byte) idx#11 (byte) idx#12 (byte) idx#2 -Alias (struct Person*) print_person::person#3 = (struct Person*) print_person::person#4 -Alias (byte) print_person::i#2 = (byte) print_person::i#3 -Alias (byte) idx#14 = (byte) idx#19 (byte) idx#15 -Alias (byte) idx#16 = (byte) idx#7 (byte) idx#8 -Alias (byte) idx#20 = (byte) idx#3 -Alias (byte) idx#17 = (byte) idx#9 +Alias idx#0 = idx#10 +Alias idx#1 = idx#11 idx#12 idx#2 +Alias print_person::person#3 = print_person::person#4 +Alias print_person::i#2 = print_person::i#3 +Alias idx#14 = idx#19 idx#15 +Alias idx#16 = idx#7 idx#8 +Alias idx#20 = idx#3 +Alias idx#17 = idx#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#18 (byte) idx#20 Identical Phi Values (byte) idx#0 (byte) idx#16 @@ -289,21 +289,21 @@ print_person::@2: scope:[print_person] from print_person::@1 VARIABLE REGISTER WEIGHTS (byte) Person::id (byte) idx -(byte) idx#13 3.0 -(byte) idx#14 6.5 -(byte) idx#16 1.0 -(byte) idx#4 3.0 -(byte) idx#5 4.0 -(byte) idx#6 11.0 +(byte) idx#13 106.5 +(byte) idx#14 551.0000000000001 +(byte) idx#16 28.0 +(byte) idx#4 151.5 +(byte) idx#5 202.0 +(byte) idx#6 1001.0 (void()) main() (struct Person) main::henriette loadstore (struct Person) main::jesper loadstore (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 22.0 -(byte*~) print_person::$2 22.0 +(byte*~) print_person::$1 2002.0 +(byte*~) print_person::$2 2002.0 (byte) print_person::i -(byte) print_person::i#1 22.0 -(byte) print_person::i#2 7.333333333333333 +(byte) print_person::i#1 2002.0 +(byte) print_person::i#2 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 @@ -519,29 +519,29 @@ print_person: { .fill 6, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *(&(struct Person) main::jesper) ← memcpy(*(&(const struct Person) $0), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette ] ( main:2 [ main::henriette ] ) always clobbers reg byte a reg byte y -Statement [6] *(&(struct Person) main::henriette) ← memcpy(*(&(const struct Person) $1), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette idx#16 ] ( main:2 [ main::henriette idx#16 ] ) always clobbers reg byte a reg byte y +Statement [4] *(&(struct Person) main::jesper) ← memcpy(*(&(const struct Person) $0), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette ] ( main:2 [ main::henriette ] { } ) always clobbers reg byte a reg byte y +Statement [6] *(&(struct Person) main::henriette) ← memcpy(*(&(const struct Person) $1), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette idx#16 ] ( main:2 [ main::henriette idx#16 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#13 idx#16 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#13 idx#16 ] -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ main::henriette print_person::person#2 idx#13 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#13 ] main:2::print_person:7 [ main::henriette print_person::person#2 idx#13 ] ) always clobbers reg byte a reg byte y -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ main::henriette print_person::person#2 idx#4 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#4 ] main:2::print_person:7 [ main::henriette print_person::person#2 idx#4 ] ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ main::henriette print_person::person#2 idx#13 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#13 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 idx#13 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ main::henriette print_person::person#2 idx#4 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#4 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ idx#4 ] -Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ print_person::i#2 print_person::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#14 idx#5 idx#6 ] -Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ main::henriette idx#14 ] ( main:2::print_person:5 [ main::henriette idx#14 ] main:2::print_person:7 [ main::henriette idx#14 ] ) always clobbers reg byte a -Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [4] *(&(struct Person) main::jesper) ← memcpy(*(&(const struct Person) $0), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette ] ( main:2 [ main::henriette ] ) always clobbers reg byte a reg byte y -Statement [6] *(&(struct Person) main::henriette) ← memcpy(*(&(const struct Person) $1), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette idx#16 ] ( main:2 [ main::henriette idx#16 ] ) always clobbers reg byte a reg byte y -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ main::henriette print_person::person#2 idx#13 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#13 ] main:2::print_person:7 [ main::henriette print_person::person#2 idx#13 ] ) always clobbers reg byte a reg byte y -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ main::henriette print_person::person#2 idx#4 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#4 ] main:2::print_person:7 [ main::henriette print_person::person#2 idx#4 ] ) always clobbers reg byte a -Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ) always clobbers reg byte a -Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ main::henriette idx#14 ] ( main:2::print_person:5 [ main::henriette idx#14 ] main:2::print_person:7 [ main::henriette idx#14 ] ) always clobbers reg byte a -Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a +Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ main::henriette idx#14 ] ( main:2::print_person:5 [ main::henriette idx#14 ] { } main:2::print_person:7 [ main::henriette idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [4] *(&(struct Person) main::jesper) ← memcpy(*(&(const struct Person) $0), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette ] ( main:2 [ main::henriette ] { } ) always clobbers reg byte a reg byte y +Statement [6] *(&(struct Person) main::henriette) ← memcpy(*(&(const struct Person) $1), struct Person, (const byte) SIZEOF_STRUCT_PERSON) [ main::henriette idx#16 ] ( main:2 [ main::henriette idx#16 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ main::henriette print_person::person#2 idx#13 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#13 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 idx#13 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ main::henriette print_person::person#2 idx#4 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 idx#4 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ main::henriette idx#14 ] ( main:2::print_person:5 [ main::henriette idx#14 ] { } main:2::print_person:7 [ main::henriette idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ main::henriette print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_person::person#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#13 idx#16 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_person::i#2 print_person::i#1 ] : zp[1]:5 , reg byte x , reg byte y , @@ -553,13 +553,13 @@ Potential registers zp[17]:12 [ main::jesper ] : zp[17]:12 , Potential registers zp[17]:29 [ main::henriette ] : zp[17]:29 , REGISTER UPLIFT SCOPES -Uplift Scope [print_person] 29.33: zp[1]:5 [ print_person::i#2 print_person::i#1 ] 22: zp[2]:8 [ print_person::$1 ] 22: zp[2]:10 [ print_person::$2 ] 0: zp[2]:2 [ print_person::person#2 ] -Uplift Scope [] 21.5: zp[1]:6 [ idx#14 idx#5 idx#6 ] 4: zp[1]:4 [ idx#13 idx#16 ] 3: zp[1]:7 [ idx#4 ] +Uplift Scope [print_person] 2,669.33: zp[1]:5 [ print_person::i#2 print_person::i#1 ] 2,002: zp[2]:8 [ print_person::$1 ] 2,002: zp[2]:10 [ print_person::$2 ] 0: zp[2]:2 [ print_person::person#2 ] +Uplift Scope [] 1,754: zp[1]:6 [ idx#14 idx#5 idx#6 ] 151.5: zp[1]:7 [ idx#4 ] 134.5: zp[1]:4 [ idx#13 idx#16 ] Uplift Scope [Person] Uplift Scope [main] 0: zp[17]:12 [ main::jesper ] 0: zp[17]:29 [ main::henriette ] Uplifting [print_person] best 943 combination reg byte y [ print_person::i#2 print_person::i#1 ] zp[2]:8 [ print_person::$1 ] zp[2]:10 [ print_person::$2 ] zp[2]:2 [ print_person::person#2 ] -Uplifting [] best 853 combination reg byte x [ idx#14 idx#5 idx#6 ] reg byte x [ idx#13 idx#16 ] reg byte x [ idx#4 ] +Uplifting [] best 853 combination reg byte x [ idx#14 idx#5 idx#6 ] reg byte x [ idx#4 ] reg byte x [ idx#13 idx#16 ] Uplifting [Person] best 853 combination Uplifting [main] best 853 combination zp[17]:12 [ main::jesper ] zp[17]:29 [ main::henriette ] Allocated (was zp[2]:8) zp[2]:4 [ print_person::$1 ] @@ -771,27 +771,27 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) $11 (byte) idx -(byte) idx#13 reg byte x 3.0 -(byte) idx#14 reg byte x 6.5 -(byte) idx#16 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 reg byte x 106.5 +(byte) idx#14 reg byte x 551.0000000000001 +(byte) idx#16 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return (struct Person) main::henriette loadstore zp[17]:25 (struct Person) main::jesper loadstore zp[17]:8 (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 zp[2]:4 22.0 -(byte*~) print_person::$2 zp[2]:6 22.0 +(byte*~) print_person::$1 zp[2]:4 2002.0 +(byte*~) print_person::$2 zp[2]:6 2002.0 (label) print_person::@1 (label) print_person::@2 (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 7.333333333333333 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-28.sym b/src/test/ref/struct-ptr-28.sym index b0c444643..3ef24d1e5 100644 --- a/src/test/ref/struct-ptr-28.sym +++ b/src/test/ref/struct-ptr-28.sym @@ -10,27 +10,27 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) $11 (byte) idx -(byte) idx#13 reg byte x 3.0 -(byte) idx#14 reg byte x 6.5 -(byte) idx#16 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 reg byte x 106.5 +(byte) idx#14 reg byte x 551.0000000000001 +(byte) idx#16 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return (struct Person) main::henriette loadstore zp[17]:25 (struct Person) main::jesper loadstore zp[17]:8 (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 zp[2]:4 22.0 -(byte*~) print_person::$2 zp[2]:6 22.0 +(byte*~) print_person::$1 zp[2]:4 2002.0 +(byte*~) print_person::$2 zp[2]:6 2002.0 (label) print_person::@1 (label) print_person::@2 (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 7.333333333333333 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-3.log b/src/test/ref/struct-ptr-3.log index c97bf23dc..ffafffd94 100644 --- a/src/test/ref/struct-ptr-3.log +++ b/src/test/ref/struct-ptr-3.log @@ -81,9 +81,9 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (struct Point*) points#1 = (struct Point*) points#5 (struct Point*) points#2 -Alias (struct Point*) points#0 = (struct Point*) points#7 -Alias (struct Point*) points#3 = (struct Point*) points#6 +Alias points#1 = points#5 points#2 +Alias points#0 = points#7 +Alias points#3 = points#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (struct Point*) points#4 (struct Point*) points#0 Identical Phi Values (struct Point*) points#3 (struct Point*) points#1 @@ -223,10 +223,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(struct Point*) 4096) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(struct Point*) 4096+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(struct Point*) 4096) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(struct Point*) 4096+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-ptr-30.asm b/src/test/ref/struct-ptr-30.asm index bb50ae1f6..892a31d6b 100644 --- a/src/test/ref/struct-ptr-30.asm +++ b/src/test/ref/struct-ptr-30.asm @@ -5,61 +5,61 @@ .label SCREEN = $400 .const OFFSET_STRUCT_POINT_Y = 1 .const SIZEOF_STRUCT_POINT = 3 - .label idx = 2 + .label idx = 3 main: { + .label i = 2 lda #0 sta.z idx - tax + sta.z i __b1: // print(points[i]) - txa + lda.z i asl - stx.z $ff clc - adc.z $ff + adc.z i tay - lda points,y - sta.z print.p_x + ldx points,y lda points+OFFSET_STRUCT_POINT_Y,y sta.z print.p_y lda points+OFFSET_STRUCT_POINT_Y+1,y sta.z print.p_y+1 jsr print // for ( char i: 0..3) - inx - cpx #4 + inc.z i + lda #4 + cmp.z i bne __b1 // } rts } -// print(byte zp(3) p_x, signed word zp(4) p_y) +// print(byte register(X) p_x, signed word zp(4) p_y) print: { - .label p_x = 3 .label p_y = 4 // SCREEN[idx++] = p.x - lda.z p_x ldy.z idx + txa sta SCREEN,y // SCREEN[idx++] = p.x; - iny + ldx.z idx + inx // p.y lda.z p_y+1 // SCREEN[idx++] = >p.y - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = >p.y; - iny + inx // SCREEN[idx++] = ' ' lda #' ' - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = ' '; - iny - sty.z idx + inx + stx.z idx // } rts } diff --git a/src/test/ref/struct-ptr-30.log b/src/test/ref/struct-ptr-30.log index f2fcdc0a0..a2e55d377 100644 --- a/src/test/ref/struct-ptr-30.log +++ b/src/test/ref/struct-ptr-30.log @@ -130,11 +130,11 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) idx#0 = (byte) idx#9 (byte) idx#10 (byte) idx#1 -Alias (byte) idx#12 = (byte) idx#6 (byte) idx#7 -Alias (byte) idx#15 = (byte) idx#2 -Alias (byte) idx#13 = (byte) idx#8 +Alias main::i#2 = main::i#3 +Alias idx#0 = idx#9 idx#10 idx#1 +Alias idx#12 = idx#6 idx#7 +Alias idx#15 = idx#2 +Alias idx#13 = idx#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#16 (byte) idx#15 Identical Phi Values (byte) idx#0 (byte) idx#12 @@ -166,7 +166,7 @@ Inlining constant with var siblings (const byte) idx#15 Constant inlined main::i#0 = (byte) 0 Constant inlined idx#15 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (byte~) main::$2 = (byte~) main::$4 +Alias main::$2 = main::$4 Successful SSA optimization Pass2AliasElimination Eliminating unused constant (const byte) SIZEOF_STRUCT_POINT Successful SSA optimization PassNEliminateUnusedVars @@ -249,25 +249,25 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (signed word) Point::y (byte) idx -(byte) idx#12 2.6 -(byte) idx#14 2.5 -(byte) idx#3 2.0 -(byte) idx#4 2.0 -(byte) idx#5 3.0 +(byte) idx#12 220.39999999999998 +(byte) idx#14 350.5 +(byte) idx#3 1001.0 +(byte) idx#4 1001.0 +(byte) idx#5 1501.5 (void()) main() -(byte~) main::$2 16.5 -(byte~) main::$3 22.0 +(byte~) main::$2 151.5 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.333333333333333 +(byte) main::i#1 151.5 +(byte) main::i#2 67.33333333333333 (void()) print((byte) print::p_x , (signed word) print::p_y) -(byte~) print::$0 4.0 -(byte~) print::$1 4.0 +(byte~) print::$0 2002.0 +(byte~) print::$1 2002.0 (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 6.5 +(byte) print::p_x#0 551.0 (signed word) print::p_y -(signed word) print::p_y#0 2.5 +(signed word) print::p_y#0 350.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -453,54 +453,47 @@ print: { .fill SIZEOF_STRUCT_POINT, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#14 main::$3 ] ( main:2 [ main::i#2 idx#14 main::$3 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#14 main::$3 ] ( main:2 [ main::i#2 idx#14 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#14 idx#12 ] -Statement [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 idx#14 main::$2 ] ( main:2 [ main::i#2 idx#14 main::$2 ] ) always clobbers reg byte a -Statement [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ( main:2 [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 idx#14 main::$2 ] ( main:2 [ main::i#2 idx#14 main::$2 ] { } ) always clobbers reg byte a +Statement [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ( main:2 [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print::p_x#0 ] -Statement [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 [ idx#14 print::p_y#0 ] ( main:2::print:10 [ main::i#2 idx#14 print::p_y#0 ] ) always clobbers reg byte a -Statement [16] (byte~) print::$0 ← < (signed word) print::p_y#0 [ print::p_y#0 idx#3 print::$0 ] ( main:2::print:10 [ main::i#2 print::p_y#0 idx#3 print::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:9 [ idx#3 ] -Statement [19] (byte~) print::$1 ← > (signed word) print::p_y#0 [ idx#4 print::$1 ] ( main:2::print:10 [ main::i#2 idx#4 print::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:11 [ idx#4 ] -Statement [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' [ idx#5 ] ( main:2::print:10 [ main::i#2 idx#5 ] ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 [ idx#14 print::p_y#0 ] ( main:2::print:10 [ main::i#2 idx#14 print::p_y#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' [ idx#5 ] ( main:2::print:10 [ main::i#2 idx#5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:13 [ idx#5 ] -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#14 main::$3 ] ( main:2 [ main::i#2 idx#14 main::$3 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 idx#14 main::$2 ] ( main:2 [ main::i#2 idx#14 main::$2 ] ) always clobbers reg byte a -Statement [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ( main:2 [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 [ idx#14 print::p_y#0 ] ( main:2::print:10 [ main::i#2 idx#14 print::p_y#0 ] ) always clobbers reg byte a -Statement [16] (byte~) print::$0 ← < (signed word) print::p_y#0 [ print::p_y#0 idx#3 print::$0 ] ( main:2::print:10 [ main::i#2 print::p_y#0 idx#3 print::$0 ] ) always clobbers reg byte a -Statement [19] (byte~) print::$1 ← > (signed word) print::p_y#0 [ idx#4 print::$1 ] ( main:2::print:10 [ main::i#2 idx#4 print::$1 ] ) always clobbers reg byte a -Statement [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' [ idx#5 ] ( main:2::print:10 [ main::i#2 idx#5 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 idx#14 main::$3 ] ( main:2 [ main::i#2 idx#14 main::$3 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 idx#14 main::$2 ] ( main:2 [ main::i#2 idx#14 main::$2 ] { } ) always clobbers reg byte a +Statement [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] ( main:2 [ main::i#2 idx#14 print::p_x#0 print::p_y#0 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 [ idx#14 print::p_y#0 ] ( main:2::print:10 [ main::i#2 idx#14 print::p_y#0 ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' [ idx#5 ] ( main:2::print:10 [ main::i#2 idx#5 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#14 idx#12 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:6 [ print::p_x#0 ] : zp[1]:6 , reg byte x , reg byte y , Potential registers zp[2]:7 [ print::p_y#0 ] : zp[2]:7 , -Potential registers zp[1]:9 [ idx#3 ] : zp[1]:9 , reg byte x , reg byte y , +Potential registers zp[1]:9 [ idx#3 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ print::$0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:11 [ idx#4 ] : zp[1]:11 , reg byte x , reg byte y , +Potential registers zp[1]:11 [ idx#4 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:12 [ print::$1 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:13 [ idx#5 ] : zp[1]:13 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$3 ] 16.5: zp[1]:5 [ main::$2 ] -Uplift Scope [print] 6.5: zp[1]:6 [ print::p_x#0 ] 4: zp[1]:10 [ print::$0 ] 4: zp[1]:12 [ print::$1 ] 2.5: zp[2]:7 [ print::p_y#0 ] -Uplift Scope [] 5.1: zp[1]:3 [ idx#14 idx#12 ] 3: zp[1]:13 [ idx#5 ] 2: zp[1]:9 [ idx#3 ] 2: zp[1]:11 [ idx#4 ] +Uplift Scope [print] 2,002: zp[1]:10 [ print::$0 ] 2,002: zp[1]:12 [ print::$1 ] 551: zp[1]:6 [ print::p_x#0 ] 350.5: zp[2]:7 [ print::p_y#0 ] +Uplift Scope [] 1,501.5: zp[1]:13 [ idx#5 ] 1,001: zp[1]:9 [ idx#3 ] 1,001: zp[1]:11 [ idx#4 ] 570.9: zp[1]:3 [ idx#14 idx#12 ] +Uplift Scope [main] 218.83: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:4 [ main::$3 ] 151.5: zp[1]:5 [ main::$2 ] Uplift Scope [Point] -Uplifting [main] best 794 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] reg byte y [ main::$2 ] -Uplifting [print] best 782 combination zp[1]:6 [ print::p_x#0 ] reg byte a [ print::$0 ] reg byte a [ print::$1 ] zp[2]:7 [ print::p_y#0 ] -Uplifting [] best 755 combination zp[1]:3 [ idx#14 idx#12 ] reg byte y [ idx#5 ] reg byte y [ idx#3 ] reg byte y [ idx#4 ] -Uplifting [Point] best 755 combination -Attempting to uplift remaining variables inzp[1]:6 [ print::p_x#0 ] -Uplifting [print] best 755 combination zp[1]:6 [ print::p_x#0 ] +Uplifting [print] best 951 combination reg byte a [ print::$0 ] reg byte a [ print::$1 ] reg byte x [ print::p_x#0 ] zp[2]:7 [ print::p_y#0 ] +Uplifting [] best 924 combination reg byte x [ idx#5 ] reg byte x [ idx#3 ] reg byte x [ idx#4 ] zp[1]:3 [ idx#14 idx#12 ] +Limited combination testing to 100 combinations of 144 possible. +Uplifting [main] best 794 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] reg byte y [ main::$2 ] +Uplifting [Point] best 794 combination Attempting to uplift remaining variables inzp[1]:3 [ idx#14 idx#12 ] -Uplifting [] best 755 combination zp[1]:3 [ idx#14 idx#12 ] -Allocated (was zp[1]:3) zp[1]:2 [ idx#14 idx#12 ] -Allocated (was zp[1]:6) zp[1]:3 [ print::p_x#0 ] +Uplifting [] best 794 combination zp[1]:3 [ idx#14 idx#12 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 794 combination zp[1]:2 [ main::i#2 main::i#1 ] Allocated (was zp[2]:7) zp[2]:4 [ print::p_y#0 ] ASSEMBLER BEFORE OPTIMIZATION @@ -514,7 +507,7 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 .const OFFSET_STRUCT_POINT_Y = 1 .const SIZEOF_STRUCT_POINT = 3 - .label idx = 2 + .label idx = 3 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -533,13 +526,15 @@ __bend_from___b1: __bend: // main main: { + .label i = 2 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: // [5] phi (byte) idx#14 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z idx - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 - ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z i jmp __b1 // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: @@ -548,17 +543,15 @@ main: { jmp __b1 // main::@1 __b1: - // [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl - // [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx - stx.z $ff + // [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuz1 clc - adc.z $ff + adc.z i tay - // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$2) -- vbuz1=pbuc1_derefidx_vbuyy - lda points,y - sta.z print.p_x + // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx points,y // [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) -- vwsz1=pwsc1_derefidx_vbuyy lda points+OFFSET_STRUCT_POINT_Y,y sta.z print.p_y @@ -569,10 +562,11 @@ main: { jmp __b2 // main::@2 __b2: - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::i#1!=(byte) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #4 + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [12] if((byte) main::i#1!=(byte) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #4 + cmp.z i bne __b1_from___b2 jmp __breturn // main::@return @@ -581,35 +575,34 @@ main: { rts } // print -// print(byte zp(3) p_x, signed word zp(4) p_y) +// print(byte register(X) p_x, signed word zp(4) p_y) print: { - .label p_x = 3 .label p_y = 4 - // [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 - lda.z p_x + // [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuxx ldy.z idx + txa sta SCREEN,y - // [15] (byte) idx#3 ← ++ (byte) idx#14 -- vbuyy=_inc_vbuz1 - ldy.z idx - iny + // [15] (byte) idx#3 ← ++ (byte) idx#14 -- vbuxx=_inc_vbuz1 + ldx.z idx + inx // [16] (byte~) print::$0 ← < (signed word) print::p_y#0 -- vbuaa=_lo_vwsz1 lda.z p_y - // [17] *((const byte*) SCREEN + (byte) idx#3) ← (byte~) print::$0 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y - // [18] (byte) idx#4 ← ++ (byte) idx#3 -- vbuyy=_inc_vbuyy - iny + // [17] *((const byte*) SCREEN + (byte) idx#3) ← (byte~) print::$0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [18] (byte) idx#4 ← ++ (byte) idx#3 -- vbuxx=_inc_vbuxx + inx // [19] (byte~) print::$1 ← > (signed word) print::p_y#0 -- vbuaa=_hi_vwsz1 lda.z p_y+1 - // [20] *((const byte*) SCREEN + (byte) idx#4) ← (byte~) print::$1 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y - // [21] (byte) idx#5 ← ++ (byte) idx#4 -- vbuyy=_inc_vbuyy - iny - // [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 + // [20] *((const byte*) SCREEN + (byte) idx#4) ← (byte~) print::$1 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [21] (byte) idx#5 ← ++ (byte) idx#4 -- vbuxx=_inc_vbuxx + inx + // [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' - sta SCREEN,y - // [23] (byte) idx#12 ← ++ (byte) idx#5 -- vbuz1=_inc_vbuyy - iny - sty.z idx + sta SCREEN,x + // [23] (byte) idx#12 ← ++ (byte) idx#5 -- vbuz1=_inc_vbuxx + inx + stx.z idx jmp __breturn // print::@return __breturn: @@ -632,8 +625,7 @@ Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldx #0 with TAX -Removing instruction ldy.z idx +Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b1_from___b2 with __b1 Removing instruction __b1_from___bbegin: @@ -666,46 +658,46 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 3 (byte) idx -(byte) idx#12 idx zp[1]:2 2.6 -(byte) idx#14 idx zp[1]:2 2.5 -(byte) idx#3 reg byte y 2.0 -(byte) idx#4 reg byte y 2.0 -(byte) idx#5 reg byte y 3.0 +(byte) idx#12 idx zp[1]:3 220.39999999999998 +(byte) idx#14 idx zp[1]:3 350.5 +(byte) idx#3 reg byte x 1001.0 +(byte) idx#4 reg byte x 1001.0 +(byte) idx#5 reg byte x 1501.5 (void()) main() -(byte~) main::$2 reg byte y 16.5 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$2 reg byte y 151.5 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 7.333333333333333 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 67.33333333333333 (const struct Point*) points[(number) 4] = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } } (void()) print((byte) print::p_x , (signed word) print::p_y) -(byte~) print::$0 reg byte a 4.0 -(byte~) print::$1 reg byte a 4.0 +(byte~) print::$0 reg byte a 2002.0 +(byte~) print::$1 reg byte a 2002.0 (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 p_x zp[1]:3 6.5 +(byte) print::p_x#0 reg byte x 551.0 (signed word) print::p_y -(signed word) print::p_y#0 p_y zp[2]:4 2.5 +(signed word) print::p_y#0 p_y zp[2]:4 350.5 -reg byte x [ main::i#2 main::i#1 ] -zp[1]:2 [ idx#14 idx#12 ] +zp[1]:2 [ main::i#2 main::i#1 ] +zp[1]:3 [ idx#14 idx#12 ] reg byte a [ main::$3 ] reg byte y [ main::$2 ] -zp[1]:3 [ print::p_x#0 ] +reg byte x [ print::p_x#0 ] zp[2]:4 [ print::p_y#0 ] -reg byte y [ idx#3 ] +reg byte x [ idx#3 ] reg byte a [ print::$0 ] -reg byte y [ idx#4 ] +reg byte x [ idx#4 ] reg byte a [ print::$1 ] -reg byte y [ idx#5 ] +reg byte x [ idx#5 ] FINAL ASSEMBLER -Score: 617 +Score: 639 // File Comments // Test a struct array initialized with to few members (zero-filled for the rest) @@ -717,7 +709,7 @@ Score: 617 .label SCREEN = $400 .const OFFSET_STRUCT_POINT_Y = 1 .const SIZEOF_STRUCT_POINT = 3 - .label idx = 2 + .label idx = 3 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -727,29 +719,28 @@ Score: 617 // @end // main main: { + .label i = 2 // [5] phi from main to main::@1 [phi:main->main::@1] // [5] phi (byte) idx#14 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z idx - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 - tax + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + sta.z i // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [5] phi (byte) idx#14 = (byte) idx#12 [phi:main::@2->main::@1#0] -- register_copy // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy // main::@1 __b1: // print(points[i]) - // [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z i asl - // [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx - stx.z $ff + // [7] (byte~) main::$2 ← (byte~) main::$3 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuz1 clc - adc.z $ff + adc.z i tay - // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$2) -- vbuz1=pbuc1_derefidx_vbuyy - lda points,y - sta.z print.p_x + // [8] (byte) print::p_x#0 ← *((byte*)(const struct Point*) points + (byte~) main::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx points,y // [9] (signed word) print::p_y#0 ← *((signed word*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) -- vwsz1=pwsc1_derefidx_vbuyy lda points+OFFSET_STRUCT_POINT_Y,y sta.z print.p_y @@ -759,10 +750,11 @@ main: { jsr print // main::@2 // for ( char i: 0..3) - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [12] if((byte) main::i#1!=(byte) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #4 + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [12] if((byte) main::i#1!=(byte) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #4 + cmp.z i bne __b1 // main::@return // } @@ -770,44 +762,44 @@ main: { rts } // print -// print(byte zp(3) p_x, signed word zp(4) p_y) +// print(byte register(X) p_x, signed word zp(4) p_y) print: { - .label p_x = 3 .label p_y = 4 // SCREEN[idx++] = p.x - // [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuz2 - lda.z p_x + // [14] *((const byte*) SCREEN + (byte) idx#14) ← (byte) print::p_x#0 -- pbuc1_derefidx_vbuz1=vbuxx ldy.z idx + txa sta SCREEN,y // SCREEN[idx++] = p.x; - // [15] (byte) idx#3 ← ++ (byte) idx#14 -- vbuyy=_inc_vbuz1 - iny + // [15] (byte) idx#3 ← ++ (byte) idx#14 -- vbuxx=_inc_vbuz1 + ldx.z idx + inx // p.y // [19] (byte~) print::$1 ← > (signed word) print::p_y#0 -- vbuaa=_hi_vwsz1 lda.z p_y+1 // SCREEN[idx++] = >p.y - // [20] *((const byte*) SCREEN + (byte) idx#4) ← (byte~) print::$1 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y + // [20] *((const byte*) SCREEN + (byte) idx#4) ← (byte~) print::$1 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x // SCREEN[idx++] = >p.y; - // [21] (byte) idx#5 ← ++ (byte) idx#4 -- vbuyy=_inc_vbuyy - iny + // [21] (byte) idx#5 ← ++ (byte) idx#4 -- vbuxx=_inc_vbuxx + inx // SCREEN[idx++] = ' ' - // [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 + // [22] *((const byte*) SCREEN + (byte) idx#5) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' - sta SCREEN,y + sta SCREEN,x // SCREEN[idx++] = ' '; - // [23] (byte) idx#12 ← ++ (byte) idx#5 -- vbuz1=_inc_vbuyy - iny - sty.z idx + // [23] (byte) idx#12 ← ++ (byte) idx#5 -- vbuz1=_inc_vbuxx + inx + stx.z idx // print::@return // } // [24] return diff --git a/src/test/ref/struct-ptr-30.sym b/src/test/ref/struct-ptr-30.sym index b5d3f2d06..0dbf6aa97 100644 --- a/src/test/ref/struct-ptr-30.sym +++ b/src/test/ref/struct-ptr-30.sym @@ -7,39 +7,39 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_POINT = (byte) 3 (byte) idx -(byte) idx#12 idx zp[1]:2 2.6 -(byte) idx#14 idx zp[1]:2 2.5 -(byte) idx#3 reg byte y 2.0 -(byte) idx#4 reg byte y 2.0 -(byte) idx#5 reg byte y 3.0 +(byte) idx#12 idx zp[1]:3 220.39999999999998 +(byte) idx#14 idx zp[1]:3 350.5 +(byte) idx#3 reg byte x 1001.0 +(byte) idx#4 reg byte x 1001.0 +(byte) idx#5 reg byte x 1501.5 (void()) main() -(byte~) main::$2 reg byte y 16.5 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$2 reg byte y 151.5 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 7.333333333333333 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 67.33333333333333 (const struct Point*) points[(number) 4] = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } } (void()) print((byte) print::p_x , (signed word) print::p_y) -(byte~) print::$0 reg byte a 4.0 -(byte~) print::$1 reg byte a 4.0 +(byte~) print::$0 reg byte a 2002.0 +(byte~) print::$1 reg byte a 2002.0 (label) print::@return (struct Point) print::p (byte) print::p_x -(byte) print::p_x#0 p_x zp[1]:3 6.5 +(byte) print::p_x#0 reg byte x 551.0 (signed word) print::p_y -(signed word) print::p_y#0 p_y zp[2]:4 2.5 +(signed word) print::p_y#0 p_y zp[2]:4 350.5 -reg byte x [ main::i#2 main::i#1 ] -zp[1]:2 [ idx#14 idx#12 ] +zp[1]:2 [ main::i#2 main::i#1 ] +zp[1]:3 [ idx#14 idx#12 ] reg byte a [ main::$3 ] reg byte y [ main::$2 ] -zp[1]:3 [ print::p_x#0 ] +reg byte x [ print::p_x#0 ] zp[2]:4 [ print::p_y#0 ] -reg byte y [ idx#3 ] +reg byte x [ idx#3 ] reg byte a [ print::$0 ] -reg byte y [ idx#4 ] +reg byte x [ idx#4 ] reg byte a [ print::$1 ] -reg byte y [ idx#5 ] +reg byte x [ idx#5 ] diff --git a/src/test/ref/struct-ptr-31.log b/src/test/ref/struct-ptr-31.log index 9be9e5e11..728743485 100644 --- a/src/test/ref/struct-ptr-31.log +++ b/src/test/ref/struct-ptr-31.log @@ -161,14 +161,14 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) idx#0 = (byte) idx#10 -Alias (byte) idx#1 = (byte) idx#11 (byte) idx#12 (byte) idx#2 -Alias (struct Person*) print_person::person#3 = (struct Person*) print_person::person#4 -Alias (byte) print_person::i#2 = (byte) print_person::i#3 -Alias (byte) idx#14 = (byte) idx#19 (byte) idx#15 -Alias (byte) idx#16 = (byte) idx#7 (byte) idx#8 -Alias (byte) idx#20 = (byte) idx#3 -Alias (byte) idx#17 = (byte) idx#9 +Alias idx#0 = idx#10 +Alias idx#1 = idx#11 idx#12 idx#2 +Alias print_person::person#3 = print_person::person#4 +Alias print_person::i#2 = print_person::i#3 +Alias idx#14 = idx#19 idx#15 +Alias idx#16 = idx#7 idx#8 +Alias idx#20 = idx#3 +Alias idx#17 = idx#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#18 (byte) idx#20 Identical Phi Values (byte) idx#0 (byte) idx#16 @@ -284,19 +284,19 @@ print_person::@2: scope:[print_person] from print_person::@1 VARIABLE REGISTER WEIGHTS (byte) Person::id (byte) idx -(byte) idx#13 3.0 -(byte) idx#14 6.5 -(byte) idx#16 1.0 -(byte) idx#4 3.0 -(byte) idx#5 4.0 -(byte) idx#6 11.0 +(byte) idx#13 106.5 +(byte) idx#14 551.0000000000001 +(byte) idx#16 28.0 +(byte) idx#4 151.5 +(byte) idx#5 202.0 +(byte) idx#6 1001.0 (void()) main() (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 22.0 -(byte*~) print_person::$2 22.0 +(byte*~) print_person::$1 2002.0 +(byte*~) print_person::$2 2002.0 (byte) print_person::i -(byte) print_person::i#1 22.0 -(byte) print_person::i#2 7.333333333333333 +(byte) print_person::i#1 2002.0 +(byte) print_person::i#2 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 @@ -492,25 +492,25 @@ print_person: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ print_person::person#2 idx#13 ] ( main:2::print_person:5 [ print_person::person#2 idx#13 ] main:2::print_person:7 [ print_person::person#2 idx#13 ] ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ print_person::person#2 idx#13 ] ( main:2::print_person:5 [ print_person::person#2 idx#13 ] { } main:2::print_person:7 [ print_person::person#2 idx#13 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ idx#13 idx#16 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ idx#13 idx#16 ] -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] main:2::print_person:7 [ print_person::person#2 idx#4 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] { } main:2::print_person:7 [ print_person::person#2 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ idx#4 ] -Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ print_person::i#2 print_person::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#14 idx#5 idx#6 ] -Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] main:2::print_person:7 [ idx#14 ] ) always clobbers reg byte a -Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ print_person::person#2 idx#13 ] ( main:2::print_person:5 [ print_person::person#2 idx#13 ] main:2::print_person:7 [ print_person::person#2 idx#13 ] ) always clobbers reg byte a reg byte y -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] main:2::print_person:7 [ print_person::person#2 idx#4 ] ) always clobbers reg byte a -Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ) always clobbers reg byte a -Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] main:2::print_person:7 [ idx#14 ] ) always clobbers reg byte a -Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ) always clobbers reg byte a -Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] ) always clobbers reg byte a +Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] { } main:2::print_person:7 [ idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + *((byte*)(struct Person*) print_person::person#2)) [ print_person::person#2 idx#13 ] ( main:2::print_person:5 [ print_person::person#2 idx#13 ] { } main:2::print_person:7 [ print_person::person#2 idx#13 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person#2 idx#4 ] ( main:2::print_person:5 [ print_person::person#2 idx#4 ] { } main:2::print_person:7 [ print_person::person#2 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [15] (byte*~) print_person::$1 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$1 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [16] if((byte) 0!=*((byte*~) print_person::$1 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [17] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] { } main:2::print_person:7 [ idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [20] (byte*~) print_person::$2 ← (byte*)(struct Person*) print_person::person#2 + (const byte) OFFSET_STRUCT_PERSON_NAME [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 print_person::$2 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [21] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*~) print_person::$2 + (byte) print_person::i#2) [ print_person::person#2 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person#2 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person#2 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ print_person::person#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ idx#13 idx#16 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ print_person::i#2 print_person::i#1 ] : zp[1]:5 , reg byte x , reg byte y , @@ -520,13 +520,13 @@ Potential registers zp[2]:8 [ print_person::$1 ] : zp[2]:8 , Potential registers zp[2]:10 [ print_person::$2 ] : zp[2]:10 , REGISTER UPLIFT SCOPES -Uplift Scope [print_person] 29.33: zp[1]:5 [ print_person::i#2 print_person::i#1 ] 22: zp[2]:8 [ print_person::$1 ] 22: zp[2]:10 [ print_person::$2 ] 0: zp[2]:2 [ print_person::person#2 ] -Uplift Scope [] 21.5: zp[1]:6 [ idx#14 idx#5 idx#6 ] 4: zp[1]:4 [ idx#13 idx#16 ] 3: zp[1]:7 [ idx#4 ] +Uplift Scope [print_person] 2,669.33: zp[1]:5 [ print_person::i#2 print_person::i#1 ] 2,002: zp[2]:8 [ print_person::$1 ] 2,002: zp[2]:10 [ print_person::$2 ] 0: zp[2]:2 [ print_person::person#2 ] +Uplift Scope [] 1,754: zp[1]:6 [ idx#14 idx#5 idx#6 ] 151.5: zp[1]:7 [ idx#4 ] 134.5: zp[1]:4 [ idx#13 idx#16 ] Uplift Scope [Person] Uplift Scope [main] Uplifting [print_person] best 911 combination reg byte y [ print_person::i#2 print_person::i#1 ] zp[2]:8 [ print_person::$1 ] zp[2]:10 [ print_person::$2 ] zp[2]:2 [ print_person::person#2 ] -Uplifting [] best 821 combination reg byte x [ idx#14 idx#5 idx#6 ] reg byte x [ idx#13 idx#16 ] reg byte x [ idx#4 ] +Uplifting [] best 821 combination reg byte x [ idx#14 idx#5 idx#6 ] reg byte x [ idx#4 ] reg byte x [ idx#13 idx#16 ] Uplifting [Person] best 821 combination Uplifting [main] best 821 combination Allocated (was zp[2]:8) zp[2]:4 [ print_person::$1 ] @@ -722,26 +722,26 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) $11 (byte) idx -(byte) idx#13 reg byte x 3.0 -(byte) idx#14 reg byte x 6.5 -(byte) idx#16 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 reg byte x 106.5 +(byte) idx#14 reg byte x 551.0000000000001 +(byte) idx#16 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return (const struct Person*) persons[] = { { id: (byte) 4, name: (byte*) "jesper" }, { id: (byte) 7, name: (byte*) "henriette" } } (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 zp[2]:4 22.0 -(byte*~) print_person::$2 zp[2]:6 22.0 +(byte*~) print_person::$1 zp[2]:4 2002.0 +(byte*~) print_person::$2 zp[2]:6 2002.0 (label) print_person::@1 (label) print_person::@2 (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 7.333333333333333 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-31.sym b/src/test/ref/struct-ptr-31.sym index c2e92bea7..588635187 100644 --- a/src/test/ref/struct-ptr-31.sym +++ b/src/test/ref/struct-ptr-31.sym @@ -8,26 +8,26 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) SIZEOF_STRUCT_PERSON = (byte) $11 (byte) idx -(byte) idx#13 reg byte x 3.0 -(byte) idx#14 reg byte x 6.5 -(byte) idx#16 reg byte x 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 reg byte x 106.5 +(byte) idx#14 reg byte x 551.0000000000001 +(byte) idx#16 reg byte x 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return (const struct Person*) persons[] = { { id: (byte) 4, name: (byte*) "jesper" }, { id: (byte) 7, name: (byte*) "henriette" } } (void()) print_person((struct Person*) print_person::person) -(byte*~) print_person::$1 zp[2]:4 22.0 -(byte*~) print_person::$2 zp[2]:6 22.0 +(byte*~) print_person::$1 zp[2]:4 2002.0 +(byte*~) print_person::$2 zp[2]:6 2002.0 (label) print_person::@1 (label) print_person::@2 (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 7.333333333333333 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 667.3333333333334 (struct Person*) print_person::person (struct Person*) print_person::person#2 person zp[2]:2 diff --git a/src/test/ref/struct-ptr-32.log b/src/test/ref/struct-ptr-32.log index 87f9cf005..8b876e287 100644 --- a/src/test/ref/struct-ptr-32.log +++ b/src/test/ref/struct-ptr-32.log @@ -338,14 +338,14 @@ main: { persons: .fill $10*2, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(const struct Person*) persons) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct Person*) persons+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON+(byte) 8) ← (byte) 'b' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((word*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_AGE) ← (word) $141 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((word*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_AGE+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON) ← (byte) $7b [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN) ← *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Person*) main::person#1+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((byte*)(const struct Person*) persons) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct Person*) persons+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON+(byte) 8) ← (byte) 'b' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((word*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_AGE) ← (word) $141 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((word*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_AGE+(byte) 1*(const byte) SIZEOF_STRUCT_PERSON) ← (byte) $7b [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN) ← *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Person*) main::person#1+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 8) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Person] diff --git a/src/test/ref/struct-ptr-33.log b/src/test/ref/struct-ptr-33.log index 5996b238d..5e0e99404 100644 --- a/src/test/ref/struct-ptr-33.log +++ b/src/test/ref/struct-ptr-33.log @@ -190,8 +190,8 @@ main: { .word $7b REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Person*) main::person#1+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(const struct Person*) persons+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Person*) main::person#1+(const byte) OFFSET_STRUCT_PERSON_NAME+(byte) 2) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Person] diff --git a/src/test/ref/struct-ptr-34.log b/src/test/ref/struct-ptr-34.log index 21641be76..e7d529389 100644 --- a/src/test/ref/struct-ptr-34.log +++ b/src/test/ref/struct-ptr-34.log @@ -182,14 +182,14 @@ Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) idx#0 = (byte) idx#10 -Alias (byte) idx#1 = (byte) idx#11 (byte) idx#12 (byte) idx#2 -Alias (byte*) print_person::person_name#2 = (byte*) print_person::person_name#3 -Alias (byte) print_person::i#2 = (byte) print_person::i#3 -Alias (byte) idx#14 = (byte) idx#19 (byte) idx#15 -Alias (byte) idx#16 = (byte) idx#7 (byte) idx#8 -Alias (byte) idx#20 = (byte) idx#3 -Alias (byte) idx#17 = (byte) idx#9 +Alias idx#0 = idx#10 +Alias idx#1 = idx#11 idx#12 idx#2 +Alias print_person::person_name#2 = print_person::person_name#3 +Alias print_person::i#2 = print_person::i#3 +Alias idx#14 = idx#19 idx#15 +Alias idx#16 = idx#7 idx#8 +Alias idx#20 = idx#3 +Alias idx#17 = idx#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#18 (byte) idx#20 Identical Phi Values (byte) idx#0 (byte) idx#16 @@ -299,22 +299,22 @@ print_person::@2: scope:[print_person] from print_person::@1 VARIABLE REGISTER WEIGHTS (byte) Person::id (byte) idx -(byte) idx#13 3.0 -(byte) idx#14 9.75 -(byte) idx#16 1.0 -(byte) idx#4 3.0 -(byte) idx#5 4.0 -(byte) idx#6 11.0 +(byte) idx#13 106.5 +(byte) idx#14 826.5 +(byte) idx#16 28.0 +(byte) idx#4 151.5 +(byte) idx#5 202.0 +(byte) idx#6 1001.0 (void()) main() (void()) print_person((byte) print_person::person_id , (byte*) print_person::person_name) (byte) print_person::i -(byte) print_person::i#1 22.0 -(byte) print_person::i#2 11.0 +(byte) print_person::i#1 2002.0 +(byte) print_person::i#2 1001.0 (struct Person) print_person::person (byte) print_person::person_id -(byte) print_person::person_id#2 2.0 +(byte) print_person::person_id#2 101.0 (byte*) print_person::person_name -(byte*) print_person::person_name#4 2.2 +(byte*) print_person::person_name#4 200.2 Initial phi equivalence classes [ print_person::person_id#2 ] @@ -502,25 +502,25 @@ print_person: { .fill 6, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::jesper_name) ← memcpy(*(&(const byte*) $0), byte, (number) $10) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [6] *((const byte*) main::henriette_name) ← memcpy(*(&(const byte*) $1), byte, (number) $10) [ idx#16 ] ( main:2 [ idx#16 ] ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) main::jesper_name) ← memcpy(*(&(const byte*) $0), byte, (number) $10) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) main::henriette_name) ← memcpy(*(&(const byte*) $1), byte, (number) $10) [ idx#16 ] ( main:2 [ idx#16 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#13 idx#16 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ idx#13 idx#16 ] -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + (byte) print_person::person_id#2) [ idx#13 print_person::person_name#4 ] ( main:2::print_person:5 [ idx#13 print_person::person_name#4 ] main:2::print_person:7 [ idx#13 print_person::person_name#4 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person_name#4 idx#4 ] ( main:2::print_person:5 [ print_person::person_name#4 idx#4 ] main:2::print_person:7 [ print_person::person_name#4 idx#4 ] ) always clobbers reg byte a +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + (byte) print_person::person_id#2) [ idx#13 print_person::person_name#4 ] ( main:2::print_person:5 [ idx#13 print_person::person_name#4 ] { } main:2::print_person:7 [ idx#13 print_person::person_name#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person_name#4 idx#4 ] ( main:2::print_person:5 [ print_person::person_name#4 idx#4 ] { } main:2::print_person:7 [ print_person::person_name#4 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ idx#4 ] -Statement [15] if((byte) 0!=*((byte*) print_person::person_name#4 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] ) always clobbers reg byte a +Statement [15] if((byte) 0!=*((byte*) print_person::person_name#4 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_person::i#2 print_person::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ idx#14 idx#5 idx#6 ] -Statement [16] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] main:2::print_person:7 [ idx#14 ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*) print_person::person_name#4 + (byte) print_person::i#2) [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [4] *((const byte*) main::jesper_name) ← memcpy(*(&(const byte*) $0), byte, (number) $10) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y -Statement [6] *((const byte*) main::henriette_name) ← memcpy(*(&(const byte*) $1), byte, (number) $10) [ idx#16 ] ( main:2 [ idx#16 ] ) always clobbers reg byte a reg byte y -Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + (byte) print_person::person_id#2) [ idx#13 print_person::person_name#4 ] ( main:2::print_person:5 [ idx#13 print_person::person_name#4 ] main:2::print_person:7 [ idx#13 print_person::person_name#4 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person_name#4 idx#4 ] ( main:2::print_person:5 [ print_person::person_name#4 idx#4 ] main:2::print_person:7 [ print_person::person_name#4 idx#4 ] ) always clobbers reg byte a -Statement [15] if((byte) 0!=*((byte*) print_person::person_name#4 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] ) always clobbers reg byte a -Statement [16] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] main:2::print_person:7 [ idx#14 ] ) always clobbers reg byte a -Statement [19] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*) print_person::person_name#4 + (byte) print_person::i#2) [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] { } main:2::print_person:7 [ idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*) print_person::person_name#4 + (byte) print_person::i#2) [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [4] *((const byte*) main::jesper_name) ← memcpy(*(&(const byte*) $0), byte, (number) $10) [ ] ( main:2 [ ] { } ) always clobbers reg byte a reg byte y +Statement [6] *((const byte*) main::henriette_name) ← memcpy(*(&(const byte*) $1), byte, (number) $10) [ idx#16 ] ( main:2 [ idx#16 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a reg byte y +Statement [10] *((const byte*) SCREEN + (byte) idx#13) ← *((const byte*) DIGIT + (byte) print_person::person_id#2) [ idx#13 print_person::person_name#4 ] ( main:2::print_person:5 [ idx#13 print_person::person_name#4 ] { } main:2::print_person:7 [ idx#13 print_person::person_name#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#4) ← (byte) ' ' [ print_person::person_name#4 idx#4 ] ( main:2::print_person:5 [ print_person::person_name#4 idx#4 ] { } main:2::print_person:7 [ print_person::person_name#4 idx#4 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [15] if((byte) 0!=*((byte*) print_person::person_name#4 + (byte) print_person::i#2)) goto print_person::@2 [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [16] *((const byte*) SCREEN + (byte) idx#14) ← (byte) ' ' [ idx#14 ] ( main:2::print_person:5 [ idx#14 ] { } main:2::print_person:7 [ idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a +Statement [19] *((const byte*) SCREEN + (byte) idx#14) ← *((byte*) print_person::person_name#4 + (byte) print_person::i#2) [ print_person::person_name#4 print_person::i#2 idx#14 ] ( main:2::print_person:5 [ print_person::person_name#4 print_person::i#2 idx#14 ] { } main:2::print_person:7 [ print_person::person_name#4 print_person::i#2 idx#14 ] { { idx#13 = idx#16 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ print_person::person_id#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ idx#13 idx#16 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ print_person::person_name#4 ] : zp[2]:4 , @@ -529,13 +529,13 @@ Potential registers zp[1]:7 [ idx#14 idx#5 idx#6 ] : zp[1]:7 , reg byte x , reg Potential registers zp[1]:8 [ idx#4 ] : zp[1]:8 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [print_person] 33: zp[1]:6 [ print_person::i#2 print_person::i#1 ] 2.2: zp[2]:4 [ print_person::person_name#4 ] 2: zp[1]:2 [ print_person::person_id#2 ] -Uplift Scope [] 24.75: zp[1]:7 [ idx#14 idx#5 idx#6 ] 4: zp[1]:3 [ idx#13 idx#16 ] 3: zp[1]:8 [ idx#4 ] +Uplift Scope [print_person] 3,003: zp[1]:6 [ print_person::i#2 print_person::i#1 ] 200.2: zp[2]:4 [ print_person::person_name#4 ] 101: zp[1]:2 [ print_person::person_id#2 ] +Uplift Scope [] 2,029.5: zp[1]:7 [ idx#14 idx#5 idx#6 ] 151.5: zp[1]:8 [ idx#4 ] 134.5: zp[1]:3 [ idx#13 idx#16 ] Uplift Scope [Person] Uplift Scope [main] Uplifting [print_person] best 577 combination reg byte y [ print_person::i#2 print_person::i#1 ] zp[2]:4 [ print_person::person_name#4 ] reg byte x [ print_person::person_id#2 ] -Uplifting [] best 499 combination reg byte x [ idx#14 idx#5 idx#6 ] zp[1]:3 [ idx#13 idx#16 ] reg byte x [ idx#4 ] +Uplifting [] best 499 combination reg byte x [ idx#14 idx#5 idx#6 ] reg byte x [ idx#4 ] zp[1]:3 [ idx#13 idx#16 ] Uplifting [Person] best 499 combination Uplifting [main] best 499 combination Attempting to uplift remaining variables inzp[1]:3 [ idx#13 idx#16 ] @@ -729,12 +729,12 @@ FINAL SYMBOL TABLE (const byte*) Person::name[(number) $10] = { fill( $10, 0) } (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#13 idx zp[1]:2 3.0 -(byte) idx#14 reg byte x 9.75 -(byte) idx#16 idx zp[1]:2 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 idx zp[1]:2 106.5 +(byte) idx#14 reg byte x 826.5 +(byte) idx#16 idx zp[1]:2 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return @@ -748,13 +748,13 @@ FINAL SYMBOL TABLE (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 11.0 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 1001.0 (struct Person) print_person::person (byte) print_person::person_id -(byte) print_person::person_id#2 reg byte x 2.0 +(byte) print_person::person_id#2 reg byte x 101.0 (byte*) print_person::person_name -(byte*) print_person::person_name#4 person_name zp[2]:3 2.2 +(byte*) print_person::person_name#4 person_name zp[2]:3 200.2 reg byte x [ print_person::person_id#2 ] zp[1]:2 [ idx#13 idx#16 ] diff --git a/src/test/ref/struct-ptr-34.sym b/src/test/ref/struct-ptr-34.sym index 53e2396f2..f2a7d0c00 100644 --- a/src/test/ref/struct-ptr-34.sym +++ b/src/test/ref/struct-ptr-34.sym @@ -8,12 +8,12 @@ (const byte*) Person::name[(number) $10] = { fill( $10, 0) } (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#13 idx zp[1]:2 3.0 -(byte) idx#14 reg byte x 9.75 -(byte) idx#16 idx zp[1]:2 1.0 -(byte) idx#4 reg byte x 3.0 -(byte) idx#5 reg byte x 4.0 -(byte) idx#6 reg byte x 11.0 +(byte) idx#13 idx zp[1]:2 106.5 +(byte) idx#14 reg byte x 826.5 +(byte) idx#16 idx zp[1]:2 28.0 +(byte) idx#4 reg byte x 151.5 +(byte) idx#5 reg byte x 202.0 +(byte) idx#6 reg byte x 1001.0 (void()) main() (label) main::@1 (label) main::@return @@ -27,13 +27,13 @@ (label) print_person::@3 (label) print_person::@return (byte) print_person::i -(byte) print_person::i#1 reg byte y 22.0 -(byte) print_person::i#2 reg byte y 11.0 +(byte) print_person::i#1 reg byte y 2002.0 +(byte) print_person::i#2 reg byte y 1001.0 (struct Person) print_person::person (byte) print_person::person_id -(byte) print_person::person_id#2 reg byte x 2.0 +(byte) print_person::person_id#2 reg byte x 101.0 (byte*) print_person::person_name -(byte*) print_person::person_name#4 person_name zp[2]:3 2.2 +(byte*) print_person::person_name#4 person_name zp[2]:3 200.2 reg byte x [ print_person::person_id#2 ] zp[1]:2 [ idx#13 idx#16 ] diff --git a/src/test/ref/struct-ptr-4.log b/src/test/ref/struct-ptr-4.log index 96b01d658..f1a7467c3 100644 --- a/src/test/ref/struct-ptr-4.log +++ b/src/test/ref/struct-ptr-4.log @@ -242,23 +242,23 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.8 +(byte) main::i#1 151.5 +(byte) main::i#2 80.8 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 2.75 +(byte) main::i1#1 151.5 +(byte) main::i1#2 25.25 (byte) main::idx -(byte) main::idx#1 16.5 -(byte) main::idx#2 16.5 -(byte) main::idx#3 5.5 -(byte) main::idx#4 16.5 +(byte) main::idx#1 151.5 +(byte) main::idx#2 151.5 +(byte) main::idx#3 50.5 +(byte) main::idx#4 151.5 (struct Point*) main::points -(struct Point*) main::points#1 7.333333333333333 -(struct Point*) main::points#3 7.333333333333333 -(struct Point*) main::points#4 5.5 -(struct Point*) main::points#5 3.142857142857143 +(struct Point*) main::points#1 67.33333333333333 +(struct Point*) main::points#3 67.33333333333333 +(struct Point*) main::points#4 50.5 +(struct Point*) main::points#5 28.857142857142858 Initial phi equivalence classes [ main::points#4 main::points#1 ] @@ -444,30 +444,30 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*)(struct Point*) main::points#4) ← (byte) main::i#2 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] ) always clobbers reg byte y +Statement [6] *((byte*)(struct Point*) main::points#4) ← (byte) main::i#2 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [8] *((byte*)(struct Point*) main::points#4 + (const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] ) always clobbers reg byte y -Statement [9] (struct Point*) main::points#1 ← (struct Point*) main::points#4 + (const byte) SIZEOF_STRUCT_POINT [ main::i#2 main::points#1 ] ( main:2 [ main::i#2 main::points#1 ] ) always clobbers reg byte a +Statement [8] *((byte*)(struct Point*) main::points#4 + (const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] { } ) always clobbers reg byte y +Statement [9] (struct Point*) main::points#1 ← (struct Point*) main::points#4 + (const byte) SIZEOF_STRUCT_POINT [ main::i#2 main::points#1 ] ( main:2 [ main::i#2 main::points#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [13] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(struct Point*) main::points#5) [ main::points#5 main::idx#4 main::i1#2 ] ( main:2 [ main::points#5 main::idx#4 main::i1#2 ] ) always clobbers reg byte a reg byte y +Statement [13] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(struct Point*) main::points#5) [ main::points#5 main::idx#4 main::i1#2 ] ( main:2 [ main::points#5 main::idx#4 main::i1#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::idx#4 main::idx#3 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::idx#4 main::idx#3 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::i1#2 main::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::i1#2 main::i1#1 ] -Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(struct Point*) main::points#5 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::points#5 main::i1#2 main::idx#1 ] ( main:2 [ main::points#5 main::i1#2 main::idx#1 ] ) always clobbers reg byte a reg byte y +Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(struct Point*) main::points#5 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::points#5 main::i1#2 main::idx#1 ] ( main:2 [ main::points#5 main::i1#2 main::idx#1 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::idx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::idx#1 ] -Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::points#5 main::i1#2 main::idx#2 ] ( main:2 [ main::points#5 main::i1#2 main::idx#2 ] ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::points#5 main::i1#2 main::idx#2 ] ( main:2 [ main::points#5 main::i1#2 main::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ main::idx#2 ] -Statement [19] (struct Point*) main::points#3 ← (struct Point*) main::points#5 + (const byte) SIZEOF_STRUCT_POINT [ main::i1#2 main::points#3 main::idx#3 ] ( main:2 [ main::i1#2 main::points#3 main::idx#3 ] ) always clobbers reg byte a -Statement [6] *((byte*)(struct Point*) main::points#4) ← (byte) main::i#2 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$0 ← (byte) main::i#2 + (byte) 5 [ main::points#4 main::i#2 main::$0 ] ( main:2 [ main::points#4 main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [8] *((byte*)(struct Point*) main::points#4 + (const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] ) always clobbers reg byte y -Statement [9] (struct Point*) main::points#1 ← (struct Point*) main::points#4 + (const byte) SIZEOF_STRUCT_POINT [ main::i#2 main::points#1 ] ( main:2 [ main::i#2 main::points#1 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(struct Point*) main::points#5) [ main::points#5 main::idx#4 main::i1#2 ] ( main:2 [ main::points#5 main::idx#4 main::i1#2 ] ) always clobbers reg byte a reg byte y -Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(struct Point*) main::points#5 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::points#5 main::i1#2 main::idx#1 ] ( main:2 [ main::points#5 main::i1#2 main::idx#1 ] ) always clobbers reg byte a reg byte y -Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::points#5 main::i1#2 main::idx#2 ] ( main:2 [ main::points#5 main::i1#2 main::idx#2 ] ) always clobbers reg byte a -Statement [19] (struct Point*) main::points#3 ← (struct Point*) main::points#5 + (const byte) SIZEOF_STRUCT_POINT [ main::i1#2 main::points#3 main::idx#3 ] ( main:2 [ main::i1#2 main::points#3 main::idx#3 ] ) always clobbers reg byte a +Statement [19] (struct Point*) main::points#3 ← (struct Point*) main::points#5 + (const byte) SIZEOF_STRUCT_POINT [ main::i1#2 main::points#3 main::idx#3 ] ( main:2 [ main::i1#2 main::points#3 main::idx#3 ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(struct Point*) main::points#4) ← (byte) main::i#2 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$0 ← (byte) main::i#2 + (byte) 5 [ main::points#4 main::i#2 main::$0 ] ( main:2 [ main::points#4 main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(struct Point*) main::points#4 + (const byte) OFFSET_STRUCT_POINT_Y) ← (byte~) main::$0 [ main::points#4 main::i#2 ] ( main:2 [ main::points#4 main::i#2 ] { } ) always clobbers reg byte y +Statement [9] (struct Point*) main::points#1 ← (struct Point*) main::points#4 + (const byte) SIZEOF_STRUCT_POINT [ main::i#2 main::points#1 ] ( main:2 [ main::i#2 main::points#1 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(struct Point*) main::points#5) [ main::points#5 main::idx#4 main::i1#2 ] ( main:2 [ main::points#5 main::idx#4 main::i1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(struct Point*) main::points#5 + (const byte) OFFSET_STRUCT_POINT_Y) [ main::points#5 main::i1#2 main::idx#1 ] ( main:2 [ main::points#5 main::i1#2 main::idx#1 ] { } ) always clobbers reg byte a reg byte y +Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::points#5 main::i1#2 main::idx#2 ] ( main:2 [ main::points#5 main::i1#2 main::idx#2 ] { } ) always clobbers reg byte a +Statement [19] (struct Point*) main::points#3 ← (struct Point*) main::points#5 + (const byte) SIZEOF_STRUCT_POINT [ main::i1#2 main::points#3 main::idx#3 ] ( main:2 [ main::i1#2 main::points#3 main::idx#3 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::points#4 main::points#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , Potential registers zp[2]:5 [ main::points#5 main::points#3 ] : zp[2]:5 , @@ -478,7 +478,7 @@ Potential registers zp[1]:10 [ main::idx#1 ] : zp[1]:10 , reg byte x , Potential registers zp[1]:11 [ main::idx#2 ] : zp[1]:11 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.3: zp[1]:4 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::idx#4 main::idx#3 ] 22: zp[1]:9 [ main::$0 ] 19.25: zp[1]:8 [ main::i1#2 main::i1#1 ] 16.5: zp[1]:10 [ main::idx#1 ] 16.5: zp[1]:11 [ main::idx#2 ] 12.83: zp[2]:2 [ main::points#4 main::points#1 ] 10.48: zp[2]:5 [ main::points#5 main::points#3 ] +Uplift Scope [main] 232.3: zp[1]:4 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::idx#4 main::idx#3 ] 202: zp[1]:9 [ main::$0 ] 176.75: zp[1]:8 [ main::i1#2 main::i1#1 ] 151.5: zp[1]:10 [ main::idx#1 ] 151.5: zp[1]:11 [ main::idx#2 ] 117.83: zp[2]:2 [ main::points#4 main::points#1 ] 96.19: zp[2]:5 [ main::points#5 main::points#3 ] Uplift Scope [Point] Uplift Scope [] @@ -671,27 +671,27 @@ FINAL SYMBOL TABLE (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.8 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 80.8 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:6 16.5 -(byte) main::i1#2 i1 zp[1]:6 2.75 +(byte) main::i1#1 i1 zp[1]:6 151.5 +(byte) main::i1#2 i1 zp[1]:6 25.25 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 16.5 -(byte) main::idx#3 reg byte x 5.5 -(byte) main::idx#4 reg byte x 16.5 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 151.5 +(byte) main::idx#3 reg byte x 50.5 +(byte) main::idx#4 reg byte x 151.5 (struct Point*) main::points -(struct Point*) main::points#1 points zp[2]:2 7.333333333333333 -(struct Point*) main::points#3 points_1 zp[2]:4 7.333333333333333 -(struct Point*) main::points#4 points zp[2]:2 5.5 -(struct Point*) main::points#5 points_1 zp[2]:4 3.142857142857143 +(struct Point*) main::points#1 points zp[2]:2 67.33333333333333 +(struct Point*) main::points#3 points_1 zp[2]:4 67.33333333333333 +(struct Point*) main::points#4 points zp[2]:2 50.5 +(struct Point*) main::points#5 points_1 zp[2]:4 28.857142857142858 zp[2]:2 [ main::points#4 main::points#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-4.sym b/src/test/ref/struct-ptr-4.sym index f507eab64..616597e1b 100644 --- a/src/test/ref/struct-ptr-4.sym +++ b/src/test/ref/struct-ptr-4.sym @@ -7,27 +7,27 @@ (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.8 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 80.8 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:6 16.5 -(byte) main::i1#2 i1 zp[1]:6 2.75 +(byte) main::i1#1 i1 zp[1]:6 151.5 +(byte) main::i1#2 i1 zp[1]:6 25.25 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 16.5 -(byte) main::idx#3 reg byte x 5.5 -(byte) main::idx#4 reg byte x 16.5 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 151.5 +(byte) main::idx#3 reg byte x 50.5 +(byte) main::idx#4 reg byte x 151.5 (struct Point*) main::points -(struct Point*) main::points#1 points zp[2]:2 7.333333333333333 -(struct Point*) main::points#3 points_1 zp[2]:4 7.333333333333333 -(struct Point*) main::points#4 points zp[2]:2 5.5 -(struct Point*) main::points#5 points_1 zp[2]:4 3.142857142857143 +(struct Point*) main::points#1 points zp[2]:2 67.33333333333333 +(struct Point*) main::points#3 points_1 zp[2]:4 67.33333333333333 +(struct Point*) main::points#4 points zp[2]:2 50.5 +(struct Point*) main::points#5 points_1 zp[2]:4 28.857142857142858 zp[2]:2 [ main::points#4 main::points#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-5.log b/src/test/ref/struct-ptr-5.log index a0ce37cec..da1451415 100644 --- a/src/test/ref/struct-ptr-5.log +++ b/src/test/ref/struct-ptr-5.log @@ -166,10 +166,10 @@ Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$5 ← (byte) 1 * (const byte) SIZEOF_STRUCT_ENTRY Inferred type updated to byte in (unumber~) main::$6 ← (byte) 2 * (const byte) SIZEOF_STRUCT_ENTRY -Alias (struct Entry*) main::entry1#0 = (struct Entry*~) main::$0 -Alias (struct Entry*) main::entry2#0 = (struct Entry*~) main::$1 -Alias (struct Entry*) main::entry#2 = (struct Entry*) main::entry#3 -Alias (byte) main::idx#5 = (byte) main::idx#6 +Alias main::entry1#0 = main::$0 +Alias main::entry2#0 = main::$1 +Alias main::entry#2 = main::entry#3 +Alias main::idx#5 = main::idx#6 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$17 [21] if((struct Entry*)(word) 0!=(struct Entry*) main::entry#2) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -304,21 +304,21 @@ VARIABLE REGISTER WEIGHTS (struct Entry*) Entry::next (byte) Entry::value (void()) main() -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(byte~) main::$4 202.0 (struct Entry*) main::entry -(struct Entry*) main::entry#1 22.0 -(struct Entry*) main::entry#2 1.6923076923076923 +(struct Entry*) main::entry#1 202.0 +(struct Entry*) main::entry#2 15.538461538461538 (struct Entry*) main::entry0 (struct Entry*) main::entry1 (struct Entry*) main::entry2 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 11.0 -(byte) main::idx#3 16.5 -(byte) main::idx#4 11.0 -(byte) main::idx#5 8.25 +(byte) main::idx#1 101.0 +(byte) main::idx#2 101.0 +(byte) main::idx#3 151.5 +(byte) main::idx#4 101.0 +(byte) main::idx#5 75.75 Initial phi equivalence classes [ main::entry#2 main::entry#1 ] @@ -502,37 +502,37 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((struct Entry**)(const struct Entry*) ENTRIES+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct Entry*) ENTRIES) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((struct Entry**)(const struct Entry*) main::entry2#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Entry*) main::entry2#0) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((struct Entry**)(const struct Entry*) main::entry1#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (struct Entry*) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Entry*) main::entry1#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] if((struct Entry*)(word) 0!=(struct Entry*) main::entry#2) goto main::@2 [ main::entry#2 main::idx#5 ] ( main:2 [ main::entry#2 main::idx#5 ] ) always clobbers reg byte a +Statement [4] *((struct Entry**)(const struct Entry*) ENTRIES+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry2#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct Entry*) ENTRIES) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((struct Entry**)(const struct Entry*) main::entry2#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry1#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Entry*) main::entry2#0) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((struct Entry**)(const struct Entry*) main::entry1#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (struct Entry*) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Entry*) main::entry1#0) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if((struct Entry*)(word) 0!=(struct Entry*) main::entry#2) goto main::@2 [ main::entry#2 main::idx#5 ] ( main:2 [ main::entry#2 main::idx#5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#5 main::idx#4 ] -Statement [13] (byte~) main::$2 ← (byte) '0' + *((byte*)(struct Entry*) main::entry#2) [ main::entry#2 main::idx#5 main::$2 ] ( main:2 [ main::entry#2 main::idx#5 main::$2 ] ) always clobbers reg byte a reg byte y +Statement [13] (byte~) main::$2 ← (byte) '0' + *((byte*)(struct Entry*) main::entry#2) [ main::entry#2 main::idx#5 main::$2 ] ( main:2 [ main::entry#2 main::idx#5 main::$2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::idx#5 main::idx#4 ] -Statement [16] (byte~) main::$3 ← < *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#1 main::$3 ] ( main:2 [ main::entry#2 main::idx#1 main::$3 ] ) always clobbers reg byte a reg byte y +Statement [16] (byte~) main::$3 ← < *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#1 main::$3 ] ( main:2 [ main::entry#2 main::idx#1 main::$3 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::idx#1 ] -Statement [19] (byte~) main::$4 ← > *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#2 main::$4 ] ( main:2 [ main::entry#2 main::idx#2 main::$4 ] ) always clobbers reg byte a reg byte y +Statement [19] (byte~) main::$4 ← > *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#2 main::$4 ] ( main:2 [ main::entry#2 main::idx#2 main::$4 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::idx#2 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::idx#2 ] -Statement [22] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) ' ' [ main::entry#2 main::idx#3 ] ( main:2 [ main::entry#2 main::idx#3 ] ) always clobbers reg byte a +Statement [22] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) ' ' [ main::entry#2 main::idx#3 ] ( main:2 [ main::entry#2 main::idx#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::idx#3 ] -Statement [24] (struct Entry*) main::entry#1 ← *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#1 main::idx#4 ] ( main:2 [ main::entry#1 main::idx#4 ] ) always clobbers reg byte a reg byte y -Statement [4] *((struct Entry**)(const struct Entry*) ENTRIES+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct Entry*) ENTRIES) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((struct Entry**)(const struct Entry*) main::entry2#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Entry*) main::entry2#0) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((struct Entry**)(const struct Entry*) main::entry1#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (struct Entry*) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((byte*)(const struct Entry*) main::entry1#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] if((struct Entry*)(word) 0!=(struct Entry*) main::entry#2) goto main::@2 [ main::entry#2 main::idx#5 ] ( main:2 [ main::entry#2 main::idx#5 ] ) always clobbers reg byte a -Statement [13] (byte~) main::$2 ← (byte) '0' + *((byte*)(struct Entry*) main::entry#2) [ main::entry#2 main::idx#5 main::$2 ] ( main:2 [ main::entry#2 main::idx#5 main::$2 ] ) always clobbers reg byte a reg byte y -Statement [16] (byte~) main::$3 ← < *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#1 main::$3 ] ( main:2 [ main::entry#2 main::idx#1 main::$3 ] ) always clobbers reg byte a reg byte y -Statement [19] (byte~) main::$4 ← > *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#2 main::$4 ] ( main:2 [ main::entry#2 main::idx#2 main::$4 ] ) always clobbers reg byte a reg byte y -Statement [22] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) ' ' [ main::entry#2 main::idx#3 ] ( main:2 [ main::entry#2 main::idx#3 ] ) always clobbers reg byte a -Statement [24] (struct Entry*) main::entry#1 ← *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#1 main::idx#4 ] ( main:2 [ main::entry#1 main::idx#4 ] ) always clobbers reg byte a reg byte y +Statement [24] (struct Entry*) main::entry#1 ← *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#1 main::idx#4 ] ( main:2 [ main::entry#1 main::idx#4 ] { } ) always clobbers reg byte a reg byte y +Statement [4] *((struct Entry**)(const struct Entry*) ENTRIES+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry2#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct Entry*) ENTRIES) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((struct Entry**)(const struct Entry*) main::entry2#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (const struct Entry*) main::entry1#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Entry*) main::entry2#0) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((struct Entry**)(const struct Entry*) main::entry1#0+(const byte) OFFSET_STRUCT_ENTRY_NEXT) ← (struct Entry*) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Entry*) main::entry1#0) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] if((struct Entry*)(word) 0!=(struct Entry*) main::entry#2) goto main::@2 [ main::entry#2 main::idx#5 ] ( main:2 [ main::entry#2 main::idx#5 ] { } ) always clobbers reg byte a +Statement [13] (byte~) main::$2 ← (byte) '0' + *((byte*)(struct Entry*) main::entry#2) [ main::entry#2 main::idx#5 main::$2 ] ( main:2 [ main::entry#2 main::idx#5 main::$2 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (byte~) main::$3 ← < *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#1 main::$3 ] ( main:2 [ main::entry#2 main::idx#1 main::$3 ] { } ) always clobbers reg byte a reg byte y +Statement [19] (byte~) main::$4 ← > *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#2 main::idx#2 main::$4 ] ( main:2 [ main::entry#2 main::idx#2 main::$4 ] { } ) always clobbers reg byte a reg byte y +Statement [22] *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte) ' ' [ main::entry#2 main::idx#3 ] ( main:2 [ main::entry#2 main::idx#3 ] { } ) always clobbers reg byte a +Statement [24] (struct Entry*) main::entry#1 ← *((struct Entry**)(struct Entry*) main::entry#2 + (const byte) OFFSET_STRUCT_ENTRY_NEXT) [ main::entry#1 main::idx#4 ] ( main:2 [ main::entry#1 main::idx#4 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::entry#2 main::entry#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::idx#5 main::idx#4 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -543,7 +543,7 @@ Potential registers zp[1]:9 [ main::$4 ] : zp[1]:9 , reg byte a , reg byte x , r Potential registers zp[1]:10 [ main::idx#3 ] : zp[1]:10 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.69: zp[2]:2 [ main::entry#2 main::entry#1 ] 22: zp[1]:5 [ main::$2 ] 22: zp[1]:7 [ main::$3 ] 22: zp[1]:9 [ main::$4 ] 19.25: zp[1]:4 [ main::idx#5 main::idx#4 ] 16.5: zp[1]:10 [ main::idx#3 ] 11: zp[1]:6 [ main::idx#1 ] 11: zp[1]:8 [ main::idx#2 ] +Uplift Scope [main] 217.54: zp[2]:2 [ main::entry#2 main::entry#1 ] 202: zp[1]:5 [ main::$2 ] 202: zp[1]:7 [ main::$3 ] 202: zp[1]:9 [ main::$4 ] 176.75: zp[1]:4 [ main::idx#5 main::idx#4 ] 151.5: zp[1]:10 [ main::idx#3 ] 101: zp[1]:6 [ main::idx#1 ] 101: zp[1]:8 [ main::idx#2 ] Uplift Scope [Entry] Uplift Scope [] @@ -718,27 +718,27 @@ FINAL SYMBOL TABLE (const byte) OFFSET_STRUCT_ENTRY_NEXT = (byte) 1 (const byte) SIZEOF_STRUCT_ENTRY = (byte) 3 (void()) main() -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (struct Entry*) main::entry -(struct Entry*) main::entry#1 entry zp[2]:2 22.0 -(struct Entry*) main::entry#2 entry zp[2]:2 1.6923076923076923 +(struct Entry*) main::entry#1 entry zp[2]:2 202.0 +(struct Entry*) main::entry#2 entry zp[2]:2 15.538461538461538 (struct Entry*) main::entry0 (struct Entry*) main::entry1 (const struct Entry*) main::entry1#0 entry1 = (const struct Entry*) ENTRIES+(byte) 1*(const byte) SIZEOF_STRUCT_ENTRY (struct Entry*) main::entry2 (const struct Entry*) main::entry2#0 entry2 = (const struct Entry*) ENTRIES+(byte) 2*(const byte) SIZEOF_STRUCT_ENTRY (byte) main::idx -(byte) main::idx#1 reg byte x 11.0 -(byte) main::idx#2 reg byte x 11.0 -(byte) main::idx#3 reg byte x 16.5 -(byte) main::idx#4 reg byte x 11.0 -(byte) main::idx#5 reg byte x 8.25 +(byte) main::idx#1 reg byte x 101.0 +(byte) main::idx#2 reg byte x 101.0 +(byte) main::idx#3 reg byte x 151.5 +(byte) main::idx#4 reg byte x 101.0 +(byte) main::idx#5 reg byte x 75.75 zp[2]:2 [ main::entry#2 main::entry#1 ] reg byte x [ main::idx#5 main::idx#4 ] diff --git a/src/test/ref/struct-ptr-5.sym b/src/test/ref/struct-ptr-5.sym index b7ff1cb33..f76b7af85 100644 --- a/src/test/ref/struct-ptr-5.sym +++ b/src/test/ref/struct-ptr-5.sym @@ -7,27 +7,27 @@ (const byte) OFFSET_STRUCT_ENTRY_NEXT = (byte) 1 (const byte) SIZEOF_STRUCT_ENTRY = (byte) 3 (void()) main() -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (struct Entry*) main::entry -(struct Entry*) main::entry#1 entry zp[2]:2 22.0 -(struct Entry*) main::entry#2 entry zp[2]:2 1.6923076923076923 +(struct Entry*) main::entry#1 entry zp[2]:2 202.0 +(struct Entry*) main::entry#2 entry zp[2]:2 15.538461538461538 (struct Entry*) main::entry0 (struct Entry*) main::entry1 (const struct Entry*) main::entry1#0 entry1 = (const struct Entry*) ENTRIES+(byte) 1*(const byte) SIZEOF_STRUCT_ENTRY (struct Entry*) main::entry2 (const struct Entry*) main::entry2#0 entry2 = (const struct Entry*) ENTRIES+(byte) 2*(const byte) SIZEOF_STRUCT_ENTRY (byte) main::idx -(byte) main::idx#1 reg byte x 11.0 -(byte) main::idx#2 reg byte x 11.0 -(byte) main::idx#3 reg byte x 16.5 -(byte) main::idx#4 reg byte x 11.0 -(byte) main::idx#5 reg byte x 8.25 +(byte) main::idx#1 reg byte x 101.0 +(byte) main::idx#2 reg byte x 101.0 +(byte) main::idx#3 reg byte x 151.5 +(byte) main::idx#4 reg byte x 101.0 +(byte) main::idx#5 reg byte x 75.75 zp[2]:2 [ main::entry#2 main::entry#1 ] reg byte x [ main::idx#5 main::idx#4 ] diff --git a/src/test/ref/struct-ptr-6.log b/src/test/ref/struct-ptr-6.log index cb423b796..be69052c5 100644 --- a/src/test/ref/struct-ptr-6.log +++ b/src/test/ref/struct-ptr-6.log @@ -81,9 +81,9 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (struct Point*) points#1 = (struct Point*) points#5 (struct Point*) points#2 -Alias (struct Point*) points#0 = (struct Point*) points#7 -Alias (struct Point*) points#3 = (struct Point*) points#6 +Alias points#1 = points#5 points#2 +Alias points#0 = points#7 +Alias points#3 = points#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (struct Point*) points#4 (struct Point*) points#0 Identical Phi Values (struct Point*) points#3 (struct Point*) points#1 @@ -223,10 +223,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(struct Point*) 4096) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(struct Point*) 4096+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← *((byte*)(struct Point*) 4096) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(struct Point*) 4096+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(struct Point*) 4096+(const byte) SIZEOF_STRUCT_POINT+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-ptr-7.log b/src/test/ref/struct-ptr-7.log index 9ceda12b6..d5de761d5 100644 --- a/src/test/ref/struct-ptr-7.log +++ b/src/test/ref/struct-ptr-7.log @@ -307,14 +307,14 @@ main: { points: .fill 2*2, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(const struct Point*) points) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((byte*)(const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) points) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN+(byte) 4) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((byte*)(const struct Point*) points) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((byte*)(const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN) ← *((byte*)(const struct Point*) points) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) 1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN+(byte) 3) ← *((byte*)(const struct Point*) points+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN+(byte) 4) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y+(byte) 1*(const byte) SIZEOF_STRUCT_POINT) [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [Point] diff --git a/src/test/ref/struct-ptr-8.log b/src/test/ref/struct-ptr-8.log index d78c51c52..298dee702 100644 --- a/src/test/ref/struct-ptr-8.log +++ b/src/test/ref/struct-ptr-8.log @@ -139,8 +139,8 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$5 = (byte~) main::$4 -Alias (byte~) main::$7 = (byte~) main::$6 +Alias main::$5 = main::$4 +Alias main::$7 = main::$6 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [2] (byte~) main::$5 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT Rewriting multiplication to use shift [9] (byte~) main::$7 ← (byte) main::i1#2 * (const byte) SIZEOF_STRUCT_POINT @@ -227,21 +227,21 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 11.0 -(byte~) main::$1 22.0 -(byte~) main::$5 11.0 -(byte~) main::$7 11.0 +(byte~) main::$0 101.0 +(byte~) main::$1 202.0 +(byte~) main::$5 101.0 +(byte~) main::$7 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 9.166666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 4.125 +(byte) main::i1#1 151.5 +(byte) main::i1#2 37.875 (byte) main::idx -(byte) main::idx#1 16.5 -(byte) main::idx#2 16.5 -(byte) main::idx#3 7.333333333333333 -(byte) main::idx#4 11.0 +(byte) main::idx#1 151.5 +(byte) main::idx#2 151.5 +(byte) main::idx#3 67.33333333333333 +(byte) main::idx#4 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -411,29 +411,29 @@ main: { points: .fill 2*2, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$5 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$0 ] -Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$5) ← (byte~) main::$0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] ) always clobbers reg byte a +Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$5) ← (byte~) main::$0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$5 ] -Statement [9] (byte~) main::$1 ← (byte) 3 + (byte) main::i#2 [ main::i#2 main::$5 main::$1 ] ( main:2 [ main::i#2 main::$5 main::$1 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$7 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) 3 + (byte) main::i#2 [ main::i#2 main::$5 main::$1 ] ( main:2 [ main::i#2 main::$5 main::$1 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$7 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#4 main::idx#3 ] -Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$7) [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$7) [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$7 ] -Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$7) [ main::i1#2 main::idx#1 ] ( main:2 [ main::i1#2 main::idx#1 ] ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$7) [ main::i1#2 main::idx#1 ] ( main:2 [ main::i1#2 main::idx#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::idx#1 ] -Statement [19] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::i1#2 main::idx#2 ] ( main:2 [ main::i1#2 main::idx#2 ] ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::i1#2 main::idx#2 ] ( main:2 [ main::i1#2 main::idx#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::idx#2 ] -Statement [6] (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$5 ] ) always clobbers reg byte a -Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$5) ← (byte~) main::$0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$1 ← (byte) 3 + (byte) main::i#2 [ main::i#2 main::$5 main::$1 ] ( main:2 [ main::i#2 main::$5 main::$1 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$7 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$7) [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$7) [ main::i1#2 main::idx#1 ] ( main:2 [ main::i1#2 main::idx#1 ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::i1#2 main::idx#2 ] ( main:2 [ main::i1#2 main::idx#2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$0 main::$5 ] ( main:2 [ main::i#2 main::$0 main::$5 ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(const struct Point*) points + (byte~) main::$5) ← (byte~) main::$0 [ main::i#2 main::$5 ] ( main:2 [ main::i#2 main::$5 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) 3 + (byte) main::i#2 [ main::i#2 main::$5 main::$1 ] ( main:2 [ main::i#2 main::$5 main::$1 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$7 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*)(const struct Point*) points + (byte~) main::$7) [ main::i1#2 main::idx#4 main::$7 ] ( main:2 [ main::i1#2 main::idx#4 main::$7 ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$7) [ main::i1#2 main::idx#1 ] ( main:2 [ main::i1#2 main::idx#1 ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte) ' ' [ main::i1#2 main::idx#2 ] ( main:2 [ main::i1#2 main::idx#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::idx#4 main::idx#3 ] : zp[1]:4 , reg byte x , reg byte y , @@ -445,7 +445,7 @@ Potential registers zp[1]:9 [ main::idx#1 ] : zp[1]:9 , reg byte x , reg byte y Potential registers zp[1]:10 [ main::idx#2 ] : zp[1]:10 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$1 ] 20.62: zp[1]:3 [ main::i1#2 main::i1#1 ] 18.33: zp[1]:4 [ main::idx#4 main::idx#3 ] 16.5: zp[1]:9 [ main::idx#1 ] 16.5: zp[1]:10 [ main::idx#2 ] 11: zp[1]:5 [ main::$0 ] 11: zp[1]:6 [ main::$5 ] 11: zp[1]:8 [ main::$7 ] +Uplift Scope [main] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::$1 ] 189.38: zp[1]:3 [ main::i1#2 main::i1#1 ] 168.33: zp[1]:4 [ main::idx#4 main::idx#3 ] 151.5: zp[1]:9 [ main::idx#1 ] 151.5: zp[1]:10 [ main::idx#2 ] 101: zp[1]:5 [ main::$0 ] 101: zp[1]:6 [ main::$5 ] 101: zp[1]:8 [ main::$7 ] Uplift Scope [Point] Uplift Scope [] @@ -620,25 +620,25 @@ FINAL SYMBOL TABLE (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 reg byte x 11.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$5 reg byte y 11.0 -(byte~) main::$7 reg byte y 11.0 +(byte~) main::$0 reg byte x 101.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$5 reg byte y 101.0 +(byte~) main::$7 reg byte y 101.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 9.166666666666666 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:3 16.5 -(byte) main::i1#2 i1 zp[1]:3 4.125 +(byte) main::i1#1 i1 zp[1]:3 151.5 +(byte) main::i1#2 i1 zp[1]:3 37.875 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 16.5 -(byte) main::idx#3 reg byte x 7.333333333333333 -(byte) main::idx#4 reg byte x 11.0 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 151.5 +(byte) main::idx#3 reg byte x 67.33333333333333 +(byte) main::idx#4 reg byte x 101.0 (const struct Point*) points[(number) 2] = { fill( 2, 0) } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-8.sym b/src/test/ref/struct-ptr-8.sym index a83cb5c57..a540969b0 100644 --- a/src/test/ref/struct-ptr-8.sym +++ b/src/test/ref/struct-ptr-8.sym @@ -5,25 +5,25 @@ (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$0 reg byte x 11.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$5 reg byte y 11.0 -(byte~) main::$7 reg byte y 11.0 +(byte~) main::$0 reg byte x 101.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$5 reg byte y 101.0 +(byte~) main::$7 reg byte y 101.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 9.166666666666666 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 84.16666666666666 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:3 16.5 -(byte) main::i1#2 i1 zp[1]:3 4.125 +(byte) main::i1#1 i1 zp[1]:3 151.5 +(byte) main::i1#2 i1 zp[1]:3 37.875 (byte) main::idx -(byte) main::idx#1 reg byte x 16.5 -(byte) main::idx#2 reg byte x 16.5 -(byte) main::idx#3 reg byte x 7.333333333333333 -(byte) main::idx#4 reg byte x 11.0 +(byte) main::idx#1 reg byte x 151.5 +(byte) main::idx#2 reg byte x 151.5 +(byte) main::idx#3 reg byte x 67.33333333333333 +(byte) main::idx#4 reg byte x 101.0 (const struct Point*) points[(number) 2] = { fill( 2, 0) } zp[1]:2 [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-9.log b/src/test/ref/struct-ptr-9.log index 1bcc05b63..c3fa478b8 100644 --- a/src/test/ref/struct-ptr-9.log +++ b/src/test/ref/struct-ptr-9.log @@ -173,14 +173,14 @@ VARIABLE REGISTER WEIGHTS (byte) Point::x (byte) Point::y (void()) main() -(byte~) main::$2 16.5 -(byte~) main::$3 22.0 +(byte~) main::$2 151.5 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (byte) main::i1 -(byte) main::i1#1 16.5 -(byte) main::i1#2 11.0 +(byte) main::i1#1 151.5 +(byte) main::i1#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -302,30 +302,30 @@ main: { points: .fill 2*2, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$2 ] -Statement [8] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$3 ] ( main:2 [ main::i1#2 main::$3 ] ) always clobbers reg byte a +Statement [8] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$3 ] ( main:2 [ main::i1#2 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [13] *((const struct Point*) main::SCREEN + (byte~) main::$3) ← memcpy(*((const struct Point*) points + (byte~) main::$3), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [13] *((const struct Point*) main::SCREEN + (byte~) main::$3) ← memcpy(*((const struct Point*) points + (byte~) main::$3), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i1#2 main::i1#1 ] -Statement [15] if((byte) main::i1#1!=(byte) 2) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a -Statement [8] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$3 ] ( main:2 [ main::i1#2 main::$3 ] ) always clobbers reg byte a -Statement [13] *((const struct Point*) main::SCREEN + (byte~) main::$3) ← memcpy(*((const struct Point*) points + (byte~) main::$3), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a reg byte x reg byte y -Statement [15] if((byte) main::i1#1!=(byte) 2) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] ) always clobbers reg byte a +Statement [15] if((byte) main::i1#1!=(byte) 2) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [7] *((byte*)(const struct Point*) points + (byte~) main::$2) ← (byte) 2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((byte*)(const struct Point*) points+(const byte) OFFSET_STRUCT_POINT_Y + (byte~) main::$2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$3 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::$3 ] ( main:2 [ main::i1#2 main::$3 ] { } ) always clobbers reg byte a +Statement [13] *((const struct Point*) main::SCREEN + (byte~) main::$3) ← memcpy(*((const struct Point*) points + (byte~) main::$3), struct Point, (const byte) SIZEOF_STRUCT_POINT) [ main::i1#2 ] ( main:2 [ main::i1#2 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [15] if((byte) main::i1#1!=(byte) 2) goto main::@2 [ main::i1#1 ] ( main:2 [ main::i1#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$3 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 27.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 22: zp[1]:5 [ main::$3 ] 16.5: zp[1]:4 [ main::$2 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 252.5: zp[1]:3 [ main::i1#2 main::i1#1 ] 202: zp[1]:5 [ main::$3 ] 151.5: zp[1]:4 [ main::$2 ] Uplift Scope [Point] Uplift Scope [] @@ -470,18 +470,18 @@ FINAL SYMBOL TABLE (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$2 reg byte x 16.5 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$2 reg byte x 151.5 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:2 16.5 -(byte) main::i1#2 i1 zp[1]:2 11.0 +(byte) main::i1#1 i1 zp[1]:2 151.5 +(byte) main::i1#2 i1 zp[1]:2 101.0 (const struct Point*) points[(number) 2] = { fill( 2, 0) } reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/struct-ptr-9.sym b/src/test/ref/struct-ptr-9.sym index 6b324b070..7860b4839 100644 --- a/src/test/ref/struct-ptr-9.sym +++ b/src/test/ref/struct-ptr-9.sym @@ -6,18 +6,18 @@ (byte) Point::y (const byte) SIZEOF_STRUCT_POINT = (byte) 2 (void()) main() -(byte~) main::$2 reg byte x 16.5 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$2 reg byte x 151.5 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const struct Point*) main::SCREEN = (struct Point*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (byte) main::i1 -(byte) main::i1#1 i1 zp[1]:2 16.5 -(byte) main::i1#2 i1 zp[1]:2 11.0 +(byte) main::i1#1 i1 zp[1]:2 151.5 +(byte) main::i1#2 i1 zp[1]:2 101.0 (const struct Point*) points[(number) 2] = { fill( 2, 0) } reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/subexpr-optimize-0.log b/src/test/ref/subexpr-optimize-0.log index e0dc84392..b4f365c46 100644 --- a/src/test/ref/subexpr-optimize-0.log +++ b/src/test/ref/subexpr-optimize-0.log @@ -82,7 +82,7 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$1 = (byte~) main::$0 +Alias main::$1 = main::$0 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$1 ← (byte) main::i#2 * (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -144,14 +144,14 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 11.0 +(byte~) main::$1 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte*) main::screen -(byte*) main::screen#1 16.5 -(byte*) main::screen#2 7.333333333333333 -(byte*) main::screen#3 11.0 +(byte*) main::screen#1 151.5 +(byte*) main::screen#2 67.33333333333333 +(byte*) main::screen#3 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -261,27 +261,27 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte y +Statement [7] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::$1 ] -Statement [8] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$1 main::screen#1 ] ( main:2 [ main::i#2 main::$1 main::screen#1 ] ) always clobbers reg byte a +Statement [8] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$1 main::screen#1 ] ( main:2 [ main::i#2 main::$1 main::screen#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$1 ] -Statement [9] *((byte*) main::screen#1) ← (byte~) main::$1 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte a -Statement [7] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte a reg byte y -Statement [8] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$1 main::screen#1 ] ( main:2 [ main::i#2 main::$1 main::screen#1 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::screen#1) ← (byte~) main::$1 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a reg byte y -Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a +Statement [9] *((byte*) main::screen#1) ← (byte~) main::$1 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$1 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte a +Statement [7] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte a reg byte y +Statement [8] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$1 main::screen#1 ] ( main:2 [ main::i#2 main::$1 main::screen#1 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::screen#1) ← (byte~) main::$1 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$1 ] : zp[1]:5 , reg byte x , Potential registers zp[2]:6 [ main::screen#1 ] : zp[2]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 18.33: zp[2]:3 [ main::screen#3 main::screen#2 ] 16.5: zp[2]:6 [ main::screen#1 ] 11: zp[1]:5 [ main::$1 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 168.33: zp[2]:3 [ main::screen#3 main::screen#2 ] 151.5: zp[2]:6 [ main::screen#1 ] 101: zp[1]:5 [ main::$1 ] Uplift Scope [] Uplifting [main] best 943 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:6 [ main::screen#1 ] zp[1]:5 [ main::$1 ] @@ -405,16 +405,16 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 zp[1]:4 11.0 +(byte~) main::$1 zp[1]:4 101.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 16.5 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 151.5 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 101.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-0.sym b/src/test/ref/subexpr-optimize-0.sym index 62da19e4d..d44e4722f 100644 --- a/src/test/ref/subexpr-optimize-0.sym +++ b/src/test/ref/subexpr-optimize-0.sym @@ -2,16 +2,16 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 zp[1]:4 11.0 +(byte~) main::$1 zp[1]:4 101.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 16.5 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 11.0 +(byte*) main::screen#1 screen zp[2]:2 151.5 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 101.0 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-1.log b/src/test/ref/subexpr-optimize-1.log index ba31c5a4a..84877c0c8 100644 --- a/src/test/ref/subexpr-optimize-1.log +++ b/src/test/ref/subexpr-optimize-1.log @@ -145,7 +145,7 @@ Consolidated array index constant in assignment *(main::SCREEN+$28+1 + main::$3) Consolidated array index constant in assignment *(main::SCREEN+$50+1 + main::$6) Consolidated array index constant in assignment *(main::SCREEN+$78+1 + main::$9) Successful SSA optimization Pass2ConstantAdditionElimination -Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$3 (byte~) main::$6 (byte~) main::$9 +Alias main::i#2 = main::$0 main::$3 main::$6 main::$9 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting main::@3(between main::@1 and main::@1) Adding NOP phi() at start of @begin @@ -198,8 +198,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 21.999999999999996 +(byte) main::i#1 151.5 +(byte) main::i#2 201.99999999999997 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -279,19 +279,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $28+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) $50 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $50+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) $78 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $78+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $28+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) $50 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $50+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) $78 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $78+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $28+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) $50 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $50+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) $78 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $78+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) $28 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $28+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) $50 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $50+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) $78 + (byte) main::i#2) ← *((const byte*) main::SCREEN+(byte) $78+(byte) 1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 573 combination reg byte x [ main::i#2 main::i#1 ] @@ -394,8 +394,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 21.999999999999996 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/subexpr-optimize-1.sym b/src/test/ref/subexpr-optimize-1.sym index 2d64d2fc8..29c514eba 100644 --- a/src/test/ref/subexpr-optimize-1.sym +++ b/src/test/ref/subexpr-optimize-1.sym @@ -6,7 +6,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 21.999999999999996 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 201.99999999999997 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/subexpr-optimize-2.log b/src/test/ref/subexpr-optimize-2.log index 7d558e015..6945fa495 100644 --- a/src/test/ref/subexpr-optimize-2.log +++ b/src/test/ref/subexpr-optimize-2.log @@ -158,17 +158,17 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte~) main::$3 22.0 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.888888888888889 +(byte) main::i#1 151.5 +(byte) main::i#2 44.888888888888886 (byte*) main::screen -(byte*) main::screen#1 8.25 -(byte*) main::screen#2 7.333333333333333 -(byte*) main::screen#3 8.25 +(byte*) main::screen#1 75.75 +(byte*) main::screen#2 67.33333333333333 +(byte*) main::screen#3 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -301,20 +301,20 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$1 ← (byte~) main::$0 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$0 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] ) always clobbers reg byte y +Statement [8] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte~) main::$2 << (byte) 1 [ main::i#2 main::screen#1 main::$3 ] ( main:2 [ main::i#2 main::screen#1 main::$3 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte~) main::$0 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] ) always clobbers reg byte a -Statement [8] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] ) always clobbers reg byte y -Statement [9] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$3 ← (byte~) main::$2 << (byte) 1 [ main::i#2 main::screen#1 main::$3 ] ( main:2 [ main::i#2 main::screen#1 main::$3 ] ) always clobbers reg byte a -Statement [12] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a +Statement [9] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte~) main::$2 << (byte) 1 [ main::i#2 main::screen#1 main::$3 ] ( main:2 [ main::i#2 main::screen#1 main::$3 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$0 << (byte) 1 [ main::i#2 main::screen#3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$1 ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::screen#3) ← (byte~) main::$1 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y +Statement [9] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$3 ← (byte~) main::$2 << (byte) 1 [ main::i#2 main::screen#1 main::$3 ] ( main:2 [ main::i#2 main::screen#1 main::$3 ] { } ) always clobbers reg byte a +Statement [12] *((byte*) main::screen#1) ← (byte~) main::$3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -324,7 +324,7 @@ Potential registers zp[1]:9 [ main::$2 ] : zp[1]:9 , reg byte a , reg byte x , r Potential registers zp[1]:10 [ main::$3 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:5 [ main::$0 ] 22: zp[1]:6 [ main::$1 ] 22: zp[1]:9 [ main::$2 ] 22: zp[1]:10 [ main::$3 ] 21.39: zp[1]:2 [ main::i#2 main::i#1 ] 15.58: zp[2]:3 [ main::screen#3 main::screen#2 ] 8.25: zp[2]:7 [ main::screen#1 ] +Uplift Scope [main] 202: zp[1]:5 [ main::$0 ] 202: zp[1]:6 [ main::$1 ] 202: zp[1]:9 [ main::$2 ] 202: zp[1]:10 [ main::$3 ] 196.39: zp[1]:2 [ main::i#2 main::i#1 ] 143.08: zp[2]:3 [ main::screen#3 main::screen#2 ] 75.75: zp[2]:7 [ main::screen#1 ] Uplift Scope [] Uplifting [main] best 1083 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:7 [ main::screen#1 ] @@ -452,19 +452,19 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.888888888888889 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 44.888888888888886 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:3 8.25 -(byte*) main::screen#2 screen zp[2]:3 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:3 8.25 +(byte*) main::screen#1 screen zp[2]:3 75.75 +(byte*) main::screen#2 screen zp[2]:3 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:3 75.75 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-2.sym b/src/test/ref/subexpr-optimize-2.sym index 86f1ee9ae..d61fa0d5b 100644 --- a/src/test/ref/subexpr-optimize-2.sym +++ b/src/test/ref/subexpr-optimize-2.sym @@ -2,19 +2,19 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 4.888888888888889 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 44.888888888888886 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:3 8.25 -(byte*) main::screen#2 screen zp[2]:3 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:3 8.25 +(byte*) main::screen#1 screen zp[2]:3 75.75 +(byte*) main::screen#2 screen zp[2]:3 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:3 75.75 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-3.log b/src/test/ref/subexpr-optimize-3.log index 9bf186e85..f56d806c9 100644 --- a/src/test/ref/subexpr-optimize-3.log +++ b/src/test/ref/subexpr-optimize-3.log @@ -104,7 +104,7 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$3 = (byte~) main::$0 +Alias main::$3 = main::$0 Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [1] (byte~) main::$3 ← (byte) main::i#2 * (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting @@ -170,18 +170,18 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte~) main::$3 6.6000000000000005 -(byte~) main::$4 22.0 -(byte~) main::$5 22.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte~) main::$3 60.599999999999994 +(byte~) main::$4 202.0 +(byte~) main::$5 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#1 151.5 +(byte) main::i#2 50.5 (byte*) main::screen -(byte*) main::screen#1 8.25 -(byte*) main::screen#2 7.333333333333333 -(byte*) main::screen#3 6.6000000000000005 +(byte*) main::screen#1 75.75 +(byte*) main::screen#2 67.33333333333333 +(byte*) main::screen#3 60.599999999999994 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -324,24 +324,24 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$3 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$3 ] -Statement [9] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] ) always clobbers reg byte y +Statement [9] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::$3 ] -Statement [10] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( main:2 [ main::i#2 main::$3 main::screen#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( main:2 [ main::i#2 main::screen#1 main::$4 ] ) always clobbers reg byte a -Statement [13] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [14] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ) always clobbers reg byte a -Statement [9] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] ) always clobbers reg byte y -Statement [10] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( main:2 [ main::i#2 main::$3 main::screen#1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( main:2 [ main::i#2 main::screen#1 main::$4 ] ) always clobbers reg byte a -Statement [13] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [14] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a +Statement [10] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( main:2 [ main::i#2 main::$3 main::screen#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( main:2 [ main::i#2 main::screen#1 main::$4 ] { } ) always clobbers reg byte a +Statement [13] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [14] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( main:2 [ main::i#2 main::screen#3 main::$3 main::$1 ] { } ) always clobbers reg byte a +Statement [9] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( main:2 [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte y +Statement [10] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( main:2 [ main::i#2 main::$3 main::screen#1 ] { } ) always clobbers reg byte a +Statement [11] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( main:2 [ main::i#2 main::screen#1 main::$4 ] { } ) always clobbers reg byte a +Statement [13] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [14] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$3 ] : zp[1]:5 , reg byte x , @@ -352,7 +352,7 @@ Potential registers zp[1]:10 [ main::$4 ] : zp[1]:10 , reg byte a , reg byte x , Potential registers zp[1]:11 [ main::$5 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$1 ] 22: zp[1]:7 [ main::$2 ] 22: zp[1]:10 [ main::$4 ] 22: zp[1]:11 [ main::$5 ] 13.93: zp[2]:3 [ main::screen#3 main::screen#2 ] 8.25: zp[2]:8 [ main::screen#1 ] 6.6: zp[1]:5 [ main::$3 ] +Uplift Scope [main] 202: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$1 ] 202: zp[1]:7 [ main::$2 ] 202: zp[1]:10 [ main::$4 ] 202: zp[1]:11 [ main::$5 ] 127.93: zp[2]:3 [ main::screen#3 main::screen#2 ] 75.75: zp[2]:8 [ main::screen#1 ] 60.6: zp[1]:5 [ main::$3 ] Uplift Scope [] Uplifting [main] best 1163 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] zp[1]:11 [ main::$5 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] zp[1]:5 [ main::$3 ] @@ -488,20 +488,20 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 zp[1]:4 6.6000000000000005 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 zp[1]:4 60.599999999999994 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 8.25 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005 +(byte*) main::screen#1 screen zp[2]:2 75.75 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 60.599999999999994 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-3.sym b/src/test/ref/subexpr-optimize-3.sym index e0f10f9d0..5854d71e3 100644 --- a/src/test/ref/subexpr-optimize-3.sym +++ b/src/test/ref/subexpr-optimize-3.sym @@ -2,20 +2,20 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$3 zp[1]:4 6.6000000000000005 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 zp[1]:4 60.599999999999994 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 50.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 8.25 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005 +(byte*) main::screen#1 screen zp[2]:2 75.75 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 60.599999999999994 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-4.log b/src/test/ref/subexpr-optimize-4.log index e6078ca6b..7a8303cb1 100644 --- a/src/test/ref/subexpr-optimize-4.log +++ b/src/test/ref/subexpr-optimize-4.log @@ -183,18 +183,18 @@ Inferred type updated to byte in (unumber~) main::$10 ← (byte~) main::$9 Inferred type updated to byte in (unumber~) main::$7 ← (byte) main::i#7 * (byte) 4 Inferred type updated to byte in (unumber~) main::$8 ← (byte~) main::$7 Inferred type updated to byte for (unumber~) main::$11 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte*) main::screen#5 = (byte*) main::screen#9 (byte*) main::screen#6 -Alias (byte~) main::$4 = (byte~) main::$3 -Alias (byte~) main::$2 = (byte~) main::$1 -Alias (byte) main::i#5 = (byte) main::i#6 (byte) main::i#7 -Alias (byte*) main::screen#1 = (byte*) main::screen#7 (byte*) main::screen#8 -Alias (byte~) main::$10 = (byte~) main::$9 -Alias (byte~) main::$8 = (byte~) main::$7 +Alias main::i#2 = main::i#3 main::i#4 +Alias main::screen#5 = main::screen#9 main::screen#6 +Alias main::$4 = main::$3 +Alias main::$2 = main::$1 +Alias main::i#5 = main::i#6 main::i#7 +Alias main::screen#1 = main::screen#7 main::screen#8 +Alias main::$10 = main::$9 +Alias main::$8 = main::$7 Successful SSA optimization Pass2AliasElimination -Alias (byte*) main::screen#3 = (byte*) main::screen#5 -Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#8 -Alias (byte*) main::screen#1 = (byte*) main::screen#4 +Alias main::screen#3 = main::screen#5 +Alias main::i#2 = main::i#5 main::i#8 +Alias main::screen#1 = main::screen#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$13 [5] if((byte) 0!=(byte~) main::$0) goto main::@2 Simple Condition (bool~) main::$14 [13] if((byte) 0!=(byte~) main::$6) goto main::@5 @@ -297,21 +297,21 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$10 22.0 -(byte~) main::$11 33.0 -(byte~) main::$2 22.0 -(byte~) main::$4 22.0 -(byte~) main::$5 33.0 -(byte~) main::$6 22.0 -(byte~) main::$8 22.0 +(byte~) main::$0 202.0 +(byte~) main::$10 202.0 +(byte~) main::$11 303.0 +(byte~) main::$2 202.0 +(byte~) main::$4 202.0 +(byte~) main::$5 303.0 +(byte~) main::$6 202.0 +(byte~) main::$8 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 5.866666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 53.86666666666667 (byte*) main::screen -(byte*) main::screen#1 4.714285714285714 -(byte*) main::screen#2 7.333333333333333 -(byte*) main::screen#3 4.714285714285714 +(byte*) main::screen#1 43.285714285714285 +(byte*) main::screen#2 67.33333333333333 +(byte*) main::screen#3 43.285714285714285 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -492,27 +492,27 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( main:2 [ main::i#2 main::screen#3 main::$2 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( main:2 [ main::i#2 main::screen#3 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [10] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] ) always clobbers reg byte y +Statement [10] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [11] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( main:2 [ main::i#2 main::screen#1 main::$6 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( main:2 [ main::i#2 main::screen#1 main::$8 ] ) always clobbers reg byte a -Statement [16] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [17] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [21] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( main:2 [ main::i#2 main::screen#1 main::$10 ] ) always clobbers reg byte a -Statement [22] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( main:2 [ main::i#2 main::screen#3 main::$4 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#3 main::$0 ] ( main:2 [ main::i#2 main::screen#3 main::$0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( main:2 [ main::i#2 main::screen#3 main::$2 ] ) always clobbers reg byte a -Statement [10] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] ) always clobbers reg byte y -Statement [11] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( main:2 [ main::i#2 main::screen#1 main::$6 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( main:2 [ main::i#2 main::screen#1 main::$8 ] ) always clobbers reg byte a -Statement [16] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] ) always clobbers reg byte y -Statement [17] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a -Statement [21] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( main:2 [ main::i#2 main::screen#1 main::$10 ] ) always clobbers reg byte a -Statement [22] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( main:2 [ main::i#2 main::screen#3 main::$4 ] ) always clobbers reg byte a +Statement [11] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( main:2 [ main::i#2 main::screen#1 main::$6 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( main:2 [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [17] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [21] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( main:2 [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( main:2 [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#3 main::$0 ] ( main:2 [ main::i#2 main::screen#3 main::$0 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( main:2 [ main::i#2 main::screen#3 main::$2 ] { } ) always clobbers reg byte a +Statement [10] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( main:2 [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y +Statement [11] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [12] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( main:2 [ main::i#2 main::screen#1 main::$6 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( main:2 [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a +Statement [16] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( main:2 [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [17] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [21] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( main:2 [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( main:2 [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$5 main::$4 main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -522,7 +522,7 @@ Potential registers zp[2]:8 [ main::screen#1 ] : zp[2]:8 , Potential registers zp[1]:10 [ main::$6 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 77: zp[1]:5 [ main::$5 main::$4 main::$2 ] 77: zp[1]:6 [ main::$11 main::$10 main::$8 ] 22.37: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$0 ] 22: zp[1]:10 [ main::$6 ] 12.05: zp[2]:3 [ main::screen#3 main::screen#2 ] 4.71: zp[2]:8 [ main::screen#1 ] +Uplift Scope [main] 707: zp[1]:5 [ main::$5 main::$4 main::$2 ] 707: zp[1]:6 [ main::$11 main::$10 main::$8 ] 205.37: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::$0 ] 202: zp[1]:10 [ main::$6 ] 110.62: zp[2]:3 [ main::screen#3 main::screen#2 ] 43.29: zp[2]:8 [ main::screen#1 ] Uplift Scope [] Uplifting [main] best 1443 combination reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$11 main::$10 main::$8 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] zp[1]:10 [ main::$6 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] @@ -702,14 +702,14 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 33.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 33.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 303.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 303.0 +(byte~) main::$6 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -719,12 +719,12 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.866666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 53.86666666666667 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.714285714285714 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 4.714285714285714 +(byte*) main::screen#1 screen zp[2]:2 43.285714285714285 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 43.285714285714285 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/subexpr-optimize-4.sym b/src/test/ref/subexpr-optimize-4.sym index a0f707549..cc0542c00 100644 --- a/src/test/ref/subexpr-optimize-4.sym +++ b/src/test/ref/subexpr-optimize-4.sym @@ -2,14 +2,14 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$10 reg byte a 22.0 -(byte~) main::$11 reg byte a 33.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 33.0 -(byte~) main::$6 reg byte a 22.0 -(byte~) main::$8 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$10 reg byte a 202.0 +(byte~) main::$11 reg byte a 303.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 303.0 +(byte~) main::$6 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -19,12 +19,12 @@ (label) main::@7 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.866666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 53.86666666666667 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.714285714285714 -(byte*) main::screen#2 screen zp[2]:2 7.333333333333333 -(byte*) main::screen#3 screen zp[2]:2 4.714285714285714 +(byte*) main::screen#1 screen zp[2]:2 43.285714285714285 +(byte*) main::screen#2 screen zp[2]:2 67.33333333333333 +(byte*) main::screen#3 screen zp[2]:2 43.285714285714285 reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] diff --git a/src/test/ref/summin.asm b/src/test/ref/summin.asm index 3c0559799..afb460bbd 100644 --- a/src/test/ref/summin.asm +++ b/src/test/ref/summin.asm @@ -7,27 +7,27 @@ main: { .label s3 = 3 // sum(1,2) lda #2 - ldy #1 + ldx #1 jsr sum // sum(1,2) // s1=sum(1,2) sta.z s1 // sum(3,4) lda #4 - ldy #3 + ldx #3 jsr sum // sum(3,4) // s2=sum(3,4) - tax + tay // sum(9,13) lda #$d - ldy #9 + ldx #9 jsr sum // sum(9,13) // s3=sum(9,13) sta.z s3 // s1+s2 - txa + tya clc adc.z s1 // s4=s1+s2+s3 @@ -38,10 +38,10 @@ main: { // } rts } -// sum(byte register(Y) a, byte register(A) b) +// sum(byte register(X) a, byte register(A) b) sum: { // a+b - sty.z $ff + stx.z $ff clc adc.z $ff // } diff --git a/src/test/ref/summin.log b/src/test/ref/summin.log index f32732fcc..3976b5eda 100644 --- a/src/test/ref/summin.log +++ b/src/test/ref/summin.log @@ -146,14 +146,14 @@ Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 9 Finalized unsigned number type (byte) $d Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) sum::return#0 = (byte) sum::return#5 -Alias (byte) main::s1#0 = (byte~) main::$0 (byte) main::s1#2 (byte) main::s1#1 -Alias (byte) sum::return#1 = (byte) sum::return#6 -Alias (byte) main::s2#0 = (byte~) main::$1 (byte) main::s2#1 -Alias (byte) sum::return#2 = (byte) sum::return#7 -Alias (byte) main::s3#0 = (byte~) main::$2 -Alias (byte) main::s4#0 = (byte~) main::$4 -Alias (byte) sum::return#3 = (byte~) sum::$0 (byte) sum::return#8 (byte) sum::return#4 +Alias sum::return#0 = sum::return#5 +Alias main::s1#0 = main::$0 main::s1#2 main::s1#1 +Alias sum::return#1 = sum::return#6 +Alias main::s2#0 = main::$1 main::s2#1 +Alias sum::return#2 = sum::return#7 +Alias main::s3#0 = main::$2 +Alias main::s4#0 = main::$4 +Alias sum::return#3 = sum::$0 sum::return#8 sum::return#4 Successful SSA optimization Pass2AliasElimination Constant (const byte) sum::a#0 = 1 Constant (const byte) sum::b#0 = 2 @@ -243,25 +243,25 @@ sum::@return: scope:[sum] from sum VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$3 4.0 +(byte~) main::$3 22.0 (byte) main::s1 -(byte) main::s1#0 0.5714285714285714 +(byte) main::s1#0 3.142857142857143 (byte) main::s2 -(byte) main::s2#0 1.0 +(byte) main::s2#0 5.5 (byte) main::s3 -(byte) main::s3#0 2.0 +(byte) main::s3#0 11.0 (byte) main::s4 -(byte) main::s4#0 4.0 +(byte) main::s4#0 22.0 (byte()) sum((byte) sum::a , (byte) sum::b) (byte) sum::a -(byte) sum::a#3 2.0 +(byte) sum::a#3 101.0 (byte) sum::b -(byte) sum::b#3 2.0 +(byte) sum::b#3 101.0 (byte) sum::return -(byte) sum::return#0 4.0 -(byte) sum::return#1 4.0 -(byte) sum::return#2 4.0 -(byte) sum::return#3 1.6 +(byte) sum::return#0 22.0 +(byte) sum::return#1 22.0 +(byte) sum::return#2 22.0 +(byte) sum::return#3 26.8 Initial phi equivalence classes [ sum::a#3 ] @@ -430,15 +430,15 @@ sum: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) always clobbers reg byte a +Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::s3#0 ] -Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) always clobbers reg byte a -Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) always clobbers reg byte a +Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] { } ) always clobbers reg byte a +Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] { { sum::return#0 = sum::return#3 } } main:2::sum:8 [ main::s1#0 sum::return#3 ] { { sum::return#1 = sum::return#3 } } main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] { { sum::return#2 = sum::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::s1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::s2#0 ] -Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) always clobbers reg byte a -Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) always clobbers reg byte a -Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) always clobbers reg byte a +Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] { } ) always clobbers reg byte a +Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] { } ) always clobbers reg byte a +Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] { { sum::return#0 = sum::return#3 } } main:2::sum:8 [ main::s1#0 sum::return#3 ] { { sum::return#1 = sum::return#3 } } main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] { { sum::return#2 = sum::return#3 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ sum::a#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ sum::b#3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ sum::return#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -452,23 +452,23 @@ Potential registers zp[1]:11 [ main::s4#0 ] : zp[1]:11 , reg byte a , reg byte x Potential registers zp[1]:12 [ sum::return#3 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [sum] 4: zp[1]:4 [ sum::return#0 ] 4: zp[1]:6 [ sum::return#1 ] 4: zp[1]:8 [ sum::return#2 ] 2: zp[1]:2 [ sum::a#3 ] 2: zp[1]:3 [ sum::b#3 ] 1.6: zp[1]:12 [ sum::return#3 ] -Uplift Scope [main] 4: zp[1]:10 [ main::$3 ] 4: zp[1]:11 [ main::s4#0 ] 2: zp[1]:9 [ main::s3#0 ] 1: zp[1]:7 [ main::s2#0 ] 0.57: zp[1]:5 [ main::s1#0 ] +Uplift Scope [sum] 101: zp[1]:2 [ sum::a#3 ] 101: zp[1]:3 [ sum::b#3 ] 26.8: zp[1]:12 [ sum::return#3 ] 22: zp[1]:4 [ sum::return#0 ] 22: zp[1]:6 [ sum::return#1 ] 22: zp[1]:8 [ sum::return#2 ] +Uplift Scope [main] 22: zp[1]:10 [ main::$3 ] 22: zp[1]:11 [ main::s4#0 ] 11: zp[1]:9 [ main::s3#0 ] 5.5: zp[1]:7 [ main::s2#0 ] 3.14: zp[1]:5 [ main::s1#0 ] Uplift Scope [] -Uplifting [sum] best 145 combination reg byte a [ sum::return#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#2 ] zp[1]:2 [ sum::a#3 ] zp[1]:3 [ sum::b#3 ] zp[1]:12 [ sum::return#3 ] +Uplifting [sum] best 127 combination reg byte x [ sum::a#3 ] reg byte a [ sum::b#3 ] reg byte a [ sum::return#3 ] reg byte a [ sum::return#0 ] zp[1]:6 [ sum::return#1 ] zp[1]:8 [ sum::return#2 ] Limited combination testing to 100 combinations of 4096 possible. -Uplifting [main] best 131 combination reg byte a [ main::$3 ] reg byte a [ main::s4#0 ] zp[1]:9 [ main::s3#0 ] reg byte x [ main::s2#0 ] zp[1]:5 [ main::s1#0 ] +Uplifting [main] best 115 combination reg byte a [ main::$3 ] reg byte a [ main::s4#0 ] zp[1]:9 [ main::s3#0 ] zp[1]:7 [ main::s2#0 ] zp[1]:5 [ main::s1#0 ] Limited combination testing to 100 combinations of 432 possible. -Uplifting [] best 131 combination -Attempting to uplift remaining variables inzp[1]:2 [ sum::a#3 ] -Uplifting [sum] best 121 combination reg byte y [ sum::a#3 ] -Attempting to uplift remaining variables inzp[1]:3 [ sum::b#3 ] -Uplifting [sum] best 113 combination reg byte a [ sum::b#3 ] +Uplifting [] best 115 combination +Attempting to uplift remaining variables inzp[1]:6 [ sum::return#1 ] +Uplifting [sum] best 109 combination reg byte a [ sum::return#1 ] +Attempting to uplift remaining variables inzp[1]:8 [ sum::return#2 ] +Uplifting [sum] best 103 combination reg byte a [ sum::return#2 ] Attempting to uplift remaining variables inzp[1]:9 [ main::s3#0 ] -Uplifting [main] best 113 combination zp[1]:9 [ main::s3#0 ] -Attempting to uplift remaining variables inzp[1]:12 [ sum::return#3 ] -Uplifting [sum] best 101 combination reg byte a [ sum::return#3 ] +Uplifting [main] best 103 combination zp[1]:9 [ main::s3#0 ] +Attempting to uplift remaining variables inzp[1]:7 [ main::s2#0 ] +Uplifting [main] best 101 combination reg byte y [ main::s2#0 ] Attempting to uplift remaining variables inzp[1]:5 [ main::s1#0 ] Uplifting [main] best 101 combination zp[1]:5 [ main::s1#0 ] Allocated (was zp[1]:5) zp[1]:2 [ main::s1#0 ] @@ -507,8 +507,8 @@ main: { sum_from_main: // [18] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- vbuaa=vbuc1 lda #2 - // [18] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- vbuyy=vbuc1 - ldy #1 + // [18] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- vbuxx=vbuc1 + ldx #1 jsr sum // [6] (byte) sum::return#0 ← (byte) sum::return#3 jmp __b1 @@ -521,22 +521,22 @@ main: { sum_from___b1: // [18] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #4 - // [18] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 - ldy #3 + // [18] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- vbuxx=vbuc1 + ldx #3 jsr sum // [9] (byte) sum::return#1 ← (byte) sum::return#3 jmp __b2 // main::@2 __b2: - // [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa - tax + // [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuyy=vbuaa + tay // [11] call sum // [18] phi from main::@2 to sum [phi:main::@2->sum] sum_from___b2: // [18] phi (byte) sum::b#3 = (byte) $d [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #$d - // [18] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 - ldy #9 + // [18] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- vbuxx=vbuc1 + ldx #9 jsr sum // [12] (byte) sum::return#2 ← (byte) sum::return#3 jmp __b3 @@ -544,8 +544,8 @@ main: { __b3: // [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa sta.z s3 - // [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx - txa + // [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuyy + tya clc adc.z s1 // [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuaa=vbuaa_plus_vbuz1 @@ -560,10 +560,10 @@ main: { rts } // sum -// sum(byte register(Y) a, byte register(A) b) +// sum(byte register(X) a, byte register(A) b) sum: { - // [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa - sty.z $ff + // [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuxx_plus_vbuaa + stx.z $ff clc adc.z $ff jmp __breturn @@ -609,38 +609,38 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::s1 -(byte) main::s1#0 s1 zp[1]:2 0.5714285714285714 +(byte) main::s1#0 s1 zp[1]:2 3.142857142857143 (byte) main::s2 -(byte) main::s2#0 reg byte x 1.0 +(byte) main::s2#0 reg byte y 5.5 (byte) main::s3 -(byte) main::s3#0 s3 zp[1]:3 2.0 +(byte) main::s3#0 s3 zp[1]:3 11.0 (byte) main::s4 -(byte) main::s4#0 reg byte a 4.0 +(byte) main::s4#0 reg byte a 22.0 (const byte*) screen = (byte*) 1024 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a -(byte) sum::a#3 reg byte y 2.0 +(byte) sum::a#3 reg byte x 101.0 (byte) sum::b -(byte) sum::b#3 reg byte a 2.0 +(byte) sum::b#3 reg byte a 101.0 (byte) sum::return -(byte) sum::return#0 reg byte a 4.0 -(byte) sum::return#1 reg byte a 4.0 -(byte) sum::return#2 reg byte a 4.0 -(byte) sum::return#3 reg byte a 1.6 +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 22.0 +(byte) sum::return#2 reg byte a 22.0 +(byte) sum::return#3 reg byte a 26.8 -reg byte y [ sum::a#3 ] +reg byte x [ sum::a#3 ] reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] zp[1]:2 [ main::s1#0 ] reg byte a [ sum::return#1 ] -reg byte x [ main::s2#0 ] +reg byte y [ main::s2#0 ] reg byte a [ sum::return#2 ] zp[1]:3 [ main::s3#0 ] reg byte a [ main::$3 ] @@ -674,8 +674,8 @@ main: { // [18] phi from main to sum [phi:main->sum] // [18] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- vbuaa=vbuc1 lda #2 - // [18] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- vbuyy=vbuc1 - ldy #1 + // [18] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- vbuxx=vbuc1 + ldx #1 jsr sum // sum(1,2) // [6] (byte) sum::return#0 ← (byte) sum::return#3 @@ -688,22 +688,22 @@ main: { // [18] phi from main::@1 to sum [phi:main::@1->sum] // [18] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #4 - // [18] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 - ldy #3 + // [18] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- vbuxx=vbuc1 + ldx #3 jsr sum // sum(3,4) // [9] (byte) sum::return#1 ← (byte) sum::return#3 // main::@2 // s2=sum(3,4) - // [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa - tax + // [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuyy=vbuaa + tay // sum(9,13) // [11] call sum // [18] phi from main::@2 to sum [phi:main::@2->sum] // [18] phi (byte) sum::b#3 = (byte) $d [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #$d - // [18] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 - ldy #9 + // [18] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- vbuxx=vbuc1 + ldx #9 jsr sum // sum(9,13) // [12] (byte) sum::return#2 ← (byte) sum::return#3 @@ -712,8 +712,8 @@ main: { // [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa sta.z s3 // s1+s2 - // [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx - txa + // [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuyy + tya clc adc.z s1 // s4=s1+s2+s3 @@ -729,11 +729,11 @@ main: { rts } // sum -// sum(byte register(Y) a, byte register(A) b) +// sum(byte register(X) a, byte register(A) b) sum: { // a+b - // [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa - sty.z $ff + // [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuxx_plus_vbuaa + stx.z $ff clc adc.z $ff // sum::@return diff --git a/src/test/ref/summin.sym b/src/test/ref/summin.sym index 6c3570e66..41dfe8c74 100644 --- a/src/test/ref/summin.sym +++ b/src/test/ref/summin.sym @@ -2,38 +2,38 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::s1 -(byte) main::s1#0 s1 zp[1]:2 0.5714285714285714 +(byte) main::s1#0 s1 zp[1]:2 3.142857142857143 (byte) main::s2 -(byte) main::s2#0 reg byte x 1.0 +(byte) main::s2#0 reg byte y 5.5 (byte) main::s3 -(byte) main::s3#0 s3 zp[1]:3 2.0 +(byte) main::s3#0 s3 zp[1]:3 11.0 (byte) main::s4 -(byte) main::s4#0 reg byte a 4.0 +(byte) main::s4#0 reg byte a 22.0 (const byte*) screen = (byte*) 1024 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a -(byte) sum::a#3 reg byte y 2.0 +(byte) sum::a#3 reg byte x 101.0 (byte) sum::b -(byte) sum::b#3 reg byte a 2.0 +(byte) sum::b#3 reg byte a 101.0 (byte) sum::return -(byte) sum::return#0 reg byte a 4.0 -(byte) sum::return#1 reg byte a 4.0 -(byte) sum::return#2 reg byte a 4.0 -(byte) sum::return#3 reg byte a 1.6 +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 22.0 +(byte) sum::return#2 reg byte a 22.0 +(byte) sum::return#3 reg byte a 26.8 -reg byte y [ sum::a#3 ] +reg byte x [ sum::a#3 ] reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] zp[1]:2 [ main::s1#0 ] reg byte a [ sum::return#1 ] -reg byte x [ main::s2#0 ] +reg byte y [ main::s2#0 ] reg byte a [ sum::return#2 ] zp[1]:3 [ main::s3#0 ] reg byte a [ main::$3 ] diff --git a/src/test/ref/switch-0.log b/src/test/ref/switch-0.log index 4a709138f..58da7c63e 100644 --- a/src/test/ref/switch-0.log +++ b/src/test/ref/switch-0.log @@ -109,13 +109,13 @@ Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 (byte) main::i#7 (byte) main::i#9 +Alias main::i#2 = main::i#3 main::i#4 main::i#5 main::i#7 main::i#9 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#6 +Alias main::i#2 = main::i#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#8 +Alias main::i#2 = main::i#8 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#10 = (byte) main::i#2 +Alias main::i#10 = main::i#2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [12] if((byte) main::i#1!=rangelast(0,5)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -210,8 +210,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#10 12.222222222222221 +(byte) main::i#1 151.5 +(byte) main::i#10 112.22222222222223 Initial phi equivalence classes [ main::i#10 main::i#1 ] @@ -336,19 +336,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) 'd' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) 'd' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ] -Statement [14] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '4' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '3' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '1' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) 'd' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '4' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '3' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '1' [ main::i#10 ] ( main:2 [ main::i#10 ] ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '4' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '3' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '1' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) 'd' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '4' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '3' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN + (byte) main::i#10) ← (byte) '1' [ main::i#10 ] ( main:2 [ main::i#10 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 28.72: zp[1]:2 [ main::i#10 main::i#1 ] +Uplift Scope [main] 263.72: zp[1]:2 [ main::i#10 main::i#1 ] Uplift Scope [] Uplifting [main] best 893 combination reg byte x [ main::i#10 main::i#1 ] @@ -509,8 +509,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#10 reg byte x 12.222222222222221 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#10 reg byte x 112.22222222222223 reg byte x [ main::i#10 main::i#1 ] diff --git a/src/test/ref/switch-0.sym b/src/test/ref/switch-0.sym index 69779920d..447f57aa1 100644 --- a/src/test/ref/switch-0.sym +++ b/src/test/ref/switch-0.sym @@ -14,7 +14,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#10 reg byte x 12.222222222222221 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#10 reg byte x 112.22222222222223 reg byte x [ main::i#10 main::i#1 ] diff --git a/src/test/ref/switch-1.log b/src/test/ref/switch-1.log index e12cf67a9..1688b7360 100644 --- a/src/test/ref/switch-1.log +++ b/src/test/ref/switch-1.log @@ -87,12 +87,12 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) $80 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#5 -Alias (byte) main::i#4 = (byte) main::i#6 +Alias main::i#2 = main::i#3 main::i#5 +Alias main::i#4 = main::i#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#7 +Alias main::i#2 = main::i#7 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [9] if((byte) main::i#1!=rangelast(0,5)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -176,8 +176,8 @@ main::@4: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666668 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -280,17 +280,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [12] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) '1' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN + (byte) main::i#2) | (byte) $80 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) '1' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN + (byte) main::i#2) | (byte) $80 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) '1' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN + (byte) main::i#2) | (byte) $80 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) '1' [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN + (byte) main::i#2) ← *((const byte*) main::SCREEN + (byte) main::i#2) | (byte) $80 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 688 combination reg byte x [ main::i#2 main::i#1 ] @@ -427,8 +427,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666668 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/switch-1.sym b/src/test/ref/switch-1.sym index 7df33c521..3884ae7c0 100644 --- a/src/test/ref/switch-1.sym +++ b/src/test/ref/switch-1.sym @@ -11,7 +11,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666668 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/switch-2.log b/src/test/ref/switch-2.log index 705115d85..77b3e7fc3 100644 --- a/src/test/ref/switch-2.log +++ b/src/test/ref/switch-2.log @@ -168,7 +168,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (const byte) main::b#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (const byte) main::b#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/switch-4.log b/src/test/ref/switch-4.log index d20b11287..4d593ac5a 100644 --- a/src/test/ref/switch-4.log +++ b/src/test/ref/switch-4.log @@ -75,11 +75,11 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#4 +Alias main::i#2 = main::i#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [8] if((byte) main::i#1!=rangelast(0,5)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -157,10 +157,10 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 13.2 +(byte) main::i#1 151.5 +(byte) main::i#2 121.2 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -258,7 +258,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.7: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 272.7: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 483 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] @@ -371,7 +371,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -379,8 +379,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 121.2 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/switch-4.sym b/src/test/ref/switch-4.sym index fa38f0727..3530d2a57 100644 --- a/src/test/ref/switch-4.sym +++ b/src/test/ref/switch-4.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -10,8 +10,8 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 121.2 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/ternary-1.log b/src/test/ref/ternary-1.log index 0976b2786..3d9d20b10 100644 --- a/src/test/ref/ternary-1.log +++ b/src/test/ref/ternary-1.log @@ -73,9 +73,9 @@ Simplifying constant integer cast 5 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#5 +Alias main::i#2 = main::i#4 main::i#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) 5) goto main::@2 Simple Condition (bool~) main::$4 [10] if((byte) main::i#1!=rangelast(0,9)) goto main::@1 @@ -156,10 +156,10 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$3 11.0 +(byte~) main::$3 101.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.8 +(byte) main::i#1 151.5 +(byte) main::i#2 80.8 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -258,7 +258,7 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg Potential registers zp[1]:3 [ main::$3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.3: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[1]:3 [ main::$3 ] +Uplift Scope [main] 232.3: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[1]:3 [ main::$3 ] Uplift Scope [] Uplifting [main] best 418 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] @@ -373,15 +373,15 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 11.0 +(byte~) main::$3 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.8 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 80.8 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] diff --git a/src/test/ref/ternary-1.sym b/src/test/ref/ternary-1.sym index 173784ca4..bc5f305d8 100644 --- a/src/test/ref/ternary-1.sym +++ b/src/test/ref/ternary-1.sym @@ -2,15 +2,15 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 11.0 +(byte~) main::$3 reg byte a 101.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.8 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 80.8 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$3 ] diff --git a/src/test/ref/ternary-2.log b/src/test/ref/ternary-2.log index 270f9272a..abaf87490 100644 --- a/src/test/ref/ternary-2.log +++ b/src/test/ref/ternary-2.log @@ -202,8 +202,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'b' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'b' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/ternary-3.asm b/src/test/ref/ternary-3.asm index 45fce3103..60404e560 100644 --- a/src/test/ref/ternary-3.asm +++ b/src/test/ref/ternary-3.asm @@ -4,53 +4,54 @@ .pc = $80d "Program" main: { .label SCREEN = $400 - ldy #0 + ldx #0 __b1: // cond(i) + txa jsr cond // cond(i)?m1(i):m2(i) cmp #0 bne __b2 // m2(i) + txa jsr m2 // cond(i)?m1(i):m2(i) __b4: // SCREEN[i] = cond(i)?m1(i):m2(i) - sta SCREEN,y + sta SCREEN,x // for( byte i: 0..9) - iny - cpy #$a + inx + cpx #$a bne __b1 // } rts __b2: // m1(i) + txa jsr m1 // cond(i)?m1(i):m2(i) jmp __b4 } -// m1(byte register(Y) i) +// m1(byte register(A) i) m1: { // 5+i - tya clc adc #5 // } rts } -// m2(byte register(Y) i) +// m2(byte register(A) i) m2: { // 10+i - tya clc adc #$a // } rts } -// cond(byte register(Y) b) +// cond(byte register(A) b) cond: { // b<5 - cpy #5 + cmp #5 lda #0 rol eor #1 diff --git a/src/test/ref/ternary-3.log b/src/test/ref/ternary-3.log index a40a43b0b..8ceedabff 100644 --- a/src/test/ref/ternary-3.log +++ b/src/test/ref/ternary-3.log @@ -192,17 +192,17 @@ Finalized unsigned number type (byte) $a Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) m1::$0 ← (byte) 5 + (byte) m1::i#1 Inferred type updated to byte in (unumber~) m2::$0 ← (byte) $a + (byte) m2::i#1 -Alias (bool) cond::return#0 = (bool) cond::return#3 -Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#8 (byte) main::i#4 (byte) main::i#7 -Alias (byte) m1::return#0 = (byte) m1::return#3 -Alias (byte~) main::$4 = (byte~) main::$3 -Alias (byte) m2::return#0 = (byte) m2::return#3 -Alias (byte~) main::$2 = (byte~) main::$1 -Alias (bool) cond::return#1 = (bool~) cond::$0 (bool) cond::return#4 (bool) cond::return#2 -Alias (byte) m1::return#1 = (byte~) m1::$0 (byte) m1::return#4 (byte) m1::return#2 -Alias (byte) m2::return#1 = (byte~) m2::$0 (byte) m2::return#4 (byte) m2::return#2 +Alias cond::return#0 = cond::return#3 +Alias main::i#2 = main::i#6 main::i#3 main::i#8 main::i#4 main::i#7 +Alias m1::return#0 = m1::return#3 +Alias main::$4 = main::$3 +Alias m2::return#0 = m2::return#3 +Alias main::$2 = main::$1 +Alias cond::return#1 = cond::$0 cond::return#4 cond::return#2 +Alias m1::return#1 = m1::$0 m1::return#4 m1::return#2 +Alias m2::return#1 = m2::$0 m2::return#4 m2::return#2 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#5 +Alias main::i#2 = main::i#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) cond::b#1 (byte) cond::b#0 Identical Phi Values (byte) m1::i#1 (byte) m1::i#0 @@ -328,30 +328,30 @@ cond::@return: scope:[cond] from cond VARIABLE REGISTER WEIGHTS (bool()) cond((byte) cond::b) (byte) cond::b -(byte) cond::b#0 13.0 +(byte) cond::b#0 1102.0 (bool) cond::return -(bool) cond::return#0 22.0 -(bool) cond::return#1 4.333333333333333 +(bool) cond::return#0 202.0 +(bool) cond::return#1 367.33333333333337 (byte()) m1((byte) m1::i) (byte) m1::i -(byte) m1::i#0 13.0 +(byte) m1::i#0 1102.0 (byte) m1::return -(byte) m1::return#0 22.0 -(byte) m1::return#1 4.333333333333333 +(byte) m1::return#0 202.0 +(byte) m1::return#1 367.33333333333337 (byte()) m2((byte) m2::i) (byte) m2::i -(byte) m2::i#0 13.0 +(byte) m2::i#0 1102.0 (byte) m2::return -(byte) m2::return#0 22.0 -(byte) m2::return#1 4.333333333333333 +(byte) m2::return#0 202.0 +(byte) m2::return#1 367.33333333333337 (void()) main() -(bool~) main::$0 22.0 -(byte~) main::$2 22.0 -(byte~) main::$4 22.0 -(byte~) main::$5 33.0 +(bool~) main::$0 202.0 +(byte~) main::$2 202.0 +(byte~) main::$4 202.0 +(byte~) main::$5 303.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.125 +(byte) main::i#1 151.5 +(byte) main::i#2 37.875 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -566,9 +566,9 @@ cond: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 [ cond::return#1 ] ( main:2::cond:7 [ main::i#2 cond::return#1 ] ) always clobbers reg byte a +Statement [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 [ cond::return#1 ] ( main:2::cond:7 [ main::i#2 cond::return#1 ] { { cond::b#0 = main::i#2 } { cond::return#0 = cond::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 [ cond::return#1 ] ( main:2::cond:7 [ main::i#2 cond::return#1 ] ) always clobbers reg byte a +Statement [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 [ cond::return#1 ] ( main:2::cond:7 [ main::i#2 cond::return#1 ] { { cond::b#0 = main::i#2 } { cond::return#0 = cond::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$5 main::$4 main::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ cond::b#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -583,17 +583,17 @@ Potential registers zp[1]:12 [ m2::return#1 ] : zp[1]:12 , reg byte a , reg byte Potential registers zp[1]:13 [ cond::return#1 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 77: zp[1]:3 [ main::$5 main::$4 main::$2 ] 22: zp[1]:6 [ main::$0 ] 20.62: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [cond] 22: zp[1]:5 [ cond::return#0 ] 13: zp[1]:4 [ cond::b#0 ] 4.33: zp[1]:13 [ cond::return#1 ] -Uplift Scope [m1] 22: zp[1]:10 [ m1::return#0 ] 13: zp[1]:9 [ m1::i#0 ] 4.33: zp[1]:11 [ m1::return#1 ] -Uplift Scope [m2] 22: zp[1]:8 [ m2::return#0 ] 13: zp[1]:7 [ m2::i#0 ] 4.33: zp[1]:12 [ m2::return#1 ] +Uplift Scope [cond] 1,102: zp[1]:4 [ cond::b#0 ] 367.33: zp[1]:13 [ cond::return#1 ] 202: zp[1]:5 [ cond::return#0 ] +Uplift Scope [m1] 1,102: zp[1]:9 [ m1::i#0 ] 367.33: zp[1]:11 [ m1::return#1 ] 202: zp[1]:10 [ m1::return#0 ] +Uplift Scope [m2] 1,102: zp[1]:7 [ m2::i#0 ] 367.33: zp[1]:12 [ m2::return#1 ] 202: zp[1]:8 [ m2::return#0 ] +Uplift Scope [main] 707: zp[1]:3 [ main::$5 main::$4 main::$2 ] 202: zp[1]:6 [ main::$0 ] 189.38: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 1065 combination reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$0 ] reg byte y [ main::i#2 main::i#1 ] -Uplifting [cond] best 939 combination reg byte a [ cond::return#0 ] reg byte y [ cond::b#0 ] reg byte a [ cond::return#1 ] -Uplifting [m1] best 817 combination reg byte a [ m1::return#0 ] reg byte y [ m1::i#0 ] reg byte a [ m1::return#1 ] -Uplifting [m2] best 695 combination reg byte a [ m2::return#0 ] reg byte y [ m2::i#0 ] reg byte a [ m2::return#1 ] -Uplifting [] best 695 combination +Uplifting [cond] best 1299 combination reg byte a [ cond::b#0 ] reg byte a [ cond::return#1 ] reg byte a [ cond::return#0 ] +Uplifting [m1] best 1175 combination reg byte a [ m1::i#0 ] reg byte a [ m1::return#1 ] reg byte a [ m1::return#0 ] +Uplifting [m2] best 1051 combination reg byte a [ m2::i#0 ] reg byte a [ m2::return#1 ] reg byte a [ m2::return#0 ] +Uplifting [main] best 751 combination reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$0 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 751 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -624,8 +624,8 @@ main: { .label SCREEN = $400 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 jmp __b1 // [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: @@ -633,7 +633,8 @@ main: { jmp __b1 // main::@1 __b1: - // [6] (byte) cond::b#0 ← (byte) main::i#2 + // [6] (byte) cond::b#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [7] call cond jsr cond // [8] (bool) cond::return#0 ← (bool) cond::return#1 @@ -647,7 +648,8 @@ main: { jmp __b3 // main::@3 __b3: - // [11] (byte) m2::i#0 ← (byte) main::i#2 + // [11] (byte) m2::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [12] call m2 jsr m2 // [13] (byte) m2::return#0 ← (byte) m2::return#1 @@ -662,12 +664,12 @@ main: { jmp __b4 // main::@4 __b4: - // [16] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [18] if((byte) main::i#1!=(byte) $a) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$a + // [16] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + // [18] if((byte) main::i#1!=(byte) $a) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$a bne __b1_from___b4 jmp __breturn // main::@return @@ -676,7 +678,8 @@ main: { rts // main::@2 __b2: - // [20] (byte) m1::i#0 ← (byte) main::i#2 + // [20] (byte) m1::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [21] call m1 jsr m1 // [22] (byte) m1::return#0 ← (byte) m1::return#1 @@ -687,10 +690,9 @@ main: { jmp __b4_from___b6 } // m1 -// m1(byte register(Y) i) +// m1(byte register(A) i) m1: { - // [24] (byte) m1::return#1 ← (byte) 5 + (byte) m1::i#0 -- vbuaa=vbuc1_plus_vbuyy - tya + // [24] (byte) m1::return#1 ← (byte) 5 + (byte) m1::i#0 -- vbuaa=vbuc1_plus_vbuaa clc adc #5 jmp __breturn @@ -700,10 +702,9 @@ m1: { rts } // m2 -// m2(byte register(Y) i) +// m2(byte register(A) i) m2: { - // [26] (byte) m2::return#1 ← (byte) $a + (byte) m2::i#0 -- vbuaa=vbuc1_plus_vbuyy - tya + // [26] (byte) m2::return#1 ← (byte) $a + (byte) m2::i#0 -- vbuaa=vbuc1_plus_vbuaa clc adc #$a jmp __breturn @@ -713,10 +714,10 @@ m2: { rts } // cond -// cond(byte register(Y) b) +// cond(byte register(A) b) cond: { - // [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 -- vboaa=vbuyy_lt_vbuc1 - cpy #5 + // [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 -- vboaa=vbuaa_lt_vbuc1 + cmp #5 lda #0 rol eor #1 @@ -778,29 +779,29 @@ FINAL SYMBOL TABLE (bool()) cond((byte) cond::b) (label) cond::@return (byte) cond::b -(byte) cond::b#0 reg byte y 13.0 +(byte) cond::b#0 reg byte a 1102.0 (bool) cond::return -(bool) cond::return#0 reg byte a 22.0 -(bool) cond::return#1 reg byte a 4.333333333333333 +(bool) cond::return#0 reg byte a 202.0 +(bool) cond::return#1 reg byte a 367.33333333333337 (byte()) m1((byte) m1::i) (label) m1::@return (byte) m1::i -(byte) m1::i#0 reg byte y 13.0 +(byte) m1::i#0 reg byte a 1102.0 (byte) m1::return -(byte) m1::return#0 reg byte a 22.0 -(byte) m1::return#1 reg byte a 4.333333333333333 +(byte) m1::return#0 reg byte a 202.0 +(byte) m1::return#1 reg byte a 367.33333333333337 (byte()) m2((byte) m2::i) (label) m2::@return (byte) m2::i -(byte) m2::i#0 reg byte y 13.0 +(byte) m2::i#0 reg byte a 1102.0 (byte) m2::return -(byte) m2::return#0 reg byte a 22.0 -(byte) m2::return#1 reg byte a 4.333333333333333 +(byte) m2::return#0 reg byte a 202.0 +(byte) m2::return#1 reg byte a 367.33333333333337 (void()) main() -(bool~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 33.0 +(bool~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -811,17 +812,17 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.125 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 37.875 -reg byte y [ main::i#2 main::i#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$5 main::$4 main::$2 ] -reg byte y [ cond::b#0 ] +reg byte a [ cond::b#0 ] reg byte a [ cond::return#0 ] reg byte a [ main::$0 ] -reg byte y [ m2::i#0 ] +reg byte a [ m2::i#0 ] reg byte a [ m2::return#0 ] -reg byte y [ m1::i#0 ] +reg byte a [ m1::i#0 ] reg byte a [ m1::return#0 ] reg byte a [ m1::return#1 ] reg byte a [ m2::return#1 ] @@ -829,7 +830,7 @@ reg byte a [ cond::return#1 ] FINAL ASSEMBLER -Score: 434 +Score: 490 // File Comments // Tests the ternary operator - when the condition is constant @@ -849,14 +850,15 @@ Score: 434 main: { .label SCREEN = $400 // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 // [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy // main::@1 __b1: // cond(i) - // [6] (byte) cond::b#0 ← (byte) main::i#2 + // [6] (byte) cond::b#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [7] call cond jsr cond // [8] (bool) cond::return#0 ← (bool) cond::return#1 @@ -868,7 +870,8 @@ main: { bne __b2 // main::@3 // m2(i) - // [11] (byte) m2::i#0 ← (byte) main::i#2 + // [11] (byte) m2::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [12] call m2 jsr m2 // [13] (byte) m2::return#0 ← (byte) m2::return#1 @@ -880,13 +883,13 @@ main: { // main::@4 __b4: // SCREEN[i] = cond(i)?m1(i):m2(i) - // [16] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y + // [16] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x // for( byte i: 0..9) - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [18] if((byte) main::i#1!=(byte) $a) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$a + // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + // [18] if((byte) main::i#1!=(byte) $a) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$a bne __b1 // main::@return // } @@ -895,7 +898,8 @@ main: { // main::@2 __b2: // m1(i) - // [20] (byte) m1::i#0 ← (byte) main::i#2 + // [20] (byte) m1::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx + txa // [21] call m1 jsr m1 // [22] (byte) m1::return#0 ← (byte) m1::return#1 @@ -905,11 +909,10 @@ main: { jmp __b4 } // m1 -// m1(byte register(Y) i) +// m1(byte register(A) i) m1: { // 5+i - // [24] (byte) m1::return#1 ← (byte) 5 + (byte) m1::i#0 -- vbuaa=vbuc1_plus_vbuyy - tya + // [24] (byte) m1::return#1 ← (byte) 5 + (byte) m1::i#0 -- vbuaa=vbuc1_plus_vbuaa clc adc #5 // m1::@return @@ -918,11 +921,10 @@ m1: { rts } // m2 -// m2(byte register(Y) i) +// m2(byte register(A) i) m2: { // 10+i - // [26] (byte) m2::return#1 ← (byte) $a + (byte) m2::i#0 -- vbuaa=vbuc1_plus_vbuyy - tya + // [26] (byte) m2::return#1 ← (byte) $a + (byte) m2::i#0 -- vbuaa=vbuc1_plus_vbuaa clc adc #$a // m2::@return @@ -931,11 +933,11 @@ m2: { rts } // cond -// cond(byte register(Y) b) +// cond(byte register(A) b) cond: { // b<5 - // [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 -- vboaa=vbuyy_lt_vbuc1 - cpy #5 + // [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 -- vboaa=vbuaa_lt_vbuc1 + cmp #5 lda #0 rol eor #1 diff --git a/src/test/ref/ternary-3.sym b/src/test/ref/ternary-3.sym index a4342e5aa..3f2ac625f 100644 --- a/src/test/ref/ternary-3.sym +++ b/src/test/ref/ternary-3.sym @@ -4,29 +4,29 @@ (bool()) cond((byte) cond::b) (label) cond::@return (byte) cond::b -(byte) cond::b#0 reg byte y 13.0 +(byte) cond::b#0 reg byte a 1102.0 (bool) cond::return -(bool) cond::return#0 reg byte a 22.0 -(bool) cond::return#1 reg byte a 4.333333333333333 +(bool) cond::return#0 reg byte a 202.0 +(bool) cond::return#1 reg byte a 367.33333333333337 (byte()) m1((byte) m1::i) (label) m1::@return (byte) m1::i -(byte) m1::i#0 reg byte y 13.0 +(byte) m1::i#0 reg byte a 1102.0 (byte) m1::return -(byte) m1::return#0 reg byte a 22.0 -(byte) m1::return#1 reg byte a 4.333333333333333 +(byte) m1::return#0 reg byte a 202.0 +(byte) m1::return#1 reg byte a 367.33333333333337 (byte()) m2((byte) m2::i) (label) m2::@return (byte) m2::i -(byte) m2::i#0 reg byte y 13.0 +(byte) m2::i#0 reg byte a 1102.0 (byte) m2::return -(byte) m2::return#0 reg byte a 22.0 -(byte) m2::return#1 reg byte a 4.333333333333333 +(byte) m2::return#0 reg byte a 202.0 +(byte) m2::return#1 reg byte a 367.33333333333337 (void()) main() -(bool~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 -(byte~) main::$5 reg byte a 33.0 +(bool~) main::$0 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 +(byte~) main::$5 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -37,17 +37,17 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 4.125 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 37.875 -reg byte y [ main::i#2 main::i#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$5 main::$4 main::$2 ] -reg byte y [ cond::b#0 ] +reg byte a [ cond::b#0 ] reg byte a [ cond::return#0 ] reg byte a [ main::$0 ] -reg byte y [ m2::i#0 ] +reg byte a [ m2::i#0 ] reg byte a [ m2::return#0 ] -reg byte y [ m1::i#0 ] +reg byte a [ m1::i#0 ] reg byte a [ m1::return#0 ] reg byte a [ m1::return#1 ] reg byte a [ m2::return#1 ] diff --git a/src/test/ref/ternary-inference.log b/src/test/ref/ternary-inference.log index 20b1dd2ab..6a4c89412 100644 --- a/src/test/ref/ternary-inference.log +++ b/src/test/ref/ternary-inference.log @@ -90,9 +90,9 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$2 ← (byte) $57 Inferred type updated to byte for (unumber~) main::$3 Inferred type updated to byte in (unumber~) main::$4 ← (byte~) main::$3 + (byte) main::i#3 -Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#5 +Alias main::i#2 = main::i#4 main::i#5 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte) 5) goto main::@2 Simple Condition (bool~) main::$5 [11] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 @@ -174,11 +174,11 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$3 11.0 -(byte~) main::$4 22.0 +(byte~) main::$3 101.0 +(byte~) main::$4 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 9.166666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 84.16666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -282,15 +282,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [9] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 25.67: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$4 ] 11: zp[1]:3 [ main::$3 ] +Uplift Scope [main] 235.67: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:4 [ main::$4 ] 101: zp[1]:3 [ main::$3 ] Uplift Scope [] Uplifting [main] best 498 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$4 ] reg byte a [ main::$3 ] @@ -409,15 +409,15 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 11.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$3 reg byte a 101.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/ternary-inference.sym b/src/test/ref/ternary-inference.sym index af12ed0e6..d06e1ff29 100644 --- a/src/test/ref/ternary-inference.sym +++ b/src/test/ref/ternary-inference.sym @@ -2,15 +2,15 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$3 reg byte a 11.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$3 reg byte a 101.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 9.166666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 84.16666666666666 (const byte*) main::screen = (byte*) 1024 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/test-comments-block.asm b/src/test/ref/test-comments-block.asm index 8bae4813b..ad9b4dba4 100644 --- a/src/test/ref/test-comments-block.asm +++ b/src/test/ref/test-comments-block.asm @@ -10,21 +10,21 @@ .const a = 'a' /* The program entry point */ main: { - ldy #0 ldx #0 + ldy #0 // Do some sums __b1: // sum(a, b) - txa + tya jsr sum // SCREEN[i++] = sum(a, b) // Output the result on the screen - sta SCREEN,y + sta SCREEN,x // SCREEN[i++] = sum(a, b); - iny - // for(byte b: 0..10 ) inx - cpx #$b + // for(byte b: 0..10 ) + iny + cpy #$b bne __b1 // } rts diff --git a/src/test/ref/test-comments-block.log b/src/test/ref/test-comments-block.log index 6968d3e03..5158253cc 100644 --- a/src/test/ref/test-comments-block.log +++ b/src/test/ref/test-comments-block.log @@ -98,10 +98,10 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) sum::return#0 = (byte) sum::return#3 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::b#2 = (byte) main::b#3 -Alias (byte) sum::return#1 = (byte) sum::r#0 (byte~) sum::$0 (byte) sum::return#4 (byte) sum::return#2 +Alias sum::return#0 = sum::return#3 +Alias main::i#2 = main::i#3 +Alias main::b#2 = main::b#3 +Alias sum::return#1 = sum::r#0 sum::$0 sum::return#4 sum::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sum::a#1 (byte) sum::a#0 Identical Phi Values (byte) sum::b#1 (byte) sum::b#0 @@ -193,21 +193,21 @@ sum::@return: scope:[sum] from sum VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 4.714285714285714 +(byte) main::b#1 151.5 +(byte) main::b#2 43.285714285714285 (byte) main::i -(byte) main::i#1 7.333333333333333 -(byte) main::i#2 5.5 +(byte) main::i#1 67.33333333333333 +(byte) main::i#2 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (byte) sum::a (byte) sum::b -(byte) sum::b#0 13.0 +(byte) sum::b#0 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 22.0 -(byte) sum::return#1 4.333333333333333 +(byte) sum::return#0 202.0 +(byte) sum::return#1 367.33333333333337 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -349,15 +349,13 @@ Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ sum::return#1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:6 [ main::$0 ] 21.21: zp[1]:2 [ main::b#2 main::b#1 ] 12.83: zp[1]:3 [ main::i#2 main::i#1 ] -Uplift Scope [sum] 22: zp[1]:5 [ sum::return#0 ] 13: zp[1]:4 [ sum::b#0 ] 4.33: zp[1]:7 [ sum::return#1 ] +Uplift Scope [sum] 1,102: zp[1]:4 [ sum::b#0 ] 367.33: zp[1]:7 [ sum::return#1 ] 202: zp[1]:5 [ sum::return#0 ] +Uplift Scope [main] 202: zp[1]:6 [ main::$0 ] 194.79: zp[1]:2 [ main::b#2 main::b#1 ] 117.83: zp[1]:3 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 630 combination reg byte a [ main::$0 ] zp[1]:2 [ main::b#2 main::b#1 ] reg byte y [ main::i#2 main::i#1 ] -Uplifting [sum] best 506 combination reg byte a [ sum::return#0 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#1 ] -Uplifting [] best 506 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::b#2 main::b#1 ] -Uplifting [main] best 406 combination reg byte x [ main::b#2 main::b#1 ] +Uplifting [sum] best 656 combination reg byte a [ sum::b#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#0 ] +Uplifting [main] best 406 combination reg byte a [ main::$0 ] reg byte y [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 406 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -394,10 +392,10 @@ __bend: main: { // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 - // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 + // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 jmp __b1 // Do some sums // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -407,8 +405,8 @@ main: { jmp __b1 // main::@1 __b1: - // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuxx - txa + // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuyy + tya // [7] call sum jsr sum // [8] (byte) sum::return#0 ← (byte) sum::return#1 @@ -416,15 +414,15 @@ main: { // main::@2 __b2: // [9] (byte~) main::$0 ← (byte) sum::return#0 - // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuyy=vbuaa + // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa // Output the result on the screen - sta SCREEN,y - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + sta SCREEN,x + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b bne __b1_from___b2 jmp __breturn // main::@return @@ -487,28 +485,28 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) a = (byte) 'a' (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 4.714285714285714 +(byte) main::b#1 reg byte y 151.5 +(byte) main::b#2 reg byte y 43.285714285714285 (byte) main::i -(byte) main::i#1 reg byte y 7.333333333333333 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte x 67.33333333333333 +(byte) main::i#2 reg byte x 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#0 reg byte a 13.0 +(byte) sum::b#0 reg byte a 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 -reg byte x [ main::b#2 main::b#1 ] -reg byte y [ main::i#2 main::i#1 ] +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#0 ] reg byte a [ main::$0 ] @@ -542,10 +540,10 @@ Score: 271 /* The program entry point */ main: { // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 - // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 + // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 // Do some sums // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy @@ -553,25 +551,25 @@ main: { // main::@1 __b1: // sum(a, b) - // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuxx - txa + // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuyy + tya // [7] call sum jsr sum // [8] (byte) sum::return#0 ← (byte) sum::return#1 // main::@2 // [9] (byte~) main::$0 ← (byte) sum::return#0 // SCREEN[i++] = sum(a, b) - // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuyy=vbuaa + // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa // Output the result on the screen - sta SCREEN,y + sta SCREEN,x // SCREEN[i++] = sum(a, b); - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // for(byte b: 0..10 ) - // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // for(byte b: 0..10 ) + // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b bne __b1 // main::@return // } diff --git a/src/test/ref/test-comments-block.sym b/src/test/ref/test-comments-block.sym index 2488bf556..536eefb58 100644 --- a/src/test/ref/test-comments-block.sym +++ b/src/test/ref/test-comments-block.sym @@ -4,28 +4,28 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) a = (byte) 'a' (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 4.714285714285714 +(byte) main::b#1 reg byte y 151.5 +(byte) main::b#2 reg byte y 43.285714285714285 (byte) main::i -(byte) main::i#1 reg byte y 7.333333333333333 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte x 67.33333333333333 +(byte) main::i#2 reg byte x 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#0 reg byte a 13.0 +(byte) sum::b#0 reg byte a 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 -reg byte x [ main::b#2 main::b#1 ] -reg byte y [ main::i#2 main::i#1 ] +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#0 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/test-comments-loop.log b/src/test/ref/test-comments-loop.log index aacc374af..8bbf148e7 100644 --- a/src/test/ref/test-comments-loop.log +++ b/src/test/ref/test-comments-loop.log @@ -105,8 +105,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 16.5 +(byte) main::b#1 151.5 +(byte) main::b#2 151.5 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -174,13 +174,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN + (byte) main::b#2) ← (byte) 'a' [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::b#2) ← (byte) 'a' [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::b#2 main::b#1 ] -Statement [6] *((const byte*) main::SCREEN + (byte) main::b#2) ← (byte) 'a' [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN + (byte) main::b#2) ← (byte) 'a' [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:2 [ main::b#2 main::b#1 ] +Uplift Scope [main] 303: zp[1]:2 [ main::b#2 main::b#1 ] Uplift Scope [] Uplifting [main] best 263 combination reg byte x [ main::b#2 main::b#1 ] @@ -274,8 +274,8 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 16.5 +(byte) main::b#1 reg byte x 151.5 +(byte) main::b#2 reg byte x 151.5 reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/test-comments-loop.sym b/src/test/ref/test-comments-loop.sym index f54afa366..052f19748 100644 --- a/src/test/ref/test-comments-loop.sym +++ b/src/test/ref/test-comments-loop.sym @@ -6,7 +6,7 @@ (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 16.5 +(byte) main::b#1 reg byte x 151.5 +(byte) main::b#2 reg byte x 151.5 reg byte x [ main::b#2 main::b#1 ] diff --git a/src/test/ref/test-comments-single.asm b/src/test/ref/test-comments-single.asm index c83780d50..05e542cc9 100644 --- a/src/test/ref/test-comments-single.asm +++ b/src/test/ref/test-comments-single.asm @@ -9,21 +9,21 @@ .const a = 'a' // The program entry point main: { - ldy #0 ldx #0 + ldy #0 // Do some sums __b1: // sum(a, b) - txa + tya jsr sum // SCREEN[i++] = sum(a, b) // Output the result on the screen - sta SCREEN,y + sta SCREEN,x // SCREEN[i++] = sum(a, b); - iny - // for(byte b: 0..10 ) inx - cpx #$b + // for(byte b: 0..10 ) + iny + cpy #$b bne __b1 // } rts diff --git a/src/test/ref/test-comments-single.log b/src/test/ref/test-comments-single.log index ecb457c04..80359f9e6 100644 --- a/src/test/ref/test-comments-single.log +++ b/src/test/ref/test-comments-single.log @@ -98,10 +98,10 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) sum::return#0 = (byte) sum::return#3 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::b#2 = (byte) main::b#3 -Alias (byte) sum::return#1 = (byte) sum::r#0 (byte~) sum::$0 (byte) sum::return#4 (byte) sum::return#2 +Alias sum::return#0 = sum::return#3 +Alias main::i#2 = main::i#3 +Alias main::b#2 = main::b#3 +Alias sum::return#1 = sum::r#0 sum::$0 sum::return#4 sum::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sum::a#1 (byte) sum::a#0 Identical Phi Values (byte) sum::b#1 (byte) sum::b#0 @@ -193,21 +193,21 @@ sum::@return: scope:[sum] from sum VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 4.714285714285714 +(byte) main::b#1 151.5 +(byte) main::b#2 43.285714285714285 (byte) main::i -(byte) main::i#1 7.333333333333333 -(byte) main::i#2 5.5 +(byte) main::i#1 67.33333333333333 +(byte) main::i#2 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (byte) sum::a (byte) sum::b -(byte) sum::b#0 13.0 +(byte) sum::b#0 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 22.0 -(byte) sum::return#1 4.333333333333333 +(byte) sum::return#0 202.0 +(byte) sum::return#1 367.33333333333337 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -347,15 +347,13 @@ Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ sum::return#1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:6 [ main::$0 ] 21.21: zp[1]:2 [ main::b#2 main::b#1 ] 12.83: zp[1]:3 [ main::i#2 main::i#1 ] -Uplift Scope [sum] 22: zp[1]:5 [ sum::return#0 ] 13: zp[1]:4 [ sum::b#0 ] 4.33: zp[1]:7 [ sum::return#1 ] +Uplift Scope [sum] 1,102: zp[1]:4 [ sum::b#0 ] 367.33: zp[1]:7 [ sum::return#1 ] 202: zp[1]:5 [ sum::return#0 ] +Uplift Scope [main] 202: zp[1]:6 [ main::$0 ] 194.79: zp[1]:2 [ main::b#2 main::b#1 ] 117.83: zp[1]:3 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 630 combination reg byte a [ main::$0 ] zp[1]:2 [ main::b#2 main::b#1 ] reg byte y [ main::i#2 main::i#1 ] -Uplifting [sum] best 506 combination reg byte a [ sum::return#0 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#1 ] -Uplifting [] best 506 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::b#2 main::b#1 ] -Uplifting [main] best 406 combination reg byte x [ main::b#2 main::b#1 ] +Uplifting [sum] best 656 combination reg byte a [ sum::b#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#0 ] +Uplifting [main] best 406 combination reg byte a [ main::$0 ] reg byte y [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 406 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -391,10 +389,10 @@ __bend: main: { // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 - // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 + // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 jmp __b1 // Do some sums // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -404,8 +402,8 @@ main: { jmp __b1 // main::@1 __b1: - // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuxx - txa + // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuyy + tya // [7] call sum jsr sum // [8] (byte) sum::return#0 ← (byte) sum::return#1 @@ -413,15 +411,15 @@ main: { // main::@2 __b2: // [9] (byte~) main::$0 ← (byte) sum::return#0 - // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuyy=vbuaa + // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa // Output the result on the screen - sta SCREEN,y - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + sta SCREEN,x + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b bne __b1_from___b2 jmp __breturn // main::@return @@ -483,28 +481,28 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte) a = (byte) 'a' (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 4.714285714285714 +(byte) main::b#1 reg byte y 151.5 +(byte) main::b#2 reg byte y 43.285714285714285 (byte) main::i -(byte) main::i#1 reg byte y 7.333333333333333 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte x 67.33333333333333 +(byte) main::i#2 reg byte x 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#0 reg byte a 13.0 +(byte) sum::b#0 reg byte a 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 -reg byte x [ main::b#2 main::b#1 ] -reg byte y [ main::i#2 main::i#1 ] +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#0 ] reg byte a [ main::$0 ] @@ -537,10 +535,10 @@ Score: 271 // The program entry point main: { // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 - ldy #0 - // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 + // [5] phi (byte) main::b#2 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 // Do some sums // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy @@ -548,25 +546,25 @@ main: { // main::@1 __b1: // sum(a, b) - // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuxx - txa + // [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuaa=vbuyy + tya // [7] call sum jsr sum // [8] (byte) sum::return#0 ← (byte) sum::return#1 // main::@2 // [9] (byte~) main::$0 ← (byte) sum::return#0 // SCREEN[i++] = sum(a, b) - // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuyy=vbuaa + // [10] *((const byte*) SCREEN + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa // Output the result on the screen - sta SCREEN,y + sta SCREEN,x // SCREEN[i++] = sum(a, b); - // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy - iny - // for(byte b: 0..10 ) - // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + // [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // for(byte b: 0..10 ) + // [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + // [13] if((byte) main::b#1!=(byte) $b) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b bne __b1 // main::@return // } diff --git a/src/test/ref/test-comments-single.sym b/src/test/ref/test-comments-single.sym index 2488bf556..536eefb58 100644 --- a/src/test/ref/test-comments-single.sym +++ b/src/test/ref/test-comments-single.sym @@ -4,28 +4,28 @@ (const byte*) SCREEN = (byte*) 1024 (const byte) a = (byte) 'a' (void()) main() -(byte~) main::$0 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::b -(byte) main::b#1 reg byte x 16.5 -(byte) main::b#2 reg byte x 4.714285714285714 +(byte) main::b#1 reg byte y 151.5 +(byte) main::b#2 reg byte y 43.285714285714285 (byte) main::i -(byte) main::i#1 reg byte y 7.333333333333333 -(byte) main::i#2 reg byte y 5.5 +(byte) main::i#1 reg byte x 67.33333333333333 +(byte) main::i#2 reg byte x 50.5 (byte()) sum((byte) sum::a , (byte) sum::b) (label) sum::@return (byte) sum::a (byte) sum::b -(byte) sum::b#0 reg byte a 13.0 +(byte) sum::b#0 reg byte a 1102.0 (byte) sum::r (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 -reg byte x [ main::b#2 main::b#1 ] -reg byte y [ main::i#2 main::i#1 ] +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] reg byte a [ sum::return#0 ] reg byte a [ main::$0 ] diff --git a/src/test/ref/test-comments-usage.log b/src/test/ref/test-comments-usage.log index 47eeae13a..0d6dd0381 100644 --- a/src/test/ref/test-comments-usage.log +++ b/src/test/ref/test-comments-usage.log @@ -107,7 +107,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/test-comparisons-sword.asm b/src/test/ref/test-comparisons-sword.asm index 0e7687269..9ffb92bbe 100644 --- a/src/test/ref/test-comparisons-sword.asm +++ b/src/test/ref/test-comparisons-sword.asm @@ -12,12 +12,13 @@ .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = 8 - .label print_line_cursor = 5 + .label print_char_cursor = 9 + .label print_line_cursor = 6 main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // print_cls() @@ -54,13 +55,15 @@ main: { sta.z w2 lda swords+1,y sta.z w2+1 - ldx #0 + lda #0 + sta.z op __b3: // compare(w1,w2,op) lda.z w1 sta.z compare.w1 lda.z w1+1 sta.z compare.w1+1 + lda.z op jsr compare // if(++s==3) inc.z s @@ -77,8 +80,9 @@ main: { sta.z s __b4: // for( byte op: 0..5 ) - inx - cpx #6 + inc.z op + lda #6 + cmp.z op bne __b3 // for( byte j: 0..2) inc.z j @@ -117,35 +121,35 @@ print_ln: { rts } // Compare two words using an operator -// compare(signed word zp($a) w1, signed word zp($11) w2, byte register(X) op) +// compare(signed word zp($b) w1, signed word zp($11) w2, byte register(A) op) compare: { - .label w1 = $a + .label w1 = $b .label w2 = $11 .label ops = $d - .label r = 7 + .label r = 8 // if(op==LT) - cpx #LT + cmp #LT bne !__b1+ jmp __b1 !__b1: // if(op==LE) - cpx #LE + cmp #LE bne !__b2+ jmp __b2 !__b2: // if(op==GT) - cpx #GT + cmp #GT bne !__b3+ jmp __b3 !__b3: // if(op==GE) - cpx #GE + cmp #GE beq __b4 // if(op==EQ) - cpx #EQ + cmp #EQ beq __b5 // if(op==NE) - cpx #NE + cmp #NE bne b2 // if(w1!=w2) lda.z w1 @@ -327,9 +331,9 @@ print_char: { rts } // Print a signed word as HEX -// print_sword(signed word zp($a) w) +// print_sword(signed word zp($b) w) print_sword: { - .label w = $a + .label w = $b // if(w<0) lda.z w+1 bmi __b1 @@ -356,26 +360,23 @@ print_sword: { jmp __b2 } // Print a word as HEX -// print_word(word zp($a) w) +// print_word(word zp($b) w) print_word: { - .label w = $a + .label w = $b // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -387,10 +388,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/test-comparisons-sword.log b/src/test/ref/test-comparisons-sword.log index 0eaa70f94..a36e4498b 100644 --- a/src/test/ref/test-comparisons-sword.log +++ b/src/test/ref/test-comparisons-sword.log @@ -1264,85 +1264,85 @@ Inversing boolean not [202] (bool~) compare::$14 ← (signed word) compare::w1#5 Inversing boolean not [206] (bool~) compare::$6 ← (byte) compare::op#6 != (const byte) NE from [205] (bool~) compare::$5 ← (byte) compare::op#6 == (const byte) NE Inversing boolean not [210] (bool~) compare::$12 ← (signed word) compare::w1#6 == (signed word) compare::w2#6 from [209] (bool~) compare::$11 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#68 (byte*) print_screen#4 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#56 (byte*) print_char_cursor#30 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#32 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#58 = (byte*) print_char_cursor#70 (byte*) print_char_cursor#59 -Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#5 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#6 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#36 (byte*) print_char_cursor#8 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#39 (byte*) print_char_cursor#11 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 (byte*) print_char_cursor#14 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#16 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#17 (byte*) print_char_cursor#45 (byte*) print_line_cursor#4 (byte*) print_char_cursor#18 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#46 -Alias (byte) main::s#3 = (byte) main::s#4 -Alias (byte) main::op#2 = (byte) main::op#4 (byte) main::op#6 (byte) main::op#5 -Alias (signed word) main::w1#1 = (signed word) main::w1#5 (signed word) main::w1#7 (signed word) main::w1#6 -Alias (signed word) main::w2#1 = (signed word) main::w2#3 (signed word) main::w2#5 (signed word) main::w2#4 -Alias (byte) main::j#5 = (byte) main::j#7 (byte) main::j#8 (byte) main::j#6 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#24 -Alias (byte) main::i#6 = (byte) main::i#8 (byte) main::i#9 (byte) main::i#7 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#65 -Alias (byte) main::s#2 = (byte) main::s#9 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#48 -Alias (byte) main::j#3 = (byte) main::j#4 -Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 -Alias (signed word) main::w1#3 = (signed word) main::w1#4 -Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#73 -Alias (byte) main::s#10 = (byte) main::s#8 (byte) main::s#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#27 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#66 -Alias (signed word) compare::w1#1 = (signed word) compare::w1#8 (signed word) compare::w1#9 (signed word) compare::w1#2 (signed word) compare::w1#10 (signed word) compare::w1#3 (signed word) compare::w1#11 (signed word) compare::w1#4 (signed word) compare::w1#12 (signed word) compare::w1#5 (signed word) compare::w1#13 (signed word) compare::w1#6 (signed word) compare::w1#20 (signed word) compare::w1#21 (signed word) compare::w1#22 (signed word) compare::w1#23 (signed word) compare::w1#24 (signed word) compare::w1#25 -Alias (signed word) compare::w2#1 = (signed word) compare::w2#8 (signed word) compare::w2#9 (signed word) compare::w2#2 (signed word) compare::w2#10 (signed word) compare::w2#3 (signed word) compare::w2#11 (signed word) compare::w2#4 (signed word) compare::w2#12 (signed word) compare::w2#5 (signed word) compare::w2#13 (signed word) compare::w2#6 (signed word) compare::w2#22 (signed word) compare::w2#23 (signed word) compare::w2#24 (signed word) compare::w2#25 (signed word) compare::w2#26 (signed word) compare::w2#27 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#94 (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 (byte*) print_char_cursor#92 (byte*) print_char_cursor#98 (byte*) print_char_cursor#91 (byte*) print_char_cursor#99 (byte*) print_char_cursor#89 (byte*) print_char_cursor#83 (byte*) print_char_cursor#87 (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#88 (byte*) print_char_cursor#90 (byte*) print_char_cursor#93 (byte*) print_char_cursor#95 -Alias (byte) compare::r#0 = (byte) compare::r#24 (byte) compare::r#25 (byte) compare::r#23 (byte) compare::r#26 (byte) compare::r#22 (byte) compare::r#27 (byte) compare::r#21 (byte) compare::r#18 (byte) compare::r#20 (byte) compare::r#11 (byte) compare::r#19 -Alias (byte) compare::op#1 = (byte) compare::op#2 (byte) compare::op#3 (byte) compare::op#4 (byte) compare::op#5 (byte) compare::op#6 -Alias (byte*) compare::ops#0 = (byte*) compare::ops#13 (byte*) compare::ops#12 (byte*) compare::ops#11 (byte*) compare::ops#10 (byte*) compare::ops#9 -Alias (byte*) compare::ops#7 = (byte*) compare::ops#8 -Alias (signed word) compare::w2#14 = (signed word) compare::w2#15 (signed word) compare::w2#7 -Alias (byte) compare::r#10 = (byte) compare::r#9 (byte) compare::r#8 (byte) compare::r#7 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#54 (byte*) print_char_cursor#27 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#55 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#21 print_char_cursor#68 print_screen#4 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#2 = print_char_cursor#29 print_char_cursor#56 print_char_cursor#30 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#3 print_line_cursor#11 print_char_cursor#32 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#58 = print_char_cursor#70 print_char_cursor#59 +Alias print_sword::w#3 = print_sword::w#6 print_sword::w#4 print_sword::w#8 print_sword::w#7 +Alias print_char_cursor#33 = print_char_cursor#5 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#34 = print_char_cursor#6 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#35 = print_char_cursor#7 print_char_cursor#36 print_char_cursor#8 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#37 = print_char_cursor#9 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#10 = print_char_cursor#38 print_char_cursor#39 print_char_cursor#11 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#12 = print_char_cursor#40 +Alias print_char_cursor#13 = print_char_cursor#41 print_char_cursor#42 print_char_cursor#14 +Alias print_char_cursor#15 = print_char_cursor#44 print_char_cursor#16 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#17 print_char_cursor#45 print_line_cursor#4 print_char_cursor#18 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#19 = print_char_cursor#46 +Alias main::s#3 = main::s#4 +Alias main::op#2 = main::op#4 main::op#6 main::op#5 +Alias main::w1#1 = main::w1#5 main::w1#7 main::w1#6 +Alias main::w2#1 = main::w2#3 main::w2#5 main::w2#4 +Alias main::j#5 = main::j#7 main::j#8 main::j#6 +Alias print_line_cursor#19 = print_line_cursor#22 print_line_cursor#24 +Alias main::i#6 = main::i#8 main::i#9 main::i#7 +Alias print_char_cursor#20 = print_char_cursor#47 print_char_cursor#65 +Alias main::s#2 = main::s#9 +Alias print_line_cursor#14 = print_line_cursor#6 +Alias print_char_cursor#21 = print_char_cursor#48 +Alias main::j#3 = main::j#4 +Alias main::i#3 = main::i#4 main::i#5 +Alias main::w1#3 = main::w1#4 +Alias print_char_cursor#72 = print_char_cursor#82 print_char_cursor#73 +Alias main::s#10 = main::s#8 main::s#6 +Alias print_line_cursor#23 = print_line_cursor#25 print_line_cursor#27 +Alias print_line_cursor#15 = print_line_cursor#20 print_line_cursor#7 +Alias print_char_cursor#22 = print_char_cursor#49 print_char_cursor#66 +Alias compare::w1#1 = compare::w1#8 compare::w1#9 compare::w1#2 compare::w1#10 compare::w1#3 compare::w1#11 compare::w1#4 compare::w1#12 compare::w1#5 compare::w1#13 compare::w1#6 compare::w1#20 compare::w1#21 compare::w1#22 compare::w1#23 compare::w1#24 compare::w1#25 +Alias compare::w2#1 = compare::w2#8 compare::w2#9 compare::w2#2 compare::w2#10 compare::w2#3 compare::w2#11 compare::w2#4 compare::w2#12 compare::w2#5 compare::w2#13 compare::w2#6 compare::w2#22 compare::w2#23 compare::w2#24 compare::w2#25 compare::w2#26 compare::w2#27 +Alias print_char_cursor#74 = print_char_cursor#94 print_char_cursor#96 print_char_cursor#97 print_char_cursor#92 print_char_cursor#98 print_char_cursor#91 print_char_cursor#99 print_char_cursor#89 print_char_cursor#83 print_char_cursor#87 print_char_cursor#84 print_char_cursor#85 print_char_cursor#86 print_char_cursor#88 print_char_cursor#90 print_char_cursor#93 print_char_cursor#95 +Alias compare::r#0 = compare::r#24 compare::r#25 compare::r#23 compare::r#26 compare::r#22 compare::r#27 compare::r#21 compare::r#18 compare::r#20 compare::r#11 compare::r#19 +Alias compare::op#1 = compare::op#2 compare::op#3 compare::op#4 compare::op#5 compare::op#6 +Alias compare::ops#0 = compare::ops#13 compare::ops#12 compare::ops#11 compare::ops#10 compare::ops#9 +Alias compare::ops#7 = compare::ops#8 +Alias compare::w2#14 = compare::w2#15 compare::w2#7 +Alias compare::r#10 = compare::r#9 compare::r#8 compare::r#7 +Alias print_char_cursor#23 = print_char_cursor#50 +Alias print_char_cursor#24 = print_char_cursor#51 +Alias print_char_cursor#25 = print_char_cursor#52 +Alias print_char_cursor#26 = print_char_cursor#53 print_char_cursor#54 print_char_cursor#27 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#28 = print_char_cursor#55 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::op#2 = (byte) main::op#3 -Alias (signed word) main::w1#1 = (signed word) main::w1#3 -Alias (signed word) main::w2#1 = (signed word) main::w2#2 -Alias (byte) main::j#3 = (byte) main::j#5 -Alias (byte) main::i#3 = (byte) main::i#6 -Alias (signed word) compare::w1#1 = (signed word) compare::w1#14 (signed word) compare::w1#15 (signed word) compare::w1#16 (signed word) compare::w1#17 (signed word) compare::w1#18 (signed word) compare::w1#19 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 -Alias (signed word) compare::w2#1 = (signed word) compare::w2#16 (signed word) compare::w2#17 (signed word) compare::w2#18 (signed word) compare::w2#19 (signed word) compare::w2#20 (signed word) compare::w2#21 +Alias main::op#2 = main::op#3 +Alias main::w1#1 = main::w1#3 +Alias main::w2#1 = main::w2#2 +Alias main::j#3 = main::j#5 +Alias main::i#3 = main::i#6 +Alias compare::w1#1 = compare::w1#14 compare::w1#15 compare::w1#16 compare::w1#17 compare::w1#18 compare::w1#19 +Alias print_char_cursor#74 = print_char_cursor#75 print_char_cursor#76 print_char_cursor#77 print_char_cursor#78 print_char_cursor#79 print_char_cursor#80 +Alias compare::w2#1 = compare::w2#16 compare::w2#17 compare::w2#18 compare::w2#19 compare::w2#20 compare::w2#21 Successful SSA optimization Pass2AliasElimination -Alias (signed word) compare::w1#1 = (signed word) compare::w1#7 -Alias (byte*) print_char_cursor#67 = (byte*) print_char_cursor#74 -Alias (signed word) compare::w2#1 = (signed word) compare::w2#14 +Alias compare::w1#1 = compare::w1#7 +Alias print_char_cursor#67 = print_char_cursor#74 +Alias compare::w2#1 = compare::w2#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1995,101 +1995,101 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) compare((signed word) compare::w1 , (signed word) compare::w2 , (byte) compare::op) (byte) compare::op -(byte) compare::op#0 168.8333333333334 +(byte) compare::op#0 101667.83333333331 (byte*) compare::ops -(byte*) compare::ops#7 0.6666666666666666 +(byte*) compare::ops#7 33333.666666666664 (byte) compare::r -(byte) compare::r#10 1.9999999999999996 -(byte) compare::r#12 2.0 -(byte) compare::r#13 2.0 -(byte) compare::r#14 2.0 -(byte) compare::r#15 2.0 -(byte) compare::r#16 2.0 -(byte) compare::r#17 2.0 +(byte) compare::r#10 100001.0 +(byte) compare::r#12 100001.0 +(byte) compare::r#13 100001.0 +(byte) compare::r#14 100001.0 +(byte) compare::r#15 100001.0 +(byte) compare::r#16 100001.0 +(byte) compare::r#17 100001.0 (signed word) compare::w1 -(signed word) compare::w1#0 36.249999999999986 +(signed word) compare::w1#0 25357.428571428572 (signed word) compare::w2 -(signed word) compare::w2#0 32.741935483870954 +(signed word) compare::w2#0 22903.483870967746 (void()) main() -(byte~) main::$8 22.0 -(byte~) main::$9 202.0 +(byte~) main::$8 202.0 +(byte~) main::$9 2002.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 1.5714285714285716 +(byte) main::i#1 151.5 +(byte) main::i#2 14.428571428571427 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#2 18.9375 +(byte) main::j#1 1501.5 +(byte) main::j#2 187.6875 (byte) main::op -(byte) main::op#1 1501.5 -(byte) main::op#2 273.0 +(byte) main::op#1 15001.5 +(byte) main::op#2 2727.5454545454545 (byte) main::s -(byte) main::s#1 1501.5 -(byte) main::s#10 302.0 -(byte) main::s#3 420.59999999999997 -(byte) main::s#5 71.0 -(byte) main::s#7 7.333333333333333 +(byte) main::s#1 15001.5 +(byte) main::s#10 3014.857142857143 +(byte) main::s#3 4200.6 +(byte) main::s#5 701.0 +(byte) main::s#7 67.33333333333333 (signed word) main::w1 -(signed word) main::w1#0 53.26315789473684 +(signed word) main::w1#0 531.6842105263157 (signed word) main::w2 -(signed word) main::w2#0 78.71428571428571 +(signed word) main::w2#0 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2.00000002E8 +(byte~) print_byte::$2 2.00000002E8 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 2.0000002E7 +(byte) print_byte::b#1 2.0000002E7 +(byte) print_byte::b#2 5.5000001E7 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 8.0 +(byte) print_char::ch#2 2.00000002E8 +(byte) print_char::ch#3 2.00000002E8 +(byte) print_char::ch#4 200002.0 +(byte) print_char::ch#5 1.200100004E9 (byte*) print_char_cursor -(byte*) print_char_cursor#1 10001.0 -(byte*) print_char_cursor#115 2002.0 -(byte*) print_char_cursor#15 297.62162162162167 -(byte*) print_char_cursor#2 5001.166666666666 -(byte*) print_char_cursor#43 7.0 -(byte*) print_char_cursor#58 2.0 -(byte*) print_char_cursor#64 36.800000000000004 -(byte*) print_char_cursor#71 71.0 -(byte*) print_char_cursor#72 445.0 -(byte*) print_char_cursor#81 7.333333333333333 +(byte*) print_char_cursor#1 1.0000000001E10 +(byte*) print_char_cursor#115 20002.0 +(byte*) print_char_cursor#15 5.948945964864865E7 +(byte*) print_char_cursor#2 5.000183334166666E9 +(byte*) print_char_cursor#43 1.1010500035E9 +(byte*) print_char_cursor#58 550001.0 +(byte*) print_char_cursor#64 3700.1000000000004 +(byte*) print_char_cursor#71 701.0 +(byte*) print_char_cursor#72 4443.571428571429 +(byte*) print_char_cursor#81 67.33333333333333 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 6401.0 -(byte*) print_line_cursor#19 233.8888888888889 -(byte*) print_line_cursor#23 445.0 -(byte*) print_line_cursor#26 71.0 -(byte*) print_line_cursor#28 7.333333333333333 -(byte*) print_line_cursor#9 20004.0 +(byte*) print_line_cursor#1 6.00004001E8 +(byte*) print_line_cursor#19 13444.888888888889 +(byte*) print_line_cursor#23 4443.571428571429 +(byte*) print_line_cursor#26 701.0 +(byte*) print_line_cursor#28 67.33333333333333 +(byte*) print_line_cursor#9 2.000100003E9 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 20002.0 -(byte*) print_str::str#1 2.0 -(byte*) print_str::str#2 10001.5 +(byte*) print_str::str#0 2.0000000002E10 +(byte*) print_str::str#1 550001.0 +(byte*) print_str::str#2 1.000025000125E10 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.0 -(signed word) print_sword::w#2 4.0 -(signed word) print_sword::w#3 1.6666666666666665 -(signed word) print_sword::w#5 4.0 +(signed word) print_sword::w#0 2000002.0 +(signed word) print_sword::w#1 200002.0 +(signed word) print_sword::w#2 200002.0 +(signed word) print_sword::w#3 533334.1666666667 +(signed word) print_sword::w#5 2000002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 7000001.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -3053,78 +3053,74 @@ memset: { swords: .word -$6fed, $12, $7fed REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Statement [8] (signed word) main::w1#0 ← *((const signed word*) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word*) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [11] (signed word) main::w2#0 ← *((const signed word*) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word*) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] { } ) always clobbers reg byte a +Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::op#2 main::op#1 ] -Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a -Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ) always clobbers reg byte a +Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] { } ) always clobbers reg byte a +Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [45] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a -Statement [49] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_sword::w#2 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#2 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@20 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [57] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@21 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [60] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@22 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [63] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [66] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [70] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#5 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] ) always clobbers reg byte y +Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a +Statement [49] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_sword::w#2 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#2 print_char_cursor#2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [54] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@20 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [57] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@21 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [60] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@22 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [63] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [66] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [70] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#5 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char::ch#4 = print_char::ch#5 compare::r#10 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#43 = print_char_cursor#58 print_char_cursor#64 } } main:2::compare:16::print_sword:50::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#43 = print_char_cursor#58 print_char_cursor#64 } } main:2::compare:16::print_sword:50::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::op#2 main::op#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#58 print_sword::w#3 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#58 print_sword::w#3 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#58 print_sword::w#3 ] ) always clobbers reg byte a -Statement [78] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] ) always clobbers reg byte a -Statement [83] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_sword::w#0 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] ) always clobbers reg byte a -Statement [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:46::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:50::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [86] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#15 print_byte::b#1 ] ( main:2::compare:16::print_sword:46::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#1 ] main:2::compare:16::print_sword:50::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#1 ] ) always clobbers reg byte a -Statement [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#58 print_sword::w#3 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#58 print_sword::w#3 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#58 print_sword::w#3 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [78] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [83] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_sword::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] ) always clobbers reg byte a -Statement [99] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [101] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [109] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [111] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a -Statement [8] (signed word) main::w1#0 ← *((const signed word*) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a -Statement [11] (signed word) main::w2#0 ← *((const signed word*) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a -Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a -Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ) always clobbers reg byte a -Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a -Statement [49] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_sword::w#2 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#2 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@20 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [57] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@21 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [60] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@22 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [63] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [66] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [70] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#5 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] ) always clobbers reg byte y -Statement [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#58 print_sword::w#3 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#58 print_sword::w#3 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#58 print_sword::w#3 ] ) always clobbers reg byte a -Statement [78] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] ) always clobbers reg byte a -Statement [83] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_sword::w#0 ] main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] ) always clobbers reg byte a -Statement [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:46::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:50::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [86] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#15 print_byte::b#1 ] ( main:2::compare:16::print_sword:46::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#1 ] main:2::compare:16::print_sword:50::print_word:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#1 ] ) always clobbers reg byte a -Statement [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] ) always clobbers reg byte a -Statement [99] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [101] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [109] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [111] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte a +Statement [99] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [101] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [109] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [111] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] { } ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word*) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] { } ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word*) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] { } ) always clobbers reg byte a +Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] { } ) always clobbers reg byte a +Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [45] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#1 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } ) always clobbers reg byte a +Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a +Statement [49] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_sword::w#2 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#2 print_char_cursor#2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [54] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@20 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [57] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@21 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [60] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@22 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [63] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [66] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [70] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#5 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char::ch#4 = print_char::ch#5 compare::r#10 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#43 = print_char_cursor#58 print_char_cursor#64 } } main:2::compare:16::print_sword:50::print_char:76 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#43 = print_char_cursor#58 print_char_cursor#64 } } main:2::compare:16::print_sword:50::print_char:82 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:92 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#43 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87::print_char:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte y +Statement [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#58 print_sword::w#3 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#58 print_sword::w#3 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#58 print_sword::w#3 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [78] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_word::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [83] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_sword::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } } main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } } ) always clobbers reg byte a +Statement [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte a +Statement [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:46::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:85 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:46::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#15 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_sword::w#1 = print_sword::w#3 compare::w1#0 main::w1#0 } { print_char_cursor#58 = print_char_cursor#64 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } main:2::compare:16::print_sword:50::print_word:79::print_byte:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_sword::w#2 = print_sword::w#3 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#58 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#15 = print_char_cursor#43 } } ) always clobbers reg byte a +Statement [99] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [101] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [109] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [111] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::op#2 main::op#1 ] : zp[1]:4 , reg byte x , @@ -3150,53 +3146,50 @@ Potential registers zp[1]:34 [ print_byte::$0 ] : zp[1]:34 , reg byte a , reg by Potential registers zp[1]:35 [ print_byte::$2 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] 17,870.92: zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] -Uplift Scope [print_str] 30,005.5: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplift Scope [main] 2,302.43: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 1,774.5: zp[1]:4 [ main::op#2 main::op#1 ] 202: zp[1]:24 [ main::$9 ] 170.44: zp[1]:3 [ main::j#2 main::j#1 ] 78.71: zp[2]:25 [ main::w2#0 ] 53.26: zp[2]:22 [ main::w1#0 ] 22: zp[1]:21 [ main::$8 ] 18.07: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [compare] 168.83: zp[1]:31 [ compare::op#0 ] 36.25: zp[2]:27 [ compare::w1#0 ] 32.74: zp[2]:29 [ compare::w2#0 ] 14: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 0.67: zp[2]:8 [ compare::ops#7 ] -Uplift Scope [memset] 36.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 20: zp[1]:11 [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_byte] 10: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:34 [ print_byte::$0 ] 4: zp[1]:35 [ print_byte::$2 ] -Uplift Scope [print_sword] 17.67: zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplift Scope [print_word] 2: zp[2]:32 [ print_word::w#0 ] +Uplift Scope [print_str] 30,000,800,004.25: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] +Uplift Scope [] 16,161,301,713.32: zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] 2,600,122,660.79: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +Uplift Scope [print_char] 1,600,300,010: zp[1]:11 [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_byte] 200,000,002: zp[1]:34 [ print_byte::$0 ] 200,000,002: zp[1]:35 [ print_byte::$2 ] 95,000,005: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 7,000,001: zp[2]:32 [ print_word::w#0 ] +Uplift Scope [print_sword] 4,933,342.17: zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplift Scope [compare] 700,007: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 101,667.83: zp[1]:31 [ compare::op#0 ] 33,333.67: zp[2]:8 [ compare::ops#7 ] 25,357.43: zp[2]:27 [ compare::w1#0 ] 22,903.48: zp[2]:29 [ compare::w2#0 ] +Uplift Scope [main] 22,985.29: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 17,729.05: zp[1]:4 [ main::op#2 main::op#1 ] 2,002: zp[1]:24 [ main::$9 ] 1,689.19: zp[1]:3 [ main::j#2 main::j#1 ] 785.86: zp[2]:25 [ main::w2#0 ] 531.68: zp[2]:22 [ main::w1#0 ] 202: zp[1]:21 [ main::$8 ] 165.93: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 1156365 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] Uplifting [print_str] best 1156365 combination zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplifting [main] best 1143925 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [] best 1156365 combination zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +Uplifting [print_char] best 1156347 combination reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 1156329 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 1156329 combination zp[2]:32 [ print_word::w#0 ] +Uplifting [print_sword] best 1156329 combination zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [compare] best 1153311 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ compare::op#0 ] zp[2]:8 [ compare::ops#7 ] zp[2]:27 [ compare::w1#0 ] zp[2]:29 [ compare::w2#0 ] +Uplifting [main] best 1152871 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp[1]:4 [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [compare] best 1140907 combination reg byte x [ compare::op#0 ] zp[2]:27 [ compare::w1#0 ] zp[2]:29 [ compare::w2#0 ] zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] zp[2]:8 [ compare::ops#7 ] -Uplifting [memset] best 1140907 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 1140889 combination reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_byte] best 1140881 combination zp[1]:16 [ 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_sword] best 1140881 combination zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplifting [print_word] best 1140881 combination zp[2]:32 [ print_word::w#0 ] -Uplifting [RADIX] best 1140881 combination -Uplifting [print_ln] best 1140881 combination -Uplifting [print_cls] best 1140881 combination -Attempting to uplift remaining variables inzp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Uplifting [main] best 1140881 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] -Uplifting [main] best 1140881 combination zp[1]:3 [ main::j#2 main::j#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 1140881 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [memset] best 1152871 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplifting [RADIX] best 1152871 combination +Uplifting [print_ln] best 1152871 combination +Uplifting [print_cls] best 1152871 combination Attempting to uplift remaining variables inzp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Uplifting [compare] best 1140881 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Attempting to uplift remaining variables inzp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 1140881 combination zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [compare] best 1152871 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +Attempting to uplift remaining variables inzp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +Uplifting [main] best 1152871 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::op#2 main::op#1 ] +Uplifting [main] best 1152871 combination zp[1]:4 [ main::op#2 main::op#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] +Uplifting [main] best 1152871 combination zp[1]:3 [ main::j#2 main::j#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1152871 combination zp[1]:2 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:8 [ compare::ops#7 ] ] with [ zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp[2]:27 [ compare::w1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 ] ] with [ zp[2]:32 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:25 [ main::w2#0 ] ] with [ zp[2]:29 [ compare::w2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:8 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] ] -Allocated (was zp[1]:5) zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Allocated (was zp[2]:6) zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -Allocated (was zp[1]:10) zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Allocated (was zp[2]:12) zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] -Allocated (was zp[2]:14) zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] -Allocated (was zp[1]:16) zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[1]:10) zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +Allocated (was zp[2]:12) zp[2]:9 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +Allocated (was zp[2]:14) zp[2]:11 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp[2]:22) zp[2]:15 [ main::w1#0 ] Allocated (was zp[2]:25) zp[2]:17 [ main::w2#0 compare::w2#0 ] @@ -3219,8 +3212,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = 8 - .label print_line_cursor = 5 + .label print_char_cursor = 9 + .label print_line_cursor = 6 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -3241,7 +3234,8 @@ __bend: main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // [5] call print_cls @@ -3317,8 +3311,9 @@ main: { // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#71 [phi:main::@2->main::@3#2] -- register_copy - // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 + lda #0 + sta.z op jmp __b3 // [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] __b3_from___b4: @@ -3335,7 +3330,8 @@ main: { lda.z w1+1 sta.z compare.w1+1 // [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 - // [15] (byte) compare::op#0 ← (byte) main::op#2 + // [15] (byte) compare::op#0 ← (byte) main::op#2 -- vbuaa=vbuz1 + lda.z op // [16] call compare jsr compare jmp __b9 @@ -3380,10 +3376,11 @@ main: { jmp __b4 // main::@4 __b4: - // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuxx=_inc_vbuxx - inx - // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuz1=_inc_vbuz1 + inc.z op + // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z op bne __b3_from___b4 jmp __b6 // main::@6 @@ -3447,44 +3444,44 @@ print_ln: { } // compare // Compare two words using an operator -// compare(signed word zp($a) w1, signed word zp($11) w2, byte register(X) op) +// compare(signed word zp($b) w1, signed word zp($11) w2, byte register(A) op) compare: { - .label w1 = $a + .label w1 = $b .label w2 = $11 .label ops = $d - .label r = 7 - // [35] if((byte) compare::op#0==(const byte) LT) goto compare::@1 -- vbuxx_eq_vbuc1_then_la1 - cpx #LT + .label r = 8 + // [35] if((byte) compare::op#0==(const byte) LT) goto compare::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #LT beq __b1 jmp __b7 // compare::@7 __b7: - // [36] if((byte) compare::op#0==(const byte) LE) goto compare::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #LE + // [36] if((byte) compare::op#0==(const byte) LE) goto compare::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #LE beq __b2 jmp __b8 // compare::@8 __b8: - // [37] if((byte) compare::op#0==(const byte) GT) goto compare::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #GT + // [37] if((byte) compare::op#0==(const byte) GT) goto compare::@3 -- vbuaa_eq_vbuc1_then_la1 + cmp #GT beq __b3 jmp __b9 // compare::@9 __b9: - // [38] if((byte) compare::op#0==(const byte) GE) goto compare::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #GE + // [38] if((byte) compare::op#0==(const byte) GE) goto compare::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #GE beq __b4 jmp __b10 // compare::@10 __b10: - // [39] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 -- vbuxx_eq_vbuc1_then_la1 - cpx #EQ + // [39] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 -- vbuaa_eq_vbuc1_then_la1 + cmp #EQ beq __b5 jmp __b11 // compare::@11 __b11: - // [40] if((byte) compare::op#0!=(const byte) NE) goto compare::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #NE + // [40] if((byte) compare::op#0!=(const byte) NE) goto compare::@6 -- vbuaa_neq_vbuc1_then_la1 + cmp #NE bne __b6_from___b11 jmp __b12 // compare::@12 @@ -3811,9 +3808,9 @@ print_char: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp($a) w) +// print_sword(signed word zp($b) w) print_sword: { - .label w = $a + .label w = $b // [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 bmi __b1_from_print_sword @@ -3871,12 +3868,11 @@ print_sword: { } // print_word // Print a word as HEX -// print_word(word zp($a) w) +// print_word(word zp($b) w) print_word: { - .label w = $a - // [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + .label w = $b + // [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [85] call print_byte // [89] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3885,9 +3881,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [86] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [86] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + ldx.z w // [87] call print_byte // [89] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -3901,11 +3896,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c - // [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -3923,12 +3917,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [94] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [94] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [95] call print_char // [69] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -4225,9 +4218,9 @@ Removing instruction lda #3 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [114] beq __b1 to bne -Fixing long branch [118] beq __b2 to bne -Fixing long branch [122] beq __b3 to bne +Fixing long branch [118] beq __b1 to bne +Fixing long branch [122] beq __b2 to bne +Fixing long branch [126] beq __b3 to bne FINAL SYMBOL TABLE (label) @1 @@ -4275,7 +4268,7 @@ FINAL SYMBOL TABLE (label) compare::@9 (label) compare::@return (byte) compare::op -(byte) compare::op#0 reg byte x 168.8333333333334 +(byte) compare::op#0 reg byte a 101667.83333333331 (byte*) compare::ops (const byte*) compare::ops#1 ops_1 = (byte*) "!=" (const byte*) compare::ops#2 ops_2 = (byte*) "==" @@ -4283,22 +4276,22 @@ FINAL SYMBOL TABLE (const byte*) compare::ops#4 ops_4 = (byte*) "> " (const byte*) compare::ops#5 ops_5 = (byte*) "<=" (const byte*) compare::ops#6 ops_6 = (byte*) "< " -(byte*) compare::ops#7 ops zp[2]:13 0.6666666666666666 +(byte*) compare::ops#7 ops zp[2]:13 33333.666666666664 (byte) compare::r -(byte) compare::r#10 r zp[1]:7 1.9999999999999996 -(byte) compare::r#12 r zp[1]:7 2.0 -(byte) compare::r#13 r zp[1]:7 2.0 -(byte) compare::r#14 r zp[1]:7 2.0 -(byte) compare::r#15 r zp[1]:7 2.0 -(byte) compare::r#16 r zp[1]:7 2.0 -(byte) compare::r#17 r zp[1]:7 2.0 +(byte) compare::r#10 r zp[1]:8 100001.0 +(byte) compare::r#12 r zp[1]:8 100001.0 +(byte) compare::r#13 r zp[1]:8 100001.0 +(byte) compare::r#14 r zp[1]:8 100001.0 +(byte) compare::r#15 r zp[1]:8 100001.0 +(byte) compare::r#16 r zp[1]:8 100001.0 +(byte) compare::r#17 r zp[1]:8 100001.0 (signed word) compare::w1 -(signed word) compare::w1#0 w1 zp[2]:10 36.249999999999986 +(signed word) compare::w1#0 w1 zp[2]:11 25357.428571428572 (signed word) compare::w2 -(signed word) compare::w2#0 w2 zp[2]:17 32.741935483870954 +(signed word) compare::w2#0 w2 zp[2]:17 22903.483870967746 (void()) main() -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@2 @@ -4310,24 +4303,24 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 1.5714285714285716 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 14.428571428571427 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 18.9375 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 187.6875 (byte) main::op -(byte) main::op#1 reg byte x 1501.5 -(byte) main::op#2 reg byte x 273.0 +(byte) main::op#1 op zp[1]:4 15001.5 +(byte) main::op#2 op zp[1]:4 2727.5454545454545 (byte) main::s -(byte) main::s#1 s zp[1]:4 1501.5 -(byte) main::s#10 s zp[1]:4 302.0 -(byte) main::s#3 s zp[1]:4 420.59999999999997 -(byte) main::s#5 s zp[1]:4 71.0 -(byte) main::s#7 s zp[1]:4 7.333333333333333 +(byte) main::s#1 s zp[1]:5 15001.5 +(byte) main::s#10 s zp[1]:5 3014.857142857143 +(byte) main::s#3 s zp[1]:5 4200.6 +(byte) main::s#5 s zp[1]:5 701.0 +(byte) main::s#7 s zp[1]:5 67.33333333333333 (signed word) main::w1 -(signed word) main::w1#0 w1 zp[2]:15 53.26315789473684 +(signed word) main::w1#0 w1 zp[2]:15 531.6842105263157 (signed word) main::w2 -(signed word) main::w2#0 w2 zp[2]:17 78.71428571428571 +(signed word) main::w2#0 w2 zp[2]:17 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -4335,8 +4328,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:13 22.0 -(byte*) memset::dst#2 dst zp[2]:13 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:13 20002.0 +(byte*) memset::dst#2 dst zp[2]:13 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4345,42 +4338,42 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2.00000002E8 +(byte~) print_byte::$2 reg byte x 2.00000002E8 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:12 4.0 -(byte) print_byte::b#1 b zp[1]:12 4.0 -(byte) print_byte::b#2 b zp[1]:12 2.0 +(byte) print_byte::b#0 reg byte x 2.0000002E7 +(byte) print_byte::b#1 reg byte x 2.0000002E7 +(byte) print_byte::b#2 reg byte x 5.5000001E7 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 8.0 +(byte) print_char::ch#2 reg byte a 2.00000002E8 +(byte) print_char::ch#3 reg byte a 2.00000002E8 +(byte) print_char::ch#4 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1.200100004E9 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 -(byte*) print_char_cursor#115 print_char_cursor zp[2]:8 2002.0 -(byte*) print_char_cursor#15 print_char_cursor zp[2]:8 297.62162162162167 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 5001.166666666666 -(byte*) print_char_cursor#43 print_char_cursor zp[2]:8 7.0 -(byte*) print_char_cursor#58 print_char_cursor zp[2]:8 2.0 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:8 36.800000000000004 -(byte*) print_char_cursor#71 print_char_cursor zp[2]:8 71.0 -(byte*) print_char_cursor#72 print_char_cursor zp[2]:8 445.0 -(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 1.0000000001E10 +(byte*) print_char_cursor#115 print_char_cursor zp[2]:9 20002.0 +(byte*) print_char_cursor#15 print_char_cursor zp[2]:9 5.948945964864865E7 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 5.000183334166666E9 +(byte*) print_char_cursor#43 print_char_cursor zp[2]:9 1.1010500035E9 +(byte*) print_char_cursor#58 print_char_cursor zp[2]:9 550001.0 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:9 3700.1000000000004 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:9 701.0 +(byte*) print_char_cursor#72 print_char_cursor zp[2]:9 4443.571428571429 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:9 67.33333333333333 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 6401.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 233.8888888888889 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:5 445.0 -(byte*) print_line_cursor#26 print_line_cursor zp[2]:5 71.0 -(byte*) print_line_cursor#28 print_line_cursor zp[2]:5 7.333333333333333 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 20004.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 6.00004001E8 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:6 13444.888888888889 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 4443.571428571429 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:6 701.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:6 67.33333333333333 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:6 2.000100003E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4390,9 +4383,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:13 20002.0 -(byte*) print_str::str#1 str zp[2]:13 2.0 -(byte*) print_str::str#2 str zp[2]:13 10001.5 +(byte*) print_str::str#0 str zp[2]:13 2.0000000002E10 +(byte*) print_str::str#1 str zp[2]:13 550001.0 +(byte*) print_str::str#2 str zp[2]:13 1.000025000125E10 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -4400,40 +4393,40 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:10 4.0 -(signed word) print_sword::w#1 w zp[2]:10 4.0 -(signed word) print_sword::w#2 w zp[2]:10 4.0 -(signed word) print_sword::w#3 w zp[2]:10 1.6666666666666665 -(signed word) print_sword::w#5 w zp[2]:10 4.0 +(signed word) print_sword::w#0 w zp[2]:11 2000002.0 +(signed word) print_sword::w#1 w zp[2]:11 200002.0 +(signed word) print_sword::w#2 w zp[2]:11 200002.0 +(signed word) print_sword::w#3 w zp[2]:11 533334.1666666667 +(signed word) print_sword::w#5 w zp[2]:11 2000002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 2.0 +(word) print_word::w#0 w zp[2]:11 7000001.0 (const signed word*) swords[] = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] -reg byte x [ main::op#2 main::op#1 ] -zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +zp[1]:4 [ main::op#2 main::op#1 ] +zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] -zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] -zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:11 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] zp[2]:17 [ main::w2#0 compare::w2#0 ] -reg byte x [ compare::op#0 ] +reg byte a [ compare::op#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 966665 +Score: 978655 // File Comments // Test signed word comparisons @@ -4452,8 +4445,8 @@ Score: 966665 .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = 8 - .label print_line_cursor = 5 + .label print_char_cursor = 9 + .label print_line_cursor = 6 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -4465,7 +4458,8 @@ Score: 966665 main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // print_cls() @@ -4534,8 +4528,9 @@ main: { // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#71 [phi:main::@2->main::@3#2] -- register_copy - // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 + lda #0 + sta.z op // [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 [phi:main::@4->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#10 [phi:main::@4->main::@3#1] -- register_copy @@ -4550,7 +4545,8 @@ main: { lda.z w1+1 sta.z compare.w1+1 // [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 - // [15] (byte) compare::op#0 ← (byte) main::op#2 + // [15] (byte) compare::op#0 ← (byte) main::op#2 -- vbuaa=vbuz1 + lda.z op // [16] call compare jsr compare // main::@9 @@ -4586,10 +4582,11 @@ main: { // main::@4 __b4: // for( byte op: 0..5 ) - // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuxx=_inc_vbuxx - inx - // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuz1=_inc_vbuz1 + inc.z op + // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z op bne __b3 // main::@6 // for( byte j: 0..2) @@ -4645,46 +4642,46 @@ print_ln: { } // compare // Compare two words using an operator -// compare(signed word zp($a) w1, signed word zp($11) w2, byte register(X) op) +// compare(signed word zp($b) w1, signed word zp($11) w2, byte register(A) op) compare: { - .label w1 = $a + .label w1 = $b .label w2 = $11 .label ops = $d - .label r = 7 + .label r = 8 // if(op==LT) - // [35] if((byte) compare::op#0==(const byte) LT) goto compare::@1 -- vbuxx_eq_vbuc1_then_la1 - cpx #LT + // [35] if((byte) compare::op#0==(const byte) LT) goto compare::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #LT bne !__b1+ jmp __b1 !__b1: // compare::@7 // if(op==LE) - // [36] if((byte) compare::op#0==(const byte) LE) goto compare::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #LE + // [36] if((byte) compare::op#0==(const byte) LE) goto compare::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #LE bne !__b2+ jmp __b2 !__b2: // compare::@8 // if(op==GT) - // [37] if((byte) compare::op#0==(const byte) GT) goto compare::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #GT + // [37] if((byte) compare::op#0==(const byte) GT) goto compare::@3 -- vbuaa_eq_vbuc1_then_la1 + cmp #GT bne !__b3+ jmp __b3 !__b3: // compare::@9 // if(op==GE) - // [38] if((byte) compare::op#0==(const byte) GE) goto compare::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #GE + // [38] if((byte) compare::op#0==(const byte) GE) goto compare::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #GE beq __b4 // compare::@10 // if(op==EQ) - // [39] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 -- vbuxx_eq_vbuc1_then_la1 - cpx #EQ + // [39] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 -- vbuaa_eq_vbuc1_then_la1 + cmp #EQ beq __b5 // compare::@11 // if(op==NE) - // [40] if((byte) compare::op#0!=(const byte) NE) goto compare::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #NE + // [40] if((byte) compare::op#0!=(const byte) NE) goto compare::@6 -- vbuaa_neq_vbuc1_then_la1 + cmp #NE bne b2 // compare::@12 // if(w1!=w2) @@ -4971,9 +4968,9 @@ print_char: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp($a) w) +// print_sword(signed word zp($b) w) print_sword: { - .label w = $a + .label w = $b // if(w<0) // [74] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 @@ -5023,22 +5020,20 @@ print_sword: { } // print_word // Print a word as HEX -// print_word(word zp($a) w) +// print_word(word zp($b) w) print_word: { - .label w = $a + .label w = $b // print_byte(>w) - // [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [84] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [85] call print_byte // [89] phi from print_word to print_byte [phi:print_word->print_byte] // [89] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] // [89] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy @@ -5050,12 +5045,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c // b>>4 - // [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [90] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -5072,13 +5066,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [93] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [94] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [94] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [95] call print_char // [69] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [69] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#15 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/test-comparisons-sword.sym b/src/test/ref/test-comparisons-sword.sym index 90aa57877..cf2be7738 100644 --- a/src/test/ref/test-comparisons-sword.sym +++ b/src/test/ref/test-comparisons-sword.sym @@ -43,7 +43,7 @@ (label) compare::@9 (label) compare::@return (byte) compare::op -(byte) compare::op#0 reg byte x 168.8333333333334 +(byte) compare::op#0 reg byte a 101667.83333333331 (byte*) compare::ops (const byte*) compare::ops#1 ops_1 = (byte*) "!=" (const byte*) compare::ops#2 ops_2 = (byte*) "==" @@ -51,22 +51,22 @@ (const byte*) compare::ops#4 ops_4 = (byte*) "> " (const byte*) compare::ops#5 ops_5 = (byte*) "<=" (const byte*) compare::ops#6 ops_6 = (byte*) "< " -(byte*) compare::ops#7 ops zp[2]:13 0.6666666666666666 +(byte*) compare::ops#7 ops zp[2]:13 33333.666666666664 (byte) compare::r -(byte) compare::r#10 r zp[1]:7 1.9999999999999996 -(byte) compare::r#12 r zp[1]:7 2.0 -(byte) compare::r#13 r zp[1]:7 2.0 -(byte) compare::r#14 r zp[1]:7 2.0 -(byte) compare::r#15 r zp[1]:7 2.0 -(byte) compare::r#16 r zp[1]:7 2.0 -(byte) compare::r#17 r zp[1]:7 2.0 +(byte) compare::r#10 r zp[1]:8 100001.0 +(byte) compare::r#12 r zp[1]:8 100001.0 +(byte) compare::r#13 r zp[1]:8 100001.0 +(byte) compare::r#14 r zp[1]:8 100001.0 +(byte) compare::r#15 r zp[1]:8 100001.0 +(byte) compare::r#16 r zp[1]:8 100001.0 +(byte) compare::r#17 r zp[1]:8 100001.0 (signed word) compare::w1 -(signed word) compare::w1#0 w1 zp[2]:10 36.249999999999986 +(signed word) compare::w1#0 w1 zp[2]:11 25357.428571428572 (signed word) compare::w2 -(signed word) compare::w2#0 w2 zp[2]:17 32.741935483870954 +(signed word) compare::w2#0 w2 zp[2]:17 22903.483870967746 (void()) main() -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@2 @@ -78,24 +78,24 @@ (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 1.5714285714285716 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 14.428571428571427 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 18.9375 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 187.6875 (byte) main::op -(byte) main::op#1 reg byte x 1501.5 -(byte) main::op#2 reg byte x 273.0 +(byte) main::op#1 op zp[1]:4 15001.5 +(byte) main::op#2 op zp[1]:4 2727.5454545454545 (byte) main::s -(byte) main::s#1 s zp[1]:4 1501.5 -(byte) main::s#10 s zp[1]:4 302.0 -(byte) main::s#3 s zp[1]:4 420.59999999999997 -(byte) main::s#5 s zp[1]:4 71.0 -(byte) main::s#7 s zp[1]:4 7.333333333333333 +(byte) main::s#1 s zp[1]:5 15001.5 +(byte) main::s#10 s zp[1]:5 3014.857142857143 +(byte) main::s#3 s zp[1]:5 4200.6 +(byte) main::s#5 s zp[1]:5 701.0 +(byte) main::s#7 s zp[1]:5 67.33333333333333 (signed word) main::w1 -(signed word) main::w1#0 w1 zp[2]:15 53.26315789473684 +(signed word) main::w1#0 w1 zp[2]:15 531.6842105263157 (signed word) main::w2 -(signed word) main::w2#0 w2 zp[2]:17 78.71428571428571 +(signed word) main::w2#0 w2 zp[2]:17 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -103,8 +103,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:13 22.0 -(byte*) memset::dst#2 dst zp[2]:13 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:13 20002.0 +(byte*) memset::dst#2 dst zp[2]:13 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -113,42 +113,42 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2.00000002E8 +(byte~) print_byte::$2 reg byte x 2.00000002E8 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:12 4.0 -(byte) print_byte::b#1 b zp[1]:12 4.0 -(byte) print_byte::b#2 b zp[1]:12 2.0 +(byte) print_byte::b#0 reg byte x 2.0000002E7 +(byte) print_byte::b#1 reg byte x 2.0000002E7 +(byte) print_byte::b#2 reg byte x 5.5000001E7 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 8.0 +(byte) print_char::ch#2 reg byte a 2.00000002E8 +(byte) print_char::ch#3 reg byte a 2.00000002E8 +(byte) print_char::ch#4 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1.200100004E9 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 -(byte*) print_char_cursor#115 print_char_cursor zp[2]:8 2002.0 -(byte*) print_char_cursor#15 print_char_cursor zp[2]:8 297.62162162162167 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 5001.166666666666 -(byte*) print_char_cursor#43 print_char_cursor zp[2]:8 7.0 -(byte*) print_char_cursor#58 print_char_cursor zp[2]:8 2.0 -(byte*) print_char_cursor#64 print_char_cursor zp[2]:8 36.800000000000004 -(byte*) print_char_cursor#71 print_char_cursor zp[2]:8 71.0 -(byte*) print_char_cursor#72 print_char_cursor zp[2]:8 445.0 -(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:9 1.0000000001E10 +(byte*) print_char_cursor#115 print_char_cursor zp[2]:9 20002.0 +(byte*) print_char_cursor#15 print_char_cursor zp[2]:9 5.948945964864865E7 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:9 5.000183334166666E9 +(byte*) print_char_cursor#43 print_char_cursor zp[2]:9 1.1010500035E9 +(byte*) print_char_cursor#58 print_char_cursor zp[2]:9 550001.0 +(byte*) print_char_cursor#64 print_char_cursor zp[2]:9 3700.1000000000004 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:9 701.0 +(byte*) print_char_cursor#72 print_char_cursor zp[2]:9 4443.571428571429 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:9 67.33333333333333 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 6401.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 233.8888888888889 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:5 445.0 -(byte*) print_line_cursor#26 print_line_cursor zp[2]:5 71.0 -(byte*) print_line_cursor#28 print_line_cursor zp[2]:5 7.333333333333333 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 20004.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 6.00004001E8 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:6 13444.888888888889 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 4443.571428571429 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:6 701.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:6 67.33333333333333 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:6 2.000100003E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -158,9 +158,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:13 20002.0 -(byte*) print_str::str#1 str zp[2]:13 2.0 -(byte*) print_str::str#2 str zp[2]:13 10001.5 +(byte*) print_str::str#0 str zp[2]:13 2.0000000002E10 +(byte*) print_str::str#1 str zp[2]:13 550001.0 +(byte*) print_str::str#2 str zp[2]:13 1.000025000125E10 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -168,33 +168,33 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:10 4.0 -(signed word) print_sword::w#1 w zp[2]:10 4.0 -(signed word) print_sword::w#2 w zp[2]:10 4.0 -(signed word) print_sword::w#3 w zp[2]:10 1.6666666666666665 -(signed word) print_sword::w#5 w zp[2]:10 4.0 +(signed word) print_sword::w#0 w zp[2]:11 2000002.0 +(signed word) print_sword::w#1 w zp[2]:11 200002.0 +(signed word) print_sword::w#2 w zp[2]:11 200002.0 +(signed word) print_sword::w#3 w zp[2]:11 533334.1666666667 +(signed word) print_sword::w#5 w zp[2]:11 2000002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:10 2.0 +(word) print_word::w#0 w zp[2]:11 7000001.0 (const signed word*) swords[] = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] -reg byte x [ main::op#2 main::op#1 ] -zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +zp[1]:4 [ main::op#2 main::op#1 ] +zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] -zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] -zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:11 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] zp[2]:17 [ main::w2#0 compare::w2#0 ] -reg byte x [ compare::op#0 ] +reg byte a [ compare::op#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] diff --git a/src/test/ref/test-comparisons-word.asm b/src/test/ref/test-comparisons-word.asm index 6c318084f..942deb3bc 100644 --- a/src/test/ref/test-comparisons-word.asm +++ b/src/test/ref/test-comparisons-word.asm @@ -5,12 +5,13 @@ .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $a - .label print_line_cursor = 5 + .label print_char_cursor = $b + .label print_line_cursor = 6 main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // print_cls() @@ -47,13 +48,15 @@ main: { sta.z w2 lda words+1,y sta.z w2+1 - ldx #0 + lda #0 + sta.z op __b3: // compare(w1,w2,op) lda.z w1 sta.z compare.w1 lda.z w1+1 sta.z compare.w1+1 + lda.z op jsr compare // if(++s==3) inc.z s @@ -70,8 +73,9 @@ main: { sta.z s __b4: // for( byte op: 0..5 ) - inx - cpx #6 + inc.z op + lda #6 + cmp.z op bne __b3 // for( byte j: 0..2) inc.z j @@ -110,35 +114,35 @@ print_ln: { rts } // Compare two words using an operator -// compare(word zp(8) w1, word zp($11) w2, byte register(X) op) +// compare(word zp(9) w1, word zp($11) w2, byte register(A) op) compare: { - .label w1 = 8 + .label w1 = 9 .label w2 = $11 .label ops = $d - .label r = 7 + .label r = 8 // if(op==0) - cpx #0 + cmp #0 bne !__b1+ jmp __b1 !__b1: // if(op==1) - cpx #1 + cmp #1 bne !__b2+ jmp __b2 !__b2: // if(op==2) - cpx #2 + cmp #2 bne !__b3+ jmp __b3 !__b3: // if(op==3) - cpx #3 + cmp #3 beq __b4 // if(op==4) - cpx #4 + cmp #4 beq __b5 // if(op==5) - cpx #5 + cmp #5 bne b2 // if(w1!=w2) lda.z w1 @@ -321,26 +325,23 @@ print_char: { rts } // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 + .label w = 9 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -352,10 +353,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/test-comparisons-word.log b/src/test/ref/test-comparisons-word.log index 3ff2c8a40..4b89366af 100644 --- a/src/test/ref/test-comparisons-word.log +++ b/src/test/ref/test-comparisons-word.log @@ -1199,79 +1199,79 @@ Inversing boolean not [178] (bool~) compare::$15 ← (word) compare::w1#5 != (wo Inversing boolean not [182] (bool~) compare::$6 ← (byte) compare::op#6 != (byte) 5 from [181] (bool~) compare::$5 ← (byte) compare::op#6 == (byte) 5 Inversing boolean not [186] (bool~) compare::$13 ← (word) compare::w1#6 == (word) compare::w2#6 from [185] (bool~) compare::$12 ← (word) compare::w1#6 != (word) compare::w2#6 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#59 (byte*) print_screen#4 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#50 (byte*) print_char_cursor#27 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#29 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#2 = (word) print_word::w#3 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#5 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#32 (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#34 (byte*) print_char_cursor#35 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#12 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#13 (byte*) print_char_cursor#38 (byte*) print_line_cursor#4 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#39 -Alias (byte) main::s#3 = (byte) main::s#4 -Alias (byte) main::op#2 = (byte) main::op#4 (byte) main::op#6 (byte) main::op#5 -Alias (word) main::w1#1 = (word) main::w1#5 (word) main::w1#7 (word) main::w1#6 -Alias (word) main::w2#1 = (word) main::w2#3 (word) main::w2#5 (word) main::w2#4 -Alias (byte) main::j#5 = (byte) main::j#7 (byte) main::j#8 (byte) main::j#6 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#24 -Alias (byte) main::i#6 = (byte) main::i#8 (byte) main::i#9 (byte) main::i#7 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#56 -Alias (byte) main::s#2 = (byte) main::s#9 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#41 -Alias (byte) main::j#3 = (byte) main::j#4 -Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 -Alias (word) main::w1#3 = (word) main::w1#4 -Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#63 -Alias (byte) main::s#10 = (byte) main::s#8 (byte) main::s#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#27 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#57 -Alias (word) compare::w1#1 = (word) compare::w1#8 (word) compare::w1#9 (word) compare::w1#2 (word) compare::w1#10 (word) compare::w1#3 (word) compare::w1#11 (word) compare::w1#4 (word) compare::w1#12 (word) compare::w1#5 (word) compare::w1#13 (word) compare::w1#6 (word) compare::w1#20 (word) compare::w1#21 (word) compare::w1#22 (word) compare::w1#23 (word) compare::w1#24 (word) compare::w1#25 -Alias (word) compare::w2#1 = (word) compare::w2#8 (word) compare::w2#9 (word) compare::w2#2 (word) compare::w2#10 (word) compare::w2#3 (word) compare::w2#11 (word) compare::w2#4 (word) compare::w2#12 (word) compare::w2#5 (word) compare::w2#13 (word) compare::w2#6 (word) compare::w2#22 (word) compare::w2#23 (word) compare::w2#24 (word) compare::w2#25 (word) compare::w2#26 (word) compare::w2#27 -Alias (byte*) print_char_cursor#64 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#82 (byte*) print_char_cursor#88 (byte*) print_char_cursor#81 (byte*) print_char_cursor#89 (byte*) print_char_cursor#79 (byte*) print_char_cursor#73 (byte*) print_char_cursor#77 (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#78 (byte*) print_char_cursor#80 (byte*) print_char_cursor#83 (byte*) print_char_cursor#85 -Alias (byte) compare::r#0 = (byte) compare::r#24 (byte) compare::r#25 (byte) compare::r#23 (byte) compare::r#26 (byte) compare::r#22 (byte) compare::r#27 (byte) compare::r#21 (byte) compare::r#18 (byte) compare::r#20 (byte) compare::r#11 (byte) compare::r#19 -Alias (byte) compare::op#1 = (byte) compare::op#2 (byte) compare::op#3 (byte) compare::op#4 (byte) compare::op#5 (byte) compare::op#6 -Alias (byte*) compare::ops#0 = (byte*) compare::ops#13 (byte*) compare::ops#12 (byte*) compare::ops#11 (byte*) compare::ops#10 (byte*) compare::ops#9 -Alias (byte*) compare::ops#7 = (byte*) compare::ops#8 -Alias (word) compare::w2#14 = (word) compare::w2#15 (word) compare::w2#7 -Alias (byte) compare::r#10 = (byte) compare::r#9 (byte) compare::r#8 (byte) compare::r#7 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#48 (byte*) print_char_cursor#24 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#49 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#21 print_char_cursor#59 print_screen#4 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#2 = print_char_cursor#26 print_char_cursor#50 print_char_cursor#27 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#3 print_line_cursor#11 print_char_cursor#29 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#2 = print_word::w#3 +Alias print_char_cursor#30 = print_char_cursor#5 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#31 = print_char_cursor#6 print_char_cursor#32 print_char_cursor#7 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#33 = print_char_cursor#8 +Alias print_char_cursor#10 = print_char_cursor#9 print_char_cursor#34 print_char_cursor#35 +Alias print_char_cursor#11 = print_char_cursor#37 print_char_cursor#12 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#13 print_char_cursor#38 print_line_cursor#4 print_char_cursor#14 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#15 = print_char_cursor#39 +Alias main::s#3 = main::s#4 +Alias main::op#2 = main::op#4 main::op#6 main::op#5 +Alias main::w1#1 = main::w1#5 main::w1#7 main::w1#6 +Alias main::w2#1 = main::w2#3 main::w2#5 main::w2#4 +Alias main::j#5 = main::j#7 main::j#8 main::j#6 +Alias print_line_cursor#19 = print_line_cursor#22 print_line_cursor#24 +Alias main::i#6 = main::i#8 main::i#9 main::i#7 +Alias print_char_cursor#16 = print_char_cursor#40 print_char_cursor#56 +Alias main::s#2 = main::s#9 +Alias print_line_cursor#14 = print_line_cursor#6 +Alias print_char_cursor#17 = print_char_cursor#41 +Alias main::j#3 = main::j#4 +Alias main::i#3 = main::i#4 main::i#5 +Alias main::w1#3 = main::w1#4 +Alias print_char_cursor#62 = print_char_cursor#72 print_char_cursor#63 +Alias main::s#10 = main::s#8 main::s#6 +Alias print_line_cursor#23 = print_line_cursor#25 print_line_cursor#27 +Alias print_line_cursor#15 = print_line_cursor#20 print_line_cursor#7 +Alias print_char_cursor#18 = print_char_cursor#42 print_char_cursor#57 +Alias compare::w1#1 = compare::w1#8 compare::w1#9 compare::w1#2 compare::w1#10 compare::w1#3 compare::w1#11 compare::w1#4 compare::w1#12 compare::w1#5 compare::w1#13 compare::w1#6 compare::w1#20 compare::w1#21 compare::w1#22 compare::w1#23 compare::w1#24 compare::w1#25 +Alias compare::w2#1 = compare::w2#8 compare::w2#9 compare::w2#2 compare::w2#10 compare::w2#3 compare::w2#11 compare::w2#4 compare::w2#12 compare::w2#5 compare::w2#13 compare::w2#6 compare::w2#22 compare::w2#23 compare::w2#24 compare::w2#25 compare::w2#26 compare::w2#27 +Alias print_char_cursor#64 = print_char_cursor#84 print_char_cursor#86 print_char_cursor#87 print_char_cursor#82 print_char_cursor#88 print_char_cursor#81 print_char_cursor#89 print_char_cursor#79 print_char_cursor#73 print_char_cursor#77 print_char_cursor#74 print_char_cursor#75 print_char_cursor#76 print_char_cursor#78 print_char_cursor#80 print_char_cursor#83 print_char_cursor#85 +Alias compare::r#0 = compare::r#24 compare::r#25 compare::r#23 compare::r#26 compare::r#22 compare::r#27 compare::r#21 compare::r#18 compare::r#20 compare::r#11 compare::r#19 +Alias compare::op#1 = compare::op#2 compare::op#3 compare::op#4 compare::op#5 compare::op#6 +Alias compare::ops#0 = compare::ops#13 compare::ops#12 compare::ops#11 compare::ops#10 compare::ops#9 +Alias compare::ops#7 = compare::ops#8 +Alias compare::w2#14 = compare::w2#15 compare::w2#7 +Alias compare::r#10 = compare::r#9 compare::r#8 compare::r#7 +Alias print_char_cursor#19 = print_char_cursor#43 +Alias print_char_cursor#20 = print_char_cursor#44 +Alias print_char_cursor#21 = print_char_cursor#45 +Alias print_char_cursor#22 = print_char_cursor#46 +Alias print_char_cursor#23 = print_char_cursor#47 print_char_cursor#48 print_char_cursor#24 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#25 = print_char_cursor#49 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::op#2 = (byte) main::op#3 -Alias (word) main::w1#1 = (word) main::w1#3 -Alias (word) main::w2#1 = (word) main::w2#2 -Alias (byte) main::j#3 = (byte) main::j#5 -Alias (byte) main::i#3 = (byte) main::i#6 -Alias (word) compare::w1#1 = (word) compare::w1#14 (word) compare::w1#15 (word) compare::w1#16 (word) compare::w1#17 (word) compare::w1#18 (word) compare::w1#19 -Alias (byte*) print_char_cursor#64 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#70 -Alias (word) compare::w2#1 = (word) compare::w2#16 (word) compare::w2#17 (word) compare::w2#18 (word) compare::w2#19 (word) compare::w2#20 (word) compare::w2#21 +Alias main::op#2 = main::op#3 +Alias main::w1#1 = main::w1#3 +Alias main::w2#1 = main::w2#2 +Alias main::j#3 = main::j#5 +Alias main::i#3 = main::i#6 +Alias compare::w1#1 = compare::w1#14 compare::w1#15 compare::w1#16 compare::w1#17 compare::w1#18 compare::w1#19 +Alias print_char_cursor#64 = print_char_cursor#65 print_char_cursor#66 print_char_cursor#67 print_char_cursor#68 print_char_cursor#69 print_char_cursor#70 +Alias compare::w2#1 = compare::w2#16 compare::w2#17 compare::w2#18 compare::w2#19 compare::w2#20 compare::w2#21 Successful SSA optimization Pass2AliasElimination -Alias (word) compare::w1#1 = (word) compare::w1#7 -Alias (byte*) print_char_cursor#58 = (byte*) print_char_cursor#64 -Alias (word) compare::w2#1 = (word) compare::w2#14 +Alias compare::w1#1 = compare::w1#7 +Alias print_char_cursor#58 = print_char_cursor#64 +Alias compare::w2#1 = compare::w2#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1888,97 +1888,97 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) compare((word) compare::w1 , (word) compare::w2 , (byte) compare::op) (byte) compare::op -(byte) compare::op#0 168.8333333333334 +(byte) compare::op#0 101667.83333333331 (byte*) compare::ops -(byte*) compare::ops#7 0.6666666666666666 +(byte*) compare::ops#7 33333.666666666664 (byte) compare::r -(byte) compare::r#10 1.9999999999999996 -(byte) compare::r#12 2.0 -(byte) compare::r#13 2.0 -(byte) compare::r#14 2.0 -(byte) compare::r#15 2.0 -(byte) compare::r#16 2.0 -(byte) compare::r#17 2.0 +(byte) compare::r#10 100001.0 +(byte) compare::r#12 100001.0 +(byte) compare::r#13 100001.0 +(byte) compare::r#14 100001.0 +(byte) compare::r#15 100001.0 +(byte) compare::r#16 100001.0 +(byte) compare::r#17 100001.0 (word) compare::w1 -(word) compare::w1#0 36.249999999999986 +(word) compare::w1#0 25357.428571428572 (word) compare::w2 -(word) compare::w2#0 32.741935483870954 +(word) compare::w2#0 22903.483870967746 (void()) main() -(byte~) main::$8 22.0 -(byte~) main::$9 202.0 +(byte~) main::$8 202.0 +(byte~) main::$9 2002.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 1.5714285714285716 +(byte) main::i#1 151.5 +(byte) main::i#2 14.428571428571427 (byte) main::j -(byte) main::j#1 151.5 -(byte) main::j#2 18.9375 +(byte) main::j#1 1501.5 +(byte) main::j#2 187.6875 (byte) main::op -(byte) main::op#1 1501.5 -(byte) main::op#2 273.0 +(byte) main::op#1 15001.5 +(byte) main::op#2 2727.5454545454545 (byte) main::s -(byte) main::s#1 1501.5 -(byte) main::s#10 302.0 -(byte) main::s#3 420.59999999999997 -(byte) main::s#5 71.0 -(byte) main::s#7 7.333333333333333 +(byte) main::s#1 15001.5 +(byte) main::s#10 3014.857142857143 +(byte) main::s#3 4200.6 +(byte) main::s#5 701.0 +(byte) main::s#7 67.33333333333333 (word) main::w1 -(word) main::w1#0 53.26315789473684 +(word) main::w1#0 531.6842105263157 (word) main::w2 -(word) main::w2#0 78.71428571428571 +(word) main::w2#0 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2.0000002E7 +(byte~) print_byte::$2 2.0000002E7 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 2000002.0 +(byte) print_byte::b#1 2000002.0 +(byte) print_byte::b#2 5500001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#4 8.0 +(byte) print_char::ch#0 2.0000002E7 +(byte) print_char::ch#1 2.0000002E7 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#4 1.20100004E8 (byte*) print_char_cursor -(byte*) print_char_cursor#1 10001.0 -(byte*) print_char_cursor#106 2002.0 -(byte*) print_char_cursor#11 393.3571428571428 -(byte*) print_char_cursor#2 5001.166666666666 -(byte*) print_char_cursor#36 6.0 -(byte*) print_char_cursor#52 3.0 -(byte*) print_char_cursor#53 2.0 -(byte*) print_char_cursor#55 36.800000000000004 -(byte*) print_char_cursor#61 71.0 -(byte*) print_char_cursor#62 445.0 -(byte*) print_char_cursor#71 7.333333333333333 +(byte*) print_char_cursor#1 1.0000000001E10 +(byte*) print_char_cursor#106 20002.0 +(byte*) print_char_cursor#11 3.972178600000001E7 +(byte*) print_char_cursor#2 5.000183334166666E9 +(byte*) print_char_cursor#36 1.10100003E8 +(byte*) print_char_cursor#52 600001.5 +(byte*) print_char_cursor#53 4000000.9999999995 +(byte*) print_char_cursor#55 3700.1000000000004 +(byte*) print_char_cursor#61 701.0 +(byte*) print_char_cursor#62 4443.571428571429 +(byte*) print_char_cursor#71 67.33333333333333 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 6401.0 -(byte*) print_line_cursor#19 233.8888888888889 -(byte*) print_line_cursor#23 445.0 -(byte*) print_line_cursor#26 71.0 -(byte*) print_line_cursor#28 7.333333333333333 -(byte*) print_line_cursor#9 20004.0 +(byte*) print_line_cursor#1 6.00004001E8 +(byte*) print_line_cursor#19 13444.888888888889 +(byte*) print_line_cursor#23 4443.571428571429 +(byte*) print_line_cursor#26 701.0 +(byte*) print_line_cursor#28 67.33333333333333 +(byte*) print_line_cursor#9 2.000100003E9 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 20002.0 -(byte*) print_str::str#1 2.0 -(byte*) print_str::str#2 10001.5 +(byte*) print_str::str#0 2.0000000002E10 +(byte*) print_str::str#1 550001.0 +(byte*) print_str::str#2 1.000025000125E10 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 4.0 -(word) print_word::w#2 2.6666666666666665 +(word) print_word::w#0 200002.0 +(word) print_word::w#1 200002.0 +(word) print_word::w#2 733334.6666666667 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -2879,72 +2879,68 @@ memset: { words: .word $12, $3f34, $cfed REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Statement [8] (word) main::w1#0 ← *((const word*) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a +Statement [8] (word) main::w1#0 ← *((const word*) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [11] (word) main::w2#0 ← *((const word*) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a +Statement [11] (word) main::w2#0 ← *((const word*) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] { } ) always clobbers reg byte a +Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::op#2 main::op#1 ] -Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#0 ← (word) compare::w1#0 [ print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ) always clobbers reg byte a +Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] { } ) always clobbers reg byte a +Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [45] (word) print_word::w#0 ← (word) compare::w1#0 [ print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a -Statement [49] (word) print_word::w#1 ← (word) compare::w2#0 [ compare::r#10 print_word::w#1 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [56] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@20 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [59] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@21 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [62] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@22 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [65] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@23 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [68] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@24 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [72] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#4 [ print_char_cursor#36 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] main:2::compare:16::print_char:54 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#36 ] ) always clobbers reg byte y +Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a +Statement [49] (word) print_word::w#1 ← (word) compare::w2#0 [ compare::r#10 print_word::w#1 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#1 print_char_cursor#2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } } ) always clobbers reg byte a +Statement [56] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@20 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [59] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@21 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [62] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@22 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [65] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@23 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [68] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@24 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [72] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#4 [ print_char_cursor#36 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char::ch#2 = print_char::ch#4 compare::r#10 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_char:54 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#36 = print_char_cursor#52 print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:50::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::op#2 main::op#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#52 print_byte::b#0 ] ( main:2::compare:16::print_word:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#52 print_byte::b#0 ] main:2::compare:16::print_word:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#52 print_byte::b#0 ] ) always clobbers reg byte a -Statement [78] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::compare:16::print_word:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::b#1 ] main:2::compare:16::print_word:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#36 = print_char_cursor#52 print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [91] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [93] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [101] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [103] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a -Statement [8] (word) main::w1#0 ← *((const word*) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a -Statement [11] (word) main::w2#0 ← *((const word*) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a -Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a -Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#0 ← (word) compare::w1#0 [ print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ) always clobbers reg byte a -Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a -Statement [49] (word) print_word::w#1 ← (word) compare::w2#0 [ compare::r#10 print_word::w#1 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [56] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@20 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [59] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@21 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [62] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@22 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [65] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@23 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [68] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@24 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [72] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#4 [ print_char_cursor#36 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] main:2::compare:16::print_char:54 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#36 ] main:2::compare:16::print_word:46::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#36 ] main:2::compare:16::print_word:50::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#36 ] ) always clobbers reg byte y -Statement [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#52 print_byte::b#0 ] ( main:2::compare:16::print_word:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#52 print_byte::b#0 ] main:2::compare:16::print_word:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#52 print_byte::b#0 ] ) always clobbers reg byte a -Statement [78] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#11 print_byte::b#1 ] ( main:2::compare:16::print_word:46 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::b#1 ] main:2::compare:16::print_word:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::$2 ] main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [91] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [93] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [101] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [103] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [91] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [101] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [103] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] { } ) always clobbers reg byte a +Statement [8] (word) main::w1#0 ← *((const word*) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] { } ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] { } ) always clobbers reg byte a +Statement [11] (word) main::w2#0 ← *((const word*) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] { } ) always clobbers reg byte a +Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [21] (byte*) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] { } ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] { } ) always clobbers reg byte a +Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [45] (word) print_word::w#0 ← (word) compare::w1#0 [ print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } } ) always clobbers reg byte a +Statement [47] (byte*) print_str::str#1 ← (byte*) compare::ops#7 [ compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#11 compare::r#10 print_str::str#1 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a +Statement [49] (word) print_word::w#1 ← (word) compare::w2#0 [ compare::r#10 print_word::w#1 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#1 print_char_cursor#2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } } ) always clobbers reg byte a +Statement [56] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@20 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [59] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@21 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [62] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@22 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [65] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@23 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [68] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@24 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } } ) always clobbers reg byte a +Statement [72] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#4 [ print_char_cursor#36 ] ( main:2::compare:16::print_char:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char::ch#2 = print_char::ch#4 compare::r#10 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_char:54 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#36 = print_char_cursor#52 print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:77::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_byte::b#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_byte::b#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:50::print_byte:77::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#36 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79::print_char:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#36 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte y +Statement [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#53 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#36 = print_char_cursor#52 print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#53 print_byte::b#2 print_byte::$0 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#0 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::compare:16::print_word:46::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:50::print_byte:77 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#2 print_char_cursor#11 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#1 = print_char::ch#4 } { print_char_cursor#11 = print_char_cursor#36 } } main:2::compare:16::print_word:46::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#7 compare::r#10 print_char_cursor#11 print_byte::$2 ] { { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_word::w#0 = print_word::w#2 compare::w1#0 main::w1#0 } { print_char_cursor#52 = print_char_cursor#55 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } main:2::compare:16::print_word:50::print_byte:79 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#11 print_byte::$2 ] { { compare::w1#0 = main::w1#0 } { compare::op#0 = main::op#2 } { print_word::w#1 = print_word::w#2 compare::w2#0 main::w2#0 } { print_char_cursor#2 = print_char_cursor#52 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#11 = print_char_cursor#53 print_char_cursor#36 } { print_char::ch#1 = print_char::ch#4 } } ) always clobbers reg byte a +Statement [91] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [93] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] { { compare::w1#0 = main::w1#0 } { compare::w2#0 = main::w2#0 } { compare::op#0 = main::op#2 } { print_str::str#1 = compare::ops#7 } } ) always clobbers reg byte a reg byte y +Statement [101] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [103] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::op#2 main::op#1 ] : zp[1]:4 , reg byte x , @@ -2969,50 +2965,47 @@ Potential registers zp[1]:32 [ print_byte::$0 ] : zp[1]:32 , reg byte a , reg by Potential registers zp[1]:33 [ print_byte::$2 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] 17,968.66: zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] -Uplift Scope [print_str] 30,005.5: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplift Scope [main] 2,302.43: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 1,774.5: zp[1]:4 [ main::op#2 main::op#1 ] 202: zp[1]:24 [ main::$9 ] 170.44: zp[1]:3 [ main::j#2 main::j#1 ] 78.71: zp[2]:25 [ main::w2#0 ] 53.26: zp[2]:22 [ main::w1#0 ] 22: zp[1]:21 [ main::$8 ] 18.07: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [compare] 168.83: zp[1]:31 [ compare::op#0 ] 36.25: zp[2]:27 [ compare::w1#0 ] 32.74: zp[2]:29 [ compare::w2#0 ] 14: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 0.67: zp[2]:8 [ compare::ops#7 ] -Uplift Scope [memset] 36.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 20: zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_byte] 10: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:32 [ print_byte::$0 ] 4: zp[1]:33 [ print_byte::$2 ] -Uplift Scope [print_word] 10.67: zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplift Scope [print_str] 30,000,800,004.25: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] +Uplift Scope [] 15,154,634,040.67: zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] 2,600,122,660.79: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +Uplift Scope [print_char] 160,300,010: zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 20,000,002: zp[1]:32 [ print_byte::$0 ] 20,000,002: zp[1]:33 [ print_byte::$2 ] 9,500,005: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 1,133,338.67: zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplift Scope [compare] 700,007: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 101,667.83: zp[1]:31 [ compare::op#0 ] 33,333.67: zp[2]:8 [ compare::ops#7 ] 25,357.43: zp[2]:27 [ compare::w1#0 ] 22,903.48: zp[2]:29 [ compare::w2#0 ] +Uplift Scope [main] 22,985.29: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 17,729.05: zp[1]:4 [ main::op#2 main::op#1 ] 2,002: zp[1]:24 [ main::$9 ] 1,689.19: zp[1]:3 [ main::j#2 main::j#1 ] 785.86: zp[2]:25 [ main::w2#0 ] 531.68: zp[2]:22 [ main::w1#0 ] 202: zp[1]:21 [ main::$8 ] 165.93: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:19 [ memset::dst#2 memset::dst#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 1156292 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Uplifting [print_str] best 1156292 combination zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplifting [main] best 1143852 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [] best 1156292 combination zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +Uplifting [print_char] best 1156277 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 1156259 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 1156259 combination zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplifting [compare] best 1153241 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ compare::op#0 ] zp[2]:8 [ compare::ops#7 ] zp[2]:27 [ compare::w1#0 ] zp[2]:29 [ compare::w2#0 ] +Uplifting [main] best 1152801 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp[1]:4 [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [compare] best 1140834 combination reg byte x [ compare::op#0 ] zp[2]:27 [ compare::w1#0 ] zp[2]:29 [ compare::w2#0 ] zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] zp[2]:8 [ compare::ops#7 ] -Uplifting [memset] best 1140834 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 1140819 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_byte] best 1140811 combination zp[1]:16 [ 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 1140811 combination zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplifting [RADIX] best 1140811 combination -Uplifting [print_ln] best 1140811 combination -Uplifting [print_cls] best 1140811 combination -Attempting to uplift remaining variables inzp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Uplifting [main] best 1140811 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] -Uplifting [main] best 1140811 combination zp[1]:3 [ main::j#2 main::j#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 1140811 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [memset] best 1152801 combination zp[2]:19 [ memset::dst#2 memset::dst#1 ] +Uplifting [RADIX] best 1152801 combination +Uplifting [print_ln] best 1152801 combination +Uplifting [print_cls] best 1152801 combination Attempting to uplift remaining variables inzp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Uplifting [compare] best 1140811 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Attempting to uplift remaining variables inzp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 1140811 combination zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [compare] best 1152801 combination zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +Attempting to uplift remaining variables inzp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +Uplifting [main] best 1152801 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::op#2 main::op#1 ] +Uplifting [main] best 1152801 combination zp[1]:4 [ main::op#2 main::op#1 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::j#2 main::j#1 ] +Uplifting [main] best 1152801 combination zp[1]:3 [ main::j#2 main::j#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1152801 combination zp[1]:2 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:8 [ compare::ops#7 ] ] with [ zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] ] with [ zp[2]:27 [ compare::w1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:25 [ main::w2#0 ] ] with [ zp[2]:29 [ compare::w2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:8 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] ] -Allocated (was zp[1]:5) zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Allocated (was zp[2]:6) zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -Allocated (was zp[1]:10) zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Allocated (was zp[2]:12) zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -Allocated (was zp[2]:14) zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] -Allocated (was zp[1]:16) zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[1]:10) zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +Allocated (was zp[2]:12) zp[2]:9 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] +Allocated (was zp[2]:14) zp[2]:11 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp[2]:22) zp[2]:15 [ main::w1#0 ] Allocated (was zp[2]:25) zp[2]:17 [ main::w2#0 compare::w2#0 ] @@ -3028,8 +3021,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $a - .label print_line_cursor = 5 + .label print_char_cursor = $b + .label print_line_cursor = 6 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -3050,7 +3043,8 @@ __bend: main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // [5] call print_cls @@ -3126,8 +3120,9 @@ main: { // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#55 = (byte*) print_char_cursor#61 [phi:main::@2->main::@3#2] -- register_copy - // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 + lda #0 + sta.z op jmp __b3 // [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] __b3_from___b4: @@ -3144,7 +3139,8 @@ main: { lda.z w1+1 sta.z compare.w1+1 // [14] (word) compare::w2#0 ← (word) main::w2#0 - // [15] (byte) compare::op#0 ← (byte) main::op#2 + // [15] (byte) compare::op#0 ← (byte) main::op#2 -- vbuaa=vbuz1 + lda.z op // [16] call compare jsr compare jmp __b9 @@ -3189,10 +3185,11 @@ main: { jmp __b4 // main::@4 __b4: - // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuxx=_inc_vbuxx - inx - // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuz1=_inc_vbuz1 + inc.z op + // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z op bne __b3_from___b4 jmp __b6 // main::@6 @@ -3256,44 +3253,44 @@ print_ln: { } // compare // Compare two words using an operator -// compare(word zp(8) w1, word zp($11) w2, byte register(X) op) +// compare(word zp(9) w1, word zp($11) w2, byte register(A) op) compare: { - .label w1 = 8 + .label w1 = 9 .label w2 = $11 .label ops = $d - .label r = 7 - // [35] if((byte) compare::op#0==(byte) 0) goto compare::@1 -- vbuxx_eq_0_then_la1 - cpx #0 + .label r = 8 + // [35] if((byte) compare::op#0==(byte) 0) goto compare::@1 -- vbuaa_eq_0_then_la1 + cmp #0 beq __b1 jmp __b7 // compare::@7 __b7: - // [36] if((byte) compare::op#0==(byte) 1) goto compare::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #1 + // [36] if((byte) compare::op#0==(byte) 1) goto compare::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #1 beq __b2 jmp __b8 // compare::@8 __b8: - // [37] if((byte) compare::op#0==(byte) 2) goto compare::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #2 + // [37] if((byte) compare::op#0==(byte) 2) goto compare::@3 -- vbuaa_eq_vbuc1_then_la1 + cmp #2 beq __b3 jmp __b9 // compare::@9 __b9: - // [38] if((byte) compare::op#0==(byte) 3) goto compare::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #3 + // [38] if((byte) compare::op#0==(byte) 3) goto compare::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #3 beq __b4 jmp __b10 // compare::@10 __b10: - // [39] if((byte) compare::op#0==(byte) 4) goto compare::@5 -- vbuxx_eq_vbuc1_then_la1 - cpx #4 + // [39] if((byte) compare::op#0==(byte) 4) goto compare::@5 -- vbuaa_eq_vbuc1_then_la1 + cmp #4 beq __b5 jmp __b11 // compare::@11 __b11: - // [40] if((byte) compare::op#0!=(byte) 5) goto compare::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 + // [40] if((byte) compare::op#0!=(byte) 5) goto compare::@6 -- vbuaa_neq_vbuc1_then_la1 + cmp #5 bne __b6_from___b11 jmp __b12 // compare::@12 @@ -3630,12 +3627,11 @@ print_char: { } // print_word // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 - // [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + .label w = 9 + // [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [77] call print_byte // [81] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -3645,9 +3641,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [78] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [78] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 + ldx.z w // [79] call print_byte // [81] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -3662,11 +3657,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c - // [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -3684,12 +3678,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [86] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [86] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [87] call print_char // [71] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -3974,9 +3967,9 @@ Removing instruction lda #3 Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [107] beq __b1 to bne -Fixing long branch [111] beq __b2 to bne -Fixing long branch [115] beq __b3 to bne +Fixing long branch [111] beq __b1 to bne +Fixing long branch [115] beq __b2 to bne +Fixing long branch [119] beq __b3 to bne FINAL SYMBOL TABLE (label) @1 @@ -4019,7 +4012,7 @@ FINAL SYMBOL TABLE (label) compare::@9 (label) compare::@return (byte) compare::op -(byte) compare::op#0 reg byte x 168.8333333333334 +(byte) compare::op#0 reg byte a 101667.83333333331 (byte*) compare::ops (const byte*) compare::ops#1 ops_1 = (byte*) "!=" (const byte*) compare::ops#2 ops_2 = (byte*) "==" @@ -4027,22 +4020,22 @@ FINAL SYMBOL TABLE (const byte*) compare::ops#4 ops_4 = (byte*) "> " (const byte*) compare::ops#5 ops_5 = (byte*) "<=" (const byte*) compare::ops#6 ops_6 = (byte*) "< " -(byte*) compare::ops#7 ops zp[2]:13 0.6666666666666666 +(byte*) compare::ops#7 ops zp[2]:13 33333.666666666664 (byte) compare::r -(byte) compare::r#10 r zp[1]:7 1.9999999999999996 -(byte) compare::r#12 r zp[1]:7 2.0 -(byte) compare::r#13 r zp[1]:7 2.0 -(byte) compare::r#14 r zp[1]:7 2.0 -(byte) compare::r#15 r zp[1]:7 2.0 -(byte) compare::r#16 r zp[1]:7 2.0 -(byte) compare::r#17 r zp[1]:7 2.0 +(byte) compare::r#10 r zp[1]:8 100001.0 +(byte) compare::r#12 r zp[1]:8 100001.0 +(byte) compare::r#13 r zp[1]:8 100001.0 +(byte) compare::r#14 r zp[1]:8 100001.0 +(byte) compare::r#15 r zp[1]:8 100001.0 +(byte) compare::r#16 r zp[1]:8 100001.0 +(byte) compare::r#17 r zp[1]:8 100001.0 (word) compare::w1 -(word) compare::w1#0 w1 zp[2]:8 36.249999999999986 +(word) compare::w1#0 w1 zp[2]:9 25357.428571428572 (word) compare::w2 -(word) compare::w2#0 w2 zp[2]:17 32.741935483870954 +(word) compare::w2#0 w2 zp[2]:17 22903.483870967746 (void()) main() -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@2 @@ -4054,24 +4047,24 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 1.5714285714285716 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 14.428571428571427 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 18.9375 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 187.6875 (byte) main::op -(byte) main::op#1 reg byte x 1501.5 -(byte) main::op#2 reg byte x 273.0 +(byte) main::op#1 op zp[1]:4 15001.5 +(byte) main::op#2 op zp[1]:4 2727.5454545454545 (byte) main::s -(byte) main::s#1 s zp[1]:4 1501.5 -(byte) main::s#10 s zp[1]:4 302.0 -(byte) main::s#3 s zp[1]:4 420.59999999999997 -(byte) main::s#5 s zp[1]:4 71.0 -(byte) main::s#7 s zp[1]:4 7.333333333333333 +(byte) main::s#1 s zp[1]:5 15001.5 +(byte) main::s#10 s zp[1]:5 3014.857142857143 +(byte) main::s#3 s zp[1]:5 4200.6 +(byte) main::s#5 s zp[1]:5 701.0 +(byte) main::s#7 s zp[1]:5 67.33333333333333 (word) main::w1 -(word) main::w1#0 w1 zp[2]:15 53.26315789473684 +(word) main::w1#0 w1 zp[2]:15 531.6842105263157 (word) main::w2 -(word) main::w2#0 w2 zp[2]:17 78.71428571428571 +(word) main::w2#0 w2 zp[2]:17 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -4079,8 +4072,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:13 22.0 -(byte*) memset::dst#2 dst zp[2]:13 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:13 20002.0 +(byte*) memset::dst#2 dst zp[2]:13 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -4089,43 +4082,43 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2.0000002E7 +(byte~) print_byte::$2 reg byte x 2.0000002E7 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:12 4.0 -(byte) print_byte::b#1 b zp[1]:12 4.0 -(byte) print_byte::b#2 b zp[1]:12 2.0 +(byte) print_byte::b#0 reg byte x 2000002.0 +(byte) print_byte::b#1 reg byte x 2000002.0 +(byte) print_byte::b#2 reg byte x 5500001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 8.0 +(byte) print_char::ch#0 reg byte a 2.0000002E7 +(byte) print_char::ch#1 reg byte a 2.0000002E7 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1.20100004E8 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 10001.0 -(byte*) print_char_cursor#106 print_char_cursor zp[2]:10 2002.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:10 393.3571428571428 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 5001.166666666666 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:10 6.0 -(byte*) print_char_cursor#52 print_char_cursor zp[2]:10 3.0 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:10 2.0 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:10 36.800000000000004 -(byte*) print_char_cursor#61 print_char_cursor zp[2]:10 71.0 -(byte*) print_char_cursor#62 print_char_cursor zp[2]:10 445.0 -(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 1.0000000001E10 +(byte*) print_char_cursor#106 print_char_cursor zp[2]:11 20002.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:11 3.972178600000001E7 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:11 5.000183334166666E9 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:11 1.10100003E8 +(byte*) print_char_cursor#52 print_char_cursor zp[2]:11 600001.5 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:11 4000000.9999999995 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:11 3700.1000000000004 +(byte*) print_char_cursor#61 print_char_cursor zp[2]:11 701.0 +(byte*) print_char_cursor#62 print_char_cursor zp[2]:11 4443.571428571429 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:11 67.33333333333333 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 6401.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 233.8888888888889 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:5 445.0 -(byte*) print_line_cursor#26 print_line_cursor zp[2]:5 71.0 -(byte*) print_line_cursor#28 print_line_cursor zp[2]:5 7.333333333333333 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 20004.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 6.00004001E8 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:6 13444.888888888889 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 4443.571428571429 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:6 701.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:6 67.33333333333333 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:6 2.000100003E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -4135,40 +4128,40 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:13 20002.0 -(byte*) print_str::str#1 str zp[2]:13 2.0 -(byte*) print_str::str#2 str zp[2]:13 10001.5 +(byte*) print_str::str#0 str zp[2]:13 2.0000000002E10 +(byte*) print_str::str#1 str zp[2]:13 550001.0 +(byte*) print_str::str#2 str zp[2]:13 1.000025000125E10 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:8 4.0 -(word) print_word::w#1 w zp[2]:8 4.0 -(word) print_word::w#2 w zp[2]:8 2.6666666666666665 +(word) print_word::w#0 w zp[2]:9 200002.0 +(word) print_word::w#1 w zp[2]:9 200002.0 +(word) print_word::w#2 w zp[2]:9 733334.6666666667 (const word*) words[] = { (word) $12, (word) $3f34, (word) $cfed } zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] -reg byte x [ main::op#2 main::op#1 ] -zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +zp[1]:4 [ main::op#2 main::op#1 ] +zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] -zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] +zp[2]:11 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] zp[2]:17 [ main::w2#0 compare::w2#0 ] -reg byte x [ compare::op#0 ] +reg byte a [ compare::op#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 966619 +Score: 978609 // File Comments // Upstart @@ -4180,8 +4173,8 @@ Score: 966619 .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $a - .label print_line_cursor = 5 + .label print_char_cursor = $b + .label print_line_cursor = 6 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -4193,7 +4186,8 @@ Score: 966619 main: { .label w1 = $f .label w2 = $11 - .label s = 4 + .label s = 5 + .label op = 4 .label j = 3 .label i = 2 // print_cls() @@ -4262,8 +4256,9 @@ main: { // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#55 = (byte*) print_char_cursor#61 [phi:main::@2->main::@3#2] -- register_copy - // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 + lda #0 + sta.z op // [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 [phi:main::@4->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#10 [phi:main::@4->main::@3#1] -- register_copy @@ -4278,7 +4273,8 @@ main: { lda.z w1+1 sta.z compare.w1+1 // [14] (word) compare::w2#0 ← (word) main::w2#0 - // [15] (byte) compare::op#0 ← (byte) main::op#2 + // [15] (byte) compare::op#0 ← (byte) main::op#2 -- vbuaa=vbuz1 + lda.z op // [16] call compare jsr compare // main::@9 @@ -4314,10 +4310,11 @@ main: { // main::@4 __b4: // for( byte op: 0..5 ) - // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuxx=_inc_vbuxx - inx - // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuz1=_inc_vbuz1 + inc.z op + // [24] if((byte) main::op#1!=(byte) 6) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z op bne __b3 // main::@6 // for( byte j: 0..2) @@ -4373,46 +4370,46 @@ print_ln: { } // compare // Compare two words using an operator -// compare(word zp(8) w1, word zp($11) w2, byte register(X) op) +// compare(word zp(9) w1, word zp($11) w2, byte register(A) op) compare: { - .label w1 = 8 + .label w1 = 9 .label w2 = $11 .label ops = $d - .label r = 7 + .label r = 8 // if(op==0) - // [35] if((byte) compare::op#0==(byte) 0) goto compare::@1 -- vbuxx_eq_0_then_la1 - cpx #0 + // [35] if((byte) compare::op#0==(byte) 0) goto compare::@1 -- vbuaa_eq_0_then_la1 + cmp #0 bne !__b1+ jmp __b1 !__b1: // compare::@7 // if(op==1) - // [36] if((byte) compare::op#0==(byte) 1) goto compare::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #1 + // [36] if((byte) compare::op#0==(byte) 1) goto compare::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #1 bne !__b2+ jmp __b2 !__b2: // compare::@8 // if(op==2) - // [37] if((byte) compare::op#0==(byte) 2) goto compare::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #2 + // [37] if((byte) compare::op#0==(byte) 2) goto compare::@3 -- vbuaa_eq_vbuc1_then_la1 + cmp #2 bne !__b3+ jmp __b3 !__b3: // compare::@9 // if(op==3) - // [38] if((byte) compare::op#0==(byte) 3) goto compare::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #3 + // [38] if((byte) compare::op#0==(byte) 3) goto compare::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #3 beq __b4 // compare::@10 // if(op==4) - // [39] if((byte) compare::op#0==(byte) 4) goto compare::@5 -- vbuxx_eq_vbuc1_then_la1 - cpx #4 + // [39] if((byte) compare::op#0==(byte) 4) goto compare::@5 -- vbuaa_eq_vbuc1_then_la1 + cmp #4 beq __b5 // compare::@11 // if(op==5) - // [40] if((byte) compare::op#0!=(byte) 5) goto compare::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #5 + // [40] if((byte) compare::op#0!=(byte) 5) goto compare::@6 -- vbuaa_neq_vbuc1_then_la1 + cmp #5 bne b2 // compare::@12 // if(w1!=w2) @@ -4706,13 +4703,12 @@ print_char: { } // print_word // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 + .label w = 9 // print_byte(>w) - // [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [76] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [77] call print_byte // [81] phi from print_word to print_byte [phi:print_word->print_byte] // [81] phi (byte*) print_char_cursor#53 = (byte*) print_char_cursor#52 [phi:print_word->print_byte#0] -- register_copy @@ -4720,9 +4716,8 @@ print_word: { jsr print_byte // print_word::@1 // print_byte(print_byte] // [81] phi (byte*) print_char_cursor#53 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy @@ -4735,12 +4730,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($c) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $c // b>>4 - // [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [82] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -4757,13 +4751,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [85] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [86] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [86] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [87] call print_char // [71] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [71] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/test-comparisons-word.sym b/src/test/ref/test-comparisons-word.sym index 51b47bce8..e600979d4 100644 --- a/src/test/ref/test-comparisons-word.sym +++ b/src/test/ref/test-comparisons-word.sym @@ -38,7 +38,7 @@ (label) compare::@9 (label) compare::@return (byte) compare::op -(byte) compare::op#0 reg byte x 168.8333333333334 +(byte) compare::op#0 reg byte a 101667.83333333331 (byte*) compare::ops (const byte*) compare::ops#1 ops_1 = (byte*) "!=" (const byte*) compare::ops#2 ops_2 = (byte*) "==" @@ -46,22 +46,22 @@ (const byte*) compare::ops#4 ops_4 = (byte*) "> " (const byte*) compare::ops#5 ops_5 = (byte*) "<=" (const byte*) compare::ops#6 ops_6 = (byte*) "< " -(byte*) compare::ops#7 ops zp[2]:13 0.6666666666666666 +(byte*) compare::ops#7 ops zp[2]:13 33333.666666666664 (byte) compare::r -(byte) compare::r#10 r zp[1]:7 1.9999999999999996 -(byte) compare::r#12 r zp[1]:7 2.0 -(byte) compare::r#13 r zp[1]:7 2.0 -(byte) compare::r#14 r zp[1]:7 2.0 -(byte) compare::r#15 r zp[1]:7 2.0 -(byte) compare::r#16 r zp[1]:7 2.0 -(byte) compare::r#17 r zp[1]:7 2.0 +(byte) compare::r#10 r zp[1]:8 100001.0 +(byte) compare::r#12 r zp[1]:8 100001.0 +(byte) compare::r#13 r zp[1]:8 100001.0 +(byte) compare::r#14 r zp[1]:8 100001.0 +(byte) compare::r#15 r zp[1]:8 100001.0 +(byte) compare::r#16 r zp[1]:8 100001.0 +(byte) compare::r#17 r zp[1]:8 100001.0 (word) compare::w1 -(word) compare::w1#0 w1 zp[2]:8 36.249999999999986 +(word) compare::w1#0 w1 zp[2]:9 25357.428571428572 (word) compare::w2 -(word) compare::w2#0 w2 zp[2]:17 32.741935483870954 +(word) compare::w2#0 w2 zp[2]:17 22903.483870967746 (void()) main() -(byte~) main::$8 reg byte a 22.0 -(byte~) main::$9 reg byte a 202.0 +(byte~) main::$8 reg byte a 202.0 +(byte~) main::$9 reg byte a 2002.0 (label) main::@1 (label) main::@10 (label) main::@2 @@ -73,24 +73,24 @@ (label) main::@8 (label) main::@9 (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 1.5714285714285716 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 14.428571428571427 (byte) main::j -(byte) main::j#1 j zp[1]:3 151.5 -(byte) main::j#2 j zp[1]:3 18.9375 +(byte) main::j#1 j zp[1]:3 1501.5 +(byte) main::j#2 j zp[1]:3 187.6875 (byte) main::op -(byte) main::op#1 reg byte x 1501.5 -(byte) main::op#2 reg byte x 273.0 +(byte) main::op#1 op zp[1]:4 15001.5 +(byte) main::op#2 op zp[1]:4 2727.5454545454545 (byte) main::s -(byte) main::s#1 s zp[1]:4 1501.5 -(byte) main::s#10 s zp[1]:4 302.0 -(byte) main::s#3 s zp[1]:4 420.59999999999997 -(byte) main::s#5 s zp[1]:4 71.0 -(byte) main::s#7 s zp[1]:4 7.333333333333333 +(byte) main::s#1 s zp[1]:5 15001.5 +(byte) main::s#10 s zp[1]:5 3014.857142857143 +(byte) main::s#3 s zp[1]:5 4200.6 +(byte) main::s#5 s zp[1]:5 701.0 +(byte) main::s#7 s zp[1]:5 67.33333333333333 (word) main::w1 -(word) main::w1#0 w1 zp[2]:15 53.26315789473684 +(word) main::w1#0 w1 zp[2]:15 531.6842105263157 (word) main::w2 -(word) main::w2#0 w2 zp[2]:17 78.71428571428571 +(word) main::w2#0 w2 zp[2]:17 785.8571428571429 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -98,8 +98,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:13 22.0 -(byte*) memset::dst#2 dst zp[2]:13 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:13 20002.0 +(byte*) memset::dst#2 dst zp[2]:13 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -108,43 +108,43 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2.0000002E7 +(byte~) print_byte::$2 reg byte x 2.0000002E7 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:12 4.0 -(byte) print_byte::b#1 b zp[1]:12 4.0 -(byte) print_byte::b#2 b zp[1]:12 2.0 +(byte) print_byte::b#0 reg byte x 2000002.0 +(byte) print_byte::b#1 reg byte x 2000002.0 +(byte) print_byte::b#2 reg byte x 5500001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 8.0 +(byte) print_char::ch#0 reg byte a 2.0000002E7 +(byte) print_char::ch#1 reg byte a 2.0000002E7 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#4 reg byte a 1.20100004E8 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:10 10001.0 -(byte*) print_char_cursor#106 print_char_cursor zp[2]:10 2002.0 -(byte*) print_char_cursor#11 print_char_cursor zp[2]:10 393.3571428571428 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:10 5001.166666666666 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:10 6.0 -(byte*) print_char_cursor#52 print_char_cursor zp[2]:10 3.0 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:10 2.0 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:10 36.800000000000004 -(byte*) print_char_cursor#61 print_char_cursor zp[2]:10 71.0 -(byte*) print_char_cursor#62 print_char_cursor zp[2]:10 445.0 -(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 1.0000000001E10 +(byte*) print_char_cursor#106 print_char_cursor zp[2]:11 20002.0 +(byte*) print_char_cursor#11 print_char_cursor zp[2]:11 3.972178600000001E7 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:11 5.000183334166666E9 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:11 1.10100003E8 +(byte*) print_char_cursor#52 print_char_cursor zp[2]:11 600001.5 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:11 4000000.9999999995 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:11 3700.1000000000004 +(byte*) print_char_cursor#61 print_char_cursor zp[2]:11 701.0 +(byte*) print_char_cursor#62 print_char_cursor zp[2]:11 4443.571428571429 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:11 67.33333333333333 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 6401.0 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 233.8888888888889 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:5 445.0 -(byte*) print_line_cursor#26 print_line_cursor zp[2]:5 71.0 -(byte*) print_line_cursor#28 print_line_cursor zp[2]:5 7.333333333333333 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 20004.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 6.00004001E8 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:6 13444.888888888889 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:6 4443.571428571429 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:6 701.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:6 67.33333333333333 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:6 2.000100003E9 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -154,33 +154,33 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:13 20002.0 -(byte*) print_str::str#1 str zp[2]:13 2.0 -(byte*) print_str::str#2 str zp[2]:13 10001.5 +(byte*) print_str::str#0 str zp[2]:13 2.0000000002E10 +(byte*) print_str::str#1 str zp[2]:13 550001.0 +(byte*) print_str::str#2 str zp[2]:13 1.000025000125E10 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:8 4.0 -(word) print_word::w#1 w zp[2]:8 4.0 -(word) print_word::w#2 w zp[2]:8 2.6666666666666665 +(word) print_word::w#0 w zp[2]:9 200002.0 +(word) print_word::w#1 w zp[2]:9 200002.0 +(word) print_word::w#2 w zp[2]:9 733334.6666666667 (const word*) words[] = { (word) $12, (word) $3f34, (word) $cfed } zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::j#2 main::j#1 ] -reg byte x [ main::op#2 main::op#1 ] -zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] -zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] +zp[1]:4 [ main::op#2 main::op#1 ] +zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] +zp[1]:8 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] -zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:9 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] +zp[2]:11 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] zp[2]:17 [ main::w2#0 compare::w2#0 ] -reg byte x [ compare::op#0 ] +reg byte a [ compare::op#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] diff --git a/src/test/ref/test-comparisons.asm b/src/test/ref/test-comparisons.asm index 51119baf1..b2f790379 100644 --- a/src/test/ref/test-comparisons.asm +++ b/src/test/ref/test-comparisons.asm @@ -1,12 +1,13 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_char_cursor = 7 - .label print_line_cursor = 4 + .label print_char_cursor = 8 + .label print_line_cursor = 5 main: { .label b = $c .label a = 2 .label i = 3 + .label r = 4 // print_cls() jsr print_cls lda #<$400 @@ -31,14 +32,16 @@ main: { lda.z a cmp.z b bcs b1 - ldx #'+' + ldy #'+' jmp __b2 b1: - ldx #'-' + ldy #'-' __b2: // printu(a, "< ", b, r) + ldx.z a lda.z b sta.z printu.b + sty.z printu.res lda #op @@ -48,12 +51,14 @@ main: { lda.z a cmp #$37 bcs b2 - ldx #'+' + lda #'+' jmp __b3 b2: - ldx #'-' + lda #'-' __b3: // printu(a, "< ", $37, r) + ldx.z a + sta.z printu.res lda #$37 sta.z printu.b lda #op @@ -103,14 +113,16 @@ main: { lda.z b cmp.z a bcs b5 - ldx #'+' + ldy #'+' jmp __b6 b5: - ldx #'-' + ldy #'-' __b6: // printu(a, "> ", b, r) + ldx.z a lda.z b sta.z printu.b + sty.z printu.res lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -125,12 +137,14 @@ main: { lda.z a cmp #$37+1 bcc b6 - ldx #'+' + lda #'+' jmp __b7 b6: - ldx #'-' + lda #'-' __b7: // printu(a, "> ", $37, r) + ldx.z a + sta.z printu.res lda #$37 sta.z printu.b lda # ", cs[i], r) + ldx.z a ldy.z i lda cs,y sta.z printu.b @@ -161,14 +178,16 @@ main: { lda.z a cmp.z a bcs b8 - ldx #'+' + ldy #'+' jmp __b9 b8: - ldx #'-' + ldy #'-' __b9: // printu(a, "> ", a, r) - lda.z a + ldx.z a + txa sta.z printu.b + sty.z printu.res lda #op4 @@ -180,14 +199,16 @@ main: { lda.z b cmp.z a bcc b9 - ldx #'+' + ldy #'+' jmp __b10 b9: - ldx #'-' + ldy #'-' __b10: // printu(a, "<=", b, r) + ldx.z a lda.z b sta.z printu.b + sty.z printu.res lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -202,12 +223,14 @@ main: { lda.z a cmp #$37+1 bcs b10 - ldx #'+' + lda #'+' jmp __b11 b10: - ldx #'-' + lda #'-' __b11: // printu(a, "<=", $37, r) + ldx.z a + sta.z printu.res lda #$37 sta.z printu.b lda #=", b, r) + ldx.z a lda.z b sta.z printu.b + sty.z printu.res lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -279,12 +309,14 @@ main: { lda.z a cmp #$37 bcc b14 - ldx #'+' + lda #'+' jmp __b15 b14: - ldx #'-' + lda #'-' __b15: // printu(a, ">=", $37, r) + ldx.z a + sta.z printu.res lda #$37 sta.z printu.b lda #=", cs[i], r) + ldx.z a ldy.z i lda cs,y sta.z printu.b @@ -315,14 +350,16 @@ main: { lda.z a cmp.z a bcc b16 - ldx #'+' + ldy #'+' jmp __b17 b16: - ldx #'-' + ldy #'-' __b17: // printu(a, ">=", a, r) - lda.z a + ldx.z a + txa sta.z printu.b + sty.z printu.res lda #op12 @@ -334,14 +371,16 @@ main: { lda.z a cmp.z b bne b17 - ldx #'+' + ldy #'+' jmp __b18 b17: - ldx #'-' + ldy #'-' __b18: // printu(a, "==", b, r) + ldx.z a lda.z b sta.z printu.b + sty.z printu.res lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -356,12 +395,14 @@ main: { lda #$37 cmp.z a bne b18 - ldx #'+' + lda #'+' jmp __b19 b18: - ldx #'-' + lda #'-' __b19: // printu(a, "==", $37, r) + ldx.z a + sta.z printu.res lda #$37 sta.z printu.b lda #op16 @@ -459,29 +505,26 @@ print_ln: { // } rts } -// printu(byte zp(2) a, byte* zp($a) op, byte zp(6) b, byte register(X) res) +// printu(byte register(X) a, byte* zp($a) op, byte zp(7) b, byte zp(4) res) printu: { - .label a = 2 - .label b = 6 + .label b = 7 + .label res = 4 .label op = $a // print_char(' ') lda #' ' jsr print_char // print_byte(a) - lda.z a - sta.z print_byte.b jsr print_byte // print_str(op) jsr print_str // print_byte(b) - lda.z b - sta.z print_byte.b + ldx.z b jsr print_byte // print_char(' ') lda #' ' jsr print_char // print_char(res) - txa + lda.z res jsr print_char // } rts @@ -501,11 +544,10 @@ print_char: { rts } // Print a byte as HEX -// print_byte(byte zp(9) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 9 // b>>4 - lda.z b + txa lsr lsr lsr @@ -516,8 +558,8 @@ print_byte: { // Table of hexadecimal digits jsr print_char // b&$f - lda #$f - and.z b + txa + and #$f // print_char(print_hextab[b&$f]) tay lda print_hextab,y diff --git a/src/test/ref/test-comparisons.log b/src/test/ref/test-comparisons.log index 74e39bb5b..cf3752413 100644 --- a/src/test/ref/test-comparisons.log +++ b/src/test/ref/test-comparisons.log @@ -1963,181 +1963,181 @@ Inversing boolean not [344] (bool~) main::$58 ← (byte) main::a#36 != (byte) $3 Inversing boolean not [358] (bool~) main::$61 ← (byte) main::a#38 != *((const byte*) main::cs + (byte) main::i#10) from [357] (bool~) main::$60 ← (byte) main::a#38 == *((const byte*) main::cs + (byte) main::i#10) Inversing boolean not [372] (bool~) main::$64 ← (byte) main::a#40 != (byte) main::a#40 from [371] (bool~) main::$63 ← (byte) main::a#40 == (byte) main::a#40 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#33 (byte*) print_char_cursor#118 (byte*) print_screen#4 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#92 (byte*) print_char_cursor#48 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#14 (byte*) print_char_cursor#3 (byte*) print_line_cursor#15 (byte*) print_char_cursor#50 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#53 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#55 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#16 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#10 (byte*) print_char_cursor#56 (byte*) print_line_cursor#4 (byte*) print_char_cursor#11 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#57 -Alias (byte) main::b#0 = (byte~) main::$1 (byte) main::b#10 -Alias (byte) main::a#3 = (byte) main::a#4 (byte) main::a#44 -Alias (byte) main::i#24 = (byte) main::i#25 (byte) main::i#35 -Alias (byte*) print_line_cursor#69 = (byte*) print_line_cursor#70 (byte*) print_line_cursor#79 -Alias (byte) main::b#1 = (byte) main::b#48 (byte) main::b#47 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#13 (byte*) print_char_cursor#58 -Alias (byte) main::a#2 = (byte) main::a#43 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#121 -Alias (byte) main::i#42 = (byte) main::i#43 -Alias (byte*) print_line_cursor#84 = (byte*) print_line_cursor#85 -Alias (byte) main::a#45 = (byte) main::a#6 (byte) main::a#5 -Alias (byte) main::i#13 = (byte) main::i#2 (byte) main::i#14 -Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#55 (byte*) print_line_cursor#64 -Alias (byte) main::b#35 = (byte) main::b#36 (byte) main::b#43 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#14 (byte*) print_char_cursor#59 -Alias (byte) main::a#46 = (byte) main::a#8 (byte) main::a#7 -Alias (byte*) print_line_cursor#39 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#49 -Alias (byte) main::b#23 = (byte) main::b#24 (byte) main::b#31 -Alias (byte) main::i#3 = (byte) main::i#61 (byte) main::i#60 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#15 (byte*) print_char_cursor#60 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#34 -Alias (byte) main::a#10 = (byte) main::a#47 (byte) main::a#9 (byte) main::a#48 -Alias (byte) main::b#11 = (byte) main::b#19 (byte) main::b#2 (byte) main::b#12 -Alias (byte) main::i#44 = (byte) main::i#52 (byte) main::i#56 (byte) main::i#45 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#61 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#86 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#62 -Alias (byte) main::a#11 = (byte) main::a#12 (byte) main::a#49 -Alias (byte) main::i#26 = (byte) main::i#27 (byte) main::i#36 -Alias (byte*) print_line_cursor#71 = (byte*) print_line_cursor#72 (byte*) print_line_cursor#80 -Alias (byte) main::b#3 = (byte) main::b#50 (byte) main::b#49 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#18 (byte*) print_char_cursor#63 -Alias (byte) main::a#13 = (byte) main::a#14 (byte) main::a#50 -Alias (byte) main::i#15 = (byte) main::i#4 (byte) main::i#16 -Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#57 (byte*) print_line_cursor#65 -Alias (byte) main::b#37 = (byte) main::b#38 (byte) main::b#44 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#19 (byte*) print_char_cursor#64 -Alias (byte) main::a#15 = (byte) main::a#16 (byte) main::a#51 -Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#50 -Alias (byte) main::b#25 = (byte) main::b#26 (byte) main::b#32 -Alias (byte) main::i#5 = (byte) main::i#63 (byte) main::i#62 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#20 (byte*) print_char_cursor#65 -Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#35 -Alias (byte) main::a#17 = (byte) main::a#52 (byte) main::a#18 (byte) main::a#53 -Alias (byte) main::b#13 = (byte) main::b#20 (byte) main::b#4 (byte) main::b#14 -Alias (byte) main::i#46 = (byte) main::i#53 (byte) main::i#57 (byte) main::i#47 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#66 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#87 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#67 -Alias (byte) main::a#19 = (byte) main::a#20 (byte) main::a#54 -Alias (byte) main::i#28 = (byte) main::i#29 (byte) main::i#37 -Alias (byte*) print_line_cursor#73 = (byte*) print_line_cursor#74 (byte*) print_line_cursor#81 -Alias (byte) main::b#5 = (byte) main::b#52 (byte) main::b#51 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#68 -Alias (byte) main::a#21 = (byte) main::a#22 (byte) main::a#55 -Alias (byte) main::i#17 = (byte) main::i#6 (byte) main::i#18 -Alias (byte*) print_line_cursor#58 = (byte*) print_line_cursor#59 (byte*) print_line_cursor#66 -Alias (byte) main::b#39 = (byte) main::b#40 (byte) main::b#45 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#24 (byte*) print_char_cursor#69 -Alias (byte) main::a#23 = (byte) main::a#24 (byte) main::a#56 -Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#44 (byte*) print_line_cursor#51 -Alias (byte) main::b#27 = (byte) main::b#28 (byte) main::b#33 -Alias (byte) main::i#64 = (byte) main::i#65 (byte) main::i#7 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#25 (byte*) print_char_cursor#70 -Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#36 -Alias (byte) main::a#25 = (byte) main::a#57 (byte) main::a#26 (byte) main::a#58 -Alias (byte) main::b#15 = (byte) main::b#21 (byte) main::b#6 (byte) main::b#16 -Alias (byte) main::i#48 = (byte) main::i#54 (byte) main::i#58 (byte) main::i#49 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#71 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#88 -Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#27 (byte*) print_char_cursor#72 -Alias (byte) main::a#27 = (byte) main::a#28 (byte) main::a#59 -Alias (byte) main::i#30 = (byte) main::i#31 (byte) main::i#38 -Alias (byte*) print_line_cursor#75 = (byte*) print_line_cursor#76 (byte*) print_line_cursor#82 -Alias (byte) main::b#53 = (byte) main::b#54 (byte) main::b#7 -Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#28 (byte*) print_char_cursor#73 -Alias (byte) main::a#29 = (byte) main::a#30 (byte) main::a#60 -Alias (byte) main::i#19 = (byte) main::i#8 (byte) main::i#20 -Alias (byte*) print_line_cursor#60 = (byte*) print_line_cursor#61 (byte*) print_line_cursor#67 -Alias (byte) main::b#41 = (byte) main::b#42 (byte) main::b#46 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#74 -Alias (byte) main::a#31 = (byte) main::a#32 (byte) main::a#61 -Alias (byte*) print_line_cursor#45 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#52 -Alias (byte) main::b#29 = (byte) main::b#30 (byte) main::b#34 -Alias (byte) main::i#66 = (byte) main::i#67 (byte) main::i#9 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#75 -Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#37 -Alias (byte) main::a#33 = (byte) main::a#62 (byte) main::a#34 (byte) main::a#63 -Alias (byte) main::b#17 = (byte) main::b#22 (byte) main::b#8 (byte) main::b#18 -Alias (byte) main::i#50 = (byte) main::i#55 (byte) main::i#59 (byte) main::i#51 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#76 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#89 -Alias (byte*) print_char_cursor#137 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#77 -Alias (byte) main::a#35 = (byte) main::a#36 (byte) main::a#64 -Alias (byte) main::i#32 = (byte) main::i#33 (byte) main::i#39 -Alias (byte*) print_line_cursor#77 = (byte*) print_line_cursor#78 (byte*) print_line_cursor#83 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#78 -Alias (byte) main::a#37 = (byte) main::a#38 (byte) main::a#65 -Alias (byte) main::i#10 = (byte) main::i#21 (byte) main::i#22 -Alias (byte*) print_line_cursor#62 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#68 -Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#79 -Alias (byte) main::a#39 = (byte) main::a#40 (byte) main::a#66 -Alias (byte*) print_line_cursor#47 = (byte*) print_line_cursor#48 (byte*) print_line_cursor#53 -Alias (byte) main::i#11 = (byte) main::i#41 (byte) main::i#40 -Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#80 -Alias (byte*) print_line_cursor#31 = (byte*) print_line_cursor#38 -Alias (byte) main::a#41 = (byte) main::a#67 (byte) main::a#42 -Alias (byte) main::i#12 = (byte) main::i#23 (byte) main::i#34 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#81 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#82 -Alias (byte) main::a#1 = (byte~) main::$67 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#32 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#38 -Alias (byte) printu::a#20 = (byte) printu::a#21 -Alias (byte*) printu::op#20 = (byte*) printu::op#21 (byte*) printu::op#22 -Alias (byte) printu::b#20 = (byte) printu::b#22 (byte) printu::b#23 (byte) printu::b#21 -Alias (byte) printu::res#20 = (byte) printu::res#24 (byte) printu::res#25 (byte) printu::res#23 (byte) printu::res#22 (byte) printu::res#21 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#84 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#85 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#86 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#87 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#88 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#45 -Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#24 -Alias (byte*) print_char_cursor#46 = (byte*) print_char_cursor#91 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#33 print_char_cursor#118 print_screen#4 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#2 = print_char_cursor#47 print_char_cursor#92 print_char_cursor#48 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#14 print_char_cursor#3 print_line_cursor#15 print_char_cursor#50 print_line_cursor#2 print_char_cursor#4 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#5 = print_char_cursor#51 +Alias print_char_cursor#52 = print_char_cursor#6 print_char_cursor#53 print_char_cursor#7 +Alias print_char_cursor#55 = print_char_cursor#8 print_char_cursor#9 +Alias print_line_cursor#16 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#10 print_char_cursor#56 print_line_cursor#4 print_char_cursor#11 +Alias print_line_cursor#17 = print_line_cursor#5 +Alias print_char_cursor#12 = print_char_cursor#57 +Alias main::b#0 = main::$1 main::b#10 +Alias main::a#3 = main::a#4 main::a#44 +Alias main::i#24 = main::i#25 main::i#35 +Alias print_line_cursor#69 = print_line_cursor#70 print_line_cursor#79 +Alias main::b#1 = main::b#48 main::b#47 +Alias print_char_cursor#122 = print_char_cursor#13 print_char_cursor#58 +Alias main::a#2 = main::a#43 +Alias print_char_cursor#120 = print_char_cursor#121 +Alias main::i#42 = main::i#43 +Alias print_line_cursor#84 = print_line_cursor#85 +Alias main::a#45 = main::a#6 main::a#5 +Alias main::i#13 = main::i#2 main::i#14 +Alias print_line_cursor#54 = print_line_cursor#55 print_line_cursor#64 +Alias main::b#35 = main::b#36 main::b#43 +Alias print_char_cursor#123 = print_char_cursor#14 print_char_cursor#59 +Alias main::a#46 = main::a#8 main::a#7 +Alias print_line_cursor#39 = print_line_cursor#40 print_line_cursor#49 +Alias main::b#23 = main::b#24 main::b#31 +Alias main::i#3 = main::i#61 main::i#60 +Alias print_char_cursor#124 = print_char_cursor#15 print_char_cursor#60 +Alias print_line_cursor#27 = print_line_cursor#34 +Alias main::a#10 = main::a#47 main::a#9 main::a#48 +Alias main::b#11 = main::b#19 main::b#2 main::b#12 +Alias main::i#44 = main::i#52 main::i#56 main::i#45 +Alias print_char_cursor#16 = print_char_cursor#61 +Alias print_line_cursor#18 = print_line_cursor#6 print_line_cursor#86 +Alias print_char_cursor#125 = print_char_cursor#17 print_char_cursor#62 +Alias main::a#11 = main::a#12 main::a#49 +Alias main::i#26 = main::i#27 main::i#36 +Alias print_line_cursor#71 = print_line_cursor#72 print_line_cursor#80 +Alias main::b#3 = main::b#50 main::b#49 +Alias print_char_cursor#126 = print_char_cursor#18 print_char_cursor#63 +Alias main::a#13 = main::a#14 main::a#50 +Alias main::i#15 = main::i#4 main::i#16 +Alias print_line_cursor#56 = print_line_cursor#57 print_line_cursor#65 +Alias main::b#37 = main::b#38 main::b#44 +Alias print_char_cursor#127 = print_char_cursor#19 print_char_cursor#64 +Alias main::a#15 = main::a#16 main::a#51 +Alias print_line_cursor#41 = print_line_cursor#42 print_line_cursor#50 +Alias main::b#25 = main::b#26 main::b#32 +Alias main::i#5 = main::i#63 main::i#62 +Alias print_char_cursor#128 = print_char_cursor#20 print_char_cursor#65 +Alias print_line_cursor#28 = print_line_cursor#35 +Alias main::a#17 = main::a#52 main::a#18 main::a#53 +Alias main::b#13 = main::b#20 main::b#4 main::b#14 +Alias main::i#46 = main::i#53 main::i#57 main::i#47 +Alias print_char_cursor#21 = print_char_cursor#66 +Alias print_line_cursor#19 = print_line_cursor#7 print_line_cursor#87 +Alias print_char_cursor#129 = print_char_cursor#22 print_char_cursor#67 +Alias main::a#19 = main::a#20 main::a#54 +Alias main::i#28 = main::i#29 main::i#37 +Alias print_line_cursor#73 = print_line_cursor#74 print_line_cursor#81 +Alias main::b#5 = main::b#52 main::b#51 +Alias print_char_cursor#130 = print_char_cursor#23 print_char_cursor#68 +Alias main::a#21 = main::a#22 main::a#55 +Alias main::i#17 = main::i#6 main::i#18 +Alias print_line_cursor#58 = print_line_cursor#59 print_line_cursor#66 +Alias main::b#39 = main::b#40 main::b#45 +Alias print_char_cursor#131 = print_char_cursor#24 print_char_cursor#69 +Alias main::a#23 = main::a#24 main::a#56 +Alias print_line_cursor#43 = print_line_cursor#44 print_line_cursor#51 +Alias main::b#27 = main::b#28 main::b#33 +Alias main::i#64 = main::i#65 main::i#7 +Alias print_char_cursor#132 = print_char_cursor#25 print_char_cursor#70 +Alias print_line_cursor#29 = print_line_cursor#36 +Alias main::a#25 = main::a#57 main::a#26 main::a#58 +Alias main::b#15 = main::b#21 main::b#6 main::b#16 +Alias main::i#48 = main::i#54 main::i#58 main::i#49 +Alias print_char_cursor#26 = print_char_cursor#71 +Alias print_line_cursor#20 = print_line_cursor#8 print_line_cursor#88 +Alias print_char_cursor#133 = print_char_cursor#27 print_char_cursor#72 +Alias main::a#27 = main::a#28 main::a#59 +Alias main::i#30 = main::i#31 main::i#38 +Alias print_line_cursor#75 = print_line_cursor#76 print_line_cursor#82 +Alias main::b#53 = main::b#54 main::b#7 +Alias print_char_cursor#134 = print_char_cursor#28 print_char_cursor#73 +Alias main::a#29 = main::a#30 main::a#60 +Alias main::i#19 = main::i#8 main::i#20 +Alias print_line_cursor#60 = print_line_cursor#61 print_line_cursor#67 +Alias main::b#41 = main::b#42 main::b#46 +Alias print_char_cursor#135 = print_char_cursor#29 print_char_cursor#74 +Alias main::a#31 = main::a#32 main::a#61 +Alias print_line_cursor#45 = print_line_cursor#46 print_line_cursor#52 +Alias main::b#29 = main::b#30 main::b#34 +Alias main::i#66 = main::i#67 main::i#9 +Alias print_char_cursor#136 = print_char_cursor#30 print_char_cursor#75 +Alias print_line_cursor#30 = print_line_cursor#37 +Alias main::a#33 = main::a#62 main::a#34 main::a#63 +Alias main::b#17 = main::b#22 main::b#8 main::b#18 +Alias main::i#50 = main::i#55 main::i#59 main::i#51 +Alias print_char_cursor#31 = print_char_cursor#76 +Alias print_line_cursor#21 = print_line_cursor#9 print_line_cursor#89 +Alias print_char_cursor#137 = print_char_cursor#32 print_char_cursor#77 +Alias main::a#35 = main::a#36 main::a#64 +Alias main::i#32 = main::i#33 main::i#39 +Alias print_line_cursor#77 = print_line_cursor#78 print_line_cursor#83 +Alias print_char_cursor#138 = print_char_cursor#33 print_char_cursor#78 +Alias main::a#37 = main::a#38 main::a#65 +Alias main::i#10 = main::i#21 main::i#22 +Alias print_line_cursor#62 = print_line_cursor#63 print_line_cursor#68 +Alias print_char_cursor#139 = print_char_cursor#34 print_char_cursor#79 +Alias main::a#39 = main::a#40 main::a#66 +Alias print_line_cursor#47 = print_line_cursor#48 print_line_cursor#53 +Alias main::i#11 = main::i#41 main::i#40 +Alias print_char_cursor#140 = print_char_cursor#35 print_char_cursor#80 +Alias print_line_cursor#31 = print_line_cursor#38 +Alias main::a#41 = main::a#67 main::a#42 +Alias main::i#12 = main::i#23 main::i#34 +Alias print_char_cursor#36 = print_char_cursor#81 +Alias print_line_cursor#10 = print_line_cursor#22 +Alias print_char_cursor#37 = print_char_cursor#82 +Alias main::a#1 = main::$67 +Alias print_line_cursor#11 = print_line_cursor#23 print_line_cursor#32 +Alias print_char_cursor#117 = print_char_cursor#83 print_char_cursor#38 +Alias printu::a#20 = printu::a#21 +Alias printu::op#20 = printu::op#21 printu::op#22 +Alias printu::b#20 = printu::b#22 printu::b#23 printu::b#21 +Alias printu::res#20 = printu::res#24 printu::res#25 printu::res#23 printu::res#22 printu::res#21 +Alias print_char_cursor#39 = print_char_cursor#84 +Alias print_char_cursor#40 = print_char_cursor#85 +Alias print_char_cursor#41 = print_char_cursor#86 +Alias print_char_cursor#42 = print_char_cursor#87 +Alias print_char_cursor#43 = print_char_cursor#88 +Alias print_char_cursor#44 = print_char_cursor#89 print_char_cursor#90 print_char_cursor#45 +Alias print_line_cursor#12 = print_line_cursor#24 +Alias print_char_cursor#46 = print_char_cursor#91 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::a#10 = (byte) main::a#3 (byte) main::a#2 (byte) main::a#45 (byte) main::a#46 (byte) main::a#11 (byte) main::a#13 (byte) main::a#15 (byte) main::a#17 (byte) main::a#19 (byte) main::a#21 (byte) main::a#23 (byte) main::a#25 (byte) main::a#27 (byte) main::a#29 (byte) main::a#31 (byte) main::a#33 (byte) main::a#35 (byte) main::a#37 (byte) main::a#39 (byte) main::a#41 -Alias (byte) main::b#0 = (byte) main::b#1 (byte) main::b#35 (byte) main::b#23 (byte) main::b#11 (byte) main::b#3 (byte) main::b#37 (byte) main::b#25 (byte) main::b#13 (byte) main::b#5 (byte) main::b#39 (byte) main::b#27 (byte) main::b#15 (byte) main::b#53 (byte) main::b#41 (byte) main::b#29 (byte) main::b#17 (byte) main::b#9 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#97 -Alias (byte) main::i#10 = (byte) main::i#24 (byte) main::i#42 (byte) main::i#13 (byte) main::i#3 (byte) main::i#44 (byte) main::i#26 (byte) main::i#15 (byte) main::i#5 (byte) main::i#46 (byte) main::i#28 (byte) main::i#17 (byte) main::i#64 (byte) main::i#48 (byte) main::i#30 (byte) main::i#19 (byte) main::i#66 (byte) main::i#50 (byte) main::i#32 (byte) main::i#11 (byte) main::i#12 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#69 (byte*) print_line_cursor#84 (byte*) print_line_cursor#54 (byte*) print_line_cursor#39 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#98 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#99 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#124 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#125 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#71 (byte*) print_line_cursor#56 (byte*) print_line_cursor#41 (byte*) print_line_cursor#28 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#126 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#127 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#128 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#129 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#73 (byte*) print_line_cursor#58 (byte*) print_line_cursor#43 (byte*) print_line_cursor#29 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#130 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#131 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#132 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#133 -Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#75 (byte*) print_line_cursor#60 (byte*) print_line_cursor#45 (byte*) print_line_cursor#30 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#134 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#135 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#136 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#137 -Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#77 (byte*) print_line_cursor#62 (byte*) print_line_cursor#47 (byte*) print_line_cursor#31 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#138 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#139 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#140 +Alias main::a#10 = main::a#3 main::a#2 main::a#45 main::a#46 main::a#11 main::a#13 main::a#15 main::a#17 main::a#19 main::a#21 main::a#23 main::a#25 main::a#27 main::a#29 main::a#31 main::a#33 main::a#35 main::a#37 main::a#39 main::a#41 +Alias main::b#0 = main::b#1 main::b#35 main::b#23 main::b#11 main::b#3 main::b#37 main::b#25 main::b#13 main::b#5 main::b#39 main::b#27 main::b#15 main::b#53 main::b#41 main::b#29 main::b#17 main::b#9 +Alias print_char_cursor#120 = print_char_cursor#97 +Alias main::i#10 = main::i#24 main::i#42 main::i#13 main::i#3 main::i#44 main::i#26 main::i#15 main::i#5 main::i#46 main::i#28 main::i#17 main::i#64 main::i#48 main::i#30 main::i#19 main::i#66 main::i#50 main::i#32 main::i#11 main::i#12 +Alias print_line_cursor#27 = print_line_cursor#69 print_line_cursor#84 print_line_cursor#54 print_line_cursor#39 +Alias print_char_cursor#122 = print_char_cursor#98 +Alias print_char_cursor#123 = print_char_cursor#99 +Alias print_char_cursor#100 = print_char_cursor#124 +Alias print_char_cursor#101 = print_char_cursor#125 +Alias print_line_cursor#18 = print_line_cursor#71 print_line_cursor#56 print_line_cursor#41 print_line_cursor#28 +Alias print_char_cursor#102 = print_char_cursor#126 +Alias print_char_cursor#103 = print_char_cursor#127 +Alias print_char_cursor#104 = print_char_cursor#128 +Alias print_char_cursor#105 = print_char_cursor#129 +Alias print_line_cursor#19 = print_line_cursor#73 print_line_cursor#58 print_line_cursor#43 print_line_cursor#29 +Alias print_char_cursor#106 = print_char_cursor#130 +Alias print_char_cursor#107 = print_char_cursor#131 +Alias print_char_cursor#108 = print_char_cursor#132 +Alias print_char_cursor#109 = print_char_cursor#133 +Alias print_line_cursor#20 = print_line_cursor#75 print_line_cursor#60 print_line_cursor#45 print_line_cursor#30 +Alias print_char_cursor#110 = print_char_cursor#134 +Alias print_char_cursor#111 = print_char_cursor#135 +Alias print_char_cursor#112 = print_char_cursor#136 +Alias print_char_cursor#113 = print_char_cursor#137 +Alias print_line_cursor#21 = print_line_cursor#77 print_line_cursor#62 print_line_cursor#47 print_line_cursor#31 +Alias print_char_cursor#114 = print_char_cursor#138 +Alias print_char_cursor#115 = print_char_cursor#139 +Alias print_char_cursor#116 = print_char_cursor#140 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -3161,146 +3161,146 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#1 5.5 -(byte) main::a#10 3.860927152317884 +(byte) main::a#1 50.5 +(byte) main::a#10 35.4503311258278 (byte) main::b -(byte) main::b#0 0.9758064516129035 +(byte) main::b#0 8.95967741935484 (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#10 0.8684210526315792 +(byte) main::i#1 101.0 +(byte) main::i#10 7.973684210526318 (byte) main::r -(byte) main::r#41 3.6666666666666665 -(byte) main::r#42 5.5 -(byte) main::r#43 3.6666666666666665 -(byte) main::r#44 3.6666666666666665 -(byte) main::r#45 3.6666666666666665 -(byte) main::r#46 5.5 -(byte) main::r#47 3.6666666666666665 -(byte) main::r#48 3.6666666666666665 -(byte) main::r#49 3.6666666666666665 -(byte) main::r#50 5.5 -(byte) main::r#51 3.6666666666666665 -(byte) main::r#52 3.6666666666666665 -(byte) main::r#53 3.6666666666666665 -(byte) main::r#54 5.5 -(byte) main::r#55 3.6666666666666665 -(byte) main::r#56 3.6666666666666665 -(byte) main::r#57 3.6666666666666665 -(byte) main::r#58 5.5 -(byte) main::r#59 3.6666666666666665 -(byte) main::r#60 3.6666666666666665 +(byte) main::r#41 33.666666666666664 +(byte) main::r#42 50.5 +(byte) main::r#43 33.666666666666664 +(byte) main::r#44 33.666666666666664 +(byte) main::r#45 33.666666666666664 +(byte) main::r#46 50.5 +(byte) main::r#47 33.666666666666664 +(byte) main::r#48 33.666666666666664 +(byte) main::r#49 33.666666666666664 +(byte) main::r#50 50.5 +(byte) main::r#51 33.666666666666664 +(byte) main::r#52 33.666666666666664 +(byte) main::r#53 33.666666666666664 +(byte) main::r#54 50.5 +(byte) main::r#55 33.666666666666664 +(byte) main::r#56 33.666666666666664 +(byte) main::r#57 33.666666666666664 +(byte) main::r#58 50.5 +(byte) main::r#59 33.666666666666664 +(byte) main::r#60 33.666666666666664 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 20002.0 +(byte~) print_byte::$2 20002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 2002.0 +(byte) print_byte::b#1 2002.0 +(byte) print_byte::b#2 5501.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 8.0 +(byte) print_char::ch#0 20002.0 +(byte) print_char::ch#1 20002.0 +(byte) print_char::ch#4 2002.0 +(byte) print_char::ch#5 121004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#120 2.75 -(byte*) print_char_cursor#150 22.0 -(byte*) print_char_cursor#151 22.0 -(byte*) print_char_cursor#155 22.0 -(byte*) print_char_cursor#159 22.0 -(byte*) print_char_cursor#167 22.0 -(byte*) print_char_cursor#2 51.16666666666666 -(byte*) print_char_cursor#54 7.0 -(byte*) print_char_cursor#55 2.106060606060605 -(byte*) print_char_cursor#94 2.0 -(byte*) print_char_cursor#95 222.0 +(byte*) print_char_cursor#1 1000001.0 +(byte*) print_char_cursor#120 25.25 +(byte*) print_char_cursor#150 202.0 +(byte*) print_char_cursor#151 202.0 +(byte*) print_char_cursor#155 202.0 +(byte*) print_char_cursor#159 202.0 +(byte*) print_char_cursor#167 202.0 +(byte*) print_char_cursor#2 501834.16666666674 +(byte*) print_char_cursor#54 111503.5 +(byte*) print_char_cursor#55 1700.9242424242423 +(byte*) print_char_cursor#94 4000.9999999999995 +(byte*) print_char_cursor#95 3021.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 3.2265625 -(byte*) print_line_cursor#13 204.0 -(byte*) print_line_cursor#25 57.0 -(byte*) print_line_cursor#27 0.7333333333333333 +(byte*) print_line_cursor#1 2351.6640625 +(byte*) print_line_cursor#13 201003.0 +(byte*) print_line_cursor#25 1506.0 +(byte*) print_line_cursor#27 6.733333333333333 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#1 2.0 -(byte*) print_str::str#2 101.5 +(byte*) print_str::str#0 2000002.0 +(byte*) print_str::str#1 5501.0 +(byte*) print_str::str#2 1002501.25 (void()) printu((byte) printu::a , (byte*) printu::op , (byte) printu::b , (byte) printu::res) (byte) printu::a -(byte) printu::a#0 7.333333333333333 -(byte) printu::a#1 11.0 -(byte) printu::a#10 7.333333333333333 -(byte) printu::a#11 7.333333333333333 -(byte) printu::a#12 5.5 -(byte) printu::a#13 11.0 -(byte) printu::a#14 7.333333333333333 -(byte) printu::a#15 7.333333333333333 -(byte) printu::a#16 5.5 -(byte) printu::a#17 11.0 -(byte) printu::a#18 7.333333333333333 -(byte) printu::a#19 7.333333333333333 -(byte) printu::a#2 7.333333333333333 -(byte) printu::a#20 111.0 -(byte) printu::a#3 7.333333333333333 -(byte) printu::a#4 5.5 -(byte) printu::a#5 11.0 -(byte) printu::a#6 7.333333333333333 -(byte) printu::a#7 7.333333333333333 -(byte) printu::a#8 5.5 -(byte) printu::a#9 11.0 +(byte) printu::a#0 67.33333333333333 +(byte) printu::a#1 101.0 +(byte) printu::a#10 67.33333333333333 +(byte) printu::a#11 67.33333333333333 +(byte) printu::a#12 50.5 +(byte) printu::a#13 101.0 +(byte) printu::a#14 67.33333333333333 +(byte) printu::a#15 67.33333333333333 +(byte) printu::a#16 50.5 +(byte) printu::a#17 101.0 +(byte) printu::a#18 67.33333333333333 +(byte) printu::a#19 67.33333333333333 +(byte) printu::a#2 67.33333333333333 +(byte) printu::a#20 1510.5 +(byte) printu::a#3 67.33333333333333 +(byte) printu::a#4 50.5 +(byte) printu::a#5 101.0 +(byte) printu::a#6 67.33333333333333 +(byte) printu::a#7 67.33333333333333 +(byte) printu::a#8 50.5 +(byte) printu::a#9 101.0 (byte) printu::b -(byte) printu::b#0 11.0 -(byte) printu::b#10 11.0 -(byte) printu::b#11 11.0 -(byte) printu::b#12 7.333333333333333 -(byte) printu::b#14 11.0 -(byte) printu::b#15 11.0 -(byte) printu::b#16 7.333333333333333 -(byte) printu::b#18 11.0 -(byte) printu::b#19 11.0 -(byte) printu::b#2 11.0 -(byte) printu::b#20 27.833333333333325 -(byte) printu::b#3 11.0 -(byte) printu::b#4 7.333333333333333 -(byte) printu::b#6 11.0 -(byte) printu::b#7 11.0 -(byte) printu::b#8 7.333333333333333 +(byte) printu::b#0 101.0 +(byte) printu::b#10 101.0 +(byte) printu::b#11 101.0 +(byte) printu::b#12 67.33333333333333 +(byte) printu::b#14 101.0 +(byte) printu::b#15 101.0 +(byte) printu::b#16 67.33333333333333 +(byte) printu::b#18 101.0 +(byte) printu::b#19 101.0 +(byte) printu::b#2 101.0 +(byte) printu::b#20 419.33333333333337 +(byte) printu::b#3 101.0 +(byte) printu::b#4 67.33333333333333 +(byte) printu::b#6 101.0 +(byte) printu::b#7 101.0 +(byte) printu::b#8 67.33333333333333 (byte*) printu::op -(byte*) printu::op#20 0.5 +(byte*) printu::op#20 250.25 (byte) printu::res -(byte) printu::res#0 22.0 -(byte) printu::res#1 22.0 -(byte) printu::res#10 22.0 -(byte) printu::res#11 22.0 -(byte) printu::res#12 11.0 -(byte) printu::res#13 22.0 -(byte) printu::res#14 22.0 -(byte) printu::res#15 22.0 -(byte) printu::res#16 11.0 -(byte) printu::res#17 22.0 -(byte) printu::res#18 22.0 -(byte) printu::res#19 22.0 -(byte) printu::res#2 22.0 -(byte) printu::res#20 22.200000000000003 -(byte) printu::res#3 22.0 -(byte) printu::res#4 11.0 -(byte) printu::res#5 22.0 -(byte) printu::res#6 22.0 -(byte) printu::res#7 22.0 -(byte) printu::res#8 11.0 -(byte) printu::res#9 22.0 +(byte) printu::res#0 202.0 +(byte) printu::res#1 202.0 +(byte) printu::res#10 202.0 +(byte) printu::res#11 202.0 +(byte) printu::res#12 101.0 +(byte) printu::res#13 202.0 +(byte) printu::res#14 202.0 +(byte) printu::res#15 202.0 +(byte) printu::res#16 101.0 +(byte) printu::res#17 202.0 +(byte) printu::res#18 202.0 +(byte) printu::res#19 202.0 +(byte) printu::res#2 202.0 +(byte) printu::res#20 302.0999999999999 +(byte) printu::res#3 202.0 +(byte) printu::res#4 101.0 +(byte) printu::res#5 202.0 +(byte) printu::res#6 202.0 +(byte) printu::res#7 202.0 +(byte) printu::res#8 101.0 +(byte) printu::res#9 202.0 Initial phi equivalence classes [ main::a#10 main::a#1 ] @@ -4857,33 +4857,33 @@ memset: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ) always clobbers reg byte a +Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#10 main::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#10 main::i#1 ] -Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a +Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:39 [ main::b#0 ] -Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ) always clobbers reg byte a +Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] Removing always clobbered register reg byte a as potential for zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] -Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ) always clobbers reg byte a -Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ) always clobbers reg byte a -Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ) always clobbers reg byte a -Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] ) always clobbers reg byte y +Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } ) always clobbers reg byte a +Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } ) always clobbers reg byte a +Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } ) always clobbers reg byte a +Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a +Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 print_char_cursor#54 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } } main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 print_char_cursor#54 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 print_char_cursor#54 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#0 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#1 main::r#42 } } main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#2 main::r#43 } } main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#3 main::r#44 } } main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#5 main::r#46 } } main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#6 main::r#47 } } main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#7 main::r#48 } } main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#9 main::r#50 } } main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#10 main::r#51 } } main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#11 main::r#52 } } main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#12 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#13 main::r#54 } } main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#14 main::r#55 } } main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#15 main::r#56 } } main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#16 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#17 main::r#58 } } main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#18 main::r#59 } } main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#19 main::r#60 } } main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::a#10 main::a#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:39 [ main::b#0 ] @@ -4891,113 +4891,113 @@ Removing always clobbered register reg byte y as potential for zp[1]:26 [ printu Removing always clobbered register reg byte y as potential for zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] Removing always clobbered register reg byte y as potential for zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) always clobbers reg byte a -Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ) always clobbers reg byte a -Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ) always clobbers reg byte a -Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ) always clobbers reg byte a -Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ) always clobbers reg byte a -Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] ) always clobbers reg byte a reg byte x +Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] { } ) always clobbers reg byte a +Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } ) always clobbers reg byte a +Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } ) always clobbers reg byte a +Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } ) always clobbers reg byte a +Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } ) always clobbers reg byte a +Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::i#10 main::i#1 ] -Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ) always clobbers reg byte a -Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] ) always clobbers reg byte y -Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) always clobbers reg byte a -Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ) always clobbers reg byte a -Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ) always clobbers reg byte y +Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a +Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 print_char_cursor#54 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } } main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 print_char_cursor#54 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 print_char_cursor#54 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#0 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#1 main::r#42 } } main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#2 main::r#43 } } main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#3 main::r#44 } } main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#5 main::r#46 } } main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#6 main::r#47 } } main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#7 main::r#48 } } main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#9 main::r#50 } } main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#10 main::r#51 } } main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#11 main::r#52 } } main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#12 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#13 main::r#54 } } main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#14 main::r#55 } } main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#15 main::r#56 } } main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#16 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#17 main::r#58 } } main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#18 main::r#59 } } main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#19 main::r#60 } } main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte y +Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] { } ) always clobbers reg byte a +Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::r#43 ] -Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ) always clobbers reg byte a -Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ) always clobbers reg byte y +Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } ) always clobbers reg byte a +Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::r#47 ] -Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ) always clobbers reg byte a -Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ) always clobbers reg byte y +Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } ) always clobbers reg byte a +Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:14 [ main::r#51 ] -Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ) always clobbers reg byte y +Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } ) always clobbers reg byte a +Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:18 [ main::r#55 ] -Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ) always clobbers reg byte a -Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ) always clobbers reg byte y +Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } ) always clobbers reg byte a +Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:22 [ main::r#59 ] -Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] ) always clobbers reg byte a reg byte x -Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ) always clobbers reg byte a -Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] ) always clobbers reg byte y -Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) always clobbers reg byte a -Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ) always clobbers reg byte a -Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ) always clobbers reg byte y -Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ) always clobbers reg byte a -Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ) always clobbers reg byte y -Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ) always clobbers reg byte a -Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ) always clobbers reg byte y -Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ) always clobbers reg byte y -Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ) always clobbers reg byte a -Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a reg byte y -Statement [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ) always clobbers reg byte y -Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] ) always clobbers reg byte a reg byte x -Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ) always clobbers reg byte a -Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ) always clobbers reg byte a -Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] ) always clobbers reg byte y -Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) always clobbers reg byte a -Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] { } ) always clobbers reg byte a reg byte x +Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a +Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 print_char_cursor#54 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } } main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 print_char_cursor#54 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 print_char_cursor#54 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#0 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#1 main::r#42 } } main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#2 main::r#43 } } main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#3 main::r#44 } } main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#5 main::r#46 } } main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#6 main::r#47 } } main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#7 main::r#48 } } main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#9 main::r#50 } } main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#10 main::r#51 } } main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#11 main::r#52 } } main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#12 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#13 main::r#54 } } main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#14 main::r#55 } } main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#15 main::r#56 } } main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#16 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#17 main::r#58 } } main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#18 main::r#59 } } main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#19 main::r#60 } } main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte y +Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte) main::b#0 ← (byte) $ce - (byte) main::a#10 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] ( main:2 [ main::a#10 print_char_cursor#120 main::i#10 print_line_cursor#27 main::b#0 ] { } ) always clobbers reg byte a +Statement [21] if((byte) main::a#10>=*((const byte*) main::cs + (byte) main::i#10)) goto main::@4 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 main::r#43 printu::a#2 printu::b#2 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } ) always clobbers reg byte y +Statement [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#4 printu::b#4 printu::res#4 print_char_cursor#167 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } ) always clobbers reg byte a +Statement [51] if((byte) main::a#10<=*((const byte*) main::cs + (byte) main::i#10)) goto main::@8 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#47 printu::a#6 printu::b#6 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } ) always clobbers reg byte y +Statement [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#8 printu::b#8 printu::res#8 print_char_cursor#151 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } ) always clobbers reg byte a +Statement [81] if((byte) main::a#10>*((const byte*) main::cs + (byte) main::i#10)) goto main::@12 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#51 printu::a#10 printu::b#10 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } ) always clobbers reg byte y +Statement [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#12 printu::b#12 printu::res#12 print_char_cursor#155 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } ) always clobbers reg byte a +Statement [111] if((byte) main::a#10<*((const byte*) main::cs + (byte) main::i#10)) goto main::@16 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 main::r#55 printu::a#14 printu::b#14 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } ) always clobbers reg byte y +Statement [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#16 printu::b#16 printu::res#16 print_char_cursor#159 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } ) always clobbers reg byte a +Statement [141] if((byte) main::a#10!=*((const byte*) main::cs + (byte) main::i#10)) goto main::@20 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 main::r#59 printu::a#18 printu::b#18 print_char_cursor#55 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } ) always clobbers reg byte y +Statement [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] ( main:2 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { } ) always clobbers reg byte a +Statement [157] (byte) main::a#1 ← (byte) main::a#10 + (byte) $30 [ main::i#10 main::a#1 print_line_cursor#1 ] ( main:2 [ main::i#10 main::a#1 print_line_cursor#1 ] { } ) always clobbers reg byte a reg byte x +Statement [159] if((byte) main::i#1!=(byte) 5) goto main::@68 [ main::a#1 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [161] (byte*) print_char_cursor#150 ← (byte*) print_line_cursor#1 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] ( main:2 [ main::a#1 print_char_cursor#150 main::i#1 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#55 ] ( main:2::print_ln:36 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#25 = print_line_cursor#27 } } main:2::print_ln:66 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:96 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:126 [ main::a#10 main::i#10 main::b#0 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } main:2::print_ln:156 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 ] { { print_line_cursor#1 = print_line_cursor#25 } } ) always clobbers reg byte a +Statement [171] (byte*) print_str::str#1 ← (byte*) printu::op#20 [ print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] ( main:2::printu:14 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#55 printu::b#20 printu::res#20 print_str::str#1 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a +Statement [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 [ print_char_cursor#54 ] ( main:2::printu:14::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 print_char_cursor#54 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } } main:2::printu:20::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:168 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } } main:2::printu:50::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 print_char_cursor#54 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } } main:2::printu:80::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 print_char_cursor#54 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } } main:2::printu:110::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 print_char_cursor#54 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } } main:2::printu:140::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:168 [ main::a#10 main::i#10 print_line_cursor#1 printu::a#20 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } } main:2::printu:27::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } } main:2::printu:34::print_char:176 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } } main:2::printu:44::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } } main:2::printu:57::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } } main:2::printu:64::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } } main:2::printu:74::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } } main:2::printu:87::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } } main:2::printu:94::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } } main:2::printu:104::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } } main:2::printu:117::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } } main:2::printu:124::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } } main:2::printu:134::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } } main:2::printu:147::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } } main:2::printu:154::print_char:176 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } } main:2::printu:14::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#0 main::r#41 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#1 main::r#42 } } main:2::printu:27::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#2 main::r#43 } } main:2::printu:34::print_char:178 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#3 main::r#44 } } main:2::printu:44::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#4 main::r#45 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#5 main::r#46 } } main:2::printu:57::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#6 main::r#47 } } main:2::printu:64::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#7 main::r#48 } } main:2::printu:74::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#8 main::r#49 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#9 main::r#50 } } main:2::printu:87::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#10 main::r#51 } } main:2::printu:94::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#11 main::r#52 } } main:2::printu:104::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#12 main::r#53 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#13 main::r#54 } } main:2::printu:117::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#14 main::r#55 } } main:2::printu:124::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#15 main::r#56 } } main:2::printu:134::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#16 main::r#57 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#17 main::r#58 } } main:2::printu:147::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#18 main::r#59 } } main:2::printu:154::print_char:178 [ main::a#10 main::i#10 print_line_cursor#1 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#4 = print_char::ch#5 printu::res#20 printu::res#19 main::r#60 } } main:2::printu:14::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:187 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_byte::b#2 print_char_cursor#54 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174::print_char:190 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#54 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte y +Statement [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 print_char_cursor#54 } { print_char::ch#0 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#0 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#1 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#2 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#4 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#5 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#6 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#8 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#9 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#10 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#12 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#13 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#14 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#16 main::a#10 } { print_char_cursor#54 = print_char_cursor#94 print_char_cursor#55 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#17 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#0 = print_byte::b#2 printu::a#20 printu::a#18 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 print_char_cursor#94 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#0 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::res#0 = printu::res#20 main::r#41 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#0 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#2 = printu::a#20 main::a#10 } { printu::res#2 = printu::res#20 main::r#43 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#2 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#3 main::r#44 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#3 printu::a#20 printu::a#3 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::res#20 = printu::res#4 main::r#45 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#4 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#6 main::a#10 } { printu::res#20 = printu::res#6 main::r#47 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#6 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#20 = printu::res#7 main::r#48 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#7 printu::a#20 printu::a#7 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::res#20 = printu::res#8 main::r#49 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#8 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#10 = printu::a#20 main::a#10 } { printu::res#10 = printu::res#20 main::r#51 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#11 = printu::res#20 main::r#52 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#11 printu::a#20 printu::a#11 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::res#12 = printu::res#20 main::r#53 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#12 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#14 = printu::a#20 main::a#10 } { printu::res#14 = printu::res#20 main::r#55 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#14 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#15 = printu::res#20 main::r#56 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#15 printu::a#20 printu::a#15 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::res#16 = printu::res#20 main::r#57 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#16 main::b#0 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } { print_char_cursor#54 = print_char_cursor#55 } } main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_byte::b#1 = print_byte::b#2 printu::b#20 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::a#18 = printu::a#20 main::a#10 } { printu::res#18 = printu::res#20 main::r#59 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#18 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] { { print_char_cursor#54 = print_char_cursor#95 print_char_cursor#55 } { printu::res#19 = printu::res#20 main::r#60 } { print_byte::b#1 = print_byte::b#2 printu::b#20 printu::b#19 printu::a#20 printu::a#19 main::a#10 } { print_char_cursor#2 = print_char_cursor#94 } { print_char::ch#1 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [194] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::printu:14::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#120 = print_char_cursor#95 } { printu::a#0 = printu::a#20 main::a#10 } { printu::b#0 = printu::b#20 main::b#0 } { printu::res#0 = printu::res#20 main::r#41 } { print_str::str#1 = printu::op#20 } } main:2::printu:20::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#1 = printu::a#20 main::a#10 } { printu::res#1 = printu::res#20 main::r#42 } { print_str::str#1 = printu::op#20 } } main:2::printu:27::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#2 = printu::a#20 main::a#10 } { printu::b#2 = printu::b#20 } { printu::res#2 = printu::res#20 main::r#43 } { print_str::str#1 = printu::op#20 } } main:2::printu:34::print_str:172 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#3 printu::a#20 printu::a#3 main::a#10 } { printu::res#20 = printu::res#3 main::r#44 } { print_str::str#1 = printu::op#20 } } main:2::printu:44::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#167 = print_char_cursor#95 } { printu::a#20 = printu::a#4 main::a#10 } { printu::b#20 = printu::b#4 main::b#0 } { printu::res#20 = printu::res#4 main::r#45 } { print_str::str#1 = printu::op#20 } } main:2::printu:50::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#5 main::a#10 } { printu::res#20 = printu::res#5 main::r#46 } { print_str::str#1 = printu::op#20 } } main:2::printu:57::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#6 main::a#10 } { printu::b#20 = printu::b#6 } { printu::res#20 = printu::res#6 main::r#47 } { print_str::str#1 = printu::op#20 } } main:2::printu:64::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#20 = printu::b#7 printu::a#20 printu::a#7 main::a#10 } { printu::res#20 = printu::res#7 main::r#48 } { print_str::str#1 = printu::op#20 } } main:2::printu:74::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#151 = print_char_cursor#95 } { printu::a#20 = printu::a#8 main::a#10 } { printu::b#20 = printu::b#8 main::b#0 } { printu::res#20 = printu::res#8 main::r#49 } { print_str::str#1 = printu::op#20 } } main:2::printu:80::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#20 = printu::a#9 main::a#10 } { printu::res#20 = printu::res#9 main::r#50 } { print_str::str#1 = printu::op#20 } } main:2::printu:87::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#10 = printu::a#20 main::a#10 } { printu::b#10 = printu::b#20 } { printu::res#10 = printu::res#20 main::r#51 } { print_str::str#1 = printu::op#20 } } main:2::printu:94::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#11 = printu::b#20 printu::a#20 printu::a#11 main::a#10 } { printu::res#11 = printu::res#20 main::r#52 } { print_str::str#1 = printu::op#20 } } main:2::printu:104::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#155 = print_char_cursor#95 } { printu::a#12 = printu::a#20 main::a#10 } { printu::b#12 = printu::b#20 main::b#0 } { printu::res#12 = printu::res#20 main::r#53 } { print_str::str#1 = printu::op#20 } } main:2::printu:110::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#13 = printu::a#20 main::a#10 } { printu::res#13 = printu::res#20 main::r#54 } { print_str::str#1 = printu::op#20 } } main:2::printu:117::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#14 = printu::a#20 main::a#10 } { printu::b#14 = printu::b#20 } { printu::res#14 = printu::res#20 main::r#55 } { print_str::str#1 = printu::op#20 } } main:2::printu:124::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#15 = printu::b#20 printu::a#20 printu::a#15 main::a#10 } { printu::res#15 = printu::res#20 main::r#56 } { print_str::str#1 = printu::op#20 } } main:2::printu:134::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#159 = print_char_cursor#95 } { printu::a#16 = printu::a#20 main::a#10 } { printu::b#16 = printu::b#20 main::b#0 } { printu::res#16 = printu::res#20 main::r#57 } { print_str::str#1 = printu::op#20 } } main:2::printu:140::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#17 = printu::a#20 main::a#10 } { printu::res#17 = printu::res#20 main::r#58 } { print_str::str#1 = printu::op#20 } } main:2::printu:147::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::a#18 = printu::a#20 main::a#10 } { printu::b#18 = printu::b#20 } { printu::res#18 = printu::res#20 main::r#59 } { print_str::str#1 = printu::op#20 } } main:2::printu:154::print_str:172 [ main::a#10 main::i#10 print_line_cursor#1 printu::b#20 printu::res#20 print_char_cursor#2 print_str::str#2 ] { { print_char_cursor#55 = print_char_cursor#95 } { printu::b#19 = printu::b#20 printu::a#20 printu::a#19 main::a#10 } { printu::res#19 = printu::res#20 main::r#60 } { print_str::str#1 = printu::op#20 } } ) always clobbers reg byte a reg byte y +Statement [204] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [206] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:200 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::a#10 main::a#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::i#10 main::i#1 ] : zp[1]:3 , Potential registers zp[1]:4 [ main::r#41 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -5035,88 +5035,90 @@ Potential registers zp[1]:40 [ print_byte::$0 ] : zp[1]:40 , reg byte a , reg by Potential registers zp[1]:41 [ print_byte::$2 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [printu] 418.2: zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] 268.67: zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] 178.17: zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] 0.5: zp[2]:27 [ printu::op#20 ] -Uplift Scope [] 498.02: zp[2]:32 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] 264.96: zp[2]:24 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] -Uplift Scope [print_str] 305.5: zp[2]:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplift Scope [main] 11.87: zp[1]:3 [ main::i#10 main::i#1 ] 9.36: zp[1]:2 [ main::a#10 main::a#1 ] 5.5: zp[1]:5 [ main::r#42 ] 5.5: zp[1]:9 [ main::r#46 ] 5.5: zp[1]:13 [ main::r#50 ] 5.5: zp[1]:17 [ main::r#54 ] 5.5: zp[1]:21 [ main::r#58 ] 3.67: zp[1]:4 [ main::r#41 ] 3.67: zp[1]:6 [ main::r#43 ] 3.67: zp[1]:7 [ main::r#44 ] 3.67: zp[1]:8 [ main::r#45 ] 3.67: zp[1]:10 [ main::r#47 ] 3.67: zp[1]:11 [ main::r#48 ] 3.67: zp[1]:12 [ main::r#49 ] 3.67: zp[1]:14 [ main::r#51 ] 3.67: zp[1]:15 [ main::r#52 ] 3.67: zp[1]:16 [ main::r#53 ] 3.67: zp[1]:18 [ main::r#55 ] 3.67: zp[1]:19 [ main::r#56 ] 3.67: zp[1]:20 [ main::r#57 ] 3.67: zp[1]:22 [ main::r#59 ] 3.67: zp[1]:23 [ main::r#60 ] 0.98: zp[1]:39 [ main::b#0 ] -Uplift Scope [memset] 36.67: zp[2]:37 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 20: zp[1]:31 [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] -Uplift Scope [print_byte] 10: zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:40 [ print_byte::$0 ] 4: zp[1]:41 [ print_byte::$2 ] +Uplift Scope [print_str] 3,008,004.25: zp[2]:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] +Uplift Scope [] 1,623,096.84: zp[2]:32 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] 204,867.4: zp[2]:24 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] +Uplift Scope [print_char] 163,010: zp[1]:31 [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] +Uplift Scope [print_byte] 20,002: zp[1]:40 [ print_byte::$0 ] 20,002: zp[1]:41 [ print_byte::$2 ] 9,505: zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:37 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [printu] 3,938.1: zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] 2,958.17: zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] 1,799.67: zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] 250.25: zp[2]:27 [ printu::op#20 ] +Uplift Scope [main] 108.97: zp[1]:3 [ main::i#10 main::i#1 ] 85.95: zp[1]:2 [ main::a#10 main::a#1 ] 50.5: zp[1]:5 [ main::r#42 ] 50.5: zp[1]:9 [ main::r#46 ] 50.5: zp[1]:13 [ main::r#50 ] 50.5: zp[1]:17 [ main::r#54 ] 50.5: zp[1]:21 [ main::r#58 ] 33.67: zp[1]:4 [ main::r#41 ] 33.67: zp[1]:6 [ main::r#43 ] 33.67: zp[1]:7 [ main::r#44 ] 33.67: zp[1]:8 [ main::r#45 ] 33.67: zp[1]:10 [ main::r#47 ] 33.67: zp[1]:11 [ main::r#48 ] 33.67: zp[1]:12 [ main::r#49 ] 33.67: zp[1]:14 [ main::r#51 ] 33.67: zp[1]:15 [ main::r#52 ] 33.67: zp[1]:16 [ main::r#53 ] 33.67: zp[1]:18 [ main::r#55 ] 33.67: zp[1]:19 [ main::r#56 ] 33.67: zp[1]:20 [ main::r#57 ] 33.67: zp[1]:22 [ main::r#59 ] 33.67: zp[1]:23 [ main::r#60 ] 8.96: zp[1]:39 [ main::b#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [printu] best 21771 combination reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] zp[2]:27 [ printu::op#20 ] -Uplifting [] best 21771 combination zp[2]:32 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] zp[2]:24 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] -Uplifting [print_str] best 21771 combination zp[2]:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplifting [memset] best 21771 combination zp[2]:37 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 21755 combination reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] -Uplifting [print_byte] best 21751 combination zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] zp[1]:41 [ print_byte::$2 ] +Uplifting [print_str] best 22374 combination zp[2]:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] +Uplifting [] best 22374 combination zp[2]:32 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] zp[2]:24 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] +Uplifting [print_char] best 22356 combination reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] +Uplifting [print_byte] best 22348 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Limited combination testing to 10 combinations of 32 possible. -Uplifting [RADIX] best 21751 combination -Uplifting [print_ln] best 21751 combination -Uplifting [print_cls] best 21751 combination -Attempting to uplift remaining variables inzp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] -Uplifting [printu] best 21751 combination zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] -Attempting to uplift remaining variables inzp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] -Uplifting [printu] best 21751 combination zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] -Attempting to uplift remaining variables inzp[1]:3 [ main::i#10 main::i#1 ] -Uplifting [main] best 21751 combination zp[1]:3 [ main::i#10 main::i#1 ] +Uplifting [memset] best 22348 combination zp[2]:37 [ memset::dst#2 memset::dst#1 ] +Uplifting [printu] best 21745 combination zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] reg byte x [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] zp[2]:27 [ printu::op#20 ] +Uplifting [RADIX] best 21745 combination +Uplifting [print_ln] best 21745 combination +Uplifting [print_cls] best 21745 combination Attempting to uplift remaining variables inzp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 21751 combination zp[1]:34 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 21737 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Attempting to uplift remaining variables inzp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] +Uplifting [printu] best 21737 combination zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] +Attempting to uplift remaining variables inzp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] +Uplifting [printu] best 21737 combination zp[1]:29 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] +Attempting to uplift remaining variables inzp[1]:3 [ main::i#10 main::i#1 ] +Uplifting [main] best 21737 combination zp[1]:3 [ main::i#10 main::i#1 ] Attempting to uplift remaining variables inzp[1]:2 [ main::a#10 main::a#1 ] -Uplifting [main] best 21751 combination zp[1]:2 [ main::a#10 main::a#1 ] +Uplifting [main] best 21737 combination zp[1]:2 [ main::a#10 main::a#1 ] Attempting to uplift remaining variables inzp[1]:5 [ main::r#42 ] -Uplifting [main] best 21661 combination reg byte x [ main::r#42 ] +Uplifting [main] best 21647 combination reg byte a [ main::r#42 ] Attempting to uplift remaining variables inzp[1]:9 [ main::r#46 ] -Uplifting [main] best 21571 combination reg byte x [ main::r#46 ] +Uplifting [main] best 21557 combination reg byte a [ main::r#46 ] Attempting to uplift remaining variables inzp[1]:13 [ main::r#50 ] -Uplifting [main] best 21481 combination reg byte x [ main::r#50 ] +Uplifting [main] best 21467 combination reg byte a [ main::r#50 ] Attempting to uplift remaining variables inzp[1]:17 [ main::r#54 ] -Uplifting [main] best 21391 combination reg byte x [ main::r#54 ] +Uplifting [main] best 21377 combination reg byte a [ main::r#54 ] Attempting to uplift remaining variables inzp[1]:21 [ main::r#58 ] -Uplifting [main] best 21301 combination reg byte x [ main::r#58 ] -Attempting to uplift remaining variables inzp[1]:41 [ print_byte::$2 ] -Uplifting [print_byte] best 21297 combination reg byte a [ print_byte::$2 ] +Uplifting [main] best 21287 combination reg byte a [ main::r#58 ] Attempting to uplift remaining variables inzp[1]:4 [ main::r#41 ] -Uplifting [main] best 21207 combination reg byte x [ main::r#41 ] +Uplifting [main] best 21197 combination reg byte y [ main::r#41 ] Attempting to uplift remaining variables inzp[1]:6 [ main::r#43 ] -Uplifting [main] best 21117 combination reg byte x [ main::r#43 ] +Uplifting [main] best 21197 combination zp[1]:6 [ main::r#43 ] Attempting to uplift remaining variables inzp[1]:7 [ main::r#44 ] -Uplifting [main] best 21027 combination reg byte x [ main::r#44 ] +Uplifting [main] best 21107 combination reg byte y [ main::r#44 ] Attempting to uplift remaining variables inzp[1]:8 [ main::r#45 ] -Uplifting [main] best 20937 combination reg byte x [ main::r#45 ] +Uplifting [main] best 21017 combination reg byte y [ main::r#45 ] Attempting to uplift remaining variables inzp[1]:10 [ main::r#47 ] -Uplifting [main] best 20847 combination reg byte x [ main::r#47 ] +Uplifting [main] best 21017 combination zp[1]:10 [ main::r#47 ] Attempting to uplift remaining variables inzp[1]:11 [ main::r#48 ] -Uplifting [main] best 20757 combination reg byte x [ main::r#48 ] +Uplifting [main] best 20927 combination reg byte y [ main::r#48 ] Attempting to uplift remaining variables inzp[1]:12 [ main::r#49 ] -Uplifting [main] best 20667 combination reg byte x [ main::r#49 ] +Uplifting [main] best 20837 combination reg byte y [ main::r#49 ] Attempting to uplift remaining variables inzp[1]:14 [ main::r#51 ] -Uplifting [main] best 20577 combination reg byte x [ main::r#51 ] +Uplifting [main] best 20837 combination zp[1]:14 [ main::r#51 ] Attempting to uplift remaining variables inzp[1]:15 [ main::r#52 ] -Uplifting [main] best 20487 combination reg byte x [ main::r#52 ] +Uplifting [main] best 20747 combination reg byte y [ main::r#52 ] Attempting to uplift remaining variables inzp[1]:16 [ main::r#53 ] -Uplifting [main] best 20397 combination reg byte x [ main::r#53 ] +Uplifting [main] best 20657 combination reg byte y [ main::r#53 ] Attempting to uplift remaining variables inzp[1]:18 [ main::r#55 ] -Uplifting [main] best 20307 combination reg byte x [ main::r#55 ] +Uplifting [main] best 20657 combination zp[1]:18 [ main::r#55 ] Attempting to uplift remaining variables inzp[1]:19 [ main::r#56 ] -Uplifting [main] best 20217 combination reg byte x [ main::r#56 ] +Uplifting [main] best 20567 combination reg byte y [ main::r#56 ] Attempting to uplift remaining variables inzp[1]:20 [ main::r#57 ] -Uplifting [main] best 20127 combination reg byte x [ main::r#57 ] +Uplifting [main] best 20477 combination reg byte y [ main::r#57 ] Attempting to uplift remaining variables inzp[1]:22 [ main::r#59 ] -Uplifting [main] best 20037 combination reg byte x [ main::r#59 ] +Uplifting [main] best 20477 combination zp[1]:22 [ main::r#59 ] Attempting to uplift remaining variables inzp[1]:23 [ main::r#60 ] -Uplifting [main] best 19947 combination reg byte x [ main::r#60 ] +Uplifting [main] best 20387 combination reg byte y [ main::r#60 ] Attempting to uplift remaining variables inzp[1]:39 [ main::b#0 ] -Uplifting [main] best 19947 combination zp[1]:39 [ main::b#0 ] -Coalescing zero page register [ zp[1]:2 [ main::a#10 main::a#1 ] ] with [ zp[1]:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] ] - score: 20 +Uplifting [main] best 20387 combination zp[1]:39 [ main::b#0 ] +Coalescing zero page register [ zp[1]:6 [ main::r#43 ] ] with [ zp[1]:30 [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] ] - score: 1 Coalescing zero page register [ zp[2]:27 [ printu::op#20 ] ] with [ zp[2]:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:6 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] ] with [ zp[1]:10 [ main::r#47 ] ] - score: 1 +Coalescing zero page register [ zp[1]:6 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 ] ] with [ zp[1]:14 [ main::r#51 ] ] - score: 1 +Coalescing zero page register [ zp[1]:6 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 main::r#51 ] ] with [ zp[1]:18 [ main::r#55 ] ] - score: 1 +Coalescing zero page register [ zp[1]:6 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 main::r#51 main::r#55 ] ] with [ zp[1]:22 [ main::r#59 ] ] - score: 1 Coalescing zero page register [ zp[2]:37 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:27 [ printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] ] -Allocated (was zp[2]:24) zp[2]:4 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] -Allocated (was zp[1]:29) zp[1]:6 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] -Allocated (was zp[2]:32) zp[2]:7 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] -Allocated (was zp[1]:34) zp[1]:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[1]:6) zp[1]:4 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 main::r#51 main::r#55 main::r#59 ] +Allocated (was zp[2]:24) zp[2]:5 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] +Allocated (was zp[1]:29) zp[1]:7 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] +Allocated (was zp[2]:32) zp[2]:8 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] Allocated (was zp[2]:37) zp[2]:10 [ memset::dst#2 memset::dst#1 printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp[1]:39) zp[1]:12 [ main::b#0 ] @@ -5127,8 +5129,8 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_char_cursor = 7 - .label print_line_cursor = 4 + .label print_char_cursor = 8 + .label print_line_cursor = 5 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -5150,6 +5152,7 @@ main: { .label b = $c .label a = 2 .label i = 3 + .label r = 4 // [5] call print_cls // [199] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: @@ -5191,21 +5194,23 @@ main: { __b22: // [10] phi from main::@22 to main::@2 [phi:main::@22->main::@2] __b2_from___b22: - // [10] phi (byte) main::r#41 = (byte) '+' [phi:main::@22->main::@2#0] -- vbuxx=vbuc1 - ldx #'+' + // [10] phi (byte) main::r#41 = (byte) '+' [phi:main::@22->main::@2#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b2 // [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: - // [10] phi (byte) main::r#41 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 - ldx #'-' + // [10] phi (byte) main::r#41 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b2 // main::@2 __b2: - // [11] (byte) printu::a#0 ← (byte) main::a#10 + // [11] (byte) printu::a#0 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [13] (byte) printu::res#0 ← (byte) main::r#41 + // [13] (byte) printu::res#0 ← (byte) main::r#41 -- vbuz1=vbuyy + sty.z printu.res // [14] call printu // [167] phi from main::@2 to printu [phi:main::@2->printu] printu_from___b2: @@ -5233,18 +5238,20 @@ main: { __b23: // [17] phi from main::@23 to main::@3 [phi:main::@23->main::@3] __b3_from___b23: - // [17] phi (byte) main::r#42 = (byte) '+' [phi:main::@23->main::@3#0] -- vbuxx=vbuc1 - ldx #'+' + // [17] phi (byte) main::r#42 = (byte) '+' [phi:main::@23->main::@3#0] -- vbuaa=vbuc1 + lda #'+' jmp __b3 // [17] phi from main::@43 to main::@3 [phi:main::@43->main::@3] __b3_from___b43: - // [17] phi (byte) main::r#42 = (byte) '-' [phi:main::@43->main::@3#0] -- vbuxx=vbuc1 - ldx #'-' + // [17] phi (byte) main::r#42 = (byte) '-' [phi:main::@43->main::@3#0] -- vbuaa=vbuc1 + lda #'-' jmp __b3 // main::@3 __b3: - // [18] (byte) printu::a#1 ← (byte) main::a#10 - // [19] (byte) printu::res#1 ← (byte) main::r#42 + // [18] (byte) printu::a#1 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [19] (byte) printu::res#1 ← (byte) main::r#42 -- vbuz1=vbuaa + sta.z printu.res // [20] call printu // [167] phi from main::@3 to printu [phi:main::@3->printu] printu_from___b3: @@ -5275,17 +5282,20 @@ main: { __b24: // [23] phi from main::@24 to main::@4 [phi:main::@24->main::@4] __b4_from___b24: - // [23] phi (byte) main::r#43 = (byte) '+' [phi:main::@24->main::@4#0] -- vbuxx=vbuc1 - ldx #'+' + // [23] phi (byte) main::r#43 = (byte) '+' [phi:main::@24->main::@4#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b4 // [23] phi from main::@44 to main::@4 [phi:main::@44->main::@4] __b4_from___b44: - // [23] phi (byte) main::r#43 = (byte) '-' [phi:main::@44->main::@4#0] -- vbuxx=vbuc1 - ldx #'-' + // [23] phi (byte) main::r#43 = (byte) '-' [phi:main::@44->main::@4#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r jmp __b4 // main::@4 __b4: - // [24] (byte) printu::a#2 ← (byte) main::a#10 + // [24] (byte) printu::a#2 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -5318,21 +5328,23 @@ main: { __b25: // [30] phi from main::@25 to main::@5 [phi:main::@25->main::@5] __b5_from___b25: - // [30] phi (byte) main::r#44 = (byte) '+' [phi:main::@25->main::@5#0] -- vbuxx=vbuc1 - ldx #'+' + // [30] phi (byte) main::r#44 = (byte) '+' [phi:main::@25->main::@5#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b5 // [30] phi from main::@45 to main::@5 [phi:main::@45->main::@5] __b5_from___b45: - // [30] phi (byte) main::r#44 = (byte) '-' [phi:main::@45->main::@5#0] -- vbuxx=vbuc1 - ldx #'-' + // [30] phi (byte) main::r#44 = (byte) '-' [phi:main::@45->main::@5#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b5 // main::@5 __b5: - // [31] (byte) printu::a#3 ← (byte) main::a#10 + // [31] (byte) printu::a#3 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 lda.z a sta.z printu.b - // [33] (byte) printu::res#3 ← (byte) main::r#44 + // [33] (byte) printu::res#3 ← (byte) main::r#44 -- vbuz1=vbuyy + sty.z printu.res // [34] call printu // [167] phi from main::@5 to printu [phi:main::@5->printu] printu_from___b5: @@ -5370,21 +5382,23 @@ main: { __b26: // [39] phi from main::@26 to main::@6 [phi:main::@26->main::@6] __b6_from___b26: - // [39] phi (byte) main::r#45 = (byte) '+' [phi:main::@26->main::@6#0] -- vbuxx=vbuc1 - ldx #'+' + // [39] phi (byte) main::r#45 = (byte) '+' [phi:main::@26->main::@6#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b6 // [39] phi from main::@47 to main::@6 [phi:main::@47->main::@6] __b6_from___b47: - // [39] phi (byte) main::r#45 = (byte) '-' [phi:main::@47->main::@6#0] -- vbuxx=vbuc1 - ldx #'-' + // [39] phi (byte) main::r#45 = (byte) '-' [phi:main::@47->main::@6#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b6 // main::@6 __b6: - // [40] (byte) printu::a#4 ← (byte) main::a#10 + // [40] (byte) printu::a#4 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [42] (byte) printu::res#4 ← (byte) main::r#45 + // [42] (byte) printu::res#4 ← (byte) main::r#45 -- vbuz1=vbuyy + sty.z printu.res // [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -5417,18 +5431,20 @@ main: { __b27: // [47] phi from main::@27 to main::@7 [phi:main::@27->main::@7] __b7_from___b27: - // [47] phi (byte) main::r#46 = (byte) '+' [phi:main::@27->main::@7#0] -- vbuxx=vbuc1 - ldx #'+' + // [47] phi (byte) main::r#46 = (byte) '+' [phi:main::@27->main::@7#0] -- vbuaa=vbuc1 + lda #'+' jmp __b7 // [47] phi from main::@48 to main::@7 [phi:main::@48->main::@7] __b7_from___b48: - // [47] phi (byte) main::r#46 = (byte) '-' [phi:main::@48->main::@7#0] -- vbuxx=vbuc1 - ldx #'-' + // [47] phi (byte) main::r#46 = (byte) '-' [phi:main::@48->main::@7#0] -- vbuaa=vbuc1 + lda #'-' jmp __b7 // main::@7 __b7: - // [48] (byte) printu::a#5 ← (byte) main::a#10 - // [49] (byte) printu::res#5 ← (byte) main::r#46 + // [48] (byte) printu::a#5 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [49] (byte) printu::res#5 ← (byte) main::r#46 -- vbuz1=vbuaa + sta.z printu.res // [50] call printu // [167] phi from main::@7 to printu [phi:main::@7->printu] printu_from___b7: @@ -5459,17 +5475,20 @@ main: { __b28: // [53] phi from main::@28 to main::@8 [phi:main::@28->main::@8] __b8_from___b28: - // [53] phi (byte) main::r#47 = (byte) '+' [phi:main::@28->main::@8#0] -- vbuxx=vbuc1 - ldx #'+' + // [53] phi (byte) main::r#47 = (byte) '+' [phi:main::@28->main::@8#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b8 // [53] phi from main::@49 to main::@8 [phi:main::@49->main::@8] __b8_from___b49: - // [53] phi (byte) main::r#47 = (byte) '-' [phi:main::@49->main::@8#0] -- vbuxx=vbuc1 - ldx #'-' + // [53] phi (byte) main::r#47 = (byte) '-' [phi:main::@49->main::@8#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r jmp __b8 // main::@8 __b8: - // [54] (byte) printu::a#6 ← (byte) main::a#10 + // [54] (byte) printu::a#6 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -5502,21 +5521,23 @@ main: { __b29: // [60] phi from main::@29 to main::@9 [phi:main::@29->main::@9] __b9_from___b29: - // [60] phi (byte) main::r#48 = (byte) '+' [phi:main::@29->main::@9#0] -- vbuxx=vbuc1 - ldx #'+' + // [60] phi (byte) main::r#48 = (byte) '+' [phi:main::@29->main::@9#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b9 // [60] phi from main::@50 to main::@9 [phi:main::@50->main::@9] __b9_from___b50: - // [60] phi (byte) main::r#48 = (byte) '-' [phi:main::@50->main::@9#0] -- vbuxx=vbuc1 - ldx #'-' + // [60] phi (byte) main::r#48 = (byte) '-' [phi:main::@50->main::@9#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b9 // main::@9 __b9: - // [61] (byte) printu::a#7 ← (byte) main::a#10 + // [61] (byte) printu::a#7 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 lda.z a sta.z printu.b - // [63] (byte) printu::res#7 ← (byte) main::r#48 + // [63] (byte) printu::res#7 ← (byte) main::r#48 -- vbuz1=vbuyy + sty.z printu.res // [64] call printu // [167] phi from main::@9 to printu [phi:main::@9->printu] printu_from___b9: @@ -5554,21 +5575,23 @@ main: { __b30: // [69] phi from main::@30 to main::@10 [phi:main::@30->main::@10] __b10_from___b30: - // [69] phi (byte) main::r#49 = (byte) '+' [phi:main::@30->main::@10#0] -- vbuxx=vbuc1 - ldx #'+' + // [69] phi (byte) main::r#49 = (byte) '+' [phi:main::@30->main::@10#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b10 // [69] phi from main::@52 to main::@10 [phi:main::@52->main::@10] __b10_from___b52: - // [69] phi (byte) main::r#49 = (byte) '-' [phi:main::@52->main::@10#0] -- vbuxx=vbuc1 - ldx #'-' + // [69] phi (byte) main::r#49 = (byte) '-' [phi:main::@52->main::@10#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b10 // main::@10 __b10: - // [70] (byte) printu::a#8 ← (byte) main::a#10 + // [70] (byte) printu::a#8 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [72] (byte) printu::res#8 ← (byte) main::r#49 + // [72] (byte) printu::res#8 ← (byte) main::r#49 -- vbuz1=vbuyy + sty.z printu.res // [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -5601,18 +5624,20 @@ main: { __b31: // [77] phi from main::@31 to main::@11 [phi:main::@31->main::@11] __b11_from___b31: - // [77] phi (byte) main::r#50 = (byte) '+' [phi:main::@31->main::@11#0] -- vbuxx=vbuc1 - ldx #'+' + // [77] phi (byte) main::r#50 = (byte) '+' [phi:main::@31->main::@11#0] -- vbuaa=vbuc1 + lda #'+' jmp __b11 // [77] phi from main::@53 to main::@11 [phi:main::@53->main::@11] __b11_from___b53: - // [77] phi (byte) main::r#50 = (byte) '-' [phi:main::@53->main::@11#0] -- vbuxx=vbuc1 - ldx #'-' + // [77] phi (byte) main::r#50 = (byte) '-' [phi:main::@53->main::@11#0] -- vbuaa=vbuc1 + lda #'-' jmp __b11 // main::@11 __b11: - // [78] (byte) printu::a#9 ← (byte) main::a#10 - // [79] (byte) printu::res#9 ← (byte) main::r#50 + // [78] (byte) printu::a#9 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [79] (byte) printu::res#9 ← (byte) main::r#50 -- vbuz1=vbuaa + sta.z printu.res // [80] call printu // [167] phi from main::@11 to printu [phi:main::@11->printu] printu_from___b11: @@ -5643,17 +5668,20 @@ main: { __b32: // [83] phi from main::@32 to main::@12 [phi:main::@32->main::@12] __b12_from___b32: - // [83] phi (byte) main::r#51 = (byte) '+' [phi:main::@32->main::@12#0] -- vbuxx=vbuc1 - ldx #'+' + // [83] phi (byte) main::r#51 = (byte) '+' [phi:main::@32->main::@12#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b12 // [83] phi from main::@54 to main::@12 [phi:main::@54->main::@12] __b12_from___b54: - // [83] phi (byte) main::r#51 = (byte) '-' [phi:main::@54->main::@12#0] -- vbuxx=vbuc1 - ldx #'-' + // [83] phi (byte) main::r#51 = (byte) '-' [phi:main::@54->main::@12#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r jmp __b12 // main::@12 __b12: - // [84] (byte) printu::a#10 ← (byte) main::a#10 + // [84] (byte) printu::a#10 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -5686,21 +5714,23 @@ main: { __b33: // [90] phi from main::@33 to main::@13 [phi:main::@33->main::@13] __b13_from___b33: - // [90] phi (byte) main::r#52 = (byte) '+' [phi:main::@33->main::@13#0] -- vbuxx=vbuc1 - ldx #'+' + // [90] phi (byte) main::r#52 = (byte) '+' [phi:main::@33->main::@13#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b13 // [90] phi from main::@55 to main::@13 [phi:main::@55->main::@13] __b13_from___b55: - // [90] phi (byte) main::r#52 = (byte) '-' [phi:main::@55->main::@13#0] -- vbuxx=vbuc1 - ldx #'-' + // [90] phi (byte) main::r#52 = (byte) '-' [phi:main::@55->main::@13#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b13 // main::@13 __b13: - // [91] (byte) printu::a#11 ← (byte) main::a#10 + // [91] (byte) printu::a#11 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 lda.z a sta.z printu.b - // [93] (byte) printu::res#11 ← (byte) main::r#52 + // [93] (byte) printu::res#11 ← (byte) main::r#52 -- vbuz1=vbuyy + sty.z printu.res // [94] call printu // [167] phi from main::@13 to printu [phi:main::@13->printu] printu_from___b13: @@ -5738,21 +5768,23 @@ main: { __b34: // [99] phi from main::@34 to main::@14 [phi:main::@34->main::@14] __b14_from___b34: - // [99] phi (byte) main::r#53 = (byte) '+' [phi:main::@34->main::@14#0] -- vbuxx=vbuc1 - ldx #'+' + // [99] phi (byte) main::r#53 = (byte) '+' [phi:main::@34->main::@14#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b14 // [99] phi from main::@57 to main::@14 [phi:main::@57->main::@14] __b14_from___b57: - // [99] phi (byte) main::r#53 = (byte) '-' [phi:main::@57->main::@14#0] -- vbuxx=vbuc1 - ldx #'-' + // [99] phi (byte) main::r#53 = (byte) '-' [phi:main::@57->main::@14#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b14 // main::@14 __b14: - // [100] (byte) printu::a#12 ← (byte) main::a#10 + // [100] (byte) printu::a#12 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [102] (byte) printu::res#12 ← (byte) main::r#53 + // [102] (byte) printu::res#12 ← (byte) main::r#53 -- vbuz1=vbuyy + sty.z printu.res // [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -5785,18 +5817,20 @@ main: { __b35: // [107] phi from main::@35 to main::@15 [phi:main::@35->main::@15] __b15_from___b35: - // [107] phi (byte) main::r#54 = (byte) '+' [phi:main::@35->main::@15#0] -- vbuxx=vbuc1 - ldx #'+' + // [107] phi (byte) main::r#54 = (byte) '+' [phi:main::@35->main::@15#0] -- vbuaa=vbuc1 + lda #'+' jmp __b15 // [107] phi from main::@58 to main::@15 [phi:main::@58->main::@15] __b15_from___b58: - // [107] phi (byte) main::r#54 = (byte) '-' [phi:main::@58->main::@15#0] -- vbuxx=vbuc1 - ldx #'-' + // [107] phi (byte) main::r#54 = (byte) '-' [phi:main::@58->main::@15#0] -- vbuaa=vbuc1 + lda #'-' jmp __b15 // main::@15 __b15: - // [108] (byte) printu::a#13 ← (byte) main::a#10 - // [109] (byte) printu::res#13 ← (byte) main::r#54 + // [108] (byte) printu::a#13 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [109] (byte) printu::res#13 ← (byte) main::r#54 -- vbuz1=vbuaa + sta.z printu.res // [110] call printu // [167] phi from main::@15 to printu [phi:main::@15->printu] printu_from___b15: @@ -5827,17 +5861,20 @@ main: { __b36: // [113] phi from main::@36 to main::@16 [phi:main::@36->main::@16] __b16_from___b36: - // [113] phi (byte) main::r#55 = (byte) '+' [phi:main::@36->main::@16#0] -- vbuxx=vbuc1 - ldx #'+' + // [113] phi (byte) main::r#55 = (byte) '+' [phi:main::@36->main::@16#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b16 // [113] phi from main::@59 to main::@16 [phi:main::@59->main::@16] __b16_from___b59: - // [113] phi (byte) main::r#55 = (byte) '-' [phi:main::@59->main::@16#0] -- vbuxx=vbuc1 - ldx #'-' + // [113] phi (byte) main::r#55 = (byte) '-' [phi:main::@59->main::@16#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r jmp __b16 // main::@16 __b16: - // [114] (byte) printu::a#14 ← (byte) main::a#10 + // [114] (byte) printu::a#14 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -5870,21 +5907,23 @@ main: { __b37: // [120] phi from main::@37 to main::@17 [phi:main::@37->main::@17] __b17_from___b37: - // [120] phi (byte) main::r#56 = (byte) '+' [phi:main::@37->main::@17#0] -- vbuxx=vbuc1 - ldx #'+' + // [120] phi (byte) main::r#56 = (byte) '+' [phi:main::@37->main::@17#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b17 // [120] phi from main::@60 to main::@17 [phi:main::@60->main::@17] __b17_from___b60: - // [120] phi (byte) main::r#56 = (byte) '-' [phi:main::@60->main::@17#0] -- vbuxx=vbuc1 - ldx #'-' + // [120] phi (byte) main::r#56 = (byte) '-' [phi:main::@60->main::@17#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b17 // main::@17 __b17: - // [121] (byte) printu::a#15 ← (byte) main::a#10 + // [121] (byte) printu::a#15 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 lda.z a sta.z printu.b - // [123] (byte) printu::res#15 ← (byte) main::r#56 + // [123] (byte) printu::res#15 ← (byte) main::r#56 -- vbuz1=vbuyy + sty.z printu.res // [124] call printu // [167] phi from main::@17 to printu [phi:main::@17->printu] printu_from___b17: @@ -5922,21 +5961,23 @@ main: { __b38: // [129] phi from main::@38 to main::@18 [phi:main::@38->main::@18] __b18_from___b38: - // [129] phi (byte) main::r#57 = (byte) '+' [phi:main::@38->main::@18#0] -- vbuxx=vbuc1 - ldx #'+' + // [129] phi (byte) main::r#57 = (byte) '+' [phi:main::@38->main::@18#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b18 // [129] phi from main::@62 to main::@18 [phi:main::@62->main::@18] __b18_from___b62: - // [129] phi (byte) main::r#57 = (byte) '-' [phi:main::@62->main::@18#0] -- vbuxx=vbuc1 - ldx #'-' + // [129] phi (byte) main::r#57 = (byte) '-' [phi:main::@62->main::@18#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b18 // main::@18 __b18: - // [130] (byte) printu::a#16 ← (byte) main::a#10 + // [130] (byte) printu::a#16 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [132] (byte) printu::res#16 ← (byte) main::r#57 + // [132] (byte) printu::res#16 ← (byte) main::r#57 -- vbuz1=vbuyy + sty.z printu.res // [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -5969,18 +6010,20 @@ main: { __b39: // [137] phi from main::@39 to main::@19 [phi:main::@39->main::@19] __b19_from___b39: - // [137] phi (byte) main::r#58 = (byte) '+' [phi:main::@39->main::@19#0] -- vbuxx=vbuc1 - ldx #'+' + // [137] phi (byte) main::r#58 = (byte) '+' [phi:main::@39->main::@19#0] -- vbuaa=vbuc1 + lda #'+' jmp __b19 // [137] phi from main::@63 to main::@19 [phi:main::@63->main::@19] __b19_from___b63: - // [137] phi (byte) main::r#58 = (byte) '-' [phi:main::@63->main::@19#0] -- vbuxx=vbuc1 - ldx #'-' + // [137] phi (byte) main::r#58 = (byte) '-' [phi:main::@63->main::@19#0] -- vbuaa=vbuc1 + lda #'-' jmp __b19 // main::@19 __b19: - // [138] (byte) printu::a#17 ← (byte) main::a#10 - // [139] (byte) printu::res#17 ← (byte) main::r#58 + // [138] (byte) printu::a#17 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [139] (byte) printu::res#17 ← (byte) main::r#58 -- vbuz1=vbuaa + sta.z printu.res // [140] call printu // [167] phi from main::@19 to printu [phi:main::@19->printu] printu_from___b19: @@ -6011,17 +6054,20 @@ main: { __b40: // [143] phi from main::@40 to main::@20 [phi:main::@40->main::@20] __b20_from___b40: - // [143] phi (byte) main::r#59 = (byte) '+' [phi:main::@40->main::@20#0] -- vbuxx=vbuc1 - ldx #'+' + // [143] phi (byte) main::r#59 = (byte) '+' [phi:main::@40->main::@20#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b20 // [143] phi from main::@64 to main::@20 [phi:main::@64->main::@20] __b20_from___b64: - // [143] phi (byte) main::r#59 = (byte) '-' [phi:main::@64->main::@20#0] -- vbuxx=vbuc1 - ldx #'-' + // [143] phi (byte) main::r#59 = (byte) '-' [phi:main::@64->main::@20#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r jmp __b20 // main::@20 __b20: - // [144] (byte) printu::a#18 ← (byte) main::a#10 + // [144] (byte) printu::a#18 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -6054,21 +6100,23 @@ main: { __b41: // [150] phi from main::@41 to main::@21 [phi:main::@41->main::@21] __b21_from___b41: - // [150] phi (byte) main::r#60 = (byte) '+' [phi:main::@41->main::@21#0] -- vbuxx=vbuc1 - ldx #'+' + // [150] phi (byte) main::r#60 = (byte) '+' [phi:main::@41->main::@21#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b21 // [150] phi from main::@65 to main::@21 [phi:main::@65->main::@21] __b21_from___b65: - // [150] phi (byte) main::r#60 = (byte) '-' [phi:main::@65->main::@21#0] -- vbuxx=vbuc1 - ldx #'-' + // [150] phi (byte) main::r#60 = (byte) '-' [phi:main::@65->main::@21#0] -- vbuyy=vbuc1 + ldy #'-' jmp __b21 // main::@21 __b21: - // [151] (byte) printu::a#19 ← (byte) main::a#10 + // [151] (byte) printu::a#19 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 lda.z a sta.z printu.b - // [153] (byte) printu::res#19 ← (byte) main::r#60 + // [153] (byte) printu::res#19 ← (byte) main::r#60 -- vbuz1=vbuyy + sty.z printu.res // [154] call printu // [167] phi from main::@21 to printu [phi:main::@21->printu] printu_from___b21: @@ -6172,10 +6220,10 @@ print_ln: { rts } // printu -// printu(byte zp(2) a, byte* zp($a) op, byte zp(6) b, byte register(X) res) +// printu(byte register(X) a, byte* zp($a) op, byte zp(7) b, byte zp(4) res) printu: { - .label a = 2 - .label b = 6 + .label b = 7 + .label res = 4 .label op = $a // [168] call print_char // [180] phi from printu to print_char [phi:printu->print_char] @@ -6187,9 +6235,7 @@ printu: { jmp __b1 // printu::@1 __b1: - // [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 - lda.z a - sta.z print_byte.b + // [169] (byte) print_byte::b#0 ← (byte) printu::a#20 // [170] call print_byte // [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] print_byte_from___b1: @@ -6207,9 +6253,8 @@ printu: { jmp __b3 // printu::@3 __b3: - // [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 - lda.z b - sta.z print_byte.b + // [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuxx=vbuz1 + ldx.z b // [174] call print_byte // [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] print_byte_from___b3: @@ -6231,8 +6276,8 @@ printu: { jmp __b5 // printu::@5 __b5: - // [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx - txa + // [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuz1 + lda.z res // [178] call print_char // [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] print_char_from___b5: @@ -6265,11 +6310,10 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(9) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 9 - // [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -6287,9 +6331,9 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 - lda #$f - and.z b + // [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 + txa + and #$f // [189] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y @@ -6496,6 +6540,11 @@ Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda.z a with TXA +Replacing instruction lda.z a with TXA +Replacing instruction lda.z a with TXA +Replacing instruction lda.z a with TXA +Replacing instruction lda.z a with TXA Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b42_from___b42 with __b42 @@ -6510,7 +6559,6 @@ Removing instruction __b22_from___b1: Removing instruction __b2_from___b22: Removing instruction __b23_from___b43: Removing instruction __b3_from___b23: -Removing instruction printu_from___b3: Removing instruction __b24_from___b44: Removing instruction __b4_from___b24: Removing instruction __b25_from___b45: @@ -6521,7 +6569,6 @@ Removing instruction __b26_from___b47: Removing instruction __b6_from___b26: Removing instruction __b27_from___b48: Removing instruction __b7_from___b27: -Removing instruction printu_from___b7: Removing instruction __b28_from___b49: Removing instruction __b8_from___b28: Removing instruction __b29_from___b50: @@ -6532,7 +6579,6 @@ Removing instruction __b30_from___b52: Removing instruction __b10_from___b30: Removing instruction __b31_from___b53: Removing instruction __b11_from___b31: -Removing instruction printu_from___b11: Removing instruction __b32_from___b54: Removing instruction __b12_from___b32: Removing instruction __b33_from___b55: @@ -6543,7 +6589,6 @@ Removing instruction __b34_from___b57: Removing instruction __b14_from___b34: Removing instruction __b35_from___b58: Removing instruction __b15_from___b35: -Removing instruction printu_from___b15: Removing instruction __b36_from___b59: Removing instruction __b16_from___b36: Removing instruction __b37_from___b60: @@ -6554,7 +6599,6 @@ Removing instruction __b38_from___b62: Removing instruction __b18_from___b38: Removing instruction __b39_from___b63: Removing instruction __b19_from___b39: -Removing instruction printu_from___b19: Removing instruction __b40_from___b64: Removing instruction __b20_from___b40: Removing instruction __b41_from___b65: @@ -6565,6 +6609,7 @@ Removing instruction __b42_from___b42: Removing instruction __b42_from___b67: Removing instruction __b1_from_print_ln: Removing instruction __b1_from___b1: +Removing instruction print_byte_from___b1: Removing instruction print_str_from___b2: Removing instruction __b4_from___b3: Removing instruction print_char_from___b4: @@ -6578,6 +6623,7 @@ Removing instruction __b22: Removing instruction printu_from___b2: Removing instruction __b43: Removing instruction __b23: +Removing instruction printu_from___b3: Removing instruction __b44: Removing instruction __b24: Removing instruction printu_from___b4: @@ -6590,6 +6636,7 @@ Removing instruction __b26: Removing instruction printu_from___b6: Removing instruction __b48: Removing instruction __b27: +Removing instruction printu_from___b7: Removing instruction __b49: Removing instruction __b28: Removing instruction printu_from___b8: @@ -6602,6 +6649,7 @@ Removing instruction __b30: Removing instruction printu_from___b10: Removing instruction __b53: Removing instruction __b31: +Removing instruction printu_from___b11: Removing instruction __b54: Removing instruction __b32: Removing instruction printu_from___b12: @@ -6614,6 +6662,7 @@ Removing instruction __b34: Removing instruction printu_from___b14: Removing instruction __b58: Removing instruction __b35: +Removing instruction printu_from___b15: Removing instruction __b59: Removing instruction __b36: Removing instruction printu_from___b16: @@ -6626,6 +6675,7 @@ Removing instruction __b38: Removing instruction printu_from___b18: Removing instruction __b63: Removing instruction __b39: +Removing instruction printu_from___b19: Removing instruction __b64: Removing instruction __b40: Removing instruction printu_from___b20: @@ -6638,7 +6688,6 @@ Removing instruction __b1_from___b68: Removing instruction __breturn: Removing instruction print_char_from_printu: Removing instruction __b1: -Removing instruction print_byte_from___b1: Removing instruction __b2: Removing instruction __b3: Removing instruction print_byte_from___b3: @@ -6763,40 +6812,40 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::a -(byte) main::a#1 a zp[1]:2 5.5 -(byte) main::a#10 a zp[1]:2 3.860927152317884 +(byte) main::a#1 a zp[1]:2 50.5 +(byte) main::a#10 a zp[1]:2 35.4503311258278 (byte) main::b -(byte) main::b#0 b zp[1]:12 0.9758064516129035 +(byte) main::b#0 b zp[1]:12 8.95967741935484 (const byte*) main::cs[(number) 5] = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 } (byte) main::i -(byte) main::i#1 i zp[1]:3 11.0 -(byte) main::i#10 i zp[1]:3 0.8684210526315792 +(byte) main::i#1 i zp[1]:3 101.0 +(byte) main::i#10 i zp[1]:3 7.973684210526318 (const byte*) main::op[(byte) 3] = (byte*) "< " (const byte*) main::op12[(byte) 3] = (byte*) ">=" (const byte*) main::op16[(byte) 3] = (byte*) "==" (const byte*) main::op4[(byte) 3] = (byte*) "> " (const byte*) main::op8[(byte) 3] = (byte*) "<=" (byte) main::r -(byte) main::r#41 reg byte x 3.6666666666666665 -(byte) main::r#42 reg byte x 5.5 -(byte) main::r#43 reg byte x 3.6666666666666665 -(byte) main::r#44 reg byte x 3.6666666666666665 -(byte) main::r#45 reg byte x 3.6666666666666665 -(byte) main::r#46 reg byte x 5.5 -(byte) main::r#47 reg byte x 3.6666666666666665 -(byte) main::r#48 reg byte x 3.6666666666666665 -(byte) main::r#49 reg byte x 3.6666666666666665 -(byte) main::r#50 reg byte x 5.5 -(byte) main::r#51 reg byte x 3.6666666666666665 -(byte) main::r#52 reg byte x 3.6666666666666665 -(byte) main::r#53 reg byte x 3.6666666666666665 -(byte) main::r#54 reg byte x 5.5 -(byte) main::r#55 reg byte x 3.6666666666666665 -(byte) main::r#56 reg byte x 3.6666666666666665 -(byte) main::r#57 reg byte x 3.6666666666666665 -(byte) main::r#58 reg byte x 5.5 -(byte) main::r#59 reg byte x 3.6666666666666665 -(byte) main::r#60 reg byte x 3.6666666666666665 +(byte) main::r#41 reg byte y 33.666666666666664 +(byte) main::r#42 reg byte a 50.5 +(byte) main::r#43 r zp[1]:4 33.666666666666664 +(byte) main::r#44 reg byte y 33.666666666666664 +(byte) main::r#45 reg byte y 33.666666666666664 +(byte) main::r#46 reg byte a 50.5 +(byte) main::r#47 r zp[1]:4 33.666666666666664 +(byte) main::r#48 reg byte y 33.666666666666664 +(byte) main::r#49 reg byte y 33.666666666666664 +(byte) main::r#50 reg byte a 50.5 +(byte) main::r#51 r zp[1]:4 33.666666666666664 +(byte) main::r#52 reg byte y 33.666666666666664 +(byte) main::r#53 reg byte y 33.666666666666664 +(byte) main::r#54 reg byte a 50.5 +(byte) main::r#55 r zp[1]:4 33.666666666666664 +(byte) main::r#56 reg byte y 33.666666666666664 +(byte) main::r#57 reg byte y 33.666666666666664 +(byte) main::r#58 reg byte a 50.5 +(byte) main::r#59 r zp[1]:4 33.666666666666664 +(byte) main::r#60 reg byte y 33.666666666666664 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -6804,8 +6853,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:10 22.0 -(byte*) memset::dst#2 dst zp[2]:10 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:10 20002.0 +(byte*) memset::dst#2 dst zp[2]:10 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -6814,42 +6863,42 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte a 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:9 4.0 -(byte) print_byte::b#1 b zp[1]:9 4.0 -(byte) print_byte::b#2 b zp[1]:9 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 8.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 2002.0 +(byte) print_char::ch#5 reg byte a 121004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:7 101.0 -(byte*) print_char_cursor#120 print_char_cursor zp[2]:7 2.75 -(byte*) print_char_cursor#150 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#151 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#155 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#159 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#167 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:7 51.16666666666666 -(byte*) print_char_cursor#54 print_char_cursor zp[2]:7 7.0 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:7 2.106060606060605 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:7 2.0 -(byte*) print_char_cursor#95 print_char_cursor zp[2]:7 222.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 1000001.0 +(byte*) print_char_cursor#120 print_char_cursor zp[2]:8 25.25 +(byte*) print_char_cursor#150 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#151 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#155 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#159 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#167 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 501834.16666666674 +(byte*) print_char_cursor#54 print_char_cursor zp[2]:8 111503.5 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:8 1700.9242424242423 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 4000.9999999999995 +(byte*) print_char_cursor#95 print_char_cursor zp[2]:8 3021.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 3.2265625 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:4 204.0 -(byte*) print_line_cursor#25 print_line_cursor zp[2]:4 57.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:4 0.7333333333333333 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 2351.6640625 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 201003.0 +(byte*) print_line_cursor#25 print_line_cursor zp[2]:5 1506.0 +(byte*) print_line_cursor#27 print_line_cursor zp[2]:5 6.733333333333333 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -6859,9 +6908,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:10 202.0 -(byte*) print_str::str#1 str zp[2]:10 2.0 -(byte*) print_str::str#2 str zp[2]:10 101.5 +(byte*) print_str::str#0 str zp[2]:10 2000002.0 +(byte*) print_str::str#1 str zp[2]:10 5501.0 +(byte*) print_str::str#2 str zp[2]:10 1002501.25 (void()) printu((byte) printu::a , (byte*) printu::op , (byte) printu::b , (byte) printu::res) (label) printu::@1 (label) printu::@2 @@ -6870,97 +6919,93 @@ FINAL SYMBOL TABLE (label) printu::@5 (label) printu::@return (byte) printu::a -(byte) printu::a#0 a zp[1]:2 7.333333333333333 -(byte) printu::a#1 a zp[1]:2 11.0 -(byte) printu::a#10 a zp[1]:2 7.333333333333333 -(byte) printu::a#11 a zp[1]:2 7.333333333333333 -(byte) printu::a#12 a zp[1]:2 5.5 -(byte) printu::a#13 a zp[1]:2 11.0 -(byte) printu::a#14 a zp[1]:2 7.333333333333333 -(byte) printu::a#15 a zp[1]:2 7.333333333333333 -(byte) printu::a#16 a zp[1]:2 5.5 -(byte) printu::a#17 a zp[1]:2 11.0 -(byte) printu::a#18 a zp[1]:2 7.333333333333333 -(byte) printu::a#19 a zp[1]:2 7.333333333333333 -(byte) printu::a#2 a zp[1]:2 7.333333333333333 -(byte) printu::a#20 a zp[1]:2 111.0 -(byte) printu::a#3 a zp[1]:2 7.333333333333333 -(byte) printu::a#4 a zp[1]:2 5.5 -(byte) printu::a#5 a zp[1]:2 11.0 -(byte) printu::a#6 a zp[1]:2 7.333333333333333 -(byte) printu::a#7 a zp[1]:2 7.333333333333333 -(byte) printu::a#8 a zp[1]:2 5.5 -(byte) printu::a#9 a zp[1]:2 11.0 +(byte) printu::a#0 reg byte x 67.33333333333333 +(byte) printu::a#1 reg byte x 101.0 +(byte) printu::a#10 reg byte x 67.33333333333333 +(byte) printu::a#11 reg byte x 67.33333333333333 +(byte) printu::a#12 reg byte x 50.5 +(byte) printu::a#13 reg byte x 101.0 +(byte) printu::a#14 reg byte x 67.33333333333333 +(byte) printu::a#15 reg byte x 67.33333333333333 +(byte) printu::a#16 reg byte x 50.5 +(byte) printu::a#17 reg byte x 101.0 +(byte) printu::a#18 reg byte x 67.33333333333333 +(byte) printu::a#19 reg byte x 67.33333333333333 +(byte) printu::a#2 reg byte x 67.33333333333333 +(byte) printu::a#20 reg byte x 1510.5 +(byte) printu::a#3 reg byte x 67.33333333333333 +(byte) printu::a#4 reg byte x 50.5 +(byte) printu::a#5 reg byte x 101.0 +(byte) printu::a#6 reg byte x 67.33333333333333 +(byte) printu::a#7 reg byte x 67.33333333333333 +(byte) printu::a#8 reg byte x 50.5 +(byte) printu::a#9 reg byte x 101.0 (byte) printu::b -(byte) printu::b#0 b zp[1]:6 11.0 -(byte) printu::b#10 b zp[1]:6 11.0 -(byte) printu::b#11 b zp[1]:6 11.0 -(byte) printu::b#12 b zp[1]:6 7.333333333333333 -(byte) printu::b#14 b zp[1]:6 11.0 -(byte) printu::b#15 b zp[1]:6 11.0 -(byte) printu::b#16 b zp[1]:6 7.333333333333333 -(byte) printu::b#18 b zp[1]:6 11.0 -(byte) printu::b#19 b zp[1]:6 11.0 -(byte) printu::b#2 b zp[1]:6 11.0 -(byte) printu::b#20 b zp[1]:6 27.833333333333325 -(byte) printu::b#3 b zp[1]:6 11.0 -(byte) printu::b#4 b zp[1]:6 7.333333333333333 -(byte) printu::b#6 b zp[1]:6 11.0 -(byte) printu::b#7 b zp[1]:6 11.0 -(byte) printu::b#8 b zp[1]:6 7.333333333333333 +(byte) printu::b#0 b zp[1]:7 101.0 +(byte) printu::b#10 b zp[1]:7 101.0 +(byte) printu::b#11 b zp[1]:7 101.0 +(byte) printu::b#12 b zp[1]:7 67.33333333333333 +(byte) printu::b#14 b zp[1]:7 101.0 +(byte) printu::b#15 b zp[1]:7 101.0 +(byte) printu::b#16 b zp[1]:7 67.33333333333333 +(byte) printu::b#18 b zp[1]:7 101.0 +(byte) printu::b#19 b zp[1]:7 101.0 +(byte) printu::b#2 b zp[1]:7 101.0 +(byte) printu::b#20 b zp[1]:7 419.33333333333337 +(byte) printu::b#3 b zp[1]:7 101.0 +(byte) printu::b#4 b zp[1]:7 67.33333333333333 +(byte) printu::b#6 b zp[1]:7 101.0 +(byte) printu::b#7 b zp[1]:7 101.0 +(byte) printu::b#8 b zp[1]:7 67.33333333333333 (byte*) printu::op -(byte*) printu::op#20 op zp[2]:10 0.5 +(byte*) printu::op#20 op zp[2]:10 250.25 (byte) printu::res -(byte) printu::res#0 reg byte x 22.0 -(byte) printu::res#1 reg byte x 22.0 -(byte) printu::res#10 reg byte x 22.0 -(byte) printu::res#11 reg byte x 22.0 -(byte) printu::res#12 reg byte x 11.0 -(byte) printu::res#13 reg byte x 22.0 -(byte) printu::res#14 reg byte x 22.0 -(byte) printu::res#15 reg byte x 22.0 -(byte) printu::res#16 reg byte x 11.0 -(byte) printu::res#17 reg byte x 22.0 -(byte) printu::res#18 reg byte x 22.0 -(byte) printu::res#19 reg byte x 22.0 -(byte) printu::res#2 reg byte x 22.0 -(byte) printu::res#20 reg byte x 22.200000000000003 -(byte) printu::res#3 reg byte x 22.0 -(byte) printu::res#4 reg byte x 11.0 -(byte) printu::res#5 reg byte x 22.0 -(byte) printu::res#6 reg byte x 22.0 -(byte) printu::res#7 reg byte x 22.0 -(byte) printu::res#8 reg byte x 11.0 -(byte) printu::res#9 reg byte x 22.0 +(byte) printu::res#0 res zp[1]:4 202.0 +(byte) printu::res#1 res zp[1]:4 202.0 +(byte) printu::res#10 res zp[1]:4 202.0 +(byte) printu::res#11 res zp[1]:4 202.0 +(byte) printu::res#12 res zp[1]:4 101.0 +(byte) printu::res#13 res zp[1]:4 202.0 +(byte) printu::res#14 res zp[1]:4 202.0 +(byte) printu::res#15 res zp[1]:4 202.0 +(byte) printu::res#16 res zp[1]:4 101.0 +(byte) printu::res#17 res zp[1]:4 202.0 +(byte) printu::res#18 res zp[1]:4 202.0 +(byte) printu::res#19 res zp[1]:4 202.0 +(byte) printu::res#2 res zp[1]:4 202.0 +(byte) printu::res#20 res zp[1]:4 302.0999999999999 +(byte) printu::res#3 res zp[1]:4 202.0 +(byte) printu::res#4 res zp[1]:4 101.0 +(byte) printu::res#5 res zp[1]:4 202.0 +(byte) printu::res#6 res zp[1]:4 202.0 +(byte) printu::res#7 res zp[1]:4 202.0 +(byte) printu::res#8 res zp[1]:4 101.0 +(byte) printu::res#9 res zp[1]:4 202.0 -zp[1]:2 [ main::a#10 main::a#1 printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] +zp[1]:2 [ main::a#10 main::a#1 ] zp[1]:3 [ main::i#10 main::i#1 ] -reg byte x [ main::r#41 ] -reg byte x [ main::r#42 ] -reg byte x [ main::r#43 ] -reg byte x [ main::r#44 ] -reg byte x [ main::r#45 ] -reg byte x [ main::r#46 ] -reg byte x [ main::r#47 ] -reg byte x [ main::r#48 ] -reg byte x [ main::r#49 ] -reg byte x [ main::r#50 ] -reg byte x [ main::r#51 ] -reg byte x [ main::r#52 ] -reg byte x [ main::r#53 ] -reg byte x [ main::r#54 ] -reg byte x [ main::r#55 ] -reg byte x [ main::r#56 ] -reg byte x [ main::r#57 ] -reg byte x [ main::r#58 ] -reg byte x [ main::r#59 ] -reg byte x [ main::r#60 ] -zp[2]:4 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] -zp[1]:6 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] -reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] +reg byte y [ main::r#41 ] +reg byte a [ main::r#42 ] +zp[1]:4 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 main::r#51 main::r#55 main::r#59 ] +reg byte y [ main::r#44 ] +reg byte y [ main::r#45 ] +reg byte a [ main::r#46 ] +reg byte y [ main::r#48 ] +reg byte y [ main::r#49 ] +reg byte a [ main::r#50 ] +reg byte y [ main::r#52 ] +reg byte y [ main::r#53 ] +reg byte a [ main::r#54 ] +reg byte y [ main::r#56 ] +reg byte y [ main::r#57 ] +reg byte a [ main::r#58 ] +reg byte y [ main::r#60 ] +zp[2]:5 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] +reg byte x [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] +zp[1]:7 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] -zp[2]:7 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] -zp[1]:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:8 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:10 [ memset::dst#2 memset::dst#1 printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:12 [ main::b#0 ] reg byte a [ print_byte::$0 ] @@ -6968,7 +7013,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 15763 +Score: 17053 // File Comments // Upstart @@ -6976,8 +7021,8 @@ Score: 15763 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label print_char_cursor = 7 - .label print_line_cursor = 4 + .label print_char_cursor = 8 + .label print_line_cursor = 5 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -6990,6 +7035,7 @@ main: { .label b = $c .label a = 2 .label i = 3 + .label r = 4 // print_cls() // [5] call print_cls // [199] phi from main to print_cls [phi:main->print_cls] @@ -7027,21 +7073,23 @@ main: { // [9] phi from main::@1 to main::@22 [phi:main::@1->main::@22] // main::@22 // [10] phi from main::@22 to main::@2 [phi:main::@22->main::@2] - // [10] phi (byte) main::r#41 = (byte) '+' [phi:main::@22->main::@2#0] -- vbuxx=vbuc1 - ldx #'+' + // [10] phi (byte) main::r#41 = (byte) '+' [phi:main::@22->main::@2#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b2 // [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b1: - // [10] phi (byte) main::r#41 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 - ldx #'-' + // [10] phi (byte) main::r#41 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + ldy #'-' // main::@2 __b2: // printu(a, "< ", b, r) - // [11] (byte) printu::a#0 ← (byte) main::a#10 + // [11] (byte) printu::a#0 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [13] (byte) printu::res#0 ← (byte) main::r#41 + // [13] (byte) printu::res#0 ← (byte) main::r#41 -- vbuz1=vbuyy + sty.z printu.res // [14] call printu // [167] phi from main::@2 to printu [phi:main::@2->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy @@ -7063,18 +7111,20 @@ main: { // [16] phi from main::@43 to main::@23 [phi:main::@43->main::@23] // main::@23 // [17] phi from main::@23 to main::@3 [phi:main::@23->main::@3] - // [17] phi (byte) main::r#42 = (byte) '+' [phi:main::@23->main::@3#0] -- vbuxx=vbuc1 - ldx #'+' + // [17] phi (byte) main::r#42 = (byte) '+' [phi:main::@23->main::@3#0] -- vbuaa=vbuc1 + lda #'+' jmp __b3 // [17] phi from main::@43 to main::@3 [phi:main::@43->main::@3] b2: - // [17] phi (byte) main::r#42 = (byte) '-' [phi:main::@43->main::@3#0] -- vbuxx=vbuc1 - ldx #'-' + // [17] phi (byte) main::r#42 = (byte) '-' [phi:main::@43->main::@3#0] -- vbuaa=vbuc1 + lda #'-' // main::@3 __b3: // printu(a, "< ", $37, r) - // [18] (byte) printu::a#1 ← (byte) main::a#10 - // [19] (byte) printu::res#1 ← (byte) main::r#42 + // [18] (byte) printu::a#1 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [19] (byte) printu::res#1 ← (byte) main::r#42 -- vbuz1=vbuaa + sta.z printu.res // [20] call printu // [167] phi from main::@3 to printu [phi:main::@3->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy @@ -7099,17 +7149,20 @@ main: { // [22] phi from main::@44 to main::@24 [phi:main::@44->main::@24] // main::@24 // [23] phi from main::@24 to main::@4 [phi:main::@24->main::@4] - // [23] phi (byte) main::r#43 = (byte) '+' [phi:main::@24->main::@4#0] -- vbuxx=vbuc1 - ldx #'+' + // [23] phi (byte) main::r#43 = (byte) '+' [phi:main::@24->main::@4#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b4 // [23] phi from main::@44 to main::@4 [phi:main::@44->main::@4] b3: - // [23] phi (byte) main::r#43 = (byte) '-' [phi:main::@44->main::@4#0] -- vbuxx=vbuc1 - ldx #'-' + // [23] phi (byte) main::r#43 = (byte) '-' [phi:main::@44->main::@4#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r // main::@4 __b4: // printu(a, "< ", cs[i], r) - // [24] (byte) printu::a#2 ← (byte) main::a#10 + // [24] (byte) printu::a#2 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [25] (byte) printu::b#2 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -7136,21 +7189,23 @@ main: { // [29] phi from main::@45 to main::@25 [phi:main::@45->main::@25] // main::@25 // [30] phi from main::@25 to main::@5 [phi:main::@25->main::@5] - // [30] phi (byte) main::r#44 = (byte) '+' [phi:main::@25->main::@5#0] -- vbuxx=vbuc1 - ldx #'+' + // [30] phi (byte) main::r#44 = (byte) '+' [phi:main::@25->main::@5#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b5 // [30] phi from main::@45 to main::@5 [phi:main::@45->main::@5] b4: - // [30] phi (byte) main::r#44 = (byte) '-' [phi:main::@45->main::@5#0] -- vbuxx=vbuc1 - ldx #'-' + // [30] phi (byte) main::r#44 = (byte) '-' [phi:main::@45->main::@5#0] -- vbuyy=vbuc1 + ldy #'-' // main::@5 __b5: // printu(a, "< ", a, r) - // [31] (byte) printu::a#3 ← (byte) main::a#10 + // [31] (byte) printu::a#3 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 - lda.z a + txa sta.z printu.b - // [33] (byte) printu::res#3 ← (byte) main::r#44 + // [33] (byte) printu::res#3 ← (byte) main::r#44 -- vbuz1=vbuyy + sty.z printu.res // [34] call printu // [167] phi from main::@5 to printu [phi:main::@5->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy @@ -7179,21 +7234,23 @@ main: { // [38] phi from main::@47 to main::@26 [phi:main::@47->main::@26] // main::@26 // [39] phi from main::@26 to main::@6 [phi:main::@26->main::@6] - // [39] phi (byte) main::r#45 = (byte) '+' [phi:main::@26->main::@6#0] -- vbuxx=vbuc1 - ldx #'+' + // [39] phi (byte) main::r#45 = (byte) '+' [phi:main::@26->main::@6#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b6 // [39] phi from main::@47 to main::@6 [phi:main::@47->main::@6] b5: - // [39] phi (byte) main::r#45 = (byte) '-' [phi:main::@47->main::@6#0] -- vbuxx=vbuc1 - ldx #'-' + // [39] phi (byte) main::r#45 = (byte) '-' [phi:main::@47->main::@6#0] -- vbuyy=vbuc1 + ldy #'-' // main::@6 __b6: // printu(a, "> ", b, r) - // [40] (byte) printu::a#4 ← (byte) main::a#10 + // [40] (byte) printu::a#4 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [42] (byte) printu::res#4 ← (byte) main::r#45 + // [42] (byte) printu::res#4 ← (byte) main::r#45 -- vbuz1=vbuyy + sty.z printu.res // [43] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -7221,18 +7278,20 @@ main: { // [46] phi from main::@48 to main::@27 [phi:main::@48->main::@27] // main::@27 // [47] phi from main::@27 to main::@7 [phi:main::@27->main::@7] - // [47] phi (byte) main::r#46 = (byte) '+' [phi:main::@27->main::@7#0] -- vbuxx=vbuc1 - ldx #'+' + // [47] phi (byte) main::r#46 = (byte) '+' [phi:main::@27->main::@7#0] -- vbuaa=vbuc1 + lda #'+' jmp __b7 // [47] phi from main::@48 to main::@7 [phi:main::@48->main::@7] b6: - // [47] phi (byte) main::r#46 = (byte) '-' [phi:main::@48->main::@7#0] -- vbuxx=vbuc1 - ldx #'-' + // [47] phi (byte) main::r#46 = (byte) '-' [phi:main::@48->main::@7#0] -- vbuaa=vbuc1 + lda #'-' // main::@7 __b7: // printu(a, "> ", $37, r) - // [48] (byte) printu::a#5 ← (byte) main::a#10 - // [49] (byte) printu::res#5 ← (byte) main::r#46 + // [48] (byte) printu::a#5 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [49] (byte) printu::res#5 ← (byte) main::r#46 -- vbuz1=vbuaa + sta.z printu.res // [50] call printu // [167] phi from main::@7 to printu [phi:main::@7->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy @@ -7257,17 +7316,20 @@ main: { // [52] phi from main::@49 to main::@28 [phi:main::@49->main::@28] // main::@28 // [53] phi from main::@28 to main::@8 [phi:main::@28->main::@8] - // [53] phi (byte) main::r#47 = (byte) '+' [phi:main::@28->main::@8#0] -- vbuxx=vbuc1 - ldx #'+' + // [53] phi (byte) main::r#47 = (byte) '+' [phi:main::@28->main::@8#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b8 // [53] phi from main::@49 to main::@8 [phi:main::@49->main::@8] b7: - // [53] phi (byte) main::r#47 = (byte) '-' [phi:main::@49->main::@8#0] -- vbuxx=vbuc1 - ldx #'-' + // [53] phi (byte) main::r#47 = (byte) '-' [phi:main::@49->main::@8#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r // main::@8 __b8: // printu(a, "> ", cs[i], r) - // [54] (byte) printu::a#6 ← (byte) main::a#10 + // [54] (byte) printu::a#6 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [55] (byte) printu::b#6 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -7294,21 +7356,23 @@ main: { // [59] phi from main::@50 to main::@29 [phi:main::@50->main::@29] // main::@29 // [60] phi from main::@29 to main::@9 [phi:main::@29->main::@9] - // [60] phi (byte) main::r#48 = (byte) '+' [phi:main::@29->main::@9#0] -- vbuxx=vbuc1 - ldx #'+' + // [60] phi (byte) main::r#48 = (byte) '+' [phi:main::@29->main::@9#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b9 // [60] phi from main::@50 to main::@9 [phi:main::@50->main::@9] b8: - // [60] phi (byte) main::r#48 = (byte) '-' [phi:main::@50->main::@9#0] -- vbuxx=vbuc1 - ldx #'-' + // [60] phi (byte) main::r#48 = (byte) '-' [phi:main::@50->main::@9#0] -- vbuyy=vbuc1 + ldy #'-' // main::@9 __b9: // printu(a, "> ", a, r) - // [61] (byte) printu::a#7 ← (byte) main::a#10 + // [61] (byte) printu::a#7 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 - lda.z a + txa sta.z printu.b - // [63] (byte) printu::res#7 ← (byte) main::r#48 + // [63] (byte) printu::res#7 ← (byte) main::r#48 -- vbuz1=vbuyy + sty.z printu.res // [64] call printu // [167] phi from main::@9 to printu [phi:main::@9->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy @@ -7337,21 +7401,23 @@ main: { // [68] phi from main::@52 to main::@30 [phi:main::@52->main::@30] // main::@30 // [69] phi from main::@30 to main::@10 [phi:main::@30->main::@10] - // [69] phi (byte) main::r#49 = (byte) '+' [phi:main::@30->main::@10#0] -- vbuxx=vbuc1 - ldx #'+' + // [69] phi (byte) main::r#49 = (byte) '+' [phi:main::@30->main::@10#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b10 // [69] phi from main::@52 to main::@10 [phi:main::@52->main::@10] b9: - // [69] phi (byte) main::r#49 = (byte) '-' [phi:main::@52->main::@10#0] -- vbuxx=vbuc1 - ldx #'-' + // [69] phi (byte) main::r#49 = (byte) '-' [phi:main::@52->main::@10#0] -- vbuyy=vbuc1 + ldy #'-' // main::@10 __b10: // printu(a, "<=", b, r) - // [70] (byte) printu::a#8 ← (byte) main::a#10 + // [70] (byte) printu::a#8 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [72] (byte) printu::res#8 ← (byte) main::r#49 + // [72] (byte) printu::res#8 ← (byte) main::r#49 -- vbuz1=vbuyy + sty.z printu.res // [73] (byte*) print_char_cursor#151 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -7379,18 +7445,20 @@ main: { // [76] phi from main::@53 to main::@31 [phi:main::@53->main::@31] // main::@31 // [77] phi from main::@31 to main::@11 [phi:main::@31->main::@11] - // [77] phi (byte) main::r#50 = (byte) '+' [phi:main::@31->main::@11#0] -- vbuxx=vbuc1 - ldx #'+' + // [77] phi (byte) main::r#50 = (byte) '+' [phi:main::@31->main::@11#0] -- vbuaa=vbuc1 + lda #'+' jmp __b11 // [77] phi from main::@53 to main::@11 [phi:main::@53->main::@11] b10: - // [77] phi (byte) main::r#50 = (byte) '-' [phi:main::@53->main::@11#0] -- vbuxx=vbuc1 - ldx #'-' + // [77] phi (byte) main::r#50 = (byte) '-' [phi:main::@53->main::@11#0] -- vbuaa=vbuc1 + lda #'-' // main::@11 __b11: // printu(a, "<=", $37, r) - // [78] (byte) printu::a#9 ← (byte) main::a#10 - // [79] (byte) printu::res#9 ← (byte) main::r#50 + // [78] (byte) printu::a#9 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [79] (byte) printu::res#9 ← (byte) main::r#50 -- vbuz1=vbuaa + sta.z printu.res // [80] call printu // [167] phi from main::@11 to printu [phi:main::@11->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy @@ -7415,17 +7483,20 @@ main: { // [82] phi from main::@54 to main::@32 [phi:main::@54->main::@32] // main::@32 // [83] phi from main::@32 to main::@12 [phi:main::@32->main::@12] - // [83] phi (byte) main::r#51 = (byte) '+' [phi:main::@32->main::@12#0] -- vbuxx=vbuc1 - ldx #'+' + // [83] phi (byte) main::r#51 = (byte) '+' [phi:main::@32->main::@12#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b12 // [83] phi from main::@54 to main::@12 [phi:main::@54->main::@12] b11: - // [83] phi (byte) main::r#51 = (byte) '-' [phi:main::@54->main::@12#0] -- vbuxx=vbuc1 - ldx #'-' + // [83] phi (byte) main::r#51 = (byte) '-' [phi:main::@54->main::@12#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r // main::@12 __b12: // printu(a, "<=", cs[i], r) - // [84] (byte) printu::a#10 ← (byte) main::a#10 + // [84] (byte) printu::a#10 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [85] (byte) printu::b#10 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -7452,21 +7523,23 @@ main: { // [89] phi from main::@55 to main::@33 [phi:main::@55->main::@33] // main::@33 // [90] phi from main::@33 to main::@13 [phi:main::@33->main::@13] - // [90] phi (byte) main::r#52 = (byte) '+' [phi:main::@33->main::@13#0] -- vbuxx=vbuc1 - ldx #'+' + // [90] phi (byte) main::r#52 = (byte) '+' [phi:main::@33->main::@13#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b13 // [90] phi from main::@55 to main::@13 [phi:main::@55->main::@13] b12: - // [90] phi (byte) main::r#52 = (byte) '-' [phi:main::@55->main::@13#0] -- vbuxx=vbuc1 - ldx #'-' + // [90] phi (byte) main::r#52 = (byte) '-' [phi:main::@55->main::@13#0] -- vbuyy=vbuc1 + ldy #'-' // main::@13 __b13: // printu(a, "<=", a, r) - // [91] (byte) printu::a#11 ← (byte) main::a#10 + // [91] (byte) printu::a#11 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 - lda.z a + txa sta.z printu.b - // [93] (byte) printu::res#11 ← (byte) main::r#52 + // [93] (byte) printu::res#11 ← (byte) main::r#52 -- vbuz1=vbuyy + sty.z printu.res // [94] call printu // [167] phi from main::@13 to printu [phi:main::@13->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy @@ -7495,21 +7568,23 @@ main: { // [98] phi from main::@57 to main::@34 [phi:main::@57->main::@34] // main::@34 // [99] phi from main::@34 to main::@14 [phi:main::@34->main::@14] - // [99] phi (byte) main::r#53 = (byte) '+' [phi:main::@34->main::@14#0] -- vbuxx=vbuc1 - ldx #'+' + // [99] phi (byte) main::r#53 = (byte) '+' [phi:main::@34->main::@14#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b14 // [99] phi from main::@57 to main::@14 [phi:main::@57->main::@14] b13: - // [99] phi (byte) main::r#53 = (byte) '-' [phi:main::@57->main::@14#0] -- vbuxx=vbuc1 - ldx #'-' + // [99] phi (byte) main::r#53 = (byte) '-' [phi:main::@57->main::@14#0] -- vbuyy=vbuc1 + ldy #'-' // main::@14 __b14: // printu(a, ">=", b, r) - // [100] (byte) printu::a#12 ← (byte) main::a#10 + // [100] (byte) printu::a#12 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [102] (byte) printu::res#12 ← (byte) main::r#53 + // [102] (byte) printu::res#12 ← (byte) main::r#53 -- vbuz1=vbuyy + sty.z printu.res // [103] (byte*) print_char_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -7537,18 +7612,20 @@ main: { // [106] phi from main::@58 to main::@35 [phi:main::@58->main::@35] // main::@35 // [107] phi from main::@35 to main::@15 [phi:main::@35->main::@15] - // [107] phi (byte) main::r#54 = (byte) '+' [phi:main::@35->main::@15#0] -- vbuxx=vbuc1 - ldx #'+' + // [107] phi (byte) main::r#54 = (byte) '+' [phi:main::@35->main::@15#0] -- vbuaa=vbuc1 + lda #'+' jmp __b15 // [107] phi from main::@58 to main::@15 [phi:main::@58->main::@15] b14: - // [107] phi (byte) main::r#54 = (byte) '-' [phi:main::@58->main::@15#0] -- vbuxx=vbuc1 - ldx #'-' + // [107] phi (byte) main::r#54 = (byte) '-' [phi:main::@58->main::@15#0] -- vbuaa=vbuc1 + lda #'-' // main::@15 __b15: // printu(a, ">=", $37, r) - // [108] (byte) printu::a#13 ← (byte) main::a#10 - // [109] (byte) printu::res#13 ← (byte) main::r#54 + // [108] (byte) printu::a#13 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [109] (byte) printu::res#13 ← (byte) main::r#54 -- vbuz1=vbuaa + sta.z printu.res // [110] call printu // [167] phi from main::@15 to printu [phi:main::@15->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy @@ -7573,17 +7650,20 @@ main: { // [112] phi from main::@59 to main::@36 [phi:main::@59->main::@36] // main::@36 // [113] phi from main::@36 to main::@16 [phi:main::@36->main::@16] - // [113] phi (byte) main::r#55 = (byte) '+' [phi:main::@36->main::@16#0] -- vbuxx=vbuc1 - ldx #'+' + // [113] phi (byte) main::r#55 = (byte) '+' [phi:main::@36->main::@16#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b16 // [113] phi from main::@59 to main::@16 [phi:main::@59->main::@16] b15: - // [113] phi (byte) main::r#55 = (byte) '-' [phi:main::@59->main::@16#0] -- vbuxx=vbuc1 - ldx #'-' + // [113] phi (byte) main::r#55 = (byte) '-' [phi:main::@59->main::@16#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r // main::@16 __b16: // printu(a, ">=", cs[i], r) - // [114] (byte) printu::a#14 ← (byte) main::a#10 + // [114] (byte) printu::a#14 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [115] (byte) printu::b#14 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -7610,21 +7690,23 @@ main: { // [119] phi from main::@60 to main::@37 [phi:main::@60->main::@37] // main::@37 // [120] phi from main::@37 to main::@17 [phi:main::@37->main::@17] - // [120] phi (byte) main::r#56 = (byte) '+' [phi:main::@37->main::@17#0] -- vbuxx=vbuc1 - ldx #'+' + // [120] phi (byte) main::r#56 = (byte) '+' [phi:main::@37->main::@17#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b17 // [120] phi from main::@60 to main::@17 [phi:main::@60->main::@17] b16: - // [120] phi (byte) main::r#56 = (byte) '-' [phi:main::@60->main::@17#0] -- vbuxx=vbuc1 - ldx #'-' + // [120] phi (byte) main::r#56 = (byte) '-' [phi:main::@60->main::@17#0] -- vbuyy=vbuc1 + ldy #'-' // main::@17 __b17: // printu(a, ">=", a, r) - // [121] (byte) printu::a#15 ← (byte) main::a#10 + // [121] (byte) printu::a#15 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 - lda.z a + txa sta.z printu.b - // [123] (byte) printu::res#15 ← (byte) main::r#56 + // [123] (byte) printu::res#15 ← (byte) main::r#56 -- vbuz1=vbuyy + sty.z printu.res // [124] call printu // [167] phi from main::@17 to printu [phi:main::@17->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy @@ -7653,21 +7735,23 @@ main: { // [128] phi from main::@62 to main::@38 [phi:main::@62->main::@38] // main::@38 // [129] phi from main::@38 to main::@18 [phi:main::@38->main::@18] - // [129] phi (byte) main::r#57 = (byte) '+' [phi:main::@38->main::@18#0] -- vbuxx=vbuc1 - ldx #'+' + // [129] phi (byte) main::r#57 = (byte) '+' [phi:main::@38->main::@18#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b18 // [129] phi from main::@62 to main::@18 [phi:main::@62->main::@18] b17: - // [129] phi (byte) main::r#57 = (byte) '-' [phi:main::@62->main::@18#0] -- vbuxx=vbuc1 - ldx #'-' + // [129] phi (byte) main::r#57 = (byte) '-' [phi:main::@62->main::@18#0] -- vbuyy=vbuc1 + ldy #'-' // main::@18 __b18: // printu(a, "==", b, r) - // [130] (byte) printu::a#16 ← (byte) main::a#10 + // [130] (byte) printu::a#16 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 lda.z b sta.z printu.b - // [132] (byte) printu::res#16 ← (byte) main::r#57 + // [132] (byte) printu::res#16 ← (byte) main::r#57 -- vbuz1=vbuyy + sty.z printu.res // [133] (byte*) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor @@ -7695,18 +7779,20 @@ main: { // [136] phi from main::@63 to main::@39 [phi:main::@63->main::@39] // main::@39 // [137] phi from main::@39 to main::@19 [phi:main::@39->main::@19] - // [137] phi (byte) main::r#58 = (byte) '+' [phi:main::@39->main::@19#0] -- vbuxx=vbuc1 - ldx #'+' + // [137] phi (byte) main::r#58 = (byte) '+' [phi:main::@39->main::@19#0] -- vbuaa=vbuc1 + lda #'+' jmp __b19 // [137] phi from main::@63 to main::@19 [phi:main::@63->main::@19] b18: - // [137] phi (byte) main::r#58 = (byte) '-' [phi:main::@63->main::@19#0] -- vbuxx=vbuc1 - ldx #'-' + // [137] phi (byte) main::r#58 = (byte) '-' [phi:main::@63->main::@19#0] -- vbuaa=vbuc1 + lda #'-' // main::@19 __b19: // printu(a, "==", $37, r) - // [138] (byte) printu::a#17 ← (byte) main::a#10 - // [139] (byte) printu::res#17 ← (byte) main::r#58 + // [138] (byte) printu::a#17 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a + // [139] (byte) printu::res#17 ← (byte) main::r#58 -- vbuz1=vbuaa + sta.z printu.res // [140] call printu // [167] phi from main::@19 to printu [phi:main::@19->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy @@ -7731,17 +7817,20 @@ main: { // [142] phi from main::@64 to main::@40 [phi:main::@64->main::@40] // main::@40 // [143] phi from main::@40 to main::@20 [phi:main::@40->main::@20] - // [143] phi (byte) main::r#59 = (byte) '+' [phi:main::@40->main::@20#0] -- vbuxx=vbuc1 - ldx #'+' + // [143] phi (byte) main::r#59 = (byte) '+' [phi:main::@40->main::@20#0] -- vbuz1=vbuc1 + lda #'+' + sta.z r jmp __b20 // [143] phi from main::@64 to main::@20 [phi:main::@64->main::@20] b19: - // [143] phi (byte) main::r#59 = (byte) '-' [phi:main::@64->main::@20#0] -- vbuxx=vbuc1 - ldx #'-' + // [143] phi (byte) main::r#59 = (byte) '-' [phi:main::@64->main::@20#0] -- vbuz1=vbuc1 + lda #'-' + sta.z r // main::@20 __b20: // printu(a, "==", cs[i], r) - // [144] (byte) printu::a#18 ← (byte) main::a#10 + // [144] (byte) printu::a#18 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [145] (byte) printu::b#18 ← *((const byte*) main::cs + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda cs,y @@ -7768,21 +7857,23 @@ main: { // [149] phi from main::@65 to main::@41 [phi:main::@65->main::@41] // main::@41 // [150] phi from main::@41 to main::@21 [phi:main::@41->main::@21] - // [150] phi (byte) main::r#60 = (byte) '+' [phi:main::@41->main::@21#0] -- vbuxx=vbuc1 - ldx #'+' + // [150] phi (byte) main::r#60 = (byte) '+' [phi:main::@41->main::@21#0] -- vbuyy=vbuc1 + ldy #'+' jmp __b21 // [150] phi from main::@65 to main::@21 [phi:main::@65->main::@21] b20: - // [150] phi (byte) main::r#60 = (byte) '-' [phi:main::@65->main::@21#0] -- vbuxx=vbuc1 - ldx #'-' + // [150] phi (byte) main::r#60 = (byte) '-' [phi:main::@65->main::@21#0] -- vbuyy=vbuc1 + ldy #'-' // main::@21 __b21: // printu(a, "==", a, r) - // [151] (byte) printu::a#19 ← (byte) main::a#10 + // [151] (byte) printu::a#19 ← (byte) main::a#10 -- vbuxx=vbuz1 + ldx.z a // [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 - lda.z a + txa sta.z printu.b - // [153] (byte) printu::res#19 ← (byte) main::r#60 + // [153] (byte) printu::res#19 ← (byte) main::r#60 -- vbuz1=vbuyy + sty.z printu.res // [154] call printu // [167] phi from main::@21 to printu [phi:main::@21->printu] // [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy @@ -7876,10 +7967,10 @@ print_ln: { rts } // printu -// printu(byte zp(2) a, byte* zp($a) op, byte zp(6) b, byte register(X) res) +// printu(byte register(X) a, byte* zp($a) op, byte zp(7) b, byte zp(4) res) printu: { - .label a = 2 - .label b = 6 + .label b = 7 + .label res = 4 .label op = $a // print_char(' ') // [168] call print_char @@ -7890,9 +7981,7 @@ printu: { jsr print_char // printu::@1 // print_byte(a) - // [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 - lda.z a - sta.z print_byte.b + // [169] (byte) print_byte::b#0 ← (byte) printu::a#20 // [170] call print_byte // [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] // [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy @@ -7906,9 +7995,8 @@ printu: { jsr print_str // printu::@3 // print_byte(b) - // [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 - lda.z b - sta.z print_byte.b + // [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuxx=vbuz1 + ldx.z b // [174] call print_byte // [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] // [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy @@ -7925,8 +8013,8 @@ printu: { jsr print_char // printu::@5 // print_char(res) - // [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx - txa + // [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuz1 + lda.z res // [178] call print_char // [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] // [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy @@ -7958,12 +8046,11 @@ print_char: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(9) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 9 // b>>4 - // [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -7980,9 +8067,9 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 - lda #$f - and.z b + // [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuxx_band_vbuc1 + txa + and #$f // print_char(print_hextab[b&$f]) // [189] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay diff --git a/src/test/ref/test-comparisons.sym b/src/test/ref/test-comparisons.sym index 015d23175..f382b4539 100644 --- a/src/test/ref/test-comparisons.sym +++ b/src/test/ref/test-comparisons.sym @@ -75,40 +75,40 @@ (label) main::@8 (label) main::@9 (byte) main::a -(byte) main::a#1 a zp[1]:2 5.5 -(byte) main::a#10 a zp[1]:2 3.860927152317884 +(byte) main::a#1 a zp[1]:2 50.5 +(byte) main::a#10 a zp[1]:2 35.4503311258278 (byte) main::b -(byte) main::b#0 b zp[1]:12 0.9758064516129035 +(byte) main::b#0 b zp[1]:12 8.95967741935484 (const byte*) main::cs[(number) 5] = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 } (byte) main::i -(byte) main::i#1 i zp[1]:3 11.0 -(byte) main::i#10 i zp[1]:3 0.8684210526315792 +(byte) main::i#1 i zp[1]:3 101.0 +(byte) main::i#10 i zp[1]:3 7.973684210526318 (const byte*) main::op[(byte) 3] = (byte*) "< " (const byte*) main::op12[(byte) 3] = (byte*) ">=" (const byte*) main::op16[(byte) 3] = (byte*) "==" (const byte*) main::op4[(byte) 3] = (byte*) "> " (const byte*) main::op8[(byte) 3] = (byte*) "<=" (byte) main::r -(byte) main::r#41 reg byte x 3.6666666666666665 -(byte) main::r#42 reg byte x 5.5 -(byte) main::r#43 reg byte x 3.6666666666666665 -(byte) main::r#44 reg byte x 3.6666666666666665 -(byte) main::r#45 reg byte x 3.6666666666666665 -(byte) main::r#46 reg byte x 5.5 -(byte) main::r#47 reg byte x 3.6666666666666665 -(byte) main::r#48 reg byte x 3.6666666666666665 -(byte) main::r#49 reg byte x 3.6666666666666665 -(byte) main::r#50 reg byte x 5.5 -(byte) main::r#51 reg byte x 3.6666666666666665 -(byte) main::r#52 reg byte x 3.6666666666666665 -(byte) main::r#53 reg byte x 3.6666666666666665 -(byte) main::r#54 reg byte x 5.5 -(byte) main::r#55 reg byte x 3.6666666666666665 -(byte) main::r#56 reg byte x 3.6666666666666665 -(byte) main::r#57 reg byte x 3.6666666666666665 -(byte) main::r#58 reg byte x 5.5 -(byte) main::r#59 reg byte x 3.6666666666666665 -(byte) main::r#60 reg byte x 3.6666666666666665 +(byte) main::r#41 reg byte y 33.666666666666664 +(byte) main::r#42 reg byte a 50.5 +(byte) main::r#43 r zp[1]:4 33.666666666666664 +(byte) main::r#44 reg byte y 33.666666666666664 +(byte) main::r#45 reg byte y 33.666666666666664 +(byte) main::r#46 reg byte a 50.5 +(byte) main::r#47 r zp[1]:4 33.666666666666664 +(byte) main::r#48 reg byte y 33.666666666666664 +(byte) main::r#49 reg byte y 33.666666666666664 +(byte) main::r#50 reg byte a 50.5 +(byte) main::r#51 r zp[1]:4 33.666666666666664 +(byte) main::r#52 reg byte y 33.666666666666664 +(byte) main::r#53 reg byte y 33.666666666666664 +(byte) main::r#54 reg byte a 50.5 +(byte) main::r#55 r zp[1]:4 33.666666666666664 +(byte) main::r#56 reg byte y 33.666666666666664 +(byte) main::r#57 reg byte y 33.666666666666664 +(byte) main::r#58 reg byte a 50.5 +(byte) main::r#59 r zp[1]:4 33.666666666666664 +(byte) main::r#60 reg byte y 33.666666666666664 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -116,8 +116,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:10 22.0 -(byte*) memset::dst#2 dst zp[2]:10 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:10 20002.0 +(byte*) memset::dst#2 dst zp[2]:10 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -126,42 +126,42 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 20002.0 +(byte~) print_byte::$2 reg byte a 20002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:9 4.0 -(byte) print_byte::b#1 b zp[1]:9 4.0 -(byte) print_byte::b#2 b zp[1]:9 2.0 +(byte) print_byte::b#0 reg byte x 2002.0 +(byte) print_byte::b#1 reg byte x 2002.0 +(byte) print_byte::b#2 reg byte x 5501.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 8.0 +(byte) print_char::ch#0 reg byte a 20002.0 +(byte) print_char::ch#1 reg byte a 20002.0 +(byte) print_char::ch#4 reg byte a 2002.0 +(byte) print_char::ch#5 reg byte a 121004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:7 101.0 -(byte*) print_char_cursor#120 print_char_cursor zp[2]:7 2.75 -(byte*) print_char_cursor#150 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#151 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#155 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#159 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#167 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#2 print_char_cursor zp[2]:7 51.16666666666666 -(byte*) print_char_cursor#54 print_char_cursor zp[2]:7 7.0 -(byte*) print_char_cursor#55 print_char_cursor zp[2]:7 2.106060606060605 -(byte*) print_char_cursor#94 print_char_cursor zp[2]:7 2.0 -(byte*) print_char_cursor#95 print_char_cursor zp[2]:7 222.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 1000001.0 +(byte*) print_char_cursor#120 print_char_cursor zp[2]:8 25.25 +(byte*) print_char_cursor#150 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#151 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#155 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#159 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#167 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#2 print_char_cursor zp[2]:8 501834.16666666674 +(byte*) print_char_cursor#54 print_char_cursor zp[2]:8 111503.5 +(byte*) print_char_cursor#55 print_char_cursor zp[2]:8 1700.9242424242423 +(byte*) print_char_cursor#94 print_char_cursor zp[2]:8 4000.9999999999995 +(byte*) print_char_cursor#95 print_char_cursor zp[2]:8 3021.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 3.2265625 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:4 204.0 -(byte*) print_line_cursor#25 print_line_cursor zp[2]:4 57.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:4 0.7333333333333333 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 2351.6640625 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 201003.0 +(byte*) print_line_cursor#25 print_line_cursor zp[2]:5 1506.0 +(byte*) print_line_cursor#27 print_line_cursor zp[2]:5 6.733333333333333 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -171,9 +171,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:10 202.0 -(byte*) print_str::str#1 str zp[2]:10 2.0 -(byte*) print_str::str#2 str zp[2]:10 101.5 +(byte*) print_str::str#0 str zp[2]:10 2000002.0 +(byte*) print_str::str#1 str zp[2]:10 5501.0 +(byte*) print_str::str#2 str zp[2]:10 1002501.25 (void()) printu((byte) printu::a , (byte*) printu::op , (byte) printu::b , (byte) printu::res) (label) printu::@1 (label) printu::@2 @@ -182,97 +182,93 @@ (label) printu::@5 (label) printu::@return (byte) printu::a -(byte) printu::a#0 a zp[1]:2 7.333333333333333 -(byte) printu::a#1 a zp[1]:2 11.0 -(byte) printu::a#10 a zp[1]:2 7.333333333333333 -(byte) printu::a#11 a zp[1]:2 7.333333333333333 -(byte) printu::a#12 a zp[1]:2 5.5 -(byte) printu::a#13 a zp[1]:2 11.0 -(byte) printu::a#14 a zp[1]:2 7.333333333333333 -(byte) printu::a#15 a zp[1]:2 7.333333333333333 -(byte) printu::a#16 a zp[1]:2 5.5 -(byte) printu::a#17 a zp[1]:2 11.0 -(byte) printu::a#18 a zp[1]:2 7.333333333333333 -(byte) printu::a#19 a zp[1]:2 7.333333333333333 -(byte) printu::a#2 a zp[1]:2 7.333333333333333 -(byte) printu::a#20 a zp[1]:2 111.0 -(byte) printu::a#3 a zp[1]:2 7.333333333333333 -(byte) printu::a#4 a zp[1]:2 5.5 -(byte) printu::a#5 a zp[1]:2 11.0 -(byte) printu::a#6 a zp[1]:2 7.333333333333333 -(byte) printu::a#7 a zp[1]:2 7.333333333333333 -(byte) printu::a#8 a zp[1]:2 5.5 -(byte) printu::a#9 a zp[1]:2 11.0 +(byte) printu::a#0 reg byte x 67.33333333333333 +(byte) printu::a#1 reg byte x 101.0 +(byte) printu::a#10 reg byte x 67.33333333333333 +(byte) printu::a#11 reg byte x 67.33333333333333 +(byte) printu::a#12 reg byte x 50.5 +(byte) printu::a#13 reg byte x 101.0 +(byte) printu::a#14 reg byte x 67.33333333333333 +(byte) printu::a#15 reg byte x 67.33333333333333 +(byte) printu::a#16 reg byte x 50.5 +(byte) printu::a#17 reg byte x 101.0 +(byte) printu::a#18 reg byte x 67.33333333333333 +(byte) printu::a#19 reg byte x 67.33333333333333 +(byte) printu::a#2 reg byte x 67.33333333333333 +(byte) printu::a#20 reg byte x 1510.5 +(byte) printu::a#3 reg byte x 67.33333333333333 +(byte) printu::a#4 reg byte x 50.5 +(byte) printu::a#5 reg byte x 101.0 +(byte) printu::a#6 reg byte x 67.33333333333333 +(byte) printu::a#7 reg byte x 67.33333333333333 +(byte) printu::a#8 reg byte x 50.5 +(byte) printu::a#9 reg byte x 101.0 (byte) printu::b -(byte) printu::b#0 b zp[1]:6 11.0 -(byte) printu::b#10 b zp[1]:6 11.0 -(byte) printu::b#11 b zp[1]:6 11.0 -(byte) printu::b#12 b zp[1]:6 7.333333333333333 -(byte) printu::b#14 b zp[1]:6 11.0 -(byte) printu::b#15 b zp[1]:6 11.0 -(byte) printu::b#16 b zp[1]:6 7.333333333333333 -(byte) printu::b#18 b zp[1]:6 11.0 -(byte) printu::b#19 b zp[1]:6 11.0 -(byte) printu::b#2 b zp[1]:6 11.0 -(byte) printu::b#20 b zp[1]:6 27.833333333333325 -(byte) printu::b#3 b zp[1]:6 11.0 -(byte) printu::b#4 b zp[1]:6 7.333333333333333 -(byte) printu::b#6 b zp[1]:6 11.0 -(byte) printu::b#7 b zp[1]:6 11.0 -(byte) printu::b#8 b zp[1]:6 7.333333333333333 +(byte) printu::b#0 b zp[1]:7 101.0 +(byte) printu::b#10 b zp[1]:7 101.0 +(byte) printu::b#11 b zp[1]:7 101.0 +(byte) printu::b#12 b zp[1]:7 67.33333333333333 +(byte) printu::b#14 b zp[1]:7 101.0 +(byte) printu::b#15 b zp[1]:7 101.0 +(byte) printu::b#16 b zp[1]:7 67.33333333333333 +(byte) printu::b#18 b zp[1]:7 101.0 +(byte) printu::b#19 b zp[1]:7 101.0 +(byte) printu::b#2 b zp[1]:7 101.0 +(byte) printu::b#20 b zp[1]:7 419.33333333333337 +(byte) printu::b#3 b zp[1]:7 101.0 +(byte) printu::b#4 b zp[1]:7 67.33333333333333 +(byte) printu::b#6 b zp[1]:7 101.0 +(byte) printu::b#7 b zp[1]:7 101.0 +(byte) printu::b#8 b zp[1]:7 67.33333333333333 (byte*) printu::op -(byte*) printu::op#20 op zp[2]:10 0.5 +(byte*) printu::op#20 op zp[2]:10 250.25 (byte) printu::res -(byte) printu::res#0 reg byte x 22.0 -(byte) printu::res#1 reg byte x 22.0 -(byte) printu::res#10 reg byte x 22.0 -(byte) printu::res#11 reg byte x 22.0 -(byte) printu::res#12 reg byte x 11.0 -(byte) printu::res#13 reg byte x 22.0 -(byte) printu::res#14 reg byte x 22.0 -(byte) printu::res#15 reg byte x 22.0 -(byte) printu::res#16 reg byte x 11.0 -(byte) printu::res#17 reg byte x 22.0 -(byte) printu::res#18 reg byte x 22.0 -(byte) printu::res#19 reg byte x 22.0 -(byte) printu::res#2 reg byte x 22.0 -(byte) printu::res#20 reg byte x 22.200000000000003 -(byte) printu::res#3 reg byte x 22.0 -(byte) printu::res#4 reg byte x 11.0 -(byte) printu::res#5 reg byte x 22.0 -(byte) printu::res#6 reg byte x 22.0 -(byte) printu::res#7 reg byte x 22.0 -(byte) printu::res#8 reg byte x 11.0 -(byte) printu::res#9 reg byte x 22.0 +(byte) printu::res#0 res zp[1]:4 202.0 +(byte) printu::res#1 res zp[1]:4 202.0 +(byte) printu::res#10 res zp[1]:4 202.0 +(byte) printu::res#11 res zp[1]:4 202.0 +(byte) printu::res#12 res zp[1]:4 101.0 +(byte) printu::res#13 res zp[1]:4 202.0 +(byte) printu::res#14 res zp[1]:4 202.0 +(byte) printu::res#15 res zp[1]:4 202.0 +(byte) printu::res#16 res zp[1]:4 101.0 +(byte) printu::res#17 res zp[1]:4 202.0 +(byte) printu::res#18 res zp[1]:4 202.0 +(byte) printu::res#19 res zp[1]:4 202.0 +(byte) printu::res#2 res zp[1]:4 202.0 +(byte) printu::res#20 res zp[1]:4 302.0999999999999 +(byte) printu::res#3 res zp[1]:4 202.0 +(byte) printu::res#4 res zp[1]:4 101.0 +(byte) printu::res#5 res zp[1]:4 202.0 +(byte) printu::res#6 res zp[1]:4 202.0 +(byte) printu::res#7 res zp[1]:4 202.0 +(byte) printu::res#8 res zp[1]:4 101.0 +(byte) printu::res#9 res zp[1]:4 202.0 -zp[1]:2 [ main::a#10 main::a#1 printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] +zp[1]:2 [ main::a#10 main::a#1 ] zp[1]:3 [ main::i#10 main::i#1 ] -reg byte x [ main::r#41 ] -reg byte x [ main::r#42 ] -reg byte x [ main::r#43 ] -reg byte x [ main::r#44 ] -reg byte x [ main::r#45 ] -reg byte x [ main::r#46 ] -reg byte x [ main::r#47 ] -reg byte x [ main::r#48 ] -reg byte x [ main::r#49 ] -reg byte x [ main::r#50 ] -reg byte x [ main::r#51 ] -reg byte x [ main::r#52 ] -reg byte x [ main::r#53 ] -reg byte x [ main::r#54 ] -reg byte x [ main::r#55 ] -reg byte x [ main::r#56 ] -reg byte x [ main::r#57 ] -reg byte x [ main::r#58 ] -reg byte x [ main::r#59 ] -reg byte x [ main::r#60 ] -zp[2]:4 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] -zp[1]:6 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] -reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] +reg byte y [ main::r#41 ] +reg byte a [ main::r#42 ] +zp[1]:4 [ main::r#43 printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 main::r#47 main::r#51 main::r#55 main::r#59 ] +reg byte y [ main::r#44 ] +reg byte y [ main::r#45 ] +reg byte a [ main::r#46 ] +reg byte y [ main::r#48 ] +reg byte y [ main::r#49 ] +reg byte a [ main::r#50 ] +reg byte y [ main::r#52 ] +reg byte y [ main::r#53 ] +reg byte a [ main::r#54 ] +reg byte y [ main::r#56 ] +reg byte y [ main::r#57 ] +reg byte a [ main::r#58 ] +reg byte y [ main::r#60 ] +zp[2]:5 [ print_line_cursor#13 print_line_cursor#25 print_line_cursor#27 print_line_cursor#1 ] +reg byte x [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] +zp[1]:7 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] -zp[2]:7 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] -zp[1]:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:8 [ print_char_cursor#54 print_char_cursor#94 print_char_cursor#95 print_char_cursor#151 print_char_cursor#55 print_char_cursor#155 print_char_cursor#159 print_char_cursor#120 print_char_cursor#150 print_char_cursor#167 print_char_cursor#2 print_char_cursor#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:10 [ memset::dst#2 memset::dst#1 printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:12 [ main::b#0 ] reg byte a [ print_byte::$0 ] diff --git a/src/test/ref/test-division.asm b/src/test/ref/test-division.asm index 660925eda..6f1606f27 100644 --- a/src/test/ref/test-division.asm +++ b/src/test/ref/test-division.asm @@ -421,8 +421,8 @@ test_8s: { lda divisors,y sta.z divisor // div8s(dividend, divisor) - ldy.z dividend - tax + ldx.z dividend + tay jsr div8s // res = div8s(dividend, divisor) sta.z res @@ -507,21 +507,21 @@ print_sbyte: { // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// div8s(signed byte register(Y) dividend, signed byte register(X) divisor) +// div8s(signed byte register(X) dividend, signed byte register(Y) divisor) div8s: { .label neg = $10 // if(dividend<0) - cpy #0 + cpx #0 bmi __b1 lda #0 sta.z neg __b2: // if(divisor<0) - cpx #0 + cpy #0 bmi __b3 + tya __b4: // div8u(dividendu, divisoru) - tya jsr div8u // div8u(dividendu, divisoru) // resultu = div8u(dividendu, divisoru) @@ -549,23 +549,24 @@ div8s: { rts __b3: // -divisor - txa - eor #$ff - clc - adc #1 - tax - // neg = neg ^ 1 - lda #1 - eor.z neg - sta.z neg - jmp __b4 - __b1: - // -dividend tya eor #$ff clc adc #1 tay + // neg = neg ^ 1 + lda #1 + eor.z neg + sta.z neg + tya + jmp __b4 + __b1: + // -dividend + txa + eor #$ff + clc + adc #1 + tax lda #1 sta.z neg jmp __b2 @@ -574,11 +575,11 @@ div8s: { // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division -// div8u(byte register(A) dividend, byte register(X) divisor) +// div8u(byte register(X) dividend, byte register(A) divisor) div8u: { // divr8u(dividend, divisor, 0) - sta.z divr8u.dividend - stx.z divr8u.divisor + stx.z divr8u.dividend + sta.z divr8u.divisor jsr divr8u // divr8u(dividend, divisor, 0) lda.z divr8u.return @@ -762,8 +763,7 @@ test_8u: { lda divisors,y sta.z divisor // div8u(dividend, divisor) - lda.z dividend - ldx.z divisor + ldx.z dividend jsr div8u // div8u(dividend, divisor) // res = div8u(dividend, divisor) diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index 6d432d044..87e107751 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -2866,255 +2866,255 @@ Inversing boolean not [173] (bool~) divr8u::$8 ← (byte) divr8u::rem#5 < (byte) Inversing boolean not [204] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [203] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0 Inversing boolean not [212] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [211] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#61 (byte*) print_char_cursor#160 (byte*) print_screen#8 (byte*) print_line_cursor#56 (byte*) print_char_cursor#159 (byte*) print_screen#7 (byte*) print_line_cursor#51 (byte*) print_char_cursor#154 (byte*) print_screen#6 (byte*) print_line_cursor#50 (byte*) print_char_cursor#153 (byte*) print_screen#5 (byte*) print_line_cursor#45 (byte*) print_char_cursor#145 (byte*) print_screen#4 -Alias (byte*) print_str::str#13 = (byte*) print_str::str#14 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#69 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#147 (byte*) print_char_cursor#133 -Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#70 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#71 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#148 (byte*) print_char_cursor#136 -Alias (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#9 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#9 -Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#75 -Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#12 -Alias (byte) print_byte::b#1 = (byte~) print_word::$0 -Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#78 -Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#15 -Alias (byte) print_byte::b#7 = (byte) print_byte::b#8 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#81 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#18 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#20 -Alias (byte*) print_line_cursor#23 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#86 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 -Alias (byte) divr8u::return#0 = (byte) divr8u::return#3 -Alias (byte) rem8u#1 = (byte) rem8u#15 (byte) rem8u#16 (byte) rem8u#2 -Alias (byte) div8u::return#0 = (byte~) div8u::$0 (byte) div8u::return#4 (byte) div8u::return#1 -Alias (byte) divr8u::rem#1 = (byte~) divr8u::$0 (byte) divr8u::rem#6 -Alias (byte) divr8u::dividend#1 = (byte~) divr8u::$5 (byte) divr8u::dividend#7 -Alias (byte) divr8u::quotient#1 = (byte~) divr8u::$6 (byte) divr8u::quotient#4 -Alias (byte) divr8u::dividend#2 = (byte) divr8u::dividend#6 -Alias (byte) divr8u::quotient#6 = (byte) divr8u::quotient#7 -Alias (byte) divr8u::divisor#3 = (byte) divr8u::divisor#4 -Alias (byte) divr8u::i#5 = (byte) divr8u::i#6 -Alias (byte) divr8u::rem#2 = (byte~) divr8u::$4 -Alias (byte) divr8u::rem#5 = (byte) divr8u::rem#7 -Alias (byte) divr8u::divisor#1 = (byte) divr8u::divisor#2 -Alias (byte) divr8u::i#3 = (byte) divr8u::i#4 -Alias (byte) divr8u::rem#3 = (byte~) divr8u::$9 -Alias (byte) divr8u::rem#10 = (byte) divr8u::rem#8 -Alias (byte) divr8u::return#1 = (byte) divr8u::quotient#5 (byte) divr8u::quotient#8 (byte) divr8u::return#4 (byte) divr8u::return#2 -Alias (byte) rem8u#17 = (byte) rem8u#3 (byte) rem8u#4 -Alias (byte) rem8u#0 = (byte) rem8u#55 (byte) rem8u#52 (byte) rem8u#50 (byte) rem8u#41 -Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 -Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 -Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 -Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 -Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 -Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 -Alias (word) divr16u::rem#1 = (word~) divr16u::$5 -Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 -Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 -Alias (word) divr16u::rem#2 = (word~) divr16u::$10 -Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 -Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#17 (word) rem16u#2 -Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (word) rem16u#18 = (word) rem16u#3 (word) rem16u#19 (word) rem16u#4 -Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 -Alias (word) rem16u#0 = (word) rem16u#55 (word) rem16u#54 (word) rem16u#45 -Alias (signed byte) div8s::dividend#1 = (signed byte) div8s::dividend#2 (signed byte) div8s::dividend#3 -Alias (signed byte) div8s::divisor#4 = (signed byte) div8s::divisor#6 (signed byte) div8s::divisor#5 -Alias (byte) rem8u#56 = (byte) rem8u#60 (byte) rem8u#57 -Alias (byte) div8s::dividendu#1 = (byte~) div8s::$6 -Alias (byte) div8s::neg#0 = (byte) div8s::neg#7 -Alias (byte) div8s::dividendu#2 = (byte~) div8s::$4 -Alias (signed byte) div8s::divisor#1 = (signed byte) div8s::divisor#2 (signed byte) div8s::divisor#3 -Alias (byte) div8s::neg#3 = (byte) div8s::neg#5 (byte) div8s::neg#8 -Alias (byte) div8s::dividendu#4 = (byte) div8s::dividendu#6 (byte) div8s::dividendu#5 -Alias (byte) rem8u#42 = (byte) rem8u#51 (byte) rem8u#43 -Alias (byte) div8s::divisoru#1 = (byte~) div8s::$9 -Alias (byte) div8s::neg#2 = (byte~) div8s::$10 -Alias (byte) div8s::divisoru#2 = (byte~) div8s::$7 -Alias (byte) div8u::return#2 = (byte) div8u::return#5 -Alias (byte) div8s::neg#4 = (byte) div8s::neg#6 -Alias (byte) rem8u#18 = (byte) rem8u#5 (byte) rem8u#19 (byte) rem8u#20 -Alias (byte) div8s::resultu#0 = (byte~) div8s::$2 (byte) div8s::resultu#1 (byte) div8s::resultu#2 -Alias (signed byte) rem8s#1 = (signed byte~) div8s::$15 -Alias (signed byte) div8s::return#0 = (signed byte~) div8s::$16 -Alias (signed byte) rem8s#2 = (signed byte~) div8s::$12 -Alias (signed byte) div8s::return#1 = (signed byte~) div8s::$14 -Alias (signed byte) div8s::return#2 = (signed byte) div8s::return#4 -Alias (byte) rem8u#21 = (byte) rem8u#6 -Alias (signed byte) rem8s#3 = (signed byte) rem8s#9 -Alias (signed byte) rem8s#0 = (signed byte) rem8s#26 (signed byte) rem8s#21 -Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3 -Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3 -Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5 -Alias (word) rem16u#60 = (word) rem16u#64 (word) rem16u#61 -Alias (word) divr16s::dividendu#1 = (word~) divr16s::$9 -Alias (word) divr16s::remu#1 = (word~) divr16s::$11 -Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7 -Alias (word) divr16s::dividendu#2 = (word~) divr16s::$6 -Alias (word) divr16s::remu#2 = (word~) divr16s::$7 -Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signed word) divr16s::divisor#3 -Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8 -Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5 -Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5 -Alias (word) rem16u#46 = (word) rem16u#56 (word) rem16u#47 -Alias (word) divr16s::divisoru#1 = (word~) divr16s::$14 -Alias (byte) divr16s::neg#2 = (byte~) divr16s::$15 -Alias (word) divr16s::divisoru#2 = (word~) divr16s::$12 -Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6 -Alias (word) rem16u#20 = (word) rem16u#5 (word) rem16u#21 (word) rem16u#22 -Alias (word) divr16s::resultu#0 = (word~) divr16s::$4 (word) divr16s::resultu#1 (word) divr16s::resultu#2 -Alias (signed word) rem16s#1 = (signed word~) divr16s::$20 -Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21 -Alias (signed word) rem16s#2 = (signed word~) divr16s::$17 -Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19 -Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4 -Alias (word) rem16u#23 = (word) rem16u#6 -Alias (signed word) rem16s#11 = (signed word) rem16s#3 -Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 -Alias (word) rem16u#24 = (word) rem16u#7 (word) rem16u#25 (word) rem16u#8 -Alias (signed word) rem16s#12 = (signed word) rem16s#4 (signed word) rem16s#13 (signed word) rem16s#5 -Alias (signed word) div16s::return#0 = (signed word~) div16s::$0 (signed word) div16s::return#3 (signed word) div16s::return#1 -Alias (byte) rem8u#33 = (byte) rem8u#44 -Alias (word) rem16u#38 = (word) rem16u#48 (word) rem16u#57 -Alias (signed byte) rem8s#16 = (signed byte) rem8s#27 (signed byte) rem8s#29 (signed byte) rem8s#22 -Alias (signed word) rem16s#21 = (signed word) rem16s#32 (signed word) rem16s#34 (signed word) rem16s#30 (signed word) rem16s#26 -Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#87 -Alias (byte) rem8u#22 = (byte) rem8u#7 (byte) rem8u#34 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#88 -Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 -Alias (word) rem16u#26 = (word) rem16u#9 (word) rem16u#39 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#89 -Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 -Alias (byte) rem8u#23 = (byte) rem8u#8 (byte) rem8u#35 (byte) rem8u#24 (byte) rem8u#9 -Alias (signed byte) rem8s#10 = (signed byte) rem8s#4 (signed byte) rem8s#17 (signed byte) rem8s#11 (signed byte) rem8s#5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#90 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 -Alias (word) rem16u#10 = (word) rem16u#27 (word) rem16u#28 (word) rem16u#11 -Alias (signed word) rem16s#14 = (signed word) rem16s#6 (signed word) rem16s#15 (signed word) rem16s#7 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 (byte*) print_char_cursor#28 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 -Alias (byte) div8u::return#3 = (byte) div8u::return#6 -Alias (byte) test_8u::dividend#0 = (byte) test_8u::dividend#1 -Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#149 -Alias (byte) test_8u::divisor#0 = (byte) test_8u::divisor#3 (byte) test_8u::divisor#2 (byte) test_8u::divisor#1 -Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#74 (byte*) print_line_cursor#78 (byte*) print_line_cursor#70 (byte*) print_line_cursor#66 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57 (byte*) print_line_cursor#52 (byte*) print_line_cursor#46 -Alias (byte) test_8u::i#10 = (byte) test_8u::i#11 (byte) test_8u::i#2 (byte) test_8u::i#9 (byte) test_8u::i#8 (byte) test_8u::i#7 (byte) test_8u::i#6 (byte) test_8u::i#5 (byte) test_8u::i#4 (byte) test_8u::i#3 -Alias (byte) rem8u#10 = (byte) rem8u#25 (byte) rem8u#61 (byte) rem8u#58 (byte) rem8u#53 (byte) rem8u#46 (byte) rem8u#37 (byte) rem8u#26 (byte) rem8u#47 (byte) rem8u#38 (byte) rem8u#27 (byte) rem8u#11 -Alias (byte) test_8u::res#0 = (byte~) test_8u::$0 (byte) test_8u::res#4 (byte) test_8u::res#3 (byte) test_8u::res#2 (byte) test_8u::res#1 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#93 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#94 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#96 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#97 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#98 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#99 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#101 (byte*) print_char_cursor#37 -Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (word) test_16u::dividend#0 = (word) test_16u::dividend#1 -Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#150 -Alias (word) test_16u::divisor#0 = (word) test_16u::divisor#3 (word) test_16u::divisor#2 (word) test_16u::divisor#1 -Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#75 (byte*) print_line_cursor#79 (byte*) print_line_cursor#71 (byte*) print_line_cursor#67 (byte*) print_line_cursor#63 (byte*) print_line_cursor#58 (byte*) print_line_cursor#53 (byte*) print_line_cursor#47 -Alias (byte) test_16u::i#10 = (byte) test_16u::i#11 (byte) test_16u::i#2 (byte) test_16u::i#9 (byte) test_16u::i#8 (byte) test_16u::i#7 (byte) test_16u::i#6 (byte) test_16u::i#5 (byte) test_16u::i#4 (byte) test_16u::i#3 -Alias (word) rem16u#12 = (word) rem16u#29 (word) rem16u#65 (word) rem16u#62 (word) rem16u#58 (word) rem16u#50 (word) rem16u#41 (word) rem16u#30 (word) rem16u#51 (word) rem16u#42 (word) rem16u#31 (word) rem16u#13 -Alias (word) test_16u::res#0 = (word~) test_16u::$0 (word) test_16u::res#4 (word) test_16u::res#3 (word) test_16u::res#2 (word) test_16u::res#1 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#110 (byte*) print_char_cursor#46 -Alias (signed byte) div8s::return#3 = (signed byte) div8s::return#5 -Alias (signed byte) test_8s::dividend#0 = (signed byte) test_8s::dividend#1 -Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#151 -Alias (signed byte) test_8s::divisor#0 = (signed byte) test_8s::divisor#3 (signed byte) test_8s::divisor#2 (signed byte) test_8s::divisor#1 -Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#76 (byte*) print_line_cursor#80 (byte*) print_line_cursor#72 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#59 (byte*) print_line_cursor#54 (byte*) print_line_cursor#48 -Alias (byte) test_8s::i#10 = (byte) test_8s::i#11 (byte) test_8s::i#2 (byte) test_8s::i#9 (byte) test_8s::i#8 (byte) test_8s::i#7 (byte) test_8s::i#6 (byte) test_8s::i#5 (byte) test_8s::i#4 (byte) test_8s::i#3 -Alias (byte) rem8u#12 = (byte) rem8u#28 (byte) rem8u#65 (byte) rem8u#64 (byte) rem8u#63 (byte) rem8u#62 (byte) rem8u#59 (byte) rem8u#54 (byte) rem8u#49 (byte) rem8u#40 (byte) rem8u#29 (byte) rem8u#13 -Alias (signed byte) rem8s#12 = (signed byte) rem8s#6 (signed byte) rem8s#31 (signed byte) rem8s#30 (signed byte) rem8s#28 (signed byte) rem8s#24 (signed byte) rem8s#19 (signed byte) rem8s#13 (signed byte) rem8s#25 (signed byte) rem8s#20 (signed byte) rem8s#14 (signed byte) rem8s#7 -Alias (signed byte) test_8s::res#0 = (signed byte~) test_8s::$0 (signed byte) test_8s::res#4 (signed byte) test_8s::res#3 (signed byte) test_8s::res#2 (signed byte) test_8s::res#1 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#53 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#119 (byte*) print_char_cursor#55 -Alias (signed word) div16s::return#2 = (signed word) div16s::return#4 -Alias (signed word) test_16s::dividend#0 = (signed word) test_16s::dividend#1 -Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#152 -Alias (signed word) test_16s::divisor#0 = (signed word) test_16s::divisor#3 (signed word) test_16s::divisor#2 (signed word) test_16s::divisor#1 -Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#77 (byte*) print_line_cursor#81 (byte*) print_line_cursor#73 (byte*) print_line_cursor#69 (byte*) print_line_cursor#65 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55 (byte*) print_line_cursor#49 -Alias (byte) test_16s::i#10 = (byte) test_16s::i#11 (byte) test_16s::i#2 (byte) test_16s::i#9 (byte) test_16s::i#8 (byte) test_16s::i#7 (byte) test_16s::i#6 (byte) test_16s::i#5 (byte) test_16s::i#4 (byte) test_16s::i#3 -Alias (word) rem16u#14 = (word) rem16u#32 (word) rem16u#69 (word) rem16u#68 (word) rem16u#67 (word) rem16u#66 (word) rem16u#63 (word) rem16u#59 (word) rem16u#53 (word) rem16u#44 (word) rem16u#33 (word) rem16u#15 -Alias (signed word) rem16s#16 = (signed word) rem16s#8 (signed word) rem16s#35 (signed word) rem16s#33 (signed word) rem16s#31 (signed word) rem16s#28 (signed word) rem16s#23 (signed word) rem16s#17 (signed word) rem16s#29 (signed word) rem16s#24 (signed word) rem16s#18 (signed word) rem16s#9 -Alias (signed word) test_16s::res#0 = (signed word~) test_16s::$0 (signed word) test_16s::res#4 (signed word) test_16s::res#3 (signed word) test_16s::res#2 (signed word) test_16s::res#1 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#128 (byte*) print_char_cursor#64 -Alias (signed word) rem16s#0 = (signed word) rem16s#25 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#65 -Alias (byte) rem8u#14 = (byte) rem8u#30 -Alias (word) rem16u#16 = (word) rem16u#34 -Alias (signed byte) rem8s#15 = (signed byte) rem8s#8 -Alias (signed word) rem16s#10 = (signed word) rem16s#19 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#61 print_char_cursor#160 print_screen#8 print_line_cursor#56 print_char_cursor#159 print_screen#7 print_line_cursor#51 print_char_cursor#154 print_screen#6 print_line_cursor#50 print_char_cursor#153 print_screen#5 print_line_cursor#45 print_char_cursor#145 print_screen#4 +Alias print_str::str#13 = print_str::str#14 +Alias print_char_cursor#130 = print_char_cursor#66 print_char_cursor#67 print_char_cursor#2 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#21 print_char_cursor#3 print_line_cursor#22 print_char_cursor#69 print_line_cursor#2 print_char_cursor#4 +Alias print_char_cursor#132 = print_char_cursor#147 print_char_cursor#133 +Alias print_sword::w#10 = print_sword::w#8 print_sword::w#5 print_sword::w#6 print_sword::w#9 +Alias print_char_cursor#5 = print_char_cursor#70 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#6 = print_char_cursor#71 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#7 = print_char_cursor#72 print_char_cursor#73 print_char_cursor#8 +Alias print_char_cursor#135 = print_char_cursor#148 print_char_cursor#136 +Alias print_sbyte::b#10 = print_sbyte::b#8 print_sbyte::b#5 print_sbyte::b#6 print_sbyte::b#9 +Alias print_char_cursor#74 = print_char_cursor#9 +Alias print_sbyte::b#0 = print_sbyte::$5 +Alias print_char_cursor#10 = print_char_cursor#75 +Alias print_byte::b#0 = print_sbyte::$1 +Alias print_char_cursor#11 = print_char_cursor#76 print_char_cursor#77 print_char_cursor#12 +Alias print_byte::b#1 = print_word::$0 +Alias print_word::w#5 = print_word::w#6 +Alias print_char_cursor#13 = print_char_cursor#78 +Alias print_byte::b#2 = print_word::$2 +Alias print_char_cursor#14 = print_char_cursor#79 print_char_cursor#80 print_char_cursor#15 +Alias print_byte::b#7 = print_byte::b#8 +Alias print_char_cursor#16 = print_char_cursor#81 +Alias print_char_cursor#17 = print_char_cursor#82 print_char_cursor#83 print_char_cursor#18 +Alias print_char_cursor#19 = print_char_cursor#85 print_char_cursor#20 +Alias print_line_cursor#23 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#21 print_char_cursor#86 print_line_cursor#4 print_char_cursor#22 +Alias divr8u::return#0 = divr8u::return#3 +Alias rem8u#1 = rem8u#15 rem8u#16 rem8u#2 +Alias div8u::return#0 = div8u::$0 div8u::return#4 div8u::return#1 +Alias divr8u::rem#1 = divr8u::$0 divr8u::rem#6 +Alias divr8u::dividend#1 = divr8u::$5 divr8u::dividend#7 +Alias divr8u::quotient#1 = divr8u::$6 divr8u::quotient#4 +Alias divr8u::dividend#2 = divr8u::dividend#6 +Alias divr8u::quotient#6 = divr8u::quotient#7 +Alias divr8u::divisor#3 = divr8u::divisor#4 +Alias divr8u::i#5 = divr8u::i#6 +Alias divr8u::rem#2 = divr8u::$4 +Alias divr8u::rem#5 = divr8u::rem#7 +Alias divr8u::divisor#1 = divr8u::divisor#2 +Alias divr8u::i#3 = divr8u::i#4 +Alias divr8u::rem#3 = divr8u::$9 +Alias divr8u::rem#10 = divr8u::rem#8 +Alias divr8u::return#1 = divr8u::quotient#5 divr8u::quotient#8 divr8u::return#4 divr8u::return#2 +Alias rem8u#17 = rem8u#3 rem8u#4 +Alias rem8u#0 = rem8u#55 rem8u#52 rem8u#50 rem8u#41 +Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7 +Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8 +Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4 +Alias divr16u::dividend#3 = divr16u::dividend#7 +Alias divr16u::quotient#6 = divr16u::quotient#7 +Alias divr16u::divisor#4 = divr16u::divisor#5 +Alias divr16u::i#5 = divr16u::i#6 +Alias divr16u::rem#1 = divr16u::$5 +Alias divr16u::rem#6 = divr16u::rem#8 +Alias divr16u::divisor#2 = divr16u::divisor#3 +Alias divr16u::i#3 = divr16u::i#4 +Alias divr16u::rem#2 = divr16u::$10 +Alias divr16u::rem#11 = divr16u::rem#9 +Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1 +Alias rem16u#1 = rem16u#17 rem16u#2 +Alias divr16u::return#2 = divr16u::return#5 +Alias rem16u#18 = rem16u#3 rem16u#19 rem16u#4 +Alias div16u::return#0 = div16u::$0 div16u::return#3 div16u::return#1 +Alias rem16u#0 = rem16u#55 rem16u#54 rem16u#45 +Alias div8s::dividend#1 = div8s::dividend#2 div8s::dividend#3 +Alias div8s::divisor#4 = div8s::divisor#6 div8s::divisor#5 +Alias rem8u#56 = rem8u#60 rem8u#57 +Alias div8s::dividendu#1 = div8s::$6 +Alias div8s::neg#0 = div8s::neg#7 +Alias div8s::dividendu#2 = div8s::$4 +Alias div8s::divisor#1 = div8s::divisor#2 div8s::divisor#3 +Alias div8s::neg#3 = div8s::neg#5 div8s::neg#8 +Alias div8s::dividendu#4 = div8s::dividendu#6 div8s::dividendu#5 +Alias rem8u#42 = rem8u#51 rem8u#43 +Alias div8s::divisoru#1 = div8s::$9 +Alias div8s::neg#2 = div8s::$10 +Alias div8s::divisoru#2 = div8s::$7 +Alias div8u::return#2 = div8u::return#5 +Alias div8s::neg#4 = div8s::neg#6 +Alias rem8u#18 = rem8u#5 rem8u#19 rem8u#20 +Alias div8s::resultu#0 = div8s::$2 div8s::resultu#1 div8s::resultu#2 +Alias rem8s#1 = div8s::$15 +Alias div8s::return#0 = div8s::$16 +Alias rem8s#2 = div8s::$12 +Alias div8s::return#1 = div8s::$14 +Alias div8s::return#2 = div8s::return#4 +Alias rem8u#21 = rem8u#6 +Alias rem8s#3 = rem8s#9 +Alias rem8s#0 = rem8s#26 rem8s#21 +Alias divr16s::dividend#1 = divr16s::dividend#2 divr16s::dividend#3 +Alias divr16s::rem#1 = divr16s::rem#2 divr16s::rem#3 +Alias divr16s::divisor#4 = divr16s::divisor#6 divr16s::divisor#5 +Alias rem16u#60 = rem16u#64 rem16u#61 +Alias divr16s::dividendu#1 = divr16s::$9 +Alias divr16s::remu#1 = divr16s::$11 +Alias divr16s::neg#0 = divr16s::neg#7 +Alias divr16s::dividendu#2 = divr16s::$6 +Alias divr16s::remu#2 = divr16s::$7 +Alias divr16s::divisor#1 = divr16s::divisor#2 divr16s::divisor#3 +Alias divr16s::neg#3 = divr16s::neg#5 divr16s::neg#8 +Alias divr16s::dividendu#4 = divr16s::dividendu#6 divr16s::dividendu#5 +Alias divr16s::remu#4 = divr16s::remu#6 divr16s::remu#5 +Alias rem16u#46 = rem16u#56 rem16u#47 +Alias divr16s::divisoru#1 = divr16s::$14 +Alias divr16s::neg#2 = divr16s::$15 +Alias divr16s::divisoru#2 = divr16s::$12 +Alias divr16u::return#3 = divr16u::return#6 +Alias divr16s::neg#4 = divr16s::neg#6 +Alias rem16u#20 = rem16u#5 rem16u#21 rem16u#22 +Alias divr16s::resultu#0 = divr16s::$4 divr16s::resultu#1 divr16s::resultu#2 +Alias rem16s#1 = divr16s::$20 +Alias divr16s::return#0 = divr16s::$21 +Alias rem16s#2 = divr16s::$17 +Alias divr16s::return#1 = divr16s::$19 +Alias divr16s::return#2 = divr16s::return#4 +Alias rem16u#23 = rem16u#6 +Alias rem16s#11 = rem16s#3 +Alias divr16s::return#3 = divr16s::return#5 +Alias rem16u#24 = rem16u#7 rem16u#25 rem16u#8 +Alias rem16s#12 = rem16s#4 rem16s#13 rem16s#5 +Alias div16s::return#0 = div16s::$0 div16s::return#3 div16s::return#1 +Alias rem8u#33 = rem8u#44 +Alias rem16u#38 = rem16u#48 rem16u#57 +Alias rem8s#16 = rem8s#27 rem8s#29 rem8s#22 +Alias rem16s#21 = rem16s#32 rem16s#34 rem16s#30 rem16s#26 +Alias print_line_cursor#24 = print_line_cursor#5 +Alias print_char_cursor#23 = print_char_cursor#87 +Alias rem8u#22 = rem8u#7 rem8u#34 +Alias print_char_cursor#24 = print_char_cursor#88 +Alias print_line_cursor#25 = print_line_cursor#6 +Alias rem16u#26 = rem16u#9 rem16u#39 +Alias print_char_cursor#25 = print_char_cursor#89 +Alias print_line_cursor#26 = print_line_cursor#7 +Alias rem8u#23 = rem8u#8 rem8u#35 rem8u#24 rem8u#9 +Alias rem8s#10 = rem8s#4 rem8s#17 rem8s#11 rem8s#5 +Alias print_char_cursor#26 = print_char_cursor#90 +Alias print_line_cursor#27 = print_line_cursor#8 +Alias rem16u#10 = rem16u#27 rem16u#28 rem16u#11 +Alias rem16s#14 = rem16s#6 rem16s#15 rem16s#7 +Alias print_char_cursor#27 = print_char_cursor#91 print_char_cursor#92 print_char_cursor#28 +Alias print_line_cursor#10 = print_line_cursor#9 print_line_cursor#28 print_line_cursor#29 +Alias div8u::return#3 = div8u::return#6 +Alias test_8u::dividend#0 = test_8u::dividend#1 +Alias print_char_cursor#141 = print_char_cursor#149 +Alias test_8u::divisor#0 = test_8u::divisor#3 test_8u::divisor#2 test_8u::divisor#1 +Alias print_line_cursor#41 = print_line_cursor#74 print_line_cursor#78 print_line_cursor#70 print_line_cursor#66 print_line_cursor#62 print_line_cursor#57 print_line_cursor#52 print_line_cursor#46 +Alias test_8u::i#10 = test_8u::i#11 test_8u::i#2 test_8u::i#9 test_8u::i#8 test_8u::i#7 test_8u::i#6 test_8u::i#5 test_8u::i#4 test_8u::i#3 +Alias rem8u#10 = rem8u#25 rem8u#61 rem8u#58 rem8u#53 rem8u#46 rem8u#37 rem8u#26 rem8u#47 rem8u#38 rem8u#27 rem8u#11 +Alias test_8u::res#0 = test_8u::$0 test_8u::res#4 test_8u::res#3 test_8u::res#2 test_8u::res#1 +Alias print_char_cursor#29 = print_char_cursor#93 +Alias print_char_cursor#30 = print_char_cursor#94 +Alias print_char_cursor#31 = print_char_cursor#95 +Alias print_char_cursor#32 = print_char_cursor#96 +Alias print_char_cursor#33 = print_char_cursor#97 +Alias print_char_cursor#34 = print_char_cursor#98 +Alias print_char_cursor#35 = print_char_cursor#99 +Alias print_line_cursor#11 = print_line_cursor#30 print_line_cursor#31 print_line_cursor#12 +Alias print_char_cursor#100 = print_char_cursor#36 print_char_cursor#101 print_char_cursor#37 +Alias div16u::return#2 = div16u::return#4 +Alias test_16u::dividend#0 = test_16u::dividend#1 +Alias print_char_cursor#142 = print_char_cursor#150 +Alias test_16u::divisor#0 = test_16u::divisor#3 test_16u::divisor#2 test_16u::divisor#1 +Alias print_line_cursor#42 = print_line_cursor#75 print_line_cursor#79 print_line_cursor#71 print_line_cursor#67 print_line_cursor#63 print_line_cursor#58 print_line_cursor#53 print_line_cursor#47 +Alias test_16u::i#10 = test_16u::i#11 test_16u::i#2 test_16u::i#9 test_16u::i#8 test_16u::i#7 test_16u::i#6 test_16u::i#5 test_16u::i#4 test_16u::i#3 +Alias rem16u#12 = rem16u#29 rem16u#65 rem16u#62 rem16u#58 rem16u#50 rem16u#41 rem16u#30 rem16u#51 rem16u#42 rem16u#31 rem16u#13 +Alias test_16u::res#0 = test_16u::$0 test_16u::res#4 test_16u::res#3 test_16u::res#2 test_16u::res#1 +Alias print_char_cursor#102 = print_char_cursor#38 +Alias print_char_cursor#103 = print_char_cursor#39 +Alias print_char_cursor#104 = print_char_cursor#40 +Alias print_char_cursor#105 = print_char_cursor#41 +Alias print_char_cursor#106 = print_char_cursor#42 +Alias print_char_cursor#107 = print_char_cursor#43 +Alias print_char_cursor#108 = print_char_cursor#44 +Alias print_line_cursor#13 = print_line_cursor#32 print_line_cursor#33 print_line_cursor#14 +Alias print_char_cursor#109 = print_char_cursor#45 print_char_cursor#110 print_char_cursor#46 +Alias div8s::return#3 = div8s::return#5 +Alias test_8s::dividend#0 = test_8s::dividend#1 +Alias print_char_cursor#143 = print_char_cursor#151 +Alias test_8s::divisor#0 = test_8s::divisor#3 test_8s::divisor#2 test_8s::divisor#1 +Alias print_line_cursor#43 = print_line_cursor#76 print_line_cursor#80 print_line_cursor#72 print_line_cursor#68 print_line_cursor#64 print_line_cursor#59 print_line_cursor#54 print_line_cursor#48 +Alias test_8s::i#10 = test_8s::i#11 test_8s::i#2 test_8s::i#9 test_8s::i#8 test_8s::i#7 test_8s::i#6 test_8s::i#5 test_8s::i#4 test_8s::i#3 +Alias rem8u#12 = rem8u#28 rem8u#65 rem8u#64 rem8u#63 rem8u#62 rem8u#59 rem8u#54 rem8u#49 rem8u#40 rem8u#29 rem8u#13 +Alias rem8s#12 = rem8s#6 rem8s#31 rem8s#30 rem8s#28 rem8s#24 rem8s#19 rem8s#13 rem8s#25 rem8s#20 rem8s#14 rem8s#7 +Alias test_8s::res#0 = test_8s::$0 test_8s::res#4 test_8s::res#3 test_8s::res#2 test_8s::res#1 +Alias print_char_cursor#111 = print_char_cursor#47 +Alias print_char_cursor#112 = print_char_cursor#48 +Alias print_char_cursor#113 = print_char_cursor#49 +Alias print_char_cursor#114 = print_char_cursor#50 +Alias print_char_cursor#115 = print_char_cursor#51 +Alias print_char_cursor#116 = print_char_cursor#52 +Alias print_char_cursor#117 = print_char_cursor#53 +Alias print_line_cursor#15 = print_line_cursor#34 print_line_cursor#35 print_line_cursor#16 +Alias print_char_cursor#118 = print_char_cursor#54 print_char_cursor#119 print_char_cursor#55 +Alias div16s::return#2 = div16s::return#4 +Alias test_16s::dividend#0 = test_16s::dividend#1 +Alias print_char_cursor#144 = print_char_cursor#152 +Alias test_16s::divisor#0 = test_16s::divisor#3 test_16s::divisor#2 test_16s::divisor#1 +Alias print_line_cursor#44 = print_line_cursor#77 print_line_cursor#81 print_line_cursor#73 print_line_cursor#69 print_line_cursor#65 print_line_cursor#60 print_line_cursor#55 print_line_cursor#49 +Alias test_16s::i#10 = test_16s::i#11 test_16s::i#2 test_16s::i#9 test_16s::i#8 test_16s::i#7 test_16s::i#6 test_16s::i#5 test_16s::i#4 test_16s::i#3 +Alias rem16u#14 = rem16u#32 rem16u#69 rem16u#68 rem16u#67 rem16u#66 rem16u#63 rem16u#59 rem16u#53 rem16u#44 rem16u#33 rem16u#15 +Alias rem16s#16 = rem16s#8 rem16s#35 rem16s#33 rem16s#31 rem16s#28 rem16s#23 rem16s#17 rem16s#29 rem16s#24 rem16s#18 rem16s#9 +Alias test_16s::res#0 = test_16s::$0 test_16s::res#4 test_16s::res#3 test_16s::res#2 test_16s::res#1 +Alias print_char_cursor#120 = print_char_cursor#56 +Alias print_char_cursor#121 = print_char_cursor#57 +Alias print_char_cursor#122 = print_char_cursor#58 +Alias print_char_cursor#123 = print_char_cursor#59 +Alias print_char_cursor#124 = print_char_cursor#60 +Alias print_char_cursor#125 = print_char_cursor#61 +Alias print_char_cursor#126 = print_char_cursor#62 +Alias print_line_cursor#17 = print_line_cursor#36 print_line_cursor#37 print_line_cursor#18 +Alias print_char_cursor#127 = print_char_cursor#63 print_char_cursor#128 print_char_cursor#64 +Alias rem16s#0 = rem16s#25 +Alias print_line_cursor#19 = print_line_cursor#38 +Alias print_char_cursor#129 = print_char_cursor#65 +Alias rem8u#14 = rem8u#30 +Alias rem16u#16 = rem16u#34 +Alias rem8s#15 = rem8s#8 +Alias rem16s#10 = rem16s#19 Successful SSA optimization Pass2AliasElimination -Alias (byte) divr8u::dividend#2 = (byte) divr8u::dividend#3 -Alias (byte) divr8u::quotient#3 = (byte) divr8u::quotient#6 -Alias (byte) divr8u::divisor#1 = (byte) divr8u::divisor#3 (byte) divr8u::divisor#6 -Alias (byte) divr8u::i#2 = (byte) divr8u::i#3 (byte) divr8u::i#5 -Alias (byte) divr8u::dividend#1 = (byte) divr8u::dividend#5 -Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 -Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 -Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 -Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 -Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 -Alias (signed byte) div8s::divisor#1 = (signed byte) div8s::divisor#4 -Alias (byte) rem8u#32 = (byte) rem8u#42 (byte) rem8u#56 -Alias (byte) div8s::dividendu#3 = (byte) div8s::dividendu#4 -Alias (byte) rem8u#18 = (byte) rem8u#21 -Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4 -Alias (word) rem16u#36 = (word) rem16u#46 (word) rem16u#60 -Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 -Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 -Alias (word) rem16u#20 = (word) rem16u#23 +Alias divr8u::dividend#2 = divr8u::dividend#3 +Alias divr8u::quotient#3 = divr8u::quotient#6 +Alias divr8u::divisor#1 = divr8u::divisor#3 divr8u::divisor#6 +Alias divr8u::i#2 = divr8u::i#3 divr8u::i#5 +Alias divr8u::dividend#1 = divr8u::dividend#5 +Alias divr16u::dividend#3 = divr16u::dividend#4 +Alias divr16u::quotient#3 = divr16u::quotient#6 +Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7 +Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5 +Alias divr16u::dividend#0 = divr16u::dividend#6 +Alias div8s::divisor#1 = div8s::divisor#4 +Alias rem8u#32 = rem8u#42 rem8u#56 +Alias div8s::dividendu#3 = div8s::dividendu#4 +Alias rem8u#18 = rem8u#21 +Alias divr16s::divisor#1 = divr16s::divisor#4 +Alias rem16u#36 = rem16u#46 rem16u#60 +Alias divr16s::dividendu#3 = divr16s::dividendu#4 +Alias divr16s::remu#3 = divr16s::remu#4 +Alias rem16u#20 = rem16u#23 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -3396,8 +3396,8 @@ Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) 6 Finalized unsigned number type (byte) 6 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) test_16u::$11 = (byte~) test_16u::$10 -Alias (byte~) test_16s::$11 = (byte~) test_16s::$10 +Alias test_16u::$11 = test_16u::$10 +Alias test_16s::$11 = test_16s::$10 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) divr16s::$0 [130] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 Simple Condition (bool~) divr16s::$1 [265] if((const signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 @@ -4471,279 +4471,279 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor) (signed word) div16s::dividend -(signed word) div16s::dividend#0 6.5 +(signed word) div16s::dividend#0 5501.0 (signed word) div16s::divisor -(signed word) div16s::divisor#0 6.5 +(signed word) div16s::divisor#0 5501.0 (signed word) div16s::return -(signed word) div16s::return#0 4.333333333333333 -(signed word) div16s::return#2 22.0 +(signed word) div16s::return#0 3667.333333333333 +(signed word) div16s::return#2 2002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word) div16u::dividend -(word) div16u::dividend#0 6.5 +(word) div16u::dividend#0 5501.0 (word) div16u::divisor -(word) div16u::divisor#0 6.5 +(word) div16u::divisor#0 5501.0 (word) div16u::return -(word) div16u::return#0 4.333333333333333 -(word) div16u::return#2 22.0 +(word) div16u::return#0 3667.333333333333 +(word) div16u::return#2 2002.0 (signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) -(signed byte~) div8s::$11 4.0 +(signed byte~) div8s::$11 20002.0 (signed byte) div8s::dividend -(signed byte) div8s::dividend#0 5.0 +(signed byte) div8s::dividend#0 7001.0 (byte) div8s::dividendu -(signed byte) div8s::dividendu#1 2.0 -(byte) div8s::dividendu#3 0.8571428571428571 -(byte) div8s::dividendu#7 4.0 -(byte) div8s::dividendu#8 4.0 +(signed byte) div8s::dividendu#1 10001.0 +(byte) div8s::dividendu#3 4286.142857142857 +(byte) div8s::dividendu#7 20002.0 +(byte) div8s::dividendu#8 20002.0 (signed byte) div8s::divisor -(signed byte) div8s::divisor#0 2.142857142857143 +(signed byte) div8s::divisor#0 3000.4285714285716 (byte) div8s::divisoru -(signed byte) div8s::divisoru#1 1.0 -(byte) div8s::divisoru#3 3.0 -(byte) div8s::divisoru#4 4.0 -(byte) div8s::divisoru#5 4.0 +(signed byte) div8s::divisoru#1 5000.5 +(byte) div8s::divisoru#3 15001.5 +(byte) div8s::divisoru#4 20002.0 +(byte) div8s::divisoru#5 20002.0 (byte) div8s::neg -(byte) div8s::neg#2 2.0 -(byte) div8s::neg#3 1.0 -(byte) div8s::neg#4 1.0 +(byte) div8s::neg#2 10001.0 +(byte) div8s::neg#3 5000.5 +(byte) div8s::neg#4 5000.5 (byte) div8s::resultu -(byte) div8s::resultu#0 0.5 +(byte) div8s::resultu#0 2500.25 (signed byte) div8s::return -(signed byte) div8s::return#1 4.0 -(signed byte) div8s::return#2 5.0 -(signed byte) div8s::return#3 22.0 -(signed byte) div8s::return#7 2.0 +(signed byte) div8s::return#1 20002.0 +(signed byte) div8s::return#2 7001.0 +(signed byte) div8s::return#3 2002.0 +(signed byte) div8s::return#7 10001.0 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) (byte) div8u::dividend -(byte) div8u::dividend#0 2.0 -(byte) div8u::dividend#1 11.0 -(byte) div8u::dividend#2 15.0 +(byte) div8u::dividend#0 10001.0 +(byte) div8u::dividend#1 1001.0 +(byte) div8u::dividend#2 111003.0 (byte) div8u::divisor -(byte) div8u::divisor#0 4.0 -(byte) div8u::divisor#1 22.0 -(byte) div8u::divisor#2 7.5 +(byte) div8u::divisor#0 20002.0 +(byte) div8u::divisor#1 2002.0 +(byte) div8u::divisor#2 55501.5 (byte) div8u::return -(byte) div8u::return#0 3.75 -(byte) div8u::return#2 4.0 -(byte) div8u::return#3 22.0 +(byte) div8u::return#0 27750.75 +(byte) div8u::return#2 20002.0 +(byte) div8u::return#3 2002.0 (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(signed word~) divr16s::$16 4.0 +(signed word~) divr16s::$16 200002.0 (signed word) divr16s::dividend -(signed word) divr16s::dividend#0 2.0 +(signed word) divr16s::dividend#0 70001.0 (word) divr16s::dividendu -(signed word) divr16s::dividendu#1 2.0 -(word) divr16s::dividendu#3 0.8571428571428571 -(word) divr16s::dividendu#7 4.0 -(word) divr16s::dividendu#8 4.0 +(signed word) divr16s::dividendu#1 100001.0 +(word) divr16s::dividendu#3 42857.57142857143 +(word) divr16s::dividendu#7 200002.0 +(word) divr16s::dividendu#8 200002.0 (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 0.8571428571428571 +(signed word) divr16s::divisor#0 30000.428571428572 (word) divr16s::divisoru -(signed word) divr16s::divisoru#1 1.0 -(word) divr16s::divisoru#3 3.0 -(word) divr16s::divisoru#4 4.0 -(word) divr16s::divisoru#5 4.0 +(signed word) divr16s::divisoru#1 50000.5 +(word) divr16s::divisoru#3 150001.5 +(word) divr16s::divisoru#4 200002.0 +(word) divr16s::divisoru#5 200002.0 (byte) divr16s::neg -(byte) divr16s::neg#2 2.0 -(byte) divr16s::neg#3 1.0 -(byte) divr16s::neg#4 1.0 +(byte) divr16s::neg#2 100001.0 +(byte) divr16s::neg#3 50000.5 +(byte) divr16s::neg#4 50000.5 (signed word) divr16s::rem (word) divr16s::remu (word) divr16s::resultu -(word) divr16s::resultu#0 0.5 +(word) divr16s::resultu#0 25000.25 (signed word) divr16s::return -(signed word) divr16s::return#1 4.0 -(signed word) divr16s::return#2 2.0 -(signed word) divr16s::return#3 4.0 -(signed word) divr16s::return#7 2.0 +(signed word) divr16s::return#1 200002.0 +(signed word) divr16s::return#2 70001.0 +(signed word) divr16s::return#3 20002.0 +(signed word) divr16s::return#7 100001.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 202.0 -(byte~) divr16u::$2 202.0 +(byte~) divr16u::$1 2.00000002E8 +(byte~) divr16u::$2 2.00000002E8 (word) divr16u::dividend -(word) divr16u::dividend#0 25.25 -(word) divr16u::dividend#1 2.0 -(word) divr16u::dividend#2 2.0 -(word) divr16u::dividend#3 43.57142857142858 -(word) divr16u::dividend#5 6.0 +(word) divr16u::dividend#0 2.500000025E7 +(word) divr16u::dividend#1 10001.0 +(word) divr16u::dividend#2 100001.0 +(word) divr16u::dividend#3 4.300000057142857E7 +(word) divr16u::dividend#5 1110003.0 (word) divr16u::divisor -(word) divr16u::divisor#0 4.0 -(word) divr16u::divisor#1 4.0 -(word) divr16u::divisor#6 12.875 +(word) divr16u::divisor#0 20002.0 +(word) divr16u::divisor#1 200002.0 +(word) divr16u::divisor#6 1.250687525E7 (byte) divr16u::i -(byte) divr16u::i#1 151.5 -(byte) divr16u::i#2 15.538461538461538 +(byte) divr16u::i#1 1.500000015E8 +(byte) divr16u::i#2 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 151.5 -(word) divr16u::quotient#2 101.0 -(word) divr16u::quotient#3 25.25 +(word) divr16u::quotient#1 1.500000015E8 +(word) divr16u::quotient#2 1.00000001E8 +(word) divr16u::quotient#3 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 75.75 -(word) divr16u::rem#1 202.0 -(word) divr16u::rem#11 101.66666666666667 -(word) divr16u::rem#2 202.0 -(word) divr16u::rem#5 202.0 -(word) divr16u::rem#6 101.0 +(word) divr16u::rem#0 7.500000075E7 +(word) divr16u::rem#1 2.00000002E8 +(word) divr16u::rem#11 1.0033333466666667E8 +(word) divr16u::rem#2 2.00000002E8 +(word) divr16u::rem#5 2.00000002E8 +(word) divr16u::rem#6 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 43.85714285714286 -(word) divr16u::return#2 4.0 -(word) divr16u::return#3 4.0 +(word) divr16u::return#0 4.2872857857142866E7 +(word) divr16u::return#2 20002.0 +(word) divr16u::return#3 200002.0 (byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) -(byte~) divr8u::$1 202.0 +(byte~) divr8u::$1 2.00000002E8 (byte) divr8u::dividend -(byte) divr8u::dividend#0 1.3333333333333333 -(byte) divr8u::dividend#1 25.25 -(byte) divr8u::dividend#2 50.83333333333333 +(byte) divr8u::dividend#0 366667.3333333334 +(byte) divr8u::dividend#1 2.500000025E7 +(byte) divr8u::dividend#2 5.0166667333333336E7 (byte) divr8u::divisor -(byte) divr8u::divisor#0 12.75 +(byte) divr8u::divisor#0 1.25062501875E7 (byte) divr8u::i -(byte) divr8u::i#1 151.5 -(byte) divr8u::i#2 16.833333333333332 +(byte) divr8u::i#1 1.500000015E8 +(byte) divr8u::i#2 1.6666666833333334E7 (byte) divr8u::quotient -(byte) divr8u::quotient#1 151.5 -(byte) divr8u::quotient#2 101.0 -(byte) divr8u::quotient#3 28.857142857142858 +(byte) divr8u::quotient#1 1.500000015E8 +(byte) divr8u::quotient#2 1.00000001E8 +(byte) divr8u::quotient#3 2.857142885714286E7 (byte) divr8u::rem -(byte) divr8u::rem#1 101.0 -(byte) divr8u::rem#10 101.66666666666667 -(byte) divr8u::rem#2 202.0 -(byte) divr8u::rem#3 202.0 -(byte) divr8u::rem#4 202.0 -(byte) divr8u::rem#5 101.0 +(byte) divr8u::rem#1 1.00000001E8 +(byte) divr8u::rem#10 1.0033333466666667E8 +(byte) divr8u::rem#2 2.00000002E8 +(byte) divr8u::rem#3 2.00000002E8 +(byte) divr8u::rem#4 2.00000002E8 +(byte) divr8u::rem#5 1.00000001E8 (byte) divr8u::return -(byte) divr8u::return#0 4.0 -(byte) divr8u::return#1 50.83333333333333 +(byte) divr8u::return#0 200002.0 +(byte) divr8u::return#1 5.0016667333333336E7 (void()) main() (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 2000002.0 +(byte~) print_byte::$2 2000002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 4.0 -(byte) print_byte::b#3 22.0 -(byte) print_byte::b#4 22.0 -(byte) print_byte::b#5 22.0 -(byte) print_byte::b#6 22.0 -(byte) print_byte::b#7 13.5 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 200002.0 +(byte) print_byte::b#2 200002.0 +(byte) print_byte::b#3 2002.0 +(byte) print_byte::b#4 2002.0 +(byte) print_byte::b#5 2002.0 +(byte) print_byte::b#6 2002.0 +(byte) print_byte::b#7 553502.25 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 4.0 -(byte) print_char::ch#6 6.0 +(byte) print_char::ch#4 2000002.0 +(byte) print_char::ch#5 2000002.0 +(byte) print_char::ch#6 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#130 15.607142857142856 -(byte*) print_char_cursor#132 12.0 -(byte*) print_char_cursor#135 12.0 -(byte*) print_char_cursor#138 24.0 -(byte*) print_char_cursor#139 17.333333333333332 -(byte*) print_char_cursor#141 2.4444444444444446 -(byte*) print_char_cursor#163 22.0 -(byte*) print_char_cursor#167 22.0 -(byte*) print_char_cursor#172 22.0 -(byte*) print_char_cursor#189 22.0 -(byte*) print_char_cursor#19 1.8225806451612903 -(byte*) print_char_cursor#84 8.0 +(byte*) print_char_cursor#1 1000001.0 +(byte*) print_char_cursor#130 107929.14285714284 +(byte*) print_char_cursor#132 6001.5 +(byte*) print_char_cursor#135 6001.5 +(byte*) print_char_cursor#138 57003.0 +(byte*) print_char_cursor#139 404669.3333333335 +(byte*) print_char_cursor#141 222.44444444444446 +(byte*) print_char_cursor#163 2002.0 +(byte*) print_char_cursor#167 2002.0 +(byte*) print_char_cursor#172 2002.0 +(byte*) print_char_cursor#189 2002.0 +(byte*) print_char_cursor#19 195645.2741935484 +(byte*) print_char_cursor#84 1.1020004E7 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 3.833333333333334 -(byte*) print_line_cursor#20 204.0 -(byte*) print_line_cursor#39 46.0 -(byte*) print_line_cursor#41 0.9565217391304348 +(byte*) print_line_cursor#1 29490.30392156863 +(byte*) print_line_cursor#20 2010003.0 +(byte*) print_line_cursor#39 14005.0 +(byte*) print_line_cursor#41 87.04347826086956 (void()) print_ln() (void()) print_sbyte((signed byte) print_sbyte::b) (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 4.0 -(signed byte) print_sbyte::b#1 11.0 -(signed byte) print_sbyte::b#10 8.333333333333332 -(signed byte) print_sbyte::b#2 22.0 -(signed byte) print_sbyte::b#3 22.0 -(signed byte) print_sbyte::b#4 22.0 -(signed byte) print_sbyte::b#7 4.0 +(signed byte) print_sbyte::b#0 20002.0 +(signed byte) print_sbyte::b#1 1001.0 +(signed byte) print_sbyte::b#10 5667.833333333333 +(signed byte) print_sbyte::b#2 2002.0 +(signed byte) print_sbyte::b#3 2002.0 +(signed byte) print_sbyte::b#4 2002.0 +(signed byte) print_sbyte::b#7 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 202.0 -(byte*) print_str::str#13 101.5 -(byte*) print_str::str#15 2.0 +(byte*) print_str::str#0 2000002.0 +(byte*) print_str::str#13 1002501.25 +(byte*) print_str::str#15 10001.0 (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 11.0 -(signed word) print_sword::w#10 8.333333333333332 -(signed word) print_sword::w#2 22.0 -(signed word) print_sword::w#3 22.0 -(signed word) print_sword::w#4 22.0 -(signed word) print_sword::w#7 4.0 +(signed word) print_sword::w#0 20002.0 +(signed word) print_sword::w#1 1001.0 +(signed word) print_sword::w#10 5667.833333333333 +(signed word) print_sword::w#2 2002.0 +(signed word) print_sword::w#3 2002.0 +(signed word) print_sword::w#4 2002.0 +(signed word) print_sword::w#7 20002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 11.0 -(word) print_word::w#2 22.0 -(word) print_word::w#3 22.0 -(word) print_word::w#4 22.0 -(word) print_word::w#5 16.666666666666664 +(word) print_word::w#0 20002.0 +(word) print_word::w#1 1001.0 +(word) print_word::w#2 2002.0 +(word) print_word::w#3 2002.0 +(word) print_word::w#4 2002.0 +(word) print_word::w#5 71335.66666666666 (signed word) rem16s -(signed word) rem16s#11 0.6818181818181819 -(signed word) rem16s#2 2.0 -(signed word) rem16s#37 4.0 +(signed word) rem16s#11 9136.5 +(signed word) rem16s#2 100001.0 +(signed word) rem16s#37 200002.0 (word) rem16u -(word) rem16u#1 0.48148148148148145 +(word) rem16u#1 37074.148148148146 (signed byte) rem8s -(signed byte) rem8s#2 2.0 -(signed byte) rem8s#3 0.8333333333333335 -(signed byte) rem8s#33 4.0 +(signed byte) rem8s#2 10001.0 +(signed byte) rem8s#3 1166.8333333333333 +(signed byte) rem8s#33 20002.0 (byte) rem8u -(byte) rem8u#17 0.5 +(byte) rem8u#17 38500.07692307692 (void()) test_16s() -(byte~) test_16s::$11 16.5 +(byte~) test_16s::$11 1501.5 (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 4.714285714285714 +(signed word) test_16s::dividend#0 429.0 (signed word) test_16s::divisor -(signed word) test_16s::divisor#0 3.0 +(signed word) test_16s::divisor#0 273.0 (byte) test_16s::i -(byte) test_16s::i#1 16.5 -(byte) test_16s::i#10 1.2692307692307692 +(byte) test_16s::i#1 1501.5 +(byte) test_16s::i#10 115.5 (signed word) test_16s::res -(signed word) test_16s::res#0 2.2 +(signed word) test_16s::res#0 200.2 (void()) test_16u() -(byte~) test_16u::$11 16.5 +(byte~) test_16u::$11 1501.5 (word) test_16u::dividend -(word) test_16u::dividend#0 4.714285714285714 +(word) test_16u::dividend#0 429.0 (word) test_16u::divisor -(word) test_16u::divisor#0 3.0 +(word) test_16u::divisor#0 273.0 (byte) test_16u::i -(byte) test_16u::i#1 16.5 -(byte) test_16u::i#10 1.2692307692307692 +(byte) test_16u::i#1 1501.5 +(byte) test_16u::i#10 115.5 (word) test_16u::res -(word) test_16u::res#0 2.2 +(word) test_16u::res#0 200.2 (void()) test_8s() (signed byte) test_8s::dividend -(signed byte) test_8s::dividend#0 4.714285714285714 +(signed byte) test_8s::dividend#0 429.0 (signed byte) test_8s::divisor -(signed byte) test_8s::divisor#0 3.0 +(signed byte) test_8s::divisor#0 273.0 (byte) test_8s::i -(byte) test_8s::i#1 16.5 -(byte) test_8s::i#10 1.76 +(byte) test_8s::i#1 1501.5 +(byte) test_8s::i#10 160.16 (signed byte) test_8s::res -(signed byte) test_8s::res#0 2.2 +(signed byte) test_8s::res#0 200.2 (void()) test_8u() (byte) test_8u::dividend -(byte) test_8u::dividend#0 4.714285714285714 +(byte) test_8u::dividend#0 429.0 (byte) test_8u::divisor -(byte) test_8u::divisor#0 3.3000000000000003 +(byte) test_8u::divisor#0 300.29999999999995 (byte) test_8u::i -(byte) test_8u::i#1 11.0 -(byte) test_8u::i#10 1.8333333333333333 +(byte) test_8u::i#1 1001.0 +(byte) test_8u::i#10 166.83333333333334 (byte) test_8u::res -(byte) test_8u::res#0 2.4444444444444446 +(byte) test_8u::res#0 222.44444444444446 Initial phi equivalence classes [ test_16s::i#10 test_16s::i#1 ] @@ -6874,29 +6874,29 @@ memset: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] -Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:50 [ test_16s::$11 ] -Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a -Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Removing always clobbered register reg byte y as potential for zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] @@ -6909,9 +6909,7 @@ Removing always clobbered register reg byte y as potential for zp[1]:47 [ test_8 Removing always clobbered register reg byte y as potential for zp[1]:121 [ test_8u::divisor#0 ] Removing always clobbered register reg byte y as potential for zp[1]:123 [ test_8u::res#0 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a -Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Removing always clobbered register reg byte a as potential for zp[1]:88 [ test_8s::divisor#0 ] Removing always clobbered register reg byte a as potential for zp[1]:92 [ test_8s::res#0 ] @@ -6919,240 +6917,233 @@ Removing always clobbered register reg byte a as potential for zp[1]:39 [ rem8s# Removing always clobbered register reg byte a as potential for zp[1]:102 [ rem8u#17 ] Removing always clobbered register reg byte a as potential for zp[1]:121 [ test_8u::divisor#0 ] Removing always clobbered register reg byte a as potential for zp[1]:123 [ test_8u::res#0 ] -Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } ) always clobbers reg byte a +Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:32 [ divr16u::i#2 divr16u::i#1 ] -Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } } ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:87 [ test_8s::dividend#0 ] Removing always clobbered register reg byte a as potential for zp[1]:94 [ div8s::resultu#0 ] -Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:96 [ div8s::divisoru#1 ] -Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:90 [ div8s::divisor#0 ] -Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:98 [ divr8u::divisor#0 ] Removing always clobbered register reg byte a as potential for zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Removing always clobbered register reg byte a as potential for zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] Removing always clobbered register reg byte a as potential for zp[1]:45 [ divr8u::i#2 divr8u::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:120 [ test_8u::dividend#0 ] -Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:103 [ test_16u::$11 ] -Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ) always clobbers reg byte a -Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a -Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y -Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a -Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a -Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a -Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a -Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a -Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] { } ) always clobbers reg byte a +Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } ) always clobbers reg byte y +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } ) always clobbers reg byte a +Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } } ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:42 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] -Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ) always clobbers reg byte a -Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a -Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y -Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a -Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a -Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a -Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a -Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a -Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a -Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ) always clobbers reg byte a -Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] { } ) always clobbers reg byte a +Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word*) test_16s::dividends + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word*) test_16s::divisors + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [20] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [26] (byte*) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#163 print_line_cursor#1 rem16s#11 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#1 = print_line_cursor#39 } } main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] { { print_line_cursor#39 = print_line_cursor#41 } } ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } } main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } } main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } } ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 print_char_cursor#84 } } main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 print_char_cursor#84 } } ) always clobbers reg byte y +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 print_char_cursor#84 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 print_char_cursor#139 } { print_byte::b#1 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#10 test_16s::dividend#0 } { print_char_cursor#132 = print_char_cursor#163 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#2 test_16s::divisor#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#3 test_16s::res#0 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { print_sword::w#10 = print_sword::w#4 rem16s#11 } { print_char_cursor#130 = print_char_cursor#132 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#138 = print_char_cursor#19 print_char_cursor#139 print_char_cursor#84 } { print_byte::b#2 = print_byte::b#7 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } { print_byte::b#2 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } { print_byte::b#0 = print_byte::b#7 } { print_char_cursor#139 = print_char_cursor#19 print_char_cursor#84 } { print_char::ch#5 = print_char::ch#6 } } main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#7 test_8u::dividend#0 } { print_char_cursor#139 = print_char_cursor#141 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#7 test_8u::divisor#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#7 test_8u::res#0 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] { { print_byte::b#6 = print_byte::b#7 rem8u#17 } { print_char_cursor#130 = print_char_cursor#139 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#84 } } ) always clobbers reg byte a +Statement [81] if((byte) 0!=*((byte*) print_str::str#13)) goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] { } main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] { } ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] { { div16s::dividend#0 = test_16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 } { div16s::return#0 = div16s::return#2 } } ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [93] (word) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [96] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [109] (signed word) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [110] (signed word) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [115] (word) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] { { div16s::dividend#0 = test_16s::dividend#0 divr16s::dividend#0 } { div16s::divisor#0 = test_16s::divisor#0 divr16s::divisor#0 } { div16s::return#0 = div16s::return#2 } { divr16s::return#2 = divr16s::return#3 } { divr16u::dividend#2 = divr16u::dividend#5 divr16s::dividendu#3 } { divr16u::divisor#1 = divr16u::divisor#6 divr16s::divisoru#3 } { divr16u::return#0 = divr16u::return#3 } } main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [144] (byte*) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#1 = print_sbyte::b#10 test_8s::dividend#0 } { print_char_cursor#135 = print_char_cursor#167 } } main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#2 test_8s::divisor#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#3 test_8s::res#0 } { print_char_cursor#130 = print_char_cursor#135 } } main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] { { print_sbyte::b#10 = print_sbyte::b#4 rem8s#3 } { print_char_cursor#130 = print_char_cursor#135 } } ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } } ) always clobbers reg byte a +Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8s::dividend#0 = test_8s::dividend#0 } { div8s::divisor#0 = test_8s::divisor#0 } { div8s::return#2 = div8s::return#3 } { div8u::dividend#0 = div8u::dividend#2 div8s::dividendu#3 divr8u::dividend#0 } { div8u::divisor#0 = div8u::divisor#2 div8s::divisoru#3 divr8u::divisor#0 } { div8u::return#0 = div8u::return#2 } { divr8u::return#0 = divr8u::return#1 } } main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] { { div8u::dividend#1 = div8u::dividend#2 test_8u::dividend#0 divr8u::dividend#0 } { div8u::divisor#1 = div8u::divisor#2 test_8u::divisor#0 divr8u::divisor#0 } { div8u::return#0 = div8u::return#3 } { divr8u::return#0 = divr8u::return#1 } } ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word*) test_16u::dividends + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word*) test_16u::divisors + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [233] (byte*) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] { { print_word::w#1 = print_word::w#5 test_16u::dividend#0 } { print_char_cursor#138 = print_char_cursor#172 } } ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] { { print_word::w#2 = print_word::w#5 test_16u::divisor#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] { { print_word::w#3 = print_word::w#5 test_16u::res#0 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] { { print_word::w#4 = print_word::w#5 rem16u#1 } { print_char_cursor#130 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] { { div16u::return#0 = div16u::return#2 } { divr16u::dividend#1 = divr16u::dividend#5 div16u::dividend#0 test_16u::dividend#0 } { divr16u::divisor#0 = divr16u::divisor#6 div16u::divisor#0 test_16u::divisor#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] { { div16u::dividend#0 = test_16u::dividend#0 } { div16u::divisor#0 = test_16u::divisor#0 } { div16u::return#0 = div16u::return#2 } } ) always clobbers reg byte a +Statement [286] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#189 ] { } ) always clobbers reg byte a +Statement [292] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [294] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:288 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] : zp[2]:3 , Potential registers zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] : zp[2]:5 , @@ -7239,25 +7230,25 @@ Potential registers zp[1]:122 [ div8u::return#3 ] : zp[1]:122 , reg byte a , reg Potential registers zp[1]:123 [ test_8u::res#0 ] : zp[1]:123 , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 884.42: zp[2]:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 321.61: zp[2]:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp[1]:83 [ divr16u::$1 ] 202: zp[1]:84 [ divr16u::$2 ] 167.04: zp[1]:32 [ divr16u::i#2 divr16u::i#1 ] 78.82: zp[2]:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 20.88: zp[2]:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp[2]:73 [ divr16u::return#3 ] 4: zp[2]:116 [ divr16u::return#2 ] -Uplift Scope [divr8u] 909.67: zp[1]:42 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 332.19: zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 202: zp[1]:101 [ divr8u::$1 ] 168.33: zp[1]:45 [ divr8u::i#2 divr8u::i#1 ] 77.42: zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12.75: zp[1]:98 [ divr8u::divisor#0 ] 4: zp[1]:99 [ divr8u::return#0 ] -Uplift Scope [] 282.21: zp[2]:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#163 print_char_cursor#130 print_char_cursor#172 print_char_cursor#141 print_char_cursor#1 print_char_cursor#167 print_char_cursor#189 ] 254.79: zp[2]:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp[1]:39 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp[2]:22 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp[1]:102 [ rem8u#17 ] 0.48: zp[2]:85 [ rem16u#1 ] -Uplift Scope [print_str] 305.5: zp[2]:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplift Scope [print_byte] 113.5: zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp[1]:63 [ print_byte::$0 ] 4: zp[1]:64 [ print_byte::$2 ] -Uplift Scope [print_word] 97.67: zp[2]:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Uplift Scope [print_sword] 93.33: zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] -Uplift Scope [print_sbyte] 93.33: zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplift Scope [div8u] 33.5: zp[1]:41 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 28: zp[1]:40 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp[1]:122 [ div8u::return#3 ] 4: zp[1]:93 [ div8u::return#2 ] 3.75: zp[1]:100 [ div8u::return#0 ] -Uplift Scope [div8s] 22: zp[1]:91 [ div8s::return#3 ] 11: zp[1]:36 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 11: zp[1]:38 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 8.86: zp[1]:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 5: zp[1]:89 [ div8s::dividend#0 ] 4: zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 4: zp[1]:95 [ div8s::$11 ] 2.14: zp[1]:90 [ div8s::divisor#0 ] 2: zp[1]:97 [ div8s::dividendu#1 ] 1: zp[1]:96 [ div8s::divisoru#1 ] 0.5: zp[1]:94 [ div8s::resultu#0 ] -Uplift Scope [divr16s] 11: zp[2]:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.86: zp[2]:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] 8: zp[2]:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp[1]:19 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 4: zp[2]:69 [ divr16s::return#3 ] 4: zp[2]:77 [ divr16s::$16 ] 2: zp[2]:65 [ divr16s::dividend#0 ] 2: zp[2]:81 [ divr16s::dividendu#1 ] 1: zp[2]:79 [ divr16s::divisoru#1 ] 0.86: zp[2]:67 [ divr16s::divisor#0 ] 0.5: zp[2]:75 [ divr16s::resultu#0 ] -Uplift Scope [test_16u] 17.77: zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] 16.5: zp[1]:103 [ test_16u::$11 ] 4.71: zp[2]:104 [ test_16u::dividend#0 ] 3: zp[2]:106 [ test_16u::divisor#0 ] 2.2: zp[2]:114 [ test_16u::res#0 ] -Uplift Scope [test_16s] 17.77: zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] 16.5: zp[1]:50 [ test_16s::$11 ] 4.71: zp[2]:51 [ test_16s::dividend#0 ] 3: zp[2]:53 [ test_16s::divisor#0 ] 2.2: zp[2]:61 [ test_16s::res#0 ] -Uplift Scope [div16u] 22: zp[2]:112 [ div16u::return#2 ] 6.5: zp[2]:108 [ div16u::dividend#0 ] 6.5: zp[2]:110 [ div16u::divisor#0 ] 4.33: zp[2]:118 [ div16u::return#0 ] -Uplift Scope [div16s] 22: zp[2]:59 [ div16s::return#2 ] 6.5: zp[2]:55 [ div16s::dividend#0 ] 6.5: zp[2]:57 [ div16s::divisor#0 ] 4.33: zp[2]:71 [ div16s::return#0 ] -Uplift Scope [memset] 36.67: zp[2]:48 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [test_8s] 18.26: zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] 4.71: zp[1]:87 [ test_8s::dividend#0 ] 3: zp[1]:88 [ test_8s::divisor#0 ] 2.2: zp[1]:92 [ test_8s::res#0 ] -Uplift Scope [test_8u] 12.83: zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp[1]:120 [ test_8u::dividend#0 ] 3.3: zp[1]:121 [ test_8u::divisor#0 ] 2.44: zp[1]:123 [ test_8u::res#0 ] -Uplift Scope [print_char] 14: zp[1]:7 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [divr16u] 875,333,342.42: zp[2]:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 317,872,860.61: zp[2]:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,000,002: zp[1]:83 [ divr16u::$1 ] 200,000,002: zp[1]:84 [ divr16u::$2 ] 165,384,617.04: zp[1]:32 [ divr16u::i#2 divr16u::i#1 ] 69,220,005.82: zp[2]:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 12,726,879.25: zp[2]:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 200,002: zp[2]:73 [ divr16u::return#3 ] 20,002: zp[2]:116 [ divr16u::return#2 ] +Uplift Scope [divr8u] 900,333,342.67: zp[1]:42 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 328,588,098.69: zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 200,000,002: zp[1]:101 [ divr8u::$1 ] 166,666,668.33: zp[1]:45 [ divr8u::i#2 divr8u::i#1 ] 75,533,334.92: zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12,506,250.19: zp[1]:98 [ divr8u::divisor#0 ] 200,002: zp[1]:99 [ divr8u::return#0 ] +Uplift Scope [print_char] 16,000,007: zp[1]:7 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [] 12,805,485.19: zp[2]:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#163 print_char_cursor#130 print_char_cursor#172 print_char_cursor#141 print_char_cursor#1 print_char_cursor#167 print_char_cursor#189 ] 2,053,585.35: zp[2]:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 309,139.5: zp[2]:22 [ rem16s#11 rem16s#2 rem16s#37 ] 38,500.08: zp[1]:102 [ rem8u#17 ] 37,074.15: zp[2]:85 [ rem16u#1 ] 31,169.83: zp[1]:39 [ rem8s#3 rem8s#2 rem8s#33 ] +Uplift Scope [print_byte] 2,000,002: zp[1]:63 [ print_byte::$0 ] 2,000,002: zp[1]:64 [ print_byte::$2 ] 981,516.25: zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplift Scope [print_str] 3,012,504.25: zp[2]:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] +Uplift Scope [divr16s] 550,005.5: zp[2]:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 442,861.57: zp[2]:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] 370,004: zp[2]:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 200,002: zp[1]:19 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 200,002: zp[2]:77 [ divr16s::$16 ] 100,001: zp[2]:81 [ divr16s::dividendu#1 ] 70,001: zp[2]:65 [ divr16s::dividend#0 ] 50,000.5: zp[2]:79 [ divr16s::divisoru#1 ] 30,000.43: zp[2]:67 [ divr16s::divisor#0 ] 25,000.25: zp[2]:75 [ divr16s::resultu#0 ] 20,002: zp[2]:69 [ divr16s::return#3 ] +Uplift Scope [div8u] 122,005: zp[1]:40 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 77,505.5: zp[1]:41 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 27,750.75: zp[1]:100 [ div8u::return#0 ] 20,002: zp[1]:93 [ div8u::return#2 ] 2,002: zp[1]:122 [ div8u::return#3 ] +Uplift Scope [div8s] 55,005.5: zp[1]:36 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 44,290.14: zp[1]:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 37,004: zp[1]:38 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 20,002: zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 20,002: zp[1]:95 [ div8s::$11 ] 10,001: zp[1]:97 [ div8s::dividendu#1 ] 7,001: zp[1]:89 [ div8s::dividend#0 ] 5,000.5: zp[1]:96 [ div8s::divisoru#1 ] 3,000.43: zp[1]:90 [ div8s::divisor#0 ] 2,500.25: zp[1]:94 [ div8s::resultu#0 ] 2,002: zp[1]:91 [ div8s::return#3 ] +Uplift Scope [print_word] 98,344.67: zp[2]:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Uplift Scope [print_sword] 52,678.83: zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +Uplift Scope [print_sbyte] 52,678.83: zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplift Scope [memset] 33,336.67: zp[2]:48 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [div16u] 5,501: zp[2]:108 [ div16u::dividend#0 ] 5,501: zp[2]:110 [ div16u::divisor#0 ] 3,667.33: zp[2]:118 [ div16u::return#0 ] 2,002: zp[2]:112 [ div16u::return#2 ] +Uplift Scope [div16s] 5,501: zp[2]:55 [ div16s::dividend#0 ] 5,501: zp[2]:57 [ div16s::divisor#0 ] 3,667.33: zp[2]:71 [ div16s::return#0 ] 2,002: zp[2]:59 [ div16s::return#2 ] +Uplift Scope [test_16u] 1,617: zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] 1,501.5: zp[1]:103 [ test_16u::$11 ] 429: zp[2]:104 [ test_16u::dividend#0 ] 273: zp[2]:106 [ test_16u::divisor#0 ] 200.2: zp[2]:114 [ test_16u::res#0 ] +Uplift Scope [test_16s] 1,617: zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] 1,501.5: zp[1]:50 [ test_16s::$11 ] 429: zp[2]:51 [ test_16s::dividend#0 ] 273: zp[2]:53 [ test_16s::divisor#0 ] 200.2: zp[2]:61 [ test_16s::res#0 ] +Uplift Scope [test_8s] 1,661.66: zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] 429: zp[1]:87 [ test_8s::dividend#0 ] 273: zp[1]:88 [ test_8s::divisor#0 ] 200.2: zp[1]:92 [ test_8s::res#0 ] +Uplift Scope [test_8u] 1,167.83: zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] 429: zp[1]:120 [ test_8u::dividend#0 ] 300.3: zp[1]:121 [ test_8u::divisor#0 ] 222.44: zp[1]:123 [ test_8u::res#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] @@ -7266,79 +7257,79 @@ Uplift Scope [main] Uplifting [divr16u] best 45229 combination zp[2]:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:30 [ 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[2]:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp[2]:73 [ divr16u::return#3 ] zp[2]:116 [ divr16u::return#2 ] Uplifting [divr8u] best 42826 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp[1]:98 [ divr8u::divisor#0 ] zp[1]:99 [ divr8u::return#0 ] Limited combination testing to 100 combinations of 3888 possible. -Uplifting [] best 42757 combination zp[2]:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#163 print_char_cursor#130 print_char_cursor#172 print_char_cursor#141 print_char_cursor#1 print_char_cursor#167 print_char_cursor#189 ] zp[2]:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp[2]:22 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp[2]:85 [ rem16u#1 ] -Uplifting [print_str] best 42757 combination zp[2]:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplifting [print_byte] best 42749 combination zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 42749 combination zp[2]:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Uplifting [print_sword] best 42749 combination zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] -Uplifting [print_sbyte] best 42749 combination zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [div8u] best 42611 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp[1]:100 [ div8u::return#0 ] +Uplifting [print_char] best 42805 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [] best 42736 combination zp[2]:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#163 print_char_cursor#130 print_char_cursor#172 print_char_cursor#141 print_char_cursor#1 print_char_cursor#167 print_char_cursor#189 ] zp[2]:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] zp[2]:22 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp[2]:85 [ rem16u#1 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] +Uplifting [print_byte] best 42728 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplifting [print_str] best 42728 combination zp[2]:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] +Uplifting [divr16s] best 42717 combination zp[2]:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp[2]:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:77 [ divr16s::$16 ] zp[2]:81 [ divr16s::dividendu#1 ] zp[2]:65 [ divr16s::dividend#0 ] zp[2]:79 [ divr16s::divisoru#1 ] zp[2]:67 [ divr16s::divisor#0 ] zp[2]:75 [ divr16s::resultu#0 ] zp[2]:69 [ divr16s::return#3 ] +Uplifting [div8u] best 42603 combination reg byte x [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::return#0 ] reg byte a [ div8u::return#2 ] zp[1]:122 [ div8u::return#3 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [div8s] best 42506 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp[1]:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp[1]:89 [ div8s::dividend#0 ] zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp[1]:95 [ div8s::$11 ] zp[1]:90 [ div8s::divisor#0 ] zp[1]:97 [ div8s::dividendu#1 ] zp[1]:96 [ div8s::divisoru#1 ] zp[1]:94 [ div8s::resultu#0 ] +Uplifting [div8s] best 42549 combination reg byte a [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte x [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp[1]:95 [ div8s::$11 ] zp[1]:97 [ div8s::dividendu#1 ] zp[1]:89 [ div8s::dividend#0 ] zp[1]:96 [ div8s::divisoru#1 ] zp[1]:90 [ div8s::divisor#0 ] zp[1]:94 [ div8s::resultu#0 ] zp[1]:91 [ div8s::return#3 ] Limited combination testing to 100 combinations of 995328 possible. -Uplifting [divr16s] best 42495 combination zp[2]:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp[2]:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:69 [ divr16s::return#3 ] zp[2]:77 [ divr16s::$16 ] zp[2]:65 [ divr16s::dividend#0 ] zp[2]:81 [ divr16s::dividendu#1 ] zp[2]:79 [ divr16s::divisoru#1 ] zp[2]:67 [ divr16s::divisor#0 ] zp[2]:75 [ divr16s::resultu#0 ] -Uplifting [test_16u] best 42425 combination zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] reg byte x [ test_16u::$11 ] zp[2]:104 [ test_16u::dividend#0 ] zp[2]:106 [ test_16u::divisor#0 ] zp[2]:114 [ test_16u::res#0 ] -Uplifting [test_16s] best 42355 combination zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] reg byte x [ test_16s::$11 ] zp[2]:51 [ test_16s::dividend#0 ] zp[2]:53 [ test_16s::divisor#0 ] zp[2]:61 [ test_16s::res#0 ] -Uplifting [div16u] best 42355 combination zp[2]:112 [ div16u::return#2 ] zp[2]:108 [ div16u::dividend#0 ] zp[2]:110 [ div16u::divisor#0 ] zp[2]:118 [ div16u::return#0 ] -Uplifting [div16s] best 42355 combination zp[2]:59 [ div16s::return#2 ] zp[2]:55 [ div16s::dividend#0 ] zp[2]:57 [ div16s::divisor#0 ] zp[2]:71 [ div16s::return#0 ] -Uplifting [memset] best 42355 combination zp[2]:48 [ memset::dst#2 memset::dst#1 ] -Uplifting [test_8s] best 42355 combination zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] zp[1]:87 [ test_8s::dividend#0 ] zp[1]:88 [ test_8s::divisor#0 ] zp[1]:92 [ test_8s::res#0 ] -Uplifting [test_8u] best 42355 combination zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] zp[1]:120 [ test_8u::dividend#0 ] zp[1]:121 [ test_8u::divisor#0 ] zp[1]:123 [ test_8u::res#0 ] -Uplifting [print_char] best 42334 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplifting [RADIX] best 42334 combination -Uplifting [print_ln] best 42334 combination -Uplifting [print_cls] best 42334 combination -Uplifting [main] best 42334 combination +Uplifting [print_word] best 42549 combination zp[2]:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Uplifting [print_sword] best 42549 combination zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +Uplifting [print_sbyte] best 42549 combination zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [memset] best 42549 combination zp[2]:48 [ memset::dst#2 memset::dst#1 ] +Uplifting [div16u] best 42549 combination zp[2]:108 [ div16u::dividend#0 ] zp[2]:110 [ div16u::divisor#0 ] zp[2]:118 [ div16u::return#0 ] zp[2]:112 [ div16u::return#2 ] +Uplifting [div16s] best 42549 combination zp[2]:55 [ div16s::dividend#0 ] zp[2]:57 [ div16s::divisor#0 ] zp[2]:71 [ div16s::return#0 ] zp[2]:59 [ div16s::return#2 ] +Uplifting [test_16u] best 42479 combination zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] reg byte x [ test_16u::$11 ] zp[2]:104 [ test_16u::dividend#0 ] zp[2]:106 [ test_16u::divisor#0 ] zp[2]:114 [ test_16u::res#0 ] +Uplifting [test_16s] best 42409 combination zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] reg byte x [ test_16s::$11 ] zp[2]:51 [ test_16s::dividend#0 ] zp[2]:53 [ test_16s::divisor#0 ] zp[2]:61 [ test_16s::res#0 ] +Uplifting [test_8s] best 42409 combination zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] zp[1]:87 [ test_8s::dividend#0 ] zp[1]:88 [ test_8s::divisor#0 ] zp[1]:92 [ test_8s::res#0 ] +Uplifting [test_8u] best 42409 combination zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] zp[1]:120 [ test_8u::dividend#0 ] zp[1]:121 [ test_8u::divisor#0 ] zp[1]:123 [ test_8u::res#0 ] +Uplifting [RADIX] best 42409 combination +Uplifting [print_ln] best 42409 combination +Uplifting [print_cls] best 42409 combination +Uplifting [main] best 42409 combination Attempting to uplift remaining variables inzp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Uplifting [divr8u] best 42334 combination zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Attempting to uplift remaining variables inzp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Uplifting [print_byte] best 42334 combination zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Attempting to uplift remaining variables inzp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [print_sbyte] best 42334 combination zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [divr8u] best 42409 combination zp[1]:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] Attempting to uplift remaining variables inzp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] -Uplifting [divr8u] best 42334 combination zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] -Attempting to uplift remaining variables inzp[1]:33 [ test_8s::i#10 test_8s::i#1 ] -Uplifting [test_8s] best 42334 combination zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ test_16s::i#10 test_16s::i#1 ] -Uplifting [test_16s] best 42334 combination zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] -Attempting to uplift remaining variables inzp[1]:46 [ test_16u::i#10 test_16u::i#1 ] -Uplifting [test_16u] best 42334 combination zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] -Attempting to uplift remaining variables inzp[1]:47 [ test_8u::i#10 test_8u::i#1 ] -Uplifting [test_8u] best 42334 combination zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] +Uplifting [divr8u] best 42409 combination zp[1]:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Attempting to uplift remaining variables inzp[1]:98 [ divr8u::divisor#0 ] -Uplifting [divr8u] best 42334 combination zp[1]:98 [ divr8u::divisor#0 ] -Attempting to uplift remaining variables inzp[1]:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Uplifting [div8s] best 42327 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Attempting to uplift remaining variables inzp[1]:89 [ div8s::dividend#0 ] -Uplifting [div8s] best 42292 combination reg byte y [ div8s::dividend#0 ] -Attempting to uplift remaining variables inzp[1]:87 [ test_8s::dividend#0 ] -Uplifting [test_8s] best 42292 combination zp[1]:87 [ test_8s::dividend#0 ] -Attempting to uplift remaining variables inzp[1]:120 [ test_8u::dividend#0 ] -Uplifting [test_8u] best 42292 combination zp[1]:120 [ test_8u::dividend#0 ] -Attempting to uplift remaining variables inzp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] -Uplifting [div8s] best 42292 combination zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] -Attempting to uplift remaining variables inzp[1]:95 [ div8s::$11 ] -Uplifting [div8s] best 42288 combination reg byte a [ div8s::$11 ] +Uplifting [divr8u] best 42409 combination zp[1]:98 [ divr8u::divisor#0 ] +Attempting to uplift remaining variables inzp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplifting [print_byte] best 42409 combination zp[1]:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Attempting to uplift remaining variables inzp[1]:99 [ divr8u::return#0 ] -Uplifting [divr8u] best 42282 combination reg byte a [ divr8u::return#0 ] -Attempting to uplift remaining variables inzp[1]:100 [ div8u::return#0 ] -Uplifting [div8u] best 42246 combination reg byte a [ div8u::return#0 ] -Attempting to uplift remaining variables inzp[1]:121 [ test_8u::divisor#0 ] -Uplifting [test_8u] best 42246 combination zp[1]:121 [ test_8u::divisor#0 ] -Attempting to uplift remaining variables inzp[1]:88 [ test_8s::divisor#0 ] -Uplifting [test_8s] best 42246 combination zp[1]:88 [ test_8s::divisor#0 ] -Attempting to uplift remaining variables inzp[1]:123 [ test_8u::res#0 ] -Uplifting [test_8u] best 42246 combination zp[1]:123 [ test_8u::res#0 ] -Attempting to uplift remaining variables inzp[1]:92 [ test_8s::res#0 ] -Uplifting [test_8s] best 42246 combination zp[1]:92 [ test_8s::res#0 ] -Attempting to uplift remaining variables inzp[1]:90 [ div8s::divisor#0 ] -Uplifting [div8s] best 42211 combination reg byte x [ div8s::divisor#0 ] +Uplifting [divr8u] best 42403 combination reg byte a [ divr8u::return#0 ] +Attempting to uplift remaining variables inzp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [print_sbyte] best 42403 combination zp[1]:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Attempting to uplift remaining variables inzp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] +Uplifting [div8s] best 42403 combination zp[1]:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] +Attempting to uplift remaining variables inzp[1]:95 [ div8s::$11 ] +Uplifting [div8s] best 42399 combination reg byte a [ div8s::$11 ] Attempting to uplift remaining variables inzp[1]:97 [ div8s::dividendu#1 ] -Uplifting [div8s] best 42207 combination reg byte a [ div8s::dividendu#1 ] +Uplifting [div8s] best 42395 combination reg byte a [ div8s::dividendu#1 ] +Attempting to uplift remaining variables inzp[1]:89 [ div8s::dividend#0 ] +Uplifting [div8s] best 42360 combination reg byte x [ div8s::dividend#0 ] Attempting to uplift remaining variables inzp[1]:96 [ div8s::divisoru#1 ] -Uplifting [div8s] best 42203 combination reg byte x [ div8s::divisoru#1 ] +Uplifting [div8s] best 42358 combination reg byte y [ div8s::divisoru#1 ] +Attempting to uplift remaining variables inzp[1]:90 [ div8s::divisor#0 ] +Uplifting [div8s] best 42325 combination reg byte y [ div8s::divisor#0 ] Attempting to uplift remaining variables inzp[1]:94 [ div8s::resultu#0 ] -Uplifting [div8s] best 42200 combination reg byte y [ div8s::resultu#0 ] +Uplifting [div8s] best 42322 combination reg byte y [ div8s::resultu#0 ] +Attempting to uplift remaining variables inzp[1]:91 [ div8s::return#3 ] +Uplifting [div8s] best 42262 combination reg byte a [ div8s::return#3 ] +Attempting to uplift remaining variables inzp[1]:122 [ div8u::return#3 ] +Uplifting [div8u] best 42202 combination reg byte a [ div8u::return#3 ] +Attempting to uplift remaining variables inzp[1]:33 [ test_8s::i#10 test_8s::i#1 ] +Uplifting [test_8s] best 42202 combination zp[1]:33 [ test_8s::i#10 test_8s::i#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ test_16s::i#10 test_16s::i#1 ] +Uplifting [test_16s] best 42202 combination zp[1]:2 [ test_16s::i#10 test_16s::i#1 ] +Attempting to uplift remaining variables inzp[1]:46 [ test_16u::i#10 test_16u::i#1 ] +Uplifting [test_16u] best 42202 combination zp[1]:46 [ test_16u::i#10 test_16u::i#1 ] +Attempting to uplift remaining variables inzp[1]:47 [ test_8u::i#10 test_8u::i#1 ] +Uplifting [test_8u] best 42202 combination zp[1]:47 [ test_8u::i#10 test_8u::i#1 ] +Attempting to uplift remaining variables inzp[1]:87 [ test_8s::dividend#0 ] +Uplifting [test_8s] best 42202 combination zp[1]:87 [ test_8s::dividend#0 ] +Attempting to uplift remaining variables inzp[1]:120 [ test_8u::dividend#0 ] +Uplifting [test_8u] best 42202 combination zp[1]:120 [ test_8u::dividend#0 ] +Attempting to uplift remaining variables inzp[1]:121 [ test_8u::divisor#0 ] +Uplifting [test_8u] best 42202 combination zp[1]:121 [ test_8u::divisor#0 ] +Attempting to uplift remaining variables inzp[1]:88 [ test_8s::divisor#0 ] +Uplifting [test_8s] best 42202 combination zp[1]:88 [ test_8s::divisor#0 ] +Attempting to uplift remaining variables inzp[1]:123 [ test_8u::res#0 ] +Uplifting [test_8u] best 42202 combination zp[1]:123 [ test_8u::res#0 ] +Attempting to uplift remaining variables inzp[1]:92 [ test_8s::res#0 ] +Uplifting [test_8s] best 42202 combination zp[1]:92 [ test_8s::res#0 ] Coalescing zero page register [ zp[2]:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp[2]:75 [ divr16s::resultu#0 ] ] - score: 2 Coalescing zero page register [ zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] ] with [ zp[2]:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] - score: 1 Coalescing zero page register [ zp[2]:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp[2]:51 [ test_16s::dividend#0 ] ] - score: 1 @@ -8173,10 +8164,10 @@ test_8s: { ldy.z i lda divisors,y sta.z divisor - // [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 - ldy.z dividend - // [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 - ldx.z divisor + // [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsxx=vbsz1 + ldx.z dividend + // [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsyy=vbsz1 + ldy.z divisor // [140] call div8s jsr div8s // [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 @@ -8370,11 +8361,11 @@ print_sbyte: { // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// div8s(signed byte register(Y) dividend, signed byte register(X) divisor) +// div8s(signed byte register(X) dividend, signed byte register(Y) divisor) div8s: { .label neg = $10 - // [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 - cpy #0 + // [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1 jmp __b6 // div8s::@6 @@ -8389,13 +8380,14 @@ div8s: { jmp __b2 // div8s::@2 __b2: - // [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 - cpx #0 + // [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsyy_lt_0_then_la1 + cpy #0 bmi __b3 jmp __b7 // div8s::@7 __b7: - // [178] (byte) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + // [178] (byte) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuaa=vbuyy + tya // [179] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] __b4_from___b3: __b4_from___b7: @@ -8404,8 +8396,7 @@ div8s: { jmp __b4 // div8s::@4 __b4: - // [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy - tya + // [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 // [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 // [182] call div8u // [198] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] @@ -8456,27 +8447,28 @@ div8s: { jmp __breturn_from___b5 // div8s::@3 __b3: - // [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx - txa - eor #$ff - clc - adc #1 - tax - // [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 - lda #1 - eor.z neg - sta.z neg - // [195] (byte) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 - jmp __b4_from___b3 - // div8s::@1 - __b1: - // [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + // [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsyy=_neg_vbsyy tya eor #$ff clc adc #1 - // [197] (byte) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa tay + // [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + lda #1 + eor.z neg + sta.z neg + // [195] (byte) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 -- vbuaa=vbuyy + tya + jmp __b4_from___b3 + // div8s::@1 + __b1: + // [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsxx + txa + eor #$ff + clc + adc #1 + // [197] (byte) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuxx=vbuaa + tax // [176] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] __b2_from___b1: // [176] phi (byte) div8s::dividendu#3 = (byte) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy @@ -8490,12 +8482,12 @@ div8s: { // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division -// div8u(byte register(A) dividend, byte register(X) divisor) +// div8u(byte register(X) dividend, byte register(A) divisor) div8u: { - // [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa - sta.z divr8u.dividend - // [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx - stx.z divr8u.divisor + // [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuxx + stx.z divr8u.dividend + // [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuaa + sta.z divr8u.divisor // [201] call divr8u // [205] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: @@ -8838,10 +8830,10 @@ test_8u: { ldy.z i lda divisors,y sta.z divisor - // [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 - lda.z dividend - // [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 - ldx.z divisor + // [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuxx=vbuz1 + ldx.z dividend + // [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuaa=vbuz1 + lda.z divisor // [264] call div8u // [198] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from___b1: @@ -9161,10 +9153,11 @@ Removing instruction lda #>0 Removing instruction lda #<0 Removing instruction lda #>0 Removing instruction ldy.z i -Replacing instruction ldx.z divisor with TAX +Replacing instruction ldy.z divisor with TAY Replacing instruction lda #0 with TXA Replacing instruction ldy #0 with TAY Removing instruction ldy.z i +Removing instruction lda.z divisor Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b1_from___b10 with __b1 Replacing label __b1_from___b1 with __b1 @@ -9250,9 +9243,9 @@ Removing instruction print_byte_from___b2: Removing instruction __b1_from_print_sbyte: Removing instruction print_char_from___b1: Removing instruction __b2_from___b6: -Removing instruction __b7: Removing instruction __b4_from___b3: Removing instruction __b4_from___b7: +Removing instruction div8u_from___b4: Removing instruction __breturn_from___b5: Removing instruction __breturn_from___b8: Removing instruction __breturn: @@ -9344,7 +9337,7 @@ Removing instruction __b3: Removing instruction __breturn: Removing instruction __b4: Removing instruction __b6: -Removing instruction div8u_from___b4: +Removing instruction __b7: Removing instruction __b9: Removing instruction __b8: Removing instruction __b2_from___b1: @@ -9427,24 +9420,24 @@ FINAL SYMBOL TABLE (label) div16s::@1 (label) div16s::@return (signed word) div16s::dividend -(signed word) div16s::dividend#0 dividend zp[2]:17 6.5 +(signed word) div16s::dividend#0 dividend zp[2]:17 5501.0 (signed word) div16s::divisor -(signed word) div16s::divisor#0 divisor zp[2]:19 6.5 +(signed word) div16s::divisor#0 divisor zp[2]:19 5501.0 (signed word) div16s::return -(signed word) div16s::return#0 return zp[2]:11 4.333333333333333 -(signed word) div16s::return#2 return zp[2]:11 22.0 +(signed word) div16s::return#0 return zp[2]:11 3667.333333333333 +(signed word) div16s::return#2 return zp[2]:11 2002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@1 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp[2]:17 6.5 +(word) div16u::dividend#0 dividend zp[2]:17 5501.0 (word) div16u::divisor -(word) div16u::divisor#0 divisor zp[2]:9 6.5 +(word) div16u::divisor#0 divisor zp[2]:9 5501.0 (word) div16u::return -(word) div16u::return#0 return zp[2]:11 4.333333333333333 -(word) div16u::return#2 return zp[2]:11 22.0 +(word) div16u::return#0 return zp[2]:11 3667.333333333333 +(word) div16u::return#2 return zp[2]:11 2002.0 (signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) -(signed byte~) div8s::$11 reg byte a 4.0 +(signed byte~) div8s::$11 reg byte a 20002.0 (label) div8s::@1 (label) div8s::@2 (label) div8s::@3 @@ -9456,47 +9449,47 @@ FINAL SYMBOL TABLE (label) div8s::@9 (label) div8s::@return (signed byte) div8s::dividend -(signed byte) div8s::dividend#0 reg byte y 5.0 +(signed byte) div8s::dividend#0 reg byte x 7001.0 (byte) div8s::dividendu -(signed byte) div8s::dividendu#1 reg byte a 2.0 -(byte) div8s::dividendu#3 reg byte y 0.8571428571428571 -(byte) div8s::dividendu#7 reg byte y 4.0 -(byte) div8s::dividendu#8 reg byte y 4.0 +(signed byte) div8s::dividendu#1 reg byte a 10001.0 +(byte) div8s::dividendu#3 reg byte x 4286.142857142857 +(byte) div8s::dividendu#7 reg byte x 20002.0 +(byte) div8s::dividendu#8 reg byte x 20002.0 (signed byte) div8s::divisor -(signed byte) div8s::divisor#0 reg byte x 2.142857142857143 +(signed byte) div8s::divisor#0 reg byte y 3000.4285714285716 (byte) div8s::divisoru -(signed byte) div8s::divisoru#1 reg byte x 1.0 -(byte) div8s::divisoru#3 reg byte x 3.0 -(byte) div8s::divisoru#4 reg byte x 4.0 -(byte) div8s::divisoru#5 reg byte x 4.0 +(signed byte) div8s::divisoru#1 reg byte y 5000.5 +(byte) div8s::divisoru#3 reg byte a 15001.5 +(byte) div8s::divisoru#4 reg byte a 20002.0 +(byte) div8s::divisoru#5 reg byte a 20002.0 (byte) div8s::neg -(byte) div8s::neg#2 neg zp[1]:16 2.0 -(byte) div8s::neg#3 neg zp[1]:16 1.0 -(byte) div8s::neg#4 neg zp[1]:16 1.0 +(byte) div8s::neg#2 neg zp[1]:16 10001.0 +(byte) div8s::neg#3 neg zp[1]:16 5000.5 +(byte) div8s::neg#4 neg zp[1]:16 5000.5 (byte) div8s::resultu -(byte) div8s::resultu#0 reg byte y 0.5 +(byte) div8s::resultu#0 reg byte y 2500.25 (signed byte) div8s::return -(signed byte) div8s::return#1 reg byte a 4.0 -(signed byte) div8s::return#2 reg byte a 5.0 -(signed byte) div8s::return#3 reg byte a 22.0 -(signed byte) div8s::return#7 reg byte a 2.0 +(signed byte) div8s::return#1 reg byte a 20002.0 +(signed byte) div8s::return#2 reg byte a 7001.0 +(signed byte) div8s::return#3 reg byte a 2002.0 +(signed byte) div8s::return#7 reg byte a 10001.0 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) (label) div8u::@1 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 reg byte a 2.0 -(byte) div8u::dividend#1 reg byte a 11.0 -(byte) div8u::dividend#2 reg byte a 15.0 +(byte) div8u::dividend#0 reg byte x 10001.0 +(byte) div8u::dividend#1 reg byte x 1001.0 +(byte) div8u::dividend#2 reg byte x 111003.0 (byte) div8u::divisor -(byte) div8u::divisor#0 reg byte x 4.0 -(byte) div8u::divisor#1 reg byte x 22.0 -(byte) div8u::divisor#2 reg byte x 7.5 +(byte) div8u::divisor#0 reg byte a 20002.0 +(byte) div8u::divisor#1 reg byte a 2002.0 +(byte) div8u::divisor#2 reg byte a 55501.5 (byte) div8u::return -(byte) div8u::return#0 reg byte a 3.75 -(byte) div8u::return#2 reg byte a 4.0 -(byte) div8u::return#3 reg byte a 22.0 +(byte) div8u::return#0 reg byte a 27750.75 +(byte) div8u::return#2 reg byte a 20002.0 +(byte) div8u::return#3 reg byte a 2002.0 (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(signed word~) divr16s::$16 zp[2]:13 4.0 +(signed word~) divr16s::$16 zp[2]:13 200002.0 (label) divr16s::@1 (label) divr16s::@2 (label) divr16s::@3 @@ -9508,35 +9501,35 @@ FINAL SYMBOL TABLE (label) divr16s::@9 (label) divr16s::@return (signed word) divr16s::dividend -(signed word) divr16s::dividend#0 dividend zp[2]:7 2.0 +(signed word) divr16s::dividend#0 dividend zp[2]:7 70001.0 (word) divr16s::dividendu -(signed word) divr16s::dividendu#1 dividendu zp[2]:7 2.0 -(word) divr16s::dividendu#3 dividendu zp[2]:7 0.8571428571428571 -(word) divr16s::dividendu#7 dividendu zp[2]:7 4.0 -(word) divr16s::dividendu#8 dividendu zp[2]:7 4.0 +(signed word) divr16s::dividendu#1 dividendu zp[2]:7 100001.0 +(word) divr16s::dividendu#3 dividendu zp[2]:7 42857.57142857143 +(word) divr16s::dividendu#7 dividendu zp[2]:7 200002.0 +(word) divr16s::dividendu#8 dividendu zp[2]:7 200002.0 (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 divisor zp[2]:9 0.8571428571428571 +(signed word) divr16s::divisor#0 divisor zp[2]:9 30000.428571428572 (word) divr16s::divisoru -(signed word) divr16s::divisoru#1 divisoru zp[2]:9 1.0 -(word) divr16s::divisoru#3 divisoru zp[2]:9 3.0 -(word) divr16s::divisoru#4 divisoru zp[2]:9 4.0 -(word) divr16s::divisoru#5 divisoru zp[2]:9 4.0 +(signed word) divr16s::divisoru#1 divisoru zp[2]:9 50000.5 +(word) divr16s::divisoru#3 divisoru zp[2]:9 150001.5 +(word) divr16s::divisoru#4 divisoru zp[2]:9 200002.0 +(word) divr16s::divisoru#5 divisoru zp[2]:9 200002.0 (byte) divr16s::neg -(byte) divr16s::neg#2 reg byte y 2.0 -(byte) divr16s::neg#3 reg byte y 1.0 -(byte) divr16s::neg#4 reg byte y 1.0 +(byte) divr16s::neg#2 reg byte y 100001.0 +(byte) divr16s::neg#3 reg byte y 50000.5 +(byte) divr16s::neg#4 reg byte y 50000.5 (signed word) divr16s::rem (word) divr16s::remu (word) divr16s::resultu -(word) divr16s::resultu#0 resultu zp[2]:11 0.5 +(word) divr16s::resultu#0 resultu zp[2]:11 25000.25 (signed word) divr16s::return -(signed word) divr16s::return#1 return zp[2]:11 4.0 -(signed word) divr16s::return#2 return zp[2]:11 2.0 -(signed word) divr16s::return#3 return zp[2]:11 4.0 -(signed word) divr16s::return#7 return zp[2]:11 2.0 +(signed word) divr16s::return#1 return zp[2]:11 200002.0 +(signed word) divr16s::return#2 return zp[2]:11 70001.0 +(signed word) divr16s::return#3 return zp[2]:11 20002.0 +(signed word) divr16s::return#7 return zp[2]:11 100001.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 202.0 -(byte~) divr16u::$2 reg byte a 202.0 +(byte~) divr16u::$1 reg byte a 2.00000002E8 +(byte~) divr16u::$2 reg byte a 2.00000002E8 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -9545,35 +9538,35 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:7 25.25 -(word) divr16u::dividend#1 dividend zp[2]:7 2.0 -(word) divr16u::dividend#2 dividend zp[2]:7 2.0 -(word) divr16u::dividend#3 dividend zp[2]:7 43.57142857142858 -(word) divr16u::dividend#5 dividend zp[2]:7 6.0 +(word) divr16u::dividend#0 dividend zp[2]:7 2.500000025E7 +(word) divr16u::dividend#1 dividend zp[2]:7 10001.0 +(word) divr16u::dividend#2 dividend zp[2]:7 100001.0 +(word) divr16u::dividend#3 dividend zp[2]:7 4.300000057142857E7 +(word) divr16u::dividend#5 dividend zp[2]:7 1110003.0 (word) divr16u::divisor -(word) divr16u::divisor#0 divisor zp[2]:9 4.0 -(word) divr16u::divisor#1 divisor zp[2]:9 4.0 -(word) divr16u::divisor#6 divisor zp[2]:9 12.875 +(word) divr16u::divisor#0 divisor zp[2]:9 20002.0 +(word) divr16u::divisor#1 divisor zp[2]:9 200002.0 +(word) divr16u::divisor#6 divisor zp[2]:9 1.250687525E7 (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 151.5 -(byte) divr16u::i#2 reg byte x 15.538461538461538 +(byte) divr16u::i#1 reg byte x 1.500000015E8 +(byte) divr16u::i#2 reg byte x 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:11 151.5 -(word) divr16u::quotient#2 quotient zp[2]:11 101.0 -(word) divr16u::quotient#3 quotient zp[2]:11 25.25 +(word) divr16u::quotient#1 quotient zp[2]:11 1.500000015E8 +(word) divr16u::quotient#2 quotient zp[2]:11 1.00000001E8 +(word) divr16u::quotient#3 quotient zp[2]:11 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:13 75.75 -(word) divr16u::rem#1 rem zp[2]:13 202.0 -(word) divr16u::rem#11 rem zp[2]:13 101.66666666666667 -(word) divr16u::rem#2 rem zp[2]:13 202.0 -(word) divr16u::rem#5 rem zp[2]:13 202.0 -(word) divr16u::rem#6 rem zp[2]:13 101.0 +(word) divr16u::rem#0 rem zp[2]:13 7.500000075E7 +(word) divr16u::rem#1 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#11 rem zp[2]:13 1.0033333466666667E8 +(word) divr16u::rem#2 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#5 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#6 rem zp[2]:13 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:11 43.85714285714286 -(word) divr16u::return#2 return zp[2]:11 4.0 -(word) divr16u::return#3 return zp[2]:11 4.0 +(word) divr16u::return#0 return zp[2]:11 4.2872857857142866E7 +(word) divr16u::return#2 return zp[2]:11 20002.0 +(word) divr16u::return#3 return zp[2]:11 200002.0 (byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) -(byte~) divr8u::$1 reg byte a 202.0 +(byte~) divr8u::$1 reg byte a 2.00000002E8 (label) divr8u::@1 (label) divr8u::@2 (label) divr8u::@3 @@ -9582,28 +9575,28 @@ FINAL SYMBOL TABLE (label) divr8u::@6 (label) divr8u::@return (byte) divr8u::dividend -(byte) divr8u::dividend#0 dividend zp[1]:22 1.3333333333333333 -(byte) divr8u::dividend#1 dividend zp[1]:22 25.25 -(byte) divr8u::dividend#2 dividend zp[1]:22 50.83333333333333 +(byte) divr8u::dividend#0 dividend zp[1]:22 366667.3333333334 +(byte) divr8u::dividend#1 dividend zp[1]:22 2.500000025E7 +(byte) divr8u::dividend#2 dividend zp[1]:22 5.0166667333333336E7 (byte) divr8u::divisor -(byte) divr8u::divisor#0 divisor zp[1]:23 12.75 +(byte) divr8u::divisor#0 divisor zp[1]:23 1.25062501875E7 (byte) divr8u::i -(byte) divr8u::i#1 reg byte x 151.5 -(byte) divr8u::i#2 reg byte x 16.833333333333332 +(byte) divr8u::i#1 reg byte x 1.500000015E8 +(byte) divr8u::i#2 reg byte x 1.6666666833333334E7 (byte) divr8u::quotient -(byte) divr8u::quotient#1 quotient zp[1]:24 151.5 -(byte) divr8u::quotient#2 quotient zp[1]:24 101.0 -(byte) divr8u::quotient#3 quotient zp[1]:24 28.857142857142858 +(byte) divr8u::quotient#1 quotient zp[1]:24 1.500000015E8 +(byte) divr8u::quotient#2 quotient zp[1]:24 1.00000001E8 +(byte) divr8u::quotient#3 quotient zp[1]:24 2.857142885714286E7 (byte) divr8u::rem -(byte) divr8u::rem#1 reg byte y 101.0 -(byte) divr8u::rem#10 reg byte y 101.66666666666667 -(byte) divr8u::rem#2 reg byte y 202.0 -(byte) divr8u::rem#3 reg byte y 202.0 -(byte) divr8u::rem#4 reg byte y 202.0 -(byte) divr8u::rem#5 reg byte y 101.0 +(byte) divr8u::rem#1 reg byte y 1.00000001E8 +(byte) divr8u::rem#10 reg byte y 1.0033333466666667E8 +(byte) divr8u::rem#2 reg byte y 2.00000002E8 +(byte) divr8u::rem#3 reg byte y 2.00000002E8 +(byte) divr8u::rem#4 reg byte y 2.00000002E8 +(byte) divr8u::rem#5 reg byte y 1.00000001E8 (byte) divr8u::return -(byte) divr8u::return#0 reg byte a 4.0 -(byte) divr8u::return#1 return zp[1]:24 50.83333333333333 +(byte) divr8u::return#0 reg byte a 200002.0 +(byte) divr8u::return#1 return zp[1]:24 5.0016667333333336E7 (void()) main() (label) main::@1 (label) main::@2 @@ -9617,8 +9610,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:17 22.0 -(byte*) memset::dst#2 dst zp[2]:17 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:17 20002.0 +(byte*) memset::dst#2 dst zp[2]:17 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -9627,47 +9620,47 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte a 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:6 4.0 -(byte) print_byte::b#1 b zp[1]:6 4.0 -(byte) print_byte::b#2 b zp[1]:6 4.0 -(byte) print_byte::b#3 b zp[1]:6 22.0 -(byte) print_byte::b#4 b zp[1]:6 22.0 -(byte) print_byte::b#5 b zp[1]:6 22.0 -(byte) print_byte::b#6 b zp[1]:6 22.0 -(byte) print_byte::b#7 b zp[1]:6 13.5 +(byte) print_byte::b#0 b zp[1]:6 20002.0 +(byte) print_byte::b#1 b zp[1]:6 200002.0 +(byte) print_byte::b#2 b zp[1]:6 200002.0 +(byte) print_byte::b#3 b zp[1]:6 2002.0 +(byte) print_byte::b#4 b zp[1]:6 2002.0 +(byte) print_byte::b#5 b zp[1]:6 2002.0 +(byte) print_byte::b#6 b zp[1]:6 2002.0 +(byte) print_byte::b#7 b zp[1]:6 553502.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2000002.0 +(byte) print_char::ch#5 reg byte a 2000002.0 +(byte) print_char::ch#6 reg byte a 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#130 print_char_cursor zp[2]:4 15.607142857142856 -(byte*) print_char_cursor#132 print_char_cursor zp[2]:4 12.0 -(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 12.0 -(byte*) print_char_cursor#138 print_char_cursor zp[2]:4 24.0 -(byte*) print_char_cursor#139 print_char_cursor zp[2]:4 17.333333333333332 -(byte*) print_char_cursor#141 print_char_cursor zp[2]:4 2.4444444444444446 -(byte*) print_char_cursor#163 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#167 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#172 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 1.8225806451612903 -(byte*) print_char_cursor#84 print_char_cursor zp[2]:4 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1000001.0 +(byte*) print_char_cursor#130 print_char_cursor zp[2]:4 107929.14285714284 +(byte*) print_char_cursor#132 print_char_cursor zp[2]:4 6001.5 +(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 6001.5 +(byte*) print_char_cursor#138 print_char_cursor zp[2]:4 57003.0 +(byte*) print_char_cursor#139 print_char_cursor zp[2]:4 404669.3333333335 +(byte*) print_char_cursor#141 print_char_cursor zp[2]:4 222.44444444444446 +(byte*) print_char_cursor#163 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#167 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#172 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 195645.2741935484 +(byte*) print_char_cursor#84 print_char_cursor zp[2]:4 1.1020004E7 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3.833333333333334 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 46.0 -(byte*) print_line_cursor#41 print_line_cursor zp[2]:2 0.9565217391304348 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 29490.30392156863 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 2010003.0 +(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 14005.0 +(byte*) print_line_cursor#41 print_line_cursor zp[2]:2 87.04347826086956 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -9678,22 +9671,22 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:6 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:6 11.0 -(signed byte) print_sbyte::b#10 b zp[1]:6 8.333333333333332 -(signed byte) print_sbyte::b#2 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#3 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#4 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#7 b zp[1]:6 4.0 +(signed byte) print_sbyte::b#0 b zp[1]:6 20002.0 +(signed byte) print_sbyte::b#1 b zp[1]:6 1001.0 +(signed byte) print_sbyte::b#10 b zp[1]:6 5667.833333333333 +(signed byte) print_sbyte::b#2 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#3 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#4 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#7 b zp[1]:6 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 202.0 -(byte*) print_str::str#13 str zp[2]:7 101.5 -(byte*) print_str::str#15 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 2000002.0 +(byte*) print_str::str#13 str zp[2]:7 1002501.25 +(byte*) print_str::str#15 str zp[2]:7 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -9701,40 +9694,40 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:17 4.0 -(signed word) print_sword::w#1 w zp[2]:17 11.0 -(signed word) print_sword::w#10 w zp[2]:17 8.333333333333332 -(signed word) print_sword::w#2 w zp[2]:17 22.0 -(signed word) print_sword::w#3 w zp[2]:17 22.0 -(signed word) print_sword::w#4 w zp[2]:17 22.0 -(signed word) print_sword::w#7 w zp[2]:17 4.0 +(signed word) print_sword::w#0 w zp[2]:17 20002.0 +(signed word) print_sword::w#1 w zp[2]:17 1001.0 +(signed word) print_sword::w#10 w zp[2]:17 5667.833333333333 +(signed word) print_sword::w#2 w zp[2]:17 2002.0 +(signed word) print_sword::w#3 w zp[2]:17 2002.0 +(signed word) print_sword::w#4 w zp[2]:17 2002.0 +(signed word) print_sword::w#7 w zp[2]:17 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:17 4.0 -(word) print_word::w#1 w zp[2]:17 11.0 -(word) print_word::w#2 w zp[2]:17 22.0 -(word) print_word::w#3 w zp[2]:17 22.0 -(word) print_word::w#4 w zp[2]:17 22.0 -(word) print_word::w#5 w zp[2]:17 16.666666666666664 +(word) print_word::w#0 w zp[2]:17 20002.0 +(word) print_word::w#1 w zp[2]:17 1001.0 +(word) print_word::w#2 w zp[2]:17 2002.0 +(word) print_word::w#3 w zp[2]:17 2002.0 +(word) print_word::w#4 w zp[2]:17 2002.0 +(word) print_word::w#5 w zp[2]:17 71335.66666666666 (signed word) rem16s -(signed word) rem16s#11 rem16s zp[2]:13 0.6818181818181819 -(signed word) rem16s#2 rem16s zp[2]:13 2.0 -(signed word) rem16s#37 rem16s zp[2]:13 4.0 +(signed word) rem16s#11 rem16s zp[2]:13 9136.5 +(signed word) rem16s#2 rem16s zp[2]:13 100001.0 +(signed word) rem16s#37 rem16s zp[2]:13 200002.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:13 0.48148148148148145 +(word) rem16u#1 rem16u zp[2]:13 37074.148148148146 (signed byte) rem8s -(signed byte) rem8s#2 reg byte x 2.0 -(signed byte) rem8s#3 reg byte x 0.8333333333333335 -(signed byte) rem8s#33 reg byte x 4.0 +(signed byte) rem8s#2 reg byte x 10001.0 +(signed byte) rem8s#3 reg byte x 1166.8333333333333 +(signed byte) rem8s#33 reg byte x 20002.0 (byte) rem8u -(byte) rem8u#17 reg byte x 0.5 +(byte) rem8u#17 reg byte x 38500.07692307692 (const byte*) str[(byte) 4] = (byte*) " / " (const byte*) str1[(byte) 4] = (byte*) " = " (const byte*) str2[(byte) 2] = (byte*) " " (void()) test_16s() -(byte~) test_16s::$11 reg byte x 16.5 +(byte~) test_16s::$11 reg byte x 1501.5 (label) test_16s::@1 (label) test_16s::@10 (label) test_16s::@2 @@ -9747,18 +9740,18 @@ FINAL SYMBOL TABLE (label) test_16s::@9 (label) test_16s::@return (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 dividend zp[2]:17 4.714285714285714 +(signed word) test_16s::dividend#0 dividend zp[2]:17 429.0 (const signed word*) test_16s::dividends[] = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff } (signed word) test_16s::divisor -(signed word) test_16s::divisor#0 divisor zp[2]:19 3.0 +(signed word) test_16s::divisor#0 divisor zp[2]:19 273.0 (const signed word*) test_16s::divisors[] = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 } (byte) test_16s::i -(byte) test_16s::i#1 i zp[1]:15 16.5 -(byte) test_16s::i#10 i zp[1]:15 1.2692307692307692 +(byte) test_16s::i#1 i zp[1]:15 1501.5 +(byte) test_16s::i#10 i zp[1]:15 115.5 (signed word) test_16s::res -(signed word) test_16s::res#0 res zp[2]:11 2.2 +(signed word) test_16s::res#0 res zp[2]:11 200.2 (void()) test_16u() -(byte~) test_16u::$11 reg byte x 16.5 +(byte~) test_16u::$11 reg byte x 1501.5 (label) test_16u::@1 (label) test_16u::@10 (label) test_16u::@2 @@ -9771,16 +9764,16 @@ FINAL SYMBOL TABLE (label) test_16u::@9 (label) test_16u::@return (word) test_16u::dividend -(word) test_16u::dividend#0 dividend zp[2]:17 4.714285714285714 +(word) test_16u::dividend#0 dividend zp[2]:17 429.0 (const word*) test_16u::dividends[] = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff } (word) test_16u::divisor -(word) test_16u::divisor#0 divisor zp[2]:9 3.0 +(word) test_16u::divisor#0 divisor zp[2]:9 273.0 (const word*) test_16u::divisors[] = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 } (byte) test_16u::i -(byte) test_16u::i#1 i zp[1]:16 16.5 -(byte) test_16u::i#10 i zp[1]:16 1.2692307692307692 +(byte) test_16u::i#1 i zp[1]:16 1501.5 +(byte) test_16u::i#10 i zp[1]:16 115.5 (word) test_16u::res -(word) test_16u::res#0 res zp[2]:11 2.2 +(word) test_16u::res#0 res zp[2]:11 200.2 (void()) test_8s() (label) test_8s::@1 (label) test_8s::@10 @@ -9794,16 +9787,16 @@ FINAL SYMBOL TABLE (label) test_8s::@9 (label) test_8s::@return (signed byte) test_8s::dividend -(signed byte) test_8s::dividend#0 dividend zp[1]:6 4.714285714285714 +(signed byte) test_8s::dividend#0 dividend zp[1]:6 429.0 (const signed byte*) test_8s::dividends[] = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } (signed byte) test_8s::divisor -(signed byte) test_8s::divisor#0 divisor zp[1]:21 3.0 +(signed byte) test_8s::divisor#0 divisor zp[1]:21 273.0 (const signed byte*) test_8s::divisors[] = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 } (byte) test_8s::i -(byte) test_8s::i#1 i zp[1]:15 16.5 -(byte) test_8s::i#10 i zp[1]:15 1.76 +(byte) test_8s::i#1 i zp[1]:15 1501.5 +(byte) test_8s::i#10 i zp[1]:15 160.16 (signed byte) test_8s::res -(signed byte) test_8s::res#0 res zp[1]:22 2.2 +(signed byte) test_8s::res#0 res zp[1]:22 200.2 (void()) test_8u() (label) test_8u::@1 (label) test_8u::@10 @@ -9818,16 +9811,16 @@ FINAL SYMBOL TABLE (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp[1]:6 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp[1]:6 429.0 (const byte*) test_8u::dividends[] = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } (byte) test_8u::divisor -(byte) test_8u::divisor#0 divisor zp[1]:23 3.3000000000000003 +(byte) test_8u::divisor#0 divisor zp[1]:23 300.29999999999995 (const byte*) test_8u::divisors[] = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 } (byte) test_8u::i -(byte) test_8u::i#1 i zp[1]:21 11.0 -(byte) test_8u::i#10 i zp[1]:21 1.8333333333333333 +(byte) test_8u::i#1 i zp[1]:21 1001.0 +(byte) test_8u::i#10 i zp[1]:21 166.83333333333334 (byte) test_8u::res -(byte) test_8u::res#0 res zp[1]:24 2.4444444444444446 +(byte) test_8u::res#0 res zp[1]:24 222.44444444444446 zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] @@ -9840,12 +9833,12 @@ zp[2]:11 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::result zp[2]:13 [ rem16s#11 rem16s#2 rem16s#37 divr16s::$16 rem16u#1 divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[1]:15 [ test_8s::i#10 test_8s::i#1 test_16s::i#10 test_16s::i#1 ] -reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] +reg byte x [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] +reg byte a [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] -reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] +reg byte x [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +reg byte a [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp[1]:16 [ test_16u::i#10 test_16u::i#1 div8s::neg#4 div8s::neg#2 div8s::neg#3 ] @@ -9857,14 +9850,14 @@ reg byte a [ print_byte::$2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] zp[1]:21 [ test_8s::divisor#0 test_8u::i#10 test_8u::i#1 ] -reg byte y [ div8s::dividend#0 ] -reg byte x [ div8s::divisor#0 ] +reg byte x [ div8s::dividend#0 ] +reg byte y [ div8s::divisor#0 ] reg byte a [ div8s::return#3 ] zp[1]:22 [ test_8s::res#0 divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] reg byte a [ div8u::return#2 ] reg byte y [ div8s::resultu#0 ] reg byte a [ div8s::$11 ] -reg byte x [ div8s::divisoru#1 ] +reg byte y [ div8s::divisoru#1 ] reg byte a [ div8s::dividendu#1 ] reg byte a [ divr8u::return#0 ] reg byte a [ div8u::return#0 ] @@ -9877,7 +9870,7 @@ zp[1]:24 [ test_8u::res#0 divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 FINAL ASSEMBLER -Score: 33209 +Score: 33181 // File Comments // Test the binary division library @@ -10579,10 +10572,10 @@ test_8s: { lda divisors,y sta.z divisor // div8s(dividend, divisor) - // [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 - ldy.z dividend - // [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 - tax + // [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsxx=vbsz1 + ldx.z dividend + // [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsyy=vbsz1 + tay // [140] call div8s jsr div8s // [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 @@ -10747,12 +10740,12 @@ print_sbyte: { // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// div8s(signed byte register(Y) dividend, signed byte register(X) divisor) +// div8s(signed byte register(X) dividend, signed byte register(Y) divisor) div8s: { .label neg = $10 // if(dividend<0) - // [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 - cpy #0 + // [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsxx_lt_0_then_la1 + cpx #0 bmi __b1 // div8s::@6 // [175] (byte) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 @@ -10764,19 +10757,19 @@ div8s: { // div8s::@2 __b2: // if(divisor<0) - // [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 - cpx #0 + // [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsyy_lt_0_then_la1 + cpy #0 bmi __b3 // div8s::@7 - // [178] (byte) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + // [178] (byte) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuaa=vbuyy + tya // [179] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] // [179] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy // [179] phi (byte) div8s::divisoru#3 = (byte) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy // div8s::@4 __b4: // div8u(dividendu, divisoru) - // [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy - tya + // [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 // [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 // [182] call div8u // [198] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] @@ -10826,29 +10819,30 @@ div8s: { // div8s::@3 __b3: // -divisor - // [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx - txa + // [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsyy=_neg_vbsyy + tya eor #$ff clc adc #1 - tax + tay // neg = neg ^ 1 // [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor.z neg sta.z neg - // [195] (byte) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 + // [195] (byte) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 -- vbuaa=vbuyy + tya jmp __b4 // div8s::@1 __b1: // -dividend - // [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy - tya + // [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsxx + txa eor #$ff clc adc #1 - // [197] (byte) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa - tay + // [197] (byte) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuxx=vbuaa + tax // [176] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] // [176] phi (byte) div8s::dividendu#3 = (byte) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy // [176] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 @@ -10861,13 +10855,13 @@ div8s: { // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division -// div8u(byte register(A) dividend, byte register(X) divisor) +// div8u(byte register(X) dividend, byte register(A) divisor) div8u: { // divr8u(dividend, divisor, 0) - // [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa - sta.z divr8u.dividend - // [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx - stx.z divr8u.divisor + // [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuxx + stx.z divr8u.dividend + // [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuaa + sta.z divr8u.divisor // [201] call divr8u // [205] phi from div8u to divr8u [phi:div8u->divr8u] jsr divr8u @@ -11178,10 +11172,9 @@ test_8u: { lda divisors,y sta.z divisor // div8u(dividend, divisor) - // [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 - lda.z dividend - // [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 - ldx.z divisor + // [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuxx=vbuz1 + ldx.z dividend + // [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuaa=vbuz1 // [264] call div8u // [198] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] // [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy diff --git a/src/test/ref/test-division.sym b/src/test/ref/test-division.sym index 576d7ff94..c7885c30c 100644 --- a/src/test/ref/test-division.sym +++ b/src/test/ref/test-division.sym @@ -9,24 +9,24 @@ (label) div16s::@1 (label) div16s::@return (signed word) div16s::dividend -(signed word) div16s::dividend#0 dividend zp[2]:17 6.5 +(signed word) div16s::dividend#0 dividend zp[2]:17 5501.0 (signed word) div16s::divisor -(signed word) div16s::divisor#0 divisor zp[2]:19 6.5 +(signed word) div16s::divisor#0 divisor zp[2]:19 5501.0 (signed word) div16s::return -(signed word) div16s::return#0 return zp[2]:11 4.333333333333333 -(signed word) div16s::return#2 return zp[2]:11 22.0 +(signed word) div16s::return#0 return zp[2]:11 3667.333333333333 +(signed word) div16s::return#2 return zp[2]:11 2002.0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@1 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp[2]:17 6.5 +(word) div16u::dividend#0 dividend zp[2]:17 5501.0 (word) div16u::divisor -(word) div16u::divisor#0 divisor zp[2]:9 6.5 +(word) div16u::divisor#0 divisor zp[2]:9 5501.0 (word) div16u::return -(word) div16u::return#0 return zp[2]:11 4.333333333333333 -(word) div16u::return#2 return zp[2]:11 22.0 +(word) div16u::return#0 return zp[2]:11 3667.333333333333 +(word) div16u::return#2 return zp[2]:11 2002.0 (signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) -(signed byte~) div8s::$11 reg byte a 4.0 +(signed byte~) div8s::$11 reg byte a 20002.0 (label) div8s::@1 (label) div8s::@2 (label) div8s::@3 @@ -38,47 +38,47 @@ (label) div8s::@9 (label) div8s::@return (signed byte) div8s::dividend -(signed byte) div8s::dividend#0 reg byte y 5.0 +(signed byte) div8s::dividend#0 reg byte x 7001.0 (byte) div8s::dividendu -(signed byte) div8s::dividendu#1 reg byte a 2.0 -(byte) div8s::dividendu#3 reg byte y 0.8571428571428571 -(byte) div8s::dividendu#7 reg byte y 4.0 -(byte) div8s::dividendu#8 reg byte y 4.0 +(signed byte) div8s::dividendu#1 reg byte a 10001.0 +(byte) div8s::dividendu#3 reg byte x 4286.142857142857 +(byte) div8s::dividendu#7 reg byte x 20002.0 +(byte) div8s::dividendu#8 reg byte x 20002.0 (signed byte) div8s::divisor -(signed byte) div8s::divisor#0 reg byte x 2.142857142857143 +(signed byte) div8s::divisor#0 reg byte y 3000.4285714285716 (byte) div8s::divisoru -(signed byte) div8s::divisoru#1 reg byte x 1.0 -(byte) div8s::divisoru#3 reg byte x 3.0 -(byte) div8s::divisoru#4 reg byte x 4.0 -(byte) div8s::divisoru#5 reg byte x 4.0 +(signed byte) div8s::divisoru#1 reg byte y 5000.5 +(byte) div8s::divisoru#3 reg byte a 15001.5 +(byte) div8s::divisoru#4 reg byte a 20002.0 +(byte) div8s::divisoru#5 reg byte a 20002.0 (byte) div8s::neg -(byte) div8s::neg#2 neg zp[1]:16 2.0 -(byte) div8s::neg#3 neg zp[1]:16 1.0 -(byte) div8s::neg#4 neg zp[1]:16 1.0 +(byte) div8s::neg#2 neg zp[1]:16 10001.0 +(byte) div8s::neg#3 neg zp[1]:16 5000.5 +(byte) div8s::neg#4 neg zp[1]:16 5000.5 (byte) div8s::resultu -(byte) div8s::resultu#0 reg byte y 0.5 +(byte) div8s::resultu#0 reg byte y 2500.25 (signed byte) div8s::return -(signed byte) div8s::return#1 reg byte a 4.0 -(signed byte) div8s::return#2 reg byte a 5.0 -(signed byte) div8s::return#3 reg byte a 22.0 -(signed byte) div8s::return#7 reg byte a 2.0 +(signed byte) div8s::return#1 reg byte a 20002.0 +(signed byte) div8s::return#2 reg byte a 7001.0 +(signed byte) div8s::return#3 reg byte a 2002.0 +(signed byte) div8s::return#7 reg byte a 10001.0 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) (label) div8u::@1 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 reg byte a 2.0 -(byte) div8u::dividend#1 reg byte a 11.0 -(byte) div8u::dividend#2 reg byte a 15.0 +(byte) div8u::dividend#0 reg byte x 10001.0 +(byte) div8u::dividend#1 reg byte x 1001.0 +(byte) div8u::dividend#2 reg byte x 111003.0 (byte) div8u::divisor -(byte) div8u::divisor#0 reg byte x 4.0 -(byte) div8u::divisor#1 reg byte x 22.0 -(byte) div8u::divisor#2 reg byte x 7.5 +(byte) div8u::divisor#0 reg byte a 20002.0 +(byte) div8u::divisor#1 reg byte a 2002.0 +(byte) div8u::divisor#2 reg byte a 55501.5 (byte) div8u::return -(byte) div8u::return#0 reg byte a 3.75 -(byte) div8u::return#2 reg byte a 4.0 -(byte) div8u::return#3 reg byte a 22.0 +(byte) div8u::return#0 reg byte a 27750.75 +(byte) div8u::return#2 reg byte a 20002.0 +(byte) div8u::return#3 reg byte a 2002.0 (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(signed word~) divr16s::$16 zp[2]:13 4.0 +(signed word~) divr16s::$16 zp[2]:13 200002.0 (label) divr16s::@1 (label) divr16s::@2 (label) divr16s::@3 @@ -90,35 +90,35 @@ (label) divr16s::@9 (label) divr16s::@return (signed word) divr16s::dividend -(signed word) divr16s::dividend#0 dividend zp[2]:7 2.0 +(signed word) divr16s::dividend#0 dividend zp[2]:7 70001.0 (word) divr16s::dividendu -(signed word) divr16s::dividendu#1 dividendu zp[2]:7 2.0 -(word) divr16s::dividendu#3 dividendu zp[2]:7 0.8571428571428571 -(word) divr16s::dividendu#7 dividendu zp[2]:7 4.0 -(word) divr16s::dividendu#8 dividendu zp[2]:7 4.0 +(signed word) divr16s::dividendu#1 dividendu zp[2]:7 100001.0 +(word) divr16s::dividendu#3 dividendu zp[2]:7 42857.57142857143 +(word) divr16s::dividendu#7 dividendu zp[2]:7 200002.0 +(word) divr16s::dividendu#8 dividendu zp[2]:7 200002.0 (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 divisor zp[2]:9 0.8571428571428571 +(signed word) divr16s::divisor#0 divisor zp[2]:9 30000.428571428572 (word) divr16s::divisoru -(signed word) divr16s::divisoru#1 divisoru zp[2]:9 1.0 -(word) divr16s::divisoru#3 divisoru zp[2]:9 3.0 -(word) divr16s::divisoru#4 divisoru zp[2]:9 4.0 -(word) divr16s::divisoru#5 divisoru zp[2]:9 4.0 +(signed word) divr16s::divisoru#1 divisoru zp[2]:9 50000.5 +(word) divr16s::divisoru#3 divisoru zp[2]:9 150001.5 +(word) divr16s::divisoru#4 divisoru zp[2]:9 200002.0 +(word) divr16s::divisoru#5 divisoru zp[2]:9 200002.0 (byte) divr16s::neg -(byte) divr16s::neg#2 reg byte y 2.0 -(byte) divr16s::neg#3 reg byte y 1.0 -(byte) divr16s::neg#4 reg byte y 1.0 +(byte) divr16s::neg#2 reg byte y 100001.0 +(byte) divr16s::neg#3 reg byte y 50000.5 +(byte) divr16s::neg#4 reg byte y 50000.5 (signed word) divr16s::rem (word) divr16s::remu (word) divr16s::resultu -(word) divr16s::resultu#0 resultu zp[2]:11 0.5 +(word) divr16s::resultu#0 resultu zp[2]:11 25000.25 (signed word) divr16s::return -(signed word) divr16s::return#1 return zp[2]:11 4.0 -(signed word) divr16s::return#2 return zp[2]:11 2.0 -(signed word) divr16s::return#3 return zp[2]:11 4.0 -(signed word) divr16s::return#7 return zp[2]:11 2.0 +(signed word) divr16s::return#1 return zp[2]:11 200002.0 +(signed word) divr16s::return#2 return zp[2]:11 70001.0 +(signed word) divr16s::return#3 return zp[2]:11 20002.0 +(signed word) divr16s::return#7 return zp[2]:11 100001.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) -(byte~) divr16u::$1 reg byte a 202.0 -(byte~) divr16u::$2 reg byte a 202.0 +(byte~) divr16u::$1 reg byte a 2.00000002E8 +(byte~) divr16u::$2 reg byte a 2.00000002E8 (label) divr16u::@1 (label) divr16u::@2 (label) divr16u::@3 @@ -127,35 +127,35 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:7 25.25 -(word) divr16u::dividend#1 dividend zp[2]:7 2.0 -(word) divr16u::dividend#2 dividend zp[2]:7 2.0 -(word) divr16u::dividend#3 dividend zp[2]:7 43.57142857142858 -(word) divr16u::dividend#5 dividend zp[2]:7 6.0 +(word) divr16u::dividend#0 dividend zp[2]:7 2.500000025E7 +(word) divr16u::dividend#1 dividend zp[2]:7 10001.0 +(word) divr16u::dividend#2 dividend zp[2]:7 100001.0 +(word) divr16u::dividend#3 dividend zp[2]:7 4.300000057142857E7 +(word) divr16u::dividend#5 dividend zp[2]:7 1110003.0 (word) divr16u::divisor -(word) divr16u::divisor#0 divisor zp[2]:9 4.0 -(word) divr16u::divisor#1 divisor zp[2]:9 4.0 -(word) divr16u::divisor#6 divisor zp[2]:9 12.875 +(word) divr16u::divisor#0 divisor zp[2]:9 20002.0 +(word) divr16u::divisor#1 divisor zp[2]:9 200002.0 +(word) divr16u::divisor#6 divisor zp[2]:9 1.250687525E7 (byte) divr16u::i -(byte) divr16u::i#1 reg byte x 151.5 -(byte) divr16u::i#2 reg byte x 15.538461538461538 +(byte) divr16u::i#1 reg byte x 1.500000015E8 +(byte) divr16u::i#2 reg byte x 1.5384615538461538E7 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:11 151.5 -(word) divr16u::quotient#2 quotient zp[2]:11 101.0 -(word) divr16u::quotient#3 quotient zp[2]:11 25.25 +(word) divr16u::quotient#1 quotient zp[2]:11 1.500000015E8 +(word) divr16u::quotient#2 quotient zp[2]:11 1.00000001E8 +(word) divr16u::quotient#3 quotient zp[2]:11 2.500000025E7 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:13 75.75 -(word) divr16u::rem#1 rem zp[2]:13 202.0 -(word) divr16u::rem#11 rem zp[2]:13 101.66666666666667 -(word) divr16u::rem#2 rem zp[2]:13 202.0 -(word) divr16u::rem#5 rem zp[2]:13 202.0 -(word) divr16u::rem#6 rem zp[2]:13 101.0 +(word) divr16u::rem#0 rem zp[2]:13 7.500000075E7 +(word) divr16u::rem#1 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#11 rem zp[2]:13 1.0033333466666667E8 +(word) divr16u::rem#2 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#5 rem zp[2]:13 2.00000002E8 +(word) divr16u::rem#6 rem zp[2]:13 1.00000001E8 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:11 43.85714285714286 -(word) divr16u::return#2 return zp[2]:11 4.0 -(word) divr16u::return#3 return zp[2]:11 4.0 +(word) divr16u::return#0 return zp[2]:11 4.2872857857142866E7 +(word) divr16u::return#2 return zp[2]:11 20002.0 +(word) divr16u::return#3 return zp[2]:11 200002.0 (byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) -(byte~) divr8u::$1 reg byte a 202.0 +(byte~) divr8u::$1 reg byte a 2.00000002E8 (label) divr8u::@1 (label) divr8u::@2 (label) divr8u::@3 @@ -164,28 +164,28 @@ (label) divr8u::@6 (label) divr8u::@return (byte) divr8u::dividend -(byte) divr8u::dividend#0 dividend zp[1]:22 1.3333333333333333 -(byte) divr8u::dividend#1 dividend zp[1]:22 25.25 -(byte) divr8u::dividend#2 dividend zp[1]:22 50.83333333333333 +(byte) divr8u::dividend#0 dividend zp[1]:22 366667.3333333334 +(byte) divr8u::dividend#1 dividend zp[1]:22 2.500000025E7 +(byte) divr8u::dividend#2 dividend zp[1]:22 5.0166667333333336E7 (byte) divr8u::divisor -(byte) divr8u::divisor#0 divisor zp[1]:23 12.75 +(byte) divr8u::divisor#0 divisor zp[1]:23 1.25062501875E7 (byte) divr8u::i -(byte) divr8u::i#1 reg byte x 151.5 -(byte) divr8u::i#2 reg byte x 16.833333333333332 +(byte) divr8u::i#1 reg byte x 1.500000015E8 +(byte) divr8u::i#2 reg byte x 1.6666666833333334E7 (byte) divr8u::quotient -(byte) divr8u::quotient#1 quotient zp[1]:24 151.5 -(byte) divr8u::quotient#2 quotient zp[1]:24 101.0 -(byte) divr8u::quotient#3 quotient zp[1]:24 28.857142857142858 +(byte) divr8u::quotient#1 quotient zp[1]:24 1.500000015E8 +(byte) divr8u::quotient#2 quotient zp[1]:24 1.00000001E8 +(byte) divr8u::quotient#3 quotient zp[1]:24 2.857142885714286E7 (byte) divr8u::rem -(byte) divr8u::rem#1 reg byte y 101.0 -(byte) divr8u::rem#10 reg byte y 101.66666666666667 -(byte) divr8u::rem#2 reg byte y 202.0 -(byte) divr8u::rem#3 reg byte y 202.0 -(byte) divr8u::rem#4 reg byte y 202.0 -(byte) divr8u::rem#5 reg byte y 101.0 +(byte) divr8u::rem#1 reg byte y 1.00000001E8 +(byte) divr8u::rem#10 reg byte y 1.0033333466666667E8 +(byte) divr8u::rem#2 reg byte y 2.00000002E8 +(byte) divr8u::rem#3 reg byte y 2.00000002E8 +(byte) divr8u::rem#4 reg byte y 2.00000002E8 +(byte) divr8u::rem#5 reg byte y 1.00000001E8 (byte) divr8u::return -(byte) divr8u::return#0 reg byte a 4.0 -(byte) divr8u::return#1 return zp[1]:24 50.83333333333333 +(byte) divr8u::return#0 reg byte a 200002.0 +(byte) divr8u::return#1 return zp[1]:24 5.0016667333333336E7 (void()) main() (label) main::@1 (label) main::@2 @@ -199,8 +199,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:17 22.0 -(byte*) memset::dst#2 dst zp[2]:17 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:17 20002.0 +(byte*) memset::dst#2 dst zp[2]:17 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -209,47 +209,47 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte a 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:6 4.0 -(byte) print_byte::b#1 b zp[1]:6 4.0 -(byte) print_byte::b#2 b zp[1]:6 4.0 -(byte) print_byte::b#3 b zp[1]:6 22.0 -(byte) print_byte::b#4 b zp[1]:6 22.0 -(byte) print_byte::b#5 b zp[1]:6 22.0 -(byte) print_byte::b#6 b zp[1]:6 22.0 -(byte) print_byte::b#7 b zp[1]:6 13.5 +(byte) print_byte::b#0 b zp[1]:6 20002.0 +(byte) print_byte::b#1 b zp[1]:6 200002.0 +(byte) print_byte::b#2 b zp[1]:6 200002.0 +(byte) print_byte::b#3 b zp[1]:6 2002.0 +(byte) print_byte::b#4 b zp[1]:6 2002.0 +(byte) print_byte::b#5 b zp[1]:6 2002.0 +(byte) print_byte::b#6 b zp[1]:6 2002.0 +(byte) print_byte::b#7 b zp[1]:6 553502.25 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2000002.0 +(byte) print_char::ch#5 reg byte a 2000002.0 +(byte) print_char::ch#6 reg byte a 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 101.0 -(byte*) print_char_cursor#130 print_char_cursor zp[2]:4 15.607142857142856 -(byte*) print_char_cursor#132 print_char_cursor zp[2]:4 12.0 -(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 12.0 -(byte*) print_char_cursor#138 print_char_cursor zp[2]:4 24.0 -(byte*) print_char_cursor#139 print_char_cursor zp[2]:4 17.333333333333332 -(byte*) print_char_cursor#141 print_char_cursor zp[2]:4 2.4444444444444446 -(byte*) print_char_cursor#163 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#167 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#172 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 22.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 1.8225806451612903 -(byte*) print_char_cursor#84 print_char_cursor zp[2]:4 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 1000001.0 +(byte*) print_char_cursor#130 print_char_cursor zp[2]:4 107929.14285714284 +(byte*) print_char_cursor#132 print_char_cursor zp[2]:4 6001.5 +(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 6001.5 +(byte*) print_char_cursor#138 print_char_cursor zp[2]:4 57003.0 +(byte*) print_char_cursor#139 print_char_cursor zp[2]:4 404669.3333333335 +(byte*) print_char_cursor#141 print_char_cursor zp[2]:4 222.44444444444446 +(byte*) print_char_cursor#163 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#167 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#172 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 195645.2741935484 +(byte*) print_char_cursor#84 print_char_cursor zp[2]:4 1.1020004E7 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3.833333333333334 -(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 204.0 -(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 46.0 -(byte*) print_line_cursor#41 print_line_cursor zp[2]:2 0.9565217391304348 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 29490.30392156863 +(byte*) print_line_cursor#20 print_line_cursor zp[2]:2 2010003.0 +(byte*) print_line_cursor#39 print_line_cursor zp[2]:2 14005.0 +(byte*) print_line_cursor#41 print_line_cursor zp[2]:2 87.04347826086956 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -260,22 +260,22 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp[1]:6 4.0 -(signed byte) print_sbyte::b#1 b zp[1]:6 11.0 -(signed byte) print_sbyte::b#10 b zp[1]:6 8.333333333333332 -(signed byte) print_sbyte::b#2 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#3 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#4 b zp[1]:6 22.0 -(signed byte) print_sbyte::b#7 b zp[1]:6 4.0 +(signed byte) print_sbyte::b#0 b zp[1]:6 20002.0 +(signed byte) print_sbyte::b#1 b zp[1]:6 1001.0 +(signed byte) print_sbyte::b#10 b zp[1]:6 5667.833333333333 +(signed byte) print_sbyte::b#2 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#3 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#4 b zp[1]:6 2002.0 +(signed byte) print_sbyte::b#7 b zp[1]:6 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:7 202.0 -(byte*) print_str::str#13 str zp[2]:7 101.5 -(byte*) print_str::str#15 str zp[2]:7 2.0 +(byte*) print_str::str#0 str zp[2]:7 2000002.0 +(byte*) print_str::str#13 str zp[2]:7 1002501.25 +(byte*) print_str::str#15 str zp[2]:7 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -283,40 +283,40 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:17 4.0 -(signed word) print_sword::w#1 w zp[2]:17 11.0 -(signed word) print_sword::w#10 w zp[2]:17 8.333333333333332 -(signed word) print_sword::w#2 w zp[2]:17 22.0 -(signed word) print_sword::w#3 w zp[2]:17 22.0 -(signed word) print_sword::w#4 w zp[2]:17 22.0 -(signed word) print_sword::w#7 w zp[2]:17 4.0 +(signed word) print_sword::w#0 w zp[2]:17 20002.0 +(signed word) print_sword::w#1 w zp[2]:17 1001.0 +(signed word) print_sword::w#10 w zp[2]:17 5667.833333333333 +(signed word) print_sword::w#2 w zp[2]:17 2002.0 +(signed word) print_sword::w#3 w zp[2]:17 2002.0 +(signed word) print_sword::w#4 w zp[2]:17 2002.0 +(signed word) print_sword::w#7 w zp[2]:17 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:17 4.0 -(word) print_word::w#1 w zp[2]:17 11.0 -(word) print_word::w#2 w zp[2]:17 22.0 -(word) print_word::w#3 w zp[2]:17 22.0 -(word) print_word::w#4 w zp[2]:17 22.0 -(word) print_word::w#5 w zp[2]:17 16.666666666666664 +(word) print_word::w#0 w zp[2]:17 20002.0 +(word) print_word::w#1 w zp[2]:17 1001.0 +(word) print_word::w#2 w zp[2]:17 2002.0 +(word) print_word::w#3 w zp[2]:17 2002.0 +(word) print_word::w#4 w zp[2]:17 2002.0 +(word) print_word::w#5 w zp[2]:17 71335.66666666666 (signed word) rem16s -(signed word) rem16s#11 rem16s zp[2]:13 0.6818181818181819 -(signed word) rem16s#2 rem16s zp[2]:13 2.0 -(signed word) rem16s#37 rem16s zp[2]:13 4.0 +(signed word) rem16s#11 rem16s zp[2]:13 9136.5 +(signed word) rem16s#2 rem16s zp[2]:13 100001.0 +(signed word) rem16s#37 rem16s zp[2]:13 200002.0 (word) rem16u -(word) rem16u#1 rem16u zp[2]:13 0.48148148148148145 +(word) rem16u#1 rem16u zp[2]:13 37074.148148148146 (signed byte) rem8s -(signed byte) rem8s#2 reg byte x 2.0 -(signed byte) rem8s#3 reg byte x 0.8333333333333335 -(signed byte) rem8s#33 reg byte x 4.0 +(signed byte) rem8s#2 reg byte x 10001.0 +(signed byte) rem8s#3 reg byte x 1166.8333333333333 +(signed byte) rem8s#33 reg byte x 20002.0 (byte) rem8u -(byte) rem8u#17 reg byte x 0.5 +(byte) rem8u#17 reg byte x 38500.07692307692 (const byte*) str[(byte) 4] = (byte*) " / " (const byte*) str1[(byte) 4] = (byte*) " = " (const byte*) str2[(byte) 2] = (byte*) " " (void()) test_16s() -(byte~) test_16s::$11 reg byte x 16.5 +(byte~) test_16s::$11 reg byte x 1501.5 (label) test_16s::@1 (label) test_16s::@10 (label) test_16s::@2 @@ -329,18 +329,18 @@ (label) test_16s::@9 (label) test_16s::@return (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 dividend zp[2]:17 4.714285714285714 +(signed word) test_16s::dividend#0 dividend zp[2]:17 429.0 (const signed word*) test_16s::dividends[] = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff } (signed word) test_16s::divisor -(signed word) test_16s::divisor#0 divisor zp[2]:19 3.0 +(signed word) test_16s::divisor#0 divisor zp[2]:19 273.0 (const signed word*) test_16s::divisors[] = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 } (byte) test_16s::i -(byte) test_16s::i#1 i zp[1]:15 16.5 -(byte) test_16s::i#10 i zp[1]:15 1.2692307692307692 +(byte) test_16s::i#1 i zp[1]:15 1501.5 +(byte) test_16s::i#10 i zp[1]:15 115.5 (signed word) test_16s::res -(signed word) test_16s::res#0 res zp[2]:11 2.2 +(signed word) test_16s::res#0 res zp[2]:11 200.2 (void()) test_16u() -(byte~) test_16u::$11 reg byte x 16.5 +(byte~) test_16u::$11 reg byte x 1501.5 (label) test_16u::@1 (label) test_16u::@10 (label) test_16u::@2 @@ -353,16 +353,16 @@ (label) test_16u::@9 (label) test_16u::@return (word) test_16u::dividend -(word) test_16u::dividend#0 dividend zp[2]:17 4.714285714285714 +(word) test_16u::dividend#0 dividend zp[2]:17 429.0 (const word*) test_16u::dividends[] = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff } (word) test_16u::divisor -(word) test_16u::divisor#0 divisor zp[2]:9 3.0 +(word) test_16u::divisor#0 divisor zp[2]:9 273.0 (const word*) test_16u::divisors[] = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 } (byte) test_16u::i -(byte) test_16u::i#1 i zp[1]:16 16.5 -(byte) test_16u::i#10 i zp[1]:16 1.2692307692307692 +(byte) test_16u::i#1 i zp[1]:16 1501.5 +(byte) test_16u::i#10 i zp[1]:16 115.5 (word) test_16u::res -(word) test_16u::res#0 res zp[2]:11 2.2 +(word) test_16u::res#0 res zp[2]:11 200.2 (void()) test_8s() (label) test_8s::@1 (label) test_8s::@10 @@ -376,16 +376,16 @@ (label) test_8s::@9 (label) test_8s::@return (signed byte) test_8s::dividend -(signed byte) test_8s::dividend#0 dividend zp[1]:6 4.714285714285714 +(signed byte) test_8s::dividend#0 dividend zp[1]:6 429.0 (const signed byte*) test_8s::dividends[] = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } (signed byte) test_8s::divisor -(signed byte) test_8s::divisor#0 divisor zp[1]:21 3.0 +(signed byte) test_8s::divisor#0 divisor zp[1]:21 273.0 (const signed byte*) test_8s::divisors[] = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 } (byte) test_8s::i -(byte) test_8s::i#1 i zp[1]:15 16.5 -(byte) test_8s::i#10 i zp[1]:15 1.76 +(byte) test_8s::i#1 i zp[1]:15 1501.5 +(byte) test_8s::i#10 i zp[1]:15 160.16 (signed byte) test_8s::res -(signed byte) test_8s::res#0 res zp[1]:22 2.2 +(signed byte) test_8s::res#0 res zp[1]:22 200.2 (void()) test_8u() (label) test_8u::@1 (label) test_8u::@10 @@ -400,16 +400,16 @@ (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp[1]:6 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp[1]:6 429.0 (const byte*) test_8u::dividends[] = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } (byte) test_8u::divisor -(byte) test_8u::divisor#0 divisor zp[1]:23 3.3000000000000003 +(byte) test_8u::divisor#0 divisor zp[1]:23 300.29999999999995 (const byte*) test_8u::divisors[] = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 } (byte) test_8u::i -(byte) test_8u::i#1 i zp[1]:21 11.0 -(byte) test_8u::i#10 i zp[1]:21 1.8333333333333333 +(byte) test_8u::i#1 i zp[1]:21 1001.0 +(byte) test_8u::i#10 i zp[1]:21 166.83333333333334 (byte) test_8u::res -(byte) test_8u::res#0 res zp[1]:24 2.4444444444444446 +(byte) test_8u::res#0 res zp[1]:24 222.44444444444446 zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] @@ -422,12 +422,12 @@ zp[2]:11 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::result zp[2]:13 [ rem16s#11 rem16s#2 rem16s#37 divr16s::$16 rem16u#1 divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[1]:15 [ test_8s::i#10 test_8s::i#1 test_16s::i#10 test_16s::i#1 ] -reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] +reg byte x [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] +reg byte a [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] -reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] +reg byte x [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +reg byte a [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp[1]:16 [ test_16u::i#10 test_16u::i#1 div8s::neg#4 div8s::neg#2 div8s::neg#3 ] @@ -439,14 +439,14 @@ reg byte a [ print_byte::$2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] zp[1]:21 [ test_8s::divisor#0 test_8u::i#10 test_8u::i#1 ] -reg byte y [ div8s::dividend#0 ] -reg byte x [ div8s::divisor#0 ] +reg byte x [ div8s::dividend#0 ] +reg byte y [ div8s::divisor#0 ] reg byte a [ div8s::return#3 ] zp[1]:22 [ test_8s::res#0 divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] reg byte a [ div8u::return#2 ] reg byte y [ div8s::resultu#0 ] reg byte a [ div8s::$11 ] -reg byte x [ div8s::divisoru#1 ] +reg byte y [ div8s::divisoru#1 ] reg byte a [ div8s::dividendu#1 ] reg byte a [ divr8u::return#0 ] reg byte a [ div8u::return#0 ] diff --git a/src/test/ref/test-interrupt-notype.log b/src/test/ref/test-interrupt-notype.log index dee1a8f1f..b4174c069 100644 --- a/src/test/ref/test-interrupt-notype.log +++ b/src/test/ref/test-interrupt-notype.log @@ -170,7 +170,7 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a REGISTER UPLIFT SCOPES diff --git a/src/test/ref/test-interrupt-volatile-write.log b/src/test/ref/test-interrupt-volatile-write.log index 01cdae326..75d657388 100644 --- a/src/test/ref/test-interrupt-volatile-write.log +++ b/src/test/ref/test-interrupt-volatile-write.log @@ -171,7 +171,7 @@ irq::@1: scope:[irq] from irq VARIABLE REGISTER WEIGHTS -(byte) col loadstore 15.75 +(byte) col loadstore 139.5 interrupt(KERNEL_MIN)(void()) irq() (void()) main() @@ -267,18 +267,18 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] ) always clobbers reg byte a -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] ) always clobbers reg byte a -Statement [5] if((byte) col<(byte) $a+(byte) 1) goto main::@1 [ col ] ( main:2 [ col ] ) always clobbers reg byte a -Statement [6] (byte) col ← (byte) 0 [ col ] ( main:2 [ col ] ) always clobbers reg byte a +Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a +Statement [5] if((byte) col<(byte) $a+(byte) 1) goto main::@1 [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a +Statement [6] (byte) col ← (byte) 0 [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a -Statement [8] *((const byte*) BGCOL) ← (byte) col [ col ] ( [ col ] ) always clobbers reg byte a -Statement [9] if((byte) col!=(byte) 0) goto irq::@1 [ col ] ( [ col ] ) always clobbers reg byte a -Statement [10] (byte) col ← (byte) col + (byte) 2 [ ] ( [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) BGCOL) ← (byte) col [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [9] if((byte) col!=(byte) 0) goto irq::@1 [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [10] (byte) col ← (byte) col + (byte) 2 [ ] ( [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ col ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 15.75: zp[1]:2 [ col ] +Uplift Scope [] 139.5: zp[1]:2 [ col ] Uplift Scope [main] Uplift Scope [irq] @@ -403,7 +403,7 @@ FINAL SYMBOL TABLE (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 15.75 +(byte) col loadstore zp[1]:2 139.5 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@1 (label) irq::@2 diff --git a/src/test/ref/test-interrupt-volatile-write.sym b/src/test/ref/test-interrupt-volatile-write.sym index bf405db6a..6fb733381 100644 --- a/src/test/ref/test-interrupt-volatile-write.sym +++ b/src/test/ref/test-interrupt-volatile-write.sym @@ -3,7 +3,7 @@ (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 15.75 +(byte) col loadstore zp[1]:2 139.5 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@1 (label) irq::@2 diff --git a/src/test/ref/test-interrupt-volatile.log b/src/test/ref/test-interrupt-volatile.log index 02aaad71d..0be05ef9f 100644 --- a/src/test/ref/test-interrupt-volatile.log +++ b/src/test/ref/test-interrupt-volatile.log @@ -107,7 +107,7 @@ irq::@return: scope:[irq] from irq VARIABLE REGISTER WEIGHTS -(byte) col loadstore 5.200000000000001 +(byte) col loadstore 41.199999999999996 interrupt(KERNEL_MIN)(void()) irq() (void()) main() @@ -176,14 +176,14 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] ) always clobbers reg byte a -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] ) always clobbers reg byte a +Statement [0] (byte) col ← (byte) 0 [ col ] ( [ col ] { } ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ col ] ( main:2 [ col ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a -Statement [7] *((const byte*) BGCOL) ← (byte) col [ ] ( [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) BGCOL) ← (byte) col [ ] ( [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ col ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 5.2: zp[1]:2 [ col ] +Uplift Scope [] 41.2: zp[1]:2 [ col ] Uplift Scope [main] Uplift Scope [irq] @@ -272,7 +272,7 @@ FINAL SYMBOL TABLE (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 5.200000000000001 +(byte) col loadstore zp[1]:2 41.199999999999996 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@return (void()) main() diff --git a/src/test/ref/test-interrupt-volatile.sym b/src/test/ref/test-interrupt-volatile.sym index a99499a41..940cdaaa1 100644 --- a/src/test/ref/test-interrupt-volatile.sym +++ b/src/test/ref/test-interrupt-volatile.sym @@ -3,7 +3,7 @@ (label) @end (const byte*) BGCOL = (byte*) 53280 (const void()**) KERNEL_IRQ = (void()**) 788 -(byte) col loadstore zp[1]:2 5.200000000000001 +(byte) col loadstore zp[1]:2 41.199999999999996 interrupt(KERNEL_MIN)(void()) irq() (label) irq::@return (void()) main() diff --git a/src/test/ref/test-interrupt.log b/src/test/ref/test-interrupt.log index dee1a8f1f..b4174c069 100644 --- a/src/test/ref/test-interrupt.log +++ b/src/test/ref/test-interrupt.log @@ -170,7 +170,7 @@ irq: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { lda$dc0d } always clobbers reg byte a REGISTER UPLIFT SCOPES diff --git a/src/test/ref/test-kasm-pc.log b/src/test/ref/test-kasm-pc.log index de892b7c1..d9d9710e8 100644 --- a/src/test/ref/test-kasm-pc.log +++ b/src/test/ref/test-kasm-pc.log @@ -54,7 +54,7 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 8192 Successful SSA optimization PassNCastSimplification -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -108,8 +108,8 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 16.5 +(byte) main::i#1 202.0 +(byte) main::i#2 151.5 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -174,13 +174,13 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::BORDERCOL) ← *((const byte*) TABLE + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::BORDERCOL) ← *((const byte*) TABLE + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) main::BORDERCOL) ← *((const byte*) TABLE + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::BORDERCOL) ← *((const byte*) TABLE + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 2814 combination reg byte x [ main::i#2 main::i#1 ] @@ -270,8 +270,8 @@ FINAL SYMBOL TABLE (label) main::@2 (const byte*) main::BORDERCOL = (byte*) 53280 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/test-kasm-pc.sym b/src/test/ref/test-kasm-pc.sym index 7b7cf7cb4..cf5edb0f0 100644 --- a/src/test/ref/test-kasm-pc.sym +++ b/src/test/ref/test-kasm-pc.sym @@ -7,7 +7,7 @@ (label) main::@2 (const byte*) main::BORDERCOL = (byte*) 53280 (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 151.5 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log index 31f4b1a9a..a9b97b538 100644 --- a/src/test/ref/test-keyboard-space.log +++ b/src/test/ref/test-keyboard-space.log @@ -209,12 +209,12 @@ Finalized unsigned number type (byte) $ff Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#1 & (byte) 7 -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#3 (byte) keyboard_key_pressed::return#1 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#4 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#3 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#4 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#3 keyboard_key_pressed::return#1 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#4 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Identical Phi Values (byte) keyboard_key_pressed::key#1 (byte) keyboard_key_pressed::key#0 @@ -346,21 +346,21 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS (void()) keyboard_init() (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 2002.0 (byte) keyboard_key_pressed::colidx (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 4.333333333333333 -(byte) keyboard_key_pressed::return#2 22.0 +(byte) keyboard_key_pressed::return#0 367.33333333333337 +(byte) keyboard_key_pressed::return#2 202.0 (byte) keyboard_key_pressed::rowidx (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 4.0 +(byte) keyboard_matrix_read::return#0 3667.333333333333 +(byte) keyboard_matrix_read::return#2 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (void()) main() -(byte~) main::$2 22.0 +(byte~) main::$2 202.0 Initial phi equivalence classes Added variable keyboard_key_pressed::return#2 to live range equivalence class [ keyboard_key_pressed::return#2 ] @@ -547,13 +547,13 @@ keyboard_init: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:8::keyboard_matrix_read:15 [ ] ) always clobbers reg byte a -Statement [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:8::keyboard_matrix_read:15 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [23] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) BGCOL) ← (const byte) GREEN [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:8::keyboard_matrix_read:15 [ ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:8::keyboard_matrix_read:15 [ keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [23] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ keyboard_key_pressed::return#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ keyboard_matrix_read::return#2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -562,15 +562,15 @@ Potential registers zp[1]:6 [ keyboard_key_pressed::return#0 ] : zp[1]:6 , reg b Potential registers zp[1]:7 [ keyboard_matrix_read::return#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_key_pressed] 22: zp[1]:2 [ keyboard_key_pressed::return#2 ] 4.33: zp[1]:6 [ keyboard_key_pressed::return#0 ] 4: zp[1]:5 [ keyboard_key_pressed::$2 ] -Uplift Scope [main] 22: zp[1]:3 [ main::$2 ] -Uplift Scope [keyboard_matrix_read] 4: zp[1]:4 [ keyboard_matrix_read::return#2 ] 1.33: zp[1]:7 [ keyboard_matrix_read::return#0 ] +Uplift Scope [keyboard_matrix_read] 3,667.33: zp[1]:7 [ keyboard_matrix_read::return#0 ] 2,002: zp[1]:4 [ keyboard_matrix_read::return#2 ] +Uplift Scope [keyboard_key_pressed] 2,002: zp[1]:5 [ keyboard_key_pressed::$2 ] 367.33: zp[1]:6 [ keyboard_key_pressed::return#0 ] 202: zp[1]:2 [ keyboard_key_pressed::return#2 ] +Uplift Scope [main] 202: zp[1]:3 [ main::$2 ] Uplift Scope [keyboard_init] Uplift Scope [] -Uplifting [keyboard_key_pressed] best 1330 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::$2 ] -Uplifting [main] best 1270 combination reg byte a [ main::$2 ] -Uplifting [keyboard_matrix_read] best 1258 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [keyboard_matrix_read] best 1417 combination reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_key_pressed] best 1318 combination reg byte a [ keyboard_key_pressed::$2 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::return#2 ] +Uplifting [main] best 1258 combination reg byte a [ main::$2 ] Uplifting [keyboard_init] best 1258 combination Uplifting [] best 1258 combination @@ -768,28 +768,28 @@ FINAL SYMBOL TABLE (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 4.333333333333333 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 367.33333333333337 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/test-keyboard-space.sym b/src/test/ref/test-keyboard-space.sym index d39d83cf3..7b4cedbbc 100644 --- a/src/test/ref/test-keyboard-space.sym +++ b/src/test/ref/test-keyboard-space.sym @@ -13,28 +13,28 @@ (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 2002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx (const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7 (byte) keyboard_key_pressed::key (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 4.333333333333333 -(byte) keyboard_key_pressed::return#2 reg byte a 22.0 +(byte) keyboard_key_pressed::return#0 reg byte a 367.33333333333337 +(byte) keyboard_key_pressed::return#2 reg byte a 202.0 (byte) keyboard_key_pressed::rowidx (const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 +(byte) keyboard_matrix_read::return#0 reg byte a 3667.333333333333 +(byte) keyboard_matrix_read::return#2 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 diff --git a/src/test/ref/test-keyboard.asm b/src/test/ref/test-keyboard.asm index 49364c8db..5a9b3e859 100644 --- a/src/test/ref/test-keyboard.asm +++ b/src/test/ref/test-keyboard.asm @@ -66,6 +66,8 @@ main: { .label screen = 5 .label row = 4 .label ch = 7 + // Checks all specific chars $00-$3f + .label i = 8 lda #<$400 sta.z sc lda #>$400 @@ -102,7 +104,7 @@ main: { // Read & print keyboard matrix __b5: // keyboard_matrix_read(row) - ldy.z row + ldx.z row jsr keyboard_matrix_read // keyboard_matrix_read(row) // row_pressed_bits = keyboard_matrix_read(row) @@ -148,30 +150,29 @@ main: { bcc !+ inc.z screen+1 !: - ldx #0 - txa + lda #0 + sta.z i sta.z ch __b12: // keyboard_get_keycode(ch) - ldy.z ch + ldx.z ch jsr keyboard_get_keycode // key = keyboard_get_keycode(ch) // if(key!=$3f) cmp #$3f beq __b13 // keyboard_key_pressed(key) - tay + tax jsr keyboard_key_pressed // if(keyboard_key_pressed(key)!=0) cmp #0 beq __b13 // screen[i++] = ch - txa - tay lda.z ch + ldy.z i sta (screen),y // screen[i++] = ch; - inx + inc.z i __b13: // for( byte ch : 0..$3f ) inc.z ch @@ -181,14 +182,14 @@ main: { b1: // Add some spaces // screen[i++] = ' ' - txa - tay lda #' ' + ldy.z i sta (screen),y // screen[i++] = ' '; - inx + inc.z i // while (i<5) - cpx #5 + lda.z i + cmp #5 bcc b1 jmp __b4 __b7: @@ -212,24 +213,22 @@ main: { // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed -// keyboard_key_pressed(byte register(Y) key) +// keyboard_key_pressed(byte register(X) key) keyboard_key_pressed: { - .label colidx = 8 // colidx = key&7 - tya + txa and #7 - sta.z colidx + tay // rowidx = key>>3 - tya + txa lsr lsr lsr // keyboard_matrix_read(rowidx) - tay + tax jsr keyboard_matrix_read // keyboard_matrix_read(rowidx) // keyboard_matrix_read(rowidx) & keyboard_matrix_col_bitmask[colidx] - ldy.z colidx and keyboard_matrix_col_bitmask,y // } rts @@ -239,10 +238,10 @@ keyboard_key_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(Y) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { // *CIA1_PORT_A = keyboard_matrix_row_bitmask[rowid] - lda keyboard_matrix_row_bitmask,y + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A // ~*CIA1_PORT_B lda CIA1_PORT_B @@ -254,10 +253,10 @@ keyboard_matrix_read: { // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . -// keyboard_get_keycode(byte register(Y) ch) +// keyboard_get_keycode(byte register(X) ch) keyboard_get_keycode: { // return keyboard_char_keycodes[ch]; - lda keyboard_char_keycodes,y + lda keyboard_char_keycodes,x // } rts } diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log index e9b86a323..ad01c61c8 100644 --- a/src/test/ref/test-keyboard.log +++ b/src/test/ref/test-keyboard.log @@ -544,39 +544,39 @@ Inferred type updated to byte in (unumber~) main::$6 ← (byte) main::row_presse Inversing boolean not [85] (bool~) main::$13 ← (byte) main::key#0 == (byte) $3f from [84] (bool~) main::$12 ← (byte) main::key#0 != (byte) $3f Inversing boolean not [98] (bool~) main::$16 ← (byte~) main::$14 == (byte) 0 from [97] (bool~) main::$15 ← (byte~) main::$14 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#4 (byte) keyboard_matrix_read::return#1 -Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 -Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 -Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#5 -Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#3 (byte) keyboard_key_pressed::return#1 -Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1 -Alias (byte*) main::sc#2 = (byte*) main::sc#3 -Alias (byte) keyboard_matrix_read::return#3 = (byte) keyboard_matrix_read::return#6 -Alias (byte*) main::screen#13 = (byte*) main::screen#16 -Alias (byte) main::row#2 = (byte) main::row#8 -Alias (byte) main::row_pressed_bits#0 = (byte~) main::$3 -Alias (byte*) main::screen#3 = (byte*) main::screen#9 (byte*) main::screen#4 -Alias (byte) main::col#2 = (byte) main::col#5 (byte) main::col#3 -Alias (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#4 (byte) main::row_pressed_bits#5 -Alias (byte) main::row#5 = (byte) main::row#7 (byte) main::row#6 -Alias (byte) main::row_pressed_bits#1 = (byte~) main::$6 -Alias (byte*) main::screen#10 = (byte*) main::screen#5 -Alias (byte) main::row#3 = (byte) main::row#4 -Alias (byte*) main::screen#1 = (byte*~) main::$8 (byte*) main::screen#6 -Alias (byte*) main::screen#2 = (byte*~) main::$10 -Alias (byte) keyboard_get_keycode::return#2 = (byte) keyboard_get_keycode::return#4 -Alias (byte) main::ch#2 = (byte) main::ch#5 (byte) main::ch#7 (byte) main::ch#6 (byte) main::ch#4 -Alias (byte*) main::screen#11 = (byte*) main::screen#14 (byte*) main::screen#17 (byte*) main::screen#15 (byte*) main::screen#7 -Alias (byte) main::i#3 = (byte) main::i#7 (byte) main::i#9 (byte) main::i#8 (byte) main::i#5 -Alias (byte) main::key#0 = (byte~) main::$11 (byte) main::key#1 -Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#4 +Alias keyboard_matrix_read::return#0 = keyboard_matrix_read::row_pressed_bits#0 keyboard_matrix_read::$0 keyboard_matrix_read::return#4 keyboard_matrix_read::return#1 +Alias keyboard_key_pressed::colidx#0 = keyboard_key_pressed::$0 keyboard_key_pressed::colidx#1 +Alias keyboard_key_pressed::rowidx#0 = keyboard_key_pressed::$1 +Alias keyboard_matrix_read::return#2 = keyboard_matrix_read::return#5 +Alias keyboard_key_pressed::return#0 = keyboard_key_pressed::$3 keyboard_key_pressed::return#3 keyboard_key_pressed::return#1 +Alias keyboard_get_keycode::return#0 = keyboard_get_keycode::return#3 keyboard_get_keycode::return#1 +Alias main::sc#2 = main::sc#3 +Alias keyboard_matrix_read::return#3 = keyboard_matrix_read::return#6 +Alias main::screen#13 = main::screen#16 +Alias main::row#2 = main::row#8 +Alias main::row_pressed_bits#0 = main::$3 +Alias main::screen#3 = main::screen#9 main::screen#4 +Alias main::col#2 = main::col#5 main::col#3 +Alias main::row_pressed_bits#2 = main::row_pressed_bits#4 main::row_pressed_bits#5 +Alias main::row#5 = main::row#7 main::row#6 +Alias main::row_pressed_bits#1 = main::$6 +Alias main::screen#10 = main::screen#5 +Alias main::row#3 = main::row#4 +Alias main::screen#1 = main::$8 main::screen#6 +Alias main::screen#2 = main::$10 +Alias keyboard_get_keycode::return#2 = keyboard_get_keycode::return#4 +Alias main::ch#2 = main::ch#5 main::ch#7 main::ch#6 main::ch#4 +Alias main::screen#11 = main::screen#14 main::screen#17 main::screen#15 main::screen#7 +Alias main::i#3 = main::i#7 main::i#9 main::i#8 main::i#5 +Alias main::key#0 = main::$11 main::key#1 +Alias keyboard_key_pressed::return#2 = keyboard_key_pressed::return#4 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#3 -Alias (byte) main::col#2 = (byte) main::col#4 -Alias (byte*) main::screen#10 = (byte*) main::screen#3 -Alias (byte) main::row#3 = (byte) main::row#5 -Alias (byte) main::ch#2 = (byte) main::ch#3 -Alias (byte*) main::screen#11 = (byte*) main::screen#12 +Alias main::row_pressed_bits#2 = main::row_pressed_bits#3 +Alias main::col#2 = main::col#4 +Alias main::screen#10 = main::screen#3 +Alias main::row#3 = main::row#5 +Alias main::ch#2 = main::ch#3 +Alias main::screen#11 = main::screen#12 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_key_pressed::key#1 (byte) keyboard_key_pressed::key#0 Identical Phi Values (byte) keyboard_get_keycode::ch#1 (byte) keyboard_get_keycode::ch#0 @@ -860,63 +860,63 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 103.0 +(byte) keyboard_get_keycode::ch#0 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 34.33333333333333 -(byte) keyboard_get_keycode::return#2 202.0 +(byte) keyboard_get_keycode::return#0 3667.333333333333 +(byte) keyboard_get_keycode::return#2 2002.0 (void()) keyboard_init() (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 4.0 +(byte~) keyboard_key_pressed::$2 20002.0 (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#0 52.5 +(byte) keyboard_key_pressed::key#0 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 34.33333333333333 -(byte) keyboard_key_pressed::return#2 202.0 +(byte) keyboard_key_pressed::return#0 3667.333333333333 +(byte) keyboard_key_pressed::return#2 2002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 4.0 +(byte) keyboard_key_pressed::rowidx#0 20002.0 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 26.25 -(byte) keyboard_matrix_read::return#2 4.0 -(byte) keyboard_matrix_read::return#3 202.0 +(byte) keyboard_matrix_read::return#0 27750.75 +(byte) keyboard_matrix_read::return#2 20002.0 +(byte) keyboard_matrix_read::return#3 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 4.0 -(byte) keyboard_matrix_read::rowid#1 202.0 -(byte) keyboard_matrix_read::rowid#2 105.0 +(byte) keyboard_matrix_read::rowid#0 20002.0 +(byte) keyboard_matrix_read::rowid#1 2002.0 +(byte) keyboard_matrix_read::rowid#2 111003.0 (void()) main() -(byte~) main::$14 202.0 -(byte~) main::$4 2002.0 +(byte~) main::$14 2002.0 +(byte~) main::$4 20002.0 (byte) main::ch -(byte) main::ch#1 151.5 -(byte) main::ch#2 28.857142857142858 +(byte) main::ch#1 1501.5 +(byte) main::ch#2 286.0 (byte) main::col -(byte) main::col#1 1501.5 -(byte) main::col#2 667.3333333333334 +(byte) main::col#1 15001.5 +(byte) main::col#2 6667.333333333333 (byte) main::i -(byte) main::i#1 202.0 -(byte) main::i#2 151.5 -(byte) main::i#3 42.08333333333333 -(byte) main::i#4 202.0 -(byte) main::i#6 168.33333333333331 +(byte) main::i#1 2002.0 +(byte) main::i#2 1501.5 +(byte) main::i#3 417.08333333333337 +(byte) main::i#4 2002.0 +(byte) main::i#6 1668.3333333333335 (byte) main::key -(byte) main::key#0 151.5 +(byte) main::key#0 1501.5 (byte) main::row -(byte) main::row#1 151.5 -(byte) main::row#2 21.642857142857142 +(byte) main::row#1 1501.5 +(byte) main::row#2 214.5 (byte) main::row_pressed_bits -(byte) main::row_pressed_bits#0 202.0 -(byte) main::row_pressed_bits#1 667.3333333333334 -(byte) main::row_pressed_bits#2 620.8 +(byte) main::row_pressed_bits#0 2002.0 +(byte) main::row_pressed_bits#1 6667.333333333333 +(byte) main::row_pressed_bits#2 6200.8 (byte*) main::sc -(byte*) main::sc#1 22.0 -(byte*) main::sc#2 14.666666666666666 +(byte*) main::sc#1 202.0 +(byte*) main::sc#2 134.66666666666666 (byte*) main::screen -(byte*) main::screen#1 71.0 -(byte*) main::screen#13 169.53846153846155 -(byte*) main::screen#2 10.142857142857142 +(byte*) main::screen#1 701.0 +(byte*) main::screen#13 1692.6153846153845 +(byte*) main::screen#2 100.14285714285714 Initial phi equivalence classes [ main::sc#2 main::sc#1 ] @@ -1474,40 +1474,40 @@ keyboard_init: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [9] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ) always clobbers reg byte a +Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [9] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::row#2 main::row#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::col#2 main::col#1 ] -Statement [22] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte) $28 [ main::row#2 main::screen#1 ] ( main:2 [ main::row#2 main::screen#1 ] ) always clobbers reg byte a -Statement [25] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte) $28 [ main::screen#2 ] ( main:2 [ main::screen#2 ] ) always clobbers reg byte a -Statement [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' [ main::screen#2 main::i#4 ] ( main:2 [ main::screen#2 main::i#4 ] ) always clobbers reg byte a +Statement [22] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte) $28 [ main::row#2 main::screen#1 ] ( main:2 [ main::row#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [25] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte) $28 [ main::screen#2 ] ( main:2 [ main::screen#2 ] { } ) always clobbers reg byte a +Statement [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' [ main::screen#2 main::i#4 ] ( main:2 [ main::screen#2 main::i#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] -Statement [46] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ) always clobbers reg byte a -Statement [47] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:33 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a +Statement [46] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] { } ) always clobbers reg byte a +Statement [47] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:33 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::ch#2 main::ch#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ keyboard_key_pressed::colidx#0 ] -Statement [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [63] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a -Statement [9] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] (byte~) main::$4 ← (byte) main::row_pressed_bits#2 & (byte) $80 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 main::$4 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 main::$4 ] ) always clobbers reg byte a -Statement [18] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ) always clobbers reg byte a -Statement [22] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte) $28 [ main::row#2 main::screen#1 ] ( main:2 [ main::row#2 main::screen#1 ] ) always clobbers reg byte a -Statement [25] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte) $28 [ main::screen#2 ] ( main:2 [ main::screen#2 ] ) always clobbers reg byte a -Statement [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 [ main::screen#2 main::ch#2 main::i#3 ] ( main:2 [ main::screen#2 main::ch#2 main::i#3 ] ) always clobbers reg byte a -Statement [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' [ main::screen#2 main::i#4 ] ( main:2 [ main::screen#2 main::i#4 ] ) always clobbers reg byte a -Statement [46] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ) always clobbers reg byte a -Statement [47] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:33 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a -Statement [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a -Statement [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [63] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 ] { { keyboard_matrix_read::rowid#1 = keyboard_matrix_read::rowid#2 main::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#3 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#1 = keyboard_matrix_read::rowid#2 main::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#3 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [63] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [64] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [6] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a +Statement [9] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$4 ← (byte) main::row_pressed_bits#2 & (byte) $80 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 main::$4 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 main::$4 ] { } ) always clobbers reg byte a +Statement [18] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] { } ) always clobbers reg byte a +Statement [22] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte) $28 [ main::row#2 main::screen#1 ] ( main:2 [ main::row#2 main::screen#1 ] { } ) always clobbers reg byte a +Statement [25] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte) $28 [ main::screen#2 ] ( main:2 [ main::screen#2 ] { } ) always clobbers reg byte a +Statement [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 [ main::screen#2 main::ch#2 main::i#3 ] ( main:2 [ main::screen#2 main::ch#2 main::i#3 ] { } ) always clobbers reg byte a +Statement [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' [ main::screen#2 main::i#4 ] ( main:2 [ main::screen#2 main::i#4 ] { } ) always clobbers reg byte a +Statement [46] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] { } ) always clobbers reg byte a +Statement [47] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y +Statement [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:33 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 ] { { keyboard_matrix_read::rowid#1 = keyboard_matrix_read::rowid#2 main::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#3 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:12 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] { { keyboard_matrix_read::rowid#1 = keyboard_matrix_read::rowid#2 main::row#2 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#3 } } main:2::keyboard_key_pressed:33::keyboard_matrix_read:52 [ main::screen#2 main::ch#2 main::i#3 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] { { keyboard_key_pressed::key#0 = main::key#0 } { keyboard_key_pressed::return#0 = keyboard_key_pressed::return#2 } { keyboard_matrix_read::rowid#0 = keyboard_matrix_read::rowid#2 keyboard_key_pressed::rowidx#0 } { keyboard_matrix_read::return#0 = keyboard_matrix_read::return#2 } } ) always clobbers reg byte a +Statement [63] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a +Statement [64] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:8 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::row#2 main::row#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[2]:5 [ main::screen#13 main::screen#1 ] : zp[2]:5 , @@ -1534,37 +1534,41 @@ Potential registers zp[1]:27 [ keyboard_matrix_read::return#0 ] : zp[1]:27 , reg Potential registers zp[1]:28 [ keyboard_get_keycode::return#0 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2,168.83: zp[1]:8 [ main::col#2 main::col#1 ] 2,002: zp[1]:13 [ main::$4 ] 1,490.13: zp[1]:7 [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] 765.92: zp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] 240.54: zp[2]:5 [ main::screen#13 main::screen#1 ] 202: zp[1]:21 [ main::$14 ] 180.36: zp[1]:9 [ main::ch#2 main::ch#1 ] 173.14: zp[1]:4 [ main::row#2 main::row#1 ] 151.5: zp[1]:18 [ main::key#0 ] 36.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 10.14: zp[2]:14 [ main::screen#2 ] -Uplift Scope [keyboard_matrix_read] 311: zp[1]:11 [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] 202: zp[1]:12 [ keyboard_matrix_read::return#3 ] 26.25: zp[1]:27 [ keyboard_matrix_read::return#0 ] 4: zp[1]:24 [ keyboard_matrix_read::return#2 ] -Uplift Scope [keyboard_get_keycode] 202: zp[1]:17 [ keyboard_get_keycode::return#2 ] 103: zp[1]:16 [ keyboard_get_keycode::ch#0 ] 34.33: zp[1]:28 [ keyboard_get_keycode::return#0 ] -Uplift Scope [keyboard_key_pressed] 202: zp[1]:20 [ keyboard_key_pressed::return#2 ] 52.5: zp[1]:19 [ keyboard_key_pressed::key#0 ] 34.33: zp[1]:26 [ keyboard_key_pressed::return#0 ] 4: zp[1]:23 [ keyboard_key_pressed::rowidx#0 ] 4: zp[1]:25 [ keyboard_key_pressed::$2 ] 0.67: zp[1]:22 [ keyboard_key_pressed::colidx#0 ] +Uplift Scope [keyboard_matrix_read] 133,007: zp[1]:11 [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] 27,750.75: zp[1]:27 [ keyboard_matrix_read::return#0 ] 20,002: zp[1]:24 [ keyboard_matrix_read::return#2 ] 2,002: zp[1]:12 [ keyboard_matrix_read::return#3 ] +Uplift Scope [main] 21,668.83: zp[1]:8 [ main::col#2 main::col#1 ] 20,002: zp[1]:13 [ main::$4 ] 14,870.13: zp[1]:7 [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] 7,590.92: zp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] 2,393.62: zp[2]:5 [ main::screen#13 main::screen#1 ] 2,002: zp[1]:21 [ main::$14 ] 1,787.5: zp[1]:9 [ main::ch#2 main::ch#1 ] 1,716: zp[1]:4 [ main::row#2 main::row#1 ] 1,501.5: zp[1]:18 [ main::key#0 ] 336.67: zp[2]:2 [ main::sc#2 main::sc#1 ] 100.14: zp[2]:14 [ main::screen#2 ] +Uplift Scope [keyboard_key_pressed] 20,002: zp[1]:23 [ keyboard_key_pressed::rowidx#0 ] 20,002: zp[1]:25 [ keyboard_key_pressed::$2 ] 10,501.5: zp[1]:19 [ keyboard_key_pressed::key#0 ] 3,667.33: zp[1]:26 [ keyboard_key_pressed::return#0 ] 3,333.67: zp[1]:22 [ keyboard_key_pressed::colidx#0 ] 2,002: zp[1]:20 [ keyboard_key_pressed::return#2 ] +Uplift Scope [keyboard_get_keycode] 11,002: zp[1]:16 [ keyboard_get_keycode::ch#0 ] 3,667.33: zp[1]:28 [ keyboard_get_keycode::return#0 ] 2,002: zp[1]:17 [ keyboard_get_keycode::return#2 ] Uplift Scope [keyboard_init] Uplift Scope [] -Uplifting [main] best 80258 combination reg byte y [ main::col#2 main::col#1 ] reg byte a [ main::$4 ] reg byte x [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] reg byte x [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] zp[2]:5 [ main::screen#13 main::screen#1 ] zp[1]:21 [ main::$14 ] zp[1]:9 [ main::ch#2 main::ch#1 ] zp[1]:4 [ main::row#2 main::row#1 ] zp[1]:18 [ main::key#0 ] zp[2]:2 [ main::sc#2 main::sc#1 ] zp[2]:14 [ main::screen#2 ] -Limited combination testing to 100 combinations of 15552 possible. -Uplifting [keyboard_matrix_read] best 79240 combination reg byte y [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] reg byte a [ keyboard_matrix_read::return#3 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] +Uplifting [keyboard_matrix_read] best 101340 combination reg byte x [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#3 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [keyboard_get_keycode] best 78034 combination reg byte a [ keyboard_get_keycode::return#2 ] reg byte y [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ] -Uplifting [keyboard_key_pressed] best 76825 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte y [ keyboard_key_pressed::key#0 ] reg byte a [ keyboard_key_pressed::return#0 ] reg byte a [ keyboard_key_pressed::rowidx#0 ] zp[1]:25 [ keyboard_key_pressed::$2 ] zp[1]:22 [ keyboard_key_pressed::colidx#0 ] +Uplifting [main] best 80240 combination reg byte y [ main::col#2 main::col#1 ] reg byte a [ main::$4 ] reg byte x [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] zp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] zp[2]:5 [ main::screen#13 main::screen#1 ] zp[1]:21 [ main::$14 ] zp[1]:9 [ main::ch#2 main::ch#1 ] zp[1]:4 [ main::row#2 main::row#1 ] zp[1]:18 [ main::key#0 ] zp[2]:2 [ main::sc#2 main::sc#1 ] zp[2]:14 [ main::screen#2 ] +Limited combination testing to 100 combinations of 15552 possible. +Uplifting [keyboard_key_pressed] best 79629 combination reg byte a [ keyboard_key_pressed::rowidx#0 ] zp[1]:25 [ keyboard_key_pressed::$2 ] reg byte x [ keyboard_key_pressed::key#0 ] reg byte a [ keyboard_key_pressed::return#0 ] zp[1]:22 [ keyboard_key_pressed::colidx#0 ] zp[1]:20 [ keyboard_key_pressed::return#2 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [keyboard_init] best 76825 combination -Uplifting [] best 76825 combination -Attempting to uplift remaining variables inzp[1]:21 [ main::$14 ] -Uplifting [main] best 76225 combination reg byte a [ main::$14 ] -Attempting to uplift remaining variables inzp[1]:9 [ main::ch#2 main::ch#1 ] -Uplifting [main] best 76225 combination zp[1]:9 [ main::ch#2 main::ch#1 ] -Attempting to uplift remaining variables inzp[1]:4 [ main::row#2 main::row#1 ] -Uplifting [main] best 76225 combination zp[1]:4 [ main::row#2 main::row#1 ] -Attempting to uplift remaining variables inzp[1]:18 [ main::key#0 ] -Uplifting [main] best 75525 combination reg byte a [ main::key#0 ] +Uplifting [keyboard_get_keycode] best 78423 combination reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#0 ] reg byte a [ keyboard_get_keycode::return#2 ] +Uplifting [keyboard_init] best 78423 combination +Uplifting [] best 78423 combination Attempting to uplift remaining variables inzp[1]:25 [ keyboard_key_pressed::$2 ] -Uplifting [keyboard_key_pressed] best 75519 combination reg byte a [ keyboard_key_pressed::$2 ] +Uplifting [keyboard_key_pressed] best 78417 combination reg byte a [ keyboard_key_pressed::$2 ] +Attempting to uplift remaining variables inzp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] +Uplifting [main] best 78417 combination zp[1]:10 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] Attempting to uplift remaining variables inzp[1]:22 [ keyboard_key_pressed::colidx#0 ] -Uplifting [keyboard_key_pressed] best 75519 combination zp[1]:22 [ keyboard_key_pressed::colidx#0 ] +Uplifting [keyboard_key_pressed] best 78415 combination reg byte y [ keyboard_key_pressed::colidx#0 ] +Attempting to uplift remaining variables inzp[1]:20 [ keyboard_key_pressed::return#2 ] +Uplifting [keyboard_key_pressed] best 77815 combination reg byte a [ keyboard_key_pressed::return#2 ] +Attempting to uplift remaining variables inzp[1]:21 [ main::$14 ] +Uplifting [main] best 77215 combination reg byte a [ main::$14 ] +Attempting to uplift remaining variables inzp[1]:9 [ main::ch#2 main::ch#1 ] +Uplifting [main] best 77215 combination zp[1]:9 [ main::ch#2 main::ch#1 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::row#2 main::row#1 ] +Uplifting [main] best 77215 combination zp[1]:4 [ main::row#2 main::row#1 ] +Attempting to uplift remaining variables inzp[1]:18 [ main::key#0 ] +Uplifting [main] best 76515 combination reg byte a [ main::key#0 ] Coalescing zero page register [ zp[2]:5 [ main::screen#13 main::screen#1 ] ] with [ zp[2]:14 [ main::screen#2 ] ] - score: 1 Allocated (was zp[1]:9) zp[1]:7 [ main::ch#2 main::ch#1 ] -Allocated (was zp[1]:22) zp[1]:8 [ keyboard_key_pressed::colidx#0 ] +Allocated (was zp[1]:10) zp[1]:8 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -1655,6 +1659,8 @@ main: { .label screen = 5 .label row = 4 .label ch = 7 + // Checks all specific chars $00-$3f + .label i = 8 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: // [5] phi (byte*) main::sc#2 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -1709,8 +1715,8 @@ main: { jmp __b5 // main::@5 __b5: - // [11] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 - ldy.z row + // [11] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuxx=vbuz1 + ldx.z row // [12] call keyboard_matrix_read // [57] phi from main::@5 to keyboard_matrix_read [phi:main::@5->keyboard_matrix_read] keyboard_matrix_read_from___b5: @@ -1789,8 +1795,9 @@ main: { !: // [26] phi from main::@11 to main::@12 [phi:main::@11->main::@12] __b12_from___b11: - // [26] phi (byte) main::i#3 = (byte) 0 [phi:main::@11->main::@12#0] -- vbuxx=vbuc1 - ldx #0 + // [26] phi (byte) main::i#3 = (byte) 0 [phi:main::@11->main::@12#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [26] phi (byte) main::ch#2 = (byte) 0 [phi:main::@11->main::@12#1] -- vbuz1=vbuc1 lda #0 sta.z ch @@ -1802,8 +1809,8 @@ main: { jmp __b12 // main::@12 __b12: - // [27] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 - ldy.z ch + // [27] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 + ldx.z ch // [28] call keyboard_get_keycode jsr keyboard_get_keycode // [29] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 @@ -1817,8 +1824,8 @@ main: { jmp __b14 // main::@14 __b14: - // [32] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa - tay + // [32] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuxx=vbuaa + tax // [33] call keyboard_key_pressed jsr keyboard_key_pressed // [34] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 @@ -1832,13 +1839,12 @@ main: { jmp __b15 // main::@15 __b15: - // [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 - txa - tay + // [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z ch + ldy.z i sta (screen),y - // [38] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx - inx + // [38] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuz1=_inc_vbuz1 + inc.z i // [39] phi from main::@15 main::@18 main::@19 to main::@13 [phi:main::@15/main::@18/main::@19->main::@13] __b13_from___b15: __b13_from___b18: @@ -1861,15 +1867,15 @@ main: { // Add some spaces // main::@16 __b16: - // [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 - txa - tay + // [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 lda #' ' + ldy.z i sta (screen),y - // [44] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx - inx - // [45] if((byte) main::i#2<(byte) 5) goto main::@16 -- vbuxx_lt_vbuc1_then_la1 - cpx #5 + // [44] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + inc.z i + // [45] if((byte) main::i#2<(byte) 5) goto main::@16 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #5 bcc __b16_from___b16 jmp __b4 // main::@7 @@ -1899,20 +1905,19 @@ main: { // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed -// keyboard_key_pressed(byte register(Y) key) +// keyboard_key_pressed(byte register(X) key) keyboard_key_pressed: { - .label colidx = 8 - // [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte) 7 -- vbuz1=vbuyy_band_vbuc1 - tya + // [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte) 7 -- vbuyy=vbuxx_band_vbuc1 + txa and #7 - sta.z colidx - // [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 -- vbuaa=vbuyy_ror_3 - tya - lsr - lsr - lsr - // [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa tay + // [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 + txa + lsr + lsr + lsr + // [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + tax // [52] call keyboard_matrix_read // [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] keyboard_matrix_read_from_keyboard_key_pressed: @@ -1923,8 +1928,7 @@ keyboard_key_pressed: { // keyboard_key_pressed::@1 __b1: // [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - // [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 - ldy.z colidx + // [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y jmp __breturn // keyboard_key_pressed::@return @@ -1938,10 +1942,10 @@ keyboard_key_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(Y) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - // [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy - lda keyboard_matrix_row_bitmask,y + // [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A // [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B @@ -1957,10 +1961,10 @@ keyboard_matrix_read: { // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . -// keyboard_get_keycode(byte register(Y) ch) +// keyboard_get_keycode(byte register(X) ch) keyboard_get_keycode: { - // [61] (byte) keyboard_get_keycode::return#0 ← *((const byte*) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy - lda keyboard_char_keycodes,y + // [61] (byte) keyboard_get_keycode::return#0 ← *((const byte*) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx + lda keyboard_char_keycodes,x jmp __breturn // keyboard_get_keycode::@return __breturn: @@ -2019,7 +2023,8 @@ Removing instruction jmp __breturn Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction lda #0 with TXA +Removing instruction lda #0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b6_from___b8 with __b6 Replacing label __b5_from___b10 with __b5 Replacing label __b13_from___b18 with __b13 @@ -2073,8 +2078,8 @@ Removing instruction jmp __b12 Succesful ASM optimization Pass5NextJumpElimination Removing instruction __bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [76] bcc __b2 to bcs -Fixing long branch [82] bcc __b2 to bcs +Fixing long branch [78] bcc __b2 to bcs +Fixing long branch [84] bcc __b2 to bcs FINAL SYMBOL TABLE (label) @1 @@ -2139,41 +2144,41 @@ FINAL SYMBOL TABLE (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 reg byte y 103.0 +(byte) keyboard_get_keycode::ch#0 reg byte x 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 reg byte a 34.33333333333333 -(byte) keyboard_get_keycode::return#2 reg byte a 202.0 +(byte) keyboard_get_keycode::return#0 reg byte a 3667.333333333333 +(byte) keyboard_get_keycode::return#2 reg byte a 2002.0 (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 colidx zp[1]:8 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#0 reg byte y 52.5 +(byte) keyboard_key_pressed::key#0 reg byte x 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 34.33333333333333 -(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#0 reg byte a 3667.333333333333 +(byte) keyboard_key_pressed::return#2 reg byte a 2002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 20002.0 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 26.25 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 -(byte) keyboard_matrix_read::return#3 reg byte a 202.0 +(byte) keyboard_matrix_read::return#0 reg byte a 27750.75 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 +(byte) keyboard_matrix_read::return#3 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0 -(byte) keyboard_matrix_read::rowid#1 reg byte y 202.0 -(byte) keyboard_matrix_read::rowid#2 reg byte y 105.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 20002.0 +(byte) keyboard_matrix_read::rowid#1 reg byte x 2002.0 +(byte) keyboard_matrix_read::rowid#2 reg byte x 111003.0 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$14 reg byte a 202.0 -(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$14 reg byte a 2002.0 +(byte~) main::$4 reg byte a 20002.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -2194,33 +2199,33 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (byte) main::ch -(byte) main::ch#1 ch zp[1]:7 151.5 -(byte) main::ch#2 ch zp[1]:7 28.857142857142858 +(byte) main::ch#1 ch zp[1]:7 1501.5 +(byte) main::ch#2 ch zp[1]:7 286.0 (byte) main::col -(byte) main::col#1 reg byte y 1501.5 -(byte) main::col#2 reg byte y 667.3333333333334 +(byte) main::col#1 reg byte y 15001.5 +(byte) main::col#2 reg byte y 6667.333333333333 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 151.5 -(byte) main::i#3 reg byte x 42.08333333333333 -(byte) main::i#4 reg byte x 202.0 -(byte) main::i#6 reg byte x 168.33333333333331 +(byte) main::i#1 i zp[1]:8 2002.0 +(byte) main::i#2 i zp[1]:8 1501.5 +(byte) main::i#3 i zp[1]:8 417.08333333333337 +(byte) main::i#4 i zp[1]:8 2002.0 +(byte) main::i#6 i zp[1]:8 1668.3333333333335 (byte) main::key -(byte) main::key#0 reg byte a 151.5 +(byte) main::key#0 reg byte a 1501.5 (byte) main::row -(byte) main::row#1 row zp[1]:4 151.5 -(byte) main::row#2 row zp[1]:4 21.642857142857142 +(byte) main::row#1 row zp[1]:4 1501.5 +(byte) main::row#2 row zp[1]:4 214.5 (byte) main::row_pressed_bits -(byte) main::row_pressed_bits#0 reg byte x 202.0 -(byte) main::row_pressed_bits#1 reg byte x 667.3333333333334 -(byte) main::row_pressed_bits#2 reg byte x 620.8 +(byte) main::row_pressed_bits#0 reg byte x 2002.0 +(byte) main::row_pressed_bits#1 reg byte x 6667.333333333333 +(byte) main::row_pressed_bits#2 reg byte x 6200.8 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:5 71.0 -(byte*) main::screen#13 screen zp[2]:5 169.53846153846155 -(byte*) main::screen#2 screen zp[2]:5 10.142857142857142 +(byte*) main::screen#1 screen zp[2]:5 701.0 +(byte*) main::screen#13 screen zp[2]:5 1692.6153846153845 +(byte*) main::screen#2 screen zp[2]:5 100.14285714285714 zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::row#2 main::row#1 ] @@ -2228,17 +2233,17 @@ zp[2]:5 [ main::screen#13 main::screen#1 main::screen#2 ] reg byte x [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] reg byte y [ main::col#2 main::col#1 ] zp[1]:7 [ main::ch#2 main::ch#1 ] -reg byte x [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] -reg byte y [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] +zp[1]:8 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] +reg byte x [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] reg byte a [ keyboard_matrix_read::return#3 ] reg byte a [ main::$4 ] -reg byte y [ keyboard_get_keycode::ch#0 ] +reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#2 ] reg byte a [ main::key#0 ] -reg byte y [ keyboard_key_pressed::key#0 ] +reg byte x [ keyboard_key_pressed::key#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ main::$14 ] -zp[1]:8 [ keyboard_key_pressed::colidx#0 ] +reg byte y [ keyboard_key_pressed::colidx#0 ] reg byte a [ keyboard_key_pressed::rowidx#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] @@ -2248,7 +2253,7 @@ reg byte a [ keyboard_get_keycode::return#0 ] FINAL ASSEMBLER -Score: 56911 +Score: 57707 // File Comments // Test keyboard input - in the keyboard matrix and mapping screen codes to key codes @@ -2329,6 +2334,8 @@ main: { .label screen = 5 .label row = 4 .label ch = 7 + // Checks all specific chars $00-$3f + .label i = 8 // [5] phi from main to main::@1 [phi:main->main::@1] // [5] phi (byte*) main::sc#2 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 @@ -2381,8 +2388,8 @@ main: { // main::@5 __b5: // keyboard_matrix_read(row) - // [11] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 - ldy.z row + // [11] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuxx=vbuz1 + ldx.z row // [12] call keyboard_matrix_read // [57] phi from main::@5 to keyboard_matrix_read [phi:main::@5->keyboard_matrix_read] // [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@5->keyboard_matrix_read#0] -- register_copy @@ -2456,10 +2463,10 @@ main: { inc.z screen+1 !: // [26] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - // [26] phi (byte) main::i#3 = (byte) 0 [phi:main::@11->main::@12#0] -- vbuxx=vbuc1 - ldx #0 + // [26] phi (byte) main::i#3 = (byte) 0 [phi:main::@11->main::@12#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [26] phi (byte) main::ch#2 = (byte) 0 [phi:main::@11->main::@12#1] -- vbuz1=vbuc1 - txa sta.z ch // [26] phi from main::@13 to main::@12 [phi:main::@13->main::@12] // [26] phi (byte) main::i#3 = (byte) main::i#6 [phi:main::@13->main::@12#0] -- register_copy @@ -2467,8 +2474,8 @@ main: { // main::@12 __b12: // keyboard_get_keycode(ch) - // [27] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 - ldy.z ch + // [27] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 + ldx.z ch // [28] call keyboard_get_keycode jsr keyboard_get_keycode // [29] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 @@ -2481,8 +2488,8 @@ main: { beq __b13 // main::@14 // keyboard_key_pressed(key) - // [32] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa - tay + // [32] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuxx=vbuaa + tax // [33] call keyboard_key_pressed jsr keyboard_key_pressed // [34] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 @@ -2494,14 +2501,13 @@ main: { beq __b13 // main::@15 // screen[i++] = ch - // [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 - txa - tay + // [37] *((byte*) main::screen#2 + (byte) main::i#3) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z ch + ldy.z i sta (screen),y // screen[i++] = ch; - // [38] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx - inx + // [38] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuz1=_inc_vbuz1 + inc.z i // [39] phi from main::@15 main::@18 main::@19 to main::@13 [phi:main::@15/main::@18/main::@19->main::@13] // [39] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@15/main::@18/main::@19->main::@13#0] -- register_copy // main::@13 @@ -2519,17 +2525,17 @@ main: { // Add some spaces // main::@16 // screen[i++] = ' ' - // [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 - txa - tay + // [43] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 lda #' ' + ldy.z i sta (screen),y // screen[i++] = ' '; - // [44] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx - inx + // [44] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + inc.z i // while (i<5) - // [45] if((byte) main::i#2<(byte) 5) goto main::@16 -- vbuxx_lt_vbuc1_then_la1 - cpx #5 + // [45] if((byte) main::i#2<(byte) 5) goto main::@16 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #5 bcc b1 jmp __b4 // main::@7 @@ -2561,23 +2567,22 @@ main: { // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed -// keyboard_key_pressed(byte register(Y) key) +// keyboard_key_pressed(byte register(X) key) keyboard_key_pressed: { - .label colidx = 8 // colidx = key&7 - // [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte) 7 -- vbuz1=vbuyy_band_vbuc1 - tya + // [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte) 7 -- vbuyy=vbuxx_band_vbuc1 + txa and #7 - sta.z colidx + tay // rowidx = key>>3 - // [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 -- vbuaa=vbuyy_ror_3 - tya + // [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte) 3 -- vbuaa=vbuxx_ror_3 + txa lsr lsr lsr // keyboard_matrix_read(rowidx) - // [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa - tay + // [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + tax // [52] call keyboard_matrix_read // [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] // [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy @@ -2587,8 +2592,7 @@ keyboard_key_pressed: { // keyboard_key_pressed::@1 // [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 // keyboard_matrix_read(rowidx) & keyboard_matrix_col_bitmask[colidx] - // [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 - ldy.z colidx + // [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y // keyboard_key_pressed::@return // } @@ -2601,11 +2605,11 @@ keyboard_key_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(Y) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { // *CIA1_PORT_A = keyboard_matrix_row_bitmask[rowid] - // [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy - lda keyboard_matrix_row_bitmask,y + // [58] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A // ~*CIA1_PORT_B // [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) -- vbuaa=_bnot__deref_pbuc1 @@ -2621,11 +2625,11 @@ keyboard_matrix_read: { // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . -// keyboard_get_keycode(byte register(Y) ch) +// keyboard_get_keycode(byte register(X) ch) keyboard_get_keycode: { // return keyboard_char_keycodes[ch]; - // [61] (byte) keyboard_get_keycode::return#0 ← *((const byte*) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy - lda keyboard_char_keycodes,y + // [61] (byte) keyboard_get_keycode::return#0 ← *((const byte*) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx + lda keyboard_char_keycodes,x // keyboard_get_keycode::@return // } // [62] return diff --git a/src/test/ref/test-keyboard.sym b/src/test/ref/test-keyboard.sym index f7977fbf7..22b26e3a0 100644 --- a/src/test/ref/test-keyboard.sym +++ b/src/test/ref/test-keyboard.sym @@ -60,41 +60,41 @@ (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch -(byte) keyboard_get_keycode::ch#0 reg byte y 103.0 +(byte) keyboard_get_keycode::ch#0 reg byte x 11002.0 (byte) keyboard_get_keycode::return -(byte) keyboard_get_keycode::return#0 reg byte a 34.33333333333333 -(byte) keyboard_get_keycode::return#2 reg byte a 202.0 +(byte) keyboard_get_keycode::return#0 reg byte a 3667.333333333333 +(byte) keyboard_get_keycode::return#2 reg byte a 2002.0 (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) -(byte~) keyboard_key_pressed::$2 reg byte a 4.0 +(byte~) keyboard_key_pressed::$2 reg byte a 20002.0 (label) keyboard_key_pressed::@1 (label) keyboard_key_pressed::@return (byte) keyboard_key_pressed::colidx -(byte) keyboard_key_pressed::colidx#0 colidx zp[1]:8 0.6666666666666666 +(byte) keyboard_key_pressed::colidx#0 reg byte y 3333.6666666666665 (byte) keyboard_key_pressed::key -(byte) keyboard_key_pressed::key#0 reg byte y 52.5 +(byte) keyboard_key_pressed::key#0 reg byte x 10501.5 (byte) keyboard_key_pressed::return -(byte) keyboard_key_pressed::return#0 reg byte a 34.33333333333333 -(byte) keyboard_key_pressed::return#2 reg byte a 202.0 +(byte) keyboard_key_pressed::return#0 reg byte a 3667.333333333333 +(byte) keyboard_key_pressed::return#2 reg byte a 2002.0 (byte) keyboard_key_pressed::rowidx -(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0 +(byte) keyboard_key_pressed::rowidx#0 reg byte a 20002.0 (const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (label) keyboard_matrix_read::@return (byte) keyboard_matrix_read::return -(byte) keyboard_matrix_read::return#0 reg byte a 26.25 -(byte) keyboard_matrix_read::return#2 reg byte a 4.0 -(byte) keyboard_matrix_read::return#3 reg byte a 202.0 +(byte) keyboard_matrix_read::return#0 reg byte a 27750.75 +(byte) keyboard_matrix_read::return#2 reg byte a 20002.0 +(byte) keyboard_matrix_read::return#3 reg byte a 2002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0 -(byte) keyboard_matrix_read::rowid#1 reg byte y 202.0 -(byte) keyboard_matrix_read::rowid#2 reg byte y 105.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 20002.0 +(byte) keyboard_matrix_read::rowid#1 reg byte x 2002.0 +(byte) keyboard_matrix_read::rowid#2 reg byte x 111003.0 (const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } (void()) main() -(byte~) main::$14 reg byte a 202.0 -(byte~) main::$4 reg byte a 2002.0 +(byte~) main::$14 reg byte a 2002.0 +(byte~) main::$4 reg byte a 20002.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -115,33 +115,33 @@ (label) main::@8 (label) main::@9 (byte) main::ch -(byte) main::ch#1 ch zp[1]:7 151.5 -(byte) main::ch#2 ch zp[1]:7 28.857142857142858 +(byte) main::ch#1 ch zp[1]:7 1501.5 +(byte) main::ch#2 ch zp[1]:7 286.0 (byte) main::col -(byte) main::col#1 reg byte y 1501.5 -(byte) main::col#2 reg byte y 667.3333333333334 +(byte) main::col#1 reg byte y 15001.5 +(byte) main::col#2 reg byte y 6667.333333333333 (byte) main::i -(byte) main::i#1 reg byte x 202.0 -(byte) main::i#2 reg byte x 151.5 -(byte) main::i#3 reg byte x 42.08333333333333 -(byte) main::i#4 reg byte x 202.0 -(byte) main::i#6 reg byte x 168.33333333333331 +(byte) main::i#1 i zp[1]:8 2002.0 +(byte) main::i#2 i zp[1]:8 1501.5 +(byte) main::i#3 i zp[1]:8 417.08333333333337 +(byte) main::i#4 i zp[1]:8 2002.0 +(byte) main::i#6 i zp[1]:8 1668.3333333333335 (byte) main::key -(byte) main::key#0 reg byte a 151.5 +(byte) main::key#0 reg byte a 1501.5 (byte) main::row -(byte) main::row#1 row zp[1]:4 151.5 -(byte) main::row#2 row zp[1]:4 21.642857142857142 +(byte) main::row#1 row zp[1]:4 1501.5 +(byte) main::row#2 row zp[1]:4 214.5 (byte) main::row_pressed_bits -(byte) main::row_pressed_bits#0 reg byte x 202.0 -(byte) main::row_pressed_bits#1 reg byte x 667.3333333333334 -(byte) main::row_pressed_bits#2 reg byte x 620.8 +(byte) main::row_pressed_bits#0 reg byte x 2002.0 +(byte) main::row_pressed_bits#1 reg byte x 6667.333333333333 +(byte) main::row_pressed_bits#2 reg byte x 6200.8 (byte*) main::sc -(byte*) main::sc#1 sc zp[2]:2 22.0 -(byte*) main::sc#2 sc zp[2]:2 14.666666666666666 +(byte*) main::sc#1 sc zp[2]:2 202.0 +(byte*) main::sc#2 sc zp[2]:2 134.66666666666666 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:5 71.0 -(byte*) main::screen#13 screen zp[2]:5 169.53846153846155 -(byte*) main::screen#2 screen zp[2]:5 10.142857142857142 +(byte*) main::screen#1 screen zp[2]:5 701.0 +(byte*) main::screen#13 screen zp[2]:5 1692.6153846153845 +(byte*) main::screen#2 screen zp[2]:5 100.14285714285714 zp[2]:2 [ main::sc#2 main::sc#1 ] zp[1]:4 [ main::row#2 main::row#1 ] @@ -149,17 +149,17 @@ zp[2]:5 [ main::screen#13 main::screen#1 main::screen#2 ] reg byte x [ main::row_pressed_bits#2 main::row_pressed_bits#1 main::row_pressed_bits#0 ] reg byte y [ main::col#2 main::col#1 ] zp[1]:7 [ main::ch#2 main::ch#1 ] -reg byte x [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] -reg byte y [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] +zp[1]:8 [ main::i#4 main::i#3 main::i#6 main::i#1 main::i#2 ] +reg byte x [ keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 keyboard_matrix_read::rowid#1 ] reg byte a [ keyboard_matrix_read::return#3 ] reg byte a [ main::$4 ] -reg byte y [ keyboard_get_keycode::ch#0 ] +reg byte x [ keyboard_get_keycode::ch#0 ] reg byte a [ keyboard_get_keycode::return#2 ] reg byte a [ main::key#0 ] -reg byte y [ keyboard_key_pressed::key#0 ] +reg byte x [ keyboard_key_pressed::key#0 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ main::$14 ] -zp[1]:8 [ keyboard_key_pressed::colidx#0 ] +reg byte y [ keyboard_key_pressed::colidx#0 ] reg byte a [ keyboard_key_pressed::rowidx#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_key_pressed::$2 ] diff --git a/src/test/ref/test-lohiconst.log b/src/test/ref/test-lohiconst.log index 00e9e36ef..f61df5e60 100644 --- a/src/test/ref/test-lohiconst.log +++ b/src/test/ref/test-lohiconst.log @@ -144,10 +144,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← >>(const dword) PI_u4f28 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← <>(const dword) PI_u4f28 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← ><(const dword) PI_u4f28 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← <<(const dword) PI_u4f28 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← >>(const dword) PI_u4f28 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← <>(const dword) PI_u4f28 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← ><(const dword) PI_u4f28 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← <<(const dword) PI_u4f28 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/test-lowhigh.asm b/src/test/ref/test-lowhigh.asm index e899e2b67..4b83ebb56 100644 --- a/src/test/ref/test-lowhigh.asm +++ b/src/test/ref/test-lowhigh.asm @@ -133,8 +133,7 @@ main: { lda.z dw2+3 sta.z __20+1 // print_byte(< >dw2) - lda.z __20 - tax + ldx.z __20 jsr print_byte // print_char(' ') // Test get low high byte of dword @@ -158,8 +157,7 @@ main: { lda.z dw2+1 sta.z __28+1 // print_byte(< w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#71 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#34 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#4 = (word) print_word::w#5 -Alias (byte*) print_char_cursor#3 = (byte*) print_char_cursor#35 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#4 (byte*) print_char_cursor#37 (byte*) print_char_cursor#5 -Alias (word) print_word::w#0 = (word~) print_dword::$0 -Alias (dword) print_dword::dw#1 = (dword) print_dword::dw#2 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#6 -Alias (word) print_word::w#1 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#40 (byte*) print_char_cursor#8 -Alias (byte) print_byte::b#6 = (byte) print_byte::b#7 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#43 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#46 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#47 -Alias (dword) main::dw#10 = (dword) main::dw#3 (dword) main::dw#2 (dword) main::dw2#0 (dword) main::dw#17 (dword) main::dw#16 (dword) main::dw#15 (dword) main::dw#14 (dword) main::dw#13 (dword) main::dw#12 (dword) main::dw#11 (dword) main::dw#9 (dword) main::dw#8 (dword) main::dw#7 (dword) main::dw#6 (dword) main::dw#5 (dword) main::dw#4 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#70 (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#20 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#30 (byte*) print_line_cursor#29 (byte*) print_line_cursor#28 (byte*) print_line_cursor#27 (byte*) print_line_cursor#26 (byte*) print_line_cursor#25 (byte*) print_line_cursor#24 (byte*) print_line_cursor#23 (byte*) print_line_cursor#22 (byte*) print_line_cursor#19 (byte*) print_line_cursor#7 -Alias (word~) main::$32 = (word~) main::$4 -Alias (word~) main::$33 = (word~) main::$7 -Alias (dword) main::dw2#10 = (dword) main::dw2#9 (dword) main::dw2#2 (dword) main::dw2#3 (dword) main::dw2#4 (dword) main::dw2#11 (dword) main::dw2#5 (dword) main::dw2#12 (dword) main::dw2#6 (dword) main::dw2#13 (dword) main::dw2#7 (dword) main::dw2#14 (dword) main::dw2#8 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#49 -Alias (word) print_word::w#2 = (word~) main::$10 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#51 -Alias (word) print_word::w#3 = (word~) main::$13 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#53 -Alias (byte) print_byte::b#2 = (byte~) main::$17 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#55 -Alias (byte) print_byte::b#3 = (byte~) main::$21 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#57 -Alias (byte) print_byte::b#4 = (byte~) main::$25 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#59 -Alias (byte) print_byte::b#5 = (byte~) main::$29 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#60 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#61 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#63 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#21 print_char_cursor#71 print_screen#4 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#1 print_line_cursor#11 print_char_cursor#34 print_line_cursor#2 print_char_cursor#2 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#4 = print_word::w#5 +Alias print_char_cursor#3 = print_char_cursor#35 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#36 = print_char_cursor#4 print_char_cursor#37 print_char_cursor#5 +Alias print_word::w#0 = print_dword::$0 +Alias print_dword::dw#1 = print_dword::dw#2 +Alias print_char_cursor#38 = print_char_cursor#6 +Alias print_word::w#1 = print_dword::$2 +Alias print_char_cursor#39 = print_char_cursor#7 print_char_cursor#40 print_char_cursor#8 +Alias print_byte::b#6 = print_byte::b#7 +Alias print_char_cursor#41 = print_char_cursor#9 +Alias print_char_cursor#10 = print_char_cursor#42 print_char_cursor#43 print_char_cursor#11 +Alias print_char_cursor#12 = print_char_cursor#45 print_char_cursor#13 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#14 print_char_cursor#46 print_line_cursor#4 print_char_cursor#15 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#16 = print_char_cursor#47 +Alias main::dw#10 = main::dw#3 main::dw#2 main::dw2#0 main::dw#17 main::dw#16 main::dw#15 main::dw#14 main::dw#13 main::dw#12 main::dw#11 main::dw#9 main::dw#8 main::dw#7 main::dw#6 main::dw#5 main::dw#4 +Alias print_char_cursor#31 = print_char_cursor#69 print_char_cursor#70 print_char_cursor#62 +Alias print_line_cursor#15 = print_line_cursor#34 print_line_cursor#20 print_line_cursor#33 print_line_cursor#32 print_line_cursor#31 print_line_cursor#30 print_line_cursor#29 print_line_cursor#28 print_line_cursor#27 print_line_cursor#26 print_line_cursor#25 print_line_cursor#24 print_line_cursor#23 print_line_cursor#22 print_line_cursor#19 print_line_cursor#7 +Alias main::$32 = main::$4 +Alias main::$33 = main::$7 +Alias main::dw2#10 = main::dw2#9 main::dw2#2 main::dw2#3 main::dw2#4 main::dw2#11 main::dw2#5 main::dw2#12 main::dw2#6 main::dw2#13 main::dw2#7 main::dw2#14 main::dw2#8 +Alias print_char_cursor#17 = print_char_cursor#48 +Alias print_char_cursor#18 = print_char_cursor#49 +Alias print_word::w#2 = main::$10 +Alias print_char_cursor#19 = print_char_cursor#50 +Alias print_char_cursor#20 = print_char_cursor#51 +Alias print_word::w#3 = main::$13 +Alias print_char_cursor#21 = print_char_cursor#52 +Alias print_char_cursor#22 = print_char_cursor#53 +Alias print_byte::b#2 = main::$17 +Alias print_char_cursor#23 = print_char_cursor#54 +Alias print_char_cursor#24 = print_char_cursor#55 +Alias print_byte::b#3 = main::$21 +Alias print_char_cursor#25 = print_char_cursor#56 +Alias print_char_cursor#26 = print_char_cursor#57 +Alias print_byte::b#4 = main::$25 +Alias print_char_cursor#27 = print_char_cursor#58 +Alias print_char_cursor#28 = print_char_cursor#59 +Alias print_byte::b#5 = main::$29 +Alias print_char_cursor#29 = print_char_cursor#60 +Alias print_line_cursor#14 = print_line_cursor#6 +Alias print_char_cursor#30 = print_char_cursor#61 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#32 = print_char_cursor#63 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1237,71 +1237,71 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$16 22.0 -(word~) main::$20 22.0 -(word~) main::$24 22.0 -(word~) main::$28 22.0 -(word~) main::$3 22.0 -(word~) main::$32 22.0 -(word~) main::$33 22.0 -(word~) main::$6 22.0 +(word~) main::$16 202.0 +(word~) main::$20 202.0 +(word~) main::$24 202.0 +(word~) main::$28 202.0 +(word~) main::$3 202.0 +(word~) main::$32 202.0 +(word~) main::$33 202.0 +(word~) main::$6 202.0 (dword) main::dw -(dword) main::dw#1 11.0 -(dword) main::dw#10 1.65 +(dword) main::dw#1 101.0 +(dword) main::dw#10 15.15 (dword) main::dw2 -(dword) main::dw2#1 7.333333333333333 -(dword) main::dw2#10 3.142857142857143 +(dword) main::dw2#1 67.33333333333333 +(dword) main::dw2#10 28.857142857142858 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 22.0 -(byte) print_byte::b#3 22.0 -(byte) print_byte::b#4 22.0 -(byte) print_byte::b#5 22.0 -(byte) print_byte::b#6 13.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 202.0 +(byte) print_byte::b#3 202.0 +(byte) print_byte::b#4 202.0 +(byte) print_byte::b#5 202.0 +(byte) print_byte::b#6 55102.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#8 6.0 +(byte) print_char::ch#0 200002.0 +(byte) print_char::ch#1 200002.0 +(byte) print_char::ch#8 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 4.820000000000001 -(byte*) print_char_cursor#31 1.3 -(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#74 4.0 +(byte*) print_char_cursor#12 24244.34 +(byte*) print_char_cursor#31 110.19999999999999 +(byte*) print_char_cursor#44 1100305.0 +(byte*) print_char_cursor#65 6102.5 +(byte*) print_char_cursor#67 40135.666666666664 +(byte*) print_char_cursor#74 2002.0 (void()) print_cls() (void()) print_dword((dword) print_dword::dw) (dword) print_dword::dw -(dword) print_dword::dw#0 3.75 +(dword) print_dword::dw#0 525.75 (byte*) print_line_cursor -(byte*) print_line_cursor#1 54.16666666666666 -(byte*) print_line_cursor#15 0.325 -(byte*) print_line_cursor#36 202.0 -(byte*) print_line_cursor#37 22.0 -(byte*) print_line_cursor#9 204.0 +(byte*) print_line_cursor#1 50034.16666666666 +(byte*) print_line_cursor#15 27.549999999999997 +(byte*) print_line_cursor#36 200002.0 +(byte*) print_line_cursor#37 202.0 +(byte*) print_line_cursor#9 201003.0 (void()) print_ln() (byte*) print_screen (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 -(word) print_word::w#1 4.0 -(word) print_word::w#2 22.0 -(word) print_word::w#3 22.0 -(word) print_word::w#4 9.999999999999998 +(word) print_word::w#0 1001.0 +(word) print_word::w#1 2002.0 +(word) print_word::w#2 202.0 +(word) print_word::w#3 202.0 +(word) print_word::w#4 7402.0 Initial phi equivalence classes [ main::dw#10 main::dw#1 ] @@ -1974,68 +1974,56 @@ memset: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[2]:18 [ main::$3 ] has ALU potential. Equivalence Class zp[2]:26 [ main::$6 ] has ALU potential. -Statement [7] if((dword) main::dw#10!=(dword) $12345690) goto main::@2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ) always clobbers reg byte a -Statement [10] (word~) main::$32 ← (word~) main::$3 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ) always clobbers reg byte a -Statement [11] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word~) main::$32 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ) always clobbers reg byte a -Statement [13] (word~) main::$33 ← (word~) main::$6 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word~) main::$33 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ) always clobbers reg byte a -Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 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#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 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#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] (word~) main::$16 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#2 ← > (word~) main::$16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] (word~) main::$20 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [33] (byte) print_byte::b#3 ← < (word~) main::$20 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [37] (word~) main::$24 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#4 ← > (word~) main::$24 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [42] (word~) main::$28 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#5 ← < (word~) main::$28 [ main::dw#10 print_line_cursor#15 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [48] (byte*) print_line_cursor#37 ← (byte*) print_line_cursor#1 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ 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 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@2 [ 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] (byte*) print_line_cursor#36 ← (byte*) print_line_cursor#1 [ print_line_cursor#36 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#36 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [56] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 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#15 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#15 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#15 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 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:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a +Statement [7] if((dword) main::dw#10!=(dword) $12345690) goto main::@2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$32 ← (word~) main::$3 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [11] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word~) main::$32 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [13] (word~) main::$33 ← (word~) main::$6 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word~) main::$33 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [27] (word~) main::$16 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [32] (word~) main::$20 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [37] (word~) main::$24 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [42] (word~) main::$28 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [48] (byte*) print_line_cursor#37 ← (byte*) print_line_cursor#1 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ 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 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@2 [ 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] (byte*) print_line_cursor#36 ← (byte*) print_line_cursor#1 [ print_line_cursor#36 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#36 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [56] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#44 = print_char_cursor#65 print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] -Statement [59] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [64] *((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#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:58 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 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:69::print_char:58 [ main::dw#10 print_line_cursor#15 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:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 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:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:61 [ main::dw#10 print_line_cursor#15 print_char_cursor#44 ] main:2::print_word:20::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 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:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [59] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_dword:16::print_word:77::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } ) always clobbers reg byte a +Statement [64] *((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#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:22 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:26 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:31 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:36 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:41 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_byte:29::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:34::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:39::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:44::print_char:58 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#44 = print_char_cursor#65 print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:29::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:34::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:39::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:44::print_char:61 [ main::dw#10 print_line_cursor#15 print_char_cursor#44 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_dword:16::print_word:77::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:10 [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] -Statement [68] (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#15 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#15 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#15 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#15 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [70] (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#15 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#15 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#15 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#15 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [73] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [74] (byte*) print_char_cursor#74 ← (byte*) print_char_cursor#31 [ print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ) 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#15 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] if((dword) main::dw#10!=(dword) $12345690) goto main::@2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ) always clobbers reg byte a -Statement [10] (word~) main::$32 ← (word~) main::$3 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ) always clobbers reg byte a -Statement [11] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word~) main::$32 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ) always clobbers reg byte a -Statement [13] (word~) main::$33 ← (word~) main::$6 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word~) main::$33 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ) always clobbers reg byte a -Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 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#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 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#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] (word~) main::$16 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#2 ← > (word~) main::$16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] (word~) main::$20 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [33] (byte) print_byte::b#3 ← < (word~) main::$20 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [37] (word~) main::$24 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#4 ← > (word~) main::$24 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [42] (word~) main::$28 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#5 ← < (word~) main::$28 [ main::dw#10 print_line_cursor#15 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [48] (byte*) print_line_cursor#37 ← (byte*) print_line_cursor#1 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ 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 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@2 [ 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] (byte*) print_line_cursor#36 ← (byte*) print_line_cursor#1 [ print_line_cursor#36 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#36 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [56] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 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#15 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#15 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#15 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 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:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 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:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a -Statement [59] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 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:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [64] *((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#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:58 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 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:69::print_char:58 [ main::dw#10 print_line_cursor#15 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:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 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:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:61 [ main::dw#10 print_line_cursor#15 print_char_cursor#44 ] main:2::print_word:20::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 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:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y -Statement [68] (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#15 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#15 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#15 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#15 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [70] (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#15 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#15 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#15 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#15 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [73] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [74] (byte*) print_char_cursor#74 ← (byte*) print_char_cursor#31 [ print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ) 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#15 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [73] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } } ) always clobbers reg byte a +Statement [74] (byte*) print_char_cursor#74 ← (byte*) print_char_cursor#31 [ print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } } ) 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#15 main::dw2#10 print_char_cursor#12 print_word::w#1 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] if((dword) main::dw#10!=(dword) $12345690) goto main::@2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$32 ← (word~) main::$3 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::$32 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [11] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word~) main::$32 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [13] (word~) main::$33 ← (word~) main::$6 + (word) $1111 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#1 main::$33 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word~) main::$33 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_line_cursor#15 print_char_cursor#31 main::dw2#10 print_dword::dw#0 ] { { print_dword::dw#0 = main::dw2#10 } } ) always clobbers reg byte a +Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#2 print_char_cursor#12 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#3 print_char_cursor#12 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [27] (word~) main::$16 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$16 print_char_cursor#12 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [32] (word~) main::$20 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$20 print_char_cursor#12 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [37] (word~) main::$24 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::dw2#10 main::$24 print_char_cursor#12 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [42] (word~) main::$28 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#15 main::$28 print_char_cursor#12 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 } } ) always clobbers reg byte a +Statement [48] (byte*) print_line_cursor#37 ← (byte*) print_line_cursor#1 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#37 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ 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 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@2 [ 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] (byte*) print_line_cursor#36 ← (byte*) print_line_cursor#1 [ print_line_cursor#36 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#36 print_char_cursor#12 ] { } ) always clobbers reg byte a +Statement [56] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#44 = print_char_cursor#65 print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } ) always clobbers reg byte a +Statement [59] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:34 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:39 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:44 [ main::dw#10 print_line_cursor#15 print_char_cursor#12 print_byte::$2 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_dword:16::print_word:77::print_byte:69 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#12 print_byte::$2 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } ) always clobbers reg byte a +Statement [64] *((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#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:22 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:26 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:31 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:36 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_char:41 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_byte:29::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:34::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:39::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:44::print_char:58 [ main::dw#10 print_line_cursor#15 print_byte::b#6 print_char_cursor#44 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#44 = print_char_cursor#65 print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:69::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:20::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_word:24::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71::print_char:58 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#0 = print_char::ch#8 } } main:2::print_byte:29::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#2 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:34::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#3 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:39::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_byte::b#4 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_byte:44::print_char:61 [ main::dw#10 print_line_cursor#15 print_char_cursor#44 ] { { print_byte::b#5 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 print_char_cursor#67 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } { print_char_cursor#12 = print_char_cursor#44 } } main:2::print_dword:16::print_word:77::print_byte:69::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_word::w#4 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#0 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:20::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_word::w#2 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_word:24::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_word::w#3 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:75::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } { print_byte::b#1 = print_byte::b#6 } { print_char_cursor#12 = print_char_cursor#67 print_char_cursor#44 } { print_char::ch#1 = print_char::ch#8 } } main:2::print_dword:16::print_word:77::print_byte:71::print_char:61 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#44 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 print_char_cursor#67 print_char_cursor#44 } { print_byte::b#1 = print_byte::b#6 } { print_char::ch#1 = print_char::ch#8 } } ) always clobbers reg byte y +Statement [73] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_char_cursor#31 print_dword::dw#0 print_word::w#0 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } } ) always clobbers reg byte a +Statement [74] (byte*) print_char_cursor#74 ← (byte*) print_char_cursor#31 [ print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#15 main::dw2#10 print_dword::dw#0 print_word::w#0 print_char_cursor#74 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#0 = print_word::w#4 } { print_char_cursor#65 = print_char_cursor#74 } } ) 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#15 main::dw2#10 print_char_cursor#12 print_word::w#1 ] { { print_dword::dw#0 = main::dw2#10 } { print_word::w#1 = print_word::w#4 } { print_char_cursor#12 = print_char_cursor#65 } } ) always clobbers reg byte a +Statement [84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [86] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:80 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[4]:2 [ main::dw#10 main::dw#1 ] : zp[4]:2 , Potential registers zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] : zp[2]:6 , Potential registers zp[2]:8 [ print_line_cursor#9 print_line_cursor#15 print_line_cursor#37 print_line_cursor#36 ] : zp[2]:8 , @@ -2059,27 +2047,27 @@ Potential registers zp[1]:46 [ print_byte::$0 ] : zp[1]:46 , reg byte a , reg by Potential registers zp[1]:47 [ print_byte::$2 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 428.32: zp[2]:8 [ print_line_cursor#9 print_line_cursor#15 print_line_cursor#37 print_line_cursor#36 ] 76.49: zp[2]:12 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#74 ] 55.47: zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] -Uplift Scope [main] 22: zp[2]:18 [ main::$3 ] 22: zp[2]:20 [ main::$32 ] 22: zp[2]:26 [ main::$6 ] 22: zp[2]:28 [ main::$33 ] 22: zp[2]:38 [ main::$16 ] 22: zp[2]:40 [ main::$20 ] 22: zp[2]:42 [ main::$24 ] 22: zp[2]:44 [ main::$28 ] 12.65: zp[4]:2 [ main::dw#10 main::dw#1 ] 7.33: zp[4]:22 [ main::dw2#1 ] 3.14: zp[4]:30 [ main::dw2#10 ] -Uplift Scope [print_byte] 109: zp[1]:10 [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:46 [ print_byte::$0 ] 4: zp[1]:47 [ print_byte::$2 ] -Uplift Scope [print_word] 60: zp[2]:14 [ print_word::w#4 print_word::w#3 print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplift Scope [memset] 36.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_char] 14: zp[1]:11 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_dword] 3.75: zp[4]:34 [ print_dword::dw#0 ] +Uplift Scope [] 1,172,789.51: zp[2]:12 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#74 ] 401,234.55: zp[2]:8 [ print_line_cursor#9 print_line_cursor#15 print_line_cursor#37 print_line_cursor#36 ] 50,144.37: zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] +Uplift Scope [print_char] 1,600,007: zp[1]:11 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_byte] 200,002: zp[1]:46 [ print_byte::$0 ] 200,002: zp[1]:47 [ print_byte::$2 ] 95,914: zp[1]:10 [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:16 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 10,809: zp[2]:14 [ print_word::w#4 print_word::w#3 print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplift Scope [main] 202: zp[2]:18 [ main::$3 ] 202: zp[2]:20 [ main::$32 ] 202: zp[2]:26 [ main::$6 ] 202: zp[2]:28 [ main::$33 ] 202: zp[2]:38 [ main::$16 ] 202: zp[2]:40 [ main::$20 ] 202: zp[2]:42 [ main::$24 ] 202: zp[2]:44 [ main::$28 ] 116.15: zp[4]:2 [ main::dw#10 main::dw#1 ] 67.33: zp[4]:22 [ main::dw2#1 ] 28.86: zp[4]:30 [ main::dw2#10 ] +Uplift Scope [print_dword] 525.75: zp[4]:34 [ print_dword::dw#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 10524 combination zp[2]:8 [ print_line_cursor#9 print_line_cursor#15 print_line_cursor#37 print_line_cursor#36 ] zp[2]:12 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#74 ] zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] -Uplifting [main] best 10524 combination zp[2]:18 [ main::$3 ] zp[2]:20 [ main::$32 ] zp[2]:26 [ main::$6 ] zp[2]:28 [ main::$33 ] zp[2]:38 [ main::$16 ] zp[2]:40 [ main::$20 ] zp[2]:42 [ main::$24 ] zp[2]:44 [ main::$28 ] zp[4]:2 [ main::dw#10 main::dw#1 ] zp[4]:22 [ main::dw2#1 ] zp[4]:30 [ main::dw2#10 ] -Uplifting [print_byte] best 10470 combination reg byte x [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_word] best 10470 combination zp[2]:14 [ print_word::w#4 print_word::w#3 print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplifting [memset] best 10470 combination zp[2]:16 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_char] best 10443 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_dword] best 10443 combination zp[4]:34 [ print_dword::dw#0 ] -Uplifting [RADIX] best 10443 combination -Uplifting [print_ln] best 10443 combination -Uplifting [print_cls] best 10443 combination +Uplifting [] best 10524 combination zp[2]:12 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#74 ] zp[2]:8 [ print_line_cursor#9 print_line_cursor#15 print_line_cursor#37 print_line_cursor#36 ] zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] +Uplifting [print_char] best 10497 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_byte] best 10359 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#6 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] +Uplifting [memset] best 10359 combination zp[2]:16 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 10359 combination zp[2]:14 [ print_word::w#4 print_word::w#3 print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplifting [main] best 10359 combination zp[2]:18 [ main::$3 ] zp[2]:20 [ main::$32 ] zp[2]:26 [ main::$6 ] zp[2]:28 [ main::$33 ] zp[2]:38 [ main::$16 ] zp[2]:40 [ main::$20 ] zp[2]:42 [ main::$24 ] zp[2]:44 [ main::$28 ] zp[4]:2 [ main::dw#10 main::dw#1 ] zp[4]:22 [ main::dw2#1 ] zp[4]:30 [ main::dw2#10 ] +Uplifting [print_dword] best 10359 combination zp[4]:34 [ print_dword::dw#0 ] +Uplifting [RADIX] best 10359 combination +Uplifting [print_ln] best 10359 combination +Uplifting [print_cls] best 10359 combination Coalescing zero page register [ zp[2]:18 [ main::$3 ] ] with [ zp[2]:20 [ main::$32 ] ] - score: 1 Coalescing zero page register [ zp[4]:22 [ main::dw2#1 ] ] with [ zp[4]:30 [ main::dw2#10 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ main::$6 ] ] with [ zp[2]:28 [ main::$33 ] ] - score: 1 @@ -2301,8 +2289,7 @@ main: { lda.z dw2+3 sta.z __16+1 // [28] (byte) print_byte::b#2 ← > (word~) main::$16 -- vbuxx=_hi_vwuz1 - lda.z __16+1 - tax + ldx.z __16+1 // [29] call print_byte // [55] phi from main::@8 to print_byte [phi:main::@8->print_byte] print_byte_from___b8: @@ -2331,8 +2318,7 @@ main: { lda.z dw2+3 sta.z __20+1 // [33] (byte) print_byte::b#3 ← < (word~) main::$20 -- vbuxx=_lo_vwuz1 - lda.z __20 - tax + ldx.z __20 // [34] call print_byte // [55] phi from main::@10 to print_byte [phi:main::@10->print_byte] print_byte_from___b10: @@ -2361,8 +2347,7 @@ main: { lda.z dw2+1 sta.z __24+1 // [38] (byte) print_byte::b#4 ← > (word~) main::$24 -- vbuxx=_hi_vwuz1 - lda.z __24+1 - tax + ldx.z __24+1 // [39] call print_byte // [55] phi from main::@12 to print_byte [phi:main::@12->print_byte] print_byte_from___b12: @@ -2391,8 +2376,7 @@ main: { lda.z dw2+1 sta.z __28+1 // [43] (byte) print_byte::b#5 ← < (word~) main::$28 -- vbuxx=_lo_vwuz1 - lda.z __28 - tax + ldx.z __28 // [44] call print_byte // [55] phi from main::@14 to print_byte [phi:main::@14->print_byte] print_byte_from___b14: @@ -2538,8 +2522,7 @@ print_char: { print_word: { .label w = $c // [68] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [69] call print_byte // [55] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -2550,8 +2533,7 @@ print_word: { // print_word::@1 __b1: // [70] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [71] call print_byte // [55] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -2699,8 +2681,8 @@ Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination -Removing instruction lda.z __16+1 -Removing instruction lda.z __24+1 +Replacing instruction ldx.z __16+1 with TAX +Replacing instruction ldx.z __24+1 with TAX Removing instruction lda.z print_line_cursor+1 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b1_from___b2 with __b1 @@ -2785,14 +2767,14 @@ FINAL SYMBOL TABLE (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (void()) main() -(word~) main::$16 zp[2]:20 22.0 -(word~) main::$20 zp[2]:22 22.0 -(word~) main::$24 zp[2]:24 22.0 -(word~) main::$28 zp[2]:26 22.0 -(word~) main::$3 zp[2]:12 22.0 -(word~) main::$32 zp[2]:12 22.0 -(word~) main::$33 zp[2]:18 22.0 -(word~) main::$6 zp[2]:18 22.0 +(word~) main::$16 zp[2]:20 202.0 +(word~) main::$20 zp[2]:22 202.0 +(word~) main::$24 zp[2]:24 202.0 +(word~) main::$28 zp[2]:26 202.0 +(word~) main::$3 zp[2]:12 202.0 +(word~) main::$32 zp[2]:12 202.0 +(word~) main::$33 zp[2]:18 202.0 +(word~) main::$6 zp[2]:18 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -2811,11 +2793,11 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (dword) main::dw -(dword) main::dw#1 dw zp[4]:2 11.0 -(dword) main::dw#10 dw zp[4]:2 1.65 +(dword) main::dw#1 dw zp[4]:2 101.0 +(dword) main::dw#10 dw zp[4]:2 15.15 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp[4]:14 7.333333333333333 -(dword) main::dw2#10 dw2 zp[4]:14 3.142857142857143 +(dword) main::dw2#1 dw2 zp[4]:14 67.33333333333333 +(dword) main::dw2#10 dw2 zp[4]:14 28.857142857142858 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -2823,8 +2805,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 20002.0 +(byte*) memset::dst#2 dst zp[2]:12 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2833,45 +2815,45 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 22.0 -(byte) print_byte::b#3 reg byte x 22.0 -(byte) print_byte::b#4 reg byte x 22.0 -(byte) print_byte::b#5 reg byte x 22.0 -(byte) print_byte::b#6 reg byte x 13.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 55102.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#8 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 200002.0 +(byte) print_char::ch#1 reg byte a 200002.0 +(byte) print_char::ch#8 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp[2]:10 4.820000000000001 -(byte*) print_char_cursor#31 print_char_cursor_1 zp[2]:6 1.3 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:10 37.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:10 14.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:10 16.666666666666664 -(byte*) print_char_cursor#74 print_char_cursor zp[2]:10 4.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:10 24244.34 +(byte*) print_char_cursor#31 print_char_cursor_1 zp[2]:6 110.19999999999999 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:10 1100305.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:10 6102.5 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:10 40135.666666666664 +(byte*) print_char_cursor#74 print_char_cursor zp[2]:10 2002.0 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:14 3.75 +(dword) print_dword::dw#0 dw zp[4]:14 525.75 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 54.16666666666666 -(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:8 0.325 -(byte*) print_line_cursor#36 print_line_cursor_1 zp[2]:8 202.0 -(byte*) print_line_cursor#37 print_line_cursor_1 zp[2]:8 22.0 -(byte*) print_line_cursor#9 print_line_cursor_1 zp[2]:8 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 50034.16666666666 +(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:8 27.549999999999997 +(byte*) print_line_cursor#36 print_line_cursor_1 zp[2]:8 200002.0 +(byte*) print_line_cursor#37 print_line_cursor_1 zp[2]:8 202.0 +(byte*) print_line_cursor#9 print_line_cursor_1 zp[2]:8 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@2 @@ -2881,11 +2863,11 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:12 2.0 -(word) print_word::w#1 w zp[2]:12 4.0 -(word) print_word::w#2 w zp[2]:12 22.0 -(word) print_word::w#3 w zp[2]:12 22.0 -(word) print_word::w#4 w zp[2]:12 9.999999999999998 +(word) print_word::w#0 w zp[2]:12 1001.0 +(word) print_word::w#1 w zp[2]:12 2002.0 +(word) print_word::w#2 w zp[2]:12 202.0 +(word) print_word::w#3 w zp[2]:12 202.0 +(word) print_word::w#4 w zp[2]:12 7402.0 zp[4]:2 [ main::dw#10 main::dw#1 ] zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] @@ -2905,7 +2887,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 8736 +Score: 8692 // File Comments // Upstart @@ -3118,8 +3100,7 @@ main: { sta.z __20+1 // print_byte(< >dw2) // [33] (byte) print_byte::b#3 ← < (word~) main::$20 -- vbuxx=_lo_vwuz1 - lda.z __20 - tax + ldx.z __20 // [34] call print_byte // [55] phi from main::@10 to print_byte [phi:main::@10->print_byte] // [55] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@10->print_byte#0] -- register_copy @@ -3169,8 +3150,7 @@ main: { sta.z __28+1 // print_byte(< print_byte] // [55] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@14->print_byte#0] -- register_copy @@ -3308,8 +3288,7 @@ print_word: { .label w = $c // print_byte(>w) // [68] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [69] call print_byte // [55] phi from print_word to print_byte [phi:print_word->print_byte] // [55] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy @@ -3318,8 +3297,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [55] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/test-lowhigh.sym b/src/test/ref/test-lowhigh.sym index 2d62c91c3..60ac220a7 100644 --- a/src/test/ref/test-lowhigh.sym +++ b/src/test/ref/test-lowhigh.sym @@ -6,14 +6,14 @@ (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 (void()) main() -(word~) main::$16 zp[2]:20 22.0 -(word~) main::$20 zp[2]:22 22.0 -(word~) main::$24 zp[2]:24 22.0 -(word~) main::$28 zp[2]:26 22.0 -(word~) main::$3 zp[2]:12 22.0 -(word~) main::$32 zp[2]:12 22.0 -(word~) main::$33 zp[2]:18 22.0 -(word~) main::$6 zp[2]:18 22.0 +(word~) main::$16 zp[2]:20 202.0 +(word~) main::$20 zp[2]:22 202.0 +(word~) main::$24 zp[2]:24 202.0 +(word~) main::$28 zp[2]:26 202.0 +(word~) main::$3 zp[2]:12 202.0 +(word~) main::$32 zp[2]:12 202.0 +(word~) main::$33 zp[2]:18 202.0 +(word~) main::$6 zp[2]:18 202.0 (label) main::@1 (label) main::@10 (label) main::@11 @@ -32,11 +32,11 @@ (label) main::@9 (label) main::@return (dword) main::dw -(dword) main::dw#1 dw zp[4]:2 11.0 -(dword) main::dw#10 dw zp[4]:2 1.65 +(dword) main::dw#1 dw zp[4]:2 101.0 +(dword) main::dw#10 dw zp[4]:2 15.15 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp[4]:14 7.333333333333333 -(dword) main::dw2#10 dw2 zp[4]:14 3.142857142857143 +(dword) main::dw2#1 dw2 zp[4]:14 67.33333333333333 +(dword) main::dw2#10 dw2 zp[4]:14 28.857142857142858 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -44,8 +44,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:12 22.0 -(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:12 20002.0 +(byte*) memset::dst#2 dst zp[2]:12 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -54,45 +54,45 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 22.0 -(byte) print_byte::b#3 reg byte x 22.0 -(byte) print_byte::b#4 reg byte x 22.0 -(byte) print_byte::b#5 reg byte x 22.0 -(byte) print_byte::b#6 reg byte x 13.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 202.0 +(byte) print_byte::b#3 reg byte x 202.0 +(byte) print_byte::b#4 reg byte x 202.0 +(byte) print_byte::b#5 reg byte x 202.0 +(byte) print_byte::b#6 reg byte x 55102.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#8 reg byte a 6.0 +(byte) print_char::ch#0 reg byte a 200002.0 +(byte) print_char::ch#1 reg byte a 200002.0 +(byte) print_char::ch#8 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp[2]:10 4.820000000000001 -(byte*) print_char_cursor#31 print_char_cursor_1 zp[2]:6 1.3 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:10 37.0 -(byte*) print_char_cursor#65 print_char_cursor zp[2]:10 14.0 -(byte*) print_char_cursor#67 print_char_cursor zp[2]:10 16.666666666666664 -(byte*) print_char_cursor#74 print_char_cursor zp[2]:10 4.0 +(byte*) print_char_cursor#12 print_char_cursor zp[2]:10 24244.34 +(byte*) print_char_cursor#31 print_char_cursor_1 zp[2]:6 110.19999999999999 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:10 1100305.0 +(byte*) print_char_cursor#65 print_char_cursor zp[2]:10 6102.5 +(byte*) print_char_cursor#67 print_char_cursor zp[2]:10 40135.666666666664 +(byte*) print_char_cursor#74 print_char_cursor zp[2]:10 2002.0 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:14 3.75 +(dword) print_dword::dw#0 dw zp[4]:14 525.75 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 54.16666666666666 -(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:8 0.325 -(byte*) print_line_cursor#36 print_line_cursor_1 zp[2]:8 202.0 -(byte*) print_line_cursor#37 print_line_cursor_1 zp[2]:8 22.0 -(byte*) print_line_cursor#9 print_line_cursor_1 zp[2]:8 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 50034.16666666666 +(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:8 27.549999999999997 +(byte*) print_line_cursor#36 print_line_cursor_1 zp[2]:8 200002.0 +(byte*) print_line_cursor#37 print_line_cursor_1 zp[2]:8 202.0 +(byte*) print_line_cursor#9 print_line_cursor_1 zp[2]:8 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@2 @@ -102,11 +102,11 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:12 2.0 -(word) print_word::w#1 w zp[2]:12 4.0 -(word) print_word::w#2 w zp[2]:12 22.0 -(word) print_word::w#3 w zp[2]:12 22.0 -(word) print_word::w#4 w zp[2]:12 9.999999999999998 +(word) print_word::w#0 w zp[2]:12 1001.0 +(word) print_word::w#1 w zp[2]:12 2002.0 +(word) print_word::w#2 w zp[2]:12 202.0 +(word) print_word::w#3 w zp[2]:12 202.0 +(word) print_word::w#4 w zp[2]:12 7402.0 zp[4]:2 [ main::dw#10 main::dw#1 ] zp[2]:6 [ print_char_cursor#31 print_line_cursor#1 ] diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 2a2d4edb6..7fbf5e4c6 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -353,12 +353,10 @@ print_dword: { print_word: { .label w = $16 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a -Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a -Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::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#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a -Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a -Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } ) always clobbers reg byte a +Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a -Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a -Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a -Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } } ) always clobbers reg byte a +Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } } ) always clobbers reg byte a +Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) 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[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Removing always clobbered register reg byte x as potential for zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::a#0<(signed byte) 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#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ) always clobbers reg byte a -Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ) always clobbers reg byte a -Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ) always clobbers reg byte a -Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ) always clobbers reg byte a -Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) 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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) 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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<(signed byte) 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#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] -Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 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#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 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#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ) always clobbers reg byte a -Statement [277] (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#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [281] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] { } ) always clobbers reg byte a +Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] { { print_char_cursor#154 = print_char_cursor#187 } } ) always clobbers reg byte a +Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } } ) always clobbers reg byte a +Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } } ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [277] (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#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [281] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [283] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [283] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [284] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [285] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [287] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [284] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [285] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [287] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [288] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [290] (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 [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [301] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a -Statement [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [288] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [290] (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 [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [303] (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 [304] *((byte*) mulf_init::sqr1_hi#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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [4] *((const byte*) BGCOL) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_char_cursor#219 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#219 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a -Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a -Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a -Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a -Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a -Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a -Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a -Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a -Statement [41] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a -Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a -Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a -Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a -Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::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#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::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#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a -Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a -Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a -Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] ) always clobbers reg byte a -Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] ) always clobbers reg byte y -Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a -Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a -Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::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#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a -Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a -Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a -Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a -Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a -Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a -Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a -Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [304] *((byte*) mulf_init::sqr1_hi#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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) BGCOL) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_char_cursor#219 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#219 print_line_cursor#1 ] { } ) always clobbers reg byte a +Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] { } ) always clobbers reg byte a +Statement [55] (byte*) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] { { print_char_cursor#154 = print_char_cursor#180 } } ) always clobbers reg byte a +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#133 = print_char_cursor#22 } } main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] { { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#133 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#133 = print_char_cursor#22 } } main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] { { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] { { print_line_cursor#1 = print_line_cursor#43 } { print_char_cursor#132 = print_char_cursor#133 } } main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#133 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#149 = print_char_cursor#154 } } main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#154 = print_char_cursor#180 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#154 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#145 = print_char_cursor#154 } } main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#154 = print_char_cursor#187 } } main:2::mul16u_compare:9::mul16u_error:237::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#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#154 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#149 = print_char_cursor#154 } } main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#154 = print_char_cursor#180 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#154 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#145 = print_char_cursor#154 } } main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] { { print_char_cursor#154 = print_char_cursor#187 } } main:2::mul16u_compare:9::mul16u_error:237::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#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#154 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_char_cursor#154 = print_char_cursor#22 } } ) always clobbers reg byte a reg byte y +Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } } ) always clobbers reg byte a +Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } } ) always clobbers reg byte a +Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } } ) always clobbers reg byte a +Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } } ) always clobbers reg byte a +Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#138 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#138 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#138 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } } ) always clobbers reg byte a +Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_char_cursor#132 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_char_cursor#132 = print_char_cursor#88 } } ) always clobbers reg byte y +Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } } ) always clobbers reg byte a +Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 } { print_word::w#2 = print_word::w#5 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 print_char_cursor#142 } { print_word::w#1 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 print_char_cursor#142 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#22 = print_char_cursor#88 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 print_char_cursor#137 } { print_word::w#1 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#1 = print_sdword::dw#4 mul16s_error::ms#0 mul16s_compare::ms#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sdword::dw#2 = print_sdword::dw#4 mul16s_error::mn#0 mul16s_compare::mn#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { print_sdword::dw#3 = print_sdword::dw#4 mul16s_error::mf#0 mul16s_compare::mf#0 } { print_dword::dw#0 = print_dword::dw#4 } { print_char_cursor#137 = print_char_cursor#138 print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_word::w#2 = print_word::w#5 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } { print_word::w#2 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 print_char_cursor#142 print_char_cursor#88 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } { print_byte::b#1 = print_byte::b#2 } { print_char_cursor#142 = print_char_cursor#22 print_char_cursor#88 } { print_char::ch#5 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } } ) always clobbers reg byte a +Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } { print_word::w#0 = print_word::w#5 } { print_char_cursor#137 = print_char_cursor#22 } } ) always clobbers reg byte a +Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] { { mul16s_error::b#0 = mul16s_compare::b#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#1 = print_sword::w#3 mul16s_error::a#0 mul16s_compare::a#1 } } main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] { { mul16s_error::a#0 = mul16s_compare::a#1 } { mul16s_error::ms#0 = mul16s_compare::ms#0 } { mul16s_error::mn#0 = mul16s_compare::mn#0 } { mul16s_error::mf#0 = mul16s_compare::mf#0 } { print_sword::w#2 = print_sword::w#3 mul16s_error::b#0 mul16s_compare::b#1 } } ) always clobbers reg byte a +Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) 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 [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::a#0<(signed byte) 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#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ) always clobbers reg byte a -Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ) always clobbers reg byte a -Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ) always clobbers reg byte a -Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ) always clobbers reg byte a -Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a -Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 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#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 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#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ) always clobbers reg byte a -Statement [277] (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#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [281] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [283] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [284] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [285] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [287] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [288] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [290] (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 [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [301] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a -Statement [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [303] (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 [304] *((byte*) mulf_init::sqr1_hi#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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] { { mulf16s::a#0 = mul16s_compare::a#1 } { mulf16s::b#0 = mul16s_compare::b#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::a#0 = mulf16u::a#2 } { mulf16u::b#0 = mulf16u::b#2 } { mulf16u::return#0 = mulf16u::return#2 } } main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } } ) 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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) 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:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s_compare::a#1 } { mul16s::b#0 = mul16s_compare::b#1 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<(signed byte) 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#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] { { muls16s::a#0 = mul16s_compare::a#1 } { muls16s::b#0 = mul16s_compare::b#1 } { muls16s::return#0 = muls16s::return#2 } } ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] { { mul16u::b#1 = mul16u::b#2 mul16u_compare::b#1 } { mul16u::a#2 = mul16u::a#6 mul16u_compare::a#1 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] { { mulf16u::a#1 = mulf16u::a#2 mul16u_compare::a#1 } { mulf16u::b#1 = mulf16u::b#2 mul16u_compare::b#1 } { mulf16u::return#0 = mulf16u::return#3 } } ) always clobbers reg byte a +Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { } ) always clobbers reg byte a +Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] { } ) always clobbers reg byte a +Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } } ) always clobbers reg byte a +Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] { } ) always clobbers reg byte a +Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] { { print_char_cursor#154 = print_char_cursor#187 } } ) always clobbers reg byte a +Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#3 = print_word::w#5 mul16u_error::a#0 mul16u_compare::a#1 } { print_char_cursor#132 = print_char_cursor#137 } } ) always clobbers reg byte a +Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_word::w#4 = print_word::w#5 mul16u_error::b#0 mul16u_compare::b#1 } { print_char_cursor#132 = print_char_cursor#137 } } ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#1 = print_dword::dw#4 mul16u_error::ms#0 mul16u_compare::ms#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mf#0 = mul16u_compare::mf#0 } { print_dword::dw#2 = print_dword::dw#4 mul16u_error::mn#0 mul16u_compare::mn#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] { { mul16u_error::a#0 = mul16u_compare::a#1 } { mul16u_error::b#0 = mul16u_compare::b#1 } { mul16u_error::ms#0 = mul16u_compare::ms#0 } { mul16u_error::mn#0 = mul16u_compare::mn#0 } { print_dword::dw#3 = print_dword::dw#4 mul16u_error::mf#0 mul16u_compare::mf#0 } { print_char_cursor#132 = print_char_cursor#138 } } ) always clobbers reg byte a +Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [277] (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#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] { { muls16u::a#0 = mul16u_compare::a#1 } { muls16u::b#0 = mul16u_compare::b#1 } { muls16u::return#0 = muls16u::return#2 } } ) always clobbers reg byte a +Statement [281] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [283] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [284] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [285] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [287] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [288] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [290] (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 [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [304] *((byte*) mulf_init::sqr1_hi#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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp[1]:2 , Potential registers zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp[2]:5 , @@ -8150,66 +8142,66 @@ Potential registers zp[1]:226 [ mulf_init::$4 ] : zp[1]:226 , reg byte a , reg b Potential registers zp[1]:227 [ mulf_init::$5 ] : zp[1]:227 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [muls16s] 5,706: zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] 3,003: zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] 3,003: zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] 202: zp[4]:94 [ muls16s::return#2 ] 191.18: zp[2]:92 [ muls16s::b#0 ] 175.58: zp[2]:90 [ muls16s::a#0 ] -Uplift Scope [mul16u] 3,446.71: zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp[1]:180 [ mul16u::$1 ] 1,824.17: zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 309: zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 202: zp[4]:193 [ mul16u::return#3 ] 4: zp[4]:164 [ mul16u::return#2 ] -Uplift Scope [muls16u] 3,003: zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] 2,869.83: zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 202: zp[4]:185 [ muls16u::return#2 ] 183.67: zp[2]:183 [ muls16u::b#0 ] 157.71: zp[2]:181 [ muls16u::a#0 ] -Uplift Scope [mul16u_compare] 241.86: zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp[4]:205 [ mul16u_compare::mf#0 ] 14.52: zp[4]:189 [ mul16u_compare::ms#0 ] 12: zp[4]:197 [ mul16u_compare::mn#0 ] -Uplift Scope [mul16s_compare] 241.86: zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] 235.67: zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] 159.58: zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] 135.36: zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] 17.26: zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 15.69: zp[4]:122 [ mul16s_compare::mf#0 ] 14.52: zp[4]:98 [ mul16s_compare::ms#0 ] 12: zp[4]:110 [ mul16s_compare::mn#0 ] -Uplift Scope [mulf16u] 258.5: zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] 208: zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] 202: zp[4]:201 [ mulf16u::return#3 ] 26.25: zp[4]:160 [ mulf16u::return#0 ] 4: zp[4]:144 [ mulf16u::return#2 ] -Uplift Scope [print_str] 305.5: zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplift Scope [mul16s] 202: zp[4]:106 [ mul16s::return#2 ] 34.33: zp[4]:176 [ mul16s::return#0 ] 16.5: zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp[2]:104 [ mul16s::b#0 ] 7.36: zp[2]:102 [ mul16s::a#0 ] 4: zp[2]:168 [ mul16s::$9 ] 4: zp[2]:170 [ mul16s::$16 ] 4: zp[2]:172 [ mul16s::$13 ] 4: zp[2]:174 [ mul16s::$17 ] -Uplift Scope [mulf16s] 202: zp[4]:118 [ mulf16s::return#2 ] 34.33: zp[4]:156 [ mulf16s::return#0 ] 16.5: zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp[2]:116 [ mulf16s::b#0 ] 7.36: zp[2]:114 [ mulf16s::a#0 ] 4: zp[2]:148 [ mulf16s::$9 ] 4: zp[2]:150 [ mulf16s::$16 ] 4: zp[2]:152 [ mulf16s::$13 ] 4: zp[2]:154 [ mulf16s::$17 ] -Uplift Scope [] 237.59: zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] 34.6: zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplift Scope [mulf_init] 47.67: zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:225 [ mulf_init::$1 ] 22: zp[1]:226 [ mulf_init::$4 ] 22: zp[1]:227 [ mulf_init::$5 ] 15.4: zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [memset] 36.67: zp[2]:88 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_word] 24.67: zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [print_sdword] 22: zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] -Uplift Scope [print_dword] 20: zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplift Scope [print_byte] 10: zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:142 [ print_byte::$0 ] 4: zp[1]:143 [ print_byte::$2 ] -Uplift Scope [print_sword] 17.67: zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplift Scope [print_char] 14: zp[1]:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplift Scope [mul16u_error] 0.57: zp[2]:209 [ mul16u_error::a#0 ] 0.4: zp[2]:211 [ mul16u_error::b#0 ] 0.31: zp[4]:213 [ mul16u_error::ms#0 ] 0.25: zp[4]:217 [ mul16u_error::mn#0 ] 0.21: zp[4]:221 [ mul16u_error::mf#0 ] -Uplift Scope [mul16s_error] 0.57: zp[2]:126 [ mul16s_error::a#0 ] 0.4: zp[2]:128 [ mul16s_error::b#0 ] 0.31: zp[4]:130 [ mul16s_error::ms#0 ] 0.25: zp[4]:134 [ mul16s_error::mn#0 ] 0.21: zp[4]:138 [ mul16s_error::mf#0 ] +Uplift Scope [mul16u] 3,428,587,146.57: zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,430,714,290.29: zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,000,000,002: zp[1]:180 [ mul16u::$1 ] 1,667,498,338.67: zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 330,006: zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 200,002: zp[4]:164 [ mul16u::return#2 ] 20,002: zp[4]:193 [ mul16u::return#3 ] +Uplift Scope [muls16s] 566,670,006: zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] 300,000,003: zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] 300,000,003: zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] 18,182,727.55: zp[2]:92 [ muls16s::b#0 ] 16,684,167.08: zp[2]:90 [ muls16s::a#0 ] 20,002: zp[4]:94 [ muls16s::return#2 ] +Uplift Scope [muls16u] 300,000,003: zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] 283,336,669.83: zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 16,668,333.67: zp[2]:183 [ muls16u::b#0 ] 14,301,429: zp[2]:181 [ muls16u::a#0 ] 20,002: zp[4]:185 [ muls16u::return#2 ] +Uplift Scope [print_char] 160,000,007: zp[1]:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [] 118,030,315.02: zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] 225,174.79: zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplift Scope [print_byte] 20,000,002: zp[1]:142 [ print_byte::$0 ] 20,000,002: zp[1]:143 [ print_byte::$2 ] 9,500,005: zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_str] 3,012,504.25: zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplift Scope [mulf16u] 1,220,005: zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] 775,005.5: zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] 277,500.75: zp[4]:160 [ mulf16u::return#0 ] 200,002: zp[4]:144 [ mulf16u::return#2 ] 20,002: zp[4]:201 [ mulf16u::return#3 ] +Uplift Scope [mul16s] 825,008.25: zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 200,002: zp[2]:168 [ mul16s::$9 ] 200,002: zp[2]:170 [ mul16s::$16 ] 200,002: zp[2]:172 [ mul16s::$13 ] 200,002: zp[2]:174 [ mul16s::$17 ] 36,667.33: zp[4]:176 [ mul16s::return#0 ] 20,002: zp[4]:106 [ mul16s::return#2 ] 10,000.18: zp[2]:104 [ mul16s::b#0 ] 7,857.29: zp[2]:102 [ mul16s::a#0 ] +Uplift Scope [mulf16s] 825,008.25: zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 200,002: zp[2]:148 [ mulf16s::$9 ] 200,002: zp[2]:150 [ mulf16s::$16 ] 200,002: zp[2]:152 [ mulf16s::$13 ] 200,002: zp[2]:154 [ mulf16s::$17 ] 36,667.33: zp[4]:156 [ mulf16s::return#0 ] 20,002: zp[4]:118 [ mulf16s::return#2 ] 10,000.18: zp[2]:116 [ mulf16s::b#0 ] 7,857.29: zp[2]:114 [ mulf16s::a#0 ] +Uplift Scope [print_word] 1,161,345.67: zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [print_dword] 97,010: zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplift Scope [mul16u_compare] 23,766.31: zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 23,335.67: zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 15,801.58: zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 13,264.81: zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 1,570.53: zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 1,546.38: zp[4]:205 [ mul16u_compare::mf#0 ] 1,433.52: zp[4]:189 [ mul16u_compare::ms#0 ] 1,182.53: zp[4]:197 [ mul16u_compare::mn#0 ] +Uplift Scope [mul16s_compare] 23,766.31: zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] 23,335.67: zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] 15,801.58: zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] 13,264.81: zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] 1,570.53: zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 1,546.38: zp[4]:122 [ mul16s_compare::mf#0 ] 1,433.52: zp[4]:98 [ mul16s_compare::ms#0 ] 1,182.53: zp[4]:110 [ mul16s_compare::mn#0 ] +Uplift Scope [print_sdword] 51,511: zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +Uplift Scope [print_sword] 49,342.17: zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplift Scope [memset] 33,336.67: zp[2]:88 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:225 [ mulf_init::$1 ] 2,002: zp[1]:226 [ mulf_init::$4 ] 2,002: zp[1]:227 [ mulf_init::$5 ] 1,401.4: zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mul16u_error] 157.43: zp[2]:209 [ mul16u_error::a#0 ] 110.2: zp[2]:211 [ mul16u_error::b#0 ] 84.77: zp[4]:213 [ mul16u_error::ms#0 ] 68.88: zp[4]:217 [ mul16u_error::mn#0 ] 58: zp[4]:221 [ mul16u_error::mf#0 ] +Uplift Scope [mul16s_error] 157.43: zp[2]:126 [ mul16s_error::a#0 ] 110.2: zp[2]:128 [ mul16s_error::b#0 ] 84.77: zp[4]:130 [ mul16s_error::ms#0 ] 68.88: zp[4]:134 [ mul16s_error::mn#0 ] 58: zp[4]:138 [ mul16s_error::mf#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] -Uplifting [muls16s] best 564939 combination zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] zp[4]:94 [ muls16s::return#2 ] zp[2]:92 [ muls16s::b#0 ] zp[2]:90 [ muls16s::a#0 ] -Uplifting [mul16u] best 558939 combination zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:193 [ mul16u::return#3 ] zp[4]:164 [ mul16u::return#2 ] -Uplifting [muls16u] best 558939 combination zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp[4]:185 [ muls16u::return#2 ] zp[2]:183 [ muls16u::b#0 ] zp[2]:181 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 556839 combination zp[2]: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[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp[4]:205 [ mul16u_compare::mf#0 ] zp[4]:189 [ mul16u_compare::ms#0 ] zp[4]:197 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 554739 combination zp[2]: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[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp[4]:122 [ mul16s_compare::mf#0 ] zp[4]:98 [ mul16s_compare::ms#0 ] zp[4]:110 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 554739 combination zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp[4]:201 [ mulf16u::return#3 ] zp[4]:160 [ mulf16u::return#0 ] zp[4]:144 [ mulf16u::return#2 ] -Uplifting [print_str] best 554739 combination zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [mul16s] best 554739 combination zp[4]:106 [ mul16s::return#2 ] zp[4]:176 [ mul16s::return#0 ] zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:104 [ mul16s::b#0 ] zp[2]:102 [ mul16s::a#0 ] zp[2]:168 [ mul16s::$9 ] zp[2]:170 [ mul16s::$16 ] zp[2]:172 [ mul16s::$13 ] zp[2]:174 [ mul16s::$17 ] -Uplifting [mulf16s] best 554739 combination zp[4]:118 [ mulf16s::return#2 ] zp[4]:156 [ mulf16s::return#0 ] zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:116 [ mulf16s::b#0 ] zp[2]:114 [ mulf16s::a#0 ] zp[2]:148 [ mulf16s::$9 ] zp[2]:150 [ mulf16s::$16 ] zp[2]:152 [ mulf16s::$13 ] zp[2]:154 [ mulf16s::$17 ] -Uplifting [] best 554739 combination zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 554489 combination zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [mul16u] best 558939 combination zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:164 [ mul16u::return#2 ] zp[4]:193 [ mul16u::return#3 ] +Uplifting [muls16s] best 558939 combination zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] zp[2]:92 [ muls16s::b#0 ] zp[2]:90 [ muls16s::a#0 ] zp[4]:94 [ muls16s::return#2 ] +Uplifting [muls16u] best 558939 combination zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp[2]:183 [ muls16u::b#0 ] zp[2]:181 [ muls16u::a#0 ] zp[4]:185 [ muls16u::return#2 ] +Uplifting [print_char] best 558918 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [] best 558918 combination zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [print_byte] best 558900 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_str] best 558900 combination zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [mulf16u] best 558900 combination zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp[4]:160 [ mulf16u::return#0 ] zp[4]:144 [ mulf16u::return#2 ] zp[4]:201 [ mulf16u::return#3 ] +Uplifting [mul16s] best 558900 combination zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:168 [ mul16s::$9 ] zp[2]:170 [ mul16s::$16 ] zp[2]:172 [ mul16s::$13 ] zp[2]:174 [ mul16s::$17 ] zp[4]:176 [ mul16s::return#0 ] zp[4]:106 [ mul16s::return#2 ] zp[2]:104 [ mul16s::b#0 ] zp[2]:102 [ mul16s::a#0 ] +Uplifting [mulf16s] best 558900 combination zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:148 [ mulf16s::$9 ] zp[2]:150 [ mulf16s::$16 ] zp[2]:152 [ mulf16s::$13 ] zp[2]:154 [ mulf16s::$17 ] zp[4]:156 [ mulf16s::return#0 ] zp[4]:118 [ mulf16s::return#2 ] zp[2]:116 [ mulf16s::b#0 ] zp[2]:114 [ mulf16s::a#0 ] +Uplifting [print_word] best 558900 combination zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_dword] best 558900 combination zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [mul16u_compare] best 556800 combination zp[2]: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[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp[4]:205 [ mul16u_compare::mf#0 ] zp[4]:189 [ mul16u_compare::ms#0 ] zp[4]:197 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 554700 combination zp[2]: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[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp[4]:122 [ mul16s_compare::mf#0 ] zp[4]:98 [ mul16s_compare::ms#0 ] zp[4]:110 [ mul16s_compare::mn#0 ] +Uplifting [print_sdword] best 554700 combination zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +Uplifting [print_sword] best 554700 combination zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [memset] best 554700 combination zp[2]:88 [ memset::dst#2 memset::dst#1 ] +Uplifting [mulf_init] best 554450 combination zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [memset] best 554489 combination zp[2]:88 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_word] best 554489 combination zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_sdword] best 554489 combination zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] -Uplifting [print_dword] best 554489 combination zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_byte] best 554475 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_sword] best 554475 combination zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplifting [print_char] best 554454 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplifting [mul16u_error] best 554454 combination zp[2]:209 [ mul16u_error::a#0 ] zp[2]:211 [ mul16u_error::b#0 ] zp[4]:213 [ mul16u_error::ms#0 ] zp[4]:217 [ mul16u_error::mn#0 ] zp[4]:221 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 554454 combination zp[2]:126 [ mul16s_error::a#0 ] zp[2]:128 [ mul16s_error::b#0 ] zp[4]:130 [ mul16s_error::ms#0 ] zp[4]:134 [ mul16s_error::mn#0 ] zp[4]:138 [ mul16s_error::mf#0 ] -Uplifting [RADIX] best 554454 combination -Uplifting [print_ln] best 554454 combination -Uplifting [print_cls] best 554454 combination -Uplifting [main] best 554454 combination +Uplifting [mul16u_error] best 554450 combination zp[2]:209 [ mul16u_error::a#0 ] zp[2]:211 [ mul16u_error::b#0 ] zp[4]:213 [ mul16u_error::ms#0 ] zp[4]:217 [ mul16u_error::mn#0 ] zp[4]:221 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 554450 combination zp[2]:126 [ mul16s_error::a#0 ] zp[2]:128 [ mul16s_error::b#0 ] zp[4]:130 [ mul16s_error::ms#0 ] zp[4]:134 [ mul16s_error::mn#0 ] zp[4]:138 [ mul16s_error::mf#0 ] +Uplifting [RADIX] best 554450 combination +Uplifting [print_ln] best 554450 combination +Uplifting [print_cls] best 554450 combination +Uplifting [main] best 554450 combination Attempting to uplift remaining variables inzp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 554454 combination zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 554450 combination zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 554454 combination zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 554450 combination zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 554314 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 554310 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 554314 combination zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 554310 combination zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] Attempting to uplift remaining variables inzp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 554314 combination zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 554310 combination zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp[2]:90 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp[2]:102 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp[2]:114 [ mulf16s::a#0 ] ] - score: 1 @@ -8976,8 +8968,7 @@ print_dword: { print_word: { .label w = $16 // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [117] call print_byte // [121] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -8988,8 +8979,7 @@ print_word: { // print_word::@1 __b1: // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [119] call print_byte // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -10934,7 +10924,7 @@ Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction __b1: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [109] bne __b1 to beq -Fixing long branch [850] bne __b1 to beq +Fixing long branch [848] bne __b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -10957,8 +10947,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:34 22.0 -(byte*) memset::dst#2 dst zp[2]:34 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:34 20002.0 +(byte*) memset::dst#2 dst zp[2]:34 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -10967,10 +10957,10 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:34 4.0 -(word~) mul16s::$16 zp[2]:32 4.0 -(word~) mul16s::$17 zp[2]:34 4.0 -(word~) mul16s::$9 zp[2]:32 4.0 +(word~) mul16s::$13 zp[2]:34 200002.0 +(word~) mul16s::$16 zp[2]:32 200002.0 +(word~) mul16s::$17 zp[2]:34 200002.0 +(word~) mul16s::$9 zp[2]:32 200002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -10978,18 +10968,18 @@ FINAL SYMBOL TABLE (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:22 7.357142857142858 +(signed word) mul16s::a#0 a zp[2]:22 7857.285714285715 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp[2]:24 9.363636363636363 +(signed word) mul16s::b#0 b zp[2]:24 10000.181818181818 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:14 2.0 -(dword) mul16s::m#1 m zp[4]:14 4.0 -(dword) mul16s::m#2 m zp[4]:14 4.0 -(dword) mul16s::m#4 m zp[4]:14 4.0 -(dword) mul16s::m#5 m zp[4]:14 2.5 +(dword) mul16s::m#0 m zp[4]:14 100001.0 +(dword) mul16s::m#1 m zp[4]:14 200002.0 +(dword) mul16s::m#2 m zp[4]:14 200002.0 +(dword) mul16s::m#4 m zp[4]:14 200002.0 +(dword) mul16s::m#5 m zp[4]:14 125001.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:14 34.33333333333333 -(signed dword) mul16s::return#2 return zp[4]:14 202.0 +(signed dword) mul16s::return#0 return zp[4]:14 36667.33333333333 +(signed dword) mul16s::return#2 return zp[4]:14 20002.0 (void()) mul16s_compare() (label) mul16s_compare::@1 (label) mul16s_compare::@10 @@ -11008,28 +10998,28 @@ FINAL SYMBOL TABLE (label) mul16s_compare::@9 (label) mul16s_compare::@return (signed word) mul16s_compare::a -(signed word) mul16s_compare::a#1 a zp[2]:22 17.862068965517242 -(signed word) mul16s_compare::a#2 a zp[2]:22 213.0 -(signed word) mul16s_compare::a#6 a zp[2]:22 11.0 +(signed word) mul16s_compare::a#1 a zp[2]:22 1762.3103448275863 +(signed word) mul16s_compare::a#2 a zp[2]:22 21003.0 +(signed word) mul16s_compare::a#6 a zp[2]:22 1001.0 (signed word) mul16s_compare::b -(signed word) mul16s_compare::b#1 b zp[2]:24 17.862068965517242 -(signed word) mul16s_compare::b#2 b zp[2]:24 106.5 -(signed word) mul16s_compare::b#6 b zp[2]:24 11.0 +(signed word) mul16s_compare::b#1 b zp[2]:24 1762.3103448275863 +(signed word) mul16s_compare::b#2 b zp[2]:24 10501.5 +(signed word) mul16s_compare::b#6 b zp[2]:24 1001.0 (byte) mul16s_compare::i -(byte) mul16s_compare::i#1 i zp[1]:26 16.5 -(byte) mul16s_compare::i#12 i zp[1]:26 0.7586206896551724 +(byte) mul16s_compare::i#1 i zp[1]:26 1501.5 +(byte) mul16s_compare::i#12 i zp[1]:26 69.03448275862068 (byte) mul16s_compare::j -(byte) mul16s_compare::j#1 reg byte y 151.5 -(byte) mul16s_compare::j#10 reg byte y 8.08 +(byte) mul16s_compare::j#1 reg byte y 15001.5 +(byte) mul16s_compare::j#10 reg byte y 800.08 (signed dword) mul16s_compare::mf -(signed dword) mul16s_compare::mf#0 mf zp[4]:10 15.692307692307692 +(signed dword) mul16s_compare::mf#0 mf zp[4]:10 1546.3846153846152 (signed dword) mul16s_compare::mn -(signed dword) mul16s_compare::mn#0 mn zp[4]:14 12.0 +(signed dword) mul16s_compare::mn#0 mn zp[4]:14 1182.5294117647059 (signed dword) mul16s_compare::ms -(signed dword) mul16s_compare::ms#0 ms zp[4]:4 14.523809523809522 +(signed dword) mul16s_compare::ms#0 ms zp[4]:4 1433.5238095238096 (byte) mul16s_compare::ok -(byte) mul16s_compare::ok#3 reg byte x 202.0 -(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul16s_compare::ok#3 reg byte x 20002.0 +(byte) mul16s_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul16s_compare::str1[(byte) $24] = (byte*) "signed word multiply results match!" (void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf) (label) mul16s_error::@1 @@ -11044,44 +11034,44 @@ FINAL SYMBOL TABLE (label) mul16s_error::@9 (label) mul16s_error::@return (signed word) mul16s_error::a -(signed word) mul16s_error::a#0 a zp[2]:22 0.5714285714285714 +(signed word) mul16s_error::a#0 a zp[2]:22 157.42857142857142 (signed word) mul16s_error::b -(signed word) mul16s_error::b#0 b zp[2]:24 0.4 +(signed word) mul16s_error::b#0 b zp[2]:24 110.19999999999999 (signed dword) mul16s_error::mf -(signed dword) mul16s_error::mf#0 mf zp[4]:10 0.21052631578947367 +(signed dword) mul16s_error::mf#0 mf zp[4]:10 58.0 (signed dword) mul16s_error::mn -(signed dword) mul16s_error::mn#0 mn zp[4]:14 0.25 +(signed dword) mul16s_error::mn#0 mn zp[4]:14 68.875 (signed dword) mul16s_error::ms -(signed dword) mul16s_error::ms#0 ms zp[4]:4 0.3076923076923077 +(signed dword) mul16s_error::ms#0 ms zp[4]:4 84.76923076923077 (const byte*) mul16s_error::str[(byte) $1f] = (byte*) "signed word multiply mismatch " (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 2002.0 +(byte~) mul16u::$1 reg byte a 2.000000002E9 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:34 1001.0 -(word) mul16u::a#1 a zp[2]:34 2.0 -(word) mul16u::a#2 a zp[2]:34 101.0 -(word) mul16u::a#3 a zp[2]:34 667.6666666666667 -(word) mul16u::a#6 a zp[2]:34 52.5 +(word) mul16u::a#0 a zp[2]:34 1.000000001E9 +(word) mul16u::a#1 a zp[2]:34 100001.0 +(word) mul16u::a#2 a zp[2]:34 10001.0 +(word) mul16u::a#3 a zp[2]:34 6.668333341666667E8 +(word) mul16u::a#6 a zp[2]:34 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:30 4.0 -(word) mul16u::b#1 b zp[2]:30 202.0 -(word) mul16u::b#2 b zp[2]:30 103.0 +(word) mul16u::b#0 b zp[2]:30 200002.0 +(word) mul16u::b#1 b zp[2]:30 20002.0 +(word) mul16u::b#2 b zp[2]:30 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:18 4.0 -(dword) mul16u::mb#1 mb zp[4]:18 2002.0 -(dword) mul16u::mb#2 mb zp[4]:18 429.2857142857143 +(dword) mul16u::mb#0 mb zp[4]:18 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:18 2.000000002E9 +(dword) mul16u::mb#2 mb zp[4]:18 4.2871428628571427E8 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:14 2002.0 -(dword) mul16u::res#2 res zp[4]:14 443.7142857142857 -(dword) mul16u::res#6 res zp[4]:14 1001.0 +(dword) mul16u::res#1 res zp[4]:14 2.000000002E9 +(dword) mul16u::res#2 res zp[4]:14 4.285871435714286E8 +(dword) mul16u::res#6 res zp[4]:14 1.000000001E9 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:14 4.0 -(dword) mul16u::return#3 return zp[4]:14 202.0 +(dword) mul16u::return#2 return zp[4]:14 200002.0 +(dword) mul16u::return#3 return zp[4]:14 20002.0 (void()) mul16u_compare() (label) mul16u_compare::@1 (label) mul16u_compare::@10 @@ -11100,28 +11090,28 @@ FINAL SYMBOL TABLE (label) mul16u_compare::@9 (label) mul16u_compare::@return (word) mul16u_compare::a -(word) mul16u_compare::a#1 a zp[2]:28 17.862068965517242 -(word) mul16u_compare::a#2 a zp[2]:28 213.0 -(word) mul16u_compare::a#6 a zp[2]:28 11.0 +(word) mul16u_compare::a#1 a zp[2]:28 1762.3103448275863 +(word) mul16u_compare::a#2 a zp[2]:28 21003.0 +(word) mul16u_compare::a#6 a zp[2]:28 1001.0 (word) mul16u_compare::b -(word) mul16u_compare::b#1 b zp[2]:30 17.862068965517242 -(word) mul16u_compare::b#2 b zp[2]:30 106.5 -(word) mul16u_compare::b#6 b zp[2]:30 11.0 +(word) mul16u_compare::b#1 b zp[2]:30 1762.3103448275863 +(word) mul16u_compare::b#2 b zp[2]:30 10501.5 +(word) mul16u_compare::b#6 b zp[2]:30 1001.0 (byte) mul16u_compare::i -(byte) mul16u_compare::i#1 i zp[1]:26 16.5 -(byte) mul16u_compare::i#12 i zp[1]:26 0.7586206896551724 +(byte) mul16u_compare::i#1 i zp[1]:26 1501.5 +(byte) mul16u_compare::i#12 i zp[1]:26 69.03448275862068 (byte) mul16u_compare::j -(byte) mul16u_compare::j#1 reg byte y 151.5 -(byte) mul16u_compare::j#10 reg byte y 8.08 +(byte) mul16u_compare::j#1 reg byte y 15001.5 +(byte) mul16u_compare::j#10 reg byte y 800.08 (dword) mul16u_compare::mf -(dword) mul16u_compare::mf#0 mf zp[4]:10 15.692307692307692 +(dword) mul16u_compare::mf#0 mf zp[4]:10 1546.3846153846152 (dword) mul16u_compare::mn -(dword) mul16u_compare::mn#0 mn zp[4]:14 12.0 +(dword) mul16u_compare::mn#0 mn zp[4]:14 1182.5294117647059 (dword) mul16u_compare::ms -(dword) mul16u_compare::ms#0 ms zp[4]:4 14.523809523809522 +(dword) mul16u_compare::ms#0 ms zp[4]:4 1433.5238095238096 (byte) mul16u_compare::ok -(byte) mul16u_compare::ok#3 reg byte x 202.0 -(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul16u_compare::ok#3 reg byte x 20002.0 +(byte) mul16u_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul16u_compare::str1[(byte) $1d] = (byte*) "word multiply results match!" (void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf) (label) mul16u_error::@1 @@ -11136,21 +11126,21 @@ FINAL SYMBOL TABLE (label) mul16u_error::@9 (label) mul16u_error::@return (word) mul16u_error::a -(word) mul16u_error::a#0 a zp[2]:22 0.5714285714285714 +(word) mul16u_error::a#0 a zp[2]:22 157.42857142857142 (word) mul16u_error::b -(word) mul16u_error::b#0 b zp[2]:30 0.4 +(word) mul16u_error::b#0 b zp[2]:30 110.19999999999999 (dword) mul16u_error::mf -(dword) mul16u_error::mf#0 mf zp[4]:10 0.21052631578947367 +(dword) mul16u_error::mf#0 mf zp[4]:10 58.0 (dword) mul16u_error::mn -(dword) mul16u_error::mn#0 mn zp[4]:14 0.25 +(dword) mul16u_error::mn#0 mn zp[4]:14 68.875 (dword) mul16u_error::ms -(dword) mul16u_error::ms#0 ms zp[4]:4 0.3076923076923077 +(dword) mul16u_error::ms#0 ms zp[4]:4 84.76923076923077 (const byte*) mul16u_error::str[(byte) $13] = (byte*) "multiply mismatch " (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$13 zp[2]:30 4.0 -(word~) mulf16s::$16 zp[2]:28 4.0 -(word~) mulf16s::$17 zp[2]:30 4.0 -(word~) mulf16s::$9 zp[2]:28 4.0 +(word~) mulf16s::$13 zp[2]:30 200002.0 +(word~) mulf16s::$16 zp[2]:28 200002.0 +(word~) mulf16s::$17 zp[2]:30 200002.0 +(word~) mulf16s::$9 zp[2]:28 200002.0 (label) mulf16s::@1 (label) mulf16s::@2 (label) mulf16s::@3 @@ -11158,39 +11148,39 @@ FINAL SYMBOL TABLE (label) mulf16s::@5 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp[2]:22 7.357142857142858 +(signed word) mulf16s::a#0 a zp[2]:22 7857.285714285715 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp[2]:24 9.363636363636363 +(signed word) mulf16s::b#0 b zp[2]:24 10000.181818181818 (dword) mulf16s::m -(dword) mulf16s::m#0 m zp[4]:10 2.0 -(dword) mulf16s::m#1 m zp[4]:10 4.0 -(dword) mulf16s::m#2 m zp[4]:10 4.0 -(dword) mulf16s::m#4 m zp[4]:10 4.0 -(dword) mulf16s::m#5 m zp[4]:10 2.5 +(dword) mulf16s::m#0 m zp[4]:10 100001.0 +(dword) mulf16s::m#1 m zp[4]:10 200002.0 +(dword) mulf16s::m#2 m zp[4]:10 200002.0 +(dword) mulf16s::m#4 m zp[4]:10 200002.0 +(dword) mulf16s::m#5 m zp[4]:10 125001.25 (signed dword) mulf16s::return -(signed dword) mulf16s::return#0 return zp[4]:10 34.33333333333333 -(signed dword) mulf16s::return#2 return zp[4]:10 202.0 +(signed dword) mulf16s::return#0 return zp[4]:10 36667.33333333333 +(signed dword) mulf16s::return#2 return zp[4]:10 20002.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a -(word) mulf16u::a#0 a zp[2]:28 2.0 -(word) mulf16u::a#1 a zp[2]:28 101.0 -(word) mulf16u::a#2 a zp[2]:28 105.0 +(word) mulf16u::a#0 a zp[2]:28 100001.0 +(word) mulf16u::a#1 a zp[2]:28 10001.0 +(word) mulf16u::a#2 a zp[2]:28 1110003.0 (word) mulf16u::b -(word) mulf16u::b#0 b zp[2]:30 4.0 -(word) mulf16u::b#1 b zp[2]:30 202.0 -(word) mulf16u::b#2 b zp[2]:30 52.5 +(word) mulf16u::b#0 b zp[2]:30 200002.0 +(word) mulf16u::b#1 b zp[2]:30 20002.0 +(word) mulf16u::b#2 b zp[2]:30 555001.5 (const word*) mulf16u::memA = (word*) 248 (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:10 26.25 -(dword) mulf16u::return#2 return zp[4]:10 4.0 -(dword) mulf16u::return#3 return zp[4]:10 202.0 +(dword) mulf16u::return#0 return zp[4]:10 277500.75 +(dword) mulf16u::return#2 return zp[4]:10 200002.0 +(dword) mulf16u::return#3 return zp[4]:10 20002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -11202,35 +11192,35 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:26 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:26 11.0 +(byte) mulf_init::c#1 c zp[1]:26 231.0 +(byte) mulf_init::c#2 c zp[1]:26 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:27 4.125 -(byte) mulf_init::dir#4 dir zp[1]:27 11.0 +(byte) mulf_init::dir#2 dir zp[1]:27 375.375 +(byte) mulf_init::dir#4 dir zp[1]:27 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:32 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:32 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:32 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:32 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:32 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:32 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:32 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:32 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:34 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:34 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:34 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:34 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:24 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:24 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:24 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:24 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:30 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:30 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:30 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:30 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } @@ -11244,87 +11234,87 @@ FINAL SYMBOL TABLE (label) muls16s::@6 (label) muls16s::@return (signed word) muls16s::a -(signed word) muls16s::a#0 a zp[2]:22 175.58333333333334 +(signed word) muls16s::a#0 a zp[2]:22 1.6684167083333334E7 (signed word) muls16s::b -(signed word) muls16s::b#0 b zp[2]:24 191.1818181818182 +(signed word) muls16s::b#0 b zp[2]:24 1.8182727545454547E7 (signed word) muls16s::i -(signed word) muls16s::i#1 i zp[2]:30 2002.0 -(signed word) muls16s::i#2 i zp[2]:30 1001.0 +(signed word) muls16s::i#1 i zp[2]:30 2.00000002E8 +(signed word) muls16s::i#2 i zp[2]:30 1.00000001E8 (signed word) muls16s::j -(signed word) muls16s::j#1 j zp[2]:28 2002.0 -(signed word) muls16s::j#2 j zp[2]:28 1001.0 +(signed word) muls16s::j#1 j zp[2]:28 2.00000002E8 +(signed word) muls16s::j#2 j zp[2]:28 1.00000001E8 (signed dword) muls16s::m -(signed dword) muls16s::m#1 m zp[4]:4 1001.0 -(signed dword) muls16s::m#2 m zp[4]:4 1001.0 -(signed dword) muls16s::m#3 m zp[4]:4 1501.5 -(signed dword) muls16s::m#5 m zp[4]:4 1501.5 +(signed dword) muls16s::m#1 m zp[4]:4 1.00000001E8 +(signed dword) muls16s::m#2 m zp[4]:4 1.00000001E8 +(signed dword) muls16s::m#3 m zp[4]:4 1.500000015E8 +(signed dword) muls16s::m#5 m zp[4]:4 1.500000015E8 (signed dword) muls16s::return -(signed dword) muls16s::return#0 return zp[4]:4 701.0 -(signed dword) muls16s::return#2 return zp[4]:4 202.0 +(signed dword) muls16s::return#0 return zp[4]:4 6.6670001E7 +(signed dword) muls16s::return#2 return zp[4]:4 20002.0 (dword()) muls16u((word) muls16u::a , (word) muls16u::b) (label) muls16u::@1 (label) muls16u::@2 (label) muls16u::@3 (label) muls16u::@return (word) muls16u::a -(word) muls16u::a#0 a zp[2]:28 157.71428571428572 +(word) muls16u::a#0 a zp[2]:28 1.4301429E7 (word) muls16u::b -(word) muls16u::b#0 b zp[2]:30 183.66666666666669 +(word) muls16u::b#0 b zp[2]:30 1.6668333666666668E7 (word) muls16u::i -(word) muls16u::i#1 i zp[2]:22 2002.0 -(word) muls16u::i#2 i zp[2]:22 1001.0 +(word) muls16u::i#1 i zp[2]:22 2.00000002E8 +(word) muls16u::i#2 i zp[2]:22 1.00000001E8 (dword) muls16u::m -(dword) muls16u::m#1 m zp[4]:4 1001.0 -(dword) muls16u::m#3 m zp[4]:4 1501.5 +(dword) muls16u::m#1 m zp[4]:4 1.00000001E8 +(dword) muls16u::m#3 m zp[4]:4 1.500000015E8 (dword) muls16u::return -(dword) muls16u::return#0 return zp[4]:4 367.33333333333337 -(dword) muls16u::return#2 return zp[4]:4 202.0 +(dword) muls16u::return#0 return zp[4]:4 3.3336667333333336E7 +(dword) muls16u::return#2 return zp[4]:4 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2.0000002E7 +(byte~) print_byte::$2 reg byte x 2.0000002E7 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2000002.0 +(byte) print_byte::b#1 reg byte x 2000002.0 +(byte) print_byte::b#2 reg byte x 5500001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2.0000002E7 +(byte) print_char::ch#5 reg byte a 2.0000002E7 +(byte) print_char::ch#6 reg byte a 1.20000003E8 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 101.0 -(byte*) print_char_cursor#132 print_char_cursor zp[2]:8 3.1874999999999996 -(byte*) print_char_cursor#133 print_char_cursor zp[2]:8 5.75 -(byte*) print_char_cursor#137 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#138 print_char_cursor zp[2]:8 5.0 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:8 2.0 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 22.0 -(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 24.0 -(byte*) print_char_cursor#154 print_char_cursor zp[2]:8 48.0 -(byte*) print_char_cursor#180 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#187 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#219 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#22 print_char_cursor zp[2]:8 0.653061224489796 -(byte*) print_char_cursor#88 print_char_cursor zp[2]:8 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 1000001.0 +(byte*) print_char_cursor#132 print_char_cursor zp[2]:8 27316.25892857142 +(byte*) print_char_cursor#133 print_char_cursor zp[2]:8 25601.75 +(byte*) print_char_cursor#137 print_char_cursor zp[2]:8 606003.0 +(byte*) print_char_cursor#138 print_char_cursor zp[2]:8 56502.5 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:8 4000000.9999999995 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 2002.0 +(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 2103.0 +(byte*) print_char_cursor#154 print_char_cursor zp[2]:8 22215.0 +(byte*) print_char_cursor#180 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#187 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#219 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#22 print_char_cursor zp[2]:8 2267959.5102040814 +(byte*) print_char_cursor#88 print_char_cursor zp[2]:8 1.10020004E8 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:4 4.0 -(dword) print_dword::dw#1 dw zp[4]:4 4.0 -(dword) print_dword::dw#2 dw zp[4]:4 4.0 -(dword) print_dword::dw#3 dw zp[4]:4 4.0 -(dword) print_dword::dw#4 dw zp[4]:4 3.9999999999999996 +(dword) print_dword::dw#0 dw zp[4]:4 20002.0 +(dword) print_dword::dw#1 dw zp[4]:4 2002.0 +(dword) print_dword::dw#2 dw zp[4]:4 2002.0 +(dword) print_dword::dw#3 dw zp[4]:4 2002.0 +(dword) print_dword::dw#4 dw zp[4]:4 71002.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6025641025641025 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#43 print_line_cursor zp[2]:2 10.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3866.7948717948716 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:2 210003.0 +(byte*) print_line_cursor#43 print_line_cursor zp[2]:2 11305.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -11336,20 +11326,20 @@ FINAL SYMBOL TABLE (label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw -(signed dword) print_sdword::dw#0 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#1 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#2 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#3 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#4 dw zp[4]:4 1.9999999999999998 -(signed dword) print_sdword::dw#6 dw zp[4]:4 4.0 +(signed dword) print_sdword::dw#0 dw zp[4]:4 20002.0 +(signed dword) print_sdword::dw#1 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#2 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#3 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#4 dw zp[4]:4 5500.999999999999 +(signed dword) print_sdword::dw#6 dw zp[4]:4 20002.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:34 202.0 -(byte*) print_str::str#15 str zp[2]:34 101.5 -(byte*) print_str::str#17 str zp[2]:34 2.0 +(byte*) print_str::str#0 str zp[2]:34 2000002.0 +(byte*) print_str::str#15 str zp[2]:34 1002501.25 +(byte*) print_str::str#17 str zp[2]:34 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -11357,21 +11347,21 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:22 4.0 -(signed word) print_sword::w#1 w zp[2]:22 4.0 -(signed word) print_sword::w#2 w zp[2]:22 4.0 -(signed word) print_sword::w#3 w zp[2]:22 1.6666666666666665 -(signed word) print_sword::w#5 w zp[2]:22 4.0 +(signed word) print_sword::w#0 w zp[2]:22 20002.0 +(signed word) print_sword::w#1 w zp[2]:22 2002.0 +(signed word) print_sword::w#2 w zp[2]:22 2002.0 +(signed word) print_sword::w#3 w zp[2]:22 5334.166666666666 +(signed word) print_sword::w#5 w zp[2]:22 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:22 4.0 -(word) print_word::w#1 w zp[2]:22 4.0 -(word) print_word::w#2 w zp[2]:22 4.0 -(word) print_word::w#3 w zp[2]:22 4.0 -(word) print_word::w#4 w zp[2]:22 4.0 -(word) print_word::w#5 w zp[2]:22 4.666666666666666 +(word) print_word::w#0 w zp[2]:22 20002.0 +(word) print_word::w#1 w zp[2]:22 200002.0 +(word) print_word::w#2 w zp[2]:22 200002.0 +(word) print_word::w#3 w zp[2]:22 2002.0 +(word) print_word::w#4 w zp[2]:22 2002.0 +(word) print_word::w#5 w zp[2]:22 737335.6666666667 (const byte*) str[(byte) 2] = (byte*) "." (const byte*) str1[(byte) 2] = (byte*) "*" (const byte*) str2[(byte) 7] = (byte*) " slow:" @@ -11409,7 +11399,7 @@ reg byte a [ mulf_init::$5 ] FINAL ASSEMBLER -Score: 469028 +Score: 469024 // File Comments // Test the fast multiplication library @@ -12019,8 +12009,7 @@ print_word: { .label w = $16 // print_byte(>w) // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [117] call print_byte // [121] phi from print_word to print_byte [phi:print_word->print_byte] // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy @@ -12029,8 +12018,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy diff --git a/src/test/ref/test-multiply-16bit.sym b/src/test/ref/test-multiply-16bit.sym index 9f5ea52c7..862928a40 100644 --- a/src/test/ref/test-multiply-16bit.sym +++ b/src/test/ref/test-multiply-16bit.sym @@ -18,8 +18,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:34 22.0 -(byte*) memset::dst#2 dst zp[2]:34 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:34 20002.0 +(byte*) memset::dst#2 dst zp[2]:34 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -28,10 +28,10 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$13 zp[2]:34 4.0 -(word~) mul16s::$16 zp[2]:32 4.0 -(word~) mul16s::$17 zp[2]:34 4.0 -(word~) mul16s::$9 zp[2]:32 4.0 +(word~) mul16s::$13 zp[2]:34 200002.0 +(word~) mul16s::$16 zp[2]:32 200002.0 +(word~) mul16s::$17 zp[2]:34 200002.0 +(word~) mul16s::$9 zp[2]:32 200002.0 (label) mul16s::@1 (label) mul16s::@2 (label) mul16s::@3 @@ -39,18 +39,18 @@ (label) mul16s::@5 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp[2]:22 7.357142857142858 +(signed word) mul16s::a#0 a zp[2]:22 7857.285714285715 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp[2]:24 9.363636363636363 +(signed word) mul16s::b#0 b zp[2]:24 10000.181818181818 (dword) mul16s::m -(dword) mul16s::m#0 m zp[4]:14 2.0 -(dword) mul16s::m#1 m zp[4]:14 4.0 -(dword) mul16s::m#2 m zp[4]:14 4.0 -(dword) mul16s::m#4 m zp[4]:14 4.0 -(dword) mul16s::m#5 m zp[4]:14 2.5 +(dword) mul16s::m#0 m zp[4]:14 100001.0 +(dword) mul16s::m#1 m zp[4]:14 200002.0 +(dword) mul16s::m#2 m zp[4]:14 200002.0 +(dword) mul16s::m#4 m zp[4]:14 200002.0 +(dword) mul16s::m#5 m zp[4]:14 125001.25 (signed dword) mul16s::return -(signed dword) mul16s::return#0 return zp[4]:14 34.33333333333333 -(signed dword) mul16s::return#2 return zp[4]:14 202.0 +(signed dword) mul16s::return#0 return zp[4]:14 36667.33333333333 +(signed dword) mul16s::return#2 return zp[4]:14 20002.0 (void()) mul16s_compare() (label) mul16s_compare::@1 (label) mul16s_compare::@10 @@ -69,28 +69,28 @@ (label) mul16s_compare::@9 (label) mul16s_compare::@return (signed word) mul16s_compare::a -(signed word) mul16s_compare::a#1 a zp[2]:22 17.862068965517242 -(signed word) mul16s_compare::a#2 a zp[2]:22 213.0 -(signed word) mul16s_compare::a#6 a zp[2]:22 11.0 +(signed word) mul16s_compare::a#1 a zp[2]:22 1762.3103448275863 +(signed word) mul16s_compare::a#2 a zp[2]:22 21003.0 +(signed word) mul16s_compare::a#6 a zp[2]:22 1001.0 (signed word) mul16s_compare::b -(signed word) mul16s_compare::b#1 b zp[2]:24 17.862068965517242 -(signed word) mul16s_compare::b#2 b zp[2]:24 106.5 -(signed word) mul16s_compare::b#6 b zp[2]:24 11.0 +(signed word) mul16s_compare::b#1 b zp[2]:24 1762.3103448275863 +(signed word) mul16s_compare::b#2 b zp[2]:24 10501.5 +(signed word) mul16s_compare::b#6 b zp[2]:24 1001.0 (byte) mul16s_compare::i -(byte) mul16s_compare::i#1 i zp[1]:26 16.5 -(byte) mul16s_compare::i#12 i zp[1]:26 0.7586206896551724 +(byte) mul16s_compare::i#1 i zp[1]:26 1501.5 +(byte) mul16s_compare::i#12 i zp[1]:26 69.03448275862068 (byte) mul16s_compare::j -(byte) mul16s_compare::j#1 reg byte y 151.5 -(byte) mul16s_compare::j#10 reg byte y 8.08 +(byte) mul16s_compare::j#1 reg byte y 15001.5 +(byte) mul16s_compare::j#10 reg byte y 800.08 (signed dword) mul16s_compare::mf -(signed dword) mul16s_compare::mf#0 mf zp[4]:10 15.692307692307692 +(signed dword) mul16s_compare::mf#0 mf zp[4]:10 1546.3846153846152 (signed dword) mul16s_compare::mn -(signed dword) mul16s_compare::mn#0 mn zp[4]:14 12.0 +(signed dword) mul16s_compare::mn#0 mn zp[4]:14 1182.5294117647059 (signed dword) mul16s_compare::ms -(signed dword) mul16s_compare::ms#0 ms zp[4]:4 14.523809523809522 +(signed dword) mul16s_compare::ms#0 ms zp[4]:4 1433.5238095238096 (byte) mul16s_compare::ok -(byte) mul16s_compare::ok#3 reg byte x 202.0 -(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul16s_compare::ok#3 reg byte x 20002.0 +(byte) mul16s_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul16s_compare::str1[(byte) $24] = (byte*) "signed word multiply results match!" (void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf) (label) mul16s_error::@1 @@ -105,44 +105,44 @@ (label) mul16s_error::@9 (label) mul16s_error::@return (signed word) mul16s_error::a -(signed word) mul16s_error::a#0 a zp[2]:22 0.5714285714285714 +(signed word) mul16s_error::a#0 a zp[2]:22 157.42857142857142 (signed word) mul16s_error::b -(signed word) mul16s_error::b#0 b zp[2]:24 0.4 +(signed word) mul16s_error::b#0 b zp[2]:24 110.19999999999999 (signed dword) mul16s_error::mf -(signed dword) mul16s_error::mf#0 mf zp[4]:10 0.21052631578947367 +(signed dword) mul16s_error::mf#0 mf zp[4]:10 58.0 (signed dword) mul16s_error::mn -(signed dword) mul16s_error::mn#0 mn zp[4]:14 0.25 +(signed dword) mul16s_error::mn#0 mn zp[4]:14 68.875 (signed dword) mul16s_error::ms -(signed dword) mul16s_error::ms#0 ms zp[4]:4 0.3076923076923077 +(signed dword) mul16s_error::ms#0 ms zp[4]:4 84.76923076923077 (const byte*) mul16s_error::str[(byte) $1f] = (byte*) "signed word multiply mismatch " (dword()) mul16u((word) mul16u::a , (word) mul16u::b) -(byte~) mul16u::$1 reg byte a 2002.0 +(byte~) mul16u::$1 reg byte a 2.000000002E9 (label) mul16u::@1 (label) mul16u::@2 (label) mul16u::@3 (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:34 1001.0 -(word) mul16u::a#1 a zp[2]:34 2.0 -(word) mul16u::a#2 a zp[2]:34 101.0 -(word) mul16u::a#3 a zp[2]:34 667.6666666666667 -(word) mul16u::a#6 a zp[2]:34 52.5 +(word) mul16u::a#0 a zp[2]:34 1.000000001E9 +(word) mul16u::a#1 a zp[2]:34 100001.0 +(word) mul16u::a#2 a zp[2]:34 10001.0 +(word) mul16u::a#3 a zp[2]:34 6.668333341666667E8 +(word) mul16u::a#6 a zp[2]:34 555001.5 (word) mul16u::b -(word) mul16u::b#0 b zp[2]:30 4.0 -(word) mul16u::b#1 b zp[2]:30 202.0 -(word) mul16u::b#2 b zp[2]:30 103.0 +(word) mul16u::b#0 b zp[2]:30 200002.0 +(word) mul16u::b#1 b zp[2]:30 20002.0 +(word) mul16u::b#2 b zp[2]:30 110002.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:18 4.0 -(dword) mul16u::mb#1 mb zp[4]:18 2002.0 -(dword) mul16u::mb#2 mb zp[4]:18 429.2857142857143 +(dword) mul16u::mb#0 mb zp[4]:18 2000002.0 +(dword) mul16u::mb#1 mb zp[4]:18 2.000000002E9 +(dword) mul16u::mb#2 mb zp[4]:18 4.2871428628571427E8 (dword) mul16u::res -(dword) mul16u::res#1 res zp[4]:14 2002.0 -(dword) mul16u::res#2 res zp[4]:14 443.7142857142857 -(dword) mul16u::res#6 res zp[4]:14 1001.0 +(dword) mul16u::res#1 res zp[4]:14 2.000000002E9 +(dword) mul16u::res#2 res zp[4]:14 4.285871435714286E8 +(dword) mul16u::res#6 res zp[4]:14 1.000000001E9 (dword) mul16u::return -(dword) mul16u::return#2 return zp[4]:14 4.0 -(dword) mul16u::return#3 return zp[4]:14 202.0 +(dword) mul16u::return#2 return zp[4]:14 200002.0 +(dword) mul16u::return#3 return zp[4]:14 20002.0 (void()) mul16u_compare() (label) mul16u_compare::@1 (label) mul16u_compare::@10 @@ -161,28 +161,28 @@ (label) mul16u_compare::@9 (label) mul16u_compare::@return (word) mul16u_compare::a -(word) mul16u_compare::a#1 a zp[2]:28 17.862068965517242 -(word) mul16u_compare::a#2 a zp[2]:28 213.0 -(word) mul16u_compare::a#6 a zp[2]:28 11.0 +(word) mul16u_compare::a#1 a zp[2]:28 1762.3103448275863 +(word) mul16u_compare::a#2 a zp[2]:28 21003.0 +(word) mul16u_compare::a#6 a zp[2]:28 1001.0 (word) mul16u_compare::b -(word) mul16u_compare::b#1 b zp[2]:30 17.862068965517242 -(word) mul16u_compare::b#2 b zp[2]:30 106.5 -(word) mul16u_compare::b#6 b zp[2]:30 11.0 +(word) mul16u_compare::b#1 b zp[2]:30 1762.3103448275863 +(word) mul16u_compare::b#2 b zp[2]:30 10501.5 +(word) mul16u_compare::b#6 b zp[2]:30 1001.0 (byte) mul16u_compare::i -(byte) mul16u_compare::i#1 i zp[1]:26 16.5 -(byte) mul16u_compare::i#12 i zp[1]:26 0.7586206896551724 +(byte) mul16u_compare::i#1 i zp[1]:26 1501.5 +(byte) mul16u_compare::i#12 i zp[1]:26 69.03448275862068 (byte) mul16u_compare::j -(byte) mul16u_compare::j#1 reg byte y 151.5 -(byte) mul16u_compare::j#10 reg byte y 8.08 +(byte) mul16u_compare::j#1 reg byte y 15001.5 +(byte) mul16u_compare::j#10 reg byte y 800.08 (dword) mul16u_compare::mf -(dword) mul16u_compare::mf#0 mf zp[4]:10 15.692307692307692 +(dword) mul16u_compare::mf#0 mf zp[4]:10 1546.3846153846152 (dword) mul16u_compare::mn -(dword) mul16u_compare::mn#0 mn zp[4]:14 12.0 +(dword) mul16u_compare::mn#0 mn zp[4]:14 1182.5294117647059 (dword) mul16u_compare::ms -(dword) mul16u_compare::ms#0 ms zp[4]:4 14.523809523809522 +(dword) mul16u_compare::ms#0 ms zp[4]:4 1433.5238095238096 (byte) mul16u_compare::ok -(byte) mul16u_compare::ok#3 reg byte x 202.0 -(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul16u_compare::ok#3 reg byte x 20002.0 +(byte) mul16u_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul16u_compare::str1[(byte) $1d] = (byte*) "word multiply results match!" (void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf) (label) mul16u_error::@1 @@ -197,21 +197,21 @@ (label) mul16u_error::@9 (label) mul16u_error::@return (word) mul16u_error::a -(word) mul16u_error::a#0 a zp[2]:22 0.5714285714285714 +(word) mul16u_error::a#0 a zp[2]:22 157.42857142857142 (word) mul16u_error::b -(word) mul16u_error::b#0 b zp[2]:30 0.4 +(word) mul16u_error::b#0 b zp[2]:30 110.19999999999999 (dword) mul16u_error::mf -(dword) mul16u_error::mf#0 mf zp[4]:10 0.21052631578947367 +(dword) mul16u_error::mf#0 mf zp[4]:10 58.0 (dword) mul16u_error::mn -(dword) mul16u_error::mn#0 mn zp[4]:14 0.25 +(dword) mul16u_error::mn#0 mn zp[4]:14 68.875 (dword) mul16u_error::ms -(dword) mul16u_error::ms#0 ms zp[4]:4 0.3076923076923077 +(dword) mul16u_error::ms#0 ms zp[4]:4 84.76923076923077 (const byte*) mul16u_error::str[(byte) $13] = (byte*) "multiply mismatch " (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$13 zp[2]:30 4.0 -(word~) mulf16s::$16 zp[2]:28 4.0 -(word~) mulf16s::$17 zp[2]:30 4.0 -(word~) mulf16s::$9 zp[2]:28 4.0 +(word~) mulf16s::$13 zp[2]:30 200002.0 +(word~) mulf16s::$16 zp[2]:28 200002.0 +(word~) mulf16s::$17 zp[2]:30 200002.0 +(word~) mulf16s::$9 zp[2]:28 200002.0 (label) mulf16s::@1 (label) mulf16s::@2 (label) mulf16s::@3 @@ -219,39 +219,39 @@ (label) mulf16s::@5 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp[2]:22 7.357142857142858 +(signed word) mulf16s::a#0 a zp[2]:22 7857.285714285715 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp[2]:24 9.363636363636363 +(signed word) mulf16s::b#0 b zp[2]:24 10000.181818181818 (dword) mulf16s::m -(dword) mulf16s::m#0 m zp[4]:10 2.0 -(dword) mulf16s::m#1 m zp[4]:10 4.0 -(dword) mulf16s::m#2 m zp[4]:10 4.0 -(dword) mulf16s::m#4 m zp[4]:10 4.0 -(dword) mulf16s::m#5 m zp[4]:10 2.5 +(dword) mulf16s::m#0 m zp[4]:10 100001.0 +(dword) mulf16s::m#1 m zp[4]:10 200002.0 +(dword) mulf16s::m#2 m zp[4]:10 200002.0 +(dword) mulf16s::m#4 m zp[4]:10 200002.0 +(dword) mulf16s::m#5 m zp[4]:10 125001.25 (signed dword) mulf16s::return -(signed dword) mulf16s::return#0 return zp[4]:10 34.33333333333333 -(signed dword) mulf16s::return#2 return zp[4]:10 202.0 +(signed dword) mulf16s::return#0 return zp[4]:10 36667.33333333333 +(signed dword) mulf16s::return#2 return zp[4]:10 20002.0 (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a -(word) mulf16u::a#0 a zp[2]:28 2.0 -(word) mulf16u::a#1 a zp[2]:28 101.0 -(word) mulf16u::a#2 a zp[2]:28 105.0 +(word) mulf16u::a#0 a zp[2]:28 100001.0 +(word) mulf16u::a#1 a zp[2]:28 10001.0 +(word) mulf16u::a#2 a zp[2]:28 1110003.0 (word) mulf16u::b -(word) mulf16u::b#0 b zp[2]:30 4.0 -(word) mulf16u::b#1 b zp[2]:30 202.0 -(word) mulf16u::b#2 b zp[2]:30 52.5 +(word) mulf16u::b#0 b zp[2]:30 200002.0 +(word) mulf16u::b#1 b zp[2]:30 20002.0 +(word) mulf16u::b#2 b zp[2]:30 555001.5 (const word*) mulf16u::memA = (word*) 248 (const word*) mulf16u::memB = (word*) 250 (const dword*) mulf16u::memR = (dword*) 252 (dword) mulf16u::return -(dword) mulf16u::return#0 return zp[4]:10 26.25 -(dword) mulf16u::return#2 return zp[4]:10 4.0 -(dword) mulf16u::return#3 return zp[4]:10 202.0 +(dword) mulf16u::return#0 return zp[4]:10 277500.75 +(dword) mulf16u::return#2 return zp[4]:10 200002.0 +(dword) mulf16u::return#3 return zp[4]:10 20002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -263,35 +263,35 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:26 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:26 11.0 +(byte) mulf_init::c#1 c zp[1]:26 231.0 +(byte) mulf_init::c#2 c zp[1]:26 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:27 4.125 -(byte) mulf_init::dir#4 dir zp[1]:27 11.0 +(byte) mulf_init::dir#2 dir zp[1]:27 375.375 +(byte) mulf_init::dir#4 dir zp[1]:27 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:32 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:32 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:32 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:32 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:32 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:32 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:32 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:32 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:34 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:34 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:34 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:34 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:24 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:24 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:24 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:24 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:30 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:30 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:30 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:30 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:28 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:28 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) } (const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) } @@ -305,87 +305,87 @@ (label) muls16s::@6 (label) muls16s::@return (signed word) muls16s::a -(signed word) muls16s::a#0 a zp[2]:22 175.58333333333334 +(signed word) muls16s::a#0 a zp[2]:22 1.6684167083333334E7 (signed word) muls16s::b -(signed word) muls16s::b#0 b zp[2]:24 191.1818181818182 +(signed word) muls16s::b#0 b zp[2]:24 1.8182727545454547E7 (signed word) muls16s::i -(signed word) muls16s::i#1 i zp[2]:30 2002.0 -(signed word) muls16s::i#2 i zp[2]:30 1001.0 +(signed word) muls16s::i#1 i zp[2]:30 2.00000002E8 +(signed word) muls16s::i#2 i zp[2]:30 1.00000001E8 (signed word) muls16s::j -(signed word) muls16s::j#1 j zp[2]:28 2002.0 -(signed word) muls16s::j#2 j zp[2]:28 1001.0 +(signed word) muls16s::j#1 j zp[2]:28 2.00000002E8 +(signed word) muls16s::j#2 j zp[2]:28 1.00000001E8 (signed dword) muls16s::m -(signed dword) muls16s::m#1 m zp[4]:4 1001.0 -(signed dword) muls16s::m#2 m zp[4]:4 1001.0 -(signed dword) muls16s::m#3 m zp[4]:4 1501.5 -(signed dword) muls16s::m#5 m zp[4]:4 1501.5 +(signed dword) muls16s::m#1 m zp[4]:4 1.00000001E8 +(signed dword) muls16s::m#2 m zp[4]:4 1.00000001E8 +(signed dword) muls16s::m#3 m zp[4]:4 1.500000015E8 +(signed dword) muls16s::m#5 m zp[4]:4 1.500000015E8 (signed dword) muls16s::return -(signed dword) muls16s::return#0 return zp[4]:4 701.0 -(signed dword) muls16s::return#2 return zp[4]:4 202.0 +(signed dword) muls16s::return#0 return zp[4]:4 6.6670001E7 +(signed dword) muls16s::return#2 return zp[4]:4 20002.0 (dword()) muls16u((word) muls16u::a , (word) muls16u::b) (label) muls16u::@1 (label) muls16u::@2 (label) muls16u::@3 (label) muls16u::@return (word) muls16u::a -(word) muls16u::a#0 a zp[2]:28 157.71428571428572 +(word) muls16u::a#0 a zp[2]:28 1.4301429E7 (word) muls16u::b -(word) muls16u::b#0 b zp[2]:30 183.66666666666669 +(word) muls16u::b#0 b zp[2]:30 1.6668333666666668E7 (word) muls16u::i -(word) muls16u::i#1 i zp[2]:22 2002.0 -(word) muls16u::i#2 i zp[2]:22 1001.0 +(word) muls16u::i#1 i zp[2]:22 2.00000002E8 +(word) muls16u::i#2 i zp[2]:22 1.00000001E8 (dword) muls16u::m -(dword) muls16u::m#1 m zp[4]:4 1001.0 -(dword) muls16u::m#3 m zp[4]:4 1501.5 +(dword) muls16u::m#1 m zp[4]:4 1.00000001E8 +(dword) muls16u::m#3 m zp[4]:4 1.500000015E8 (dword) muls16u::return -(dword) muls16u::return#0 return zp[4]:4 367.33333333333337 -(dword) muls16u::return#2 return zp[4]:4 202.0 +(dword) muls16u::return#0 return zp[4]:4 3.3336667333333336E7 +(dword) muls16u::return#2 return zp[4]:4 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2.0000002E7 +(byte~) print_byte::$2 reg byte x 2.0000002E7 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#0 reg byte x 2000002.0 +(byte) print_byte::b#1 reg byte x 2000002.0 +(byte) print_byte::b#2 reg byte x 5500001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2.0000002E7 +(byte) print_char::ch#5 reg byte a 2.0000002E7 +(byte) print_char::ch#6 reg byte a 1.20000003E8 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 101.0 -(byte*) print_char_cursor#132 print_char_cursor zp[2]:8 3.1874999999999996 -(byte*) print_char_cursor#133 print_char_cursor zp[2]:8 5.75 -(byte*) print_char_cursor#137 print_char_cursor zp[2]:8 6.0 -(byte*) print_char_cursor#138 print_char_cursor zp[2]:8 5.0 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:8 2.0 -(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 22.0 -(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 24.0 -(byte*) print_char_cursor#154 print_char_cursor zp[2]:8 48.0 -(byte*) print_char_cursor#180 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#187 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#219 print_char_cursor zp[2]:8 4.0 -(byte*) print_char_cursor#22 print_char_cursor zp[2]:8 0.653061224489796 -(byte*) print_char_cursor#88 print_char_cursor zp[2]:8 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:8 1000001.0 +(byte*) print_char_cursor#132 print_char_cursor zp[2]:8 27316.25892857142 +(byte*) print_char_cursor#133 print_char_cursor zp[2]:8 25601.75 +(byte*) print_char_cursor#137 print_char_cursor zp[2]:8 606003.0 +(byte*) print_char_cursor#138 print_char_cursor zp[2]:8 56502.5 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:8 4000000.9999999995 +(byte*) print_char_cursor#145 print_char_cursor zp[2]:8 2002.0 +(byte*) print_char_cursor#149 print_char_cursor zp[2]:8 2103.0 +(byte*) print_char_cursor#154 print_char_cursor zp[2]:8 22215.0 +(byte*) print_char_cursor#180 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#187 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#219 print_char_cursor zp[2]:8 202.0 +(byte*) print_char_cursor#22 print_char_cursor zp[2]:8 2267959.5102040814 +(byte*) print_char_cursor#88 print_char_cursor zp[2]:8 1.10020004E8 (void()) print_cls() (label) print_cls::@return (void()) print_dword((dword) print_dword::dw) (label) print_dword::@1 (label) print_dword::@return (dword) print_dword::dw -(dword) print_dword::dw#0 dw zp[4]:4 4.0 -(dword) print_dword::dw#1 dw zp[4]:4 4.0 -(dword) print_dword::dw#2 dw zp[4]:4 4.0 -(dword) print_dword::dw#3 dw zp[4]:4 4.0 -(dword) print_dword::dw#4 dw zp[4]:4 3.9999999999999996 +(dword) print_dword::dw#0 dw zp[4]:4 20002.0 +(dword) print_dword::dw#1 dw zp[4]:4 2002.0 +(dword) print_dword::dw#2 dw zp[4]:4 2002.0 +(dword) print_dword::dw#3 dw zp[4]:4 2002.0 +(dword) print_dword::dw#4 dw zp[4]:4 71002.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6025641025641025 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#43 print_line_cursor zp[2]:2 10.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 3866.7948717948716 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:2 210003.0 +(byte*) print_line_cursor#43 print_line_cursor zp[2]:2 11305.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -397,20 +397,20 @@ (label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw -(signed dword) print_sdword::dw#0 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#1 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#2 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#3 dw zp[4]:4 4.0 -(signed dword) print_sdword::dw#4 dw zp[4]:4 1.9999999999999998 -(signed dword) print_sdword::dw#6 dw zp[4]:4 4.0 +(signed dword) print_sdword::dw#0 dw zp[4]:4 20002.0 +(signed dword) print_sdword::dw#1 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#2 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#3 dw zp[4]:4 2002.0 +(signed dword) print_sdword::dw#4 dw zp[4]:4 5500.999999999999 +(signed dword) print_sdword::dw#6 dw zp[4]:4 20002.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:34 202.0 -(byte*) print_str::str#15 str zp[2]:34 101.5 -(byte*) print_str::str#17 str zp[2]:34 2.0 +(byte*) print_str::str#0 str zp[2]:34 2000002.0 +(byte*) print_str::str#15 str zp[2]:34 1002501.25 +(byte*) print_str::str#17 str zp[2]:34 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -418,21 +418,21 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:22 4.0 -(signed word) print_sword::w#1 w zp[2]:22 4.0 -(signed word) print_sword::w#2 w zp[2]:22 4.0 -(signed word) print_sword::w#3 w zp[2]:22 1.6666666666666665 -(signed word) print_sword::w#5 w zp[2]:22 4.0 +(signed word) print_sword::w#0 w zp[2]:22 20002.0 +(signed word) print_sword::w#1 w zp[2]:22 2002.0 +(signed word) print_sword::w#2 w zp[2]:22 2002.0 +(signed word) print_sword::w#3 w zp[2]:22 5334.166666666666 +(signed word) print_sword::w#5 w zp[2]:22 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:22 4.0 -(word) print_word::w#1 w zp[2]:22 4.0 -(word) print_word::w#2 w zp[2]:22 4.0 -(word) print_word::w#3 w zp[2]:22 4.0 -(word) print_word::w#4 w zp[2]:22 4.0 -(word) print_word::w#5 w zp[2]:22 4.666666666666666 +(word) print_word::w#0 w zp[2]:22 20002.0 +(word) print_word::w#1 w zp[2]:22 200002.0 +(word) print_word::w#2 w zp[2]:22 200002.0 +(word) print_word::w#3 w zp[2]:22 2002.0 +(word) print_word::w#4 w zp[2]:22 2002.0 +(word) print_word::w#5 w zp[2]:22 737335.6666666667 (const byte*) str[(byte) 2] = (byte*) "." (const byte*) str1[(byte) 2] = (byte*) "*" (const byte*) str2[(byte) 7] = (byte*) " slow:" diff --git a/src/test/ref/test-multiply-8bit.asm b/src/test/ref/test-multiply-8bit.asm index 9078b4e93..887fab995 100644 --- a/src/test/ref/test-multiply-8bit.asm +++ b/src/test/ref/test-multiply-8bit.asm @@ -255,12 +255,10 @@ print_char: { print_word: { .label w = 7 // print_byte(>w) - lda.z w+1 - tax + ldx.z w+1 jsr print_byte // print_byte( (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte a as potential for zp[1]:121 [ mul8u_error::b#0 ] -Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [116] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } ) always clobbers reg byte a +Statement [116] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#189 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#190 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:76 [ mul8s_error::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:120 [ mul8u_error::a#0 ] Removing always clobbered register reg byte y as potential for zp[1]:120 [ mul8u_error::a#0 ] -Statement [118] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [118] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#189 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#190 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:72 [ mul8s::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:73 [ mul8s::b#0 ] -Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a -Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a -Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 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#11 print_char_cursor#100 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 [155] (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:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 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#11 print_char_cursor#100 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 [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Statement [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [155] (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:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 } { mulf8s::return#0 = mulf8s::return#2 } } ) 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::b#1 = mulf8u_prepared::b#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:93 [ 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) 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[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Removing always clobbered register reg byte x as potential for zp[1]:93 [ mulf8s_prepared::b#0 ] Removing always clobbered register reg byte x as potential for zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#11 print_char_cursor#100 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) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::b#1 = mulf8u_prepared::b#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#3 } } main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::return#0 = mulf8u::return#2 } { mulf8u_prepared::b#0 = mulf8u_prepared::b#2 mulf8u::b#0 mul8u_compare::b#10 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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[1]:67 [ mulf8s::b#0 ] Removing always clobbered register reg byte a as potential for zp[1]:111 [ mulf8u::b#0 ] -Statement [196] (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:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [196] (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:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] { { muls8s::a#0 = mul8s_compare::a#10 } { muls8s::b#0 = mul8s_compare::b#10 } { muls8s::return#0 = muls8s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:60 [ muls8s::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:61 [ muls8s::b#0 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ muls8s::j#2 muls8s::j#1 ] -Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ) always clobbers reg byte a +Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] { { muls8s::a#0 = mul8s_compare::a#10 } { muls8s::b#0 = mul8s_compare::b#10 } { muls8s::return#0 = muls8s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ muls8s::i#2 muls8s::i#1 ] -Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] { { muls8u::a#0 = mul8u_compare::a#7 } { muls8u::b#0 = mul8u_compare::b#10 } { muls8u::return#0 = muls8u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] -Statement [227] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [278] (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#11 print_char_cursor#100 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 [227] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::return#0 = mulf8u::return#2 } { mulf8u_prepared::b#0 = mulf8u_prepared::b#2 mulf8u::b#0 mul8u_compare::b#10 } { mulf8u_prepared::return#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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [278] (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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] { { muls8u::a#0 = mul8u_compare::a#7 } { muls8u::b#0 = mul8u_compare::b#10 } { muls8u::return#0 = muls8u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:104 [ muls8u::a#0 ] Removing always clobbered register reg byte a as potential for zp[1]:105 [ muls8u::b#0 ] Removing always clobbered register reg byte a as potential for zp[1]:37 [ muls8u::i#2 muls8u::i#1 ] -Statement [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(word)(number) $200*(number) 4) 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 -Statement [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] ) always clobbers reg byte a -Statement [290] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [291] *((const byte*) BGCOL) ← (byte) 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 [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [297] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) always clobbers reg byte a +Statement [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(word)(number) $200*(number) 4) 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 +Statement [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] { } ) always clobbers reg byte a +Statement [290] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [291] *((const byte*) BGCOL) ← (byte) 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 [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [297] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } } ) 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 [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a +Statement [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a +Statement [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] -Statement [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [318] (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 [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [329] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a -Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [318] (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 [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [331] (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 [332] *((byte*) mulf_init::sqr1_hi#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 [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [4] *((const byte*) BGCOL) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_char_cursor#189 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#189 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ) always clobbers reg byte a -Statement [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ) always clobbers reg byte a -Statement [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ) always clobbers reg byte a -Statement [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ) always clobbers reg byte a -Statement [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a -Statement [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a -Statement [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ) always clobbers reg byte a -Statement [49] *((const byte*) BGCOL) ← (byte) 2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a -Statement [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ) always clobbers reg byte a -Statement [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ) always clobbers reg byte a -Statement [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ) always clobbers reg byte a -Statement [57] (byte*) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ 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_char_cursor#190 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ 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_char_cursor#190 ] ) always clobbers reg byte a -Statement [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ) always clobbers reg byte a -Statement [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ) always clobbers reg byte a -Statement [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ) always clobbers reg byte a -Statement [82] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a -Statement [83] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a -Statement [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] ) always clobbers reg byte a -Statement [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a -Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a -Statement [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:88 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:88 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:88 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:94 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:94 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:94 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:109 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:109 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:109 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:109 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:109 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:109 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250::print_char:109 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:112 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:112 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:112 [ print_line_cursor#11 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:112 [ print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:112 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250::print_char:112 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:124 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:124 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:130 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:130 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] ) always clobbers reg byte y -Statement [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a -Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a -Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a -Statement [116] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [118] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a -Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a -Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 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#11 print_char_cursor#100 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 [155] (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:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 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#11 print_char_cursor#100 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 [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [332] *((byte*) mulf_init::sqr1_hi#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 [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) BGCOL) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_char_cursor#189 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#189 print_line_cursor#1 ] { { print_char_cursor#155 = print_char_cursor#189 } } ) always clobbers reg byte a +Statement [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] { { muls8s::a#0 = mul8s_compare::a#10 } { muls8s::b#0 = mul8s_compare::b#10 } { muls8s::return#0 = muls8s::return#2 } } ) always clobbers reg byte a +Statement [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] { } ) always clobbers reg byte a +Statement [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] { } ) always clobbers reg byte a +Statement [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) BGCOL) ← (byte) 2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [57] (byte*) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ 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_char_cursor#190 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ 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_char_cursor#190 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#190 } } ) always clobbers reg byte a +Statement [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } } ) always clobbers reg byte a +Statement [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } } ) always clobbers reg byte a +Statement [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [82] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:23 [ print_line_cursor#1 print_char_cursor#135 ] { { print_line_cursor#1 = print_line_cursor#45 } { print_char_cursor#134 = print_char_cursor#135 } } main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_line_cursor#1 = print_line_cursor#45 } { print_char_cursor#135 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] { { print_line_cursor#11 = print_line_cursor#45 } { print_char_cursor#134 = print_char_cursor#135 } } main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_line_cursor#11 = print_line_cursor#45 } { print_char_cursor#135 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] { { print_char_cursor#134 = print_char_cursor#135 } } ) always clobbers reg byte a +Statement [83] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:23 [ print_line_cursor#1 print_char_cursor#135 ] { { print_line_cursor#1 = print_line_cursor#45 } { print_char_cursor#134 = print_char_cursor#135 } } main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_line_cursor#1 = print_line_cursor#45 } { print_char_cursor#135 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] { { print_line_cursor#11 = print_line_cursor#45 } { print_char_cursor#134 = print_char_cursor#135 } } main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_line_cursor#11 = print_line_cursor#45 } { print_char_cursor#135 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] { { print_char_cursor#134 = print_char_cursor#135 } } ) always clobbers reg byte a +Statement [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 } } ) always clobbers reg byte a +Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } } ) always clobbers reg byte a +Statement [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:88 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:88 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:88 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:94 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:94 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:94 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:109 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:109 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:109 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:109 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:109 [ print_byte::b#5 print_char_cursor#86 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:109 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250::print_char:109 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:112 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:112 [ print_word::w#6 print_char_cursor#86 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:112 [ print_line_cursor#11 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:112 [ print_char_cursor#86 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:112 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250::print_char:112 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:124 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:124 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:130 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_char_cursor#134 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:130 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_char_cursor#134 = print_char_cursor#86 } } ) always clobbers reg byte y +Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 print_char_cursor#86 } { print_char::ch#4 = print_char::ch#6 } } ) always clobbers reg byte a +Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 print_char_cursor#143 } { print_byte::b#1 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#1 = print_sword::w#4 mul8s_error::ms#0 mul8s_compare::ms#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sword::w#2 = print_sword::w#4 mul8s_error::mn#0 mul8s_compare::mn#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { print_sword::w#3 = print_sword::w#4 mul8s_error::mf#0 mul8s_compare::mf#0 } { print_word::w#0 = print_word::w#6 } { print_char_cursor#142 = print_char_cursor#19 print_char_cursor#143 print_char_cursor#86 } { print_byte::b#2 = print_byte::b#5 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } { print_byte::b#2 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } { print_byte::b#0 = print_byte::b#5 } { print_char_cursor#143 = print_char_cursor#19 print_char_cursor#86 } { print_char::ch#5 = print_char::ch#6 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#3 = print_byte::b#5 mul8u_error::a#0 mul8u_compare::a#7 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_byte::b#4 = print_byte::b#5 mul8u_error::b#0 mul8u_compare::b#10 } { print_char_cursor#134 = print_char_cursor#143 } { print_char::ch#5 = print_char::ch#6 } { print_char_cursor#19 = print_char_cursor#86 } } ) always clobbers reg byte a +Statement [116] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#189 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#190 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [118] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#189 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ 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_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#190 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#100 = print_char_cursor#155 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:248 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:252 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:256 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mul8u_compare:13::mul8u_error:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_char_cursor#155 = print_char_cursor#19 } } main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] { } main:2::mulf_tables_cmp:11::print_str:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] { { print_char_cursor#155 = print_char_cursor#19 } } ) always clobbers reg byte a reg byte y +Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] { { mul8s_error::b#0 = mul8s_compare::b#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#1 = print_sbyte::b#3 mul8s_error::a#0 mul8s_compare::a#10 } } main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] { { mul8s_error::a#0 = mul8s_compare::a#10 } { mul8s_error::ms#0 = mul8s_compare::ms#0 } { mul8s_error::mn#0 = mul8s_compare::mn#0 } { mul8s_error::mf#0 = mul8s_compare::mf#0 } { print_sbyte::b#2 = print_sbyte::b#3 mul8s_error::b#0 mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } } ) always clobbers reg byte a +Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [155] (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:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] { { mul8s::a#0 = mul8s_compare::a#10 } { mul8s::b#0 = mul8s_compare::b#10 } { mul8u::b#0 = mul8u::b#2 } { mul8u::a#1 = mul8u::a#6 } { mul8u::return#2 = mul8u::res#2 } } main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#11 print_char_cursor#100 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 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 } { mulf8s::return#0 = mulf8s::return#2 } } ) 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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::b#1 = mulf8u_prepared::b#2 } { mulf8u_prepared::return#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:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) always clobbers reg byte a +Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } } ) 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 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#11 print_char_cursor#100 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) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] { { mulf8s::a#0 = mul8s_compare::a#10 } { mulf8s::b#0 = mul8s_compare::b#10 mulf8s_prepared::b#0 } { mulf8s::return#0 = mulf8s::return#2 } { mulf8u_prepared::b#1 = mulf8u_prepared::b#2 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#3 } } main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::return#0 = mulf8u::return#2 } { mulf8u_prepared::b#0 = mulf8u_prepared::b#2 mulf8u::b#0 mul8u_compare::b#10 } { mulf8u_prepared::return#0 = mulf8u_prepared::return#2 } } ) 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 [196] (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:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a -Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ) always clobbers reg byte a -Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [227] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 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#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [278] (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#11 print_char_cursor#100 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<(const byte*) mulf_sqr1_lo+(word)(number) $200*(number) 4) 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 -Statement [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] ) always clobbers reg byte a -Statement [290] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [291] *((const byte*) BGCOL) ← (byte) 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 [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [297] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) always clobbers reg byte a +Statement [196] (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:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] { { muls8s::a#0 = mul8s_compare::a#10 } { muls8s::b#0 = mul8s_compare::b#10 } { muls8s::return#0 = muls8s::return#2 } } ) always clobbers reg byte a +Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] { { muls8s::a#0 = mul8s_compare::a#10 } { muls8s::b#0 = mul8s_compare::b#10 } { muls8s::return#0 = muls8s::return#2 } } ) always clobbers reg byte a +Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] { { muls8u::a#0 = mul8u_compare::a#7 } { muls8u::b#0 = mul8u_compare::b#10 } { muls8u::return#0 = muls8u::return#2 } } ) always clobbers reg byte a +Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] { { mul8u::b#1 = mul8u::b#2 mul8u_compare::b#10 } { mul8u::a#2 = mul8u::a#6 mul8u_compare::a#7 } { mul8u::return#3 = mul8u::res#2 } } ) always clobbers reg byte a +Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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#11 print_char_cursor#100 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::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [227] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } } ) always clobbers reg byte a +Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#3 = print_word::w#6 mul8u_error::ms#0 mul8u_compare::ms#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mf#0 = mul8u_compare::mf#0 } { print_word::w#4 = print_word::w#6 mul8u_error::mn#0 mul8u_compare::mn#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] { { mul8u_error::a#0 = mul8u_compare::a#7 } { mul8u_error::b#0 = mul8u_compare::b#10 } { mul8u_error::ms#0 = mul8u_compare::ms#0 } { mul8u_error::mn#0 = mul8u_compare::mn#0 } { print_word::w#5 = print_word::w#6 mul8u_error::mf#0 mul8u_compare::mf#0 } { print_char_cursor#134 = print_char_cursor#142 } } ) 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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::return#0 = mulf8u::return#2 } { mulf8u_prepared::b#0 = mulf8u_prepared::b#2 mulf8u::b#0 mul8u_compare::b#10 } { mulf8u_prepared::return#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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] { { mulf8u::a#0 = mul8u_compare::a#7 } { mulf8u::b#0 = mul8u_compare::b#10 } { mulf8u::return#0 = mulf8u::return#2 } } ) always clobbers reg byte a +Statement [278] (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#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] { { muls8u::a#0 = mul8u_compare::a#7 } { muls8u::b#0 = mul8u_compare::b#10 } { muls8u::return#0 = muls8u::return#2 } } ) always clobbers reg byte a +Statement [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(word)(number) $200*(number) 4) 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 +Statement [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] { } ) always clobbers reg byte a +Statement [290] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [291] *((const byte*) BGCOL) ← (byte) 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 [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] { { print_word::w#1 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } } ) always clobbers reg byte a +Statement [297] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] { { print_word::w#2 = print_word::w#6 } { print_char_cursor#134 = print_char_cursor#142 } } ) 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 [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a -Statement [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a -Statement [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [318] (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 [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ) always clobbers reg byte a -Statement [329] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a -Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [331] (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 [332] *((byte*) mulf_init::sqr1_hi#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 [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] { } ) always clobbers reg byte a +Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] { } ) always clobbers reg byte a +Statement [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a +Statement [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] { } ) always clobbers reg byte a +Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] { } ) always clobbers reg byte a reg byte y +Statement [318] (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 [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$1 ] { } ) always clobbers reg byte a +Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [332] *((byte*) mulf_init::sqr1_hi#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 [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] : zp[1]:2 , reg byte y , Potential registers zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp[1]:3 , reg byte y , Potential registers zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp[1]:4 , reg byte x , reg byte y , @@ -8081,96 +8065,94 @@ Potential registers zp[1]:133 [ mulf_init::$4 ] : zp[1]:133 , reg byte a , reg b Potential registers zp[1]:134 [ mulf_init::$5 ] : zp[1]:134 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [muls8s] 5,706: zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 3,003: zp[1]:30 [ muls8s::j#2 muls8s::j#1 ] 3,003: zp[1]:33 [ muls8s::i#2 muls8s::i#1 ] 202: zp[2]:62 [ muls8s::return#2 ] 191.18: zp[1]:61 [ muls8s::b#0 ] 175.58: zp[1]:60 [ muls8s::a#0 ] -Uplift Scope [mul8u] 3,446.71: zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp[1]:92 [ mul8u::$1 ] 1,824.17: zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 309: zp[1]:20 [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] 202: zp[2]:116 [ mul8u::return#3 ] 4: zp[2]:86 [ mul8u::return#2 ] -Uplift Scope [muls8u] 3,003: zp[1]:37 [ muls8u::i#2 muls8u::i#1 ] 2,869.83: zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 202: zp[2]:106 [ muls8u::return#2 ] 183.67: zp[1]:105 [ muls8u::b#0 ] 157.71: zp[1]:104 [ muls8u::a#0 ] -Uplift Scope [mul8s_compare] 235.67: zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 226.32: zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 34.52: zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] 17: zp[2]:74 [ mul8s_compare::mn#0 ] 15.25: zp[2]:64 [ mul8s_compare::ms#0 ] 12: zp[2]:70 [ mul8s_compare::mf#0 ] -Uplift Scope [mul8u_compare] 235.67: zp[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp[2]:118 [ mul8u_compare::mn#0 ] 14.52: zp[2]:108 [ mul8u_compare::ms#0 ] 11.33: zp[2]:114 [ mul8u_compare::mf#0 ] -Uplift Scope [mulf8u] 202: zp[2]:112 [ mulf8u::return#2 ] 51.5: zp[1]:110 [ mulf8u::a#0 ] 34.33: zp[1]:111 [ mulf8u::b#0 ] 34.33: zp[2]:130 [ mulf8u::return#0 ] -Uplift Scope [mulf8s] 202: zp[2]:68 [ mulf8s::return#2 ] 34.33: zp[2]:94 [ mulf8s::return#0 ] 33.67: zp[1]:66 [ mulf8s::a#0 ] 25.75: zp[1]:67 [ mulf8s::b#0 ] -Uplift Scope [mulf_init] 47.67: zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:132 [ mulf_init::$1 ] 22: zp[1]:133 [ mulf_init::$4 ] 22: zp[1]:134 [ mulf_init::$5 ] 15.4: zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [] 77.65: zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] 34.74: zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] -Uplift Scope [mul8s] 13.83: zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp[1]:73 [ mul8s::b#0 ] 7.36: zp[1]:72 [ mul8s::a#0 ] 4: zp[1]:88 [ mul8s::$9 ] 4: zp[1]:89 [ mul8s::$16 ] 4: zp[1]:90 [ mul8s::$13 ] 4: zp[1]:91 [ mul8s::$17 ] -Uplift Scope [mulf_tables_cmp] 26.4: zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 17.6: zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] -Uplift Scope [memset] 36.67: zp[2]:58 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_str] 35.5: zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplift Scope [print_byte] 23.5: zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:84 [ print_byte::$0 ] 4: zp[1]:85 [ print_byte::$2 ] -Uplift Scope [mulf8s_prepared] 13.83: zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:98 [ mulf8s_prepared::$8 ] 4: zp[1]:99 [ mulf8s_prepared::$15 ] 4: zp[1]:100 [ mulf8s_prepared::$12 ] 4: zp[1]:101 [ mulf8s_prepared::$16 ] 0.4: zp[1]:93 [ mulf8s_prepared::b#0 ] -Uplift Scope [print_word] 29.33: zp[2]:10 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [mulf8u_prepared] 14: zp[1]:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] 4: zp[2]:96 [ mulf8u_prepared::return#3 ] 4: zp[2]:128 [ mulf8u_prepared::return#2 ] 1.5: zp[2]:102 [ mulf8u_prepared::return#0 ] -Uplift Scope [print_sword] 22: zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] -Uplift Scope [print_sbyte] 17.67: zp[1]: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[1]:9 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplift Scope [mulf8u_prepare] 14: zp[1]:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] -Uplift Scope [mul8u_error] 0.57: zp[1]:120 [ mul8u_error::a#0 ] 0.4: zp[1]:121 [ mul8u_error::b#0 ] 0.31: zp[2]:122 [ mul8u_error::ms#0 ] 0.25: zp[2]:124 [ mul8u_error::mn#0 ] 0.21: zp[2]:126 [ mul8u_error::mf#0 ] -Uplift Scope [mul8s_error] 0.57: zp[1]:76 [ mul8s_error::a#0 ] 0.4: zp[1]:77 [ mul8s_error::b#0 ] 0.31: zp[2]:78 [ mul8s_error::ms#0 ] 0.25: zp[2]:80 [ mul8s_error::mn#0 ] 0.21: zp[2]:82 [ mul8s_error::mf#0 ] +Uplift Scope [mul8u] 3,428,587,146.57: zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,430,714,290.29: zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,000,000,002: zp[1]:92 [ mul8u::$1 ] 1,667,498,338.67: zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 330,006: zp[1]:20 [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] 200,002: zp[2]:86 [ mul8u::return#2 ] 20,002: zp[2]:116 [ mul8u::return#3 ] +Uplift Scope [muls8s] 566,670,006: zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 300,000,003: zp[1]:30 [ muls8s::j#2 muls8s::j#1 ] 300,000,003: zp[1]:33 [ muls8s::i#2 muls8s::i#1 ] 18,182,727.55: zp[1]:61 [ muls8s::b#0 ] 16,684,167.08: zp[1]:60 [ muls8s::a#0 ] 20,002: zp[2]:62 [ muls8s::return#2 ] +Uplift Scope [muls8u] 300,000,003: zp[1]:37 [ muls8u::i#2 muls8u::i#1 ] 283,336,669.83: zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 16,668,333.67: zp[1]:105 [ muls8u::b#0 ] 14,301,429: zp[1]:104 [ muls8u::a#0 ] 20,002: zp[2]:106 [ muls8u::return#2 ] +Uplift Scope [mulf8u_prepared] 13,300,007: zp[1]:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] 2,775,000.75: zp[2]:102 [ mulf8u_prepared::return#0 ] 2,000,002: zp[2]:96 [ mulf8u_prepared::return#3 ] 200,002: zp[2]:128 [ mulf8u_prepared::return#2 ] +Uplift Scope [print_char] 16,000,007: zp[1]:9 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [mulf8s_prepared] 6,916,673.58: zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 2,000,002: zp[1]:98 [ mulf8s_prepared::$8 ] 2,000,002: zp[1]:99 [ mulf8s_prepared::$15 ] 2,000,002: zp[1]:100 [ mulf8s_prepared::$12 ] 2,000,002: zp[1]:101 [ mulf8s_prepared::$16 ] 110,000.2: zp[1]:93 [ mulf8s_prepared::b#0 ] +Uplift Scope [] 11,869,283.04: zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] 226,547.22: zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] +Uplift Scope [print_byte] 2,000,002: zp[1]:84 [ print_byte::$0 ] 2,000,002: zp[1]:85 [ print_byte::$2 ] 977,011.75: zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Uplift Scope [mulf8u_prepare] 1,600,007: zp[1]:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] +Uplift Scope [mul8s] 691,673.58: zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 200,002: zp[1]:88 [ mul8s::$9 ] 200,002: zp[1]:89 [ mul8s::$16 ] 200,002: zp[1]:90 [ mul8s::$13 ] 200,002: zp[1]:91 [ mul8s::$17 ] 10,000.18: zp[1]:73 [ mul8s::b#0 ] 7,857.29: zp[1]:72 [ mul8s::a#0 ] +Uplift Scope [print_str] 312,504.25: zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplift Scope [mulf8u] 55,001: zp[1]:110 [ mulf8u::a#0 ] 36,667.33: zp[1]:111 [ mulf8u::b#0 ] 36,667.33: zp[2]:130 [ mulf8u::return#0 ] 20,002: zp[2]:112 [ mulf8u::return#2 ] +Uplift Scope [print_word] 97,481.33: zp[2]:10 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [mulf8s] 36,667.33: zp[2]:94 [ mulf8s::return#0 ] 27,500.5: zp[1]:67 [ mulf8s::b#0 ] 20,002: zp[2]:68 [ mulf8s::return#2 ] 3,333.67: zp[1]:66 [ mulf8s::a#0 ] +Uplift Scope [mul8s_compare] 23,335.67: zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 22,406.28: zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 3,228.19: zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] 1,675.25: zp[2]:74 [ mul8s_compare::mn#0 ] 1,505.2: zp[2]:64 [ mul8s_compare::ms#0 ] 1,182.53: zp[2]:70 [ mul8s_compare::mf#0 ] +Uplift Scope [print_sword] 51,511: zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +Uplift Scope [print_sbyte] 49,342.17: zp[1]:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] +Uplift Scope [mul8u_compare] 23,335.67: zp[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 17,005.74: zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 2,690.61: zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 1,675.25: zp[2]:118 [ mul8u_compare::mn#0 ] 1,433.52: zp[2]:108 [ mul8u_compare::ms#0 ] 1,116.83: zp[2]:114 [ mul8u_compare::mf#0 ] +Uplift Scope [memset] 33,336.67: zp[2]:58 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [mulf_init] 4,337.67: zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 2,446.89: zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 2,288: zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 2,102.1: zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 2,002: zp[1]:132 [ mulf_init::$1 ] 2,002: zp[1]:133 [ mulf_init::$4 ] 2,002: zp[1]:134 [ mulf_init::$5 ] 1,401.4: zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 1,376.38: zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] 1,232: zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] 1,084.42: zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 917.58: zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf_tables_cmp] 2,402.4: zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 1,601.6: zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] +Uplift Scope [mul8u_error] 157.43: zp[1]:120 [ mul8u_error::a#0 ] 110.2: zp[1]:121 [ mul8u_error::b#0 ] 84.77: zp[2]:122 [ mul8u_error::ms#0 ] 68.88: zp[2]:124 [ mul8u_error::mn#0 ] 58: zp[2]:126 [ mul8u_error::mf#0 ] +Uplift Scope [mul8s_error] 157.43: zp[1]:76 [ mul8s_error::a#0 ] 110.2: zp[1]:77 [ mul8s_error::b#0 ] 84.77: zp[2]:78 [ mul8s_error::ms#0 ] 68.88: zp[2]:80 [ mul8s_error::mn#0 ] 58: zp[2]:82 [ mul8s_error::mf#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [main] Uplift Scope [mulf_init_asm] -Uplifting [muls8s] best 312432 combination zp[2]:31 [ muls8s::return#0 muls8s::m#5 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[2]:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp[1]:60 [ muls8s::a#0 ] -Uplifting [mul8u] best 302823 combination zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]: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#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] zp[2]:116 [ mul8u::return#3 ] zp[2]:86 [ mul8u::return#2 ] -Uplifting [muls8u] best 292523 combination reg byte y [ muls8u::i#2 muls8u::i#1 ] zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] zp[2]:106 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp[1]:104 [ muls8u::a#0 ] -Uplifting [mul8s_compare] best 291323 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] zp[2]:74 [ mul8s_compare::mn#0 ] zp[2]:64 [ mul8s_compare::ms#0 ] zp[2]:70 [ mul8s_compare::mf#0 ] -Uplifting [mul8u_compare] best 290123 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp[2]:118 [ mul8u_compare::mn#0 ] zp[2]:108 [ mul8u_compare::ms#0 ] zp[2]:114 [ mul8u_compare::mf#0 ] -Uplifting [mulf8u] best 289517 combination zp[2]:112 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp[2]:130 [ mulf8u::return#0 ] -Uplifting [mulf8s] best 288911 combination zp[2]:68 [ mulf8s::return#2 ] zp[2]:94 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] -Uplifting [mulf_init] best 288661 combination zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Limited combination testing to 100 combinations of 1024 possible. -Uplifting [] best 288661 combination zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] -Uplifting [mul8s] best 288348 combination zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp[1]:72 [ mul8s::a#0 ] reg byte a [ mul8s::$9 ] reg byte a [ mul8s::$16 ] zp[1]:90 [ mul8s::$13 ] zp[1]:91 [ mul8s::$17 ] -Limited combination testing to 100 combinations of 2304 possible. -Uplifting [mulf_tables_cmp] best 288348 combination zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] -Uplifting [memset] best 288348 combination zp[2]:58 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_str] best 288348 combination zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplifting [print_byte] best 288325 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [mulf8s_prepared] best 288301 combination zp[2]:26 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:93 [ mulf8s_prepared::b#0 ] +Uplifting [mul8u] best 323123 combination zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]: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#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] zp[2]:86 [ mul8u::return#2 ] zp[2]:116 [ mul8u::return#3 ] +Uplifting [muls8s] best 302823 combination zp[2]:31 [ muls8s::return#0 muls8s::m#5 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 ] reg byte x [ muls8s::b#0 ] zp[1]:60 [ muls8s::a#0 ] zp[2]:62 [ muls8s::return#2 ] +Uplifting [muls8u] best 292523 combination reg byte y [ muls8u::i#2 muls8u::i#1 ] zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte x [ muls8u::b#0 ] zp[1]:104 [ muls8u::a#0 ] zp[2]:106 [ muls8u::return#2 ] +Uplifting [mulf8u_prepared] best 292514 combination reg byte a [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] zp[2]:102 [ mulf8u_prepared::return#0 ] zp[2]:96 [ mulf8u_prepared::return#3 ] zp[2]:128 [ mulf8u_prepared::return#2 ] +Uplifting [print_char] best 292493 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [mulf8s_prepared] best 292469 combination zp[2]:26 [ 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::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:93 [ mulf8s_prepared::b#0 ] Limited combination testing to 100 combinations of 512 possible. -Uplifting [print_word] best 288301 combination zp[2]:10 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [mulf8u_prepared] best 288292 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] zp[2]:96 [ mulf8u_prepared::return#3 ] zp[2]:128 [ mulf8u_prepared::return#2 ] zp[2]:102 [ mulf8u_prepared::return#0 ] -Uplifting [print_sword] best 288292 combination zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] -Uplifting [print_sbyte] best 288280 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 288259 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] -Uplifting [mulf8u_prepare] best 288250 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] -Uplifting [mul8u_error] best 288244 combination reg byte x [ mul8u_error::a#0 ] zp[1]:121 [ mul8u_error::b#0 ] zp[2]:122 [ mul8u_error::ms#0 ] zp[2]:124 [ mul8u_error::mn#0 ] zp[2]:126 [ mul8u_error::mf#0 ] -Uplifting [mul8s_error] best 288238 combination reg byte x [ mul8s_error::a#0 ] zp[1]:77 [ mul8s_error::b#0 ] zp[2]:78 [ mul8s_error::ms#0 ] zp[2]:80 [ mul8s_error::mn#0 ] zp[2]:82 [ mul8s_error::mf#0 ] -Uplifting [RADIX] best 288238 combination -Uplifting [print_ln] best 288238 combination -Uplifting [print_cls] best 288238 combination -Uplifting [main] best 288238 combination -Uplifting [mulf_init_asm] best 288238 combination -Attempting to uplift remaining variables inzp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Uplifting [mul8s_compare] best 288238 combination zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Uplifting [] best 292469 combination zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] +Uplifting [print_byte] best 292442 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Uplifting [mulf8u_prepare] best 292433 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] +Uplifting [mul8s] best 292409 combination zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte a [ mul8s::$9 ] reg byte a [ mul8s::$16 ] reg byte a [ mul8s::$13 ] reg byte a [ mul8s::$17 ] zp[1]:73 [ mul8s::b#0 ] zp[1]:72 [ mul8s::a#0 ] +Limited combination testing to 100 combinations of 2304 possible. +Uplifting [print_str] best 292409 combination zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplifting [mulf8u] best 291805 combination reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp[2]:130 [ mulf8u::return#0 ] zp[2]:112 [ mulf8u::return#2 ] +Uplifting [print_word] best 291805 combination zp[2]:10 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [mulf8s] best 291199 combination zp[2]:94 [ mulf8s::return#0 ] reg byte x [ mulf8s::b#0 ] zp[2]:68 [ mulf8s::return#2 ] reg byte a [ mulf8s::a#0 ] +Uplifting [mul8s_compare] best 289999 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] zp[2]:74 [ mul8s_compare::mn#0 ] zp[2]:64 [ mul8s_compare::ms#0 ] zp[2]:70 [ mul8s_compare::mf#0 ] +Uplifting [print_sword] best 289999 combination zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +Uplifting [print_sbyte] best 289987 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 [mul8u_compare] best 288787 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp[2]:118 [ mul8u_compare::mn#0 ] zp[2]:108 [ mul8u_compare::ms#0 ] zp[2]:114 [ mul8u_compare::mf#0 ] +Uplifting [memset] best 288787 combination zp[2]:58 [ memset::dst#2 memset::dst#1 ] +Uplifting [mulf_init] best 288537 combination zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [mulf_tables_cmp] best 288537 combination zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] +Uplifting [mul8u_error] best 288531 combination reg byte x [ mul8u_error::a#0 ] zp[1]:121 [ mul8u_error::b#0 ] zp[2]:122 [ mul8u_error::ms#0 ] zp[2]:124 [ mul8u_error::mn#0 ] zp[2]:126 [ mul8u_error::mf#0 ] +Uplifting [mul8s_error] best 288525 combination reg byte x [ mul8s_error::a#0 ] zp[1]:77 [ mul8s_error::b#0 ] zp[2]:78 [ mul8s_error::ms#0 ] zp[2]:80 [ mul8s_error::mn#0 ] zp[2]:82 [ mul8s_error::mf#0 ] +Uplifting [RADIX] best 288525 combination +Uplifting [print_ln] best 288525 combination +Uplifting [print_cls] best 288525 combination +Uplifting [main] best 288525 combination +Uplifting [mulf_init_asm] best 288525 combination Attempting to uplift remaining variables inzp[1]:60 [ muls8s::a#0 ] -Uplifting [muls8s] best 288238 combination zp[1]:60 [ muls8s::a#0 ] -Attempting to uplift remaining variables inzp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Uplifting [mul8u_compare] best 288238 combination zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Uplifting [muls8s] best 288525 combination zp[1]:60 [ muls8s::a#0 ] Attempting to uplift remaining variables inzp[1]:104 [ muls8u::a#0 ] -Uplifting [muls8u] best 288238 combination zp[1]:104 [ muls8u::a#0 ] -Attempting to uplift remaining variables inzp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] -Uplifting [mul8s_compare] best 288238 combination zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] -Attempting to uplift remaining variables inzp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] -Uplifting [mul8u_compare] best 288238 combination zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] -Attempting to uplift remaining variables inzp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 288098 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Attempting to uplift remaining variables inzp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 288098 combination zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] -Attempting to uplift remaining variables inzp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 288098 combination zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] -Attempting to uplift remaining variables inzp[1]:72 [ mul8s::a#0 ] -Uplifting [mul8s] best 288098 combination zp[1]:72 [ mul8s::a#0 ] -Attempting to uplift remaining variables inzp[1]:90 [ mul8s::$13 ] -Uplifting [mul8s] best 288092 combination reg byte a [ mul8s::$13 ] -Attempting to uplift remaining variables inzp[1]:91 [ mul8s::$17 ] -Uplifting [mul8s] best 288086 combination reg byte a [ mul8s::$17 ] -Attempting to uplift remaining variables inzp[1]:77 [ mul8s_error::b#0 ] -Uplifting [mul8s_error] best 288086 combination zp[1]:77 [ mul8s_error::b#0 ] +Uplifting [muls8u] best 288525 combination zp[1]:104 [ muls8u::a#0 ] Attempting to uplift remaining variables inzp[1]:93 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 288086 combination zp[1]:93 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 288525 combination zp[1]:93 [ mulf8s_prepared::b#0 ] +Attempting to uplift remaining variables inzp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Uplifting [mul8s_compare] best 288525 combination zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Attempting to uplift remaining variables inzp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Uplifting [mul8u_compare] best 288525 combination zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Attempting to uplift remaining variables inzp[1]:73 [ mul8s::b#0 ] +Uplifting [mul8s] best 288224 combination reg byte y [ mul8s::b#0 ] +Attempting to uplift remaining variables inzp[1]:72 [ mul8s::a#0 ] +Uplifting [mul8s] best 288224 combination zp[1]:72 [ mul8s::a#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] +Uplifting [mul8s_compare] best 288224 combination zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] +Attempting to uplift remaining variables inzp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] +Uplifting [mul8u_compare] best 288224 combination zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] +Attempting to uplift remaining variables inzp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 288084 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Attempting to uplift remaining variables inzp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 288084 combination zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] +Attempting to uplift remaining variables inzp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 288084 combination zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] +Attempting to uplift remaining variables inzp[1]:77 [ mul8s_error::b#0 ] +Uplifting [mul8s_error] best 288084 combination zp[1]:77 [ mul8s_error::b#0 ] Attempting to uplift remaining variables inzp[1]:121 [ mul8u_error::b#0 ] -Uplifting [mul8u_error] best 288086 combination zp[1]:121 [ mul8u_error::b#0 ] +Uplifting [mul8u_error] best 288084 combination zp[1]:121 [ mul8u_error::b#0 ] Coalescing zero page register [ zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] ] with [ zp[1]:60 [ muls8s::a#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp[1]:72 [ mul8s::a#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp[1]:77 [ mul8s_error::b#0 ] ] - score: 1 @@ -8772,8 +8754,7 @@ print_char: { print_word: { .label w = 7 // [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [102] call print_byte // [106] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -8784,8 +8765,7 @@ print_word: { // print_word::@1 __b1: // [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 - lda.z w - tax + ldx.z w // [104] call print_byte // [106] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -9121,8 +9101,8 @@ mulf8s_prepared: { .label memA = $fd .label m = 9 .label b = $12 - // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 - ldx.z b + // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuz1 + lda.z b // [167] call mulf8u_prepared // [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: @@ -9184,13 +9164,13 @@ mulf8s_prepared: { // 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) +// mulf8u_prepared(byte register(A) b) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 9 - // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx - stx memB + // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuaa + sta memB // 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 @@ -9710,7 +9690,8 @@ mulf8u: { jmp __b1 // mulf8u::@1 __b1: - // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuaa=vbuxx + txa // [269] call mulf8u_prepared // [181] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] mulf8u_prepared_from___b1: @@ -10472,7 +10453,7 @@ Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 Removing instruction lda #>0 -Removing instruction ldx memB +Replacing instruction ldx memB with TAX Removing instruction lda memA Removing instruction lda #>0 Replacing instruction ldy #0 with TAY @@ -10596,7 +10577,6 @@ Removing instruction __b8_from___b7: Removing instruction print_str_from___b8: Removing instruction __b10_from___b9: Removing instruction print_ln_from___b10: -Removing instruction mulf8u_prepared_from___b1: Removing instruction __breturn: Removing instruction __breturn: Removing instruction __b3_from___b1: @@ -10717,6 +10697,7 @@ Removing instruction __b10: Removing instruction __breturn: Removing instruction mulf8u_prepare_from_mulf8u: Removing instruction __b1: +Removing instruction mulf8u_prepared_from___b1: Removing instruction __b2: Removing instruction __b2_from_muls8u: Removing instruction __b1_from___b2: @@ -10810,8 +10791,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 20002.0 +(byte*) memset::dst#2 dst zp[2]:16 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -10820,10 +10801,10 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$13 reg byte a 4.0 -(byte~) mul8s::$16 reg byte a 4.0 -(byte~) mul8s::$17 reg byte a 4.0 -(byte~) mul8s::$9 reg byte a 4.0 +(byte~) mul8s::$13 reg byte a 200002.0 +(byte~) mul8s::$16 reg byte a 200002.0 +(byte~) mul8s::$17 reg byte a 200002.0 +(byte~) mul8s::$9 reg byte a 200002.0 (label) mul8s::@1 (label) mul8s::@2 (label) mul8s::@3 @@ -10831,15 +10812,15 @@ FINAL SYMBOL TABLE (label) mul8s::@5 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp[1]:13 7.357142857142858 +(signed byte) mul8s::a#0 a zp[1]:13 7857.285714285715 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 9.363636363636363 +(signed byte) mul8s::b#0 reg byte y 10000.181818181818 (word) mul8s::m -(word) mul8s::m#0 m zp[2]:14 2.0 -(word) mul8s::m#1 m zp[2]:14 4.0 -(word) mul8s::m#2 m zp[2]:14 4.0 -(word) mul8s::m#4 m zp[2]:14 1.3333333333333333 -(word) mul8s::m#5 m zp[2]:14 2.5 +(word) mul8s::m#0 m zp[2]:14 100001.0 +(word) mul8s::m#1 m zp[2]:14 200002.0 +(word) mul8s::m#2 m zp[2]:14 200002.0 +(word) mul8s::m#4 m zp[2]:14 66667.33333333333 +(word) mul8s::m#5 m zp[2]:14 125001.25 (signed word) mul8s::return (void()) mul8s_compare() (label) mul8s_compare::@1 @@ -10859,20 +10840,20 @@ FINAL SYMBOL TABLE (label) mul8s_compare::@9 (label) mul8s_compare::@return (signed byte) mul8s_compare::a -(signed byte) mul8s_compare::a#1 a zp[1]:13 22.0 -(signed byte) mul8s_compare::a#10 a zp[1]:13 12.518518518518519 +(signed byte) mul8s_compare::a#1 a zp[1]:13 2002.0 +(signed byte) mul8s_compare::a#10 a zp[1]:13 1226.185185185185 (signed byte) mul8s_compare::b -(signed byte) mul8s_compare::b#1 b zp[1]:6 202.0 -(signed byte) mul8s_compare::b#10 b zp[1]:6 24.319999999999997 +(signed byte) mul8s_compare::b#1 b zp[1]:6 20002.0 +(signed byte) mul8s_compare::b#10 b zp[1]:6 2404.28 (signed word) mul8s_compare::mf -(signed word) mul8s_compare::mf#0 mf zp[2]:9 12.0 +(signed word) mul8s_compare::mf#0 mf zp[2]:9 1182.5294117647059 (signed word) mul8s_compare::mn -(signed word) mul8s_compare::mn#0 mn zp[2]:14 17.0 +(signed word) mul8s_compare::mn#0 mn zp[2]:14 1675.25 (signed word) mul8s_compare::ms -(signed word) mul8s_compare::ms#0 ms zp[2]:7 15.249999999999998 +(signed word) mul8s_compare::ms#0 ms zp[2]:7 1505.2 (byte) mul8s_compare::ok -(byte) mul8s_compare::ok#3 reg byte x 202.0 -(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul8s_compare::ok#3 reg byte x 20002.0 +(byte) mul8s_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul8s_compare::str[(byte) $1f] = (byte*) "signed multiply results match!" (void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf) (label) mul8s_error::@1 @@ -10887,44 +10868,44 @@ FINAL SYMBOL TABLE (label) mul8s_error::@9 (label) mul8s_error::@return (signed byte) mul8s_error::a -(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714 +(signed byte) mul8s_error::a#0 reg byte x 157.42857142857142 (signed byte) mul8s_error::b -(signed byte) mul8s_error::b#0 b zp[1]:6 0.4 +(signed byte) mul8s_error::b#0 b zp[1]:6 110.19999999999999 (signed word) mul8s_error::mf -(signed word) mul8s_error::mf#0 mf zp[2]:9 0.21052631578947367 +(signed word) mul8s_error::mf#0 mf zp[2]:9 58.0 (signed word) mul8s_error::mn -(signed word) mul8s_error::mn#0 mn zp[2]:14 0.25 +(signed word) mul8s_error::mn#0 mn zp[2]:14 68.875 (signed word) mul8s_error::ms -(signed word) mul8s_error::ms#0 ms zp[2]:7 0.3076923076923077 +(signed word) mul8s_error::ms#0 ms zp[2]:7 84.76923076923077 (const byte*) mul8s_error::str[(byte) $1a] = (byte*) "signed multiply mismatch " (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.000000002E9 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 101.0 -(byte) mul8u::a#3 reg byte x 667.6666666666667 -(byte) mul8u::a#6 reg byte x 52.5 +(byte) mul8u::a#0 reg byte x 1.000000001E9 +(byte) mul8u::a#1 reg byte x 100001.0 +(byte) mul8u::a#2 reg byte x 10001.0 +(byte) mul8u::a#3 reg byte x 6.668333341666667E8 +(byte) mul8u::a#6 reg byte x 555001.5 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 4.0 -(byte) mul8u::b#1 reg byte a 202.0 -(byte) mul8u::b#2 reg byte a 103.0 +(byte) mul8u::b#0 reg byte a 200002.0 +(byte) mul8u::b#1 reg byte a 20002.0 +(byte) mul8u::b#2 reg byte a 110002.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:11 4.0 -(word) mul8u::mb#1 mb zp[2]:11 2002.0 -(word) mul8u::mb#2 mb zp[2]:11 429.2857142857143 +(word) mul8u::mb#0 mb zp[2]:11 2000002.0 +(word) mul8u::mb#1 mb zp[2]:11 2.000000002E9 +(word) mul8u::mb#2 mb zp[2]:11 4.2871428628571427E8 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 2002.0 -(word) mul8u::res#2 res zp[2]:14 443.7142857142857 -(word) mul8u::res#6 res zp[2]:14 1001.0 +(word) mul8u::res#1 res zp[2]:14 2.000000002E9 +(word) mul8u::res#2 res zp[2]:14 4.285871435714286E8 +(word) mul8u::res#6 res zp[2]:14 1.000000001E9 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 -(word) mul8u::return#3 return zp[2]:14 202.0 +(word) mul8u::return#2 return zp[2]:14 200002.0 +(word) mul8u::return#3 return zp[2]:14 20002.0 (void()) mul8u_compare() (label) mul8u_compare::@1 (label) mul8u_compare::@10 @@ -10942,20 +10923,20 @@ FINAL SYMBOL TABLE (label) mul8u_compare::@9 (label) mul8u_compare::@return (byte) mul8u_compare::a -(byte) mul8u_compare::a#1 a zp[1]:13 16.5 -(byte) mul8u_compare::a#7 a zp[1]:13 12.11111111111111 +(byte) mul8u_compare::a#1 a zp[1]:13 1501.5 +(byte) mul8u_compare::a#7 a zp[1]:13 1189.111111111111 (byte) mul8u_compare::b -(byte) mul8u_compare::b#1 b zp[1]:6 151.5 -(byte) mul8u_compare::b#10 b zp[1]:6 20.279999999999998 +(byte) mul8u_compare::b#1 b zp[1]:6 15001.5 +(byte) mul8u_compare::b#10 b zp[1]:6 2004.24 (word) mul8u_compare::mf -(word) mul8u_compare::mf#0 mf zp[2]:9 11.333333333333332 +(word) mul8u_compare::mf#0 mf zp[2]:9 1116.8333333333333 (word) mul8u_compare::mn -(word) mul8u_compare::mn#0 mn zp[2]:14 17.0 +(word) mul8u_compare::mn#0 mn zp[2]:14 1675.25 (word) mul8u_compare::ms -(word) mul8u_compare::ms#0 ms zp[2]:7 14.523809523809522 +(word) mul8u_compare::ms#0 ms zp[2]:7 1433.5238095238096 (byte) mul8u_compare::ok -(byte) mul8u_compare::ok#3 reg byte x 202.0 -(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul8u_compare::ok#3 reg byte x 20002.0 +(byte) mul8u_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul8u_compare::str[(byte) $18] = (byte*) "multiply results match!" (void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf) (label) mul8u_error::@1 @@ -10970,15 +10951,15 @@ FINAL SYMBOL TABLE (label) mul8u_error::@9 (label) mul8u_error::@return (byte) mul8u_error::a -(byte) mul8u_error::a#0 reg byte x 0.5714285714285714 +(byte) mul8u_error::a#0 reg byte x 157.42857142857142 (byte) mul8u_error::b -(byte) mul8u_error::b#0 b zp[1]:6 0.4 +(byte) mul8u_error::b#0 b zp[1]:6 110.19999999999999 (word) mul8u_error::mf -(word) mul8u_error::mf#0 mf zp[2]:9 0.21052631578947367 +(word) mul8u_error::mf#0 mf zp[2]:9 58.0 (word) mul8u_error::mn -(word) mul8u_error::mn#0 mn zp[2]:14 0.25 +(word) mul8u_error::mn#0 mn zp[2]:14 68.875 (word) mul8u_error::ms -(word) mul8u_error::ms#0 ms zp[2]:7 0.3076923076923077 +(word) mul8u_error::ms#0 ms zp[2]:7 84.76923076923077 (const byte*) mul8u_error::str[(byte) $13] = (byte*) "multiply mismatch " (const byte*) mula_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mula_sqr1_lo[(number) $200] = { fill( $200, 0) } @@ -10989,19 +10970,19 @@ FINAL SYMBOL TABLE (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 33.666666666666664 +(signed byte) mulf8s::a#0 reg byte a 3333.6666666666665 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 25.75 +(signed byte) mulf8s::b#0 reg byte x 27500.5 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:9 34.33333333333333 -(signed word) mulf8s::return#2 return zp[2]:9 202.0 +(signed word) mulf8s::return#0 return zp[2]:9 36667.33333333333 +(signed word) mulf8s::return#2 return zp[2]:9 20002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$15 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$16 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$8 reg byte a 2000002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -11009,13 +10990,13 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:18 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:18 110000.20000000001 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:9 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:9 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:9 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:9 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:9 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:9 1000001.0 +(word) mulf8s_prepared::m#1 m zp[2]:9 2000002.0 +(word) mulf8s_prepared::m#2 m zp[2]:9 2000002.0 +(word) mulf8s_prepared::m#4 m zp[2]:9 666667.3333333334 +(word) mulf8s_prepared::m#5 m zp[2]:9 1250001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) @@ -11023,35 +11004,35 @@ FINAL SYMBOL TABLE (label) mulf8u::@2 (label) mulf8u::@return (byte) mulf8u::a -(byte) mulf8u::a#0 reg byte a 51.5 +(byte) mulf8u::a#0 reg byte a 55001.0 (byte) mulf8u::b -(byte) mulf8u::b#0 reg byte x 34.33333333333333 +(byte) mulf8u::b#0 reg byte x 36667.33333333333 (word) mulf8u::return -(word) mulf8u::return#0 return zp[2]:9 34.33333333333333 -(word) mulf8u::return#2 return zp[2]:9 202.0 +(word) mulf8u::return#0 return zp[2]:9 36667.33333333333 +(word) mulf8u::return#2 return zp[2]:9 20002.0 (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 -(byte) mulf8u_prepare::a#1 reg byte a 4.0 -(byte) mulf8u_prepare::a#2 reg byte a 6.0 +(byte) mulf8u_prepare::a#0 reg byte a 200002.0 +(byte) mulf8u_prepare::a#1 reg byte a 200002.0 +(byte) mulf8u_prepare::a#2 reg byte a 1200003.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte x 4.0 -(byte) mulf8u_prepared::b#1 reg byte x 4.0 -(byte) mulf8u_prepared::b#2 reg byte x 6.0 +(byte) mulf8u_prepared::b#0 reg byte a 200002.0 +(byte) mulf8u_prepared::b#1 reg byte a 2000002.0 +(byte) mulf8u_prepared::b#2 reg byte a 1.1100003E7 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:9 1.5 -(word) mulf8u_prepared::return#2 return zp[2]:9 4.0 -(word) mulf8u_prepared::return#3 return zp[2]:9 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:9 2775000.75 +(word) mulf8u_prepared::return#2 return zp[2]:9 200002.0 +(word) mulf8u_prepared::return#3 return zp[2]:9 2000002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -11063,35 +11044,35 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:18 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:18 11.0 +(byte) mulf_init::c#1 c zp[1]:18 231.0 +(byte) mulf_init::c#2 c zp[1]:18 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:13 4.125 -(byte) mulf_init::dir#4 dir zp[1]:13 11.0 +(byte) mulf_init::dir#2 dir zp[1]:13 375.375 +(byte) mulf_init::dir#4 dir zp[1]:13 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:14 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:14 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:14 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:14 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:14 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:14 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:14 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:14 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:9 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:9 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:9 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:9 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (void()) mulf_init_asm() (label) mulf_init_asm::@return (const byte*) mulf_init_asm::mem = (byte*) 255 @@ -11112,11 +11093,11 @@ FINAL SYMBOL TABLE (label) mulf_tables_cmp::@9 (label) mulf_tables_cmp::@return (byte*) mulf_tables_cmp::asm_sqr -(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp[2]:7 11.0 -(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp[2]:7 6.6000000000000005 +(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp[2]:7 1001.0 +(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp[2]:7 600.5999999999999 (byte*) mulf_tables_cmp::kc_sqr -(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:14 22.0 -(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:14 4.4 +(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:14 2002.0 +(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:14 400.4 (const byte*) mulf_tables_cmp::str[(byte) $17] = (byte*) "multiply tables match!" (const byte*) mulf_tables_cmp::str1[(byte) $1c] = (byte*) "multiply table mismatch at " (const byte*) mulf_tables_cmp::str2[(byte) 4] = (byte*) " / " @@ -11129,80 +11110,80 @@ FINAL SYMBOL TABLE (label) muls8s::@6 (label) muls8s::@return (signed byte) muls8s::a -(signed byte) muls8s::a#0 a zp[1]:13 175.58333333333334 +(signed byte) muls8s::a#0 a zp[1]:13 1.6684167083333334E7 (signed byte) muls8s::b -(signed byte) muls8s::b#0 reg byte x 191.1818181818182 +(signed byte) muls8s::b#0 reg byte x 1.8182727545454547E7 (signed byte) muls8s::i -(signed byte) muls8s::i#1 reg byte y 2002.0 -(signed byte) muls8s::i#2 reg byte y 1001.0 +(signed byte) muls8s::i#1 reg byte y 2.00000002E8 +(signed byte) muls8s::i#2 reg byte y 1.00000001E8 (signed byte) muls8s::j -(signed byte) muls8s::j#1 reg byte y 2002.0 -(signed byte) muls8s::j#2 reg byte y 1001.0 +(signed byte) muls8s::j#1 reg byte y 2.00000002E8 +(signed byte) muls8s::j#2 reg byte y 1.00000001E8 (signed word) muls8s::m -(signed word) muls8s::m#1 m zp[2]:7 1001.0 -(signed word) muls8s::m#2 m zp[2]:7 1001.0 -(signed word) muls8s::m#3 m zp[2]:7 1501.5 -(signed word) muls8s::m#5 m zp[2]:7 1501.5 +(signed word) muls8s::m#1 m zp[2]:7 1.00000001E8 +(signed word) muls8s::m#2 m zp[2]:7 1.00000001E8 +(signed word) muls8s::m#3 m zp[2]:7 1.500000015E8 +(signed word) muls8s::m#5 m zp[2]:7 1.500000015E8 (signed word) muls8s::return -(signed word) muls8s::return#0 return zp[2]:7 701.0 -(signed word) muls8s::return#2 return zp[2]:7 202.0 +(signed word) muls8s::return#0 return zp[2]:7 6.6670001E7 +(signed word) muls8s::return#2 return zp[2]:7 20002.0 (word()) muls8u((byte) muls8u::a , (byte) muls8u::b) (label) muls8u::@1 (label) muls8u::@2 (label) muls8u::@3 (label) muls8u::@return (byte) muls8u::a -(byte) muls8u::a#0 a zp[1]:13 157.71428571428572 +(byte) muls8u::a#0 a zp[1]:13 1.4301429E7 (byte) muls8u::b -(byte) muls8u::b#0 reg byte x 183.66666666666669 +(byte) muls8u::b#0 reg byte x 1.6668333666666668E7 (byte) muls8u::i -(byte) muls8u::i#1 reg byte y 2002.0 -(byte) muls8u::i#2 reg byte y 1001.0 +(byte) muls8u::i#1 reg byte y 2.00000002E8 +(byte) muls8u::i#2 reg byte y 1.00000001E8 (word) muls8u::m -(word) muls8u::m#1 m zp[2]:7 1001.0 -(word) muls8u::m#3 m zp[2]:7 1501.5 +(word) muls8u::m#1 m zp[2]:7 1.00000001E8 +(word) muls8u::m#3 m zp[2]:7 1.500000015E8 (word) muls8u::return -(word) muls8u::return#0 return zp[2]:7 367.33333333333337 -(word) muls8u::return#2 return zp[2]:7 202.0 +(word) muls8u::return#0 return zp[2]:7 3.3336667333333336E7 +(word) muls8u::return#2 return zp[2]:7 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte x 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 3.5 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 200002.0 +(byte) print_byte::b#2 reg byte x 200002.0 +(byte) print_byte::b#3 reg byte x 2002.0 +(byte) print_byte::b#4 reg byte x 2002.0 +(byte) print_byte::b#5 reg byte x 553001.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2000002.0 +(byte) print_char::ch#5 reg byte a 2000002.0 +(byte) print_char::ch#6 reg byte a 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#100 print_char_cursor zp[2]:4 0.1951219512195122 -(byte*) print_char_cursor#134 print_char_cursor zp[2]:4 1.5 -(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 5.25 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:4 7.0 -(byte*) print_char_cursor#143 print_char_cursor zp[2]:4 3.9999999999999996 -(byte*) print_char_cursor#155 print_char_cursor zp[2]:4 28.0 -(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 0.7083333333333331 -(byte*) print_char_cursor#190 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#226 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:4 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 100001.0 +(byte*) print_char_cursor#100 print_char_cursor zp[2]:4 31.80487804878049 +(byte*) print_char_cursor#134 print_char_cursor zp[2]:4 8464.714285714286 +(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 25576.5 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:4 56603.5 +(byte*) print_char_cursor#143 print_char_cursor zp[2]:4 404002.0000000001 +(byte*) print_char_cursor#155 print_char_cursor zp[2]:4 20314.0 +(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 202.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 231879.5208333332 +(byte*) print_char_cursor#190 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#226 print_char_cursor zp[2]:4 202.0 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:4 1.1020004E7 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6428571428571428 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 0.09523809523809523 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#45 print_line_cursor zp[2]:2 10.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 4320.1285714285705 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 19.0952380952381 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:2 210003.0 +(byte*) print_line_cursor#45 print_line_cursor zp[2]:2 12205.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -11213,20 +11194,20 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 reg byte x 4.0 -(signed byte) print_sbyte::b#1 reg byte x 4.0 -(signed byte) print_sbyte::b#2 reg byte x 4.0 -(signed byte) print_sbyte::b#3 reg byte x 1.6666666666666665 -(signed byte) print_sbyte::b#5 reg byte x 4.0 +(signed byte) print_sbyte::b#0 reg byte x 20002.0 +(signed byte) print_sbyte::b#1 reg byte x 2002.0 +(signed byte) print_sbyte::b#2 reg byte x 2002.0 +(signed byte) print_sbyte::b#3 reg byte x 5334.166666666666 +(signed byte) print_sbyte::b#5 reg byte x 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:11 22.0 -(byte*) print_str::str#16 str zp[2]:11 11.5 -(byte*) print_str::str#18 str zp[2]:11 2.0 +(byte*) print_str::str#0 str zp[2]:11 200002.0 +(byte*) print_str::str#16 str zp[2]:11 102501.25 +(byte*) print_str::str#18 str zp[2]:11 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -11234,23 +11215,23 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:7 4.0 -(signed word) print_sword::w#1 w zp[2]:7 4.0 -(signed word) print_sword::w#2 w zp[2]:7 4.0 -(signed word) print_sword::w#3 w zp[2]:7 4.0 -(signed word) print_sword::w#4 w zp[2]:7 1.9999999999999998 -(signed word) print_sword::w#6 w zp[2]:7 4.0 +(signed word) print_sword::w#0 w zp[2]:7 20002.0 +(signed word) print_sword::w#1 w zp[2]:7 2002.0 +(signed word) print_sword::w#2 w zp[2]:7 2002.0 +(signed word) print_sword::w#3 w zp[2]:7 2002.0 +(signed word) print_sword::w#4 w zp[2]:7 5500.999999999999 +(signed word) print_sword::w#6 w zp[2]:7 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 4.0 -(word) print_word::w#1 w zp[2]:7 4.0 -(word) print_word::w#2 w zp[2]:7 4.0 -(word) print_word::w#3 w zp[2]:7 4.0 -(word) print_word::w#4 w zp[2]:7 4.0 -(word) print_word::w#5 w zp[2]:7 4.0 -(word) print_word::w#6 w zp[2]:7 5.333333333333333 +(word) print_word::w#0 w zp[2]:7 20002.0 +(word) print_word::w#1 w zp[2]:7 202.0 +(word) print_word::w#2 w zp[2]:7 202.0 +(word) print_word::w#3 w zp[2]:7 2002.0 +(word) print_word::w#4 w zp[2]:7 2002.0 +(word) print_word::w#5 w zp[2]:7 2002.0 +(word) print_word::w#6 w zp[2]:7 71069.33333333333 (const byte*) str1[(byte) 2] = (byte*) "*" (const byte*) str2[(byte) 7] = (byte*) " slow:" (const byte*) str3[(byte) $b] = (byte*) " / normal:" @@ -11264,7 +11245,7 @@ zp[2]:4 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 prin reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] -reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] +reg byte a [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] @@ -11778,8 +11759,7 @@ print_word: { .label w = 7 // print_byte(>w) // [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 - lda.z w+1 - tax + ldx.z w+1 // [102] call print_byte // [106] phi from print_word to print_byte [phi:print_word->print_byte] // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy @@ -11788,8 +11768,7 @@ print_word: { // print_word::@1 // print_byte(print_byte] // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy @@ -12097,8 +12076,8 @@ mulf8s_prepared: { .label m = 9 .label b = $12 // mulf8u_prepared((byte) b) - // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 - ldx.z b + // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuz1 + lda.z b // [167] call mulf8u_prepared // [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy @@ -12154,16 +12133,17 @@ mulf8s_prepared: { // 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) +// mulf8u_prepared(byte register(A) b) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 9 // *memB = b - // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx - stx memB + // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuaa + sta memB // asm // 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 } + tax sec sm1: lda mulf_sqr1_lo,x @@ -12621,7 +12601,8 @@ mulf8u: { jsr mulf8u_prepare // mulf8u::@1 // mulf8u_prepared(b) - // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuaa=vbuxx + txa // [269] call mulf8u_prepared // [181] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy diff --git a/src/test/ref/test-multiply-8bit.sym b/src/test/ref/test-multiply-8bit.sym index 6d386062c..fb0f1c1fb 100644 --- a/src/test/ref/test-multiply-8bit.sym +++ b/src/test/ref/test-multiply-8bit.sym @@ -20,8 +20,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:16 22.0 -(byte*) memset::dst#2 dst zp[2]:16 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:16 20002.0 +(byte*) memset::dst#2 dst zp[2]:16 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -30,10 +30,10 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$13 reg byte a 4.0 -(byte~) mul8s::$16 reg byte a 4.0 -(byte~) mul8s::$17 reg byte a 4.0 -(byte~) mul8s::$9 reg byte a 4.0 +(byte~) mul8s::$13 reg byte a 200002.0 +(byte~) mul8s::$16 reg byte a 200002.0 +(byte~) mul8s::$17 reg byte a 200002.0 +(byte~) mul8s::$9 reg byte a 200002.0 (label) mul8s::@1 (label) mul8s::@2 (label) mul8s::@3 @@ -41,15 +41,15 @@ (label) mul8s::@5 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp[1]:13 7.357142857142858 +(signed byte) mul8s::a#0 a zp[1]:13 7857.285714285715 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 9.363636363636363 +(signed byte) mul8s::b#0 reg byte y 10000.181818181818 (word) mul8s::m -(word) mul8s::m#0 m zp[2]:14 2.0 -(word) mul8s::m#1 m zp[2]:14 4.0 -(word) mul8s::m#2 m zp[2]:14 4.0 -(word) mul8s::m#4 m zp[2]:14 1.3333333333333333 -(word) mul8s::m#5 m zp[2]:14 2.5 +(word) mul8s::m#0 m zp[2]:14 100001.0 +(word) mul8s::m#1 m zp[2]:14 200002.0 +(word) mul8s::m#2 m zp[2]:14 200002.0 +(word) mul8s::m#4 m zp[2]:14 66667.33333333333 +(word) mul8s::m#5 m zp[2]:14 125001.25 (signed word) mul8s::return (void()) mul8s_compare() (label) mul8s_compare::@1 @@ -69,20 +69,20 @@ (label) mul8s_compare::@9 (label) mul8s_compare::@return (signed byte) mul8s_compare::a -(signed byte) mul8s_compare::a#1 a zp[1]:13 22.0 -(signed byte) mul8s_compare::a#10 a zp[1]:13 12.518518518518519 +(signed byte) mul8s_compare::a#1 a zp[1]:13 2002.0 +(signed byte) mul8s_compare::a#10 a zp[1]:13 1226.185185185185 (signed byte) mul8s_compare::b -(signed byte) mul8s_compare::b#1 b zp[1]:6 202.0 -(signed byte) mul8s_compare::b#10 b zp[1]:6 24.319999999999997 +(signed byte) mul8s_compare::b#1 b zp[1]:6 20002.0 +(signed byte) mul8s_compare::b#10 b zp[1]:6 2404.28 (signed word) mul8s_compare::mf -(signed word) mul8s_compare::mf#0 mf zp[2]:9 12.0 +(signed word) mul8s_compare::mf#0 mf zp[2]:9 1182.5294117647059 (signed word) mul8s_compare::mn -(signed word) mul8s_compare::mn#0 mn zp[2]:14 17.0 +(signed word) mul8s_compare::mn#0 mn zp[2]:14 1675.25 (signed word) mul8s_compare::ms -(signed word) mul8s_compare::ms#0 ms zp[2]:7 15.249999999999998 +(signed word) mul8s_compare::ms#0 ms zp[2]:7 1505.2 (byte) mul8s_compare::ok -(byte) mul8s_compare::ok#3 reg byte x 202.0 -(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul8s_compare::ok#3 reg byte x 20002.0 +(byte) mul8s_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul8s_compare::str[(byte) $1f] = (byte*) "signed multiply results match!" (void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf) (label) mul8s_error::@1 @@ -97,44 +97,44 @@ (label) mul8s_error::@9 (label) mul8s_error::@return (signed byte) mul8s_error::a -(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714 +(signed byte) mul8s_error::a#0 reg byte x 157.42857142857142 (signed byte) mul8s_error::b -(signed byte) mul8s_error::b#0 b zp[1]:6 0.4 +(signed byte) mul8s_error::b#0 b zp[1]:6 110.19999999999999 (signed word) mul8s_error::mf -(signed word) mul8s_error::mf#0 mf zp[2]:9 0.21052631578947367 +(signed word) mul8s_error::mf#0 mf zp[2]:9 58.0 (signed word) mul8s_error::mn -(signed word) mul8s_error::mn#0 mn zp[2]:14 0.25 +(signed word) mul8s_error::mn#0 mn zp[2]:14 68.875 (signed word) mul8s_error::ms -(signed word) mul8s_error::ms#0 ms zp[2]:7 0.3076923076923077 +(signed word) mul8s_error::ms#0 ms zp[2]:7 84.76923076923077 (const byte*) mul8s_error::str[(byte) $1a] = (byte*) "signed multiply mismatch " (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) -(byte~) mul8u::$1 reg byte a 2002.0 +(byte~) mul8u::$1 reg byte a 2.000000002E9 (label) mul8u::@1 (label) mul8u::@2 (label) mul8u::@3 (label) mul8u::@4 (label) mul8u::@return (byte) mul8u::a -(byte) mul8u::a#0 reg byte x 1001.0 -(byte) mul8u::a#1 reg byte x 2.0 -(byte) mul8u::a#2 reg byte x 101.0 -(byte) mul8u::a#3 reg byte x 667.6666666666667 -(byte) mul8u::a#6 reg byte x 52.5 +(byte) mul8u::a#0 reg byte x 1.000000001E9 +(byte) mul8u::a#1 reg byte x 100001.0 +(byte) mul8u::a#2 reg byte x 10001.0 +(byte) mul8u::a#3 reg byte x 6.668333341666667E8 +(byte) mul8u::a#6 reg byte x 555001.5 (byte) mul8u::b -(byte) mul8u::b#0 reg byte a 4.0 -(byte) mul8u::b#1 reg byte a 202.0 -(byte) mul8u::b#2 reg byte a 103.0 +(byte) mul8u::b#0 reg byte a 200002.0 +(byte) mul8u::b#1 reg byte a 20002.0 +(byte) mul8u::b#2 reg byte a 110002.0 (word) mul8u::mb -(word) mul8u::mb#0 mb zp[2]:11 4.0 -(word) mul8u::mb#1 mb zp[2]:11 2002.0 -(word) mul8u::mb#2 mb zp[2]:11 429.2857142857143 +(word) mul8u::mb#0 mb zp[2]:11 2000002.0 +(word) mul8u::mb#1 mb zp[2]:11 2.000000002E9 +(word) mul8u::mb#2 mb zp[2]:11 4.2871428628571427E8 (word) mul8u::res -(word) mul8u::res#1 res zp[2]:14 2002.0 -(word) mul8u::res#2 res zp[2]:14 443.7142857142857 -(word) mul8u::res#6 res zp[2]:14 1001.0 +(word) mul8u::res#1 res zp[2]:14 2.000000002E9 +(word) mul8u::res#2 res zp[2]:14 4.285871435714286E8 +(word) mul8u::res#6 res zp[2]:14 1.000000001E9 (word) mul8u::return -(word) mul8u::return#2 return zp[2]:14 4.0 -(word) mul8u::return#3 return zp[2]:14 202.0 +(word) mul8u::return#2 return zp[2]:14 200002.0 +(word) mul8u::return#3 return zp[2]:14 20002.0 (void()) mul8u_compare() (label) mul8u_compare::@1 (label) mul8u_compare::@10 @@ -152,20 +152,20 @@ (label) mul8u_compare::@9 (label) mul8u_compare::@return (byte) mul8u_compare::a -(byte) mul8u_compare::a#1 a zp[1]:13 16.5 -(byte) mul8u_compare::a#7 a zp[1]:13 12.11111111111111 +(byte) mul8u_compare::a#1 a zp[1]:13 1501.5 +(byte) mul8u_compare::a#7 a zp[1]:13 1189.111111111111 (byte) mul8u_compare::b -(byte) mul8u_compare::b#1 b zp[1]:6 151.5 -(byte) mul8u_compare::b#10 b zp[1]:6 20.279999999999998 +(byte) mul8u_compare::b#1 b zp[1]:6 15001.5 +(byte) mul8u_compare::b#10 b zp[1]:6 2004.24 (word) mul8u_compare::mf -(word) mul8u_compare::mf#0 mf zp[2]:9 11.333333333333332 +(word) mul8u_compare::mf#0 mf zp[2]:9 1116.8333333333333 (word) mul8u_compare::mn -(word) mul8u_compare::mn#0 mn zp[2]:14 17.0 +(word) mul8u_compare::mn#0 mn zp[2]:14 1675.25 (word) mul8u_compare::ms -(word) mul8u_compare::ms#0 ms zp[2]:7 14.523809523809522 +(word) mul8u_compare::ms#0 ms zp[2]:7 1433.5238095238096 (byte) mul8u_compare::ok -(byte) mul8u_compare::ok#3 reg byte x 202.0 -(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664 +(byte) mul8u_compare::ok#3 reg byte x 20002.0 +(byte) mul8u_compare::ok#4 reg byte x 3333.6666666666665 (const byte*) mul8u_compare::str[(byte) $18] = (byte*) "multiply results match!" (void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf) (label) mul8u_error::@1 @@ -180,15 +180,15 @@ (label) mul8u_error::@9 (label) mul8u_error::@return (byte) mul8u_error::a -(byte) mul8u_error::a#0 reg byte x 0.5714285714285714 +(byte) mul8u_error::a#0 reg byte x 157.42857142857142 (byte) mul8u_error::b -(byte) mul8u_error::b#0 b zp[1]:6 0.4 +(byte) mul8u_error::b#0 b zp[1]:6 110.19999999999999 (word) mul8u_error::mf -(word) mul8u_error::mf#0 mf zp[2]:9 0.21052631578947367 +(word) mul8u_error::mf#0 mf zp[2]:9 58.0 (word) mul8u_error::mn -(word) mul8u_error::mn#0 mn zp[2]:14 0.25 +(word) mul8u_error::mn#0 mn zp[2]:14 68.875 (word) mul8u_error::ms -(word) mul8u_error::ms#0 ms zp[2]:7 0.3076923076923077 +(word) mul8u_error::ms#0 ms zp[2]:7 84.76923076923077 (const byte*) mul8u_error::str[(byte) $13] = (byte*) "multiply mismatch " (const byte*) mula_sqr1_hi[(number) $200] = { fill( $200, 0) } (const byte*) mula_sqr1_lo[(number) $200] = { fill( $200, 0) } @@ -199,19 +199,19 @@ (label) mulf8s::@2 (label) mulf8s::@return (signed byte) mulf8s::a -(signed byte) mulf8s::a#0 reg byte a 33.666666666666664 +(signed byte) mulf8s::a#0 reg byte a 3333.6666666666665 (signed byte) mulf8s::b -(signed byte) mulf8s::b#0 reg byte x 25.75 +(signed byte) mulf8s::b#0 reg byte x 27500.5 (label) mulf8s::mulf8s_prepare1 (signed byte) mulf8s::mulf8s_prepare1_a (signed word) mulf8s::return -(signed word) mulf8s::return#0 return zp[2]:9 34.33333333333333 -(signed word) mulf8s::return#2 return zp[2]:9 202.0 +(signed word) mulf8s::return#0 return zp[2]:9 36667.33333333333 +(signed word) mulf8s::return#2 return zp[2]:9 20002.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$12 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::$8 reg byte a 4.0 +(byte~) mulf8s_prepared::$12 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$15 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$16 reg byte a 2000002.0 +(byte~) mulf8s_prepared::$8 reg byte a 2000002.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 (label) mulf8s_prepared::@3 @@ -219,13 +219,13 @@ (label) mulf8s_prepared::@5 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp[1]:18 0.4 +(signed byte) mulf8s_prepared::b#0 b zp[1]:18 110000.20000000001 (word) mulf8s_prepared::m -(word) mulf8s_prepared::m#0 m zp[2]:9 2.0 -(word) mulf8s_prepared::m#1 m zp[2]:9 4.0 -(word) mulf8s_prepared::m#2 m zp[2]:9 4.0 -(word) mulf8s_prepared::m#4 m zp[2]:9 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp[2]:9 2.5 +(word) mulf8s_prepared::m#0 m zp[2]:9 1000001.0 +(word) mulf8s_prepared::m#1 m zp[2]:9 2000002.0 +(word) mulf8s_prepared::m#2 m zp[2]:9 2000002.0 +(word) mulf8s_prepared::m#4 m zp[2]:9 666667.3333333334 +(word) mulf8s_prepared::m#5 m zp[2]:9 1250001.25 (const signed byte*) mulf8s_prepared::memA = (signed byte*) 253 (signed word) mulf8s_prepared::return (word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) @@ -233,35 +233,35 @@ (label) mulf8u::@2 (label) mulf8u::@return (byte) mulf8u::a -(byte) mulf8u::a#0 reg byte a 51.5 +(byte) mulf8u::a#0 reg byte a 55001.0 (byte) mulf8u::b -(byte) mulf8u::b#0 reg byte x 34.33333333333333 +(byte) mulf8u::b#0 reg byte x 36667.33333333333 (word) mulf8u::return -(word) mulf8u::return#0 return zp[2]:9 34.33333333333333 -(word) mulf8u::return#2 return zp[2]:9 202.0 +(word) mulf8u::return#0 return zp[2]:9 36667.33333333333 +(word) mulf8u::return#2 return zp[2]:9 20002.0 (void()) mulf8u_prepare((byte) mulf8u_prepare::a) (label) mulf8u_prepare::@return (byte) mulf8u_prepare::a -(byte) mulf8u_prepare::a#0 reg byte a 4.0 -(byte) mulf8u_prepare::a#1 reg byte a 4.0 -(byte) mulf8u_prepare::a#2 reg byte a 6.0 +(byte) mulf8u_prepare::a#0 reg byte a 200002.0 +(byte) mulf8u_prepare::a#1 reg byte a 200002.0 +(byte) mulf8u_prepare::a#2 reg byte a 1200003.0 (const byte*) mulf8u_prepare::memA = (byte*) 253 (word()) mulf8u_prepared((byte) mulf8u_prepared::b) (label) mulf8u_prepared::@return (byte) mulf8u_prepared::b -(byte) mulf8u_prepared::b#0 reg byte x 4.0 -(byte) mulf8u_prepared::b#1 reg byte x 4.0 -(byte) mulf8u_prepared::b#2 reg byte x 6.0 +(byte) mulf8u_prepared::b#0 reg byte a 200002.0 +(byte) mulf8u_prepared::b#1 reg byte a 2000002.0 +(byte) mulf8u_prepared::b#2 reg byte a 1.1100003E7 (const byte*) mulf8u_prepared::memB = (byte*) 255 (const byte*) mulf8u_prepared::resL = (byte*) 254 (word) mulf8u_prepared::return -(word) mulf8u_prepared::return#0 return zp[2]:9 1.5 -(word) mulf8u_prepared::return#2 return zp[2]:9 4.0 -(word) mulf8u_prepared::return#3 return zp[2]:9 4.0 +(word) mulf8u_prepared::return#0 return zp[2]:9 2775000.75 +(word) mulf8u_prepared::return#2 return zp[2]:9 200002.0 +(word) mulf8u_prepared::return#3 return zp[2]:9 2000002.0 (void()) mulf_init() -(byte~) mulf_init::$1 reg byte a 22.0 -(byte~) mulf_init::$4 reg byte a 22.0 -(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$1 reg byte a 2002.0 +(byte~) mulf_init::$4 reg byte a 2002.0 +(byte~) mulf_init::$5 reg byte a 2002.0 (label) mulf_init::@1 (label) mulf_init::@2 (label) mulf_init::@3 @@ -273,35 +273,35 @@ (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:18 2.5384615384615383 -(byte) mulf_init::c#2 c zp[1]:18 11.0 +(byte) mulf_init::c#1 c zp[1]:18 231.0 +(byte) mulf_init::c#2 c zp[1]:18 1001.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:13 4.125 -(byte) mulf_init::dir#4 dir zp[1]:13 11.0 +(byte) mulf_init::dir#2 dir zp[1]:13 375.375 +(byte) mulf_init::dir#4 dir zp[1]:13 1001.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:14 11.0 -(word) mulf_init::sqr#2 sqr zp[2]:14 22.0 -(word) mulf_init::sqr#3 sqr zp[2]:14 9.166666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:14 5.5 +(word) mulf_init::sqr#1 sqr zp[2]:14 1001.0 +(word) mulf_init::sqr#2 sqr zp[2]:14 2002.0 +(word) mulf_init::sqr#3 sqr zp[2]:14 834.1666666666667 +(word) mulf_init::sqr#4 sqr zp[2]:14 500.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:9 7.333333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:9 2.75 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:9 667.3333333333334 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:9 250.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 22.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 3.142857142857143 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 2002.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 286.0 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 3.6666666666666665 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 8.25 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:11 333.6666666666667 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:11 750.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 22.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 4.888888888888889 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:16 2002.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:16 444.8888888888889 (byte) mulf_init::x_2 -(byte) mulf_init::x_2#1 reg byte x 11.0 -(byte) mulf_init::x_2#2 reg byte x 5.5 -(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005 +(byte) mulf_init::x_2#1 reg byte x 1001.0 +(byte) mulf_init::x_2#2 reg byte x 500.5 +(byte) mulf_init::x_2#3 reg byte x 600.5999999999999 (byte) mulf_init::x_255 -(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005 -(byte) mulf_init::x_255#2 reg byte x 8.8 +(byte) mulf_init::x_255#1 reg byte x 600.5999999999999 +(byte) mulf_init::x_255#2 reg byte x 800.8 (void()) mulf_init_asm() (label) mulf_init_asm::@return (const byte*) mulf_init_asm::mem = (byte*) 255 @@ -322,11 +322,11 @@ (label) mulf_tables_cmp::@9 (label) mulf_tables_cmp::@return (byte*) mulf_tables_cmp::asm_sqr -(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp[2]:7 11.0 -(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp[2]:7 6.6000000000000005 +(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp[2]:7 1001.0 +(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp[2]:7 600.5999999999999 (byte*) mulf_tables_cmp::kc_sqr -(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:14 22.0 -(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:14 4.4 +(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:14 2002.0 +(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:14 400.4 (const byte*) mulf_tables_cmp::str[(byte) $17] = (byte*) "multiply tables match!" (const byte*) mulf_tables_cmp::str1[(byte) $1c] = (byte*) "multiply table mismatch at " (const byte*) mulf_tables_cmp::str2[(byte) 4] = (byte*) " / " @@ -339,80 +339,80 @@ (label) muls8s::@6 (label) muls8s::@return (signed byte) muls8s::a -(signed byte) muls8s::a#0 a zp[1]:13 175.58333333333334 +(signed byte) muls8s::a#0 a zp[1]:13 1.6684167083333334E7 (signed byte) muls8s::b -(signed byte) muls8s::b#0 reg byte x 191.1818181818182 +(signed byte) muls8s::b#0 reg byte x 1.8182727545454547E7 (signed byte) muls8s::i -(signed byte) muls8s::i#1 reg byte y 2002.0 -(signed byte) muls8s::i#2 reg byte y 1001.0 +(signed byte) muls8s::i#1 reg byte y 2.00000002E8 +(signed byte) muls8s::i#2 reg byte y 1.00000001E8 (signed byte) muls8s::j -(signed byte) muls8s::j#1 reg byte y 2002.0 -(signed byte) muls8s::j#2 reg byte y 1001.0 +(signed byte) muls8s::j#1 reg byte y 2.00000002E8 +(signed byte) muls8s::j#2 reg byte y 1.00000001E8 (signed word) muls8s::m -(signed word) muls8s::m#1 m zp[2]:7 1001.0 -(signed word) muls8s::m#2 m zp[2]:7 1001.0 -(signed word) muls8s::m#3 m zp[2]:7 1501.5 -(signed word) muls8s::m#5 m zp[2]:7 1501.5 +(signed word) muls8s::m#1 m zp[2]:7 1.00000001E8 +(signed word) muls8s::m#2 m zp[2]:7 1.00000001E8 +(signed word) muls8s::m#3 m zp[2]:7 1.500000015E8 +(signed word) muls8s::m#5 m zp[2]:7 1.500000015E8 (signed word) muls8s::return -(signed word) muls8s::return#0 return zp[2]:7 701.0 -(signed word) muls8s::return#2 return zp[2]:7 202.0 +(signed word) muls8s::return#0 return zp[2]:7 6.6670001E7 +(signed word) muls8s::return#2 return zp[2]:7 20002.0 (word()) muls8u((byte) muls8u::a , (byte) muls8u::b) (label) muls8u::@1 (label) muls8u::@2 (label) muls8u::@3 (label) muls8u::@return (byte) muls8u::a -(byte) muls8u::a#0 a zp[1]:13 157.71428571428572 +(byte) muls8u::a#0 a zp[1]:13 1.4301429E7 (byte) muls8u::b -(byte) muls8u::b#0 reg byte x 183.66666666666669 +(byte) muls8u::b#0 reg byte x 1.6668333666666668E7 (byte) muls8u::i -(byte) muls8u::i#1 reg byte y 2002.0 -(byte) muls8u::i#2 reg byte y 1001.0 +(byte) muls8u::i#1 reg byte y 2.00000002E8 +(byte) muls8u::i#2 reg byte y 1.00000001E8 (word) muls8u::m -(word) muls8u::m#1 m zp[2]:7 1001.0 -(word) muls8u::m#3 m zp[2]:7 1501.5 +(word) muls8u::m#1 m zp[2]:7 1.00000001E8 +(word) muls8u::m#3 m zp[2]:7 1.500000015E8 (word) muls8u::return -(word) muls8u::return#0 return zp[2]:7 367.33333333333337 -(word) muls8u::return#2 return zp[2]:7 202.0 +(word) muls8u::return#0 return zp[2]:7 3.3336667333333336E7 +(word) muls8u::return#2 return zp[2]:7 20002.0 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte x 4.0 +(byte~) print_byte::$0 reg byte a 2000002.0 +(byte~) print_byte::$2 reg byte x 2000002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 4.0 -(byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 4.0 -(byte) print_byte::b#3 reg byte x 4.0 -(byte) print_byte::b#4 reg byte x 4.0 -(byte) print_byte::b#5 reg byte x 3.5 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 200002.0 +(byte) print_byte::b#2 reg byte x 200002.0 +(byte) print_byte::b#3 reg byte x 2002.0 +(byte) print_byte::b#4 reg byte x 2002.0 +(byte) print_byte::b#5 reg byte x 553001.75 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 6.0 +(byte) print_char::ch#4 reg byte a 2000002.0 +(byte) print_char::ch#5 reg byte a 2000002.0 +(byte) print_char::ch#6 reg byte a 1.2000003E7 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0 -(byte*) print_char_cursor#100 print_char_cursor zp[2]:4 0.1951219512195122 -(byte*) print_char_cursor#134 print_char_cursor zp[2]:4 1.5 -(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 5.25 -(byte*) print_char_cursor#142 print_char_cursor zp[2]:4 7.0 -(byte*) print_char_cursor#143 print_char_cursor zp[2]:4 3.9999999999999996 -(byte*) print_char_cursor#155 print_char_cursor zp[2]:4 28.0 -(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 0.7083333333333331 -(byte*) print_char_cursor#190 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#226 print_char_cursor zp[2]:4 4.0 -(byte*) print_char_cursor#86 print_char_cursor zp[2]:4 8.0 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 100001.0 +(byte*) print_char_cursor#100 print_char_cursor zp[2]:4 31.80487804878049 +(byte*) print_char_cursor#134 print_char_cursor zp[2]:4 8464.714285714286 +(byte*) print_char_cursor#135 print_char_cursor zp[2]:4 25576.5 +(byte*) print_char_cursor#142 print_char_cursor zp[2]:4 56603.5 +(byte*) print_char_cursor#143 print_char_cursor zp[2]:4 404002.0000000001 +(byte*) print_char_cursor#155 print_char_cursor zp[2]:4 20314.0 +(byte*) print_char_cursor#189 print_char_cursor zp[2]:4 202.0 +(byte*) print_char_cursor#19 print_char_cursor zp[2]:4 231879.5208333332 +(byte*) print_char_cursor#190 print_char_cursor zp[2]:4 2002.0 +(byte*) print_char_cursor#226 print_char_cursor zp[2]:4 202.0 +(byte*) print_char_cursor#86 print_char_cursor zp[2]:4 1.1020004E7 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6428571428571428 -(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 0.09523809523809523 -(byte*) print_line_cursor#23 print_line_cursor zp[2]:2 24.0 -(byte*) print_line_cursor#45 print_line_cursor zp[2]:2 10.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 4320.1285714285705 +(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 19.0952380952381 +(byte*) print_line_cursor#23 print_line_cursor zp[2]:2 210003.0 +(byte*) print_line_cursor#45 print_line_cursor zp[2]:2 12205.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -423,20 +423,20 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 reg byte x 4.0 -(signed byte) print_sbyte::b#1 reg byte x 4.0 -(signed byte) print_sbyte::b#2 reg byte x 4.0 -(signed byte) print_sbyte::b#3 reg byte x 1.6666666666666665 -(signed byte) print_sbyte::b#5 reg byte x 4.0 +(signed byte) print_sbyte::b#0 reg byte x 20002.0 +(signed byte) print_sbyte::b#1 reg byte x 2002.0 +(signed byte) print_sbyte::b#2 reg byte x 2002.0 +(signed byte) print_sbyte::b#3 reg byte x 5334.166666666666 +(signed byte) print_sbyte::b#5 reg byte x 20002.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:11 22.0 -(byte*) print_str::str#16 str zp[2]:11 11.5 -(byte*) print_str::str#18 str zp[2]:11 2.0 +(byte*) print_str::str#0 str zp[2]:11 200002.0 +(byte*) print_str::str#16 str zp[2]:11 102501.25 +(byte*) print_str::str#18 str zp[2]:11 10001.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 @@ -444,23 +444,23 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:7 4.0 -(signed word) print_sword::w#1 w zp[2]:7 4.0 -(signed word) print_sword::w#2 w zp[2]:7 4.0 -(signed word) print_sword::w#3 w zp[2]:7 4.0 -(signed word) print_sword::w#4 w zp[2]:7 1.9999999999999998 -(signed word) print_sword::w#6 w zp[2]:7 4.0 +(signed word) print_sword::w#0 w zp[2]:7 20002.0 +(signed word) print_sword::w#1 w zp[2]:7 2002.0 +(signed word) print_sword::w#2 w zp[2]:7 2002.0 +(signed word) print_sword::w#3 w zp[2]:7 2002.0 +(signed word) print_sword::w#4 w zp[2]:7 5500.999999999999 +(signed word) print_sword::w#6 w zp[2]:7 20002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:7 4.0 -(word) print_word::w#1 w zp[2]:7 4.0 -(word) print_word::w#2 w zp[2]:7 4.0 -(word) print_word::w#3 w zp[2]:7 4.0 -(word) print_word::w#4 w zp[2]:7 4.0 -(word) print_word::w#5 w zp[2]:7 4.0 -(word) print_word::w#6 w zp[2]:7 5.333333333333333 +(word) print_word::w#0 w zp[2]:7 20002.0 +(word) print_word::w#1 w zp[2]:7 202.0 +(word) print_word::w#2 w zp[2]:7 202.0 +(word) print_word::w#3 w zp[2]:7 2002.0 +(word) print_word::w#4 w zp[2]:7 2002.0 +(word) print_word::w#5 w zp[2]:7 2002.0 +(word) print_word::w#6 w zp[2]:7 71069.33333333333 (const byte*) str1[(byte) 2] = (byte*) "*" (const byte*) str2[(byte) 7] = (byte*) " slow:" (const byte*) str3[(byte) $b] = (byte*) " / normal:" @@ -474,7 +474,7 @@ zp[2]:4 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 prin reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] -reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] +reg byte a [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] diff --git a/src/test/ref/test-scroll-up.log b/src/test/ref/test-scroll-up.log index c62a87bf5..38efb1c51 100644 --- a/src/test/ref/test-scroll-up.log +++ b/src/test/ref/test-scroll-up.log @@ -278,16 +278,16 @@ Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to word in (unumber~) scrollup1::$4 ← (word~) scrollup1::$3 + (byte) $28 Inferred type updated to word in (unumber~) scrollup3::$2 ← (word) scrollup3::l2#2 + (byte) $28 -Alias (word) scrollup1::line#2 = (word) scrollup1::line#6 -Alias (word) scrollup1::line#3 = (word) scrollup1::line#5 (word) scrollup1::line#4 -Alias (byte) scrollup1::c#2 = (byte) scrollup1::c#3 -Alias (byte) scrollup2::l#2 = (byte) scrollup2::l#3 -Alias (byte*) scrollup2::line2#1 = (byte*) scrollup2::line2#4 -Alias (byte*) scrollup2::line1#1 = (byte*) scrollup2::line1#4 -Alias (word) scrollup3::line#2 = (word) scrollup3::line#3 (word) scrollup3::l2#0 -Alias (word) scrollup3::l2#2 = (word) scrollup3::l2#3 -Alias (byte) scrollup3::c#2 = (byte) scrollup3::c#3 -Alias (word) scrollup3::line#4 = (word) scrollup3::line#6 (word) scrollup3::line#5 +Alias scrollup1::line#2 = scrollup1::line#6 +Alias scrollup1::line#3 = scrollup1::line#5 scrollup1::line#4 +Alias scrollup1::c#2 = scrollup1::c#3 +Alias scrollup2::l#2 = scrollup2::l#3 +Alias scrollup2::line2#1 = scrollup2::line2#4 +Alias scrollup2::line1#1 = scrollup2::line1#4 +Alias scrollup3::line#2 = scrollup3::line#3 scrollup3::l2#0 +Alias scrollup3::l2#2 = scrollup3::l2#3 +Alias scrollup3::c#2 = scrollup3::c#3 +Alias scrollup3::line#4 = scrollup3::line#6 scrollup3::line#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) scrollup1::line#3 (word) scrollup1::line#2 Identical Phi Values (byte) scrollup2::l#2 (byte) scrollup2::l#4 @@ -347,8 +347,8 @@ Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment scrollup1::$5 Consolidated constant in assignment scrollup3::$3 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word~) scrollup1::$4 = (word~) scrollup1::$3 -Alias (word) scrollup3::l2#2 = (word~) scrollup3::$2 +Alias scrollup1::$4 = scrollup1::$3 +Alias scrollup3::l2#2 = scrollup3::$2 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting scrollup2::@5(between scrollup2::@3 and scrollup2::@1) Added new block during phi lifting scrollup2::@6(between scrollup2::@2 and scrollup2::@2) @@ -522,44 +522,44 @@ scrollup1::@3: scope:[scrollup1] from scrollup1::@2 VARIABLE REGISTER WEIGHTS (void()) main() (void()) scrollup1() -(word~) scrollup1::$2 67.33333333333333 -(word~) scrollup1::$4 202.0 -(byte*~) scrollup1::$5 101.0 -(byte*~) scrollup1::$6 202.0 +(word~) scrollup1::$2 6667.333333333333 +(word~) scrollup1::$4 20002.0 +(byte*~) scrollup1::$5 10001.0 +(byte*~) scrollup1::$6 20002.0 (byte) scrollup1::c -(byte) scrollup1::c#1 202.0 -(byte) scrollup1::c#2 72.14285714285714 +(byte) scrollup1::c#1 20002.0 +(byte) scrollup1::c#2 7143.571428571429 (word) scrollup1::line -(word) scrollup1::line#1 22.0 -(word) scrollup1::line#2 23.5 +(word) scrollup1::line#1 2002.0 +(word) scrollup1::line#2 2300.5 (void()) scrollup2() (byte) scrollup2::c -(byte) scrollup2::c#1 151.5 -(byte) scrollup2::c#2 50.5 +(byte) scrollup2::c#1 15001.5 +(byte) scrollup2::c#2 5000.5 (byte) scrollup2::l -(byte) scrollup2::l#1 16.5 -(byte) scrollup2::l#4 3.142857142857143 +(byte) scrollup2::l#1 1501.5 +(byte) scrollup2::l#4 286.0 (byte*) scrollup2::line1 -(byte*) scrollup2::line1#1 35.5 -(byte*) scrollup2::line1#2 157.0 -(byte*) scrollup2::line1#3 22.0 +(byte*) scrollup2::line1#1 3500.5 +(byte*) scrollup2::line1#2 15502.0 +(byte*) scrollup2::line1#3 2002.0 (byte*) scrollup2::line2 -(byte*) scrollup2::line2#1 42.599999999999994 -(byte*) scrollup2::line2#2 104.66666666666666 -(byte*) scrollup2::line2#3 22.0 +(byte*) scrollup2::line2#1 4200.6 +(byte*) scrollup2::line2#2 10334.666666666666 +(byte*) scrollup2::line2#3 2002.0 (void()) scrollup3() -(byte*~) scrollup3::$3 101.0 -(byte*~) scrollup3::$4 202.0 +(byte*~) scrollup3::$3 10001.0 +(byte*~) scrollup3::$4 20002.0 (byte) scrollup3::c -(byte) scrollup3::c#1 202.0 -(byte) scrollup3::c#2 50.5 +(byte) scrollup3::c#1 20002.0 +(byte) scrollup3::c#2 5000.5 (word) scrollup3::l2 -(word) scrollup3::l2#1 101.0 -(word) scrollup3::l2#2 83.0 -(word) scrollup3::l2#4 22.0 +(word) scrollup3::l2#1 10001.0 +(word) scrollup3::l2#2 8201.0 +(word) scrollup3::l2#4 2002.0 (word) scrollup3::line -(word) scrollup3::line#1 22.0 -(word) scrollup3::line#2 4.4 +(word) scrollup3::line#1 2002.0 +(word) scrollup3::line#2 400.4 Initial phi equivalence classes [ scrollup3::line#2 scrollup3::line#1 ] @@ -957,42 +957,42 @@ scrollup1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2 [ scrollup3::line#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 ] ) always clobbers reg byte a -Statement [15] (word) scrollup3::l2#4 ← (word) scrollup3::line#2 [ scrollup3::line#2 scrollup3::l2#4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::l2#4 ] ) always clobbers reg byte a -Statement [18] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28 [ scrollup3::line#1 ] ( main:2::scrollup3:9 [ scrollup3::line#1 ] ) always clobbers reg byte a -Statement [19] (byte*~) scrollup3::$3 ← (const byte*) screen+(byte) $28 + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ) always clobbers reg byte a +Statement [13] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2 [ scrollup3::line#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 ] { } ) always clobbers reg byte a +Statement [15] (word) scrollup3::l2#4 ← (word) scrollup3::line#2 [ scrollup3::line#2 scrollup3::l2#4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::l2#4 ] { } ) always clobbers reg byte a +Statement [18] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28 [ scrollup3::line#1 ] ( main:2::scrollup3:9 [ scrollup3::line#1 ] { } ) always clobbers reg byte a +Statement [19] (byte*~) scrollup3::$3 ← (const byte*) screen+(byte) $28 + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ scrollup3::c#2 scrollup3::c#1 ] -Statement [20] (byte*~) scrollup3::$4 ← (const byte*) screen + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ) always clobbers reg byte a -Statement [21] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3) [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ) always clobbers reg byte a reg byte y +Statement [20] (byte*~) scrollup3::$4 ← (const byte*) screen + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] { } ) always clobbers reg byte a +Statement [21] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3) [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ scrollup3::c#2 scrollup3::c#1 ] -Statement [27] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ( main:2::scrollup2:7 [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ) always clobbers reg byte a reg byte y +Statement [27] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ( main:2::scrollup2:7 [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:7 [ scrollup2::l#4 scrollup2::l#1 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ scrollup2::l#4 scrollup2::l#1 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ scrollup2::c#2 scrollup2::c#1 ] Removing always clobbered register reg byte y as potential for zp[1]:12 [ scrollup2::c#2 scrollup2::c#1 ] -Statement [37] if((word) scrollup1::line#2<(word)(number) $28*(number) $18) goto scrollup1::@2 [ scrollup1::line#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 ] ) always clobbers reg byte a -Statement [41] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28 [ scrollup1::line#1 ] ( main:2::scrollup1:5 [ scrollup1::line#1 ] ) always clobbers reg byte a -Statement [42] (word~) scrollup1::$2 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ) always clobbers reg byte a +Statement [37] if((word) scrollup1::line#2<(word)(number) $28*(number) $18) goto scrollup1::@2 [ scrollup1::line#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 ] { } ) always clobbers reg byte a +Statement [41] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28 [ scrollup1::line#1 ] ( main:2::scrollup1:5 [ scrollup1::line#1 ] { } ) always clobbers reg byte a +Statement [42] (word~) scrollup1::$2 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:15 [ scrollup1::c#2 scrollup1::c#1 ] -Statement [43] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ) always clobbers reg byte a -Statement [44] (byte*~) scrollup1::$5 ← (const byte*) screen+(byte) $28 + (word~) scrollup1::$4 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ) always clobbers reg byte a -Statement [45] (byte*~) scrollup1::$6 ← (const byte*) screen + (word~) scrollup1::$2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ) always clobbers reg byte a -Statement [46] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5) [ scrollup1::line#2 scrollup1::c#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 ] ) always clobbers reg byte a reg byte y +Statement [43] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] { } ) always clobbers reg byte a +Statement [44] (byte*~) scrollup1::$5 ← (const byte*) screen+(byte) $28 + (word~) scrollup1::$4 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] { } ) always clobbers reg byte a +Statement [45] (byte*~) scrollup1::$6 ← (const byte*) screen + (word~) scrollup1::$2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] { } ) always clobbers reg byte a +Statement [46] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5) [ scrollup1::line#2 scrollup1::c#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:15 [ scrollup1::c#2 scrollup1::c#1 ] -Statement [13] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2 [ scrollup3::line#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 ] ) always clobbers reg byte a -Statement [15] (word) scrollup3::l2#4 ← (word) scrollup3::line#2 [ scrollup3::line#2 scrollup3::l2#4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::l2#4 ] ) always clobbers reg byte a -Statement [18] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28 [ scrollup3::line#1 ] ( main:2::scrollup3:9 [ scrollup3::line#1 ] ) always clobbers reg byte a -Statement [19] (byte*~) scrollup3::$3 ← (const byte*) screen+(byte) $28 + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ) always clobbers reg byte a -Statement [20] (byte*~) scrollup3::$4 ← (const byte*) screen + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ) always clobbers reg byte a -Statement [21] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3) [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ) always clobbers reg byte a reg byte y -Statement [27] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ( main:2::scrollup2:7 [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ) always clobbers reg byte a reg byte y -Statement [37] if((word) scrollup1::line#2<(word)(number) $28*(number) $18) goto scrollup1::@2 [ scrollup1::line#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 ] ) always clobbers reg byte a -Statement [41] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28 [ scrollup1::line#1 ] ( main:2::scrollup1:5 [ scrollup1::line#1 ] ) always clobbers reg byte a -Statement [42] (word~) scrollup1::$2 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ) always clobbers reg byte a -Statement [43] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ) always clobbers reg byte a -Statement [44] (byte*~) scrollup1::$5 ← (const byte*) screen+(byte) $28 + (word~) scrollup1::$4 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ) always clobbers reg byte a -Statement [45] (byte*~) scrollup1::$6 ← (const byte*) screen + (word~) scrollup1::$2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ) always clobbers reg byte a -Statement [46] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5) [ scrollup1::line#2 scrollup1::c#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 ] ) always clobbers reg byte a reg byte y +Statement [13] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2 [ scrollup3::line#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 ] { } ) always clobbers reg byte a +Statement [15] (word) scrollup3::l2#4 ← (word) scrollup3::line#2 [ scrollup3::line#2 scrollup3::l2#4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::l2#4 ] { } ) always clobbers reg byte a +Statement [18] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28 [ scrollup3::line#1 ] ( main:2::scrollup3:9 [ scrollup3::line#1 ] { } ) always clobbers reg byte a +Statement [19] (byte*~) scrollup3::$3 ← (const byte*) screen+(byte) $28 + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 ] { } ) always clobbers reg byte a +Statement [20] (byte*~) scrollup3::$4 ← (const byte*) screen + (word) scrollup3::l2#2 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 scrollup3::$3 scrollup3::$4 ] { } ) always clobbers reg byte a +Statement [21] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3) [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] ( main:2::scrollup3:9 [ scrollup3::line#2 scrollup3::c#2 scrollup3::l2#2 ] { } ) always clobbers reg byte a reg byte y +Statement [27] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] ( main:2::scrollup2:7 [ scrollup2::l#4 scrollup2::line2#2 scrollup2::line1#2 scrollup2::c#2 ] { } ) always clobbers reg byte a reg byte y +Statement [37] if((word) scrollup1::line#2<(word)(number) $28*(number) $18) goto scrollup1::@2 [ scrollup1::line#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 ] { } ) always clobbers reg byte a +Statement [41] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28 [ scrollup1::line#1 ] ( main:2::scrollup1:5 [ scrollup1::line#1 ] { } ) always clobbers reg byte a +Statement [42] (word~) scrollup1::$2 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 ] { } ) always clobbers reg byte a +Statement [43] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$4 ] { } ) always clobbers reg byte a +Statement [44] (byte*~) scrollup1::$5 ← (const byte*) screen+(byte) $28 + (word~) scrollup1::$4 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$2 scrollup1::$5 ] { } ) always clobbers reg byte a +Statement [45] (byte*~) scrollup1::$6 ← (const byte*) screen + (word~) scrollup1::$2 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 scrollup1::$5 scrollup1::$6 ] { } ) always clobbers reg byte a +Statement [46] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5) [ scrollup1::line#2 scrollup1::c#2 ] ( main:2::scrollup1:5 [ scrollup1::line#2 scrollup1::c#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ scrollup3::line#2 scrollup3::line#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ scrollup3::c#2 scrollup3::c#1 ] : zp[1]:4 , reg byte x , Potential registers zp[2]:5 [ scrollup3::l2#2 scrollup3::l2#4 scrollup3::l2#1 ] : zp[2]:5 , @@ -1010,9 +1010,9 @@ Potential registers zp[2]:24 [ scrollup1::$5 ] : zp[2]:24 , Potential registers zp[2]:26 [ scrollup1::$6 ] : zp[2]:26 , REGISTER UPLIFT SCOPES -Uplift Scope [scrollup1] 274.14: zp[1]:15 [ scrollup1::c#2 scrollup1::c#1 ] 202: zp[2]:22 [ scrollup1::$4 ] 202: zp[2]:26 [ scrollup1::$6 ] 101: zp[2]:24 [ scrollup1::$5 ] 67.33: zp[2]:20 [ scrollup1::$2 ] 45.5: zp[2]:13 [ scrollup1::line#2 scrollup1::line#1 ] -Uplift Scope [scrollup3] 252.5: zp[1]:4 [ scrollup3::c#2 scrollup3::c#1 ] 206: zp[2]:5 [ scrollup3::l2#2 scrollup3::l2#4 scrollup3::l2#1 ] 202: zp[2]:18 [ scrollup3::$4 ] 101: zp[2]:16 [ scrollup3::$3 ] 26.4: zp[2]:2 [ scrollup3::line#2 scrollup3::line#1 ] -Uplift Scope [scrollup2] 214.5: zp[2]:10 [ scrollup2::line1#2 scrollup2::line1#3 scrollup2::line1#1 ] 202: zp[1]:12 [ scrollup2::c#2 scrollup2::c#1 ] 169.27: zp[2]:8 [ scrollup2::line2#2 scrollup2::line2#3 scrollup2::line2#1 ] 19.64: zp[1]:7 [ scrollup2::l#4 scrollup2::l#1 ] +Uplift Scope [scrollup1] 27,145.57: zp[1]:15 [ scrollup1::c#2 scrollup1::c#1 ] 20,002: zp[2]:22 [ scrollup1::$4 ] 20,002: zp[2]:26 [ scrollup1::$6 ] 10,001: zp[2]:24 [ scrollup1::$5 ] 6,667.33: zp[2]:20 [ scrollup1::$2 ] 4,302.5: zp[2]:13 [ scrollup1::line#2 scrollup1::line#1 ] +Uplift Scope [scrollup3] 25,002.5: zp[1]:4 [ scrollup3::c#2 scrollup3::c#1 ] 20,204: zp[2]:5 [ scrollup3::l2#2 scrollup3::l2#4 scrollup3::l2#1 ] 20,002: zp[2]:18 [ scrollup3::$4 ] 10,001: zp[2]:16 [ scrollup3::$3 ] 2,402.4: zp[2]:2 [ scrollup3::line#2 scrollup3::line#1 ] +Uplift Scope [scrollup2] 21,004.5: zp[2]:10 [ scrollup2::line1#2 scrollup2::line1#3 scrollup2::line1#1 ] 20,002: zp[1]:12 [ scrollup2::c#2 scrollup2::c#1 ] 16,537.27: zp[2]:8 [ scrollup2::line2#2 scrollup2::line2#3 scrollup2::line2#1 ] 1,787.5: zp[1]:7 [ scrollup2::l#4 scrollup2::l#1 ] Uplift Scope [main] Uplift Scope [] @@ -1453,43 +1453,43 @@ FINAL SYMBOL TABLE (label) main::@return (const byte*) screen = (byte*) 1024 (void()) scrollup1() -(word~) scrollup1::$2 zp[2]:7 67.33333333333333 -(word~) scrollup1::$4 zp[2]:9 202.0 -(byte*~) scrollup1::$5 zp[2]:9 101.0 -(byte*~) scrollup1::$6 zp[2]:7 202.0 +(word~) scrollup1::$2 zp[2]:7 6667.333333333333 +(word~) scrollup1::$4 zp[2]:9 20002.0 +(byte*~) scrollup1::$5 zp[2]:9 10001.0 +(byte*~) scrollup1::$6 zp[2]:7 20002.0 (label) scrollup1::@1 (label) scrollup1::@2 (label) scrollup1::@3 (label) scrollup1::@4 (label) scrollup1::@return (byte) scrollup1::c -(byte) scrollup1::c#1 reg byte x 202.0 -(byte) scrollup1::c#2 reg byte x 72.14285714285714 +(byte) scrollup1::c#1 reg byte x 20002.0 +(byte) scrollup1::c#2 reg byte x 7143.571428571429 (word) scrollup1::line -(word) scrollup1::line#1 line zp[2]:5 22.0 -(word) scrollup1::line#2 line zp[2]:5 23.5 +(word) scrollup1::line#1 line zp[2]:5 2002.0 +(word) scrollup1::line#2 line zp[2]:5 2300.5 (void()) scrollup2() (label) scrollup2::@1 (label) scrollup2::@2 (label) scrollup2::@3 (label) scrollup2::@return (byte) scrollup2::c -(byte) scrollup2::c#1 reg byte x 151.5 -(byte) scrollup2::c#2 reg byte x 50.5 +(byte) scrollup2::c#1 reg byte x 15001.5 +(byte) scrollup2::c#2 reg byte x 5000.5 (byte) scrollup2::l -(byte) scrollup2::l#1 l zp[1]:2 16.5 -(byte) scrollup2::l#4 l zp[1]:2 3.142857142857143 +(byte) scrollup2::l#1 l zp[1]:2 1501.5 +(byte) scrollup2::l#4 l zp[1]:2 286.0 (byte*) scrollup2::line1 -(byte*) scrollup2::line1#1 line1 zp[2]:3 35.5 -(byte*) scrollup2::line1#2 line1 zp[2]:3 157.0 -(byte*) scrollup2::line1#3 line1 zp[2]:3 22.0 +(byte*) scrollup2::line1#1 line1 zp[2]:3 3500.5 +(byte*) scrollup2::line1#2 line1 zp[2]:3 15502.0 +(byte*) scrollup2::line1#3 line1 zp[2]:3 2002.0 (byte*) scrollup2::line2 -(byte*) scrollup2::line2#1 line2 zp[2]:9 42.599999999999994 -(byte*) scrollup2::line2#2 line2 zp[2]:9 104.66666666666666 -(byte*) scrollup2::line2#3 line2 zp[2]:9 22.0 +(byte*) scrollup2::line2#1 line2 zp[2]:9 4200.6 +(byte*) scrollup2::line2#2 line2 zp[2]:9 10334.666666666666 +(byte*) scrollup2::line2#3 line2 zp[2]:9 2002.0 (void()) scrollup3() -(byte*~) scrollup3::$3 zp[2]:5 101.0 -(byte*~) scrollup3::$4 zp[2]:7 202.0 +(byte*~) scrollup3::$3 zp[2]:5 10001.0 +(byte*~) scrollup3::$4 zp[2]:7 20002.0 (label) scrollup3::@1 (label) scrollup3::@2 (label) scrollup3::@3 @@ -1497,15 +1497,15 @@ FINAL SYMBOL TABLE (label) scrollup3::@5 (label) scrollup3::@return (byte) scrollup3::c -(byte) scrollup3::c#1 reg byte x 202.0 -(byte) scrollup3::c#2 reg byte x 50.5 +(byte) scrollup3::c#1 reg byte x 20002.0 +(byte) scrollup3::c#2 reg byte x 5000.5 (word) scrollup3::l2 -(word) scrollup3::l2#1 l2 zp[2]:3 101.0 -(word) scrollup3::l2#2 l2 zp[2]:3 83.0 -(word) scrollup3::l2#4 l2 zp[2]:3 22.0 +(word) scrollup3::l2#1 l2 zp[2]:3 10001.0 +(word) scrollup3::l2#2 l2 zp[2]:3 8201.0 +(word) scrollup3::l2#4 l2 zp[2]:3 2002.0 (word) scrollup3::line -(word) scrollup3::line#1 line zp[2]:9 22.0 -(word) scrollup3::line#2 line zp[2]:9 4.4 +(word) scrollup3::line#1 line zp[2]:9 2002.0 +(word) scrollup3::line#2 line zp[2]:9 400.4 reg byte x [ scrollup3::c#2 scrollup3::c#1 ] zp[1]:2 [ scrollup2::l#4 scrollup2::l#1 ] diff --git a/src/test/ref/test-scroll-up.sym b/src/test/ref/test-scroll-up.sym index e5df7aa76..85b7b8ab0 100644 --- a/src/test/ref/test-scroll-up.sym +++ b/src/test/ref/test-scroll-up.sym @@ -7,43 +7,43 @@ (label) main::@return (const byte*) screen = (byte*) 1024 (void()) scrollup1() -(word~) scrollup1::$2 zp[2]:7 67.33333333333333 -(word~) scrollup1::$4 zp[2]:9 202.0 -(byte*~) scrollup1::$5 zp[2]:9 101.0 -(byte*~) scrollup1::$6 zp[2]:7 202.0 +(word~) scrollup1::$2 zp[2]:7 6667.333333333333 +(word~) scrollup1::$4 zp[2]:9 20002.0 +(byte*~) scrollup1::$5 zp[2]:9 10001.0 +(byte*~) scrollup1::$6 zp[2]:7 20002.0 (label) scrollup1::@1 (label) scrollup1::@2 (label) scrollup1::@3 (label) scrollup1::@4 (label) scrollup1::@return (byte) scrollup1::c -(byte) scrollup1::c#1 reg byte x 202.0 -(byte) scrollup1::c#2 reg byte x 72.14285714285714 +(byte) scrollup1::c#1 reg byte x 20002.0 +(byte) scrollup1::c#2 reg byte x 7143.571428571429 (word) scrollup1::line -(word) scrollup1::line#1 line zp[2]:5 22.0 -(word) scrollup1::line#2 line zp[2]:5 23.5 +(word) scrollup1::line#1 line zp[2]:5 2002.0 +(word) scrollup1::line#2 line zp[2]:5 2300.5 (void()) scrollup2() (label) scrollup2::@1 (label) scrollup2::@2 (label) scrollup2::@3 (label) scrollup2::@return (byte) scrollup2::c -(byte) scrollup2::c#1 reg byte x 151.5 -(byte) scrollup2::c#2 reg byte x 50.5 +(byte) scrollup2::c#1 reg byte x 15001.5 +(byte) scrollup2::c#2 reg byte x 5000.5 (byte) scrollup2::l -(byte) scrollup2::l#1 l zp[1]:2 16.5 -(byte) scrollup2::l#4 l zp[1]:2 3.142857142857143 +(byte) scrollup2::l#1 l zp[1]:2 1501.5 +(byte) scrollup2::l#4 l zp[1]:2 286.0 (byte*) scrollup2::line1 -(byte*) scrollup2::line1#1 line1 zp[2]:3 35.5 -(byte*) scrollup2::line1#2 line1 zp[2]:3 157.0 -(byte*) scrollup2::line1#3 line1 zp[2]:3 22.0 +(byte*) scrollup2::line1#1 line1 zp[2]:3 3500.5 +(byte*) scrollup2::line1#2 line1 zp[2]:3 15502.0 +(byte*) scrollup2::line1#3 line1 zp[2]:3 2002.0 (byte*) scrollup2::line2 -(byte*) scrollup2::line2#1 line2 zp[2]:9 42.599999999999994 -(byte*) scrollup2::line2#2 line2 zp[2]:9 104.66666666666666 -(byte*) scrollup2::line2#3 line2 zp[2]:9 22.0 +(byte*) scrollup2::line2#1 line2 zp[2]:9 4200.6 +(byte*) scrollup2::line2#2 line2 zp[2]:9 10334.666666666666 +(byte*) scrollup2::line2#3 line2 zp[2]:9 2002.0 (void()) scrollup3() -(byte*~) scrollup3::$3 zp[2]:5 101.0 -(byte*~) scrollup3::$4 zp[2]:7 202.0 +(byte*~) scrollup3::$3 zp[2]:5 10001.0 +(byte*~) scrollup3::$4 zp[2]:7 20002.0 (label) scrollup3::@1 (label) scrollup3::@2 (label) scrollup3::@3 @@ -51,15 +51,15 @@ (label) scrollup3::@5 (label) scrollup3::@return (byte) scrollup3::c -(byte) scrollup3::c#1 reg byte x 202.0 -(byte) scrollup3::c#2 reg byte x 50.5 +(byte) scrollup3::c#1 reg byte x 20002.0 +(byte) scrollup3::c#2 reg byte x 5000.5 (word) scrollup3::l2 -(word) scrollup3::l2#1 l2 zp[2]:3 101.0 -(word) scrollup3::l2#2 l2 zp[2]:3 83.0 -(word) scrollup3::l2#4 l2 zp[2]:3 22.0 +(word) scrollup3::l2#1 l2 zp[2]:3 10001.0 +(word) scrollup3::l2#2 l2 zp[2]:3 8201.0 +(word) scrollup3::l2#4 l2 zp[2]:3 2002.0 (word) scrollup3::line -(word) scrollup3::line#1 line zp[2]:9 22.0 -(word) scrollup3::line#2 line zp[2]:9 4.4 +(word) scrollup3::line#1 line zp[2]:9 2002.0 +(word) scrollup3::line#2 line zp[2]:9 400.4 reg byte x [ scrollup3::c#2 scrollup3::c#1 ] zp[1]:2 [ scrollup2::l#4 scrollup2::l#1 ] diff --git a/src/test/ref/test-signed-word-minus-byte.asm b/src/test/ref/test-signed-word-minus-byte.asm index 017b84921..e76974bc6 100644 --- a/src/test/ref/test-signed-word-minus-byte.asm +++ b/src/test/ref/test-signed-word-minus-byte.asm @@ -2,14 +2,16 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_line_cursor = 4 - .label print_char_cursor = 6 + .label print_line_cursor = 5 + .label print_char_cursor = 7 main: { .label w2 = $b .label w1 = 2 + .label i = 4 // print_cls() jsr print_cls - ldx #0 + lda #0 + sta.z i lda #<$400 sta.z print_line_cursor lda #>$400 @@ -57,8 +59,9 @@ main: { // print_ln() jsr print_ln // for( byte i: 0..10 ) - inx - cpx #$b + inc.z i + lda #$b + cmp.z i bne __b6 // } rts @@ -140,22 +143,19 @@ print_char: { print_word: { .label w = 9 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -167,10 +167,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts diff --git a/src/test/ref/test-signed-word-minus-byte.log b/src/test/ref/test-signed-word-minus-byte.log index 8628122e7..5015b6929 100644 --- a/src/test/ref/test-signed-word-minus-byte.log +++ b/src/test/ref/test-signed-word-minus-byte.log @@ -631,48 +631,48 @@ Inferred type updated to signed word in (snumber~) main::$1 ← (signed word) ma Inferred type updated to signed word in (snumber~) main::$2 ← (signed word) main::w2#0 - (signed byte) $29 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 -Alias (void*) memset::str#2 = (void*) memset::str#3 -Alias (word) memset::num#1 = (word) memset::num#2 -Alias (byte) memset::c#3 = (byte) memset::c#4 -Alias (byte*) memset::end#0 = (byte*~) memset::$3 -Alias (byte) memset::c#1 = (byte) memset::c#2 -Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 -Alias (byte*) memset::end#1 = (byte*) memset::end#2 -Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#20 (byte*) print_char_cursor#54 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#25 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#48 -Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#3 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#29 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#32 (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#35 (byte*) print_char_cursor#12 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#15 (byte*) print_char_cursor#38 (byte*) print_line_cursor#4 (byte*) print_char_cursor#16 -Alias (signed word) main::w1#0 = (signed word) main::w1#3 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#39 -Alias (signed word) main::w2#0 = (signed word~) main::$1 (signed word) main::w2#2 (signed word) main::w2#1 -Alias (signed word) main::w1#1 = (signed word~) main::$2 (signed word) main::w1#7 (signed word) main::w1#6 (signed word) main::w1#5 (signed word) main::w1#4 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#23 (byte*) print_line_cursor#21 -Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#6 (byte) main::i#4 (byte) main::i#3 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#42 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#15 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#44 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#45 +Alias memset::return#0 = memset::str#1 memset::return#3 memset::return#1 +Alias memset::str#2 = memset::str#3 +Alias memset::num#1 = memset::num#2 +Alias memset::c#3 = memset::c#4 +Alias memset::end#0 = memset::$3 +Alias memset::c#1 = memset::c#2 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#4 = memset::str#5 +Alias print_line_cursor#0 = print_screen#0 print_char_cursor#0 print_line_cursor#20 print_char_cursor#54 print_screen#4 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#10 print_char_cursor#1 print_line_cursor#11 print_char_cursor#25 print_line_cursor#2 print_char_cursor#2 +Alias print_char_cursor#47 = print_char_cursor#55 print_char_cursor#48 +Alias print_sword::w#3 = print_sword::w#6 print_sword::w#4 print_sword::w#8 print_sword::w#7 +Alias print_char_cursor#26 = print_char_cursor#3 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#27 = print_char_cursor#4 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#28 = print_char_cursor#5 print_char_cursor#29 print_char_cursor#6 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#1 = print_word::w#2 +Alias print_char_cursor#30 = print_char_cursor#7 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#31 = print_char_cursor#8 print_char_cursor#32 print_char_cursor#9 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#10 = print_char_cursor#33 +Alias print_char_cursor#11 = print_char_cursor#34 print_char_cursor#35 print_char_cursor#12 +Alias print_char_cursor#13 = print_char_cursor#37 print_char_cursor#14 +Alias print_line_cursor#12 = print_screen#2 print_screen#1 print_line_cursor#3 print_char_cursor#15 print_char_cursor#38 print_line_cursor#4 print_char_cursor#16 +Alias main::w1#0 = main::w1#3 +Alias print_line_cursor#13 = print_line_cursor#5 +Alias print_char_cursor#17 = print_char_cursor#39 +Alias main::w2#0 = main::$1 main::w2#2 main::w2#1 +Alias main::w1#1 = main::$2 main::w1#7 main::w1#6 main::w1#5 main::w1#4 +Alias print_line_cursor#19 = print_line_cursor#22 print_line_cursor#23 print_line_cursor#21 +Alias main::i#2 = main::i#5 main::i#6 main::i#4 main::i#3 +Alias print_char_cursor#18 = print_char_cursor#40 +Alias print_char_cursor#19 = print_char_cursor#41 +Alias print_char_cursor#20 = print_char_cursor#42 +Alias print_line_cursor#14 = print_line_cursor#6 print_line_cursor#15 print_line_cursor#7 +Alias print_char_cursor#21 = print_char_cursor#43 print_char_cursor#44 print_char_cursor#22 +Alias print_line_cursor#16 = print_line_cursor#8 +Alias print_char_cursor#23 = print_char_cursor#45 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 Identical Phi Values (void*) memset::str#2 (void*) memset::str#0 @@ -1005,57 +1005,57 @@ memset::@2: scope:[memset] from memset::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 2.0 +(byte) main::i#1 101.0 +(byte) main::i#2 18.363636363636363 (signed word) main::w1 -(signed word) main::w1#1 2.75 -(signed word) main::w1#2 22.0 +(signed word) main::w1#1 25.25 +(signed word) main::w1#2 202.0 (signed word) main::w2 -(signed word) main::w2#0 5.5 +(signed word) main::w2#0 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst -(byte*) memset::dst#1 22.0 -(byte*) memset::dst#2 14.666666666666666 +(byte*) memset::dst#1 20002.0 +(byte*) memset::dst#2 13334.666666666666 (byte*) memset::end (word) memset::num (void*) memset::return (void*) memset::str (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 55001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#3 200002.0 +(byte) print_char::ch#5 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 4.03125 -(byte*) print_char_cursor#36 11.5 -(byte*) print_char_cursor#47 6.5 -(byte*) print_char_cursor#53 5.5 -(byte*) print_char_cursor#63 22.0 +(byte*) print_char_cursor#13 40631.4375 +(byte*) print_char_cursor#36 1101053.5 +(byte*) print_char_cursor#47 551.0 +(byte*) print_char_cursor#53 50.5 +(byte*) print_char_cursor#63 202.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#19 1.1818181818181819 -(byte*) print_line_cursor#9 204.0 +(byte*) print_line_cursor#1 42886.42857142857 +(byte*) print_line_cursor#19 100.18181818181819 +(byte*) print_line_cursor#9 201003.0 (void()) print_ln() (byte*) print_screen (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 22.0 -(signed word) print_sword::w#2 22.0 -(signed word) print_sword::w#3 4.666666666666666 -(signed word) print_sword::w#5 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 202.0 +(signed word) print_sword::w#2 202.0 +(signed word) print_sword::w#3 534.1666666666667 +(signed word) print_sword::w#5 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 2.0 +(word) print_word::w#0 7001.0 Initial phi equivalence classes [ main::w1#2 main::w1#1 ] @@ -1507,44 +1507,40 @@ memset: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a +Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a -Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [20] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] ) always clobbers reg byte a -Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] ) always clobbers reg byte y +Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a +Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a +Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [20] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] { { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#36 = print_char_cursor#47 print_char_cursor#53 } } main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } } main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#36 = print_char_cursor#47 print_char_cursor#53 } } main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } } main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [59] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [61] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a -Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a -Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [20] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] ) always clobbers reg byte a -Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] ) always clobbers reg byte y -Statement [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [59] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] ) always clobbers reg byte a -Statement [61] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [59] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [61] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a +Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a +Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } ) always clobbers reg byte a +Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [20] (byte*) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#63 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } } main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 } } ) always clobbers reg byte a +Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] { { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#36 = print_char_cursor#47 print_char_cursor#53 } } main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } } main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#36 = print_char_cursor#47 print_char_cursor#53 } } main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } } main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } ) always clobbers reg byte y +Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = print_sword::w#3 main::w1#1 } { print_char_cursor#47 = print_char_cursor#53 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#36 } } main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#2 = print_sword::w#3 main::w2#0 } { print_char_cursor#13 = print_char_cursor#47 print_char_cursor#36 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } } ) always clobbers reg byte a +Statement [59] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [61] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:55 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::w1#2 main::w1#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , Potential registers zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp[2]:5 , @@ -1559,34 +1555,32 @@ Potential registers zp[1]:19 [ print_byte::$0 ] : zp[1]:19 , reg byte a , reg by Potential registers zp[1]:20 [ print_byte::$2 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.61: zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 49.53: zp[2]:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] -Uplift Scope [print_sword] 56.67: zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplift Scope [main] 24.75: zp[2]:2 [ main::w1#2 main::w1#1 ] 13: zp[1]:4 [ main::i#2 main::i#1 ] 5.5: zp[2]:15 [ main::w2#0 ] -Uplift Scope [memset] 36.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [print_byte] 10: zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:19 [ print_byte::$0 ] 4: zp[1]:20 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:9 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_word] 2: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [print_char] 1,600,007: zp[1]:9 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [] 1,142,488.44: zp[2]:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] 243,989.61: zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +Uplift Scope [print_byte] 200,002: zp[1]:19 [ print_byte::$0 ] 200,002: zp[1]:20 [ print_byte::$2 ] 95,005: zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [memset] 33,336.67: zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplift Scope [print_word] 7,001: zp[2]:17 [ print_word::w#0 ] +Uplift Scope [print_sword] 4,942.17: zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplift Scope [main] 227.25: zp[2]:2 [ main::w1#2 main::w1#1 ] 119.36: zp[1]:4 [ main::i#2 main::i#1 ] 50.5: zp[2]:15 [ main::w2#0 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 6517 combination zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp[2]:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] -Uplifting [print_sword] best 6517 combination zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplifting [main] best 6427 combination zp[2]:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:15 [ main::w2#0 ] -Uplifting [memset] best 6427 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] -Uplifting [print_byte] best 6419 combination zp[1]:12 [ 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 6401 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_word] best 6401 combination zp[2]:17 [ print_word::w#0 ] -Uplifting [RADIX] best 6401 combination -Uplifting [print_ln] best 6401 combination -Uplifting [print_cls] best 6401 combination -Attempting to uplift remaining variables inzp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6401 combination zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_char] best 6499 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [] best 6499 combination zp[2]:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +Uplifting [print_byte] best 6481 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [memset] best 6481 combination zp[2]:13 [ memset::dst#2 memset::dst#1 ] +Uplifting [print_word] best 6481 combination zp[2]:17 [ print_word::w#0 ] +Uplifting [print_sword] best 6481 combination zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [main] best 6481 combination zp[2]:2 [ main::w1#2 main::w1#1 ] zp[1]:4 [ main::i#2 main::i#1 ] zp[2]:15 [ main::w2#0 ] +Uplifting [RADIX] best 6481 combination +Uplifting [print_ln] best 6481 combination +Uplifting [print_cls] best 6481 combination +Attempting to uplift remaining variables inzp[1]:4 [ main::i#2 main::i#1 ] +Uplifting [main] best 6481 combination zp[1]:4 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp[2]:17 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:13 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] ] -Allocated (was zp[2]:5) zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated (was zp[2]:10) zp[2]:6 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] -Allocated (was zp[1]:12) zp[1]:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated (was zp[2]:10) zp[2]:7 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] Allocated (was zp[2]:13) zp[2]:9 [ memset::dst#2 memset::dst#1 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] Allocated (was zp[2]:15) zp[2]:11 [ main::w2#0 ] @@ -1598,8 +1592,8 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 4 - .label print_char_cursor = 6 + .label print_line_cursor = 5 + .label print_char_cursor = 7 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] @@ -1620,14 +1614,16 @@ __bend: main: { .label w2 = $b .label w1 = 2 + .label i = 4 // [5] call print_cls // [54] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [6] phi (byte*) print_line_cursor#19 = (byte*) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor @@ -1711,10 +1707,11 @@ main: { jmp __b5 // main::@5 __b5: - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [18] if((byte) main::i#1!=(byte) $b) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [18] if((byte) main::i#1!=(byte) $b) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + lda #$b + cmp.z i bne __b6 jmp __breturn // main::@return @@ -1852,9 +1849,8 @@ print_char: { // print_word(word zp(9) w) print_word: { .label w = 9 - // [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [42] call print_byte // [46] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -1863,9 +1859,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + ldx.z w // [44] call print_byte // [46] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -1879,11 +1874,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(8) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 8 - // [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -1901,12 +1895,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [51] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [51] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [52] call print_char // [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -2080,13 +2073,13 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 2.0 +(byte) main::i#1 i zp[1]:4 101.0 +(byte) main::i#2 i zp[1]:4 18.363636363636363 (signed word) main::w1 -(signed word) main::w1#1 w1 zp[2]:2 2.75 -(signed word) main::w1#2 w1 zp[2]:2 22.0 +(signed word) main::w1#1 w1 zp[2]:2 25.25 +(signed word) main::w1#2 w1 zp[2]:2 202.0 (signed word) main::w2 -(signed word) main::w2#0 w2 zp[2]:11 5.5 +(signed word) main::w2#0 w2 zp[2]:11 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -2094,8 +2087,8 @@ FINAL SYMBOL TABLE (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:9 22.0 -(byte*) memset::dst#2 dst zp[2]:9 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:9 20002.0 +(byte*) memset::dst#2 dst zp[2]:9 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -2104,33 +2097,33 @@ FINAL SYMBOL TABLE (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:8 4.0 -(byte) print_byte::b#1 b zp[1]:8 4.0 -(byte) print_byte::b#2 b zp[1]:8 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 4.03125 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:6 11.5 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:6 6.5 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 5.5 -(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:7 40631.4375 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:7 1101053.5 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:7 551.0 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:7 50.5 +(byte*) print_char_cursor#63 print_char_cursor zp[2]:7 202.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:4 1.1818181818181819 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:4 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 42886.42857142857 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 100.18181818181819 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -2142,31 +2135,31 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:9 4.0 -(signed word) print_sword::w#1 w zp[2]:9 22.0 -(signed word) print_sword::w#2 w zp[2]:9 22.0 -(signed word) print_sword::w#3 w zp[2]:9 4.666666666666666 -(signed word) print_sword::w#5 w zp[2]:9 4.0 +(signed word) print_sword::w#0 w zp[2]:9 2002.0 +(signed word) print_sword::w#1 w zp[2]:9 202.0 +(signed word) print_sword::w#2 w zp[2]:9 202.0 +(signed word) print_sword::w#3 w zp[2]:9 534.1666666666667 +(signed word) print_sword::w#5 w zp[2]:9 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:9 2.0 +(word) print_word::w#0 w zp[2]:9 7001.0 zp[2]:2 [ main::w1#2 main::w1#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +zp[1]:4 [ main::i#2 main::i#1 ] +zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -zp[2]:6 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] -zp[1]:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:7 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:9 [ memset::dst#2 memset::dst#1 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] zp[2]:11 [ main::w2#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 5558 +Score: 5638 // File Comments // Tests subtracting bytes from signed words @@ -2175,8 +2168,8 @@ Score: 5558 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 4 - .label print_char_cursor = 6 + .label print_line_cursor = 5 + .label print_char_cursor = 7 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 @@ -2188,13 +2181,15 @@ Score: 5558 main: { .label w2 = $b .label w1 = 2 + .label i = 4 // print_cls() // [5] call print_cls // [54] phi from main to print_cls [phi:main->print_cls] jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] - // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [6] phi (byte*) print_line_cursor#19 = (byte*) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor @@ -2270,10 +2265,11 @@ main: { jsr print_ln // main::@5 // for( byte i: 0..10 ) - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [18] if((byte) main::i#1!=(byte) $b) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #$b + // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [18] if((byte) main::i#1!=(byte) $b) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + lda #$b + cmp.z i bne __b6 // main::@return // } @@ -2401,18 +2397,16 @@ print_char: { print_word: { .label w = 9 // print_byte(>w) - // [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [42] call print_byte // [46] phi from print_word to print_byte [phi:print_word->print_byte] // [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] // [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy @@ -2424,12 +2418,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp(8) b) +// print_byte(byte register(X) b) print_byte: { - .label b = 8 // b>>4 - // [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -2446,13 +2439,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [51] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [51] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [52] call print_char // [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy diff --git a/src/test/ref/test-signed-word-minus-byte.sym b/src/test/ref/test-signed-word-minus-byte.sym index bc204d922..35679bf1c 100644 --- a/src/test/ref/test-signed-word-minus-byte.sym +++ b/src/test/ref/test-signed-word-minus-byte.sym @@ -14,13 +14,13 @@ (label) main::@6 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 2.0 +(byte) main::i#1 i zp[1]:4 101.0 +(byte) main::i#2 i zp[1]:4 18.363636363636363 (signed word) main::w1 -(signed word) main::w1#1 w1 zp[2]:2 2.75 -(signed word) main::w1#2 w1 zp[2]:2 22.0 +(signed word) main::w1#1 w1 zp[2]:2 25.25 +(signed word) main::w1#2 w1 zp[2]:2 202.0 (signed word) main::w2 -(signed word) main::w2#0 w2 zp[2]:11 5.5 +(signed word) main::w2#0 w2 zp[2]:11 50.5 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (label) memset::@1 (label) memset::@2 @@ -28,8 +28,8 @@ (byte) memset::c (const byte) memset::c#0 c = (byte) ' ' (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:9 22.0 -(byte*) memset::dst#2 dst zp[2]:9 14.666666666666666 +(byte*) memset::dst#1 dst zp[2]:9 20002.0 +(byte*) memset::dst#2 dst zp[2]:9 13334.666666666666 (byte*) memset::end (const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0 (word) memset::num @@ -38,33 +38,33 @@ (void*) memset::str (const void*) memset::str#0 str = (void*)(byte*) 1024 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:8 4.0 -(byte) print_byte::b#1 b zp[1]:8 4.0 -(byte) print_byte::b#2 b zp[1]:8 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:6 4.03125 -(byte*) print_char_cursor#36 print_char_cursor zp[2]:6 11.5 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:6 6.5 -(byte*) print_char_cursor#53 print_char_cursor zp[2]:6 5.5 -(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:7 40631.4375 +(byte*) print_char_cursor#36 print_char_cursor zp[2]:7 1101053.5 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:7 551.0 +(byte*) print_char_cursor#53 print_char_cursor zp[2]:7 50.5 +(byte*) print_char_cursor#63 print_char_cursor zp[2]:7 202.0 (void()) print_cls() (label) print_cls::@return (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp[2]:4 1.1818181818181819 -(byte*) print_line_cursor#9 print_line_cursor zp[2]:4 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:5 42886.42857142857 +(byte*) print_line_cursor#19 print_line_cursor zp[2]:5 100.18181818181819 +(byte*) print_line_cursor#9 print_line_cursor zp[2]:5 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -76,24 +76,24 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:9 4.0 -(signed word) print_sword::w#1 w zp[2]:9 22.0 -(signed word) print_sword::w#2 w zp[2]:9 22.0 -(signed word) print_sword::w#3 w zp[2]:9 4.666666666666666 -(signed word) print_sword::w#5 w zp[2]:9 4.0 +(signed word) print_sword::w#0 w zp[2]:9 2002.0 +(signed word) print_sword::w#1 w zp[2]:9 202.0 +(signed word) print_sword::w#2 w zp[2]:9 202.0 +(signed word) print_sword::w#3 w zp[2]:9 534.1666666666667 +(signed word) print_sword::w#5 w zp[2]:9 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:9 2.0 +(word) print_word::w#0 w zp[2]:9 7001.0 zp[2]:2 [ main::w1#2 main::w1#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] +zp[1]:4 [ main::i#2 main::i#1 ] +zp[2]:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -zp[2]:6 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] -zp[1]:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[2]:7 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#63 print_char_cursor#13 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:9 [ memset::dst#2 memset::dst#1 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] zp[2]:11 [ main::w2#0 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] diff --git a/src/test/ref/test-word-size-arrays.log b/src/test/ref/test-word-size-arrays.log index 755b19e1f..11e426e3d 100644 --- a/src/test/ref/test-word-size-arrays.log +++ b/src/test/ref/test-word-size-arrays.log @@ -144,11 +144,11 @@ Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to word in (unumber~) main::$4 ← (word~) main::$3 + (byte) $28 -Alias (word) main::line#10 = (word) main::line#9 (word) main::line#3 -Alias (word) main::line#4 = (word) main::line#7 (word) main::line#5 -Alias (byte) main::c#2 = (byte) main::c#3 -Alias (word) main::line#6 = (word) main::line#8 -Alias (byte) main::c1#2 = (byte) main::c1#3 +Alias main::line#10 = main::line#9 main::line#3 +Alias main::line#4 = main::line#7 main::line#5 +Alias main::c#2 = main::c#3 +Alias main::line#6 = main::line#8 +Alias main::c1#2 = main::c1#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) main::line#4 (word) main::line#10 Identical Phi Values (word) main::line#6 (word) main::line#10 @@ -177,7 +177,7 @@ Constant inlined main::line#1 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Consolidated constant in assignment main::$7 Successful SSA optimization Pass2ConstantAdditionElimination -Alias (word~) main::$4 = (word~) main::$3 +Alias main::$4 = main::$3 Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 @@ -258,21 +258,21 @@ main::@3: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$2 67.33333333333333 -(word~) main::$4 202.0 -(word~) main::$6 22.0 -(byte*~) main::$7 101.0 -(byte*~) main::$8 202.0 -(byte*~) main::$9 22.0 +(word~) main::$2 667.3333333333334 +(word~) main::$4 2002.0 +(word~) main::$6 202.0 +(byte*~) main::$7 1001.0 +(byte*~) main::$8 2002.0 +(byte*~) main::$9 202.0 (byte) main::c -(byte) main::c#1 202.0 -(byte) main::c#2 72.14285714285714 +(byte) main::c#1 2002.0 +(byte) main::c#2 715.0 (byte) main::c1 -(byte) main::c1#1 22.0 -(byte) main::c1#2 8.8 +(byte) main::c1#1 202.0 +(byte) main::c1#2 80.8 (word) main::line -(word) main::line#10 15.375 -(word) main::line#2 22.0 +(word) main::line#10 150.375 +(word) main::line#2 202.0 Initial phi equivalence classes [ main::line#10 main::line#2 ] @@ -481,30 +481,30 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( main:2 [ main::line#10 ] ) always clobbers reg byte a -Statement [10] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( main:2 [ main::line#10 main::c1#2 main::$6 ] ) always clobbers reg byte a +Statement [6] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( main:2 [ main::line#10 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( main:2 [ main::line#10 main::c1#2 main::$6 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::c1#2 main::c1#1 ] -Statement [11] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( main:2 [ main::line#10 main::c1#2 main::$9 ] ) always clobbers reg byte a -Statement [12] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( main:2 [ main::line#10 main::c1#2 ] ) always clobbers reg byte a reg byte y +Statement [11] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( main:2 [ main::line#10 main::c1#2 main::$9 ] { } ) always clobbers reg byte a +Statement [12] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( main:2 [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::c1#2 main::c1#1 ] -Statement [16] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a -Statement [17] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( main:2 [ main::line#10 main::c#2 main::$2 ] ) always clobbers reg byte a +Statement [16] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( main:2 [ main::line#10 main::c#2 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::c#2 main::c#1 ] -Statement [18] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$4 ] ) always clobbers reg byte a -Statement [19] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$7 ] ) always clobbers reg byte a -Statement [20] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( main:2 [ main::line#10 main::c#2 main::$7 main::$8 ] ) always clobbers reg byte a -Statement [21] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( main:2 [ main::line#10 main::c#2 ] ) always clobbers reg byte a reg byte y +Statement [18] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$4 ] { } ) always clobbers reg byte a +Statement [19] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$7 ] { } ) always clobbers reg byte a +Statement [20] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( main:2 [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a +Statement [21] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( main:2 [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::c#2 main::c#1 ] -Statement [6] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( main:2 [ main::line#10 ] ) always clobbers reg byte a -Statement [10] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( main:2 [ main::line#10 main::c1#2 main::$6 ] ) always clobbers reg byte a -Statement [11] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( main:2 [ main::line#10 main::c1#2 main::$9 ] ) always clobbers reg byte a -Statement [12] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( main:2 [ main::line#10 main::c1#2 ] ) always clobbers reg byte a reg byte y -Statement [16] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a -Statement [17] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( main:2 [ main::line#10 main::c#2 main::$2 ] ) always clobbers reg byte a -Statement [18] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$4 ] ) always clobbers reg byte a -Statement [19] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$7 ] ) always clobbers reg byte a -Statement [20] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( main:2 [ main::line#10 main::c#2 main::$7 main::$8 ] ) always clobbers reg byte a -Statement [21] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( main:2 [ main::line#10 main::c#2 ] ) always clobbers reg byte a reg byte y +Statement [6] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( main:2 [ main::line#10 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( main:2 [ main::line#10 main::c1#2 main::$6 ] { } ) always clobbers reg byte a +Statement [11] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( main:2 [ main::line#10 main::c1#2 main::$9 ] { } ) always clobbers reg byte a +Statement [12] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( main:2 [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( main:2 [ main::line#2 ] { } ) always clobbers reg byte a +Statement [17] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( main:2 [ main::line#10 main::c#2 main::$2 ] { } ) always clobbers reg byte a +Statement [18] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$4 ] { } ) always clobbers reg byte a +Statement [19] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( main:2 [ main::line#10 main::c#2 main::$2 main::$7 ] { } ) always clobbers reg byte a +Statement [20] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( main:2 [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a +Statement [21] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( main:2 [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[2]:2 [ main::line#10 main::line#2 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::c1#2 main::c1#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::c#2 main::c#1 ] : zp[1]:5 , reg byte x , @@ -516,7 +516,7 @@ Potential registers zp[2]:14 [ main::$7 ] : zp[2]:14 , Potential registers zp[2]:16 [ main::$8 ] : zp[2]:16 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 274.14: zp[1]:5 [ main::c#2 main::c#1 ] 202: zp[2]:12 [ main::$4 ] 202: zp[2]:16 [ main::$8 ] 101: zp[2]:14 [ main::$7 ] 67.33: zp[2]:10 [ main::$2 ] 37.38: zp[2]:2 [ main::line#10 main::line#2 ] 30.8: zp[1]:4 [ main::c1#2 main::c1#1 ] 22: zp[2]:6 [ main::$6 ] 22: zp[2]:8 [ main::$9 ] +Uplift Scope [main] 2,717: zp[1]:5 [ main::c#2 main::c#1 ] 2,002: zp[2]:12 [ main::$4 ] 2,002: zp[2]:16 [ main::$8 ] 1,001: zp[2]:14 [ main::$7 ] 667.33: zp[2]:10 [ main::$2 ] 352.38: zp[2]:2 [ main::line#10 main::line#2 ] 282.8: zp[1]:4 [ main::c1#2 main::c1#1 ] 202: zp[2]:6 [ main::$6 ] 202: zp[2]:8 [ main::$9 ] Uplift Scope [] Uplifting [main] best 11663 combination reg byte x [ main::c#2 main::c#1 ] zp[2]:12 [ main::$4 ] zp[2]:16 [ main::$8 ] zp[2]:14 [ main::$7 ] zp[2]:10 [ main::$2 ] zp[2]:2 [ main::line#10 main::line#2 ] reg byte x [ main::c1#2 main::c1#1 ] zp[2]:6 [ main::$6 ] zp[2]:8 [ main::$9 ] @@ -736,12 +736,12 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(word~) main::$2 zp[2]:6 67.33333333333333 -(word~) main::$4 zp[2]:8 202.0 -(word~) main::$6 zp[2]:4 22.0 -(byte*~) main::$7 zp[2]:8 101.0 -(byte*~) main::$8 zp[2]:6 202.0 -(byte*~) main::$9 zp[2]:4 22.0 +(word~) main::$2 zp[2]:6 667.3333333333334 +(word~) main::$4 zp[2]:8 2002.0 +(word~) main::$6 zp[2]:4 202.0 +(byte*~) main::$7 zp[2]:8 1001.0 +(byte*~) main::$8 zp[2]:6 2002.0 +(byte*~) main::$9 zp[2]:4 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -750,14 +750,14 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 202.0 -(byte) main::c#2 reg byte x 72.14285714285714 +(byte) main::c#1 reg byte x 2002.0 +(byte) main::c#2 reg byte x 715.0 (byte) main::c1 -(byte) main::c1#1 reg byte x 22.0 -(byte) main::c1#2 reg byte x 8.8 +(byte) main::c1#1 reg byte x 202.0 +(byte) main::c1#2 reg byte x 80.8 (word) main::line -(word) main::line#10 line zp[2]:2 15.375 -(word) main::line#2 line zp[2]:2 22.0 +(word) main::line#10 line zp[2]:2 150.375 +(word) main::line#2 line zp[2]:2 202.0 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::line#10 main::line#2 ] diff --git a/src/test/ref/test-word-size-arrays.sym b/src/test/ref/test-word-size-arrays.sym index 32d87f1fb..a36f1b89d 100644 --- a/src/test/ref/test-word-size-arrays.sym +++ b/src/test/ref/test-word-size-arrays.sym @@ -2,12 +2,12 @@ (label) @begin (label) @end (void()) main() -(word~) main::$2 zp[2]:6 67.33333333333333 -(word~) main::$4 zp[2]:8 202.0 -(word~) main::$6 zp[2]:4 22.0 -(byte*~) main::$7 zp[2]:8 101.0 -(byte*~) main::$8 zp[2]:6 202.0 -(byte*~) main::$9 zp[2]:4 22.0 +(word~) main::$2 zp[2]:6 667.3333333333334 +(word~) main::$4 zp[2]:8 2002.0 +(word~) main::$6 zp[2]:4 202.0 +(byte*~) main::$7 zp[2]:8 1001.0 +(byte*~) main::$8 zp[2]:6 2002.0 +(byte*~) main::$9 zp[2]:4 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -16,14 +16,14 @@ (label) main::@6 (label) main::@return (byte) main::c -(byte) main::c#1 reg byte x 202.0 -(byte) main::c#2 reg byte x 72.14285714285714 +(byte) main::c#1 reg byte x 2002.0 +(byte) main::c#2 reg byte x 715.0 (byte) main::c1 -(byte) main::c1#1 reg byte x 22.0 -(byte) main::c1#2 reg byte x 8.8 +(byte) main::c1#1 reg byte x 202.0 +(byte) main::c1#2 reg byte x 80.8 (word) main::line -(word) main::line#10 line zp[2]:2 15.375 -(word) main::line#2 line zp[2]:2 22.0 +(word) main::line#10 line zp[2]:2 150.375 +(word) main::line#2 line zp[2]:2 202.0 (const byte*) main::screen = (byte*) 1024 zp[2]:2 [ main::line#10 main::line#2 ] diff --git a/src/test/ref/tetris-npe.log b/src/test/ref/tetris-npe.log index 5b8709f52..c419188e4 100644 --- a/src/test/ref/tetris-npe.log +++ b/src/test/ref/tetris-npe.log @@ -125,14 +125,14 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [11] (bool~) main::$2 ← (byte) counter#1 != (byte) 0 from [10] (bool~) main::$1 ← (byte) counter#1 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) counter#5 = (byte) counter#8 -Alias (byte) ypos#11 = (byte) ypos#7 (byte) ypos#4 -Alias (byte) counter#3 = (byte) counter#6 (byte) counter#9 -Alias (byte) ypos#2 = (byte) ypos#5 (byte) ypos#8 -Alias (byte) counter#0 = (byte) counter#10 -Alias (byte) ypos#0 = (byte) ypos#9 -Alias (byte) counter#4 = (byte) counter#7 -Alias (byte) ypos#3 = (byte) ypos#6 +Alias counter#5 = counter#8 +Alias ypos#11 = ypos#7 ypos#4 +Alias counter#3 = counter#6 counter#9 +Alias ypos#2 = ypos#5 ypos#8 +Alias counter#0 = counter#10 +Alias ypos#0 = ypos#9 +Alias counter#4 = counter#7 +Alias ypos#3 = ypos#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) counter#11 (byte) counter#0 Identical Phi Values (byte) ypos#10 (byte) ypos#0 @@ -217,12 +217,12 @@ main::@4: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS (byte) counter -(byte) counter#1 151.5 -(byte) counter#3 101.0 +(byte) counter#1 1501.5 +(byte) counter#3 1001.0 (void()) main() (byte) ypos -(byte) ypos#1 16.5 -(byte) ypos#2 56.0 +(byte) ypos#1 151.5 +(byte) ypos#2 551.0 Initial phi equivalence classes [ counter#3 counter#1 ] @@ -316,15 +316,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ counter#3 ypos#2 ] ( main:2 [ counter#3 ypos#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ counter#3 ypos#2 ] ( main:2 [ counter#3 ypos#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ counter#3 counter#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ ypos#2 ypos#1 ] -Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ counter#3 ypos#2 ] ( main:2 [ counter#3 ypos#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 [ counter#3 ypos#2 ] ( main:2 [ counter#3 ypos#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ counter#3 counter#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ ypos#2 ypos#1 ] : zp[1]:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 252.5: zp[1]:2 [ counter#3 counter#1 ] 72.5: zp[1]:3 [ ypos#2 ypos#1 ] +Uplift Scope [] 2,502.5: zp[1]:2 [ counter#3 counter#1 ] 702.5: zp[1]:3 [ ypos#2 ypos#1 ] Uplift Scope [main] Uplifting [] best 14052 combination reg byte y [ counter#3 counter#1 ] reg byte x [ ypos#2 ypos#1 ] @@ -444,16 +444,16 @@ FINAL SYMBOL TABLE (const byte) RATE = (byte) $32 (const byte*) SCREEN = (byte*) 1024 (byte) counter -(byte) counter#1 reg byte y 151.5 -(byte) counter#3 reg byte y 101.0 +(byte) counter#1 reg byte y 1501.5 +(byte) counter#3 reg byte y 1001.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) ypos -(byte) ypos#1 reg byte x 16.5 -(byte) ypos#2 reg byte x 56.0 +(byte) ypos#1 reg byte x 151.5 +(byte) ypos#2 reg byte x 551.0 reg byte y [ counter#3 counter#1 ] reg byte x [ ypos#2 ypos#1 ] diff --git a/src/test/ref/tetris-npe.sym b/src/test/ref/tetris-npe.sym index d6599c2db..37c6f47ac 100644 --- a/src/test/ref/tetris-npe.sym +++ b/src/test/ref/tetris-npe.sym @@ -5,16 +5,16 @@ (const byte) RATE = (byte) $32 (const byte*) SCREEN = (byte*) 1024 (byte) counter -(byte) counter#1 reg byte y 151.5 -(byte) counter#3 reg byte y 101.0 +(byte) counter#1 reg byte y 1501.5 +(byte) counter#3 reg byte y 1001.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) ypos -(byte) ypos#1 reg byte x 16.5 -(byte) ypos#2 reg byte x 56.0 +(byte) ypos#1 reg byte x 151.5 +(byte) ypos#2 reg byte x 551.0 reg byte y [ counter#3 counter#1 ] reg byte x [ ypos#2 ypos#1 ] diff --git a/src/test/ref/textbox.log b/src/test/ref/textbox.log index f9fc42f23..d3cdeaef8 100644 --- a/src/test/ref/textbox.log +++ b/src/test/ref/textbox.log @@ -1037,86 +1037,86 @@ Inversing boolean not [74] (bool~) textbox::$26 ← (byte) textbox::x#1 != (byte Inversing boolean not [100] (bool~) textbox::$23 ← (byte) textbox::y#1 != (byte) textbox::y2#6 from [99] (bool~) textbox::$22 ← (byte) textbox::y#1 == (byte) textbox::y2#6 Inversing boolean not [113] (bool~) textbox::$29 ← (byte) textbox::y#2 != (byte) textbox::y2#7 from [112] (bool~) textbox::$28 ← (byte) textbox::y#2 == (byte) textbox::y2#7 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::x#2 = (byte) main::x#3 (byte) main::x#6 -Alias (byte) textbox::x2#0 = (byte~) main::$5 -Alias (byte) textbox::y2#0 = (byte~) main::$6 -Alias (word) main::wait#2 = (word) main::wait#3 -Alias (byte) main::x#4 = (byte) main::x#7 (byte) main::x#5 -Alias (byte) textbox::y1#4 = (byte) textbox::y1#5 -Alias (byte) textbox::x1#4 = (byte) textbox::x1#5 -Alias (byte) textbox::x2#4 = (byte) textbox::x2#5 -Alias (byte) textbox::y2#4 = (byte) textbox::y2#5 -Alias (byte*) textbox::text#12 = (byte*) textbox::text#7 -Alias (byte) textbox::y#0 = (byte~) textbox::$1 -Alias (byte) textbox::x#0 = (byte~) textbox::$2 -Alias (word) textbox::z#0 = (word~) textbox::$4 -Alias (byte) textbox::i#2 = (byte) textbox::i#4 -Alias (byte*) textbox::text#4 = (byte*) textbox::text#8 -Alias (byte) textbox::x#10 = (byte) textbox::x#4 -Alias (byte) textbox::x2#12 = (byte) textbox::x2#9 -Alias (byte) textbox::x1#12 = (byte) textbox::x1#13 -Alias (byte) textbox::y#12 = (byte) textbox::y#9 -Alias (byte) textbox::y2#11 = (byte) textbox::y2#14 -Alias (word) textbox::z#3 = (word) textbox::z#8 -Alias (byte) textbox::ls#0 = (byte~) textbox::$12 -Alias (byte) textbox::ls#2 = (byte) textbox::ls#3 -Alias (byte) textbox::c#2 = (byte) textbox::c#4 (byte) textbox::c#3 -Alias (byte*) textbox::text#13 = (byte*) textbox::text#9 (byte*) textbox::text#5 (byte*) textbox::text#14 (byte*) textbox::text#16 -Alias (byte) textbox::x#11 = (byte) textbox::x#9 (byte) textbox::x#6 -Alias (byte) textbox::x2#10 = (byte) textbox::x2#13 (byte) textbox::x2#7 (byte) textbox::x2#14 (byte) textbox::x2#8 -Alias (byte) textbox::x1#11 = (byte) textbox::x1#14 (byte) textbox::x1#9 (byte) textbox::x1#6 (byte) textbox::x1#7 (byte) textbox::x#2 (byte) textbox::x#8 -Alias (byte) textbox::i#10 = (byte) textbox::i#12 (byte) textbox::i#9 (byte) textbox::i#7 (byte) textbox::i#6 -Alias (byte) textbox::y#10 = (byte) textbox::y#13 (byte) textbox::y#7 (byte) textbox::y#3 -Alias (byte) textbox::y2#10 = (byte) textbox::y2#15 (byte) textbox::y2#12 (byte) textbox::y2#8 (byte) textbox::y2#6 -Alias (word) textbox::z#6 = (word) textbox::z#9 (word) textbox::z#7 -Alias (byte) textbox::y#1 = (byte) textbox::y#4 -Alias (word) textbox::z#1 = (byte~) textbox::$24 -Alias (byte) textbox::x1#10 = (byte) textbox::x1#8 (byte) textbox::x1#16 -Alias (byte) textbox::y#5 = (byte) textbox::y#8 -Alias (byte) textbox::y2#16 = (byte) textbox::y2#7 (byte) textbox::y2#9 -Alias (byte*) textbox::text#10 = (byte*) textbox::text#15 (byte*) textbox::text#11 -Alias (byte) textbox::i#1 = (byte) textbox::i#11 (byte) textbox::i#8 -Alias (byte) textbox::x2#15 = (byte) textbox::x2#16 (byte) textbox::x2#6 -Alias (byte) textbox::x#12 = (byte) textbox::x#3 (byte~) textbox::$27 -Alias (byte) textbox::y#2 = (byte) textbox::y#6 -Alias (word) textbox::z#2 = (byte~) textbox::$30 -Alias (word) draw_window::z#0 = (byte~) draw_window::$0 -Alias (word) draw_window::q#0 = (byte~) draw_window::$1 -Alias (byte) draw_window::x#0 = (byte~) draw_window::$12 -Alias (word) draw_window::z#3 = (word) draw_window::z#6 (word) draw_window::z#4 -Alias (byte) draw_window::x#2 = (byte) draw_window::x#3 -Alias (word) draw_window::q#1 = (word) draw_window::q#3 (word) draw_window::q#5 -Alias (byte) draw_window::x2#1 = (byte) draw_window::x2#7 (byte) draw_window::x2#2 -Alias (byte) draw_window::x1#2 = (byte) draw_window::x1#9 (byte) draw_window::x1#6 -Alias (byte) draw_window::y1#2 = (byte) draw_window::y1#7 (byte) draw_window::y1#5 -Alias (byte) draw_window::y2#11 = (byte) draw_window::y2#9 (byte) draw_window::y2#5 -Alias (byte) draw_window::y#0 = (byte~) draw_window::$16 -Alias (byte) draw_window::y#2 = (byte) draw_window::y#3 -Alias (byte) draw_window::x1#10 = (byte) draw_window::x1#3 (byte) draw_window::x1#7 (byte) draw_window::x1#4 -Alias (byte) draw_window::x2#12 = (byte) draw_window::x2#3 (byte) draw_window::x2#8 (byte) draw_window::x2#4 -Alias (byte) draw_window::y2#2 = (byte) draw_window::y2#6 (byte) draw_window::y2#3 (byte) draw_window::y2#7 -Alias (word) draw_window::q#2 = (word) draw_window::q#6 (word) draw_window::q#4 -Alias (byte) draw_window::y1#3 = (byte) draw_window::y1#8 (byte) draw_window::y1#6 (byte) draw_window::y1#4 -Alias (word) draw_window::z#1 = (byte~) draw_window::$18 -Alias (byte) draw_window::y3#0 = (byte~) draw_window::$21 -Alias (byte) draw_window::y3#2 = (byte) draw_window::y3#3 -Alias (byte) draw_window::x1#5 = (byte) draw_window::x1#8 -Alias (byte) draw_window::x2#11 = (byte) draw_window::x2#9 -Alias (byte) draw_window::y2#12 = (byte) draw_window::y2#4 -Alias (word) draw_window::z#2 = (byte~) draw_window::$23 -Alias (byte) draw_window::x3#0 = (byte~) draw_window::$24 -Alias (word) draw_window::z#5 = (word) draw_window::z#7 -Alias (byte) draw_window::x3#2 = (byte) draw_window::x3#3 -Alias (byte) draw_window::x2#10 = (byte) draw_window::x2#5 (byte) draw_window::x2#13 -Alias (byte) draw_window::y3#4 = (byte) draw_window::y3#6 (byte) draw_window::y3#5 -Alias (byte) draw_window::y2#10 = (byte) draw_window::y2#13 (byte) draw_window::y2#8 -Alias (byte) draw_window::x1#11 = (byte) draw_window::x1#13 (byte) draw_window::x1#12 +Alias main::x#2 = main::x#3 main::x#6 +Alias textbox::x2#0 = main::$5 +Alias textbox::y2#0 = main::$6 +Alias main::wait#2 = main::wait#3 +Alias main::x#4 = main::x#7 main::x#5 +Alias textbox::y1#4 = textbox::y1#5 +Alias textbox::x1#4 = textbox::x1#5 +Alias textbox::x2#4 = textbox::x2#5 +Alias textbox::y2#4 = textbox::y2#5 +Alias textbox::text#12 = textbox::text#7 +Alias textbox::y#0 = textbox::$1 +Alias textbox::x#0 = textbox::$2 +Alias textbox::z#0 = textbox::$4 +Alias textbox::i#2 = textbox::i#4 +Alias textbox::text#4 = textbox::text#8 +Alias textbox::x#10 = textbox::x#4 +Alias textbox::x2#12 = textbox::x2#9 +Alias textbox::x1#12 = textbox::x1#13 +Alias textbox::y#12 = textbox::y#9 +Alias textbox::y2#11 = textbox::y2#14 +Alias textbox::z#3 = textbox::z#8 +Alias textbox::ls#0 = textbox::$12 +Alias textbox::ls#2 = textbox::ls#3 +Alias textbox::c#2 = textbox::c#4 textbox::c#3 +Alias textbox::text#13 = textbox::text#9 textbox::text#5 textbox::text#14 textbox::text#16 +Alias textbox::x#11 = textbox::x#9 textbox::x#6 +Alias textbox::x2#10 = textbox::x2#13 textbox::x2#7 textbox::x2#14 textbox::x2#8 +Alias textbox::x1#11 = textbox::x1#14 textbox::x1#9 textbox::x1#6 textbox::x1#7 textbox::x#2 textbox::x#8 +Alias textbox::i#10 = textbox::i#12 textbox::i#9 textbox::i#7 textbox::i#6 +Alias textbox::y#10 = textbox::y#13 textbox::y#7 textbox::y#3 +Alias textbox::y2#10 = textbox::y2#15 textbox::y2#12 textbox::y2#8 textbox::y2#6 +Alias textbox::z#6 = textbox::z#9 textbox::z#7 +Alias textbox::y#1 = textbox::y#4 +Alias textbox::z#1 = textbox::$24 +Alias textbox::x1#10 = textbox::x1#8 textbox::x1#16 +Alias textbox::y#5 = textbox::y#8 +Alias textbox::y2#16 = textbox::y2#7 textbox::y2#9 +Alias textbox::text#10 = textbox::text#15 textbox::text#11 +Alias textbox::i#1 = textbox::i#11 textbox::i#8 +Alias textbox::x2#15 = textbox::x2#16 textbox::x2#6 +Alias textbox::x#12 = textbox::x#3 textbox::$27 +Alias textbox::y#2 = textbox::y#6 +Alias textbox::z#2 = textbox::$30 +Alias draw_window::z#0 = draw_window::$0 +Alias draw_window::q#0 = draw_window::$1 +Alias draw_window::x#0 = draw_window::$12 +Alias draw_window::z#3 = draw_window::z#6 draw_window::z#4 +Alias draw_window::x#2 = draw_window::x#3 +Alias draw_window::q#1 = draw_window::q#3 draw_window::q#5 +Alias draw_window::x2#1 = draw_window::x2#7 draw_window::x2#2 +Alias draw_window::x1#2 = draw_window::x1#9 draw_window::x1#6 +Alias draw_window::y1#2 = draw_window::y1#7 draw_window::y1#5 +Alias draw_window::y2#11 = draw_window::y2#9 draw_window::y2#5 +Alias draw_window::y#0 = draw_window::$16 +Alias draw_window::y#2 = draw_window::y#3 +Alias draw_window::x1#10 = draw_window::x1#3 draw_window::x1#7 draw_window::x1#4 +Alias draw_window::x2#12 = draw_window::x2#3 draw_window::x2#8 draw_window::x2#4 +Alias draw_window::y2#2 = draw_window::y2#6 draw_window::y2#3 draw_window::y2#7 +Alias draw_window::q#2 = draw_window::q#6 draw_window::q#4 +Alias draw_window::y1#3 = draw_window::y1#8 draw_window::y1#6 draw_window::y1#4 +Alias draw_window::z#1 = draw_window::$18 +Alias draw_window::y3#0 = draw_window::$21 +Alias draw_window::y3#2 = draw_window::y3#3 +Alias draw_window::x1#5 = draw_window::x1#8 +Alias draw_window::x2#11 = draw_window::x2#9 +Alias draw_window::y2#12 = draw_window::y2#4 +Alias draw_window::z#2 = draw_window::$23 +Alias draw_window::x3#0 = draw_window::$24 +Alias draw_window::z#5 = draw_window::z#7 +Alias draw_window::x3#2 = draw_window::x3#3 +Alias draw_window::x2#10 = draw_window::x2#5 draw_window::x2#13 +Alias draw_window::y3#4 = draw_window::y3#6 draw_window::y3#5 +Alias draw_window::y2#10 = draw_window::y2#13 draw_window::y2#8 +Alias draw_window::x1#11 = draw_window::x1#13 draw_window::x1#12 Successful SSA optimization Pass2AliasElimination -Alias (byte*) textbox::text#10 = (byte*) textbox::text#6 -Alias (byte) textbox::i#1 = (byte) textbox::i#5 -Alias (byte) textbox::x2#11 = (byte) textbox::x2#15 -Alias (byte) textbox::x1#10 = (byte) textbox::x1#15 -Alias (byte) textbox::y2#13 = (byte) textbox::y2#16 +Alias textbox::text#10 = textbox::text#6 +Alias textbox::i#1 = textbox::i#5 +Alias textbox::x2#11 = textbox::x2#15 +Alias textbox::x1#10 = textbox::x1#15 +Alias textbox::y2#13 = textbox::y2#16 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::x#4 (byte) main::x#2 Identical Phi Values (byte*) textbox::text#13 (byte*) textbox::text#4 @@ -1294,13 +1294,13 @@ Constant inlined textbox::y1#1 = (byte) $c Constant inlined textbox::x2#3 = (byte) $27 Constant inlined textbox::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining -Alias (word) textbox::z#0 = (word~) textbox::$35 -Alias (word) textbox::z#1 = (byte~) textbox::$38 -Alias (word) textbox::z#2 = (byte~) textbox::$41 -Alias (word) draw_window::z#0 = (byte~) draw_window::$38 -Alias (word) draw_window::q#0 = (byte~) draw_window::$41 -Alias (word) draw_window::z#1 = (byte~) draw_window::$44 -Alias (word) draw_window::z#2 = (byte~) draw_window::$47 +Alias textbox::z#0 = textbox::$35 +Alias textbox::z#1 = textbox::$38 +Alias textbox::z#2 = textbox::$41 +Alias draw_window::z#0 = draw_window::$38 +Alias draw_window::q#0 = draw_window::$41 +Alias draw_window::z#1 = draw_window::$44 +Alias draw_window::z#2 = draw_window::$47 Successful SSA optimization Pass2AliasElimination Added new block during phi lifting textbox::@28(between textbox::@17 and textbox::@4) Added new block during phi lifting textbox::@29(between textbox::@25 and textbox::@4) @@ -1658,130 +1658,130 @@ draw_window::@2: scope:[draw_window] from draw_window::@1 VARIABLE REGISTER WEIGHTS (void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2) -(word~) draw_window::$14 202.0 -(word~) draw_window::$15 202.0 -(word~) draw_window::$19 202.0 -(word~) draw_window::$2 4.0 -(word~) draw_window::$20 202.0 -(word~) draw_window::$26 2002.0 -(byte*~) draw_window::$27 202.0 -(byte*~) draw_window::$28 202.0 -(byte*~) draw_window::$29 4.0 -(word~) draw_window::$3 4.0 -(byte*~) draw_window::$30 4.0 -(byte*~) draw_window::$31 202.0 -(byte*~) draw_window::$32 202.0 -(byte*~) draw_window::$33 4.0 -(byte*~) draw_window::$34 4.0 -(byte*~) draw_window::$35 2002.0 -(byte~) draw_window::$36 4.0 -(byte~) draw_window::$37 4.0 -(byte~) draw_window::$39 4.0 -(word~) draw_window::$4 4.0 -(byte~) draw_window::$40 4.0 -(byte~) draw_window::$42 202.0 -(byte~) draw_window::$43 202.0 -(byte~) draw_window::$45 202.0 -(byte~) draw_window::$46 202.0 -(word~) draw_window::$5 4.0 -(byte~) draw_window::$6 2.0 -(byte~) draw_window::$8 2.0 +(word~) draw_window::$14 2000002.0 +(word~) draw_window::$15 2000002.0 +(word~) draw_window::$19 2000002.0 +(word~) draw_window::$2 20002.0 +(word~) draw_window::$20 2000002.0 +(word~) draw_window::$26 2.0000002E7 +(byte*~) draw_window::$27 2000002.0 +(byte*~) draw_window::$28 2000002.0 +(byte*~) draw_window::$29 20002.0 +(word~) draw_window::$3 20002.0 +(byte*~) draw_window::$30 20002.0 +(byte*~) draw_window::$31 2000002.0 +(byte*~) draw_window::$32 2000002.0 +(byte*~) draw_window::$33 20002.0 +(byte*~) draw_window::$34 20002.0 +(byte*~) draw_window::$35 2.0000002E7 +(byte~) draw_window::$36 20002.0 +(byte~) draw_window::$37 20002.0 +(byte~) draw_window::$39 20002.0 +(word~) draw_window::$4 20002.0 +(byte~) draw_window::$40 20002.0 +(byte~) draw_window::$42 2000002.0 +(byte~) draw_window::$43 2000002.0 +(byte~) draw_window::$45 2000002.0 +(byte~) draw_window::$46 2000002.0 +(word~) draw_window::$5 20002.0 +(byte~) draw_window::$6 10001.0 +(byte~) draw_window::$8 10001.0 (word) draw_window::q -(word) draw_window::q#0 3.242424242424242 +(word) draw_window::q#0 31212.242424242428 (byte) draw_window::x -(byte) draw_window::x#0 4.0 -(byte) draw_window::x#1 202.0 -(byte) draw_window::x#2 63.375 +(byte) draw_window::x#0 20002.0 +(byte) draw_window::x#1 2000002.0 +(byte) draw_window::x#2 626250.75 (byte) draw_window::x1 -(byte) draw_window::x1#0 3.365079365079365 +(byte) draw_window::x1#0 32396.93650793651 (byte) draw_window::x2 -(byte) draw_window::x2#0 19.852459016393443 +(byte) draw_window::x2#0 197229.62295081967 (byte) draw_window::x3 -(byte) draw_window::x3#0 202.0 -(byte) draw_window::x3#1 2002.0 -(byte) draw_window::x3#2 821.0 +(byte) draw_window::x3#0 2000002.0 +(byte) draw_window::x3#1 2.0000002E7 +(byte) draw_window::x3#2 8200001.0 (byte) draw_window::y -(byte) draw_window::y#0 4.0 -(byte) draw_window::y#1 202.0 -(byte) draw_window::y#2 46.090909090909086 +(byte) draw_window::y#0 20002.0 +(byte) draw_window::y#1 2000002.0 +(byte) draw_window::y#2 455455.09090909094 (byte) draw_window::y1 -(byte) draw_window::y1#0 0.24999999999999997 +(byte) draw_window::y1#0 1062.625 (byte) draw_window::y2 -(byte) draw_window::y2#0 3.5 +(byte) draw_window::y2#0 33850.100000000006 (byte) draw_window::y3 -(byte) draw_window::y3#0 4.0 -(byte) draw_window::y3#1 202.0 -(byte) draw_window::y3#2 42.24999999999999 +(byte) draw_window::y3#0 20002.0 +(byte) draw_window::y3#1 2000002.0 +(byte) draw_window::y3#2 417500.50000000006 (word) draw_window::z -(word) draw_window::z#0 6.294117647058823 -(word) draw_window::z#1 75.75 -(word) draw_window::z#2 137.75 +(word) draw_window::z#0 60588.470588235294 +(word) draw_window::z#1 750000.75 +(word) draw_window::z#2 1375000.25 (void()) main() -(byte~) main::$4 22.0 +(byte~) main::$4 202.0 (word) main::wait -(word) main::wait#1 202.0 -(word) main::wait#2 151.5 +(word) main::wait#1 2002.0 +(word) main::wait#2 1501.5 (byte) main::x -(byte) main::x#1 22.0 -(byte) main::x#2 8.0 +(byte) main::x#1 202.0 +(byte) main::x#2 73.45454545454545 (void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text) -(byte~) textbox::$16 101.0 -(byte~) textbox::$18 101.0 -(word~) textbox::$3 3.0 -(byte*~) textbox::$32 202.0 -(word~) textbox::$33 4.0 -(word~) textbox::$34 4.0 -(byte~) textbox::$36 202.0 -(byte~) textbox::$37 202.0 -(byte~) textbox::$39 202.0 -(byte~) textbox::$40 202.0 -(word~) textbox::$9 202.0 +(byte~) textbox::$16 100001.0 +(byte~) textbox::$18 100001.0 +(word~) textbox::$3 1501.5 +(byte*~) textbox::$32 200002.0 +(word~) textbox::$33 2002.0 +(word~) textbox::$34 2002.0 +(byte~) textbox::$36 200002.0 +(byte~) textbox::$37 200002.0 +(byte~) textbox::$39 200002.0 +(byte~) textbox::$40 200002.0 +(word~) textbox::$9 200002.0 (byte) textbox::c -(byte) textbox::c#1 2002.0 -(byte) textbox::c#2 314.85714285714283 +(byte) textbox::c#1 2000002.0 +(byte) textbox::c#2 314286.2857142857 (byte) textbox::i -(byte) textbox::i#1 27.545454545454547 -(byte) textbox::i#2 22.954545454545453 +(byte) textbox::i#1 27273.0 +(byte) textbox::i#2 22727.5 (byte) textbox::ls -(byte) textbox::ls#0 202.0 -(byte) textbox::ls#1 1001.0 -(byte) textbox::ls#2 1368.3333333333335 +(byte) textbox::ls#0 200002.0 +(byte) textbox::ls#1 1000001.0 +(byte) textbox::ls#2 1366668.3333333335 (byte*) textbox::text -(byte*) textbox::text#12 49.04255319148936 +(byte*) textbox::text#12 48936.27659574468 (byte) textbox::x -(byte) textbox::x#0 0.8571428571428571 -(byte) textbox::x#1 151.5 -(byte) textbox::x#10 36.214285714285715 -(byte) textbox::x#12 33.666666666666664 -(byte) textbox::x#15 202.0 -(byte) textbox::x#5 202.0 -(byte) textbox::x#7 151.5 +(byte) textbox::x#0 429.0 +(byte) textbox::x#1 150001.5 +(byte) textbox::x#10 35786.142857142855 +(byte) textbox::x#12 33333.666666666664 +(byte) textbox::x#15 200002.0 +(byte) textbox::x#5 200002.0 +(byte) textbox::x#7 150001.5 (byte) textbox::x1 -(byte) textbox::x1#0 11.0 -(byte) textbox::x1#4 6.76595744680851 +(byte) textbox::x1#0 101.0 +(byte) textbox::x1#4 6427.787234042553 (byte) textbox::x2 -(byte) textbox::x2#0 5.5 -(byte) textbox::x2#4 6.76595744680851 +(byte) textbox::x2#0 50.5 +(byte) textbox::x2#4 6427.787234042553 (byte) textbox::y -(byte) textbox::y#0 0.75 -(byte) textbox::y#1 84.16666666666666 -(byte) textbox::y#11 151.5 -(byte) textbox::y#12 27.06666666666667 -(byte) textbox::y#2 101.0 -(byte) textbox::y#5 101.0 +(byte) textbox::y#0 375.375 +(byte) textbox::y#1 83334.16666666666 +(byte) textbox::y#11 150001.5 +(byte) textbox::y#12 26733.666666666668 +(byte) textbox::y#2 100001.0 +(byte) textbox::y#5 100001.0 (byte) textbox::y1 -(byte) textbox::y1#0 22.0 -(byte) textbox::y1#4 2.5 +(byte) textbox::y1#0 202.0 +(byte) textbox::y1#4 350.5 (byte) textbox::y2 -(byte) textbox::y2#0 7.333333333333333 -(byte) textbox::y2#4 4.617021276595745 +(byte) textbox::y2#0 67.33333333333333 +(byte) textbox::y2#4 4300.106382978724 (word) textbox::z -(word) textbox::z#0 1.3333333333333333 -(word) textbox::z#1 101.0 -(word) textbox::z#2 202.0 -(word) textbox::z#3 29.000000000000004 -(word) textbox::z#4 151.5 -(word) textbox::z#5 101.0 +(word) textbox::z#0 667.3333333333334 +(word) textbox::z#1 100001.0 +(word) textbox::z#2 200002.0 +(word) textbox::z#3 28643.214285714286 +(word) textbox::z#4 150001.5 +(word) textbox::z#5 100001.0 Initial phi equivalence classes [ main::x#2 main::x#1 ] @@ -2940,23 +2940,23 @@ draw_window: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] ) always clobbers reg byte a +Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::x#2 main::x#1 ] -Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a +Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] -Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] ) always clobbers reg byte a -Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ) always clobbers reg byte a +Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] { } ) always clobbers reg byte a +Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] -Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ) always clobbers reg byte a -Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ) always clobbers reg byte a -Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a -Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ) always clobbers reg byte a +Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ textbox::i#2 textbox::i#1 ] -Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ) always clobbers reg byte a -Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y +Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] Removing always clobbered register reg byte y as potential for zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] @@ -2964,212 +2964,212 @@ Removing always clobbered register reg byte y as potential for zp[1]:14 [ textbo Removing always clobbered register reg byte y as potential for zp[1]:11 [ textbox::i#2 textbox::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::x#2 main::x#1 ] -Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y -Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a +Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ textbox::c#2 textbox::c#1 ] -Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a -Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ) always clobbers reg byte a -Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ) always clobbers reg byte a +Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:37 [ textbox::$16 ] -Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a -Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ) always clobbers reg byte a -Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a -Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y -Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a -Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ) always clobbers reg byte a -Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a -Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a +Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:23 [ draw_window::x1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ draw_window::y1#0 ] Removing always clobbered register reg byte a as potential for zp[1]:25 [ draw_window::x2#0 ] Removing always clobbered register reg byte a as potential for zp[1]:26 [ draw_window::y2#0 ] -Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a -Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a -Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a -Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a -Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a -Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a -Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a -Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ draw_window::x1#0 ] Removing always clobbered register reg byte y as potential for zp[1]:24 [ draw_window::y1#0 ] Removing always clobbered register reg byte y as potential for zp[1]:25 [ draw_window::x2#0 ] Removing always clobbered register reg byte y as potential for zp[1]:26 [ draw_window::y2#0 ] -Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a -Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a -Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a -Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a -Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a -Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a -Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y -Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a -Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a +Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:67 [ draw_window::$6 ] -Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a +Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] -Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a -Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a -Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ) always clobbers reg byte a +Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] -Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a -Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y +Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] -Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a +Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] -Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a -Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a -Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ) always clobbers reg byte a -Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a -Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y +Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] -Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ) always clobbers reg byte a -Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a -Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y -Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a +Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] -Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a -Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y +Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] -Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ) always clobbers reg byte a -Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a -Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y -Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] ) always clobbers reg byte a -Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a reg byte x +Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::x#2 main::x#1 ] Removing always clobbered register reg byte x as potential for zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] -Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] ) always clobbers reg byte a -Statement [22] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a -Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ) always clobbers reg byte a -Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ) always clobbers reg byte a -Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ) always clobbers reg byte a -Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a -Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ) always clobbers reg byte a -Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ) always clobbers reg byte a -Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y -Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y -Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a -Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a -Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ) always clobbers reg byte a -Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ) always clobbers reg byte a -Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a -Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ) always clobbers reg byte a -Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a -Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y -Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a -Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ) always clobbers reg byte a -Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a -Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a -Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a -Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a -Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a -Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a -Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a -Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a -Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a -Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a -Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a -Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a -Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a -Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a -Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a -Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y -Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a -Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a -Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a -Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a -Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a -Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ) always clobbers reg byte a -Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a -Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y -Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a -Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a -Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a -Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ) always clobbers reg byte a -Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a -Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y -Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ) always clobbers reg byte a -Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a -Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y -Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a -Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a -Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y -Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ) always clobbers reg byte a -Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a -Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y -Statement [6] if((byte) main::x#2<(byte) $f) goto main::@2 [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] ) always clobbers reg byte a -Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a reg byte x -Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] ) always clobbers reg byte a -Statement [22] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a -Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ) always clobbers reg byte a -Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ) always clobbers reg byte a -Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ) always clobbers reg byte a -Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a -Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ) always clobbers reg byte a -Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ) always clobbers reg byte a -Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y -Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y -Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a -Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a -Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ) always clobbers reg byte a -Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ) always clobbers reg byte a -Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a -Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ) always clobbers reg byte a -Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a -Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y -Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a -Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ) always clobbers reg byte a -Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a -Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a -Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a -Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a -Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a -Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a -Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a -Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a -Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a -Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a -Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a -Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a -Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a -Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y -Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a -Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a -Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y -Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a -Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a -Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a -Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a -Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a -Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ) always clobbers reg byte a -Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a -Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y -Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a -Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a -Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a -Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ) always clobbers reg byte a -Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a -Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y -Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ) always clobbers reg byte a -Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a -Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y -Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a -Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a -Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y -Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ) always clobbers reg byte a -Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a -Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y +Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] { } ) always clobbers reg byte a +Statement [22] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] { } ) always clobbers reg byte a +Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [6] if((byte) main::x#2<(byte) $f) goto main::@2 [ main::x#2 ] ( main:2 [ main::x#2 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$4 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$4 ] ( main:2 [ main::x#2 main::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [16] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte x +Statement [21] if((word) main::wait#2<(word) $88b8) goto main::@5 [ main::x#2 main::wait#2 ] ( main:2 [ main::x#2 main::wait#2 ] { } ) always clobbers reg byte a +Statement [22] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] { } ) always clobbers reg byte a +Statement [32] (word~) textbox::$3 ← (word)(byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [33] (word~) textbox::$33 ← (word~) textbox::$3 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$3 textbox::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [34] (word~) textbox::$34 ← (word~) textbox::$33 + (word~) textbox::$3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [35] (word) textbox::z#0 ← (word~) textbox::$34 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [39] (word~) textbox::$9 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$9 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [40] (byte*~) textbox::$32 ← (const byte*) screen + (word~) textbox::$9 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [41] *((byte*~) textbox::$32) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [42] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [46] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [47] (byte~) textbox::$16 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [48] (byte~) textbox::$18 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$16 textbox::$18 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [59] (byte~) textbox::$39 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [60] (byte~) textbox::$40 ← (byte~) textbox::$39 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [61] (word) textbox::z#2 ← (byte~) textbox::$40 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [63] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a reg byte y +Statement [66] (byte~) textbox::$36 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [67] (byte~) textbox::$37 ← (byte~) textbox::$36 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [68] (word) textbox::z#1 ← (byte~) textbox::$37 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:12 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { } main:2::textbox:19 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 } { textbox::x2#0 = textbox::x2#4 } { textbox::y2#0 = textbox::y2#4 } } ) always clobbers reg byte a +Statement [72] (byte~) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [73] (byte~) draw_window::$37 ← (byte~) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [74] (word) draw_window::z#0 ← (byte~) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [75] (byte~) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [76] (byte~) draw_window::$40 ← (byte~) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [77] (word) draw_window::q#0 ← (byte~) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [81] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [82] (byte*~) draw_window::$29 ← (const byte*) screen + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [83] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [84] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [85] (byte*~) draw_window::$30 ← (const byte*) screen + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [86] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [90] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [91] (byte*~) draw_window::$33 ← (const byte*) screen + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [92] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [93] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [94] (byte*~) draw_window::$34 ← (const byte*) screen + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [95] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [97] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [104] (byte~) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [105] (byte~) draw_window::$46 ← (byte~) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [106] (word) draw_window::z#2 ← (byte~) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [111] (word~) draw_window::$26 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$26 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [112] (byte*~) draw_window::$35 ← (const byte*) screen + (word~) draw_window::$26 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [113] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [115] (byte~) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [116] (byte~) draw_window::$43 ← (byte~) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [117] (word) draw_window::z#1 ← (byte~) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [118] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$19 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [119] (byte*~) draw_window::$31 ← (const byte*) screen + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [120] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [121] (word~) draw_window::$20 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$20 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [122] (byte*~) draw_window::$32 ← (const byte*) screen + (word~) draw_window::$20 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [123] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [125] (word~) draw_window::$14 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [126] (byte*~) draw_window::$27 ← (const byte*) screen + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [127] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y +Statement [128] (word~) draw_window::$15 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$15 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [129] (byte*~) draw_window::$28 ← (const byte*) screen + (word~) draw_window::$15 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a +Statement [130] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:8::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:10::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:12::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { draw_window::x1#0 = textbox::x1#4 } { draw_window::y1#0 = textbox::y1#4 } { draw_window::x2#0 = textbox::x2#4 } { draw_window::y2#0 = textbox::y2#4 } } main:2::textbox:19::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] { { textbox::y1#0 = textbox::y1#4 textbox::x1#4 textbox::x1#0 main::x#2 draw_window::x1#0 draw_window::y1#0 } { textbox::x2#0 = textbox::x2#4 draw_window::x2#0 } { textbox::y2#0 = textbox::y2#4 draw_window::y2#0 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::x#2 main::x#1 ] : zp[1]:2 , Potential registers zp[2]:3 [ main::wait#2 main::wait#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] : zp[1]:5 , reg byte x , @@ -3237,51 +3237,45 @@ Potential registers zp[2]:93 [ draw_window::$15 ] : zp[2]:93 , Potential registers zp[2]:95 [ draw_window::$28 ] : zp[2]:95 , REGISTER UPLIFT SCOPES -Uplift Scope [draw_window] 3,025: zp[1]:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] 2,002: zp[2]:73 [ draw_window::$26 ] 2,002: zp[2]:75 [ draw_window::$35 ] 269.38: zp[1]:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] 252.09: zp[1]:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] 248.25: zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] 202: zp[1]:69 [ draw_window::$45 ] 202: zp[1]:70 [ draw_window::$46 ] 202: zp[1]:77 [ draw_window::$42 ] 202: zp[1]:78 [ draw_window::$43 ] 202: zp[2]:81 [ draw_window::$19 ] 202: zp[2]:83 [ draw_window::$31 ] 202: zp[2]:85 [ draw_window::$20 ] 202: zp[2]:87 [ draw_window::$32 ] 202: zp[2]:89 [ draw_window::$14 ] 202: zp[2]:91 [ draw_window::$27 ] 202: zp[2]:93 [ draw_window::$15 ] 202: zp[2]:95 [ draw_window::$28 ] 137.75: zp[2]:71 [ draw_window::z#2 ] 75.75: zp[2]:79 [ draw_window::z#1 ] 19.85: zp[1]:25 [ draw_window::x2#0 ] 6.29: zp[2]:45 [ draw_window::z#0 ] 4: zp[1]:43 [ draw_window::$36 ] 4: zp[1]:44 [ draw_window::$37 ] 4: zp[1]:47 [ draw_window::$39 ] 4: zp[1]:48 [ draw_window::$40 ] 4: zp[2]:51 [ draw_window::$2 ] 4: zp[2]:53 [ draw_window::$29 ] 4: zp[2]:55 [ draw_window::$3 ] 4: zp[2]:57 [ draw_window::$30 ] 4: zp[2]:59 [ draw_window::$4 ] 4: zp[2]:61 [ draw_window::$33 ] 4: zp[2]:63 [ draw_window::$5 ] 4: zp[2]:65 [ draw_window::$34 ] 3.5: zp[1]:26 [ draw_window::y2#0 ] 3.37: zp[1]:23 [ draw_window::x1#0 ] 3.24: zp[2]:49 [ draw_window::q#0 ] 2: zp[1]:67 [ draw_window::$6 ] 2: zp[1]:68 [ draw_window::$8 ] 0.25: zp[1]:24 [ draw_window::y1#0 ] -Uplift Scope [textbox] 2,571.33: zp[1]:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] 2,316.86: zp[1]:13 [ textbox::c#2 textbox::c#1 ] 777.74: zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] 585.83: zp[2]:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] 465.48: zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] 202: zp[2]:33 [ textbox::$9 ] 202: zp[2]:35 [ textbox::$32 ] 202: zp[1]:39 [ textbox::$39 ] 202: zp[1]:40 [ textbox::$40 ] 202: zp[1]:41 [ textbox::$36 ] 202: zp[1]:42 [ textbox::$37 ] 101: zp[1]:37 [ textbox::$16 ] 101: zp[1]:38 [ textbox::$18 ] 50.5: zp[1]:11 [ textbox::i#2 textbox::i#1 ] 49.04: zp[2]:9 [ textbox::text#12 ] 24.5: zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] 17.77: zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] 12.27: zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] 11.95: zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] 4: zp[2]:29 [ textbox::$33 ] 4: zp[2]:31 [ textbox::$34 ] 3: zp[2]:27 [ textbox::$3 ] -Uplift Scope [main] 353.5: zp[2]:3 [ main::wait#2 main::wait#1 ] 30: zp[1]:2 [ main::x#2 main::x#1 ] 22: zp[1]:22 [ main::$4 ] +Uplift Scope [draw_window] 30,200,005: zp[1]:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] 20,000,002: zp[2]:73 [ draw_window::$26 ] 20,000,002: zp[2]:75 [ draw_window::$35 ] 2,646,254.75: zp[1]:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] 2,475,459.09: zp[1]:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] 2,437,504.5: zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] 2,000,002: zp[1]:69 [ draw_window::$45 ] 2,000,002: zp[1]:70 [ draw_window::$46 ] 2,000,002: zp[1]:77 [ draw_window::$42 ] 2,000,002: zp[1]:78 [ draw_window::$43 ] 2,000,002: zp[2]:81 [ draw_window::$19 ] 2,000,002: zp[2]:83 [ draw_window::$31 ] 2,000,002: zp[2]:85 [ draw_window::$20 ] 2,000,002: zp[2]:87 [ draw_window::$32 ] 2,000,002: zp[2]:89 [ draw_window::$14 ] 2,000,002: zp[2]:91 [ draw_window::$27 ] 2,000,002: zp[2]:93 [ draw_window::$15 ] 2,000,002: zp[2]:95 [ draw_window::$28 ] 1,375,000.25: zp[2]:71 [ draw_window::z#2 ] 750,000.75: zp[2]:79 [ draw_window::z#1 ] 197,229.62: zp[1]:25 [ draw_window::x2#0 ] 60,588.47: zp[2]:45 [ draw_window::z#0 ] 33,850.1: zp[1]:26 [ draw_window::y2#0 ] 32,396.94: zp[1]:23 [ draw_window::x1#0 ] 31,212.24: zp[2]:49 [ draw_window::q#0 ] 20,002: zp[1]:43 [ draw_window::$36 ] 20,002: zp[1]:44 [ draw_window::$37 ] 20,002: zp[1]:47 [ draw_window::$39 ] 20,002: zp[1]:48 [ draw_window::$40 ] 20,002: zp[2]:51 [ draw_window::$2 ] 20,002: zp[2]:53 [ draw_window::$29 ] 20,002: zp[2]:55 [ draw_window::$3 ] 20,002: zp[2]:57 [ draw_window::$30 ] 20,002: zp[2]:59 [ draw_window::$4 ] 20,002: zp[2]:61 [ draw_window::$33 ] 20,002: zp[2]:63 [ draw_window::$5 ] 20,002: zp[2]:65 [ draw_window::$34 ] 10,001: zp[1]:67 [ draw_window::$6 ] 10,001: zp[1]:68 [ draw_window::$8 ] 1,062.62: zp[1]:24 [ draw_window::y1#0 ] +Uplift Scope [textbox] 2,566,671.33: zp[1]:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] 2,314,288.29: zp[1]:13 [ textbox::c#2 textbox::c#1 ] 769,555.81: zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] 579,316.05: zp[2]:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] 460,446.71: zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] 200,002: zp[2]:33 [ textbox::$9 ] 200,002: zp[2]:35 [ textbox::$32 ] 200,002: zp[1]:39 [ textbox::$39 ] 200,002: zp[1]:40 [ textbox::$40 ] 200,002: zp[1]:41 [ textbox::$36 ] 200,002: zp[1]:42 [ textbox::$37 ] 100,001: zp[1]:37 [ textbox::$16 ] 100,001: zp[1]:38 [ textbox::$18 ] 50,000.5: zp[1]:11 [ textbox::i#2 textbox::i#1 ] 48,936.28: zp[2]:9 [ textbox::text#12 ] 6,528.79: zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] 6,478.29: zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] 4,367.44: zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] 2,002: zp[2]:29 [ textbox::$33 ] 2,002: zp[2]:31 [ textbox::$34 ] 1,501.5: zp[2]:27 [ textbox::$3 ] 552.5: zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] +Uplift Scope [main] 3,503.5: zp[2]:3 [ main::wait#2 main::wait#1 ] 275.45: zp[1]:2 [ main::x#2 main::x#1 ] 202: zp[1]:22 [ main::$4 ] Uplift Scope [] -Uplifting [draw_window] best 192545 combination reg byte x [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] zp[2]:73 [ draw_window::$26 ] zp[2]:75 [ draw_window::$35 ] reg byte x [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] reg byte x [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] reg byte a [ draw_window::$45 ] reg byte a [ draw_window::$46 ] zp[1]:77 [ draw_window::$42 ] zp[1]:78 [ draw_window::$43 ] zp[2]:81 [ draw_window::$19 ] zp[2]:83 [ draw_window::$31 ] zp[2]:85 [ draw_window::$20 ] zp[2]:87 [ draw_window::$32 ] zp[2]:89 [ draw_window::$14 ] zp[2]:91 [ draw_window::$27 ] zp[2]:93 [ draw_window::$15 ] zp[2]:95 [ draw_window::$28 ] zp[2]:71 [ draw_window::z#2 ] zp[2]:79 [ draw_window::z#1 ] zp[1]:25 [ draw_window::x2#0 ] zp[2]:45 [ draw_window::z#0 ] zp[1]:43 [ draw_window::$36 ] zp[1]:44 [ draw_window::$37 ] zp[1]:47 [ draw_window::$39 ] zp[1]:48 [ draw_window::$40 ] zp[2]:51 [ draw_window::$2 ] zp[2]:53 [ draw_window::$29 ] zp[2]:55 [ draw_window::$3 ] zp[2]:57 [ draw_window::$30 ] zp[2]:59 [ draw_window::$4 ] zp[2]:61 [ draw_window::$33 ] zp[2]:63 [ draw_window::$5 ] zp[2]:65 [ draw_window::$34 ] zp[1]:26 [ draw_window::y2#0 ] zp[1]:23 [ draw_window::x1#0 ] zp[2]:49 [ draw_window::q#0 ] zp[1]:67 [ draw_window::$6 ] zp[1]:68 [ draw_window::$8 ] zp[1]:24 [ draw_window::y1#0 ] +Uplifting [draw_window] best 192545 combination reg byte x [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] zp[2]:73 [ draw_window::$26 ] zp[2]:75 [ draw_window::$35 ] reg byte x [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] reg byte x [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] reg byte a [ draw_window::$45 ] reg byte a [ draw_window::$46 ] zp[1]:77 [ draw_window::$42 ] zp[1]:78 [ draw_window::$43 ] zp[2]:81 [ draw_window::$19 ] zp[2]:83 [ draw_window::$31 ] zp[2]:85 [ draw_window::$20 ] zp[2]:87 [ draw_window::$32 ] zp[2]:89 [ draw_window::$14 ] zp[2]:91 [ draw_window::$27 ] zp[2]:93 [ draw_window::$15 ] zp[2]:95 [ draw_window::$28 ] zp[2]:71 [ draw_window::z#2 ] zp[2]:79 [ draw_window::z#1 ] zp[1]:25 [ draw_window::x2#0 ] zp[2]:45 [ draw_window::z#0 ] zp[1]:26 [ draw_window::y2#0 ] zp[1]:23 [ draw_window::x1#0 ] zp[2]:49 [ draw_window::q#0 ] zp[1]:43 [ draw_window::$36 ] zp[1]:44 [ draw_window::$37 ] zp[1]:47 [ draw_window::$39 ] zp[1]:48 [ draw_window::$40 ] zp[2]:51 [ draw_window::$2 ] zp[2]:53 [ draw_window::$29 ] zp[2]:55 [ draw_window::$3 ] zp[2]:57 [ draw_window::$30 ] zp[2]:59 [ draw_window::$4 ] zp[2]:61 [ draw_window::$33 ] zp[2]:63 [ draw_window::$5 ] zp[2]:65 [ draw_window::$34 ] zp[1]:67 [ draw_window::$6 ] zp[1]:68 [ draw_window::$8 ] zp[1]:24 [ draw_window::y1#0 ] Limited combination testing to 100 combinations of 201326592 possible. -Uplifting [textbox] best 176245 combination reg byte y [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] reg byte x [ textbox::c#2 textbox::c#1 ] zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] zp[2]:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] zp[2]:33 [ textbox::$9 ] zp[2]:35 [ textbox::$32 ] reg byte a [ textbox::$39 ] zp[1]:40 [ textbox::$40 ] zp[1]:41 [ textbox::$36 ] zp[1]:42 [ textbox::$37 ] zp[1]:37 [ textbox::$16 ] zp[1]:38 [ textbox::$18 ] zp[1]:11 [ textbox::i#2 textbox::i#1 ] zp[2]:9 [ textbox::text#12 ] zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] zp[2]:29 [ textbox::$33 ] zp[2]:31 [ textbox::$34 ] zp[2]:27 [ textbox::$3 ] +Uplifting [textbox] best 176245 combination reg byte y [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] reg byte x [ textbox::c#2 textbox::c#1 ] zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] zp[2]:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] zp[2]:33 [ textbox::$9 ] zp[2]:35 [ textbox::$32 ] reg byte a [ textbox::$39 ] zp[1]:40 [ textbox::$40 ] zp[1]:41 [ textbox::$36 ] zp[1]:42 [ textbox::$37 ] zp[1]:37 [ textbox::$16 ] zp[1]:38 [ textbox::$18 ] zp[1]:11 [ textbox::i#2 textbox::i#1 ] zp[2]:9 [ textbox::text#12 ] zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] zp[2]:29 [ textbox::$33 ] zp[2]:31 [ textbox::$34 ] zp[2]:27 [ textbox::$3 ] zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] Limited combination testing to 100 combinations of 1769472 possible. Uplifting [main] best 176205 combination zp[2]:3 [ main::wait#2 main::wait#1 ] zp[1]:2 [ main::x#2 main::x#1 ] reg byte a [ main::$4 ] Uplifting [] best 176205 combination -Attempting to uplift remaining variables inzp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] -Uplifting [textbox] best 176205 combination zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] -Attempting to uplift remaining variables inzp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] -Uplifting [textbox] best 176205 combination zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] Attempting to uplift remaining variables inzp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] Uplifting [draw_window] best 176205 combination zp[1]:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] -Attempting to uplift remaining variables inzp[1]:40 [ textbox::$40 ] -Uplifting [textbox] best 175605 combination reg byte a [ textbox::$40 ] -Attempting to uplift remaining variables inzp[1]:41 [ textbox::$36 ] -Uplifting [textbox] best 175005 combination reg byte a [ textbox::$36 ] -Attempting to uplift remaining variables inzp[1]:42 [ textbox::$37 ] -Uplifting [textbox] best 174405 combination reg byte a [ textbox::$37 ] Attempting to uplift remaining variables inzp[1]:77 [ draw_window::$42 ] -Uplifting [draw_window] best 174205 combination reg byte a [ draw_window::$42 ] +Uplifting [draw_window] best 176005 combination reg byte a [ draw_window::$42 ] Attempting to uplift remaining variables inzp[1]:78 [ draw_window::$43 ] -Uplifting [draw_window] best 173605 combination reg byte a [ draw_window::$43 ] +Uplifting [draw_window] best 175405 combination reg byte a [ draw_window::$43 ] +Attempting to uplift remaining variables inzp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] +Uplifting [textbox] best 175405 combination zp[1]:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] +Attempting to uplift remaining variables inzp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] +Uplifting [textbox] best 175405 combination zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] +Attempting to uplift remaining variables inzp[1]:40 [ textbox::$40 ] +Uplifting [textbox] best 174805 combination reg byte a [ textbox::$40 ] +Attempting to uplift remaining variables inzp[1]:41 [ textbox::$36 ] +Uplifting [textbox] best 174205 combination reg byte a [ textbox::$36 ] +Attempting to uplift remaining variables inzp[1]:42 [ textbox::$37 ] +Uplifting [textbox] best 173605 combination reg byte a [ textbox::$37 ] +Attempting to uplift remaining variables inzp[1]:25 [ draw_window::x2#0 ] +Uplifting [draw_window] best 173605 combination zp[1]:25 [ draw_window::x2#0 ] Attempting to uplift remaining variables inzp[1]:37 [ textbox::$16 ] Uplifting [textbox] best 173205 combination reg byte y [ textbox::$16 ] Attempting to uplift remaining variables inzp[1]:38 [ textbox::$18 ] Uplifting [textbox] best 173205 combination zp[1]:38 [ textbox::$18 ] Attempting to uplift remaining variables inzp[1]:11 [ textbox::i#2 textbox::i#1 ] Uplifting [textbox] best 173205 combination zp[1]:11 [ textbox::i#2 textbox::i#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ main::x#2 main::x#1 ] -Uplifting [main] best 173205 combination zp[1]:2 [ main::x#2 main::x#1 ] -Attempting to uplift remaining variables inzp[1]:6 [ textbox::y1#4 textbox::y1#0 ] -Uplifting [textbox] best 173205 combination zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] -Attempting to uplift remaining variables inzp[1]:25 [ draw_window::x2#0 ] -Uplifting [draw_window] best 173205 combination zp[1]:25 [ draw_window::x2#0 ] -Attempting to uplift remaining variables inzp[1]:5 [ textbox::x1#4 textbox::x1#0 ] -Uplifting [textbox] best 173205 combination zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] -Attempting to uplift remaining variables inzp[1]:7 [ textbox::x2#4 textbox::x2#0 ] -Uplifting [textbox] best 173205 combination zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] -Attempting to uplift remaining variables inzp[1]:8 [ textbox::y2#4 textbox::y2#0 ] -Uplifting [textbox] best 173205 combination zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] +Attempting to uplift remaining variables inzp[1]:26 [ draw_window::y2#0 ] +Uplifting [draw_window] best 173205 combination zp[1]:26 [ draw_window::y2#0 ] +Attempting to uplift remaining variables inzp[1]:23 [ draw_window::x1#0 ] +Uplifting [draw_window] best 173205 combination zp[1]:23 [ draw_window::x1#0 ] Attempting to uplift remaining variables inzp[1]:43 [ draw_window::$36 ] Uplifting [draw_window] best 173199 combination reg byte a [ draw_window::$36 ] Attempting to uplift remaining variables inzp[1]:44 [ draw_window::$37 ] @@ -3290,16 +3284,22 @@ Attempting to uplift remaining variables inzp[1]:47 [ draw_window::$39 ] Uplifting [draw_window] best 173187 combination reg byte a [ draw_window::$39 ] Attempting to uplift remaining variables inzp[1]:48 [ draw_window::$40 ] Uplifting [draw_window] best 173181 combination reg byte a [ draw_window::$40 ] -Attempting to uplift remaining variables inzp[1]:26 [ draw_window::y2#0 ] -Uplifting [draw_window] best 173181 combination zp[1]:26 [ draw_window::y2#0 ] -Attempting to uplift remaining variables inzp[1]:23 [ draw_window::x1#0 ] -Uplifting [draw_window] best 173181 combination zp[1]:23 [ draw_window::x1#0 ] Attempting to uplift remaining variables inzp[1]:67 [ draw_window::$6 ] Uplifting [draw_window] best 173177 combination reg byte x [ draw_window::$6 ] Attempting to uplift remaining variables inzp[1]:68 [ draw_window::$8 ] Uplifting [draw_window] best 173171 combination reg byte a [ draw_window::$8 ] +Attempting to uplift remaining variables inzp[1]:5 [ textbox::x1#4 textbox::x1#0 ] +Uplifting [textbox] best 173171 combination zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] +Attempting to uplift remaining variables inzp[1]:7 [ textbox::x2#4 textbox::x2#0 ] +Uplifting [textbox] best 173171 combination zp[1]:7 [ textbox::x2#4 textbox::x2#0 ] +Attempting to uplift remaining variables inzp[1]:8 [ textbox::y2#4 textbox::y2#0 ] +Uplifting [textbox] best 173171 combination zp[1]:8 [ textbox::y2#4 textbox::y2#0 ] Attempting to uplift remaining variables inzp[1]:24 [ draw_window::y1#0 ] Uplifting [draw_window] best 173171 combination zp[1]:24 [ draw_window::y1#0 ] +Attempting to uplift remaining variables inzp[1]:6 [ textbox::y1#4 textbox::y1#0 ] +Uplifting [textbox] best 173171 combination zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::x#2 main::x#1 ] +Uplifting [main] best 173171 combination zp[1]:2 [ main::x#2 main::x#1 ] Coalescing zero page register [ zp[1]:2 [ main::x#2 main::x#1 ] ] with [ zp[1]:5 [ textbox::x1#4 textbox::x1#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:6 [ textbox::y1#4 textbox::y1#0 ] ] with [ zp[1]:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] ] - score: 1 Coalescing zero page register [ zp[1]:6 [ textbox::y1#4 textbox::y1#0 textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] ] with [ zp[1]:24 [ draw_window::y1#0 ] ] - score: 1 @@ -4348,34 +4348,34 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2) -(word~) draw_window::$14 zp[2]:35 202.0 -(word~) draw_window::$15 zp[2]:37 202.0 -(word~) draw_window::$19 zp[2]:33 202.0 -(word~) draw_window::$2 zp[2]:23 4.0 -(word~) draw_window::$20 zp[2]:31 202.0 -(word~) draw_window::$26 zp[2]:29 2002.0 -(byte*~) draw_window::$27 zp[2]:35 202.0 -(byte*~) draw_window::$28 zp[2]:37 202.0 -(byte*~) draw_window::$29 zp[2]:23 4.0 -(word~) draw_window::$3 zp[2]:19 4.0 -(byte*~) draw_window::$30 zp[2]:19 4.0 -(byte*~) draw_window::$31 zp[2]:33 202.0 -(byte*~) draw_window::$32 zp[2]:31 202.0 -(byte*~) draw_window::$33 zp[2]:25 4.0 -(byte*~) draw_window::$34 zp[2]:21 4.0 -(byte*~) draw_window::$35 zp[2]:29 2002.0 -(byte~) draw_window::$36 reg byte a 4.0 -(byte~) draw_window::$37 reg byte a 4.0 -(byte~) draw_window::$39 reg byte a 4.0 -(word~) draw_window::$4 zp[2]:25 4.0 -(byte~) draw_window::$40 reg byte a 4.0 -(byte~) draw_window::$42 reg byte a 202.0 -(byte~) draw_window::$43 reg byte a 202.0 -(byte~) draw_window::$45 reg byte a 202.0 -(byte~) draw_window::$46 reg byte a 202.0 -(word~) draw_window::$5 zp[2]:21 4.0 -(byte~) draw_window::$6 reg byte x 2.0 -(byte~) draw_window::$8 reg byte a 2.0 +(word~) draw_window::$14 zp[2]:35 2000002.0 +(word~) draw_window::$15 zp[2]:37 2000002.0 +(word~) draw_window::$19 zp[2]:33 2000002.0 +(word~) draw_window::$2 zp[2]:23 20002.0 +(word~) draw_window::$20 zp[2]:31 2000002.0 +(word~) draw_window::$26 zp[2]:29 2.0000002E7 +(byte*~) draw_window::$27 zp[2]:35 2000002.0 +(byte*~) draw_window::$28 zp[2]:37 2000002.0 +(byte*~) draw_window::$29 zp[2]:23 20002.0 +(word~) draw_window::$3 zp[2]:19 20002.0 +(byte*~) draw_window::$30 zp[2]:19 20002.0 +(byte*~) draw_window::$31 zp[2]:33 2000002.0 +(byte*~) draw_window::$32 zp[2]:31 2000002.0 +(byte*~) draw_window::$33 zp[2]:25 20002.0 +(byte*~) draw_window::$34 zp[2]:21 20002.0 +(byte*~) draw_window::$35 zp[2]:29 2.0000002E7 +(byte~) draw_window::$36 reg byte a 20002.0 +(byte~) draw_window::$37 reg byte a 20002.0 +(byte~) draw_window::$39 reg byte a 20002.0 +(word~) draw_window::$4 zp[2]:25 20002.0 +(byte~) draw_window::$40 reg byte a 20002.0 +(byte~) draw_window::$42 reg byte a 2000002.0 +(byte~) draw_window::$43 reg byte a 2000002.0 +(byte~) draw_window::$45 reg byte a 2000002.0 +(byte~) draw_window::$46 reg byte a 2000002.0 +(word~) draw_window::$5 zp[2]:21 20002.0 +(byte~) draw_window::$6 reg byte x 10001.0 +(byte~) draw_window::$8 reg byte a 10001.0 (label) draw_window::@1 (label) draw_window::@10 (label) draw_window::@11 @@ -4391,37 +4391,37 @@ FINAL SYMBOL TABLE (label) draw_window::@9 (label) draw_window::@return (word) draw_window::q -(word) draw_window::q#0 q zp[2]:21 3.242424242424242 +(word) draw_window::q#0 q zp[2]:21 31212.242424242428 (byte) draw_window::x -(byte) draw_window::x#0 reg byte x 4.0 -(byte) draw_window::x#1 reg byte x 202.0 -(byte) draw_window::x#2 reg byte x 63.375 +(byte) draw_window::x#0 reg byte x 20002.0 +(byte) draw_window::x#1 reg byte x 2000002.0 +(byte) draw_window::x#2 reg byte x 626250.75 (byte) draw_window::x1 -(byte) draw_window::x1#0 x1 zp[1]:2 3.365079365079365 +(byte) draw_window::x1#0 x1 zp[1]:2 32396.93650793651 (byte) draw_window::x2 -(byte) draw_window::x2#0 x2 zp[1]:6 19.852459016393443 +(byte) draw_window::x2#0 x2 zp[1]:6 197229.62295081967 (byte) draw_window::x3 -(byte) draw_window::x3#0 reg byte x 202.0 -(byte) draw_window::x3#1 reg byte x 2002.0 -(byte) draw_window::x3#2 reg byte x 821.0 +(byte) draw_window::x3#0 reg byte x 2000002.0 +(byte) draw_window::x3#1 reg byte x 2.0000002E7 +(byte) draw_window::x3#2 reg byte x 8200001.0 (byte) draw_window::y -(byte) draw_window::y#0 reg byte x 4.0 -(byte) draw_window::y#1 reg byte x 202.0 -(byte) draw_window::y#2 reg byte x 46.090909090909086 +(byte) draw_window::y#0 reg byte x 20002.0 +(byte) draw_window::y#1 reg byte x 2000002.0 +(byte) draw_window::y#2 reg byte x 455455.09090909094 (byte) draw_window::y1 -(byte) draw_window::y1#0 y1 zp[1]:5 0.24999999999999997 +(byte) draw_window::y1#0 y1 zp[1]:5 1062.625 (byte) draw_window::y2 -(byte) draw_window::y2#0 y2 zp[1]:7 3.5 +(byte) draw_window::y2#0 y2 zp[1]:7 33850.100000000006 (byte) draw_window::y3 -(byte) draw_window::y3#0 y3 zp[1]:18 4.0 -(byte) draw_window::y3#1 y3 zp[1]:18 202.0 -(byte) draw_window::y3#2 y3 zp[1]:18 42.24999999999999 +(byte) draw_window::y3#0 y3 zp[1]:18 20002.0 +(byte) draw_window::y3#1 y3 zp[1]:18 2000002.0 +(byte) draw_window::y3#2 y3 zp[1]:18 417500.50000000006 (word) draw_window::z -(word) draw_window::z#0 z zp[2]:19 6.294117647058823 -(word) draw_window::z#1 z_1 zp[2]:31 75.75 -(word) draw_window::z#2 z_2 zp[2]:27 137.75 +(word) draw_window::z#0 z zp[2]:19 60588.470588235294 +(word) draw_window::z#1 z_1 zp[2]:31 750000.75 +(word) draw_window::z#2 z_2 zp[2]:27 1375000.25 (void()) main() -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -4432,26 +4432,26 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@9 (word) main::wait -(word) main::wait#1 wait zp[2]:3 202.0 -(word) main::wait#2 wait zp[2]:3 151.5 +(word) main::wait#1 wait zp[2]:3 2002.0 +(word) main::wait#2 wait zp[2]:3 1501.5 (byte) main::x -(byte) main::x#1 x zp[1]:2 22.0 -(byte) main::x#2 x zp[1]:2 8.0 +(byte) main::x#1 x zp[1]:2 202.0 +(byte) main::x#2 x zp[1]:2 73.45454545454545 (const byte*) screen = (byte*) 1024 (const byte*) text[] = (byte*) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!" (const byte*) text2[] = (byte*) "textbox by scan of desire" (void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text) -(byte~) textbox::$16 reg byte y 101.0 -(byte~) textbox::$18 zp[1]:18 101.0 -(word~) textbox::$3 zp[2]:12 3.0 -(byte*~) textbox::$32 zp[2]:16 202.0 -(word~) textbox::$33 zp[2]:14 4.0 -(word~) textbox::$34 zp[2]:12 4.0 -(byte~) textbox::$36 reg byte a 202.0 -(byte~) textbox::$37 reg byte a 202.0 -(byte~) textbox::$39 reg byte a 202.0 -(byte~) textbox::$40 reg byte a 202.0 -(word~) textbox::$9 zp[2]:16 202.0 +(byte~) textbox::$16 reg byte y 100001.0 +(byte~) textbox::$18 zp[1]:18 100001.0 +(word~) textbox::$3 zp[2]:12 1501.5 +(byte*~) textbox::$32 zp[2]:16 200002.0 +(word~) textbox::$33 zp[2]:14 2002.0 +(word~) textbox::$34 zp[2]:12 2002.0 +(byte~) textbox::$36 reg byte a 200002.0 +(byte~) textbox::$37 reg byte a 200002.0 +(byte~) textbox::$39 reg byte a 200002.0 +(byte~) textbox::$40 reg byte a 200002.0 +(word~) textbox::$9 zp[2]:16 200002.0 (label) textbox::@1 (label) textbox::@10 (label) textbox::@11 @@ -4469,51 +4469,51 @@ FINAL SYMBOL TABLE (label) textbox::@9 (label) textbox::@return (byte) textbox::c -(byte) textbox::c#1 reg byte x 2002.0 -(byte) textbox::c#2 reg byte x 314.85714285714283 +(byte) textbox::c#1 reg byte x 2000002.0 +(byte) textbox::c#2 reg byte x 314286.2857142857 (byte) textbox::i -(byte) textbox::i#1 i zp[1]:10 27.545454545454547 -(byte) textbox::i#2 i zp[1]:10 22.954545454545453 +(byte) textbox::i#1 i zp[1]:10 27273.0 +(byte) textbox::i#2 i zp[1]:10 22727.5 (byte) textbox::ls -(byte) textbox::ls#0 reg byte y 202.0 -(byte) textbox::ls#1 reg byte y 1001.0 -(byte) textbox::ls#2 reg byte y 1368.3333333333335 +(byte) textbox::ls#0 reg byte y 200002.0 +(byte) textbox::ls#1 reg byte y 1000001.0 +(byte) textbox::ls#2 reg byte y 1366668.3333333335 (byte*) textbox::text -(byte*) textbox::text#12 text zp[2]:8 49.04255319148936 +(byte*) textbox::text#12 text zp[2]:8 48936.27659574468 (byte) textbox::x -(byte) textbox::x#0 x zp[1]:11 0.8571428571428571 -(byte) textbox::x#1 x zp[1]:11 151.5 -(byte) textbox::x#10 x zp[1]:11 36.214285714285715 -(byte) textbox::x#12 x zp[1]:11 33.666666666666664 -(byte) textbox::x#15 x zp[1]:11 202.0 -(byte) textbox::x#5 x zp[1]:11 202.0 -(byte) textbox::x#7 x zp[1]:11 151.5 +(byte) textbox::x#0 x zp[1]:11 429.0 +(byte) textbox::x#1 x zp[1]:11 150001.5 +(byte) textbox::x#10 x zp[1]:11 35786.142857142855 +(byte) textbox::x#12 x zp[1]:11 33333.666666666664 +(byte) textbox::x#15 x zp[1]:11 200002.0 +(byte) textbox::x#5 x zp[1]:11 200002.0 +(byte) textbox::x#7 x zp[1]:11 150001.5 (byte) textbox::x1 -(byte) textbox::x1#0 x1 zp[1]:2 11.0 -(byte) textbox::x1#4 x1 zp[1]:2 6.76595744680851 +(byte) textbox::x1#0 x1 zp[1]:2 101.0 +(byte) textbox::x1#4 x1 zp[1]:2 6427.787234042553 (byte) textbox::x2 -(byte) textbox::x2#0 x2 zp[1]:6 5.5 -(byte) textbox::x2#4 x2 zp[1]:6 6.76595744680851 +(byte) textbox::x2#0 x2 zp[1]:6 50.5 +(byte) textbox::x2#4 x2 zp[1]:6 6427.787234042553 (byte) textbox::y -(byte) textbox::y#0 y zp[1]:5 0.75 -(byte) textbox::y#1 y zp[1]:5 84.16666666666666 -(byte) textbox::y#11 y zp[1]:5 151.5 -(byte) textbox::y#12 y zp[1]:5 27.06666666666667 -(byte) textbox::y#2 y zp[1]:5 101.0 -(byte) textbox::y#5 y zp[1]:5 101.0 +(byte) textbox::y#0 y zp[1]:5 375.375 +(byte) textbox::y#1 y zp[1]:5 83334.16666666666 +(byte) textbox::y#11 y zp[1]:5 150001.5 +(byte) textbox::y#12 y zp[1]:5 26733.666666666668 +(byte) textbox::y#2 y zp[1]:5 100001.0 +(byte) textbox::y#5 y zp[1]:5 100001.0 (byte) textbox::y1 -(byte) textbox::y1#0 y1 zp[1]:5 22.0 -(byte) textbox::y1#4 y1 zp[1]:5 2.5 +(byte) textbox::y1#0 y1 zp[1]:5 202.0 +(byte) textbox::y1#4 y1 zp[1]:5 350.5 (byte) textbox::y2 -(byte) textbox::y2#0 y2 zp[1]:7 7.333333333333333 -(byte) textbox::y2#4 y2 zp[1]:7 4.617021276595745 +(byte) textbox::y2#0 y2 zp[1]:7 67.33333333333333 +(byte) textbox::y2#4 y2 zp[1]:7 4300.106382978724 (word) textbox::z -(word) textbox::z#0 z zp[2]:12 1.3333333333333333 -(word) textbox::z#1 z zp[2]:12 101.0 -(word) textbox::z#2 z zp[2]:12 202.0 -(word) textbox::z#3 z zp[2]:12 29.000000000000004 -(word) textbox::z#4 z zp[2]:12 151.5 -(word) textbox::z#5 z zp[2]:12 101.0 +(word) textbox::z#0 z zp[2]:12 667.3333333333334 +(word) textbox::z#1 z zp[2]:12 100001.0 +(word) textbox::z#2 z zp[2]:12 200002.0 +(word) textbox::z#3 z zp[2]:12 28643.214285714286 +(word) textbox::z#4 z zp[2]:12 150001.5 +(word) textbox::z#5 z zp[2]:12 100001.0 zp[1]:2 [ main::x#2 main::x#1 textbox::x1#4 textbox::x1#0 draw_window::x1#0 ] zp[2]:3 [ main::wait#2 main::wait#1 ] diff --git a/src/test/ref/textbox.sym b/src/test/ref/textbox.sym index fffc2711a..a82a4761a 100644 --- a/src/test/ref/textbox.sym +++ b/src/test/ref/textbox.sym @@ -2,34 +2,34 @@ (label) @begin (label) @end (void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2) -(word~) draw_window::$14 zp[2]:35 202.0 -(word~) draw_window::$15 zp[2]:37 202.0 -(word~) draw_window::$19 zp[2]:33 202.0 -(word~) draw_window::$2 zp[2]:23 4.0 -(word~) draw_window::$20 zp[2]:31 202.0 -(word~) draw_window::$26 zp[2]:29 2002.0 -(byte*~) draw_window::$27 zp[2]:35 202.0 -(byte*~) draw_window::$28 zp[2]:37 202.0 -(byte*~) draw_window::$29 zp[2]:23 4.0 -(word~) draw_window::$3 zp[2]:19 4.0 -(byte*~) draw_window::$30 zp[2]:19 4.0 -(byte*~) draw_window::$31 zp[2]:33 202.0 -(byte*~) draw_window::$32 zp[2]:31 202.0 -(byte*~) draw_window::$33 zp[2]:25 4.0 -(byte*~) draw_window::$34 zp[2]:21 4.0 -(byte*~) draw_window::$35 zp[2]:29 2002.0 -(byte~) draw_window::$36 reg byte a 4.0 -(byte~) draw_window::$37 reg byte a 4.0 -(byte~) draw_window::$39 reg byte a 4.0 -(word~) draw_window::$4 zp[2]:25 4.0 -(byte~) draw_window::$40 reg byte a 4.0 -(byte~) draw_window::$42 reg byte a 202.0 -(byte~) draw_window::$43 reg byte a 202.0 -(byte~) draw_window::$45 reg byte a 202.0 -(byte~) draw_window::$46 reg byte a 202.0 -(word~) draw_window::$5 zp[2]:21 4.0 -(byte~) draw_window::$6 reg byte x 2.0 -(byte~) draw_window::$8 reg byte a 2.0 +(word~) draw_window::$14 zp[2]:35 2000002.0 +(word~) draw_window::$15 zp[2]:37 2000002.0 +(word~) draw_window::$19 zp[2]:33 2000002.0 +(word~) draw_window::$2 zp[2]:23 20002.0 +(word~) draw_window::$20 zp[2]:31 2000002.0 +(word~) draw_window::$26 zp[2]:29 2.0000002E7 +(byte*~) draw_window::$27 zp[2]:35 2000002.0 +(byte*~) draw_window::$28 zp[2]:37 2000002.0 +(byte*~) draw_window::$29 zp[2]:23 20002.0 +(word~) draw_window::$3 zp[2]:19 20002.0 +(byte*~) draw_window::$30 zp[2]:19 20002.0 +(byte*~) draw_window::$31 zp[2]:33 2000002.0 +(byte*~) draw_window::$32 zp[2]:31 2000002.0 +(byte*~) draw_window::$33 zp[2]:25 20002.0 +(byte*~) draw_window::$34 zp[2]:21 20002.0 +(byte*~) draw_window::$35 zp[2]:29 2.0000002E7 +(byte~) draw_window::$36 reg byte a 20002.0 +(byte~) draw_window::$37 reg byte a 20002.0 +(byte~) draw_window::$39 reg byte a 20002.0 +(word~) draw_window::$4 zp[2]:25 20002.0 +(byte~) draw_window::$40 reg byte a 20002.0 +(byte~) draw_window::$42 reg byte a 2000002.0 +(byte~) draw_window::$43 reg byte a 2000002.0 +(byte~) draw_window::$45 reg byte a 2000002.0 +(byte~) draw_window::$46 reg byte a 2000002.0 +(word~) draw_window::$5 zp[2]:21 20002.0 +(byte~) draw_window::$6 reg byte x 10001.0 +(byte~) draw_window::$8 reg byte a 10001.0 (label) draw_window::@1 (label) draw_window::@10 (label) draw_window::@11 @@ -45,37 +45,37 @@ (label) draw_window::@9 (label) draw_window::@return (word) draw_window::q -(word) draw_window::q#0 q zp[2]:21 3.242424242424242 +(word) draw_window::q#0 q zp[2]:21 31212.242424242428 (byte) draw_window::x -(byte) draw_window::x#0 reg byte x 4.0 -(byte) draw_window::x#1 reg byte x 202.0 -(byte) draw_window::x#2 reg byte x 63.375 +(byte) draw_window::x#0 reg byte x 20002.0 +(byte) draw_window::x#1 reg byte x 2000002.0 +(byte) draw_window::x#2 reg byte x 626250.75 (byte) draw_window::x1 -(byte) draw_window::x1#0 x1 zp[1]:2 3.365079365079365 +(byte) draw_window::x1#0 x1 zp[1]:2 32396.93650793651 (byte) draw_window::x2 -(byte) draw_window::x2#0 x2 zp[1]:6 19.852459016393443 +(byte) draw_window::x2#0 x2 zp[1]:6 197229.62295081967 (byte) draw_window::x3 -(byte) draw_window::x3#0 reg byte x 202.0 -(byte) draw_window::x3#1 reg byte x 2002.0 -(byte) draw_window::x3#2 reg byte x 821.0 +(byte) draw_window::x3#0 reg byte x 2000002.0 +(byte) draw_window::x3#1 reg byte x 2.0000002E7 +(byte) draw_window::x3#2 reg byte x 8200001.0 (byte) draw_window::y -(byte) draw_window::y#0 reg byte x 4.0 -(byte) draw_window::y#1 reg byte x 202.0 -(byte) draw_window::y#2 reg byte x 46.090909090909086 +(byte) draw_window::y#0 reg byte x 20002.0 +(byte) draw_window::y#1 reg byte x 2000002.0 +(byte) draw_window::y#2 reg byte x 455455.09090909094 (byte) draw_window::y1 -(byte) draw_window::y1#0 y1 zp[1]:5 0.24999999999999997 +(byte) draw_window::y1#0 y1 zp[1]:5 1062.625 (byte) draw_window::y2 -(byte) draw_window::y2#0 y2 zp[1]:7 3.5 +(byte) draw_window::y2#0 y2 zp[1]:7 33850.100000000006 (byte) draw_window::y3 -(byte) draw_window::y3#0 y3 zp[1]:18 4.0 -(byte) draw_window::y3#1 y3 zp[1]:18 202.0 -(byte) draw_window::y3#2 y3 zp[1]:18 42.24999999999999 +(byte) draw_window::y3#0 y3 zp[1]:18 20002.0 +(byte) draw_window::y3#1 y3 zp[1]:18 2000002.0 +(byte) draw_window::y3#2 y3 zp[1]:18 417500.50000000006 (word) draw_window::z -(word) draw_window::z#0 z zp[2]:19 6.294117647058823 -(word) draw_window::z#1 z_1 zp[2]:31 75.75 -(word) draw_window::z#2 z_2 zp[2]:27 137.75 +(word) draw_window::z#0 z zp[2]:19 60588.470588235294 +(word) draw_window::z#1 z_1 zp[2]:31 750000.75 +(word) draw_window::z#2 z_2 zp[2]:27 1375000.25 (void()) main() -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -86,26 +86,26 @@ (label) main::@8 (label) main::@9 (word) main::wait -(word) main::wait#1 wait zp[2]:3 202.0 -(word) main::wait#2 wait zp[2]:3 151.5 +(word) main::wait#1 wait zp[2]:3 2002.0 +(word) main::wait#2 wait zp[2]:3 1501.5 (byte) main::x -(byte) main::x#1 x zp[1]:2 22.0 -(byte) main::x#2 x zp[1]:2 8.0 +(byte) main::x#1 x zp[1]:2 202.0 +(byte) main::x#2 x zp[1]:2 73.45454545454545 (const byte*) screen = (byte*) 1024 (const byte*) text[] = (byte*) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!" (const byte*) text2[] = (byte*) "textbox by scan of desire" (void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text) -(byte~) textbox::$16 reg byte y 101.0 -(byte~) textbox::$18 zp[1]:18 101.0 -(word~) textbox::$3 zp[2]:12 3.0 -(byte*~) textbox::$32 zp[2]:16 202.0 -(word~) textbox::$33 zp[2]:14 4.0 -(word~) textbox::$34 zp[2]:12 4.0 -(byte~) textbox::$36 reg byte a 202.0 -(byte~) textbox::$37 reg byte a 202.0 -(byte~) textbox::$39 reg byte a 202.0 -(byte~) textbox::$40 reg byte a 202.0 -(word~) textbox::$9 zp[2]:16 202.0 +(byte~) textbox::$16 reg byte y 100001.0 +(byte~) textbox::$18 zp[1]:18 100001.0 +(word~) textbox::$3 zp[2]:12 1501.5 +(byte*~) textbox::$32 zp[2]:16 200002.0 +(word~) textbox::$33 zp[2]:14 2002.0 +(word~) textbox::$34 zp[2]:12 2002.0 +(byte~) textbox::$36 reg byte a 200002.0 +(byte~) textbox::$37 reg byte a 200002.0 +(byte~) textbox::$39 reg byte a 200002.0 +(byte~) textbox::$40 reg byte a 200002.0 +(word~) textbox::$9 zp[2]:16 200002.0 (label) textbox::@1 (label) textbox::@10 (label) textbox::@11 @@ -123,51 +123,51 @@ (label) textbox::@9 (label) textbox::@return (byte) textbox::c -(byte) textbox::c#1 reg byte x 2002.0 -(byte) textbox::c#2 reg byte x 314.85714285714283 +(byte) textbox::c#1 reg byte x 2000002.0 +(byte) textbox::c#2 reg byte x 314286.2857142857 (byte) textbox::i -(byte) textbox::i#1 i zp[1]:10 27.545454545454547 -(byte) textbox::i#2 i zp[1]:10 22.954545454545453 +(byte) textbox::i#1 i zp[1]:10 27273.0 +(byte) textbox::i#2 i zp[1]:10 22727.5 (byte) textbox::ls -(byte) textbox::ls#0 reg byte y 202.0 -(byte) textbox::ls#1 reg byte y 1001.0 -(byte) textbox::ls#2 reg byte y 1368.3333333333335 +(byte) textbox::ls#0 reg byte y 200002.0 +(byte) textbox::ls#1 reg byte y 1000001.0 +(byte) textbox::ls#2 reg byte y 1366668.3333333335 (byte*) textbox::text -(byte*) textbox::text#12 text zp[2]:8 49.04255319148936 +(byte*) textbox::text#12 text zp[2]:8 48936.27659574468 (byte) textbox::x -(byte) textbox::x#0 x zp[1]:11 0.8571428571428571 -(byte) textbox::x#1 x zp[1]:11 151.5 -(byte) textbox::x#10 x zp[1]:11 36.214285714285715 -(byte) textbox::x#12 x zp[1]:11 33.666666666666664 -(byte) textbox::x#15 x zp[1]:11 202.0 -(byte) textbox::x#5 x zp[1]:11 202.0 -(byte) textbox::x#7 x zp[1]:11 151.5 +(byte) textbox::x#0 x zp[1]:11 429.0 +(byte) textbox::x#1 x zp[1]:11 150001.5 +(byte) textbox::x#10 x zp[1]:11 35786.142857142855 +(byte) textbox::x#12 x zp[1]:11 33333.666666666664 +(byte) textbox::x#15 x zp[1]:11 200002.0 +(byte) textbox::x#5 x zp[1]:11 200002.0 +(byte) textbox::x#7 x zp[1]:11 150001.5 (byte) textbox::x1 -(byte) textbox::x1#0 x1 zp[1]:2 11.0 -(byte) textbox::x1#4 x1 zp[1]:2 6.76595744680851 +(byte) textbox::x1#0 x1 zp[1]:2 101.0 +(byte) textbox::x1#4 x1 zp[1]:2 6427.787234042553 (byte) textbox::x2 -(byte) textbox::x2#0 x2 zp[1]:6 5.5 -(byte) textbox::x2#4 x2 zp[1]:6 6.76595744680851 +(byte) textbox::x2#0 x2 zp[1]:6 50.5 +(byte) textbox::x2#4 x2 zp[1]:6 6427.787234042553 (byte) textbox::y -(byte) textbox::y#0 y zp[1]:5 0.75 -(byte) textbox::y#1 y zp[1]:5 84.16666666666666 -(byte) textbox::y#11 y zp[1]:5 151.5 -(byte) textbox::y#12 y zp[1]:5 27.06666666666667 -(byte) textbox::y#2 y zp[1]:5 101.0 -(byte) textbox::y#5 y zp[1]:5 101.0 +(byte) textbox::y#0 y zp[1]:5 375.375 +(byte) textbox::y#1 y zp[1]:5 83334.16666666666 +(byte) textbox::y#11 y zp[1]:5 150001.5 +(byte) textbox::y#12 y zp[1]:5 26733.666666666668 +(byte) textbox::y#2 y zp[1]:5 100001.0 +(byte) textbox::y#5 y zp[1]:5 100001.0 (byte) textbox::y1 -(byte) textbox::y1#0 y1 zp[1]:5 22.0 -(byte) textbox::y1#4 y1 zp[1]:5 2.5 +(byte) textbox::y1#0 y1 zp[1]:5 202.0 +(byte) textbox::y1#4 y1 zp[1]:5 350.5 (byte) textbox::y2 -(byte) textbox::y2#0 y2 zp[1]:7 7.333333333333333 -(byte) textbox::y2#4 y2 zp[1]:7 4.617021276595745 +(byte) textbox::y2#0 y2 zp[1]:7 67.33333333333333 +(byte) textbox::y2#4 y2 zp[1]:7 4300.106382978724 (word) textbox::z -(word) textbox::z#0 z zp[2]:12 1.3333333333333333 -(word) textbox::z#1 z zp[2]:12 101.0 -(word) textbox::z#2 z zp[2]:12 202.0 -(word) textbox::z#3 z zp[2]:12 29.000000000000004 -(word) textbox::z#4 z zp[2]:12 151.5 -(word) textbox::z#5 z zp[2]:12 101.0 +(word) textbox::z#0 z zp[2]:12 667.3333333333334 +(word) textbox::z#1 z zp[2]:12 100001.0 +(word) textbox::z#2 z zp[2]:12 200002.0 +(word) textbox::z#3 z zp[2]:12 28643.214285714286 +(word) textbox::z#4 z zp[2]:12 150001.5 +(word) textbox::z#5 z zp[2]:12 100001.0 zp[1]:2 [ main::x#2 main::x#1 textbox::x1#4 textbox::x1#0 draw_window::x1#0 ] zp[2]:3 [ main::wait#2 main::wait#1 ] diff --git a/src/test/ref/tod018-problem.log b/src/test/ref/tod018-problem.log index 554170507..19a8d0ff3 100644 --- a/src/test/ref/tod018-problem.log +++ b/src/test/ref/tod018-problem.log @@ -119,7 +119,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::D018) ← (const byte) main::d018val [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::D018) ← (const byte) main::d018val [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/travis1.log b/src/test/ref/travis1.log index 89d179473..eea130917 100644 --- a/src/test/ref/travis1.log +++ b/src/test/ref/travis1.log @@ -455,40 +455,40 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inversing boolean not [70] (bool~) game_ready::$1 ← (byte) action_count#9 != (byte) 0 from [69] (bool~) game_ready::$0 ← (byte) action_count#9 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#39 (byte*) print_line_cursor#33 (byte*) print_char_cursor#34 (byte*) print_line_cursor#28 -Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#29 -Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#14 -Alias (byte*) print_line_cursor#1 = (byte*) print_line_cursor#11 (byte*) print_line_cursor#12 (byte*) print_line_cursor#2 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#2 (byte*) print_char_cursor#16 (byte*) print_char_cursor#3 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#28 (byte*) print_char_cursor#18 (byte*) print_char_cursor#5 -Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#3 (byte*~) print_ln::$0 (byte*) print_char_cursor#6 (byte*) print_line_cursor#15 (byte*) print_char_cursor#20 (byte*) print_line_cursor#4 (byte*) print_char_cursor#7 -Alias (bool) game_ready::return#0 = (bool) game_ready::return#3 -Alias (byte) main::i#3 = (byte) main::i#5 (byte) main::i#6 (byte) main::i#4 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#31 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#25 -Alias (byte) action_count#1 = (byte) action_count#7 (byte) action_count#19 (byte) action_count#18 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#9 -Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#7 -Alias (byte) action_count#14 = (byte) action_count#8 (byte) action_count#2 -Alias (byte) action_count#10 = (byte) action_count#15 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#24 (byte*) print_char_cursor#25 (byte*) print_char_cursor#12 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#20 (byte*) print_line_cursor#9 -Alias (bool) game_ready::return#1 = (bool~) game_ready::$3 (bool) game_ready::return#4 (bool) game_ready::return#2 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#38 -Alias (byte*) print_line_cursor#31 = (byte*) print_line_cursor#32 -Alias (byte) action_count#11 = (byte) action_count#3 (byte) action_count#5 -Alias (byte) action_count#0 = (byte) action_count#16 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#26 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#21 -Alias (byte) action_count#12 = (byte) action_count#6 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#39 print_line_cursor#33 print_char_cursor#34 print_line_cursor#28 +Alias print_line_cursor#22 = print_line_cursor#29 +Alias print_char_cursor#1 = print_char_cursor#14 +Alias print_line_cursor#1 = print_line_cursor#11 print_line_cursor#12 print_line_cursor#2 +Alias print_char_cursor#15 = print_char_cursor#2 print_char_cursor#16 print_char_cursor#3 +Alias print_str::str#2 = print_str::str#3 +Alias print_char_cursor#17 = print_char_cursor#28 print_char_cursor#18 print_char_cursor#5 +Alias print_line_cursor#14 = print_line_cursor#3 print_ln::$0 print_char_cursor#6 print_line_cursor#15 print_char_cursor#20 print_line_cursor#4 print_char_cursor#7 +Alias game_ready::return#0 = game_ready::return#3 +Alias main::i#3 = main::i#5 main::i#6 main::i#4 +Alias print_char_cursor#21 = print_char_cursor#8 print_char_cursor#31 +Alias print_line_cursor#16 = print_line_cursor#5 print_line_cursor#25 +Alias action_count#1 = action_count#7 action_count#19 action_count#18 +Alias print_char_cursor#22 = print_char_cursor#9 +Alias print_line_cursor#17 = print_line_cursor#6 +Alias print_char_cursor#10 = print_char_cursor#23 print_char_cursor#32 +Alias print_line_cursor#18 = print_line_cursor#26 print_line_cursor#7 +Alias action_count#14 = action_count#8 action_count#2 +Alias action_count#10 = action_count#15 +Alias print_char_cursor#11 = print_char_cursor#24 print_char_cursor#25 print_char_cursor#12 +Alias print_line_cursor#19 = print_line_cursor#8 print_line_cursor#20 print_line_cursor#9 +Alias game_ready::return#1 = game_ready::$3 game_ready::return#4 game_ready::return#2 +Alias print_char_cursor#37 = print_char_cursor#38 +Alias print_line_cursor#31 = print_line_cursor#32 +Alias action_count#11 = action_count#3 action_count#5 +Alias action_count#0 = action_count#16 +Alias print_char_cursor#13 = print_char_cursor#26 +Alias print_line_cursor#10 = print_line_cursor#21 +Alias action_count#12 = action_count#6 Successful SSA optimization Pass2AliasElimination -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) action_count#1 = (byte) action_count#14 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#37 -Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#31 +Alias main::i#2 = main::i#3 +Alias action_count#1 = action_count#14 +Alias print_char_cursor#33 = print_char_cursor#37 +Alias print_line_cursor#27 = print_line_cursor#31 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print_char_cursor#1 (byte*) print_char_cursor#17 Identical Phi Values (byte*) print_line_cursor#1 (byte*) print_line_cursor#14 @@ -724,40 +724,40 @@ game_ready::@return: scope:[game_ready] from game_ready::@2 VARIABLE REGISTER WEIGHTS (byte) action_count -(byte) action_count#10 2.0 -(byte) action_count#11 1.25 -(byte) action_count#13 5.0 +(byte) action_count#10 1001.0 +(byte) action_count#11 175.25 +(byte) action_count#13 701.0 (bool()) game_ready() (bool) game_ready::return -(bool) game_ready::return#0 22.0 -(bool) game_ready::return#1 4.333333333333333 +(bool) game_ready::return#0 202.0 +(bool) game_ready::return#1 367.33333333333337 (void()) main() -(bool~) main::$0 22.0 +(bool~) main::$0 202.0 (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 3.142857142857143 +(byte) main::i#1 101.0 +(byte) main::i#2 28.857142857142858 (byte*) print_char_cursor -(byte*) print_char_cursor#17 40.6 -(byte*) print_char_cursor#27 5.0 -(byte*) print_char_cursor#30 3.25 -(byte*) print_char_cursor#4 101.0 -(byte*) print_char_cursor#41 22.0 -(byte*) print_char_cursor#44 22.0 +(byte*) print_char_cursor#17 4010000.5 +(byte*) print_char_cursor#27 33701.0 +(byte*) print_char_cursor#30 275.5 +(byte*) print_char_cursor#4 1.0000001E7 +(byte*) print_char_cursor#41 202.0 +(byte*) print_char_cursor#44 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#13 204.0 -(byte*) print_line_cursor#14 19.27777777777778 -(byte*) print_line_cursor#22 3.0 -(byte*) print_line_cursor#24 3.25 +(byte*) print_line_cursor#13 2.0100003E7 +(byte*) print_line_cursor#14 1666689.277777778 +(byte*) print_line_cursor#22 20220.600000000002 +(byte*) print_line_cursor#24 275.5 (void()) print_ln() (byte*) print_screen (void()) print_str((byte*) print_str::str) (byte*) print_str::str -(byte*) print_str::str#0 2.0 -(byte*) print_str::str#1 202.0 -(byte*) print_str::str#2 101.5 +(byte*) print_str::str#0 55001.0 +(byte*) print_str::str#1 2.0000002E7 +(byte*) print_str::str#2 1.002500125E7 (void()) print_str_ln((byte*) print_str_ln::str) (byte*) print_str_ln::str -(byte*) print_str_ln::str#2 2.0 +(byte*) print_str_ln::str#2 10001.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -1072,26 +1072,26 @@ game_ready: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] (byte*) print_char_cursor#41 ← (byte*) print_line_cursor#14 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ( main:2 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ) always clobbers reg byte a +Statement [10] (byte*) print_char_cursor#41 ← (byte*) print_line_cursor#14 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ( main:2 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ action_count#10 action_count#13 action_count#11 ] -Statement [15] (byte*) print_char_cursor#44 ← (byte*) print_line_cursor#14 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ) always clobbers reg byte a -Statement [17] (byte*) print_str::str#0 ← (byte*) print_str_ln::str#2 [ print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ( main:2::print_str_ln:11 [ main::i#2 action_count#11 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] main:2::game_ready:6::print_str_ln:37 [ main::i#2 action_count#10 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ) always clobbers reg byte a -Statement [24] (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] ) always clobbers reg byte a -Statement [25] if((byte*) print_line_cursor#14<(byte*) print_char_cursor#17) goto print_ln::@1 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] ) always clobbers reg byte a -Statement [29] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [15] (byte*) print_char_cursor#44 ← (byte*) print_line_cursor#14 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) print_str::str#0 ← (byte*) print_str_ln::str#2 [ print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ( main:2::print_str_ln:11 [ main::i#2 action_count#11 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37 [ main::i#2 action_count#10 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a +Statement [24] (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } } ) always clobbers reg byte a +Statement [25] if((byte*) print_line_cursor#14<(byte*) print_char_cursor#17) goto print_ln::@1 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } } ) always clobbers reg byte a +Statement [29] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ action_count#10 action_count#13 action_count#11 ] -Statement [31] *((byte*) print_char_cursor#17) ← *((byte*) print_str::str#2) [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [39] (bool) game_ready::return#1 ← (byte) action_count#11 == (byte) 0 [ print_line_cursor#14 action_count#11 game_ready::return#1 ] ( main:2::game_ready:6 [ main::i#2 print_line_cursor#14 action_count#11 game_ready::return#1 ] ) always clobbers reg byte a -Statement [10] (byte*) print_char_cursor#41 ← (byte*) print_line_cursor#14 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ( main:2 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ) always clobbers reg byte a -Statement [15] (byte*) print_char_cursor#44 ← (byte*) print_line_cursor#14 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ) always clobbers reg byte a -Statement [17] (byte*) print_str::str#0 ← (byte*) print_str_ln::str#2 [ print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ( main:2::print_str_ln:11 [ main::i#2 action_count#11 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] main:2::game_ready:6::print_str_ln:37 [ main::i#2 action_count#10 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ) always clobbers reg byte a -Statement [24] (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] ) always clobbers reg byte a -Statement [25] if((byte*) print_line_cursor#14<(byte*) print_char_cursor#17) goto print_ln::@1 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] ) always clobbers reg byte a -Statement [29] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [31] *((byte*) print_char_cursor#17) ← *((byte*) print_str::str#2) [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [39] (bool) game_ready::return#1 ← (byte) action_count#11 == (byte) 0 [ print_line_cursor#14 action_count#11 game_ready::return#1 ] ( main:2::game_ready:6 [ main::i#2 print_line_cursor#14 action_count#11 game_ready::return#1 ] ) always clobbers reg byte a +Statement [31] *((byte*) print_char_cursor#17) ← *((byte*) print_str::str#2) [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a reg byte y +Statement [39] (bool) game_ready::return#1 ← (byte) action_count#11 == (byte) 0 [ print_line_cursor#14 action_count#11 game_ready::return#1 ] ( main:2::game_ready:6 [ main::i#2 print_line_cursor#14 action_count#11 game_ready::return#1 ] { { game_ready::return#0 = game_ready::return#1 } } ) always clobbers reg byte a +Statement [10] (byte*) print_char_cursor#41 ← (byte*) print_line_cursor#14 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] ( main:2 [ main::i#2 print_line_cursor#14 action_count#11 print_char_cursor#41 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } ) always clobbers reg byte a +Statement [15] (byte*) print_char_cursor#44 ← (byte*) print_line_cursor#14 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#14 action_count#11 main::i#1 ] { } ) always clobbers reg byte a +Statement [17] (byte*) print_str::str#0 ← (byte*) print_str_ln::str#2 [ print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] ( main:2::print_str_ln:11 [ main::i#2 action_count#11 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37 [ main::i#2 action_count#10 print_char_cursor#27 print_line_cursor#22 print_str::str#0 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a +Statement [24] (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#13 + (byte) $28 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } } ) always clobbers reg byte a +Statement [25] if((byte*) print_line_cursor#14<(byte*) print_char_cursor#17) goto print_ln::@1 [ print_line_cursor#14 print_char_cursor#17 ] ( main:2::print_str_ln:11::print_ln:20 [ main::i#2 action_count#11 print_line_cursor#14 print_char_cursor#17 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } } main:2::game_ready:6::print_str_ln:37::print_ln:20 [ main::i#2 action_count#10 print_line_cursor#14 print_char_cursor#17 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } } ) always clobbers reg byte a +Statement [29] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a reg byte y +Statement [31] *((byte*) print_char_cursor#17) ← *((byte*) print_str::str#2) [ print_char_cursor#17 print_str::str#2 ] ( main:2::print_str_ln:11::print_str:18 [ main::i#2 action_count#11 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { print_char_cursor#27 = print_char_cursor#41 } { print_line_cursor#14 = print_line_cursor#22 } { print_str::str#0 = print_str_ln::str#2 } } main:2::game_ready:6::print_str_ln:37::print_str:18 [ main::i#2 action_count#10 print_line_cursor#22 print_char_cursor#17 print_str::str#2 ] { { game_ready::return#0 = game_ready::return#1 } { print_char_cursor#27 = print_char_cursor#30 } { print_line_cursor#22 = print_line_cursor#24 } { print_str::str#0 = print_str_ln::str#2 } } ) always clobbers reg byte a reg byte y +Statement [39] (bool) game_ready::return#1 ← (byte) action_count#11 == (byte) 0 [ print_line_cursor#14 action_count#11 game_ready::return#1 ] ( main:2::game_ready:6 [ main::i#2 print_line_cursor#14 action_count#11 game_ready::return#1 ] { { game_ready::return#0 = game_ready::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ print_str_ln::str#2 ] : zp[2]:3 , Potential registers zp[2]:5 [ print_line_cursor#13 print_line_cursor#22 print_line_cursor#24 print_line_cursor#14 ] : zp[2]:5 , @@ -1103,19 +1103,19 @@ Potential registers zp[1]:13 [ main::$0 ] : zp[1]:13 , reg byte a , reg byte x , Potential registers zp[1]:14 [ game_ready::return#1 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 229.53: zp[2]:5 [ print_line_cursor#13 print_line_cursor#22 print_line_cursor#24 print_line_cursor#14 ] 193.85: zp[2]:9 [ print_char_cursor#17 print_char_cursor#27 print_char_cursor#30 print_char_cursor#44 print_char_cursor#41 print_char_cursor#4 ] 8.25: zp[1]:11 [ action_count#10 action_count#13 action_count#11 ] -Uplift Scope [print_str] 305.5: zp[2]:7 [ print_str::str#2 print_str::str#0 print_str::str#1 ] -Uplift Scope [main] 22: zp[1]:13 [ main::$0 ] 14.14: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [game_ready] 22: zp[1]:12 [ game_ready::return#0 ] 4.33: zp[1]:14 [ game_ready::return#1 ] -Uplift Scope [print_str_ln] 2: zp[2]:3 [ print_str_ln::str#2 ] +Uplift Scope [] 21,787,188.38: zp[2]:5 [ print_line_cursor#13 print_line_cursor#22 print_line_cursor#24 print_line_cursor#14 ] 14,044,382: zp[2]:9 [ print_char_cursor#17 print_char_cursor#27 print_char_cursor#30 print_char_cursor#44 print_char_cursor#41 print_char_cursor#4 ] 1,877.25: zp[1]:11 [ action_count#10 action_count#13 action_count#11 ] +Uplift Scope [print_str] 30,080,004.25: zp[2]:7 [ print_str::str#2 print_str::str#0 print_str::str#1 ] +Uplift Scope [print_str_ln] 10,001: zp[2]:3 [ print_str_ln::str#2 ] +Uplift Scope [game_ready] 367.33: zp[1]:14 [ game_ready::return#1 ] 202: zp[1]:12 [ game_ready::return#0 ] +Uplift Scope [main] 202: zp[1]:13 [ main::$0 ] 129.86: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplifting [] best 11631 combination zp[2]:5 [ print_line_cursor#13 print_line_cursor#22 print_line_cursor#24 print_line_cursor#14 ] zp[2]:9 [ print_char_cursor#17 print_char_cursor#27 print_char_cursor#30 print_char_cursor#44 print_char_cursor#41 print_char_cursor#4 ] reg byte x [ action_count#10 action_count#13 action_count#11 ] Uplifting [print_str] best 11631 combination zp[2]:7 [ print_str::str#2 print_str::str#0 print_str::str#1 ] -Uplifting [main] best 11571 combination reg byte a [ main::$0 ] zp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [game_ready] best 11478 combination reg byte a [ game_ready::return#0 ] reg byte a [ game_ready::return#1 ] -Uplifting [print_str_ln] best 11478 combination zp[2]:3 [ print_str_ln::str#2 ] +Uplifting [print_str_ln] best 11631 combination zp[2]:3 [ print_str_ln::str#2 ] +Uplifting [game_ready] best 11538 combination reg byte a [ game_ready::return#1 ] reg byte a [ game_ready::return#0 ] +Uplifting [main] best 11478 combination reg byte a [ main::$0 ] zp[1]:2 [ main::i#2 main::i#1 ] Uplifting [RADIX] best 11478 combination Uplifting [print_ln] best 11478 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] @@ -1459,20 +1459,20 @@ FINAL SYMBOL TABLE (const byte) RADIX::OCTAL = (number) 8 (const byte) READY_FRAMES = (byte) 5 (byte) action_count -(byte) action_count#10 reg byte x 2.0 -(byte) action_count#11 reg byte x 1.25 -(byte) action_count#13 reg byte x 5.0 +(byte) action_count#10 reg byte x 1001.0 +(byte) action_count#11 reg byte x 175.25 +(byte) action_count#13 reg byte x 701.0 (bool()) game_ready() (label) game_ready::@1 (label) game_ready::@2 (label) game_ready::@3 (label) game_ready::@return (bool) game_ready::return -(bool) game_ready::return#0 reg byte a 22.0 -(bool) game_ready::return#1 reg byte a 4.333333333333333 +(bool) game_ready::return#0 reg byte a 202.0 +(bool) game_ready::return#1 reg byte a 367.33333333333337 (const byte*) game_ready::str[(byte) 6] = (byte*) "ready" (void()) main() -(bool~) main::$0 reg byte a 22.0 +(bool~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -1480,21 +1480,21 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 11.0 -(byte) main::i#2 i zp[1]:2 3.142857142857143 +(byte) main::i#1 i zp[1]:2 101.0 +(byte) main::i#2 i zp[1]:2 28.857142857142858 (const byte*) main::str[(byte) 7] = (byte*) "ready!" (byte*) print_char_cursor -(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 40.6 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 5.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:7 3.25 -(byte*) print_char_cursor#4 print_char_cursor zp[2]:7 101.0 -(byte*) print_char_cursor#41 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:7 22.0 +(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 4010000.5 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 33701.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:7 275.5 +(byte*) print_char_cursor#4 print_char_cursor zp[2]:7 1.0000001E7 +(byte*) print_char_cursor#41 print_char_cursor zp[2]:7 202.0 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:7 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 204.0 -(byte*) print_line_cursor#14 print_line_cursor zp[2]:5 19.27777777777778 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:5 3.0 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:5 3.25 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 2.0100003E7 +(byte*) print_line_cursor#14 print_line_cursor zp[2]:5 1666689.277777778 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:5 20220.600000000002 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:5 275.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1504,14 +1504,14 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:3 2.0 -(byte*) print_str::str#1 str zp[2]:3 202.0 -(byte*) print_str::str#2 str zp[2]:3 101.5 +(byte*) print_str::str#0 str zp[2]:3 55001.0 +(byte*) print_str::str#1 str zp[2]:3 2.0000002E7 +(byte*) print_str::str#2 str zp[2]:3 1.002500125E7 (void()) print_str_ln((byte*) print_str_ln::str) (label) print_str_ln::@1 (label) print_str_ln::@return (byte*) print_str_ln::str -(byte*) print_str_ln::str#2 str zp[2]:3 2.0 +(byte*) print_str_ln::str#2 str zp[2]:3 10001.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ print_str_ln::str#2 print_str::str#2 print_str::str#0 print_str::str#1 ] diff --git a/src/test/ref/travis1.sym b/src/test/ref/travis1.sym index 54482f5ac..82cc9fcad 100644 --- a/src/test/ref/travis1.sym +++ b/src/test/ref/travis1.sym @@ -7,20 +7,20 @@ (const byte) RADIX::OCTAL = (number) 8 (const byte) READY_FRAMES = (byte) 5 (byte) action_count -(byte) action_count#10 reg byte x 2.0 -(byte) action_count#11 reg byte x 1.25 -(byte) action_count#13 reg byte x 5.0 +(byte) action_count#10 reg byte x 1001.0 +(byte) action_count#11 reg byte x 175.25 +(byte) action_count#13 reg byte x 701.0 (bool()) game_ready() (label) game_ready::@1 (label) game_ready::@2 (label) game_ready::@3 (label) game_ready::@return (bool) game_ready::return -(bool) game_ready::return#0 reg byte a 22.0 -(bool) game_ready::return#1 reg byte a 4.333333333333333 +(bool) game_ready::return#0 reg byte a 202.0 +(bool) game_ready::return#1 reg byte a 367.33333333333337 (const byte*) game_ready::str[(byte) 6] = (byte*) "ready" (void()) main() -(bool~) main::$0 reg byte a 22.0 +(bool~) main::$0 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -28,21 +28,21 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 11.0 -(byte) main::i#2 i zp[1]:2 3.142857142857143 +(byte) main::i#1 i zp[1]:2 101.0 +(byte) main::i#2 i zp[1]:2 28.857142857142858 (const byte*) main::str[(byte) 7] = (byte*) "ready!" (byte*) print_char_cursor -(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 40.6 -(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 5.0 -(byte*) print_char_cursor#30 print_char_cursor zp[2]:7 3.25 -(byte*) print_char_cursor#4 print_char_cursor zp[2]:7 101.0 -(byte*) print_char_cursor#41 print_char_cursor zp[2]:7 22.0 -(byte*) print_char_cursor#44 print_char_cursor zp[2]:7 22.0 +(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 4010000.5 +(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 33701.0 +(byte*) print_char_cursor#30 print_char_cursor zp[2]:7 275.5 +(byte*) print_char_cursor#4 print_char_cursor zp[2]:7 1.0000001E7 +(byte*) print_char_cursor#41 print_char_cursor zp[2]:7 202.0 +(byte*) print_char_cursor#44 print_char_cursor zp[2]:7 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 204.0 -(byte*) print_line_cursor#14 print_line_cursor zp[2]:5 19.27777777777778 -(byte*) print_line_cursor#22 print_line_cursor zp[2]:5 3.0 -(byte*) print_line_cursor#24 print_line_cursor zp[2]:5 3.25 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:5 2.0100003E7 +(byte*) print_line_cursor#14 print_line_cursor zp[2]:5 1666689.277777778 +(byte*) print_line_cursor#22 print_line_cursor zp[2]:5 20220.600000000002 +(byte*) print_line_cursor#24 print_line_cursor zp[2]:5 275.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -52,14 +52,14 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp[2]:3 2.0 -(byte*) print_str::str#1 str zp[2]:3 202.0 -(byte*) print_str::str#2 str zp[2]:3 101.5 +(byte*) print_str::str#0 str zp[2]:3 55001.0 +(byte*) print_str::str#1 str zp[2]:3 2.0000002E7 +(byte*) print_str::str#2 str zp[2]:3 1.002500125E7 (void()) print_str_ln((byte*) print_str_ln::str) (label) print_str_ln::@1 (label) print_str_ln::@return (byte*) print_str_ln::str -(byte*) print_str_ln::str#2 str zp[2]:3 2.0 +(byte*) print_str_ln::str#2 str zp[2]:3 10001.0 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ print_str_ln::str#2 print_str::str#2 print_str::str#0 print_str::str#1 ] diff --git a/src/test/ref/true-inline-words.log b/src/test/ref/true-inline-words.log index c22187da0..1ee7f684a 100644 --- a/src/test/ref/true-inline-words.log +++ b/src/test/ref/true-inline-words.log @@ -90,10 +90,10 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word) main::w#0 = (word~) main::$5 -Alias (word~) main::$0 = (word~) main::$6 -Alias (word~) main::$2 = (word~) main::$7 -Alias (word) main::w2#0 = (word~) main::$3 +Alias main::w#0 = main::$5 +Alias main::$0 = main::$6 +Alias main::$2 = main::$7 +Alias main::w2#0 = main::$3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$4 [8] if(*((const byte*) main::pos)==(byte) 'm') goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -135,7 +135,7 @@ Simplifying expression containing zero main::$1 in [4] (word) main::w2#0 ← (wo Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const word) main::$2 Successful SSA optimization PassNEliminateUnusedVars -Alias (word) main::w2#0 = (word~) main::$1 +Alias main::w2#0 = main::$1 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (word) main::w2#0 ← (const word) main::$0 + (const word) main::w#0 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -261,10 +261,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::sc#0) ← *((const byte*) main::bs+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] if(*((const byte*) main::pos)==(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::bgcol) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::bgcol) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::sc#0) ← *((const byte*) main::bs+(byte) 1) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] if(*((const byte*) main::pos)==(byte) 'm') goto main::@1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::bgcol) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::bgcol) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/type-inference.log b/src/test/ref/type-inference.log index cd0d1ba98..a46ebd447 100644 --- a/src/test/ref/type-inference.log +++ b/src/test/ref/type-inference.log @@ -123,11 +123,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 11.0 -(byte~) main::$2 22.0 +(byte~) main::$0 101.0 +(byte~) main::$2 202.0 (byte) main::b -(byte) main::b#1 16.5 -(byte) main::b#2 11.0 +(byte) main::b#1 151.5 +(byte) main::b#2 101.0 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -213,19 +213,19 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$2 ← (byte) main::b#2 << (byte) 1 [ main::b#2 main::$0 main::$2 ] ( main:2 [ main::b#2 main::$0 main::$2 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::b#2 << (byte) 1 [ main::b#2 main::$0 main::$2 ] ( main:2 [ main::b#2 main::$0 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::b#2 main::b#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::$0 ] -Statement [8] *((const word*) main::screen + (byte~) main::$2) ← (byte~) main::$0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte) -$30 + (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← (byte) main::b#2 << (byte) 1 [ main::b#2 main::$0 main::$2 ] ( main:2 [ main::b#2 main::$0 main::$2 ] ) always clobbers reg byte a -Statement [8] *((const word*) main::screen + (byte~) main::$2) ← (byte~) main::$0 [ main::b#2 ] ( main:2 [ main::b#2 ] ) always clobbers reg byte a +Statement [8] *((const word*) main::screen + (byte~) main::$2) ← (byte~) main::$0 [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) -$30 + (byte) main::b#2 [ main::b#2 main::$0 ] ( main:2 [ main::b#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::b#2 << (byte) 1 [ main::b#2 main::$0 main::$2 ] ( main:2 [ main::b#2 main::$0 main::$2 ] { } ) always clobbers reg byte a +Statement [8] *((const word*) main::screen + (byte~) main::$2) ← (byte~) main::$0 [ main::b#2 ] ( main:2 [ main::b#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::b#2 main::b#1 ] 22: zp[1]:4 [ main::$2 ] 11: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::b#2 main::b#1 ] 202: zp[1]:4 [ main::$2 ] 101: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 473 combination zp[1]:2 [ main::b#2 main::b#1 ] reg byte a [ main::$2 ] reg byte x [ main::$0 ] @@ -327,13 +327,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte x 11.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte x 101.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::b -(byte) main::b#1 b zp[1]:2 16.5 -(byte) main::b#2 b zp[1]:2 11.0 +(byte) main::b#1 b zp[1]:2 151.5 +(byte) main::b#2 b zp[1]:2 101.0 (const word*) main::screen = (word*) 1024 zp[1]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/type-inference.sym b/src/test/ref/type-inference.sym index 293face75..a9f6a7230 100644 --- a/src/test/ref/type-inference.sym +++ b/src/test/ref/type-inference.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte x 11.0 -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte x 101.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@return (byte) main::b -(byte) main::b#1 b zp[1]:2 16.5 -(byte) main::b#2 b zp[1]:2 11.0 +(byte) main::b#1 b zp[1]:2 151.5 +(byte) main::b#2 b zp[1]:2 101.0 (const word*) main::screen = (word*) 1024 zp[1]:2 [ main::b#2 main::b#1 ] diff --git a/src/test/ref/type-mix.log b/src/test/ref/type-mix.log index ff97e0f9b..e2a903d6b 100644 --- a/src/test/ref/type-mix.log +++ b/src/test/ref/type-mix.log @@ -61,7 +61,7 @@ Successful SSA optimization PassNCastSimplification Finalized signed number type (signed byte) $c Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to signed word in (snumber~) main::$0 ← (signed word) main::w#2 - (signed byte) $c -Alias (signed word) main::w#1 = (signed word~) main::$0 +Alias main::w#1 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 [8] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -132,13 +132,13 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 8.25 +(byte) main::i#1 151.5 +(byte) main::i#2 75.75 (signed word) main::w -(signed word) main::w#1 6.6000000000000005 -(signed word) main::w#2 22.0 +(signed word) main::w#1 60.599999999999994 +(signed word) main::w#2 202.0 Initial phi equivalence classes [ main::w#2 main::w#1 ] @@ -231,17 +231,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed word) main::w#1 ← (signed word) main::w#2 - (signed byte) $c [ main::i#2 main::w#1 ] ( main:2 [ main::i#2 main::w#1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::w#1 ← (signed word) main::w#2 - (signed byte) $c [ main::i#2 main::w#1 ] ( main:2 [ main::i#2 main::w#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$1 ← < (signed word) main::w#1 [ main::i#2 main::w#1 main::$1 ] ( main:2 [ main::i#2 main::w#1 main::$1 ] ) always clobbers reg byte a -Statement [6] (signed word) main::w#1 ← (signed word) main::w#2 - (signed byte) $c [ main::i#2 main::w#1 ] ( main:2 [ main::i#2 main::w#1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← < (signed word) main::w#1 [ main::i#2 main::w#1 main::$1 ] ( main:2 [ main::i#2 main::w#1 main::$1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::w#1 ← (signed word) main::w#2 - (signed byte) $c [ main::i#2 main::w#1 ] ( main:2 [ main::i#2 main::w#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w#2 main::w#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 28.6: zp[2]:2 [ main::w#2 main::w#1 ] 24.75: zp[1]:4 [ main::i#2 main::i#1 ] 22: zp[1]:5 [ main::$1 ] +Uplift Scope [main] 262.6: zp[2]:2 [ main::w#2 main::w#1 ] 227.25: zp[1]:4 [ main::i#2 main::i#1 ] 202: zp[1]:5 [ main::$1 ] Uplift Scope [] Uplifting [main] best 553 combination zp[2]:2 [ main::w#2 main::w#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -350,16 +348,16 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (signed word) main::w -(signed word) main::w#1 w zp[2]:2 6.6000000000000005 -(signed word) main::w#2 w zp[2]:2 22.0 +(signed word) main::w#1 w zp[2]:2 60.599999999999994 +(signed word) main::w#2 w zp[2]:2 202.0 zp[2]:2 [ main::w#2 main::w#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/type-mix.sym b/src/test/ref/type-mix.sym index be467ad92..d189ac452 100644 --- a/src/test/ref/type-mix.sym +++ b/src/test/ref/type-mix.sym @@ -2,16 +2,16 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 8.25 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 75.75 (signed word) main::w -(signed word) main::w#1 w zp[2]:2 6.6000000000000005 -(signed word) main::w#2 w zp[2]:2 22.0 +(signed word) main::w#1 w zp[2]:2 60.599999999999994 +(signed word) main::w#2 w zp[2]:2 202.0 zp[2]:2 [ main::w#2 main::w#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/type-signed.asm b/src/test/ref/type-signed.asm index 7dac4faa9..d3eabf847 100644 --- a/src/test/ref/type-signed.asm +++ b/src/test/ref/type-signed.asm @@ -2,12 +2,14 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_line_cursor = 6 + .label print_line_cursor = 7 .label print_char_cursor = $b main: { .label a = 2 .label b = 4 - ldx #0 + .label i = 6 + lda #0 + sta.z i lda #<$400 sta.z print_line_cursor lda #>$400 @@ -59,8 +61,9 @@ main: { // print_ln() jsr print_ln // for( byte i : 0..5 ) - inx - cpx #6 + inc.z i + lda #6 + cmp.z i bne __b6 // } rts @@ -95,26 +98,23 @@ print_ln: { rts } // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 + .label w = 9 // print_byte(>w) - lda.z w+1 - sta.z print_byte.b + ldx.z w+1 jsr print_byte // print_byte(>4 - lda.z b + txa lsr lsr lsr @@ -126,10 +126,9 @@ print_byte: { jsr print_char // b&$f lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - tay - lda print_hextab,y + lda print_hextab,x jsr print_char // } rts @@ -149,9 +148,9 @@ print_char: { rts } // Print a signed word as HEX -// print_sword(signed word zp(8) w) +// print_sword(signed word zp(9) w) print_sword: { - .label w = 8 + .label w = 9 // if(w<0) lda.z w+1 bmi __b1 diff --git a/src/test/ref/type-signed.log b/src/test/ref/type-signed.log index 7583cda13..5fa77c4f4 100644 --- a/src/test/ref/type-signed.log +++ b/src/test/ref/type-signed.log @@ -478,35 +478,35 @@ Finalized signed number type (signed byte) -7 Finalized unsigned number type (word) $141 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#48 (byte*) print_line_cursor#14 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#22 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#43 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#3 -Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#26 (byte*) print_char_cursor#6 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#2 = (word) print_word::w#3 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#7 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#29 (byte*) print_char_cursor#9 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#30 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#12 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#14 -Alias (word) main::b#1 = (word) main::b#5 (word) main::b#3 (word) main::b#6 (word) main::b#4 -Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#16 (byte*) print_line_cursor#17 (byte*) print_line_cursor#15 -Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#6 (byte) main::i#4 (byte) main::i#3 -Alias (signed word) main::a#1 = (signed word) main::a#6 (signed word) main::a#5 (signed word) main::a#4 (signed word) main::a#3 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#35 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 -Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#39 (byte*) print_char_cursor#19 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#40 -Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 +Alias print_char_cursor#0 = print_line_cursor#0 print_screen#0 print_char_cursor#48 print_line_cursor#14 +Alias print_line_cursor#1 = print_ln::$0 print_line_cursor#7 print_char_cursor#1 print_line_cursor#8 print_char_cursor#22 print_line_cursor#2 print_char_cursor#2 +Alias print_char_cursor#42 = print_char_cursor#49 print_char_cursor#43 +Alias print_sword::w#2 = print_sword::w#5 print_sword::w#3 print_sword::w#7 print_sword::w#6 +Alias print_char_cursor#23 = print_char_cursor#3 +Alias print_sword::w#0 = print_sword::$5 +Alias print_char_cursor#24 = print_char_cursor#4 +Alias print_word::w#0 = print_sword::$1 +Alias print_char_cursor#25 = print_char_cursor#5 print_char_cursor#26 print_char_cursor#6 +Alias print_byte::b#0 = print_word::$0 +Alias print_word::w#2 = print_word::w#3 +Alias print_char_cursor#27 = print_char_cursor#7 +Alias print_byte::b#1 = print_word::$2 +Alias print_char_cursor#28 = print_char_cursor#8 print_char_cursor#29 print_char_cursor#9 +Alias print_byte::b#2 = print_byte::b#3 +Alias print_char_cursor#10 = print_char_cursor#30 +Alias print_char_cursor#11 = print_char_cursor#31 print_char_cursor#32 print_char_cursor#12 +Alias print_char_cursor#13 = print_char_cursor#34 print_char_cursor#14 +Alias main::b#1 = main::b#5 main::b#3 main::b#6 main::b#4 +Alias print_line_cursor#13 = print_line_cursor#16 print_line_cursor#17 print_line_cursor#15 +Alias main::i#2 = main::i#5 main::i#6 main::i#4 main::i#3 +Alias main::a#1 = main::a#6 main::a#5 main::a#4 main::a#3 +Alias print_char_cursor#15 = print_char_cursor#35 +Alias print_char_cursor#16 = print_char_cursor#36 +Alias print_char_cursor#17 = print_char_cursor#37 +Alias print_line_cursor#10 = print_line_cursor#3 print_line_cursor#9 print_line_cursor#4 +Alias print_char_cursor#18 = print_char_cursor#38 print_char_cursor#39 print_char_cursor#19 +Alias print_char_cursor#20 = print_char_cursor#40 +Alias print_line_cursor#11 = print_line_cursor#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#13 Identical Phi Values (byte*) print_char_cursor#41 (byte*) print_char_cursor#17 @@ -769,47 +769,47 @@ print_sword::@4: scope:[print_sword] from print_sword::@1 VARIABLE REGISTER WEIGHTS (void()) main() (signed word) main::a -(signed word) main::a#1 2.5384615384615383 -(signed word) main::a#2 22.0 +(signed word) main::a#1 23.307692307692307 +(signed word) main::a#2 202.0 (word) main::b -(word) main::b#1 2.75 -(word) main::b#2 11.0 +(word) main::b#1 25.25 +(word) main::b#2 101.0 (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 2.0 +(byte) main::i#1 101.0 +(byte) main::i#2 18.363636363636363 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 4.0 -(byte~) print_byte::$2 4.0 +(byte~) print_byte::$0 200002.0 +(byte~) print_byte::$2 200002.0 (byte) print_byte::b -(byte) print_byte::b#0 4.0 -(byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#0 20002.0 +(byte) print_byte::b#1 20002.0 +(byte) print_byte::b#2 55001.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#2 200002.0 +(byte) print_char::ch#3 200002.0 +(byte) print_char::ch#5 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 3.5757575757575757 -(byte*) print_char_cursor#33 11.5 -(byte*) print_char_cursor#47 2.142857142857143 -(byte*) print_char_cursor#56 22.0 +(byte*) print_char_cursor#13 39397.121212121216 +(byte*) print_char_cursor#33 1101053.5 +(byte*) print_char_cursor#47 300.42857142857144 +(byte*) print_char_cursor#56 202.0 (byte*) print_line_cursor -(byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#13 1.1818181818181819 -(byte*) print_line_cursor#6 204.0 +(byte*) print_line_cursor#1 42886.42857142857 +(byte*) print_line_cursor#13 100.18181818181819 +(byte*) print_line_cursor#6 201003.0 (void()) print_ln() (byte*) print_screen (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w -(signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 2.8333333333333335 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#0 2002.0 +(signed word) print_sword::w#1 517.3333333333334 +(signed word) print_sword::w#4 2002.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 4.0 -(word) print_word::w#1 22.0 -(word) print_word::w#2 5.666666666666667 +(word) print_word::w#0 2002.0 +(word) print_word::w#1 202.0 +(word) print_word::w#2 7034.666666666666 Initial phi equivalence classes [ main::a#2 main::a#1 ] @@ -1199,40 +1199,36 @@ print_sword: { print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ] -Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a -Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a -Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [19] (byte*) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] { { print_word::w#1 = print_word::w#2 main::b#1 } } ) always clobbers reg byte a +Statement [19] (byte*) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] ) always clobbers reg byte y +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_char_cursor#33 = print_char_cursor#47 } } main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_char_cursor#33 = print_char_cursor#47 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a -Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a -Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a -Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a -Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [19] (byte*) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] ) always clobbers reg byte y -Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a -Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } } ) always clobbers reg byte a +Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] { { print_word::w#1 = print_word::w#2 main::b#1 } } ) always clobbers reg byte a +Statement [19] (byte*) print_char_cursor#56 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#56 print_line_cursor#1 main::i#1 ] { } ) always clobbers reg byte a +Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] { } ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } ) always clobbers reg byte a +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#2 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#0 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_word::w#1 = print_word::w#2 main::b#1 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } { print_byte::b#1 = print_byte::b#2 } { print_char::ch#3 = print_char::ch#5 } { print_char_cursor#13 = print_char_cursor#33 } } main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_char_cursor#33 = print_char_cursor#47 } } main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] { { print_sword::w#1 = main::a#1 } { print_char_cursor#33 = print_char_cursor#47 } } ) always clobbers reg byte y +Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a +Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] { { print_sword::w#1 = main::a#1 } { print_word::w#0 = print_word::w#2 } } ) always clobbers reg byte a +Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] { { print_sword::w#1 = main::a#1 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::a#2 main::a#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::b#2 main::b#1 ] : zp[2]:4 , Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x , @@ -1246,29 +1242,26 @@ Potential registers zp[1]:17 [ print_byte::$0 ] : zp[1]:17 , reg byte a , reg by Potential registers zp[1]:18 [ print_byte::$2 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.61: zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] 39.22: zp[2]:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] -Uplift Scope [main] 24.54: zp[2]:2 [ main::a#2 main::a#1 ] 13.75: zp[2]:4 [ main::b#2 main::b#1 ] 13: zp[1]:6 [ main::i#2 main::i#1 ] -Uplift Scope [print_word] 31.67: zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplift Scope [print_byte] 10: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:17 [ print_byte::$0 ] 4: zp[1]:18 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp[1]:12 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [print_sword] 10.83: zp[2]:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [print_char] 1,600,007: zp[1]:12 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [] 1,140,953.05: zp[2]:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] 243,989.61: zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] +Uplift Scope [print_byte] 200,002: zp[1]:17 [ print_byte::$0 ] 200,002: zp[1]:18 [ print_byte::$2 ] 95,005: zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplift Scope [print_word] 9,238.67: zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplift Scope [print_sword] 4,521.33: zp[2]:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplift Scope [main] 225.31: zp[2]:2 [ main::a#2 main::a#1 ] 126.25: zp[2]:4 [ main::b#2 main::b#1 ] 119.36: zp[1]:6 [ main::i#2 main::i#1 ] Uplift Scope [RADIX] Uplift Scope [print_ln] -Uplifting [] best 6079 combination zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp[2]:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] -Uplifting [main] best 5989 combination zp[2]:2 [ main::a#2 main::a#1 ] zp[2]:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] -Uplifting [print_word] best 5989 combination zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplifting [print_byte] best 5981 combination zp[1]:11 [ 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 5963 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sword] best 5963 combination zp[2]:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [RADIX] best 5963 combination -Uplifting [print_ln] best 5963 combination -Attempting to uplift remaining variables inzp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 5963 combination zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_char] best 6061 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [] best 6061 combination zp[2]:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] +Uplifting [print_byte] best 6043 combination reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_word] best 6043 combination zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplifting [print_sword] best 6043 combination zp[2]:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [main] best 6043 combination zp[2]:2 [ main::a#2 main::a#1 ] zp[2]:4 [ main::b#2 main::b#1 ] zp[1]:6 [ main::i#2 main::i#1 ] +Uplifting [RADIX] best 6043 combination +Uplifting [print_ln] best 6043 combination +Attempting to uplift remaining variables inzp[1]:6 [ main::i#2 main::i#1 ] +Uplifting [main] best 6043 combination zp[1]:6 [ main::i#2 main::i#1 ] Coalescing zero page register [ zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] ] with [ zp[2]:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] - score: 1 -Allocated (was zp[2]:7) zp[2]:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -Allocated (was zp[2]:9) zp[2]:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Allocated (was zp[1]:11) zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp[2]:13) zp[2]:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] ASSEMBLER BEFORE OPTIMIZATION @@ -1279,7 +1272,7 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 6 + .label print_line_cursor = 7 .label print_char_cursor = $b // @begin __bbegin: @@ -1301,10 +1294,12 @@ __bend: main: { .label a = 2 .label b = 4 + .label i = 6 // [5] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [5] phi (byte*) print_line_cursor#13 = (byte*) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor @@ -1388,10 +1383,11 @@ main: { jmp __b5 // main::@5 __b5: - // [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z i bne __b6 jmp __breturn // main::@return @@ -1449,12 +1445,11 @@ print_ln: { } // print_word // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 - // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + .label w = 9 + // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [27] call print_byte // [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: @@ -1463,9 +1458,8 @@ print_word: { jmp __b1 // print_word::@1 __b1: - // [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 - lda.z w - sta.z print_byte.b + // [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 + ldx.z w // [29] call print_byte // [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from___b1: @@ -1479,11 +1473,10 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a - // [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -1501,12 +1494,11 @@ print_byte: { jmp __b1 // print_byte::@1 __b1: - // [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b - // [36] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + axs #0 + // [36] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [37] call print_char // [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from___b1: @@ -1539,9 +1531,9 @@ print_char: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp(8) w) +// print_sword(signed word zp(9) w) print_sword: { - .label w = 8 + .label w = 9 // [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 bmi __b1_from_print_sword @@ -1693,39 +1685,39 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (signed word) main::a -(signed word) main::a#1 a zp[2]:2 2.5384615384615383 -(signed word) main::a#2 a zp[2]:2 22.0 +(signed word) main::a#1 a zp[2]:2 23.307692307692307 +(signed word) main::a#2 a zp[2]:2 202.0 (word) main::b -(word) main::b#1 b zp[2]:4 2.75 -(word) main::b#2 b zp[2]:4 11.0 +(word) main::b#1 b zp[2]:4 25.25 +(word) main::b#2 b zp[2]:4 101.0 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 2.0 +(byte) main::i#1 i zp[1]:6 101.0 +(byte) main::i#2 i zp[1]:6 18.363636363636363 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 4.0 -(byte) print_byte::b#1 b zp[1]:10 4.0 -(byte) print_byte::b#2 b zp[1]:10 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:11 3.5757575757575757 -(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 11.5 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 2.142857142857143 -(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:11 39397.121212121216 +(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 1101053.5 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 300.42857142857144 +(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 202.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 46.42857142857143 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:6 1.1818181818181819 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:6 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:7 42886.42857142857 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:7 100.18181818181819 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:7 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1737,31 +1729,31 @@ FINAL SYMBOL TABLE (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:8 4.0 -(signed word) print_sword::w#1 w zp[2]:8 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:8 4.0 +(signed word) print_sword::w#0 w zp[2]:9 2002.0 +(signed word) print_sword::w#1 w zp[2]:9 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:9 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:8 4.0 -(word) print_word::w#1 w zp[2]:8 22.0 -(word) print_word::w#2 w zp[2]:8 5.666666666666667 +(word) print_word::w#0 w zp[2]:9 2002.0 +(word) print_word::w#1 w zp[2]:9 202.0 +(word) print_word::w#2 w zp[2]:9 7034.666666666666 zp[2]:2 [ main::a#2 main::a#1 ] zp[2]:4 [ main::b#2 main::b#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -zp[2]:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[1]:6 [ main::i#2 main::i#1 ] +zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] +zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] zp[2]:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 5183 +Score: 5263 // File Comments // Tests the special "signed" / "unsigned" without a simple type name @@ -1770,7 +1762,7 @@ Score: 5183 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label print_line_cursor = 6 + .label print_line_cursor = 7 .label print_char_cursor = $b // @begin // [1] phi from @begin to @1 [phi:@begin->@1] @@ -1783,9 +1775,11 @@ Score: 5183 main: { .label a = 2 .label b = 4 + .label i = 6 // [5] phi from main to main::@1 [phi:main->main::@1] - // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i // [5] phi (byte*) print_line_cursor#13 = (byte*) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor @@ -1862,10 +1856,11 @@ main: { jsr print_ln // main::@5 // for( byte i : 0..5 ) - // [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx - inx - // [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 - cpx #6 + // [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + lda #6 + cmp.z i bne __b6 // main::@return // } @@ -1919,22 +1914,20 @@ print_ln: { } // print_word // Print a word as HEX -// print_word(word zp(8) w) +// print_word(word zp(9) w) print_word: { - .label w = 8 + .label w = 9 // print_byte(>w) - // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 - lda.z w+1 - sta.z print_byte.b + // [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + ldx.z w+1 // [27] call print_byte // [31] phi from print_word to print_byte [phi:print_word->print_byte] // [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] // [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy @@ -1946,12 +1939,11 @@ print_word: { } // print_byte // Print a byte as HEX -// print_byte(byte zp($a) b) +// print_byte(byte register(X) b) print_byte: { - .label b = $a // b>>4 - // [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda.z b + // [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa lsr lsr lsr @@ -1968,13 +1960,12 @@ print_byte: { jsr print_char // print_byte::@1 // b&$f - // [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + // [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f - and.z b + axs #0 // print_char(print_hextab[b&$f]) - // [36] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y + // [36] (byte) print_char::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x // [37] call print_char // [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] // [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy @@ -2006,9 +1997,9 @@ print_char: { } // print_sword // Print a signed word as HEX -// print_sword(signed word zp(8) w) +// print_sword(signed word zp(9) w) print_sword: { - .label w = 8 + .label w = 9 // if(w<0) // [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda.z w+1 diff --git a/src/test/ref/type-signed.sym b/src/test/ref/type-signed.sym index 3dfc3c6fa..d0b6a7543 100644 --- a/src/test/ref/type-signed.sym +++ b/src/test/ref/type-signed.sym @@ -14,39 +14,39 @@ (label) main::@6 (label) main::@return (signed word) main::a -(signed word) main::a#1 a zp[2]:2 2.5384615384615383 -(signed word) main::a#2 a zp[2]:2 22.0 +(signed word) main::a#1 a zp[2]:2 23.307692307692307 +(signed word) main::a#2 a zp[2]:2 202.0 (word) main::b -(word) main::b#1 b zp[2]:4 2.75 -(word) main::b#2 b zp[2]:4 11.0 +(word) main::b#1 b zp[2]:4 25.25 +(word) main::b#2 b zp[2]:4 101.0 (byte) main::i -(byte) main::i#1 reg byte x 11.0 -(byte) main::i#2 reg byte x 2.0 +(byte) main::i#1 i zp[1]:6 101.0 +(byte) main::i#2 i zp[1]:6 18.363636363636363 (void()) print_byte((byte) print_byte::b) -(byte~) print_byte::$0 reg byte a 4.0 -(byte~) print_byte::$2 reg byte a 4.0 +(byte~) print_byte::$0 reg byte a 200002.0 +(byte~) print_byte::$2 reg byte x 200002.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp[1]:10 4.0 -(byte) print_byte::b#1 b zp[1]:10 4.0 -(byte) print_byte::b#2 b zp[1]:10 2.0 +(byte) print_byte::b#0 reg byte x 20002.0 +(byte) print_byte::b#1 reg byte x 20002.0 +(byte) print_byte::b#2 reg byte x 55001.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 200002.0 +(byte) print_char::ch#3 reg byte a 200002.0 +(byte) print_char::ch#5 reg byte a 1200003.0 (byte*) print_char_cursor -(byte*) print_char_cursor#13 print_char_cursor zp[2]:11 3.5757575757575757 -(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 11.5 -(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 2.142857142857143 -(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp[2]:11 39397.121212121216 +(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 1101053.5 +(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 300.42857142857144 +(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 202.0 (const byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 46.42857142857143 -(byte*) print_line_cursor#13 print_line_cursor zp[2]:6 1.1818181818181819 -(byte*) print_line_cursor#6 print_line_cursor zp[2]:6 204.0 +(byte*) print_line_cursor#1 print_line_cursor zp[2]:7 42886.42857142857 +(byte*) print_line_cursor#13 print_line_cursor zp[2]:7 100.18181818181819 +(byte*) print_line_cursor#6 print_line_cursor zp[2]:7 201003.0 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -58,24 +58,24 @@ (label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp[2]:8 4.0 -(signed word) print_sword::w#1 w zp[2]:8 2.8333333333333335 -(signed word) print_sword::w#4 w zp[2]:8 4.0 +(signed word) print_sword::w#0 w zp[2]:9 2002.0 +(signed word) print_sword::w#1 w zp[2]:9 517.3333333333334 +(signed word) print_sword::w#4 w zp[2]:9 2002.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp[2]:8 4.0 -(word) print_word::w#1 w zp[2]:8 22.0 -(word) print_word::w#2 w zp[2]:8 5.666666666666667 +(word) print_word::w#0 w zp[2]:9 2002.0 +(word) print_word::w#1 w zp[2]:9 202.0 +(word) print_word::w#2 w zp[2]:9 7034.666666666666 zp[2]:2 [ main::a#2 main::a#1 ] zp[2]:4 [ main::b#2 main::b#1 ] -reg byte x [ main::i#2 main::i#1 ] -zp[2]:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -zp[2]:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -zp[1]:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +zp[1]:6 [ main::i#2 main::i#1 ] +zp[2]:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] +zp[2]:9 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] zp[2]:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#56 ] reg byte a [ print_byte::$0 ] -reg byte a [ print_byte::$2 ] +reg byte x [ print_byte::$2 ] diff --git a/src/test/ref/typedef-0.log b/src/test/ref/typedef-0.log index 0aa73e951..516fc6bc2 100644 --- a/src/test/ref/typedef-0.log +++ b/src/test/ref/typedef-0.log @@ -109,7 +109,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::b [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/typedef-1.log b/src/test/ref/typedef-1.log index 365185e51..7c8756189 100644 --- a/src/test/ref/typedef-1.log +++ b/src/test/ref/typedef-1.log @@ -150,8 +150,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((byte*)(const struct PointDef*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*)(const struct PointDef*) main::SCREEN+(const byte) OFFSET_STRUCT_POINTDEF_Y) ← (const byte) main::p_y [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((byte*)(const struct PointDef*) main::SCREEN) ← (const byte) main::p_x [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*)(const struct PointDef*) main::SCREEN+(const byte) OFFSET_STRUCT_POINTDEF_Y) ← (const byte) main::p_y [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [PointDef] diff --git a/src/test/ref/typedef-2.log b/src/test/ref/typedef-2.log index b46516716..512e1b812 100644 --- a/src/test/ref/typedef-2.log +++ b/src/test/ref/typedef-2.log @@ -151,8 +151,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte*) ptr ← (byte*) 4096 [ ptr ] ( [ ptr ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN) ← <(word)&(byte*) ptr+(byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [0] (byte*) ptr ← (byte*) 4096 [ ptr ] ( [ ptr ] { } ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← <(word)&(byte*) ptr+(byte) $32 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ ptr ] : zp[2]:2 , REGISTER UPLIFT SCOPES diff --git a/src/test/ref/typeid-plus-byte-problem.log b/src/test/ref/typeid-plus-byte-problem.log index f50d6c523..5e126fce1 100644 --- a/src/test/ref/typeid-plus-byte-problem.log +++ b/src/test/ref/typeid-plus-byte-problem.log @@ -127,7 +127,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) main::ubc1+(const byte) main::ubc2 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) main::ubc1+(const byte) main::ubc2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/typeid-plus-bytes.log b/src/test/ref/typeid-plus-bytes.log index ea3a85ba7..d6438bb9f 100644 --- a/src/test/ref/typeid-plus-bytes.log +++ b/src/test/ref/typeid-plus-bytes.log @@ -510,16 +510,16 @@ Resolving typeid() (byte~) testSigned::$7 ← typeid (signed byte~) testSigned: Resolving typeid() (byte~) testSigned::$9 ← typeid (signed byte~) testSigned::$8 Resolving typeid() (byte~) testSigned::$11 ← typeid (signed byte~) testSigned::$10 Successful SSA optimization PassNTypeIdSimplification -Alias (byte) idx#2 = (byte) idx#59 -Alias (byte) idx#4 = (byte) idx#60 -Alias (byte) idx#6 = (byte) idx#61 -Alias (byte) idx#62 = (byte) idx#8 (byte) idx#63 (byte) idx#9 -Alias (byte) idx#20 = (byte) idx#65 (byte) idx#21 -Alias (byte) idx#32 = (byte) idx#67 (byte) idx#33 -Alias (byte) idx#44 = (byte) idx#69 (byte) idx#45 -Alias (byte) idx#56 = (byte) idx#71 (byte) idx#57 -Alias (byte) idx#0 = (byte) idx#73 -Alias (byte) idx#58 = (byte) idx#72 +Alias idx#2 = idx#59 +Alias idx#4 = idx#60 +Alias idx#6 = idx#61 +Alias idx#62 = idx#8 idx#63 idx#9 +Alias idx#20 = idx#65 idx#21 +Alias idx#32 = idx#67 idx#33 +Alias idx#44 = idx#69 idx#45 +Alias idx#56 = idx#71 idx#57 +Alias idx#0 = idx#73 +Alias idx#58 = idx#72 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#2 (byte) idx#20 Identical Phi Values (byte) idx#4 (byte) idx#32 @@ -1057,20 +1057,20 @@ VARIABLE REGISTER WEIGHTS (void()) main() (void()) testSigned() (void()) testSignedVals() -(signed byte~) testSignedVals::$2 4.0 -(signed byte~) testSignedVals::$3 4.0 -(signed byte~) testSignedVals::$4 4.0 -(signed byte~) testSignedVals::$5 4.0 -(signed byte~) testSignedVals::$6 4.0 -(signed byte) testSignedVals::sbv1 loadstore 1.0666666666666667 +(signed byte~) testSignedVals::$2 202.0 +(signed byte~) testSignedVals::$3 202.0 +(signed byte~) testSignedVals::$4 202.0 +(signed byte~) testSignedVals::$5 202.0 +(signed byte~) testSignedVals::$6 202.0 +(signed byte) testSignedVals::sbv1 loadstore 53.86666666666667 (void()) testUnsigned() (void()) testUnsignedVals() -(byte~) testUnsignedVals::$2 4.0 -(byte~) testUnsignedVals::$3 4.0 -(byte~) testUnsignedVals::$4 4.0 -(byte~) testUnsignedVals::$5 4.0 -(byte~) testUnsignedVals::$6 4.0 -(byte) testUnsignedVals::ubv1 loadstore 1.0666666666666667 +(byte~) testUnsignedVals::$2 202.0 +(byte~) testUnsignedVals::$3 202.0 +(byte~) testUnsignedVals::$4 202.0 +(byte~) testUnsignedVals::$5 202.0 +(byte~) testUnsignedVals::$6 202.0 +(byte) testUnsignedVals::ubv1 loadstore 53.86666666666667 Initial phi equivalence classes Added variable testSignedVals::sbv1 to live range equivalence class [ testSignedVals::sbv1 ] @@ -1398,52 +1398,52 @@ testUnsigned: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] (signed byte) testSignedVals::sbv1 ← (signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [14] *((const signed byte*) SSCREEN+(byte)(number) $28*(number) 3) ← (signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [15] *((const signed byte*) SSCREEN+++(byte)(number) $28*(number) 3) ← (const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [16] *((const signed byte*) SSCREEN+++++(byte)(number) $28*(number) 3) ← (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [17] *((const signed byte*) SSCREEN+++++++(byte)(number) $28*(number) 3) ← (signed byte)(number) -$46+(number) -$32 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [18] *((const signed byte*) SSCREEN+++++++++(byte)(number) $28*(number) 3) ← (const signed byte) testSignedVals::sbc1+(signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [19] *((const signed byte*) SSCREEN+++++++++++(byte)(number) $28*(number) 3) ← (signed byte) -$78+(const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] ) always clobbers reg byte a -Statement [20] (signed byte~) testSignedVals::$2 ← (signed byte) testSignedVals::sbv1 + (signed byte) -$78 [ testSignedVals::sbv1 testSignedVals::$2 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$2 ] ) always clobbers reg byte a -Statement [22] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$3 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$3 ] ) always clobbers reg byte a -Statement [24] (signed byte~) testSignedVals::$4 ← (signed byte) testSignedVals::sbv1 + (const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 testSignedVals::$4 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$4 ] ) always clobbers reg byte a -Statement [26] (signed byte~) testSignedVals::$5 ← (const signed byte) testSignedVals::sbc1 + (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$5 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$5 ] ) always clobbers reg byte a -Statement [28] (signed byte~) testSignedVals::$6 ← (signed byte) testSignedVals::sbv1 + (signed byte) testSignedVals::sbv1 [ testSignedVals::$6 ] ( main:2::testSignedVals:11 [ testSignedVals::$6 ] ) always clobbers reg byte a -Statement [31] *((const byte*) SCREEN+(byte)(number) $28*(number) 2) ← (byte) 0 [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) SCREEN+++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) SCREEN+++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) SCREEN+++++++(byte)(number) $28*(number) 2) ← (byte) 0 [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) SCREEN+++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) SCREEN+++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [37] *((const byte*) SCREEN+++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [38] *((const byte*) SCREEN+++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [39] *((const byte*) SCREEN+++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) SCREEN+++++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [41] *((const byte*) SCREEN+++++++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] ) always clobbers reg byte a -Statement [43] (byte) testUnsignedVals::ubv1 ← (byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [44] *((const byte*) SCREEN+(byte) $28) ← (byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [45] *((const byte*) SCREEN+(byte) $29) ← (const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [46] *((const byte*) SCREEN+(byte) $2a) ← (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [47] *((const byte*) SCREEN+(byte) $2b) ← (byte)(number) $78+(number) $82 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [48] *((const byte*) SCREEN+(byte) $2c) ← (const byte) testUnsignedVals::ubc1+(byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [49] *((const byte*) SCREEN+(byte) $2d) ← (byte) $fa+(const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] ) always clobbers reg byte a -Statement [50] (byte~) testUnsignedVals::$2 ← (byte) testUnsignedVals::ubv1 + (byte) $fa [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] ) always clobbers reg byte a -Statement [52] (byte~) testUnsignedVals::$3 ← (byte) $fa + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] ) always clobbers reg byte a -Statement [54] (byte~) testUnsignedVals::$4 ← (byte) testUnsignedVals::ubv1 + (const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] ) always clobbers reg byte a -Statement [56] (byte~) testUnsignedVals::$5 ← (const byte) testUnsignedVals::ubc1 + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] ) always clobbers reg byte a -Statement [58] (byte~) testUnsignedVals::$6 ← (byte) testUnsignedVals::ubv1 + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::$6 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::$6 ] ) always clobbers reg byte a -Statement [61] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) SCREEN+(byte) 1) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) SCREEN+(byte) 2) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) SCREEN+(byte) 4) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) SCREEN+(byte) 5) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) SCREEN+(byte) 6) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [68] *((const byte*) SCREEN+(byte) 7) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [69] *((const byte*) SCREEN+(byte) 8) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [70] *((const byte*) SCREEN+(byte) 9) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a -Statement [71] *((const byte*) SCREEN+(byte) $a) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] ) always clobbers reg byte a +Statement [13] (signed byte) testSignedVals::sbv1 ← (signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [14] *((const signed byte*) SSCREEN+(byte)(number) $28*(number) 3) ← (signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [15] *((const signed byte*) SSCREEN+++(byte)(number) $28*(number) 3) ← (const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [16] *((const signed byte*) SSCREEN+++++(byte)(number) $28*(number) 3) ← (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [17] *((const signed byte*) SSCREEN+++++++(byte)(number) $28*(number) 3) ← (signed byte)(number) -$46+(number) -$32 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [18] *((const signed byte*) SSCREEN+++++++++(byte)(number) $28*(number) 3) ← (const signed byte) testSignedVals::sbc1+(signed byte) -$78 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [19] *((const signed byte*) SSCREEN+++++++++++(byte)(number) $28*(number) 3) ← (signed byte) -$78+(const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a +Statement [20] (signed byte~) testSignedVals::$2 ← (signed byte) testSignedVals::sbv1 + (signed byte) -$78 [ testSignedVals::sbv1 testSignedVals::$2 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$2 ] { } ) always clobbers reg byte a +Statement [22] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$3 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$3 ] { } ) always clobbers reg byte a +Statement [24] (signed byte~) testSignedVals::$4 ← (signed byte) testSignedVals::sbv1 + (const signed byte) testSignedVals::sbc1 [ testSignedVals::sbv1 testSignedVals::$4 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$4 ] { } ) always clobbers reg byte a +Statement [26] (signed byte~) testSignedVals::$5 ← (const signed byte) testSignedVals::sbc1 + (signed byte) testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$5 ] ( main:2::testSignedVals:11 [ testSignedVals::sbv1 testSignedVals::$5 ] { } ) always clobbers reg byte a +Statement [28] (signed byte~) testSignedVals::$6 ← (signed byte) testSignedVals::sbv1 + (signed byte) testSignedVals::sbv1 [ testSignedVals::$6 ] ( main:2::testSignedVals:11 [ testSignedVals::$6 ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) SCREEN+(byte)(number) $28*(number) 2) ← (byte) 0 [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) SCREEN+++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) SCREEN+++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) SCREEN+++++++(byte)(number) $28*(number) 2) ← (byte) 0 [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) SCREEN+++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) SCREEN+++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [37] *((const byte*) SCREEN+++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) SCREEN+++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [39] *((const byte*) SCREEN+++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) SCREEN+++++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) SCREEN+++++++++++++++++++++(byte)(number) $28*(number) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2::testSigned:9 [ ] { } ) always clobbers reg byte a +Statement [43] (byte) testUnsignedVals::ubv1 ← (byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [44] *((const byte*) SCREEN+(byte) $28) ← (byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [45] *((const byte*) SCREEN+(byte) $29) ← (const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) SCREEN+(byte) $2a) ← (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) SCREEN+(byte) $2b) ← (byte)(number) $78+(number) $82 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [48] *((const byte*) SCREEN+(byte) $2c) ← (const byte) testUnsignedVals::ubc1+(byte) $fa [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) SCREEN+(byte) $2d) ← (byte) $fa+(const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a +Statement [50] (byte~) testUnsignedVals::$2 ← (byte) testUnsignedVals::ubv1 + (byte) $fa [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] { } ) always clobbers reg byte a +Statement [52] (byte~) testUnsignedVals::$3 ← (byte) $fa + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] { } ) always clobbers reg byte a +Statement [54] (byte~) testUnsignedVals::$4 ← (byte) testUnsignedVals::ubv1 + (const byte) testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] { } ) always clobbers reg byte a +Statement [56] (byte~) testUnsignedVals::$5 ← (const byte) testUnsignedVals::ubc1 + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] { } ) always clobbers reg byte a +Statement [58] (byte~) testUnsignedVals::$6 ← (byte) testUnsignedVals::ubv1 + (byte) testUnsignedVals::ubv1 [ testUnsignedVals::$6 ] ( main:2::testUnsignedVals:7 [ testUnsignedVals::$6 ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) SCREEN+(byte) 1) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [63] *((const byte*) SCREEN+(byte) 2) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [64] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) SCREEN+(byte) 4) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) SCREEN+(byte) 5) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) SCREEN+(byte) 6) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [68] *((const byte*) SCREEN+(byte) 7) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [69] *((const byte*) SCREEN+(byte) 8) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [70] *((const byte*) SCREEN+(byte) 9) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a +Statement [71] *((const byte*) SCREEN+(byte) $a) ← (const byte) TYPEID_BYTE [ ] ( main:2::testUnsigned:5 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ testSignedVals::sbv1 ] : zp[1]:2 , Potential registers zp[1]:3 [ testSignedVals::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ testSignedVals::$3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -1458,8 +1458,8 @@ Potential registers zp[1]:12 [ testUnsignedVals::$5 ] : zp[1]:12 , reg byte a , Potential registers zp[1]:13 [ testUnsignedVals::$6 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [testUnsignedVals] 4: zp[1]:9 [ testUnsignedVals::$2 ] 4: zp[1]:10 [ testUnsignedVals::$3 ] 4: zp[1]:11 [ testUnsignedVals::$4 ] 4: zp[1]:12 [ testUnsignedVals::$5 ] 4: zp[1]:13 [ testUnsignedVals::$6 ] 1.07: zp[1]:8 [ testUnsignedVals::ubv1 ] -Uplift Scope [testSignedVals] 4: zp[1]:3 [ testSignedVals::$2 ] 4: zp[1]:4 [ testSignedVals::$3 ] 4: zp[1]:5 [ testSignedVals::$4 ] 4: zp[1]:6 [ testSignedVals::$5 ] 4: zp[1]:7 [ testSignedVals::$6 ] 1.07: zp[1]:2 [ testSignedVals::sbv1 ] +Uplift Scope [testUnsignedVals] 202: zp[1]:9 [ testUnsignedVals::$2 ] 202: zp[1]:10 [ testUnsignedVals::$3 ] 202: zp[1]:11 [ testUnsignedVals::$4 ] 202: zp[1]:12 [ testUnsignedVals::$5 ] 202: zp[1]:13 [ testUnsignedVals::$6 ] 53.87: zp[1]:8 [ testUnsignedVals::ubv1 ] +Uplift Scope [testSignedVals] 202: zp[1]:3 [ testSignedVals::$2 ] 202: zp[1]:4 [ testSignedVals::$3 ] 202: zp[1]:5 [ testSignedVals::$4 ] 202: zp[1]:6 [ testSignedVals::$5 ] 202: zp[1]:7 [ testSignedVals::$6 ] 53.87: zp[1]:2 [ testSignedVals::sbv1 ] Uplift Scope [main] Uplift Scope [testUnsigned] Uplift Scope [testSigned] @@ -1814,25 +1814,25 @@ FINAL SYMBOL TABLE (void()) testSigned() (label) testSigned::@return (void()) testSignedVals() -(signed byte~) testSignedVals::$2 reg byte a 4.0 -(signed byte~) testSignedVals::$3 reg byte a 4.0 -(signed byte~) testSignedVals::$4 reg byte a 4.0 -(signed byte~) testSignedVals::$5 reg byte a 4.0 -(signed byte~) testSignedVals::$6 reg byte a 4.0 +(signed byte~) testSignedVals::$2 reg byte a 202.0 +(signed byte~) testSignedVals::$3 reg byte a 202.0 +(signed byte~) testSignedVals::$4 reg byte a 202.0 +(signed byte~) testSignedVals::$5 reg byte a 202.0 +(signed byte~) testSignedVals::$6 reg byte a 202.0 (label) testSignedVals::@return (const signed byte) testSignedVals::sbc1 = (signed byte) -$78 -(signed byte) testSignedVals::sbv1 loadstore zp[1]:2 1.0666666666666667 +(signed byte) testSignedVals::sbv1 loadstore zp[1]:2 53.86666666666667 (void()) testUnsigned() (label) testUnsigned::@return (void()) testUnsignedVals() -(byte~) testUnsignedVals::$2 reg byte x 4.0 -(byte~) testUnsignedVals::$3 reg byte x 4.0 -(byte~) testUnsignedVals::$4 reg byte a 4.0 -(byte~) testUnsignedVals::$5 reg byte a 4.0 -(byte~) testUnsignedVals::$6 reg byte a 4.0 +(byte~) testUnsignedVals::$2 reg byte x 202.0 +(byte~) testUnsignedVals::$3 reg byte x 202.0 +(byte~) testUnsignedVals::$4 reg byte a 202.0 +(byte~) testUnsignedVals::$5 reg byte a 202.0 +(byte~) testUnsignedVals::$6 reg byte a 202.0 (label) testUnsignedVals::@return (const byte) testUnsignedVals::ubc1 = (byte) $fa -(byte) testUnsignedVals::ubv1 loadstore zp[1]:3 1.0666666666666667 +(byte) testUnsignedVals::ubv1 loadstore zp[1]:3 53.86666666666667 zp[1]:2 [ testSignedVals::sbv1 ] reg byte a [ testSignedVals::$2 ] diff --git a/src/test/ref/typeid-plus-bytes.sym b/src/test/ref/typeid-plus-bytes.sym index 22553b950..d01227d4c 100644 --- a/src/test/ref/typeid-plus-bytes.sym +++ b/src/test/ref/typeid-plus-bytes.sym @@ -14,25 +14,25 @@ (void()) testSigned() (label) testSigned::@return (void()) testSignedVals() -(signed byte~) testSignedVals::$2 reg byte a 4.0 -(signed byte~) testSignedVals::$3 reg byte a 4.0 -(signed byte~) testSignedVals::$4 reg byte a 4.0 -(signed byte~) testSignedVals::$5 reg byte a 4.0 -(signed byte~) testSignedVals::$6 reg byte a 4.0 +(signed byte~) testSignedVals::$2 reg byte a 202.0 +(signed byte~) testSignedVals::$3 reg byte a 202.0 +(signed byte~) testSignedVals::$4 reg byte a 202.0 +(signed byte~) testSignedVals::$5 reg byte a 202.0 +(signed byte~) testSignedVals::$6 reg byte a 202.0 (label) testSignedVals::@return (const signed byte) testSignedVals::sbc1 = (signed byte) -$78 -(signed byte) testSignedVals::sbv1 loadstore zp[1]:2 1.0666666666666667 +(signed byte) testSignedVals::sbv1 loadstore zp[1]:2 53.86666666666667 (void()) testUnsigned() (label) testUnsigned::@return (void()) testUnsignedVals() -(byte~) testUnsignedVals::$2 reg byte x 4.0 -(byte~) testUnsignedVals::$3 reg byte x 4.0 -(byte~) testUnsignedVals::$4 reg byte a 4.0 -(byte~) testUnsignedVals::$5 reg byte a 4.0 -(byte~) testUnsignedVals::$6 reg byte a 4.0 +(byte~) testUnsignedVals::$2 reg byte x 202.0 +(byte~) testUnsignedVals::$3 reg byte x 202.0 +(byte~) testUnsignedVals::$4 reg byte a 202.0 +(byte~) testUnsignedVals::$5 reg byte a 202.0 +(byte~) testUnsignedVals::$6 reg byte a 202.0 (label) testUnsignedVals::@return (const byte) testUnsignedVals::ubc1 = (byte) $fa -(byte) testUnsignedVals::ubv1 loadstore zp[1]:3 1.0666666666666667 +(byte) testUnsignedVals::ubv1 loadstore zp[1]:3 53.86666666666667 zp[1]:2 [ testSignedVals::sbv1 ] reg byte a [ testSignedVals::$2 ] diff --git a/src/test/ref/typeid-simple.log b/src/test/ref/typeid-simple.log index 24115e3d2..03780f3d8 100644 --- a/src/test/ref/typeid-simple.log +++ b/src/test/ref/typeid-simple.log @@ -592,35 +592,35 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) TYPEID_VOID [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) 4) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) 5) ← (const byte) TYPEID_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN+(byte) 6) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN+(byte) 7) ← (const byte) TYPEID_BOOL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN+(byte) 8) ← (const byte) TYPEID_POINTER_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN+(byte) 9) ← (const byte) TYPEID_POINTER_SIGNED_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN+(byte) $a) ← (const byte) TYPEID_POINTER_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN+(byte) $b) ← (const byte) TYPEID_POINTER_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN+(byte) $c) ← (const byte) TYPEID_POINTER_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN+(byte) $d) ← (const byte) TYPEID_POINTER_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) main::SCREEN+(byte) $e) ← (const byte) TYPEID_POINTER_BOOL [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::SCREEN+(byte) $f) ← (const byte) TYPEID_POINTER_PROCEDURE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) main::SCREEN+(byte) $10) ← (const byte) TYPEID_POINTER_POINTER_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) main::SCREEN+(byte) $28) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) main::SCREEN+(byte) $29) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) main::SCREEN+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) main::SCREEN+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) main::SCREEN+(byte) $2c) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) main::SCREEN+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) main::SCREEN+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) main::SCREEN+(byte) $2f) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) main::SCREEN+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) main::SCREEN+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) main::SCREEN+(byte) $32) ← (const byte) TYPEID_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) main::SCREEN+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) TYPEID_VOID [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 2) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 3) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) 4) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) 5) ← (const byte) TYPEID_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN+(byte) 6) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN+(byte) 7) ← (const byte) TYPEID_BOOL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN+(byte) 8) ← (const byte) TYPEID_POINTER_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN+(byte) 9) ← (const byte) TYPEID_POINTER_SIGNED_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN+(byte) $a) ← (const byte) TYPEID_POINTER_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $b) ← (const byte) TYPEID_POINTER_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN+(byte) $c) ← (const byte) TYPEID_POINTER_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN+(byte) $d) ← (const byte) TYPEID_POINTER_SIGNED_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) main::SCREEN+(byte) $e) ← (const byte) TYPEID_POINTER_BOOL [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN+(byte) $f) ← (const byte) TYPEID_POINTER_PROCEDURE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) main::SCREEN+(byte) $10) ← (const byte) TYPEID_POINTER_POINTER_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) main::SCREEN+(byte) $28) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) main::SCREEN+(byte) $29) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) main::SCREEN+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) main::SCREEN+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) main::SCREEN+(byte) $2c) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) main::SCREEN+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) main::SCREEN+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) main::SCREEN+(byte) $2f) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) main::SCREEN+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) main::SCREEN+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) main::SCREEN+(byte) $32) ← (const byte) TYPEID_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) main::SCREEN+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/typeinference-problem.log b/src/test/ref/typeinference-problem.log index c8a8e7b04..fa1db998d 100644 --- a/src/test/ref/typeinference-problem.log +++ b/src/test/ref/typeinference-problem.log @@ -118,10 +118,10 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 +(byte~) main::$0 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -199,16 +199,16 @@ main: { table: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$0 ← (byte) $ff - (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) $ff - (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const byte*) table + (byte~) main::$0) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$0 ← (byte) $ff - (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] *((const byte*) table + (byte~) main::$0) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) table + (byte~) main::$0) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$0 ← (byte) $ff - (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) table + (byte~) main::$0) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 343 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::$0 ] @@ -304,12 +304,12 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte x 22.0 +(byte~) main::$0 reg byte x 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (const byte*) table[(number) $100] = { fill( $100, 0) } reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/typeinference-problem.sym b/src/test/ref/typeinference-problem.sym index 4577d33aa..9596dfb75 100644 --- a/src/test/ref/typeinference-problem.sym +++ b/src/test/ref/typeinference-problem.sym @@ -2,12 +2,12 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte x 22.0 +(byte~) main::$0 reg byte x 202.0 (label) main::@1 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (const byte*) table[(number) $100] = { fill( $100, 0) } reg byte y [ main::i#2 main::i#1 ] diff --git a/src/test/ref/unary-plus.log b/src/test/ref/unary-plus.log index 39687ddf3..1aecd1194 100644 --- a/src/test/ref/unary-plus.log +++ b/src/test/ref/unary-plus.log @@ -187,10 +187,10 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::i [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (byte)+(number) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const signed word*) main::SCREEN2) ← (const signed word) main::j [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const signed word*) main::SCREEN2+(byte) 1*(const byte) SIZEOF_SIGNED_WORD) ← (signed byte)+(number) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::SCREEN) ← (const byte) main::i [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 1) ← (byte)+(number) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const signed word*) main::SCREEN2) ← (const signed word) main::j [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const signed word*) main::SCREEN2+(byte) 1*(const byte) SIZEOF_SIGNED_WORD) ← (signed byte)+(number) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/uninitialized.log b/src/test/ref/uninitialized.log index ff335a11f..5103329e1 100644 --- a/src/test/ref/uninitialized.log +++ b/src/test/ref/uninitialized.log @@ -72,8 +72,8 @@ Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte~) main::$3 = (byte~) main::$2 -Alias (byte~) main::$5 = (byte~) main::$4 +Alias main::$3 = main::$2 +Alias main::$5 = main::$4 Successful SSA optimization Pass2AliasElimination Constant right-side identified [1] (byte~) main::$0 ← < (const word) w Constant right-side identified [3] (byte~) main::$1 ← > (const word) w @@ -200,11 +200,11 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (const byte) b [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN+(byte) 2) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN+(byte) 5) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(byte) 5) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (const byte) b [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN+(byte) 2) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN+(byte) 3) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN+(byte) 5) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(byte) 5) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unroll-for-min.log b/src/test/ref/unroll-for-min.log index d5f83b2b7..f5bfc32e9 100644 --- a/src/test/ref/unroll-for-min.log +++ b/src/test/ref/unroll-for-min.log @@ -222,9 +222,9 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 2) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 2) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unroll-loop-modifyvar.log b/src/test/ref/unroll-loop-modifyvar.log index d83da6972..8f3d0e641 100644 --- a/src/test/ref/unroll-loop-modifyvar.log +++ b/src/test/ref/unroll-loop-modifyvar.log @@ -53,7 +53,7 @@ Simplifying constant integer cast $e Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $e Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::a#1 = (byte) main::a#3 +Alias main::a#1 = main::a#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [5] unroll if((byte) main::a#1<(byte) $e) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -72,7 +72,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1) in block main::@2 if() condition always false - eliminating [3] if((const byte) main::a#1>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#4 = (byte) main::a#6 +Alias main::a#4 = main::a#6 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_1 tails: main::@1_1 blocks: main::@1_1 Successful SSA optimization Pass2LoopUnroll @@ -87,7 +87,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_1) in block main::@2 if() condition always false - eliminating [5] if((const byte) main::a#4>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#7 = (byte) main::a#9 +Alias main::a#7 = main::a#9 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_2 tails: main::@1_2 blocks: main::@1_2 Successful SSA optimization Pass2LoopUnroll @@ -102,7 +102,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_2) in block main::@2 if() condition always false - eliminating [6] if((const byte) main::a#7>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#10 = (byte) main::a#12 +Alias main::a#10 = main::a#12 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_3 tails: main::@1_3 blocks: main::@1_3 Successful SSA optimization Pass2LoopUnroll @@ -117,7 +117,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_3) in block main::@2 if() condition always false - eliminating [7] if((const byte) main::a#10>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#13 = (byte) main::a#15 +Alias main::a#13 = main::a#15 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_4 tails: main::@1_4 blocks: main::@1_4 Successful SSA optimization Pass2LoopUnroll @@ -132,7 +132,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_4) in block main::@2 if() condition always false - eliminating [8] if((const byte) main::a#13>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#16 = (byte) main::a#18 +Alias main::a#16 = main::a#18 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_5 tails: main::@1_5 blocks: main::@1_5 Successful SSA optimization Pass2LoopUnroll @@ -147,7 +147,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_5) in block main::@2 if() condition always false - eliminating [9] if((const byte) main::a#16>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#19 = (byte) main::a#21 +Alias main::a#19 = main::a#21 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_6 tails: main::@1_6 blocks: main::@1_6 Successful SSA optimization Pass2LoopUnroll @@ -162,7 +162,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_6) in block main::@2 if() condition always false - eliminating [10] if((const byte) main::a#19>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#22 = (byte) main::a#24 +Alias main::a#22 = main::a#24 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_7 tails: main::@1_7 blocks: main::@1_7 Successful SSA optimization Pass2LoopUnroll @@ -177,7 +177,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_7) in block main::@2 if() condition always false - eliminating [11] if((const byte) main::a#22>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#25 = (byte) main::a#27 +Alias main::a#25 = main::a#27 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_8 tails: main::@1_8 blocks: main::@1_8 Successful SSA optimization Pass2LoopUnroll @@ -192,7 +192,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_8) in block main::@2 if() condition always false - eliminating [12] if((const byte) main::a#25>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#28 = (byte) main::a#30 +Alias main::a#28 = main::a#30 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_9 tails: main::@1_9 blocks: main::@1_9 Successful SSA optimization Pass2LoopUnroll @@ -207,7 +207,7 @@ Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (main::@1_9) in block main::@2 if() condition always false - eliminating [13] if((const byte) main::a#28>=(byte) $e) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Alias (byte) main::a#31 = (byte) main::a#33 +Alias main::a#31 = main::a#33 Successful SSA optimization Pass2AliasElimination Unrolling loop Loop head: main::@1_10 tails: main::@1_10 blocks: main::@1_10 Successful SSA optimization Pass2LoopUnroll @@ -489,18 +489,18 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN+(byte) $b) ← (byte) $b [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN+(byte) $c) ← (byte) $c [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN+(byte) $d) ← (byte) $d [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN+(byte) $e) ← (byte) $e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN+(byte) $b) ← (byte) $b [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN+(byte) $c) ← (byte) $c [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $d) ← (byte) $d [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN+(byte) $e) ← (byte) $e [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unroll-screenfill-for-double.log b/src/test/ref/unroll-screenfill-for-double.log index a3d1fb471..143a0b8e9 100644 --- a/src/test/ref/unroll-screenfill-for-double.log +++ b/src/test/ref/unroll-screenfill-for-double.log @@ -74,7 +74,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::line#2 * (byte) $28 -Alias (byte) main::x#2 = (byte) main::x#3 +Alias main::x#2 = main::x#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::x#2 (byte) main::x#4 Successful SSA optimization Pass2IdenticalPhiElimination @@ -2091,127 +2091,127 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::SCREEN+(byte) 2*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::SCREEN+(byte) 3*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) main::SCREEN+(byte) 4*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) main::SCREEN+(byte) 5*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) main::SCREEN+(byte) 6*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) main::SCREEN+(byte) 7*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::SCREEN+(byte) 8*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) main::SCREEN+(byte) 9*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [15] *((const byte*) main::SCREEN+(byte) $a*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [19] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [22] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [23] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [24] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] *((const byte*) main::SCREEN+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [28] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [30] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [31] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [34] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [35] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [38] *((const byte*) main::SCREEN+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [39] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [40] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [41] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [42] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [43] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [44] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [45] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [46] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [47] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [48] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [49] *((const byte*) main::SCREEN+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [50] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [51] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [52] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [53] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [55] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [56] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [58] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [59] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [60] *((const byte*) main::SCREEN+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [61] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [65] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [66] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [67] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [68] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [69] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [70] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [71] *((const byte*) main::SCREEN+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [72] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [73] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [74] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [75] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [76] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [77] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [78] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [79] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [80] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [81] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [82] *((const byte*) main::SCREEN+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [83] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [84] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [85] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [86] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [87] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [88] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [89] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [90] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [91] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [92] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [93] *((const byte*) main::SCREEN+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [94] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [95] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [96] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [97] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [98] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [99] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [100] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [101] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [102] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [103] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [104] *((const byte*) main::SCREEN+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [105] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [106] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [107] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [108] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [109] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [110] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [111] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [112] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [113] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [114] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [115] *((const byte*) main::SCREEN+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [116] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [117] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [118] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [119] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [120] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [121] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [122] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [123] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [124] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [125] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::SCREEN+(byte) 2*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) main::SCREEN+(byte) 3*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) main::SCREEN+(byte) 4*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [10] *((const byte*) main::SCREEN+(byte) 5*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [11] *((const byte*) main::SCREEN+(byte) 6*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [12] *((const byte*) main::SCREEN+(byte) 7*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) main::SCREEN+(byte) 8*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [14] *((const byte*) main::SCREEN+(byte) 9*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [15] *((const byte*) main::SCREEN+(byte) $a*(byte) $28) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [16] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [18] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [19] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [20] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [22] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [23] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [24] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [26] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 1) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [27] *((const byte*) main::SCREEN+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [28] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [30] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [31] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [33] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [34] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [35] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [36] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [37] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 2) ← (byte) 2 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [38] *((const byte*) main::SCREEN+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [39] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [40] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [41] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [42] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [43] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [44] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [45] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [46] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [47] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [48] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 3) ← (byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [49] *((const byte*) main::SCREEN+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [50] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [51] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [52] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [53] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [54] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [55] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [56] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [57] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [58] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [59] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 4) ← (byte) 4 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [60] *((const byte*) main::SCREEN+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [61] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [62] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [63] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [64] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [65] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [66] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [67] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [68] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [69] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [70] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 5) ← (byte) 5 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [71] *((const byte*) main::SCREEN+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [72] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [73] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [74] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [75] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [76] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [77] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [78] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [79] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [80] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [81] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 6) ← (byte) 6 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [82] *((const byte*) main::SCREEN+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [83] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [84] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [85] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [86] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [87] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [88] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [89] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [90] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [91] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [92] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 7) ← (byte) 7 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [93] *((const byte*) main::SCREEN+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [94] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [95] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [96] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [97] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [98] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [99] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [100] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [101] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [102] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [103] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 8) ← (byte) 8 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [104] *((const byte*) main::SCREEN+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [105] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [106] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [107] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [108] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [109] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [110] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [111] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [112] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [113] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [114] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) 9) ← (byte) 9 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [115] *((const byte*) main::SCREEN+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [116] *((const byte*) main::SCREEN+(byte) 1*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [117] *((const byte*) main::SCREEN+(byte) 2*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [118] *((const byte*) main::SCREEN+(byte) 3*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [119] *((const byte*) main::SCREEN+(byte) 4*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [120] *((const byte*) main::SCREEN+(byte) 5*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [121] *((const byte*) main::SCREEN+(byte) 6*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [122] *((const byte*) main::SCREEN+(byte) 7*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [123] *((const byte*) main::SCREEN+(byte) 8*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [124] *((const byte*) main::SCREEN+(byte) 9*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [125] *((const byte*) main::SCREEN+(byte) $a*(byte) $28+(byte) $a) ← (byte) $a [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unroll-screenfill-for.log b/src/test/ref/unroll-screenfill-for.log index 946d1a08b..5be0a31fd 100644 --- a/src/test/ref/unroll-screenfill-for.log +++ b/src/test/ref/unroll-screenfill-for.log @@ -74,7 +74,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::line#2 * (byte) $28 -Alias (byte) main::x#2 = (byte) main::x#3 +Alias main::x#2 = main::x#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::x#2 (byte) main::x#4 Successful SSA optimization Pass2IdenticalPhiElimination @@ -836,8 +836,8 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::line (byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#4 22.00000000000001 +(byte) main::x#1 151.5 +(byte) main::x#4 202.00000000000009 Initial phi equivalence classes [ main::x#4 main::x#1 ] @@ -1082,7 +1082,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::x#4 main::x#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::x#4 main::x#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::x#4 main::x#1 ] Uplift Scope [] Uplifting [main] best 2723 combination reg byte x [ main::x#4 main::x#1 ] @@ -1406,8 +1406,8 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (byte) main::line (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#4 reg byte x 22.00000000000001 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#4 reg byte x 202.00000000000009 reg byte x [ main::x#4 main::x#1 ] diff --git a/src/test/ref/unroll-screenfill-for.sym b/src/test/ref/unroll-screenfill-for.sym index 09ff0e016..829424949 100644 --- a/src/test/ref/unroll-screenfill-for.sym +++ b/src/test/ref/unroll-screenfill-for.sym @@ -33,7 +33,7 @@ (const byte*) main::SCREEN = (byte*) 1024 (byte) main::line (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#4 reg byte x 22.00000000000001 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#4 reg byte x 202.00000000000009 reg byte x [ main::x#4 main::x#1 ] diff --git a/src/test/ref/unroll-screenfill-while.log b/src/test/ref/unroll-screenfill-while.log index 724a7fc38..ec411c1c8 100644 --- a/src/test/ref/unroll-screenfill-while.log +++ b/src/test/ref/unroll-screenfill-while.log @@ -87,8 +87,8 @@ Finalized unsigned number type (byte) $19 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::line#3 * (byte) $28 -Alias (byte) main::line#2 = (byte) main::line#3 -Alias (byte) main::x#2 = (byte) main::x#4 (byte) main::x#3 +Alias main::line#2 = main::line#3 +Alias main::x#2 = main::x#4 main::x#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::x#2 (byte) main::x#5 Successful SSA optimization Pass2IdenticalPhiElimination @@ -867,8 +867,8 @@ VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::line (byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#5 22.00000000000001 +(byte) main::x#1 151.5 +(byte) main::x#5 202.00000000000009 Initial phi equivalence classes [ main::x#5 main::x#1 ] @@ -1113,7 +1113,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp[1]:2 [ main::x#5 main::x#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp[1]:2 [ main::x#5 main::x#1 ] +Uplift Scope [main] 353.5: zp[1]:2 [ main::x#5 main::x#1 ] Uplift Scope [] Uplifting [main] best 2723 combination reg byte x [ main::x#5 main::x#1 ] @@ -1437,8 +1437,8 @@ FINAL SYMBOL TABLE (const byte*) main::SCREEN = (byte*) 1024 (byte) main::line (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#5 reg byte x 22.00000000000001 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#5 reg byte x 202.00000000000009 reg byte x [ main::x#5 main::x#1 ] diff --git a/src/test/ref/unroll-screenfill-while.sym b/src/test/ref/unroll-screenfill-while.sym index 3650fb511..67ca51a16 100644 --- a/src/test/ref/unroll-screenfill-while.sym +++ b/src/test/ref/unroll-screenfill-while.sym @@ -33,7 +33,7 @@ (const byte*) main::SCREEN = (byte*) 1024 (byte) main::line (byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#5 reg byte x 22.00000000000001 +(byte) main::x#1 reg byte x 151.5 +(byte) main::x#5 reg byte x 202.00000000000009 reg byte x [ main::x#5 main::x#1 ] diff --git a/src/test/ref/unroll-while-min.log b/src/test/ref/unroll-while-min.log index 3b61fd040..cf397e67b 100644 --- a/src/test/ref/unroll-while-min.log +++ b/src/test/ref/unroll-while-min.log @@ -56,7 +56,7 @@ Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] unroll if((byte) main::i#2<(byte) 2) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -219,8 +219,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN+(byte) 1) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unused-irq.log b/src/test/ref/unused-irq.log index 3b0f133bb..528bd5a29 100644 --- a/src/test/ref/unused-irq.log +++ b/src/test/ref/unused-irq.log @@ -181,9 +181,9 @@ irq1: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 'x' [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const void()**) HARDWARE_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq1() [ ] ( [ ] ) always clobbers reg byte a -Statement [8] *((const void()**) HARDWARE_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq2() [ ] ( [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 'x' [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const void()**) HARDWARE_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq1() [ ] ( [ ] { } ) always clobbers reg byte a +Statement [8] *((const void()**) HARDWARE_IRQ) ← &interrupt(KERNEL_MIN)(void()) irq2() [ ] ( [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unused-method.log b/src/test/ref/unused-method.log index 7b908107e..6c75301bf 100644 --- a/src/test/ref/unused-method.log +++ b/src/test/ref/unused-method.log @@ -120,7 +120,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/unused-vars.log b/src/test/ref/unused-vars.log index 55c4e34b0..6c6ec2191 100644 --- a/src/test/ref/unused-vars.log +++ b/src/test/ref/unused-vars.log @@ -113,12 +113,12 @@ Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) b#1 = (byte) b#7 -Alias (byte) b#3 = (byte) b#9 (byte) b#8 -Alias (byte) s::return#1 = (byte) s::return#3 (byte) s::return#2 -Alias (byte) b#11 = (byte) b#4 (byte) b#5 -Alias (byte) b#0 = (byte) b#14 -Alias (byte) b#12 = (byte) b#6 +Alias b#1 = b#7 +Alias b#3 = b#9 b#8 +Alias s::return#1 = s::return#3 s::return#2 +Alias b#11 = b#4 b#5 +Alias b#0 = b#14 +Alias b#12 = b#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) b#13 (byte) b#0 Identical Phi Values (byte) b#1 (byte) b#11 @@ -228,8 +228,8 @@ VARIABLE REGISTER WEIGHTS (byte) b (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 151.5 +(byte) main::i#2 134.66666666666666 (byte()) s() (byte) s::return @@ -318,15 +318,15 @@ s: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) main::COLS + (byte) main::i#2) ← (const byte) main::col [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::COLS + (byte) main::i#2) ← (const byte) main::col [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← ++++(byte)(number) 2/(number) 2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) main::COLS + (byte) main::i#2) ← (const byte) main::col [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← ++++(byte)(number) 2/(number) 2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← ++++(byte)(number) 2/(number) 2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) main::COLS + (byte) main::i#2) ← (const byte) main::col [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← ++++(byte)(number) 2/(number) 2 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 286.17: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [s] Uplift Scope [] @@ -446,8 +446,8 @@ FINAL SYMBOL TABLE (const byte*) main::COLS = (byte*) 55296 (const byte) main::col = (byte) 2 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 (byte()) s() (label) s::@return (byte) s::return diff --git a/src/test/ref/unused-vars.sym b/src/test/ref/unused-vars.sym index 9dff748b1..352256a7c 100644 --- a/src/test/ref/unused-vars.sym +++ b/src/test/ref/unused-vars.sym @@ -9,8 +9,8 @@ (const byte*) main::COLS = (byte*) 55296 (const byte) main::col = (byte) 2 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 134.66666666666666 (byte()) s() (label) s::@return (byte) s::return diff --git a/src/test/ref/useglobal.log b/src/test/ref/useglobal.log index 60bb8093d..e8d9f956f 100644 --- a/src/test/ref/useglobal.log +++ b/src/test/ref/useglobal.log @@ -114,7 +114,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/useuninitialized.log b/src/test/ref/useuninitialized.log index cae502784..4894f8422 100644 --- a/src/test/ref/useuninitialized.log +++ b/src/test/ref/useuninitialized.log @@ -82,12 +82,12 @@ Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) b#4 + (byte) 1 -Alias (byte) s#1 = (byte~) main::$0 (byte) s#4 (byte) s#2 -Alias (byte) b#1 = (byte) b#5 (byte) b#2 -Alias (byte) b#0 = (byte) b#7 -Alias (byte) s#0 = (byte) s#6 -Alias (byte) s#3 = (byte) s#5 -Alias (byte) b#3 = (byte) b#6 +Alias s#1 = main::$0 s#4 s#2 +Alias b#1 = b#5 b#2 +Alias b#0 = b#7 +Alias s#0 = s#6 +Alias s#3 = s#5 +Alias b#3 = b#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) b#4 (byte) b#0 Identical Phi Values (byte) s#3 (byte) s#1 @@ -195,8 +195,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::screen) ← (const byte) b#1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::screen+(byte) 1) ← (const byte) s#1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::screen) ← (const byte) b#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) main::screen+(byte) 1) ← (const byte) s#1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/var-export.log b/src/test/ref/var-export.log index 7c505be5c..fcc84dbeb 100644 --- a/src/test/ref/var-export.log +++ b/src/test/ref/var-export.log @@ -117,7 +117,7 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) SCREEN) ← (byte) 'x' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN) ← (byte) 'x' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/var-forward-problem.log b/src/test/ref/var-forward-problem.log index e3bd3e778..1bf1ead1b 100644 --- a/src/test/ref/var-forward-problem.log +++ b/src/test/ref/var-forward-problem.log @@ -110,7 +110,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen) ← (const byte) b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen) ← (const byte) b [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/var-forward-problem2.log b/src/test/ref/var-forward-problem2.log index a75503366..1591e46b0 100644 --- a/src/test/ref/var-forward-problem2.log +++ b/src/test/ref/var-forward-problem2.log @@ -59,10 +59,10 @@ Inlining cast (byte*) screen#0 ← (byte*)(number) $400 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte*) screen#0 = (byte*) screen#4 (byte*) screen#1 -Alias (byte) b#0 = (byte) b#4 (byte) b#1 -Alias (byte*) screen#3 = (byte*) screen#5 -Alias (byte) b#3 = (byte) b#5 +Alias screen#0 = screen#4 screen#1 +Alias b#0 = b#4 b#1 +Alias screen#3 = screen#5 +Alias b#3 = b#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen#3 (byte*) screen#0 Identical Phi Values (byte) b#3 (byte) b#0 @@ -156,7 +156,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen#0) ← (const byte) b#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen#0) ← (const byte) b#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/var-init-problem.log b/src/test/ref/var-init-problem.log index 45c54a0dd..60a004a7e 100644 --- a/src/test/ref/var-init-problem.log +++ b/src/test/ref/var-init-problem.log @@ -44,9 +44,9 @@ Inlining cast (byte*) screen#1 ← (byte*)(number) $400 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte*) screen#1 = (byte*) screen#4 (byte*) screen#2 -Alias (byte*) screen#0 = (byte*) screen#6 -Alias (byte*) screen#3 = (byte*) screen#5 +Alias screen#1 = screen#4 screen#2 +Alias screen#0 = screen#6 +Alias screen#3 = screen#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen#3 (byte*) screen#1 Successful SSA optimization Pass2IdenticalPhiElimination @@ -134,7 +134,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) screen#1) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) screen#1) ← (byte) 'a' [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/var-register-noarg.log b/src/test/ref/var-register-noarg.log index e0179c81b..07687668c 100644 --- a/src/test/ref/var-register-noarg.log +++ b/src/test/ref/var-register-noarg.log @@ -62,7 +62,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#3 & (byte) 7 -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i#2<(byte)(number) $28*(number) 4) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -119,10 +119,10 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 13.75 +(byte) main::i#1 202.0 +(byte) main::i#2 126.25 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -204,15 +204,15 @@ main: { .byte 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) MSG + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) MSG + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [8] (byte~) main::$1 ← (byte) main::i#2 & (byte) 7 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a -Statement [9] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) MSG + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$1 ← (byte) main::i#2 & (byte) 7 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] { } ) always clobbers reg byte a +Statement [9] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) MSG + (byte~) main::$1) [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 35.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$1 ] +Uplift Scope [main] 328.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$1 ] Uplift Scope [] Uplifting [main] best 348 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] @@ -310,13 +310,13 @@ FINAL SYMBOL TABLE (const byte*) MSG[] = (byte*) "CAMELOT!"su (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 13.75 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 126.25 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/var-register-noarg.sym b/src/test/ref/var-register-noarg.sym index 26a95d141..50ed5b2b9 100644 --- a/src/test/ref/var-register-noarg.sym +++ b/src/test/ref/var-register-noarg.sym @@ -4,13 +4,13 @@ (const byte*) MSG[] = (byte*) "CAMELOT!"su (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 13.75 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 126.25 reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] diff --git a/src/test/ref/var-register-zp-3.log b/src/test/ref/var-register-zp-3.log index 5184d3a5c..1461bbc50 100644 --- a/src/test/ref/var-register-zp-3.log +++ b/src/test/ref/var-register-zp-3.log @@ -130,11 +130,11 @@ Finalized unsigned number type (byte) $50 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias candidate removed (volatile)(byte*) print2::at = (byte*~) main::$1 -Alias (byte) print2::j#2 = (byte) print2::j#4 (byte) print2::j#3 -Alias (byte) print2::i#2 = (byte) print2::i#3 (byte) print2::i#4 +Alias candidate removed (volatile)print2::at = main::$1 +Alias print2::j#2 = print2::j#4 print2::j#3 +Alias print2::i#2 = print2::i#3 print2::i#4 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte*) print2::at = (byte*~) main::$1 +Alias candidate removed (volatile)print2::at = main::$1 Simple Condition (bool~) print2::$1 [12] if((byte) 0!=*((byte*) print2::msg + (byte) print2::i#2)) goto print2::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [3] (byte*~) main::$1 ← (const byte*) screen + (byte) $50 @@ -238,22 +238,22 @@ print_char::@return: scope:[print_char] from print_char VARIABLE REGISTER WEIGHTS (void()) main() (void()) print2((byte*) print2::at , (byte*) print2::msg) -(byte*) print2::at loadstore !zp[-1]:250 1.1538461538461537 +(byte*) print2::at loadstore !zp[-1]:250 78.6923076923077 (byte) print2::i -(byte) print2::i#1 22.0 -(byte) print2::i#2 6.285714285714286 +(byte) print2::i#1 2002.0 +(byte) print2::i#2 572.0 (byte) print2::j -(byte) print2::j#1 11.0 -(byte) print2::j#2 5.5 -(byte*) print2::msg loadstore !zp[-1]:252 2.3636363636363638 +(byte) print2::j#1 1001.0 +(byte) print2::j#2 500.5 +(byte*) print2::msg loadstore !zp[-1]:252 184.0 (void()) print_char((byte*) print_char::at , (byte) print_char::idx , (byte) print_char::ch) -(byte*) print_char::at loadstore !zp[-1]:250 3.25 +(byte*) print_char::at loadstore !zp[-1]:250 2750.5 (byte) print_char::ch !reg byte a -(byte) print_char::ch#0 !reg byte a 22.0 -(byte) print_char::ch#1 !reg byte a 13.0 +(byte) print_char::ch#0 !reg byte a 2002.0 +(byte) print_char::ch#1 !reg byte a 11002.0 (byte) print_char::idx !reg byte x -(byte) print_char::idx#0 !reg byte x 11.0 -(byte) print_char::idx#1 !reg byte x 13.0 +(byte) print_char::idx#0 !reg byte x 1001.0 +(byte) print_char::idx#1 !reg byte x 11002.0 Initial phi equivalence classes [ print2::i#2 print2::i#1 ] @@ -416,24 +416,24 @@ print_char: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) print2::at ← (const byte*) screen [ print2::at ] ( main:2 [ print2::at ] ) always clobbers reg byte a -Statement [5] (byte*) print2::msg ← (const byte*) main::msg [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] ) always clobbers reg byte a -Statement [7] (byte*) print2::at ← (const byte*) screen+(byte) $50 [ print2::at ] ( main:2 [ print2::at ] ) always clobbers reg byte a -Statement [8] (byte*) print2::msg ← (const byte*) main::msg1 [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] ) always clobbers reg byte a -Statement [13] if((byte) 0!=*((byte*) print2::msg + (byte) print2::i#2)) goto print2::@2 [ print2::at print2::msg print2::i#2 print2::j#2 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 ] main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 ] ) always clobbers reg byte a +Statement [4] (byte*) print2::at ← (const byte*) screen [ print2::at ] ( main:2 [ print2::at ] { } ) always clobbers reg byte a +Statement [5] (byte*) print2::msg ← (const byte*) main::msg [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] { } ) always clobbers reg byte a +Statement [7] (byte*) print2::at ← (const byte*) screen+(byte) $50 [ print2::at ] ( main:2 [ print2::at ] { } ) always clobbers reg byte a +Statement [8] (byte*) print2::msg ← (const byte*) main::msg1 [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] { } ) always clobbers reg byte a +Statement [13] if((byte) 0!=*((byte*) print2::msg + (byte) print2::i#2)) goto print2::@2 [ print2::at print2::msg print2::i#2 print2::j#2 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 ] { } main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ print2::i#2 print2::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ print2::j#2 print2::j#1 ] -Statement [17] (byte) print_char::ch#0 ← *((byte*) print2::msg + (byte) print2::i#2) [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ) always clobbers reg byte a -Statement [22] *((byte*) print_char::at + (byte) print_char::idx#1) ← (byte) print_char::ch#1 [ ] ( main:2::print2:6::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] main:2::print2:9::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] ) always clobbers reg byte y +Statement [17] (byte) print_char::ch#0 ← *((byte*) print2::msg + (byte) print2::i#2) [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } ) always clobbers reg byte a +Statement [22] *((byte*) print_char::at + (byte) print_char::idx#1) ← (byte) print_char::ch#1 [ ] ( main:2::print2:6::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } main:2::print2:9::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ print2::i#2 print2::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ print2::j#2 print2::j#1 ] -Statement [4] (byte*) print2::at ← (const byte*) screen [ print2::at ] ( main:2 [ print2::at ] ) always clobbers reg byte a -Statement [5] (byte*) print2::msg ← (const byte*) main::msg [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] ) always clobbers reg byte a -Statement [7] (byte*) print2::at ← (const byte*) screen+(byte) $50 [ print2::at ] ( main:2 [ print2::at ] ) always clobbers reg byte a -Statement [8] (byte*) print2::msg ← (const byte*) main::msg1 [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] ) always clobbers reg byte a -Statement [13] if((byte) 0!=*((byte*) print2::msg + (byte) print2::i#2)) goto print2::@2 [ print2::at print2::msg print2::i#2 print2::j#2 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 ] main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 ] ) always clobbers reg byte a reg byte y -Statement [17] (byte) print_char::ch#0 ← *((byte*) print2::msg + (byte) print2::i#2) [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ) always clobbers reg byte a reg byte y -Statement [22] *((byte*) print_char::at + (byte) print_char::idx#1) ← (byte) print_char::ch#1 [ ] ( main:2::print2:6::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] main:2::print2:9::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] ) always clobbers reg byte y +Statement [4] (byte*) print2::at ← (const byte*) screen [ print2::at ] ( main:2 [ print2::at ] { } ) always clobbers reg byte a +Statement [5] (byte*) print2::msg ← (const byte*) main::msg [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] { } ) always clobbers reg byte a +Statement [7] (byte*) print2::at ← (const byte*) screen+(byte) $50 [ print2::at ] ( main:2 [ print2::at ] { } ) always clobbers reg byte a +Statement [8] (byte*) print2::msg ← (const byte*) main::msg1 [ print2::at print2::msg ] ( main:2 [ print2::at print2::msg ] { } ) always clobbers reg byte a +Statement [13] if((byte) 0!=*((byte*) print2::msg + (byte) print2::i#2)) goto print2::@2 [ print2::at print2::msg print2::i#2 print2::j#2 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 ] { } main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 ] { } ) always clobbers reg byte a reg byte y +Statement [17] (byte) print_char::ch#0 ← *((byte*) print2::msg + (byte) print2::i#2) [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] ( main:2::print2:6 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } main:2::print2:9 [ print2::at print2::msg print2::i#2 print2::j#2 print_char::at print_char::idx#0 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } ) always clobbers reg byte a reg byte y +Statement [22] *((byte*) print_char::at + (byte) print_char::idx#1) ← (byte) print_char::ch#1 [ ] ( main:2::print2:6::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } main:2::print2:9::print_char:18 [ print2::at print2::msg print2::i#2 print2::j#2 ] { { print_char::ch#0 = print_char::ch#1 } { print_char::idx#0 = print_char::idx#1 print2::j#2 } { print_char::at = print2::at } } ) always clobbers reg byte y Potential registers zp[1]:2 [ print2::i#2 print2::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ print2::j#2 print2::j#1 ] : zp[1]:3 , reg byte x , Potential registers reg byte a [ print_char::ch#1 print_char::ch#0 ] : reg byte a , @@ -443,8 +443,8 @@ Potential registers zp[2]:252 [ print2::msg ] : zp[2]:252 , Potential registers zp[2]:250 [ print_char::at ] : zp[2]:250 , REGISTER UPLIFT SCOPES -Uplift Scope [print_char] 35: reg byte a [ print_char::ch#1 print_char::ch#0 ] 24: reg byte x [ print_char::idx#1 print_char::idx#0 ] 3.25: zp[2]:250 [ print_char::at ] -Uplift Scope [print2] 28.29: zp[1]:2 [ print2::i#2 print2::i#1 ] 16.5: zp[1]:3 [ print2::j#2 print2::j#1 ] 2.36: zp[2]:252 [ print2::msg ] 1.15: zp[2]:250 [ print2::at ] +Uplift Scope [print_char] 13,004: reg byte a [ print_char::ch#1 print_char::ch#0 ] 12,003: reg byte x [ print_char::idx#1 print_char::idx#0 ] 2,750.5: zp[2]:250 [ print_char::at ] +Uplift Scope [print2] 2,574: zp[1]:2 [ print2::i#2 print2::i#1 ] 1,501.5: zp[1]:3 [ print2::j#2 print2::j#1 ] 184: zp[2]:252 [ print2::msg ] 78.69: zp[2]:250 [ print2::at ] Uplift Scope [main] Uplift Scope [] @@ -638,23 +638,23 @@ FINAL SYMBOL TABLE (label) print2::@2 (label) print2::@3 (label) print2::@return -(byte*) print2::at loadstore !zp[-1]:250 zp[2]:250 1.1538461538461537 +(byte*) print2::at loadstore !zp[-1]:250 zp[2]:250 78.6923076923077 (byte) print2::i -(byte) print2::i#1 i zp[1]:2 22.0 -(byte) print2::i#2 i zp[1]:2 6.285714285714286 +(byte) print2::i#1 i zp[1]:2 2002.0 +(byte) print2::i#2 i zp[1]:2 572.0 (byte) print2::j -(byte) print2::j#1 reg byte x 11.0 -(byte) print2::j#2 reg byte x 5.5 -(byte*) print2::msg loadstore !zp[-1]:252 zp[2]:252 2.3636363636363638 +(byte) print2::j#1 reg byte x 1001.0 +(byte) print2::j#2 reg byte x 500.5 +(byte*) print2::msg loadstore !zp[-1]:252 zp[2]:252 184.0 (void()) print_char((byte*) print_char::at , (byte) print_char::idx , (byte) print_char::ch) (label) print_char::@return -(byte*) print_char::at loadstore !zp[-1]:250 zp[2]:250 3.25 +(byte*) print_char::at loadstore !zp[-1]:250 zp[2]:250 2750.5 (byte) print_char::ch !reg byte a -(byte) print_char::ch#0 !reg byte a 22.0 -(byte) print_char::ch#1 !reg byte a 13.0 +(byte) print_char::ch#0 !reg byte a 2002.0 +(byte) print_char::ch#1 !reg byte a 11002.0 (byte) print_char::idx !reg byte x -(byte) print_char::idx#0 !reg byte x 11.0 -(byte) print_char::idx#1 !reg byte x 13.0 +(byte) print_char::idx#0 !reg byte x 1001.0 +(byte) print_char::idx#1 !reg byte x 11002.0 (const byte*) screen = (byte*) 1024 zp[1]:2 [ print2::i#2 print2::i#1 ] diff --git a/src/test/ref/var-register-zp-3.sym b/src/test/ref/var-register-zp-3.sym index 55afbb9e7..0deeb48bd 100644 --- a/src/test/ref/var-register-zp-3.sym +++ b/src/test/ref/var-register-zp-3.sym @@ -11,23 +11,23 @@ (label) print2::@2 (label) print2::@3 (label) print2::@return -(byte*) print2::at loadstore !zp[-1]:250 zp[2]:250 1.1538461538461537 +(byte*) print2::at loadstore !zp[-1]:250 zp[2]:250 78.6923076923077 (byte) print2::i -(byte) print2::i#1 i zp[1]:2 22.0 -(byte) print2::i#2 i zp[1]:2 6.285714285714286 +(byte) print2::i#1 i zp[1]:2 2002.0 +(byte) print2::i#2 i zp[1]:2 572.0 (byte) print2::j -(byte) print2::j#1 reg byte x 11.0 -(byte) print2::j#2 reg byte x 5.5 -(byte*) print2::msg loadstore !zp[-1]:252 zp[2]:252 2.3636363636363638 +(byte) print2::j#1 reg byte x 1001.0 +(byte) print2::j#2 reg byte x 500.5 +(byte*) print2::msg loadstore !zp[-1]:252 zp[2]:252 184.0 (void()) print_char((byte*) print_char::at , (byte) print_char::idx , (byte) print_char::ch) (label) print_char::@return -(byte*) print_char::at loadstore !zp[-1]:250 zp[2]:250 3.25 +(byte*) print_char::at loadstore !zp[-1]:250 zp[2]:250 2750.5 (byte) print_char::ch !reg byte a -(byte) print_char::ch#0 !reg byte a 22.0 -(byte) print_char::ch#1 !reg byte a 13.0 +(byte) print_char::ch#0 !reg byte a 2002.0 +(byte) print_char::ch#1 !reg byte a 11002.0 (byte) print_char::idx !reg byte x -(byte) print_char::idx#0 !reg byte x 11.0 -(byte) print_char::idx#1 !reg byte x 13.0 +(byte) print_char::idx#0 !reg byte x 1001.0 +(byte) print_char::idx#1 !reg byte x 11002.0 (const byte*) screen = (byte*) 1024 zp[1]:2 [ print2::i#2 print2::i#1 ] diff --git a/src/test/ref/var-register-zp.log b/src/test/ref/var-register-zp.log index e4a20accf..64e3db70c 100644 --- a/src/test/ref/var-register-zp.log +++ b/src/test/ref/var-register-zp.log @@ -76,7 +76,7 @@ Finalized unsigned number type (byte) 4 Finalized signed number type (signed byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to signed word in (snumber~) main::$2 ← (signed word~) main::$1 * (signed byte) 2 -Alias (signed word) main::k#0 = (signed word~) main::$2 +Alias main::k#0 = main::$2 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [3] if((byte) main::i<(byte) 4) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -137,13 +137,13 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(signed word~) main::$1 22.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 -(byte) main::i loadstore !zp[-1]:2 6.583333333333334 -(signed word) main::j loadstore !zp[-1]:4 3.1818181818181817 +(signed word~) main::$1 202.0 +(byte~) main::$3 202.0 +(byte~) main::$4 202.0 +(byte) main::i loadstore !zp[-1]:2 59.83333333333332 +(signed word) main::j loadstore !zp[-1]:4 28.545454545454547 (signed word) main::k -(signed word) main::k#0 11.0 +(signed word) main::k#0 101.0 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -264,15 +264,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] (signed word) main::j ← (signed word) 0 [ main::i main::j ] ( main:2 [ main::i main::j ] ) always clobbers reg byte a -Statement [6] if((byte) main::i<(byte) 4) goto main::@2 [ main::i main::j ] ( main:2 [ main::i main::j ] ) always clobbers reg byte a -Statement [8] (byte~) main::$3 ← (byte) main::i << (byte) 1 [ main::i main::j main::$3 ] ( main:2 [ main::i main::j main::$3 ] ) always clobbers reg byte a -Statement [9] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::j [ main::i main::j ] ( main:2 [ main::i main::j ] ) always clobbers reg byte a -Statement [12] (signed word~) main::$1 ← (signed word)(byte) main::i [ main::i main::j main::$1 ] ( main:2 [ main::i main::j main::$1 ] ) always clobbers reg byte a -Statement [13] (signed word) main::k#0 ← (signed word~) main::$1 << (byte) 1 [ main::i main::j main::k#0 ] ( main:2 [ main::i main::j main::k#0 ] ) always clobbers reg byte a -Statement [14] (byte~) main::$4 ← (byte) main::i << (byte) 1 [ main::i main::j main::k#0 main::$4 ] ( main:2 [ main::i main::j main::k#0 main::$4 ] ) always clobbers reg byte a -Statement [15] *((const signed word*) SCREEN + (byte~) main::$4) ← (signed word) main::k#0 [ main::i main::j ] ( main:2 [ main::i main::j ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] (signed word) main::j ← (signed word) 0 [ main::i main::j ] ( main:2 [ main::i main::j ] { } ) always clobbers reg byte a +Statement [6] if((byte) main::i<(byte) 4) goto main::@2 [ main::i main::j ] ( main:2 [ main::i main::j ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$3 ← (byte) main::i << (byte) 1 [ main::i main::j main::$3 ] ( main:2 [ main::i main::j main::$3 ] { } ) always clobbers reg byte a +Statement [9] *((const signed word*) SCREEN + (byte~) main::$3) ← (signed word) main::j [ main::i main::j ] ( main:2 [ main::i main::j ] { } ) always clobbers reg byte a +Statement [12] (signed word~) main::$1 ← (signed word)(byte) main::i [ main::i main::j main::$1 ] ( main:2 [ main::i main::j main::$1 ] { } ) always clobbers reg byte a +Statement [13] (signed word) main::k#0 ← (signed word~) main::$1 << (byte) 1 [ main::i main::j main::k#0 ] ( main:2 [ main::i main::j main::k#0 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$4 ← (byte) main::i << (byte) 1 [ main::i main::j main::k#0 main::$4 ] ( main:2 [ main::i main::j main::k#0 main::$4 ] { } ) always clobbers reg byte a +Statement [15] *((const signed word*) SCREEN + (byte~) main::$4) ← (signed word) main::k#0 [ main::i main::j ] ( main:2 [ main::i main::j ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i ] : zp[1]:2 , Potential registers zp[2]:4 [ main::j ] : zp[2]:4 , Potential registers zp[1]:3 [ main::$3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , @@ -281,7 +281,7 @@ Potential registers zp[2]:8 [ main::k#0 ] : zp[2]:8 , Potential registers zp[1]:10 [ main::$4 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:3 [ main::$3 ] 22: zp[2]:6 [ main::$1 ] 22: zp[1]:10 [ main::$4 ] 11: zp[2]:8 [ main::k#0 ] 6.58: zp[1]:2 [ main::i ] 3.18: zp[2]:4 [ main::j ] +Uplift Scope [main] 202: zp[1]:3 [ main::$3 ] 202: zp[2]:6 [ main::$1 ] 202: zp[1]:10 [ main::$4 ] 101: zp[2]:8 [ main::k#0 ] 59.83: zp[1]:2 [ main::i ] 28.55: zp[2]:4 [ main::j ] Uplift Scope [] Uplifting [main] best 1126 combination reg byte a [ main::$3 ] zp[2]:6 [ main::$1 ] reg byte a [ main::$4 ] zp[2]:8 [ main::k#0 ] zp[1]:2 [ main::i ] zp[2]:4 [ main::j ] @@ -408,16 +408,16 @@ FINAL SYMBOL TABLE (label) @end (const signed word*) SCREEN = (signed word*) 1024 (void()) main() -(signed word~) main::$1 zp[2]:6 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(signed word~) main::$1 zp[2]:6 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 6.583333333333334 -(signed word) main::j loadstore !zp[-1]:4 zp[2]:4 3.1818181818181817 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 59.83333333333332 +(signed word) main::j loadstore !zp[-1]:4 zp[2]:4 28.545454545454547 (signed word) main::k -(signed word) main::k#0 k zp[2]:6 11.0 +(signed word) main::k#0 k zp[2]:6 101.0 zp[1]:2 [ main::i ] zp[2]:4 [ main::j ] diff --git a/src/test/ref/var-register-zp.sym b/src/test/ref/var-register-zp.sym index 6b389c4ce..4671919df 100644 --- a/src/test/ref/var-register-zp.sym +++ b/src/test/ref/var-register-zp.sym @@ -3,16 +3,16 @@ (label) @end (const signed word*) SCREEN = (signed word*) 1024 (void()) main() -(signed word~) main::$1 zp[2]:6 22.0 -(byte~) main::$3 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(signed word~) main::$1 zp[2]:6 202.0 +(byte~) main::$3 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore !zp[-1]:2 zp[1]:2 6.583333333333334 -(signed word) main::j loadstore !zp[-1]:4 zp[2]:4 3.1818181818181817 +(byte) main::i loadstore !zp[-1]:2 zp[1]:2 59.83333333333332 +(signed word) main::j loadstore !zp[-1]:4 zp[2]:4 28.545454545454547 (signed word) main::k -(signed word) main::k#0 k zp[2]:6 11.0 +(signed word) main::k#0 k zp[2]:6 101.0 zp[1]:2 [ main::i ] zp[2]:4 [ main::j ] diff --git a/src/test/ref/var-register.log b/src/test/ref/var-register.log index 7d254f34c..d7e2f70e2 100644 --- a/src/test/ref/var-register.log +++ b/src/test/ref/var-register.log @@ -122,10 +122,10 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) main::val1#0 = (byte~) main::$0 -Alias (byte) main::a#2 = (byte) main::a#3 -Alias (byte) main::x#2 = (byte) main::x#5 (byte) main::x#6 (byte) main::x#3 -Alias (byte) main::y#2 = (byte) main::y#5 (byte) main::y#3 +Alias main::val1#0 = main::$0 +Alias main::a#2 = main::a#3 +Alias main::x#2 = main::x#5 main::x#6 main::x#3 +Alias main::y#2 = main::y#5 main::y#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::y#2 (byte) main::y#4 Identical Phi Values (byte) print::val#1 (byte) print::val#0 @@ -255,24 +255,24 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::a -(byte) main::a#1 1501.5 -(byte) main::a#2 600.5999999999999 +(byte) main::a#1 15001.5 +(byte) main::a#2 6000.6 (byte) main::val1 !reg byte a -(byte) main::val1#0 !reg byte a 1001.0 +(byte) main::val1#0 !reg byte a 10001.0 (byte) main::x !reg byte y -(byte) main::x#1 !reg byte y 16.5 -(byte) main::x#2 !reg byte y 357.33333333333337 -(byte) main::x#4 !reg byte y 213.0 -(byte) main::x#7 !reg byte y 22.0 +(byte) main::x#1 !reg byte y 151.5 +(byte) main::x#2 !reg byte y 3567.333333333333 +(byte) main::x#4 !reg byte y 2103.0 +(byte) main::x#7 !reg byte y 202.0 (byte) main::y -(byte) main::y#1 151.5 -(byte) main::y#4 150.375 +(byte) main::y#1 1501.5 +(byte) main::y#4 1500.375 (void()) print((byte) print::idx , (byte) print::val) (byte) print::idx !reg byte x -(byte) print::idx#0 !reg byte x 1001.0 -(byte) print::idx#1 !reg byte x 1003.0 +(byte) print::idx#0 !reg byte x 10001.0 +(byte) print::idx#1 !reg byte x 110002.0 (byte) print::val -(byte) print::val#0 501.5 +(byte) print::val#0 55001.0 Initial phi equivalence classes [ main::x#4 main::x#7 main::x#1 main::x#2 ] @@ -421,12 +421,12 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ( main:2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ) always clobbers reg byte a +Statement [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ( main:2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] { { print::idx#0 = print::idx#1 main::y#4 } { print::val#0 = main::val1#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::a#2 main::a#1 ] -Statement [16] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte y -Statement [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ( main:2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ) always clobbers reg byte a -Statement [16] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte y +Statement [16] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::x#1 ] ( main:2 [ main::x#1 ] { } ) always clobbers reg byte y +Statement [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] ( main:2 [ main::y#4 main::x#2 main::a#2 main::val1#0 ] { { print::idx#0 = print::idx#1 main::y#4 } { print::val#0 = main::val1#0 } } ) always clobbers reg byte a +Statement [16] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::x#1 ] ( main:2 [ main::x#1 ] { } ) always clobbers reg byte y Potential registers reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] : reg byte y , Potential registers zp[1]:2 [ main::y#4 main::y#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::a#2 main::a#1 ] : zp[1]:3 , reg byte x , reg byte y , @@ -435,12 +435,12 @@ Potential registers reg byte a [ main::val1#0 ] : reg byte a , Potential registers zp[1]:4 [ print::val#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2,102.1: zp[1]:3 [ main::a#2 main::a#1 ] 1,001: reg byte a [ main::val1#0 ] 608.83: reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] 301.88: zp[1]:2 [ main::y#4 main::y#1 ] -Uplift Scope [print] 2,004: reg byte x [ print::idx#1 print::idx#0 ] 501.5: zp[1]:4 [ print::val#0 ] +Uplift Scope [print] 120,003: reg byte x [ print::idx#1 print::idx#0 ] 55,001: zp[1]:4 [ print::val#0 ] +Uplift Scope [main] 21,002.1: zp[1]:3 [ main::a#2 main::a#1 ] 10,001: reg byte a [ main::val1#0 ] 6,023.83: reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] 3,001.88: zp[1]:2 [ main::y#4 main::y#1 ] Uplift Scope [] -Uplifting [main] best 38469 combination zp[1]:3 [ main::a#2 main::a#1 ] reg byte a [ main::val1#0 ] reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] reg byte x [ main::y#4 main::y#1 ] -Uplifting [print] best 35466 combination reg byte x [ print::idx#1 print::idx#0 ] reg byte a [ print::val#0 ] +Uplifting [print] best 39366 combination reg byte x [ print::idx#1 print::idx#0 ] reg byte a [ print::val#0 ] +Uplifting [main] best 35466 combination zp[1]:3 [ main::a#2 main::a#1 ] reg byte a [ main::val1#0 ] reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] reg byte x [ main::y#4 main::y#1 ] Uplifting [] best 35466 combination Attempting to uplift remaining variables inzp[1]:3 [ main::a#2 main::a#1 ] Uplifting [main] best 35466 combination zp[1]:3 [ main::a#2 main::a#1 ] @@ -623,26 +623,26 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 1501.5 -(byte) main::a#2 a zp[1]:2 600.5999999999999 +(byte) main::a#1 a zp[1]:2 15001.5 +(byte) main::a#2 a zp[1]:2 6000.6 (byte) main::val1 !reg byte a -(byte) main::val1#0 !reg byte a 1001.0 +(byte) main::val1#0 !reg byte a 10001.0 (byte) main::x !reg byte y -(byte) main::x#1 !reg byte y 16.5 -(byte) main::x#2 !reg byte y 357.33333333333337 -(byte) main::x#4 !reg byte y 213.0 -(byte) main::x#7 !reg byte y 22.0 +(byte) main::x#1 !reg byte y 151.5 +(byte) main::x#2 !reg byte y 3567.333333333333 +(byte) main::x#4 !reg byte y 2103.0 +(byte) main::x#7 !reg byte y 202.0 (byte) main::y -(byte) main::y#1 reg byte x 151.5 -(byte) main::y#4 reg byte x 150.375 +(byte) main::y#1 reg byte x 1501.5 +(byte) main::y#4 reg byte x 1500.375 (void()) print((byte) print::idx , (byte) print::val) (label) print::@return (const byte*) print::SCREEN = (byte*) 1024 (byte) print::idx !reg byte x -(byte) print::idx#0 !reg byte x 1001.0 -(byte) print::idx#1 !reg byte x 1003.0 +(byte) print::idx#0 !reg byte x 10001.0 +(byte) print::idx#1 !reg byte x 110002.0 (byte) print::val -(byte) print::val#0 reg byte a 501.5 +(byte) print::val#0 reg byte a 55001.0 reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] reg byte x [ main::y#4 main::y#1 ] diff --git a/src/test/ref/var-register.sym b/src/test/ref/var-register.sym index b5a575a89..a111f2d62 100644 --- a/src/test/ref/var-register.sym +++ b/src/test/ref/var-register.sym @@ -10,26 +10,26 @@ (label) main::@6 (label) main::@return (byte) main::a -(byte) main::a#1 a zp[1]:2 1501.5 -(byte) main::a#2 a zp[1]:2 600.5999999999999 +(byte) main::a#1 a zp[1]:2 15001.5 +(byte) main::a#2 a zp[1]:2 6000.6 (byte) main::val1 !reg byte a -(byte) main::val1#0 !reg byte a 1001.0 +(byte) main::val1#0 !reg byte a 10001.0 (byte) main::x !reg byte y -(byte) main::x#1 !reg byte y 16.5 -(byte) main::x#2 !reg byte y 357.33333333333337 -(byte) main::x#4 !reg byte y 213.0 -(byte) main::x#7 !reg byte y 22.0 +(byte) main::x#1 !reg byte y 151.5 +(byte) main::x#2 !reg byte y 3567.333333333333 +(byte) main::x#4 !reg byte y 2103.0 +(byte) main::x#7 !reg byte y 202.0 (byte) main::y -(byte) main::y#1 reg byte x 151.5 -(byte) main::y#4 reg byte x 150.375 +(byte) main::y#1 reg byte x 1501.5 +(byte) main::y#4 reg byte x 1500.375 (void()) print((byte) print::idx , (byte) print::val) (label) print::@return (const byte*) print::SCREEN = (byte*) 1024 (byte) print::idx !reg byte x -(byte) print::idx#0 !reg byte x 1001.0 -(byte) print::idx#1 !reg byte x 1003.0 +(byte) print::idx#0 !reg byte x 10001.0 +(byte) print::idx#1 !reg byte x 110002.0 (byte) print::val -(byte) print::val#0 reg byte a 501.5 +(byte) print::val#0 reg byte a 55001.0 reg byte y [ main::x#4 main::x#7 main::x#1 main::x#2 ] reg byte x [ main::y#4 main::y#1 ] diff --git a/src/test/ref/varmodel-ma_mem-2.log b/src/test/ref/varmodel-ma_mem-2.log index 8fcf87fe9..344232e93 100644 --- a/src/test/ref/varmodel-ma_mem-2.log +++ b/src/test/ref/varmodel-ma_mem-2.log @@ -93,8 +93,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore 7.000000000000001 -(byte*) main::screen loadstore 5.833333333333333 +(byte) main::i loadstore 62.8 +(byte*) main::screen loadstore 52.33333333333333 Initial phi equivalence classes Added variable main::screen to live range equivalence class [ main::screen ] @@ -169,15 +169,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] ) always clobbers reg byte a -Statement [5] (byte) main::i ← (byte) 0 [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a -Statement [6] *((byte*) main::screen) ← (byte) 'a' [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a reg byte y -Statement [9] if((byte) main::i!=(byte) 6) goto main::@1 [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a +Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] { } ) always clobbers reg byte a +Statement [5] (byte) main::i ← (byte) 0 [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::screen) ← (byte) 'a' [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a reg byte y +Statement [9] if((byte) main::i!=(byte) 6) goto main::@1 [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::screen ] : zp[2]:2 , Potential registers mem[1] [ main::i ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 7: mem[1] [ main::i ] 5.83: zp[2]:2 [ main::screen ] +Uplift Scope [main] 62.8: mem[1] [ main::i ] 52.33: zp[2]:2 [ main::screen ] Uplift Scope [] Uplifting [main] best 437 combination mem[1] [ main::i ] zp[2]:2 [ main::screen ] @@ -273,8 +273,8 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 7.000000000000001 -(byte*) main::screen loadstore zp[2]:2 5.833333333333333 +(byte) main::i loadstore mem[1] 62.8 +(byte*) main::screen loadstore zp[2]:2 52.33333333333333 zp[2]:2 [ main::screen ] mem[1] [ main::i ] diff --git a/src/test/ref/varmodel-ma_mem-2.sym b/src/test/ref/varmodel-ma_mem-2.sym index 125ae4c29..0f1586d59 100644 --- a/src/test/ref/varmodel-ma_mem-2.sym +++ b/src/test/ref/varmodel-ma_mem-2.sym @@ -4,8 +4,8 @@ (void()) main() (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 7.000000000000001 -(byte*) main::screen loadstore zp[2]:2 5.833333333333333 +(byte) main::i loadstore mem[1] 62.8 +(byte*) main::screen loadstore zp[2]:2 52.33333333333333 zp[2]:2 [ main::screen ] mem[1] [ main::i ] diff --git a/src/test/ref/varmodel-ma_mem-3.log b/src/test/ref/varmodel-ma_mem-3.log index 7cab2022e..8ae88a762 100644 --- a/src/test/ref/varmodel-ma_mem-3.log +++ b/src/test/ref/varmodel-ma_mem-3.log @@ -202,15 +202,15 @@ model_ma_mem::@return: scope:[model_ma_mem] from model_ma_mem::@1 VARIABLE REGISTER WEIGHTS (void()) main() (void()) model_ma_mem() -(byte) model_ma_mem::i loadstore 7.000000000000001 -(byte*) model_ma_mem::screen loadstore 5.833333333333333 +(byte) model_ma_mem::i loadstore 620.8 +(byte*) model_ma_mem::screen loadstore 517.3333333333334 (void()) model_ssa_zp() (byte) model_ssa_zp::i -(byte) model_ssa_zp::i#1 16.5 -(byte) model_ssa_zp::i#2 7.333333333333333 +(byte) model_ssa_zp::i#1 1501.5 +(byte) model_ssa_zp::i#2 667.3333333333334 (byte*) model_ssa_zp::screen -(byte*) model_ssa_zp::screen#1 7.333333333333333 -(byte*) model_ssa_zp::screen#2 16.5 +(byte*) model_ssa_zp::screen#1 667.3333333333334 +(byte*) model_ssa_zp::screen#2 1501.5 Initial phi equivalence classes [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] @@ -361,26 +361,26 @@ model_ma_mem: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] *((byte*) model_ssa_zp::screen#2) ← (byte) 'b' [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ( main:2::model_ssa_zp:7 [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ) always clobbers reg byte a reg byte y +Statement [11] *((byte*) model_ssa_zp::screen#2) ← (byte) 'b' [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ( main:2::model_ssa_zp:7 [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] -Statement [16] (byte*) model_ma_mem::screen ← (byte*) 1024 [ model_ma_mem::screen ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen ] ) always clobbers reg byte a -Statement [17] (byte) model_ma_mem::i ← (byte) 0 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a -Statement [18] *((byte*) model_ma_mem::screen) ← (byte) 'a' [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a reg byte y -Statement [21] if((byte) model_ma_mem::i!=(byte) 6) goto model_ma_mem::@1 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a -Statement [11] *((byte*) model_ssa_zp::screen#2) ← (byte) 'b' [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ( main:2::model_ssa_zp:7 [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ) always clobbers reg byte a reg byte y -Statement [16] (byte*) model_ma_mem::screen ← (byte*) 1024 [ model_ma_mem::screen ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen ] ) always clobbers reg byte a -Statement [17] (byte) model_ma_mem::i ← (byte) 0 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a -Statement [18] *((byte*) model_ma_mem::screen) ← (byte) 'a' [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a reg byte y -Statement [21] if((byte) model_ma_mem::i!=(byte) 6) goto model_ma_mem::@1 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] ) always clobbers reg byte a +Statement [16] (byte*) model_ma_mem::screen ← (byte*) 1024 [ model_ma_mem::screen ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen ] { } ) always clobbers reg byte a +Statement [17] (byte) model_ma_mem::i ← (byte) 0 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a +Statement [18] *((byte*) model_ma_mem::screen) ← (byte) 'a' [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a reg byte y +Statement [21] if((byte) model_ma_mem::i!=(byte) 6) goto model_ma_mem::@1 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a +Statement [11] *((byte*) model_ssa_zp::screen#2) ← (byte) 'b' [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] ( main:2::model_ssa_zp:7 [ model_ssa_zp::screen#2 model_ssa_zp::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [16] (byte*) model_ma_mem::screen ← (byte*) 1024 [ model_ma_mem::screen ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen ] { } ) always clobbers reg byte a +Statement [17] (byte) model_ma_mem::i ← (byte) 0 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a +Statement [18] *((byte*) model_ma_mem::screen) ← (byte) 'a' [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a reg byte y +Statement [21] if((byte) model_ma_mem::i!=(byte) 6) goto model_ma_mem::@1 [ model_ma_mem::screen model_ma_mem::i ] ( main:2::model_ma_mem:5 [ model_ma_mem::screen model_ma_mem::i ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] : zp[1]:4 , reg byte x , Potential registers mem[2] [ model_ma_mem::screen ] : mem[2] , Potential registers mem[1] [ model_ma_mem::i ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [model_ssa_zp] 23.83: zp[2]:2 [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] 23.83: zp[1]:4 [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] -Uplift Scope [model_ma_mem] 7: mem[1] [ model_ma_mem::i ] 5.83: mem[2] [ model_ma_mem::screen ] +Uplift Scope [model_ssa_zp] 2,168.83: zp[2]:2 [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] 2,168.83: zp[1]:4 [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] +Uplift Scope [model_ma_mem] 620.8: mem[1] [ model_ma_mem::i ] 517.33: mem[2] [ model_ma_mem::screen ] Uplift Scope [main] Uplift Scope [] @@ -564,17 +564,17 @@ FINAL SYMBOL TABLE (void()) model_ma_mem() (label) model_ma_mem::@1 (label) model_ma_mem::@return -(byte) model_ma_mem::i loadstore mem[1] 7.000000000000001 -(byte*) model_ma_mem::screen loadstore mem[2] 5.833333333333333 +(byte) model_ma_mem::i loadstore mem[1] 620.8 +(byte*) model_ma_mem::screen loadstore mem[2] 517.3333333333334 (void()) model_ssa_zp() (label) model_ssa_zp::@1 (label) model_ssa_zp::@return (byte) model_ssa_zp::i -(byte) model_ssa_zp::i#1 reg byte x 16.5 -(byte) model_ssa_zp::i#2 reg byte x 7.333333333333333 +(byte) model_ssa_zp::i#1 reg byte x 1501.5 +(byte) model_ssa_zp::i#2 reg byte x 667.3333333333334 (byte*) model_ssa_zp::screen -(byte*) model_ssa_zp::screen#1 screen zp[2]:2 7.333333333333333 -(byte*) model_ssa_zp::screen#2 screen zp[2]:2 16.5 +(byte*) model_ssa_zp::screen#1 screen zp[2]:2 667.3333333333334 +(byte*) model_ssa_zp::screen#2 screen zp[2]:2 1501.5 zp[2]:2 [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] reg byte x [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] diff --git a/src/test/ref/varmodel-ma_mem-3.sym b/src/test/ref/varmodel-ma_mem-3.sym index c503a4b3d..0434b4510 100644 --- a/src/test/ref/varmodel-ma_mem-3.sym +++ b/src/test/ref/varmodel-ma_mem-3.sym @@ -7,17 +7,17 @@ (void()) model_ma_mem() (label) model_ma_mem::@1 (label) model_ma_mem::@return -(byte) model_ma_mem::i loadstore mem[1] 7.000000000000001 -(byte*) model_ma_mem::screen loadstore mem[2] 5.833333333333333 +(byte) model_ma_mem::i loadstore mem[1] 620.8 +(byte*) model_ma_mem::screen loadstore mem[2] 517.3333333333334 (void()) model_ssa_zp() (label) model_ssa_zp::@1 (label) model_ssa_zp::@return (byte) model_ssa_zp::i -(byte) model_ssa_zp::i#1 reg byte x 16.5 -(byte) model_ssa_zp::i#2 reg byte x 7.333333333333333 +(byte) model_ssa_zp::i#1 reg byte x 1501.5 +(byte) model_ssa_zp::i#2 reg byte x 667.3333333333334 (byte*) model_ssa_zp::screen -(byte*) model_ssa_zp::screen#1 screen zp[2]:2 7.333333333333333 -(byte*) model_ssa_zp::screen#2 screen zp[2]:2 16.5 +(byte*) model_ssa_zp::screen#1 screen zp[2]:2 667.3333333333334 +(byte*) model_ssa_zp::screen#2 screen zp[2]:2 1501.5 zp[2]:2 [ model_ssa_zp::screen#2 model_ssa_zp::screen#1 ] reg byte x [ model_ssa_zp::i#2 model_ssa_zp::i#1 ] diff --git a/src/test/ref/varmodel-ma_mem-4.log b/src/test/ref/varmodel-ma_mem-4.log index b4c48cda4..a6f554e29 100644 --- a/src/test/ref/varmodel-ma_mem-4.log +++ b/src/test/ref/varmodel-ma_mem-4.log @@ -66,9 +66,9 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte*) screen#3 = (byte*) screen#7 (byte*) screen#4 -Alias (byte*) screen#0 = (byte*) screen#10 -Alias (byte*) screen#5 = (byte*) screen#8 +Alias screen#3 = screen#7 screen#4 +Alias screen#0 = screen#10 +Alias screen#5 = screen#8 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen#9 (byte*) screen#0 Identical Phi Values (byte*) screen#5 (byte*) screen#3 @@ -138,12 +138,12 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore 4.6000000000000005 +(byte) main::i loadstore 41.5 (byte*) screen -(byte*) screen#1 16.5 -(byte*) screen#2 16.5 -(byte*) screen#3 7.333333333333333 -(byte*) screen#6 16.5 +(byte*) screen#1 151.5 +(byte*) screen#2 151.5 +(byte*) screen#3 67.33333333333333 +(byte*) screen#6 151.5 Initial phi equivalence classes [ screen#6 screen#3 ] @@ -260,22 +260,22 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [6] *((byte*) screen#6) ← (const byte) a [ main::i screen#6 ] ( main:2 [ main::i screen#6 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte*) screen#1 ← ++ (byte*) screen#6 [ main::i screen#1 ] ( main:2 [ main::i screen#1 ] ) always clobbers reg byte a -Statement [8] *((byte*) screen#1) ← (const byte) main::b [ main::i screen#1 ] ( main:2 [ main::i screen#1 ] ) always clobbers reg byte a reg byte y -Statement [9] (byte*) screen#2 ← ++ (byte*) screen#1 [ main::i screen#2 ] ( main:2 [ main::i screen#2 ] ) always clobbers reg byte a -Statement [10] *((byte*) screen#2) ← (byte) main::i [ main::i screen#2 ] ( main:2 [ main::i screen#2 ] ) always clobbers reg byte a reg byte y -Statement [11] (byte*) screen#3 ← ++ (byte*) screen#2 [ main::i screen#3 ] ( main:2 [ main::i screen#3 ] ) always clobbers reg byte a -Statement [13] if((byte) main::i!=(byte) 6) goto main::@1 [ main::i screen#3 ] ( main:2 [ main::i screen#3 ] ) always clobbers reg byte a +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [6] *((byte*) screen#6) ← (const byte) a [ main::i screen#6 ] ( main:2 [ main::i screen#6 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte*) screen#1 ← ++ (byte*) screen#6 [ main::i screen#1 ] ( main:2 [ main::i screen#1 ] { } ) always clobbers reg byte a +Statement [8] *((byte*) screen#1) ← (const byte) main::b [ main::i screen#1 ] ( main:2 [ main::i screen#1 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (byte*) screen#2 ← ++ (byte*) screen#1 [ main::i screen#2 ] ( main:2 [ main::i screen#2 ] { } ) always clobbers reg byte a +Statement [10] *((byte*) screen#2) ← (byte) main::i [ main::i screen#2 ] ( main:2 [ main::i screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [11] (byte*) screen#3 ← ++ (byte*) screen#2 [ main::i screen#3 ] ( main:2 [ main::i screen#3 ] { } ) always clobbers reg byte a +Statement [13] if((byte) main::i!=(byte) 6) goto main::@1 [ main::i screen#3 ] ( main:2 [ main::i screen#3 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ screen#6 screen#3 ] : zp[2]:2 , Potential registers mem[1] [ main::i ] : mem[1] , Potential registers zp[2]:4 [ screen#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ screen#2 ] : zp[2]:6 , REGISTER UPLIFT SCOPES -Uplift Scope [] 23.83: zp[2]:2 [ screen#6 screen#3 ] 16.5: zp[2]:4 [ screen#1 ] 16.5: zp[2]:6 [ screen#2 ] -Uplift Scope [main] 4.6: mem[1] [ main::i ] +Uplift Scope [] 218.83: zp[2]:2 [ screen#6 screen#3 ] 151.5: zp[2]:4 [ screen#1 ] 151.5: zp[2]:6 [ screen#2 ] +Uplift Scope [main] 41.5: mem[1] [ main::i ] Uplifting [] best 1219 combination zp[2]:2 [ screen#6 screen#3 ] zp[2]:4 [ screen#1 ] zp[2]:6 [ screen#2 ] Uplifting [main] best 1219 combination mem[1] [ main::i ] @@ -404,12 +404,12 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (const byte) main::b = (byte) 'b' -(byte) main::i loadstore mem[1] 4.6000000000000005 +(byte) main::i loadstore mem[1] 41.5 (byte*) screen -(byte*) screen#1 screen zp[2]:2 16.5 -(byte*) screen#2 screen zp[2]:2 16.5 -(byte*) screen#3 screen zp[2]:2 7.333333333333333 -(byte*) screen#6 screen zp[2]:2 16.5 +(byte*) screen#1 screen zp[2]:2 151.5 +(byte*) screen#2 screen zp[2]:2 151.5 +(byte*) screen#3 screen zp[2]:2 67.33333333333333 +(byte*) screen#6 screen zp[2]:2 151.5 zp[2]:2 [ screen#6 screen#3 screen#1 screen#2 ] mem[1] [ main::i ] diff --git a/src/test/ref/varmodel-ma_mem-4.sym b/src/test/ref/varmodel-ma_mem-4.sym index 62168d350..d00b3d74d 100644 --- a/src/test/ref/varmodel-ma_mem-4.sym +++ b/src/test/ref/varmodel-ma_mem-4.sym @@ -6,12 +6,12 @@ (label) main::@1 (label) main::@return (const byte) main::b = (byte) 'b' -(byte) main::i loadstore mem[1] 4.6000000000000005 +(byte) main::i loadstore mem[1] 41.5 (byte*) screen -(byte*) screen#1 screen zp[2]:2 16.5 -(byte*) screen#2 screen zp[2]:2 16.5 -(byte*) screen#3 screen zp[2]:2 7.333333333333333 -(byte*) screen#6 screen zp[2]:2 16.5 +(byte*) screen#1 screen zp[2]:2 151.5 +(byte*) screen#2 screen zp[2]:2 151.5 +(byte*) screen#3 screen zp[2]:2 67.33333333333333 +(byte*) screen#6 screen zp[2]:2 151.5 zp[2]:2 [ screen#6 screen#3 screen#1 screen#2 ] mem[1] [ main::i ] diff --git a/src/test/ref/varmodel-ma_mem-5.log b/src/test/ref/varmodel-ma_mem-5.log index ba7610165..b83e9da3f 100644 --- a/src/test/ref/varmodel-ma_mem-5.log +++ b/src/test/ref/varmodel-ma_mem-5.log @@ -89,8 +89,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 11.0 -(byte) main::i loadstore 9.200000000000001 +(byte~) main::$1 101.0 +(byte) main::i loadstore 83.0 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -158,13 +158,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] *((const byte*) SCREEN + (byte) main::i) ← (byte) '*' [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y +Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN + (byte) main::i) ← (byte) '*' [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a reg byte y Potential registers mem[1] [ main::i ] : mem[1] , Potential registers zp[1]:2 [ main::$1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 11: zp[1]:2 [ main::$1 ] 9.2: mem[1] [ main::i ] +Uplift Scope [main] 101: zp[1]:2 [ main::$1 ] 83: mem[1] [ main::i ] Uplift Scope [] Uplifting [main] best 312 combination reg byte a [ main::$1 ] mem[1] [ main::i ] @@ -250,10 +250,10 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$1 reg byte a 11.0 +(byte~) main::$1 reg byte a 101.0 (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 9.200000000000001 +(byte) main::i loadstore mem[1] 83.0 mem[1] [ main::i ] reg byte a [ main::$1 ] diff --git a/src/test/ref/varmodel-ma_mem-5.sym b/src/test/ref/varmodel-ma_mem-5.sym index cc8791f7f..3e527b0f4 100644 --- a/src/test/ref/varmodel-ma_mem-5.sym +++ b/src/test/ref/varmodel-ma_mem-5.sym @@ -3,10 +3,10 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$1 reg byte a 11.0 +(byte~) main::$1 reg byte a 101.0 (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 9.200000000000001 +(byte) main::i loadstore mem[1] 83.0 mem[1] [ main::i ] reg byte a [ main::$1 ] diff --git a/src/test/ref/varmodel-ma_mem.log b/src/test/ref/varmodel-ma_mem.log index 37cfefdcd..47fe95c1a 100644 --- a/src/test/ref/varmodel-ma_mem.log +++ b/src/test/ref/varmodel-ma_mem.log @@ -93,8 +93,8 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore 7.000000000000001 -(byte*) main::screen loadstore 5.833333333333333 +(byte) main::i loadstore 62.8 +(byte*) main::screen loadstore 52.33333333333333 Initial phi equivalence classes Added variable main::screen to live range equivalence class [ main::screen ] @@ -173,15 +173,15 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] ) always clobbers reg byte a -Statement [5] (byte) main::i ← (byte) 0 [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a -Statement [6] *((byte*) main::screen) ← (byte) 'a' [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a reg byte y -Statement [9] if((byte) main::i!=(byte) 6) goto main::@1 [ main::screen main::i ] ( main:2 [ main::screen main::i ] ) always clobbers reg byte a +Statement [4] (byte*) main::screen ← (byte*) 1024 [ main::screen ] ( main:2 [ main::screen ] { } ) always clobbers reg byte a +Statement [5] (byte) main::i ← (byte) 0 [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::screen) ← (byte) 'a' [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a reg byte y +Statement [9] if((byte) main::i!=(byte) 6) goto main::@1 [ main::screen main::i ] ( main:2 [ main::screen main::i ] { } ) always clobbers reg byte a Potential registers mem[2] [ main::screen ] : mem[2] , Potential registers mem[1] [ main::i ] : mem[1] , REGISTER UPLIFT SCOPES -Uplift Scope [main] 7: mem[1] [ main::i ] 5.83: mem[2] [ main::screen ] +Uplift Scope [main] 62.8: mem[1] [ main::i ] 52.33: mem[2] [ main::screen ] Uplift Scope [] Uplifting [main] best 599 combination mem[1] [ main::i ] mem[2] [ main::screen ] @@ -281,8 +281,8 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 7.000000000000001 -(byte*) main::screen loadstore mem[2] 5.833333333333333 +(byte) main::i loadstore mem[1] 62.8 +(byte*) main::screen loadstore mem[2] 52.33333333333333 mem[2] [ main::screen ] mem[1] [ main::i ] diff --git a/src/test/ref/varmodel-ma_mem.sym b/src/test/ref/varmodel-ma_mem.sym index a697176c5..d16daa17b 100644 --- a/src/test/ref/varmodel-ma_mem.sym +++ b/src/test/ref/varmodel-ma_mem.sym @@ -4,8 +4,8 @@ (void()) main() (label) main::@1 (label) main::@return -(byte) main::i loadstore mem[1] 7.000000000000001 -(byte*) main::screen loadstore mem[2] 5.833333333333333 +(byte) main::i loadstore mem[1] 62.8 +(byte*) main::screen loadstore mem[2] 52.33333333333333 mem[2] [ main::screen ] mem[1] [ main::i ] diff --git a/src/test/ref/void-parameter.log b/src/test/ref/void-parameter.log index 169fd388f..c1927fabb 100644 --- a/src/test/ref/void-parameter.log +++ b/src/test/ref/void-parameter.log @@ -87,12 +87,12 @@ SYMBOL TABLE SSA Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Alias (byte) idx#0 = (byte) idx#8 -Alias (byte) idx#1 = (byte) idx#9 -Alias (byte) idx#10 = (byte) idx#2 (byte) idx#11 (byte) idx#3 -Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6 -Alias (byte) idx#16 = (byte) idx#4 -Alias (byte) idx#14 = (byte) idx#7 +Alias idx#0 = idx#8 +Alias idx#1 = idx#9 +Alias idx#10 = idx#2 idx#11 idx#3 +Alias idx#13 = idx#5 idx#6 +Alias idx#16 = idx#4 +Alias idx#14 = idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) idx#15 (byte) idx#16 Identical Phi Values (byte) idx#0 (byte) idx#13 @@ -172,8 +172,8 @@ print::@return: scope:[print] from print VARIABLE REGISTER WEIGHTS (byte) idx -(byte) idx#12 4.0 -(byte) idx#13 1.0 +(byte) idx#12 112.0 +(byte) idx#13 20.5 (void()) main() (void()) print() @@ -263,13 +263,13 @@ print: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] *((const byte*) SCREEN + (byte) idx#12) ← (byte) '.' [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#12) ← (byte) '.' [ idx#12 ] ( main:2::print:5 [ idx#12 ] { } main:2::print:7 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ idx#12 idx#13 ] -Statement [12] *((const byte*) SCREEN + (byte) idx#12) ← (byte) '.' [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:9 [ idx#12 ] ) always clobbers reg byte a +Statement [12] *((const byte*) SCREEN + (byte) idx#12) ← (byte) '.' [ idx#12 ] ( main:2::print:5 [ idx#12 ] { } main:2::print:7 [ idx#12 ] { { idx#12 = idx#13 } } main:2::print:9 [ idx#12 ] { { idx#12 = idx#13 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ idx#12 idx#13 ] : zp[1]:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 5: zp[1]:2 [ idx#12 idx#13 ] +Uplift Scope [] 132.5: zp[1]:2 [ idx#12 idx#13 ] Uplift Scope [main] Uplift Scope [print] @@ -388,8 +388,8 @@ FINAL SYMBOL TABLE (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/void-parameter.sym b/src/test/ref/void-parameter.sym index 10c991b0d..790b54899 100644 --- a/src/test/ref/void-parameter.sym +++ b/src/test/ref/void-parameter.sym @@ -3,8 +3,8 @@ (label) @end (const byte*) SCREEN = (byte*) 1024 (byte) idx -(byte) idx#12 reg byte x 4.0 -(byte) idx#13 reg byte x 1.0 +(byte) idx#12 reg byte x 112.0 +(byte) idx#13 reg byte x 20.5 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/volatile-0.log b/src/test/ref/volatile-0.log index 2b1d5418d..5a2ee2db9 100644 --- a/src/test/ref/volatile-0.log +++ b/src/test/ref/volatile-0.log @@ -93,7 +93,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) i loadstore 9.5 +(byte) i loadstore 84.49999999999999 (void()) main() Initial phi equivalence classes @@ -159,13 +159,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] ) always clobbers reg byte a -Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] ) always clobbers reg byte a reg byte y +Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] { } ) always clobbers reg byte a +Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ i ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [] 9.5: zp[1]:2 [ i ] +Uplift Scope [] 84.5: zp[1]:2 [ i ] Uplift Scope [main] Uplifting [] best 338 combination zp[1]:2 [ i ] @@ -250,7 +250,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore zp[1]:2 9.5 +(byte) i loadstore zp[1]:2 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/volatile-0.sym b/src/test/ref/volatile-0.sym index 9751b30ff..8927d135c 100644 --- a/src/test/ref/volatile-0.sym +++ b/src/test/ref/volatile-0.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) i loadstore zp[1]:2 9.5 +(byte) i loadstore zp[1]:2 84.49999999999999 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/ref/volatile-1.log b/src/test/ref/volatile-1.log index 537c636e8..fbe798b41 100644 --- a/src/test/ref/volatile-1.log +++ b/src/test/ref/volatile-1.log @@ -94,7 +94,7 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte) main::i loadstore 14.25 +(byte) main::i loadstore 129.0 Initial phi equivalence classes Added variable main::i to live range equivalence class [ main::i ] @@ -157,13 +157,13 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y +Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i ] : zp[1]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 14.25: zp[1]:2 [ main::i ] +Uplift Scope [main] 129: zp[1]:2 [ main::i ] Uplift Scope [] Uplifting [main] best 311 combination zp[1]:2 [ main::i ] @@ -252,7 +252,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore zp[1]:2 14.25 +(byte) main::i loadstore zp[1]:2 129.0 zp[1]:2 [ main::i ] diff --git a/src/test/ref/volatile-1.sym b/src/test/ref/volatile-1.sym index 36f6e7cb5..ac95f2925 100644 --- a/src/test/ref/volatile-1.sym +++ b/src/test/ref/volatile-1.sym @@ -6,6 +6,6 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte) main::i loadstore zp[1]:2 14.25 +(byte) main::i loadstore zp[1]:2 129.0 zp[1]:2 [ main::i ] diff --git a/src/test/ref/volatile-2.log b/src/test/ref/volatile-2.log index 1ee7be4aa..755c8a22a 100644 --- a/src/test/ref/volatile-2.log +++ b/src/test/ref/volatile-2.log @@ -57,7 +57,7 @@ Simplifying constant integer cast 7 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 7 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 +Alias main::i#2 = main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) 7) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -110,11 +110,11 @@ main::@2: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS -(byte) ch loadstore 1.8571428571428572 +(byte) ch loadstore 14.714285714285715 (void()) main() (byte) main::i -(byte) main::i#1 22.0 -(byte) main::i#2 14.666666666666666 +(byte) main::i#1 202.0 +(byte) main::i#2 134.66666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -191,17 +191,17 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [0] (byte) ch ← (byte) 3 [ ch ] ( [ ch ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) ch [ ch main::i#2 ] ( main:2 [ ch main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) ch ← (byte) 3 [ ch ] ( [ ch ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) ch [ ch main::i#2 ] ( main:2 [ ch main::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [0] (byte) ch ← (byte) 3 [ ch ] ( [ ch ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) ch [ ch main::i#2 ] ( main:2 [ ch main::i#2 ] ) always clobbers reg byte a +Statement [0] (byte) ch ← (byte) 3 [ ch ] ( [ ch ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN + (byte) main::i#2) ← (byte) ch [ ch main::i#2 ] ( main:2 [ ch main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ ch ] : zp[1]:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 36.67: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [] 1.86: zp[1]:3 [ ch ] +Uplift Scope [main] 336.67: zp[1]:2 [ main::i#2 main::i#1 ] +Uplift Scope [] 14.71: zp[1]:3 [ ch ] Uplifting [main] best 278 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 278 combination zp[1]:3 [ ch ] @@ -293,14 +293,14 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) ch loadstore zp[1]:2 1.8571428571428572 +(byte) ch loadstore zp[1]:2 14.714285714285715 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ ch ] diff --git a/src/test/ref/volatile-2.sym b/src/test/ref/volatile-2.sym index 986aff8f5..d870b07a8 100644 --- a/src/test/ref/volatile-2.sym +++ b/src/test/ref/volatile-2.sym @@ -2,14 +2,14 @@ (label) @begin (label) @end (const byte*) SCREEN = (byte*) 1024 -(byte) ch loadstore zp[1]:2 1.8571428571428572 +(byte) ch loadstore zp[1]:2 14.714285714285715 (void()) main() (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 14.666666666666666 +(byte) main::i#1 reg byte x 202.0 +(byte) main::i#2 reg byte x 134.66666666666666 reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ ch ] diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log index f7e76fd96..449ec7283 100644 --- a/src/test/ref/voronoi.log +++ b/src/test/ref/voronoi.log @@ -733,51 +733,51 @@ Inversing boolean not [86] (bool~) findcol::$2 ← (byte) findcol::x#1 != (byte) Inversing boolean not [96] (bool~) findcol::$4 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from [95] (bool~) findcol::$3 ← (byte) findcol::y#1 == (byte) findcol::yp#1 Inversing boolean not [121] (bool~) findcol::$14 ← (byte) findcol::diff#7 >= (byte) findcol::mindiff#2 from [120] (bool~) findcol::$13 ← (byte) findcol::diff#7 < (byte) findcol::mindiff#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) initscreen::screen#2 = (byte*) initscreen::screen#3 -Alias (byte) findcol::return#0 = (byte) findcol::return#4 -Alias (byte*) render::colline#2 = (byte*) render::colline#4 (byte*) render::colline#3 -Alias (byte) render::x#2 = (byte) render::x#3 -Alias (byte) render::y#2 = (byte) render::y#5 (byte) render::y#3 -Alias (byte) render::col#0 = (byte~) render::$0 -Alias (byte*) render::colline#1 = (byte*~) render::$2 -Alias (byte) findcol::i#13 = (byte) findcol::i#3 (byte) findcol::i#2 -Alias (byte) findcol::x#1 = (byte) findcol::x#5 (byte) findcol::x#6 -Alias (byte) findcol::y#1 = (byte) findcol::y#5 (byte) findcol::y#8 -Alias (byte) findcol::mindiff#10 = (byte) findcol::mindiff#11 (byte) findcol::mindiff#9 -Alias (byte) findcol::mincol#12 = (byte) findcol::mincol#13 (byte) findcol::mincol#3 (byte) findcol::mincol#2 (byte) findcol::return#1 -Alias (byte) findcol::yp#0 = (byte) findcol::yp#1 -Alias (byte) findcol::xp#0 = (byte) findcol::xp#4 -Alias (byte) findcol::return#3 = (byte) findcol::return#5 -Alias (byte) findcol::xp#1 = (byte) findcol::xp#2 (byte) findcol::xp#3 -Alias (byte) findcol::x#2 = (byte) findcol::x#3 (byte) findcol::x#4 -Alias (byte) findcol::y#6 = (byte) findcol::y#7 (byte) findcol::y#9 -Alias (byte) findcol::yp#5 = (byte) findcol::yp#6 (byte) findcol::yp#7 -Alias (byte) findcol::mindiff#6 = (byte) findcol::mindiff#7 (byte) findcol::mindiff#8 -Alias (byte) findcol::i#10 = (byte) findcol::i#11 (byte) findcol::i#12 -Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#11 (byte) findcol::mincol#9 -Alias (byte) findcol::diff#1 = (byte~) findcol::$7 -Alias (byte) findcol::diff#2 = (byte~) findcol::$6 -Alias (byte) findcol::yp#2 = (byte) findcol::yp#3 (byte) findcol::yp#4 -Alias (byte) findcol::y#2 = (byte) findcol::y#3 (byte) findcol::y#4 -Alias (byte) findcol::diff#5 = (byte) findcol::diff#9 (byte) findcol::diff#6 -Alias (byte) findcol::mindiff#3 = (byte) findcol::mindiff#4 (byte) findcol::mindiff#5 -Alias (byte) findcol::i#7 = (byte) findcol::i#8 (byte) findcol::i#9 -Alias (byte) findcol::x#11 = (byte) findcol::x#12 (byte) findcol::x#13 -Alias (byte) findcol::mincol#6 = (byte) findcol::mincol#7 (byte) findcol::mincol#8 -Alias (byte) findcol::diff#3 = (byte~) findcol::$12 -Alias (byte) findcol::diff#4 = (byte~) findcol::$10 -Alias (byte) findcol::diff#7 = (byte) findcol::diff#8 (byte) findcol::mindiff#1 -Alias (byte) findcol::i#5 = (byte) findcol::i#6 -Alias (byte) findcol::x#10 = (byte) findcol::x#9 -Alias (byte) findcol::y#12 = (byte) findcol::y#13 +Alias initscreen::screen#2 = initscreen::screen#3 +Alias findcol::return#0 = findcol::return#4 +Alias render::colline#2 = render::colline#4 render::colline#3 +Alias render::x#2 = render::x#3 +Alias render::y#2 = render::y#5 render::y#3 +Alias render::col#0 = render::$0 +Alias render::colline#1 = render::$2 +Alias findcol::i#13 = findcol::i#3 findcol::i#2 +Alias findcol::x#1 = findcol::x#5 findcol::x#6 +Alias findcol::y#1 = findcol::y#5 findcol::y#8 +Alias findcol::mindiff#10 = findcol::mindiff#11 findcol::mindiff#9 +Alias findcol::mincol#12 = findcol::mincol#13 findcol::mincol#3 findcol::mincol#2 findcol::return#1 +Alias findcol::yp#0 = findcol::yp#1 +Alias findcol::xp#0 = findcol::xp#4 +Alias findcol::return#3 = findcol::return#5 +Alias findcol::xp#1 = findcol::xp#2 findcol::xp#3 +Alias findcol::x#2 = findcol::x#3 findcol::x#4 +Alias findcol::y#6 = findcol::y#7 findcol::y#9 +Alias findcol::yp#5 = findcol::yp#6 findcol::yp#7 +Alias findcol::mindiff#6 = findcol::mindiff#7 findcol::mindiff#8 +Alias findcol::i#10 = findcol::i#11 findcol::i#12 +Alias findcol::mincol#10 = findcol::mincol#11 findcol::mincol#9 +Alias findcol::diff#1 = findcol::$7 +Alias findcol::diff#2 = findcol::$6 +Alias findcol::yp#2 = findcol::yp#3 findcol::yp#4 +Alias findcol::y#2 = findcol::y#3 findcol::y#4 +Alias findcol::diff#5 = findcol::diff#9 findcol::diff#6 +Alias findcol::mindiff#3 = findcol::mindiff#4 findcol::mindiff#5 +Alias findcol::i#7 = findcol::i#8 findcol::i#9 +Alias findcol::x#11 = findcol::x#12 findcol::x#13 +Alias findcol::mincol#6 = findcol::mincol#7 findcol::mincol#8 +Alias findcol::diff#3 = findcol::$12 +Alias findcol::diff#4 = findcol::$10 +Alias findcol::diff#7 = findcol::diff#8 findcol::mindiff#1 +Alias findcol::i#5 = findcol::i#6 +Alias findcol::x#10 = findcol::x#9 +Alias findcol::y#12 = findcol::y#13 Successful SSA optimization Pass2AliasElimination -Alias (byte) findcol::x#1 = (byte) findcol::x#2 (byte) findcol::x#11 (byte) findcol::x#10 (byte) findcol::x#8 -Alias (byte) findcol::xp#0 = (byte) findcol::xp#1 -Alias (byte) findcol::y#1 = (byte) findcol::y#6 (byte) findcol::y#2 (byte) findcol::y#12 (byte) findcol::y#11 -Alias (byte) findcol::yp#0 = (byte) findcol::yp#5 (byte) findcol::yp#2 -Alias (byte) findcol::mindiff#10 = (byte) findcol::mindiff#6 (byte) findcol::mindiff#3 (byte) findcol::mindiff#2 -Alias (byte) findcol::i#10 = (byte) findcol::i#13 (byte) findcol::i#7 (byte) findcol::i#5 (byte) findcol::i#4 -Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#12 (byte) findcol::mincol#6 (byte) findcol::mincol#5 +Alias findcol::x#1 = findcol::x#2 findcol::x#11 findcol::x#10 findcol::x#8 +Alias findcol::xp#0 = findcol::xp#1 +Alias findcol::y#1 = findcol::y#6 findcol::y#2 findcol::y#12 findcol::y#11 +Alias findcol::yp#0 = findcol::yp#5 findcol::yp#2 +Alias findcol::mindiff#10 = findcol::mindiff#6 findcol::mindiff#3 findcol::mindiff#2 +Alias findcol::i#10 = findcol::i#13 findcol::i#7 findcol::i#5 findcol::i#4 +Alias findcol::mincol#10 = findcol::mincol#12 findcol::mincol#6 findcol::mincol#5 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) render::y#2 (byte) render::y#4 Identical Phi Values (byte*) render::colline#2 (byte*) render::colline#5 @@ -1141,63 +1141,63 @@ initscreen::@2: scope:[initscreen] from initscreen::@1 VARIABLE REGISTER WEIGHTS (void()) animate() -(byte~) animate::$0 4.0 -(byte~) animate::$12 4.0 -(byte~) animate::$15 4.0 -(byte~) animate::$18 4.0 -(byte~) animate::$3 4.0 -(byte~) animate::$6 4.0 -(byte~) animate::$9 4.0 +(byte~) animate::$0 2002.0 +(byte~) animate::$12 2002.0 +(byte~) animate::$15 2002.0 +(byte~) animate::$18 2002.0 +(byte~) animate::$3 2002.0 +(byte~) animate::$6 2002.0 +(byte~) animate::$9 2002.0 (byte()) findcol((byte) findcol::x , (byte) findcol::y) -(byte~) findcol::$11 20002.0 -(byte~) findcol::$9 20002.0 +(byte~) findcol::$11 2.00000000002E11 +(byte~) findcol::$9 2.00000000002E11 (byte) findcol::diff -(byte) findcol::diff#1 20002.0 -(byte) findcol::diff#2 20002.0 -(byte) findcol::diff#3 20002.0 -(byte) findcol::diff#4 20002.0 -(byte) findcol::diff#5 10001.0 -(byte) findcol::diff#7 13334.666666666666 +(byte) findcol::diff#1 2.00000000002E11 +(byte) findcol::diff#2 2.00000000002E11 +(byte) findcol::diff#3 2.00000000002E11 +(byte) findcol::diff#4 2.00000000002E11 +(byte) findcol::diff#5 1.00000000001E11 +(byte) findcol::diff#7 1.3333333333466667E11 (byte) findcol::i -(byte) findcol::i#1 10001.0 -(byte) findcol::i#10 3000.3 +(byte) findcol::i#1 1.00000000001E11 +(byte) findcol::i#10 3.00000000003E10 (byte) findcol::mincol -(byte) findcol::mincol#1 20002.0 -(byte) findcol::mincol#10 1666.8333333333333 -(byte) findcol::mincol#4 10001.0 +(byte) findcol::mincol#1 2.00000000002E11 +(byte) findcol::mincol#10 1.6666666666833332E10 +(byte) findcol::mincol#4 1.00000000001E11 (byte) findcol::mindiff -(byte) findcol::mindiff#10 1764.8823529411764 -(byte) findcol::mindiff#12 15001.5 -(byte) findcol::mindiff#13 20002.0 -(byte) findcol::mindiff#15 20002.0 +(byte) findcol::mindiff#10 1.7647058823705883E10 +(byte) findcol::mindiff#12 1.500000000015E11 +(byte) findcol::mindiff#13 2.00000000002E11 +(byte) findcol::mindiff#15 2.00000000002E11 (byte) findcol::return -(byte) findcol::return#0 2002.0 -(byte) findcol::return#3 3667.333333333333 +(byte) findcol::return#0 2000002.0 +(byte) findcol::return#3 3.3333666667333336E10 (byte) findcol::x -(byte) findcol::x#0 1640.2 +(byte) findcol::x#0 1.60000400002E10 (byte) findcol::xp -(byte) findcol::xp#0 10001.0 +(byte) findcol::xp#0 1.00000000001E11 (byte) findcol::y -(byte) findcol::y#0 1708.5416666666665 +(byte) findcol::y#0 1.6666708333541668E10 (byte) findcol::yp -(byte) findcol::yp#0 6250.625 +(byte) findcol::yp#0 6.2500000000625E10 (void()) initscreen() (byte*) initscreen::screen -(byte*) initscreen::screen#1 22.0 -(byte*) initscreen::screen#2 14.666666666666666 +(byte*) initscreen::screen#1 2002.0 +(byte*) initscreen::screen#2 1334.6666666666667 (void()) main() (void()) render() (byte) render::col -(byte) render::col#0 2002.0 +(byte) render::col#0 2000002.0 (byte*) render::colline -(byte*) render::colline#1 67.33333333333333 -(byte*) render::colline#5 120.29999999999998 +(byte*) render::colline#1 66667.33333333333 +(byte*) render::colline#5 120000.30000000002 (byte) render::x -(byte) render::x#1 1501.5 -(byte) render::x#2 572.0 +(byte) render::x#1 1500001.5 +(byte) render::x#2 571429.1428571428 (byte) render::y -(byte) render::y#1 151.5 -(byte) render::y#4 109.36363636363637 +(byte) render::y#1 150001.5 +(byte) render::y#4 109091.18181818182 Initial phi equivalence classes [ render::y#4 render::y#1 ] @@ -1775,22 +1775,22 @@ initscreen: { COLS: .byte 1, 2, 3, 4, 5, 7 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] if(*((const byte*) XPOS)!=(byte) $28) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) XPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) YPOS)!=(byte) $19) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) YPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [20] if(*((const byte*) XPOS+(byte) 1)!=(byte) $ff) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) XPOS+(byte) 1) ← (byte) $28 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [24] if(*((const byte*) YPOS+(byte) 2)!=(byte) $19) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) YPOS+(byte) 2) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) YPOS+(byte) 3)!=(byte) $ff) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) YPOS+(byte) 3) ← (byte) $19 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [30] (byte~) animate::$15 ← *((const byte*) XPOS+(byte) 3) + (byte) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a -Statement [32] if(*((const byte*) XPOS+(byte) 3)<(byte) $28) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [33] (byte~) animate::$18 ← *((const byte*) XPOS+(byte) 3) - (byte) $28 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a -Statement [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) $28 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a +Statement [12] if(*((const byte*) XPOS)!=(byte) $28) goto animate::@1 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) XPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) YPOS)!=(byte) $19) goto animate::@2 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) YPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [20] if(*((const byte*) XPOS+(byte) 1)!=(byte) $ff) goto animate::@3 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) XPOS+(byte) 1) ← (byte) $28 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [24] if(*((const byte*) YPOS+(byte) 2)!=(byte) $19) goto animate::@4 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) YPOS+(byte) 2) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) YPOS+(byte) 3)!=(byte) $ff) goto animate::@return [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) YPOS+(byte) 3) ← (byte) $19 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [30] (byte~) animate::$15 ← *((const byte*) XPOS+(byte) 3) + (byte) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] { } ) always clobbers reg byte a +Statement [32] if(*((const byte*) XPOS+(byte) 3)<(byte) $28) goto animate::@return [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [33] (byte~) animate::$18 ← *((const byte*) XPOS+(byte) 3) - (byte) $28 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] { } ) always clobbers reg byte a +Statement [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) $28 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ render::y#4 render::y#1 ] -Statement [61] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ) always clobbers reg byte a +Statement [61] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ render::x#2 render::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:20 [ findcol::x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ findcol::y#0 ] @@ -1798,36 +1798,36 @@ Removing always clobbered register reg byte a as potential for zp[1]:6 [ findcol Removing always clobbered register reg byte a as potential for zp[1]:8 [ findcol::return#3 findcol::mincol#10 findcol::mincol#4 findcol::mincol#1 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] Removing always clobbered register reg byte a as potential for zp[1]:25 [ findcol::yp#0 ] -Statement [64] (byte~) findcol::$9 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ) always clobbers reg byte a +Statement [64] (byte~) findcol::$9 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] -Statement [65] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$9 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ) always clobbers reg byte a -Statement [73] (byte~) findcol::$11 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ) always clobbers reg byte a -Statement [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$11 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ) always clobbers reg byte a -Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a -Statement [78] if((byte*) initscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto initscreen::@2 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a -Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [12] if(*((const byte*) XPOS)!=(byte) $28) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [13] *((const byte*) XPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte*) YPOS)!=(byte) $19) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [17] *((const byte*) YPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [20] if(*((const byte*) XPOS+(byte) 1)!=(byte) $ff) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [21] *((const byte*) XPOS+(byte) 1) ← (byte) $28 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [24] if(*((const byte*) YPOS+(byte) 2)!=(byte) $19) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [25] *((const byte*) YPOS+(byte) 2) ← (byte) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [28] if(*((const byte*) YPOS+(byte) 3)!=(byte) $ff) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [29] *((const byte*) YPOS+(byte) 3) ← (byte) $19 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [30] (byte~) animate::$15 ← *((const byte*) XPOS+(byte) 3) + (byte) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a -Statement [32] if(*((const byte*) XPOS+(byte) 3)<(byte) $28) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [33] (byte~) animate::$18 ← *((const byte*) XPOS+(byte) 3) - (byte) $28 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a -Statement [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) $28 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a -Statement [61] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ) always clobbers reg byte a -Statement [64] (byte~) findcol::$9 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ) always clobbers reg byte a -Statement [65] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$9 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ) always clobbers reg byte a -Statement [73] (byte~) findcol::$11 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ) always clobbers reg byte a -Statement [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$11 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ) always clobbers reg byte a -Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a -Statement [78] if((byte*) initscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto initscreen::@2 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a -Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [65] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$9 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [73] (byte~) findcol::$11 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$11 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [78] if((byte*) initscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto initscreen::@2 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] { } ) always clobbers reg byte a +Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] { } ) always clobbers reg byte a reg byte y +Statement [12] if(*((const byte*) XPOS)!=(byte) $28) goto animate::@1 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [13] *((const byte*) XPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [16] if(*((const byte*) YPOS)!=(byte) $19) goto animate::@2 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [17] *((const byte*) YPOS) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [20] if(*((const byte*) XPOS+(byte) 1)!=(byte) $ff) goto animate::@3 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [21] *((const byte*) XPOS+(byte) 1) ← (byte) $28 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [24] if(*((const byte*) YPOS+(byte) 2)!=(byte) $19) goto animate::@4 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [25] *((const byte*) YPOS+(byte) 2) ← (byte) 0 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [28] if(*((const byte*) YPOS+(byte) 3)!=(byte) $ff) goto animate::@return [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [29] *((const byte*) YPOS+(byte) 3) ← (byte) $19 [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [30] (byte~) animate::$15 ← *((const byte*) XPOS+(byte) 3) + (byte) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] { } ) always clobbers reg byte a +Statement [32] if(*((const byte*) XPOS+(byte) 3)<(byte) $28) goto animate::@return [ ] ( main:2::animate:9 [ ] { } ) always clobbers reg byte a +Statement [33] (byte~) animate::$18 ← *((const byte*) XPOS+(byte) 3) - (byte) $28 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] { } ) always clobbers reg byte a +Statement [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) $28 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] { } ) always clobbers reg byte a +Statement [61] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#2 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [64] (byte~) findcol::$9 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$9 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [65] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$9 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#4 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [73] (byte~) findcol::$11 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#5 findcol::$11 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$11 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::diff#3 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:41 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#10 findcol::yp#0 findcol::diff#1 ] { { findcol::x#0 = render::x#2 } { findcol::y#0 = render::y#4 } { findcol::return#0 = findcol::return#3 } } ) always clobbers reg byte a +Statement [78] if((byte*) initscreen::screen#2<(const byte*) SCREEN+(word) $3e8) goto initscreen::@2 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] { } ) always clobbers reg byte a +Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ render::y#4 render::y#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ render::colline#5 render::colline#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ render::x#2 render::x#1 ] : zp[1]:5 , reg byte x , reg byte y , @@ -1854,19 +1854,19 @@ Potential registers zp[1]:26 [ findcol::$9 ] : zp[1]:26 , reg byte a , reg byte Potential registers zp[1]:27 [ findcol::$11 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [findcol] 88,342.17: zp[1]:10 [ findcol::mindiff#12 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] 50,005: zp[1]:9 [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] 35,337.17: zp[1]:8 [ findcol::return#3 findcol::mincol#10 findcol::mincol#4 findcol::mincol#1 ] 21,766.88: zp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 20,002: zp[1]:26 [ findcol::$9 ] 20,002: zp[1]:27 [ findcol::$11 ] 13,001.3: zp[1]:6 [ findcol::i#10 findcol::i#1 ] 10,001: zp[1]:24 [ findcol::xp#0 ] 6,250.62: zp[1]:25 [ findcol::yp#0 ] 2,002: zp[1]:22 [ findcol::return#0 ] 1,708.54: zp[1]:21 [ findcol::y#0 ] 1,640.2: zp[1]:20 [ findcol::x#0 ] -Uplift Scope [render] 2,073.5: zp[1]:5 [ render::x#2 render::x#1 ] 2,002: zp[1]:23 [ render::col#0 ] 260.86: zp[1]:2 [ render::y#4 render::y#1 ] 187.63: zp[2]:3 [ render::colline#5 render::colline#1 ] -Uplift Scope [initscreen] 36.67: zp[2]:11 [ initscreen::screen#2 initscreen::screen#1 ] -Uplift Scope [animate] 4: zp[1]:13 [ animate::$0 ] 4: zp[1]:14 [ animate::$3 ] 4: zp[1]:15 [ animate::$6 ] 4: zp[1]:16 [ animate::$9 ] 4: zp[1]:17 [ animate::$12 ] 4: zp[1]:18 [ animate::$15 ] 4: zp[1]:19 [ animate::$18 ] +Uplift Scope [findcol] 883,333,333,342.17: zp[1]:10 [ findcol::mindiff#12 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] 500,000,000,005: zp[1]:9 [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] 350,000,333,337.17: zp[1]:8 [ findcol::return#3 findcol::mincol#10 findcol::mincol#4 findcol::mincol#1 ] 217,647,058,825.71: zp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 200,000,000,002: zp[1]:26 [ findcol::$9 ] 200,000,000,002: zp[1]:27 [ findcol::$11 ] 130,000,000,001.3: zp[1]:6 [ findcol::i#10 findcol::i#1 ] 100,000,000,001: zp[1]:24 [ findcol::xp#0 ] 62,500,000,000.62: zp[1]:25 [ findcol::yp#0 ] 16,666,708,333.54: zp[1]:21 [ findcol::y#0 ] 16,000,040,000.2: zp[1]:20 [ findcol::x#0 ] 2,000,002: zp[1]:22 [ findcol::return#0 ] +Uplift Scope [render] 2,071,430.64: zp[1]:5 [ render::x#2 render::x#1 ] 2,000,002: zp[1]:23 [ render::col#0 ] 259,092.68: zp[1]:2 [ render::y#4 render::y#1 ] 186,667.63: zp[2]:3 [ render::colline#5 render::colline#1 ] +Uplift Scope [animate] 2,002: zp[1]:13 [ animate::$0 ] 2,002: zp[1]:14 [ animate::$3 ] 2,002: zp[1]:15 [ animate::$6 ] 2,002: zp[1]:16 [ animate::$9 ] 2,002: zp[1]:17 [ animate::$12 ] 2,002: zp[1]:18 [ animate::$15 ] 2,002: zp[1]:19 [ animate::$18 ] +Uplift Scope [initscreen] 3,336.67: zp[2]:11 [ initscreen::screen#2 initscreen::screen#1 ] Uplift Scope [main] Uplift Scope [] -Uplifting [findcol] best 1973929 combination reg byte a [ findcol::mindiff#12 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] reg byte y [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] reg byte x [ findcol::return#3 findcol::mincol#10 findcol::mincol#4 findcol::mincol#1 ] zp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] zp[1]:26 [ findcol::$9 ] zp[1]:27 [ findcol::$11 ] zp[1]:6 [ findcol::i#10 findcol::i#1 ] zp[1]:24 [ findcol::xp#0 ] zp[1]:25 [ findcol::yp#0 ] zp[1]:22 [ findcol::return#0 ] zp[1]:21 [ findcol::y#0 ] zp[1]:20 [ findcol::x#0 ] +Uplifting [findcol] best 1973929 combination reg byte a [ findcol::mindiff#12 findcol::diff#7 findcol::diff#4 findcol::diff#3 findcol::mindiff#15 ] reg byte y [ findcol::diff#5 findcol::diff#2 findcol::diff#1 ] reg byte x [ findcol::return#3 findcol::mincol#10 findcol::mincol#4 findcol::mincol#1 ] zp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] zp[1]:26 [ findcol::$9 ] zp[1]:27 [ findcol::$11 ] zp[1]:6 [ findcol::i#10 findcol::i#1 ] zp[1]:24 [ findcol::xp#0 ] zp[1]:25 [ findcol::yp#0 ] zp[1]:21 [ findcol::y#0 ] zp[1]:20 [ findcol::x#0 ] zp[1]:22 [ findcol::return#0 ] Limited combination testing to 100 combinations of 2239488 possible. Uplifting [render] best 1967929 combination zp[1]:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp[1]:2 [ render::y#4 render::y#1 ] zp[2]:3 [ render::colline#5 render::colline#1 ] -Uplifting [initscreen] best 1967929 combination zp[2]:11 [ initscreen::screen#2 initscreen::screen#1 ] Uplifting [animate] best 1967909 combination reg byte x [ animate::$0 ] reg byte x [ animate::$3 ] reg byte a [ animate::$6 ] reg byte a [ animate::$9 ] zp[1]:17 [ animate::$12 ] zp[1]:18 [ animate::$15 ] zp[1]:19 [ animate::$18 ] Limited combination testing to 100 combinations of 16384 possible. +Uplifting [initscreen] best 1967909 combination zp[2]:11 [ initscreen::screen#2 initscreen::screen#1 ] Uplifting [main] best 1967909 combination Uplifting [] best 1967909 combination Attempting to uplift remaining variables inzp[1]:7 [ findcol::mindiff#10 findcol::mindiff#13 ] @@ -1881,14 +1881,14 @@ Attempting to uplift remaining variables inzp[1]:24 [ findcol::xp#0 ] Uplifting [findcol] best 1927909 combination zp[1]:24 [ findcol::xp#0 ] Attempting to uplift remaining variables inzp[1]:25 [ findcol::yp#0 ] Uplifting [findcol] best 1927909 combination zp[1]:25 [ findcol::yp#0 ] +Attempting to uplift remaining variables inzp[1]:21 [ findcol::y#0 ] +Uplifting [findcol] best 1927909 combination zp[1]:21 [ findcol::y#0 ] +Attempting to uplift remaining variables inzp[1]:20 [ findcol::x#0 ] +Uplifting [findcol] best 1927909 combination zp[1]:20 [ findcol::x#0 ] Attempting to uplift remaining variables inzp[1]:5 [ render::x#2 render::x#1 ] Uplifting [render] best 1927909 combination zp[1]:5 [ render::x#2 render::x#1 ] Attempting to uplift remaining variables inzp[1]:22 [ findcol::return#0 ] Uplifting [findcol] best 1923909 combination reg byte a [ findcol::return#0 ] -Attempting to uplift remaining variables inzp[1]:21 [ findcol::y#0 ] -Uplifting [findcol] best 1923909 combination zp[1]:21 [ findcol::y#0 ] -Attempting to uplift remaining variables inzp[1]:20 [ findcol::x#0 ] -Uplifting [findcol] best 1923909 combination zp[1]:20 [ findcol::x#0 ] Attempting to uplift remaining variables inzp[1]:2 [ render::y#4 render::y#1 ] Uplifting [render] best 1923909 combination zp[1]:2 [ render::y#4 render::y#1 ] Attempting to uplift remaining variables inzp[1]:17 [ animate::$12 ] @@ -2475,13 +2475,13 @@ FINAL SYMBOL TABLE (const byte*) XPOS[] = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f } (const byte*) YPOS[] = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 } (void()) animate() -(byte~) animate::$0 reg byte x 4.0 -(byte~) animate::$12 reg byte x 4.0 -(byte~) animate::$15 reg byte a 4.0 -(byte~) animate::$18 reg byte a 4.0 -(byte~) animate::$3 reg byte x 4.0 -(byte~) animate::$6 reg byte a 4.0 -(byte~) animate::$9 reg byte a 4.0 +(byte~) animate::$0 reg byte x 2002.0 +(byte~) animate::$12 reg byte x 2002.0 +(byte~) animate::$15 reg byte a 2002.0 +(byte~) animate::$18 reg byte a 2002.0 +(byte~) animate::$3 reg byte x 2002.0 +(byte~) animate::$6 reg byte a 2002.0 +(byte~) animate::$9 reg byte a 2002.0 (label) animate::@1 (label) animate::@10 (label) animate::@2 @@ -2494,8 +2494,8 @@ FINAL SYMBOL TABLE (label) animate::@9 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) -(byte~) findcol::$11 reg byte a 20002.0 -(byte~) findcol::$9 reg byte a 20002.0 +(byte~) findcol::$11 reg byte a 2.00000000002E11 +(byte~) findcol::$9 reg byte a 2.00000000002E11 (label) findcol::@1 (label) findcol::@10 (label) findcol::@11 @@ -2511,42 +2511,42 @@ FINAL SYMBOL TABLE (label) findcol::@9 (label) findcol::@return (byte) findcol::diff -(byte) findcol::diff#1 reg byte y 20002.0 -(byte) findcol::diff#2 reg byte y 20002.0 -(byte) findcol::diff#3 reg byte a 20002.0 -(byte) findcol::diff#4 reg byte a 20002.0 -(byte) findcol::diff#5 reg byte y 10001.0 -(byte) findcol::diff#7 reg byte a 13334.666666666666 +(byte) findcol::diff#1 reg byte y 2.00000000002E11 +(byte) findcol::diff#2 reg byte y 2.00000000002E11 +(byte) findcol::diff#3 reg byte a 2.00000000002E11 +(byte) findcol::diff#4 reg byte a 2.00000000002E11 +(byte) findcol::diff#5 reg byte y 1.00000000001E11 +(byte) findcol::diff#7 reg byte a 1.3333333333466667E11 (byte) findcol::i -(byte) findcol::i#1 i zp[1]:4 10001.0 -(byte) findcol::i#10 i zp[1]:4 3000.3 +(byte) findcol::i#1 i zp[1]:4 1.00000000001E11 +(byte) findcol::i#10 i zp[1]:4 3.00000000003E10 (byte) findcol::mincol -(byte) findcol::mincol#1 reg byte x 20002.0 -(byte) findcol::mincol#10 reg byte x 1666.8333333333333 -(byte) findcol::mincol#4 reg byte x 10001.0 +(byte) findcol::mincol#1 reg byte x 2.00000000002E11 +(byte) findcol::mincol#10 reg byte x 1.6666666666833332E10 +(byte) findcol::mincol#4 reg byte x 1.00000000001E11 (byte) findcol::mindiff -(byte) findcol::mindiff#10 mindiff zp[1]:5 1764.8823529411764 -(byte) findcol::mindiff#12 reg byte a 15001.5 -(byte) findcol::mindiff#13 mindiff zp[1]:5 20002.0 -(byte) findcol::mindiff#15 reg byte a 20002.0 +(byte) findcol::mindiff#10 mindiff zp[1]:5 1.7647058823705883E10 +(byte) findcol::mindiff#12 reg byte a 1.500000000015E11 +(byte) findcol::mindiff#13 mindiff zp[1]:5 2.00000000002E11 +(byte) findcol::mindiff#15 reg byte a 2.00000000002E11 (byte) findcol::return -(byte) findcol::return#0 reg byte a 2002.0 -(byte) findcol::return#3 reg byte x 3667.333333333333 +(byte) findcol::return#0 reg byte a 2000002.0 +(byte) findcol::return#3 reg byte x 3.3333666667333336E10 (byte) findcol::x -(byte) findcol::x#0 x zp[1]:3 1640.2 +(byte) findcol::x#0 x zp[1]:3 1.60000400002E10 (byte) findcol::xp -(byte) findcol::xp#0 xp zp[1]:8 10001.0 +(byte) findcol::xp#0 xp zp[1]:8 1.00000000001E11 (byte) findcol::y -(byte) findcol::y#0 y zp[1]:2 1708.5416666666665 +(byte) findcol::y#0 y zp[1]:2 1.6666708333541668E10 (byte) findcol::yp -(byte) findcol::yp#0 yp zp[1]:9 6250.625 +(byte) findcol::yp#0 yp zp[1]:9 6.2500000000625E10 (void()) initscreen() (label) initscreen::@1 (label) initscreen::@2 (label) initscreen::@return (byte*) initscreen::screen -(byte*) initscreen::screen#1 screen zp[2]:6 22.0 -(byte*) initscreen::screen#2 screen zp[2]:6 14.666666666666666 +(byte*) initscreen::screen#1 screen zp[2]:6 2002.0 +(byte*) initscreen::screen#2 screen zp[2]:6 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -2558,16 +2558,16 @@ FINAL SYMBOL TABLE (label) render::@4 (label) render::@return (byte) render::col -(byte) render::col#0 reg byte a 2002.0 +(byte) render::col#0 reg byte a 2000002.0 (byte*) render::colline -(byte*) render::colline#1 colline zp[2]:6 67.33333333333333 -(byte*) render::colline#5 colline zp[2]:6 120.29999999999998 +(byte*) render::colline#1 colline zp[2]:6 66667.33333333333 +(byte*) render::colline#5 colline zp[2]:6 120000.30000000002 (byte) render::x -(byte) render::x#1 x zp[1]:3 1501.5 -(byte) render::x#2 x zp[1]:3 572.0 +(byte) render::x#1 x zp[1]:3 1500001.5 +(byte) render::x#2 x zp[1]:3 571429.1428571428 (byte) render::y -(byte) render::y#1 y zp[1]:2 151.5 -(byte) render::y#4 y zp[1]:2 109.36363636363637 +(byte) render::y#1 y zp[1]:2 150001.5 +(byte) render::y#4 y zp[1]:2 109091.18181818182 zp[1]:2 [ render::y#4 render::y#1 findcol::y#0 ] zp[1]:3 [ render::x#2 render::x#1 findcol::x#0 ] diff --git a/src/test/ref/voronoi.sym b/src/test/ref/voronoi.sym index 34b2d04a6..8c50bef66 100644 --- a/src/test/ref/voronoi.sym +++ b/src/test/ref/voronoi.sym @@ -8,13 +8,13 @@ (const byte*) XPOS[] = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f } (const byte*) YPOS[] = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 } (void()) animate() -(byte~) animate::$0 reg byte x 4.0 -(byte~) animate::$12 reg byte x 4.0 -(byte~) animate::$15 reg byte a 4.0 -(byte~) animate::$18 reg byte a 4.0 -(byte~) animate::$3 reg byte x 4.0 -(byte~) animate::$6 reg byte a 4.0 -(byte~) animate::$9 reg byte a 4.0 +(byte~) animate::$0 reg byte x 2002.0 +(byte~) animate::$12 reg byte x 2002.0 +(byte~) animate::$15 reg byte a 2002.0 +(byte~) animate::$18 reg byte a 2002.0 +(byte~) animate::$3 reg byte x 2002.0 +(byte~) animate::$6 reg byte a 2002.0 +(byte~) animate::$9 reg byte a 2002.0 (label) animate::@1 (label) animate::@10 (label) animate::@2 @@ -27,8 +27,8 @@ (label) animate::@9 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) -(byte~) findcol::$11 reg byte a 20002.0 -(byte~) findcol::$9 reg byte a 20002.0 +(byte~) findcol::$11 reg byte a 2.00000000002E11 +(byte~) findcol::$9 reg byte a 2.00000000002E11 (label) findcol::@1 (label) findcol::@10 (label) findcol::@11 @@ -44,42 +44,42 @@ (label) findcol::@9 (label) findcol::@return (byte) findcol::diff -(byte) findcol::diff#1 reg byte y 20002.0 -(byte) findcol::diff#2 reg byte y 20002.0 -(byte) findcol::diff#3 reg byte a 20002.0 -(byte) findcol::diff#4 reg byte a 20002.0 -(byte) findcol::diff#5 reg byte y 10001.0 -(byte) findcol::diff#7 reg byte a 13334.666666666666 +(byte) findcol::diff#1 reg byte y 2.00000000002E11 +(byte) findcol::diff#2 reg byte y 2.00000000002E11 +(byte) findcol::diff#3 reg byte a 2.00000000002E11 +(byte) findcol::diff#4 reg byte a 2.00000000002E11 +(byte) findcol::diff#5 reg byte y 1.00000000001E11 +(byte) findcol::diff#7 reg byte a 1.3333333333466667E11 (byte) findcol::i -(byte) findcol::i#1 i zp[1]:4 10001.0 -(byte) findcol::i#10 i zp[1]:4 3000.3 +(byte) findcol::i#1 i zp[1]:4 1.00000000001E11 +(byte) findcol::i#10 i zp[1]:4 3.00000000003E10 (byte) findcol::mincol -(byte) findcol::mincol#1 reg byte x 20002.0 -(byte) findcol::mincol#10 reg byte x 1666.8333333333333 -(byte) findcol::mincol#4 reg byte x 10001.0 +(byte) findcol::mincol#1 reg byte x 2.00000000002E11 +(byte) findcol::mincol#10 reg byte x 1.6666666666833332E10 +(byte) findcol::mincol#4 reg byte x 1.00000000001E11 (byte) findcol::mindiff -(byte) findcol::mindiff#10 mindiff zp[1]:5 1764.8823529411764 -(byte) findcol::mindiff#12 reg byte a 15001.5 -(byte) findcol::mindiff#13 mindiff zp[1]:5 20002.0 -(byte) findcol::mindiff#15 reg byte a 20002.0 +(byte) findcol::mindiff#10 mindiff zp[1]:5 1.7647058823705883E10 +(byte) findcol::mindiff#12 reg byte a 1.500000000015E11 +(byte) findcol::mindiff#13 mindiff zp[1]:5 2.00000000002E11 +(byte) findcol::mindiff#15 reg byte a 2.00000000002E11 (byte) findcol::return -(byte) findcol::return#0 reg byte a 2002.0 -(byte) findcol::return#3 reg byte x 3667.333333333333 +(byte) findcol::return#0 reg byte a 2000002.0 +(byte) findcol::return#3 reg byte x 3.3333666667333336E10 (byte) findcol::x -(byte) findcol::x#0 x zp[1]:3 1640.2 +(byte) findcol::x#0 x zp[1]:3 1.60000400002E10 (byte) findcol::xp -(byte) findcol::xp#0 xp zp[1]:8 10001.0 +(byte) findcol::xp#0 xp zp[1]:8 1.00000000001E11 (byte) findcol::y -(byte) findcol::y#0 y zp[1]:2 1708.5416666666665 +(byte) findcol::y#0 y zp[1]:2 1.6666708333541668E10 (byte) findcol::yp -(byte) findcol::yp#0 yp zp[1]:9 6250.625 +(byte) findcol::yp#0 yp zp[1]:9 6.2500000000625E10 (void()) initscreen() (label) initscreen::@1 (label) initscreen::@2 (label) initscreen::@return (byte*) initscreen::screen -(byte*) initscreen::screen#1 screen zp[2]:6 22.0 -(byte*) initscreen::screen#2 screen zp[2]:6 14.666666666666666 +(byte*) initscreen::screen#1 screen zp[2]:6 2002.0 +(byte*) initscreen::screen#2 screen zp[2]:6 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 @@ -91,16 +91,16 @@ (label) render::@4 (label) render::@return (byte) render::col -(byte) render::col#0 reg byte a 2002.0 +(byte) render::col#0 reg byte a 2000002.0 (byte*) render::colline -(byte*) render::colline#1 colline zp[2]:6 67.33333333333333 -(byte*) render::colline#5 colline zp[2]:6 120.29999999999998 +(byte*) render::colline#1 colline zp[2]:6 66667.33333333333 +(byte*) render::colline#5 colline zp[2]:6 120000.30000000002 (byte) render::x -(byte) render::x#1 x zp[1]:3 1501.5 -(byte) render::x#2 x zp[1]:3 572.0 +(byte) render::x#1 x zp[1]:3 1500001.5 +(byte) render::x#2 x zp[1]:3 571429.1428571428 (byte) render::y -(byte) render::y#1 y zp[1]:2 151.5 -(byte) render::y#4 y zp[1]:2 109.36363636363637 +(byte) render::y#1 y zp[1]:2 150001.5 +(byte) render::y#4 y zp[1]:2 109091.18181818182 zp[1]:2 [ render::y#4 render::y#1 findcol::y#0 ] zp[1]:3 [ render::x#2 render::x#1 findcol::x#0 ] diff --git a/src/test/ref/wfragment1.asm b/src/test/ref/wfragment1.asm index be737915d..c5ff16fb8 100644 --- a/src/test/ref/wfragment1.asm +++ b/src/test/ref/wfragment1.asm @@ -7,6 +7,7 @@ main: { ldy #0 __b1: // move_enemy(i) + tya jsr move_enemy // for(byte i:0..5) iny @@ -15,10 +16,9 @@ main: { // } rts } -// move_enemy(byte register(Y) obj_slot) +// move_enemy(byte register(A) obj_slot) move_enemy: { // OBJ_WORLD_X[obj_slot] -= 1 - tya asl tax lda OBJ_WORLD_X,x diff --git a/src/test/ref/wfragment1.log b/src/test/ref/wfragment1.log index 8208684cb..1df8e79f8 100644 --- a/src/test/ref/wfragment1.log +++ b/src/test/ref/wfragment1.log @@ -138,8 +138,8 @@ Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (bool) move_enemy::return#1 = (bool) move_enemy::return#3 (bool) move_enemy::return#2 +Alias main::i#2 = main::i#3 +Alias move_enemy::return#1 = move_enemy::return#3 move_enemy::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) move_enemy::obj_slot#1 (byte) move_enemy::obj_slot#0 Successful SSA optimization Pass2IdenticalPhiElimination @@ -232,12 +232,12 @@ move_enemy::@return: scope:[move_enemy] from move_enemy VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 (bool()) move_enemy((byte) move_enemy::obj_slot) -(byte~) move_enemy::$0 6.0 +(byte~) move_enemy::$0 3003.0 (byte) move_enemy::obj_slot -(byte) move_enemy::obj_slot#0 13.0 +(byte) move_enemy::obj_slot#0 1102.0 (bool) move_enemy::return Initial phi equivalence classes @@ -339,25 +339,25 @@ move_enemy: { OBJ_WORLD_X: .fill 2*MAX_OBJECTS, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 [ move_enemy::$0 ] ( main:2::move_enemy:7 [ main::i#2 move_enemy::$0 ] ) always clobbers reg byte a +Statement [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 [ move_enemy::$0 ] ( main:2::move_enemy:7 [ main::i#2 move_enemy::$0 ] { { move_enemy::obj_slot#0 = main::i#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 [ ] ( main:2::move_enemy:7 [ main::i#2 ] ) always clobbers reg byte a -Statement [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 [ move_enemy::$0 ] ( main:2::move_enemy:7 [ main::i#2 move_enemy::$0 ] ) always clobbers reg byte a -Statement [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 [ ] ( main:2::move_enemy:7 [ main::i#2 ] ) always clobbers reg byte a +Statement [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 [ ] ( main:2::move_enemy:7 [ main::i#2 ] { { move_enemy::obj_slot#0 = main::i#2 } } ) always clobbers reg byte a +Statement [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 [ move_enemy::$0 ] ( main:2::move_enemy:7 [ main::i#2 move_enemy::$0 ] { { move_enemy::obj_slot#0 = main::i#2 } } ) always clobbers reg byte a +Statement [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 [ ] ( main:2::move_enemy:7 [ main::i#2 ] { { move_enemy::obj_slot#0 = main::i#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ move_enemy::obj_slot#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ move_enemy::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] -Uplift Scope [move_enemy] 13: zp[1]:3 [ move_enemy::obj_slot#0 ] 6: zp[1]:4 [ move_enemy::$0 ] +Uplift Scope [move_enemy] 3,003: zp[1]:4 [ move_enemy::$0 ] 1,102: zp[1]:3 [ move_enemy::obj_slot#0 ] +Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [RADIX] Uplift Scope [] -Uplifting [main] best 354 combination reg byte y [ main::i#2 main::i#1 ] -Uplifting [move_enemy] best 319 combination reg byte y [ move_enemy::obj_slot#0 ] reg byte a [ move_enemy::$0 ] -Uplifting [RADIX] best 319 combination -Uplifting [] best 319 combination +Uplifting [move_enemy] best 437 combination reg byte a [ move_enemy::$0 ] reg byte a [ move_enemy::obj_slot#0 ] +Uplifting [main] best 337 combination reg byte y [ main::i#2 main::i#1 ] +Uplifting [RADIX] best 337 combination +Uplifting [] best 337 combination ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -397,7 +397,8 @@ main: { jmp __b1 // main::@1 __b1: - // [6] (byte) move_enemy::obj_slot#0 ← (byte) main::i#2 + // [6] (byte) move_enemy::obj_slot#0 ← (byte) main::i#2 -- vbuaa=vbuyy + tya // [7] call move_enemy jsr move_enemy jmp __b2 @@ -415,10 +416,9 @@ main: { rts } // move_enemy -// move_enemy(byte register(Y) obj_slot) +// move_enemy(byte register(A) obj_slot) move_enemy: { - // [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 -- vbuaa=vbuyy_rol_1 - tya + // [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl // [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_minus_1 tax @@ -480,22 +480,22 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (bool()) move_enemy((byte) move_enemy::obj_slot) -(byte~) move_enemy::$0 reg byte a 6.0 +(byte~) move_enemy::$0 reg byte a 3003.0 (label) move_enemy::@return (byte) move_enemy::obj_slot -(byte) move_enemy::obj_slot#0 reg byte y 13.0 +(byte) move_enemy::obj_slot#0 reg byte a 1102.0 (bool) move_enemy::return reg byte y [ main::i#2 main::i#1 ] -reg byte y [ move_enemy::obj_slot#0 ] +reg byte a [ move_enemy::obj_slot#0 ] reg byte a [ move_enemy::$0 ] FINAL ASSEMBLER -Score: 184 +Score: 202 // File Comments // Adding a missing word-fragment for Travis Fisher @@ -522,7 +522,8 @@ main: { // main::@1 __b1: // move_enemy(i) - // [6] (byte) move_enemy::obj_slot#0 ← (byte) main::i#2 + // [6] (byte) move_enemy::obj_slot#0 ← (byte) main::i#2 -- vbuaa=vbuyy + tya // [7] call move_enemy jsr move_enemy // main::@2 @@ -538,11 +539,10 @@ main: { rts } // move_enemy -// move_enemy(byte register(Y) obj_slot) +// move_enemy(byte register(A) obj_slot) move_enemy: { // OBJ_WORLD_X[obj_slot] -= 1 - // [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 -- vbuaa=vbuyy_rol_1 - tya + // [11] (byte~) move_enemy::$0 ← (byte) move_enemy::obj_slot#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl // [12] *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) ← *((const word*) OBJ_WORLD_X + (byte~) move_enemy::$0) - (byte) 1 -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_minus_1 tax diff --git a/src/test/ref/wfragment1.sym b/src/test/ref/wfragment1.sym index 34d234106..d4a934f1d 100644 --- a/src/test/ref/wfragment1.sym +++ b/src/test/ref/wfragment1.sym @@ -12,15 +12,15 @@ (label) main::@2 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#2 reg byte y 11.0 +(byte) main::i#1 reg byte y 151.5 +(byte) main::i#2 reg byte y 101.0 (bool()) move_enemy((byte) move_enemy::obj_slot) -(byte~) move_enemy::$0 reg byte a 6.0 +(byte~) move_enemy::$0 reg byte a 3003.0 (label) move_enemy::@return (byte) move_enemy::obj_slot -(byte) move_enemy::obj_slot#0 reg byte y 13.0 +(byte) move_enemy::obj_slot#0 reg byte a 1102.0 (bool) move_enemy::return reg byte y [ main::i#2 main::i#1 ] -reg byte y [ move_enemy::obj_slot#0 ] +reg byte a [ move_enemy::obj_slot#0 ] reg byte a [ move_enemy::$0 ] diff --git a/src/test/ref/word-array-0.log b/src/test/ref/word-array-0.log index 4edffc23c..01149fc19 100644 --- a/src/test/ref/word-array-0.log +++ b/src/test/ref/word-array-0.log @@ -139,14 +139,14 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 (word) main::w1 -(word) main::w1#0 2.0 +(word) main::w1#0 11.0 (word) main::w2 -(word) main::w2#0 2.0 +(word) main::w2#0 11.0 Initial phi equivalence classes Added variable main::w1#0 to live range equivalence class [ main::w1#0 ] @@ -246,12 +246,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::w1#0 ← *((const word*) main::words+(byte) 1*(const byte) SIZEOF_WORD) [ main::w1#0 ] ( main:2 [ main::w1#0 ] ) always clobbers reg byte a -Statement [5] (byte~) main::$0 ← < (word) main::w1#0 [ main::w1#0 main::$0 ] ( main:2 [ main::w1#0 main::$0 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$1 ← > (word) main::w1#0 [ main::$1 ] ( main:2 [ main::$1 ] ) always clobbers reg byte a -Statement [9] (word) main::w2#0 ← *((const word*) main::words+(byte) 2*(const byte) SIZEOF_WORD) [ main::w2#0 ] ( main:2 [ main::w2#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$2 ← < (word) main::w2#0 [ main::w2#0 main::$2 ] ( main:2 [ main::w2#0 main::$2 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$3 ← > (word) main::w2#0 [ main::$3 ] ( main:2 [ main::$3 ] ) always clobbers reg byte a +Statement [4] (word) main::w1#0 ← *((const word*) main::words+(byte) 1*(const byte) SIZEOF_WORD) [ main::w1#0 ] ( main:2 [ main::w1#0 ] { } ) always clobbers reg byte a +Statement [9] (word) main::w2#0 ← *((const word*) main::words+(byte) 2*(const byte) SIZEOF_WORD) [ main::w2#0 ] ( main:2 [ main::w2#0 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w1#0 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -260,7 +256,7 @@ Potential registers zp[1]:8 [ main::$2 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ main::$3 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:5 [ main::$1 ] 4: zp[1]:8 [ main::$2 ] 4: zp[1]:9 [ main::$3 ] 2: zp[2]:2 [ main::w1#0 ] 2: zp[2]:6 [ main::w2#0 ] +Uplift Scope [main] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$1 ] 22: zp[1]:8 [ main::$2 ] 22: zp[1]:9 [ main::$3 ] 11: zp[2]:2 [ main::w1#0 ] 11: zp[2]:6 [ main::w2#0 ] Uplift Scope [] Uplifting [main] best 77 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] zp[2]:2 [ main::w1#0 ] zp[2]:6 [ main::w2#0 ] @@ -355,16 +351,16 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) 6*(number) $28 (word) main::w1 -(word) main::w1#0 w1 zp[2]:2 2.0 +(word) main::w1#0 w1 zp[2]:2 11.0 (word) main::w2 -(word) main::w2#0 w2 zp[2]:4 2.0 +(word) main::w2#0 w2 zp[2]:4 11.0 (const word*) main::words[(number) 3] = (word*) 1024 zp[2]:2 [ main::w1#0 ] diff --git a/src/test/ref/word-array-0.sym b/src/test/ref/word-array-0.sym index 55de208c0..baeb22fa0 100644 --- a/src/test/ref/word-array-0.sym +++ b/src/test/ref/word-array-0.sym @@ -3,16 +3,16 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) 6*(number) $28 (word) main::w1 -(word) main::w1#0 w1 zp[2]:2 2.0 +(word) main::w1#0 w1 zp[2]:2 11.0 (word) main::w2 -(word) main::w2#0 w2 zp[2]:4 2.0 +(word) main::w2#0 w2 zp[2]:4 11.0 (const word*) main::words[(number) 3] = (word*) 1024 zp[2]:2 [ main::w1#0 ] diff --git a/src/test/ref/word-array-1.log b/src/test/ref/word-array-1.log index 96d918a8b..51f3578f4 100644 --- a/src/test/ref/word-array-1.log +++ b/src/test/ref/word-array-1.log @@ -145,19 +145,19 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 -(byte~) main::$3 22.0 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 +(byte~) main::$3 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 3.3000000000000003 +(byte) main::i#1 151.5 +(byte) main::i#2 30.299999999999997 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 22.0 -(byte) main::idx#3 7.333333333333333 -(byte) main::idx#4 6.6000000000000005 +(byte) main::idx#1 101.0 +(byte) main::idx#2 202.0 +(byte) main::idx#3 67.33333333333333 +(byte) main::idx#4 60.599999999999994 (word) main::w -(word) main::w#0 8.25 +(word) main::w#0 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -291,32 +291,27 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$3 ] ( main:2 [ main::i#2 main::idx#4 main::$3 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$3 ] ( main:2 [ main::i#2 main::idx#4 main::$3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#4 main::idx#3 ] -Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$3) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← > (word) main::w#0 [ main::i#2 main::idx#4 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$1 ← < (word) main::w#0 [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::idx#1 ] -Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$3 ] ( main:2 [ main::i#2 main::idx#4 main::$3 ] ) always clobbers reg byte a -Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$3) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← > (word) main::w#0 [ main::i#2 main::idx#4 main::w#0 main::$0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$1 ← < (word) main::w#0 [ main::i#2 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::idx#1 main::$1 ] ) always clobbers reg byte a +Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$3) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$3 ] ( main:2 [ main::i#2 main::idx#4 main::$3 ] { } ) always clobbers reg byte a +Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$3) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#4 main::idx#3 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:5 [ main::w#0 ] : zp[2]:5 , Potential registers zp[1]:7 [ main::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:8 [ main::idx#1 ] : zp[1]:8 , reg byte x , reg byte y , +Potential registers zp[1]:8 [ main::idx#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:9 [ main::$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::idx#2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$3 ] 22: zp[1]:7 [ main::$0 ] 22: zp[1]:9 [ main::$1 ] 22: zp[1]:10 [ main::idx#2 ] 19.8: zp[1]:2 [ main::i#2 main::i#1 ] 13.93: zp[1]:3 [ main::idx#4 main::idx#3 ] 11: zp[1]:8 [ main::idx#1 ] 8.25: zp[2]:5 [ main::w#0 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$3 ] 202: zp[1]:7 [ main::$0 ] 202: zp[1]:9 [ main::$1 ] 202: zp[1]:10 [ main::idx#2 ] 181.8: zp[1]:2 [ main::i#2 main::i#1 ] 127.93: zp[1]:3 [ main::idx#4 main::idx#3 ] 101: zp[1]:8 [ main::idx#1 ] 75.75: zp[2]:5 [ main::w#0 ] Uplift Scope [] Uplifting [main] best 993 combination reg byte a [ main::$3 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::idx#2 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::idx#4 main::idx#3 ] zp[1]:8 [ main::idx#1 ] zp[2]:5 [ main::w#0 ] -Limited combination testing to 100 combinations of 6912 possible. +Limited combination testing to 100 combinations of 9216 possible. Uplifting [] best 993 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] Uplifting [main] best 893 combination reg byte x [ main::i#2 main::i#1 ] @@ -448,22 +443,22 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 3.3000000000000003 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 30.299999999999997 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:3 8.25 +(word) main::w#0 w zp[2]:3 75.75 (const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-array-1.sym b/src/test/ref/word-array-1.sym index 5aca87cac..4df78cd54 100644 --- a/src/test/ref/word-array-1.sym +++ b/src/test/ref/word-array-1.sym @@ -2,22 +2,22 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 3.3000000000000003 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 30.299999999999997 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:3 8.25 +(word) main::w#0 w zp[2]:3 75.75 (const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-array-2.log b/src/test/ref/word-array-2.log index 0357f406b..10d7024a6 100644 --- a/src/test/ref/word-array-2.log +++ b/src/test/ref/word-array-2.log @@ -176,15 +176,15 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$0 5.5 -(word~) main::$1 22.0 -(word~) main::$2 22.0 -(word~) main::$3 7.333333333333333 -(word~) main::$5 22.0 -(word*~) main::$8 22.0 +(word~) main::$0 50.5 +(word~) main::$1 202.0 +(word~) main::$2 202.0 +(word~) main::$3 67.33333333333333 +(word~) main::$5 202.0 +(word*~) main::$8 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 4.125 +(byte) main::i#1 151.5 +(byte) main::i#2 37.875 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -327,24 +327,24 @@ main: { words: .fill 2*$100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word~) main::$0 ← (word)(byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a +Statement [6] (word~) main::$0 ← (word)(byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$0 main::$1 ] ( main:2 [ main::i#2 main::$0 main::$1 ] ) always clobbers reg byte a -Statement [8] (word~) main::$2 ← (word~) main::$1 << (byte) 8 [ main::i#2 main::$0 main::$2 ] ( main:2 [ main::i#2 main::$0 main::$2 ] ) always clobbers reg byte a -Statement [9] (word~) main::$3 ← (word~) main::$2 + (byte) main::i#2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a -Statement [10] (word~) main::$5 ← (word~) main::$0 << (byte) 1 [ main::i#2 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$3 main::$5 ] ) always clobbers reg byte a -Statement [11] (word*~) main::$8 ← (const word*) words + (word~) main::$5 [ main::i#2 main::$3 main::$8 ] ( main:2 [ main::i#2 main::$3 main::$8 ] ) always clobbers reg byte a -Statement [12] *((word*~) main::$8) ← (word~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [7] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$0 main::$1 ] ( main:2 [ main::i#2 main::$0 main::$1 ] { } ) always clobbers reg byte a +Statement [8] (word~) main::$2 ← (word~) main::$1 << (byte) 8 [ main::i#2 main::$0 main::$2 ] ( main:2 [ main::i#2 main::$0 main::$2 ] { } ) always clobbers reg byte a +Statement [9] (word~) main::$3 ← (word~) main::$2 + (byte) main::i#2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$5 ← (word~) main::$0 << (byte) 1 [ main::i#2 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$3 main::$5 ] { } ) always clobbers reg byte a +Statement [11] (word*~) main::$8 ← (const word*) words + (word~) main::$5 [ main::i#2 main::$3 main::$8 ] ( main:2 [ main::i#2 main::$3 main::$8 ] { } ) always clobbers reg byte a +Statement [12] *((word*~) main::$8) ← (word~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [15] *((const word*) main::SCREEN) ← *((const word*) words+(word) $ff*(const byte) SIZEOF_WORD) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] (word~) main::$0 ← (word)(byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a -Statement [7] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$0 main::$1 ] ( main:2 [ main::i#2 main::$0 main::$1 ] ) always clobbers reg byte a -Statement [8] (word~) main::$2 ← (word~) main::$1 << (byte) 8 [ main::i#2 main::$0 main::$2 ] ( main:2 [ main::i#2 main::$0 main::$2 ] ) always clobbers reg byte a -Statement [9] (word~) main::$3 ← (word~) main::$2 + (byte) main::i#2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] ) always clobbers reg byte a -Statement [10] (word~) main::$5 ← (word~) main::$0 << (byte) 1 [ main::i#2 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$3 main::$5 ] ) always clobbers reg byte a -Statement [11] (word*~) main::$8 ← (const word*) words + (word~) main::$5 [ main::i#2 main::$3 main::$8 ] ( main:2 [ main::i#2 main::$3 main::$8 ] ) always clobbers reg byte a -Statement [12] *((word*~) main::$8) ← (word~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [15] *((const word*) main::SCREEN) ← *((const word*) words+(word) $ff*(const byte) SIZEOF_WORD) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [15] *((const word*) main::SCREEN) ← *((const word*) words+(word) $ff*(const byte) SIZEOF_WORD) [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] (word~) main::$0 ← (word)(byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] { } ) always clobbers reg byte a +Statement [7] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$0 main::$1 ] ( main:2 [ main::i#2 main::$0 main::$1 ] { } ) always clobbers reg byte a +Statement [8] (word~) main::$2 ← (word~) main::$1 << (byte) 8 [ main::i#2 main::$0 main::$2 ] ( main:2 [ main::i#2 main::$0 main::$2 ] { } ) always clobbers reg byte a +Statement [9] (word~) main::$3 ← (word~) main::$2 + (byte) main::i#2 [ main::i#2 main::$0 main::$3 ] ( main:2 [ main::i#2 main::$0 main::$3 ] { } ) always clobbers reg byte a +Statement [10] (word~) main::$5 ← (word~) main::$0 << (byte) 1 [ main::i#2 main::$3 main::$5 ] ( main:2 [ main::i#2 main::$3 main::$5 ] { } ) always clobbers reg byte a +Statement [11] (word*~) main::$8 ← (const word*) words + (word~) main::$5 [ main::i#2 main::$3 main::$8 ] ( main:2 [ main::i#2 main::$3 main::$8 ] { } ) always clobbers reg byte a +Statement [12] *((word*~) main::$8) ← (word~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [15] *((const word*) main::SCREEN) ← *((const word*) words+(word) $ff*(const byte) SIZEOF_WORD) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::$0 ] : zp[2]:3 , Potential registers zp[2]:5 [ main::$1 ] : zp[2]:5 , @@ -354,7 +354,7 @@ Potential registers zp[2]:11 [ main::$5 ] : zp[2]:11 , Potential registers zp[2]:13 [ main::$8 ] : zp[2]:13 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[2]:5 [ main::$1 ] 22: zp[2]:7 [ main::$2 ] 22: zp[2]:11 [ main::$5 ] 22: zp[2]:13 [ main::$8 ] 20.62: zp[1]:2 [ main::i#2 main::i#1 ] 7.33: zp[2]:9 [ main::$3 ] 5.5: zp[2]:3 [ main::$0 ] +Uplift Scope [main] 202: zp[2]:5 [ main::$1 ] 202: zp[2]:7 [ main::$2 ] 202: zp[2]:11 [ main::$5 ] 202: zp[2]:13 [ main::$8 ] 189.38: zp[1]:2 [ main::i#2 main::i#1 ] 67.33: zp[2]:9 [ main::$3 ] 50.5: zp[2]:3 [ main::$0 ] Uplift Scope [] Uplifting [main] best 1262 combination zp[2]:5 [ main::$1 ] zp[2]:7 [ main::$2 ] zp[2]:11 [ main::$5 ] zp[2]:13 [ main::$8 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:9 [ main::$3 ] zp[2]:3 [ main::$0 ] @@ -507,19 +507,19 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(word~) main::$0 zp[2]:2 5.5 -(word~) main::$1 zp[2]:4 22.0 -(word~) main::$2 zp[2]:4 22.0 -(word~) main::$3 zp[2]:4 7.333333333333333 -(word~) main::$5 zp[2]:2 22.0 -(word*~) main::$8 zp[2]:2 22.0 +(word~) main::$0 zp[2]:2 50.5 +(word~) main::$1 zp[2]:4 202.0 +(word~) main::$2 zp[2]:4 202.0 +(word~) main::$3 zp[2]:4 67.33333333333333 +(word~) main::$5 zp[2]:2 202.0 +(word*~) main::$8 zp[2]:2 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word*) main::SCREEN = (word*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.125 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 37.875 (const word*) words[(number) $100] = { fill( $100, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-array-2.sym b/src/test/ref/word-array-2.sym index 9c33e725b..ca6232024 100644 --- a/src/test/ref/word-array-2.sym +++ b/src/test/ref/word-array-2.sym @@ -3,19 +3,19 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(word~) main::$0 zp[2]:2 5.5 -(word~) main::$1 zp[2]:4 22.0 -(word~) main::$2 zp[2]:4 22.0 -(word~) main::$3 zp[2]:4 7.333333333333333 -(word~) main::$5 zp[2]:2 22.0 -(word*~) main::$8 zp[2]:2 22.0 +(word~) main::$0 zp[2]:2 50.5 +(word~) main::$1 zp[2]:4 202.0 +(word~) main::$2 zp[2]:4 202.0 +(word~) main::$3 zp[2]:4 67.33333333333333 +(word~) main::$5 zp[2]:2 202.0 +(word*~) main::$8 zp[2]:2 202.0 (label) main::@1 (label) main::@2 (label) main::@return (const word*) main::SCREEN = (word*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.125 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 37.875 (const word*) words[(number) $100] = { fill( $100, 0) } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-pointer-compound.log b/src/test/ref/word-pointer-compound.log index 916893154..f37ea59f6 100644 --- a/src/test/ref/word-pointer-compound.log +++ b/src/test/ref/word-pointer-compound.log @@ -255,16 +255,16 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 -(byte~) main::$4 4.0 -(byte~) main::$5 4.0 -(byte~) main::$7 33.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 +(byte~) main::$4 22.0 +(byte~) main::$5 22.0 +(byte~) main::$7 303.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -410,11 +410,11 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] *((const word*) main::words + (byte~) main::$7) ← *((const word*) main::words + (byte~) main::$7) + (word) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] ) always clobbers reg byte a -Statement [7] *((const word*) main::words + (byte~) main::$7) ← *((const word*) main::words + (byte~) main::$7) + (word) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const word*) main::words + (byte~) main::$7) ← *((const word*) main::words + (byte~) main::$7) + (word) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$7 ] ( main:2 [ main::i#2 main::$7 ] { } ) always clobbers reg byte a +Statement [7] *((const word*) main::words + (byte~) main::$7) ← *((const word*) main::words + (byte~) main::$7) + (word) $101 [ main::i#2 ] ( main:2 [ main::i#2 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::$7 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -425,7 +425,7 @@ Potential registers zp[1]:8 [ main::$4 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ main::$5 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp[1]:3 [ main::$7 ] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 4: zp[1]:4 [ main::$0 ] 4: zp[1]:5 [ main::$1 ] 4: zp[1]:6 [ main::$2 ] 4: zp[1]:7 [ main::$3 ] 4: zp[1]:8 [ main::$4 ] 4: zp[1]:9 [ main::$5 ] +Uplift Scope [main] 303: zp[1]:3 [ main::$7 ] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$1 ] 22: zp[1]:6 [ main::$2 ] 22: zp[1]:7 [ main::$3 ] 22: zp[1]:8 [ main::$4 ] 22: zp[1]:9 [ main::$5 ] Uplift Scope [] Uplifting [main] best 578 combination reg byte a [ main::$7 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] zp[1]:6 [ main::$2 ] zp[1]:7 [ main::$3 ] zp[1]:8 [ main::$4 ] zp[1]:9 [ main::$5 ] @@ -565,20 +565,20 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 -(byte~) main::$7 reg byte a 33.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 +(byte~) main::$7 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-pointer-compound.sym b/src/test/ref/word-pointer-compound.sym index 40b778298..693e62ed1 100644 --- a/src/test/ref/word-pointer-compound.sym +++ b/src/test/ref/word-pointer-compound.sym @@ -3,20 +3,20 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 -(byte~) main::$7 reg byte a 33.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 +(byte~) main::$7 reg byte a 303.0 (label) main::@1 (label) main::@2 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 (const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-pointer-iteration-0.log b/src/test/ref/word-pointer-iteration-0.log index e2642d454..8ed63ab0d 100644 --- a/src/test/ref/word-pointer-iteration-0.log +++ b/src/test/ref/word-pointer-iteration-0.log @@ -156,12 +156,12 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 4.0 -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$3 4.0 -(byte~) main::$4 4.0 -(byte~) main::$5 4.0 +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$3 22.0 +(byte~) main::$4 22.0 +(byte~) main::$5 22.0 (word*) main::wp Initial phi equivalence classes @@ -271,7 +271,7 @@ Potential registers zp[1]:6 [ main::$4 ] : zp[1]:6 , reg byte a , reg byte x , r Potential registers zp[1]:7 [ main::$5 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:2 [ main::$0 ] 4: zp[1]:3 [ main::$1 ] 4: zp[1]:4 [ main::$2 ] 4: zp[1]:5 [ main::$3 ] 4: zp[1]:6 [ main::$4 ] 4: zp[1]:7 [ main::$5 ] +Uplift Scope [main] 22: zp[1]:2 [ main::$0 ] 22: zp[1]:3 [ main::$1 ] 22: zp[1]:4 [ main::$2 ] 22: zp[1]:5 [ main::$3 ] 22: zp[1]:6 [ main::$4 ] 22: zp[1]:7 [ main::$5 ] Uplift Scope [] Uplifting [main] best 81 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] zp[1]:6 [ main::$4 ] zp[1]:7 [ main::$5 ] @@ -364,12 +364,12 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) $28*(number) 6 (word*) main::wp diff --git a/src/test/ref/word-pointer-iteration-0.sym b/src/test/ref/word-pointer-iteration-0.sym index 3f5fdc595..b88c0a409 100644 --- a/src/test/ref/word-pointer-iteration-0.sym +++ b/src/test/ref/word-pointer-iteration-0.sym @@ -3,12 +3,12 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 4.0 -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$3 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$3 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) $28*(number) 6 (word*) main::wp diff --git a/src/test/ref/word-pointer-iteration.log b/src/test/ref/word-pointer-iteration.log index 53a51112f..142d52c80 100644 --- a/src/test/ref/word-pointer-iteration.log +++ b/src/test/ref/word-pointer-iteration.log @@ -151,21 +151,21 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 +(byte~) main::$0 202.0 +(byte~) main::$1 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 2.2 +(byte) main::i#1 151.5 +(byte) main::i#2 20.2 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 22.0 -(byte) main::idx#3 7.333333333333333 -(byte) main::idx#4 6.6000000000000005 +(byte) main::idx#1 101.0 +(byte) main::idx#2 202.0 +(byte) main::idx#3 67.33333333333333 +(byte) main::idx#4 60.599999999999994 (word) main::w -(word) main::w#0 6.6000000000000005 +(word) main::w#0 60.599999999999994 (word*) main::wp -(word*) main::wp#1 2.2 -(word*) main::wp#2 16.5 +(word*) main::wp#1 20.2 +(word*) main::wp#2 151.5 Initial phi equivalence classes [ main::wp#2 main::wp#1 ] @@ -311,34 +311,29 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) main::w#0 ← *((word*) main::wp#2) [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ( main:2 [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ) always clobbers reg byte a reg byte y +Statement [6] (word) main::w#0 ← *((word*) main::wp#2) [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ( main:2 [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#4 main::idx#3 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::idx#4 main::idx#3 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::i#2 main::i#1 ] -Statement [7] (word*) main::wp#1 ← (word*) main::wp#2 + (const byte) SIZEOF_WORD [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← < (word) main::w#0 [ main::idx#4 main::i#2 main::wp#1 main::w#0 main::$0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$1 ← > (word) main::w#0 [ main::i#2 main::wp#1 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::wp#1 main::idx#1 main::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::idx#1 ] -Statement [6] (word) main::w#0 ← *((word*) main::wp#2) [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ( main:2 [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ) always clobbers reg byte a reg byte y -Statement [7] (word*) main::wp#1 ← (word*) main::wp#2 + (const byte) SIZEOF_WORD [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$0 ← < (word) main::w#0 [ main::idx#4 main::i#2 main::wp#1 main::w#0 main::$0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 main::$0 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$1 ← > (word) main::w#0 [ main::i#2 main::wp#1 main::idx#1 main::$1 ] ( main:2 [ main::i#2 main::wp#1 main::idx#1 main::$1 ] ) always clobbers reg byte a +Statement [7] (word*) main::wp#1 ← (word*) main::wp#2 + (const byte) SIZEOF_WORD [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] { } ) always clobbers reg byte a +Statement [6] (word) main::w#0 ← *((word*) main::wp#2) [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] ( main:2 [ main::wp#2 main::idx#4 main::i#2 main::w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (word*) main::wp#1 ← (word*) main::wp#2 + (const byte) SIZEOF_WORD [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] ( main:2 [ main::idx#4 main::i#2 main::wp#1 main::w#0 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::wp#2 main::wp#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::idx#4 main::idx#3 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::i#2 main::i#1 ] : zp[1]:5 , reg byte x , Potential registers zp[2]:6 [ main::w#0 ] : zp[2]:6 , Potential registers zp[1]:8 [ main::$0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:9 [ main::idx#1 ] : zp[1]:9 , reg byte x , reg byte y , +Potential registers zp[1]:9 [ main::idx#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::$1 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:11 [ main::idx#2 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:8 [ main::$0 ] 22: zp[1]:10 [ main::$1 ] 22: zp[1]:11 [ main::idx#2 ] 18.7: zp[2]:2 [ main::wp#2 main::wp#1 ] 18.7: zp[1]:5 [ main::i#2 main::i#1 ] 13.93: zp[1]:4 [ main::idx#4 main::idx#3 ] 11: zp[1]:9 [ main::idx#1 ] 6.6: zp[2]:6 [ main::w#0 ] +Uplift Scope [main] 202: zp[1]:8 [ main::$0 ] 202: zp[1]:10 [ main::$1 ] 202: zp[1]:11 [ main::idx#2 ] 171.7: zp[2]:2 [ main::wp#2 main::wp#1 ] 171.7: zp[1]:5 [ main::i#2 main::i#1 ] 127.93: zp[1]:4 [ main::idx#4 main::idx#3 ] 101: zp[1]:9 [ main::idx#1 ] 60.6: zp[2]:6 [ main::w#0 ] Uplift Scope [] Uplifting [main] best 1168 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::idx#2 ] zp[2]:2 [ main::wp#2 main::wp#1 ] reg byte x [ main::i#2 main::i#1 ] zp[1]:4 [ main::idx#4 main::idx#3 ] zp[1]:9 [ main::idx#1 ] zp[2]:6 [ main::w#0 ] -Limited combination testing to 100 combinations of 768 possible. +Limited combination testing to 100 combinations of 1024 possible. Uplifting [] best 1168 combination Attempting to uplift remaining variables inzp[1]:4 [ main::idx#4 main::idx#3 ] Uplifting [main] best 1168 combination zp[1]:4 [ main::idx#4 main::idx#3 ] @@ -481,25 +476,25 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 20.2 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:4 7.333333333333333 -(byte) main::idx#4 idx zp[1]:4 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:4 67.33333333333333 +(byte) main::idx#4 idx zp[1]:4 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:5 6.6000000000000005 +(word) main::w#0 w zp[2]:5 60.599999999999994 (const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } (word*) main::wp -(word*) main::wp#1 wp zp[2]:2 2.2 -(word*) main::wp#2 wp zp[2]:2 16.5 +(word*) main::wp#1 wp zp[2]:2 20.2 +(word*) main::wp#2 wp zp[2]:2 151.5 zp[2]:2 [ main::wp#2 main::wp#1 ] zp[1]:4 [ main::idx#4 main::idx#3 ] diff --git a/src/test/ref/word-pointer-iteration.sym b/src/test/ref/word-pointer-iteration.sym index 8e2e05701..0022fade2 100644 --- a/src/test/ref/word-pointer-iteration.sym +++ b/src/test/ref/word-pointer-iteration.sym @@ -3,25 +3,25 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 +(byte~) main::$0 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 2.2 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 20.2 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:4 7.333333333333333 -(byte) main::idx#4 idx zp[1]:4 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:4 67.33333333333333 +(byte) main::idx#4 idx zp[1]:4 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:5 6.6000000000000005 +(word) main::w#0 w zp[2]:5 60.599999999999994 (const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } (word*) main::wp -(word*) main::wp#1 wp zp[2]:2 2.2 -(word*) main::wp#2 wp zp[2]:2 16.5 +(word*) main::wp#1 wp zp[2]:2 20.2 +(word*) main::wp#2 wp zp[2]:2 151.5 zp[2]:2 [ main::wp#2 main::wp#1 ] zp[1]:4 [ main::idx#4 main::idx#3 ] diff --git a/src/test/ref/word-pointer-math-0.log b/src/test/ref/word-pointer-math-0.log index f56d7f8c9..a0032efe9 100644 --- a/src/test/ref/word-pointer-math-0.log +++ b/src/test/ref/word-pointer-math-0.log @@ -150,14 +150,14 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 4.0 -(byte~) main::$2 4.0 -(byte~) main::$4 4.0 -(byte~) main::$5 4.0 +(byte~) main::$1 22.0 +(byte~) main::$2 22.0 +(byte~) main::$4 22.0 +(byte~) main::$5 22.0 (word) main::w1 -(word) main::w1#0 2.0 +(word) main::w1#0 11.0 (word) main::w2 -(word) main::w2#0 2.0 +(word) main::w2#0 11.0 Initial phi equivalence classes Added variable main::w1#0 to live range equivalence class [ main::w1#0 ] @@ -257,12 +257,8 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (word) main::w1#0 ← *((const word*) main::words+(byte) 1*(const byte) SIZEOF_WORD) [ main::w1#0 ] ( main:2 [ main::w1#0 ] ) always clobbers reg byte a -Statement [5] (byte~) main::$1 ← < (word) main::w1#0 [ main::w1#0 main::$1 ] ( main:2 [ main::w1#0 main::$1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← > (word) main::w1#0 [ main::$2 ] ( main:2 [ main::$2 ] ) always clobbers reg byte a -Statement [9] (word) main::w2#0 ← *((const word*) main::words+(byte) 2*(const byte) SIZEOF_WORD) [ main::w2#0 ] ( main:2 [ main::w2#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$4 ← < (word) main::w2#0 [ main::w2#0 main::$4 ] ( main:2 [ main::w2#0 main::$4 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$5 ← > (word) main::w2#0 [ main::$5 ] ( main:2 [ main::$5 ] ) always clobbers reg byte a +Statement [4] (word) main::w1#0 ← *((const word*) main::words+(byte) 1*(const byte) SIZEOF_WORD) [ main::w1#0 ] ( main:2 [ main::w1#0 ] { } ) always clobbers reg byte a +Statement [9] (word) main::w2#0 ← *((const word*) main::words+(byte) 2*(const byte) SIZEOF_WORD) [ main::w2#0 ] ( main:2 [ main::w2#0 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::w1#0 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , @@ -271,7 +267,7 @@ Potential registers zp[1]:8 [ main::$4 ] : zp[1]:8 , reg byte a , reg byte x , r Potential registers zp[1]:9 [ main::$5 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 4: zp[1]:4 [ main::$1 ] 4: zp[1]:5 [ main::$2 ] 4: zp[1]:8 [ main::$4 ] 4: zp[1]:9 [ main::$5 ] 2: zp[2]:2 [ main::w1#0 ] 2: zp[2]:6 [ main::w2#0 ] +Uplift Scope [main] 22: zp[1]:4 [ main::$1 ] 22: zp[1]:5 [ main::$2 ] 22: zp[1]:8 [ main::$4 ] 22: zp[1]:9 [ main::$5 ] 11: zp[2]:2 [ main::w1#0 ] 11: zp[2]:6 [ main::w2#0 ] Uplift Scope [] Uplifting [main] best 77 combination reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] zp[2]:2 [ main::w1#0 ] zp[2]:6 [ main::w2#0 ] @@ -366,16 +362,16 @@ FINAL SYMBOL TABLE (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) 6*(number) $28 (word) main::w1 -(word) main::w1#0 w1 zp[2]:2 2.0 +(word) main::w1#0 w1 zp[2]:2 11.0 (word) main::w2 -(word) main::w2#0 w2 zp[2]:4 2.0 +(word) main::w2#0 w2 zp[2]:4 11.0 (const word*) main::words = (word*) 1024 zp[2]:2 [ main::w1#0 ] diff --git a/src/test/ref/word-pointer-math-0.sym b/src/test/ref/word-pointer-math-0.sym index 1150ea731..760329ba7 100644 --- a/src/test/ref/word-pointer-math-0.sym +++ b/src/test/ref/word-pointer-math-0.sym @@ -3,16 +3,16 @@ (label) @end (const byte) SIZEOF_WORD = (byte) 2 (void()) main() -(byte~) main::$1 reg byte a 4.0 -(byte~) main::$2 reg byte a 4.0 -(byte~) main::$4 reg byte a 4.0 -(byte~) main::$5 reg byte a 4.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400+(number) 6*(number) $28 (word) main::w1 -(word) main::w1#0 w1 zp[2]:2 2.0 +(word) main::w1#0 w1 zp[2]:2 11.0 (word) main::w2 -(word) main::w2#0 w2 zp[2]:4 2.0 +(word) main::w2#0 w2 zp[2]:4 11.0 (const word*) main::words = (word*) 1024 zp[2]:2 [ main::w1#0 ] diff --git a/src/test/ref/word-pointer-math-1.log b/src/test/ref/word-pointer-math-1.log index 331022901..cc4812801 100644 --- a/src/test/ref/word-pointer-math-1.log +++ b/src/test/ref/word-pointer-math-1.log @@ -43,7 +43,7 @@ Simplifying constant pointer cast (word*) 1024 Simplifying constant pointer cast (word*) 4096 Simplifying constant pointer cast (word*) 4416 Successful SSA optimization PassNCastSimplification -Alias (word) main::wd#0 = (word~) main::$0 +Alias main::wd#0 = main::$0 Successful SSA optimization Pass2AliasElimination Constant right-side identified [0] (word~) main::$1 ← (const word*) main::w2 - (const word*) main::w1 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -140,7 +140,7 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const word*) main::SCREEN) ← (const word) main::wd#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const word*) main::SCREEN) ← (const word) main::wd#0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] diff --git a/src/test/ref/word-pointer-math.log b/src/test/ref/word-pointer-math.log index e5974882d..4580f10cc 100644 --- a/src/test/ref/word-pointer-math.log +++ b/src/test/ref/word-pointer-math.log @@ -151,19 +151,19 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$2 22.0 -(byte~) main::$4 22.0 +(byte~) main::$1 202.0 +(byte~) main::$2 202.0 +(byte~) main::$4 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 3.3000000000000003 +(byte) main::i#1 151.5 +(byte) main::i#2 30.299999999999997 (byte) main::idx -(byte) main::idx#1 11.0 -(byte) main::idx#2 22.0 -(byte) main::idx#3 7.333333333333333 -(byte) main::idx#4 6.6000000000000005 +(byte) main::idx#1 101.0 +(byte) main::idx#2 202.0 +(byte) main::idx#3 67.33333333333333 +(byte) main::idx#4 60.599999999999994 (word) main::w -(word) main::w#0 8.25 +(word) main::w#0 75.75 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -297,32 +297,27 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#4 main::idx#3 ] -Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$4) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$1 ← < (word) main::w#0 [ main::i#2 main::idx#4 main::w#0 main::$1 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 main::$1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$2 ← > (word) main::w#0 [ main::i#2 main::idx#1 main::$2 ] ( main:2 [ main::i#2 main::idx#1 main::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::idx#1 ] -Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] ) always clobbers reg byte a -Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$4) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] ) always clobbers reg byte a -Statement [8] (byte~) main::$1 ← < (word) main::w#0 [ main::i#2 main::idx#4 main::w#0 main::$1 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 main::$1 ] ) always clobbers reg byte a -Statement [11] (byte~) main::$2 ← > (word) main::w#0 [ main::i#2 main::idx#1 main::$2 ] ( main:2 [ main::i#2 main::idx#1 main::$2 ] ) always clobbers reg byte a +Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$4) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$4 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::idx#4 main::$4 ] ( main:2 [ main::i#2 main::idx#4 main::$4 ] { } ) always clobbers reg byte a +Statement [7] (word) main::w#0 ← *((const word*) main::words + (byte~) main::$4) [ main::i#2 main::idx#4 main::w#0 ] ( main:2 [ main::i#2 main::idx#4 main::w#0 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#4 main::idx#3 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:5 [ main::w#0 ] : zp[2]:5 , Potential registers zp[1]:7 [ main::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:8 [ main::idx#1 ] : zp[1]:8 , reg byte x , reg byte y , +Potential registers zp[1]:8 [ main::idx#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:9 [ main::$2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::idx#2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$4 ] 22: zp[1]:7 [ main::$1 ] 22: zp[1]:9 [ main::$2 ] 22: zp[1]:10 [ main::idx#2 ] 19.8: zp[1]:2 [ main::i#2 main::i#1 ] 13.93: zp[1]:3 [ main::idx#4 main::idx#3 ] 11: zp[1]:8 [ main::idx#1 ] 8.25: zp[2]:5 [ main::w#0 ] +Uplift Scope [main] 202: zp[1]:4 [ main::$4 ] 202: zp[1]:7 [ main::$1 ] 202: zp[1]:9 [ main::$2 ] 202: zp[1]:10 [ main::idx#2 ] 181.8: zp[1]:2 [ main::i#2 main::i#1 ] 127.93: zp[1]:3 [ main::idx#4 main::idx#3 ] 101: zp[1]:8 [ main::idx#1 ] 75.75: zp[2]:5 [ main::w#0 ] Uplift Scope [] Uplifting [main] best 993 combination reg byte a [ main::$4 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::idx#2 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:3 [ main::idx#4 main::idx#3 ] zp[1]:8 [ main::idx#1 ] zp[2]:5 [ main::w#0 ] -Limited combination testing to 100 combinations of 6912 possible. +Limited combination testing to 100 combinations of 9216 possible. Uplifting [] best 993 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] Uplifting [main] best 893 combination reg byte x [ main::i#2 main::i#1 ] @@ -453,22 +448,22 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 3.3000000000000003 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 30.299999999999997 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:3 8.25 +(word) main::w#0 w zp[2]:3 75.75 (const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/word-pointer-math.sym b/src/test/ref/word-pointer-math.sym index c6deb6547..60424452a 100644 --- a/src/test/ref/word-pointer-math.sym +++ b/src/test/ref/word-pointer-math.sym @@ -2,22 +2,22 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$1 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$4 reg byte a 202.0 (label) main::@1 (label) main::@return (const byte*) main::SCREEN = (byte*) 1024 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 3.3000000000000003 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 30.299999999999997 (byte) main::idx -(byte) main::idx#1 reg byte y 11.0 -(byte) main::idx#2 reg byte a 22.0 -(byte) main::idx#3 idx zp[1]:2 7.333333333333333 -(byte) main::idx#4 idx zp[1]:2 6.6000000000000005 +(byte) main::idx#1 reg byte y 101.0 +(byte) main::idx#2 reg byte a 202.0 +(byte) main::idx#3 idx zp[1]:2 67.33333333333333 +(byte) main::idx#4 idx zp[1]:2 60.599999999999994 (word) main::w -(word) main::w#0 w zp[2]:3 8.25 +(word) main::w#0 w zp[2]:3 75.75 (const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/wordexpr.log b/src/test/ref/wordexpr.log index c79c3590a..e028c79de 100644 --- a/src/test/ref/wordexpr.log +++ b/src/test/ref/wordexpr.log @@ -51,7 +51,7 @@ Adding number conversion cast (unumber) $28*8 in (number~) main::$0 ← (word) m Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (word) main::b#2 + (unumber)(number) $28*(number) 8 Successful SSA optimization PassNAddNumberTypeConversions Inferred type updated to word in (unumber~) main::$0 ← (word) main::b#2 + (word)(number) $28*(number) 8 -Alias (word) main::b#1 = (word~) main::$0 +Alias main::b#1 = main::$0 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification @@ -121,11 +121,11 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (word) main::b -(word) main::b#1 7.333333333333333 -(word) main::b#2 22.0 +(word) main::b#1 67.33333333333333 +(word) main::b#2 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#1 151.5 +(byte) main::i#2 101.0 Initial phi equivalence classes [ main::b#2 main::b#1 ] @@ -206,14 +206,14 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) main::b#1 ← (word) main::b#2 + (word)(number) $28*(number) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] ) always clobbers reg byte a +Statement [6] (word) main::b#1 ← (word) main::b#2 + (word)(number) $28*(number) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ] -Statement [6] (word) main::b#1 ← (word) main::b#2 + (word)(number) $28*(number) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] ) always clobbers reg byte a +Statement [6] (word) main::b#1 ← (word) main::b#2 + (word)(number) $28*(number) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] { } ) always clobbers reg byte a Potential registers zp[2]:2 [ main::b#2 main::b#1 ] : zp[2]:2 , Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.33: zp[2]:2 [ main::b#2 main::b#1 ] 27.5: zp[1]:4 [ main::i#2 main::i#1 ] +Uplift Scope [main] 269.33: zp[2]:2 [ main::b#2 main::b#1 ] 252.5: zp[1]:4 [ main::i#2 main::i#1 ] Uplift Scope [] Uplifting [main] best 473 combination zp[2]:2 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] @@ -320,11 +320,11 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (word) main::b -(word) main::b#1 b zp[2]:2 7.333333333333333 -(word) main::b#2 b zp[2]:2 22.0 +(word) main::b#1 b zp[2]:2 67.33333333333333 +(word) main::b#2 b zp[2]:2 202.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 zp[2]:2 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/wordexpr.sym b/src/test/ref/wordexpr.sym index 3e5fe4299..cc54aa087 100644 --- a/src/test/ref/wordexpr.sym +++ b/src/test/ref/wordexpr.sym @@ -5,11 +5,11 @@ (label) main::@1 (label) main::@return (word) main::b -(word) main::b#1 b zp[2]:2 7.333333333333333 -(word) main::b#2 b zp[2]:2 22.0 +(word) main::b#1 b zp[2]:2 67.33333333333333 +(word) main::b#2 b zp[2]:2 202.0 (byte) main::i -(byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#1 reg byte x 151.5 +(byte) main::i#2 reg byte x 101.0 zp[2]:2 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/ref/zeropage-detect-advanced.log b/src/test/ref/zeropage-detect-advanced.log index df7fe30f6..733de2d6c 100644 --- a/src/test/ref/zeropage-detect-advanced.log +++ b/src/test/ref/zeropage-detect-advanced.log @@ -76,7 +76,7 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (void()) main() -(dword) main::t loadstore 20.0 +(dword) main::t loadstore 110.0 Initial phi equivalence classes Added variable main::t to live range equivalence class [ main::t ] @@ -133,12 +133,12 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (dword) main::t ← (dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((byte*) 1024) ← *((const byte*) main::c) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] (dword) main::t ← (dword) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [5] *((byte*) 1024) ← *((const byte*) main::c) [ ] ( main:2 [ ] { } ) always clobbers reg byte a Potential registers zp[4]:2 [ main::t ] : zp[4]:2 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 20: zp[4]:2 [ main::t ] +Uplift Scope [main] 110: zp[4]:2 [ main::t ] Uplift Scope [] Uplifting [main] best 48 combination zp[4]:2 [ main::t ] @@ -218,7 +218,7 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (const byte*) main::c = (byte*)&(dword) main::t -(dword) main::t loadstore zp[4]:2 20.0 +(dword) main::t loadstore zp[4]:2 110.0 zp[4]:2 [ main::t ] diff --git a/src/test/ref/zeropage-detect-advanced.sym b/src/test/ref/zeropage-detect-advanced.sym index b7509ed57..9c0d18fd2 100644 --- a/src/test/ref/zeropage-detect-advanced.sym +++ b/src/test/ref/zeropage-detect-advanced.sym @@ -4,6 +4,6 @@ (void()) main() (label) main::@return (const byte*) main::c = (byte*)&(dword) main::t -(dword) main::t loadstore zp[4]:2 20.0 +(dword) main::t loadstore zp[4]:2 110.0 zp[4]:2 [ main::t ] diff --git a/src/test/ref/zeropage-sinus.log b/src/test/ref/zeropage-sinus.log index b9927536f..7372d1af3 100644 --- a/src/test/ref/zeropage-sinus.log +++ b/src/test/ref/zeropage-sinus.log @@ -451,10 +451,10 @@ SPRITE: .fill $40,$ff REGISTER UPLIFT POTENTIAL REGISTERS -Statement [5] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [6] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN+(const word) SPRITE_PTRS) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) SPRITES_ENABLE) ← (byte) 1 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [6] *((const byte*) SPRITES_YPOS) ← (byte) $64 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [7] *((const byte*) SPRITES_XPOS) ← (byte) $64 [ ] ( main:2 [ ] { } ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN+(const word) SPRITE_PTRS) ← (byte)(const byte*) SPRITE/(byte) $40 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement asm { ldx#0 !: ldaZP_STORAGE,x sta$00,x inx bne!- } always clobbers reg byte a reg byte x Statement asm { ldx#0 !: ldaSINTABLE,x sta$00,x inx bne!- } always clobbers reg byte a reg byte x Statement asm { ldx#0 !: lda$00,x staZP_STORAGE,x inx bne!- } always clobbers reg byte a reg byte x diff --git a/src/test/ref/zpparammin.log b/src/test/ref/zpparammin.log index 30bbb3fb0..d44aabdb6 100644 --- a/src/test/ref/zpparammin.log +++ b/src/test/ref/zpparammin.log @@ -174,15 +174,15 @@ Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#2 + (byt Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#2 + (byte) 2 Inferred type updated to byte in (unumber~) main::$3 ← (byte) main::i#3 + (byte) 1 Inferred type updated to byte in (unumber~) main::$4 ← (byte) main::i#3 + (byte) 2 -Alias (byte) sum::b#0 = (byte~) main::$0 -Alias (byte) sum::c#0 = (byte~) main::$1 -Alias (byte) sum::return#0 = (byte) sum::return#3 -Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 -Alias (byte) sum2::b#0 = (byte~) main::$3 -Alias (byte) sum2::c#0 = (byte~) main::$4 -Alias (byte) sum2::return#0 = (byte) sum2::return#3 -Alias (byte) sum::return#1 = (byte~) sum::$1 (byte) sum::return#4 (byte) sum::return#2 -Alias (byte) sum2::return#1 = (byte~) sum2::$1 (byte) sum2::return#4 (byte) sum2::return#2 +Alias sum::b#0 = main::$0 +Alias sum::c#0 = main::$1 +Alias sum::return#0 = sum::return#3 +Alias main::i#2 = main::i#3 main::i#4 +Alias sum2::b#0 = main::$3 +Alias sum2::c#0 = main::$4 +Alias sum2::return#0 = sum2::return#3 +Alias sum::return#1 = sum::$1 sum::return#4 sum::return#2 +Alias sum2::return#1 = sum2::$1 sum2::return#4 sum2::return#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) sum::a#1 (byte) sum::a#0 Identical Phi Values (byte) sum::b#1 (byte) sum::b#0 @@ -292,33 +292,33 @@ sum::@return: scope:[sum] from sum VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$2 22.0 -(byte~) main::$5 22.0 +(byte~) main::$2 202.0 +(byte~) main::$5 202.0 (byte) main::i -(byte) main::i#1 16.5 -(byte) main::i#2 7.333333333333333 +(byte) main::i#1 151.5 +(byte) main::i#2 67.33333333333333 (byte()) sum((byte) sum::a , (byte) sum::b , (byte) sum::c) -(byte~) sum::$0 4.0 +(byte~) sum::$0 2002.0 (byte) sum::a -(byte) sum::a#0 13.0 +(byte) sum::a#0 1102.0 (byte) sum::b -(byte) sum::b#0 4.333333333333333 +(byte) sum::b#0 367.33333333333337 (byte) sum::c -(byte) sum::c#0 4.333333333333333 +(byte) sum::c#0 367.33333333333337 (byte) sum::return -(byte) sum::return#0 22.0 -(byte) sum::return#1 4.333333333333333 +(byte) sum::return#0 202.0 +(byte) sum::return#1 367.33333333333337 (byte()) sum2((byte) sum2::a , (byte) sum2::b , (byte) sum2::c) -(byte~) sum2::$0 4.0 +(byte~) sum2::$0 2002.0 (byte) sum2::a -(byte) sum2::a#0 13.0 +(byte) sum2::a#0 1102.0 (byte) sum2::b -(byte) sum2::b#0 4.333333333333333 +(byte) sum2::b#0 367.33333333333337 (byte) sum2::c -(byte) sum2::c#0 4.333333333333333 +(byte) sum2::c#0 367.33333333333337 (byte) sum2::return -(byte) sum2::return#0 22.0 -(byte) sum2::return#1 4.333333333333333 +(byte) sum2::return#0 202.0 +(byte) sum2::return#1 367.33333333333337 Initial phi equivalence classes [ main::i#2 main::i#1 ] @@ -530,17 +530,17 @@ sum: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) always clobbers reg byte a +Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] { { sum2::a#0 = main::i#2 } { sum2::return#0 = sum2::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ sum2::c#0 ] -Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) always clobbers reg byte a -Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) always clobbers reg byte a +Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] { { sum2::a#0 = main::i#2 } { sum2::return#0 = sum2::return#1 } } ) always clobbers reg byte a +Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] { { sum::a#0 = main::i#2 } { sum::return#0 = sum::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ sum::c#0 ] -Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) always clobbers reg byte a -Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) always clobbers reg byte a -Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) always clobbers reg byte a -Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) always clobbers reg byte a -Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) always clobbers reg byte a +Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] { { sum::a#0 = main::i#2 } { sum::return#0 = sum::return#1 } } ) always clobbers reg byte a +Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] { { sum2::a#0 = main::i#2 } { sum2::return#0 = sum2::return#1 } } ) always clobbers reg byte a +Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] { { sum2::a#0 = main::i#2 } { sum2::return#0 = sum2::return#1 } } ) always clobbers reg byte a +Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] { { sum::a#0 = main::i#2 } { sum::return#0 = sum::return#1 } } ) always clobbers reg byte a +Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] { { sum::a#0 = main::i#2 } { sum::return#0 = sum::return#1 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ sum::b#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ sum::c#0 ] : zp[1]:4 , reg byte x , reg byte y , @@ -558,27 +558,27 @@ Potential registers zp[1]:15 [ sum::$0 ] : zp[1]:15 , reg byte a , reg byte x , Potential registers zp[1]:16 [ sum::return#1 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$2 ] 22: zp[1]:12 [ main::$5 ] -Uplift Scope [sum] 22: zp[1]:6 [ sum::return#0 ] 13: zp[1]:5 [ sum::a#0 ] 4.33: zp[1]:3 [ sum::b#0 ] 4.33: zp[1]:4 [ sum::c#0 ] 4.33: zp[1]:16 [ sum::return#1 ] 4: zp[1]:15 [ sum::$0 ] -Uplift Scope [sum2] 22: zp[1]:11 [ sum2::return#0 ] 13: zp[1]:10 [ sum2::a#0 ] 4.33: zp[1]:8 [ sum2::b#0 ] 4.33: zp[1]:9 [ sum2::c#0 ] 4.33: zp[1]:14 [ sum2::return#1 ] 4: zp[1]:13 [ sum2::$0 ] +Uplift Scope [sum] 2,002: zp[1]:15 [ sum::$0 ] 1,102: zp[1]:5 [ sum::a#0 ] 367.33: zp[1]:3 [ sum::b#0 ] 367.33: zp[1]:4 [ sum::c#0 ] 367.33: zp[1]:16 [ sum::return#1 ] 202: zp[1]:6 [ sum::return#0 ] +Uplift Scope [sum2] 2,002: zp[1]:13 [ sum2::$0 ] 1,102: zp[1]:10 [ sum2::a#0 ] 367.33: zp[1]:8 [ sum2::b#0 ] 367.33: zp[1]:9 [ sum2::c#0 ] 367.33: zp[1]:14 [ sum2::return#1 ] 202: zp[1]:11 [ sum2::return#0 ] +Uplift Scope [main] 218.83: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:7 [ main::$2 ] 202: zp[1]:12 [ main::$5 ] Uplift Scope [] -Uplifting [main] best 1345 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$5 ] -Uplifting [sum] best 1214 combination reg byte a [ sum::return#0 ] reg byte y [ sum::a#0 ] reg byte a [ sum::b#0 ] reg byte x [ sum::c#0 ] zp[1]:16 [ sum::return#1 ] zp[1]:15 [ sum::$0 ] +Uplifting [sum] best 1392 combination reg byte a [ sum::$0 ] reg byte y [ sum::a#0 ] reg byte a [ sum::b#0 ] reg byte x [ sum::c#0 ] zp[1]:16 [ sum::return#1 ] zp[1]:6 [ sum::return#0 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [sum2] best 1083 combination reg byte a [ sum2::return#0 ] reg byte y [ sum2::a#0 ] reg byte a [ sum2::b#0 ] reg byte x [ sum2::c#0 ] zp[1]:14 [ sum2::return#1 ] zp[1]:13 [ sum2::$0 ] +Uplifting [sum2] best 1319 combination reg byte a [ sum2::$0 ] reg byte y [ sum2::a#0 ] reg byte a [ sum2::b#0 ] reg byte x [ sum2::c#0 ] zp[1]:14 [ sum2::return#1 ] zp[1]:11 [ sum2::return#0 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [] best 1083 combination -Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 1083 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1199 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$5 ] +Uplifting [] best 1199 combination Attempting to uplift remaining variables inzp[1]:14 [ sum2::return#1 ] -Uplifting [sum2] best 1050 combination reg byte a [ sum2::return#1 ] +Uplifting [sum2] best 1166 combination reg byte a [ sum2::return#1 ] Attempting to uplift remaining variables inzp[1]:16 [ sum::return#1 ] -Uplifting [sum] best 1017 combination reg byte a [ sum::return#1 ] -Attempting to uplift remaining variables inzp[1]:13 [ sum2::$0 ] -Uplifting [sum2] best 1015 combination reg byte a [ sum2::$0 ] -Attempting to uplift remaining variables inzp[1]:15 [ sum::$0 ] -Uplifting [sum] best 1013 combination reg byte a [ sum::$0 ] +Uplifting [sum] best 1133 combination reg byte a [ sum::return#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1133 combination zp[1]:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:6 [ sum::return#0 ] +Uplifting [sum] best 1073 combination reg byte a [ sum::return#0 ] +Attempting to uplift remaining variables inzp[1]:11 [ sum2::return#0 ] +Uplifting [sum2] best 1013 combination reg byte a [ sum2::return#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -751,39 +751,39 @@ FINAL SYMBOL TABLE (const byte*) SCREEN = (byte*) 1024 (const byte*) SCREEN2 = (byte*)(number) $400+(number) $28 (void()) main() -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 7.333333333333333 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 67.33333333333333 (byte()) sum((byte) sum::a , (byte) sum::b , (byte) sum::c) -(byte~) sum::$0 reg byte a 4.0 +(byte~) sum::$0 reg byte a 2002.0 (label) sum::@return (byte) sum::a -(byte) sum::a#0 reg byte y 13.0 +(byte) sum::a#0 reg byte y 1102.0 (byte) sum::b -(byte) sum::b#0 reg byte a 4.333333333333333 +(byte) sum::b#0 reg byte a 367.33333333333337 (byte) sum::c -(byte) sum::c#0 reg byte x 4.333333333333333 +(byte) sum::c#0 reg byte x 367.33333333333337 (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 (byte()) sum2((byte) sum2::a , (byte) sum2::b , (byte) sum2::c) -(byte~) sum2::$0 reg byte a 4.0 +(byte~) sum2::$0 reg byte a 2002.0 (label) sum2::@return (byte) sum2::a -(byte) sum2::a#0 reg byte y 13.0 +(byte) sum2::a#0 reg byte y 1102.0 (byte) sum2::b -(byte) sum2::b#0 reg byte a 4.333333333333333 +(byte) sum2::b#0 reg byte a 367.33333333333337 (byte) sum2::c -(byte) sum2::c#0 reg byte x 4.333333333333333 +(byte) sum2::c#0 reg byte x 367.33333333333337 (byte) sum2::return -(byte) sum2::return#0 reg byte a 22.0 -(byte) sum2::return#1 reg byte a 4.333333333333333 +(byte) sum2::return#0 reg byte a 202.0 +(byte) sum2::return#1 reg byte a 367.33333333333337 zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] diff --git a/src/test/ref/zpparammin.sym b/src/test/ref/zpparammin.sym index 9cc4c2b1d..124ded8dd 100644 --- a/src/test/ref/zpparammin.sym +++ b/src/test/ref/zpparammin.sym @@ -4,39 +4,39 @@ (const byte*) SCREEN = (byte*) 1024 (const byte*) SCREEN2 = (byte*)(number) $400+(number) $28 (void()) main() -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$5 reg byte a 22.0 +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$5 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:2 16.5 -(byte) main::i#2 i zp[1]:2 7.333333333333333 +(byte) main::i#1 i zp[1]:2 151.5 +(byte) main::i#2 i zp[1]:2 67.33333333333333 (byte()) sum((byte) sum::a , (byte) sum::b , (byte) sum::c) -(byte~) sum::$0 reg byte a 4.0 +(byte~) sum::$0 reg byte a 2002.0 (label) sum::@return (byte) sum::a -(byte) sum::a#0 reg byte y 13.0 +(byte) sum::a#0 reg byte y 1102.0 (byte) sum::b -(byte) sum::b#0 reg byte a 4.333333333333333 +(byte) sum::b#0 reg byte a 367.33333333333337 (byte) sum::c -(byte) sum::c#0 reg byte x 4.333333333333333 +(byte) sum::c#0 reg byte x 367.33333333333337 (byte) sum::return -(byte) sum::return#0 reg byte a 22.0 -(byte) sum::return#1 reg byte a 4.333333333333333 +(byte) sum::return#0 reg byte a 202.0 +(byte) sum::return#1 reg byte a 367.33333333333337 (byte()) sum2((byte) sum2::a , (byte) sum2::b , (byte) sum2::c) -(byte~) sum2::$0 reg byte a 4.0 +(byte~) sum2::$0 reg byte a 2002.0 (label) sum2::@return (byte) sum2::a -(byte) sum2::a#0 reg byte y 13.0 +(byte) sum2::a#0 reg byte y 1102.0 (byte) sum2::b -(byte) sum2::b#0 reg byte a 4.333333333333333 +(byte) sum2::b#0 reg byte a 367.33333333333337 (byte) sum2::c -(byte) sum2::c#0 reg byte x 4.333333333333333 +(byte) sum2::c#0 reg byte x 367.33333333333337 (byte) sum2::return -(byte) sum2::return#0 reg byte a 22.0 -(byte) sum2::return#1 reg byte a 4.333333333333333 +(byte) sum2::return#0 reg byte a 202.0 +(byte) sum2::return#1 reg byte a 367.33333333333337 zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ sum::b#0 ] diff --git a/src/test/ref/zpptr.log b/src/test/ref/zpptr.log index f8ea87f73..34190dea0 100644 --- a/src/test/ref/zpptr.log +++ b/src/test/ref/zpptr.log @@ -103,11 +103,11 @@ Inlining cast (word~) main::$1 ← (word)(byte) main::j#2 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 4096 Successful SSA optimization PassNCastSimplification -Alias (byte*) main::zpptr2#0 = (byte*~) main::$0 -Alias (word) main::w#0 = (word~) main::$1 -Alias (byte*) main::zpptr2#1 = (byte*~) main::$2 -Alias (byte) main::i#2 = (byte) main::i#3 -Alias (byte) main::j#2 = (byte) main::j#5 (byte) main::j#3 +Alias main::zpptr2#0 = main::$0 +Alias main::w#0 = main::$1 +Alias main::zpptr2#1 = main::$2 +Alias main::i#2 = main::i#3 +Alias main::j#2 = main::j#5 main::j#3 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::i#2 (byte) main::i#4 Identical Phi Values (byte) main::j#2 (byte) main::j#4 @@ -218,19 +218,19 @@ main::@return: scope:[main] from main::@5 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 151.5 -(byte) main::i#4 150.375 +(byte) main::i#1 1501.5 +(byte) main::i#4 1500.375 (byte) main::j -(byte) main::j#1 16.5 -(byte) main::j#6 2.0 +(byte) main::j#1 151.5 +(byte) main::j#6 18.363636363636363 (byte) main::k -(byte) main::k#1 1501.5 -(byte) main::k#2 600.5999999999999 +(byte) main::k#1 15001.5 +(byte) main::k#2 6000.6 (word) main::w -(word) main::w#0 2002.0 +(word) main::w#0 20002.0 (byte*) main::zpptr2 -(byte*) main::zpptr2#0 1001.0 -(byte*) main::zpptr2#1 2002.0 +(byte*) main::zpptr2#0 10001.0 +(byte*) main::zpptr2#1 20002.0 Initial phi equivalence classes [ main::j#6 main::j#1 ] @@ -380,20 +380,20 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a +Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::j#6 main::j#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::k#2 main::k#1 ] -Statement [9] (word) main::w#0 ← (word)(byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a -Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y +Statement [9] (word) main::w#0 ← (word)(byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::j#6 main::j#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::k#2 main::k#1 ] -Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a -Statement [9] (word) main::w#0 ← (word)(byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a -Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a -Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y +Statement [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] { } ) always clobbers reg byte a +Statement [9] (word) main::w#0 ← (word)(byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] { } ) always clobbers reg byte a +Statement [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:2 [ main::j#6 main::i#4 main::k#2 ] { } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::j#6 main::j#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::i#4 main::i#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::k#2 main::k#1 ] : zp[1]:4 , reg byte x , @@ -402,7 +402,7 @@ Potential registers zp[2]:7 [ main::w#0 ] : zp[2]:7 , Potential registers zp[2]:9 [ main::zpptr2#1 ] : zp[2]:9 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 2,102.1: zp[1]:4 [ main::k#2 main::k#1 ] 2,002: zp[2]:7 [ main::w#0 ] 2,002: zp[2]:9 [ main::zpptr2#1 ] 1,001: zp[2]:5 [ main::zpptr2#0 ] 301.88: zp[1]:3 [ main::i#4 main::i#1 ] 18.5: zp[1]:2 [ main::j#6 main::j#1 ] +Uplift Scope [main] 21,002.1: zp[1]:4 [ main::k#2 main::k#1 ] 20,002: zp[2]:7 [ main::w#0 ] 20,002: zp[2]:9 [ main::zpptr2#1 ] 10,001: zp[2]:5 [ main::zpptr2#0 ] 3,001.88: zp[1]:3 [ main::i#4 main::i#1 ] 169.86: zp[1]:2 [ main::j#6 main::j#1 ] Uplift Scope [] Uplifting [main] best 78433 combination reg byte x [ main::k#2 main::k#1 ] zp[2]:7 [ main::w#0 ] zp[2]:9 [ main::zpptr2#1 ] zp[2]:5 [ main::zpptr2#0 ] zp[1]:3 [ main::i#4 main::i#1 ] zp[1]:2 [ main::j#6 main::j#1 ] @@ -589,20 +589,20 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:3 151.5 -(byte) main::i#4 i zp[1]:3 150.375 +(byte) main::i#1 i zp[1]:3 1501.5 +(byte) main::i#4 i zp[1]:3 1500.375 (byte) main::j -(byte) main::j#1 j zp[1]:2 16.5 -(byte) main::j#6 j zp[1]:2 2.0 +(byte) main::j#1 j zp[1]:2 151.5 +(byte) main::j#6 j zp[1]:2 18.363636363636363 (byte) main::k -(byte) main::k#1 reg byte x 1501.5 -(byte) main::k#2 reg byte x 600.5999999999999 +(byte) main::k#1 reg byte x 15001.5 +(byte) main::k#2 reg byte x 6000.6 (word) main::w -(word) main::w#0 w zp[2]:6 2002.0 +(word) main::w#0 w zp[2]:6 20002.0 (const byte*) main::zpptr = (byte*) 4096 (byte*) main::zpptr2 -(byte*) main::zpptr2#0 zpptr2 zp[2]:4 1001.0 -(byte*) main::zpptr2#1 zpptr2 zp[2]:4 2002.0 +(byte*) main::zpptr2#0 zpptr2 zp[2]:4 10001.0 +(byte*) main::zpptr2#1 zpptr2 zp[2]:4 20002.0 zp[1]:2 [ main::j#6 main::j#1 ] zp[1]:3 [ main::i#4 main::i#1 ] diff --git a/src/test/ref/zpptr.sym b/src/test/ref/zpptr.sym index 6e814d54c..06e638527 100644 --- a/src/test/ref/zpptr.sym +++ b/src/test/ref/zpptr.sym @@ -9,20 +9,20 @@ (label) main::@5 (label) main::@return (byte) main::i -(byte) main::i#1 i zp[1]:3 151.5 -(byte) main::i#4 i zp[1]:3 150.375 +(byte) main::i#1 i zp[1]:3 1501.5 +(byte) main::i#4 i zp[1]:3 1500.375 (byte) main::j -(byte) main::j#1 j zp[1]:2 16.5 -(byte) main::j#6 j zp[1]:2 2.0 +(byte) main::j#1 j zp[1]:2 151.5 +(byte) main::j#6 j zp[1]:2 18.363636363636363 (byte) main::k -(byte) main::k#1 reg byte x 1501.5 -(byte) main::k#2 reg byte x 600.5999999999999 +(byte) main::k#1 reg byte x 15001.5 +(byte) main::k#2 reg byte x 6000.6 (word) main::w -(word) main::w#0 w zp[2]:6 2002.0 +(word) main::w#0 w zp[2]:6 20002.0 (const byte*) main::zpptr = (byte*) 4096 (byte*) main::zpptr2 -(byte*) main::zpptr2#0 zpptr2 zp[2]:4 1001.0 -(byte*) main::zpptr2#1 zpptr2 zp[2]:4 2002.0 +(byte*) main::zpptr2#0 zpptr2 zp[2]:4 10001.0 +(byte*) main::zpptr2#1 zpptr2 zp[2]:4 20002.0 zp[1]:2 [ main::j#6 main::j#1 ] zp[1]:3 [ main::i#4 main::i#1 ]